react-hook-form 7.17.0 → 7.17.1

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