react-hook-form 6.9.2 → 6.9.5

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.
@@ -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";var t=e=>e instanceof HTMLElement;const n="blur",s="change",c="input",u="onBlur",i="onChange",a="onSubmit",o="onTouched",l="all",f="undefined",d="max",g="min",b="maxLength",m="minLength",h="pattern",y="required",v="validate";var p=e=>null==e,O=e=>Array.isArray(e);const j=e=>"object"==typeof e;var R=e=>!p(e)&&!O(e)&&j(e)&&!(e instanceof Date),F=e=>!O(e)&&(/^\w*$/.test(e)||!/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/.test(e)),V=e=>{const r=[];return e.replace(/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,(e,t,n,s)=>{r.push(n?s.replace(/\\(\\)?/g,"$1"):t||e)}),r};function C(e,r,t){let n=-1;const s=F(r)?[r]:V(r),c=s.length,u=c-1;for(;++n<c;){const r=s[n];let c=t;if(n!==u){const t=e[r];c=R(t)||O(t)?t:isNaN(+s[n+1])?{}:[]}e[r]=c,e=e[r]}return e}var x=e=>Object.entries(e).reduce((e,[r,t])=>F(r)?Object.assign(Object.assign({},e),{[r]:t}):(C(e,r,t),e),{}),S=e=>void 0===e,k=e=>e.filter(Boolean),w=(e,r,t)=>{const n=k(r.split(/[,[\].]+?/)).reduce((e,r)=>p(e)?e:e[r],e);return S(n)||n===e?S(e[r])?t:e[r]:n},E=(e,r)=>{t(e)&&e.removeEventListener&&(e.removeEventListener(c,r),e.removeEventListener(s,r),e.removeEventListener(n,r))};const D={isValid:!1,value:""};var A=e=>O(e)?e.reduce((e,r)=>r&&r.ref.checked?{isValid:!0,value:r.ref.value}:e,D):D,B=e=>"radio"===e.type,W=e=>"file"===e.type,L=e=>"checkbox"===e.type,N=e=>"select-multiple"===e.type;const T={value:!1,isValid:!1},M={value:!0,isValid:!0};var P=e=>{if(O(e)){if(e.length>1){const r=e.filter(e=>e&&e.ref.checked).map(({ref:{value:e}})=>e);return{value:r,isValid:!!r.length}}const{checked:r,value:t,attributes:n}=e[0].ref;return r?n&&!S(n.value)?S(t)||""===t?M:{value:t,isValid:!0}:M:T}return T};function $(e,r,t,n){const s=e.current[r];if(s){const{ref:{value:e,disabled:r},ref:t}=s;if(r&&n)return;return W(t)?t.files:B(t)?A(s.options).value:N(t)?(c=t.options,[...c].filter(({selected:e})=>e).map(({value:e})=>e)):L(t)?P(s.options).value:e}var c;if(t)return w(t.current,r)}function H(e){return!e||e instanceof HTMLElement&&e.nodeType!==Node.DOCUMENT_NODE&&H(e.parentNode)}var I=e=>R(e)&&!Object.keys(e).length,U=e=>"boolean"==typeof e;function q(e,r){const t=F(r)?[r]:V(r),n=1==t.length?e:function(e,r){const t=r.slice(0,-1).length;let n=0;for(;n<t;)e=S(e)?n++:e[r[n++]];return e}(e,t),s=t[t.length-1];let c=void 0;n&&delete n[s];for(let r=0;r<t.slice(0,-1).length;r++){let n=-1,s=void 0;const u=t.slice(0,-(r+1)),i=u.length-1;for(r>0&&(c=e);++n<u.length;){const r=u[n];s=s?s[r]:e[r],i===n&&(R(s)&&I(s)||O(s)&&!s.filter(e=>R(e)&&!I(e)||U(e)).length)&&(c?delete c[r]:delete e[r]),c=s}}return e}const _=(e,r)=>e&&e.ref===r;var z=e=>"string"==typeof e,G=e=>p(e)||!j(e);var J=(e,r,t,n)=>{const s={};for(const r in e.current)(S(n)||(z(n)?r.startsWith(n):O(n)&&n.find(e=>r.startsWith(e))))&&(s[r]=$(e,r,void 0,t));return function e(r,t){if(G(r)||G(t))return t;for(const n in t){const s=r[n],c=t[n];try{R(s)&&R(c)||O(s)&&O(c)?r[n]=e(s,c):r[n]=c}catch(e){}}return r}(x(Object.assign({},(r||{}).current||{})),x(s))};function K(e=[],r=[],t){const n=Object.keys(e),s=Object.keys(r);if(n.length!==s.length)return!1;for(const s of n)if(!t||!["ref","context"].includes(s)){const n=e[s],c=r[s];if((R(n)||O(n))&&(R(c)||O(c))?!K(n,c,t):n!==c)return!1}return!0}var Q=e=>e instanceof RegExp;var X=e=>{return R(r=e)&&!Q(r)?e:{value:e,message:""};var r},Y=e=>"function"==typeof e,Z=e=>z(e)||R(e)&&r.isValidElement(e);function ee(e,r,t="validate"){if(Z(e)||U(e)&&!e)return{type:t,message:Z(e)?e:"",ref:r}}var re=(e,r,t,n,s)=>{if(r){const r=t[e];return Object.assign(Object.assign({},r),{types:Object.assign(Object.assign({},r&&r.types?r.types:{}),{[n]:s||!0})})}return{}},te=async(e,r,{ref:t,ref:{type:n,value:s},options:c,required:u,maxLength:i,minLength:a,min:o,max:l,pattern:f,validate:O},j)=>{const F=e.current,V=t.name,C={},x=B(t),S=L(t),k=x||S,w=""===s,E=re.bind(null,V,r,C),D=(e,r,n,s=b,c=m)=>{const u=e?r:n;C[V]=Object.assign({type:e?s:c,message:u,ref:t},E(e?s:c,u))};if(u&&(!x&&!S&&(w||p(s))||U(s)&&!s||S&&!P(c).isValid||x&&!A(c).isValid)){const{value:e,message:n}=Z(u)?{value:!!u,message:u}:X(u);if(e&&(C[V]=Object.assign({type:y,message:n,ref:k?((F[V].options||[])[0]||{}).ref:t},E(y,n)),!r))return C}if(!p(o)||!p(l)){let e,c;const{value:u,message:i}=X(l),{value:a,message:f}=X(o);if("number"===n||!n&&!isNaN(s)){const r=t.valueAsNumber||parseFloat(s);p(u)||(e=r>u),p(a)||(c=r<a)}else{const r=t.valueAsDate||new Date(s);z(u)&&(e=r>new Date(u)),z(a)&&(c=r<new Date(a))}if((e||c)&&(D(!!e,i,f,d,g),!r))return C}if(z(s)&&!w&&(i||a)){const{value:e,message:t}=X(i),{value:n,message:c}=X(a),u=s.toString().length,o=!p(e)&&u>e,l=!p(n)&&u<n;if((o||l)&&(D(!!o,t,c),!r))return C}if(f&&!w){const{value:e,message:n}=X(f);if(Q(e)&&!e.test(s)&&(C[V]=Object.assign({type:h,message:n,ref:t},E(h,n)),!r))return C}if(O){const n=$(e,V,j),s=k&&c?c[0].ref:t;if(Y(O)){const e=ee(await O(n),s);if(e&&(C[V]=Object.assign(Object.assign({},e),E(v,e.message)),!r))return C}else if(R(O)){let e={};for(const[t,c]of Object.entries(O)){if(!I(e)&&!r)break;const u=ee(await c(n),s,t);u&&(e=Object.assign(Object.assign({},u),E(t,u.message)),r&&(C[V]=e))}if(!I(e)&&(C[V]=Object.assign({ref:s},e),!r))return C}}return C};const ne=(e,r)=>Object.entries(r).map(([t,n])=>((r,t,n)=>{const s=n?`${e}.${r}`:`${e}[${r}]`;return G(t)?s:ne(s,t)})(t,n,R(r))).flat(1/0);var se=(e,r,t,n,s)=>{let c;return t.add(r),I(e)?c=void 0:(c=w(e,r),(R(c)||O(c))&&ne(r,c).forEach(e=>t.add(e))),S(c)?s?n:w(n,r):c},ce=({isOnBlur:e,isOnChange:r,isOnTouch:t,isTouched:n,isReValidateOnBlur:s,isReValidateOnChange:c,isBlurEvent:u,isSubmitted:i,isOnAll:a})=>!a&&(!i&&t?!(n||u):(i?s:e)?!u:!(i?c:r)||u),ue=e=>e.substring(0,e.indexOf("["));const ie=(e,r)=>RegExp(`^${r}[\\d+]`.replace(/\[/g,"\\[").replace(/\]/g,"\\]")).test(e);var ae=(e,r)=>[...e].some(e=>ie(r,e));var oe=e=>({isOnSubmit:!e||e===a,isOnBlur:e===u,isOnChange:e===i,isOnAll:e===l,isOnTouch:e===o}),le=e=>B(e)||L(e);const fe=typeof window===f,de=typeof document!==f&&!fe&&!S(window.HTMLElement),ge=de?"Proxy"in window:typeof Proxy!==f;function be(e,r){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&r.indexOf(n)<0&&(t[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var s=0;for(n=Object.getOwnPropertySymbols(e);s<n.length;s++)r.indexOf(n[s])<0&&Object.prototype.propertyIsEnumerable.call(e,n[s])&&(t[n[s]]=e[n[s]])}return t}const me=r.createContext(null);me.displayName="RHFContext";const he=()=>r.useContext(me);var ye=()=>{const e=typeof performance===f?Date.now():1e3*performance.now();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(r){const t=(16*Math.random()+e)%16|0;return("x"==r?t:3&t|8).toString(16)}))};var ve=(e,r)=>S(r)?[]:O(r)?function(e,r){let t=-1;for(;++t<e.length;)r.indexOf(t)>=0&&delete e[t];return k(e)}(e,r):((e,r)=>[...e.slice(0,r),...e.slice(r+1)])(e,r),pe=(e,r,t)=>O(e)?(S(e[t])&&(e[t]=void 0),e.splice(t,0,e.splice(r,1)[0]),e):[],Oe=(e,r,t)=>{const n=[e[t],e[r]];e[r]=n[0],e[t]=n[1]};function je(e,r){return[...O(r)?r:[r||void 0],...e]}function Re(e,r,t){return[...e.slice(0,r),...O(t)?t:[t||void 0],...e.slice(r)]}var Fe=e=>O(e)?Array(e.length).fill(void 0):void 0;function Ve(e){if(R(e)){const r={};for(const t in e)r[t]=!0;return[r]}return[!0]}var Ce=e=>(O(e)?e:[e]).map(Ve).flat();const xe=(e,r)=>Object.assign({[r]:ye()},e),Se=(e,r)=>(O(e)?e:[]).map(e=>xe(e,r));e.Controller=e=>{var{name:t,rules:n,as:s,render:c,defaultValue:u,control:i,onFocus:a}=e,o=be(e,["name","rules","as","render","defaultValue","control","onFocus"]);const l=he(),{defaultValuesRef:f,setValue:d,register:g,unregister:b,trigger:m,mode:h,reValidateMode:{isReValidateOnBlur:y,isReValidateOnChange:v},formStateRef:{current:{isSubmitted:p,touched:O}},updateFormState:j,readFormStateRef:F,fieldsRef:V,fieldArrayNamesRef:x,shallowFieldsStateRef:k}=i||l.control,E=!ae(x.current,t),D=()=>!S(w(k.current,t))&&E?w(k.current,t):S(u)?w(f.current,t):u,[A,B]=r.useState(D()),W=r.useRef(A),L=r.useRef(a),N=e=>!ce(Object.assign({isBlurEvent:e,isReValidateOnBlur:y,isReValidateOnChange:v,isSubmitted:p,isTouched:!!w(O,t)},h)),T=([e])=>{const r=(e=>G(e)||!R(e.target)||R(e.target)&&!e.type?e:S(e.target.value)?e.target.checked:e.target.value)(e);return B(r),W.current=r,r},M=r.useCallback(()=>{V.current[t]?V.current[t]=Object.assign({ref:V.current[t].ref},n):(g(Object.defineProperty({name:t,focus:L.current},"value",{set(e){B(e),W.current=e},get:()=>W.current}),n),E&&!w(f.current,t)&&B(D()))},[n,t,g]);r.useEffect(()=>()=>{!ae(x.current,t)&&b(t)},[b,t,x]),r.useEffect(()=>{M()},[M]),r.useEffect(()=>{V.current[t]||(M(),E&&B(D()))});const P=()=>{F.current.touched&&!w(O,t)&&(C(O,t,!0),j({touched:O})),N(!0)&&m(t)},$=(...e)=>d(t,T(e),{shouldValidate:N(),shouldDirty:!0}),H=Object.assign(Object.assign({},o),{onChange:$,onBlur:P,name:t,value:A});return s?r.isValidElement(s)?r.cloneElement(s,H):r.createElement(s,H):c?c({onChange:$,onBlur:P,value:A,name:t}):null},e.FormProvider=e=>{var{children:t}=e,n=be(e,["children"]);return r.createElement(me.Provider,{value:Object.assign({},n)},t)},e.appendErrors=re,e.get=w,e.transformToNestObject=x,e.useFieldArray=({control:e,name:t,keyName:n="id"})=>{const s=he(),c=r.useRef(-1),{isWatchAllRef:u,resetFieldArrayFunctionRef:i,fieldArrayNamesRef:a,fieldsRef:o,defaultValuesRef:l,removeFieldEventListener:f,formStateRef:d,formStateRef:{current:{dirtyFields:g,touched:b}},shallowFieldsStateRef:m,updateFormState:h,readFormStateRef:y,watchFieldsRef:v,validFieldsRef:p,fieldsWithValidationRef:j,fieldArrayDefaultValuesRef:R,validateResolver:F,renderWatchedInputs:V,getValues:x,shouldUnregister:E}=e||s.control,D=ue(t),A=r.useRef([...w(R.current,D)?w(R.current,t,[]):w(E?l.current:m.current,t,[])]),[B,W]=r.useState(Se(A.current,n)),L=r.useRef(B),N=()=>w(x()||{},t,L.current).map((e,r)=>Object.assign(Object.assign({},L.current[r]),e));L.current=B,a.current.add(t),w(R.current,D)||C(R.current,D,w(l.current,D));const T=e=>e.map(e=>xe(e,n)),M=e=>{if(W(e),y.current.isValid&&F){const r=x();C(r,t,e),F(r)}},P=e=>(y.current.isDirty||y.current.dirtyFields)&&(S(e)||!K(e.map((e={})=>{var r=n;e[r];return be(e,["symbol"==typeof r?r:r+""])}),w(l.current,t))),$=()=>{for(const e in o.current)ie(e,t)&&o.current[e]&&f(o.current[e],!0)},H=e=>!k(w(e,t,[])).length&&q(e,t),I=(e,r,n=!0,s=!0,c=!1)=>{if(w(m.current,t)){const n=e(w(m.current,t),r.argA,r.argB);s&&C(m.current,t,n)}if(w(R.current,t)){const n=e(w(R.current,t),r.argA,r.argB);s&&C(R.current,t,n),H(R.current)}if(O(w(d.current.errors,t))){const n=e(w(d.current.errors,t),r.argA,r.argB);s&&C(d.current.errors,t,n),H(d.current.errors)}if(y.current.touched&&w(b,t)){const n=e(w(b,t),r.argA,r.argB);s&&C(b,t,n),H(b)}if(y.current.dirtyFields||y.current.isDirty){const n=e(w(g,t,[]),r.argC,r.argD);s&&C(g,t,n),H(g)}c&&y.current.isValid&&!F&&(C(p.current,t,e(w(p.current,t,[]),r.argA)),H(p.current),C(j.current,t,e(w(j.current,t,[]),r.argA)),H(j.current)),h({errors:d.current.errors,dirtyFields:g,isDirty:n,touched:b})},U=e=>{$(),!e&&q(R.current,t),q(m.current,t),A.current=w(e||l.current,t),W(Se(A.current,n))};return r.useEffect(()=>{const e=w(R.current,t);if(e&&B.length<e.length&&(e.pop(),C(R.current,t,e)),u.current)h();else if(v){let e=!0;for(const r of v.current)if(r.startsWith(t)){h(),e=!1;break}e&&V(t)}if(c.current>-1)for(const e in o.current){const r=o.current[e];if(e.startsWith(`${t}[${c.current}]`)&&r.ref.focus){r.ref.focus();break}}c.current=-1},[B,t]),r.useEffect(()=>{const e=i.current,r=a.current;return ue(t)||(e[t]=U),()=>{$(),delete e[t],r.delete(t)}},[]),{swap:r.useCallback((e,r)=>{const t=N();Oe(t,e,r),$(),M([...t]),I(Oe,{argA:e,argB:r,argC:e,argD:r},P(t),!1)},[t]),move:r.useCallback((e,r)=>{const t=N();pe(t,e,r),$(),M([...t]),I(pe,{argA:e,argB:r,argC:e,argD:r},P(t),!1)},[t]),prepend:r.useCallback((e,r=!0)=>{const t=Fe(e);M(je(N(),O(e)?T(e):[xe(e,n)])),$(),I(je,{argA:t,argC:Ce(e)}),c.current=r?0:-1},[t]),append:r.useCallback((e,r=!0)=>{if(M([...L.current,...O(e)?T(e):[xe(e,n)]]),y.current.dirtyFields||y.current.isDirty){const r=w(g,t,[]);C(g,t,[...L.current.length>r.length?(Fe(L.current)||[]).map((e,t)=>r[t]):r,...Ce(e)]),h({isDirty:!0,dirtyFields:g})}E||(m.current[t]=[...m.current[t]||[],e]),c.current=r?L.current.length:-1},[t]),remove:r.useCallback(e=>{const r=N();M(ve(r,e)),$(),I(ve,{argA:e,argC:e},P(ve(r,e)),!0,!0)},[t]),insert:r.useCallback((e,r,t=!0)=>{const s=Fe(r),u=N();M(Re(u,e,O(r)?T(r):[xe(r,n)])),$(),I(Re,{argA:e,argB:s,argC:e,argD:Ce(r)},P(Re(u,e))),c.current=t?e:-1},[t]),fields:B}},e.useForm=function({mode:e=a,reValidateMode:u=i,resolver:o,context:f,defaultValues:d={},shouldFocusError:g=!0,shouldUnregister:b=!0,criteriaMode:m}={}){const h=r.useRef({}),y=r.useRef({}),v=r.useRef(new Set),j=r.useRef({}),V=r.useRef({}),D=r.useRef({}),A=r.useRef({}),T=r.useRef(d),M=r.useRef({}),P=r.useRef(!1),U=r.useRef(!1),Q=r.useRef(),X=r.useRef(b?{}:Object.assign({},d)),Z=r.useRef({}),ee=r.useRef(f),re=r.useRef(o),ie=r.useRef(new Set),be=r.useRef(oe(e)),{isOnSubmit:me,isOnTouch:he}=be.current,ye=m===l,[ve,pe]=r.useState({isDirty:!1,dirtyFields:{},isSubmitted:!1,submitCount:0,touched:{},isSubmitting:!1,isSubmitSuccessful:!1,isValid:!me,errors:{}}),Oe=r.useRef({isDirty:!ge,dirtyFields:!ge,touched:!ge||he,isSubmitting:!ge,isValid:!ge}),je=r.useRef(ve),Re=r.useRef(),{isOnBlur:Fe,isOnChange:Ve}=r.useRef(oe(u)).current;ee.current=f,re.current=o,je.current=ve;const Ce=r.useCallback((e={})=>!P.current&&pe(Object.assign(Object.assign({},je.current),e)),[]),xe=r.useCallback((e,r,t=!1,n={},s)=>{let c=t||function({errors:e,name:r,error:t,validFields:n,fieldsWithValidation:s}){const c=S(t),u=w(e,r);return c&&!!u||!c&&!K(u,t,!0)||c&&w(s,r)&&!w(n,r)}({errors:je.current.errors,error:r,name:e,validFields:A.current,fieldsWithValidation:D.current});const u=w(je.current.errors,e);r?(q(A.current,e),c=c||!u||!K(u,r,!0),C(je.current.errors,e,r)):((w(D.current,e)||re.current)&&(C(A.current,e,!0),c=c||u),q(je.current.errors,e)),(c&&!p(t)||!I(n))&&Ce(Object.assign(Object.assign(Object.assign({},n),{errors:je.current.errors}),re.current?{isValid:!!s}:{}))},[]),Se=r.useCallback((e,r)=>{const{ref:n,options:s}=h.current[e],c=de&&t(n)&&p(r)?"":r;B(n)&&s?s.forEach(({ref:e})=>e.checked=e.value===c):W(n)&&!z(c)?n.files=c:N(n)?[...n.options].forEach(e=>e.selected=c.includes(e.value)):L(n)&&s?s.length>1?s.forEach(({ref:e})=>e.checked=O(c)?!!c.find(r=>r===e.value):c===e.value):s[0].ref.checked=!!c:n.value=c},[]),ke=()=>!K(Me(),I(T.current)?M.current:T.current)||!I(je.current.dirtyFields),we=r.useCallback((e,r=!0)=>{if(Oe.current.isDirty||Oe.current.dirtyFields){const t=w(M.current,e)!==$(h,e,X),n=w(je.current.dirtyFields,e),s=je.current.isDirty;t?C(je.current.dirtyFields,e,!0):q(je.current.dirtyFields,e);const c={isDirty:ke(),dirtyFields:je.current.dirtyFields},u=Oe.current.isDirty&&s!==c.isDirty||Oe.current.dirtyFields&&n!==w(je.current.dirtyFields,e);return u&&r&&(je.current=Object.assign(Object.assign({},je.current),c),Ce(Object.assign({},c))),u?c:{}}return{}},[]),Ee=r.useCallback(async(e,r)=>{if(h.current[e]){const t=(await te(h,ye,h.current[e],X))[e];return xe(e,t,r),S(t)}return!1},[xe,ye]),De=r.useCallback(async e=>{const{errors:r}=await re.current(Me(),ee.current,ye),t=je.current.isValid;if(O(e)){const t=e.map(e=>{const t=w(r,e);return t?C(je.current.errors,e,t):q(je.current.errors,e),!t}).every(Boolean);return Ce({isValid:I(r),errors:je.current.errors}),t}{const n=w(r,e);return xe(e,n,t!==I(r),{},I(r)),!n}},[xe,ye]),Ae=r.useCallback(async e=>{const r=e||Object.keys(h.current);if(re.current)return De(r);if(O(r)){const e=await Promise.all(r.map(async e=>await Ee(e,null)));return Ce(),e.every(Boolean)}return await Ee(r,Oe.current.isValid)},[De,Ee]),Be=r.useCallback((e,r,{shouldDirty:t,shouldValidate:n})=>{const s={};C(s,e,r);for(const c of ne(e,r))h.current[c]&&(Se(c,w(s,c)),t&&we(c),n&&Ae(c))},[Ae,Se,we]),We=r.useCallback((e,r,t={})=>{h.current[e]?(Se(e,r),t.shouldDirty&&we(e)):G(r)||(Be(e,r,t),ie.current.has(e)&&(y.current[e]=r,Z.current[e]({[e]:r}),(Oe.current.isDirty||Oe.current.dirtyFields)&&(C(je.current.dirtyFields,e,function e(r,t,n,s,c){let u=-1;for(;++u<r.length;){for(const s in r[u])O(r[u][s])?(!n[u]&&(n[u]={}),n[u][s]=[],e(r[u][s],w(t[u]||{},s,[]),n[u][s],n[u],s)):w(t[u]||{},s)===r[u][s]?C(n[u]||{},s):n[u]=Object.assign(Object.assign({},n[u]),{[s]:!0});!n.length&&s&&delete s[c]}return n.length?n:void 0}(r,w(T.current,e,[]),w(je.current.dirtyFields,e,[]))),Ce({isDirty:!K(Object.assign(Object.assign({},Me()),{[e]:r}),T.current),dirtyFields:je.current.dirtyFields})))),!b&&C(X.current,e,r)},[we,Se,Be]),Le=e=>U.current||v.current.has(e)||v.current.has((e.match(/\w+/)||[])[0]),Ne=(e,r=!0)=>{if(!I(j.current))for(const t in j.current)e&&j.current[t].size&&!j.current[t].has(e)&&!j.current[t].has(ue(e))||(V.current[t](),r=!1);return r};function Te(e){if(!b)for(const r of ie.current)F(r)&&!e[r]&&(e=Object.assign(Object.assign({},e),{[r]:[]}));return e}function Me(e){if(z(e))return $(h,e,X);if(O(e)){const r={};for(const t of e)C(r,t,$(h,t,X));return r}return Te(J(h,X))}Q.current=Q.current?Q.current:async({type:e,target:r})=>{const t=r.name,s=h.current[t];let c,u;if(s){const r=e===n,i=ce(Object.assign({isBlurEvent:r,isReValidateOnChange:Ve,isReValidateOnBlur:Fe,isTouched:!!w(je.current.touched,t),isSubmitted:je.current.isSubmitted},be.current));let a=we(t,!1),o=!I(a)||Le(t);if(r&&!w(je.current.touched,t)&&Oe.current.touched&&(C(je.current.touched,t,!0),a=Object.assign(Object.assign({},a),{touched:je.current.touched})),i)return Ne(t),(!I(a)||o&&I(a))&&Ce(a);if(re.current){const{errors:e}=await re.current(Me(),ee.current,ye),r=je.current.isValid;c=w(e,t),u=I(e),r!==u&&(o=!0)}else c=(await te(h,ye,s,X))[t];Ne(t),xe(t,c,o,a,u)}};const Pe=r.useCallback(async(e={})=>{const{errors:r}=await re.current(Object.assign(Object.assign(Object.assign({},T.current),Me()),e),ee.current,ye),t=I(r);je.current.isValid!==t&&Ce({isValid:t})},[ye]),$e=r.useCallback((e,r)=>function(e,r,t,n,s,c){const{ref:u,ref:{name:i,type:a}}=t,o=e.current[i];if(!s){const r=$(e,i,n);S(r)||C(n.current,i,r)}if(a)if((B(u)||L(u))&&o){const{options:t}=o;O(t)&&t.length?(k(t).forEach((e,n)=>{const{ref:s}=e;(s&&H(s)&&_(e,s)||c)&&(E(s,r),q(t,`[${n}]`))}),t&&!k(t).length&&delete e.current[i]):delete e.current[i]}else(H(u)&&_(o,u)||c)&&(E(u,r),delete e.current[i]);else delete e.current[i]}(h,Q.current,e,X,b,r),[b]),He=r.useCallback((e,r)=>{e&&($e(e,r),b&&!k(e.options||[]).length&&(q(M.current,e.ref.name),q(A.current,e.ref.name),q(D.current,e.ref.name),q(je.current.errors,e.ref.name),C(je.current.dirtyFields,e.ref.name,!0),Ce({errors:je.current.errors,isDirty:ke(),dirtyFields:je.current.dirtyFields}),re.current&&Pe()))},[Pe,$e]),Ie=r.useCallback((e,r,t)=>{const n=t?j.current[t]:v.current,s=S(r)?T.current:r,c=J(h,X,!1,e);return z(e)?se(c,e,n,S(r)?w(s,e):r,!0):O(e)?e.reduce((e,r)=>Object.assign(Object.assign({},e),{[r]:se(c,r,n,s)}),{}):(U.current=S(t),x(!I(c)&&c||s))},[]);function Ue(e,r={}){const{name:u,type:i,value:a}=e,o=Object.assign({ref:e},r),l=h.current,f=le(e),d=ae(ie.current,u),g=r=>de&&(!t(e)||r===e);let b,m=l[u],y=!0;if(m&&(f?O(m.options)&&k(m.options).find(e=>a===e.ref.value&&g(e.ref)):g(m.ref)))return void(l[u]=Object.assign(Object.assign({},m),r));m=i?f?Object.assign({options:[...k(m&&m.options||[]),{ref:e}],ref:{type:i,name:u}},r):Object.assign({},o):o,l[u]=m;const v=S(w(X.current,u));if(I(T.current)&&v||(b=w(v?T.current:X.current,u),y=S(b),y||d||Se(u,b)),I(r)||(C(D.current,u,!0),!me&&Oe.current.isValid&&te(h,ye,m,X).then(e=>{const r=je.current.isValid;I(e)?C(A.current,u,!0):q(A.current,u),r!==I(e)&&Ce()})),!(M.current[u]||d&&y)){const e=$(h,u,X);C(M.current,u,y?R(e)?Object.assign({},e):e:b),!d&&q(je.current.dirtyFields,u)}i&&function({ref:e},r,u){t(e)&&u&&(e.addEventListener(r?s:c,u),e.addEventListener(n,u))}(f&&m.options?m.options[m.options.length-1]:m,f||"select-one"===e.type,Q.current)}const qe=r.useCallback((e,r)=>async t=>{t&&t.preventDefault&&(t.preventDefault(),t.persist());let n={},s=Te(J(h,X,!0));Oe.current.isSubmitting&&Ce({isSubmitting:!0});try{if(re.current){const{errors:e,values:r}=await re.current(s,ee.current,ye);je.current.errors=e,n=e,s=r}else for(const e of Object.values(h.current))if(e){const{ref:{name:r}}=e,t=await te(h,ye,e,X);t[r]?(C(n,r,t[r]),q(A.current,r)):w(D.current,r)&&(q(je.current.errors,r),C(A.current,r,!0))}I(n)&&Object.keys(je.current.errors).every(e=>e in h.current)?(Ce({errors:{},isSubmitting:!0}),await e(s,t)):(je.current.errors=Object.assign(Object.assign({},je.current.errors),n),r&&await r(n,t),g&&((e,r)=>{for(const t in e)if(w(r,t)){const r=e[t];if(r){if(r.ref.focus){r.ref.focus();break}if(r.options){r.options[0].ref.focus();break}}}})(h.current,n))}finally{Ce({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:I(je.current.errors),errors:je.current.errors,submitCount:je.current.submitCount+1})}},[g,ye]);Re.current=Re.current||!de?Re.current:function(e,r){const t=new MutationObserver(()=>{for(const t of Object.values(e.current))if(t&&t.options)for(const e of t.options)e&&e.ref&&H(e.ref)&&r(t);else t&&H(t.ref)&&r(t)});return t.observe(window.document,{childList:!0,subtree:!0}),t}(h,He),r.useEffect(()=>(P.current=!1,o&&Oe.current.isValid&&Pe(),()=>{P.current=!0,Re.current&&Re.current.disconnect(),X.current={},h.current&&Object.values(h.current).forEach(e=>He(e,!0))}),[He]),!o&&Oe.current.isValid&&(ve.isValid=K(A.current,D.current)&&I(je.current.errors));const _e={trigger:Ae,setValue:r.useCallback((function(e,r,t){We(e,r,t),Le(e)&&Ce(),Ne(e),(t||{}).shouldValidate&&Ae(e)}),[We,Ae]),getValues:r.useCallback(Me,[]),register:r.useCallback((function(e,r){if(!fe)if(z(e))Ue({name:e},r);else{if(!R(e)||!("name"in e))return r=>r&&Ue(r,e);Ue(e,r)}}),[T.current]),unregister:r.useCallback((function(e){for(const r of O(e)?e:[e])He(h.current[r],!0)}),[])},ze=Object.assign({renderWatchedInputs:Ne,shouldUnregister:b,removeFieldEventListener:$e,watchInternal:Ie,mode:be.current,reValidateMode:{isReValidateOnBlur:Fe,isReValidateOnChange:Ve},fieldsRef:h,isWatchAllRef:U,watchFieldsRef:v,resetFieldArrayFunctionRef:Z,useWatchFieldsRef:j,useWatchRenderFunctionsRef:V,fieldArrayDefaultValuesRef:y,validFieldsRef:A,fieldsWithValidationRef:D,fieldArrayNamesRef:ie,readFormStateRef:Oe,formStateRef:je,defaultValuesRef:T,shallowFieldsStateRef:X,updateFormState:Ce,validateResolver:o?Pe:void 0},_e);return Object.assign({watch:function(e,r){return Ie(e,r)},control:ze,formState:ge?new Proxy(ve,{get:(e,r)=>{if(r in e)return Oe.current[r]=!0,e[r]}}):ve,handleSubmit:qe,reset:r.useCallback((e,r={})=>{if(de)for(const e of Object.values(h.current))if(e){const{ref:r,options:n}=e,s=le(r)&&O(n)?n[0].ref:r;if(t(s))try{s.closest("form").reset();break}catch(e){}}h.current={},T.current=Object.assign({},e||T.current),e&&Ne(""),X.current=b?{}:Object.assign({},e)||{},Object.values(Z.current).forEach(e=>Y(e)&&e()),(({errors:e,isDirty:r,isSubmitted:t,touched:n,isValid:s,submitCount:c,dirtyFields:u})=>{s||(A.current={},D.current={}),M.current={},y.current={},v.current=new Set,U.current=!1,Ce({submitCount:c?je.current.submitCount:0,isDirty:!!r&&je.current.isDirty,isSubmitted:!!t&&je.current.isSubmitted,isValid:!!s&&je.current.isValid,dirtyFields:u?je.current.dirtyFields:{},touched:n?je.current.touched:{},errors:e?je.current.errors:{},isSubmitting:!1,isSubmitSuccessful:!1})})(r)},[]),clearErrors:r.useCallback((function(e){e&&(O(e)?e:[e]).forEach(e=>h.current[e]?F(e)?delete je.current.errors[e]:C(je.current.errors,e,void 0):q(je.current.errors,e)),Ce({errors:e?je.current.errors:{}})}),[]),setError:r.useCallback((function(e,r){const t=(h.current[e]||{}).ref;C(je.current.errors,e,Object.assign(Object.assign({},r),{ref:t})),Ce({isValid:!1,errors:je.current.errors}),r.shouldFocus&&t&&t.focus&&t.focus()}),[]),errors:ve.errors},_e)},e.useFormContext=he,e.useWatch=function({control:e,name:t,defaultValue:n}){const s=he(),{useWatchFieldsRef:c,useWatchRenderFunctionsRef:u,watchInternal:i,defaultValuesRef:a}=e||s.control,[o,l]=r.useState(S(n)?z(t)?w(a.current,t):O(t)?t.reduce((e,r)=>Object.assign(Object.assign({},e),{[r]:w(a.current,r)}),{}):a.current:n),f=r.useRef(),d=r.useRef(n),g=r.useCallback(()=>{const e=i(t,d.current,f.current);l(R(e)?Object.assign({},e):O(e)?[...e]:e)},[l,i,d,t,f]);return r.useEffect(()=>{const e=f.current=ye(),r=u.current,n=c.current;return n[e]=new Set,r[e]=g,i(t,d.current,e),()=>{delete n[e],delete r[e]}},[t,g,u,c,i,d]),S(o)?n: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";var t=e=>e instanceof HTMLElement;const n="blur",s="change",c="input",u="onBlur",i="onChange",a="onSubmit",o="onTouched",l="all",f="undefined",d="max",y="min",g="maxLength",b="minLength",m="pattern",h="required",v="validate";var p=e=>null==e;const O=e=>"object"==typeof e;var A=e=>!p(e)&&!Array.isArray(e)&&O(e)&&!(e instanceof Date),j=e=>!Array.isArray(e)&&(/^\w*$/.test(e)||!/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/.test(e)),R=e=>e.filter(Boolean),F=e=>R(e.replace(/["|']/g,"").replace(/\[/g,".").replace(/\]/g,"").split("."));function V(e,r,t){let n=-1;const s=j(r)?[r]:F(r),c=s.length,u=c-1;for(;++n<c;){const r=s[n];let c=t;if(n!==u){const t=e[r];c=A(t)||Array.isArray(t)?t:isNaN(+s[n+1])?{}:[]}e[r]=c,e=e[r]}return e}var C=(e,r={})=>{for(const t in e)j(t)?r[t]=e[t]:V(r,t,e[t]);return r},x=e=>void 0===e,S=(e,r,t)=>{const n=R(r.split(/[,[\].]+?/)).reduce(((e,r)=>p(e)?e:e[r]),e);return x(n)||n===e?x(e[r])?t:e[r]:n},k=(e,r)=>{t(e)&&e.removeEventListener&&(e.removeEventListener(c,r),e.removeEventListener(s,r),e.removeEventListener(n,r))};const w={isValid:!1,value:""};var E=e=>Array.isArray(e)?e.reduce(((e,r)=>r&&r.ref.checked?{isValid:!0,value:r.ref.value}:e),w):w,D=e=>"radio"===e.type,B=e=>"file"===e.type,L=e=>"checkbox"===e.type,T=e=>"select-multiple"===e.type;const N={value:!1,isValid:!1},W={value:!0,isValid:!0};var $=e=>{if(Array.isArray(e)){if(e.length>1){const r=e.filter((e=>e&&e.ref.checked)).map((({ref:{value:e}})=>e));return{value:r,isValid:!!r.length}}const{checked:r,value:t,attributes:n}=e[0].ref;return r?n&&!x(n.value)?x(t)||""===t?W:{value:t,isValid:!0}:W:N}return N};function M(e,r,t,n){const s=e.current[r];if(s){const{ref:{value:e,disabled:r},ref:t}=s;if(r&&n)return;return B(t)?t.files:D(t)?E(s.options).value:T(t)?(c=t.options,[...c].filter((({selected:e})=>e)).map((({value:e})=>e))):L(t)?$(s.options).value:e}var c;if(t)return S(t.current,r)}function P(e){return!e||e instanceof HTMLElement&&e.nodeType!==Node.DOCUMENT_NODE&&P(e.parentNode)}var H=e=>A(e)&&!Object.keys(e).length,U=e=>"boolean"==typeof e;function q(e,r){const t=j(r)?[r]:F(r),n=1==t.length?e:function(e,r){const t=r.slice(0,-1).length;let n=0;for(;n<t;)e=x(e)?n++:e[r[n++]];return e}(e,t),s=t[t.length-1];let c=void 0;n&&delete n[s];for(let r=0;r<t.slice(0,-1).length;r++){let n=-1,s=void 0;const u=t.slice(0,-(r+1)),i=u.length-1;for(r>0&&(c=e);++n<u.length;){const r=u[n];s=s?s[r]:e[r],i===n&&(A(s)&&H(s)||Array.isArray(s)&&!s.filter((e=>A(e)&&!H(e)||U(e))).length)&&(c?delete c[r]:delete e[r]),c=s}}return e}const I=(e,r)=>e&&e.ref===r;function _(e,r,t,n,s){let c=-1;for(;++c<e.length;){for(const n in e[c])Array.isArray(e[c][n])?(!t[c]&&(t[c]={}),t[c][n]=[],_(e[c][n],S(r[c]||{},n,[]),t[c][n],t[c],n)):S(r[c]||{},n)===e[c][n]?V(t[c]||{},n):t[c]=Object.assign(Object.assign({},t[c]),{[n]:!0});!t.length&&n&&delete n[s]}return t.length?t:void 0}var z=e=>"string"==typeof e,G=e=>p(e)||!O(e);function J(e,r){if(G(e)||G(r))return r;for(const t in r){const n=e[t],s=r[t];try{e[t]=A(n)&&A(s)||Array.isArray(n)&&Array.isArray(s)?J(n,s):s}catch(e){}}return e}var K=(e,r,t,n)=>{const s={};for(const r in e.current)(x(n)||(z(n)?r.startsWith(n):Array.isArray(n)&&n.find((e=>r.startsWith(e)))))&&(s[r]=M(e,r,void 0,t));return J(C(Object.assign({},(r||{}).current||{})),C(s))};function Q(e=[],r=[],t){const n=Object.keys(e),s=Object.keys(r);if(n.length!==s.length)return!1;for(const s of n)if(!t||!["ref","context"].includes(s)){const n=e[s],c=r[s];if((A(n)||Array.isArray(n))&&(A(c)||Array.isArray(c))?!Q(n,c,t):n!==c)return!1}return!0}var X=e=>e instanceof RegExp;var Y=e=>{return A(r=e)&&!X(r)?e:{value:e,message:""};var r},Z=e=>"function"==typeof e,ee=e=>z(e)||A(e)&&r.isValidElement(e);function re(e,r,t="validate"){if(ee(e)||U(e)&&!e)return{type:t,message:ee(e)?e:"",ref:r}}var te=(e,r,t,n,s)=>{if(r){const r=t[e];return Object.assign(Object.assign({},r),{types:Object.assign(Object.assign({},r&&r.types?r.types:{}),{[n]:s||!0})})}return{}},ne=async(e,r,{ref:t,ref:{type:n,value:s},options:c,required:u,maxLength:i,minLength:a,min:o,max:l,pattern:f,validate:O},j)=>{const R=e.current,F=t.name,V={},C=D(t),x=L(t),S=C||x,k=""===s,w=te.bind(null,F,r,V),B=(e,r,n,s=g,c=b)=>{const u=e?r:n;V[F]=Object.assign({type:e?s:c,message:u,ref:t},w(e?s:c,u))};if(u&&(!C&&!x&&(k||p(s))||U(s)&&!s||x&&!$(c).isValid||C&&!E(c).isValid)){const{value:e,message:n}=ee(u)?{value:!!u,message:u}:Y(u);if(e&&(V[F]=Object.assign({type:h,message:n,ref:S?((R[F].options||[])[0]||{}).ref:t},w(h,n)),!r))return V}if(!p(o)||!p(l)){let e,c;const{value:u,message:i}=Y(l),{value:a,message:f}=Y(o);if("number"===n||!n&&!isNaN(s)){const r=t.valueAsNumber||parseFloat(s);p(u)||(e=r>u),p(a)||(c=r<a)}else{const r=t.valueAsDate||new Date(s);z(u)&&(e=r>new Date(u)),z(a)&&(c=r<new Date(a))}if((e||c)&&(B(!!e,i,f,d,y),!r))return V}if(z(s)&&!k&&(i||a)){const{value:e,message:t}=Y(i),{value:n,message:c}=Y(a),u=s.toString().length,o=!p(e)&&u>e,l=!p(n)&&u<n;if((o||l)&&(B(!!o,t,c),!r))return V}if(f&&!k){const{value:e,message:n}=Y(f);if(X(e)&&!e.test(s)&&(V[F]=Object.assign({type:m,message:n,ref:t},w(m,n)),!r))return V}if(O){const n=M(e,F,j),s=S&&c?c[0].ref:t;if(Z(O)){const e=re(await O(n),s);if(e&&(V[F]=Object.assign(Object.assign({},e),w(v,e.message)),!r))return V}else if(A(O)){let e={};for(const[t,c]of Object.entries(O)){if(!H(e)&&!r)break;const u=re(await c(n),s,t);u&&(e=Object.assign(Object.assign({},u),w(t,u.message)),r&&(V[F]=e))}if(!H(e)&&(V[F]=Object.assign({ref:s},e),!r))return V}}return V};const se=(e,r)=>Object.entries(r).map((([t,n])=>((r,t,n)=>{const s=n?`${e}.${r}`:`${e}[${r}]`;return G(t)?s:se(s,t)})(t,n,A(r)))).flat(1/0);var ce=(e,r,t,n,s)=>{let c;return t.add(r),H(e)?c=void 0:(c=S(e,r),(A(c)||Array.isArray(c))&&se(r,c).forEach((e=>t.add(e)))),x(c)?s?n:S(n,r):c},ue=({isOnBlur:e,isOnChange:r,isOnTouch:t,isTouched:n,isReValidateOnBlur:s,isReValidateOnChange:c,isBlurEvent:u,isSubmitted:i,isOnAll:a})=>!a&&(!i&&t?!(n||u):(i?s:e)?!u:!(i?c:r)||u),ie=e=>e.substring(0,e.indexOf("["));const ae=(e,r)=>RegExp(`^${r}[\\d+]`.replace(/\[/g,"\\[").replace(/\]/g,"\\]")).test(e);var oe=(e,r)=>[...e].some((e=>ae(r,e)));function le(e){let r;if(G(e))return e;if(e instanceof Date)return r=new Date(e.getTime()),r;r=Array.isArray(e)?[]:{};for(const t in e)r[t]=le(e[t]);return r}var fe=e=>({isOnSubmit:!e||e===a,isOnBlur:e===u,isOnChange:e===i,isOnAll:e===l,isOnTouch:e===o}),de=e=>D(e)||L(e);const ye=typeof window===f,ge=typeof document!==f&&!ye&&!x(window.HTMLElement),be=ge?"Proxy"in window:typeof Proxy!==f;function me(e,r){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&r.indexOf(n)<0&&(t[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var s=0;for(n=Object.getOwnPropertySymbols(e);s<n.length;s++)r.indexOf(n[s])<0&&Object.prototype.propertyIsEnumerable.call(e,n[s])&&(t[n[s]]=e[n[s]])}return t}const he=r.createContext(null);he.displayName="RHFContext";const ve=()=>r.useContext(he);var pe=()=>{const e=typeof performance===f?Date.now():1e3*performance.now();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(r){const t=(16*Math.random()+e)%16|0;return("x"==r?t:3&t|8).toString(16)}))};var Oe=(e,r)=>x(r)?[]:Array.isArray(r)?function(e,r){let t=-1;for(;++t<e.length;)r.indexOf(t)>=0&&delete e[t];return R(e)}(e,r):((e,r)=>[...e.slice(0,r),...e.slice(r+1)])(e,r),Ae=(e,r,t)=>Array.isArray(e)?(x(e[t])&&(e[t]=void 0),e.splice(t,0,e.splice(r,1)[0]),e):[],je=(e,r,t)=>{const n=[e[t],e[r]];e[r]=n[0],e[t]=n[1]};function Re(e,r){return[...Array.isArray(r)?r:[r||void 0],...e]}function Fe(e,r,t){return[...e.slice(0,r),...Array.isArray(t)?t:[t||void 0],...e.slice(r)]}var Ve=e=>Array.isArray(e)?Array(e.length).fill(void 0):void 0;function Ce(e){if(A(e)){const r={};for(const t in e)r[t]=!0;return[r]}return[!0]}var xe=e=>(Array.isArray(e)?e:[e]).map(Ce).flat();const Se=(e,r)=>e.map((e=>Object.assign({[r]:pe()},e)));e.Controller=e=>{var{name:t,rules:n,as:s,render:c,defaultValue:u,control:i,onFocus:a}=e,o=me(e,["name","rules","as","render","defaultValue","control","onFocus"]);const l=ve(),{defaultValuesRef:f,setValue:d,register:y,unregister:g,trigger:b,mode:m,reValidateMode:{isReValidateOnBlur:h,isReValidateOnChange:v},formStateRef:{current:{isSubmitted:p,touched:O}},updateFormState:j,readFormStateRef:R,fieldsRef:F,fieldArrayNamesRef:C,shallowFieldsStateRef:k}=i||l.control,w=!oe(C.current,t),E=()=>!x(S(k.current,t))&&w?S(k.current,t):x(u)?S(f.current,t):u,[D,B]=r.useState(E()),L=r.useRef(D),T=r.useRef(a),N=e=>!ue(Object.assign({isBlurEvent:e,isReValidateOnBlur:h,isReValidateOnChange:v,isSubmitted:p,isTouched:!!S(O,t)},m)),W=([e])=>{const r=(e=>G(e)||!A(e.target)||A(e.target)&&!e.type?e:x(e.target.value)?e.target.checked:e.target.value)(e);return B(r),L.current=r,r},$=r.useCallback((()=>{F.current[t]?F.current[t]=Object.assign({ref:F.current[t].ref},n):(y(Object.defineProperty({name:t,focus:T.current},"value",{set(e){B(e),L.current=e},get:()=>L.current}),n),w&&!S(f.current,t)&&B(E()))}),[n,t,y]);r.useEffect((()=>()=>g(t)),[g,t]),r.useEffect((()=>{$()}),[$]),r.useEffect((()=>{F.current[t]||($(),w&&B(E()))}));const M=()=>{R.current.touched&&!S(O,t)&&(V(O,t,!0),j({touched:O})),N(!0)&&b(t)},P=(...e)=>d(t,W(e),{shouldValidate:N(),shouldDirty:!0}),H=Object.assign(Object.assign({},o),{onChange:P,onBlur:M,name:t,value:D});return s?r.isValidElement(s)?r.cloneElement(s,H):r.createElement(s,H):c?c({onChange:P,onBlur:M,value:D,name:t}):null},e.FormProvider=e=>{var{children:t}=e,n=me(e,["children"]);return r.createElement(he.Provider,{value:Object.assign({},n)},t)},e.appendErrors=te,e.get=S,e.transformToNestObject=C,e.useFieldArray=({control:e,name:t,keyName:n="id"})=>{const s=ve(),c=r.useRef(-1),{updateWatchedValue:u,resetFieldArrayFunctionRef:i,fieldArrayNamesRef:a,fieldsRef:o,defaultValuesRef:l,removeFieldEventListener:f,formStateRef:d,shallowFieldsStateRef:y,updateFormState:g,readFormStateRef:b,validFieldsRef:m,fieldsWithValidationRef:h,fieldArrayDefaultValuesRef:v,validateResolver:p,getValues:O,shouldUnregister:A}=e||s.control,j=ie(t),F=r.useRef([...S(v.current,j)?S(v.current,t,[]):S(A?l.current:y.current,t,[])]),[C,k]=r.useState(Se(F.current,n)),w=r.useRef(C),E=()=>S(O(),t,w.current).map(((e,r)=>Object.assign(Object.assign({},w.current[r]),e)));w.current=C,a.current.add(t),S(v.current,j)||V(v.current,j,S(l.current,j));const D=e=>{if(k(e),b.current.isValid&&p){const r=O();V(r,t,e),p(r)}},B=e=>(b.current.isDirty||b.current.dirtyFields)&&(x(e)||!Q(e.map(((e={})=>{var r=n;e[r];return me(e,["symbol"==typeof r?r:r+""])})),S(l.current,t))),L=()=>{for(const e in o.current)ae(e,t)&&f(o.current[e],!0)},T=e=>!R(S(e,t,[])).length&&q(e,t),N=e=>{const r=S(l.current,t,[]),s=(e,r)=>{for(const s in e)for(const c in e[s])c===n||r[s]&&e[s]&&e[s][c]===r[s][c]||V(d.current.dirtyFields,`${t}[${s}]`,Object.assign(Object.assign({},S(d.current.dirtyFields,`${t}[${s}]`,{})),{[c]:!0}))};e&&(s(r,e),s(e,r))},W=(e,r,n,s=!0,c=!0,u=!1)=>{if(S(y.current,t)){const n=e(S(y.current,t),r.argA,r.argB);c&&V(y.current,t,n)}if(S(v.current,t)){const n=e(S(v.current,t),r.argA,r.argB);c&&V(v.current,t,n),T(v.current)}if(Array.isArray(S(d.current.errors,t))){const n=e(S(d.current.errors,t),r.argA,r.argB);c&&V(d.current.errors,t,n),T(d.current.errors)}if(b.current.touched&&S(d.current.touched,t)){const n=e(S(d.current.touched,t),r.argA,r.argB);c&&V(d.current.touched,t,n),T(d.current.touched)}if(b.current.dirtyFields||b.current.isDirty){const s=e(S(d.current.dirtyFields,t,[]),r.argC,r.argD);c&&V(d.current.dirtyFields,t,s),N(n),T(d.current.dirtyFields)}u&&b.current.isValid&&!p&&(V(m.current,t,e(S(m.current,t,[]),r.argA)),T(m.current),V(h.current,t,e(S(h.current,t,[]),r.argA)),T(h.current)),g({errors:d.current.errors,dirtyFields:d.current.dirtyFields,isDirty:s,touched:d.current.touched})},$=e=>{L(),!e&&q(v.current,t),q(y.current,t),F.current=S(e||l.current,t),k(Se(F.current,n))};return r.useEffect((()=>{const e=S(v.current,t);if(e&&C.length<e.length&&(e.pop(),V(v.current,t,e)),u(t),c.current>-1)for(const e in o.current){const r=o.current[e];if(e.startsWith(`${t}[${c.current}]`)&&r.ref.focus){r.ref.focus();break}}c.current=-1}),[C,t]),r.useEffect((()=>{const e=i.current,r=a.current;return ie(t)||(e[t]=$),()=>{L(),delete e[t],r.delete(t)}}),[]),{swap:r.useCallback(((e,r)=>{const t=E();je(t,e,r),L(),D([...t]),W(je,{argA:e,argB:r,argC:e,argD:r},void 0,B(t),!1)}),[t]),move:r.useCallback(((e,r)=>{const t=E();Ae(t,e,r),L(),D([...t]),W(Ae,{argA:e,argB:r,argC:e,argD:r},void 0,B(t),!1)}),[t]),prepend:r.useCallback(((e,r=!0)=>{const t=Ve(e),s=Re(E(),Se(Array.isArray(e)?e:[e],n));D(s),L(),W(Re,{argA:t,argC:xe(e)},s),c.current=r?0:-1}),[t]),append:r.useCallback(((e,r=!0)=>{const s=[...w.current,...Se(Array.isArray(e)?e:[e],n)];D(s),(b.current.dirtyFields||b.current.isDirty)&&(N(s),g({isDirty:!0,dirtyFields:d.current.dirtyFields})),A||(y.current[t]=[...y.current[t]||[],e]),c.current=r?w.current.length:-1}),[t]),remove:r.useCallback((e=>{const r=E(),t=Oe(r,e);D(t),L(),W(Oe,{argA:e,argC:e},t,B(Oe(r,e)),!0,!0)}),[t]),insert:r.useCallback(((e,r,t=!0)=>{const s=Ve(r),u=E(),i=Fe(u,e,Se(Array.isArray(r)?r:[r],n));D(i),L(),W(Fe,{argA:e,argB:s,argC:e,argD:xe(r)},i,B(Fe(u,e))),c.current=t?e:-1}),[t]),fields:C}},e.useForm=function({mode:e=a,reValidateMode:u=i,resolver:o,context:f,defaultValues:d={},shouldFocusError:y=!0,shouldUnregister:g=!0,criteriaMode:b}={}){const m=r.useRef({}),h=r.useRef({}),v=r.useRef(new Set),O=r.useRef({}),F=r.useRef({}),w=r.useRef({}),E=r.useRef({}),N=r.useRef(d),W=r.useRef({}),$=r.useRef(!1),U=r.useRef(!1),J=r.useRef(),X=r.useRef(g?{}:le(d)),Y=r.useRef({}),ee=r.useRef(f),re=r.useRef(o),te=r.useRef(new Set),ae=r.useRef(fe(e)),{isOnSubmit:me,isOnTouch:he}=ae.current,ve=b===l,[pe,Oe]=r.useState({isDirty:!1,dirtyFields:{},isSubmitted:!1,submitCount:0,touched:{},isSubmitting:!1,isSubmitSuccessful:!1,isValid:!me,errors:{}}),Ae=r.useRef({isDirty:!be,dirtyFields:!be,touched:!be||he,isSubmitting:!be,isValid:!be}),je=r.useRef(pe),Re=r.useRef(),{isOnBlur:Fe,isOnChange:Ve}=r.useRef(fe(u)).current;ee.current=f,re.current=o,je.current=pe;const Ce=r.useCallback(((e={})=>!$.current&&Oe(Object.assign(Object.assign({},je.current),e))),[]),xe=r.useCallback(((e,r,t=!1,n={},s)=>{let c=t||function({errors:e,name:r,error:t,validFields:n,fieldsWithValidation:s}){const c=x(t),u=S(e,r);return c&&!!u||!c&&!Q(u,t,!0)||c&&S(s,r)&&!S(n,r)}({errors:je.current.errors,error:r,name:e,validFields:E.current,fieldsWithValidation:w.current});const u=S(je.current.errors,e);r?(q(E.current,e),c=c||!u||!Q(u,r,!0),V(je.current.errors,e,r)):((S(w.current,e)||re.current)&&(V(E.current,e,!0),c=c||u),q(je.current.errors,e)),(c&&!p(t)||!H(n))&&Ce(Object.assign(Object.assign(Object.assign({},n),{errors:je.current.errors}),re.current?{isValid:!!s}:{}))}),[]),Se=r.useCallback(((e,r)=>{const{ref:n,options:s}=m.current[e],c=ge&&t(n)&&p(r)?"":r;D(n)&&s?s.forEach((({ref:e})=>e.checked=e.value===c)):B(n)&&!z(c)?n.files=c:T(n)?[...n.options].forEach((e=>e.selected=c.includes(e.value))):L(n)&&s?s.length>1?s.forEach((({ref:e})=>e.checked=Array.isArray(c)?!!c.find((r=>r===e.value)):c===e.value)):s[0].ref.checked=!!c:n.value=c}),[]),ke=()=>!Q(Me(),H(N.current)?W.current:N.current),we=r.useCallback(((e,r=!0)=>{if(Ae.current.isDirty||Ae.current.dirtyFields){const t=S(W.current,e)!==M(m,e,X),n=S(je.current.dirtyFields,e),s=je.current.isDirty;t?V(je.current.dirtyFields,e,!0):q(je.current.dirtyFields,e);const c={isDirty:ke(),dirtyFields:je.current.dirtyFields},u=Ae.current.isDirty&&s!==c.isDirty||Ae.current.dirtyFields&&n!==S(je.current.dirtyFields,e);return u&&r&&(je.current=Object.assign(Object.assign({},je.current),c),Ce(Object.assign({},c))),u?c:{}}return{}}),[]),Ee=r.useCallback((async(e,r)=>{if(m.current[e]){const t=(await ne(m,ve,m.current[e],X))[e];return xe(e,t,r),x(t)}return!1}),[xe,ve]),De=r.useCallback((async e=>{const{errors:r}=await re.current(Me(),ee.current,ve),t=je.current.isValid;if(Array.isArray(e)){const t=e.map((e=>{const t=S(r,e);return t?V(je.current.errors,e,t):q(je.current.errors,e),!t})).every(Boolean);return Ce({isValid:H(r),errors:je.current.errors}),t}{const n=S(r,e);return xe(e,n,t!==H(r),{},H(r)),!n}}),[xe,ve]),Be=r.useCallback((async e=>{const r=e||Object.keys(m.current);if(re.current)return De(r);if(Array.isArray(r)){const e=await Promise.all(r.map((async e=>await Ee(e,null))));return Ce(),e.every(Boolean)}return await Ee(r,Ae.current.isValid)}),[De,Ee]),Le=r.useCallback(((e,r,{shouldDirty:t,shouldValidate:n})=>{const s={};V(s,e,r);for(const c of se(e,r))m.current[c]&&(Se(c,S(s,c)),t&&we(c),n&&Be(c))}),[Be,Se,we]),Te=r.useCallback(((e,r,t={})=>{m.current[e]?(Se(e,r),t.shouldDirty&&we(e)):G(r)||(Le(e,r,t),te.current.has(e)&&(h.current[e]=r,Y.current[e]({[e]:r}),(Ae.current.isDirty||Ae.current.dirtyFields)&&t.shouldDirty&&(V(je.current.dirtyFields,e,_(r,S(N.current,e,[]),S(je.current.dirtyFields,e,[]))),Ce({isDirty:!Q(Object.assign(Object.assign({},Me()),{[e]:r}),N.current),dirtyFields:je.current.dirtyFields})))),!g&&V(X.current,e,r)}),[we,Se,Le]),Ne=e=>U.current||v.current.has(e)||v.current.has((e.match(/\w+/)||[])[0]),We=(e,r=!0)=>{if(!H(O.current))for(const t in O.current)e&&O.current[t].size&&!O.current[t].has(e)&&!O.current[t].has(ie(e))||(F.current[t](),r=!1);return r};function $e(e){if(!g){let r=le(e);for(const e of te.current)j(e)&&!r[e]&&(r=Object.assign(Object.assign({},r),{[e]:[]}));return r}return e}function Me(e){if(z(e))return M(m,e,X);if(Array.isArray(e)){const r={};for(const t of e)V(r,t,M(m,t,X));return r}return $e(K(m,X))}J.current=J.current?J.current:async({type:e,target:r})=>{const t=r.name,s=m.current[t];let c,u;if(s){const r=e===n,i=ue(Object.assign({isBlurEvent:r,isReValidateOnChange:Ve,isReValidateOnBlur:Fe,isTouched:!!S(je.current.touched,t),isSubmitted:je.current.isSubmitted},ae.current));let a=we(t,!1),o=!H(a)||Ne(t);if(r&&!S(je.current.touched,t)&&Ae.current.touched&&(V(je.current.touched,t,!0),a=Object.assign(Object.assign({},a),{touched:je.current.touched})),i)return We(t),(!H(a)||o&&H(a))&&Ce(a);if(re.current){const{errors:e}=await re.current(Me(),ee.current,ve),r=je.current.isValid;c=S(e,t),u=H(e),r!==u&&(o=!0)}else c=(await ne(m,ve,s,X))[t];We(t),xe(t,c,o,a,u)}};const Pe=r.useCallback((async(e={})=>{const{errors:r}=await re.current(Object.assign(Object.assign(Object.assign({},N.current),Me()),e),ee.current,ve),t=H(r);je.current.isValid!==t&&Ce({isValid:t})}),[ve]),He=r.useCallback(((e,r)=>function(e,r,t,n,s,c){const{ref:u,ref:{name:i,type:a}}=t,o=e.current[i];if(!s){const r=M(e,i,n);x(r)||V(n.current,i,r)}if(a)if((D(u)||L(u))&&o){const{options:t}=o;Array.isArray(t)&&t.length?(R(t).forEach(((e,n)=>{const{ref:s}=e;(s&&P(s)&&I(e,s)||c)&&(k(s,r),q(t,`[${n}]`))})),t&&!R(t).length&&delete e.current[i]):delete e.current[i]}else(P(u)&&I(o,u)||c)&&(k(u,r),delete e.current[i]);else delete e.current[i]}(m,J.current,e,X,g,r)),[g]),Ue=e=>{if(U.current)Ce();else if(v){let r=!0;for(const t of v.current)if(t.startsWith(e)){Ce(),r=!1;break}r&&We(e)}},qe=r.useCallback(((e,r)=>{e&&(He(e,r),g&&!R(e.options||[]).length&&(q(W.current,e.ref.name),q(E.current,e.ref.name),q(w.current,e.ref.name),q(je.current.errors,e.ref.name),V(je.current.dirtyFields,e.ref.name,!0),Ce({errors:je.current.errors,isDirty:ke(),dirtyFields:je.current.dirtyFields}),re.current&&Pe(),Ue(e.ref.name)))}),[Pe,He]),Ie=r.useCallback(((e,r,t)=>{const n=t?O.current[t]:v.current,s=x(r)?N.current:r,c=K(m,X,!1,e);return z(e)?ce(c,e,n,x(r)?S(s,e):r,!0):Array.isArray(e)?e.reduce(((e,r)=>Object.assign(Object.assign({},e),{[r]:ce(c,r,n,s)})),{}):(U.current=x(t),C(!H(c)&&c||s))}),[]);function _e(e,r={}){const{name:u,type:i,value:a}=e,o=Object.assign({ref:e},r),l=m.current,f=de(e),d=oe(te.current,u),y=r=>ge&&(!t(e)||r===e);let g,b=l[u],h=!0;if(b&&(f?Array.isArray(b.options)&&R(b.options).find((e=>a===e.ref.value&&y(e.ref))):y(b.ref)))return void(l[u]=Object.assign(Object.assign({},b),r));b=i?f?Object.assign({options:[...R(b&&b.options||[]),{ref:e}],ref:{type:i,name:u}},r):Object.assign({},o):o,l[u]=b;const v=x(S(X.current,u));if(H(N.current)&&v||(g=S(v?N.current:X.current,u),h=x(g),h||d||Se(u,g)),H(r)||(V(w.current,u,!0),!me&&Ae.current.isValid&&ne(m,ve,b,X).then((e=>{const r=je.current.isValid;H(e)?V(E.current,u,!0):q(E.current,u),r!==H(e)&&Ce()}))),!(W.current[u]||d&&h)){const e=M(m,u,X);V(W.current,u,h?A(e)?Object.assign({},e):e:g),!d&&q(je.current.dirtyFields,u)}i&&function({ref:e},r,u){t(e)&&u&&(e.addEventListener(r?s:c,u),e.addEventListener(n,u))}(f&&b.options?b.options[b.options.length-1]:b,f||"select-one"===e.type,J.current)}const ze=r.useCallback(((e,r)=>async t=>{t&&t.preventDefault&&(t.preventDefault(),t.persist());let n={},s=$e(K(m,X,!0));Ae.current.isSubmitting&&Ce({isSubmitting:!0});try{if(re.current){const{errors:e,values:r}=await re.current(s,ee.current,ve);je.current.errors=n=e,s=r}else for(const e of Object.values(m.current))if(e){const{ref:{name:r}}=e,t=await ne(m,ve,e,X);t[r]?(V(n,r,t[r]),q(E.current,r)):S(w.current,r)&&(q(je.current.errors,r),V(E.current,r,!0))}H(n)&&Object.keys(je.current.errors).every((e=>e in m.current))?(Ce({errors:{},isSubmitting:!0}),await e(s,t)):(je.current.errors=Object.assign(Object.assign({},je.current.errors),n),r&&await r(n,t),y&&((e,r)=>{for(const t in e)if(S(r,t)){const r=e[t];if(r){if(r.ref.focus){r.ref.focus();break}if(r.options){r.options[0].ref.focus();break}}}})(m.current,n))}finally{Ce({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:H(je.current.errors),errors:je.current.errors,submitCount:je.current.submitCount+1})}}),[y,ve]);r.useEffect((()=>($.current=!1,o&&Ae.current.isValid&&Pe(),Re.current=Re.current||!ge?Re.current:function(e,r){const t=new MutationObserver((()=>{for(const t of Object.values(e.current))if(t&&t.options)for(const e of t.options)e&&e.ref&&P(e.ref)&&r(t);else t&&P(t.ref)&&r(t)}));return t.observe(window.document,{childList:!0,subtree:!0}),t}(m,qe),()=>{$.current=!0,Re.current&&Re.current.disconnect(),X.current={},Object.values(m.current).forEach((e=>qe(e,!0)))})),[qe]),!o&&Ae.current.isValid&&(pe.isValid=Q(E.current,w.current)&&H(je.current.errors));const Ge={trigger:Be,setValue:r.useCallback((function(e,r,t){Te(e,r,t),Ne(e)&&Ce(),We(e),(t||{}).shouldValidate&&Be(e)}),[Te,Be]),getValues:r.useCallback(Me,[]),register:r.useCallback((function(e,r){if(!ye)if(z(e))_e({name:e},r);else{if(!A(e)||!("name"in e))return r=>r&&_e(r,e);_e(e,r)}}),[N.current]),unregister:r.useCallback((function(e){for(const r of Array.isArray(e)?e:[e])qe(m.current[r],!0)}),[])},Je=Object.assign({updateWatchedValue:Ue,shouldUnregister:g,removeFieldEventListener:He,watchInternal:Ie,mode:ae.current,reValidateMode:{isReValidateOnBlur:Fe,isReValidateOnChange:Ve},fieldsRef:m,resetFieldArrayFunctionRef:Y,useWatchFieldsRef:O,useWatchRenderFunctionsRef:F,fieldArrayDefaultValuesRef:h,validFieldsRef:E,fieldsWithValidationRef:w,fieldArrayNamesRef:te,readFormStateRef:Ae,formStateRef:je,defaultValuesRef:N,shallowFieldsStateRef:X,updateFormState:Ce,validateResolver:o?Pe:void 0},Ge);return Object.assign({watch:function(e,r){return Ie(e,r)},control:Je,formState:be?new Proxy(pe,{get:(e,r)=>{if(r in e)return Ae.current[r]=!0,e[r]}}):pe,handleSubmit:ze,reset:r.useCallback(((e,r={})=>{if(ge)for(const e of Object.values(m.current))if(e){const{ref:r,options:n}=e,s=de(r)&&Array.isArray(n)?n[0].ref:r;if(t(s))try{s.closest("form").reset();break}catch(e){}}m.current={},N.current=le(e||N.current),e&&We(""),Object.values(Y.current).forEach((e=>Z(e)&&e())),X.current=g?{}:le(e)||{},(({errors:e,isDirty:r,isSubmitted:t,touched:n,isValid:s,submitCount:c,dirtyFields:u})=>{s||(E.current={},w.current={}),W.current={},h.current={},v.current=new Set,U.current=!1,Ce({submitCount:c?je.current.submitCount:0,isDirty:!!r&&je.current.isDirty,isSubmitted:!!t&&je.current.isSubmitted,isValid:!!s&&je.current.isValid,dirtyFields:u?je.current.dirtyFields:{},touched:n?je.current.touched:{},errors:e?je.current.errors:{},isSubmitting:!1,isSubmitSuccessful:!1})})(r)}),[]),clearErrors:r.useCallback((function(e){e&&(Array.isArray(e)?e:[e]).forEach((e=>m.current[e]?j(e)?delete je.current.errors[e]:V(je.current.errors,e,void 0):q(je.current.errors,e))),Ce({errors:e?je.current.errors:{}})}),[]),setError:r.useCallback((function(e,r){const t=(m.current[e]||{}).ref;V(je.current.errors,e,Object.assign(Object.assign({},r),{ref:t})),Ce({isValid:!1,errors:je.current.errors}),r.shouldFocus&&t&&t.focus&&t.focus()}),[]),errors:pe.errors},Ge)},e.useFormContext=ve,e.useWatch=function({control:e,name:t,defaultValue:n}){const s=ve(),{useWatchFieldsRef:c,useWatchRenderFunctionsRef:u,watchInternal:i,defaultValuesRef:a}=e||s.control,[o,l]=r.useState(x(n)?z(t)?S(a.current,t):Array.isArray(t)?t.reduce(((e,r)=>Object.assign(Object.assign({},e),{[r]:S(a.current,r)})),{}):a.current:n),f=r.useRef(),d=r.useRef(n),y=r.useCallback((()=>{const e=i(t,d.current,f.current);l(A(e)?Object.assign({},e):Array.isArray(e)?[...e]:e)}),[l,i,d,t,f]);return r.useEffect((()=>{const e=f.current=pe(),r=u.current,n=c.current;return n[e]=new Set,r[e]=y,i(t,d.current,e),()=>{delete n[e],delete r[e]}}),[t,y,u,c,i,d]),x(o)?n:o},Object.defineProperty(e,"__esModule",{value:!0})}));
2
2
  //# sourceMappingURL=index.umd.production.min.js.map