react-hook-form 7.11.2-beta.0 → 7.12.2

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,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,b=(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 y="blur",g="change",m="onBlur",h="onChange",v="onSubmit",p="onTouched",x="all",O="max",j="min",w="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: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(N,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,_formValues:j}=u||a.control,w=b(j.current,e),[A,V]=n.useState(d(w)?d(b(o.current,e))?t:b(o.current,e):w),{onChange:k,onBlur:F,ref:_}=f(e,Object.assign(Object.assign({},r),{value:A})),C=T({control:u||a.control,name:e});return n.useEffect(()=>{const r=p.current.control.subscribe({next:r=>(!r.name||e===r.name)&&V(b(r.values,e))});return()=>{r.unsubscribe();const t=x||c;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);V(t),k({target:{value:t,name:e},type:g})},onBlur:()=>{F({target:{name:e},type:y})},name:e,value:A,ref:e=>e&&_({focus:()=>e.focus&&e.focus(),setCustomValidity:r=>e.setCustomValidity(r),reportValidity:()=>e.reportValidity()})},formState:C,fieldState:{invalid:!!b(C.errors,e),isDirty:!!b(C.dirtyFields,e),isTouched:!!b(C.touchedFields,e),error:b(C.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=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)}}};var q=()=>{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)})},H=(e=[],r)=>e.map(e=>Object.assign({[r]:e&&e[r]||q()},e)),z=e=>c(e)||!a(e);function G(e,r,t){if(z(e)||z(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))?!G(n,e,t):n!==e)return!1}}}return!0}function J(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]=[],J(e[u][n],b(r[u]||{},n,[]),t[u][n],t[u],n)):!c(r)&&G(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 K=(e,r,t)=>function e(r,t){if(z(r)||z(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}(J(e,r,t.slice(0,e.length)),J(r,e,t.slice(0,e.length)));function Q(e,r){return[...e,...B(r)]}var X=e=>Array.isArray(e)?Array(e.length).fill(void 0):void 0;function Y(e,r,t){return[...e.slice(0,r),...B(t),...e.slice(r)]}var Z=(e,r,t)=>Array.isArray(e)?(d(e[t])&&(e[t]=void 0),e.splice(t,0,e.splice(r,1)[0]),e):[];function ee(e,r){return[...B(r),...e]}var re=(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)),te=(e,r,t)=>{e[r]=[e[t],e[t]=e[r]][0]},ne=e=>"boolean"==typeof e;function se(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)||ne(e)).length)&&(u?delete u[r]:delete e[r]),u=n}}return e}var ue=e=>"file"===e.type,ce=e=>"select-multiple"===e.type,ae=e=>"radio"===e.type;const ie={value:!1,isValid:!1},oe={value:!0,isValid:!0};var le=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?oe:{value:e[0].value,isValid:!0}:oe:ie}return ie},fe=(e,{valueAsNumber:r,valueAsDate:t,setValueAs:n})=>d(e)?e:r?""===e?NaN:+e:t?new Date(e):n?n(e):e;const de={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,de):de;function ye(e){if(e&&e._f){const t=e._f.ref;if(e._f.refs?e._f.refs.every(e=>e.disabled):t.disabled)return;return ue(t)?t.files:ae(t)?be(e._f.refs).value:ce(t)?(r=t.options,[...r].filter(({selected:e})=>e).map(({value:e})=>e)):s(t)?le(e._f.refs).value:fe(d(t.value)?e._f.ref.value:t.value,e._f)}var r}var ge=(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}},me=e=>"function"==typeof e,he=e=>"string"==typeof e,ve=e=>he(e)||n.isValidElement(e),pe=e=>e instanceof RegExp;function xe(e,r,t="validate"){if(ve(e)||Array.isArray(e)&&e.every(ve)||ne(e)&&!e)return{type:t,message:ve(e)?e:"",ref:r}}var Oe=e=>i(e)&&!pe(e)?e:{value:e,message:""},je=async(e,r,t,n)=>{const{ref:u,refs:a,required:o,maxLength:l,minLength:f,min:d,max:b,pattern:y,validate:g,name:m,valueAsNumber:h,mount:v}=e._f;if(!v)return{};const p=a?a[0]:u,x=e=>{n&&p.reportValidity&&(p.setCustomValidity(ne(e)?"":e||" "),p.reportValidity())},_={},C=ae(u),R=s(u),S=C||R,E=(h||ue(u))&&!u.value||""===r||Array.isArray(r)&&!r.length,B=P.bind(null,m,t,_),M=(e,r,t,n=w,s=A)=>{const c=e?r:t;_[m]=Object.assign({type:e?n:s,message:c,ref:u},B(e?n:s,c))};if(o&&(!S&&(E||c(r))||ne(r)&&!r||R&&!le(a).isValid||C&&!be(a).isValid)){const{value:e,message:r}=ve(o)?{value:!!o,message:o}:Oe(o);if(e&&(_[m]=Object.assign({type:k,message:r,ref:p},B(k,r)),!t))return x(r),_}if(!(E||c(d)&&c(b))){let e,n;const s=Oe(b),a=Oe(d);if(isNaN(r)){const t=u.valueAsDate||new Date(r);he(s.value)&&(e=t>new Date(s.value)),he(a.value)&&(n=t<new Date(a.value))}else{const t=u.valueAsNumber||parseFloat(r);c(s.value)||(e=t>s.value),c(a.value)||(n=t<a.value)}if((e||n)&&(M(!!e,s.message,a.message,O,j),!t))return x(_[m].message),_}if((l||f)&&!E&&he(r)){const e=Oe(l),n=Oe(f),s=!c(e.value)&&r.length>e.value,u=!c(n.value)&&r.length<n.value;if((s||u)&&(M(s,e.message,n.message),!t))return x(_[m].message),_}if(y&&!E&&he(r)){const{value:e,message:n}=Oe(y);if(pe(e)&&!r.match(e)&&(_[m]=Object.assign({type:V,message:n,ref:u},B(V,n)),!t))return x(n),_}if(g)if(me(g)){const e=xe(await g(r),p);if(e&&(_[m]=Object.assign(Object.assign({},e),B(F,e.message)),!t))return x(e.message),_}else if(i(g)){let e={};for(const n in g){if(!D(e)&&!t)break;const s=xe(await g[n](r),p,n);s&&(e=Object.assign(Object.assign({},s),B(n,s.message)),x(s.message),t&&(_[m]=e))}if(!D(e)&&(_[m]=Object.assign({ref:p},e),!t))return _}return x(!0),_},we=e=>({isOnSubmit:!e||e===v,isOnBlur:e===m,isOnChange:e===h,isOnAll:e===x,isOnTouch:e===p}),Ae=e=>e instanceof HTMLElement;class Ve{constructor(){this.tearDowns=[]}add(e){this.tearDowns.push(e)}unsubscribe(){for(const e of this.tearDowns)e();this.tearDowns=[]}}class ke{constructor(e,r){this.observer=e,this.closed=!1,r.add(()=>this.closed=!0)}next(e){this.closed||this.observer.next(e)}}class Fe{constructor(){this.observers=[]}next(e){for(const r of this.observers)r.next(e)}subscribe(e){const r=new Ve,t=new ke(e,r);return this.observers.push(t),r}unsubscribe(){this.observers=[]}}const _e="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(),c=n.useRef(""),a=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:j,setValues:w,register:A,_formValues:V}=e||u.control,[k,F]=n.useState(H((b(V.current,r)&&a.current?b(V.current,r):b(p.current,o(r))?b(p.current,r):b(y.current,r))||[],t));L(p.current,r,[...k]),l.current.array.add(r);const C=e=>e.map((e={})=>_(e,t)),S=()=>{const e=b(V.current,r,[]);return H(b(p.current,r,[]).map((r,t)=>Object.assign(Object.assign({},r),e[t])),t)},D=(e,t)=>t&&!t.shouldFocus?t.focusName||`${r}.${t.focusIndex}.`:`${r}.${e}.`,E=(e=[])=>F(H(e,t)),M=e=>!f(b(e,r,[])).length&&se(e,r),N=(e,t,n=[],s=!0)=>{if(j.current=!0,b(d.current,r)){const n=e(b(d.current,r),t.argA,t.argB);s&&L(d.current,r,n)}if(b(V.current,r)){const n=e(b(V.current,r),t.argA,t.argB);s&&L(V.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),M(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),M(g.current.touchedFields)}(h.current.dirtyFields||h.current.isDirty)&&(L(g.current.dirtyFields,r,K(C(n),b(y.current,r,[]),b(g.current.dirtyFields,r,[]))),n&&L(g.current.dirtyFields,r,K(C(n),b(y.current,r,[]),b(g.current.dirtyFields,r,[]))),M(g.current.dirtyFields)),m.current.state.next({isDirty:i(r,C(n)),errors:g.current.errors,isValid:g.current.isValid})},T=(e,t=0,n="")=>e.forEach((e,s)=>{const u=`${n||r}.${n?s:t+s}`;z(e)?A(u,{value:e}):Object.entries(e).forEach(([e,r])=>{const t=u+"."+e;Array.isArray(r)?T(r,s,t):A(t,{value:r})})});return n.useEffect(()=>{if(j.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:V.current}),c.current&&W(d.current,e=>e.startsWith(c.current)),c.current="",m.current.array.next({name:r,values:C([...k])}),h.current.isValid&&v()},[k,r]),n.useEffect(()=>{const e=m.current.array.subscribe({next({name:e,values:t,isReset:n}){n&&(se(d.current,e||r),se(V.current,e||r),e?L(p.current,e,t):p.current=t,E(b(p.current,r)))}});return!b(V.current,r)&&L(V.current,r,[]),a.current=!0,()=>{if(e.unsubscribe(),O||s)x(r),se(p.current,r);else{const e=b(V.current,r);e&&L(p.current,r,e)}}},[]),{swap:n.useCallback((e,r)=>{const t=S();te(t,e,r),N(te,{argA:e,argB:r},t,!1),E(t)},[r]),move:n.useCallback((e,r)=>{const t=S();Z(t,e,r),E(t),N(Z,{argA:e,argB:r},t,!1)},[r]),prepend:n.useCallback((e,r)=>{const t=B(e),n=ee(S(),t);E(n),N(ee,{argA:X(e)},n),T(t),c.current=D(0,r)},[r]),append:n.useCallback((e,r)=>{const t=B(e),n=Q(S(),t),s=n.length-t.length;E(n),N(Q,{argA:X(e)},n,!1),T(t,s),c.current=D(s,r)},[r]),remove:n.useCallback(e=>{const r=re(S(),e);E(r),N(re,{argA:e},r)},[r]),insert:n.useCallback((e,r,t)=>{const n=B(r),s=Y(S(),e,n);E(s),N(Y,{argA:e,argB:X(r)},s),T(n,e),c.current=D(e,t)},[r]),update:n.useCallback((e,t)=>{w(r+"."+e,t,{shouldValidate:!!h.current.isValid,shouldDirty:!(!h.current.dirtyFields&&!h.current.isDirty)});const n=S();n[e]=t,E(n)},[r]),fields:k}},e.useForm=function({mode:e=v,reValidateMode:r=h,resolver:t,context:a,defaultValues:g={},shouldFocusError:m=!0,shouldUseNativeValidation:p,shouldUnregister:O,criteriaMode:j}={}){const[w,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(w),C=n.useRef({}),R=n.useRef({}),T=n.useRef(g),I=n.useRef({}),P=n.useRef(a),U=n.useRef(!1),$=n.useRef(!1),q=n.useRef({watch:new Fe,control:new Fe,array:new Fe,state:new Fe}),H=n.useRef({mount:new Set,unMount:new Set,array:new Set,watch:new Set,watchAll:!1}),J=we(e),Q=j===x;k.current=t,P.current=a;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,c)=>{const a=b(F.current.errors,r),i=!!V.current.isValid&&(t?u:await ie(C.current,!0));if(n?L(F.current.errors,r,n):se(F.current.errors,r),(c||(n?!G(a,n,!0):a)||!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),q.current.state.next(c?{name:r}:e)}q.current.state.next({isValidating:!1})},[]),Z=n.useCallback((e,r,t={},n,u)=>{u&&ke(e);const a=b(C.current,e);if(a){const u=a._f;if(u){const a=M&&Ae(u.ref)&&c(r)?"":r,i=fe(r,u);u.value=i,ae(u.ref)?(u.refs||[]).forEach(e=>e.checked=e.value===a):ue(u.ref)&&!he(a)?u.ref.files=a:ce(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,L(R.current,e,i),n&&q.current.control.next({values:Object.assign(Object.assign({},T.current),pe()),name:e}),(t.shouldDirty||t.shouldTouch)&&re(e,a,t.shouldTouch),t.shouldValidate&&oe(e)}else a._f={ref:{name:e,value:r},value:r},L(R.current,e,r)}},[]),ee=n.useCallback((e,r)=>(e&&r&&L(R.current,e,r),!G(Object.assign({},pe()),T.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);!G(b(T.current,e),r)?L(F.current.dirtyFields,e,!0):se(F.current.dirtyFields,e),s.dirtyFields=F.current.dirtyFields,u=u||t!==b(F.current.dirtyFields,e)}const c=b(F.current.touchedFields,e);return t&&!c&&(L(F.current.touchedFields,e,t),s.touchedFields=F.current.touchedFields,u=u||V.current.touchedFields&&c!==t),u&&n&&q.current.state.next(s),u?s:{}},[]),te=n.useCallback(async(e,r)=>{const t=(await je(b(C.current,e),b(pe(),e),Q,p))[e];return await Y(r,e,t),d(t)},[Q]),ne=n.useCallback(async e=>{const{errors:r}=await k.current(pe(),P.current,ge(H.current.mount,C.current,j,p));if(e)for(const t of e){const e=b(r,t);e?L(F.current.errors,t,e):se(F.current.errors,t)}else F.current.errors=r;return r},[j,p]),ie=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,b(pe(),e.name),Q,p);if(r){if(n[e.name]){t.valid=!1;break}}else n[e.name]?L(F.current.errors,e.name,n[e.name]):se(F.current.errors,e.name)}n&&await ie(n,r,t)}}return t.valid},oe=n.useCallback(async(e,r={})=>{const n=B(e);let s;if(q.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 ie(C.current),s=D(F.current.errors));return q.current.state.next(Object.assign(Object.assign({},he(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&&de(),s},[ne,te]),le=(e,r)=>{const t=b(C.current,e),n=b(pe(),e);if(t){const s=d(n),u=s?d(b(I.current,e))?b(T.current,e):b(I.current,e):n;d(u)?s&&L(R.current,e,ye(t)):r&&r.defaultChecked?L(R.current,e,ye(t)):Z(e,u)}$.current&&V.current.isValid&&de()},de=n.useCallback(async()=>{const e=t?D((await k.current(pe(),P.current,ge(H.current.mount,C.current,j,p))).errors):await ie(C.current,!0);e!==F.current.isValid&&q.current.state.next({isValid:e})},[j,p]),be=n.useCallback((e,r,t)=>Object.entries(r).forEach(([r,n])=>{const s=`${e}.${r}`,c=b(C.current,s);!H.current.array.has(e)&&z(n)&&(!c||c._f)||u(n)?Z(s,n,t,!0,!c):be(s,n,t)}),[oe]),ve=n.useCallback(async({type:e,target:n,target:{value:u,name:c,type:a}})=>{let i,l;const f=b(C.current,c);if(f){let m=a?ye(f):void 0;m=d(m)?u:m;const h=e===y,{isOnBlur:v,isOnChange:x}=we(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,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:h,isTouched:!!b(F.current.touchedFields,c),isSubmitted:F.current.isSubmitted,isReValidateOnBlur:v,isReValidateOnChange:x},J))),w=!h&&X(c);d(m)||L(R.current,c,m);const A=re(c,m,h,!1),V=!D(A)||w;if(O)return!h&&q.current.watch.next({name:c,type:e,values:pe()}),V&&q.current.state.next(w?{name:c}:Object.assign(Object.assign({},A),{name:c}));if(q.current.state.next({isValidating:!0}),t){const{errors:e}=await k.current(pe(),P.current,ge([c],C.current,j,p));if(i=b(e,c),s(n)&&!i){const r=o(c),t=b(e,r,{});t.type&&t.message&&(i=t),(t||b(F.current.errors,r))&&(c=r)}l=D(e)}else i=(await je(f,b(pe(),c),Q,p))[c];!h&&q.current.watch.next({name:c,type:e,values:pe()}),Y(!1,c,i,A,l,w)}var g},[]),pe=e=>{const r=Object.assign(Object.assign({},T.current),R.current);return d(e)?r:he(e)?b(r,e):e.map(e=>b(r,e))},xe=n.useCallback((e,r,t,n)=>{const s=Array.isArray(e),u=Object.assign({},n||$.current?Object.assign(Object.assign({},T.current),n||pe()):d(r)?T.current:s?r:{[e]:r});if(d(e))return t&&(H.current.watchAll=!0),u;const c=[];for(const r of B(e))t&&H.current.watch.add(r),c.push(b(u,r));return s?c:i(c[0])?Object.assign({},c[0]):Array.isArray(c[0])?[...c[0]]:c[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.keepValue||(se(C.current,t),se(R.current,t)),!r.keepError&&se(F.current.errors,t),!r.keepDirty&&se(F.current.dirtyFields,t),!r.keepTouched&&se(F.current.touchedFields,t),!O&&!r.keepDefaultValue&&se(T.current,t));q.current.watch.next({values:pe()}),q.current.state.next(Object.assign(Object.assign({},F.current),r.keepDirty?{isDirty:ee()}:{})),!r.keepIsValid&&de()},Ve=(e,r,t)=>{ke(e,t);let n=b(C.current,e);const u=(e=>ae(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=>Ae(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)}),r.value&&L(R.current,e,r.value),!d(r.disabled)&&t&&t._f&&t._f.ref.disabled!==r.disabled&&L(R.current,e,r.disabled?void 0:t._f.ref.value),H.current.mount.add(e),!t&&le(e),_e?{name:e}:Object.assign(Object.assign({name:e},d(r.disabled)?{}:{disabled:r.disabled}),{onChange:ve,onBlur:ve,ref:t=>{if(t)Ve(e,t,r);else{const t=b(C.current,e,{}),n=O||r.shouldUnregister;t._f&&(t._f.mount=!1),n&&(!l(H.current.array,e)||!U.current)&&H.current.unMount.add(e)}}})},[]),Ce=n.useCallback((e,r)=>async n=>{n&&(n.preventDefault&&n.preventDefault(),n.persist&&n.persist());let s=!0,u=Object.assign({},R.current);q.current.state.next({isSubmitting:!0});try{if(t){const{errors:e,values:r}=await k.current(u,P.current,ge(H.current.mount,C.current,j,p));F.current.errors=e,u=r}else await ie(C.current);D(F.current.errors)&&Object.keys(F.current.errors).every(e=>b(u,e))?(q.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,q.current.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:D(F.current.errors)&&s,submitCount:F.current.submitCount+1,errors:F.current.errors})}},[m,Q,j,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=q.current.state.subscribe({next(e){E(e,V.current,!0)&&(F.current=Object.assign(Object.assign({},F.current),e),A(F.current))}}),r=q.current.array.subscribe({next(e){e.values&&e.name&&V.current.isValid&&(L(R.current,e.name,e.values),de())}});return()=>{e.unsubscribe(),r.unsubscribe()}},[]),n.useEffect(()=>{const e=[],r=e=>!Ae(e)||!document.contains(e);$.current||($.current=!0,V.current.isValid&&de(),!O&&Re(T.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:U,getIsDirty:ee,subjectsRef:q,watchInternal:xe,fieldsRef:C,updateIsValid:de,namesRef:H,readFormStateRef:V,formStateRef:F,defaultValuesRef:T,fieldArrayDefaultValuesRef:I,setValues:be,_formValues:R,unregister:Oe,shouldUnmount:O}),[]),formState:S(N,w,V),trigger:oe,register:ke,handleSubmit:Ce,watch:n.useCallback((e,r)=>me(e)?q.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&&(q.current.array.next({values:r,name:e,isReset:!0}),(V.current.isDirty||V.current.dirtyFields)&&t.shouldDirty&&(L(F.current.dirtyFields,e,K(r,b(T.current,e,[]),b(F.current.dirtyFields,e,[]))),q.current.state.next({name:e,dirtyFields:F.current.dirtyFields,isDirty:ee(e,r)})),!r.length&&L(I.current,e,[])),L(R.current,e,r),(n&&!n._f||s)&&!c(r)?be(e,r,s?{}:t):Z(e,r,t,!0,!n),X(e)&&q.current.state.next({}),q.current.watch.next({name:e,values:pe()})},[be]),getValues:n.useCallback(pe,[]),reset:n.useCallback((e,r={})=>{const t=e||T.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{Ae(e)&&e.closest("form").reset();break}catch(e){}}}r.keepDefaultValues||(T.current=Object.assign({},t),I.current=Object.assign({},t)),r.keepValues||(C.current={},R.current={},q.current.control.next({values:r.keepDefaultValues?T.current:Object.assign({},t)}),q.current.watch.next({values:Object.assign({},t)}),q.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},q.current.state.next({submitCount:r.keepSubmitCount?F.current.submitCount:0,isDirty:r.keepDirty?F.current.isDirty:!!r.keepDefaultValues&&G(e,T.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}),$.current=!!r.keepIsValid},[]),clearErrors:n.useCallback(e=>{e?B(e).forEach(e=>se(F.current.errors,e)):F.current.errors={},q.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})),q.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(),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})}));
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",V="minLength",A="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,V]=n.useState(w&&w._f&&!d(w._f.value)?w._f.value:d(y(o.current,e))?t:y(o.current,e)),{onChange:A,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)&&V(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);V(t),A({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){if(G(e)||G(r)||u(e)||u(r))return e===r;const t=Object.keys(e),n=Object.keys(r);if(t.length!==n.length)return!1;for(const s of t){const t=e[s];if(!n.includes(s))return!1;if("ref"!==s){const e=r[s];if((i(t)||Array.isArray(t))&&(i(e)||Array.isArray(e))?!J(t,e):t!==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=V)=>{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:A,message:t,ref:e},E(A,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},Ve=e=>({isOnSubmit:!e||e===v,isOnBlur:e===m,isOnChange:e===h,isOnAll:e===x,isOnTouch:e===p}),Ae=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:V}=e||u.control,[A,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,[...A]),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)?V(u,{value:e}):Object.entries(e).forEach(([e,r])=>{const t=u+"."+e;Array.isArray(r)?M(r,s,t):V(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([...A])}),h.current.isValid&&v()},[A,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:A}},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[V,A]=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(V),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=Ve(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:(async()=>{const e=await fe(R.current,!0);e!==C.current.isValid&&(C.current.isValid=e,z.current.state.next({isValid:e}))})());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):a)||!D(s)||C.current.isValid!==i)&&!e){const e=Object.assign(Object.assign(Object.assign({},s),t?{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&&Ae(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}=Ve(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=>Ae(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),A(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=>!Ae(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,V,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{Ae(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