react-f0rm 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +107 -24
- package/dist/devtools/index.cjs.js +1 -1
- package/dist/devtools/index.cjs.js.map +1 -1
- package/dist/devtools/index.mjs +1 -1
- package/dist/devtools/index.mjs.map +1 -1
- package/dist/errors-BKrUdpfI.cjs.js +2 -0
- package/dist/errors-BKrUdpfI.cjs.js.map +1 -0
- package/dist/errors-CrQBddrJ.mjs +2 -0
- package/dist/errors-CrQBddrJ.mjs.map +1 -0
- package/dist/{form-CvmWHUrd.d.ts → form-CeKSBs31.d.ts} +68 -5
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +344 -49
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/index.umd.js +379 -283
- package/dist/index.umd.js.map +1 -1
- package/dist/index.umd.min.js +2 -2
- package/dist/index.umd.min.js.map +1 -1
- package/dist/persist.cjs.js +1 -1
- package/dist/persist.cjs.js.map +1 -1
- package/dist/persist.mjs +1 -1
- package/dist/persist.mjs.map +1 -1
- package/dist/resolvers/standard-schema.cjs.js +1 -1
- package/dist/resolvers/standard-schema.mjs +1 -1
- package/dist/resolvers/yup.cjs.js +1 -1
- package/dist/resolvers/yup.d.ts +1 -1
- package/dist/resolvers/yup.mjs +1 -1
- package/dist/resolvers/zod.cjs.js +1 -1
- package/dist/resolvers/zod.d.ts +1 -1
- package/dist/resolvers/zod.mjs +1 -1
- package/dist/server/index.cjs.js +1 -1
- package/dist/server/index.cjs.js.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.mjs +1 -1
- package/dist/server/index.mjs.map +1 -1
- package/dist/{validate-B1Gdjeaq.mjs → validate-CNtuUhmk.mjs} +2 -2
- package/dist/validate-CNtuUhmk.mjs.map +1 -0
- package/dist/{validate-DAfz8Nbb.cjs.js → validate-Cl4ksNFu.cjs.js} +2 -2
- package/dist/validate-Cl4ksNFu.cjs.js.map +1 -0
- package/dist/{validate-CUmNZqg6.d.ts → validate-nksgv1pR.d.ts} +37 -3
- package/dist/values-Cu6awQOJ.cjs.js +2 -0
- package/dist/values-Cu6awQOJ.cjs.js.map +1 -0
- package/dist/values-DRY-a32G.mjs +2 -0
- package/dist/values-DRY-a32G.mjs.map +1 -0
- package/package.json +20 -9
- package/dist/errors-CxSjrWJO.cjs.js +0 -2
- package/dist/errors-CxSjrWJO.cjs.js.map +0 -1
- package/dist/errors-CzWtwjO0.mjs +0 -2
- package/dist/errors-CzWtwjO0.mjs.map +0 -1
- package/dist/validate-B1Gdjeaq.mjs.map +0 -1
- package/dist/validate-DAfz8Nbb.cjs.js.map +0 -1
- package/dist/values-B1IV-6V4.mjs +0 -2
- package/dist/values-B1IV-6V4.mjs.map +0 -1
- package/dist/values-CDNAYEOB.cjs.js +0 -2
- package/dist/values-CDNAYEOB.cjs.js.map +0 -1
|
@@ -148,6 +148,16 @@ declare function getFirstError({ errors }: Form): string | undefined;
|
|
|
148
148
|
/** Snapshot of one field's aggregated state, as {@link getFieldState}
|
|
149
149
|
* returns it. `errors` is the stored array shared with the form — treat it
|
|
150
150
|
* as read-only, like every {@link getFieldErrors} result. */
|
|
151
|
+
/** Options accepted by {@link setError}. */
|
|
152
|
+
type SetErrorOptions = {
|
|
153
|
+
/**
|
|
154
|
+
* Focus the named field's element after the error lands (react-hook-form's
|
|
155
|
+
* `setError` `shouldFocus`). Rides the same 'focusError' channel
|
|
156
|
+
* `setFocus` and a failed submit's auto-focus use: only mounted bound
|
|
157
|
+
* fields react, unmounted ones are silent no-ops.
|
|
158
|
+
*/
|
|
159
|
+
shouldFocus?: boolean;
|
|
160
|
+
};
|
|
151
161
|
/**
|
|
152
162
|
* Set field error
|
|
153
163
|
* @param form
|
|
@@ -155,8 +165,10 @@ declare function getFirstError({ errors }: Form): string | undefined;
|
|
|
155
165
|
* @param error string is normalized to {type: 'custom', message}; a
|
|
156
166
|
* FieldError object is stored as-is; an array holds several errors
|
|
157
167
|
* (falsy items dropped, strings normalized); undefined clears
|
|
168
|
+
* @param options {@link SetErrorOptions} — `shouldFocus` focuses the field
|
|
169
|
+
* after the error lands
|
|
158
170
|
*/
|
|
159
|
-
declare function setError<T extends Record<string, any> = any, P extends FieldPath<T> | PathSegments = FieldPath<T> | PathSegments>(form: Form<T>, name: P, error: string | FieldError | (string | FieldError)[] | undefined): void;
|
|
171
|
+
declare function setError<T extends Record<string, any> = any, P extends FieldPath<T> | PathSegments = FieldPath<T> | PathSegments>(form: Form<T>, name: P, error: string | FieldError | (string | FieldError)[] | undefined, options?: SetErrorOptions): void;
|
|
160
172
|
/**
|
|
161
173
|
* Set field error
|
|
162
174
|
* @param form
|
|
@@ -164,8 +176,10 @@ declare function setError<T extends Record<string, any> = any, P extends FieldPa
|
|
|
164
176
|
* @param error string is normalized to {type: 'custom', message}; a
|
|
165
177
|
* FieldError object is stored as-is; an array holds several errors
|
|
166
178
|
* (falsy items dropped, strings normalized); undefined clears
|
|
179
|
+
* @param options {@link SetErrorOptions} — `shouldFocus` focuses the field
|
|
180
|
+
* after the error lands
|
|
167
181
|
*/
|
|
168
|
-
declare function setErrorByPath(
|
|
182
|
+
declare function setErrorByPath(form: Form, path: Path, error: string | FieldError | (string | FieldError)[] | undefined, options?: SetErrorOptions): void;
|
|
169
183
|
/**
|
|
170
184
|
* Clear errors
|
|
171
185
|
* @param form
|
|
@@ -275,7 +289,7 @@ type FormValidateFn<T extends Record<string, any> = any> = (values: T, meta: For
|
|
|
275
289
|
* which subscribers handle. `focusError` carries the target's path key
|
|
276
290
|
* plus optional {@link SetFocusOptions}.
|
|
277
291
|
*/
|
|
278
|
-
type FormEvents = ['change', [path?: Path]] | ['errors', [path?: Path]] | ['touched', [path?: Path]] | ['validating', [path?: Path]] | ['submitting', []] | ['submitCount', []] | ['submitSuccessful', []] | ['reset', []] | ['disabled', []] | ['loading', []] | ['focusError', [key: string, options?: SetFocusOptions]];
|
|
292
|
+
type FormEvents = ['change', [path?: Path]] | ['errors', [path?: Path]] | ['touched', [path?: Path]] | ['validating', [path?: Path]] | ['submitting', []] | ['submitCount', []] | ['submitSuccessful', []] | ['reset', []] | ['disabled', []] | ['status', []] | ['loading', []] | ['focusError', [key: string, options?: SetFocusOptions]];
|
|
279
293
|
type Form<T extends Record<string, any> = any> = {
|
|
280
294
|
emitter: EventEmitter<FormEvents>;
|
|
281
295
|
mode: ValidationMode;
|
|
@@ -317,6 +331,11 @@ type Form<T extends Record<string, any> = any> = {
|
|
|
317
331
|
* Options.validateDeps} at create time and fixed thereafter. */
|
|
318
332
|
validateDeps?: ReadonlySet<string>;
|
|
319
333
|
isSubmitting: boolean;
|
|
334
|
+
/** Whether a submit has been attempted — set by `handleSubmit` on every
|
|
335
|
+
* attempt (validation outcome aside), cleared by `reset`.
|
|
336
|
+
* `useFormState().isSubmitted` reads it (react-hook-form's
|
|
337
|
+
* `formState.isSubmitted` semantics). */
|
|
338
|
+
isSubmitted: boolean;
|
|
320
339
|
submitCount: number;
|
|
321
340
|
isSubmitSuccessful: boolean | undefined;
|
|
322
341
|
/** True while an async {@link Options.initialValues} source (a Promise,
|
|
@@ -337,6 +356,26 @@ type Form<T extends Record<string, any> = any> = {
|
|
|
337
356
|
* {@link setDisabled}, which emits a payload-less 'disabled' event so
|
|
338
357
|
* subscribed fields re-render. */
|
|
339
358
|
disabled: boolean;
|
|
359
|
+
/** Form-level default for mount validation, seeded from
|
|
360
|
+
* {@link Options.validateOnMount}: `true` makes every mounted field
|
|
361
|
+
* with a validator kick once after mount (deferred until an async
|
|
362
|
+
* {@link Options.initialValues} source lands), and makes `useForm` run
|
|
363
|
+
* the form-level `validate` once. A field's own `validateOnMount`
|
|
364
|
+
* option overrides this flag in either direction. */
|
|
365
|
+
validateOnMount: boolean;
|
|
366
|
+
/** Form-level default for {@link UseValidateOptions.asyncAlways}:
|
|
367
|
+
* whether a field's debounced validator still runs when its `required`
|
|
368
|
+
* gate failed. A field's own `asyncAlways` option overrides this flag
|
|
369
|
+
* in either direction. Seeded from {@link Options.asyncAlways}. */
|
|
370
|
+
asyncAlways: boolean;
|
|
371
|
+
/**
|
|
372
|
+
* User-owned metadata slot for non-field state — session flags, server
|
|
373
|
+
* backfill that belongs to no field, step indices (Formik's `status`
|
|
374
|
+
* role). Written with {@link setStatus}, which emits the payload-less
|
|
375
|
+
* 'status' event; read directly or reactively through {@link useStatus}.
|
|
376
|
+
* Starts `undefined`.
|
|
377
|
+
*/
|
|
378
|
+
status: any;
|
|
340
379
|
};
|
|
341
380
|
type Options<T extends Record<string, any> = any> = {
|
|
342
381
|
/**
|
|
@@ -411,6 +450,30 @@ type Options<T extends Record<string, any> = any> = {
|
|
|
411
450
|
* of a disabled form). Toggle later with {@link setDisabled}.
|
|
412
451
|
* Defaults to `false`. */
|
|
413
452
|
disabled?: boolean;
|
|
453
|
+
/**
|
|
454
|
+
* Form-level default for field validation's `asyncAlways`: when true,
|
|
455
|
+
* a field whose `required` gate failed still runs its debounced
|
|
456
|
+
* validator (the gate's errors land immediately, the validator's own
|
|
457
|
+
* result lands alongside them per-source). TanStack Form's
|
|
458
|
+
* `asyncAlways` counterpart. A field's own
|
|
459
|
+
* `useField({asyncAlways})` option overrides the form-level flag in
|
|
460
|
+
* either direction. Defaults to `false`.
|
|
461
|
+
*/
|
|
462
|
+
asyncAlways?: boolean;
|
|
463
|
+
/**
|
|
464
|
+
* Validate on mount: `true` makes every mounted field with a validator
|
|
465
|
+
* (declarative `rules` or a `validate` callback) run it once after
|
|
466
|
+
* mount, instead of waiting for the first submit/change — errors show
|
|
467
|
+
* immediately for an untouched form (Formik's `validateOnMount` /
|
|
468
|
+
* TanStack Form's per-field `validateOnMount`). The form-level
|
|
469
|
+
* `validate` also runs once after mount. Mount kicks are deferred
|
|
470
|
+
* while an async `initialValues` source is still pending: validating
|
|
471
|
+
* the empty shell would land spurious required errors, so the kicks
|
|
472
|
+
* fire after the resolved baseline lands instead. A field's own
|
|
473
|
+
* `useField({validateOnMount})` option overrides the form-level flag
|
|
474
|
+
* in either direction. Defaults to `false`.
|
|
475
|
+
*/
|
|
476
|
+
validateOnMount?: boolean;
|
|
414
477
|
};
|
|
415
478
|
/**
|
|
416
479
|
* Create form instance
|
|
@@ -419,5 +482,5 @@ type Options<T extends Record<string, any> = any> = {
|
|
|
419
482
|
*/
|
|
420
483
|
declare function create<T extends Record<string, any> = any>(options?: Options<T>): Form<T>;
|
|
421
484
|
|
|
422
|
-
export {
|
|
423
|
-
export type { Form as F, Name as N, Options as O, Path as P, ReValidateMode as R,
|
|
485
|
+
export { setFocus as A, setServerErrors as B, FORM_ERROR as g, VALIDATION_OUTCOME as m, clearErrors as p, create as q, getError as r, getErrorByPath as s, getErrors as t, getFieldErrors as u, getFieldErrorsByPath as v, getFirstError as w, hasErrors as x, setError as y, setErrorByPath as z };
|
|
486
|
+
export type { Form as F, Name as N, Options as O, Path as P, ReValidateMode as R, SetErrorOptions as S, ValidationMode as V, FieldError as a, FieldPath as b, PathSegments as c, PathValueOf as d, FieldErrorEntry as e, FormEvents as f, FormValidateFn as h, FormValidateMeta as i, PathValue as j, SetFocusOptions as k, SetServerErrorsOptions as l, ValidateResult as n, ValidationOutcome as o };
|
package/dist/index.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("@for-fun/event-emitter"),t=require("react");function r(e){var t=Object.create(null);return e&&Object.keys(e).forEach(function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}}),t.default=e,Object.freeze(t)}var n=r(t);const o=new Map;function i(e){if(Array.isArray(e))return e;const t=o.get(e);if(t)return t;const r=function(e){const t=[];let r="";const n=()=>{if(s(r)){const n=[...t.map(String),r].join("."),o=t.reduce((e,t)=>e+("number"==typeof t?`[${t}]`:`${e?".":""}${t}`),"");throw new TypeError(`Numeric path segment must use bracket notation: "${n}" → "${o}[${r}]" (path: ${e})`)}t.push(r),r=""};for(let o=0;o<e.length;o++){const i=e[o];if("."===i)""!==r&&n();else if("["===i){""!==r&&n();const i=e[o+1];if('"'===i||"'"===i){const r=e.indexOf(i,o+2);if(-1===r)throw new TypeError(`Unterminated quote in path: ${e}`);if("]"!==e[r+1])throw new TypeError(`Expected "]" after quoted segment in path: ${e}`);t.push(e.slice(o+2,r)),o=r+1}else{const r=e.indexOf("]",o+1);if(-1===r)throw new TypeError(`Unterminated bracket in path: ${e}`);const n=e.slice(o+1,r);t.push(s(n)?Number(n):n),o=r}}else r+=i}""===r&&0!==t.length||n();return t}(e);if(o.size>=1e4){const e=o.keys().next();e.done||o.delete(e.value)}return o.set(e,r),r}const s=e=>/^-?\d+$/.test(e);function u(e,t){return t.reduce((e,t)=>{if(null!=e)return e[t]},e)}function a(e,t){if(!t.length||null==e)return e;const[r,...n]=t;if(n.length){const t=a(e[r],n);return t===e[r]?e:c(e,[r],t)}if(Array.isArray(e)){if(!(r in e))return e;const t=e.slice();return delete t[r],t}if("object"!=typeof e||!(r in e))return e;const o={...e};return delete o[r],o}function c(e,t,r){if(!t.length)return r;const[n,...o]=t,i="number"==typeof n?n:Array.isArray(e)&&"string"==typeof n&&s(n)?Number(n):void 0;if(void 0!==i){const t=Array.isArray(e)?e.slice():[];return t[i]=c(t[i],o,r),t}return{...e,[n]:c(e&&e[n],o,r)}}function l(e,t,r,n){if(!t.length)return r;let o=e,i=null,u="";for(let a=0;a<t.length;a++){const c=t[a];if(!n.has(o)){let t;t="number"==typeof c||Array.isArray(o)&&"string"==typeof c&&s(c)?Array.isArray(o)?o.slice():[]:{...o},n.add(t),0===a?e=t:i[u]=t,o=t}a===t.length-1?o[c]=r:(i=o,u=c,o=o[c])}return e}function d(e){return e&&"function"==typeof e.then}function f(e,t){if(Object.is(e,t))return!0;if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(!e||!t||"object"!=typeof e||"object"!=typeof t)return!1;const r=Array.isArray(e);if(r!==Array.isArray(t))return!1;if(r){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!f(e[r],t[r]))return!1;return!0}const n=Object.getPrototypeOf(e);if(n!==Object.prototype&&null!==n)return!1;if(Object.getPrototypeOf(t)!==n)return!1;const o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(const r of o)if(!f(e[r],t[r]))return!1;return!0}function m(t,r,n,o){return new Promise((i,s)=>{if(o())return void s();if(n())return void i();const u=e.on(t,r,()=>{if(o())return u(),void s();n()&&(u(),i())})})}function p(e){const t=i(e);return{value:t,key:JSON.stringify(t)}}const h=new WeakMap;function g(e){const t=h.get(e);t&&t.version++}const y=new WeakMap;function v(e,t,r){const n=y.get(e);return n?.has(t)?n.get(t):u(e.initialValues,r)}function b(e,{key:t},r){let n=y.get(e);n||(n=new Map,y.set(e,n)),n.set(t,r)}function x(e,{key:t}){const r=y.get(e);if(!r?.size)return;const n=`${t.slice(0,-1)},`;for(const e of r.keys())e.startsWith(n)&&r.delete(e)}function k(e,t){const r=y.get(e);r&&(void 0===t?r.clear():r.delete(t))}const S=new WeakMap;function E(e){const t=S.get(e);t&&t.version++}function V(e){return e.some(e=>"number"==typeof e)}function w(e){return!!e&&"object"==typeof e&&"string"==typeof e.type&&"string"==typeof e.message}const C="_form",O=Symbol("validation-outcome");function A({errors:e},t){return e.get(t.key)?.[0]}const F=[];function T({errors:e},t){return e.get(t.key)??F}function _({errors:e}){const t=[];for(const[r,n]of e){const e=JSON.parse(r).join(".");for(const{type:r,message:o}of n)t.push({path:e,type:r,message:o})}return t}function D({errors:e}){return e.values().next().value?.[0]?.message}function L(e,t,r){j(e,p(t),r)}function j({emitter:t,errors:r},n,o){const i=function(e){if("string"==typeof e)return e?[{type:"custom",message:e}]:void 0;if(w(e))return[e];if(!e)return;const t=[];return e.forEach(e=>{"string"==typeof e&&e?t.push({type:"custom",message:e}):w(e)&&t.push(e)}),t.length?t:void 0}(o);i?r.set(n.key,i):r.delete(n.key),e.emit(t,"errors",n)}function M(t,r){const{emitter:n,errors:o}=t;if(void 0===r)return o.clear(),void e.emit(n,"errors");const i="string"==typeof r||V(r)?[p(r)]:r.map(e=>p(e));for(const{key:e}of i)o.delete(e);for(const t of i)e.emit(n,"errors",t)}function P({errors:e}){return e.size>0}function B({emitter:t,touched:r},n){r.has(n.key)||(r.add(n.key),e.emit(t,"touched",n))}function R({touched:e},t){return e.has(t.key)}function N({touched:e}){return Array.from(e,e=>JSON.parse(e).join("."))}function I(e){let t=h.get(e);return t?t.version>0&&(t.result=$(e),t.version=0):(t={version:0,result:$(e)},h.set(e,t)),t.result}function $(e){const{initialValues:t,parsedValues:r,values:n,deleted:o}=e,i=new Set;let s=r??t;for(const[e,t]of n)s=l(s,JSON.parse(e),t,i);for(const e of o)s=a(s,JSON.parse(e));return s}function q({initialValues:e,parsedValues:t,values:r,deleted:n},o){const{key:i,value:s}=o;if(r.has(i))return r.get(i);if(!n.has(i)){for(let e=s.length-1;e>0;e--){const t=JSON.stringify(s.slice(0,e));if(r.has(t))return u(r.get(t),s.slice(e))}return u(t??e,s)}}function W(t,r,n,o){const{emitter:i,values:s,deleted:u}=t;s.set(r.key,n),G(s,r),H(u,r),x(t,r),!1===o?.shouldDirty&&b(t,r,n),E(t),g(t),o?.shouldTouch&&B(t,r),o?.shouldValidate&&t.validators.get(r.key)?.(),e.emit(i,"change",r)}function J(e,t,r){const{values:n,deleted:o}=e;n.set(t.key,r),G(n,t),H(o,t),x(e,t),E(e),g(e)}function U({emitter:t},r){e.emit(t,"change",r)}function z(t,r,n){const{key:o,value:i}=r,{emitter:s,values:u,touched:a,errors:c,validating:l,deleted:d}=t;n?.keepValue||n?.keepDirty||(u.delete(o),k(t,o),function(e,t){for(let r=1;r<t.length;r++)if(e.has(JSON.stringify(t.slice(0,r))))return!0;const r=`${JSON.stringify(t).slice(0,-1)},`;for(const t of e.keys())if(t.startsWith(r))return!0;return!1}(u,i)||d.add(o)),n?.keepTouched||a.delete(o),n?.keepError||c.delete(o),l.delete(o),E(t),g(t),e.emit(s,"change",r),e.emit(s,"touched",r),e.emit(s,"errors",r),e.emit(s,"validating",r)}function G(e,{key:t}){if(!e.size)return;const r=`${t.slice(0,-1)},`;for(const t of e.keys())t.startsWith(r)&&e.delete(t)}function H(e,{key:t}){if(e.size)for(const r of e)(r===t||r.startsWith(`${t.slice(0,-1)},`)||t.startsWith(`${r.slice(0,-1)},`))&&e.delete(r)}function K(t,r){t.initialValues===r||f(t.initialValues,r)||(t.initialValues=r,t.parsedValues=void 0,t.values.clear(),t.deleted.clear(),k(t),E(t),g(t),e.emit(t.emitter,"change"))}function Y(e,t,r){if(null!==e&&"object"==typeof e){if(Array.isArray(e)){for(let n=0;n<e.length;n++)Y(e[n],[...t,n],r);return}const n=Object.keys(e);if(n.length>0){for(const o of n)Y(e[o],[...t,o],r);return}}r.push({segments:t,value:e})}function Q(e){let t=!1;return X(e,()=>{t=!0}),t}function X(e,t){for(const[r,n]of e.values){const o=JSON.parse(r);v(e,r,o)!==n&&t(o.join("."))}}function Z(e){const t={};return X(e,e=>{t[e]=!0}),t}function ee(e){let t=S.get(e);if(t){if(t.version>0){const r=Z(e);(function(e,t){const r=Object.keys(e);return r.length===Object.keys(t).length&&r.every(e=>!0===t[e])})(t.result,r)||(t.result=r),t.version=0}}else t={version:0,result:Z(e)},S.set(e,t);return t.result}function te({emitter:t,validating:r},n){r.delete(n.key),e.emit(t,"validating",n)}function re({emitter:t,validating:r},n){r.add(n.key),e.emit(t,"validating",n)}function ne(e,t,r){let n=null,o=null,i=!1,s=null,u=null;const a=e=>void 0!==e&&!(Array.isArray(e)&&0===e.length),c=()=>{i||(i=!0,re(e,t))},l=()=>{i&&(i=!1,te(e,t))},f=()=>{const n=r.sync();if(!n)return!1;const o=n(q(e,t),{form:e,path:t});return a(o)?(j(e,t,o),u="sync",!0):(r.validate()&&"sync"!==u||(j(e,t,void 0),u=null),!1)},m=()=>{null!==n&&(clearTimeout(n),n=null),o?.abort(),s={}},p=()=>{const n=r.validate();if(!n)return void l();o?.abort(),o=new AbortController;const i=s={};let f;try{f=n(q(e,t),{form:e,path:t,signal:o.signal})}catch(e){throw l(),e}if(!d(f))return j(e,t,f),u=a(f)?"validator":null,void l();c(),f.then(r=>{s===i&&(j(e,t,r),u=a(r)?"validator":null)}).catch(()=>{}).finally(()=>{s===i&&(l(),s=null)})},h=()=>{if(n=null,f())return m(),void l();p()};return e.validators.set(t.key,()=>{if(f())return m(),void l();if(!r.validate())return;const e=r.debounce();if(e>0)return null!==n?clearTimeout(n):c(),void(n=setTimeout(h,e));p()}),()=>{e.validators.delete(t.key),null!==n&&(clearTimeout(n),n=null),l(),o?.abort()}}function oe(e,t){t.forEach(t=>B(e,p(JSON.parse(t))))}function ie(e,t,r=[],n){Object.entries(t).forEach(([t,o])=>{const u=[...r,...s(t)?[t]:i(t)];"string"==typeof o?o&&(L(e,u,o),se(e,u,n)):Array.isArray(o)||w(o)?(L(e,u,o),se(e,u,n)):o&&"object"==typeof o&&ie(e,o,u,n)})}function se(e,t,r){if(!r)return;const n=p(t),o=e.errors.get(n.key);o&&r.set(n.key,o)}function ue(t,r){const n=t.validateDeps?function(e){let t=ae.get(e);t||(t=new Map,ae.set(e,t));return t}(t):void 0;if(n&&(!function(t,r){for(const[n,o]of r){t.errors.get(n)===o&&(t.errors.delete(n),e.emit(t.emitter,"errors",p(JSON.parse(n))))}}(t,n),n.clear()),r){if("object"==typeof r&&O in r){const o=r;return o.errors&&ie(t,o.errors,[],n),void function(t,r){void 0!==r&&r!==t.parsedValues&&(t.parsedValues=r,g(t),e.emit(t.emitter,"change"))}(t,o.values)}ie(t,r,[],n)}}const ae=new WeakMap;const ce="__form_validate__";function le(e){for(const t of e.validating)if(t!==ce)return!1;return!0}const de=Symbol("form-validate-settled"),fe=new WeakMap;function me(t){const r=t.validate;if(!r)return Promise.resolve();const n=t.validateDebounce??0;if(n<=0){const e=new AbortController;return Promise.resolve(r(I(t),{form:t,signal:e.signal})).then(e=>{ue(t,e)})}const o=function(e){let t=fe.get(e);return t||(t={timer:null,controller:null,round:null,marked:!1,waiters:[]},fe.set(e,t)),t}(t);return null!==o.timer?clearTimeout(o.timer):(o.marked=!0,t.validating.add(ce),e.emit(t.emitter,"validating")),o.timer=setTimeout(()=>{o.timer=null;const e=o.round={};(function(e,t,r){const n=e.validate;if(!n)return Promise.resolve();t.controller?.abort();const o=t.controller=new AbortController;let i;try{i=Promise.resolve(n(I(e),{form:e,signal:o.signal}))}catch(e){i=Promise.reject(e)}return i.then(n=>{t.round===r&&ue(e,n)},e=>{if(t.round===r)throw e})})(t,o,e).then(()=>pe(t,o,e,de),r=>pe(t,o,e,r))},n),new Promise((e,t)=>{o.waiters.push({resolve:e,reject:t})})}function pe(t,r,n,o){if(r.round!==n)return;if(r.round=null,null!==r.timer)return;r.marked&&(r.marked=!1,t.validating.delete(ce),e.emit(t.emitter,"validating"));const i=r.waiters;r.waiters=[];for(const e of i)o===de?e.resolve():e.reject(o)}function he(e,t,r){e.validateDeps?.has(t.key)&&e.validate&&("onChange"===r||"all"===r||"onTouched"===r&&R(e,t)||"onChange"===e.reValidateMode&&function(e){const t=ae.get(e);if(!t)return!1;for(const[r,n]of t)if(e.errors.get(r)===n)return!0;return!1}(e))&&me(e).catch(()=>{})}const ge=new WeakMap;function ye(e,t,r){let n=ge.get(e);n||(n=new Map,ge.set(e,n));for(const e of r){let r=n.get(e);r||(r=new Set,n.set(e,r)),r.add(t)}}function ve(e,t,r){const n=ge.get(e);if(n)for(const e of r){const r=n.get(e);r?.delete(t)&&(r.size||n.delete(e))}}function be(e,t,r){const n=ge.get(e)?.get(t.key);if(n?.size)for(const o of n)o!==t.key&&("onChange"===r||"all"===r||"onTouched"===r&&R(e,t)||"onChange"===e.reValidateMode&&e.errors.has(o))&&e.validators.get(o)?.()}function xe(e){const t=new Error(D(e));return t.errors=_(e),t}async function ke(e){if(e.validators.forEach(e=>e()),await m(e.emitter,"validating",()=>le(e),()=>P(e)).catch(()=>{throw xe(e)}),e.validate&&(await me(e),P(e)))throw xe(e)}async function Se(e){return ke(e).catch(e=>e.message)}const Ee=new WeakMap;function Ve(e,t,r,n){!1===n?.shouldDirty&&b(e,t,r),Ee.get(e)?.get(t.key)?Oe(e,t,r):W(e,t,r,n)}function we(e,t,r){let n=Ee.get(e);n||(n=new Map,Ee.set(e,n));const o=n.has(t.key),i={};return n.set(t.key,{mode:r,token:i}),{token:i,displaced:o}}function Ce(e,t,r){const n=Ee.get(e),o=n?.get(t.key);n&&o&&o.token===r&&n.delete(t.key)}function Oe(e,t,r){W(e,t,r);const n=Ee.get(e)?.get(t.key);n&&function(e,t,r){("onChange"===r||"all"===r||"onTouched"===r&&R(e,t)||T(e,t).length>0&&"onChange"===e.reValidateMode)&&e.validators.get(t.key)?.(),he(e,t,r),be(e,t,r)}(e,t,n.mode??e.mode)}function Ae(e,t){B(e,t);const r=Ee.get(e)?.get(t.key);if(!r)return;const n=r.mode??e.mode;("onBlur"===n||"onTouched"===n||"all"===n||T(e,t).length>0&&"onBlur"===e.reValidateMode)&&e.validators.get(t.key)?.()}function Fe(t,r){t.isSubmitting=r,e.emit(t.emitter,"submitting")}function Te(t){t.submitCount++,e.emit(t.emitter,"submitCount")}function _e(t,r){t.isSubmitSuccessful=r,e.emit(t.emitter,"submitSuccessful")}function De(e){if(e.startsWith("["))try{const t=JSON.parse(e);if(Array.isArray(t))return t.join(".")}catch{}return e}function Le(t,r){const{onSubmit:n,onValidSubmit:o,onInvalidSubmit:i,onAction:s,shouldFocusError:u=!0}=r??{};return async r=>{r&&"function"==typeof r.preventDefault&&r.preventDefault();const a=r?.currentTarget;Fe(t,!0),Te(t);const c=I(t);if(a&&"function"==typeof a.checkValidity&&!1===a.checkValidity()){if(a.reportValidity(),u&&"function"==typeof a.querySelector){const e=a.querySelector(":invalid");e&&"function"==typeof e.focus&&e.focus()}return Fe(t,!1),_e(t,!1),void(i&&i(function(e){const t=[],{elements:r}=e;for(let e=0;e<r.length;e++){const n=r[e];n.name&&"function"==typeof n.checkValidity&&!n.checkValidity()&&t.push({path:De(n.name),type:"native",message:n.validationMessage})}return t}(a),c))}if(await Se(t)){if(Fe(t,!1),_e(t,!1),u){const r=t.errors.keys().next().value;void 0!==r&&e.emit(t.emitter,"focusError",r)}i&&i(_(t),c)}else try{const e=I(t);n&&await n(e,r),o&&await o(e,r),s&&await s(e,r),_e(t,!0)}catch{_e(t,!1)}finally{Fe(t,!1)}}}function je(t){const r=e.create();e.setMaxListeners(r,0);let n=t?.initialValues??{};"function"==typeof n&&(n=n());const o={emitter:r,...t,mode:t?.mode??"onSubmit",reValidateMode:t?.reValidateMode??"onChange",disabled:t?.disabled??!1,validateDeps:t?.validateDeps?new Set(t.validateDeps.map(e=>p(e).key)):void 0,initialValues:{},values:new Map,deleted:new Set,errors:new Map,touched:new Set,validators:new Map,validating:new Set,parsedValues:void 0,isSubmitting:!1,submitCount:0,isSubmitSuccessful:void 0,isLoading:!1};return d(n)?(o.isLoading=!0,e.emit(r,"loading"),Promise.resolve(n).then(t=>{o.isLoading=!1,e.emit(r,"loading"),K(o,t??{})},t=>{o.isLoading=!1,e.emit(r,"loading")})):o.initialValues=n,o}function Me(e,t){switch(e){case"required":return"This field is required";case"min":return`Must be at least ${t}`;case"max":return`Must be at most ${t}`;case"minLength":return`Must be at least ${t} characters`;case"maxLength":return`Must be at most ${t} characters`;case"pattern":return"Invalid format";default:return"Invalid value"}}function Pe(e){return t=>{if(e.required&&(""===t||null==t))return[{type:"required",message:"string"==typeof e.required?e.required:Me("required")}];const r=[],n=(t,r)=>e.messages?.[t]??Me(t,r);if(void 0!==e.min){const o=Number(t);!Number.isNaN(o)&&o<e.min&&r.push({type:"min",message:n("min",e.min)})}if(void 0!==e.max){const o=Number(t);!Number.isNaN(o)&&o>e.max&&r.push({type:"max",message:n("max",e.max)})}return void 0!==e.minLength&&"string"==typeof t&&t.length<e.minLength&&r.push({type:"minLength",message:n("minLength",e.minLength)}),void 0!==e.maxLength&&"string"==typeof t&&t.length>e.maxLength&&r.push({type:"maxLength",message:n("maxLength",e.maxLength)}),e.pattern&&!e.pattern.value.test(t)&&r.push({type:"pattern",message:e.messages?.pattern??e.pattern.message??Me("pattern")}),r.length?r:void 0}}var Be,Re={exports:{}},Ne={};var Ie,$e,qe={};var We=($e||($e=1,"production"===process.env.NODE_ENV?Re.exports=function(){if(Be)return Ne;Be=1;var e=t,r="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},n=e.useState,o=e.useEffect,i=e.useLayoutEffect,s=e.useDebugValue;function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch(e){return!0}}var a="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var r=t(),a=n({inst:{value:r,getSnapshot:t}}),c=a[0].inst,l=a[1];return i(function(){c.value=r,c.getSnapshot=t,u(c)&&l({inst:c})},[e,r,t]),o(function(){return u(c)&&l({inst:c}),e(function(){u(c)&&l({inst:c})})},[e]),s(r),r};return Ne.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:a,Ne}():Re.exports=(Ie||(Ie=1,"production"!==process.env.NODE_ENV&&function(){function e(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!n(e,r)}catch(e){return!0}}"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var r=t,n="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=r.useState,i=r.useEffect,s=r.useLayoutEffect,u=r.useDebugValue,a=!1,c=!1,l="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(t,l){a||void 0===r.startTransition||(a=!0,console.error("You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."));var d=l();if(!c){var f=l();n(d,f)||(console.error("The result of getSnapshot should be cached to avoid an infinite loop"),c=!0)}var m=(f=o({inst:{value:d,getSnapshot:l}}))[0].inst,p=f[1];return s(function(){m.value=d,m.getSnapshot=l,e(m)&&p({inst:m})},[t,d,l]),i(function(){return e(m)&&p({inst:m}),t(function(){e(m)&&p({inst:m})})},[t]),u(d),d};qe.useSyncExternalStore=void 0!==r.useSyncExternalStore?r.useSyncExternalStore:l,"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())}()),qe)),Re.exports);function Je(e,t){return e.startsWith(`${t.slice(0,-1)},`)}function Ue(t,r,n,o,i){const{key:s}=n;return e.on(t,r,e=>{(void 0===e||e.key===s||Je(s,e.key)||"branch"===o&&Je(e.key,s))&&i()})}function ze(t,r,n,o){return e.on(t,r,e=>{void 0!==e&&e.key!==n||o()})}function Ge(e){const[r]=t.useState(()=>{const t=je(e);return e&&void 0!==e.values&&K(t,e.values),t}),n=e&&e.initialValues,o=e&&e.values,i=t.useRef(null);null===i.current&&(i.current={done:!1,source:void 0}),t.useEffect(()=>{if(void 0===n)return;if("function"==typeof n||d(n))return;const e=i.current;e.done&&(e.source===n||f(e.source,n))||(e.done=!0,e.source=n,K(r,n))},[r,n]);const s=t.useRef(null);return null===s.current&&(s.current={done:!1,source:void 0}),t.useEffect(()=>{if(void 0===o)return;const e=s.current;e.done&&(e.source===o||f(e.source,o))||(e.done=!0,e.source=o,K(r,o))},[r,o]),r}function He(e,r,n){const o=t.useRef(null);null===o.current&&(o.current={hasValue:!1});const i=o.current,s=t.useRef(r);s.current=r;const u=t.useRef(n);u.current=n;const a=t.useCallback(()=>(i.hasValue||(i.value=s.current(),i.hasValue=!0),i.value),[i]),c=t.useCallback(t=>{i.hasValue=!1;return e(()=>{const e=u.current;if(e&&i.hasValue){const r=s.current();if(e(i.value,r))return;return i.value=r,void t()}i.hasValue=!1,t()})},[e,i]);return We.useSyncExternalStore(c,a,a)}function Ke(r,n,o,i){const s="emitter"in r?r.emitter:r;return He(t.useCallback(t=>e.on(s,n,t),[s,n]),o,i)}function Ye(e,r){const{emitter:n}=e,{key:o}=r;return He(t.useCallback(e=>Ue(n,"change",r,"leaf",e),[n,o]),q.bind(null,e,r))}function Qe(e,r){const{emitter:n}=e,{key:o}=r;return He(t.useCallback(e=>ze(n,"touched",o,e),[n,o]),R.bind(null,e,r))}function Xe(e,r){const{emitter:n}=e,{key:o}=r;return He(t.useCallback(e=>ze(n,"errors",o,e),[n,o]),A.bind(null,e,r))}function Ze(e,r){const{emitter:n}=e,{key:o}=r;return He(t.useCallback(e=>ze(n,"errors",o,e),[n,o]),T.bind(null,e,r))}const et=["change","errors","touched","validating","submitting","submitCount","submitSuccessful","disabled","loading"];function tt(e,t){const r=e.touchedFields.length===t.touchedFields.length&&e.touchedFields.every((e,r)=>e===t.touchedFields[r]);return e.isDirty===t.isDirty&&e.dirtyFields===t.dirtyFields&&e.isTouched===t.isTouched&&r&&e.hasErrors===t.hasErrors&&e.isValid===t.isValid&&e.isSubmitting===t.isSubmitting&&e.isValidating===t.isValidating&&e.isSubmitSuccessful===t.isSubmitSuccessful&&e.submitCount===t.submitCount&&e.isLoading===t.isLoading&&e.disabled===t.disabled}function rt(e){const r=t.useMemo(()=>p(i(e)),[e]);return t.useMemo(()=>r,[r.key])}function nt(e){const r=t.useRef(e);return r.current=e,r}function ot(e){const r=nt(e);return t.useCallback((...e)=>r.current(...e),[r])}function it({form:r,name:n,initialValue:o,shouldUnregister:i,validate:s,rules:u,validateDebounce:a,validateDeps:c,delayError:l,disabled:f,uncontrolled:m,mode:h},g){const y=t.useContext(g),v=r||y;if(!v)throw new Error("no form provided");const b=rt(n),x=t.useRef(!1);void 0!==o&&void 0===q(v,b)&&(J(v,b,o),x.current=!0),t.useEffect(()=>{x.current&&(x.current=!1,U(v,b))});!function(e,r,n,o){const i=t.useContext(pt),s=n||i;if(!s)throw new Error("no form provided");const u=t.useRef(e);u.current=e;const a=t.useRef(o?.debounce??0);a.current=o?.debounce??0;const c=t.useRef(o?.sync);c.current=o?.sync,t.useEffect(()=>ne(s,r,{validate:()=>u.current,debounce:()=>a.current,sync:()=>c.current}),[s,r.key]),ot(()=>s.validators.get(r.key)?.())}(function(e,t){if(!e||!function(e){return void 0!==e.required||void 0!==e.min||void 0!==e.max||void 0!==e.minLength||void 0!==e.maxLength||void 0!==e.pattern}(e))return t;const r=Pe(e);return t?(e,n)=>{const o=r(e,n),i=e=>{const t=[...o??[]];return Array.isArray(e)?t.push(...e):e&&t.push(e),t.length?t:void 0},s=t(e,n);return d(s)?s.then(i):i(s)}:r}(u?{...u,required:void 0}:void 0,s),b,v,{debounce:a,sync:u&&void 0!==u.required?Pe({required:u.required}):void 0});const k=function(e,r){const[n,o]=t.useState(e);return t.useEffect(()=>{if(void 0===r)return;if(0===e.length)return void o(e);if(n.length>0)return void o(e);const t=setTimeout(()=>o(e),r);return()=>clearTimeout(t)},[e,r,n]),void 0===r?e:n}(Ze(v,b),l),S=k[0],E=S?.message,V=function(e,r,n){const o=t.useRef({has:!1,value:void 0}),i=t.useCallback(()=>n?(o.current.has||(o.current={has:!0,value:q(e,r)}),o.current.value):q(e,r),[n,e,r]);return He(t.useCallback(t=>n?()=>{}:Ue(e.emitter,"change",r,"leaf",t),[n,e.emitter,r]),i)}(v,b,!!m),w=Ke(v,"disabled",()=>v.disabled),C=ot(e=>Oe(v,b,e)),O=ot(()=>Ae(v,b));t.useEffect(()=>{const{token:e,displaced:t}=we(v,b,h);return()=>Ce(v,b,e)},[v,b.key,h]);const A=c?.length?c.join("\n"):void 0;t.useEffect(()=>{if(!A)return;const e=c.map(e=>p(e).key);return ye(v,b.key,e),()=>ve(v,b.key,e)},[v,b.key,A]);const F=t.useRef(null),T=t.useCallback(e=>{F.current=e},[]);return t.useEffect(()=>e.on(v.emitter,"focusError",(e,t)=>{if(e!==b.key)return;const r=F.current;r&&"function"==typeof r.focus&&(r.focus(),t?.shouldSelect&&"function"==typeof r.select&&r.select())}),[v,b.key]),t.useEffect(()=>()=>{!1!==(i??v.shouldUnregister)&&z(v,b)},[b,v,i]),{form:v,value:V,error:E,errorObject:S,errors:k,onChange:C,onBlur:O,name:b.key,disabled:w||!!f,focusRef:T}}function st(e){return it(e,pt)}const ut=new WeakMap;function at(e){const t=(ut.get(e)??0)+1;return ut.set(e,t),`_${t}`}const ct=new WeakMap;function lt(e,t,r){let n=ct.get(e);n||(n=new Map,ct.set(e,n)),n.set(t,r)}function dt(e){return e+1}function ft(e,r){const n=t.useContext(r),o=e.form||n;if(!o)throw new Error("no form provided");const i=rt(e.name),s=t.useRef([]),u=t.useCallback(()=>q(o,i)||[],[o,i]),a=t.useCallback(e=>{W(o,i,e)},[o,i]),c=t.useCallback(()=>{const e=u();for(;s.current.length<e.length;)s.current.push(at(o));for(;s.current.length>e.length;)s.current.pop();return s.current.map((e,t)=>({id:e,index:t}))},[u,o]),[l,d]=t.useReducer(c,void 0,c);t.useEffect(()=>Ue(o.emitter,"change",i,"branch",d),[o.emitter,i]),lt(o,i.key,s.current),t.useEffect(()=>(lt(o,i.key,s.current),()=>{const e=ct.get(o);e?.get(i.key)===s.current&&e.delete(i.key)}),[o,i.key]);return{fields:l,append:ot(e=>{const t=u();s.current.push(at(o)),a([...t,e])}),prepend:ot(e=>{const t=u();s.current.unshift(at(o)),a([e,...t])}),insert:ot((e,t)=>{const r=u();s.current.splice(e,0,at(o));const n=[...r.slice(0,e),t,...r.slice(e)];a(n)}),remove:ot(e=>{const t=u();s.current.splice(e,1);const r=t.filter((t,r)=>r!==e);a(r)}),swap:ot((e,t)=>{const r=u();[s.current[e],s.current[t]]=[s.current[t],s.current[e]];const n=[...r];[n[e],n[t]]=[n[t],n[e]],a(n)}),move:ot((e,t)=>{const r=u(),[n]=s.current.splice(e,1);s.current.splice(t,0,n);const o=[...r],[i]=o.splice(e,1);o.splice(t,0,i),a(o)}),replace:ot(e=>{s.current=e.map(()=>at(o)),a([...e])}),update:ot((e,t)=>{const r=u();if(e<0||e>=r.length)return;const n=[...r];n[e]=t,a(n)})}}function mt(e,r){const n=t.useContext(r),o=e.form||n;if(!o)throw new Error("no form provided");const{id:i}=e,s=rt(e.name),u=t.useCallback(()=>function(e,t){return ct.get(e)?.get(t)}(o,s.key)?.indexOf(i)??-1,[o,s.key,i]),a=t.useCallback(e=>{const t=q(o,s);return Array.isArray(t)?t[e]:void 0},[o,s]),c=u(),l=a(c),d=t.useRef({index:c,value:l});d.current={index:c,value:l};const f=nt({computeIndex:u,computeValue:a}),[,m]=t.useReducer(dt,0);t.useEffect(()=>Ue(o.emitter,"change",s,"leaf",()=>{const{computeIndex:e,computeValue:t}=f.current,r=e();r===d.current.index&&Object.is(t(r),d.current.value)||m()}),[o.emitter,s,f]);const p=rt([...s.value,c]),h=Ze(o,p);return{value:l,setValue:ot(e=>{if(c<0)return;const t=[...q(o,s)??[]];c>=t.length||(t[c]=e,W(o,s,t))}),errors:h,error:h[0]?.message,name:p.key,index:c,form:o}}const pt=t.createContext(null),ht=pt.Provider;const gt=t.createContext(null),yt=gt.Provider;function vt(e,t,r){if(null!=r)if(Array.isArray(r))for(const n of r)vt(e,t,n);else if("undefined"!=typeof FileList&&r instanceof FileList)for(let n=0;n<r.length;n++)e.append(t,r.item(n));else"undefined"!=typeof File&&r instanceof File?e.append(t,r,r.name):"undefined"!=typeof Blob&&r instanceof Blob?e.append(t,r):r instanceof Date?e.append(t,r.toISOString()):e.append(t,"object"==typeof r?JSON.stringify(r):String(r))}function bt(e){return e.replace(/["'[\],\s]+/g,"-").replace(/^-+|-+$/g,"")||"field"}function xt(e,t,r){return{"aria-invalid":!!e||r["aria-invalid"],"aria-describedby":e?[r["aria-describedby"],bt(t)].filter(Boolean).join(" "):r["aria-describedby"]}}const kt=n.forwardRef(({validate:e,eventToValue:t,initialValue:r,name:o,asProps:i,renderError:s,as:u,valueToProps:a,form:c,shouldUnregister:l,rules:d,validateDebounce:f,disabled:m,delayError:p,mode:h,uncontrolled:g,...y},v)=>{const b=n.useRef(null),[x,k]=n.useState(0),{value:S,onChange:E,onBlur:V,error:w,name:C,disabled:O,focusRef:A}=st({name:o,form:c,initialValue:r,shouldUnregister:l,rules:d,validateDebounce:f,delayError:p,disabled:m,mode:h,uncontrolled:g||"file"===y.type,validate:(...t)=>{const r=b.current;if(!r||"function"!=typeof r.checkValidity||(r.setCustomValidity(""),!1!==r.checkValidity()))return e?e(...t):void 0;k(e=>e+1)}}),F=n.useCallback(e=>{b.current=e,A(e),function(e,t){"function"==typeof e?e(t):e&&(e.current=t)}(v,e)},[v,A]),T=u||"input";n.useEffect(()=>{const e=b.current;e&&"function"==typeof e.setCustomValidity&&("string"==typeof w?(e.setCustomValidity(w),e.reportValidity()):e.setCustomValidity(""))},[w]),n.useEffect(()=>{x>0&&b.current?.reportValidity()},[x]);const _="file"===y.type,D=t??(_?e=>e.target.files:e=>e.target.value),L=a?a(S):_?{}:g?{defaultValue:S}:{value:S},j=bt(C);return n.createElement(n.Fragment,null,n.createElement(T,{...y,name:C,onBlur:V,...i,...L,...xt(w,C,y),disabled:O,onChange:e=>E(D(e)),ref:F}),w&&s?n.createElement("span",{id:j,role:"alert"},s(w,j)):null)}),St=n.forwardRef(({name:e,form:t,initialValue:r,shouldUnregister:o,validate:i,rules:s,validateDebounce:u,disabled:a,delayError:c,mode:l,...d},f)=>{const{value:m,onChange:p,onBlur:h,error:g,name:y,disabled:v}=st({name:e,form:t,initialValue:r,shouldUnregister:o,validate:i,rules:s,validateDebounce:u,delayError:c,disabled:a,mode:l});return n.createElement("input",{...d,name:y,onBlur:h,type:"checkbox",checked:!!m,...xt(g,y,d),disabled:v,onChange:e=>p(e.target.checked),ref:f})});function Et(e,t){return e?Array.isArray(t)?t:[]:t??""}const Vt=n.forwardRef(({name:e,multiple:t,children:r,form:o,initialValue:i,shouldUnregister:s,validate:u,rules:a,validateDebounce:c,disabled:l,delayError:d,mode:f,...m},p)=>{const{value:h,onChange:g,onBlur:y,error:v,name:b,disabled:x}=st({name:e,form:o,initialValue:i,shouldUnregister:s,validate:u,rules:a,validateDebounce:c,delayError:d,disabled:l,mode:f});return n.createElement("select",{...m,name:b,onBlur:y,multiple:t,value:Et(t,h),...xt(v,b,m),disabled:x,onChange:e=>g(t?Array.from(e.target.selectedOptions,e=>e.value):e.target.value),ref:p},r)});exports.Checkbox=St,exports.CheckboxGroupContext=gt,exports.CheckboxGroupProvider=yt,exports.FORM_ERROR=C,exports.Field=kt,exports.Form=function({form:e,context:t,initialValues:r,values:o,shouldUnregister:i,onSubmit:s,onValidSubmit:u,onInvalidSubmit:a,action:c,shouldFocusError:l,...d}){const f=Ge({initialValues:r,values:o,shouldUnregister:i}),m=e||f,p=Le(m,{onSubmit:s,onValidSubmit:u,onInvalidSubmit:a,shouldFocusError:l,onAction:c?e=>c(function(e){const t=new FormData;for(const r of Object.keys(e))vt(t,r,e[r]);return t}(e)):void 0}),{Provider:h}=t??pt;return n.createElement(h,{value:m},n.createElement("form",{...d,noValidate:!0,onSubmit:p}))},exports.FormContext=pt,exports.FormField=function({children:e,...t}){return e(st(t))},exports.FormProvider=ht,exports.Select=Vt,exports.VALIDATION_OUTCOME=O,exports.changeValue=function(e,t,r,n){Ve(e,p(t),r,n)},exports.changeValueByPath=Ve,exports.clearErrors=M,exports.createForm=je,exports.createFormContext=function(){const e=t.createContext(null);return{context:e,FormProvider:function({form:r,children:n}){return t.createElement(e.Provider,{value:r},n)},useFormContext:function(){const r=t.useContext(e);if(!r)throw new Error("no form provided");return r},useField:function(t){return it(t,e)},useFieldArray:function(t){return ft(t,e)},useFieldArrayItem:function(t){return mt(t,e)}}},exports.emitChangeByPath=U,exports.ensureValidate=ke,exports.fieldErrorId=function(e){return bt(p(e).key)},exports.getDirtyFields=ee,exports.getError=function(e,t){return A(e,p(t))},exports.getErrorByPath=A,exports.getErrors=_,exports.getFieldErrors=function(e,t){return T(e,p(t))},exports.getFieldErrorsByPath=T,exports.getFieldState=function(e,t){const r=p(t),{values:n,touched:o,validating:i}=e,s=n.get(r.key);return{value:q(e,r),error:A(e,r),errors:T(e,r),isDirty:n.has(r.key)&&v(e,r.key,r.value)!==s,isTouched:o.has(r.key),isValidating:i.has(r.key)}},exports.getFirstError=D,exports.getTouchedFields=N,exports.getValue=function(e,t){return q(e,p(t))},exports.getValueByPath=q,exports.getValues=I,exports.handleSubmit=Le,exports.hasErrors=P,exports.hasTouched=function(e,t){return R(e,p(t))},exports.hasTouchedByPath=R,exports.incrementSubmitCount=Te,exports.isDirty=Q,exports.isTouched=function({touched:e}){return e.size>0},exports.registerFieldMode=we,exports.registerFieldValidateDeps=ye,exports.registerValidatorByPath=ne,exports.removeField=function(e,t,r){z(e,p(t),r)},exports.removeFieldByPath=z,exports.reset=function(t,r,n){const o=[];if(n?.keepValues)Y(I(t),[],o);else if(n?.keepDirtyValues)for(const[e,r]of t.values){const n=JSON.parse(e);v(t,e,n)!==r&&o.push({segments:n,value:r})}t.initialValues=n?.keepDefaultValues?t.initialValues:r??t.initialValues,t.parsedValues=void 0,n?.keepErrors||M(t);const{emitter:i,touched:s,values:u,deleted:a,validating:c}=t;u.clear(),a.clear(),k(t),n?.keepTouched||s.clear(),c.clear(),n?.keepIsSubmitting||(t.isSubmitting=!1),n?.keepSubmitCount||(t.submitCount=0),n?.keepIsSubmitted||(t.isSubmitSuccessful=void 0),E(t),g(t);for(const{segments:e,value:r}of o)W(t,p(e),r);e.emit(i,"change"),e.emit(i,"touched"),e.emit(i,"validating"),e.emit(i,"submitting"),e.emit(i,"submitCount"),e.emit(i,"submitSuccessful"),e.emit(i,"reset")},exports.resetField=function(t,r,n){const o=p(r),{emitter:i,values:s,touched:c,errors:l,deleted:d}=t;if(s.delete(o.key),k(t,o.key),void 0!==t.parsedValues){t.parsedValues=a(t.parsedValues,o.value);const e=u(t.initialValues,o.value);void 0!==e&&s.set(o.key,e)}n&&"value"in n&&s.set(o.key,n.value),H(d,o),e.emit(i,"change"),!n?.keepTouched&&c.delete(o.key)&&e.emit(i,"touched",o),!n?.keepErrors&&l.delete(o.key)&&e.emit(i,"errors",o),E(t),g(t)},exports.revalidateDependentsOnChange=be,exports.revalidateFormOnChange=he,exports.seedValueByPath=J,exports.setDisabled=function(t,r){t.disabled=r,e.emit(t.emitter,"disabled")},exports.setError=L,exports.setErrorByPath=j,exports.setFocus=function(t,r,n){const{key:o}=p(r);n?e.emit(t.emitter,"focusError",o,n):e.emit(t.emitter,"focusError",o)},exports.setInitialValues=K,exports.setIsSubmitting=Fe,exports.setServerErrors=function(e,t,r){r?.keepExisting||M(e);for(const[r,n]of Object.entries(t))L(e,r,(Array.isArray(n)?n:[n]).map(e=>({type:"server",message:e})))},exports.setSubmitSuccessful=_e,exports.setTouched=function(e,t){B(e,p(t))},exports.setTouchedByPath=B,exports.setValidatingByPath=re,exports.setValue=function(e,t,r,n){W(e,p(t),r,n)},exports.setValueByPath=W,exports.subscribe=function(t,r){const{name:n,event:o="change",scope:i="branch",callback:s}=r;if(void 0===n)return e.on(t.emitter,o,s);const u=(function(e){return Array.isArray(e)&&e.every(e=>"number"!=typeof e)}(n)?n:[n]).map(e=>{const r=p(e);return"errors"===o||"touched"===o?ze(t.emitter,o,r.key,s):Ue(t.emitter,o,r,i,s)});return 1===u.length?u[0]:()=>u.forEach(e=>e())},exports.trigger=async function(t,r,n){const o=e=>m(t.emitter,"validating",()=>void 0===e?le(t):e.every(e=>!t.validating.has(e)),()=>!1);if(void 0===r){if(t.validators.forEach(e=>e()),await o(),t.validate&&await me(t),n?.shouldTouch&&oe(t,[...t.validators.keys()]),n?.shouldFocus){const r=t.errors.keys().next().value;void 0!==r&&e.emit(t.emitter,"focusError",r)}return!P(t)}const i="string"==typeof r||V(r)?[p(r).key]:r.map(e=>p(e).key);if(i.forEach(e=>t.validators.get(e)?.()),await o(i),n?.shouldTouch&&oe(t,i),n?.shouldFocus){const r=i.find(e=>t.errors.has(e));void 0!==r&&e.emit(t.emitter,"focusError",r)}return i.every(e=>!t.errors.has(e))},exports.unregisterFieldMode=Ce,exports.unregisterFieldValidateDeps=ve,exports.unsetValidatingByPath=te,exports.useCanSubmit=function(r){const{emitter:n}=r;return He(t.useCallback(t=>{const r=e.on(n,"errors",t),o=e.on(n,"submitting",t);return()=>{r(),o()}},[n]),()=>!r.isSubmitting&&!P(r))},exports.useCheckboxGroupContext=function(){const e=t.useContext(gt);if(!e)throw new Error("no group provided");return e},exports.useDirtyFields=function(e){return Ke(e,"change",ee.bind(null,e))},exports.useError=function(e,t){return Xe(e,p(t))?.message},exports.useErrorByPath=Xe,exports.useField=st,exports.useFieldArray=function(e){return ft(e,pt)},exports.useFieldArrayItem=function(e){return mt(e,pt)},exports.useFieldErrors=function(e,t){return Ze(e,p(t))},exports.useFieldErrorsByPath=Ze,exports.useForm=Ge,exports.useFormContext=function(){const e=t.useContext(pt);if(!e)throw new Error("no form provided");return e},exports.useFormError=function(e){return Xe(e,p(C))?.message},exports.useFormErrors=function(e){return Ze(e,p(C))},exports.useFormState=function(r){const n=t.useCallback(()=>function(e){return{isDirty:Q(e),dirtyFields:ee(e),isTouched:e.touched.size>0,touchedFields:N(e),hasErrors:P(e),isValid:!P(e),isSubmitting:e.isSubmitting,isValidating:e.validating.size>0,isSubmitSuccessful:e.isSubmitSuccessful,submitCount:e.submitCount,isLoading:e.isLoading,disabled:e.disabled}}(r),[r]);return He(t.useCallback(t=>{const n=et.map(n=>e.on(r.emitter,n,t));return()=>{for(const e of n)e()}},[r.emitter]),n,tt)},exports.useHasErrors=function(e){return Ke(e,"errors",P.bind(null,e))},exports.useIsDirty=function(e){return Ke(e,"change",Q.bind(null,e))},exports.useIsLoading=function(e){return Ke(e,"loading",()=>e.isLoading)},exports.useIsSubmitSuccessful=function(e){return Ke(e.emitter,"submitSuccessful",()=>!!e.isSubmitSuccessful)},exports.useIsSubmitting=function(e){return Ke(e,"submitting",()=>e.isSubmitting)},exports.useIsValid=function(e){return Ke(e,"errors",()=>!P(e))},exports.useIsValidating=function(e){return Ke(e,"validating",()=>e.validating.size>0)},exports.useSubmitCount=function(e){return Ke(e,"submitCount",()=>e.submitCount)},exports.useTouched=function(e,t){return Qe(e,p(t))},exports.useTouchedByPath=Qe,exports.useTouchedFields=function(e){return Ke(e,"touched",N.bind(null,e))},exports.useValue=function(e,t){return Ye(e,p(t))},exports.useValueByPath=Ye,exports.useWatch=Ke,exports.useWatchCore=He,exports.userBlur=Ae,exports.userChangeByPath=Oe,exports.validate=Se;
|
|
1
|
+
"use strict";var e=require("@for-fun/event-emitter"),t=require("react");function r(e){var t=Object.create(null);return e&&Object.keys(e).forEach(function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}}),t.default=e,Object.freeze(t)}var n=r(t);const o=new Map;function i(e){if(Array.isArray(e))return e;const t=o.get(e);if(t)return t;const r=function(e){const t=[];let r="";const n=()=>{if(s(r)){const n=[...t.map(String),r].join("."),o=t.reduce((e,t)=>e+("number"==typeof t?`[${t}]`:`${e?".":""}${t}`),"");throw new TypeError(`Numeric path segment must use bracket notation: "${n}" → "${o}[${r}]" (path: ${e})`)}t.push(r),r=""};for(let o=0;o<e.length;o++){const i=e[o];if("."===i)""!==r&&n();else if("["===i){""!==r&&n();const i=e[o+1];if('"'===i||"'"===i){const r=e.indexOf(i,o+2);if(-1===r)throw new TypeError(`Unterminated quote in path: ${e}`);if("]"!==e[r+1])throw new TypeError(`Expected "]" after quoted segment in path: ${e}`);t.push(e.slice(o+2,r)),o=r+1}else{const r=e.indexOf("]",o+1);if(-1===r)throw new TypeError(`Unterminated bracket in path: ${e}`);const n=e.slice(o+1,r);t.push(s(n)?Number(n):n),o=r}}else r+=i}""===r&&0!==t.length||n();return t}(e);if(o.size>=1e4){const e=o.keys().next();e.done||o.delete(e.value)}return o.set(e,r),r}const s=e=>/^-?\d+$/.test(e);function u(e,t){return t.reduce((e,t)=>{if(null!=e)return e[t]},e)}function a(e,t){if(!t.length||null==e)return e;const[r,...n]=t;if(n.length){const t=a(e[r],n);return t===e[r]?e:c(e,[r],t)}if(Array.isArray(e)){if(!(r in e))return e;const t=e.slice();return delete t[r],t}if("object"!=typeof e||!(r in e))return e;const o={...e};return delete o[r],o}function c(e,t,r){if(!t.length)return r;const[n,...o]=t,i="number"==typeof n?n:Array.isArray(e)&&"string"==typeof n&&s(n)?Number(n):void 0;if(void 0!==i){const t=Array.isArray(e)?e.slice():[];return t[i]=c(t[i],o,r),t}return{...e,[n]:c(e&&e[n],o,r)}}function l(e,t,r,n){if(!t.length)return r;let o=e,i=null,u="";for(let a=0;a<t.length;a++){const c=t[a];if(!n.has(o)){let t;t="number"==typeof c||Array.isArray(o)&&"string"==typeof c&&s(c)?Array.isArray(o)?o.slice():[]:{...o},n.add(t),0===a?e=t:i[u]=t,o=t}a===t.length-1?o[c]=r:(i=o,u=c,o=o[c])}return e}function d(e){return e&&"function"==typeof e.then}function f(e,t){if(Object.is(e,t))return!0;if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(!e||!t||"object"!=typeof e||"object"!=typeof t)return!1;const r=Array.isArray(e);if(r!==Array.isArray(t))return!1;if(r){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!f(e[r],t[r]))return!1;return!0}const n=Object.getPrototypeOf(e);if(n!==Object.prototype&&null!==n)return!1;if(Object.getPrototypeOf(t)!==n)return!1;const o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(const r of o)if(!f(e[r],t[r]))return!1;return!0}function m(t,r,n,o){return new Promise((i,s)=>{if(o())return void s();if(n())return void i();const u=e.on(t,r,()=>{if(o())return u(),void s();n()&&(u(),i())})})}function y(e){const t=i(e);return{value:t,key:JSON.stringify(t)}}const p=new WeakMap;function h(e){const t=p.get(e);t&&t.version++}const g=new WeakMap;function v(e,t,r){const n=g.get(e);return n?.has(t)?n.get(t):u(e.initialValues,r)}function b(e,{key:t},r){let n=g.get(e);n||(n=new Map,g.set(e,n)),n.set(t,r)}function k(e,{key:t}){const r=g.get(e);if(!r?.size)return;const n=`${t.slice(0,-1)},`;for(const e of r.keys())e.startsWith(n)&&r.delete(e)}function x(e,t){const r=g.get(e);r&&(void 0===t?r.clear():r.delete(t))}const S=new WeakMap;function V(e){const t=S.get(e);t&&t.version++}function w(e){return e.some(e=>"number"==typeof e)}function E(e){return!!e&&"object"==typeof e&&"string"==typeof e.type&&"string"==typeof e.message}const C="_form",A=Symbol("validation-outcome");function F({errors:e},t){return e.get(t.key)?.[0]}const O=[];function M({errors:e},t){return e.get(t.key)??O}function D({errors:e}){const t=[];for(const[r,n]of e){const e=JSON.parse(r).join(".");for(const{type:r,message:o}of n)t.push({path:e,type:r,message:o})}return t}function T({errors:e}){return e.values().next().value?.[0]?.message}function P(e,t,r,n){j(e,y(t),r,n)}function j(t,r,n,o){const{emitter:i,errors:s}=t,u=function(e){if("string"==typeof e)return e?[{type:"custom",message:e}]:void 0;if(E(e))return[e];if(!e)return;const t=[];return e.forEach(e=>{"string"==typeof e&&e?t.push({type:"custom",message:e}):E(e)&&t.push(e)}),t.length?t:void 0}(n);u?s.set(r.key,u):s.delete(r.key),e.emit(i,"errors",r),o?.shouldFocus&&e.emit(i,"focusError",r.key)}function L(t,r){const{emitter:n,errors:o}=t;if(void 0===r)return o.clear(),void e.emit(n,"errors");const i="string"==typeof r||w(r)?[y(r)]:r.map(e=>y(e));for(const{key:e}of i)o.delete(e);for(const t of i)e.emit(n,"errors",t)}function B({errors:e}){return e.size>0}function R(e,t){const r=e.values.get(t.key);return e.values.has(t.key)&&v(e,t.key,t.value)!==r}function N(e){let t=!1;return I(e,()=>{t=!0}),t}function I(e,t){for(const[r,n]of e.values){const o=JSON.parse(r);v(e,r,o)!==n&&t(o.join("."))}}function q(e){const t={};return I(e,e=>{t[e]=!0}),t}function $(e){let t=S.get(e);if(t){if(t.version>0){const r=q(e);(function(e,t){const r=Object.keys(e);return r.length===Object.keys(t).length&&r.every(e=>!0===t[e])})(t.result,r)||(t.result=r),t.version=0}}else t={version:0,result:q(e)},S.set(e,t);return t.result}function W({emitter:t,touched:r},n){r.has(n.key)||(r.add(n.key),e.emit(t,"touched",n))}function U({touched:e},t){return e.has(t.key)}function J({touched:e}){return Array.from(e,e=>JSON.parse(e).join("."))}function z(e){let t=p.get(e);return t?t.version>0&&(t.result=_(e),t.version=0):(t={version:0,result:_(e)},p.set(e,t)),t.result}function _(e){const{initialValues:t,parsedValues:r,values:n,deleted:o}=e,i=new Set;let s=r??t;for(const[e,t]of n)s=l(s,JSON.parse(e),t,i);for(const e of o)s=a(s,JSON.parse(e));return s}function G({initialValues:e,parsedValues:t,values:r,deleted:n},o){const{key:i,value:s}=o;if(r.has(i))return r.get(i);if(!n.has(i)){for(let e=s.length-1;e>0;e--){const t=JSON.stringify(s.slice(0,e));if(r.has(t))return u(r.get(t),s.slice(e))}return u(t??e,s)}}function H(t,r,n,o){const{emitter:i,values:s,deleted:u}=t,a="function"==typeof n?n(G(t,r)):n;s.set(r.key,a),Y(s,r),Z(u,r),k(t,r),!1===o?.shouldDirty&&b(t,r,a),V(t),h(t),o?.shouldTouch&&W(t,r),o?.shouldValidate&&t.validators.get(r.key)?.(),e.emit(i,"change",r)}function K(e,t,r){const{values:n,deleted:o}=e;n.set(t.key,r),Y(n,t),Z(o,t),k(e,t),V(e),h(e)}function Q({emitter:t},r){e.emit(t,"change",r)}function X(t,r,n){const{key:o,value:i}=r,{emitter:s,values:u,touched:a,errors:c,validating:l,deleted:d}=t;n?.keepValue||n?.keepDirty||(u.delete(o),x(t,o),function(e,t){for(let r=1;r<t.length;r++)if(e.has(JSON.stringify(t.slice(0,r))))return!0;const r=`${JSON.stringify(t).slice(0,-1)},`;for(const t of e.keys())if(t.startsWith(r))return!0;return!1}(u,i)||d.add(o)),n?.keepTouched||a.delete(o),n?.keepError||c.delete(o),l.delete(o),V(t),h(t),e.emit(s,"change",r),e.emit(s,"touched",r),e.emit(s,"errors",r),e.emit(s,"validating",r)}function Y(e,{key:t}){if(!e.size)return;const r=`${t.slice(0,-1)},`;for(const t of e.keys())t.startsWith(r)&&e.delete(t)}function Z(e,{key:t}){if(e.size)for(const r of e)(r===t||r.startsWith(`${t.slice(0,-1)},`)||t.startsWith(`${r.slice(0,-1)},`))&&e.delete(r)}function ee(t,r){t.initialValues===r||f(t.initialValues,r)||(t.initialValues=r,t.parsedValues=void 0,t.values.clear(),t.deleted.clear(),x(t),V(t),h(t),e.emit(t.emitter,"change"))}function te(e,t,r){if(null!==e&&"object"==typeof e){if(Array.isArray(e)){for(let n=0;n<e.length;n++)te(e[n],[...t,n],r);return}const n=Object.keys(e);if(n.length>0){for(const o of n)te(e[o],[...t,o],r);return}}r.push({segments:t,value:e})}function re({emitter:t,validating:r},n){r.delete(n.key),e.emit(t,"validating",n)}function ne({emitter:t,validating:r},n){r.add(n.key),e.emit(t,"validating",n)}function oe(e,t,r){let n=null,o=null,i=!1,s=null,u=null;const a=e=>void 0!==e&&!(Array.isArray(e)&&0===e.length),c=()=>{i||(i=!0,ne(e,t))},l=()=>{i&&(i=!1,re(e,t))},f=()=>{const n=r.sync();if(!n)return!1;const o=n(G(e,t),{form:e,path:t});return a(o)?(j(e,t,o),u="sync",!0):(r.validate()&&"sync"!==u||(j(e,t,void 0),u=null),!1)},m=n=>{if(r.asyncAlways?.()){const o=(()=>{const n=r.sync();if(!n)return null;const o=n(G(e,t),{form:e,path:t});if(void 0===o)return null;const i=Array.isArray(o)?o:[o];return i.length?i:null})(),i=void 0===n?[]:Array.isArray(n)?n:[n];j(e,t,[...o??[],...i]),u=a(n)?"validator":o?"sync":null}else j(e,t,n),u=a(n)?"validator":null},y=()=>{null!==n&&(clearTimeout(n),n=null),o?.abort(),s={}},p=()=>{const n=r.validate();if(!n)return void l();o?.abort(),o=new AbortController;const i=s={};let u;try{u=n(G(e,t),{form:e,path:t,signal:o.signal})}catch(e){throw l(),e}if(!d(u))return m(u),void l();c(),u.then(e=>{s===i&&m(e)}).catch(()=>{}).finally(()=>{s===i&&(l(),s=null)})},h=()=>{if(n=null,f()&&!r.asyncAlways?.())return y(),void l();p()};return e.validators.set(t.key,()=>{if(f()&&!r.asyncAlways?.())return y(),void l();if(!r.validate())return;const e=r.debounce();if(e>0)return null!==n?clearTimeout(n):c(),void(n=setTimeout(h,e));p()}),()=>{e.validators.delete(t.key),null!==n&&(clearTimeout(n),n=null),l(),o?.abort()}}function ie(e,t){t.forEach(t=>W(e,y(JSON.parse(t))))}function se(e,t,r=[],n){Object.entries(t).forEach(([t,o])=>{const u=[...r,...s(t)?[t]:i(t)];"string"==typeof o?o&&(P(e,u,o),ue(e,u,n)):Array.isArray(o)||E(o)?(P(e,u,o),ue(e,u,n)):o&&"object"==typeof o&&se(e,o,u,n)})}function ue(e,t,r){if(!r)return;const n=y(t),o=e.errors.get(n.key);o&&r.set(n.key,o)}function ae(t,r){const n=t.validateDeps?function(e){let t=ce.get(e);t||(t=new Map,ce.set(e,t));return t}(t):void 0;if(n&&(!function(t,r){for(const[n,o]of r){t.errors.get(n)===o&&(t.errors.delete(n),e.emit(t.emitter,"errors",y(JSON.parse(n))))}}(t,n),n.clear()),r){if("object"==typeof r&&A in r){const o=r;return o.errors&&se(t,o.errors,[],n),void function(t,r){void 0!==r&&r!==t.parsedValues&&(t.parsedValues=r,h(t),e.emit(t.emitter,"change"))}(t,o.values)}se(t,r,[],n)}}const ce=new WeakMap;const le="__form_validate__";function de(e){for(const t of e.validating)if(t!==le)return!1;return!0}const fe=Symbol("form-validate-settled"),me=new WeakMap;function ye(t){const r=t.validate;if(!r)return Promise.resolve();const n=t.validateDebounce??0;if(n<=0){const e=new AbortController;return Promise.resolve(r(z(t),{form:t,signal:e.signal})).then(e=>{ae(t,e)})}const o=function(e){let t=me.get(e);return t||(t={timer:null,controller:null,round:null,marked:!1,waiters:[]},me.set(e,t)),t}(t);return null!==o.timer?clearTimeout(o.timer):(o.marked=!0,t.validating.add(le),e.emit(t.emitter,"validating")),o.timer=setTimeout(()=>{o.timer=null;const e=o.round={};(function(e,t,r){const n=e.validate;if(!n)return Promise.resolve();t.controller?.abort();const o=t.controller=new AbortController;let i;try{i=Promise.resolve(n(z(e),{form:e,signal:o.signal}))}catch(e){i=Promise.reject(e)}return i.then(n=>{t.round===r&&ae(e,n)},e=>{if(t.round===r)throw e})})(t,o,e).then(()=>pe(t,o,e,fe),r=>pe(t,o,e,r))},n),new Promise((e,t)=>{o.waiters.push({resolve:e,reject:t})})}function pe(t,r,n,o){if(r.round!==n)return;if(r.round=null,null!==r.timer)return;r.marked&&(r.marked=!1,t.validating.delete(le),e.emit(t.emitter,"validating"));const i=r.waiters;r.waiters=[];for(const e of i)o===fe?e.resolve():e.reject(o)}function he(e,t,r){e.validateDeps?.has(t.key)&&e.validate&&("onChange"===r||"all"===r||"onTouched"===r&&U(e,t)||"onChange"===e.reValidateMode&&function(e){const t=ce.get(e);if(!t)return!1;for(const[r,n]of t)if(e.errors.get(r)===n)return!0;return!1}(e))&&ye(e).catch(()=>{})}const ge=new WeakMap;function ve(e,t,r){let n=ge.get(e);n||(n=new Map,ge.set(e,n));for(const e of r){let r=n.get(e);r||(r=new Set,n.set(e,r)),r.add(t)}}function be(e,t,r){const n=ge.get(e);if(n)for(const e of r){const r=n.get(e);r?.delete(t)&&(r.size||n.delete(e))}}function ke(e,t,r){const n=ge.get(e)?.get(t.key);if(n?.size)for(const o of n)o!==t.key&&("onChange"===r||"all"===r||"onTouched"===r&&U(e,t)||"onChange"===e.reValidateMode&&e.errors.has(o))&&e.validators.get(o)?.()}function xe(e){const t=new Error(T(e));return t.errors=D(e),t}async function Se(e){if(e.validators.forEach(e=>e()),await m(e.emitter,"validating",()=>de(e),()=>B(e)).catch(()=>{throw xe(e)}),e.validate&&(await ye(e),B(e)))throw xe(e)}async function Ve(e){return Se(e).catch(e=>e.message)}const we=new WeakMap;function Ee(e,t,r,n){!1===n?.shouldDirty&&b(e,t,r),we.get(e)?.get(t.key)?Fe(e,t,r):H(e,t,r,n)}function Ce(e,t,r){let n=we.get(e);n||(n=new Map,we.set(e,n));const o=n.has(t.key),i={};return n.set(t.key,{mode:r,token:i}),{token:i,displaced:o}}function Ae(e,t,r){const n=we.get(e),o=n?.get(t.key);n&&o&&o.token===r&&n.delete(t.key)}function Fe(e,t,r){H(e,t,r);const n=we.get(e)?.get(t.key);n&&function(e,t,r){("onChange"===r||"all"===r||"onTouched"===r&&U(e,t)||M(e,t).length>0&&"onChange"===e.reValidateMode)&&e.validators.get(t.key)?.(),he(e,t,r),ke(e,t,r)}(e,t,n.mode??e.mode)}function Oe(e,t){W(e,t);const r=we.get(e)?.get(t.key);if(!r)return;const n=r.mode??e.mode;("onBlur"===n||"onTouched"===n||"all"===n||M(e,t).length>0&&"onBlur"===e.reValidateMode)&&e.validators.get(t.key)?.()}function Me(t,r){t.isSubmitting=r,e.emit(t.emitter,"submitting")}function De(t){t.submitCount++,e.emit(t.emitter,"submitCount")}function Te(t,r){t.isSubmitSuccessful=r,e.emit(t.emitter,"submitSuccessful")}function Pe(t,r){t.disabled=r,e.emit(t.emitter,"disabled")}function je(e){if(e.startsWith("["))try{const t=JSON.parse(e);if(Array.isArray(t))return t.join(".")}catch{}return e}function Le(t,r){const{onSubmit:n,onValidSubmit:o,onInvalidSubmit:i,onAction:s,shouldFocusError:u=!0}=r??{};return async r=>{r&&"function"==typeof r.preventDefault&&r.preventDefault();const a=r?.currentTarget;t.isSubmitted=!0,Me(t,!0),De(t);const c=z(t);if(a&&"function"==typeof a.checkValidity&&!1===a.checkValidity()){if(a.reportValidity(),u&&"function"==typeof a.querySelector){const e=a.querySelector(":invalid");e&&"function"==typeof e.focus&&e.focus()}return Me(t,!1),Te(t,!1),void(i&&i(function(e){const t=[],{elements:r}=e;for(let e=0;e<r.length;e++){const n=r[e];n.name&&"function"==typeof n.checkValidity&&!n.checkValidity()&&t.push({path:je(n.name),type:"native",message:n.validationMessage})}return t}(a),c))}if(await Ve(t)){if(Me(t,!1),Te(t,!1),u){const r=t.errors.keys().next().value;void 0!==r&&e.emit(t.emitter,"focusError",r)}i&&i(D(t),c)}else try{const e=z(t);n&&await n(e,r),o&&await o(e,r),s&&await s(e,r),Te(t,!0)}catch{Te(t,!1)}finally{Me(t,!1)}}}function Be(t){const r=e.create();e.setMaxListeners(r,0);let n=t?.initialValues??{};"function"==typeof n&&(n=n());const o={emitter:r,...t,mode:t?.mode??"onSubmit",reValidateMode:t?.reValidateMode??"onChange",disabled:t?.disabled??!1,validateOnMount:t?.validateOnMount??!1,asyncAlways:t?.asyncAlways??!1,validateDeps:t?.validateDeps?new Set(t.validateDeps.map(e=>y(e).key)):void 0,initialValues:{},values:new Map,deleted:new Set,errors:new Map,touched:new Set,validators:new Map,validating:new Set,parsedValues:void 0,isSubmitting:!1,isSubmitted:!1,submitCount:0,isSubmitSuccessful:void 0,isLoading:!1,status:void 0};return d(n)?(o.isLoading=!0,e.emit(r,"loading"),Promise.resolve(n).then(t=>{ee(o,t??{}),o.isLoading=!1,e.emit(r,"loading")},t=>{o.isLoading=!1,e.emit(r,"loading")})):o.initialValues=n,o}function Re(e,t){switch(e){case"required":return"This field is required";case"min":return`Must be at least ${t}`;case"max":return`Must be at most ${t}`;case"minLength":return`Must be at least ${t} characters`;case"maxLength":return`Must be at most ${t} characters`;case"pattern":return"Invalid format";default:return"Invalid value"}}function Ne(e){return(t,r)=>{if(e.required&&(""===t||null==t||Array.isArray(t)&&0===t.length))return[{type:"required",message:"string"==typeof e.required?e.required:Re("required")}];const n=[],o=(t,r)=>e.messages?.[t]??Re(t,r);if(void 0!==e.min){const r=Number(t);!Number.isNaN(r)&&r<e.min&&n.push({type:"min",message:o("min",e.min)})}if(void 0!==e.max){const r=Number(t);!Number.isNaN(r)&&r>e.max&&n.push({type:"max",message:o("max",e.max)})}const i="string"==typeof t||Array.isArray(t);if(void 0!==e.minLength&&i&&t.length<e.minLength&&n.push({type:"minLength",message:o("minLength",e.minLength)}),void 0!==e.maxLength&&i&&t.length>e.maxLength&&n.push({type:"maxLength",message:o("maxLength",e.maxLength)}),e.pattern&&!e.pattern.value.test(t)&&n.push({type:"pattern",message:e.messages?.pattern??e.pattern.message??Re("pattern")}),void 0!==e.validate){const o="function"==typeof e.validate?{validate:e.validate}:e.validate;for(const[e,i]of Object.entries(o)){const o=i(t,r);if(void 0!==o)for(const t of Array.isArray(o)?o:[o])n.push("string"==typeof t?{type:e,message:t}:{...t,type:e})}}return n.length?n:void 0}}function Ie(e){const t={};return e.required&&(t.required=!0),void 0!==e.min&&(t.min=e.min),void 0!==e.max&&(t.max=e.max),void 0!==e.minLength&&(t.minLength=e.minLength),void 0!==e.maxLength&&(t.maxLength=e.maxLength),e.pattern&&(t.pattern=e.pattern.value.source),t}function qe(e,t){return e.startsWith(`${t.slice(0,-1)},`)}function $e(t,r,n,o,i){const{key:s}=n;return e.on(t,r,e=>{(void 0===e||e.key===s||qe(s,e.key)||"branch"===o&&qe(e.key,s))&&i()})}function We(t,r,n,o){return e.on(t,r,e=>{void 0!==e&&e.key!==n||o()})}function Ue(r){const[n]=t.useState(()=>{const e=Be(r);return r&&void 0!==r.values&&ee(e,r.values),e}),o=r&&r.initialValues,i=r&&r.values,s=t.useRef(null);null===s.current&&(s.current={done:!1,source:void 0}),t.useEffect(()=>{if(void 0===o)return;if("function"==typeof o||d(o))return;const e=s.current;e.done&&(e.source===o||f(e.source,o))||(e.done=!0,e.source=o,ee(n,o))},[n,o]);const u=t.useRef(null);return null===u.current&&(u.current={done:!1,source:void 0}),t.useEffect(()=>{if(void 0===i)return;const e=u.current;e.done&&(e.source===i||f(e.source,i))||(e.done=!0,e.source=i,ee(n,i))},[n,i]),t.useEffect(()=>{if(!n.validateOnMount||!n.validate)return;const t=()=>{ye(n).catch(()=>{})};if(n.isLoading)return e.on(n.emitter,"loading",()=>{t()});t()},[n]),n}function Je(e,r,n){const o=t.useRef(null);null===o.current&&(o.current={hasValue:!1});const i=o.current,s=t.useRef(r);s.current=r;const u=t.useRef(n);u.current=n;const a=t.useCallback(()=>(i.hasValue||(i.value=s.current(),i.hasValue=!0),i.value),[i]),c=t.useCallback(t=>{i.hasValue=!1;return e(()=>{const e=u.current;if(e&&i.hasValue){const r=s.current();if(e(i.value,r))return;return i.value=r,void t()}i.hasValue=!1,t()})},[e,i]);return t.useSyncExternalStore(c,a,a)}function ze(r,n,o,i){const s="emitter"in r?r.emitter:r;return Je(t.useCallback(t=>e.on(s,n,t),[s,n]),o,i)}function _e(e,r,n){const{emitter:o}=e,{key:i}=r,s=!1===n?.exact?"branch":"leaf";return Je(t.useCallback(e=>$e(o,"change",r,s,e),[o,i,s]),()=>{if(!1===n?.exact)return u(z(e),r.value);const t=G(e,r);return void 0===t?n?.defaultValue:t})}function Ge(e,r){const{emitter:n}=e,{key:o}=r;return Je(t.useCallback(e=>We(n,"touched",o,e),[n,o]),U.bind(null,e,r))}function He(e,r){const{emitter:n}=e,{key:o}=r;return Je(t.useCallback(e=>We(n,"errors",o,e),[n,o]),F.bind(null,e,r))}function Ke(e,r){const{emitter:n}=e,{key:o}=r;return Je(t.useCallback(e=>We(n,"errors",o,e),[n,o]),M.bind(null,e,r))}function Qe(e,r){const{emitter:n}=e,{key:o}=r;return Je(t.useCallback(e=>$e(n,"change",r,"leaf",e),[n,o]),()=>R(e,r))}const Xe=["change","errors","touched","validating","submitting","submitCount","submitSuccessful","disabled","loading"];function Ye(e,t){const r=e.touchedFields.length===t.touchedFields.length&&e.touchedFields.every((e,r)=>e===t.touchedFields[r]);return e.isDirty===t.isDirty&&e.dirtyFields===t.dirtyFields&&e.isTouched===t.isTouched&&r&&e.hasErrors===t.hasErrors&&e.isValid===t.isValid&&e.isSubmitting===t.isSubmitting&&e.isSubmitted===t.isSubmitted&&e.isValidating===t.isValidating&&e.isSubmitSuccessful===t.isSubmitSuccessful&&e.submitCount===t.submitCount&&e.isLoading===t.isLoading&&e.disabled===t.disabled}function Ze(e){const r=t.useMemo(()=>y(i(e)),[e]);return t.useMemo(()=>r,[r.key])}function et(e){const r=t.useRef(e);return r.current=e,r}function tt(e){const r=et(e);return t.useCallback((...e)=>r.current(...e),[r])}function rt(e,r){const n=t.useRef(!1);t.useEffect(()=>(n.current&&(n.current=!1,r()),()=>{n.current=!0,e()}),[])}function nt(r,n,o,i){const s=t.useContext(ht),u=o||s;if(!u)throw new Error("no form provided");const a=t.useRef(r);a.current=r;const c=t.useRef(i?.debounce??0);c.current=i?.debounce??0;const l=t.useRef(i?.sync);l.current=i?.sync;const d=t.useRef(i?.asyncAlways??!1);return d.current=i?.asyncAlways??!1,t.useEffect(()=>{const t=oe(u,n,{validate:()=>a.current,debounce:()=>c.current,sync:()=>l.current,asyncAlways:()=>d.current});if(!(i?.validateOnMount??u.validateOnMount)||!a.current&&!l.current)return t;let r=!1;const o=()=>{r||u.validators.get(n.key)?.()};if(u.isLoading){const t=e.on(u.emitter,"loading",()=>{t(),o()})}else o();return()=>{r=!0,t()}},[u,n.key]),tt(()=>u.validators.get(n.key)?.())}function ot(e,t){const{key:r}=t,n={present:e.values.has(r),value:e.values.get(r),touched:e.touched.has(r),errors:e.errors.get(r)};return X(e,t),n}function it(t,r,n){const{key:o}=r;n.present?H(t,r,n.value,{shouldDirty:!1}):(t.deleted.delete(o),h(t),e.emit(t.emitter,"change",r)),n.touched&&W(t,r),n.errors&&j(t,r,n.errors)}const st=new WeakMap;function ut({form:r,name:n,initialValue:o,shouldUnregister:i,validate:s,rules:u,validateDebounce:a,validateDeps:c,validateOnMount:l,delayError:f,disabled:m,uncontrolled:p,asyncAlways:h,mode:g},v){const b=t.useContext(v),k=r||b;if(!k)throw new Error("no form provided");const x=Ze(n),S=t.useRef(!1);void 0!==o&&void 0===G(k,x)&&(K(k,x,o),S.current=!0),t.useEffect(()=>{S.current&&(S.current=!1,Q(k,x))});nt(function(e,t){if(!e||!function(e){return void 0!==e.required||void 0!==e.min||void 0!==e.max||void 0!==e.minLength||void 0!==e.maxLength||void 0!==e.pattern||void 0!==e.validate}(e))return t;const r=Ne(e);return t?(e,n)=>{const o=r(e,n),i=e=>{const t=[...o??[]];return Array.isArray(e)?t.push(...e):e&&t.push(e),t.length?t:void 0},s=t(e,n);return d(s)?s.then(i):i(s)}:r}(u?{...u,required:void 0}:void 0,s),x,k,{debounce:a,validateOnMount:l,asyncAlways:h??k.asyncAlways,sync:u&&void 0!==u.required?Ne({required:u.required}):void 0});const V=function(e,r){const[n,o]=t.useState(e);return t.useEffect(()=>{if(void 0===r)return;if(0===e.length)return void o(e);if(n.length>0)return void o(e);const t=setTimeout(()=>o(e),r);return()=>clearTimeout(t)},[e,r,n]),void 0===r?e:n}(Ke(k,x),f),w=V[0],E=w?.message,C=function(e,r,n){const o=t.useRef({has:!1,value:void 0}),i=t.useCallback(()=>n?(o.current.has||(o.current={has:!0,value:G(e,r)}),o.current.value):G(e,r),[n,e,r]);return Je(t.useCallback(t=>n?()=>{}:$e(e.emitter,"change",r,"leaf",t),[n,e.emitter,r]),i)}(k,x,!!p),A=Je(t.useCallback(e=>p?()=>{}:$e(k.emitter,"change",x,"leaf",e),[k.emitter,x.key,p]),()=>R(k,x)),F=Je(t.useCallback(e=>We(k.emitter,"validating",x.key,e),[k.emitter,x.key]),()=>k.validating.has(x.key)),O=ze(k,"disabled",()=>k.disabled),M=tt(e=>Fe(k,x,e)),D=tt(()=>Oe(k,x));t.useEffect(()=>{const{token:e,displaced:t}=Ce(k,x,g);return()=>Ae(k,x,e)},[k,x.key,g]);const T=c?.length?c.join("\n"):void 0;t.useEffect(()=>{if(!T)return;const e=c.map(e=>y(e).key);return ve(k,x.key,e),()=>be(k,x.key,e)},[k,x.key,T]);const P=t.useRef(null),j=t.useCallback(e=>{P.current=e},[]);t.useEffect(()=>e.on(k.emitter,"focusError",(e,t)=>{if(e!==x.key)return;const r=P.current;r&&"function"==typeof r.focus&&(r.focus(),t?.shouldSelect&&"function"==typeof r.select&&r.select())}),[k,x.key]),t.useEffect(()=>{if(!p)return;let t=st.get(k);if(!t){const r=new Map,n=e.on(k.emitter,"change",e=>{if(!e)for(const e of r.values()){const{el:t,path:r}=e();if(!t||"file"===t.type)continue;const n=G(k,r),o=null==n?"":String(n);t.value!==o&&(t.value=o)}});t={cells:r,off:n},st.set(k,t)}return t.cells.set(x.key,()=>({el:P.current,path:x})),()=>{t.cells.delete(x.key),0===t.cells.size&&(t.off(),st.delete(k))}},[k,x.key,p]);const L=t.useRef(null);return rt(tt(()=>{!1!==(i??k.shouldUnregister)&&(L.current=ot(k,x))}),tt(()=>{const e=L.current;L.current=null,e&&it(k,x,e)})),{form:k,value:C,error:E,errorObject:w,errors:V,isDirty:A,validating:F,onChange:M,onBlur:D,name:x.key,disabled:O||!!m,focusRef:j}}function at(e){return ut(e,ht)}const ct=new WeakMap;function lt(e){const t=(ct.get(e)??0)+1;return ct.set(e,t),`_${t}`}const dt=new WeakMap;function ft(e,t,r){let n=dt.get(e);n||(n=new Map,dt.set(e,n)),n.set(t,r)}function mt(e){return e+1}function yt(e,r){const n=t.useContext(r),o=e.form||n;if(!o)throw new Error("no form provided");const i=e.keyName??"id",{rules:s,shouldUnregister:u}=e,a=Ze(e.name),c=t.useRef([]),l=t.useCallback(()=>G(o,a)||[],[o,a]),d=t.useCallback(e=>{H(o,a,e)},[o,a]),f=t.useCallback(()=>{const e=l();for(;c.current.length<e.length;)c.current.push(lt(o));for(;c.current.length>e.length;)c.current.pop();return c.current.map((e,t)=>({id:e,index:t,[i]:e}))},[l,o,i]),[m,y]=t.useReducer(f,void 0,f);t.useEffect(()=>$e(o.emitter,"change",a,"branch",y),[o.emitter,a]),ft(o,a.key,c.current),t.useEffect(()=>(ft(o,a.key,c.current),()=>{const e=dt.get(o);e?.get(a.key)===c.current&&e.delete(a.key)}),[o,a.key]);const p=t.useRef(null);rt(tt(()=>{!1!==(u??o.shouldUnregister)&&(p.current=ot(o,a))}),tt(()=>{const e=p.current;p.current=null,e&&it(o,a,e)})),nt(s?Ne({...s,required:void 0}):void 0,a,o,{sync:s&&void 0!==s.required?Ne({required:s.required}):void 0});return{fields:m,append:tt(e=>{const t=l();c.current.push(lt(o)),d([...t,e])}),prepend:tt(e=>{const t=l();c.current.unshift(lt(o)),d([e,...t])}),insert:tt((e,t)=>{const r=l();c.current.splice(e,0,lt(o));const n=[...r.slice(0,e),t,...r.slice(e)];d(n)}),remove:tt(e=>{const t=l();c.current.splice(e,1);const r=t.filter((t,r)=>r!==e);d(r)}),swap:tt((e,t)=>{const r=l();[c.current[e],c.current[t]]=[c.current[t],c.current[e]];const n=[...r];[n[e],n[t]]=[n[t],n[e]],d(n)}),move:tt((e,t)=>{const r=l(),[n]=c.current.splice(e,1);c.current.splice(t,0,n);const o=[...r],[i]=o.splice(e,1);o.splice(t,0,i),d(o)}),replace:tt(e=>{c.current=e.map(()=>lt(o)),d([...e])}),update:tt((e,t)=>{const r=l();if(e<0||e>=r.length)return;const n=[...r];n[e]=t,d(n)})}}function pt(e,r){const n=t.useContext(r),o=e.form||n;if(!o)throw new Error("no form provided");const{id:i}=e,s=Ze(e.name),u=t.useCallback(()=>function(e,t){return dt.get(e)?.get(t)}(o,s.key)?.indexOf(i)??-1,[o,s.key,i]),a=t.useCallback(e=>{const t=G(o,s);return Array.isArray(t)?t[e]:void 0},[o,s]),c=u(),l=a(c),d=t.useRef({index:c,value:l});d.current={index:c,value:l};const f=et({computeIndex:u,computeValue:a}),[,m]=t.useReducer(mt,0);t.useEffect(()=>$e(o.emitter,"change",s,"leaf",()=>{const{computeIndex:e,computeValue:t}=f.current,r=e();r===d.current.index&&Object.is(t(r),d.current.value)||m()}),[o.emitter,s,f]);const y=Ze([...s.value,c]),p=Ke(o,y);return{value:l,setValue:tt(e=>{if(c<0)return;const t=[...G(o,s)??[]];c>=t.length||(t[c]=e,H(o,s,t))}),errors:p,error:p[0]?.message,name:y.key,index:c,form:o}}const ht=t.createContext(null),gt=ht.Provider;const vt=t.createContext(null),bt=vt.Provider;function kt(e,t,r){if(null!=r)if(Array.isArray(r))for(const n of r)kt(e,t,n);else if("undefined"!=typeof FileList&&r instanceof FileList)for(let n=0;n<r.length;n++)e.append(t,r.item(n));else"undefined"!=typeof File&&r instanceof File?e.append(t,r,r.name):"undefined"!=typeof Blob&&r instanceof Blob?e.append(t,r):r instanceof Date?e.append(t,r.toISOString()):e.append(t,"object"==typeof r?JSON.stringify(r):String(r))}function xt(e){return e.replace(/["'[\],\s]+/g,"-").replace(/^-+|-+$/g,"")||"field"}function St(e,t,r){return{"aria-invalid":!!e||r["aria-invalid"],"aria-describedby":e?[r["aria-describedby"],xt(t)].filter(Boolean).join(" "):r["aria-describedby"]}}const Vt=n.forwardRef(({validate:e,eventToValue:t,initialValue:r,name:o,asProps:i,renderError:s,as:u,valueToProps:a,form:c,shouldUnregister:l,rules:d,validateDebounce:f,validateOnMount:m,valueAsNumber:y,valueAsDate:p,asyncAlways:h,disabled:g,delayError:v,mode:b,uncontrolled:k,...x},S)=>{const V=n.useRef(null),[w,E]=n.useState(0),{value:C,onChange:A,onBlur:F,error:O,name:M,disabled:D,focusRef:T}=at({name:o,form:c,initialValue:r,shouldUnregister:l,rules:d,validateDebounce:f,validateOnMount:m,delayError:v,disabled:g,asyncAlways:h,mode:b,uncontrolled:k||"file"===x.type,validate:(...t)=>{const r=V.current;if(!r||"function"!=typeof r.checkValidity||(r.setCustomValidity(""),!1!==r.checkValidity()))return e?e(...t):void 0;E(e=>e+1)}}),P=n.useCallback(e=>{V.current=e,T(e),function(e,t){"function"==typeof e?e(t):e&&(e.current=t)}(S,e)},[S,T]),j=u||"input";n.useEffect(()=>{const e=V.current;e&&"function"==typeof e.setCustomValidity&&("string"==typeof O?(e.setCustomValidity(O),e.reportValidity()):e.setCustomValidity(""))},[O]),n.useEffect(()=>{w>0&&V.current?.reportValidity()},[w]);const L="file"===x.type,B=t??(L?e=>e.target.files:y?e=>e.target.valueAsNumber:p?e=>e.target.valueAsDate:e=>e.target.value),R=a?a(C):L?{}:k?{defaultValue:C}:{value:C},N=xt(M),I=d?Ie(d):void 0;return n.createElement(n.Fragment,null,n.createElement(j,{...I,...x,name:M,onBlur:F,...i,...R,...St(O,M,x),disabled:D,onChange:e=>A(B(e)),ref:P}),O&&s?n.createElement("span",{id:N,role:"alert"},s(O,N)):null)}),wt=n.forwardRef(({name:e,form:t,initialValue:r,shouldUnregister:o,validate:i,rules:s,validateDebounce:u,validateOnMount:a,asyncAlways:c,disabled:l,delayError:d,mode:f,...m},y)=>{const{value:p,onChange:h,onBlur:g,error:v,name:b,disabled:k}=at({name:e,form:t,initialValue:r,shouldUnregister:o,validate:i,rules:s,validateDebounce:u,validateOnMount:a,asyncAlways:c,delayError:d,disabled:l,mode:f}),x=s?Ie(s):void 0;return n.createElement("input",{...x,...m,name:b,onBlur:g,type:"checkbox",checked:!!p,...St(v,b,m),disabled:k,onChange:e=>h(e.target.checked),ref:y})});function Et(e,t){return e?Array.isArray(t)?t:[]:t??""}const Ct=n.forwardRef(({name:e,multiple:t,children:r,form:o,initialValue:i,shouldUnregister:s,validate:u,rules:a,validateDebounce:c,validateOnMount:l,asyncAlways:d,disabled:f,delayError:m,mode:y,...p},h)=>{const{value:g,onChange:v,onBlur:b,error:k,name:x,disabled:S}=at({name:e,form:o,initialValue:i,shouldUnregister:s,validate:u,rules:a,validateDebounce:c,validateOnMount:l,asyncAlways:d,delayError:m,disabled:f,mode:y}),V=a?Ie(a):void 0;return n.createElement("select",{...V,...p,name:x,onBlur:b,multiple:t,value:Et(t,g),...St(k,x,p),disabled:S,onChange:e=>v(t?Array.from(e.target.selectedOptions,e=>e.value):e.target.value),ref:h},r)});exports.Checkbox=wt,exports.CheckboxGroupContext=vt,exports.CheckboxGroupProvider=bt,exports.FORM_ERROR=C,exports.Field=Vt,exports.Form=function({form:e,context:t,initialValues:r,values:o,shouldUnregister:i,validateOnMount:s,disabled:u,asyncAlways:a,onSubmit:c,onValidSubmit:l,onInvalidSubmit:d,action:f,shouldFocusError:m,...y}){const p=Ue({initialValues:r,values:o,shouldUnregister:i,validateOnMount:s,disabled:u,asyncAlways:a}),h=e||p;n.useEffect(()=>{void 0!==u&&Pe(h,u)},[h,u]);const g=Le(h,{onSubmit:c,onValidSubmit:l,onInvalidSubmit:d,shouldFocusError:m,onAction:f?e=>f(function(e){const t=new FormData;for(const r of Object.keys(e))kt(t,r,e[r]);return t}(e)):void 0}),{Provider:v}=t??ht;return n.createElement(v,{value:h},n.createElement("form",{...y,noValidate:!0,onSubmit:g}))},exports.FormContext=ht,exports.FormField=function({children:e,...t}){return e(at(t))},exports.FormProvider=gt,exports.Select=Ct,exports.VALIDATION_OUTCOME=A,exports.changeValue=function(e,t,r,n){Ee(e,y(t),r,n)},exports.changeValueByPath=Ee,exports.clearErrors=L,exports.createForm=Be,exports.createFormContext=function(){const e=t.createContext(null);return{context:e,FormProvider:function({form:r,children:n}){return t.createElement(e.Provider,{value:r},n)},useFormContext:function(){const r=t.useContext(e);if(!r)throw new Error("no form provided");return r},useField:function(t){return ut(t,e)},useFieldArray:function(t){return yt(t,e)},useFieldArrayItem:function(t){return pt(t,e)}}},exports.emitChangeByPath=Q,exports.ensureValidate=Se,exports.fieldErrorId=function(e){return xt(y(e).key)},exports.getDirtyFields=$,exports.getError=function(e,t){return F(e,y(t))},exports.getErrorByPath=F,exports.getErrors=D,exports.getFieldErrors=function(e,t){return M(e,y(t))},exports.getFieldErrorsByPath=M,exports.getFieldState=function(e,t){const r=y(t),{touched:n,validating:o}=e;return{value:G(e,r),error:F(e,r),errors:M(e,r),isDirty:R(e,r),isTouched:n.has(r.key),isValidating:o.has(r.key)}},exports.getFirstError=T,exports.getTouchedFields=J,exports.getValue=function(e,t){return G(e,y(t))},exports.getValueByPath=G,exports.getValues=z,exports.handleSubmit=Le,exports.hasErrors=B,exports.hasTouched=function(e,t){return U(e,y(t))},exports.hasTouchedByPath=U,exports.incrementSubmitCount=De,exports.isDirty=N,exports.isFieldDirtyByPath=R,exports.isTouched=function({touched:e}){return e.size>0},exports.registerFieldMode=Ce,exports.registerFieldValidateDeps=ve,exports.registerValidatorByPath=oe,exports.removeField=function(e,t,r){X(e,y(t),r)},exports.removeFieldByPath=X,exports.reset=function(t,r,n){const o=[];if(n?.keepValues)te(z(t),[],o);else if(n?.keepDirtyValues)for(const[e,r]of t.values){const n=JSON.parse(e);v(t,e,n)!==r&&o.push({segments:n,value:r})}t.initialValues=n?.keepDefaultValues?t.initialValues:r??t.initialValues,t.parsedValues=void 0,n?.keepErrors||L(t);const{emitter:i,touched:s,values:u,deleted:a,validating:c}=t;u.clear(),a.clear(),x(t),n?.keepTouched||s.clear(),c.clear(),n?.keepIsSubmitting||(t.isSubmitting=!1),n?.keepSubmitCount||(t.submitCount=0),n?.keepIsSubmitted||(t.isSubmitted=!1),n?.keepIsSubmitSuccessful||(t.isSubmitSuccessful=void 0),V(t),h(t);for(const{segments:e,value:r}of o)H(t,y(e),r);e.emit(i,"change"),e.emit(i,"touched"),e.emit(i,"validating"),e.emit(i,"submitting"),e.emit(i,"submitCount"),e.emit(i,"submitSuccessful"),e.emit(i,"reset")},exports.resetField=function(t,r,n){const o=y(r),{emitter:i,values:s,touched:c,errors:l,deleted:d}=t;if(s.delete(o.key),x(t,o.key),void 0!==t.parsedValues){t.parsedValues=a(t.parsedValues,o.value);const e=u(t.initialValues,o.value);void 0!==e&&s.set(o.key,e)}n&&"value"in n&&s.set(o.key,n.value),Z(d,o),e.emit(i,"change"),!n?.keepTouched&&c.delete(o.key)&&e.emit(i,"touched",o),!n?.keepErrors&&l.delete(o.key)&&e.emit(i,"errors",o),V(t),h(t)},exports.revalidateDependentsOnChange=ke,exports.revalidateFormOnChange=he,exports.runFormValidate=ye,exports.seedValueByPath=K,exports.setDisabled=Pe,exports.setError=P,exports.setErrorByPath=j,exports.setFocus=function(t,r,n){const{key:o}=y(r);n?e.emit(t.emitter,"focusError",o,n):e.emit(t.emitter,"focusError",o)},exports.setInitialValues=ee,exports.setIsSubmitting=Me,exports.setServerErrors=function(e,t,r){r?.keepExisting||L(e);for(const[r,n]of Object.entries(t))P(e,r,(Array.isArray(n)?n:[n]).map(e=>({type:"server",message:e})))},exports.setStatus=function(t,r){t.status=r,e.emit(t.emitter,"status")},exports.setSubmitSuccessful=Te,exports.setTouched=function(e,t){W(e,y(t))},exports.setTouchedByPath=W,exports.setValidatingByPath=ne,exports.setValue=function(e,t,r,n){H(e,y(t),r,n)},exports.setValueByPath=H,exports.subscribe=function(t,r){const{name:n,event:o="change",scope:i="branch",callback:s}=r;if(void 0===n)return e.on(t.emitter,o,s);const u=(function(e){return Array.isArray(e)&&e.every(e=>"number"!=typeof e)}(n)?n:[n]).map(e=>{const r=y(e);return"errors"===o||"touched"===o?We(t.emitter,o,r.key,s):$e(t.emitter,o,r,i,s)});return 1===u.length?u[0]:()=>u.forEach(e=>e())},exports.trigger=async function(t,r,n){const o=e=>m(t.emitter,"validating",()=>void 0===e?de(t):e.every(e=>!t.validating.has(e)),()=>!1);if(void 0===r){if(t.validators.forEach(e=>e()),await o(),t.validate&&await ye(t),n?.shouldTouch&&ie(t,[...t.validators.keys()]),n?.shouldFocus){const r=t.errors.keys().next().value;void 0!==r&&e.emit(t.emitter,"focusError",r)}return!B(t)}const i="string"==typeof r||w(r)?[y(r).key]:r.map(e=>y(e).key);if(i.forEach(e=>t.validators.get(e)?.()),await o(i),n?.shouldTouch&&ie(t,i),n?.shouldFocus){const r=i.find(e=>t.errors.has(e));void 0!==r&&e.emit(t.emitter,"focusError",r)}return i.every(e=>!t.errors.has(e))},exports.unregisterFieldMode=Ae,exports.unregisterFieldValidateDeps=be,exports.unsetValidatingByPath=re,exports.useCanSubmit=function(r){const{emitter:n}=r;return Je(t.useCallback(t=>{const r=e.on(n,"errors",t),o=e.on(n,"submitting",t);return()=>{r(),o()}},[n]),()=>!r.isSubmitting&&!B(r))},exports.useCheckboxGroupContext=function(){const e=t.useContext(vt);if(!e)throw new Error("no group provided");return e},exports.useDirtyFields=function(e){return ze(e,"change",$.bind(null,e))},exports.useError=function(e,t){return He(e,y(t))?.message},exports.useErrorByPath=He,exports.useField=at,exports.useFieldArray=function(e){return yt(e,ht)},exports.useFieldArrayItem=function(e){return pt(e,ht)},exports.useFieldErrors=function(e,t){return Ke(e,y(t))},exports.useFieldErrorsByPath=Ke,exports.useForm=Ue,exports.useFormContext=function(){const e=t.useContext(ht);if(!e)throw new Error("no form provided");return e},exports.useFormError=function(e){return He(e,y(C))?.message},exports.useFormErrors=function(e){return Ke(e,y(C))},exports.useFormState=function(r){const n=t.useCallback(()=>function(e){return{isDirty:N(e),dirtyFields:$(e),isTouched:e.touched.size>0,touchedFields:J(e),hasErrors:B(e),isValid:!B(e),isSubmitting:e.isSubmitting,isSubmitted:e.isSubmitted,isValidating:e.validating.size>0,isSubmitSuccessful:e.isSubmitSuccessful,submitCount:e.submitCount,isLoading:e.isLoading,disabled:e.disabled}}(r),[r]);return Je(t.useCallback(t=>{const n=Xe.map(n=>e.on(r.emitter,n,t));return()=>{for(const e of n)e()}},[r.emitter]),n,Ye)},exports.useHasErrors=function(e){return ze(e,"errors",B.bind(null,e))},exports.useIsDirty=function(e){return ze(e,"change",N.bind(null,e))},exports.useIsFieldDirty=function(e,t){return Qe(e,y(t))},exports.useIsFieldDirtyByPath=Qe,exports.useIsLoading=function(e){return ze(e,"loading",()=>e.isLoading)},exports.useIsSubmitSuccessful=function(e){return ze(e.emitter,"submitSuccessful",()=>!!e.isSubmitSuccessful)},exports.useIsSubmitting=function(e){return ze(e,"submitting",()=>e.isSubmitting)},exports.useIsValid=function(e){return ze(e,"errors",()=>!B(e))},exports.useIsValidating=function(e){return ze(e,"validating",()=>e.validating.size>0)},exports.useStatus=function(e){return ze(e,"status",()=>e.status)},exports.useSubmitCount=function(e){return ze(e,"submitCount",()=>e.submitCount)},exports.useTouched=function(e,t){return Ge(e,y(t))},exports.useTouchedByPath=Ge,exports.useTouchedFields=function(e){return ze(e,"touched",J.bind(null,e))},exports.useTransform=function(e,r,n={}){const o=Ze(r),{toDisplay:i,fromDisplay:s}=n,u=Je(t.useCallback(t=>$e(e.emitter,"change",o,"leaf",t),[e.emitter,o.key]),()=>G(e,o));return{value:i?i(u):u,onChange:t.useCallback(t=>{Fe(e,o,s?s(t):t)},[e,o,s])}},exports.useValue=function(e,t,r){return _e(e,y(t),r)},exports.useValueByPath=_e,exports.useWatch=ze,exports.useWatchCore=Je,exports.userBlur=Oe,exports.userChangeByPath=Fe,exports.validate=Ve;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|