react-hook-form 7.11.1 → 7.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.umd.js CHANGED
@@ -1,2 +1,2 @@
1
- !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";function t(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var n=t(r),s=e=>"checkbox"===e.type,u=e=>e instanceof Date,a=e=>null==e;const c=e=>"object"==typeof e;var i=e=>!a(e)&&!Array.isArray(e)&&c(e)&&!u(e),o=e=>e.substring(0,e.search(/.\d/))||e,l=(e,r)=>[...e].some(e=>o(r)===e),f=e=>e.filter(Boolean),d=e=>void 0===e,b=(e,r,t)=>{if(i(e)&&r){const n=f(r.split(/[,[\].]+?/)).reduce((e,r)=>a(e)?e:e[r],e);return d(n)||n===e?d(e[r])?t:e[r]:n}};const y="blur",g="change",m="onBlur",h="onChange",v="onSubmit",p="onTouched",x="all",O="max",w="min",j="maxLength",A="minLength",V="pattern",k="required",F="validate";var _=(e,r)=>{const t=Object.assign({},e);return delete t[r],t};const C=n.createContext(null);C.displayName="RHFContext";const R=()=>n.useContext(C);var S=(e,r,t,n,s=!0)=>e?new Proxy(r,{get:(e,r)=>{if(r in e)return t.current[r]!==x&&(t.current[r]=!s||x),n&&(n.current[r]=!0),e[r]}}):r,D=e=>i(e)&&!Object.keys(e).length,E=(e,r,t)=>{const n=_(e,"name");return D(n)||Object.keys(n).length>=Object.keys(r).length||Object.keys(n).find(e=>r[e]===(!t||x))},B=e=>Array.isArray(e)?e:[e],M="undefined"!=typeof window&&void 0!==window.HTMLElement&&"undefined"!=typeof document;const N=M?"Proxy"in window:"undefined"!=typeof Proxy;function T(e){const{control:r,name:t}=e||{},s=R(),{formStateRef:u,subjectsRef:a,readFormStateRef:c}=r||s.control,i=n.useRef(t);i.current=t;const[o,l]=n.useState(u.current),f=n.useRef({isDirty:!1,dirtyFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1});return n.useEffect(()=>{const e=a.current.state.subscribe({next:e=>(!i.current||!e.name||B(i.current).includes(e.name))&&E(e,f.current)&&l(Object.assign(Object.assign({},u.current),e))});return()=>e.unsubscribe()},[]),S(N,o,c,f,!1)}function I({name:e,rules:r,defaultValue:t,control:u,shouldUnregister:a}){const c=R(),{defaultValuesRef:o,register:f,fieldsRef:m,unregister:h,namesRef:v,subjectsRef:p,shouldUnmount:x,inFieldArrayActionRef:O}=u||c.control,w=b(m.current,e),[j,A]=n.useState(w&&w._f&&!d(w._f.value)?w._f.value:d(b(o.current,e))?t:b(o.current,e)),{onChange:V,onBlur:k,ref:F}=f(e,Object.assign(Object.assign({},r),{value:j})),_=T({control:u||c.control,name:e});return n.useEffect(()=>{const r=p.current.control.subscribe({next:r=>(!r.name||e===r.name)&&A(b(r.values,e))});return()=>{r.unsubscribe();const t=x||a;if(l(v.current.array,e)?t&&!O.current:t)h(e);else{const r=b(m.current,e);r&&r._f&&(r._f.mount=!1)}}},[e]),{field:{onChange:r=>{const t=(e=>i(e)&&e.target?s(e.target)?e.target.checked:e.target.value:e)(r);A(t),V({target:{value:t,name:e},type:g})},onBlur:()=>{k({target:{name:e},type:y})},name:e,value:j,ref:e=>e&&F({focus:()=>e.focus&&e.focus(),setCustomValidity:r=>e.setCustomValidity(r),reportValidity:()=>e.reportValidity()})},formState:_,fieldState:{invalid:!!b(_.errors,e),isDirty:!!b(_.dirtyFields,e),isTouched:!!b(_.touchedFields,e),error:b(_.errors,e)}}}var P=(e,r,t,n,s)=>r?Object.assign(Object.assign({},t[e]),{types:Object.assign(Object.assign({},t[e]&&t[e].types?t[e].types:{}),{[n]:s||!0})}):{},U=e=>/^\w*$/.test(e),$=e=>f(e.replace(/["|']|\]/g,"").split(/\.|\[/));function L(e,r,t){let n=-1;const s=U(r)?[r]:$(r),u=s.length,a=u-1;for(;++n<u;){const r=s[n];let u=t;if(n!==a){const t=e[r];u=i(t)||Array.isArray(t)?t:isNaN(+s[n+1])?{}:[]}e[r]=u,e=e[r]}return e}const W=(e,r,t)=>{for(const n of t||Object.keys(e)){const t=b(e,n);if(t){const e=t._f,n=_(t,"_f");if(e&&r(e.name)){if(e.ref.focus&&d(e.ref.focus()))break;if(e.refs){e.refs[0].focus();break}}else i(n)&&W(n,r)}}},q=(e,r={})=>{for(const t in e.current){const n=e.current[t];if(n&&!a(r)){const e=n._f,s=_(n,"_f");L(r,t,e&&e.ref?e.ref.disabled||e.refs&&e.refs.every(e=>e.disabled)?void 0:e.value:Array.isArray(n)?[]:{}),s&&q({current:s},r[t])}}return r};var H=()=>{const e="undefined"==typeof performance?Date.now():1e3*performance.now();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>{const t=(16*Math.random()+e)%16|0;return("x"==r?t:3&t|8).toString(16)})},z=(e=[],r)=>e.map(e=>Object.assign({[r]:e&&e[r]||H()},e)),G=e=>a(e)||!c(e);function J(e,r,t){if(G(e)||G(r)||u(e)||u(r))return e===r;if(!n.isValidElement(e)){const n=Object.keys(e),s=Object.keys(r);if(n.length!==s.length)return!1;for(const s of n){const n=e[s];if(!t||"ref"!==s){const e=r[s];if((i(n)||Array.isArray(n))&&(i(e)||Array.isArray(e))?!J(n,e,t):n!==e)return!1}}}return!0}function K(e,r,t,n,s){let u=-1;for(;++u<e.length;){for(const n in e[u])Array.isArray(e[u][n])?(!t[u]&&(t[u]={}),t[u][n]=[],K(e[u][n],b(r[u]||{},n,[]),t[u][n],t[u],n)):!a(r)&&J(b(r[u]||{},n),e[u][n])?L(t[u]||{},n):t[u]=Object.assign(Object.assign({},t[u]),{[n]:!0});n&&!t.length&&delete n[s]}return t}var Q=(e,r,t)=>function e(r,t){if(G(r)||G(t))return t;for(const n in t){const s=r[n],u=t[n];try{r[n]=i(s)&&i(u)||Array.isArray(s)&&Array.isArray(u)?e(s,u):u}catch(e){}}return r}(K(e,r,t.slice(0,e.length)),K(r,e,t.slice(0,e.length)));function X(e,r){return[...e,...B(r)]}var Y=e=>Array.isArray(e)?Array(e.length).fill(void 0):void 0;function Z(e,r,t){return[...e.slice(0,r),...B(t),...e.slice(r)]}var ee=(e,r,t)=>Array.isArray(e)?(d(e[t])&&(e[t]=void 0),e.splice(t,0,e.splice(r,1)[0]),e):[];function re(e,r){return[...B(r),...e]}var te=(e,r)=>d(r)?[]:function(e,r){let t=0;const n=[...e];for(const e of r)n.splice(e-t,1),t++;return f(n).length?n:[]}(e,B(r).sort((e,r)=>e-r)),ne=(e,r,t)=>{e[r]=[e[t],e[t]=e[r]][0]},se=e=>"boolean"==typeof e;function ue(e,r){const t=U(r)?[r]:$(r),n=1==t.length?e:function(e,r){const t=r.slice(0,-1).length;let n=0;for(;n<t;)e=d(e)?n++:e[r[n++]];return e}(e,t),s=t[t.length-1];let u;n&&delete n[s];for(let r=0;r<t.slice(0,-1).length;r++){let n,s=-1;const a=t.slice(0,-(r+1)),c=a.length-1;for(r>0&&(u=e);++s<a.length;){const r=a[s];n=n?n[r]:e[r],c===s&&(i(n)&&D(n)||Array.isArray(n)&&!n.filter(e=>i(e)&&!D(e)||se(e)).length)&&(u?delete u[r]:delete e[r]),u=n}}return e}var ae=e=>"file"===e.type,ce=e=>"select-multiple"===e.type,ie=e=>"radio"===e.type;const oe={value:!1,isValid:!1},le={value:!0,isValid:!0};var fe=e=>{if(Array.isArray(e)){if(e.length>1){const r=e.filter(e=>e&&e.checked&&!e.disabled).map(e=>e.value);return{value:r,isValid:!!r.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!d(e[0].attributes.value)?d(e[0].value)||""===e[0].value?le:{value:e[0].value,isValid:!0}:le:oe}return oe},de=(e,{valueAsNumber:r,valueAsDate:t,setValueAs:n})=>d(e)?e:r?""===e?NaN:+e:t?new Date(e):n?n(e):e;const be={isValid:!1,value:null};var ye=e=>Array.isArray(e)?e.reduce((e,r)=>r&&r.checked&&!r.disabled?{isValid:!0,value:r.value}:e,be):be;function ge(e){if(e&&e._f){const t=e._f.ref;if(t.disabled)return;return ae(t)?t.files:ie(t)?ye(e._f.refs).value:ce(t)?(r=t.options,[...r].filter(({selected:e})=>e).map(({value:e})=>e)):s(t)?fe(e._f.refs).value:de(d(t.value)?e._f.ref.value:t.value,e._f)}var r}var me=(e,r,t,n)=>{const s={};for(const t of e){const e=b(r,t);e&&L(s,t,e._f)}return{criteriaMode:t,names:[...e],fields:s,shouldUseNativeValidation:n}},he=e=>"function"==typeof e,ve=e=>"string"==typeof e,pe=e=>ve(e)||n.isValidElement(e),xe=e=>e instanceof RegExp;function Oe(e,r,t="validate"){if(pe(e)||Array.isArray(e)&&e.every(pe)||se(e)&&!e)return{type:t,message:pe(e)?e:"",ref:r}}var we=e=>i(e)&&!xe(e)?e:{value:e,message:""},je=async({_f:{ref:e,refs:r,required:t,maxLength:n,minLength:u,min:c,max:o,pattern:l,validate:f,name:d,value:b,valueAsNumber:y,mount:g}},m,h)=>{if(!g)return{};const v=r?r[0]:e,p=e=>{h&&v.reportValidity&&(v.setCustomValidity(se(e)?"":e||" "),v.reportValidity())},x={},_=ie(e),C=s(e),R=_||C,S=(y||ae(e))&&!e.value||""===b||Array.isArray(b)&&!b.length,E=P.bind(null,d,m,x),B=(r,t,n,s=j,u=A)=>{const a=r?t:n;x[d]=Object.assign({type:r?s:u,message:a,ref:e},E(r?s:u,a))};if(t&&(!R&&(S||a(b))||se(b)&&!b||C&&!fe(r).isValid||_&&!ye(r).isValid)){const{value:e,message:r}=pe(t)?{value:!!t,message:t}:we(t);if(e&&(x[d]=Object.assign({type:k,message:r,ref:v},E(k,r)),!m))return p(r),x}if(!(S||a(c)&&a(o))){let r,t;const n=we(o),s=we(c);if(isNaN(b)){const u=e.valueAsDate||new Date(b);ve(n.value)&&(r=u>new Date(n.value)),ve(s.value)&&(t=u<new Date(s.value))}else{const u=e.valueAsNumber||parseFloat(b);a(n.value)||(r=u>n.value),a(s.value)||(t=u<s.value)}if((r||t)&&(B(!!r,n.message,s.message,O,w),!m))return p(x[d].message),x}if((n||u)&&!S&&ve(b)){const e=we(n),r=we(u),t=!a(e.value)&&b.length>e.value,s=!a(r.value)&&b.length<r.value;if((t||s)&&(B(t,e.message,r.message),!m))return p(x[d].message),x}if(l&&!S&&ve(b)){const{value:r,message:t}=we(l);if(xe(r)&&!b.match(r)&&(x[d]=Object.assign({type:V,message:t,ref:e},E(V,t)),!m))return p(t),x}if(f)if(he(f)){const e=Oe(await f(b),v);if(e&&(x[d]=Object.assign(Object.assign({},e),E(F,e.message)),!m))return p(e.message),x}else if(i(f)){let e={};for(const r in f){if(!D(e)&&!m)break;const t=Oe(await f[r](b),v,r);t&&(e=Object.assign(Object.assign({},t),E(r,t.message)),p(t.message),m&&(x[d]=e))}if(!D(e)&&(x[d]=Object.assign({ref:v},e),!m))return x}return p(!0),x},Ae=e=>({isOnSubmit:!e||e===v,isOnBlur:e===m,isOnChange:e===h,isOnAll:e===x,isOnTouch:e===p}),Ve=e=>e instanceof HTMLElement;class ke{constructor(){this.tearDowns=[]}add(e){this.tearDowns.push(e)}unsubscribe(){for(const e of this.tearDowns)e();this.tearDowns=[]}}class Fe{constructor(e,r){this.observer=e,this.closed=!1,r.add(()=>this.closed=!0)}next(e){this.closed||this.observer.next(e)}}class _e{constructor(){this.observers=[]}next(e){for(const r of this.observers)r.next(e)}subscribe(e){const r=new ke,t=new Fe(e,r);return this.observers.push(t),r}unsubscribe(){this.observers=[]}}const Ce="undefined"==typeof window;e.Controller=e=>e.render(I(e)),e.FormProvider=e=>n.createElement(C.Provider,{value:_(e,"children")},e.children),e.appendErrors=P,e.get=b,e.set=L,e.useController=I,e.useFieldArray=({control:e,name:r,keyName:t="id",shouldUnregister:s})=>{const u=R(),a=n.useRef(""),c=n.useRef(!1),{getIsDirty:i,namesRef:l,fieldsRef:d,defaultValuesRef:y,formStateRef:g,subjectsRef:m,readFormStateRef:h,updateIsValid:v,fieldArrayDefaultValuesRef:p,unregister:x,shouldUnmount:O,inFieldArrayActionRef:w,setValues:j,register:A}=e||u.control,[V,k]=n.useState(z((b(d.current,r)&&c.current?b(q(d),r):b(p.current,o(r))?b(p.current,r):b(y.current,r))||[],t));L(p.current,r,[...V]),l.current.array.add(r);const F=e=>e.map((e={})=>_(e,t)),C=()=>{const e=b(q(d),r,[]);return z(b(p.current,r,[]).map((r,t)=>Object.assign(Object.assign({},r),e[t])),t)},S=(e,t)=>t&&!t.shouldFocus?t.focusName||`${r}.${t.focusIndex}.`:`${r}.${e}.`,D=(e=[])=>k(z(e,t)),E=e=>!f(b(e,r,[])).length&&ue(e,r),M=(e,t,n=[],s=!0)=>{if(w.current=!0,b(d.current,r)){const n=e(b(d.current,r),t.argA,t.argB);s&&L(d.current,r,n)}if(Array.isArray(b(g.current.errors,r))){const n=e(b(g.current.errors,r),t.argA,t.argB);s&&L(g.current.errors,r,n),E(g.current.errors)}if(h.current.touchedFields&&b(g.current.touchedFields,r)){const n=e(b(g.current.touchedFields,r),t.argA,t.argB);s&&L(g.current.touchedFields,r,n),E(g.current.touchedFields)}(h.current.dirtyFields||h.current.isDirty)&&(L(g.current.dirtyFields,r,Q(F(n),b(y.current,r,[]),b(g.current.dirtyFields,r,[]))),n&&L(g.current.dirtyFields,r,Q(F(n),b(y.current,r,[]),b(g.current.dirtyFields,r,[]))),E(g.current.dirtyFields)),m.current.state.next({isDirty:i(r,F(n)),errors:g.current.errors,isValid:g.current.isValid})},N=(e,t=0,n="")=>e.forEach((e,s)=>{const u=`${n||r}.${n?s:t+s}`;G(e)?A(u,{value:e}):Object.entries(e).forEach(([e,r])=>{const t=u+"."+e;Array.isArray(r)?N(r,s,t):A(t,{value:r})})});return n.useEffect(()=>{if(w.current=!1,l.current.watchAll)m.current.state.next({});else for(const e of l.current.watch)if(r.startsWith(e)){m.current.state.next({});break}m.current.watch.next({name:r,values:q(d)}),a.current&&W(d.current,e=>e.startsWith(a.current)),a.current="",m.current.array.next({name:r,values:F([...V])}),h.current.isValid&&v()},[V,r]),n.useEffect(()=>{const e=m.current.array.subscribe({next({name:e,values:t,isReset:n}){n&&(ue(d.current,e||r),e?L(p.current,e,t):p.current=t,D(b(p.current,r)))}});return!b(d.current,r)&&L(d.current,r,[]),c.current=!0,()=>{if(e.unsubscribe(),O||s)x(r),ue(p.current,r);else{const e=b(q(d),r);e&&L(p.current,r,e)}}},[]),{swap:n.useCallback((e,r)=>{const t=C();ne(t,e,r),M(ne,{argA:e,argB:r},t,!1),D(t)},[r]),move:n.useCallback((e,r)=>{const t=C();ee(t,e,r),D(t),M(ee,{argA:e,argB:r},t,!1)},[r]),prepend:n.useCallback((e,r)=>{const t=B(e),n=re(C(),t);D(n),M(re,{argA:Y(e)},n),N(t),a.current=S(0,r)},[r]),append:n.useCallback((e,r)=>{const t=B(e),n=X(C(),t),s=n.length-t.length;D(n),M(X,{argA:Y(e)},n,!1),N(t,s),a.current=S(s,r)},[r]),remove:n.useCallback(e=>{const r=te(C(),e);D(r),M(te,{argA:e},r)},[r]),insert:n.useCallback((e,r,t)=>{const n=B(r),s=Z(C(),e,n);D(s),M(Z,{argA:e,argB:Y(r)},s),N(n,e),a.current=S(e,t)},[r]),update:n.useCallback((e,t)=>{j(r+"."+e,t,{shouldValidate:!!h.current.isValid,shouldDirty:!(!h.current.dirtyFields&&!h.current.isDirty)});const n=C();n[e]=t,D(n)},[r]),fields:V}},e.useForm=function({mode:e=v,reValidateMode:r=h,resolver:t,context:c,defaultValues:g={},shouldFocusError:m=!0,shouldUseNativeValidation:p,shouldUnregister:O,criteriaMode:w}={}){const[j,A]=n.useState({isDirty:!1,isValidating:!1,dirtyFields:{},isSubmitted:!1,submitCount:0,touchedFields:{},isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,errors:{}}),V=n.useRef({isDirty:!N,dirtyFields:!N,touchedFields:!N,isValidating:!N,isValid:!N,errors:!N}),k=n.useRef(t),F=n.useRef(j),C=n.useRef({}),R=n.useRef(g),T=n.useRef({}),I=n.useRef(c),P=n.useRef(!1),U=n.useRef(!1),$=n.useRef({watch:new _e,control:new _e,array:new _e,state:new _e}),H=n.useRef({mount:new Set,unMount:new Set,array:new Set,watch:new Set,watchAll:!1}),z=Ae(e),K=w===x;k.current=t,I.current=c;const X=e=>H.current.watchAll||H.current.watch.has(e)||H.current.watch.has((e.match(/\w+/)||[])[0]),Y=n.useCallback(async(e,r,n,s,u,a)=>{const c=b(F.current.errors,r),i=!!V.current.isValid&&(t?u:await se(C.current,!0));if(n?L(F.current.errors,r,n):ue(F.current.errors,r),(a||(n?!J(c,n,!0):c)||!D(s)||F.current.isValid!==i)&&!e){const e=Object.assign(Object.assign({},s),{isValid:!!i,errors:F.current.errors,name:r});F.current=Object.assign(Object.assign({},F.current),e),$.current.state.next(a?{name:r}:e)}$.current.state.next({isValidating:!1})},[]),Z=n.useCallback((e,r,t={},n,u)=>{u&&ke(e);const c=b(C.current,e);if(c){const u=c._f;if(u){const c=M&&Ve(u.ref)&&a(r)?"":r;if(u.value=de(r,u),ie(u.ref)?(u.refs||[]).forEach(e=>e.checked=e.value===c):ae(u.ref)&&!ve(c)?u.ref.files=c:ce(u.ref)?[...u.ref.options].forEach(e=>e.selected=c.includes(e.value)):s(u.ref)&&u.refs?u.refs.length>1?u.refs.forEach(e=>e.checked=Array.isArray(c)?!!c.find(r=>r===e.value):c===e.value):u.refs[0].checked=!!c:u.ref.value=c,n){const t=q(C);L(t,e,r),$.current.control.next({values:Object.assign(Object.assign({},R.current),t),name:e})}(t.shouldDirty||t.shouldTouch)&&re(e,c,t.shouldTouch),t.shouldValidate&&oe(e)}else c._f={ref:{name:e,value:r},value:r}}},[]),ee=n.useCallback((e,r)=>{const t=q(C);return e&&r&&L(t,e,r),!J(t,R.current)},[]),re=n.useCallback((e,r,t,n=!0)=>{const s={name:e};let u=!1;if(V.current.isDirty){const e=F.current.isDirty;F.current.isDirty=ee(),s.isDirty=F.current.isDirty,u=e!==s.isDirty}if(V.current.dirtyFields&&!t){const t=b(F.current.dirtyFields,e);!J(b(R.current,e),r)?L(F.current.dirtyFields,e,!0):ue(F.current.dirtyFields,e),s.dirtyFields=F.current.dirtyFields,u=u||t!==b(F.current.dirtyFields,e)}const a=b(F.current.touchedFields,e);return t&&!a&&(L(F.current.touchedFields,e,t),s.touchedFields=F.current.touchedFields,u=u||V.current.touchedFields&&a!==t),u&&n&&$.current.state.next(s),u?s:{}},[]),te=n.useCallback(async(e,r)=>{const t=(await je(b(C.current,e),K,p))[e];return await Y(r,e,t),d(t)},[K]),ne=n.useCallback(async e=>{const{errors:r}=await k.current(q(C),I.current,me(H.current.mount,C.current,w,p));if(e)for(const t of e){const e=b(r,t);e?L(F.current.errors,t,e):ue(F.current.errors,t)}else F.current.errors=r;return r},[w,p]),se=async(e,r,t={valid:!0})=>{for(const n in e){const s=e[n];if(s){const e=s._f,n=_(s,"_f");if(e){const n=await je(s,K,p);if(r){if(n[e.name]){t.valid=!1;break}}else n[e.name]?L(F.current.errors,e.name,n[e.name]):ue(F.current.errors,e.name)}n&&await se(n,r,t)}}return t.valid},oe=n.useCallback(async(e,r={})=>{const n=B(e);let s;if($.current.state.next({isValidating:!0}),t){const r=await ne(d(e)?e:n);s=e?n.every(e=>!b(r,e)):D(r)}else e?s=(await Promise.all(n.filter(e=>b(C.current,e,{})._f).map(async e=>await te(e,!0)))).every(Boolean):(await se(C.current),s=D(F.current.errors));return $.current.state.next(Object.assign(Object.assign({},ve(e)?{name:e}:{}),{errors:F.current.errors,isValidating:!1})),r.shouldFocus&&!s&&W(C.current,e=>b(F.current.errors,e),e?n:H.current.mount),V.current.isValid&&fe(),s},[ne,te]),le=(e,r)=>{const t=b(C.current,e);if(t){const n=d(t._f.value),s=n?d(b(T.current,e))?b(R.current,e):b(T.current,e):t._f.value;d(s)?n&&(t._f.value=ge(t)):r&&r.defaultChecked?t._f.value=ge(t):Z(e,s)}U.current&&V.current.isValid&&fe()},fe=n.useCallback(async(e={})=>{const r=t?D((await k.current(Object.assign(Object.assign({},q(C)),e),I.current,me(H.current.mount,C.current,w,p))).errors):await se(C.current,!0);r!==F.current.isValid&&$.current.state.next({isValid:r})},[w,p]),be=n.useCallback((e,r,t)=>Object.entries(r).forEach(([r,n])=>{const s=`${e}.${r}`,a=b(C.current,s);!H.current.array.has(e)&&G(n)&&(!a||a._f)||u(n)?Z(s,n,t,!0,!a):be(s,n,t)}),[oe]),ye=n.useCallback(async({type:e,target:n,target:{value:u,name:a,type:c}})=>{let i,l;const f=b(C.current,a);if(f){let m=c?ge(f):void 0;m=d(m)?u:m;const h=e===y,{isOnBlur:v,isOnChange:x}=Ae(r),O=(g=f._f,!(f._f.mount&&g&&(g.required||g.min||g.max||g.maxLength||g.minLength||g.pattern||g.validate)||t||b(F.current.errors,a))||(({isOnBlur:e,isOnChange:r,isOnTouch:t,isTouched:n,isReValidateOnBlur:s,isReValidateOnChange:u,isBlurEvent:a,isSubmitted:c,isOnAll:i})=>!i&&(!c&&t?!(n||a):(c?s:e)?!a:!(c?u:r)||a))(Object.assign({isBlurEvent:h,isTouched:!!b(F.current.touchedFields,a),isSubmitted:F.current.isSubmitted,isReValidateOnBlur:v,isReValidateOnChange:x},z))),j=!h&&X(a);d(m)||(f._f.value=m);const A=re(a,f._f.value,h,!1),V=!D(A)||j;if(O)return!h&&$.current.watch.next({name:a,type:e,values:pe()}),V&&$.current.state.next(j?{name:a}:Object.assign(Object.assign({},A),{name:a}));if($.current.state.next({isValidating:!0}),t){const{errors:e}=await k.current(q(C),I.current,me([a],C.current,w,p));if(i=b(e,a),s(n)&&!i){const r=o(a),t=b(e,r,{});t.type&&t.message&&(i=t),(t||b(F.current.errors,r))&&(a=r)}l=D(e)}else i=(await je(f,K,p))[a];!h&&$.current.watch.next({name:a,type:e,values:pe()}),Y(!1,a,i,A,l,j)}var g},[]),pe=e=>{const r=Object.assign(Object.assign({},R.current),q(C));return d(e)?r:ve(e)?b(r,e):e.map(e=>b(r,e))},xe=n.useCallback((e,r,t,n)=>{const s=Array.isArray(e),u=n||U.current?Object.assign(Object.assign({},R.current),n||q(C)):d(r)?R.current:s?r:{[e]:r};if(d(e))return t&&(H.current.watchAll=!0),u;const a=[];for(const r of B(e))t&&H.current.watch.add(r),a.push(b(u,r));return s?a:a[0]},[]),Oe=(e,r={})=>{for(const t of e?B(e):H.current.mount)H.current.mount.delete(t),H.current.array.delete(t),b(C.current,t)&&(!r.keepError&&ue(F.current.errors,t),!r.keepValue&&ue(C.current,t),!r.keepDirty&&ue(F.current.dirtyFields,t),!r.keepTouched&&ue(F.current.touchedFields,t),!O&&!r.keepDefaultValue&&ue(R.current,t));$.current.watch.next({values:pe()}),$.current.state.next(Object.assign(Object.assign({},F.current),r.keepDirty?{isDirty:ee()}:{})),!r.keepIsValid&&fe()},we=(e,r,t)=>{ke(e,t);let n=b(C.current,e);const u=(e=>ie(e)||s(e))(r);r===n._f.ref||u&&f(n._f.refs||[]).find(e=>e===r)||(n={_f:u?Object.assign(Object.assign({},n._f),{refs:[...f(n._f.refs||[]).filter(e=>Ve(e)&&document.contains(e)),r],ref:{type:r.type,name:e}}):Object.assign(Object.assign({},n._f),{ref:r})},L(C.current,e,n),le(e,r))},ke=n.useCallback((e,r={})=>{const t=b(C.current,e);return L(C.current,e,{_f:Object.assign(Object.assign(Object.assign({},t&&t._f?t._f:{ref:{name:e}}),{name:e,mount:!0}),r)}),H.current.mount.add(e),!t&&le(e),Ce?{name:e}:{name:e,onChange:ye,onBlur:ye,ref:t=>{if(t)we(e,t,r);else{const t=b(C.current,e,{}),n=O||r.shouldUnregister;t._f&&(t._f.mount=!1,d(t._f.value)&&(t._f.value=t._f.ref.value)),n&&(!l(H.current.array,e)||!P.current)&&H.current.unMount.add(e)}}}},[]),Fe=n.useCallback((e,r)=>async n=>{n&&(n.preventDefault&&n.preventDefault(),n.persist&&n.persist());let s=!0,u=q(C);$.current.state.next({isSubmitting:!0});try{if(t){const{errors:e,values:r}=await k.current(u,I.current,me(H.current.mount,C.current,w,p));F.current.errors=e,u=r}else await se(C.current);D(F.current.errors)&&Object.keys(F.current.errors).every(e=>b(u,e))?($.current.state.next({errors:{},isSubmitting:!0}),await e(u,n)):(r&&await r(F.current.errors,n),m&&W(C.current,e=>b(F.current.errors,e),H.current.mount))}catch(e){throw s=!1,e}finally{F.current.isSubmitted=!0,$.current.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:D(F.current.errors)&&s,submitCount:F.current.submitCount+1,errors:F.current.errors})}},[m,K,w,p]),Re=(e,r="")=>{for(const t in e){const n=e[t],s=r+(r?".":"")+t,u=b(C.current,s);u&&u._f||(i(n)||Array.isArray(n)?Re(n,s):u||ke(s,{value:n}))}};return n.useEffect(()=>{const e=$.current.state.subscribe({next(e){E(e,V.current,!0)&&(F.current=Object.assign(Object.assign({},F.current),e),A(F.current))}}),r=$.current.array.subscribe({next(e){if(e.values&&e.name&&V.current.isValid){const r=q(C);L(r,e.name,e.values),fe(r)}}});return()=>{e.unsubscribe(),r.unsubscribe()}},[]),n.useEffect(()=>{const e=[],r=e=>!Ve(e)||!document.contains(e);U.current||(U.current=!0,V.current.isValid&&fe(),!O&&Re(R.current));for(const t of H.current.unMount){const n=b(C.current,t);n&&(n._f.refs?n._f.refs.every(r):r(n._f.ref))&&e.push(t)}e.length&&Oe(e),H.current.unMount=new Set}),{control:n.useMemo(()=>({register:ke,inFieldArrayActionRef:P,getIsDirty:ee,subjectsRef:$,watchInternal:xe,fieldsRef:C,updateIsValid:fe,namesRef:H,readFormStateRef:V,formStateRef:F,defaultValuesRef:R,fieldArrayDefaultValuesRef:T,setValues:be,unregister:Oe,shouldUnmount:O}),[]),formState:S(N,j,V),trigger:oe,register:ke,handleSubmit:Fe,watch:n.useCallback((e,r)=>he(e)?$.current.watch.subscribe({next:t=>e(xe(void 0,r),t)}):xe(e,r,!0),[]),setValue:n.useCallback((e,r,t={})=>{const n=b(C.current,e),s=H.current.array.has(e);s&&($.current.array.next({values:r,name:e,isReset:!0}),(V.current.isDirty||V.current.dirtyFields)&&t.shouldDirty&&(L(F.current.dirtyFields,e,Q(r,b(R.current,e,[]),b(F.current.dirtyFields,e,[]))),$.current.state.next({name:e,dirtyFields:F.current.dirtyFields,isDirty:ee(e,r)})),!r.length&&L(C.current,e,[])&&L(T.current,e,[])),(n&&!n._f||s)&&!a(r)?be(e,r,s?{}:t):Z(e,r,t,!0,!n),X(e)&&$.current.state.next({}),$.current.watch.next({name:e,values:pe()})},[be]),getValues:n.useCallback(pe,[]),reset:n.useCallback((e,r={})=>{const t=e||R.current;if(M&&!r.keepValues)for(const e of H.current.mount){const r=b(C.current,e);if(r&&r._f){const e=Array.isArray(r._f.refs)?r._f.refs[0]:r._f.ref;try{Ve(e)&&e.closest("form").reset();break}catch(e){}}}r.keepDefaultValues||(R.current=Object.assign({},t),T.current=Object.assign({},t)),r.keepValues||(C.current={},$.current.control.next({values:r.keepDefaultValues?R.current:Object.assign({},t)}),$.current.watch.next({values:Object.assign({},t)}),$.current.array.next({values:Object.assign({},t),isReset:!0})),H.current={mount:new Set,unMount:new Set,array:new Set,watch:new Set,watchAll:!1},$.current.state.next({submitCount:r.keepSubmitCount?F.current.submitCount:0,isDirty:r.keepDirty?F.current.isDirty:!!r.keepDefaultValues&&J(e,R.current),isSubmitted:!!r.keepIsSubmitted&&F.current.isSubmitted,dirtyFields:r.keepDirty?F.current.dirtyFields:{},touchedFields:r.keepTouched?F.current.touchedFields:{},errors:r.keepErrors?F.current.errors:{},isSubmitting:!1,isSubmitSuccessful:!1}),U.current=!!r.keepIsValid},[]),clearErrors:n.useCallback(e=>{e?B(e).forEach(e=>ue(F.current.errors,e)):F.current.errors={},$.current.state.next({errors:F.current.errors})},[]),unregister:n.useCallback(Oe,[]),setError:n.useCallback((e,r,t)=>{const n=((b(C.current,e)||{_f:{}})._f||{}).ref;L(F.current.errors,e,Object.assign(Object.assign({},r),{ref:n})),$.current.state.next({name:e,errors:F.current.errors,isValid:!1}),t&&t.shouldFocus&&n&&n.focus&&n.focus()},[]),setFocus:n.useCallback(e=>b(C.current,e)._f.ref.focus(),[])}},e.useFormContext=R,e.useFormState=T,e.useWatch=function(e){const{control:r,name:t,defaultValue:s}=e||{},u=R(),a=n.useRef(t);a.current=t;const{watchInternal:c,subjectsRef:i}=r||u.control,[o,l]=n.useState(d(s)?c(t):s);return n.useEffect(()=>{c(t);const e=i.current.watch.subscribe({next:({name:e,values:r})=>(!a.current||!e||B(a.current).some(r=>e&&r&&(r.startsWith(e)||e.startsWith(r))))&&l(c(a.current,s,!1,r))});return()=>e.unsubscribe()},[]),o},Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ !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";function t(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var n=t(r),s=e=>"checkbox"===e.type,u=e=>e instanceof Date,c=e=>null==e;const a=e=>"object"==typeof e;var i=e=>!c(e)&&!Array.isArray(e)&&a(e)&&!u(e),o=e=>e.substring(0,e.search(/.\d/))||e,l=(e,r)=>[...e].some(e=>o(r)===e),f=e=>e.filter(Boolean),d=e=>void 0===e,y=(e,r,t)=>{if(i(e)&&r){const n=f(r.split(/[,[\].]+?/)).reduce((e,r)=>c(e)?e:e[r],e);return d(n)||n===e?d(e[r])?t:e[r]:n}};const b="blur",g="change",m="onBlur",h="onChange",v="onSubmit",p="onTouched",x="all",O="max",w="min",j="maxLength",A="minLength",V="pattern",k="required",F="validate";var _=(e,r)=>{const t=Object.assign({},e);return delete t[r],t};const C=n.createContext(null);C.displayName="RHFContext";const R=()=>n.useContext(C);var S=(e,r,t,n,s=!0)=>e?new Proxy(r,{get:(e,r)=>{if(r in e)return t.current[r]!==x&&(t.current[r]=!s||x),n&&(n.current[r]=!0),e[r]}}):r,D=e=>i(e)&&!Object.keys(e).length,E=(e,r,t)=>{const n=_(e,"name");return D(n)||Object.keys(n).length>=Object.keys(r).length||Object.keys(n).find(e=>r[e]===(!t||x))},B=e=>Array.isArray(e)?e:[e],T="undefined"!=typeof window&&void 0!==window.HTMLElement&&"undefined"!=typeof document;const M=T?"Proxy"in window:"undefined"!=typeof Proxy;function N(e){const{control:r,name:t}=e||{},s=R(),{formStateRef:u,subjectsRef:c,readFormStateRef:a}=r||s.control,i=n.useRef(t);i.current=t;const[o,l]=n.useState(u.current),f=n.useRef({isDirty:!1,dirtyFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1});return n.useEffect(()=>{const e=c.current.state.subscribe({next:e=>(!i.current||!e.name||B(i.current).includes(e.name))&&E(e,f.current)&&l(Object.assign(Object.assign({},u.current),e))});return()=>e.unsubscribe()},[]),S(M,o,a,f,!1)}function I({name:e,rules:r,defaultValue:t,control:u,shouldUnregister:c}){const a=R(),{defaultValuesRef:o,register:f,fieldsRef:m,unregister:h,namesRef:v,subjectsRef:p,shouldUnmount:x,inFieldArrayActionRef:O}=u||a.control,w=y(m.current,e),[j,A]=n.useState(w&&w._f&&!d(w._f.value)?w._f.value:d(y(o.current,e))?t:y(o.current,e)),{onChange:V,onBlur:k,ref:F}=f(e,Object.assign(Object.assign({},r),{value:j})),_=N({control:u||a.control,name:e});function C(e,r){const t=y(m.current,e);t&&t._f&&(t._f.mount=r)}return n.useEffect(()=>{const r=p.current.control.subscribe({next:r=>(!r.name||e===r.name)&&A(y(r.values,e))});return C(e,!0),()=>{r.unsubscribe();const t=x||c;(l(v.current.array,e)?t&&!O.current:t)?h(e):C(e,!1)}},[e]),{field:{onChange:r=>{const t=(e=>i(e)&&e.target?s(e.target)?e.target.checked:e.target.value:e)(r);A(t),V({target:{value:t,name:e},type:g})},onBlur:()=>{k({target:{name:e},type:b})},name:e,value:j,ref:e=>e&&F({focus:()=>e.focus&&e.focus(),setCustomValidity:r=>e.setCustomValidity(r),reportValidity:()=>e.reportValidity()})},formState:_,fieldState:{invalid:!!y(_.errors,e),isDirty:!!y(_.dirtyFields,e),isTouched:!!y(_.touchedFields,e),error:y(_.errors,e)}}}var P=(e,r,t,n,s)=>r?Object.assign(Object.assign({},t[e]),{types:Object.assign(Object.assign({},t[e]&&t[e].types?t[e].types:{}),{[n]:s||!0})}):{},U=e=>/^\w*$/.test(e),$=e=>f(e.replace(/["|']|\]/g,"").split(/\.|\[/));function L(e,r,t){let n=-1;const s=U(r)?[r]:$(r),u=s.length,c=u-1;for(;++n<u;){const r=s[n];let u=t;if(n!==c){const t=e[r];u=i(t)||Array.isArray(t)?t:isNaN(+s[n+1])?{}:[]}e[r]=u,e=e[r]}return e}const W=(e,r,t)=>{for(const n of t||Object.keys(e)){const t=y(e,n);if(t){const e=t._f,n=_(t,"_f");if(e&&r(e.name)){if(e.ref.focus&&d(e.ref.focus()))break;if(e.refs){e.refs[0].focus();break}}else i(n)&&W(n,r)}}},q=(e,r={})=>{for(const t in e.current){const n=e.current[t];if(n&&!c(r)){const e=n._f,s=_(n,"_f");L(r,t,e&&e.ref?e.ref.disabled||e.refs&&e.refs.every(e=>e.disabled)?void 0:e.value:Array.isArray(n)?[]:{}),s&&q({current:s},r[t])}}return r};var H=()=>{const e="undefined"==typeof performance?Date.now():1e3*performance.now();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>{const t=(16*Math.random()+e)%16|0;return("x"==r?t:3&t|8).toString(16)})},z=(e=[],r)=>e.map(e=>Object.assign({[r]:e&&e[r]||H()},e)),G=e=>c(e)||!a(e);function J(e,r,t){if(G(e)||G(r)||u(e)||u(r))return e===r;if(!n.isValidElement(e)){const n=Object.keys(e),s=Object.keys(r);if(n.length!==s.length)return!1;for(const s of n){const n=e[s];if(!t||"ref"!==s){const e=r[s];if((i(n)||Array.isArray(n))&&(i(e)||Array.isArray(e))?!J(n,e,t):n!==e)return!1}}}return!0}function K(e,r,t,n,s){let u=-1;for(;++u<e.length;){for(const n in e[u])Array.isArray(e[u][n])?(!t[u]&&(t[u]={}),t[u][n]=[],K(e[u][n],y(r[u]||{},n,[]),t[u][n],t[u],n)):!c(r)&&J(y(r[u]||{},n),e[u][n])?L(t[u]||{},n):t[u]=Object.assign(Object.assign({},t[u]),{[n]:!0});n&&!t.length&&delete n[s]}return t}var Q=(e,r,t)=>function e(r,t){if(G(r)||G(t))return t;for(const n in t){const s=r[n],u=t[n];try{r[n]=i(s)&&i(u)||Array.isArray(s)&&Array.isArray(u)?e(s,u):u}catch(e){}}return r}(K(e,r,t.slice(0,e.length)),K(r,e,t.slice(0,e.length)));function X(e,r){return[...B(e),...B(r)]}var Y=e=>Array.isArray(e)?Array(e.length).fill(void 0):void 0;function Z(e,r,t){return[...e.slice(0,r),...B(t),...e.slice(r)]}var ee=(e,r,t)=>Array.isArray(e)?(d(e[t])&&(e[t]=void 0),e.splice(t,0,e.splice(r,1)[0]),e):[];function re(e,r){return[...B(r),...B(e)]}var te=(e,r)=>d(r)?[]:function(e,r){let t=0;const n=[...e];for(const e of r)n.splice(e-t,1),t++;return f(n).length?n:[]}(e,B(r).sort((e,r)=>e-r)),ne=(e,r,t)=>{e[r]=[e[t],e[t]=e[r]][0]},se=e=>"boolean"==typeof e;function ue(e,r){const t=U(r)?[r]:$(r),n=1==t.length?e:function(e,r){const t=r.slice(0,-1).length;let n=0;for(;n<t;)e=d(e)?n++:e[r[n++]];return e}(e,t),s=t[t.length-1];let u;n&&delete n[s];for(let r=0;r<t.slice(0,-1).length;r++){let n,s=-1;const c=t.slice(0,-(r+1)),a=c.length-1;for(r>0&&(u=e);++s<c.length;){const r=c[s];n=n?n[r]:e[r],a===s&&(i(n)&&D(n)||Array.isArray(n)&&!n.filter(e=>i(e)&&!D(e)||se(e)).length)&&(u?delete u[r]:delete e[r]),u=n}}return e}var ce=e=>"file"===e.type,ae=e=>"select-multiple"===e.type,ie=e=>"radio"===e.type;const oe={value:!1,isValid:!1},le={value:!0,isValid:!0};var fe=e=>{if(Array.isArray(e)){if(e.length>1){const r=e.filter(e=>e&&e.checked&&!e.disabled).map(e=>e.value);return{value:r,isValid:!!r.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!d(e[0].attributes.value)?d(e[0].value)||""===e[0].value?le:{value:e[0].value,isValid:!0}:le:oe}return oe},de=(e,{valueAsNumber:r,valueAsDate:t,setValueAs:n})=>d(e)?e:r?""===e?NaN:+e:t?new Date(e):n?n(e):e;const ye={isValid:!1,value:null};var be=e=>Array.isArray(e)?e.reduce((e,r)=>r&&r.checked&&!r.disabled?{isValid:!0,value:r.value}:e,ye):ye;function ge(e){if(e&&e._f){const t=e._f.ref;if(t.disabled)return;return ce(t)?t.files:ie(t)?be(e._f.refs).value:ae(t)?(r=t.options,[...r].filter(({selected:e})=>e).map(({value:e})=>e)):s(t)?fe(e._f.refs).value:de(d(t.value)?e._f.ref.value:t.value,e._f)}var r}var me=(e,r,t,n)=>{const s={};for(const t of e){const e=y(r,t);e&&L(s,t,e._f)}return{criteriaMode:t,names:[...e],fields:s,shouldUseNativeValidation:n}},he=e=>"function"==typeof e,ve=e=>"string"==typeof e,pe=e=>ve(e)||n.isValidElement(e),xe=e=>e instanceof RegExp;function Oe(e,r,t="validate"){if(pe(e)||Array.isArray(e)&&e.every(pe)||se(e)&&!e)return{type:t,message:pe(e)?e:"",ref:r}}var we=e=>i(e)&&!xe(e)?e:{value:e,message:""},je=async({_f:{ref:e,refs:r,required:t,maxLength:n,minLength:u,min:a,max:o,pattern:l,validate:f,name:d,value:y,valueAsNumber:b,mount:g}},m,h)=>{if(!g)return{};const v=r?r[0]:e,p=e=>{h&&v.reportValidity&&(v.setCustomValidity(se(e)?"":e||" "),v.reportValidity())},x={},_=ie(e),C=s(e),R=_||C,S=(b||ce(e))&&!e.value||""===y||Array.isArray(y)&&!y.length,E=P.bind(null,d,m,x),B=(r,t,n,s=j,u=A)=>{const c=r?t:n;x[d]=Object.assign({type:r?s:u,message:c,ref:e},E(r?s:u,c))};if(t&&(!R&&(S||c(y))||se(y)&&!y||C&&!fe(r).isValid||_&&!be(r).isValid)){const{value:e,message:r}=pe(t)?{value:!!t,message:t}:we(t);if(e&&(x[d]=Object.assign({type:k,message:r,ref:v},E(k,r)),!m))return p(r),x}if(!(S||c(a)&&c(o))){let r,t;const n=we(o),s=we(a);if(isNaN(y)){const u=e.valueAsDate||new Date(y);ve(n.value)&&(r=u>new Date(n.value)),ve(s.value)&&(t=u<new Date(s.value))}else{const u=e.valueAsNumber||parseFloat(y);c(n.value)||(r=u>n.value),c(s.value)||(t=u<s.value)}if((r||t)&&(B(!!r,n.message,s.message,O,w),!m))return p(x[d].message),x}if((n||u)&&!S&&ve(y)){const e=we(n),r=we(u),t=!c(e.value)&&y.length>e.value,s=!c(r.value)&&y.length<r.value;if((t||s)&&(B(t,e.message,r.message),!m))return p(x[d].message),x}if(l&&!S&&ve(y)){const{value:r,message:t}=we(l);if(xe(r)&&!y.match(r)&&(x[d]=Object.assign({type:V,message:t,ref:e},E(V,t)),!m))return p(t),x}if(f)if(he(f)){const e=Oe(await f(y),v);if(e&&(x[d]=Object.assign(Object.assign({},e),E(F,e.message)),!m))return p(e.message),x}else if(i(f)){let e={};for(const r in f){if(!D(e)&&!m)break;const t=Oe(await f[r](y),v,r);t&&(e=Object.assign(Object.assign({},t),E(r,t.message)),p(t.message),m&&(x[d]=e))}if(!D(e)&&(x[d]=Object.assign({ref:v},e),!m))return x}return p(!0),x},Ae=e=>({isOnSubmit:!e||e===v,isOnBlur:e===m,isOnChange:e===h,isOnAll:e===x,isOnTouch:e===p}),Ve=e=>e instanceof HTMLElement;class ke{constructor(){this.tearDowns=[]}add(e){this.tearDowns.push(e)}unsubscribe(){for(const e of this.tearDowns)e();this.tearDowns=[]}}class Fe{constructor(e,r){this.observer=e,this.closed=!1,r.add(()=>this.closed=!0)}next(e){this.closed||this.observer.next(e)}}class _e{constructor(){this.observers=[]}next(e){for(const r of this.observers)r.next(e)}subscribe(e){const r=new ke,t=new Fe(e,r);return this.observers.push(t),r}unsubscribe(){this.observers=[]}}const Ce="undefined"==typeof window;e.Controller=e=>e.render(I(e)),e.FormProvider=e=>n.createElement(C.Provider,{value:_(e,"children")},e.children),e.appendErrors=P,e.get=y,e.set=L,e.useController=I,e.useFieldArray=({control:e,name:r,keyName:t="id",shouldUnregister:s})=>{const u=R(),c=n.useRef(""),a=n.useRef(!1),{getIsDirty:i,namesRef:l,fieldsRef:d,defaultValuesRef:b,formStateRef:g,subjectsRef:m,readFormStateRef:h,updateIsValid:v,fieldArrayDefaultValuesRef:p,unregister:x,shouldUnmount:O,inFieldArrayActionRef:w,setValues:j,register:A}=e||u.control,[V,k]=n.useState(z((y(d.current,r)&&a.current?y(q(d),r):y(p.current,o(r))?y(p.current,r):y(b.current,r))||[],t));L(p.current,r,[...V]),l.current.array.add(r);const F=e=>e.map((e={})=>_(e,t)),C=()=>{const e=y(q(d),r,[]);return z(y(p.current,r,[]).map((r,t)=>Object.assign(Object.assign({},r),e[t])),t)},S=(e,t)=>t&&!t.shouldFocus?t.focusName||`${r}.${t.focusIndex}.`:`${r}.${e}.`,D=(e=[])=>k(z(e,t)),E=e=>!f(y(e,r,[])).length&&ue(e,r),T=(e,t,n=[],s=!0)=>{if(w.current=!0,y(d.current,r)){const n=e(y(d.current,r),t.argA,t.argB);s&&L(d.current,r,n)}if(Array.isArray(y(g.current.errors,r))){const n=e(y(g.current.errors,r),t.argA,t.argB);s&&L(g.current.errors,r,n),E(g.current.errors)}if(h.current.touchedFields&&y(g.current.touchedFields,r)){const n=e(y(g.current.touchedFields,r),t.argA,t.argB);s&&L(g.current.touchedFields,r,n),E(g.current.touchedFields)}(h.current.dirtyFields||h.current.isDirty)&&(L(g.current.dirtyFields,r,Q(F(n),y(b.current,r,[]),y(g.current.dirtyFields,r,[]))),n&&L(g.current.dirtyFields,r,Q(F(n),y(b.current,r,[]),y(g.current.dirtyFields,r,[]))),E(g.current.dirtyFields)),m.current.state.next({dirtyFields:g.current.dirtyFields,isDirty:i(r,F(n)),errors:g.current.errors,isValid:g.current.isValid})},M=(e,t=0,n="")=>e.forEach((e,s)=>{const u=`${n||r}.${n?s:t+s}`;G(e)?A(u,{value:e}):Object.entries(e).forEach(([e,r])=>{const t=u+"."+e;Array.isArray(r)?M(r,s,t):A(t,{value:r})})});return n.useEffect(()=>{if(w.current=!1,l.current.watchAll)m.current.state.next({});else for(const e of l.current.watch)if(r.startsWith(e)){m.current.state.next({});break}m.current.watch.next({name:r,values:q(d)}),c.current&&W(d.current,e=>e.startsWith(c.current)),c.current="",m.current.array.next({name:r,values:F([...V])}),h.current.isValid&&v()},[V,r]),n.useEffect(()=>{const e=m.current.array.subscribe({next({name:e,values:t,isReset:n}){n&&(ue(d.current,e||r),e?L(p.current,e,t):p.current=t,D(y(p.current,r)))}});return!y(d.current,r)&&L(d.current,r,[]),a.current=!0,()=>{if(e.unsubscribe(),O||s)x(r),ue(p.current,r);else{const e=y(q(d),r);e&&L(p.current,r,e)}}},[]),{swap:n.useCallback((e,r)=>{const t=C();ne(t,e,r),T(ne,{argA:e,argB:r},t,!1),D(t)},[r]),move:n.useCallback((e,r)=>{const t=C();ee(t,e,r),D(t),T(ee,{argA:e,argB:r},t,!1)},[r]),prepend:n.useCallback((e,r)=>{const t=B(e),n=re(C(),t);D(n),T(re,{argA:Y(e)},n),M(t),c.current=S(0,r)},[r]),append:n.useCallback((e,r)=>{const t=B(e),n=X(C(),t),s=n.length-t.length;D(n),T(X,{argA:Y(e)},n,!1),M(t,s),c.current=S(s,r)},[r]),remove:n.useCallback(e=>{const r=te(C(),e);D(r),T(te,{argA:e},r)},[r]),insert:n.useCallback((e,r,t)=>{const n=B(r),s=Z(C(),e,n);D(s),T(Z,{argA:e,argB:Y(r)},s),M(n,e),c.current=S(e,t)},[r]),update:n.useCallback((e,t)=>{j(r+"."+e,t,{shouldValidate:!!h.current.isValid,shouldDirty:!(!h.current.dirtyFields&&!h.current.isDirty)});const n=C();n[e]=t,D(n)},[r]),fields:V}},e.useForm=function({mode:e=v,reValidateMode:r=h,resolver:t,context:a,defaultValues:g={},shouldFocusError:m=!0,delayError:p,shouldUseNativeValidation:O,shouldUnregister:w,criteriaMode:j}={}){const[A,V]=n.useState({isDirty:!1,isValidating:!1,dirtyFields:{},isSubmitted:!1,submitCount:0,touchedFields:{},isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,errors:{}}),k=n.useRef({isDirty:!M,dirtyFields:!M,touchedFields:!M,isValidating:!M,isValid:!M,errors:!M}),F=n.useRef(t),C=n.useRef(A),R=n.useRef({}),N=n.useRef(g),I=n.useRef({}),P=n.useRef(a),U=n.useRef(!1),$=n.useRef(!1),H=n.useRef(),z=n.useRef({watch:new _e,control:new _e,array:new _e,state:new _e}),K=n.useRef({mount:new Set,unMount:new Set,array:new Set,watch:new Set,watchAll:!1}),X=Ae(e),Y=j===x;F.current=t,P.current=a;const Z=e=>K.current.watchAll||K.current.watch.has(e)||K.current.watch.has((e.match(/\w+/)||[])[0]),ee=(e,r)=>{L(C.current.errors,e,r),z.current.state.next({errors:C.current.errors})},re=n.useCallback(async(e,r,n,s,u,c)=>{const a=y(C.current.errors,r),i=!!k.current.isValid&&(t?u:await fe(R.current,!0));if(p&&n?(H.current=H.current||((e,r)=>{let t=0;return(...n)=>{clearTimeout(t),t=setTimeout(()=>e(...n),r)}})(ee,p),H.current(r,n)):n?L(C.current.errors,r,n):ue(C.current.errors,r),(c||(n?!J(a,n,!0):a)||!D(s)||C.current.isValid!==i)&&!e){const e=Object.assign(Object.assign({},s),{isValid:!!i,errors:C.current.errors,name:r});C.current=Object.assign(Object.assign({},C.current),e),z.current.state.next(c?{name:r}:e)}z.current.state.next({isValidating:!1})},[]),te=n.useCallback((e,r,t={},n,u)=>{u&&Se(e);const a=y(R.current,e);if(a){const u=a._f;if(u){const a=T&&Ve(u.ref)&&c(r)?"":r;if(u.value=de(r,u),ie(u.ref)?(u.refs||[]).forEach(e=>e.checked=e.value===a):ce(u.ref)&&!ve(a)?u.ref.files=a:ae(u.ref)?[...u.ref.options].forEach(e=>e.selected=a.includes(e.value)):s(u.ref)&&u.refs?u.refs.length>1?u.refs.forEach(e=>e.checked=Array.isArray(a)?!!a.find(r=>r===e.value):a===e.value):u.refs[0].checked=!!a:u.ref.value=a,n){const t=q(R);L(t,e,r),z.current.control.next({values:Object.assign(Object.assign({},N.current),t),name:e})}(t.shouldDirty||t.shouldTouch)&&se(e,a,t.shouldTouch),t.shouldValidate&&ye(e)}else a._f={ref:{name:e,value:r},value:r}}},[]),ne=n.useCallback((e,r)=>{const t=q(R);return e&&r&&L(t,e,r),!J(t,N.current)},[]),se=n.useCallback((e,r,t,n=!0)=>{const s={name:e};let u=!1;if(k.current.isDirty){const e=C.current.isDirty;C.current.isDirty=ne(),s.isDirty=C.current.isDirty,u=e!==s.isDirty}if(k.current.dirtyFields&&!t){const t=y(C.current.dirtyFields,e);!J(y(N.current,e),r)?L(C.current.dirtyFields,e,!0):ue(C.current.dirtyFields,e),s.dirtyFields=C.current.dirtyFields,u=u||t!==y(C.current.dirtyFields,e)}const c=y(C.current.touchedFields,e);return t&&!c&&(L(C.current.touchedFields,e,t),s.touchedFields=C.current.touchedFields,u=u||k.current.touchedFields&&c!==t),u&&n&&z.current.state.next(s),u?s:{}},[]),oe=n.useCallback(async(e,r)=>{const t=(await je(y(R.current,e),Y,O))[e];return await re(r,e,t),d(t)},[Y]),le=n.useCallback(async e=>{const{errors:r}=await F.current(q(R),P.current,me(K.current.mount,R.current,j,O));if(e)for(const t of e){const e=y(r,t);e?L(C.current.errors,t,e):ue(C.current.errors,t)}else C.current.errors=r;return r},[j,O]),fe=async(e,r,t={valid:!0})=>{for(const n in e){const s=e[n];if(s){const e=s._f,n=_(s,"_f");if(e){const n=await je(s,Y,O);if(r){if(n[e.name]){t.valid=!1;break}}else n[e.name]?L(C.current.errors,e.name,n[e.name]):ue(C.current.errors,e.name)}n&&await fe(n,r,t)}}return t.valid},ye=n.useCallback(async(e,r={})=>{const n=B(e);let s;if(z.current.state.next({isValidating:!0}),t){const r=await le(d(e)?e:n);s=e?n.every(e=>!y(r,e)):D(r)}else e?s=(await Promise.all(n.filter(e=>y(R.current,e,{})._f).map(async e=>await oe(e,!0)))).every(Boolean):(await fe(R.current),s=D(C.current.errors));return z.current.state.next(Object.assign(Object.assign({},ve(e)?{name:e}:{}),{errors:C.current.errors,isValidating:!1})),r.shouldFocus&&!s&&W(R.current,e=>y(C.current.errors,e),e?n:K.current.mount),k.current.isValid&&pe(),s},[le,oe]),be=(e,r,t)=>{const n=y(R.current,e);if(n){const s=d(n._f.value),u=s?d(y(I.current,e))?y(N.current,e):y(I.current,e):n._f.value;d(u)?s&&(n._f.value=ge(n)):r&&r.defaultChecked?n._f.value=ge(n):t?n._f.value=u:te(e,u)}$.current&&k.current.isValid&&pe()},pe=n.useCallback(async(e={})=>{const r=t?D((await F.current(Object.assign(Object.assign({},q(R)),e),P.current,me(K.current.mount,R.current,j,O))).errors):await fe(R.current,!0);r!==C.current.isValid&&(C.current.isValid=r,z.current.state.next({isValid:r}))},[j,O]),xe=n.useCallback((e,r,t)=>Object.entries(r).forEach(([r,n])=>{const s=`${e}.${r}`,c=y(R.current,s);!K.current.array.has(e)&&G(n)&&(!c||c._f)||u(n)?te(s,n,t,!0,!c):xe(s,n,t)}),[ye]),Oe=n.useCallback(async({type:e,target:n,target:{value:u,name:c,type:a}})=>{const i=y(R.current,c);if(i){let f=a?ge(i):void 0;f=d(f)?u:f;const g=e===b,{isOnBlur:m,isOnChange:h}=Ae(r),v=(l=i._f,!(i._f.mount&&l&&(l.required||l.min||l.max||l.maxLength||l.minLength||l.pattern||l.validate)||t||y(C.current.errors,c))||(({isOnBlur:e,isOnChange:r,isOnTouch:t,isTouched:n,isReValidateOnBlur:s,isReValidateOnChange:u,isBlurEvent:c,isSubmitted:a,isOnAll:i})=>!i&&(!a&&t?!(n||c):(a?s:e)?!c:!(a?u:r)||c))(Object.assign({isBlurEvent:g,isTouched:!!y(C.current.touchedFields,c),isSubmitted:C.current.isSubmitted,isReValidateOnBlur:m,isReValidateOnChange:h},X))),p=!g&&Z(c);d(f)||(i._f.value=f);const x=se(c,i._f.value,g,!1),w=!D(x)||p;if(v)return!g&&z.current.watch.next({name:c,type:e,values:we()}),w&&z.current.state.next(p?{name:c}:Object.assign(Object.assign({},x),{name:c}));z.current.state.next({isValidating:!0}),(async(e,r,n,u)=>{let c,a,i=e.name;const l=y(R.current,i);if(t){const{errors:r}=await F.current(q(R),P.current,me([i],R.current,j,O));if(c=y(r,i),s(e)&&!c){const e=o(i),t=y(r,e,{});t.type&&t.message&&(c=t),(t||y(C.current.errors,e))&&(i=e)}a=D(r)}else c=(await je(l,Y,O))[i];!u&&z.current.watch.next({name:i,type:e.type,values:we()}),re(!1,i,c,r,a,n)})(n,x,p,g)}var l},[]),we=e=>{const r=Object.assign(Object.assign({},N.current),q(R));return d(e)?r:ve(e)?y(r,e):e.map(e=>y(r,e))},ke=n.useCallback((e,r,t,n)=>{const s=Array.isArray(e),u=n||$.current?Object.assign(Object.assign({},N.current),n||q(R)):d(r)?N.current:s?r:{[e]:r};if(d(e))return t&&(K.current.watchAll=!0),u;const c=[];for(const r of B(e))t&&K.current.watch.add(r),c.push(y(u,r));return s?c:c[0]},[]),Fe=(e,r={})=>{for(const t of e?B(e):K.current.mount)K.current.mount.delete(t),K.current.array.delete(t),y(R.current,t)&&(!r.keepError&&ue(C.current.errors,t),!r.keepValue&&ue(R.current,t),!r.keepDirty&&ue(C.current.dirtyFields,t),!r.keepTouched&&ue(C.current.touchedFields,t),!w&&!r.keepDefaultValue&&ue(N.current,t));z.current.watch.next({values:we()}),z.current.state.next(Object.assign(Object.assign({},C.current),r.keepDirty?{isDirty:ne()}:{})),!r.keepIsValid&&pe()},Re=(e,r,t)=>{Se(e,t);let n=y(R.current,e);const u=(e=>ie(e)||s(e))(r);r===n._f.ref||u&&f(n._f.refs||[]).find(e=>e===r)||(n={_f:u?Object.assign(Object.assign({},n._f),{refs:[...f(n._f.refs||[]).filter(e=>Ve(e)&&document.contains(e)),r],ref:{type:r.type,name:e}}):Object.assign(Object.assign({},n._f),{ref:r})},L(R.current,e,n),be(e,r))},Se=n.useCallback((e,r={})=>{const t=y(R.current,e);return L(R.current,e,{_f:Object.assign(Object.assign(Object.assign({},t&&t._f?t._f:{ref:{name:e}}),{name:e,mount:!0}),r)}),K.current.mount.add(e),!t&&be(e,void 0,!0),Ce?{name:e}:{name:e,onChange:Oe,onBlur:Oe,ref:t=>{if(t)Re(e,t,r);else{const t=y(R.current,e,{}),n=w||r.shouldUnregister;t._f&&(t._f.mount=!1,d(t._f.value)&&(t._f.value=t._f.ref.value)),n&&(!l(K.current.array,e)||!U.current)&&K.current.unMount.add(e)}}}},[]),De=n.useCallback((e,r)=>async n=>{n&&(n.preventDefault&&n.preventDefault(),n.persist&&n.persist());let s=!0,u=q(R);z.current.state.next({isSubmitting:!0});try{if(t){const{errors:e,values:r}=await F.current(u,P.current,me(K.current.mount,R.current,j,O));C.current.errors=e,u=r}else await fe(R.current);D(C.current.errors)&&Object.keys(C.current.errors).every(e=>y(u,e))?(z.current.state.next({errors:{},isSubmitting:!0}),await e(u,n)):(r&&await r(C.current.errors,n),m&&W(R.current,e=>y(C.current.errors,e),K.current.mount))}catch(e){throw s=!1,e}finally{C.current.isSubmitted=!0,z.current.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:D(C.current.errors)&&s,submitCount:C.current.submitCount+1,errors:C.current.errors})}},[m,Y,j,O]),Ee=(e,r="")=>{for(const t in e){const n=e[t],s=r+(r?".":"")+t,u=y(R.current,s);u&&u._f||(i(n)||Array.isArray(n)?Ee(n,s):u||Se(s,{value:n}))}};return n.useEffect(()=>{const e=z.current.state.subscribe({next(e){E(e,k.current,!0)&&(C.current=Object.assign(Object.assign({},C.current),e),V(C.current))}}),r=z.current.array.subscribe({next(e){if(e.values&&e.name&&k.current.isValid){const r=q(R);L(r,e.name,e.values),pe(r)}}});return()=>{e.unsubscribe(),r.unsubscribe()}},[]),n.useEffect(()=>{const e=[],r=e=>!Ve(e)||!document.contains(e);$.current||($.current=!0,k.current.isValid&&pe(),!w&&Ee(N.current));for(const t of K.current.unMount){const n=y(R.current,t);n&&(n._f.refs?n._f.refs.every(r):r(n._f.ref))&&e.push(t)}e.length&&Fe(e),K.current.unMount=new Set}),{control:n.useMemo(()=>({register:Se,inFieldArrayActionRef:U,getIsDirty:ne,subjectsRef:z,watchInternal:ke,fieldsRef:R,updateIsValid:pe,namesRef:K,readFormStateRef:k,formStateRef:C,defaultValuesRef:N,fieldArrayDefaultValuesRef:I,setValues:xe,unregister:Fe,shouldUnmount:w}),[]),formState:S(M,A,k),trigger:ye,register:Se,handleSubmit:De,watch:n.useCallback((e,r)=>he(e)?z.current.watch.subscribe({next:t=>e(ke(void 0,r),t)}):ke(e,r,!0),[]),setValue:n.useCallback((e,r,t={})=>{const n=y(R.current,e),s=K.current.array.has(e);s&&(z.current.array.next({values:r,name:e,isReset:!0}),(k.current.isDirty||k.current.dirtyFields)&&t.shouldDirty&&(L(C.current.dirtyFields,e,Q(r,y(N.current,e,[]),y(C.current.dirtyFields,e,[]))),z.current.state.next({name:e,dirtyFields:C.current.dirtyFields,isDirty:ne(e,r)})),!r.length&&L(R.current,e,[])&&L(I.current,e,[])),(n&&!n._f||s)&&!c(r)?xe(e,r,s?{}:t):te(e,r,t,!0,!n),Z(e)&&z.current.state.next({}),z.current.watch.next({name:e,values:we()})},[xe]),getValues:n.useCallback(we,[]),reset:n.useCallback((e,r={})=>{const t=e||N.current;if(T&&!r.keepValues)for(const e of K.current.mount){const r=y(R.current,e);if(r&&r._f){const e=Array.isArray(r._f.refs)?r._f.refs[0]:r._f.ref;try{Ve(e)&&e.closest("form").reset();break}catch(e){}}}r.keepDefaultValues||(N.current=Object.assign({},t),I.current=Object.assign({},t)),r.keepValues||(R.current={},z.current.control.next({values:r.keepDefaultValues?N.current:Object.assign({},t)}),z.current.watch.next({values:Object.assign({},t)}),z.current.array.next({values:Object.assign({},t),isReset:!0})),K.current={mount:new Set,unMount:new Set,array:new Set,watch:new Set,watchAll:!1},z.current.state.next({submitCount:r.keepSubmitCount?C.current.submitCount:0,isDirty:r.keepDirty?C.current.isDirty:!!r.keepDefaultValues&&J(e,N.current),isSubmitted:!!r.keepIsSubmitted&&C.current.isSubmitted,dirtyFields:r.keepDirty?C.current.dirtyFields:{},touchedFields:r.keepTouched?C.current.touchedFields:{},errors:r.keepErrors?C.current.errors:{},isSubmitting:!1,isSubmitSuccessful:!1}),$.current=!!r.keepIsValid},[]),clearErrors:n.useCallback(e=>{e?B(e).forEach(e=>ue(C.current.errors,e)):C.current.errors={},z.current.state.next({errors:C.current.errors})},[]),unregister:n.useCallback(Fe,[]),setError:n.useCallback((e,r,t)=>{const n=((y(R.current,e)||{_f:{}})._f||{}).ref;L(C.current.errors,e,Object.assign(Object.assign({},r),{ref:n})),z.current.state.next({name:e,errors:C.current.errors,isValid:!1}),t&&t.shouldFocus&&n&&n.focus&&n.focus()},[]),setFocus:n.useCallback(e=>y(R.current,e)._f.ref.focus(),[])}},e.useFormContext=R,e.useFormState=N,e.useWatch=function(e){const{control:r,name:t,defaultValue:s}=e||{},u=R(),c=n.useRef(t);c.current=t;const{watchInternal:a,subjectsRef:i}=r||u.control,[o,l]=n.useState(d(s)?a(t):s);return n.useEffect(()=>{a(t);const e=i.current.watch.subscribe({next:({name:e,values:r})=>(!c.current||!e||B(c.current).some(r=>e&&r&&(r.startsWith(e)||e.startsWith(r))))&&l(a(c.current,s,!1,r))});return()=>e.unsubscribe()},[]),o},Object.defineProperty(e,"__esModule",{value:!0})}));
2
2
  //# sourceMappingURL=index.umd.js.map