react-hook-form
Version:
Performant, flexible and extensible forms library for React Hooks
3 lines (2 loc) • 47.2 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ReactHookForm={},e.React)}(this,function(e,t){"use strict";var r=e=>"checkbox"===e.type,s=e=>"file"===e.type,a=e=>e instanceof Date,n=e=>null==e;const i=e=>"object"==typeof e;var o=e=>!n(e)&&!Array.isArray(e)&&i(e)&&!a(e),l=e=>o(e)&&e.target?r(e.target)?e.target.checked:s(e.target)?e.target.files:e.target.value:e;const u=/[.[\]'"]/;var c=e=>e.split(u).filter(Boolean),d=(e,t)=>t.split(".").some((t,r,s)=>!isNaN(Number(t))&&e.has(s.slice(0,r).join("."))),f="undefined"!=typeof window&&void 0!==window.HTMLElement&&"undefined"!=typeof document;function m(e){if(null===e||"object"!=typeof e)return e;if(e instanceof Date)return new Date(e);const t="undefined"!=typeof Blob&&e instanceof Blob,r="undefined"!=typeof FileList&&e instanceof FileList;if(f&&(t||r))return e;const s=Array.isArray(e),a=Object.getPrototypeOf(e);if(!s&&a&&a.constructor!==Object)return e;const n=s?new Array(e.length):Object.create(a);for(const t in e)Object.prototype.hasOwnProperty.call(e,t)&&(n[t]=m(e[t]));return n}const y="blur",p="trigger",g="onChange",h="onSubmit",_="all",v="maxLength",b="minLength",V="pattern",A="required",F="validate",x=[A,"min","max",b,v,V,F],S="form",k="root",w=["__proto__","constructor","prototype"],O=/^\w*$/;var D=e=>O.test(e),E=e=>void 0===e,C=(e,t,r)=>{if(!t||!o(e))return r;const s=D(t)?[t]:c(t);if(s.some(e=>w.includes(e)))return r;const a=s.reduce((e,t)=>n(e)?void 0:e[t],e);return E(a)||a===e?E(e[t])?r:e[t]:a},j=e=>"boolean"==typeof e,R=e=>"function"==typeof e,N=(e,t,r)=>{let s=-1;const a=D(t)?[t]:c(t),n=a.length,i=n-1;for(;++s<n;){const t=a[s];let n=r;if(s!==i){const r=e[t];n=o(r)||Array.isArray(r)?r:isNaN(+a[s+1])?{}:[]}if(w.includes(t))return;e[t]=n,e=e[t]}};const L=t.createContext(null);L.displayName="HookFormControlContext";const M=()=>t.useContext(L);var T=(e,t,r,s=!0)=>{const a={};for(const n in e)Object.defineProperty(a,n,{get:()=>{const a=n;return t._proxyFormState[a]!==_&&(t._proxyFormState[a]=!s||_),r&&(r[a]=!0),e[a]}});return a};const U=f?t.useLayoutEffect:t.useEffect;var I=e=>n(e)||!i(e);const B=(e,t)=>0===t.length&&!Array.isArray(e)&&null!==Object.getPrototypeOf(e)&&!(e=>{const t=e.constructor&&e.constructor.prototype;return o(t)&&t.hasOwnProperty("isPrototypeOf")})(e);function $(e,t,r=!1,s=new WeakMap){if(e===t)return!0;if(I(e)||I(t))return Object.is(e,t);if(a(e)&&a(t))return Object.is(e.getTime(),t.getTime());if(Array.isArray(e)&&Array.isArray(t)&&e.length!==t.length)return!1;const n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!1;if(B(e,n)||B(t,i))return Object.is(e,t);if(!n.length&&Array.isArray(e)!==Array.isArray(t))return!1;const l=s.get(e);if(l&&l.has(t))return!0;if(l)l.add(t);else{const r=new WeakSet;r.add(t),s.set(e,r)}for(const i of n){const n=e[i];if(!Object.prototype.hasOwnProperty.call(t,i))return!1;if(!r||"ref"!==i){const e=t[i];if(a(n)&&a(e)||(o(n)||Array.isArray(n))&&(o(e)||Array.isArray(e))?!$(n,e,r,s):!Object.is(n,e))return!1}}return!0}function P(e){const r=t.useRef(!1),s=t.useRef(!1),a=t.useRef(void 0),n=t.useRef(0);return n.current++,!s.current&&e&&(s.current=!0,a.current=m(e())),{resyncIfNeeded:t.useCallback((e,t,i)=>{if(e&&(r.current||s.current&&n.current>1)){const e=t();$(a.current,e)||i(e)}r.current=!0},[]),snapshot:t.useCallback((e,t)=>{e&&(a.current=m(t()))},[])}}function W(e){const r=M(),{control:s=r,disabled:a,name:n,exact:i}=e||{},o=()=>({...s._formState,defaultValues:s._defaultValues}),[l,u]=t.useState(o),c=t.useRef({isDirty:!1,isLoading:!1,dirtyFields:!1,touchedFields:!1,validatingFields:!1,isValidating:!1,isValid:!1,errors:!1}),{resyncIfNeeded:d,snapshot:f}=P(o);return U(()=>{d(!a,o,u);const e=s._subscribe({name:n,formState:c.current,exact:i,callback:e=>{!a&&u({...s._formState,...e,defaultValues:s._defaultValues})}});return()=>{e(),f(!a,o)}},[s,n,a,i,d,f]),t.useEffect(()=>{c.current.isValid&&s._setValid(!0)},[s]),t.useMemo(()=>T(l,s,c.current,!1),[l,s])}var q=e=>"string"==typeof e,z=(e,t,r,s,a)=>q(e)?(s&&t.watch.add(e),C(r,e,a)):Array.isArray(e)?e.map(e=>(s&&t.watch.add(e),C(r,e,C(a,e)))):(s&&(t.watchAll=!0),r);function H(e){const r=M(),{control:s=r,name:a,defaultValue:n,disabled:i,exact:o,compute:l}=e||{},u=t.useRef(n),c=t.useRef(l),d=t.useRef(s),f=t.useRef(a);c.current=l;const y=()=>{const e=s._getWatch(a,u.current);return c.current?c.current(e):e},[p,g]=t.useState(y),h=t.useRef(p),_=t.useCallback(e=>{const t=z(a,s._names,e||s._formValues,!1,u.current);return c.current?c.current(t):t},[s._formValues,s._names,a]),v=t.useCallback(e=>{if(!i){const t=z(a,s._names,e||s._formValues,!1,u.current);if(c.current){const e=c.current(t);$(e,h.current)||(g(e),h.current=e)}else g(t)}},[s._formValues,s._names,i,a]),{resyncIfNeeded:b,snapshot:V}=P(y),A=t.useRef(v);A.current=v;const F=t.useRef(_);F.current=_,U(()=>{d.current===s&&$(f.current,a)?b(!i,()=>F.current(),e=>{const t=m(e);g(t),h.current=t}):(d.current=s,f.current=a,A.current());const e=s._subscribe({name:a,formState:{values:!0},exact:o,callback:e=>{A.current(e.values)}});return()=>{e(),V(!i,()=>F.current())}},[s,o,a,i,b,V]),t.useEffect(()=>s._removeUnmounted());const x=d.current!==s,S=f.current,k=t.useMemo(()=>!x&&!$(S,a),[x,a,S]);return(x||k)&&(u.current=n),i||!x&&!k?p:_()}function J(e){const r=M(),{name:s,disabled:a,control:n=r,shouldUnregister:i,defaultValue:o,exact:u=!0}=e,f=d(n._names.array,s),p=t.useMemo(()=>{const e=C(n._formValues,s,C(n._defaultValues,s,o));return E(e)?function(e,t){const r=c(t);let s=e._formValues,a=e._defaultValues;for(let e=0;e<r.length-1;e++){const t=r[e];if(s=null==s?s:s[t],a=null==a?a:a[t],null===s||null===a)return null}}(n,s):e},[n,s,o]),g=H({control:n,name:s,defaultValue:p,exact:u}),h=W({control:n,name:s,exact:u}),_=t.useRef(e),v=t.useRef(null),b=t.useRef(n.register(s,{...e.rules,value:g,...j(e.disabled)?{disabled:e.disabled}:{}}));_.current=e;const V=t.useMemo(()=>Object.defineProperties({},{invalid:{enumerable:!0,get:()=>!!C(h.errors,s)},isDirty:{enumerable:!0,get:()=>!!C(h.dirtyFields,s)},isTouched:{enumerable:!0,get:()=>!!C(h.touchedFields,s)},isValidating:{enumerable:!0,get:()=>!!C(h.validatingFields,s)},error:{enumerable:!0,get:()=>C(h.errors,s)}}),[h,s]),A=t.useCallback(e=>{const t=l(e);return C(n._fields,s)||(b.current=n.register(s,{..._.current.rules,value:t})),b.current.onChange({target:{value:l(e),name:s},type:"change"})},[s,n]),F=t.useCallback(()=>{const e=C(n._formValues,s);return C(n._fields,s)||(b.current=n.register(s,{..._.current.rules,value:e})),b.current.onBlur({target:{value:e,name:s},type:y})},[s,n]),x=t.useCallback(e=>{e&&(v.current={focus:()=>R(e.focus)&&e.focus(),select:()=>R(e.select)&&e.select(),setCustomValidity:t=>R(e.setCustomValidity)&&e.setCustomValidity(t),reportValidity:()=>R(e.reportValidity)&&e.reportValidity()});const t=C(n._fields,s);t&&t._f&&e&&(t._f.ref=v.current,t._f._c=!0)},[n._fields,s]),S=t.useMemo(()=>({name:s,value:g,...j(a)||h.disabled?{disabled:h.disabled||a}:{},onChange:A,onBlur:F,ref:x}),[s,a,h.disabled,A,F,x,g]);return t.useEffect(()=>{const e=n._options.shouldUnregister||i;b.current=n.register(s,{..._.current.rules,...j(_.current.disabled)?{disabled:_.current.disabled}:{}});const t=(e,t)=>{const r=C(n._fields,e);r&&r._f&&(r._f.mount=t,r._f._c=t)};if(t(s,!0),e){const e=m(C(i?n._defaultValues:n._options.values||n._defaultValues,s,C(n._options.defaultValues,s,_.current.defaultValue)));N(n._defaultValues,s,e),E(C(n._formValues,s))&&N(n._formValues,s,e)}if(!f&&n.register(s,{..._.current.rules,...j(_.current.disabled)?{disabled:_.current.disabled}:{}}),v.current){const e=C(n._fields,s);e&&e._f&&(e._f.ref=v.current)}return()=>{(f?e&&!n._state.action:e)?n.unregister(s):t(s,!1)}},[s,n,f,i]),t.useEffect(()=>{n._setDisabledField({disabled:a,name:s})},[a,s,n]),t.useMemo(()=>({field:S,formState:h,fieldState:V}),[S,h,V])}var G=()=>"undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}),K=(e,t,r={})=>r.shouldFocus||E(r.shouldFocus)?r.focusName||`${e}.${E(r.focusIndex)?t:r.focusIndex}.`:"",Q=e=>({isOnSubmit:!e||e===h,isOnBlur:"onBlur"===e,isOnChange:e===g,isOnAll:e===_,isOnTouch:"onTouched"===e}),X=(e,t,r)=>{if(r)return!1;if(t.watchAll||t.watch.has(e))return!0;for(const r of t.watch)if(e.startsWith(r)&&"."===e.charAt(r.length))return!0;return!1};const Y=(e,t,r)=>{for(const s of r||Object.keys(e)){if("_f"===s)continue;const a=r?C(e,s):e[s];if(a){const{_f:e}=a;if(e){if(e.refs&&e.refs[0]&&t(e.refs[0],e.name))return!0;if(e.ref&&t(e.ref,e.name))return!0;if(Y(a,t))return!0}else if((o(a)||Array.isArray(a))&&Y(a,t))return!0}}};var Z=(e,t,r)=>{const s=C(e,r),a=Array.isArray(s)?s:[];return N(a,k,t[r]),N(e,r,a),e},ee=e=>o(e)&&!Object.keys(e).length,te=e=>{if(!f)return!1;const t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},re=e=>"radio"===e.type,se=e=>e instanceof RegExp,ae=(e,t,r,s,a)=>t?{...r[e],types:{...r[e]&&r[e].types?r[e].types:{},[s]:a||!0}}:{};const ne={value:!1,isValid:!1},ie={value:!0,isValid:!0};var oe=e=>{if(!Array.isArray(e))return ne;if(e.length>1){const t=e.filter(e=>e&&e.checked&&!e.disabled).map(e=>e.value);return{value:t,isValid:!!t.length}}const t=e[0];return t&&t.checked&&!t.disabled?t.attributes&&"value"in t.attributes?E(t.value)||""===t.value?ie:{value:t.value,isValid:!0}:ie:ne};const le={isValid:!1,value:null};var ue=e=>Array.isArray(e)?e.reduce((e,t)=>t&&t.checked&&!t.disabled?{isValid:!0,value:t.value}:e,le):le;function ce(e,t,r="validate"){if(q(e)||Array.isArray(e)&&e.length&&e.every(q)||j(e)&&!e)return{type:r,message:q(e)?e:"",ref:t}}var de=e=>o(e)&&!se(e)?e:{value:e,message:""},fe=async(e,t,i,l,u,c)=>{const{ref:d,refs:f,required:m,maxLength:y,minLength:p,min:g,max:h,pattern:_,validate:x,name:S,valueAsNumber:k,mount:w,_c:O}=e._f,D=C(i,S);if(!w||t.has(S))return{};const N=f?f[0]:d,L=e=>{if(u&&N.reportValidity){const t=j(e)?"":e||"";f?f.forEach(e=>R(e.setCustomValidity)&&e.setCustomValidity(t)):N.setCustomValidity(t),N.reportValidity()}},M={},T=!O&&re(d),U=!O&&r(d),I=T||U,B=(k||s(d))&&E(d.value)&&E(D)||te(d)&&""===d.value&&!O||""===D||Array.isArray(D)&&!D.length,$=ae.bind(null,S,l,M),P=(e,t,r,s=v,a=b)=>{const n=e?t:r;M[S]={type:e?s:a,message:n,ref:d,...$(e?s:a,n)}};if(c?!Array.isArray(D)||!D.length:m&&(!I&&(B||n(D))||j(D)&&!D||U&&!oe(f).isValid||T&&!ue(f).isValid)){const{value:e,message:t}=q(m)?{value:!!m,message:m}:de(m);if(e&&(M[S]={type:A,message:t,ref:N,...$(A,t)},!l))return L(t),M}if(!(B||n(g)&&n(h))){let e,t;const r=de(h),s=de(g);if(n(D)||a(D)||isNaN(D)){const a=!O&&d.valueAsDate||new Date(D),n=e=>new Date((new Date).toDateString()+" "+e),i="time"==d.type,o="week"==d.type;q(r.value)&&D&&(e=i?n(D)>n(r.value):o?D>r.value:a>new Date(r.value)),q(s.value)&&D&&(t=i?n(D)<n(s.value):o?D<s.value:a<new Date(s.value))}else{const a=!O&&d.valueAsNumber||(D?+D:D);n(r.value)||(e=a>r.value),n(s.value)||(t=a<s.value)}if((e||t)&&(P(!!e,r.message,s.message,"max","min"),!l))return L(M[S].message),M}if((!n(y)||!n(p))&&!B&&(q(D)||c&&Array.isArray(D))){const e=de(y),t=de(p),r=!n(e.value)&&D.length>+e.value,s=!n(t.value)&&D.length<+t.value;if((r||s)&&(P(r,e.message,t.message),!l))return L(M[S].message),M}if(_&&!B&&q(D)){const{value:e,message:t}=de(_);if(se(e)&&!D.match(e)&&(M[S]={type:V,message:t,ref:d,...$(V,t)},!l))return L(t),M}if(x)if(R(x)){const e=ce(await x(D,i),N);if(e&&(M[S]={...e,...$(F,e.message)},!l))return L(e.message),M}else if(o(x)){let e={};for(const t in x){if(!ee(e)&&!l)break;const r=ce(await x[t](D,i),N,t);r&&(e={...r,...$(t,r.message)},l||L(r.message),l&&(M[S]=e))}if(!ee(e)&&(M[S]={ref:N,...e},!l))return M}const W=M[S];return L(!W||W.message),M},me=e=>Array.isArray(e)?e:[e],ye=(e,t)=>[...e,...me(t)],pe=e=>Array.isArray(e)?e.map(()=>{}):void 0;function ge(e,t,r){return[...e.slice(0,t),...me(r),...e.slice(t)]}var he=(e,t,r)=>Array.isArray(e)?(E(e[r])&&(e[r]=void 0),e.splice(r,0,e.splice(t,1)[0]),e):[],_e=(e,t)=>[...me(t),...me(e)],ve=e=>Array.isArray(e)?e.filter(Boolean):[],be=(e,t)=>E(t)?[]:function(e,t){let r=0;const s=[...e];for(const e of t)s.splice(e-r,1),r++;return ve(s).length?s:[]}(e,[...new Set(me(t))].sort((e,t)=>e-t)),Ve=(e,t,r)=>{[e[t],e[r]]=[e[r],e[t]]};function Ae(e,t){if(q(t)&&Object.prototype.hasOwnProperty.call(e,t))return delete e[t],e;const r=Array.isArray(t)?t:D(t)?[t]:c(t);if(r.some(e=>w.includes(String(e))))return e;const s=1===r.length?e:function(e,t){const r=t.length-1;let s=0;for(;s<r;){if(n(e)){e=void 0;break}e=e[t[s]],s++}return e}(e,r),a=r.length-1,i=r[a];return s&&delete s[i],0!==a&&(o(s)&&ee(s)||Array.isArray(s)&&function(e){for(const t in e)if(e.hasOwnProperty(t)&&!E(e[t]))return!1;return!0}(s))&&Ae(e,r.slice(0,-1)),e}var Fe=(e,t,r)=>(e[t]=r,e);function xe(e){const r=M(),{control:s=r,name:a,keyName:n="id",disabled:i,shouldUnregister:l,rules:u}=e,c=()=>s._getFieldArray(a),[d,f]=t.useState(c),y=t.useRef(s._getFieldArray(a).map(G)),p=t.useRef(!1),{resyncIfNeeded:g,snapshot:h}=P(c),v=t.useRef(s),b=t.useRef(a);i||s._names.array.add(a),t.useMemo(()=>!i&&u&&d&&s.register(a,u),[s,a,d,u,i]),U(()=>{if(i)return;if(v.current===s&&b.current===a)g(!0,c,e=>{f(e),y.current=e.map(G)});else{v.current=s,b.current=a;const e=c();$(d,e)||(f(e),y.current=e.map(G)),h(!0,c)}const e=s._subjects.array.subscribe({next:({values:e,name:t})=>{if(t===a||!t){const r=C(e,a);Array.isArray(r)?(f(r),y.current=r.map(G)):t||(f([]),y.current=[])}}}).unsubscribe;return()=>{e(),h(!0,c)}},[s,a,i,g,h]);const V=t.useCallback(e=>{p.current=!0,s._setFieldArray(a,e)},[s,a]);return t.useEffect(()=>{if(i)return void s._state.actionArrayLengths.delete(a);s._state.action=!1,s._state.actionArrayLengths.delete(a),X(a,s._names)&&s._subjects.state.next({...s._formState});const e=Q(s._options.mode),t=Q(s._options.reValidateMode);if(p.current&&(!e.isOnSubmit||s._formState.isSubmitted)&&!t.isOnSubmit&&(!e.isOnBlur||s._formState.isSubmitted&&t.isOnChange)){const e=C(s._formValues,a);if(s._options.resolver)s._runSchema([a]).then(t=>{if(s._updateIsValidating([a]),e!==C(s._formValues,a))return;const r=C(t.errors,a),n=C(s._formState.errors,a),i=n&&(n.type||n.root&&n.root.type),l=n&&(n.message||n.root&&n.root.message);(n?!r&&i||r&&(i!==r.type||l!==r.message):r&&r.type)&&(r?o(r)&&!Object.keys(r).some(e=>!Number.isNaN(+e))?Z(s._formState.errors,{[a]:r},a):N(s._formState.errors,a,r):Ae(s._formState.errors,a),s._formState.errors={...s._formState.errors},s._subjects.state.next({errors:s._formState.errors}))});else{const t=C(s._fields,a);t&&t._f&&fe(t,s._names.disabled,s._formValues,s._options.criteriaMode===_,s._options.shouldUseNativeValidation,!0).then(t=>{if(e===C(s._formValues,a))if(ee(t)){const e=C(s._formState.errors,a);e&&e[k]&&(Ae(s._formState.errors,`${a}.${k}`),s._formState.errors={...s._formState.errors},s._subjects.state.next({errors:s._formState.errors}))}else Z(s._formState.errors,t,a),s._formState.errors={...s._formState.errors},s._subjects.state.next({errors:s._formState.errors})})}}p.current&&s._subjects.state.next({name:a,values:m(s._formValues)}),s._names.focus&&Y(s._fields,(e,t)=>{if(s._names.focus&&t.startsWith(s._names.focus)&&e.focus)return e.focus(),1}),s._names.focus="",s._setValid(),p.current=!1},[d,a,s,i]),t.useEffect(()=>(i||E(C(s._formValues,a))&&s._setFieldArray(a),()=>{if(s._state.actionArrayLengths.delete(a),s._state.actionArrayLengths.size||(s._state.action=!1),i)return;const e=!(s._options.shouldUnregister||l);p.current&&e&&s._subjects.state.next({name:a,values:m(s._formValues)}),!e&&s._state.action&&[...s._state.actionArrayLengths.keys()].some(e=>a.startsWith(e+"."))||(e?(e=>{const t=C(s._fields,e);t&&t._f&&(t._f.mount=!1)})(a):s.unregister(a))}),[a,s,n,l,i]),{swap:t.useCallback((e,t)=>{if(i)return;const r=s._getFieldArray(a);Ve(r,e,t),Ve(y.current,e,t),V(r),f(r),s._setFieldArray(a,r,Ve,{argA:e,argB:t},!1)},[V,a,s,i]),move:t.useCallback((e,t)=>{if(i)return;const r=s._getFieldArray(a);he(r,e,t),he(y.current,e,t),V(r),f(r),s._setFieldArray(a,r,he,{argA:e,argB:t},!1)},[V,a,s,i]),prepend:t.useCallback((e,t)=>{if(i)return;const r=me(m(e)),n=_e(s._getFieldArray(a),r);s._names.focus=K(a,0,t),y.current=_e(y.current,r.map(G)),V(n),f(n),s._setFieldArray(a,n,_e,{argA:pe(e)})},[V,a,s,i]),append:t.useCallback((e,t)=>{if(i)return;const r=me(m(e)),n=ye(s._getFieldArray(a),r);s._names.focus=K(a,n.length-1,t),y.current=ye(y.current,r.map(G)),V(n),f(n),s._setFieldArray(a,n,ye,{argA:pe(e)})},[V,a,s,i]),remove:t.useCallback(e=>{if(i)return;const t=be(s._getFieldArray(a),e);y.current=be(y.current,e),V(t),f(t),!Array.isArray(C(s._fields,a))&&N(s._fields,a,void 0),s._setFieldArray(a,t,be,{argA:e})},[V,a,s,i]),insert:t.useCallback((e,t,r)=>{if(i)return;const n=me(m(t)),o=ge(s._getFieldArray(a),e,n);s._names.focus=K(a,e,r),y.current=ge(y.current,e,n.map(G)),V(o),f(o),s._setFieldArray(a,o,ge,{argA:e,argB:pe(t)})},[V,a,s,i]),update:t.useCallback((e,t)=>{if(i)return;const r=m(t),n=Fe(s._getFieldArray(a),e,r);y.current=[...n].map((t,r)=>t&&r!==e?y.current[r]:G()),V(n),f([...n]),s._setFieldArray(a,n,Fe,{argA:e,argB:pe(t)})},[V,a,s,i]),replace:t.useCallback(e=>{if(i)return;const t=me(m(e));y.current=t.map(G),V([...t]),f([...t]),s._setFieldArray(a,[...t],e=>Array.isArray(e)?e.slice(0,t.length):e,{})},[V,a,s,i]),fields:t.useMemo(()=>d.map((e,t)=>({...e,...j(i)?{disabled:i}:{},[n]:y.current[t]||G()})),[d,n,i])}}const Se=e=>"undefined"!=typeof Blob&&e instanceof Blob||"undefined"!=typeof File&&e instanceof File,ke=e=>"undefined"!=typeof FileList&&e instanceof FileList,we=e=>{const t={};for(const r of Object.keys(e))if(!i(e[r])||null===e[r]||a(e[r])||Se(e[r])||ke(e[r]))t[r]=e[r];else{const s=we(e[r]);for(const e of Object.keys(s))t[`${r}.${e}`]=s[e]}return t};function Oe(){}const De="post";function Ee(e){return e>=200&&e<300}const Ce=({control:e,disabled:t,exact:r,name:s,render:a})=>a(W({control:e,name:s,disabled:t,exact:r})),je=Ce;var Re=()=>{let e=new Set,t=0;return{get observers(){return Array.from(e)},next:r=>{const s=e;t++;for(const e of s)e.next&&e.next(r);s===e&&t--},subscribe:r=>(e.add(r),{unsubscribe:()=>{t&&(e=new Set(e),t=0),e.delete(r)}}),unsubscribe:()=>{e=new Set,t=0}}};function Ne(e,t){const r=Array.isArray(e)?[]:{};for(const s in e)if(Object.prototype.hasOwnProperty.call(e,s)){const a=e[s],n=t[s];a&&(o(a)||Array.isArray(a))&&n?r[s]=Ne(a,n):e[s]&&(r[s]=n)}return r}const Le=(e,t)=>null!==e&&i(e)&&Object.prototype.hasOwnProperty.call(e,t);var Me=(e,t)=>{if(!t)return!1;let r=e;for(const s of D(t)?[t]:c(t)){if(!Le(r,s))return Le(e,t);r=r[s]}return!0},Te=e=>"select-multiple"===e.type,Ue=e=>te(e)&&e.isConnected;function Ie(e){return Array.isArray(e)||o(e)}function Be(e,t,r="",s=[]){for(const a in e){const n=r?`${r}.${a}`:a,i=e[a];Ie(i)&&Ie(C(t,n))?Be(i,t,n,s):s.push(n)}return s}function $e(e){return Array.isArray(e)||o(e)&&!(e=>{for(const t in e)if(R(e[t]))return!0;return!1})(e)}function Pe(e){return!(!e||!("_f"in e))}function We(e){return Array.isArray(e)?!e.some(e=>!E(e)):!Object.keys(e).length}function qe(e,t){Array.isArray(e)?e[t]=void 0:delete e[t]}function ze(e,t={},r){for(const s in e){const a=e[s],n=r&&r[s];!$e(a)||Array.isArray(a)&&Pe(n)?E(a)||(t[s]=!0):(t[s]=Array.isArray(a)?[]:{},ze(a,t[s],n),We(t[s])&&qe(t,s))}return t}function He(e,t,r,s){r||(r=ze(t,Array.isArray(n(t)?e:t)?[]:{},s));for(const a in e){const i=e[a],o=s&&s[a];!$e(i)||Array.isArray(i)&&Pe(o)?$(i,n(t)?void 0:t[a])?qe(r,a):r[a]=!0:(E(t)||I(r[a])?r[a]=ze(i,Array.isArray(i)?[]:{},o):He(i,n(t)?{}:t[a],r[a],o),We(r[a])&&qe(r,a))}return r}var Je=(e,{valueAsNumber:t,valueAsDate:r,setValueAs:s})=>E(e)?e:t?""===e?NaN:e?+e:e:r&&q(e)?new Date(e):s?s(e):e;function Ge(e){const t=e.ref;return s(t)?t.files:re(t)?ue(e.refs).value:Te(t)?[...t.selectedOptions].map(({value:e})=>e):r(t)?oe(e.refs).value:Je(t.value,e)}var Ke=e=>E(e)?e:se(e)?e.source:o(e)?se(e.value)?e.value.source:e.value:e;const Qe="AsyncFunction";var Xe=e=>{if(!e||!e.validate)return!1;if(R(e.validate))return e.validate.constructor.name===Qe;if(o(e.validate))for(const t in e.validate)if(e.validate[t].constructor.name===Qe)return!0;return!1};function Ye(e,t,r){const s=C(e,r);if(s&&(s.type||s.message)||Array.isArray(s))return{error:s,name:r};const a=r.split(".");for(;a.length;){const s=a.join("."),n=C(t,s),i=C(e,s);if(n&&!Array.isArray(n)&&r!==s)return{name:r};if(i&&i.type)return{name:s,error:i};if(i&&i.root&&i.root.type)return{name:`${s}.root`,error:i.root};a.pop()}return{name:r}}const Ze=(e,t,r)=>r?e===t||e.startsWith(t+"."):e.startsWith(t)||t.startsWith(e);var et=(e,t,r)=>{if(!e||!t||e===t)return!0;if(!Array.isArray(e))return Ze(e,t,r);for(const s of e)if(s&&Ze(s,t,r))return!0;return!1};const tt={mode:h,reValidateMode:g,shouldFocusError:!0},rt={submitCount:0,isDirty:!1,isReady:!1,isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{}};function st(e={}){let t={...tt,...e},i={...m(rt),isLoading:R(t.defaultValues),errors:m(t.errors)||{},disabled:t.disabled||!1},u={},g=(o(t.defaultValues)||o(t.values))&&m(t.defaultValues||t.values)||{},h=t.shouldUnregister?{}:m(g),v={action:!1,actionArrayLengths:new Map,mount:!1,watch:!1,keepIsValid:!1},b=!1,V={mount:new Set,disabled:new Set,unMount:new Set,array:new Set,watch:new Set,registerName:new Set};const A={},w={},O=new Set;let L=Q(t.mode),M=Q(t.reValidateMode);const T={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},U={...T},I={},B=(...e)=>e.some(e=>U[e]||I[e]),P=e=>{for(const t of O)if(et(t.name,e,t.exact))return!0;return!1},W={array:Re(),state:Re()};let H=0,J=0,G=0;const K={};let se=t.criteriaMode===_;const ae=(e,t)=>r=>{clearTimeout(w[e]),w[e]=setTimeout(t,r)},ne=e=>{clearTimeout(w[e]),delete w[e],delete A[e]},ie=e=>{ne(e);const t=`${e}.`;for(const e of Object.keys(A))e.startsWith(t)&&ne(e)},oe=async e=>{if(!v.keepIsValid&&!t.disabled&&(B("isValid")||e)){const e=++H;let r;t.resolver?(r=ee((await he()).errors),e===H&&ue()):r=await be({fields:u,onlyCheckValid:!0,eventType:"valid"}),e===H&&r!==i.isValid&&W.state.next({isValid:r})}},le=(e,t)=>{const r=[...e];if(!r.some(e=>e&&(t?!0!==C(i.validatingFields,e):Me(i.validatingFields,e))))return;const s=m(i.validatingFields);for(const e of r)e&&(t?N(s,e,!0):Ae(s,e));$(i.validatingFields,s)||(i.validatingFields=s)},ue=(e,r)=>{!t.disabled&&B("isValidating","validatingFields")&&(le(e||V.mount,r),W.state.next({validatingFields:i.validatingFields,isValidating:!ee(i.validatingFields)}))},ce=()=>{i.dirtyFields=He(g,h,void 0,u)},de=(e,t)=>{N(i.errors,e,t),i.errors={...i.errors},W.state.next({errors:i.errors})},ye=e=>D(e)?[e]:c(e),pe=(e,s,a,o)=>{const l=C(u,e);if(l){if((e=>{const t=ye(e);let r=h,s=g;for(let e=0;e<t.length-1;e++){const a=t[e];if(r=n(r)?r:r[a],s=n(s)?s:s[a],null===r&&null!==s)return!0}return!1})(e)||(e=>{if(!v.actionArrayLengths.size)return!1;const t=ye(e);let r=h,s="",a=-1,i=0;for(let e=0;e<t.length;e++){if(n(r))return!1;const o=t[e];if(s=s?`${s}.${o}`:o,Array.isArray(r)&&+o>=r.length)return-1!==a&&(e!==a||+o<i);if(v.actionArrayLengths.has(s)&&(a=e+1,i=v.actionArrayLengths.get(s)),r=r[o],E(r)&&-1!==a&&e>a&&+t[a]<i)return!0}return!1})(e))return;const u=E(C(h,e)),c=C(h,e,E(a)?C(g,e):a),d=!!o&&!i.isReady&&(e=>r(e)?e.checked!==e.defaultChecked:"select-one"===e.type||Te(e)?(e=>{const t=[...e.options];return!e.multiple&&e.size<2&&!t.some(e=>e.defaultSelected)?e.selectedIndex!==t.findIndex(e=>!e.disabled):t.some(e=>e.selected!==e.defaultSelected)})(e):!re(e)&&"defaultValue"in e&&e.value!==e.defaultValue)(o);if(E(c)||o&&o.defaultChecked||d||s){const t=s?c:Ge(l._f);E(t)&&(e=>{let t=h;for(const r of ye(e)){if(Array.isArray(t)&&+r>=t.length)return!0;t=t&&t[r]}return!1})(e)||(B("dirtyFields")&&!$(C(h,e),t)&&(b=!0),N(h,e,t),d&&ge(e,t))}else xe(e,c);v.mount&&!v.action&&(t.resolver&&B("isValidating","validatingFields")?Promise.resolve().then(()=>oe()):oe(),u&&i.isDirty&&B("isDirty")&&(Ve()||(i.isDirty=!1,W.state.next({...i}))),t.shouldUnregister&&u&&!E(C(h,e))&&X(e,V)&&(v.watch=!0))}},ge=(e,r,s,a,n)=>{let l=!1,c=!1;const d={name:e};if(!t.disabled||!0===a){if(!s||a){const t=$(C(g,e),r);if(B("isDirty")&&(c=i.isDirty,i.isDirty=d.isDirty=!t||Ve(),l=c!==d.isDirty),c=!!C(i.dirtyFields,e),t)Ae(i.dirtyFields,e);else{const t=C(g,e),s=C(u,e),a=!!(s&&s._f||!o(t)&&!Array.isArray(t))||He(t,r,void 0,s);N(i.dirtyFields,e,a)}let s=!1;if(b||t&&(B("isDirty")?i.isDirty:Ve())){b=!1;const e=He(g,h,void 0,u);$(i.dirtyFields,e)||(s=!0,((e,t)=>{for(const t in e)delete e[t];Object.assign(e,t)})(i.dirtyFields,e))}d.dirtyFields=i.dirtyFields,l=l||B("dirtyFields")&&(s||c!==!t)}if(s){const t=Me(i.touchedFields,e)?C(i.touchedFields,e):void 0;t||(N(i.touchedFields,e,s),d.touchedFields=i.touchedFields,l=l||B("touchedFields")&&t!==s)}l&&n&&W.state.next(d)}return l?d:{}},he=async e=>(ue(e,!0),await t.resolver(h,t.context,((e,t,r,s)=>{const a={};for(const r of e){const e=C(t,r);e&&N(a,r,e._f)}return{criteriaMode:r,names:[...e],fields:a,shouldUseNativeValidation:s}})(e||V.mount,u,t.criteriaMode,t.shouldUseNativeValidation))),_e=async({name:e,eventType:r})=>{if(t.validate){const s=J,a=await t.validate({formValues:h,formState:i,name:e,eventType:r});if(s!==J)return!0;if(o(a)){let e=!0;je(S);for(const t in a){const r=a[t];r&&(e=!1,Le(`${S}.${t}`,{message:q(r.message)?r.message:"",type:r.type||F}))}return e}return q(a)||!a?(Le(S,{message:a||"",type:F}),!1):(je(S),!0)}return!0},be=async({fields:e,onlyCheckValid:r,name:s,eventType:a,context:n={valid:!0,runRootValidation:!1}})=>{const o=J;if(t.validate&&!n.runRootValidation&&(n.runRootValidation=!0,!await _e({name:s,eventType:a})&&(n.valid=!1,r)))return n.valid;for(const s in e){const l=e[s];if(l){const{_f:e,...c}=l;if(e){const s=V.array.has(e.name),a=l._f&&Xe(l._f),c=B("isValidating","validatingFields");a&&c&&ue([e.name],!0);const d=G,f=await fe(l,V.disabled,h,se,t.shouldUseNativeValidation&&!r,s);if(o!==J)return n.valid;if(a&&c&&ue([e.name]),!C(u,e.name)||K[e.name]>d)continue;if(f[e.name]&&(n.valid=!1,r))break;if(r||(ne(e.name),C(f,e.name)?s?Z(i.errors,f,e.name):N(i.errors,e.name,f[e.name]):Ae(i.errors,e.name)),t.shouldUseNativeValidation&&f[e.name])break}!ee(c)&&await be({context:n,onlyCheckValid:r,fields:c,name:s,eventType:a})}}return n.valid},Ve=(e,t)=>(e&&!E(t)&&N(h,e,t),!$(v.mount?h:g,g)),Fe=(e,t,r)=>{const s=v.mount?h:E(t)||!E(e)?g:t;return z(e,V,E(e)?{...s}:s,r,t)},xe=(e,t,a={},i=!1,o=!1,l=!1)=>{const c=C(u,e);let d=t;if(c){const a=c._f;a&&(!a.disabled&&N(h,e,Je(t,a)),d=te(a.ref)&&n(t)?"":t,Te(a.ref)?[...a.ref.options].forEach(e=>e.selected=d.includes(e.value)):a.refs?r(a.ref)?a.refs.forEach(e=>{e.defaultChecked&&e.disabled||(Array.isArray(d)?e.checked=!!d.find(t=>t===e.value):e.checked=d===e.value||!!d)}):a.refs.forEach(e=>e.checked=e.value===d):s(a.ref)?a.ref.value="":(a.ref.value=d,a.ref.type||o||l||W.state.next({name:e,values:i?h:P(e)?m(h):void 0})))}(a.shouldDirty||a.shouldTouch)&&ge(e,c&&c._f&&!c._f.disabled&&(c._f.valueAsNumber||c._f.valueAsDate||c._f.setValueAs)?Je(t,c._f):d,a.shouldTouch,a.shouldDirty,!o),a.shouldValidate&&Ee(e,{delayError:a.delayError}),a.shouldValidate&&c&&c._f&&c._f.deps&&(!Array.isArray(c._f.deps)||c._f.deps.length>0)&&Ee(c._f.deps)},Se=(e,t,r,s=!1,n=!1,i=!1)=>{for(const l in t){if(!Object.prototype.hasOwnProperty.call(t,l))continue;const c=t[l],d=e+"."+l,f=C(u,d);V.array.has(d)&&W.array.next({name:d,values:s?h:m(h)}),(V.array.has(e)||o(c)||f&&!f._f)&&!a(c)?Se(d,c,r,s,n,i):xe(d,c,r,s,n,i)}},ke=(e,t,r,s,a=!1)=>{const o=C(u,e),l=V.array.has(e),c=s?t:m(t),d=$(C(h,e),c);if(d||N(h,e,c),l)W.array.next({name:e,values:s?h:m(h)}),B("isDirty","dirtyFields")&&r.shouldDirty&&(ce(),i.isDirty=Ve(e,c),a||W.state.next({name:e,dirtyFields:i.dirtyFields,isDirty:i.isDirty})),r.shouldValidate&&Ee(e,{delayError:r.delayError});else{const t=Array.isArray(c)&&!c.length||ee(c),i=!d&&!a;!o||o._f||n(c)||t?xe(e,c,r,s,a,i):Se(e,c,r,s,a,i)}if(!d&&!a){const t=X(e,V),r=v.mount||t?e:void 0,a=l?[]:((e,t)=>{const r=t.split("."),s=[];let a=r[0];for(let t=1;t<r.length;a+="."+r[t++])!isNaN(+r[t])&&e.has(a)&&s.push(`${a}.${r[t]}`);return s})(V.array,e),n=s?h:P(r)||a.some(P)?m(h):void 0;W.state.next({...t&&i,name:r,values:n});for(const e of a)W.state.next({name:e,values:n})}},we=(e,t,r={})=>ke(e,t,r,!1),Oe=async e=>{v.mount=!0;const r=e.target;let s=r.name,a=!0;const n=C(u,s),o=G,c=e=>{a=!!C(u,s)&&!(K[s]>o)&&$(e,C(h,s,e))};if(n){let o,f;v.keepIsValid=!1;let p=!1;const g=r.type?Ge(n._f):l(e),_=e.type===y||"focusout"===e.type,b=!((d=n._f).mount&&(d.required||!E(d.required)&&!1!==d.required||!E(d.min)||!E(d.max)||!E(d.maxLength)||!E(d.minLength)||d.pattern||d.validate)||t.validate||t.resolver||C(i.errors,s)||n._f.deps),F=b||((e,t,r,s,a)=>!a.isOnAll&&(!r&&a.isOnTouch?!(t||e):(r?s.isOnBlur:a.isOnBlur)?!e:!(r?s.isOnChange:a.isOnChange)||e))(_,C(i.touchedFields,s),i.isSubmitted,M,L),x=X(s,V,_);N(h,s,m(g)),_?r&&r.readOnly||(n._f.onBlur&&n._f.onBlur(e),Object.prototype.hasOwnProperty.call(A,s)&&(p=!0,A[s](0))):n._f.onChange&&n._f.onChange(e);const S=ge(s,g,_),k=!ee(S)||x;if(!_&&W.state.next({name:s,type:e.type,...P(s)?{values:m(h)}:{}}),F)return b&&i.isValid||!B("isValid")||("onBlur"===t.mode?_&&oe():_||oe()),k&&W.state.next({name:s,...x?{}:S});if(!t.resolver&&t.validate&&await _e({name:s,eventType:e.type}),!_&&x&&W.state.next({...i}),t.resolver){const e=J,{errors:t}=await he([s]);if(e!==J)return;if(ue([s]),c(g),!a)return void(!ee(S)&&W.state.next(S));const r=Ye(i.errors,u,s),n=Ye(t,u,r.name||s);o=n.error,s=n.name,f=ee(t)}else{const r=J,i=++H;if(ue([s],!0),o=(await fe(n,V.disabled,h,se,t.shouldUseNativeValidation))[s],r!==J)return;if(ue([s]),c(g),a)if(o)f=!1;else if(B("isValid")){if(f=await be({fields:u,onlyCheckValid:!0,name:s,eventType:e.type}),r!==J)return;c(g),i!==H&&(f=void 0)}}a&&(n._f.deps&&(!Array.isArray(n._f.deps)||n._f.deps.length>0)&&Ee(n._f.deps),((e,r,s,a)=>{const n=C(i.errors,e),o=B("isValid")&&j(r)&&i.isValid!==r;if(t.delayError&&s?(A[e]=ae(e,()=>de(e,s)),A[e](t.delayError)):(ne(e),s?N(i.errors,e,s):Ae(i.errors,e),i.errors={...i.errors}),(s?!$(n,s,!0):n)||!ee(a)||o){const t={...a,...o&&j(r)?{isValid:r}:{},errors:i.errors,name:e};W.state.next(t)}})(s,f,o,S),p&&Object.prototype.hasOwnProperty.call(A,s)&&A[s](0))}var d},De=(e,t)=>{if(C(i.errors,t)&&e.focus)return e.focus(),1},Ee=async(e,r={})=>{let s,a;v.keepIsValid=!1;const n=me(e),l=J;if(t.resolver){const t=await(async e=>{const t=J,r=G,s=e?e.filter(e=>C(u,e)):[],{errors:a}=await he(e);if(t!==J)return a;if(ue(e),e){for(const t of e){if(s.includes(t)&&(!C(u,t)||K[t]>r)){Ae(a,t);continue}const e=C(a,t);ie(t);const n=V.array.has(t)&&o(e)&&!Object.keys(e).some(e=>!Number.isNaN(Number(e))),l=C(u,t),c=o(l)&&Object.keys(l).some(e=>"_f"!==e);n?Z(i.errors,{[t]:e},t):e&&(e.type||e.message)||Array.isArray(e)||o(e)&&c?N(i.errors,t,e):Ae(i.errors,t)}i.errors={...i.errors}}else Object.keys(A).forEach(ne),i.errors=a;return a})(E(e)?e:n);s=ee(t),a=e?!n.some(e=>C(t,e)):s}else e?(a=(await Promise.all(n.map(async e=>{const t=C(u,e);return await be({fields:t&&t._f?{[e]:t}:t,eventType:p})}))).every(Boolean),(a||i.isValid)&&oe()):a=s=await be({fields:u,name:e,eventType:p});if(l!==J)return a;if(r.delayError&&t.delayError&&q(e)){const r=C(i.errors,e);r?(Ae(i.errors,e),A[e]=ae(e,()=>de(e,r)),A[e](t.delayError)):ne(e)}if(r.shouldTouch)for(const t of e?n:V.mount)!V.array.has(t)&&N(i.touchedFields,t,!0);return i.errors={...i.errors},W.state.next({...!q(e)||B("isValid")&&s!==i.isValid?{}:{name:e},...t.resolver||!e?{isValid:s}:{},...r.shouldTouch&&B("touchedFields")?{touchedFields:i.touchedFields}:{},errors:i.errors}),r.shouldFocus&&!a&&Y(u,De,e?n:V.mount),a},Ce=(e,t)=>{const r=t||i,s=C(r.errors,e);return{invalid:!!s,isDirty:!!C(r.dirtyFields,e),error:s,isValidating:!!C(r.validatingFields,e),isTouched:!!C(r.touchedFields,e)}},je=e=>{const t=e?me(e):void 0;t?t.forEach(e=>{ie(e),Ae(i.errors,e),i.errors={...i.errors},W.state.next({name:e,errors:i.errors})}):(Object.keys(A).forEach(ne),i.errors={},W.state.next({errors:i.errors}))},Le=(e,t,r)=>{ie(e);const s=C(u,e,{_f:{}}),a=s._f&&s._f.ref,n=C(i.errors,e)||{},{ref:o,message:l,type:c,types:d,...f}=n;N(i.errors,e,{...f,...t,ref:a}),i.errors={...i.errors},W.state.next({name:e,errors:i.errors,isValid:!1}),r&&r.shouldFocus&&a&&a.focus&&a.focus()},Ie=e=>{const t={name:e.name,exact:e.exact};e.formState&&e.formState.values&&O.add(t);const{unsubscribe:r}=W.state.subscribe({next:t=>{if(et(e.name,t.name,e.exact)&&((e,t,r)=>{const s=Object.keys(e).filter(e=>"name"!==e);return!s.length||r&&s.length>=Object.keys(t).length||s.find(e=>t[e]===(!r||_))})(t,e.formState||U,e.reRenderRoot)){const r=t.values||{...h};e.callback({...i,...t,validatingFields:i.validatingFields,isValidating:i.isValidating,values:r,defaultValues:g})}}});return()=>{O.delete(t),r()}},$e=(e,r={})=>{const s=e?me(e):V.mount;r.keepIsValidating||le(s);for(const e of s)V.mount.delete(e),V.array.delete(e),V.disabled.delete(e),Ae(u,e),!r.keepValue&&Ae(h,e),r.keepError||(ie(e),Ae(i.errors,e)),!r.keepDirty&&Ae(i.dirtyFields,e),!r.keepTouched&&Ae(i.touchedFields,e),!t.shouldUnregister&&!r.keepDefaultValue&&Ae(g,e);r.keepError||(i.errors={...i.errors}),O.size&&W.state.next({values:m(h)}),W.state.next({...i,...r.keepDirty?{}:{isDirty:Ve()},...r.keepIsValidating?{}:{isValidating:!ee(i.validatingFields)}}),!r.keepIsValid&&oe()},Pe=({disabled:e,name:t})=>{if(j(e)&&v.mount||e||V.disabled.has(t)){const r=V.disabled.has(t)!==!!e;e?V.disabled.add(t):V.disabled.delete(t),r&&v.mount&&!v.action&&oe()}},We=(e,s={})=>{let a=C(u,e);const n=j(s.disabled)||j(t.disabled),i=!V.registerName.has(e)&&a&&a._f&&!a._f.mount;if(a&&a._f||(K[e]=++G),N(u,e,{...a||{},_f:{...a&&a._f?a._f:{ref:{name:e}},name:e,mount:!0,...s}}),V.mount.add(e),a&&a._f){const t=C(u,e);for(const e of x)e in s||delete t._f[e]}return a&&!i?Pe({disabled:j(s.disabled)?s.disabled:t.disabled,name:e}):pe(e,!0,s.value),{...n?{disabled:s.disabled||t.disabled}:{},...t.progressive?{required:!!Ke(s.required),min:Ke(s.min),max:Ke(s.max),minLength:Ke(s.minLength),maxLength:Ke(s.maxLength),pattern:Ke(s.pattern)}:{},name:e,onChange:Oe,onBlur:Oe,ref:n=>{if(n){V.registerName.add(e),We(e,s),V.registerName.delete(e),a=C(u,e);const t=E(n.value)&&n.querySelectorAll&&n.querySelectorAll("input,select,textarea")[0]||n,i=(e=>re(e)||r(e))(t),o=a._f.refs||[];if(i?o.find(e=>e===t):t===a._f.ref)return;const l={...a._f};i?(l.refs=[...o.filter(Ue),t,...Array.isArray(C(g,e))?[{}]:[]],l.ref={type:t.type,name:e}):(l.ref=t,delete l.refs),N(u,e,{_f:l}),pe(e,!1,void 0,t)}else a=C(u,e,{}),a._f&&(a._f.mount=!1),(t.shouldUnregister||s.shouldUnregister)&&(!d(V.array,e)||!v.action)&&V.unMount.add(e)}}},qe=()=>t.shouldFocusError&&!t.shouldUseNativeValidation&&Y(u,De,V.mount),ze=(e,r)=>async s=>{let a,n;s&&(s.preventDefault&&s.preventDefault(),s.persist&&s.persist());let o=m(h);W.state.next({isSubmitting:!0});const l=J,c=e=>{throw l===J&&W.state.next({isSubmitting:!1}),e};if(t.resolver){let e;try{e=await he()}catch(e){c(e)}const{errors:t,values:r}=e;if(l!==J)return;ue(),Object.keys(A).forEach(ne),i.errors=t,o=m(r)}else{try{await be({fields:u,eventType:"submit"})}catch(e){c(e)}if(l!==J)return;Ae(i.errors,k),i.errors={...i.errors}}if(V.disabled.size)for(const e of V.disabled)Ae(o,e);if(ee(i.errors)){W.state.next({errors:{}});try{a=await e(o,s)}catch(e){n=e}}else{if(r)try{await r({...i.errors},s)}catch(e){c(e)}qe(),setTimeout(qe)}if(W.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:ee(i.errors)&&!n,submitCount:i.submitCount+1,errors:i.errors}),n)throw n;return a},Qe=(e,r={})=>{J++,H++;const s=e?m(e):g,a=m(s),n=ee(e),o=a,l=u;if(Object.keys(A).forEach(ne),r.keepDefaultValues||(g=s),!r.keepValues){if(r.keepDirtyValues){const e=new Set([...V.mount,...Be(He(g,h,void 0,l),i.dirtyFields)]);for(const t of e){const e=C(i.dirtyFields,t),r=C(h,t),s=C(o,t);e&&!E(r)?N(o,t,r):e||E(s)||we(t,s)}}else{if(f&&E(e))for(const e of V.mount){const t=C(u,e);if(t&&t._f){const e=Array.isArray(t._f.refs)?t._f.refs[0]:t._f.ref;if(te(e)){const t=e.closest("form");if(t){t.reset();break}}}}if(r.keepFieldsRef)for(const e of V.mount)we(e,C(o,e));else u={}}if(t.shouldUnregister){if(h=r.keepDefaultValues?m(g):{},r.keepFieldsRef)for(const e of V.mount)N(h,e,C(o,e))}else h=m(o);W.array.next({values:{...o}}),W.state.next({name:void 0,type:void 0,values:{...o}})}V={mount:r.keepDirtyValues?V.mount:new Set,unMount:new Set,array:new Set,registerName:new Set,disabled:r.keepValues||r.keepDirtyValues||r.keepFieldsRef?new Set([...V.disabled].filter(e=>C(u,e))):new Set,watch:new Set,watchAll:!1,focus:""},v.mount=!U.isValid||!!r.keepIsValid||!!r.keepDirtyValues||!t.shouldUnregister&&!ee(o),v.watch=!!t.shouldUnregister,v.keepIsValid=!!r.keepIsValid,v.action=!1,v.actionArrayLengths.clear(),b=!1,r.keepErrors||(i.errors={}),W.state.next({submitCount:r.keepSubmitCount?i.submitCount:0,isDirty:!n&&(r.keepDirty?i.isDirty:r.keepValues?Ve():!(!r.keepDefaultValues||!e||$(e,g))),isSubmitted:!!r.keepIsSubmitted&&i.isSubmitted,dirtyFields:n?{}:r.keepDirtyValues?r.keepDefaultValues&&h?He(g,h,void 0,l):i.dirtyFields:r.keepDefaultValues&&e?He(g,e,void 0,l):r.keepDirty?i.dirtyFields:r.keepValues?He(g,h,void 0,l):{},touchedFields:r.keepTouched?i.touchedFields:{},...r.keepIsValidating||!i.isValidating&&ee(i.validatingFields)?null:{validatingFields:{},isValidating:!1},errors:r.keepErrors?i.errors:{},isSubmitSuccessful:!!r.keepIsSubmitSuccessful&&i.isSubmitSuccessful,isSubmitting:!1,defaultValues:g})},Ze=(e,r)=>Qe(R(e)?e(h):e,{...t.resetOptions,...r});W.state.subscribe({next:e=>{const{name:t,type:r,values:s,...a}=e;Object.keys(a).length&&(i={...i,...a})}});const st={control:{register:We,unregister:$e,getFieldState:Ce,handleSubmit:ze,setError:Le,_subscribe:Ie,_runSchema:he,_updateIsValidating:ue,_focusError:qe,_getWatch:Fe,_getDirty:Ve,_setValid:oe,_setFieldArray:(e,r=[],s,a,n=!0,o=!0)=>{if(a&&s&&!t.disabled){v.action=!0,v.keepIsValid=!1;const t=C(u,e),l=t&&t._f,c=l?Object.assign([],t):t;if(v.actionArrayLengths.has(e)||v.actionArrayLengths.set(e,Array.isArray(c)?c.length:0),o&&Array.isArray(c)){const t=s(c,a.argA,a.argB)||c;l?N(u,e,{...t,_f:l}):n&&N(u,e,t)}const d=C(i.errors,e);if(o&&Array.isArray(d)){const t=d.root,r=s(d,a.argA,a.argB)||d;t&&(r.root=t),n&&N(i.errors,e,r),((e,t)=>{const r=C(e,t);!ve(r).length&&(!r||!r.root)&&Ae(e,t)})(i.errors,e),i.errors={...i.errors}}const f=C(i.touchedFields,e),m=o&&Array.isArray(f);if(m){const t=s(f,a.argA,a.argB);n&&N(i.touchedFields,e,t)}const y=C(i.dirtyFields,e);if(o&&Array.isArray(y)){const t=s(y,a.argA,a.argB)||y;n&&N(i.dirtyFields,e,t)}B("dirtyFields")?ce():b=!0,W.state.next({name:e,isDirty:Ve(e,r),dirtyFields:i.dirtyFields,...m&&{touchedFields:i.touchedFields},errors:i.errors,isValid:i.isValid})}else N(h,e,r)},_setDisabledField:Pe,_setErrors:e=>{Object.keys(A).forEach(ne);const t=!ee(e);i.errors=m(e),W.state.next({errors:i.errors,...t?{isValid:!1}:{}}),!t&&v.mount&&oe()},_getFieldArray:e=>ve(C(v.mount?h:g,e,t.shouldUnregister?C(g,e,[]):[])),_reset:Qe,_resetDefaultValues:()=>R(t.defaultValues)&&t.defaultValues().then(e=>{Ze(e,t.resetOptions),W.state.next({isLoading:!1})}),_removeUnmounted:()=>{for(const e of V.unMount){const t=C(u,e);t&&(t._f.refs?t._f.refs.every(e=>!Ue(e)):!Ue(t._f.ref))&&$e(e)}V.unMount=new Set},_disableForm:e=>{j(e)&&(W.state.next({disabled:e}),Y(u,(t,r)=>{const s=C(u,r);s&&(t.disabled=s._f.disabled||e,Array.isArray(s._f.refs)&&s._f.refs.forEach(t=>{t.disabled=s._f.disabled||e}))},0))},_subjects:W,_proxyFormState:U,get _fields(){return u},get _formValues(){return h},get _state(){return v},set _state(e){v=e},get _defaultValues(){return g},get _names(){return V},set _names(e){V=e},get _formState(){return i},get _options(){return t},set _options(e){t={...t,...e},L=Q(t.mode),M=Q(t.reValidateMode),se=t.criteriaMode===_}},subscribe:e=>{v.mount=!0;const t=Object.keys(e.formState||{}).filter(t=>e.formState&&e.formState[t]);for(const e of t)I[e]=(I[e]||0)+1;const r=Ie({...e,formState:{...T,...e.formState}});return()=>{for(const e of t.splice(0))I[e]--;r()}},trigger:Ee,register:We,handleSubmit:ze,watch:(e,t)=>{if(R(e)){const r={};O.add(r);const{unsubscribe:s}=W.state.subscribe({next:r=>"values"in r&&e(r.values||Fe(void 0,t),r)});return{unsubscribe:()=>{O.delete(r),s()}}}return Fe(e,t,!0)},setValue:we,setValues:(e,t={})=>{const r=R(e)?e(h):e;if(!$(h,r)){h={...h,...r};for(const e of new Set([...V.mount,...V.array]))Me(r,e)&&ke(e,C(r,e),t,!0,!0);W.state.next({...i,name:void 0,type:void 0,...O.size?{values:h}:{}}),t.shouldValidate&&oe()}},getValues:(e,t)=>{let r=E(e)&&!t?{...v.mount?h:g}:v.mount?h:g;return t&&(r=Ne(t.dirtyFields?i.dirtyFields:i.touchedFields,r)),E(e)?r:q(e)?C(r,e):e.map(e=>C(r,e))},getErrors:e=>E(e)?{...i.errors}:q(e)?C(i.errors,e):e.map(e=>C(i.errors,e)),reset:Ze,resetField:(e,t={})=>{C(u,e)&&(le([e]),E(t.defaultValue)?we(e,m(C(g,e))):(we(e,t.defaultValue),N(g,e,m(t.defaultValue))),t.keepTouched||Ae(i.touchedFields,e),t.keepDirty||(Ae(i.dirtyFields,e),i.isDirty=E(t.defaultValue)?Ve():Ve(e,m(C(g,e)))),t.keepError||(ie(e),Ae(i.errors,e),i.errors={...i.errors},oe()),W.state.next({...i,isValidating:!ee(i.validatingFields)}))},resetDefaultValues:(e,t={})=>{if(g=m(e),!t.keepDirty){const e=He(g,h,void 0,u);i.dirtyFields=e,i.isDirty=!ee(e)}t.keepIsValid||oe(),W.state.next({...i,defaultValues:g})},clearErrors:je,unregister:$e,setError:Le,setFocus:(e,t={})=>{const r=C(u,e),s=r&&r._f;if(s){const e=s.refs?s.refs[0]:s.ref;e.focus&&setTimeout(()=>{e.focus(),t.shouldSelect&&R(e.select)&&e.select()})}},getFieldState:Ce};return{...st,formControl:st}}const at={mode:tt.mode,reValidateMode:tt.reValidateMode,shouldFocusError:tt.shouldFocusError,resolver:void 0,criteriaMode:void 0,delayError:void 0,shouldUnregister:void 0,shouldUseNativeValidation:void 0,context:void 0,progressive:void 0,resetOptions:void 0},nt=t.createContext(null);nt.displayName="HookFormContext",e.Controller=e=>e.render(J(e)),e.ErrorMessage=({as:e,control:r,name:s,render:a})=>{const{errors:n}=W({control:r,name:s}),i=C(n,s);if(!i)return null;const o=i.message||"";return a?a({message:o,messages:i.types}):t.createElement(e||t.Fragment,null,o)},e.FieldArray=e=>e.render(xe(e)),e.Form=function(e){const r=M(),[s,a]=t.useState(!1),{control:n=r,onSubmit:i=Oe,children:o,action:l,method:u=De,headers:c,encType:d,onError:f=Oe,render:m,onSuccess:y=Oe,validateStatus:p=Ee,...g}=e,h=t.useMemo(()=>n.handleSubmit(async(e,t)=>{const r=function(e){const t=new FormData,r=we(e);for(const e in r){const s=r[e];if(!E(s))if("undefined"!=typeof FileList&&s instanceof FileList)for(let r=0;r<s.length;r++){const a=s[r];a&&t.append(e,a)}else t.append(e,s)}return t}(e),s=function(e){try{return JSON.stringify(e)}catch(e){return""}}(e);if(i&&await i({data:e,event:t,method:u,formData:r,formDataJson:s}),q(l))try{const e=e=>c&&Object.entries(c).some(([t,r])=>"content-type"===t.toLowerCase()&&e.test(r))||d&&e.test(d);let t=r;e(/json/i)?t=s:e(/^\s*application\/x-www-form-urlencoded\s*(;|$)/i)?t=new URLSearchParams(Array.from(r,([e,t])=>[e,q(t)?t:t.name])):e(/^\s*text\/plain\s*(;|$)/i)&&(t=Array.from(r,([e,t])=>`${e}=${q(t)?t:t.name}\r\n`).join(""));const a=e=>/^\s*multipart\/form-data\s*(;|$)/i.test(e),n=await fetch(l,{method:u,headers:{...Object.fromEntries(Object.entries(c||{}).filter(([e,t])=>"content-type"!==e.toLowerCase()||!a(t))),...d&&!a(d)&&{"Content-Type":d}},body:t});if(n&&!p(n.status))return f({response:n}),{type:String(n.status)};y({response:n})}catch(e){return f({error:e}),{type:""}}if(R(l))try{await l(r)}catch(e){return f({error:e}),{type:""}}}),[n,i,u,l,c,d,p,f,y]),_=t.useCallback(async e=>{const t=await h(e);t&&n&&(n._subjects.state.next({isSubmitSuccessful:!1}),n.setError("root.server",t))},[h,n]);return t.useEffect(()=>{a(!0)},[]),m?m({submit:_}):t.createElement("form",{noValidate:s,action:l,...!R(l)&&{method:u,encType:d},onSubmit:_,...g},o)},e.FormProvider=({children:e,watch:r,getValues:s,getErrors:a,getFieldState:n,setError:i,clearErrors:o,setValue:l,setValues:u,trigger:c,formState:d,resetField:f,reset:m,resetDefaultValues:y,handleSubmit:p,unregister:g,control:h,register:_,setFocus:v,subscribe:b})=>{const V=t.useMemo(()=>({watch:r,getValues:s,getErrors:a,getFieldState:n,setError:i,clearErrors:o,setValue:l,setValues:u,trigger:c,formState:d,resetField:f,reset:m,resetDefaultValues:y,handleSubmit:p,unregister:g,control:h,register:_,setFocus:v,subscribe:b}),[o,h,d,a,n,s,p,_,m,y,f,i,v,l,u,b,c,g,r]);return t.createElement(nt.Provider,{value:V},t.createElement(L.Provider,{value:V.control},e))},e.FormState=Ce,e.FormStateSubscribe=je,e.Watch=e=>e.render(H({name:e.names,...e})),e.appendErrors=ae,e.createFormControl=st,e.get=C,e.set=N,e.useController=J,e.useFieldArray=xe,e.useForm=function(e={}){const r=t.useRef(void 0),s=t.useRef(void 0),a=t.useRef(e.formControl),n=t.useRef(!1),i=t.useRef(!!e.validate),o=t.useRef(!!e.errors),l=t.useRef(!1),[u,c]=t.useState(()=>({...m(rt),isLoading:R(e.defaultValues),errors:e.errors||{},disabled:e.disabled||!1,defaultValues:R(e.defaultValues)?void 0:e.defaultValues}));if(!r.current||e.formControl&&a.current!==e.formControl)if(a.current=e.formControl,n.current=!1,e.formControl)r.current={...e.formControl,formState:u},e.defaultValues&&!R(e.defaultValues)&&e.formControl.reset(e.defaultValues,e.resetOptions);else{const{formControl:t,...s}=st(e);r.current={...s,formState:u}}const d=r.current.control,f=d._options,y={};for(const t in at)t in f&&!(t in e)&&(y[t]=at[t]);n.current&&!e.disabled&&(y.disabled=!1),d._options={...y,...e,validate:e.validate};const p=()=>({...d._formState,defaultValues:d._defaultValues}),{resyncIfNeeded:g,snapshot:h}=P(p);return U(()=>{g(!0,p,c);const e=d._subscribe({formState:d._proxyFormState,callback:()=>c({...d._formState,defaultValues:d._defaultValues}),reRenderRoot:!0});return c(e=>({...e,isReady:!0})),d._formState.isReady=!0,d._subjects.state.next({isReady:!0}),()=>{e(),h(!0,p)}},[d,g,h]),t.useEffect(()=>{d._disableForm(!(n.current&&!e.disabled)&&e.disabled),n.current=!!e.disabled},[d,e.disabled]),t.useEffect(()=>{e.mode&&(d._options.mode=e.mode),e.reValidateMode&&(d._options.reValidateMode=e.reValidateMode)},[d,e.mode,e.reValidateMode]),t.useEffect(()=>{e.errors?(d._setErrors(e.errors),d._focusError()):o.current&&d._setErrors({}),o.current=!!e.errors},[d,e.errors]),t.useEffect(()=>{i.current&&!e.validate&&r.current&&r.current.clearErrors(S),i.current=!!e.validate},[e.validate]),t.useEffect(()=>{e.shouldUnregister&&d._subjects.state.next({values:d._getWatch()})},[d,e.shouldUnregister]),t.useEffect(()=>{if(d._proxyFormState.isDirty){const e=d._getDirty();e!==u.isDirty&&d._subjects.state.next({isDirty:e})}},[d,u.isDirty]),t.useEffect(()=>{e.values&&!$(e.values,s.current)?(d._reset(e.values,{keepFieldsRef:!0,...d._options.resetOptions}),d._options.resetOptions&&d._options.resetOptions.keepIsValid||d._setValid(),s.current=e.values,c(e=>({...e}))):d._resetDefaultValues()},[d,e.values]),t.useEffect(()=>{d._state.mount&&(l.current||e.values)||(d._setValid(),d._state.mount=!0),l.current=!0,d._state.watch&&(d._state.watch=!1,d._subjects.state.next({...d._formState})),d._removeUnmounted()}),r.current.formState=t.useMemo(()=>T(u,d),[d,u]),r.current},e.useFormContext=()=>t.useContext(nt),e.useFormState=W,e.useWatch=H});
//# sourceMappingURL=index.umd.js.map