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