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