vee-validate 4.6.6 → 4.6.8

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.
@@ -99,7 +99,7 @@ interface PrivateFieldContext<TValue = unknown> {
99
99
  setValue(value: TValue): void;
100
100
  }
101
101
  declare type FieldContext<TValue = unknown> = Omit<PrivateFieldContext<TValue>, 'id' | 'instances'>;
102
- declare type GenericValidateFunction = (value: unknown, ctx: FieldValidationMetaInfo) => boolean | string | Promise<boolean | string>;
102
+ declare type GenericValidateFunction<TValue = unknown> = (value: TValue, ctx: FieldValidationMetaInfo) => boolean | string | Promise<boolean | string>;
103
103
  interface FormState<TValues> {
104
104
  values: TValues;
105
105
  errors: Partial<Record<keyof TValues, string | undefined>>;
@@ -179,7 +179,7 @@ interface ValidationOptions {
179
179
  /**
180
180
  * Validates a value against the rules.
181
181
  */
182
- declare function validate(value: unknown, rules: string | Record<string, unknown | unknown[]> | GenericValidateFunction | GenericValidateFunction[] | YupValidator, options?: ValidationOptions): Promise<ValidationResult>;
182
+ declare function validate<TValue = unknown>(value: TValue, rules: string | Record<string, unknown | unknown[]> | GenericValidateFunction<TValue> | GenericValidateFunction<TValue>[] | YupValidator, options?: ValidationOptions): Promise<ValidationResult>;
183
183
 
184
184
  /**
185
185
  * Adds a custom validator to the list of validation rules.
@@ -211,7 +211,7 @@ interface FieldOptions<TValue = unknown> {
211
211
  modelPropName?: string;
212
212
  syncVModel?: boolean;
213
213
  }
214
- declare type RuleExpression<TValue> = string | Record<string, unknown> | GenericValidateFunction | GenericValidateFunction[] | YupValidator<TValue> | undefined;
214
+ declare type RuleExpression<TValue> = string | Record<string, unknown> | GenericValidateFunction<TValue> | GenericValidateFunction<TValue>[] | YupValidator<TValue> | undefined;
215
215
  /**
216
216
  * Creates a field composite.
217
217
  */
@@ -1183,4 +1183,4 @@ declare const FormContextKey: InjectionKey<PrivateFormContext>;
1183
1183
  declare const FieldContextKey: InjectionKey<PrivateFieldContext<unknown>>;
1184
1184
  declare const IS_ABSENT: unique symbol;
1185
1185
 
1186
- export { ErrorMessage, Field, FieldArray, FieldArrayContext, FieldContext, FieldContextKey, FieldEntry, FieldMeta, FieldOptions, Form, FormActions, FormContext, FormContextKey, FormMeta, FormOptions, FormState, FormValidationResult, GenericValidateFunction, IS_ABSENT, InvalidSubmissionContext, InvalidSubmissionHandler, SubmissionContext, SubmissionHandler, ValidationOptions$1 as ValidationOptions, ValidationResult, configure, defineRule, useField, useFieldArray, useFieldError, useFieldValue, useForm, useFormErrors, useFormValues, useIsFieldDirty, useIsFieldTouched, useIsFieldValid, useIsFormDirty, useIsFormTouched, useIsFormValid, useIsSubmitting, useResetForm, useSubmitCount, useSubmitForm, useValidateField, useValidateForm, validate };
1186
+ export { ErrorMessage, Field, FieldArray, FieldArrayContext, FieldContext, FieldContextKey, FieldEntry, FieldMeta, FieldOptions, Form, FormActions, FormContext, FormContextKey, FormMeta, FormOptions, FormState, FormValidationResult, GenericValidateFunction, IS_ABSENT, InvalidSubmissionContext, InvalidSubmissionHandler, RuleExpression, SubmissionContext, SubmissionHandler, ValidationOptions$1 as ValidationOptions, ValidationResult, configure, defineRule, useField, useFieldArray, useFieldError, useFieldValue, useForm, useFormErrors, useFormValues, useIsFieldDirty, useIsFieldTouched, useIsFieldValid, useIsFormDirty, useIsFormTouched, useIsFormValid, useIsSubmitting, useResetForm, useSubmitCount, useSubmitForm, useValidateField, useValidateForm, validate };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * vee-validate v4.6.6
2
+ * vee-validate v4.6.8
3
3
  * (c) 2022 Abdelrahman Awad
4
4
  * @license MIT
5
5
  */
@@ -126,6 +126,96 @@ function isEvent(evt) {
126
126
  }
127
127
  function isPropPresent(obj, prop) {
128
128
  return prop in obj && obj[prop] !== IS_ABSENT;
129
+ }
130
+ /**
131
+ * Compares if two values are the same borrowed from:
132
+ * https://github.com/epoberezkin/fast-deep-equal
133
+ * We added a case for file matching since `Object.keys` doesn't work with Files.
134
+ * */
135
+ function isEqual(a, b) {
136
+ if (a === b)
137
+ return true;
138
+ if (a && b && typeof a === 'object' && typeof b === 'object') {
139
+ if (a.constructor !== b.constructor)
140
+ return false;
141
+ // eslint-disable-next-line no-var
142
+ var length, i, keys;
143
+ if (Array.isArray(a)) {
144
+ length = a.length;
145
+ // eslint-disable-next-line eqeqeq
146
+ if (length != b.length)
147
+ return false;
148
+ for (i = length; i-- !== 0;)
149
+ if (!isEqual(a[i], b[i]))
150
+ return false;
151
+ return true;
152
+ }
153
+ if (a instanceof Map && b instanceof Map) {
154
+ if (a.size !== b.size)
155
+ return false;
156
+ for (i of a.entries())
157
+ if (!b.has(i[0]))
158
+ return false;
159
+ for (i of a.entries())
160
+ if (!isEqual(i[1], b.get(i[0])))
161
+ return false;
162
+ return true;
163
+ }
164
+ // We added this part for file comparison, arguably a little naive but should work for most cases.
165
+ // #3911
166
+ if (a instanceof File && b instanceof File) {
167
+ if (a.size !== b.size)
168
+ return false;
169
+ if (a.name !== b.name)
170
+ return false;
171
+ if (a.lastModified !== b.lastModified)
172
+ return false;
173
+ if (a.type !== b.type)
174
+ return false;
175
+ return true;
176
+ }
177
+ if (a instanceof Set && b instanceof Set) {
178
+ if (a.size !== b.size)
179
+ return false;
180
+ for (i of a.entries())
181
+ if (!b.has(i[0]))
182
+ return false;
183
+ return true;
184
+ }
185
+ if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {
186
+ length = a.length;
187
+ // eslint-disable-next-line eqeqeq
188
+ if (length != b.length)
189
+ return false;
190
+ for (i = length; i-- !== 0;)
191
+ if (a[i] !== b[i])
192
+ return false;
193
+ return true;
194
+ }
195
+ if (a.constructor === RegExp)
196
+ return a.source === b.source && a.flags === b.flags;
197
+ if (a.valueOf !== Object.prototype.valueOf)
198
+ return a.valueOf() === b.valueOf();
199
+ if (a.toString !== Object.prototype.toString)
200
+ return a.toString() === b.toString();
201
+ keys = Object.keys(a);
202
+ length = keys.length;
203
+ if (length !== Object.keys(b).length)
204
+ return false;
205
+ for (i = length; i-- !== 0;)
206
+ if (!Object.prototype.hasOwnProperty.call(b, keys[i]))
207
+ return false;
208
+ for (i = length; i-- !== 0;) {
209
+ // eslint-disable-next-line no-var
210
+ var key = keys[i];
211
+ if (!isEqual(a[key], b[key]))
212
+ return false;
213
+ }
214
+ return true;
215
+ }
216
+ // true if both NaN, false otherwise
217
+ // eslint-disable-next-line no-self-compare
218
+ return a !== a && b !== b;
129
219
  }
130
220
 
131
221
  // do not edit .js files directly - edit src/index.jst
@@ -344,6 +434,20 @@ function applyModelModifiers(value, modifiers) {
344
434
  return toNumber(value);
345
435
  }
346
436
  return value;
437
+ }
438
+ function withLatest(fn, onDone) {
439
+ let latestRun;
440
+ return async function runLatest(...args) {
441
+ const pending = fn(...args);
442
+ latestRun = pending;
443
+ const result = await pending;
444
+ if (pending !== latestRun) {
445
+ return result;
446
+ }
447
+ latestRun = undefined;
448
+ onDone(result, args);
449
+ return result;
450
+ };
347
451
  }
348
452
 
349
453
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -787,71 +891,6 @@ function klona(x) {
787
891
  return tmp || x;
788
892
  }
789
893
 
790
- var es6 = function equal(a, b) {
791
- if (a === b) return true;
792
-
793
- if (a && b && typeof a == 'object' && typeof b == 'object') {
794
- if (a.constructor !== b.constructor) return false;
795
-
796
- var length, i, keys;
797
- if (Array.isArray(a)) {
798
- length = a.length;
799
- if (length != b.length) return false;
800
- for (i = length; i-- !== 0;)
801
- if (!equal(a[i], b[i])) return false;
802
- return true;
803
- }
804
-
805
-
806
- if ((a instanceof Map) && (b instanceof Map)) {
807
- if (a.size !== b.size) return false;
808
- for (i of a.entries())
809
- if (!b.has(i[0])) return false;
810
- for (i of a.entries())
811
- if (!equal(i[1], b.get(i[0]))) return false;
812
- return true;
813
- }
814
-
815
- if ((a instanceof Set) && (b instanceof Set)) {
816
- if (a.size !== b.size) return false;
817
- for (i of a.entries())
818
- if (!b.has(i[0])) return false;
819
- return true;
820
- }
821
-
822
- if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {
823
- length = a.length;
824
- if (length != b.length) return false;
825
- for (i = length; i-- !== 0;)
826
- if (a[i] !== b[i]) return false;
827
- return true;
828
- }
829
-
830
-
831
- if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;
832
- if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();
833
- if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();
834
-
835
- keys = Object.keys(a);
836
- length = keys.length;
837
- if (length !== Object.keys(b).length) return false;
838
-
839
- for (i = length; i-- !== 0;)
840
- if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;
841
-
842
- for (i = length; i-- !== 0;) {
843
- var key = keys[i];
844
-
845
- if (!equal(a[key], b[key])) return false;
846
- }
847
-
848
- return true;
849
- }
850
-
851
- // true if both NaN, false otherwise
852
- return a!==a && b!==b;
853
- };
854
-
855
894
  let ID_COUNTER = 0;
856
895
  function useFieldState(path, init) {
857
896
  const { value, initialValue, setInitialValue } = _useFieldValue(path, init.modelValue, !init.standalone);
@@ -945,7 +984,7 @@ function _useFieldMeta(currentValue, initialValue, errors) {
945
984
  validated: !!unref(errors).length,
946
985
  initialValue: computed(() => unref(initialValue)),
947
986
  dirty: computed(() => {
948
- return !es6(unref(currentValue), unref(initialValue));
987
+ return !isEqual(unref(currentValue), unref(initialValue));
949
988
  }),
950
989
  });
951
990
  watch(errors, value => {
@@ -1396,10 +1435,11 @@ function _useField(name, rules, opts) {
1396
1435
  bails,
1397
1436
  });
1398
1437
  }
1399
- async function validateWithStateMutation() {
1438
+ const validateWithStateMutation = withLatest(async () => {
1400
1439
  meta.pending = true;
1401
1440
  meta.validated = true;
1402
- const result = await validateCurrentValue('validated-only');
1441
+ return validateCurrentValue('validated-only');
1442
+ }, result => {
1403
1443
  if (markedForRemoval) {
1404
1444
  result.valid = true;
1405
1445
  result.errors = [];
@@ -1407,23 +1447,21 @@ function _useField(name, rules, opts) {
1407
1447
  setState({ errors: result.errors });
1408
1448
  meta.pending = false;
1409
1449
  return result;
1410
- }
1411
- async function validateValidStateOnly() {
1412
- const result = await validateCurrentValue('silent');
1450
+ });
1451
+ const validateValidStateOnly = withLatest(async () => {
1452
+ return validateCurrentValue('silent');
1453
+ }, result => {
1413
1454
  if (markedForRemoval) {
1414
1455
  result.valid = true;
1415
1456
  }
1416
1457
  meta.valid = result.valid;
1417
1458
  return result;
1418
- }
1459
+ });
1419
1460
  function validate$1(opts) {
1420
- if (!(opts === null || opts === void 0 ? void 0 : opts.mode) || (opts === null || opts === void 0 ? void 0 : opts.mode) === 'force') {
1421
- return validateWithStateMutation();
1461
+ if ((opts === null || opts === void 0 ? void 0 : opts.mode) === 'silent') {
1462
+ return validateValidStateOnly();
1422
1463
  }
1423
- if ((opts === null || opts === void 0 ? void 0 : opts.mode) === 'validated-only') {
1424
- return validateWithStateMutation();
1425
- }
1426
- return validateValidStateOnly();
1464
+ return validateWithStateMutation();
1427
1465
  }
1428
1466
  // Common input/change event handler
1429
1467
  function handleChange(e, shouldValidate = true) {
@@ -1448,13 +1486,15 @@ function _useField(name, rules, opts) {
1448
1486
  meta.touched = isTouched;
1449
1487
  }
1450
1488
  let unwatchValue;
1489
+ let lastWatchedValue = klona(value.value);
1451
1490
  function watchValue() {
1452
1491
  unwatchValue = watch(value, (val, oldVal) => {
1453
- if (es6(val, oldVal)) {
1492
+ if (isEqual(val, oldVal) && isEqual(val, lastWatchedValue)) {
1454
1493
  return;
1455
1494
  }
1456
1495
  const validateFn = validateOnValueUpdate ? validateWithStateMutation : validateValidStateOnly;
1457
1496
  validateFn();
1497
+ lastWatchedValue = klona(val);
1458
1498
  }, {
1459
1499
  deep: true,
1460
1500
  });
@@ -1510,7 +1550,7 @@ function _useField(name, rules, opts) {
1510
1550
  provide(FieldContextKey, field);
1511
1551
  if (isRef(rules) && typeof unref(rules) !== 'function') {
1512
1552
  watch(rules, (value, oldValue) => {
1513
- if (es6(value, oldValue)) {
1553
+ if (isEqual(value, oldValue)) {
1514
1554
  return;
1515
1555
  }
1516
1556
  meta.validated ? validateWithStateMutation() : validateValidStateOnly();
@@ -1564,7 +1604,7 @@ function _useField(name, rules, opts) {
1564
1604
  if (!Object.keys(deps).length) {
1565
1605
  return;
1566
1606
  }
1567
- const shouldValidate = !es6(deps, oldDeps);
1607
+ const shouldValidate = !isEqual(deps, oldDeps);
1568
1608
  if (shouldValidate) {
1569
1609
  meta.validated ? validateWithStateMutation() : validateValidStateOnly();
1570
1610
  }
@@ -1615,12 +1655,15 @@ function useCheckboxField(name, rules, opts) {
1615
1655
  const currentValue = unref(field.value);
1616
1656
  const checkedVal = unref(checkedValue);
1617
1657
  return Array.isArray(currentValue)
1618
- ? currentValue.findIndex(v => es6(v, checkedVal)) >= 0
1619
- : es6(checkedVal, currentValue);
1658
+ ? currentValue.findIndex(v => isEqual(v, checkedVal)) >= 0
1659
+ : isEqual(checkedVal, currentValue);
1620
1660
  });
1621
1661
  function handleCheckboxChange(e, shouldValidate = true) {
1622
1662
  var _a;
1623
1663
  if (checked.value === ((_a = e === null || e === void 0 ? void 0 : e.target) === null || _a === void 0 ? void 0 : _a.checked)) {
1664
+ if (shouldValidate) {
1665
+ field.validate();
1666
+ }
1624
1667
  return;
1625
1668
  }
1626
1669
  let newValue = normalizeEventValue(e);
@@ -1652,7 +1695,7 @@ function useVModel({ prop, value, handleChange }) {
1652
1695
  return;
1653
1696
  }
1654
1697
  watch(value, newValue => {
1655
- if (es6(newValue, getCurrentModelValue(vm, propName))) {
1698
+ if (isEqual(newValue, getCurrentModelValue(vm, propName))) {
1656
1699
  return;
1657
1700
  }
1658
1701
  vm.emit(emitName, newValue);
@@ -1662,7 +1705,7 @@ function useVModel({ prop, value, handleChange }) {
1662
1705
  return;
1663
1706
  }
1664
1707
  const newValue = propValue === IS_ABSENT ? undefined : propValue;
1665
- if (es6(newValue, applyModelModifiers(value.value, vm.props.modelModifiers))) {
1708
+ if (isEqual(newValue, applyModelModifiers(value.value, vm.props.modelModifiers))) {
1666
1709
  return;
1667
1710
  }
1668
1711
  handleChange(newValue);
@@ -1923,6 +1966,54 @@ function useForm(opts) {
1923
1966
  // form meta aggregations
1924
1967
  const meta = useFormMeta(fieldsByPath, formValues, originalInitialValues, errors);
1925
1968
  const schema = opts === null || opts === void 0 ? void 0 : opts.validationSchema;
1969
+ /**
1970
+ * Batches validation runs in 5ms batches
1971
+ * Must have two distinct batch queues to make sure they don't override each other settings #3783
1972
+ */
1973
+ const debouncedSilentValidation = debounceAsync(_validateSchema, 5);
1974
+ const debouncedValidation = debounceAsync(_validateSchema, 5);
1975
+ const validateSchema = withLatest(async (mode) => {
1976
+ return (await mode) === 'silent' ? debouncedSilentValidation() : debouncedValidation();
1977
+ }, (formResult, [mode]) => {
1978
+ // fields by id lookup
1979
+ const fieldsById = formCtx.fieldsByPath.value || {};
1980
+ // errors fields names, we need it to also check if custom errors are updated
1981
+ const currentErrorsPaths = keysOf(formCtx.errorBag.value);
1982
+ // collect all the keys from the schema and all fields
1983
+ // this ensures we have a complete keymap of all the fields
1984
+ const paths = [
1985
+ ...new Set([...keysOf(formResult.results), ...keysOf(fieldsById), ...currentErrorsPaths]),
1986
+ ];
1987
+ // aggregates the paths into a single result object while applying the results on the fields
1988
+ return paths.reduce((validation, path) => {
1989
+ const field = fieldsById[path];
1990
+ const messages = (formResult.results[path] || { errors: [] }).errors;
1991
+ const fieldResult = {
1992
+ errors: messages,
1993
+ valid: !messages.length,
1994
+ };
1995
+ validation.results[path] = fieldResult;
1996
+ if (!fieldResult.valid) {
1997
+ validation.errors[path] = fieldResult.errors[0];
1998
+ }
1999
+ // field not rendered
2000
+ if (!field) {
2001
+ setFieldError(path, messages);
2002
+ return validation;
2003
+ }
2004
+ // always update the valid flag regardless of the mode
2005
+ applyFieldMutation(field, f => (f.meta.valid = fieldResult.valid));
2006
+ if (mode === 'silent') {
2007
+ return validation;
2008
+ }
2009
+ const wasValidated = Array.isArray(field) ? field.some(f => f.meta.validated) : field.meta.validated;
2010
+ if (mode === 'validated-only' && !wasValidated) {
2011
+ return validation;
2012
+ }
2013
+ applyFieldMutation(field, f => f.setState({ errors: fieldResult.errors }));
2014
+ return validation;
2015
+ }, { valid: formResult.valid, results: {}, errors: {} });
2016
+ });
1926
2017
  const formCtx = {
1927
2018
  formId,
1928
2019
  fieldsByPath,
@@ -2178,7 +2269,7 @@ function useForm(opts) {
2178
2269
  // if it does belong to it that means the group still exists
2179
2270
  // #3844
2180
2271
  if (isSameGroup && Array.isArray(currentGroupValue) && !shouldKeepValue) {
2181
- const valueIdx = currentGroupValue.findIndex(i => es6(i, unref(field.checkedValue)));
2272
+ const valueIdx = currentGroupValue.findIndex(i => isEqual(i, unref(field.checkedValue)));
2182
2273
  if (valueIdx > -1) {
2183
2274
  const newVal = [...currentGroupValue];
2184
2275
  newVal.splice(valueIdx, 1);
@@ -2324,53 +2415,6 @@ function useForm(opts) {
2324
2415
  });
2325
2416
  return formResult;
2326
2417
  }
2327
- /**
2328
- * Batches validation runs in 5ms batches
2329
- * Must have two distinct batch queues to make sure they don't override each other settings #3783
2330
- */
2331
- const debouncedSilentValidation = debounceAsync(_validateSchema, 5);
2332
- const debouncedValidation = debounceAsync(_validateSchema, 5);
2333
- async function validateSchema(mode) {
2334
- const formResult = await (mode === 'silent' ? debouncedSilentValidation() : debouncedValidation());
2335
- // fields by id lookup
2336
- const fieldsById = formCtx.fieldsByPath.value || {};
2337
- // errors fields names, we need it to also check if custom errors are updated
2338
- const currentErrorsPaths = keysOf(formCtx.errorBag.value);
2339
- // collect all the keys from the schema and all fields
2340
- // this ensures we have a complete keymap of all the fields
2341
- const paths = [
2342
- ...new Set([...keysOf(formResult.results), ...keysOf(fieldsById), ...currentErrorsPaths]),
2343
- ];
2344
- // aggregates the paths into a single result object while applying the results on the fields
2345
- return paths.reduce((validation, path) => {
2346
- const field = fieldsById[path];
2347
- const messages = (formResult.results[path] || { errors: [] }).errors;
2348
- const fieldResult = {
2349
- errors: messages,
2350
- valid: !messages.length,
2351
- };
2352
- validation.results[path] = fieldResult;
2353
- if (!fieldResult.valid) {
2354
- validation.errors[path] = fieldResult.errors[0];
2355
- }
2356
- // field not rendered
2357
- if (!field) {
2358
- setFieldError(path, messages);
2359
- return validation;
2360
- }
2361
- // always update the valid flag regardless of the mode
2362
- applyFieldMutation(field, f => (f.meta.valid = fieldResult.valid));
2363
- if (mode === 'silent') {
2364
- return validation;
2365
- }
2366
- const wasValidated = Array.isArray(field) ? field.some(f => f.meta.validated) : field.meta.validated;
2367
- if (mode === 'validated-only' && !wasValidated) {
2368
- return validation;
2369
- }
2370
- applyFieldMutation(field, f => f.setState({ errors: fieldResult.errors }));
2371
- return validation;
2372
- }, { valid: formResult.valid, results: {}, errors: {} });
2373
- }
2374
2418
  const submitForm = handleSubmit((_, { evt }) => {
2375
2419
  if (isFormSubmitEvent(evt)) {
2376
2420
  evt.target.submit();
@@ -2440,7 +2484,7 @@ function useFormMeta(fieldsByPath, currentValues, initialValues, errors) {
2440
2484
  valid: 'every',
2441
2485
  };
2442
2486
  const isDirty = computed(() => {
2443
- return !es6(currentValues, unref(initialValues));
2487
+ return !isEqual(currentValues, unref(initialValues));
2444
2488
  });
2445
2489
  function calculateFlags() {
2446
2490
  const fields = Object.values(fieldsByPath.value).flat(1).filter(Boolean);
@@ -1,5 +1,5 @@
1
1
  /**
2
- * vee-validate v4.6.6
2
+ * vee-validate v4.6.8
3
3
  * (c) 2022 Abdelrahman Awad
4
4
  * @license MIT
5
5
  */
@@ -129,6 +129,96 @@
129
129
  }
130
130
  function isPropPresent(obj, prop) {
131
131
  return prop in obj && obj[prop] !== IS_ABSENT;
132
+ }
133
+ /**
134
+ * Compares if two values are the same borrowed from:
135
+ * https://github.com/epoberezkin/fast-deep-equal
136
+ * We added a case for file matching since `Object.keys` doesn't work with Files.
137
+ * */
138
+ function isEqual(a, b) {
139
+ if (a === b)
140
+ return true;
141
+ if (a && b && typeof a === 'object' && typeof b === 'object') {
142
+ if (a.constructor !== b.constructor)
143
+ return false;
144
+ // eslint-disable-next-line no-var
145
+ var length, i, keys;
146
+ if (Array.isArray(a)) {
147
+ length = a.length;
148
+ // eslint-disable-next-line eqeqeq
149
+ if (length != b.length)
150
+ return false;
151
+ for (i = length; i-- !== 0;)
152
+ if (!isEqual(a[i], b[i]))
153
+ return false;
154
+ return true;
155
+ }
156
+ if (a instanceof Map && b instanceof Map) {
157
+ if (a.size !== b.size)
158
+ return false;
159
+ for (i of a.entries())
160
+ if (!b.has(i[0]))
161
+ return false;
162
+ for (i of a.entries())
163
+ if (!isEqual(i[1], b.get(i[0])))
164
+ return false;
165
+ return true;
166
+ }
167
+ // We added this part for file comparison, arguably a little naive but should work for most cases.
168
+ // #3911
169
+ if (a instanceof File && b instanceof File) {
170
+ if (a.size !== b.size)
171
+ return false;
172
+ if (a.name !== b.name)
173
+ return false;
174
+ if (a.lastModified !== b.lastModified)
175
+ return false;
176
+ if (a.type !== b.type)
177
+ return false;
178
+ return true;
179
+ }
180
+ if (a instanceof Set && b instanceof Set) {
181
+ if (a.size !== b.size)
182
+ return false;
183
+ for (i of a.entries())
184
+ if (!b.has(i[0]))
185
+ return false;
186
+ return true;
187
+ }
188
+ if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {
189
+ length = a.length;
190
+ // eslint-disable-next-line eqeqeq
191
+ if (length != b.length)
192
+ return false;
193
+ for (i = length; i-- !== 0;)
194
+ if (a[i] !== b[i])
195
+ return false;
196
+ return true;
197
+ }
198
+ if (a.constructor === RegExp)
199
+ return a.source === b.source && a.flags === b.flags;
200
+ if (a.valueOf !== Object.prototype.valueOf)
201
+ return a.valueOf() === b.valueOf();
202
+ if (a.toString !== Object.prototype.toString)
203
+ return a.toString() === b.toString();
204
+ keys = Object.keys(a);
205
+ length = keys.length;
206
+ if (length !== Object.keys(b).length)
207
+ return false;
208
+ for (i = length; i-- !== 0;)
209
+ if (!Object.prototype.hasOwnProperty.call(b, keys[i]))
210
+ return false;
211
+ for (i = length; i-- !== 0;) {
212
+ // eslint-disable-next-line no-var
213
+ var key = keys[i];
214
+ if (!isEqual(a[key], b[key]))
215
+ return false;
216
+ }
217
+ return true;
218
+ }
219
+ // true if both NaN, false otherwise
220
+ // eslint-disable-next-line no-self-compare
221
+ return a !== a && b !== b;
132
222
  }
133
223
 
134
224
  // do not edit .js files directly - edit src/index.jst
@@ -329,6 +419,20 @@
329
419
  return toNumber(value);
330
420
  }
331
421
  return value;
422
+ }
423
+ function withLatest(fn, onDone) {
424
+ let latestRun;
425
+ return async function runLatest(...args) {
426
+ const pending = fn(...args);
427
+ latestRun = pending;
428
+ const result = await pending;
429
+ if (pending !== latestRun) {
430
+ return result;
431
+ }
432
+ latestRun = undefined;
433
+ onDone(result, args);
434
+ return result;
435
+ };
332
436
  }
333
437
 
334
438
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -772,71 +876,6 @@
772
876
  return tmp || x;
773
877
  }
774
878
 
775
- var es6 = function equal(a, b) {
776
- if (a === b) return true;
777
-
778
- if (a && b && typeof a == 'object' && typeof b == 'object') {
779
- if (a.constructor !== b.constructor) return false;
780
-
781
- var length, i, keys;
782
- if (Array.isArray(a)) {
783
- length = a.length;
784
- if (length != b.length) return false;
785
- for (i = length; i-- !== 0;)
786
- if (!equal(a[i], b[i])) return false;
787
- return true;
788
- }
789
-
790
-
791
- if ((a instanceof Map) && (b instanceof Map)) {
792
- if (a.size !== b.size) return false;
793
- for (i of a.entries())
794
- if (!b.has(i[0])) return false;
795
- for (i of a.entries())
796
- if (!equal(i[1], b.get(i[0]))) return false;
797
- return true;
798
- }
799
-
800
- if ((a instanceof Set) && (b instanceof Set)) {
801
- if (a.size !== b.size) return false;
802
- for (i of a.entries())
803
- if (!b.has(i[0])) return false;
804
- return true;
805
- }
806
-
807
- if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {
808
- length = a.length;
809
- if (length != b.length) return false;
810
- for (i = length; i-- !== 0;)
811
- if (a[i] !== b[i]) return false;
812
- return true;
813
- }
814
-
815
-
816
- if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;
817
- if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();
818
- if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();
819
-
820
- keys = Object.keys(a);
821
- length = keys.length;
822
- if (length !== Object.keys(b).length) return false;
823
-
824
- for (i = length; i-- !== 0;)
825
- if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;
826
-
827
- for (i = length; i-- !== 0;) {
828
- var key = keys[i];
829
-
830
- if (!equal(a[key], b[key])) return false;
831
- }
832
-
833
- return true;
834
- }
835
-
836
- // true if both NaN, false otherwise
837
- return a!==a && b!==b;
838
- };
839
-
840
879
  let ID_COUNTER = 0;
841
880
  function useFieldState(path, init) {
842
881
  const { value, initialValue, setInitialValue } = _useFieldValue(path, init.modelValue, !init.standalone);
@@ -930,7 +969,7 @@
930
969
  validated: !!vue.unref(errors).length,
931
970
  initialValue: vue.computed(() => vue.unref(initialValue)),
932
971
  dirty: vue.computed(() => {
933
- return !es6(vue.unref(currentValue), vue.unref(initialValue));
972
+ return !isEqual(vue.unref(currentValue), vue.unref(initialValue));
934
973
  }),
935
974
  });
936
975
  vue.watch(errors, value => {
@@ -1021,10 +1060,11 @@
1021
1060
  bails,
1022
1061
  });
1023
1062
  }
1024
- async function validateWithStateMutation() {
1063
+ const validateWithStateMutation = withLatest(async () => {
1025
1064
  meta.pending = true;
1026
1065
  meta.validated = true;
1027
- const result = await validateCurrentValue('validated-only');
1066
+ return validateCurrentValue('validated-only');
1067
+ }, result => {
1028
1068
  if (markedForRemoval) {
1029
1069
  result.valid = true;
1030
1070
  result.errors = [];
@@ -1032,23 +1072,21 @@
1032
1072
  setState({ errors: result.errors });
1033
1073
  meta.pending = false;
1034
1074
  return result;
1035
- }
1036
- async function validateValidStateOnly() {
1037
- const result = await validateCurrentValue('silent');
1075
+ });
1076
+ const validateValidStateOnly = withLatest(async () => {
1077
+ return validateCurrentValue('silent');
1078
+ }, result => {
1038
1079
  if (markedForRemoval) {
1039
1080
  result.valid = true;
1040
1081
  }
1041
1082
  meta.valid = result.valid;
1042
1083
  return result;
1043
- }
1084
+ });
1044
1085
  function validate$1(opts) {
1045
- if (!(opts === null || opts === void 0 ? void 0 : opts.mode) || (opts === null || opts === void 0 ? void 0 : opts.mode) === 'force') {
1046
- return validateWithStateMutation();
1086
+ if ((opts === null || opts === void 0 ? void 0 : opts.mode) === 'silent') {
1087
+ return validateValidStateOnly();
1047
1088
  }
1048
- if ((opts === null || opts === void 0 ? void 0 : opts.mode) === 'validated-only') {
1049
- return validateWithStateMutation();
1050
- }
1051
- return validateValidStateOnly();
1089
+ return validateWithStateMutation();
1052
1090
  }
1053
1091
  // Common input/change event handler
1054
1092
  function handleChange(e, shouldValidate = true) {
@@ -1073,13 +1111,15 @@
1073
1111
  meta.touched = isTouched;
1074
1112
  }
1075
1113
  let unwatchValue;
1114
+ let lastWatchedValue = klona(value.value);
1076
1115
  function watchValue() {
1077
1116
  unwatchValue = vue.watch(value, (val, oldVal) => {
1078
- if (es6(val, oldVal)) {
1117
+ if (isEqual(val, oldVal) && isEqual(val, lastWatchedValue)) {
1079
1118
  return;
1080
1119
  }
1081
1120
  const validateFn = validateOnValueUpdate ? validateWithStateMutation : validateValidStateOnly;
1082
1121
  validateFn();
1122
+ lastWatchedValue = klona(val);
1083
1123
  }, {
1084
1124
  deep: true,
1085
1125
  });
@@ -1135,7 +1175,7 @@
1135
1175
  vue.provide(FieldContextKey, field);
1136
1176
  if (vue.isRef(rules) && typeof vue.unref(rules) !== 'function') {
1137
1177
  vue.watch(rules, (value, oldValue) => {
1138
- if (es6(value, oldValue)) {
1178
+ if (isEqual(value, oldValue)) {
1139
1179
  return;
1140
1180
  }
1141
1181
  meta.validated ? validateWithStateMutation() : validateValidStateOnly();
@@ -1180,7 +1220,7 @@
1180
1220
  if (!Object.keys(deps).length) {
1181
1221
  return;
1182
1222
  }
1183
- const shouldValidate = !es6(deps, oldDeps);
1223
+ const shouldValidate = !isEqual(deps, oldDeps);
1184
1224
  if (shouldValidate) {
1185
1225
  meta.validated ? validateWithStateMutation() : validateValidStateOnly();
1186
1226
  }
@@ -1231,12 +1271,15 @@
1231
1271
  const currentValue = vue.unref(field.value);
1232
1272
  const checkedVal = vue.unref(checkedValue);
1233
1273
  return Array.isArray(currentValue)
1234
- ? currentValue.findIndex(v => es6(v, checkedVal)) >= 0
1235
- : es6(checkedVal, currentValue);
1274
+ ? currentValue.findIndex(v => isEqual(v, checkedVal)) >= 0
1275
+ : isEqual(checkedVal, currentValue);
1236
1276
  });
1237
1277
  function handleCheckboxChange(e, shouldValidate = true) {
1238
1278
  var _a;
1239
1279
  if (checked.value === ((_a = e === null || e === void 0 ? void 0 : e.target) === null || _a === void 0 ? void 0 : _a.checked)) {
1280
+ if (shouldValidate) {
1281
+ field.validate();
1282
+ }
1240
1283
  return;
1241
1284
  }
1242
1285
  let newValue = normalizeEventValue(e);
@@ -1265,7 +1308,7 @@
1265
1308
  return;
1266
1309
  }
1267
1310
  vue.watch(value, newValue => {
1268
- if (es6(newValue, getCurrentModelValue(vm, propName))) {
1311
+ if (isEqual(newValue, getCurrentModelValue(vm, propName))) {
1269
1312
  return;
1270
1313
  }
1271
1314
  vm.emit(emitName, newValue);
@@ -1275,7 +1318,7 @@
1275
1318
  return;
1276
1319
  }
1277
1320
  const newValue = propValue === IS_ABSENT ? undefined : propValue;
1278
- if (es6(newValue, applyModelModifiers(value.value, vm.props.modelModifiers))) {
1321
+ if (isEqual(newValue, applyModelModifiers(value.value, vm.props.modelModifiers))) {
1279
1322
  return;
1280
1323
  }
1281
1324
  handleChange(newValue);
@@ -1536,6 +1579,54 @@
1536
1579
  // form meta aggregations
1537
1580
  const meta = useFormMeta(fieldsByPath, formValues, originalInitialValues, errors);
1538
1581
  const schema = opts === null || opts === void 0 ? void 0 : opts.validationSchema;
1582
+ /**
1583
+ * Batches validation runs in 5ms batches
1584
+ * Must have two distinct batch queues to make sure they don't override each other settings #3783
1585
+ */
1586
+ const debouncedSilentValidation = debounceAsync(_validateSchema, 5);
1587
+ const debouncedValidation = debounceAsync(_validateSchema, 5);
1588
+ const validateSchema = withLatest(async (mode) => {
1589
+ return (await mode) === 'silent' ? debouncedSilentValidation() : debouncedValidation();
1590
+ }, (formResult, [mode]) => {
1591
+ // fields by id lookup
1592
+ const fieldsById = formCtx.fieldsByPath.value || {};
1593
+ // errors fields names, we need it to also check if custom errors are updated
1594
+ const currentErrorsPaths = keysOf(formCtx.errorBag.value);
1595
+ // collect all the keys from the schema and all fields
1596
+ // this ensures we have a complete keymap of all the fields
1597
+ const paths = [
1598
+ ...new Set([...keysOf(formResult.results), ...keysOf(fieldsById), ...currentErrorsPaths]),
1599
+ ];
1600
+ // aggregates the paths into a single result object while applying the results on the fields
1601
+ return paths.reduce((validation, path) => {
1602
+ const field = fieldsById[path];
1603
+ const messages = (formResult.results[path] || { errors: [] }).errors;
1604
+ const fieldResult = {
1605
+ errors: messages,
1606
+ valid: !messages.length,
1607
+ };
1608
+ validation.results[path] = fieldResult;
1609
+ if (!fieldResult.valid) {
1610
+ validation.errors[path] = fieldResult.errors[0];
1611
+ }
1612
+ // field not rendered
1613
+ if (!field) {
1614
+ setFieldError(path, messages);
1615
+ return validation;
1616
+ }
1617
+ // always update the valid flag regardless of the mode
1618
+ applyFieldMutation(field, f => (f.meta.valid = fieldResult.valid));
1619
+ if (mode === 'silent') {
1620
+ return validation;
1621
+ }
1622
+ const wasValidated = Array.isArray(field) ? field.some(f => f.meta.validated) : field.meta.validated;
1623
+ if (mode === 'validated-only' && !wasValidated) {
1624
+ return validation;
1625
+ }
1626
+ applyFieldMutation(field, f => f.setState({ errors: fieldResult.errors }));
1627
+ return validation;
1628
+ }, { valid: formResult.valid, results: {}, errors: {} });
1629
+ });
1539
1630
  const formCtx = {
1540
1631
  formId,
1541
1632
  fieldsByPath,
@@ -1791,7 +1882,7 @@
1791
1882
  // if it does belong to it that means the group still exists
1792
1883
  // #3844
1793
1884
  if (isSameGroup && Array.isArray(currentGroupValue) && !shouldKeepValue) {
1794
- const valueIdx = currentGroupValue.findIndex(i => es6(i, vue.unref(field.checkedValue)));
1885
+ const valueIdx = currentGroupValue.findIndex(i => isEqual(i, vue.unref(field.checkedValue)));
1795
1886
  if (valueIdx > -1) {
1796
1887
  const newVal = [...currentGroupValue];
1797
1888
  newVal.splice(valueIdx, 1);
@@ -1937,53 +2028,6 @@
1937
2028
  });
1938
2029
  return formResult;
1939
2030
  }
1940
- /**
1941
- * Batches validation runs in 5ms batches
1942
- * Must have two distinct batch queues to make sure they don't override each other settings #3783
1943
- */
1944
- const debouncedSilentValidation = debounceAsync(_validateSchema, 5);
1945
- const debouncedValidation = debounceAsync(_validateSchema, 5);
1946
- async function validateSchema(mode) {
1947
- const formResult = await (mode === 'silent' ? debouncedSilentValidation() : debouncedValidation());
1948
- // fields by id lookup
1949
- const fieldsById = formCtx.fieldsByPath.value || {};
1950
- // errors fields names, we need it to also check if custom errors are updated
1951
- const currentErrorsPaths = keysOf(formCtx.errorBag.value);
1952
- // collect all the keys from the schema and all fields
1953
- // this ensures we have a complete keymap of all the fields
1954
- const paths = [
1955
- ...new Set([...keysOf(formResult.results), ...keysOf(fieldsById), ...currentErrorsPaths]),
1956
- ];
1957
- // aggregates the paths into a single result object while applying the results on the fields
1958
- return paths.reduce((validation, path) => {
1959
- const field = fieldsById[path];
1960
- const messages = (formResult.results[path] || { errors: [] }).errors;
1961
- const fieldResult = {
1962
- errors: messages,
1963
- valid: !messages.length,
1964
- };
1965
- validation.results[path] = fieldResult;
1966
- if (!fieldResult.valid) {
1967
- validation.errors[path] = fieldResult.errors[0];
1968
- }
1969
- // field not rendered
1970
- if (!field) {
1971
- setFieldError(path, messages);
1972
- return validation;
1973
- }
1974
- // always update the valid flag regardless of the mode
1975
- applyFieldMutation(field, f => (f.meta.valid = fieldResult.valid));
1976
- if (mode === 'silent') {
1977
- return validation;
1978
- }
1979
- const wasValidated = Array.isArray(field) ? field.some(f => f.meta.validated) : field.meta.validated;
1980
- if (mode === 'validated-only' && !wasValidated) {
1981
- return validation;
1982
- }
1983
- applyFieldMutation(field, f => f.setState({ errors: fieldResult.errors }));
1984
- return validation;
1985
- }, { valid: formResult.valid, results: {}, errors: {} });
1986
- }
1987
2031
  const submitForm = handleSubmit((_, { evt }) => {
1988
2032
  if (isFormSubmitEvent(evt)) {
1989
2033
  evt.target.submit();
@@ -2047,7 +2091,7 @@
2047
2091
  valid: 'every',
2048
2092
  };
2049
2093
  const isDirty = vue.computed(() => {
2050
- return !es6(currentValues, vue.unref(initialValues));
2094
+ return !isEqual(currentValues, vue.unref(initialValues));
2051
2095
  });
2052
2096
  function calculateFlags() {
2053
2097
  const fields = Object.values(fieldsByPath.value).flat(1).filter(Boolean);
@@ -1,6 +1,6 @@
1
1
  /**
2
- * vee-validate v4.6.6
2
+ * vee-validate v4.6.8
3
3
  * (c) 2022 Abdelrahman Awad
4
4
  * @license MIT
5
5
  */
6
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).VeeValidate={},e.Vue)}(this,(function(e,t){"use strict";function r(e){return"function"==typeof e}function n(e){return null==e}const a=e=>null!==e&&!!e&&"object"==typeof e&&!Array.isArray(e);function u(e){return Number(e)>=0}const i={};const o=Symbol("vee-validate-form"),l=Symbol("vee-validate-field-instance"),s=Symbol("Default empty value");function d(e){return r(e)&&!!e.__locatorRef}function c(e){return!!e&&r(e.validate)}function f(e){return"checkbox"===e||"radio"===e}function v(e){return Array.isArray(e)?0===e.length:a(e)&&0===Object.keys(e).length}function p(e){return/^\[.+\]$/i.test(e)}function m(e){return"SELECT"===e.tagName}function h(e,t){return!function(e,t){const r=![!1,null,void 0,0].includes(t.multiple)&&!Number.isNaN(t.multiple);return"select"===e&&"multiple"in t&&r}(e,t)&&"file"!==t.type&&!f(t.type)}function y(e){return g(e)&&e.target&&"submit"in e.target}function g(e){return!!e&&(!!("undefined"!=typeof Event&&r(Event)&&e instanceof Event)||!(!e||!e.srcElement))}function b(e,t){return t in e&&e[t]!==s}var O=function e(t,r){if(t===r)return!0;if(t&&r&&"object"==typeof t&&"object"==typeof r){if(t.constructor!==r.constructor)return!1;var n,a,u;if(Array.isArray(t)){if((n=t.length)!=r.length)return!1;for(a=n;0!=a--;)if(!e(t[a],r[a]))return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if((n=(u=Object.keys(t)).length)!==Object.keys(r).length)return!1;for(a=n;0!=a--;)if(!Object.prototype.hasOwnProperty.call(r,u[a]))return!1;for(a=n;0!=a--;){var i=u[a];if(!e(t[i],r[i]))return!1}return!0}return t!=t&&r!=r};function V(e){return p(e)?e.replace(/\[|\]/gi,""):e}function F(e,t,r){if(!e)return r;if(p(t))return e[V(t)];return(t||"").split(/\.|\[(\d+)\]/).filter(Boolean).reduce(((e,t)=>{return(a(n=e)||Array.isArray(n))&&t in e?e[t]:r;var n}),e)}function A(e,t,r){if(p(t))return void(e[V(t)]=r);const a=t.split(/\.|\[(\d+)\]/).filter(Boolean);let i=e;for(let e=0;e<a.length;e++){if(e===a.length-1)return void(i[a[e]]=r);a[e]in i&&!n(i[a[e]])||(i[a[e]]=u(a[e+1])?[]:{}),i=i[a[e]]}}function j(e,t){Array.isArray(e)&&u(t)?e.splice(Number(t),1):a(e)&&delete e[t]}function w(e,t){if(p(t))return void delete e[V(t)];const r=t.split(/\.|\[(\d+)\]/).filter(Boolean);let a=e;for(let e=0;e<r.length;e++){if(e===r.length-1){j(a,r[e]);break}if(!(r[e]in a)||n(a[r[e]]))break;a=a[r[e]]}const u=r.map(((t,n)=>F(e,r.slice(0,n).join("."))));for(let t=u.length-1;t>=0;t--)v(u[t])&&(0!==t?j(u[t-1],r[t-1]):j(e,r[0]))}function E(e){return Object.keys(e)}function S(e,r){const n=t.getCurrentInstance();return(null==n?void 0:n.provides[e])||t.inject(e,r)}function k(e){t.warn(`[vee-validate]: ${e}`)}function B(e){return Array.isArray(e)?e[0]:e}function I(e,t,r){if(Array.isArray(e)){const r=[...e],n=r.findIndex((e=>O(e,t)));return n>=0?r.splice(n,1):r.push(t),r}return O(e,t)?r:t}function M(e,t=0){let r=null,n=[];return function(...a){return r&&window.clearTimeout(r),r=window.setTimeout((()=>{const t=e(...a);n.forEach((e=>e(t))),n=[]}),t),new Promise((e=>n.push(e)))}}function T(e,t){return a(t)&&t.number?function(e){const t=parseFloat(e);return isNaN(t)?e:t}(e):e}const C=(e,t,r)=>t.slots.default?"string"!=typeof e&&e?{default:()=>{var e,n;return null===(n=(e=t.slots).default)||void 0===n?void 0:n.call(e,r())}}:t.slots.default(r()):t.slots.default;function R(e){if(x(e))return e._value}function x(e){return"_value"in e}function P(e){if(!g(e))return e;const t=e.target;if(f(t.type)&&x(t))return R(t);if("file"===t.type&&t.files){const e=Array.from(t.files);return t.multiple?e:e[0]}if(m(r=t)&&r.multiple)return Array.from(t.options).filter((e=>e.selected&&!e.disabled)).map(R);var r;if(m(t)){const e=Array.from(t.options).find((e=>e.selected));return e?R(e):t.value}return t.value}function N(e){const t={};return Object.defineProperty(t,"_$$isNormalized",{value:!0,writable:!1,enumerable:!1,configurable:!1}),e?a(e)&&e._$$isNormalized?e:a(e)?Object.keys(e).reduce(((t,r)=>{const n=function(e){if(!0===e)return[];if(Array.isArray(e))return e;if(a(e))return e;return[e]}(e[r]);return!1!==e[r]&&(t[r]=_(n)),t}),t):"string"!=typeof e?t:e.split("|").reduce(((e,t)=>{const r=U(t);return r.name?(e[r.name]=_(r.params),e):e}),t):t}function _(e){const t=e=>"string"==typeof e&&"@"===e[0]?function(e){const t=t=>F(t,e)||t[e];return t.__locatorRef=e,t}(e.slice(1)):e;return Array.isArray(e)?e.map(t):e instanceof RegExp?[e]:Object.keys(e).reduce(((r,n)=>(r[n]=t(e[n]),r)),{})}const U=e=>{let t=[];const r=e.split(":")[0];return e.includes(":")&&(t=e.split(":").slice(1).join(":").split(",")),{name:r,params:t}};let $=Object.assign({},{generateMessage:({field:e})=>`${e} is not valid.`,bails:!0,validateOnBlur:!0,validateOnChange:!0,validateOnInput:!1,validateOnModelUpdate:!0});const D=()=>$,q=e=>{$=Object.assign(Object.assign({},$),e)};async function z(e,t,n={}){const a=null==n?void 0:n.bails,u={name:(null==n?void 0:n.name)||"{field}",rules:t,bails:null==a||a,formData:(null==n?void 0:n.values)||{}},i=await async function(e,t){if(c(e.rules))return async function(e,t,r){var n;return{errors:await t.validate(e,{abortEarly:null===(n=r.bails)||void 0===n||n}).then((()=>[])).catch((e=>{if("ValidationError"===e.name)return e.errors;throw e}))}}(t,e.rules,{bails:e.bails});if(r(e.rules)||Array.isArray(e.rules)){const r={field:e.name,form:e.formData,value:t},n=Array.isArray(e.rules)?e.rules:[e.rules],a=n.length,u=[];for(let i=0;i<a;i++){const a=n[i],o=await a(t,r);if("string"!=typeof o&&o)continue;const l="string"==typeof o?o:K(r);if(u.push(l),e.bails)return{errors:u}}return{errors:u}}const n=Object.assign(Object.assign({},e),{rules:N(e.rules)}),a=[],u=Object.keys(n.rules),i=u.length;for(let r=0;r<i;r++){const i=u[r],o=await L(n,t,{name:i,params:n.rules[i]});if(o.error&&(a.push(o.error),e.bails))return{errors:a}}return{errors:a}}(u,e),o=i.errors;return{errors:o,valid:!o.length}}async function L(e,t,r){const n=(a=r.name,i[a]);var a;if(!n)throw new Error(`No such validator '${r.name}' exists.`);const u=function(e,t){const r=e=>d(e)?e(t):e;if(Array.isArray(e))return e.map(r);return Object.keys(e).reduce(((t,n)=>(t[n]=r(e[n]),t)),{})}(r.params,e.formData),o={field:e.name,value:t,form:e.formData,rule:Object.assign(Object.assign({},r),{params:u})},l=await n(t,u,o);return"string"==typeof l?{error:l}:{error:l?void 0:K(o)}}function K(e){const t=D().generateMessage;return t?t(e):"Field is invalid"}async function G(e,t,r){const n=E(e).map((async n=>{var a,u,i;const o=await z(F(t,n),e[n],{name:(null===(a=null==r?void 0:r.names)||void 0===a?void 0:a[n])||n,values:t,bails:null===(i=null===(u=null==r?void 0:r.bailsMap)||void 0===u?void 0:u[n])||void 0===i||i});return Object.assign(Object.assign({},o),{path:n})}));let a=!0;const u=await Promise.all(n),i={},o={};for(const e of u)i[e.path]={valid:e.valid,errors:e.errors},e.valid||(a=!1,o[e.path]=e.errors[0]);return{valid:a,results:i,errors:o}}function X(e,t,r){"object"==typeof r.value&&(r.value=H(r.value)),r.enumerable&&!r.get&&!r.set&&r.configurable&&r.writable&&"__proto__"!==t?e[t]=r.value:Object.defineProperty(e,t,r)}function H(e){if("object"!=typeof e)return e;var t,r,n,a=0,u=Object.prototype.toString.call(e);if("[object Object]"===u?n=Object.create(e.__proto__||null):"[object Array]"===u?n=Array(e.length):"[object Set]"===u?(n=new Set,e.forEach((function(e){n.add(H(e))}))):"[object Map]"===u?(n=new Map,e.forEach((function(e,t){n.set(H(t),H(e))}))):"[object Date]"===u?n=new Date(+e):"[object RegExp]"===u?n=new RegExp(e.source,e.flags):"[object DataView]"===u?n=new e.constructor(H(e.buffer)):"[object ArrayBuffer]"===u?n=e.slice(0):"Array]"===u.slice(-6)&&(n=new e.constructor(e)),n){for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)X(n,r[a],Object.getOwnPropertyDescriptor(e,r[a]));for(a=0,r=Object.getOwnPropertyNames(e);a<r.length;a++)Object.hasOwnProperty.call(n,t=r[a])&&n[t]===e[t]||X(n,t,Object.getOwnPropertyDescriptor(e,t))}return n||e}var J=function e(t,r){if(t===r)return!0;if(t&&r&&"object"==typeof t&&"object"==typeof r){if(t.constructor!==r.constructor)return!1;var n,a,u;if(Array.isArray(t)){if((n=t.length)!=r.length)return!1;for(a=n;0!=a--;)if(!e(t[a],r[a]))return!1;return!0}if(t instanceof Map&&r instanceof Map){if(t.size!==r.size)return!1;for(a of t.entries())if(!r.has(a[0]))return!1;for(a of t.entries())if(!e(a[1],r.get(a[0])))return!1;return!0}if(t instanceof Set&&r instanceof Set){if(t.size!==r.size)return!1;for(a of t.entries())if(!r.has(a[0]))return!1;return!0}if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(r)){if((n=t.length)!=r.length)return!1;for(a=n;0!=a--;)if(t[a]!==r[a])return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if((n=(u=Object.keys(t)).length)!==Object.keys(r).length)return!1;for(a=n;0!=a--;)if(!Object.prototype.hasOwnProperty.call(r,u[a]))return!1;for(a=n;0!=a--;){var i=u[a];if(!e(t[i],r[i]))return!1}return!0}return t!=t&&r!=r};let Q=0;function W(e,r){const{value:n,initialValue:a,setInitialValue:u}=Y(e,r.modelValue,!r.standalone),{errorMessage:i,errors:l,setErrors:s}=function(e,r){const n=r?S(o,void 0):void 0;function a(e){return e?Array.isArray(e)?e:[e]:[]}if(!n){const e=t.ref([]);return{errors:e,errorMessage:t.computed((()=>e.value[0])),setErrors:t=>{e.value=a(t)}}}const u=t.computed((()=>n.errorBag.value[t.unref(e)]||[]));return{errors:u,errorMessage:t.computed((()=>u.value[0])),setErrors:r=>{n.setFieldErrorBag(t.unref(e),a(r))}}}(e,!r.standalone),d=function(e,r,n){const a=t.reactive({touched:!1,pending:!1,valid:!0,validated:!!t.unref(n).length,initialValue:t.computed((()=>t.unref(r))),dirty:t.computed((()=>!J(t.unref(e),t.unref(r))))});return t.watch(n,(e=>{a.valid=!e.length}),{immediate:!0,flush:"sync"}),a}(n,a,l);return{id:Q>=Number.MAX_SAFE_INTEGER?0:++Q,path:e,value:n,initialValue:a,meta:d,errors:l,errorMessage:i,setState:function(e){var t;"value"in e&&(n.value=e.value),"errors"in e&&s(e.errors),"touched"in e&&(d.touched=null!==(t=e.touched)&&void 0!==t?t:d.touched),"initialValue"in e&&u(e.initialValue)}}}function Y(e,r,n=!0){const a=!0===n?S(o,void 0):void 0,u=t.ref(t.unref(r));function i(){return a?F(a.meta.value.initialValues,t.unref(e),t.unref(u)):t.unref(u)}function l(r){a?a.stageInitialValue(t.unref(e),r,!0):u.value=r}const s=t.computed(i);if(!a){return{value:t.ref(i()),initialValue:s,setInitialValue:l}}const d=r?t.unref(r):F(a.values,t.unref(e),t.unref(s));a.stageInitialValue(t.unref(e),d,!0);return{value:t.computed({get:()=>F(a.values,t.unref(e)),set(r){a.setFieldValue(t.unref(e),r)}}),initialValue:s,setInitialValue:l}}function Z(e,r,n){return f(null==n?void 0:n.type)?function(e,r,n){const a=(null==n?void 0:n.standalone)?void 0:S(o),u=null==n?void 0:n.checkedValue,i=null==n?void 0:n.uncheckedValue;function l(e){const r=e.handleChange,n=t.computed((()=>{const r=t.unref(e.value),n=t.unref(u);return Array.isArray(r)?r.findIndex((e=>J(e,n)))>=0:J(n,r)}));function o(o,l=!0){var s;if(n.value===(null===(s=null==o?void 0:o.target)||void 0===s?void 0:s.checked))return;let d=P(o);a||(d=I(t.unref(e.value),t.unref(u),t.unref(i))),r(d,l)}return Object.assign(Object.assign({},e),{checked:n,checkedValue:u,uncheckedValue:i,handleChange:o})}return l(ee(e,r,n))}(e,r,n):ee(e,r,n)}function ee(e,n,a){const{initialValue:u,validateOnMount:i,bails:f,type:v,checkedValue:p,label:m,validateOnValueUpdate:h,uncheckedValue:y,standalone:g,keepValueOnUnmount:b,modelPropName:O,syncVModel:V}=function(e,t){const r=()=>({initialValue:void 0,validateOnMount:!1,bails:!0,rules:"",label:e,validateOnValueUpdate:!0,standalone:!1,keepValueOnUnmount:void 0,modelPropName:"modelValue",syncVModel:!0});if(!t)return r();const n="valueProp"in t?t.valueProp:t.checkedValue;return Object.assign(Object.assign(Object.assign({},r()),t||{}),{checkedValue:n})}(t.unref(e),a),A=g?void 0:S(o);let j=!1;const{id:w,value:k,initialValue:B,meta:I,setState:M,errors:C,errorMessage:R}=W(e,{modelValue:u,standalone:g});V&&function({prop:e,value:r,handleChange:n}){const a=t.getCurrentInstance();if(!a)return;const u=e||"modelValue",i=`update:${u}`;if(!(u in a.props))return;t.watch(r,(e=>{J(e,te(a,u))||a.emit(i,e)})),t.watch((()=>te(a,u)),(e=>{if(e===s&&void 0===r.value)return;const t=e===s?void 0:e;J(t,T(r.value,a.props.modelModifiers))||n(t)}))}({value:k,prop:O,handleChange:D});const x=t.computed((()=>{let a=t.unref(n);const u=t.unref(null==A?void 0:A.schema);return u&&!c(u)&&(a=function(e,t){if(!e)return;return e[t]}(u,t.unref(e))||a),c(a)||r(a)||Array.isArray(a)?a:N(a)}));async function _(r){var n,a;return(null==A?void 0:A.validateSchema)?null!==(n=(await A.validateSchema(r)).results[t.unref(e)])&&void 0!==n?n:{valid:!0,errors:[]}:z(k.value,x.value,{name:t.unref(m)||t.unref(e),values:null!==(a=null==A?void 0:A.values)&&void 0!==a?a:{},bails:f})}async function U(){I.pending=!0,I.validated=!0;const e=await _("validated-only");return j&&(e.valid=!0,e.errors=[]),M({errors:e.errors}),I.pending=!1,e}async function $(){const e=await _("silent");return j&&(e.valid=!0),I.valid=e.valid,e}function D(e,t=!0){const r=P(e);k.value=r,!h&&t&&U()}let q;function L(){q=t.watch(k,((e,t)=>{if(J(e,t))return;(h?U:$)()}),{deep:!0})}function K(e){var r;null==q||q();const n=e&&"value"in e?e.value:B.value;M({value:H(n),initialValue:H(n),touched:null!==(r=null==e?void 0:e.touched)&&void 0!==r&&r,errors:(null==e?void 0:e.errors)||[]}),I.pending=!1,I.validated=!1,$(),t.nextTick((()=>{L()}))}t.onMounted((()=>{if(i)return U();A&&A.validateSchema||$()})),L();const G={id:w,name:e,label:m,value:k,meta:I,errors:C,errorMessage:R,type:v,checkedValue:p,uncheckedValue:y,bails:f,keepValueOnUnmount:b,resetField:K,handleReset:()=>K(),validate:function(e){return(null==e?void 0:e.mode)&&"force"!==(null==e?void 0:e.mode)?"validated-only"===(null==e?void 0:e.mode)?U():$():U()},handleChange:D,handleBlur:()=>{I.touched=!0},setState:M,setTouched:function(e){I.touched=e},setErrors:function(e){M({errors:Array.isArray(e)?e:[e]})},setValue:function(e){k.value=e}};if(t.provide(l,G),t.isRef(n)&&"function"!=typeof t.unref(n)&&t.watch(n,((e,t)=>{J(e,t)||(I.validated?U():$())}),{deep:!0}),!A)return G;A.register(G),t.onBeforeUnmount((()=>{j=!0,A.unregister(G)}));const X=t.computed((()=>{const e=x.value;return!e||r(e)||c(e)||Array.isArray(e)?{}:Object.keys(e).reduce(((t,r)=>{const n=(a=e[r],Array.isArray(a)?a.filter(d):E(a).filter((e=>d(a[e]))).map((e=>a[e]))).map((e=>e.__locatorRef)).reduce(((e,t)=>{const r=F(A.values,t)||A.values[t];return void 0!==r&&(e[t]=r),e}),{});var a;return Object.assign(t,n),t}),{})}));return t.watch(X,((e,t)=>{if(!Object.keys(e).length)return;!J(e,t)&&(I.validated?U():$())})),G}function te(e,t){return e.props[t]}function re(e,t){let r=e.as||"";return e.as||t.slots.default||(r="input"),r}function ne(e,t){return f(t.attrs.type)?b(e,"modelValue")?e.modelValue:void 0:b(e,"modelValue")?e.modelValue:t.attrs.value}const ae=t.defineComponent({name:"Field",inheritAttrs:!1,props:{as:{type:[String,Object],default:void 0},name:{type:String,required:!0},rules:{type:[Object,String,Function],default:void 0},validateOnMount:{type:Boolean,default:!1},validateOnBlur:{type:Boolean,default:void 0},validateOnChange:{type:Boolean,default:void 0},validateOnInput:{type:Boolean,default:void 0},validateOnModelUpdate:{type:Boolean,default:void 0},bails:{type:Boolean,default:()=>D().bails},label:{type:String,default:void 0},uncheckedValue:{type:null,default:void 0},modelValue:{type:null,default:s},modelModifiers:{type:null,default:()=>({})},"onUpdate:modelValue":{type:null,default:void 0},standalone:{type:Boolean,default:!1},keepValue:{type:Boolean,default:void 0}},setup(e,r){const n=t.toRef(e,"rules"),a=t.toRef(e,"name"),u=t.toRef(e,"label"),i=t.toRef(e,"uncheckedValue"),o=t.toRef(e,"keepValue"),{errors:l,value:s,errorMessage:d,validate:c,handleChange:v,handleBlur:p,setTouched:m,resetField:y,handleReset:g,meta:b,checked:O,setErrors:V}=Z(a,n,{validateOnMount:e.validateOnMount,bails:e.bails,standalone:e.standalone,type:r.attrs.type,initialValue:ne(e,r),checkedValue:r.attrs.value,uncheckedValue:i,label:u,validateOnValueUpdate:!1,keepValueOnUnmount:o}),F=function(e,t=!0){v(e,t),r.emit("update:modelValue",s.value)},A=function(e){(e=>{f(r.attrs.type)||(s.value=P(e))})(e),r.emit("update:modelValue",s.value)},j=t.computed((()=>{const{validateOnInput:t,validateOnChange:n,validateOnBlur:a,validateOnModelUpdate:u}=function(e){var t,r,n,a;const{validateOnInput:u,validateOnChange:i,validateOnBlur:o,validateOnModelUpdate:l}=D();return{validateOnInput:null!==(t=e.validateOnInput)&&void 0!==t?t:u,validateOnChange:null!==(r=e.validateOnChange)&&void 0!==r?r:i,validateOnBlur:null!==(n=e.validateOnBlur)&&void 0!==n?n:o,validateOnModelUpdate:null!==(a=e.validateOnModelUpdate)&&void 0!==a?a:l}}(e),i=[p,r.attrs.onBlur,a?c:void 0].filter(Boolean),o=[e=>F(e,t),r.attrs.onInput].filter(Boolean),l=[e=>F(e,n),r.attrs.onChange].filter(Boolean),d={name:e.name,onBlur:i,onInput:o,onChange:l,"onUpdate:modelValue":e=>F(e,u)};f(r.attrs.type)&&O&&(d.checked=O.value);return h(re(e,r),r.attrs)&&(d.value=s.value),d}));function w(){return{field:j.value,value:s.value,meta:b,errors:l.value,errorMessage:d.value,validate:c,resetField:y,handleChange:F,handleInput:A,handleReset:g,handleBlur:p,setTouched:m,setErrors:V}}return r.expose({setErrors:V,setTouched:m,reset:y,validate:c,handleChange:v}),()=>{const n=t.resolveDynamicComponent(re(e,r)),a=C(n,r,w);return n?t.h(n,Object.assign(Object.assign({},r.attrs),j.value),a):a}}});let ue=0;function ie(e){var r;const n=ue++;let a=!1;const u=t.ref({}),i=t.ref(!1),l=t.ref(0),s=[],d=t.reactive(H(t.unref(null==e?void 0:e.initialValues)||{})),{errorBag:f,setErrorBag:p,setFieldErrorBag:m}=function(e){const r=t.ref({});function n(e){return Array.isArray(e)?e:e?[e]:[]}function a(e,t){t?r.value[e]=n(t):delete r.value[e]}function u(e){r.value=E(e).reduce(((t,r)=>{const a=e[r];return a&&(t[r]=n(a)),t}),{})}e&&u(e);return{errorBag:r,setErrorBag:u,setFieldErrorBag:a}}(null==e?void 0:e.initialErrors),h=t.computed((()=>E(f.value).reduce(((e,t)=>{const r=f.value[t];return r&&r.length&&(e[t]=r[0]),e}),{})));function g(e){const t=u.value[e];return Array.isArray(t)?t[0]:t}function b(e){return!!u.value[e]}const O=t.computed((()=>E(u.value).reduce(((e,r)=>{const n=g(r);return n&&(e[r]=t.unref(n.label||n.name)||""),e}),{}))),V=t.computed((()=>E(u.value).reduce(((e,t)=>{var r;const n=g(t);return n&&(e[t]=null===(r=n.bails)||void 0===r||r),e}),{}))),j=Object.assign({},(null==e?void 0:e.initialErrors)||{}),S=null!==(r=null==e?void 0:e.keepValuesOnUnmount)&&void 0!==r&&r,{initialValues:k,originalInitialValues:B,setInitialValues:T}=function(e,r,n){const a=t.ref(H(t.unref(n))||{}),u=t.ref(H(t.unref(n))||{});function i(t,n=!1){a.value=H(t),u.value=H(t),n&&E(e.value).forEach((t=>{const n=e.value[t],u=Array.isArray(n)?n.some((e=>e.meta.touched)):null==n?void 0:n.meta.touched;if(!n||u)return;const i=F(a.value,t);A(r,t,H(i))}))}t.isRef(n)&&t.watch(n,(e=>{i(e,!0)}),{deep:!0});return{initialValues:a,originalInitialValues:u,setInitialValues:i}}(u,d,null==e?void 0:e.initialValues),C=function(e,r,n,a){const u={touched:"some",pending:"some",valid:"every"},i=t.computed((()=>!J(r,t.unref(n))));function o(){const t=Object.values(e.value).flat(1).filter(Boolean);return E(u).reduce(((e,r)=>{const n=u[r];return e[r]=t[n]((e=>e.meta[r])),e}),{})}const l=t.reactive(o());return t.watchEffect((()=>{const e=o();l.touched=e.touched,l.valid=e.valid,l.pending=e.pending})),t.computed((()=>Object.assign(Object.assign({initialValues:t.unref(n)},l),{valid:l.valid&&!E(a.value).length,dirty:i.value})))}(u,d,B,h),R=null==e?void 0:e.validationSchema,x={formId:n,fieldsByPath:u,values:d,errorBag:f,errors:h,schema:R,submitCount:l,meta:C,isSubmitting:i,fieldArrays:s,keepValuesOnUnmount:S,validateSchema:t.unref(R)?async function(e){const t=await("silent"===e?ie():oe()),r=x.fieldsByPath.value||{},n=E(x.errorBag.value);return[...new Set([...E(t.results),...E(r),...n])].reduce(((n,a)=>{const u=r[a],i=(t.results[a]||{errors:[]}).errors,o={errors:i,valid:!i.length};if(n.results[a]=o,o.valid||(n.errors[a]=o.errors[0]),!u)return U(a,i),n;if(N(u,(e=>e.meta.valid=o.valid)),"silent"===e)return n;const l=Array.isArray(u)?u.some((e=>e.meta.validated)):u.meta.validated;return"validated-only"!==e||l?(N(u,(e=>e.setState({errors:o.errors}))),n):n}),{valid:t.valid,results:{},errors:{}})}:void 0,validate:ee,register:function(e){const r=t.unref(e.name);W(e,r),t.isRef(e.name)&&t.watch(e.name,(async(r,n)=>{await t.nextTick(),Z(e,n),W(e,r),(h.value[n]||h.value[r])&&(U(n,void 0),te(r)),await t.nextTick(),b(n)||w(d,n)}));const n=t.unref(e.errorMessage);n&&(null==j?void 0:j[r])!==n&&te(r);delete j[r]},unregister:function(e){const r=t.unref(e.name),n=u.value[r],a=!!n&&P(n);Z(e,r),t.nextTick((()=>{var i;const o=null!==(i=t.unref(e.keepValueOnUnmount))&&void 0!==i?i:t.unref(S),l=F(d,r);if(a&&(n===u.value[r]||!u.value[r])&&Array.isArray(l)&&!o){const n=l.findIndex((r=>J(r,t.unref(e.checkedValue))));if(n>-1){const e=[...l];e.splice(n,1),D(r,e,{force:!0})}}if(!b(r)){if(U(r,void 0),o)return;if(a&&!v(F(d,r)))return;w(d,r)}}))},setFieldErrorBag:m,validateField:te,setFieldValue:D,setValues:q,setErrors:$,setFieldError:U,setFieldTouched:K,setTouched:X,resetForm:Q,handleSubmit:re,stageInitialValue:function(t,r,n=!1){A(d,t,r),ne(t,r),n&&!(null==e?void 0:e.initialValues)&&A(B.value,t,H(r))},unsetInitialValue:function(e){w(k.value,e)},setFieldInitialValue:ne,useFieldModel:L};function P(e){return Array.isArray(e)}function N(e,t){return Array.isArray(e)?e.forEach(t):t(e)}function _(e){Object.values(u.value).forEach((t=>{t&&N(t,e)}))}function U(e,t){m(e,t)}function $(e){p(e)}function D(e,r,{force:n}={force:!1}){var i;const o=u.value[e],l=H(r);if(!o)return void A(d,e,l);if(P(o)&&"checkbox"===(null===(i=o[0])||void 0===i?void 0:i.type)&&!Array.isArray(r)){const t=H(I(F(d,e)||[],r,void 0));return void A(d,e,t)}let s=r;P(o)||"checkbox"!==o.type||n||a||(s=H(I(F(d,e),r,t.unref(o.uncheckedValue)))),A(d,e,s)}function q(e){E(d).forEach((e=>{delete d[e]})),E(e).forEach((t=>{D(t,e[t])})),s.forEach((e=>e&&e.reset()))}function z(e){const{value:r}=Y(e);return t.watch(r,(()=>{b(t.unref(e))||ee({mode:"validated-only"})}),{deep:!0}),r}function L(e){return Array.isArray(e)?e.map(z):z(e)}function K(e,t){const r=u.value[e];r&&N(r,(e=>e.setTouched(t)))}function X(e){E(e).forEach((t=>{K(t,!!e[t])}))}function Q(e){a=!0,(null==e?void 0:e.values)?(T(e.values),q(null==e?void 0:e.values)):(T(B.value),q(B.value)),_((e=>e.resetField())),(null==e?void 0:e.touched)&&X(e.touched),$((null==e?void 0:e.errors)||{}),l.value=(null==e?void 0:e.submitCount)||0,t.nextTick((()=>{a=!1}))}function W(e,r){const n=t.markRaw(e),a=r;if(!u.value[a])return void(u.value[a]=n);const i=u.value[a];i&&!Array.isArray(i)&&(u.value[a]=[i]),u.value[a]=[...u.value[a],n]}function Z(e,t){const r=t,n=u.value[r];if(n)if(P(n)||e.id!==n.id){if(P(n)){const t=n.findIndex((t=>t.id===e.id));if(-1===t)return;n.splice(t,1),n.length||delete u.value[r]}}else delete u.value[r]}async function ee(e){if(_((e=>e.meta.validated=!0)),x.validateSchema)return x.validateSchema((null==e?void 0:e.mode)||"force");const r=await Promise.all(Object.values(u.value).map((r=>{const n=Array.isArray(r)?r[0]:r;return n?n.validate(e).then((e=>({key:t.unref(n.name),valid:e.valid,errors:e.errors}))):Promise.resolve({key:"",valid:!0,errors:[]})}))),n={},a={};for(const e of r)n[e.key]={valid:e.valid,errors:e.errors},e.errors.length&&(a[e.key]=e.errors[0]);return{valid:r.every((e=>e.valid)),results:n,errors:a}}async function te(e){const r=u.value[e];return r?Array.isArray(r)?r.map((e=>e.validate()))[0]:r.validate():(t.warn(`field with name ${e} was not found`),Promise.resolve({errors:[],valid:!0}))}function re(e,t){return function(r){return r instanceof Event&&(r.preventDefault(),r.stopPropagation()),X(E(u.value).reduce(((e,t)=>(e[t]=!0,e)),{})),i.value=!0,l.value++,ee().then((n=>{if(n.valid&&"function"==typeof e)return e(H(d),{evt:r,setErrors:$,setFieldError:U,setTouched:X,setFieldTouched:K,setValues:q,setFieldValue:D,resetForm:Q});n.valid||"function"!=typeof t||t({values:H(d),evt:r,errors:n.errors,results:n.results})})).then((e=>(i.value=!1,e)),(e=>{throw i.value=!1,e}))}}function ne(e,t){A(k.value,e,H(t))}async function ae(){const e=t.unref(R);if(!e)return{valid:!0,results:{},errors:{}};const r=c(e)?await async function(e,t){const r=await e.validate(t,{abortEarly:!1}).then((()=>[])).catch((e=>{if("ValidationError"!==e.name)throw e;return e.inner||[]})),n={},a={};for(const e of r){const t=e.errors;n[e.path]={valid:!t.length,errors:t},t.length&&(a[e.path]=t[0])}return{valid:!r.length,results:n,errors:a}}(e,d):await G(e,d,{names:O.value,bailsMap:V.value});return r}const ie=M(ae,5),oe=M(ae,5);const le=re(((e,{evt:t})=>{y(t)&&t.target.submit()}));return t.onMounted((()=>{(null==e?void 0:e.initialErrors)&&$(e.initialErrors),(null==e?void 0:e.initialTouched)&&X(e.initialTouched),(null==e?void 0:e.validateOnMount)?ee():x.validateSchema&&x.validateSchema("silent")})),t.isRef(R)&&t.watch(R,(()=>{var e;null===(e=x.validateSchema)||void 0===e||e.call(x,"validated-only")})),t.provide(o,x),{errors:h,meta:C,values:d,isSubmitting:i,submitCount:l,validate:ee,validateField:te,handleReset:()=>Q(),resetForm:Q,handleSubmit:re,submitForm:le,setFieldError:U,setErrors:$,setFieldValue:D,setValues:q,setFieldTouched:K,setTouched:X,useFieldModel:L}}const oe=t.defineComponent({name:"Form",inheritAttrs:!1,props:{as:{type:String,default:"form"},validationSchema:{type:Object,default:void 0},initialValues:{type:Object,default:void 0},initialErrors:{type:Object,default:void 0},initialTouched:{type:Object,default:void 0},validateOnMount:{type:Boolean,default:!1},onSubmit:{type:Function,default:void 0},onInvalidSubmit:{type:Function,default:void 0},keepValues:{type:Boolean,default:!1}},setup(e,r){const n=t.toRef(e,"initialValues"),a=t.toRef(e,"validationSchema"),u=t.toRef(e,"keepValues"),{errors:i,values:o,meta:l,isSubmitting:s,submitCount:d,validate:c,validateField:f,handleReset:v,resetForm:p,handleSubmit:m,setErrors:h,setFieldError:b,setFieldValue:O,setValues:V,setFieldTouched:F,setTouched:A}=ie({validationSchema:a.value?a:void 0,initialValues:n,initialErrors:e.initialErrors,initialTouched:e.initialTouched,validateOnMount:e.validateOnMount,keepValuesOnUnmount:u}),j=m(((e,{evt:t})=>{y(t)&&t.target.submit()}),e.onInvalidSubmit),w=e.onSubmit?m(e.onSubmit,e.onInvalidSubmit):j;function E(e){g(e)&&e.preventDefault(),v(),"function"==typeof r.attrs.onReset&&r.attrs.onReset()}function S(t,r){return m("function"!=typeof t||r?r:t,e.onInvalidSubmit)(t)}function k(){return{meta:l.value,errors:i.value,values:o,isSubmitting:s.value,submitCount:d.value,validate:c,validateField:f,handleSubmit:S,handleReset:v,submitForm:j,setErrors:h,setFieldError:b,setFieldValue:O,setValues:V,setFieldTouched:F,setTouched:A,resetForm:p}}return r.expose({setFieldError:b,setErrors:h,setFieldValue:O,setValues:V,setFieldTouched:F,setTouched:A,resetForm:p,validate:c,validateField:f}),function(){const n="form"===e.as?e.as:t.resolveDynamicComponent(e.as),a=C(n,r,k);if(!e.as)return a;const u="form"===e.as?{novalidate:!0}:{};return t.h(n,Object.assign(Object.assign(Object.assign({},u),r.attrs),{onSubmit:w,onReset:E}),a)}}}),le=oe;function se(e){const r=S(o,void 0),a=t.ref([]),u=()=>{},i={fields:a,remove:u,push:u,swap:u,insert:u,update:u,replace:u,prepend:u,move:u};if(!r)return k("FieldArray requires being a child of `<Form/>` or `useForm` being called before it. Array fields may not work correctly"),i;if(!t.unref(e))return k("FieldArray requires a field path to be provided, did you forget to pass the `name` prop?"),i;const l=r.fieldArrays.find((r=>t.unref(r.path)===t.unref(e)));if(l)return l;let s=0;function d(){const n=F(null==r?void 0:r.values,t.unref(e),[])||[];a.value=n.map(f),c()}function c(){const e=a.value.length;for(let t=0;t<e;t++){const r=a.value[t];r.isFirst=0===t,r.isLast=t===e-1}}function f(n){const u=s++,i={key:u,value:t.computed({get(){const i=F(null==r?void 0:r.values,t.unref(e),[])||[],o=a.value.findIndex((e=>e.key===u));return-1===o?n:i[o]},set(e){const t=a.value.findIndex((e=>e.key===u));-1!==t?v(t,e):k("Attempting to update a non-existent array item")}}),isFirst:!1,isLast:!1};return i}function v(n,a){const u=t.unref(e),i=F(null==r?void 0:r.values,u);!Array.isArray(i)||i.length-1<n||null==r||r.setFieldValue(`${u}[${n}]`,a)}d();const p={fields:a,remove:function(n){const u=t.unref(e),i=F(null==r?void 0:r.values,u);if(!i||!Array.isArray(i))return;const o=[...i];o.splice(n,1),null==r||r.unsetInitialValue(u+`[${n}]`),null==r||r.setFieldValue(u,o),a.value.splice(n,1),c()},push:function(u){const i=t.unref(e),o=F(null==r?void 0:r.values,i),l=n(o)?[]:o;if(!Array.isArray(l))return;const s=[...l];s.push(u),null==r||r.stageInitialValue(i+`[${s.length-1}]`,u),null==r||r.setFieldValue(i,s),a.value.push(f(u)),c()},swap:function(n,u){const i=t.unref(e),o=F(null==r?void 0:r.values,i);if(!Array.isArray(o)||!(n in o)||!(u in o))return;const l=[...o],s=[...a.value],d=l[n];l[n]=l[u],l[u]=d;const f=s[n];s[n]=s[u],s[u]=f,null==r||r.setFieldValue(i,l),a.value=s,c()},insert:function(n,u){const i=t.unref(e),o=F(null==r?void 0:r.values,i);if(!Array.isArray(o)||o.length<n)return;const l=[...o],s=[...a.value];l.splice(n,0,u),s.splice(n,0,f(u)),null==r||r.setFieldValue(i,l),a.value=s,c()},update:v,replace:function(n){const a=t.unref(e);null==r||r.setFieldValue(a,n),d()},prepend:function(u){const i=t.unref(e),o=F(null==r?void 0:r.values,i),l=n(o)?[]:o;if(!Array.isArray(l))return;const s=[u,...l];null==r||r.stageInitialValue(i+`[${s.length-1}]`,u),null==r||r.setFieldValue(i,s),a.value.unshift(f(u)),c()},move:function(u,i){const o=t.unref(e),l=F(null==r?void 0:r.values,o),s=n(l)?[]:[...l];if(!Array.isArray(l)||!(u in l)||!(i in l))return;const d=[...a.value],f=d[u];d.splice(u,1),d.splice(i,0,f);const v=s[u];s.splice(u,1),s.splice(i,0,v),null==r||r.setFieldValue(o,s),a.value=d,c()}};return r.fieldArrays.push(Object.assign({path:e,reset:d},p)),t.onBeforeUnmount((()=>{const n=r.fieldArrays.findIndex((r=>t.unref(r.path)===t.unref(e)));n>=0&&r.fieldArrays.splice(n,1)})),p}const de=t.defineComponent({name:"FieldArray",inheritAttrs:!1,props:{name:{type:String,required:!0}},setup(e,r){const{push:n,remove:a,swap:u,insert:i,replace:o,update:l,prepend:s,move:d,fields:c}=se(t.toRef(e,"name"));function f(){return{fields:c.value,push:n,remove:a,swap:u,insert:i,update:l,replace:o,prepend:s,move:d}}return r.expose({push:n,remove:a,swap:u,insert:i,update:l,replace:o,prepend:s,move:d}),()=>C(void 0,r,f)}}),ce=t.defineComponent({name:"ErrorMessage",props:{as:{type:String,default:void 0},name:{type:String,required:!0}},setup(e,r){const n=t.inject(o,void 0),a=t.computed((()=>null==n?void 0:n.errors.value[e.name]));function u(){return{message:a.value}}return()=>{if(!a.value)return;const n=e.as?t.resolveDynamicComponent(e.as):e.as,i=C(n,r,u),o=Object.assign({role:"alert"},r.attrs);return n||!Array.isArray(i)&&i||!(null==i?void 0:i.length)?!Array.isArray(i)&&i||(null==i?void 0:i.length)?t.h(n,o,i):t.h(n||"span",o,a.value):i}}});e.ErrorMessage=ce,e.Field=ae,e.FieldArray=de,e.FieldContextKey=l,e.Form=le,e.FormContextKey=o,e.IS_ABSENT=s,e.configure=q,e.defineRule=function(e,t){!function(e,t){if(r(t))return;throw new Error(`Extension Error: The validator '${e}' must be a function.`)}(e,t),i[e]=t},e.useField=Z,e.useFieldArray=se,e.useFieldError=function(e){const r=S(o),n=e?void 0:t.inject(l);return t.computed((()=>e?null==r?void 0:r.errors.value[t.unref(e)]:null==n?void 0:n.errorMessage.value))},e.useFieldValue=function(e){const r=S(o),n=e?void 0:t.inject(l);return t.computed((()=>e?F(null==r?void 0:r.values,t.unref(e)):t.unref(null==n?void 0:n.value)))},e.useForm=ie,e.useFormErrors=function(){const e=S(o);return e||k("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>(null==e?void 0:e.errors.value)||{}))},e.useFormValues=function(){const e=S(o);return e||k("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>(null==e?void 0:e.values)||{}))},e.useIsFieldDirty=function(e){const r=S(o);let n=e?void 0:t.inject(l);return t.computed((()=>(e&&(n=B(null==r?void 0:r.fieldsByPath.value[t.unref(e)])),n?n.meta.dirty:(k(`field with name ${t.unref(e)} was not found`),!1))))},e.useIsFieldTouched=function(e){const r=S(o);let n=e?void 0:t.inject(l);return t.computed((()=>(e&&(n=B(null==r?void 0:r.fieldsByPath.value[t.unref(e)])),n?n.meta.touched:(k(`field with name ${t.unref(e)} was not found`),!1))))},e.useIsFieldValid=function(e){const r=S(o);let n=e?void 0:t.inject(l);return t.computed((()=>(e&&(n=B(null==r?void 0:r.fieldsByPath.value[t.unref(e)])),n?n.meta.valid:(k(`field with name ${t.unref(e)} was not found`),!1))))},e.useIsFormDirty=function(){const e=S(o);return e||k("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>{var t;return null!==(t=null==e?void 0:e.meta.value.dirty)&&void 0!==t&&t}))},e.useIsFormTouched=function(){const e=S(o);return e||k("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>{var t;return null!==(t=null==e?void 0:e.meta.value.touched)&&void 0!==t&&t}))},e.useIsFormValid=function(){const e=S(o);return e||k("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>{var t;return null!==(t=null==e?void 0:e.meta.value.valid)&&void 0!==t&&t}))},e.useIsSubmitting=function(){const e=S(o);return e||k("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>{var t;return null!==(t=null==e?void 0:e.isSubmitting.value)&&void 0!==t&&t}))},e.useResetForm=function(){const e=S(o);return e||k("No vee-validate <Form /> or `useForm` was detected in the component tree"),function(t){if(e)return e.resetForm(t)}},e.useSubmitCount=function(){const e=S(o);return e||k("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>{var t;return null!==(t=null==e?void 0:e.submitCount.value)&&void 0!==t?t:0}))},e.useSubmitForm=function(e){const t=S(o);t||k("No vee-validate <Form /> or `useForm` was detected in the component tree");const r=t?t.handleSubmit(e):void 0;return function(e){if(r)return r(e)}},e.useValidateField=function(e){const r=S(o);let n=e?void 0:t.inject(l);return function(){return e&&(n=B(null==r?void 0:r.fieldsByPath.value[t.unref(e)])),n?n.validate():(k(`field with name ${t.unref(e)} was not found`),Promise.resolve({errors:[],valid:!0}))}},e.useValidateForm=function(){const e=S(o);return e||k("No vee-validate <Form /> or `useForm` was detected in the component tree"),function(){return e?e.validate():Promise.resolve({results:{},errors:{},valid:!0})}},e.validate=z,Object.defineProperty(e,"__esModule",{value:!0})}));
6
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).VeeValidate={},e.Vue)}(this,(function(e,t){"use strict";function n(e){return"function"==typeof e}function r(e){return null==e}const a=e=>null!==e&&!!e&&"object"==typeof e&&!Array.isArray(e);function i(e){return Number(e)>=0}const u={};const o=Symbol("vee-validate-form"),l=Symbol("vee-validate-field-instance"),s=Symbol("Default empty value");function d(e){return n(e)&&!!e.__locatorRef}function c(e){return!!e&&n(e.validate)}function f(e){return"checkbox"===e||"radio"===e}function v(e){return Array.isArray(e)?0===e.length:a(e)&&0===Object.keys(e).length}function p(e){return/^\[.+\]$/i.test(e)}function m(e){return"SELECT"===e.tagName}function h(e,t){return!function(e,t){const n=![!1,null,void 0,0].includes(t.multiple)&&!Number.isNaN(t.multiple);return"select"===e&&"multiple"in t&&n}(e,t)&&"file"!==t.type&&!f(t.type)}function y(e){return g(e)&&e.target&&"submit"in e.target}function g(e){return!!e&&(!!("undefined"!=typeof Event&&n(Event)&&e instanceof Event)||!(!e||!e.srcElement))}function b(e,t){return t in e&&e[t]!==s}function O(e,t){if(e===t)return!0;if(e&&t&&"object"==typeof e&&"object"==typeof t){if(e.constructor!==t.constructor)return!1;var n,r,a;if(Array.isArray(e)){if((n=e.length)!=t.length)return!1;for(r=n;0!=r--;)if(!O(e[r],t[r]))return!1;return!0}if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(r of e.entries())if(!t.has(r[0]))return!1;for(r of e.entries())if(!O(r[1],t.get(r[0])))return!1;return!0}if(e instanceof File&&t instanceof File)return e.size===t.size&&(e.name===t.name&&(e.lastModified===t.lastModified&&e.type===t.type));if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(r of e.entries())if(!t.has(r[0]))return!1;return!0}if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if((n=e.length)!=t.length)return!1;for(r=n;0!=r--;)if(e[r]!==t[r])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if((n=(a=Object.keys(e)).length)!==Object.keys(t).length)return!1;for(r=n;0!=r--;)if(!Object.prototype.hasOwnProperty.call(t,a[r]))return!1;for(r=n;0!=r--;){var i=a[r];if(!O(e[i],t[i]))return!1}return!0}return e!=e&&t!=t}var V=function e(t,n){if(t===n)return!0;if(t&&n&&"object"==typeof t&&"object"==typeof n){if(t.constructor!==n.constructor)return!1;var r,a,i;if(Array.isArray(t)){if((r=t.length)!=n.length)return!1;for(a=r;0!=a--;)if(!e(t[a],n[a]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if((r=(i=Object.keys(t)).length)!==Object.keys(n).length)return!1;for(a=r;0!=a--;)if(!Object.prototype.hasOwnProperty.call(n,i[a]))return!1;for(a=r;0!=a--;){var u=i[a];if(!e(t[u],n[u]))return!1}return!0}return t!=t&&n!=n};function F(e){return p(e)?e.replace(/\[|\]/gi,""):e}function A(e,t,n){if(!e)return n;if(p(t))return e[F(t)];return(t||"").split(/\.|\[(\d+)\]/).filter(Boolean).reduce(((e,t)=>{return(a(r=e)||Array.isArray(r))&&t in e?e[t]:n;var r}),e)}function j(e,t,n){if(p(t))return void(e[F(t)]=n);const a=t.split(/\.|\[(\d+)\]/).filter(Boolean);let u=e;for(let e=0;e<a.length;e++){if(e===a.length-1)return void(u[a[e]]=n);a[e]in u&&!r(u[a[e]])||(u[a[e]]=i(a[e+1])?[]:{}),u=u[a[e]]}}function w(e,t){Array.isArray(e)&&i(t)?e.splice(Number(t),1):a(e)&&delete e[t]}function E(e,t){if(p(t))return void delete e[F(t)];const n=t.split(/\.|\[(\d+)\]/).filter(Boolean);let a=e;for(let e=0;e<n.length;e++){if(e===n.length-1){w(a,n[e]);break}if(!(n[e]in a)||r(a[n[e]]))break;a=a[n[e]]}const i=n.map(((t,r)=>A(e,n.slice(0,r).join("."))));for(let t=i.length-1;t>=0;t--)v(i[t])&&(0!==t?w(i[t-1],n[t-1]):w(e,n[0]))}function S(e){return Object.keys(e)}function k(e,n){const r=t.getCurrentInstance();return(null==r?void 0:r.provides[e])||t.inject(e,n)}function B(e){t.warn(`[vee-validate]: ${e}`)}function I(e){return Array.isArray(e)?e[0]:e}function M(e,t,n){if(Array.isArray(e)){const n=[...e],r=n.findIndex((e=>V(e,t)));return r>=0?n.splice(r,1):n.push(t),n}return V(e,t)?n:t}function T(e,t=0){let n=null,r=[];return function(...a){return n&&window.clearTimeout(n),n=window.setTimeout((()=>{const t=e(...a);r.forEach((e=>e(t))),r=[]}),t),new Promise((e=>r.push(e)))}}function C(e,t){return a(t)&&t.number?function(e){const t=parseFloat(e);return isNaN(t)?e:t}(e):e}function R(e,t){let n;return async function(...r){const a=e(...r);n=a;const i=await a;return a!==n||(n=void 0,t(i,r)),i}}const x=(e,t,n)=>t.slots.default?"string"!=typeof e&&e?{default:()=>{var e,r;return null===(r=(e=t.slots).default)||void 0===r?void 0:r.call(e,n())}}:t.slots.default(n()):t.slots.default;function P(e){if(N(e))return e._value}function N(e){return"_value"in e}function _(e){if(!g(e))return e;const t=e.target;if(f(t.type)&&N(t))return P(t);if("file"===t.type&&t.files){const e=Array.from(t.files);return t.multiple?e:e[0]}if(m(n=t)&&n.multiple)return Array.from(t.options).filter((e=>e.selected&&!e.disabled)).map(P);var n;if(m(t)){const e=Array.from(t.options).find((e=>e.selected));return e?P(e):t.value}return t.value}function U(e){const t={};return Object.defineProperty(t,"_$$isNormalized",{value:!0,writable:!1,enumerable:!1,configurable:!1}),e?a(e)&&e._$$isNormalized?e:a(e)?Object.keys(e).reduce(((t,n)=>{const r=function(e){if(!0===e)return[];if(Array.isArray(e))return e;if(a(e))return e;return[e]}(e[n]);return!1!==e[n]&&(t[n]=$(r)),t}),t):"string"!=typeof e?t:e.split("|").reduce(((e,t)=>{const n=D(t);return n.name?(e[n.name]=$(n.params),e):e}),t):t}function $(e){const t=e=>"string"==typeof e&&"@"===e[0]?function(e){const t=t=>A(t,e)||t[e];return t.__locatorRef=e,t}(e.slice(1)):e;return Array.isArray(e)?e.map(t):e instanceof RegExp?[e]:Object.keys(e).reduce(((n,r)=>(n[r]=t(e[r]),n)),{})}const D=e=>{let t=[];const n=e.split(":")[0];return e.includes(":")&&(t=e.split(":").slice(1).join(":").split(",")),{name:n,params:t}};let z=Object.assign({},{generateMessage:({field:e})=>`${e} is not valid.`,bails:!0,validateOnBlur:!0,validateOnChange:!0,validateOnInput:!1,validateOnModelUpdate:!0});const q=()=>z,L=e=>{z=Object.assign(Object.assign({},z),e)};async function K(e,t,r={}){const a=null==r?void 0:r.bails,i={name:(null==r?void 0:r.name)||"{field}",rules:t,bails:null==a||a,formData:(null==r?void 0:r.values)||{}},u=await async function(e,t){if(c(e.rules))return async function(e,t,n){var r;return{errors:await t.validate(e,{abortEarly:null===(r=n.bails)||void 0===r||r}).then((()=>[])).catch((e=>{if("ValidationError"===e.name)return e.errors;throw e}))}}(t,e.rules,{bails:e.bails});if(n(e.rules)||Array.isArray(e.rules)){const n={field:e.name,form:e.formData,value:t},r=Array.isArray(e.rules)?e.rules:[e.rules],a=r.length,i=[];for(let u=0;u<a;u++){const a=r[u],o=await a(t,n);if("string"!=typeof o&&o)continue;const l="string"==typeof o?o:X(n);if(i.push(l),e.bails)return{errors:i}}return{errors:i}}const r=Object.assign(Object.assign({},e),{rules:U(e.rules)}),a=[],i=Object.keys(r.rules),u=i.length;for(let n=0;n<u;n++){const u=i[n],o=await G(r,t,{name:u,params:r.rules[u]});if(o.error&&(a.push(o.error),e.bails))return{errors:a}}return{errors:a}}(i,e),o=u.errors;return{errors:o,valid:!o.length}}async function G(e,t,n){const r=(a=n.name,u[a]);var a;if(!r)throw new Error(`No such validator '${n.name}' exists.`);const i=function(e,t){const n=e=>d(e)?e(t):e;if(Array.isArray(e))return e.map(n);return Object.keys(e).reduce(((t,r)=>(t[r]=n(e[r]),t)),{})}(n.params,e.formData),o={field:e.name,value:t,form:e.formData,rule:Object.assign(Object.assign({},n),{params:i})},l=await r(t,i,o);return"string"==typeof l?{error:l}:{error:l?void 0:X(o)}}function X(e){const t=q().generateMessage;return t?t(e):"Field is invalid"}async function H(e,t,n){const r=S(e).map((async r=>{var a,i,u;const o=await K(A(t,r),e[r],{name:(null===(a=null==n?void 0:n.names)||void 0===a?void 0:a[r])||r,values:t,bails:null===(u=null===(i=null==n?void 0:n.bailsMap)||void 0===i?void 0:i[r])||void 0===u||u});return Object.assign(Object.assign({},o),{path:r})}));let a=!0;const i=await Promise.all(r),u={},o={};for(const e of i)u[e.path]={valid:e.valid,errors:e.errors},e.valid||(a=!1,o[e.path]=e.errors[0]);return{valid:a,results:u,errors:o}}function J(e,t,n){"object"==typeof n.value&&(n.value=Q(n.value)),n.enumerable&&!n.get&&!n.set&&n.configurable&&n.writable&&"__proto__"!==t?e[t]=n.value:Object.defineProperty(e,t,n)}function Q(e){if("object"!=typeof e)return e;var t,n,r,a=0,i=Object.prototype.toString.call(e);if("[object Object]"===i?r=Object.create(e.__proto__||null):"[object Array]"===i?r=Array(e.length):"[object Set]"===i?(r=new Set,e.forEach((function(e){r.add(Q(e))}))):"[object Map]"===i?(r=new Map,e.forEach((function(e,t){r.set(Q(t),Q(e))}))):"[object Date]"===i?r=new Date(+e):"[object RegExp]"===i?r=new RegExp(e.source,e.flags):"[object DataView]"===i?r=new e.constructor(Q(e.buffer)):"[object ArrayBuffer]"===i?r=e.slice(0):"Array]"===i.slice(-6)&&(r=new e.constructor(e)),r){for(n=Object.getOwnPropertySymbols(e);a<n.length;a++)J(r,n[a],Object.getOwnPropertyDescriptor(e,n[a]));for(a=0,n=Object.getOwnPropertyNames(e);a<n.length;a++)Object.hasOwnProperty.call(r,t=n[a])&&r[t]===e[t]||J(r,t,Object.getOwnPropertyDescriptor(e,t))}return r||e}let W=0;function Y(e,n){const{value:r,initialValue:a,setInitialValue:i}=Z(e,n.modelValue,!n.standalone),{errorMessage:u,errors:l,setErrors:s}=function(e,n){const r=n?k(o,void 0):void 0;function a(e){return e?Array.isArray(e)?e:[e]:[]}if(!r){const e=t.ref([]);return{errors:e,errorMessage:t.computed((()=>e.value[0])),setErrors:t=>{e.value=a(t)}}}const i=t.computed((()=>r.errorBag.value[t.unref(e)]||[]));return{errors:i,errorMessage:t.computed((()=>i.value[0])),setErrors:n=>{r.setFieldErrorBag(t.unref(e),a(n))}}}(e,!n.standalone),d=function(e,n,r){const a=t.reactive({touched:!1,pending:!1,valid:!0,validated:!!t.unref(r).length,initialValue:t.computed((()=>t.unref(n))),dirty:t.computed((()=>!O(t.unref(e),t.unref(n))))});return t.watch(r,(e=>{a.valid=!e.length}),{immediate:!0,flush:"sync"}),a}(r,a,l);return{id:W>=Number.MAX_SAFE_INTEGER?0:++W,path:e,value:r,initialValue:a,meta:d,errors:l,errorMessage:u,setState:function(e){var t;"value"in e&&(r.value=e.value),"errors"in e&&s(e.errors),"touched"in e&&(d.touched=null!==(t=e.touched)&&void 0!==t?t:d.touched),"initialValue"in e&&i(e.initialValue)}}}function Z(e,n,r=!0){const a=!0===r?k(o,void 0):void 0,i=t.ref(t.unref(n));function u(){return a?A(a.meta.value.initialValues,t.unref(e),t.unref(i)):t.unref(i)}function l(n){a?a.stageInitialValue(t.unref(e),n,!0):i.value=n}const s=t.computed(u);if(!a){return{value:t.ref(u()),initialValue:s,setInitialValue:l}}const d=n?t.unref(n):A(a.values,t.unref(e),t.unref(s));a.stageInitialValue(t.unref(e),d,!0);return{value:t.computed({get:()=>A(a.values,t.unref(e)),set(n){a.setFieldValue(t.unref(e),n)}}),initialValue:s,setInitialValue:l}}function ee(e,n,r){return f(null==r?void 0:r.type)?function(e,n,r){const a=(null==r?void 0:r.standalone)?void 0:k(o),i=null==r?void 0:r.checkedValue,u=null==r?void 0:r.uncheckedValue;function l(e){const n=e.handleChange,r=t.computed((()=>{const n=t.unref(e.value),r=t.unref(i);return Array.isArray(n)?n.findIndex((e=>O(e,r)))>=0:O(r,n)}));function o(o,l=!0){var s;if(r.value===(null===(s=null==o?void 0:o.target)||void 0===s?void 0:s.checked))return void(l&&e.validate());let d=_(o);a||(d=M(t.unref(e.value),t.unref(i),t.unref(u))),n(d,l)}return Object.assign(Object.assign({},e),{checked:r,checkedValue:i,uncheckedValue:u,handleChange:o})}return l(te(e,n,r))}(e,n,r):te(e,n,r)}function te(e,r,a){const{initialValue:i,validateOnMount:u,bails:f,type:v,checkedValue:p,label:m,validateOnValueUpdate:h,uncheckedValue:y,standalone:g,keepValueOnUnmount:b,modelPropName:V,syncVModel:F}=function(e,t){const n=()=>({initialValue:void 0,validateOnMount:!1,bails:!0,rules:"",label:e,validateOnValueUpdate:!0,standalone:!1,keepValueOnUnmount:void 0,modelPropName:"modelValue",syncVModel:!0});if(!t)return n();const r="valueProp"in t?t.valueProp:t.checkedValue;return Object.assign(Object.assign(Object.assign({},n()),t||{}),{checkedValue:r})}(t.unref(e),a),j=g?void 0:k(o);let w=!1;const{id:E,value:B,initialValue:I,meta:M,setState:T,errors:x,errorMessage:P}=Y(e,{modelValue:i,standalone:g});F&&function({prop:e,value:n,handleChange:r}){const a=t.getCurrentInstance();if(!a)return;const i=e||"modelValue",u=`update:${i}`;if(!(i in a.props))return;t.watch(n,(e=>{O(e,ne(a,i))||a.emit(u,e)})),t.watch((()=>ne(a,i)),(e=>{if(e===s&&void 0===n.value)return;const t=e===s?void 0:e;O(t,C(n.value,a.props.modelModifiers))||r(t)}))}({value:B,prop:V,handleChange:q});const N=t.computed((()=>{let a=t.unref(r);const i=t.unref(null==j?void 0:j.schema);return i&&!c(i)&&(a=function(e,t){if(!e)return;return e[t]}(i,t.unref(e))||a),c(a)||n(a)||Array.isArray(a)?a:U(a)}));async function $(n){var r,a;return(null==j?void 0:j.validateSchema)?null!==(r=(await j.validateSchema(n)).results[t.unref(e)])&&void 0!==r?r:{valid:!0,errors:[]}:K(B.value,N.value,{name:t.unref(m)||t.unref(e),values:null!==(a=null==j?void 0:j.values)&&void 0!==a?a:{},bails:f})}const D=R((async()=>(M.pending=!0,M.validated=!0,$("validated-only"))),(e=>(w&&(e.valid=!0,e.errors=[]),T({errors:e.errors}),M.pending=!1,e))),z=R((async()=>$("silent")),(e=>(w&&(e.valid=!0),M.valid=e.valid,e)));function q(e,t=!0){const n=_(e);B.value=n,!h&&t&&D()}let L;t.onMounted((()=>{if(u)return D();j&&j.validateSchema||z()}));let G=Q(B.value);function X(){L=t.watch(B,((e,t)=>{if(O(e,t)&&O(e,G))return;(h?D:z)(),G=Q(e)}),{deep:!0})}function H(e){var n;null==L||L();const r=e&&"value"in e?e.value:I.value;T({value:Q(r),initialValue:Q(r),touched:null!==(n=null==e?void 0:e.touched)&&void 0!==n&&n,errors:(null==e?void 0:e.errors)||[]}),M.pending=!1,M.validated=!1,z(),t.nextTick((()=>{X()}))}X();const J={id:E,name:e,label:m,value:B,meta:M,errors:x,errorMessage:P,type:v,checkedValue:p,uncheckedValue:y,bails:f,keepValueOnUnmount:b,resetField:H,handleReset:()=>H(),validate:function(e){return"silent"===(null==e?void 0:e.mode)?z():D()},handleChange:q,handleBlur:()=>{M.touched=!0},setState:T,setTouched:function(e){M.touched=e},setErrors:function(e){T({errors:Array.isArray(e)?e:[e]})},setValue:function(e){B.value=e}};if(t.provide(l,J),t.isRef(r)&&"function"!=typeof t.unref(r)&&t.watch(r,((e,t)=>{O(e,t)||(M.validated?D():z())}),{deep:!0}),!j)return J;j.register(J),t.onBeforeUnmount((()=>{w=!0,j.unregister(J)}));const W=t.computed((()=>{const e=N.value;return!e||n(e)||c(e)||Array.isArray(e)?{}:Object.keys(e).reduce(((t,n)=>{const r=(a=e[n],Array.isArray(a)?a.filter(d):S(a).filter((e=>d(a[e]))).map((e=>a[e]))).map((e=>e.__locatorRef)).reduce(((e,t)=>{const n=A(j.values,t)||j.values[t];return void 0!==n&&(e[t]=n),e}),{});var a;return Object.assign(t,r),t}),{})}));return t.watch(W,((e,t)=>{if(!Object.keys(e).length)return;!O(e,t)&&(M.validated?D():z())})),J}function ne(e,t){return e.props[t]}function re(e,t){let n=e.as||"";return e.as||t.slots.default||(n="input"),n}function ae(e,t){return f(t.attrs.type)?b(e,"modelValue")?e.modelValue:void 0:b(e,"modelValue")?e.modelValue:t.attrs.value}const ie=t.defineComponent({name:"Field",inheritAttrs:!1,props:{as:{type:[String,Object],default:void 0},name:{type:String,required:!0},rules:{type:[Object,String,Function],default:void 0},validateOnMount:{type:Boolean,default:!1},validateOnBlur:{type:Boolean,default:void 0},validateOnChange:{type:Boolean,default:void 0},validateOnInput:{type:Boolean,default:void 0},validateOnModelUpdate:{type:Boolean,default:void 0},bails:{type:Boolean,default:()=>q().bails},label:{type:String,default:void 0},uncheckedValue:{type:null,default:void 0},modelValue:{type:null,default:s},modelModifiers:{type:null,default:()=>({})},"onUpdate:modelValue":{type:null,default:void 0},standalone:{type:Boolean,default:!1},keepValue:{type:Boolean,default:void 0}},setup(e,n){const r=t.toRef(e,"rules"),a=t.toRef(e,"name"),i=t.toRef(e,"label"),u=t.toRef(e,"uncheckedValue"),o=t.toRef(e,"keepValue"),{errors:l,value:s,errorMessage:d,validate:c,handleChange:v,handleBlur:p,setTouched:m,resetField:y,handleReset:g,meta:b,checked:O,setErrors:V}=ee(a,r,{validateOnMount:e.validateOnMount,bails:e.bails,standalone:e.standalone,type:n.attrs.type,initialValue:ae(e,n),checkedValue:n.attrs.value,uncheckedValue:u,label:i,validateOnValueUpdate:!1,keepValueOnUnmount:o}),F=function(e,t=!0){v(e,t),n.emit("update:modelValue",s.value)},A=function(e){(e=>{f(n.attrs.type)||(s.value=_(e))})(e),n.emit("update:modelValue",s.value)},j=t.computed((()=>{const{validateOnInput:t,validateOnChange:r,validateOnBlur:a,validateOnModelUpdate:i}=function(e){var t,n,r,a;const{validateOnInput:i,validateOnChange:u,validateOnBlur:o,validateOnModelUpdate:l}=q();return{validateOnInput:null!==(t=e.validateOnInput)&&void 0!==t?t:i,validateOnChange:null!==(n=e.validateOnChange)&&void 0!==n?n:u,validateOnBlur:null!==(r=e.validateOnBlur)&&void 0!==r?r:o,validateOnModelUpdate:null!==(a=e.validateOnModelUpdate)&&void 0!==a?a:l}}(e),u=[p,n.attrs.onBlur,a?c:void 0].filter(Boolean),o=[e=>F(e,t),n.attrs.onInput].filter(Boolean),l=[e=>F(e,r),n.attrs.onChange].filter(Boolean),d={name:e.name,onBlur:u,onInput:o,onChange:l,"onUpdate:modelValue":e=>F(e,i)};f(n.attrs.type)&&O&&(d.checked=O.value);return h(re(e,n),n.attrs)&&(d.value=s.value),d}));function w(){return{field:j.value,value:s.value,meta:b,errors:l.value,errorMessage:d.value,validate:c,resetField:y,handleChange:F,handleInput:A,handleReset:g,handleBlur:p,setTouched:m,setErrors:V}}return n.expose({setErrors:V,setTouched:m,reset:y,validate:c,handleChange:v}),()=>{const r=t.resolveDynamicComponent(re(e,n)),a=x(r,n,w);return r?t.h(r,Object.assign(Object.assign({},n.attrs),j.value),a):a}}});let ue=0;function oe(e){var n;const r=ue++;let a=!1;const i=t.ref({}),u=t.ref(!1),l=t.ref(0),s=[],d=t.reactive(Q(t.unref(null==e?void 0:e.initialValues)||{})),{errorBag:f,setErrorBag:p,setFieldErrorBag:m}=function(e){const n=t.ref({});function r(e){return Array.isArray(e)?e:e?[e]:[]}function a(e,t){t?n.value[e]=r(t):delete n.value[e]}function i(e){n.value=S(e).reduce(((t,n)=>{const a=e[n];return a&&(t[n]=r(a)),t}),{})}e&&i(e);return{errorBag:n,setErrorBag:i,setFieldErrorBag:a}}(null==e?void 0:e.initialErrors),h=t.computed((()=>S(f.value).reduce(((e,t)=>{const n=f.value[t];return n&&n.length&&(e[t]=n[0]),e}),{})));function g(e){const t=i.value[e];return Array.isArray(t)?t[0]:t}function b(e){return!!i.value[e]}const V=t.computed((()=>S(i.value).reduce(((e,n)=>{const r=g(n);return r&&(e[n]=t.unref(r.label||r.name)||""),e}),{}))),F=t.computed((()=>S(i.value).reduce(((e,t)=>{var n;const r=g(t);return r&&(e[t]=null===(n=r.bails)||void 0===n||n),e}),{}))),w=Object.assign({},(null==e?void 0:e.initialErrors)||{}),k=null!==(n=null==e?void 0:e.keepValuesOnUnmount)&&void 0!==n&&n,{initialValues:B,originalInitialValues:I,setInitialValues:C}=function(e,n,r){const a=t.ref(Q(t.unref(r))||{}),i=t.ref(Q(t.unref(r))||{});function u(t,r=!1){a.value=Q(t),i.value=Q(t),r&&S(e.value).forEach((t=>{const r=e.value[t],i=Array.isArray(r)?r.some((e=>e.meta.touched)):null==r?void 0:r.meta.touched;if(!r||i)return;const u=A(a.value,t);j(n,t,Q(u))}))}t.isRef(r)&&t.watch(r,(e=>{u(e,!0)}),{deep:!0});return{initialValues:a,originalInitialValues:i,setInitialValues:u}}(i,d,null==e?void 0:e.initialValues),x=function(e,n,r,a){const i={touched:"some",pending:"some",valid:"every"},u=t.computed((()=>!O(n,t.unref(r))));function o(){const t=Object.values(e.value).flat(1).filter(Boolean);return S(i).reduce(((e,n)=>{const r=i[n];return e[n]=t[r]((e=>e.meta[n])),e}),{})}const l=t.reactive(o());return t.watchEffect((()=>{const e=o();l.touched=e.touched,l.valid=e.valid,l.pending=e.pending})),t.computed((()=>Object.assign(Object.assign({initialValues:t.unref(r)},l),{valid:l.valid&&!S(a.value).length,dirty:u.value})))}(i,d,I,h),P=null==e?void 0:e.validationSchema,N=T(se,5),_=T(se,5),U=R((async e=>"silent"===await e?N():_()),((e,[t])=>{const n=$.fieldsByPath.value||{},r=S($.errorBag.value);return[...new Set([...S(e.results),...S(n),...r])].reduce(((r,a)=>{const i=n[a],u=(e.results[a]||{errors:[]}).errors,o={errors:u,valid:!u.length};if(r.results[a]=o,o.valid||(r.errors[a]=o.errors[0]),!i)return L(a,u),r;if(z(i,(e=>e.meta.valid=o.valid)),"silent"===t)return r;const l=Array.isArray(i)?i.some((e=>e.meta.validated)):i.meta.validated;return"validated-only"!==t||l?(z(i,(e=>e.setState({errors:o.errors}))),r):r}),{valid:e.valid,results:{},errors:{}})})),$={formId:r,fieldsByPath:i,values:d,errorBag:f,errors:h,schema:P,submitCount:l,meta:x,isSubmitting:u,fieldArrays:s,keepValuesOnUnmount:k,validateSchema:t.unref(P)?U:void 0,validate:ae,register:function(e){const n=t.unref(e.name);ne(e,n),t.isRef(e.name)&&t.watch(e.name,(async(n,r)=>{await t.nextTick(),re(e,r),ne(e,n),(h.value[r]||h.value[n])&&(L(r,void 0),ie(n)),await t.nextTick(),b(r)||E(d,r)}));const r=t.unref(e.errorMessage);r&&(null==w?void 0:w[n])!==r&&ie(n);delete w[n]},unregister:function(e){const n=t.unref(e.name),r=i.value[n],a=!!r&&D(r);re(e,n),t.nextTick((()=>{var u;const o=null!==(u=t.unref(e.keepValueOnUnmount))&&void 0!==u?u:t.unref(k),l=A(d,n);if(a&&(r===i.value[n]||!i.value[n])&&Array.isArray(l)&&!o){const r=l.findIndex((n=>O(n,t.unref(e.checkedValue))));if(r>-1){const e=[...l];e.splice(r,1),G(n,e,{force:!0})}}if(!b(n)){if(L(n,void 0),o)return;if(a&&!v(A(d,n)))return;E(d,n)}}))},setFieldErrorBag:m,validateField:ie,setFieldValue:G,setValues:X,setErrors:K,setFieldError:L,setFieldTouched:Y,setTouched:ee,resetForm:te,handleSubmit:oe,stageInitialValue:function(t,n,r=!1){j(d,t,n),le(t,n),r&&!(null==e?void 0:e.initialValues)&&j(I.value,t,Q(n))},unsetInitialValue:function(e){E(B.value,e)},setFieldInitialValue:le,useFieldModel:W};function D(e){return Array.isArray(e)}function z(e,t){return Array.isArray(e)?e.forEach(t):t(e)}function q(e){Object.values(i.value).forEach((t=>{t&&z(t,e)}))}function L(e,t){m(e,t)}function K(e){p(e)}function G(e,n,{force:r}={force:!1}){var u;const o=i.value[e],l=Q(n);if(!o)return void j(d,e,l);if(D(o)&&"checkbox"===(null===(u=o[0])||void 0===u?void 0:u.type)&&!Array.isArray(n)){const t=Q(M(A(d,e)||[],n,void 0));return void j(d,e,t)}let s=n;D(o)||"checkbox"!==o.type||r||a||(s=Q(M(A(d,e),n,t.unref(o.uncheckedValue)))),j(d,e,s)}function X(e){S(d).forEach((e=>{delete d[e]})),S(e).forEach((t=>{G(t,e[t])})),s.forEach((e=>e&&e.reset()))}function J(e){const{value:n}=Z(e);return t.watch(n,(()=>{b(t.unref(e))||ae({mode:"validated-only"})}),{deep:!0}),n}function W(e){return Array.isArray(e)?e.map(J):J(e)}function Y(e,t){const n=i.value[e];n&&z(n,(e=>e.setTouched(t)))}function ee(e){S(e).forEach((t=>{Y(t,!!e[t])}))}function te(e){a=!0,(null==e?void 0:e.values)?(C(e.values),X(null==e?void 0:e.values)):(C(I.value),X(I.value)),q((e=>e.resetField())),(null==e?void 0:e.touched)&&ee(e.touched),K((null==e?void 0:e.errors)||{}),l.value=(null==e?void 0:e.submitCount)||0,t.nextTick((()=>{a=!1}))}function ne(e,n){const r=t.markRaw(e),a=n;if(!i.value[a])return void(i.value[a]=r);const u=i.value[a];u&&!Array.isArray(u)&&(i.value[a]=[u]),i.value[a]=[...i.value[a],r]}function re(e,t){const n=t,r=i.value[n];if(r)if(D(r)||e.id!==r.id){if(D(r)){const t=r.findIndex((t=>t.id===e.id));if(-1===t)return;r.splice(t,1),r.length||delete i.value[n]}}else delete i.value[n]}async function ae(e){if(q((e=>e.meta.validated=!0)),$.validateSchema)return $.validateSchema((null==e?void 0:e.mode)||"force");const n=await Promise.all(Object.values(i.value).map((n=>{const r=Array.isArray(n)?n[0]:n;return r?r.validate(e).then((e=>({key:t.unref(r.name),valid:e.valid,errors:e.errors}))):Promise.resolve({key:"",valid:!0,errors:[]})}))),r={},a={};for(const e of n)r[e.key]={valid:e.valid,errors:e.errors},e.errors.length&&(a[e.key]=e.errors[0]);return{valid:n.every((e=>e.valid)),results:r,errors:a}}async function ie(e){const n=i.value[e];return n?Array.isArray(n)?n.map((e=>e.validate()))[0]:n.validate():(t.warn(`field with name ${e} was not found`),Promise.resolve({errors:[],valid:!0}))}function oe(e,t){return function(n){return n instanceof Event&&(n.preventDefault(),n.stopPropagation()),ee(S(i.value).reduce(((e,t)=>(e[t]=!0,e)),{})),u.value=!0,l.value++,ae().then((r=>{if(r.valid&&"function"==typeof e)return e(Q(d),{evt:n,setErrors:K,setFieldError:L,setTouched:ee,setFieldTouched:Y,setValues:X,setFieldValue:G,resetForm:te});r.valid||"function"!=typeof t||t({values:Q(d),evt:n,errors:r.errors,results:r.results})})).then((e=>(u.value=!1,e)),(e=>{throw u.value=!1,e}))}}function le(e,t){j(B.value,e,Q(t))}async function se(){const e=t.unref(P);if(!e)return{valid:!0,results:{},errors:{}};const n=c(e)?await async function(e,t){const n=await e.validate(t,{abortEarly:!1}).then((()=>[])).catch((e=>{if("ValidationError"!==e.name)throw e;return e.inner||[]})),r={},a={};for(const e of n){const t=e.errors;r[e.path]={valid:!t.length,errors:t},t.length&&(a[e.path]=t[0])}return{valid:!n.length,results:r,errors:a}}(e,d):await H(e,d,{names:V.value,bailsMap:F.value});return n}const de=oe(((e,{evt:t})=>{y(t)&&t.target.submit()}));return t.onMounted((()=>{(null==e?void 0:e.initialErrors)&&K(e.initialErrors),(null==e?void 0:e.initialTouched)&&ee(e.initialTouched),(null==e?void 0:e.validateOnMount)?ae():$.validateSchema&&$.validateSchema("silent")})),t.isRef(P)&&t.watch(P,(()=>{var e;null===(e=$.validateSchema)||void 0===e||e.call($,"validated-only")})),t.provide(o,$),{errors:h,meta:x,values:d,isSubmitting:u,submitCount:l,validate:ae,validateField:ie,handleReset:()=>te(),resetForm:te,handleSubmit:oe,submitForm:de,setFieldError:L,setErrors:K,setFieldValue:G,setValues:X,setFieldTouched:Y,setTouched:ee,useFieldModel:W}}const le=t.defineComponent({name:"Form",inheritAttrs:!1,props:{as:{type:String,default:"form"},validationSchema:{type:Object,default:void 0},initialValues:{type:Object,default:void 0},initialErrors:{type:Object,default:void 0},initialTouched:{type:Object,default:void 0},validateOnMount:{type:Boolean,default:!1},onSubmit:{type:Function,default:void 0},onInvalidSubmit:{type:Function,default:void 0},keepValues:{type:Boolean,default:!1}},setup(e,n){const r=t.toRef(e,"initialValues"),a=t.toRef(e,"validationSchema"),i=t.toRef(e,"keepValues"),{errors:u,values:o,meta:l,isSubmitting:s,submitCount:d,validate:c,validateField:f,handleReset:v,resetForm:p,handleSubmit:m,setErrors:h,setFieldError:b,setFieldValue:O,setValues:V,setFieldTouched:F,setTouched:A}=oe({validationSchema:a.value?a:void 0,initialValues:r,initialErrors:e.initialErrors,initialTouched:e.initialTouched,validateOnMount:e.validateOnMount,keepValuesOnUnmount:i}),j=m(((e,{evt:t})=>{y(t)&&t.target.submit()}),e.onInvalidSubmit),w=e.onSubmit?m(e.onSubmit,e.onInvalidSubmit):j;function E(e){g(e)&&e.preventDefault(),v(),"function"==typeof n.attrs.onReset&&n.attrs.onReset()}function S(t,n){return m("function"!=typeof t||n?n:t,e.onInvalidSubmit)(t)}function k(){return{meta:l.value,errors:u.value,values:o,isSubmitting:s.value,submitCount:d.value,validate:c,validateField:f,handleSubmit:S,handleReset:v,submitForm:j,setErrors:h,setFieldError:b,setFieldValue:O,setValues:V,setFieldTouched:F,setTouched:A,resetForm:p}}return n.expose({setFieldError:b,setErrors:h,setFieldValue:O,setValues:V,setFieldTouched:F,setTouched:A,resetForm:p,validate:c,validateField:f}),function(){const r="form"===e.as?e.as:t.resolveDynamicComponent(e.as),a=x(r,n,k);if(!e.as)return a;const i="form"===e.as?{novalidate:!0}:{};return t.h(r,Object.assign(Object.assign(Object.assign({},i),n.attrs),{onSubmit:w,onReset:E}),a)}}}),se=le;function de(e){const n=k(o,void 0),a=t.ref([]),i=()=>{},u={fields:a,remove:i,push:i,swap:i,insert:i,update:i,replace:i,prepend:i,move:i};if(!n)return B("FieldArray requires being a child of `<Form/>` or `useForm` being called before it. Array fields may not work correctly"),u;if(!t.unref(e))return B("FieldArray requires a field path to be provided, did you forget to pass the `name` prop?"),u;const l=n.fieldArrays.find((n=>t.unref(n.path)===t.unref(e)));if(l)return l;let s=0;function d(){const r=A(null==n?void 0:n.values,t.unref(e),[])||[];a.value=r.map(f),c()}function c(){const e=a.value.length;for(let t=0;t<e;t++){const n=a.value[t];n.isFirst=0===t,n.isLast=t===e-1}}function f(r){const i=s++,u={key:i,value:t.computed({get(){const u=A(null==n?void 0:n.values,t.unref(e),[])||[],o=a.value.findIndex((e=>e.key===i));return-1===o?r:u[o]},set(e){const t=a.value.findIndex((e=>e.key===i));-1!==t?v(t,e):B("Attempting to update a non-existent array item")}}),isFirst:!1,isLast:!1};return u}function v(r,a){const i=t.unref(e),u=A(null==n?void 0:n.values,i);!Array.isArray(u)||u.length-1<r||null==n||n.setFieldValue(`${i}[${r}]`,a)}d();const p={fields:a,remove:function(r){const i=t.unref(e),u=A(null==n?void 0:n.values,i);if(!u||!Array.isArray(u))return;const o=[...u];o.splice(r,1),null==n||n.unsetInitialValue(i+`[${r}]`),null==n||n.setFieldValue(i,o),a.value.splice(r,1),c()},push:function(i){const u=t.unref(e),o=A(null==n?void 0:n.values,u),l=r(o)?[]:o;if(!Array.isArray(l))return;const s=[...l];s.push(i),null==n||n.stageInitialValue(u+`[${s.length-1}]`,i),null==n||n.setFieldValue(u,s),a.value.push(f(i)),c()},swap:function(r,i){const u=t.unref(e),o=A(null==n?void 0:n.values,u);if(!Array.isArray(o)||!(r in o)||!(i in o))return;const l=[...o],s=[...a.value],d=l[r];l[r]=l[i],l[i]=d;const f=s[r];s[r]=s[i],s[i]=f,null==n||n.setFieldValue(u,l),a.value=s,c()},insert:function(r,i){const u=t.unref(e),o=A(null==n?void 0:n.values,u);if(!Array.isArray(o)||o.length<r)return;const l=[...o],s=[...a.value];l.splice(r,0,i),s.splice(r,0,f(i)),null==n||n.setFieldValue(u,l),a.value=s,c()},update:v,replace:function(r){const a=t.unref(e);null==n||n.setFieldValue(a,r),d()},prepend:function(i){const u=t.unref(e),o=A(null==n?void 0:n.values,u),l=r(o)?[]:o;if(!Array.isArray(l))return;const s=[i,...l];null==n||n.stageInitialValue(u+`[${s.length-1}]`,i),null==n||n.setFieldValue(u,s),a.value.unshift(f(i)),c()},move:function(i,u){const o=t.unref(e),l=A(null==n?void 0:n.values,o),s=r(l)?[]:[...l];if(!Array.isArray(l)||!(i in l)||!(u in l))return;const d=[...a.value],f=d[i];d.splice(i,1),d.splice(u,0,f);const v=s[i];s.splice(i,1),s.splice(u,0,v),null==n||n.setFieldValue(o,s),a.value=d,c()}};return n.fieldArrays.push(Object.assign({path:e,reset:d},p)),t.onBeforeUnmount((()=>{const r=n.fieldArrays.findIndex((n=>t.unref(n.path)===t.unref(e)));r>=0&&n.fieldArrays.splice(r,1)})),p}const ce=t.defineComponent({name:"FieldArray",inheritAttrs:!1,props:{name:{type:String,required:!0}},setup(e,n){const{push:r,remove:a,swap:i,insert:u,replace:o,update:l,prepend:s,move:d,fields:c}=de(t.toRef(e,"name"));function f(){return{fields:c.value,push:r,remove:a,swap:i,insert:u,update:l,replace:o,prepend:s,move:d}}return n.expose({push:r,remove:a,swap:i,insert:u,update:l,replace:o,prepend:s,move:d}),()=>x(void 0,n,f)}}),fe=t.defineComponent({name:"ErrorMessage",props:{as:{type:String,default:void 0},name:{type:String,required:!0}},setup(e,n){const r=t.inject(o,void 0),a=t.computed((()=>null==r?void 0:r.errors.value[e.name]));function i(){return{message:a.value}}return()=>{if(!a.value)return;const r=e.as?t.resolveDynamicComponent(e.as):e.as,u=x(r,n,i),o=Object.assign({role:"alert"},n.attrs);return r||!Array.isArray(u)&&u||!(null==u?void 0:u.length)?!Array.isArray(u)&&u||(null==u?void 0:u.length)?t.h(r,o,u):t.h(r||"span",o,a.value):u}}});e.ErrorMessage=fe,e.Field=ie,e.FieldArray=ce,e.FieldContextKey=l,e.Form=se,e.FormContextKey=o,e.IS_ABSENT=s,e.configure=L,e.defineRule=function(e,t){!function(e,t){if(n(t))return;throw new Error(`Extension Error: The validator '${e}' must be a function.`)}(e,t),u[e]=t},e.useField=ee,e.useFieldArray=de,e.useFieldError=function(e){const n=k(o),r=e?void 0:t.inject(l);return t.computed((()=>e?null==n?void 0:n.errors.value[t.unref(e)]:null==r?void 0:r.errorMessage.value))},e.useFieldValue=function(e){const n=k(o),r=e?void 0:t.inject(l);return t.computed((()=>e?A(null==n?void 0:n.values,t.unref(e)):t.unref(null==r?void 0:r.value)))},e.useForm=oe,e.useFormErrors=function(){const e=k(o);return e||B("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>(null==e?void 0:e.errors.value)||{}))},e.useFormValues=function(){const e=k(o);return e||B("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>(null==e?void 0:e.values)||{}))},e.useIsFieldDirty=function(e){const n=k(o);let r=e?void 0:t.inject(l);return t.computed((()=>(e&&(r=I(null==n?void 0:n.fieldsByPath.value[t.unref(e)])),r?r.meta.dirty:(B(`field with name ${t.unref(e)} was not found`),!1))))},e.useIsFieldTouched=function(e){const n=k(o);let r=e?void 0:t.inject(l);return t.computed((()=>(e&&(r=I(null==n?void 0:n.fieldsByPath.value[t.unref(e)])),r?r.meta.touched:(B(`field with name ${t.unref(e)} was not found`),!1))))},e.useIsFieldValid=function(e){const n=k(o);let r=e?void 0:t.inject(l);return t.computed((()=>(e&&(r=I(null==n?void 0:n.fieldsByPath.value[t.unref(e)])),r?r.meta.valid:(B(`field with name ${t.unref(e)} was not found`),!1))))},e.useIsFormDirty=function(){const e=k(o);return e||B("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>{var t;return null!==(t=null==e?void 0:e.meta.value.dirty)&&void 0!==t&&t}))},e.useIsFormTouched=function(){const e=k(o);return e||B("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>{var t;return null!==(t=null==e?void 0:e.meta.value.touched)&&void 0!==t&&t}))},e.useIsFormValid=function(){const e=k(o);return e||B("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>{var t;return null!==(t=null==e?void 0:e.meta.value.valid)&&void 0!==t&&t}))},e.useIsSubmitting=function(){const e=k(o);return e||B("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>{var t;return null!==(t=null==e?void 0:e.isSubmitting.value)&&void 0!==t&&t}))},e.useResetForm=function(){const e=k(o);return e||B("No vee-validate <Form /> or `useForm` was detected in the component tree"),function(t){if(e)return e.resetForm(t)}},e.useSubmitCount=function(){const e=k(o);return e||B("No vee-validate <Form /> or `useForm` was detected in the component tree"),t.computed((()=>{var t;return null!==(t=null==e?void 0:e.submitCount.value)&&void 0!==t?t:0}))},e.useSubmitForm=function(e){const t=k(o);t||B("No vee-validate <Form /> or `useForm` was detected in the component tree");const n=t?t.handleSubmit(e):void 0;return function(e){if(n)return n(e)}},e.useValidateField=function(e){const n=k(o);let r=e?void 0:t.inject(l);return function(){return e&&(r=I(null==n?void 0:n.fieldsByPath.value[t.unref(e)])),r?r.validate():(B(`field with name ${t.unref(e)} was not found`),Promise.resolve({errors:[],valid:!0}))}},e.useValidateForm=function(){const e=k(o);return e||B("No vee-validate <Form /> or `useForm` was detected in the component tree"),function(){return e?e.validate():Promise.resolve({results:{},errors:{},valid:!0})}},e.validate=K,Object.defineProperty(e,"__esModule",{value:!0})}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vee-validate",
3
- "version": "4.6.6",
3
+ "version": "4.6.8",
4
4
  "description": "Form Validation for Vue.js",
5
5
  "author": "Abdelrahman Awad <logaretm1@gmail.com>",
6
6
  "license": "MIT",
@@ -33,5 +33,5 @@
33
33
  "dependencies": {
34
34
  "@vue/devtools-api": "^6.1.4"
35
35
  },
36
- "gitHead": "d8ed905897907b1b51117a357e1cd8280bdd14b2"
36
+ "gitHead": "b2bfdeeb6414db020c4c17dc00c5a445f0472f1d"
37
37
  }