remix-validated-form 4.2.0 → 4.4.0
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/.turbo/turbo-build.log +15 -9
- package/README.md +1 -0
- package/browser/ValidatedForm.js +16 -26
- package/browser/hooks.d.ts +2 -0
- package/browser/hooks.js +20 -9
- package/browser/internal/MultiValueMap.d.ts +2 -0
- package/browser/internal/MultiValueMap.js +4 -0
- package/browser/internal/getInputProps.js +2 -1
- package/browser/internal/hooks.d.ts +20 -9
- package/browser/internal/hooks.js +32 -23
- package/browser/internal/logic/getRadioChecked.js +10 -0
- package/browser/internal/reset.d.ts +28 -0
- package/browser/internal/reset.js +13 -0
- package/browser/internal/state/cleanup.d.ts +2 -0
- package/browser/internal/state/cleanup.js +6 -0
- package/browser/internal/state/controlledFieldStore.d.ts +24 -0
- package/browser/internal/state/controlledFieldStore.js +57 -0
- package/browser/internal/state/controlledFields.d.ts +6 -62
- package/browser/internal/state/controlledFields.js +36 -63
- package/browser/internal/state/createFormStore.d.ts +40 -0
- package/browser/internal/state/createFormStore.js +83 -0
- package/browser/internal/state/storeFamily.d.ts +9 -0
- package/browser/internal/state/storeFamily.js +18 -0
- package/browser/internal/state/storeHooks.d.ts +5 -0
- package/browser/internal/state/storeHooks.js +10 -0
- package/browser/internal/state.d.ts +0 -27
- package/browser/internal/state.js +0 -5
- package/browser/unreleased/formStateHooks.d.ts +15 -0
- package/browser/unreleased/formStateHooks.js +23 -14
- package/browser/userFacingFormContext.d.ts +8 -0
- package/browser/userFacingFormContext.js +5 -4
- package/dist/remix-validated-form.cjs.js +17 -0
- package/dist/remix-validated-form.es.js +2844 -0
- package/dist/remix-validated-form.umd.js +17 -0
- package/{build → dist/types}/ValidatedForm.d.ts +0 -0
- package/{build → dist/types}/hooks.d.ts +2 -0
- package/{build → dist/types}/index.d.ts +0 -0
- package/{build → dist/types}/internal/MultiValueMap.d.ts +2 -0
- package/{build → dist/types}/internal/constants.d.ts +0 -0
- package/{build → dist/types}/internal/flatten.d.ts +0 -0
- package/{build → dist/types}/internal/formContext.d.ts +0 -0
- package/{build → dist/types}/internal/getInputProps.d.ts +0 -0
- package/dist/types/internal/hooks.d.ts +32 -0
- package/{build → dist/types}/internal/hydratable.d.ts +0 -0
- package/{build → dist/types}/internal/logic/getCheckboxChecked.d.ts +0 -0
- package/{build → dist/types}/internal/logic/getRadioChecked.d.ts +0 -0
- package/dist/types/internal/state/cleanup.d.ts +2 -0
- package/dist/types/internal/state/controlledFieldStore.d.ts +24 -0
- package/dist/types/internal/state/controlledFields.d.ts +6 -0
- package/dist/types/internal/state/createFormStore.d.ts +40 -0
- package/dist/types/internal/state/storeFamily.d.ts +9 -0
- package/dist/types/internal/state/storeHooks.d.ts +5 -0
- package/{build → dist/types}/internal/submissionCallbacks.d.ts +0 -0
- package/{build → dist/types}/internal/util.d.ts +0 -0
- package/{build → dist/types}/server.d.ts +0 -0
- package/{build → dist/types}/unreleased/formStateHooks.d.ts +15 -0
- package/{build → dist/types}/userFacingFormContext.d.ts +8 -0
- package/{build → dist/types}/validation/createValidator.d.ts +0 -0
- package/{build → dist/types}/validation/types.d.ts +0 -0
- package/package.json +11 -9
- package/src/ValidatedForm.tsx +25 -43
- package/src/hooks.ts +29 -17
- package/src/internal/MultiValueMap.ts +6 -0
- package/src/internal/getInputProps.test.ts +251 -0
- package/src/internal/getInputProps.ts +2 -1
- package/src/internal/hooks.ts +69 -45
- package/src/internal/logic/getRadioChecked.ts +11 -0
- package/src/internal/state/cleanup.ts +8 -0
- package/src/internal/state/controlledFieldStore.ts +91 -0
- package/src/internal/state/controlledFields.ts +78 -0
- package/src/internal/state/createFormStore.ts +152 -0
- package/src/internal/state/storeFamily.ts +24 -0
- package/src/internal/state/storeHooks.ts +22 -0
- package/src/unreleased/formStateHooks.ts +50 -27
- package/src/userFacingFormContext.ts +17 -5
- package/src/validation/validation.test.ts +304 -0
- package/tsconfig.json +4 -1
- package/vite.config.ts +7 -0
- package/.turbo/turbo-test.log +0 -11
- package/browser/components.d.ts +0 -7
- package/browser/components.js +0 -10
- package/browser/internal/SingleTypeMultiValueMap.d.ts +0 -9
- package/browser/internal/SingleTypeMultiValueMap.js +0 -41
- package/browser/internal/customState.d.ts +0 -105
- package/browser/internal/customState.js +0 -46
- package/browser/internal/hooks-valtio.d.ts +0 -18
- package/browser/internal/hooks-valtio.js +0 -110
- package/browser/internal/hooks-zustand.d.ts +0 -16
- package/browser/internal/hooks-zustand.js +0 -100
- package/browser/internal/immerMiddleware.d.ts +0 -6
- package/browser/internal/immerMiddleware.js +0 -7
- package/browser/internal/logic/elementUtils.d.ts +0 -3
- package/browser/internal/logic/elementUtils.js +0 -3
- package/browser/internal/logic/getCheckboxChecked copy.d.ts +0 -1
- package/browser/internal/logic/getCheckboxChecked copy.js +0 -9
- package/browser/internal/logic/setFieldValue.d.ts +0 -1
- package/browser/internal/logic/setFieldValue.js +0 -40
- package/browser/internal/logic/setInputValueInForm.d.ts +0 -1
- package/browser/internal/logic/setInputValueInForm.js +0 -77
- package/browser/internal/setFieldValue.d.ts +0 -20
- package/browser/internal/setFieldValue.js +0 -83
- package/browser/internal/setFormValues.d.ts +0 -2
- package/browser/internal/setFormValues.js +0 -26
- package/browser/internal/state/setFieldValue.d.ts +0 -0
- package/browser/internal/state/setFieldValue.js +0 -1
- package/browser/internal/state-valtio.d.ts +0 -62
- package/browser/internal/state-valtio.js +0 -69
- package/browser/internal/state-zustand.d.ts +0 -47
- package/browser/internal/state-zustand.js +0 -85
- package/browser/internal/test.d.ts +0 -0
- package/browser/internal/test.js +0 -15
- package/browser/internal/useMultiValueMap.d.ts +0 -1
- package/browser/internal/useMultiValueMap.js +0 -11
- package/browser/internal/watch.d.ts +0 -18
- package/browser/internal/watch.js +0 -122
- package/browser/lowLevelHooks.d.ts +0 -0
- package/browser/lowLevelHooks.js +0 -1
- package/browser/test-data/testFormData.d.ts +0 -15
- package/browser/test-data/testFormData.js +0 -46
- package/browser/types.d.ts +0 -1
- package/browser/types.js +0 -1
- package/browser/validation/validation.test.d.ts +0 -1
- package/browser/validation/validation.test.js +0 -274
- package/browser/validation/withYup.d.ts +0 -6
- package/browser/validation/withYup.js +0 -40
- package/browser/validation/withZod.d.ts +0 -6
- package/browser/validation/withZod.js +0 -50
- package/build/ValidatedForm.js +0 -257
- package/build/hooks.js +0 -79
- package/build/index.js +0 -18
- package/build/internal/MultiValueMap.js +0 -44
- package/build/internal/SingleTypeMultiValueMap.d.ts +0 -8
- package/build/internal/SingleTypeMultiValueMap.js +0 -45
- package/build/internal/constants.js +0 -7
- package/build/internal/flatten.js +0 -14
- package/build/internal/formContext.js +0 -5
- package/build/internal/getInputProps.js +0 -57
- package/build/internal/hooks-valtio.d.ts +0 -18
- package/build/internal/hooks-valtio.js +0 -128
- package/build/internal/hooks-zustand.d.ts +0 -16
- package/build/internal/hooks-zustand.js +0 -117
- package/build/internal/hooks.d.ts +0 -21
- package/build/internal/hooks.js +0 -128
- package/build/internal/hydratable.js +0 -17
- package/build/internal/immerMiddleware.d.ts +0 -6
- package/build/internal/immerMiddleware.js +0 -14
- package/build/internal/logic/elementUtils.d.ts +0 -3
- package/build/internal/logic/elementUtils.js +0 -9
- package/build/internal/logic/getCheckboxChecked.js +0 -13
- package/build/internal/logic/getRadioChecked.js +0 -9
- package/build/internal/logic/setFieldValue.d.ts +0 -1
- package/build/internal/logic/setFieldValue.js +0 -47
- package/build/internal/logic/setInputValueInForm.d.ts +0 -1
- package/build/internal/logic/setInputValueInForm.js +0 -84
- package/build/internal/setFormValues.d.ts +0 -2
- package/build/internal/setFormValues.js +0 -33
- package/build/internal/state/atomUtils.d.ts +0 -38
- package/build/internal/state/atomUtils.js +0 -13
- package/build/internal/state/controlledFields.d.ts +0 -62
- package/build/internal/state/controlledFields.js +0 -85
- package/build/internal/state-valtio.d.ts +0 -62
- package/build/internal/state-valtio.js +0 -83
- package/build/internal/state-zustand.d.ts +0 -47
- package/build/internal/state-zustand.js +0 -91
- package/build/internal/state.d.ts +0 -370
- package/build/internal/state.js +0 -76
- package/build/internal/submissionCallbacks.js +0 -17
- package/build/internal/test.d.ts +0 -1
- package/build/internal/test.js +0 -12
- package/build/internal/util.js +0 -41
- package/build/internal/watch.d.ts +0 -20
- package/build/internal/watch.js +0 -126
- package/build/server.js +0 -32
- package/build/types.d.ts +0 -1
- package/build/types.js +0 -2
- package/build/unreleased/formStateHooks.js +0 -59
- package/build/userFacingFormContext.js +0 -30
- package/build/validation/createValidator.js +0 -45
- package/build/validation/types.js +0 -2
- package/src/internal/state/atomUtils.ts +0 -13
- package/src/internal/state.ts +0 -132
@@ -0,0 +1,17 @@
|
|
1
|
+
var Qh=Object.defineProperty,ey=Object.defineProperties;var ty=Object.getOwnPropertyDescriptors;var Fe=Object.getOwnPropertySymbols;var bn=Object.prototype.hasOwnProperty,_n=Object.prototype.propertyIsEnumerable;var mn=(y,v,S)=>v in y?Qh(y,v,{enumerable:!0,configurable:!0,writable:!0,value:S}):y[v]=S,j=(y,v)=>{for(var S in v||(v={}))bn.call(v,S)&&mn(y,S,v[S]);if(Fe)for(var S of Fe(v))_n.call(v,S)&&mn(y,S,v[S]);return y},Q=(y,v)=>ey(y,ty(v));var $n=(y,v)=>{var S={};for(var F in y)bn.call(y,F)&&v.indexOf(F)<0&&(S[F]=y[F]);if(y!=null&&Fe)for(var F of Fe(y))v.indexOf(F)<0&&_n.call(y,F)&&(S[F]=y[F]);return S};(function(y,v){typeof exports=="object"&&typeof module!="undefined"?v(exports,require("react"),require("@remix-run/react"),require("@remix-run/server-runtime")):typeof define=="function"&&define.amd?define(["exports","react","@remix-run/react","@remix-run/server-runtime"],v):(y=typeof globalThis!="undefined"?globalThis:y||self,v(y["remix-validated-form"]={},y.React,y.react,y.serverRuntime))})(this,function(y,v,S,F){"use strict";function Sn(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var L=Sn(v),le=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function Pn(){this.__data__=[],this.size=0}var En=Pn;function In(e,t){return e===t||e!==e&&t!==t}var we=In,An=we;function On(e,t){for(var r=e.length;r--;)if(An(e[r][0],t))return r;return-1}var de=On,Tn=de,Fn=Array.prototype,wn=Fn.splice;function Cn(e){var t=this.__data__,r=Tn(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():wn.call(t,r,1),--this.size,!0}var xn=Cn,Dn=de;function Mn(e){var t=this.__data__,r=Dn(t,e);return r<0?void 0:t[r][1]}var jn=Mn,Ln=de;function Gn(e){return Ln(this.__data__,e)>-1}var Hn=Gn,Vn=de;function Rn(e,t){var r=this.__data__,n=Vn(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}var Kn=Rn,Nn=En,Bn=xn,Un=jn,qn=Hn,zn=Kn;function B(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}B.prototype.clear=Nn,B.prototype.delete=Bn,B.prototype.get=Un,B.prototype.has=qn,B.prototype.set=zn;var ve=B,Wn=ve;function kn(){this.__data__=new Wn,this.size=0}var Xn=kn;function Yn(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}var Zn=Yn;function Jn(e){return this.__data__.get(e)}var Qn=Jn;function ea(e){return this.__data__.has(e)}var ta=ea,ra=typeof le=="object"&&le&&le.Object===Object&&le,$t=ra,na=$t,aa=typeof self=="object"&&self&&self.Object===Object&&self,sa=na||aa||Function("return this")(),M=sa,ia=M,oa=ia.Symbol,he=oa,St=he,Pt=Object.prototype,ua=Pt.hasOwnProperty,ca=Pt.toString,ee=St?St.toStringTag:void 0;function fa(e){var t=ua.call(e,ee),r=e[ee];try{e[ee]=void 0;var n=!0}catch{}var a=ca.call(e);return n&&(t?e[ee]=r:delete e[ee]),a}var la=fa,da=Object.prototype,va=da.toString;function ha(e){return va.call(e)}var ya=ha,Et=he,pa=la,ga=ya,ma="[object Null]",ba="[object Undefined]",It=Et?Et.toStringTag:void 0;function _a(e){return e==null?e===void 0?ba:ma:It&&It in Object(e)?pa(e):ga(e)}var te=_a;function $a(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var re=$a,Sa=te,Pa=re,Ea="[object AsyncFunction]",Ia="[object Function]",Aa="[object GeneratorFunction]",Oa="[object Proxy]";function Ta(e){if(!Pa(e))return!1;var t=Sa(e);return t==Ia||t==Aa||t==Ea||t==Oa}var At=Ta,Fa=M,wa=Fa["__core-js_shared__"],Ca=wa,Ce=Ca,Ot=function(){var e=/[^.]+$/.exec(Ce&&Ce.keys&&Ce.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function xa(e){return!!Ot&&Ot in e}var Da=xa,Ma=Function.prototype,ja=Ma.toString;function La(e){if(e!=null){try{return ja.call(e)}catch{}try{return e+""}catch{}}return""}var Tt=La,Ga=At,Ha=Da,Va=re,Ra=Tt,Ka=/[\\^$.*+?()[\]{}|]/g,Na=/^\[object .+?Constructor\]$/,Ba=Function.prototype,Ua=Object.prototype,qa=Ba.toString,za=Ua.hasOwnProperty,Wa=RegExp("^"+qa.call(za).replace(Ka,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ka(e){if(!Va(e)||Ha(e))return!1;var t=Ga(e)?Wa:Na;return t.test(Ra(e))}var Xa=ka;function Ya(e,t){return e==null?void 0:e[t]}var Za=Ya,Ja=Xa,Qa=Za;function es(e,t){var r=Qa(e,t);return Ja(r)?r:void 0}var V=es,ts=V,rs=M,ns=ts(rs,"Map"),xe=ns,as=V,ss=as(Object,"create"),ye=ss,Ft=ye;function is(){this.__data__=Ft?Ft(null):{},this.size=0}var os=is;function us(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var cs=us,fs=ye,ls="__lodash_hash_undefined__",ds=Object.prototype,vs=ds.hasOwnProperty;function hs(e){var t=this.__data__;if(fs){var r=t[e];return r===ls?void 0:r}return vs.call(t,e)?t[e]:void 0}var ys=hs,ps=ye,gs=Object.prototype,ms=gs.hasOwnProperty;function bs(e){var t=this.__data__;return ps?t[e]!==void 0:ms.call(t,e)}var _s=bs,$s=ye,Ss="__lodash_hash_undefined__";function Ps(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=$s&&t===void 0?Ss:t,this}var Es=Ps,Is=os,As=cs,Os=ys,Ts=_s,Fs=Es;function U(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}U.prototype.clear=Is,U.prototype.delete=As,U.prototype.get=Os,U.prototype.has=Ts,U.prototype.set=Fs;var ws=U,wt=ws,Cs=ve,xs=xe;function Ds(){this.size=0,this.__data__={hash:new wt,map:new(xs||Cs),string:new wt}}var Ms=Ds;function js(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var Ls=js,Gs=Ls;function Hs(e,t){var r=e.__data__;return Gs(t)?r[typeof t=="string"?"string":"hash"]:r.map}var pe=Hs,Vs=pe;function Rs(e){var t=Vs(this,e).delete(e);return this.size-=t?1:0,t}var Ks=Rs,Ns=pe;function Bs(e){return Ns(this,e).get(e)}var Us=Bs,qs=pe;function zs(e){return qs(this,e).has(e)}var Ws=zs,ks=pe;function Xs(e,t){var r=ks(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}var Ys=Xs,Zs=Ms,Js=Ks,Qs=Us,ei=Ws,ti=Ys;function q(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}q.prototype.clear=Zs,q.prototype.delete=Js,q.prototype.get=Qs,q.prototype.has=ei,q.prototype.set=ti;var De=q,ri=ve,ni=xe,ai=De,si=200;function ii(e,t){var r=this.__data__;if(r instanceof ri){var n=r.__data__;if(!ni||n.length<si-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new ai(n)}return r.set(e,t),this.size=r.size,this}var oi=ii,ui=ve,ci=Xn,fi=Zn,li=Qn,di=ta,vi=oi;function z(e){var t=this.__data__=new ui(e);this.size=t.size}z.prototype.clear=ci,z.prototype.delete=fi,z.prototype.get=li,z.prototype.has=di,z.prototype.set=vi;var Ct=z,hi="__lodash_hash_undefined__";function yi(e){return this.__data__.set(e,hi),this}var pi=yi;function gi(e){return this.__data__.has(e)}var mi=gi,bi=De,_i=pi,$i=mi;function ge(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new bi;++t<r;)this.add(e[t])}ge.prototype.add=ge.prototype.push=_i,ge.prototype.has=$i;var xt=ge;function Si(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}var Pi=Si;function Ei(e,t){return e.has(t)}var Dt=Ei,Ii=xt,Ai=Pi,Oi=Dt,Ti=1,Fi=2;function wi(e,t,r,n,a,s){var i=r&Ti,o=e.length,c=t.length;if(o!=c&&!(i&&c>o))return!1;var u=s.get(e),f=s.get(t);if(u&&f)return u==t&&f==e;var l=-1,d=!0,h=r&Fi?new Ii:void 0;for(s.set(e,t),s.set(t,e);++l<o;){var m=e[l],_=t[l];if(n)var A=i?n(_,m,l,t,e,s):n(m,_,l,e,t,s);if(A!==void 0){if(A)continue;d=!1;break}if(h){if(!Ai(t,function($,P){if(!Oi(h,P)&&(m===$||a(m,$,r,n,s)))return h.push(P)})){d=!1;break}}else if(!(m===_||a(m,_,r,n,s))){d=!1;break}}return s.delete(e),s.delete(t),d}var Mt=wi,Ci=M,xi=Ci.Uint8Array,Di=xi;function Mi(e){var t=-1,r=Array(e.size);return e.forEach(function(n,a){r[++t]=[a,n]}),r}var ji=Mi;function Li(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}var Me=Li,jt=he,Lt=Di,Gi=we,Hi=Mt,Vi=ji,Ri=Me,Ki=1,Ni=2,Bi="[object Boolean]",Ui="[object Date]",qi="[object Error]",zi="[object Map]",Wi="[object Number]",ki="[object RegExp]",Xi="[object Set]",Yi="[object String]",Zi="[object Symbol]",Ji="[object ArrayBuffer]",Qi="[object DataView]",Gt=jt?jt.prototype:void 0,je=Gt?Gt.valueOf:void 0;function eo(e,t,r,n,a,s,i){switch(r){case Qi:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case Ji:return!(e.byteLength!=t.byteLength||!s(new Lt(e),new Lt(t)));case Bi:case Ui:case Wi:return Gi(+e,+t);case qi:return e.name==t.name&&e.message==t.message;case ki:case Yi:return e==t+"";case zi:var o=Vi;case Xi:var c=n&Ki;if(o||(o=Ri),e.size!=t.size&&!c)return!1;var u=i.get(e);if(u)return u==t;n|=Ni,i.set(e,t);var f=Hi(o(e),o(t),n,a,s,i);return i.delete(e),f;case Zi:if(je)return je.call(e)==je.call(t)}return!1}var to=eo;function ro(e,t){for(var r=-1,n=t.length,a=e.length;++r<n;)e[a+r]=t[r];return e}var Ht=ro,no=Array.isArray,G=no,ao=Ht,so=G;function io(e,t,r){var n=t(e);return so(e)?n:ao(n,r(e))}var Vt=io;function oo(e,t){for(var r=-1,n=e==null?0:e.length,a=0,s=[];++r<n;){var i=e[r];t(i,r,e)&&(s[a++]=i)}return s}var uo=oo;function co(){return[]}var Rt=co,fo=uo,lo=Rt,vo=Object.prototype,ho=vo.propertyIsEnumerable,Kt=Object.getOwnPropertySymbols,yo=Kt?function(e){return e==null?[]:(e=Object(e),fo(Kt(e),function(t){return ho.call(e,t)}))}:lo,Nt=yo;function po(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}var go=po;function mo(e){return e!=null&&typeof e=="object"}var ne=mo,bo=te,_o=ne,$o="[object Arguments]";function So(e){return _o(e)&&bo(e)==$o}var Po=So,Bt=Po,Eo=ne,Ut=Object.prototype,Io=Ut.hasOwnProperty,Ao=Ut.propertyIsEnumerable,Oo=Bt(function(){return arguments}())?Bt:function(e){return Eo(e)&&Io.call(e,"callee")&&!Ao.call(e,"callee")},qt=Oo,me={exports:{}};function To(){return!1}var Fo=To;(function(e,t){var r=M,n=Fo,a=t&&!t.nodeType&&t,s=a&&!0&&e&&!e.nodeType&&e,i=s&&s.exports===a,o=i?r.Buffer:void 0,c=o?o.isBuffer:void 0,u=c||n;e.exports=u})(me,me.exports);var wo=9007199254740991,Co=/^(?:0|[1-9]\d*)$/;function xo(e,t){var r=typeof e;return t=t==null?wo:t,!!t&&(r=="number"||r!="symbol"&&Co.test(e))&&e>-1&&e%1==0&&e<t}var Le=xo,Do=9007199254740991;function Mo(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=Do}var Ge=Mo,jo=te,Lo=Ge,Go=ne,Ho="[object Arguments]",Vo="[object Array]",Ro="[object Boolean]",Ko="[object Date]",No="[object Error]",Bo="[object Function]",Uo="[object Map]",qo="[object Number]",zo="[object Object]",Wo="[object RegExp]",ko="[object Set]",Xo="[object String]",Yo="[object WeakMap]",Zo="[object ArrayBuffer]",Jo="[object DataView]",Qo="[object Float32Array]",eu="[object Float64Array]",tu="[object Int8Array]",ru="[object Int16Array]",nu="[object Int32Array]",au="[object Uint8Array]",su="[object Uint8ClampedArray]",iu="[object Uint16Array]",ou="[object Uint32Array]",b={};b[Qo]=b[eu]=b[tu]=b[ru]=b[nu]=b[au]=b[su]=b[iu]=b[ou]=!0,b[Ho]=b[Vo]=b[Zo]=b[Ro]=b[Jo]=b[Ko]=b[No]=b[Bo]=b[Uo]=b[qo]=b[zo]=b[Wo]=b[ko]=b[Xo]=b[Yo]=!1;function uu(e){return Go(e)&&Lo(e.length)&&!!b[jo(e)]}var cu=uu;function fu(e){return function(t){return e(t)}}var lu=fu,He={exports:{}};(function(e,t){var r=$t,n=t&&!t.nodeType&&t,a=n&&!0&&e&&!e.nodeType&&e,s=a&&a.exports===n,i=s&&r.process,o=function(){try{var c=a&&a.require&&a.require("util").types;return c||i&&i.binding&&i.binding("util")}catch{}}();e.exports=o})(He,He.exports);var du=cu,vu=lu,zt=He.exports,Wt=zt&&zt.isTypedArray,hu=Wt?vu(Wt):du,kt=hu,yu=go,pu=qt,gu=G,mu=me.exports,bu=Le,_u=kt,$u=Object.prototype,Su=$u.hasOwnProperty;function Pu(e,t){var r=gu(e),n=!r&&pu(e),a=!r&&!n&&mu(e),s=!r&&!n&&!a&&_u(e),i=r||n||a||s,o=i?yu(e.length,String):[],c=o.length;for(var u in e)(t||Su.call(e,u))&&!(i&&(u=="length"||a&&(u=="offset"||u=="parent")||s&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||bu(u,c)))&&o.push(u);return o}var Xt=Pu,Eu=Object.prototype;function Iu(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||Eu;return e===r}var Yt=Iu;function Au(e,t){return function(r){return e(t(r))}}var Zt=Au,Ou=Zt,Tu=Ou(Object.keys,Object),Fu=Tu,wu=Yt,Cu=Fu,xu=Object.prototype,Du=xu.hasOwnProperty;function Mu(e){if(!wu(e))return Cu(e);var t=[];for(var r in Object(e))Du.call(e,r)&&r!="constructor"&&t.push(r);return t}var ju=Mu,Lu=At,Gu=Ge;function Hu(e){return e!=null&&Gu(e.length)&&!Lu(e)}var Jt=Hu,Vu=Xt,Ru=ju,Ku=Jt;function Nu(e){return Ku(e)?Vu(e):Ru(e)}var Qt=Nu,Bu=Vt,Uu=Nt,qu=Qt;function zu(e){return Bu(e,qu,Uu)}var Wu=zu,er=Wu,ku=1,Xu=Object.prototype,Yu=Xu.hasOwnProperty;function Zu(e,t,r,n,a,s){var i=r&ku,o=er(e),c=o.length,u=er(t),f=u.length;if(c!=f&&!i)return!1;for(var l=c;l--;){var d=o[l];if(!(i?d in t:Yu.call(t,d)))return!1}var h=s.get(e),m=s.get(t);if(h&&m)return h==t&&m==e;var _=!0;s.set(e,t),s.set(t,e);for(var A=i;++l<c;){d=o[l];var $=e[d],P=t[d];if(n)var T=i?n(P,$,d,t,e,s):n($,P,d,e,t,s);if(!(T===void 0?$===P||a($,P,r,n,s):T)){_=!1;break}A||(A=d=="constructor")}if(_&&!A){var O=e.constructor,x=t.constructor;O!=x&&"constructor"in e&&"constructor"in t&&!(typeof O=="function"&&O instanceof O&&typeof x=="function"&&x instanceof x)&&(_=!1)}return s.delete(e),s.delete(t),_}var Ju=Zu,Qu=V,ec=M,tc=Qu(ec,"DataView"),rc=tc,nc=V,ac=M,sc=nc(ac,"Promise"),ic=sc,oc=V,uc=M,cc=oc(uc,"Set"),tr=cc,fc=V,lc=M,dc=fc(lc,"WeakMap"),vc=dc,Ve=rc,Re=xe,Ke=ic,Ne=tr,Be=vc,rr=te,W=Tt,nr="[object Map]",hc="[object Object]",ar="[object Promise]",sr="[object Set]",ir="[object WeakMap]",or="[object DataView]",yc=W(Ve),pc=W(Re),gc=W(Ke),mc=W(Ne),bc=W(Be),R=rr;(Ve&&R(new Ve(new ArrayBuffer(1)))!=or||Re&&R(new Re)!=nr||Ke&&R(Ke.resolve())!=ar||Ne&&R(new Ne)!=sr||Be&&R(new Be)!=ir)&&(R=function(e){var t=rr(e),r=t==hc?e.constructor:void 0,n=r?W(r):"";if(n)switch(n){case yc:return or;case pc:return nr;case gc:return ar;case mc:return sr;case bc:return ir}return t});var _c=R,Ue=Ct,$c=Mt,Sc=to,Pc=Ju,ur=_c,cr=G,fr=me.exports,Ec=kt,Ic=1,lr="[object Arguments]",dr="[object Array]",be="[object Object]",Ac=Object.prototype,vr=Ac.hasOwnProperty;function Oc(e,t,r,n,a,s){var i=cr(e),o=cr(t),c=i?dr:ur(e),u=o?dr:ur(t);c=c==lr?be:c,u=u==lr?be:u;var f=c==be,l=u==be,d=c==u;if(d&&fr(e)){if(!fr(t))return!1;i=!0,f=!1}if(d&&!f)return s||(s=new Ue),i||Ec(e)?$c(e,t,r,n,a,s):Sc(e,t,c,r,n,a,s);if(!(r&Ic)){var h=f&&vr.call(e,"__wrapped__"),m=l&&vr.call(t,"__wrapped__");if(h||m){var _=h?e.value():e,A=m?t.value():t;return s||(s=new Ue),a(_,A,r,n,s)}}return d?(s||(s=new Ue),Pc(e,t,r,n,a,s)):!1}var Tc=Oc,Fc=Tc,hr=ne;function yr(e,t,r,n,a){return e===t?!0:e==null||t==null||!hr(e)&&!hr(t)?e!==e&&t!==t:Fc(e,t,r,n,yr,a)}var qe=yr,wc=Ct,Cc=qe,xc=1,Dc=2;function Mc(e,t,r,n){var a=r.length,s=a,i=!n;if(e==null)return!s;for(e=Object(e);a--;){var o=r[a];if(i&&o[2]?o[1]!==e[o[0]]:!(o[0]in e))return!1}for(;++a<s;){o=r[a];var c=o[0],u=e[c],f=o[1];if(i&&o[2]){if(u===void 0&&!(c in e))return!1}else{var l=new wc;if(n)var d=n(u,f,c,e,t,l);if(!(d===void 0?Cc(f,u,xc|Dc,n,l):d))return!1}}return!0}var jc=Mc,Lc=re;function Gc(e){return e===e&&!Lc(e)}var pr=Gc,Hc=pr,Vc=Qt;function Rc(e){for(var t=Vc(e),r=t.length;r--;){var n=t[r],a=e[n];t[r]=[n,a,Hc(a)]}return t}var Kc=Rc;function Nc(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}var gr=Nc,Bc=jc,Uc=Kc,qc=gr;function zc(e){var t=Uc(e);return t.length==1&&t[0][2]?qc(t[0][0],t[0][1]):function(r){return r===e||Bc(r,e,t)}}var Wc=zc,kc=te,Xc=ne,Yc="[object Symbol]";function Zc(e){return typeof e=="symbol"||Xc(e)&&kc(e)==Yc}var ze=Zc,Jc=G,Qc=ze,ef=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,tf=/^\w*$/;function rf(e,t){if(Jc(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||Qc(e)?!0:tf.test(e)||!ef.test(e)||t!=null&&e in Object(t)}var We=rf,mr=De,nf="Expected a function";function ke(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(nf);var r=function(){var n=arguments,a=t?t.apply(this,n):n[0],s=r.cache;if(s.has(a))return s.get(a);var i=e.apply(this,n);return r.cache=s.set(a,i)||s,i};return r.cache=new(ke.Cache||mr),r}ke.Cache=mr;var af=ke,sf=af,of=500;function uf(e){var t=sf(e,function(n){return r.size===of&&r.clear(),n}),r=t.cache;return t}var cf=uf,ff=cf,lf=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,df=/\\(\\)?/g,vf=ff(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(lf,function(r,n,a,s){t.push(a?s.replace(df,"$1"):n||r)}),t}),hf=vf;function yf(e,t){for(var r=-1,n=e==null?0:e.length,a=Array(n);++r<n;)a[r]=t(e[r],r,e);return a}var br=yf,_r=he,pf=br,gf=G,mf=ze,bf=1/0,$r=_r?_r.prototype:void 0,Sr=$r?$r.toString:void 0;function Pr(e){if(typeof e=="string")return e;if(gf(e))return pf(e,Pr)+"";if(mf(e))return Sr?Sr.call(e):"";var t=e+"";return t=="0"&&1/e==-bf?"-0":t}var _f=Pr,$f=_f;function Sf(e){return e==null?"":$f(e)}var Pf=Sf,Ef=G,If=We,Af=hf,Of=Pf;function Tf(e,t){return Ef(e)?e:If(e,t)?[e]:Af(Of(e))}var _e=Tf,Ff=ze,wf=1/0;function Cf(e){if(typeof e=="string"||Ff(e))return e;var t=e+"";return t=="0"&&1/e==-wf?"-0":t}var ae=Cf,xf=_e,Df=ae;function Mf(e,t){t=xf(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[Df(t[r++])];return r&&r==n?e:void 0}var Xe=Mf,jf=Xe;function Lf(e,t,r){var n=e==null?void 0:jf(e,t);return n===void 0?r:n}var Ye=Lf;function Gf(e,t){return e!=null&&t in Object(e)}var Hf=Gf,Vf=_e,Rf=qt,Kf=G,Nf=Le,Bf=Ge,Uf=ae;function qf(e,t,r){t=Vf(t,e);for(var n=-1,a=t.length,s=!1;++n<a;){var i=Uf(t[n]);if(!(s=e!=null&&r(e,i)))break;e=e[i]}return s||++n!=a?s:(a=e==null?0:e.length,!!a&&Bf(a)&&Nf(i,a)&&(Kf(e)||Rf(e)))}var zf=qf,Wf=Hf,kf=zf;function Xf(e,t){return e!=null&&kf(e,t,Wf)}var Yf=Xf,Zf=qe,Jf=Ye,Qf=Yf,el=We,tl=pr,rl=gr,nl=ae,al=1,sl=2;function il(e,t){return el(e)&&tl(t)?rl(nl(e),t):function(r){var n=Jf(r,e);return n===void 0&&n===t?Qf(r,e):Zf(t,n,al|sl)}}var ol=il;function ul(e){return e}var cl=ul;function fl(e){return function(t){return t==null?void 0:t[e]}}var ll=fl,dl=Xe;function vl(e){return function(t){return dl(t,e)}}var hl=vl,yl=ll,pl=hl,gl=We,ml=ae;function bl(e){return gl(e)?yl(ml(e)):pl(e)}var _l=bl,$l=Wc,Sl=ol,Pl=cl,El=G,Il=_l;function Al(e){return typeof e=="function"?e:e==null?Pl:typeof e=="object"?El(e)?Sl(e[0],e[1]):$l(e):Il(e)}var Er=Al,Ol="Expected a function";function Tl(e){if(typeof e!="function")throw new TypeError(Ol);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}var Fl=Tl,wl=V,Cl=function(){try{var e=wl(Object,"defineProperty");return e({},"",{}),e}catch{}}(),xl=Cl,Ir=xl;function Dl(e,t,r){t=="__proto__"&&Ir?Ir(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}var Ml=Dl,jl=Ml,Ll=we,Gl=Object.prototype,Hl=Gl.hasOwnProperty;function Vl(e,t,r){var n=e[t];(!(Hl.call(e,t)&&Ll(n,r))||r===void 0&&!(t in e))&&jl(e,t,r)}var Rl=Vl,Kl=Rl,Nl=_e,Bl=Le,Ar=re,Ul=ae;function ql(e,t,r,n){if(!Ar(e))return e;t=Nl(t,e);for(var a=-1,s=t.length,i=s-1,o=e;o!=null&&++a<s;){var c=Ul(t[a]),u=r;if(c==="__proto__"||c==="constructor"||c==="prototype")return e;if(a!=i){var f=o[c];u=n?n(f,c,o):void 0,u===void 0&&(u=Ar(f)?f:Bl(t[a+1])?[]:{})}Kl(o,c,u),o=o[c]}return e}var Or=ql,zl=Xe,Wl=Or,kl=_e;function Xl(e,t,r){for(var n=-1,a=t.length,s={};++n<a;){var i=t[n],o=zl(e,i);r(o,i)&&Wl(s,kl(i,e),o)}return s}var Yl=Xl,Zl=Zt,Jl=Zl(Object.getPrototypeOf,Object),Ql=Jl,ed=Ht,td=Ql,rd=Nt,nd=Rt,ad=Object.getOwnPropertySymbols,sd=ad?function(e){for(var t=[];e;)ed(t,rd(e)),e=td(e);return t}:nd,id=sd;function od(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}var ud=od,cd=re,fd=Yt,ld=ud,dd=Object.prototype,vd=dd.hasOwnProperty;function hd(e){if(!cd(e))return ld(e);var t=fd(e),r=[];for(var n in e)n=="constructor"&&(t||!vd.call(e,n))||r.push(n);return r}var yd=hd,pd=Xt,gd=yd,md=Jt;function bd(e){return md(e)?pd(e,!0):gd(e)}var _d=bd,$d=Vt,Sd=id,Pd=_d;function Ed(e){return $d(e,Pd,Sd)}var Id=Ed,Ad=br,Od=Er,Td=Yl,Fd=Id;function wd(e,t){if(e==null)return{};var r=Ad(Fd(e),function(n){return[n]});return t=Od(t),Td(e,r,function(n,a){return t(n,a[0])})}var Cd=wd,xd=Er,Dd=Fl,Md=Cd;function jd(e,t){return Md(e,Dd(xd(t)))}var Ld=jd;const Gd=(e="on",t)=>{if(Array.isArray(t))return t.some(r=>r===!0||r===e);if(typeof t=="boolean")return t;if(typeof t=="string")return t===e},Hd=(e="on",t)=>{if(typeof t=="string")return t===e},Vd={initial:"onBlur",whenTouched:"onChange",whenSubmitted:"onChange"},Rd=({clearError:e,validate:t,defaultValue:r,touched:n,setTouched:a,hasBeenSubmitted:s,validationBehavior:i,name:o})=>{const c=j(j({},Vd),i);return(u={})=>{const f=s?c.whenSubmitted:n?c.whenTouched:c.initial,l=Q(j({},u),{onChange:(...d)=>{var h;return f==="onChange"?t():e(),(h=u==null?void 0:u.onChange)==null?void 0:h.call(u,...d)},onBlur:(...d)=>{var h;return f==="onBlur"&&t(),a(!0),(h=u==null?void 0:u.onBlur)==null?void 0:h.call(u,...d)},name:o});return u.type==="checkbox"?l.defaultChecked=Gd(u.value,r):u.type==="radio"?l.defaultChecked=Hd(u.value,r):u.value===void 0&&(l.defaultValue=r),Ld(l,d=>d===void 0)}};var Kd="Invariant failed";function se(e,t){if(!e)throw new Error(Kd)}const $e="__rvfInternalFormId",Nd="__rvfInternalFormDefaults",Tr=e=>`${Nd}_${e}`,Fr=v.createContext(null),Ze=e=>({hydrateTo:()=>e,map:t=>Ze(t(e))}),Je=()=>({hydrateTo:e=>e,map:()=>Je()}),ie={serverData:Ze,hydratedData:Je,from:(e,t)=>t?Je():Ze(e)},wr=e=>{let t;const r=new Set,n=(c,u)=>{const f=typeof c=="function"?c(t):c;if(f!==t){const l=t;t=u?f:Object.assign({},t,f),r.forEach(d=>d(t,l))}},a=()=>t,o={setState:n,getState:a,subscribe:c=>(r.add(c),()=>r.delete(c)),destroy:()=>r.clear()};return t=e(n,a,o),o},Bd=e=>e?wr(e):wr;var Cr={exports:{}},xr={},Dr={exports:{}},Mr={};/**
|
2
|
+
* @license React
|
3
|
+
* use-sync-external-store-shim.production.min.js
|
4
|
+
*
|
5
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
6
|
+
*
|
7
|
+
* This source code is licensed under the MIT license found in the
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
9
|
+
*/var k=L.default;function Ud(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var qd=typeof Object.is=="function"?Object.is:Ud,zd=k.useState,Wd=k.useEffect,kd=k.useLayoutEffect,Xd=k.useDebugValue;function Yd(e,t){var r=t(),n=zd({inst:{value:r,getSnapshot:t}}),a=n[0].inst,s=n[1];return kd(function(){a.value=r,a.getSnapshot=t,Qe(a)&&s({inst:a})},[e,r,t]),Wd(function(){return Qe(a)&&s({inst:a}),e(function(){Qe(a)&&s({inst:a})})},[e]),Xd(r),r}function Qe(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!qd(e,r)}catch{return!0}}function Zd(e,t){return t()}var Jd=typeof window=="undefined"||typeof window.document=="undefined"||typeof window.document.createElement=="undefined"?Zd:Yd;Mr.useSyncExternalStore=k.useSyncExternalStore!==void 0?k.useSyncExternalStore:Jd,Dr.exports=Mr;/**
|
10
|
+
* @license React
|
11
|
+
* use-sync-external-store-shim/with-selector.production.min.js
|
12
|
+
*
|
13
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
14
|
+
*
|
15
|
+
* This source code is licensed under the MIT license found in the
|
16
|
+
* LICENSE file in the root directory of this source tree.
|
17
|
+
*/var Se=L.default,Qd=Dr.exports;function ev(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var tv=typeof Object.is=="function"?Object.is:ev,rv=Qd.useSyncExternalStore,nv=Se.useRef,av=Se.useEffect,sv=Se.useMemo,iv=Se.useDebugValue;xr.useSyncExternalStoreWithSelector=function(e,t,r,n,a){var s=nv(null);if(s.current===null){var i={hasValue:!1,value:null};s.current=i}else i=s.current;s=sv(function(){function c(h){if(!u){if(u=!0,f=h,h=n(h),a!==void 0&&i.hasValue){var m=i.value;if(a(m,h))return l=m}return l=h}if(m=l,tv(f,h))return m;var _=n(h);return a!==void 0&&a(m,_)?m:(f=h,l=_)}var u=!1,f,l,d=r===void 0?null:r;return[function(){return c(t())},d===null?void 0:function(){return c(d())}]},[t,r,n,a]);var o=rv(e,s[0],s[1]);return av(function(){i.hasValue=!0,i.value=o},[o]),iv(o),o},Cr.exports=xr;function ov(e,t=e.getState,r){const n=Cr.exports.useSyncExternalStoreWithSelector(e.subscribe,e.getState,e.getServerState||e.getState,t,r);return v.useDebugValue(n),n}const jr=e=>{const t=typeof e=="function"?Bd(e):e,r=(n,a)=>ov(t,n,a);return Object.assign(r,t),r};var Lr=e=>e?jr(e):jr;function w(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];throw Error("[Immer] minified error nr: "+e+(r.length?" "+r.map(function(a){return"'"+a+"'"}).join(","):"")+". Find the full error at: https://bit.ly/3cXEKWf")}function X(e){return!!e&&!!e[E]}function K(e){return!!e&&(function(t){if(!t||typeof t!="object")return!1;var r=Object.getPrototypeOf(t);if(r===null)return!0;var n=Object.hasOwnProperty.call(r,"constructor")&&r.constructor;return n===Object||typeof n=="function"&&Function.toString.call(n)===yv}(e)||Array.isArray(e)||!!e[zr]||!!e.constructor[zr]||tt(e)||rt(e))}function oe(e,t,r){r===void 0&&(r=!1),Y(e)===0?(r?Object.keys:ht)(e).forEach(function(n){r&&typeof n=="symbol"||t(n,e[n],e)}):e.forEach(function(n,a){return t(a,n,e)})}function Y(e){var t=e[E];return t?t.i>3?t.i-4:t.i:Array.isArray(e)?1:tt(e)?2:rt(e)?3:0}function et(e,t){return Y(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function uv(e,t){return Y(e)===2?e.get(t):e[t]}function Gr(e,t,r){var n=Y(e);n===2?e.set(t,r):n===3?(e.delete(t),e.add(r)):e[t]=r}function cv(e,t){return e===t?e!==0||1/e==1/t:e!=e&&t!=t}function tt(e){return vv&&e instanceof Map}function rt(e){return hv&&e instanceof Set}function N(e){return e.o||e.t}function nt(e){if(Array.isArray(e))return Array.prototype.slice.call(e);var t=pv(e);delete t[E];for(var r=ht(t),n=0;n<r.length;n++){var a=r[n],s=t[a];s.writable===!1&&(s.writable=!0,s.configurable=!0),(s.get||s.set)&&(t[a]={configurable:!0,writable:!0,enumerable:s.enumerable,value:e[a]})}return Object.create(Object.getPrototypeOf(e),t)}function at(e,t){return t===void 0&&(t=!1),st(e)||X(e)||!K(e)||(Y(e)>1&&(e.set=e.add=e.clear=e.delete=fv),Object.freeze(e),t&&oe(e,function(r,n){return at(n,!0)},!0)),e}function fv(){w(2)}function st(e){return e==null||typeof e!="object"||Object.isFrozen(e)}function C(e){var t=gv[e];return t||w(18,e),t}function Hr(){return ue}function it(e,t){t&&(C("Patches"),e.u=[],e.s=[],e.v=t)}function Pe(e){ot(e),e.p.forEach(lv),e.p=null}function ot(e){e===ue&&(ue=e.l)}function Vr(e){return ue={p:[],l:ue,h:e,m:!0,_:0}}function lv(e){var t=e[E];t.i===0||t.i===1?t.j():t.O=!0}function ut(e,t){t._=t.p.length;var r=t.p[0],n=e!==void 0&&e!==r;return t.h.g||C("ES5").S(t,e,n),n?(r[E].P&&(Pe(t),w(4)),K(e)&&(e=Ee(t,e),t.l||Ie(t,e)),t.u&&C("Patches").M(r[E].t,e,t.u,t.s)):e=Ee(t,r,[]),Pe(t),t.u&&t.v(t.u,t.s),e!==qr?e:void 0}function Ee(e,t,r){if(st(t))return t;var n=t[E];if(!n)return oe(t,function(s,i){return Rr(e,n,t,s,i,r)},!0),t;if(n.A!==e)return t;if(!n.P)return Ie(e,n.t,!0),n.t;if(!n.I){n.I=!0,n.A._--;var a=n.i===4||n.i===5?n.o=nt(n.k):n.o;oe(n.i===3?new Set(a):a,function(s,i){return Rr(e,n,a,s,i,r)}),Ie(e,a,!1),r&&e.u&&C("Patches").R(n,r,e.u,e.s)}return n.o}function Rr(e,t,r,n,a,s){if(X(a)){var i=Ee(e,a,s&&t&&t.i!==3&&!et(t.D,n)?s.concat(n):void 0);if(Gr(r,n,i),!X(i))return;e.m=!1}if(K(a)&&!st(a)){if(!e.h.F&&e._<1)return;Ee(e,a),t&&t.A.l||Ie(e,a)}}function Ie(e,t,r){r===void 0&&(r=!1),e.h.F&&e.m&&at(t,r)}function ct(e,t){var r=e[E];return(r?N(r):e)[t]}function Kr(e,t){if(t in e)for(var r=Object.getPrototypeOf(e);r;){var n=Object.getOwnPropertyDescriptor(r,t);if(n)return n;r=Object.getPrototypeOf(r)}}function ft(e){e.P||(e.P=!0,e.l&&ft(e.l))}function lt(e){e.o||(e.o=nt(e.t))}function dt(e,t,r){var n=tt(t)?C("MapSet").N(t,r):rt(t)?C("MapSet").T(t,r):e.g?function(a,s){var i=Array.isArray(a),o={i:i?1:0,A:s?s.A:Hr(),P:!1,I:!1,D:{},l:s,t:a,k:null,o:null,j:null,C:!1},c=o,u=yt;i&&(c=[o],u=ce);var f=Proxy.revocable(c,u),l=f.revoke,d=f.proxy;return o.k=d,o.j=l,d}(t,r):C("ES5").J(t,r);return(r?r.A:Hr()).p.push(n),n}function dv(e){return X(e)||w(22,e),function t(r){if(!K(r))return r;var n,a=r[E],s=Y(r);if(a){if(!a.P&&(a.i<4||!C("ES5").K(a)))return a.t;a.I=!0,n=Nr(r,s),a.I=!1}else n=Nr(r,s);return oe(n,function(i,o){a&&uv(a.t,i)===o||Gr(n,i,t(o))}),s===3?new Set(n):n}(e)}function Nr(e,t){switch(t){case 2:return new Map(e);case 3:return Array.from(e)}return nt(e)}var Br,ue,vt=typeof Symbol!="undefined"&&typeof Symbol("x")=="symbol",vv=typeof Map!="undefined",hv=typeof Set!="undefined",Ur=typeof Proxy!="undefined"&&Proxy.revocable!==void 0&&typeof Reflect!="undefined",qr=vt?Symbol.for("immer-nothing"):((Br={})["immer-nothing"]=!0,Br),zr=vt?Symbol.for("immer-draftable"):"__$immer_draftable",E=vt?Symbol.for("immer-state"):"__$immer_state",yv=""+Object.prototype.constructor,ht=typeof Reflect!="undefined"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,pv=Object.getOwnPropertyDescriptors||function(e){var t={};return ht(e).forEach(function(r){t[r]=Object.getOwnPropertyDescriptor(e,r)}),t},gv={},yt={get:function(e,t){if(t===E)return e;var r=N(e);if(!et(r,t))return function(a,s,i){var o,c=Kr(s,i);return c?"value"in c?c.value:(o=c.get)===null||o===void 0?void 0:o.call(a.k):void 0}(e,r,t);var n=r[t];return e.I||!K(n)?n:n===ct(e.t,t)?(lt(e),e.o[t]=dt(e.A.h,n,e)):n},has:function(e,t){return t in N(e)},ownKeys:function(e){return Reflect.ownKeys(N(e))},set:function(e,t,r){var n=Kr(N(e),t);if(n!=null&&n.set)return n.set.call(e.k,r),!0;if(!e.P){var a=ct(N(e),t),s=a==null?void 0:a[E];if(s&&s.t===r)return e.o[t]=r,e.D[t]=!1,!0;if(cv(r,a)&&(r!==void 0||et(e.t,t)))return!0;lt(e),ft(e)}return e.o[t]===r&&typeof r!="number"&&(r!==void 0||t in e.o)||(e.o[t]=r,e.D[t]=!0,!0)},deleteProperty:function(e,t){return ct(e.t,t)!==void 0||t in e.t?(e.D[t]=!1,lt(e),ft(e)):delete e.D[t],e.o&&delete e.o[t],!0},getOwnPropertyDescriptor:function(e,t){var r=N(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n&&{writable:!0,configurable:e.i!==1||t!=="length",enumerable:n.enumerable,value:r[t]}},defineProperty:function(){w(11)},getPrototypeOf:function(e){return Object.getPrototypeOf(e.t)},setPrototypeOf:function(){w(12)}},ce={};oe(yt,function(e,t){ce[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}}),ce.deleteProperty=function(e,t){return ce.set.call(this,e,t,void 0)},ce.set=function(e,t,r){return yt.set.call(this,e[0],t,r,e[0])};var mv=function(){function e(r){var n=this;this.g=Ur,this.F=!0,this.produce=function(a,s,i){if(typeof a=="function"&&typeof s!="function"){var o=s;s=a;var c=n;return function(_){var A=this;_===void 0&&(_=o);for(var $=arguments.length,P=Array($>1?$-1:0),T=1;T<$;T++)P[T-1]=arguments[T];return c.produce(_,function(O){var x;return(x=s).call.apply(x,[A,O].concat(P))})}}var u;if(typeof s!="function"&&w(6),i!==void 0&&typeof i!="function"&&w(7),K(a)){var f=Vr(n),l=dt(n,a,void 0),d=!0;try{u=s(l),d=!1}finally{d?Pe(f):ot(f)}return typeof Promise!="undefined"&&u instanceof Promise?u.then(function(_){return it(f,i),ut(_,f)},function(_){throw Pe(f),_}):(it(f,i),ut(u,f))}if(!a||typeof a!="object"){if((u=s(a))===void 0&&(u=a),u===qr&&(u=void 0),n.F&&at(u,!0),i){var h=[],m=[];C("Patches").M(a,u,h,m),i(h,m)}return u}w(21,a)},this.produceWithPatches=function(a,s){if(typeof a=="function")return function(u){for(var f=arguments.length,l=Array(f>1?f-1:0),d=1;d<f;d++)l[d-1]=arguments[d];return n.produceWithPatches(u,function(h){return a.apply(void 0,[h].concat(l))})};var i,o,c=n.produce(a,s,function(u,f){i=u,o=f});return typeof Promise!="undefined"&&c instanceof Promise?c.then(function(u){return[u,i,o]}):[c,i,o]},typeof(r==null?void 0:r.useProxies)=="boolean"&&this.setUseProxies(r.useProxies),typeof(r==null?void 0:r.autoFreeze)=="boolean"&&this.setAutoFreeze(r.autoFreeze)}var t=e.prototype;return t.createDraft=function(r){K(r)||w(8),X(r)&&(r=dv(r));var n=Vr(this),a=dt(this,r,void 0);return a[E].C=!0,ot(n),a},t.finishDraft=function(r,n){var a=r&&r[E],s=a.A;return it(s,n),ut(void 0,s)},t.setAutoFreeze=function(r){this.F=r},t.setUseProxies=function(r){r&&!Ur&&w(20),this.g=r},t.applyPatches=function(r,n){var a;for(a=n.length-1;a>=0;a--){var s=n[a];if(s.path.length===0&&s.op==="replace"){r=s.value;break}}a>-1&&(n=n.slice(a+1));var i=C("Patches").$;return X(r)?i(r,n):this.produce(r,function(o){return i(o,n)})},e}(),I=new mv,bv=I.produce;I.produceWithPatches.bind(I),I.setAutoFreeze.bind(I),I.setUseProxies.bind(I),I.applyPatches.bind(I),I.createDraft.bind(I),I.finishDraft.bind(I);const Wr=e=>(t,r,n)=>(n.setState=(a,s,...i)=>{const o=typeof a=="function"?bv(a):a;return t(o,s,...i)},e(n.setState,r,n)),kr=e=>{const t=new Map,r=n=>{if(t.has(n))return t.get(n);const a=e(n);return t.set(n,a),a};return r.remove=n=>{t.delete(n)},r},Z=kr(()=>Lr()(Wr((e,t,r)=>({fields:{},register:n=>e(a=>{a.fields[n]?a.fields[n].refCount++:a.fields[n]={refCount:1,value:void 0,hydrated:!1,valueUpdatePromise:void 0,resolveValueUpdate:void 0}}),unregister:n=>e(a=>{const s=a.fields[n];!s||(s.refCount--,s.refCount===0&&delete a.fields[n])}),setValue:(n,a)=>e(s=>{const i=s.fields[n];if(!i)return;i.value=a;const o=new Promise(c=>{i.resolveValueUpdate=c});i.valueUpdatePromise=o}),hydrateWithDefault:(n,a)=>e(s=>{const i=s.fields[n];!i||(i.value=a,i.defaultValue=a,i.hydrated=!0)}),awaitValueUpdate:async n=>{var a;await((a=t().fields[n])==null?void 0:a.valueUpdatePromise)},reset:()=>e(n=>{Object.values(n.fields).forEach(a=>{!a||(a.value=a.defaultValue)})})})))),pt=kr(e=>Lr()(Wr((t,r,n)=>({isHydrated:!1,isSubmitting:!1,hasBeenSubmitted:!1,touchedFields:{},fieldErrors:{},formElement:null,isValid:()=>Object.keys(r().fieldErrors).length===0,startSubmit:()=>t(a=>{a.isSubmitting=!0,a.hasBeenSubmitted=!0}),endSubmit:()=>t(a=>{a.isSubmitting=!1}),setTouched:(a,s)=>t(i=>{i.touchedFields[a]=s}),setFieldError:(a,s)=>t(i=>{i.fieldErrors[a]=s}),setFieldErrors:a=>t(s=>{s.fieldErrors=a}),clearFieldError:a=>t(s=>{delete s.fieldErrors[a]}),reset:()=>t(a=>{a.fieldErrors={},a.touchedFields={},a.hasBeenSubmitted=!1}),syncFormProps:a=>t(s=>{s.formProps=a}),setHydrated:()=>t(a=>{a.isHydrated=!0}),setFormElement:a=>{r().formElement!==a&&t(s=>{s.formElement=a})},validateField:async a=>{var c,u,f;const s=r().formElement;se(s);const i=(c=r().formProps)==null?void 0:c.validator;se(i),await((f=(u=Z(e).getState()).awaitValueUpdate)==null?void 0:f.call(u,a));const{error:o}=await i.validateField(new FormData(s),a);return o?(r().setFieldError(a,o),o):(r().clearFieldError(a),null)},validate:async()=>{var o;const a=r().formElement;se(a);const s=(o=r().formProps)==null?void 0:o.validator;se(s);const{error:i}=await s.validate(new FormData(a));i&&r().setFieldErrors(i.fieldErrors)},resetFormElement:()=>{var a;return(a=r().formElement)==null?void 0:a.reset()}})))),g=(e,t)=>pt(e)(t),_v=(e,t)=>Z(e)(t),H=(e,t)=>{const r=v.useContext(Fr);if(e)return{formId:e};if(r)return r;throw new Error(`Unable to determine form for ${t}. Please use it inside a ValidatedForm or pass a 'formId'.`)};function gt({fetcher:e,subaction:t,formId:r}){var a;const n=S.useActionData();return e?(a=e.data)!=null&&a.fieldErrors?e.data:null:n!=null&&n.fieldErrors?typeof r=="string"&&n.formId?n.formId===r?n:null:!t&&!n.subaction||n.subaction===t?n:null:null}const Xr=e=>{const t=gt(e),r=g(e.formId,n=>n.isHydrated);return ie.from(t==null?void 0:t.fieldErrors,r)},Yr=({formId:e})=>{const t=S.useMatches();if(typeof e=="string"){const r=Tr(e),n=t.reverse().find(a=>a.data&&r in a.data);return n==null?void 0:n.data[r]}return null},Zr=e=>{const{formId:t,defaultValuesProp:r}=e,n=g(t,i=>i.isHydrated),a=gt(e),s=Yr(e);return n?ie.hydratedData():a!=null&&a.repopulateFields?(se(typeof a.repopulateFields=="object"),ie.serverData(a.repopulateFields)):r?ie.serverData(r):ie.serverData(s)},$v=({fetcher:e})=>{const t=S.useTransition();return e?e.state==="submitting":!!t.submission},Sv=(e,{formId:t})=>{const r=g(t,s=>s.touchedFields[e]),n=g(t,s=>s.setTouched),a=v.useCallback(s=>n(e,s),[e,n]);return[r,a]},Pv=(e,t)=>{const r=Xr(t),n=g(t.formId,a=>a.fieldErrors[e]);return r.map(a=>a==null?void 0:a[e]).hydrateTo(n)},Jr=e=>{const{formId:t}=e;return g(t,r=>r.clearFieldError)},Qr=(e,t)=>{const r=Zr(t),n=sn(t.formId);return r.map(a=>Ye(a,e)).hydrateTo(Ye(n,e))},en=e=>g(e,t=>t.isSubmitting),tn=e=>g(e,t=>t.isValid()),rn=e=>g(e,t=>t.hasBeenSubmitted),nn=e=>g(e,t=>t.validateField),Ev=e=>g(e,t=>t.validate),Iv=()=>()=>{},an=e=>g(e,t=>{var r,n;return(n=(r=t.formProps)==null?void 0:r.registerReceiveFocus)!=null?n:Iv}),Av={},sn=e=>g(e,t=>{var r,n;return(n=(r=t.formProps)==null?void 0:r.defaultValues)!=null?n:Av}),Ov=({formId:e})=>g(e,t=>t.setTouched),Tv=e=>g(e,t=>t.touchedFields),Fv=e=>g(e,t=>t.fieldErrors),on=e=>g(e,t=>t.setFieldErrors),wv=e=>g(e,t=>t.resetFormElement),Cv=e=>g(e,t=>{var r;return(r=t.formProps)==null?void 0:r.action}),xv=e=>g(e,t=>{var r;return(r=t.formProps)==null?void 0:r.subaction}),Dv=(e,t)=>{const r=Z(e.formId),n=r(u=>{var f;return(f=u.fields[t])==null?void 0:f.value}),s=pt(e.formId)(u=>u.isHydrated),i=Qr(t,e),o=r(u=>{var f,l;return(l=(f=u.fields[t])==null?void 0:f.hydrated)!=null?l:!1}),c=r(u=>u.hydrateWithDefault);return v.useEffect(()=>{s&&!o&&c(t,i)},[i,t,c,o,s]),o?n:i},Mv=(e,t)=>{const r=Z(e.formId),n=r(u=>{var f;return(f=u.fields[t])==null?void 0:f.resolveValueUpdate});v.useEffect(()=>{n==null||n()},[n]);const a=r(u=>u.register),s=r(u=>u.unregister);v.useEffect(()=>(a(t),()=>s(t)),[e.formId,t,a,s]);const i=r(u=>u.setValue),o=v.useCallback(u=>i(t,u),[t,i]);return[Dv(e,t),o]},jv=e=>Z(e)(r=>r.setValue),un=e=>{const t=H(e,"useIsSubmitting");return en(t.formId)},cn=e=>{const t=H(e,"useIsValid");return tn(t.formId)},Lv=(e,t)=>{const{formId:r,handleReceiveFocus:n}=t!=null?t:{},a=H(r,"useField"),s=Qr(e,a),[i,o]=Sv(e,a),c=Pv(e,a),u=Jr(a),f=rn(a.formId),l=nn(a.formId),d=an(a.formId);return v.useEffect(()=>{if(n)return d(e,n)},[n,e,d]),v.useMemo(()=>{const m={error:c,clearError:()=>u(e),validate:()=>{l(e)},defaultValue:s,touched:i,setTouched:o},_=Rd(Q(j({},m),{name:e,hasBeenSubmitted:f,validationBehavior:t==null?void 0:t.validationBehavior}));return Q(j({},m),{getInputProps:_})},[c,u,s,i,o,e,f,t==null?void 0:t.validationBehavior,l])},Gv=(e,t)=>{const r=H(t,"useControlField"),[n,a]=Mv(r,e);return[n,a]},Hv=e=>{const t=H(e,"useControlField");return jv(t.formId)};function Vv(e,t,r){return F.json({fieldErrors:e.fieldErrors,subaction:e.subaction,repopulateFields:t,formId:e.formId},j({status:422},r))}const Rv=(e,t)=>({[Tr(e)]:t});function Kv(e,t,r,n){for(var a=e.length,s=r+(n?1:-1);n?s--:++s<a;)if(t(e[s],s,e))return s;return-1}var Nv=Kv;function Bv(e){return e!==e}var Uv=Bv;function qv(e,t,r){for(var n=r-1,a=e.length;++n<a;)if(e[n]===t)return n;return-1}var zv=qv,Wv=Nv,kv=Uv,Xv=zv;function Yv(e,t,r){return t===t?Xv(e,t,r):Wv(e,kv,r)}var Zv=Yv,Jv=Zv;function Qv(e,t){var r=e==null?0:e.length;return!!r&&Jv(e,t,0)>-1}var eh=Qv;function th(e,t,r){for(var n=-1,a=e==null?0:e.length;++n<a;)if(r(t,e[n]))return!0;return!1}var rh=th;function nh(){}var ah=nh,mt=tr,sh=ah,ih=Me,oh=1/0,uh=mt&&1/ih(new mt([,-0]))[1]==oh?function(e){return new mt(e)}:sh,ch=uh,fh=xt,lh=eh,dh=rh,vh=Dt,hh=ch,yh=Me,ph=200;function gh(e,t,r){var n=-1,a=lh,s=e.length,i=!0,o=[],c=o;if(r)i=!1,a=dh;else if(s>=ph){var u=t?null:hh(e);if(u)return yh(u);i=!1,a=vh,c=new fh}else c=t?[]:o;e:for(;++n<s;){var f=e[n],l=t?t(f):f;if(f=r||f!==0?f:0,i&&l===l){for(var d=c.length;d--;)if(c[d]===l)continue e;t&&c.push(l),o.push(f)}else a(c,l,r)||(c!==o&&c.push(l),o.push(f))}return o}var mh=gh,bh=mh;function _h(e){return e&&e.length?bh(e):[]}var $h=_h;class fn{constructor(){this.dict=new Map,this.add=(t,r)=>{this.dict.has(t)?this.dict.get(t).push(r):this.dict.set(t,[r])},this.delete=t=>{this.dict.delete(t)},this.remove=(t,r)=>{if(!this.dict.has(t))return;const n=this.dict.get(t),a=n.indexOf(r);a!==-1&&n.splice(a,1),n.length===0&&this.dict.delete(t)},this.getAll=t=>{var r;return(r=this.dict.get(t))!=null?r:[]},this.entries=()=>this.dict.entries(),this.values=()=>this.dict.values(),this.has=t=>this.dict.has(t)}}const Sh=()=>{const e=v.useRef(null);return v.useCallback(()=>(e.current||(e.current=new fn),e.current),[])},Ph=e=>{pt.remove(e),Z.remove(e)};function ln(e,t){const r=v.useRef(!1);v.useEffect(()=>{e&&(r.current=!0),!e&&r.current&&(r.current=!1,t())})}var Eh=qe;function Ih(e,t){return Eh(e,t)}var Ah=Ih;const Oh=e=>t=>{e.filter(Boolean).forEach(r=>{typeof r=="function"?r(t):r!=null&&(r.current=t)})},Th=typeof window!="undefined"?v.useLayoutEffect:v.useEffect,Fh=e=>{const t=v.useRef(e),r=t.current===e||Ah(t.current,e);return v.useEffect(()=>{r||(t.current=e)}),r?t.current:e},wh=e=>new FormData(e);function Ch(e){return e!==null}const xh=(e,t,r)=>{var s;const n=[...r.elements].map(i=>{const o=i instanceof RadioNodeList?i[0]:i;return o instanceof HTMLInputElement?o.name:null}).filter(Ch).filter(i=>i in e),a=$h(n);for(const i of a){if(t.has(i)){t.getAll(i).forEach(c=>{c()});break}const o=r.elements.namedItem(i);if(!!o){if(o instanceof RadioNodeList){const c=(s=[...o].filter(u=>u instanceof HTMLInputElement).find(u=>u.value===o.value))!=null?s:o[0];if(c&&c instanceof HTMLInputElement){c.focus();break}}if(o instanceof HTMLInputElement){if(o.type==="hidden")continue;o.focus();break}}}},Dh=e=>{const[t]=v.useState(()=>Symbol("remix-validated-form-id"));return e!=null?e:t},Mh=({resetAfterSubmit:e,formRef:t})=>{const r=un(),n=cn();return ln(r,()=>{var a;n&&e&&((a=t.current)==null||a.reset())}),null};function jh(e){let t=!1;return new Proxy(e,{get:(r,n)=>n==="preventDefault"?()=>{t=!0}:n==="defaultPrevented"?t:r[n]})}function Lh(_){var A=_,{validator:e,onSubmit:t,children:r,fetcher:n,action:a,defaultValues:s,formRef:i,onReset:o,subaction:c,resetAfterSubmit:u=!1,disableFocusOnError:f,method:l,replace:d,id:h}=A,m=$n(A,["validator","onSubmit","children","fetcher","action","defaultValues","formRef","onReset","subaction","resetAfterSubmit","disableFocusOnError","method","replace","id"]);var gn;const $=Dh(h),P=Fh(s),T=v.useMemo(()=>({formId:$,action:a,subaction:c,defaultValuesProp:P,fetcher:n}),[a,n,$,P,c]),O=gt(T),x=Yr(T),Uh=$v(T),J=v.useRef(null),qh=(gn=n==null?void 0:n.Form)!=null?gn:S.Form,zh=S.useSubmit(),bt=on($),Wh=g($,p=>p.setFieldError),kh=g($,p=>p.reset),Xh=_v($,p=>p.reset),Yh=g($,p=>p.startSubmit),_t=g($,p=>p.endSubmit),hn=g($,p=>p.syncFormProps),yn=g($,p=>p.setHydrated),Zh=g($,p=>p.setFormElement);v.useEffect(()=>(yn(),()=>Ph($)),[$,yn]);const Ae=Sh(),pn=v.useCallback((p,D)=>(Ae().add(p,D),()=>{Ae().remove(p,D)}),[Ae]);Th(()=>{var p;hn({action:a,defaultValues:(p=P!=null?P:x)!=null?p:{},subaction:c,registerReceiveFocus:pn,validator:e})},[a,P,pn,c,hn,x,e]),v.useEffect(()=>{var p;bt((p=O==null?void 0:O.fieldErrors)!=null?p:{})},[O==null?void 0:O.fieldErrors,bt,Wh]),ln(Uh,()=>{_t()});let Oe=L.default.useRef();v.useEffect(()=>{let p=J.current;if(!p)return;function D(fe){if(!(fe.target instanceof HTMLElement))return;let Te=fe.target.closest("button,input[type=submit]");Te&&Te.form===p&&Te.type==="submit"&&(Oe.current=Te)}return window.addEventListener("click",D,{capture:!0}),()=>{window.removeEventListener("click",D,{capture:!0})}},[]);const Jh=async p=>{Yh();const D=await e.validate(wh(p.currentTarget));if(D.error)_t(),bt(D.error.fieldErrors),f||xh(D.error.fieldErrors,Ae(),J.current);else{const fe=jh(p);if(await(t==null?void 0:t(D.data,fe)),fe.defaultPrevented){_t();return}n?n.submit(Oe.current||J.current):zh(Oe.current||J.current,{method:l,replace:d}),Oe.current=null}};return L.default.createElement(qh,Q(j({ref:Oh([J,i,Zh])},m),{id:h,action:a,method:l,replace:d,onSubmit:p=>{p.preventDefault(),Jh(p)},onReset:p=>{o==null||o(p),!p.defaultPrevented&&(kh(),Xh())}}),L.default.createElement(Fr.Provider,{value:T},L.default.createElement(Mh,{formRef:J,resetAfterSubmit:u}),c&&L.default.createElement("input",{type:"hidden",value:c,name:"subaction"}),h&&L.default.createElement("input",{type:"hidden",value:h,name:$e}),r))}var Gh=Or;function Hh(e,t,r){return e==null?e:Gh(e,t,r)}var Vh=Hh;const dn=e=>{const t=new fn;return e.forEach(([r,n])=>t.add(r,n)),[...t.entries()].reduce((r,[n,a])=>Vh(r,n,a.length===1?a[0]:a),{})},vn=e=>"entries"in e&&typeof e.entries=="function"?dn([...e.entries()]):dn(Object.entries(e));function Rh(e){return{validate:async t=>{const r=vn(t),n=await e.validate(r);return n.error?{data:void 0,error:{fieldErrors:n.error,subaction:r.subaction,formId:r[$e]},submittedData:r,formId:r[$e]}:{data:n.data,error:void 0,submittedData:r,formId:r[$e]}},validateField:(t,r)=>e.validateField(vn(t),r)}}const Kh=e=>{const t=H(e,"useFormState"),r=en(t.formId),n=rn(t.formId),a=Tv(t.formId),s=tn(t.formId),i=Cv(t.formId),o=xv(t.formId),c=sn(t.formId),f=Zr(t).hydrateTo(c),l=Fv(t.formId),h=Xr(t).hydrateTo(l);return v.useMemo(()=>({action:i,subaction:o,defaultValues:f,fieldErrors:h!=null?h:{},hasBeenSubmitted:n,isSubmitting:r,touchedFields:a,isValid:s}),[i,n,f,h,r,s,o,a])},Nh=e=>{const t=H(e,"useFormHelpers"),r=Ov(t),n=nn(t.formId),a=Ev(t.formId),s=Jr(t),i=on(t.formId),o=wv(t.formId);return v.useMemo(()=>({setTouched:r,validateField:n,clearError:s,validate:a,clearAllErrors:()=>i({}),reset:o}),[s,o,i,r,a,n])},Bh=e=>{const t=H(e,"useFormContext"),r=Kh(e),{clearError:n,setTouched:a,validateField:s,clearAllErrors:i,validate:o}=Nh(e),c=an(t.formId),u=v.useCallback((...f)=>{f.forEach(l=>{n(l)})},[n]);return Q(j({},r),{setFieldTouched:a,validateField:s,clearError:u,registerReceiveFocus:c,clearAllErrors:i,validate:o})};y.ValidatedForm=Lh,y.createValidator=Rh,y.setFormDefaults=Rv,y.useControlField=Gv,y.useField=Lv,y.useFormContext=Bh,y.useIsSubmitting=un,y.useIsValid=cn,y.useUpdateControlledField=Hv,y.validationError=Vv,Object.defineProperties(y,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
File without changes
|
@@ -63,3 +63,5 @@ export declare const useField: (name: string, options?: {
|
|
63
63
|
*/
|
64
64
|
formId?: string | undefined;
|
65
65
|
} | undefined) => FieldProps;
|
66
|
+
export declare const useControlField: <T>(name: string, formId?: string | undefined) => readonly [T, (value: T) => void];
|
67
|
+
export declare const useUpdateControlledField: (formId?: string | undefined) => (fieldName: string, value: unknown) => void;
|
File without changes
|
@@ -1,9 +1,11 @@
|
|
1
1
|
export declare class MultiValueMap<Key, Value> {
|
2
2
|
private dict;
|
3
3
|
add: (key: Key, value: Value) => void;
|
4
|
+
delete: (key: Key) => void;
|
4
5
|
remove: (key: Key, value: Value) => void;
|
5
6
|
getAll: (key: Key) => Value[];
|
6
7
|
entries: () => IterableIterator<[Key, Value[]]>;
|
8
|
+
values: () => IterableIterator<Value[]>;
|
7
9
|
has: (key: Key) => boolean;
|
8
10
|
}
|
9
11
|
export declare const useMultiValueMap: <Key, Value>() => () => MultiValueMap<Key, Value>;
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,32 @@
|
|
1
|
+
import { FieldErrors, ValidationErrorResponseData } from "..";
|
2
|
+
import { InternalFormContextValue } from "./formContext";
|
3
|
+
import { Hydratable } from "./hydratable";
|
4
|
+
import { InternalFormId } from "./state/storeFamily";
|
5
|
+
export declare const useInternalFormContext: (formId?: string | symbol | undefined, hookName?: string | undefined) => InternalFormContextValue;
|
6
|
+
export declare function useErrorResponseForForm({ fetcher, subaction, formId, }: InternalFormContextValue): ValidationErrorResponseData | null;
|
7
|
+
export declare const useFieldErrorsForForm: (context: InternalFormContextValue) => Hydratable<FieldErrors | undefined>;
|
8
|
+
export declare const useDefaultValuesFromLoader: ({ formId, }: InternalFormContextValue) => any;
|
9
|
+
export declare const useDefaultValuesForForm: (context: InternalFormContextValue) => Hydratable<{
|
10
|
+
[fieldName: string]: any;
|
11
|
+
}>;
|
12
|
+
export declare const useHasActiveFormSubmit: ({ fetcher, }: InternalFormContextValue) => boolean;
|
13
|
+
export declare const useFieldTouched: (field: string, { formId }: InternalFormContextValue) => readonly [boolean, (touched: boolean) => void];
|
14
|
+
export declare const useFieldError: (name: string, context: InternalFormContextValue) => string | undefined;
|
15
|
+
export declare const useClearError: (context: InternalFormContextValue) => (field: string) => void;
|
16
|
+
export declare const useFieldDefaultValue: (name: string, context: InternalFormContextValue) => any;
|
17
|
+
export declare const useInternalIsSubmitting: (formId: InternalFormId) => boolean;
|
18
|
+
export declare const useInternalIsValid: (formId: InternalFormId) => boolean;
|
19
|
+
export declare const useInternalHasBeenSubmitted: (formId: InternalFormId) => boolean;
|
20
|
+
export declare const useValidateField: (formId: InternalFormId) => (fieldName: string) => Promise<string | null>;
|
21
|
+
export declare const useValidate: (formId: InternalFormId) => () => Promise<void>;
|
22
|
+
export declare const useRegisterReceiveFocus: (formId: InternalFormId) => (fieldName: string, handler: () => void) => () => void;
|
23
|
+
export declare const useSyncedDefaultValues: (formId: InternalFormId) => {
|
24
|
+
[fieldName: string]: any;
|
25
|
+
};
|
26
|
+
export declare const useSetTouched: ({ formId }: InternalFormContextValue) => (field: string, touched: boolean) => void;
|
27
|
+
export declare const useTouchedFields: (formId: InternalFormId) => import("..").TouchedFields;
|
28
|
+
export declare const useFieldErrors: (formId: InternalFormId) => FieldErrors;
|
29
|
+
export declare const useSetFieldErrors: (formId: InternalFormId) => (errors: FieldErrors) => void;
|
30
|
+
export declare const useResetFormElement: (formId: InternalFormId) => () => void;
|
31
|
+
export declare const useFormActionProp: (formId: InternalFormId) => string | undefined;
|
32
|
+
export declare const useFormSubactionProp: (formId: InternalFormId) => string | undefined;
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,24 @@
|
|
1
|
+
export declare type ControlledFieldState = {
|
2
|
+
fields: {
|
3
|
+
[fieldName: string]: {
|
4
|
+
refCount: number;
|
5
|
+
value: unknown;
|
6
|
+
defaultValue?: unknown;
|
7
|
+
hydrated: boolean;
|
8
|
+
valueUpdatePromise: Promise<void> | undefined;
|
9
|
+
resolveValueUpdate: (() => void) | undefined;
|
10
|
+
} | undefined;
|
11
|
+
};
|
12
|
+
register: (fieldName: string) => void;
|
13
|
+
unregister: (fieldName: string) => void;
|
14
|
+
setValue: (fieldName: string, value: unknown) => void;
|
15
|
+
hydrateWithDefault: (fieldName: string, defaultValue: unknown) => void;
|
16
|
+
awaitValueUpdate: (fieldName: string) => Promise<void>;
|
17
|
+
reset: () => void;
|
18
|
+
};
|
19
|
+
export declare const controlledFieldStore: {
|
20
|
+
(formId: import("./storeFamily").InternalFormId): import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<ControlledFieldState>, "setState"> & {
|
21
|
+
setState(nextStateOrUpdater: ControlledFieldState | Partial<ControlledFieldState> | ((state: import("immer/dist/internal").WritableDraft<ControlledFieldState>) => void), shouldReplace?: boolean | undefined): void;
|
22
|
+
}>;
|
23
|
+
remove(formId: import("./storeFamily").InternalFormId): void;
|
24
|
+
};
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import { InternalFormContextValue } from "../formContext";
|
2
|
+
import { InternalFormId } from "./storeFamily";
|
3
|
+
export declare const useControlledFieldValue: (context: InternalFormContextValue, field: string) => any;
|
4
|
+
export declare const useControllableValue: (context: InternalFormContextValue, field: string) => readonly [any, (value: unknown) => void];
|
5
|
+
export declare const useUpdateControllableValue: (formId: InternalFormId) => (fieldName: string, value: unknown) => void;
|
6
|
+
export declare const useAwaitValue: (formId: InternalFormId) => (fieldName: string) => Promise<void>;
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import { FieldErrors, TouchedFields, Validator } from "../../validation/types";
|
2
|
+
export declare type SyncedFormProps = {
|
3
|
+
formId?: string;
|
4
|
+
action?: string;
|
5
|
+
subaction?: string;
|
6
|
+
defaultValues: {
|
7
|
+
[fieldName: string]: any;
|
8
|
+
};
|
9
|
+
registerReceiveFocus: (fieldName: string, handler: () => void) => () => void;
|
10
|
+
validator: Validator<unknown>;
|
11
|
+
};
|
12
|
+
export declare type FormState = {
|
13
|
+
isHydrated: boolean;
|
14
|
+
isSubmitting: boolean;
|
15
|
+
hasBeenSubmitted: boolean;
|
16
|
+
fieldErrors: FieldErrors;
|
17
|
+
touchedFields: TouchedFields;
|
18
|
+
formProps?: SyncedFormProps;
|
19
|
+
formElement: HTMLFormElement | null;
|
20
|
+
isValid: () => boolean;
|
21
|
+
startSubmit: () => void;
|
22
|
+
endSubmit: () => void;
|
23
|
+
setTouched: (field: string, touched: boolean) => void;
|
24
|
+
setFieldError: (field: string, error: string) => void;
|
25
|
+
setFieldErrors: (errors: FieldErrors) => void;
|
26
|
+
clearFieldError: (field: string) => void;
|
27
|
+
reset: () => void;
|
28
|
+
syncFormProps: (props: SyncedFormProps) => void;
|
29
|
+
setHydrated: () => void;
|
30
|
+
setFormElement: (formElement: HTMLFormElement | null) => void;
|
31
|
+
validateField: (fieldName: string) => Promise<string | null>;
|
32
|
+
validate: () => Promise<void>;
|
33
|
+
resetFormElement: () => void;
|
34
|
+
};
|
35
|
+
export declare const formStore: {
|
36
|
+
(formId: import("./storeFamily").InternalFormId): import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<FormState>, "setState"> & {
|
37
|
+
setState(nextStateOrUpdater: FormState | Partial<FormState> | ((state: import("immer/dist/internal").WritableDraft<FormState>) => void), shouldReplace?: boolean | undefined): void;
|
38
|
+
}>;
|
39
|
+
remove(formId: import("./storeFamily").InternalFormId): void;
|
40
|
+
};
|
@@ -0,0 +1,9 @@
|
|
1
|
+
/**
|
2
|
+
* This is basically what `atomFamily` from jotai does,
|
3
|
+
* but it doesn't make sense to include the entire jotai library just for that api.
|
4
|
+
*/
|
5
|
+
export declare type InternalFormId = string | symbol;
|
6
|
+
export declare const storeFamily: <T>(create: (formId: InternalFormId) => T) => {
|
7
|
+
(formId: InternalFormId): T;
|
8
|
+
remove(formId: InternalFormId): void;
|
9
|
+
};
|
@@ -0,0 +1,5 @@
|
|
1
|
+
import { ControlledFieldState } from "./controlledFieldStore";
|
2
|
+
import { FormState } from "./createFormStore";
|
3
|
+
import { InternalFormId } from "./storeFamily";
|
4
|
+
export declare const useFormStore: <T>(formId: InternalFormId, selector: (state: FormState) => T) => T;
|
5
|
+
export declare const useControlledFieldStore: <T>(formId: InternalFormId, selector: (state: ControlledFieldState) => T) => T;
|
File without changes
|
File without changes
|
File without changes
|
@@ -30,6 +30,21 @@ export declare type FormHelpers = {
|
|
30
30
|
* Change the touched state of the specified field.
|
31
31
|
*/
|
32
32
|
setTouched: (fieldName: string, touched: boolean) => void;
|
33
|
+
/**
|
34
|
+
* Validate the whole form and populate any errors.
|
35
|
+
*/
|
36
|
+
validate: () => Promise<void>;
|
37
|
+
/**
|
38
|
+
* Clears all errors on the form.
|
39
|
+
*/
|
40
|
+
clearAllErrors: () => void;
|
41
|
+
/**
|
42
|
+
* Resets the form.
|
43
|
+
*
|
44
|
+
* _Note_: The equivalent behavior can be achieved by calling formElement.reset()
|
45
|
+
* or clicking a button element with `type="reset"`.
|
46
|
+
*/
|
47
|
+
reset: () => void;
|
33
48
|
};
|
34
49
|
/**
|
35
50
|
* Returns helpers that can be used to update the form state.
|
@@ -53,6 +53,14 @@ export declare type FormContextValue = {
|
|
53
53
|
* Change the touched state of the specified field.
|
54
54
|
*/
|
55
55
|
setFieldTouched: (fieldName: string, touched: boolean) => void;
|
56
|
+
/**
|
57
|
+
* Validate the whole form and populate any errors.
|
58
|
+
*/
|
59
|
+
validate: () => Promise<void>;
|
60
|
+
/**
|
61
|
+
* Clears all errors on the form.
|
62
|
+
*/
|
63
|
+
clearAllErrors: () => void;
|
56
64
|
};
|
57
65
|
/**
|
58
66
|
* Provides access to some of the internal state of the form.
|
File without changes
|
File without changes
|
package/package.json
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
{
|
2
2
|
"name": "remix-validated-form",
|
3
|
-
"version": "4.
|
3
|
+
"version": "4.4.0",
|
4
4
|
"description": "Form component and utils for easy form validation in remix",
|
5
|
-
"browser": "./
|
6
|
-
"main": "./
|
5
|
+
"browser": "./dist/remix-validated-form.cjs.js",
|
6
|
+
"main": "./dist/remix-validated-form.umd.js",
|
7
|
+
"module": "./dist/remix-validated-form.es.js",
|
8
|
+
"types": "./dist/types/index.d.ts",
|
7
9
|
"repository": {
|
8
10
|
"type": "git",
|
9
11
|
"url": "https://github.com/airjp73/remix-validated-form"
|
@@ -11,9 +13,7 @@
|
|
11
13
|
"sideEffects": false,
|
12
14
|
"scripts": {
|
13
15
|
"dev": "tsc --module ESNext --outDir ./browser --watch",
|
14
|
-
"build": "
|
15
|
-
"build:browser": "tsc --module ESNext --outDir ./browser",
|
16
|
-
"build:main": "tsc --module CommonJS --outDir ./build",
|
16
|
+
"build": "vite build",
|
17
17
|
"prepublishOnly": "cp ../../README.md ./README.md && npm run build",
|
18
18
|
"postpublish": "rm ./README.md"
|
19
19
|
},
|
@@ -45,11 +45,13 @@
|
|
45
45
|
"fetch-blob": "^3.1.3",
|
46
46
|
"react": "^17.0.2",
|
47
47
|
"tsconfig": "*",
|
48
|
-
"typescript": "^4.5.3"
|
48
|
+
"typescript": "^4.5.3",
|
49
|
+
"vite-config": "*"
|
49
50
|
},
|
50
51
|
"dependencies": {
|
51
|
-
"
|
52
|
+
"immer": "^9.0.12",
|
52
53
|
"lodash": "^4.17.21",
|
53
|
-
"tiny-invariant": "^1.2.0"
|
54
|
+
"tiny-invariant": "^1.2.0",
|
55
|
+
"zustand": "^4.0.0-rc.0"
|
54
56
|
}
|
55
57
|
}
|
package/src/ValidatedForm.tsx
CHANGED
@@ -10,7 +10,6 @@ import React, {
|
|
10
10
|
useRef,
|
11
11
|
useState,
|
12
12
|
} from "react";
|
13
|
-
import invariant from "tiny-invariant";
|
14
13
|
import { useIsSubmitting, useIsValid } from "./hooks";
|
15
14
|
import { FORM_ID_FIELD } from "./internal/constants";
|
16
15
|
import {
|
@@ -20,22 +19,16 @@ import {
|
|
20
19
|
import {
|
21
20
|
useDefaultValuesFromLoader,
|
22
21
|
useErrorResponseForForm,
|
23
|
-
useFormUpdateAtom,
|
24
22
|
useHasActiveFormSubmit,
|
23
|
+
useSetFieldErrors,
|
25
24
|
} from "./internal/hooks";
|
26
25
|
import { MultiValueMap, useMultiValueMap } from "./internal/MultiValueMap";
|
26
|
+
import { cleanupFormState } from "./internal/state/cleanup";
|
27
|
+
import { SyncedFormProps } from "./internal/state/createFormStore";
|
27
28
|
import {
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
formElementAtom,
|
32
|
-
formPropsAtom,
|
33
|
-
isHydratedAtom,
|
34
|
-
resetAtom,
|
35
|
-
setFieldErrorAtom,
|
36
|
-
startSubmitAtom,
|
37
|
-
SyncedFormProps,
|
38
|
-
} from "./internal/state";
|
29
|
+
useControlledFieldStore,
|
30
|
+
useFormStore,
|
31
|
+
} from "./internal/state/storeHooks";
|
39
32
|
import { useSubmitComplete } from "./internal/submissionCallbacks";
|
40
33
|
import {
|
41
34
|
mergeRefs,
|
@@ -232,39 +225,27 @@ export function ValidatedForm<DataType>({
|
|
232
225
|
const Form = fetcher?.Form ?? RemixForm;
|
233
226
|
|
234
227
|
const submit = useSubmit();
|
235
|
-
const setFieldErrors =
|
236
|
-
const setFieldError =
|
237
|
-
const reset =
|
238
|
-
const
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
const
|
228
|
+
const setFieldErrors = useSetFieldErrors(formId);
|
229
|
+
const setFieldError = useFormStore(formId, (state) => state.setFieldError);
|
230
|
+
const reset = useFormStore(formId, (state) => state.reset);
|
231
|
+
const resetControlledFields = useControlledFieldStore(
|
232
|
+
formId,
|
233
|
+
(state) => state.reset
|
234
|
+
);
|
235
|
+
const startSubmit = useFormStore(formId, (state) => state.startSubmit);
|
236
|
+
const endSubmit = useFormStore(formId, (state) => state.endSubmit);
|
237
|
+
const syncFormProps = useFormStore(formId, (state) => state.syncFormProps);
|
238
|
+
const setHydrated = useFormStore(formId, (state) => state.setHydrated);
|
239
|
+
const setFormElementInState = useFormStore(
|
240
|
+
formId,
|
241
|
+
(state) => state.setFormElement
|
242
|
+
);
|
243
243
|
|
244
244
|
useEffect(() => {
|
245
|
-
setHydrated(
|
245
|
+
setHydrated();
|
246
246
|
return () => cleanupFormState(formId);
|
247
247
|
}, [formId, setHydrated]);
|
248
248
|
|
249
|
-
const validateField: SyncedFormProps["validateField"] = useCallback(
|
250
|
-
async (field) => {
|
251
|
-
invariant(formRef.current, "Cannot find reference to form");
|
252
|
-
const { error } = await validator.validateField(
|
253
|
-
getDataFromForm(formRef.current),
|
254
|
-
field
|
255
|
-
);
|
256
|
-
|
257
|
-
if (error) {
|
258
|
-
setFieldError({ field, error });
|
259
|
-
return error;
|
260
|
-
} else {
|
261
|
-
setFieldError({ field, error: undefined });
|
262
|
-
return null;
|
263
|
-
}
|
264
|
-
},
|
265
|
-
[setFieldError, validator]
|
266
|
-
);
|
267
|
-
|
268
249
|
const customFocusHandlers = useMultiValueMap<string, () => void>();
|
269
250
|
const registerReceiveFocus: SyncedFormProps["registerReceiveFocus"] =
|
270
251
|
useCallback(
|
@@ -282,8 +263,8 @@ export function ValidatedForm<DataType>({
|
|
282
263
|
action,
|
283
264
|
defaultValues: providedDefaultValues ?? backendDefaultValues ?? {},
|
284
265
|
subaction,
|
285
|
-
validateField,
|
286
266
|
registerReceiveFocus,
|
267
|
+
validator,
|
287
268
|
});
|
288
269
|
}, [
|
289
270
|
action,
|
@@ -291,8 +272,8 @@ export function ValidatedForm<DataType>({
|
|
291
272
|
registerReceiveFocus,
|
292
273
|
subaction,
|
293
274
|
syncFormProps,
|
294
|
-
validateField,
|
295
275
|
backendDefaultValues,
|
276
|
+
validator,
|
296
277
|
]);
|
297
278
|
|
298
279
|
useEffect(() => {
|
@@ -382,6 +363,7 @@ export function ValidatedForm<DataType>({
|
|
382
363
|
onReset?.(event);
|
383
364
|
if (event.defaultPrevented) return;
|
384
365
|
reset();
|
366
|
+
resetControlledFields();
|
385
367
|
}}
|
386
368
|
>
|
387
369
|
<InternalFormContext.Provider value={contextValue}>
|
package/src/hooks.ts
CHANGED
@@ -8,15 +8,18 @@ import {
|
|
8
8
|
useInternalFormContext,
|
9
9
|
useFieldTouched,
|
10
10
|
useFieldError,
|
11
|
-
useFormAtomValue,
|
12
11
|
useFieldDefaultValue,
|
12
|
+
useClearError,
|
13
|
+
useInternalIsSubmitting,
|
14
|
+
useInternalIsValid,
|
15
|
+
useInternalHasBeenSubmitted,
|
16
|
+
useValidateField,
|
17
|
+
useRegisterReceiveFocus,
|
13
18
|
} from "./internal/hooks";
|
14
19
|
import {
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
isValidAtom,
|
19
|
-
} from "./internal/state";
|
20
|
+
useControllableValue,
|
21
|
+
useUpdateControllableValue,
|
22
|
+
} from "./internal/state/controlledFields";
|
20
23
|
|
21
24
|
/**
|
22
25
|
* Returns whether or not the parent form is currently being submitted.
|
@@ -27,7 +30,7 @@ import {
|
|
27
30
|
*/
|
28
31
|
export const useIsSubmitting = (formId?: string) => {
|
29
32
|
const formContext = useInternalFormContext(formId, "useIsSubmitting");
|
30
|
-
return
|
33
|
+
return useInternalIsSubmitting(formContext.formId);
|
31
34
|
};
|
32
35
|
|
33
36
|
/**
|
@@ -37,7 +40,7 @@ export const useIsSubmitting = (formId?: string) => {
|
|
37
40
|
*/
|
38
41
|
export const useIsValid = (formId?: string) => {
|
39
42
|
const formContext = useInternalFormContext(formId, "useIsValid");
|
40
|
-
return
|
43
|
+
return useInternalIsValid(formContext.formId);
|
41
44
|
};
|
42
45
|
|
43
46
|
export type FieldProps = {
|
@@ -99,14 +102,12 @@ export const useField = (
|
|
99
102
|
|
100
103
|
const defaultValue = useFieldDefaultValue(name, formContext);
|
101
104
|
const [touched, setTouched] = useFieldTouched(name, formContext);
|
102
|
-
const
|
105
|
+
const error = useFieldError(name, formContext);
|
106
|
+
const clearError = useClearError(formContext);
|
103
107
|
|
104
|
-
const hasBeenSubmitted =
|
105
|
-
|
106
|
-
);
|
107
|
-
const { validateField, registerReceiveFocus } = useFormAtomValue(
|
108
|
-
formPropsAtom(formContext.formId)
|
109
|
-
);
|
108
|
+
const hasBeenSubmitted = useInternalHasBeenSubmitted(formContext.formId);
|
109
|
+
const validateField = useValidateField(formContext.formId);
|
110
|
+
const registerReceiveFocus = useRegisterReceiveFocus(formContext.formId);
|
110
111
|
|
111
112
|
useEffect(() => {
|
112
113
|
if (handleReceiveFocus)
|
@@ -116,7 +117,7 @@ export const useField = (
|
|
116
117
|
const field = useMemo<FieldProps>(() => {
|
117
118
|
const helpers = {
|
118
119
|
error,
|
119
|
-
clearError: () =>
|
120
|
+
clearError: () => clearError(name),
|
120
121
|
validate: () => {
|
121
122
|
validateField(name);
|
122
123
|
},
|
@@ -136,15 +137,26 @@ export const useField = (
|
|
136
137
|
};
|
137
138
|
}, [
|
138
139
|
error,
|
140
|
+
clearError,
|
139
141
|
defaultValue,
|
140
142
|
touched,
|
141
143
|
setTouched,
|
142
144
|
name,
|
143
145
|
hasBeenSubmitted,
|
144
146
|
options?.validationBehavior,
|
145
|
-
setError,
|
146
147
|
validateField,
|
147
148
|
]);
|
148
149
|
|
149
150
|
return field;
|
150
151
|
};
|
152
|
+
|
153
|
+
export const useControlField = <T>(name: string, formId?: string) => {
|
154
|
+
const context = useInternalFormContext(formId, "useControlField");
|
155
|
+
const [value, setValue] = useControllableValue(context, name);
|
156
|
+
return [value as T, setValue as (value: T) => void] as const;
|
157
|
+
};
|
158
|
+
|
159
|
+
export const useUpdateControlledField = (formId?: string) => {
|
160
|
+
const context = useInternalFormContext(formId, "useControlField");
|
161
|
+
return useUpdateControllableValue(context.formId);
|
162
|
+
};
|
@@ -11,6 +11,10 @@ export class MultiValueMap<Key, Value> {
|
|
11
11
|
}
|
12
12
|
};
|
13
13
|
|
14
|
+
delete = (key: Key) => {
|
15
|
+
this.dict.delete(key);
|
16
|
+
};
|
17
|
+
|
14
18
|
remove = (key: Key, value: Value) => {
|
15
19
|
if (!this.dict.has(key)) return;
|
16
20
|
const array = this.dict.get(key)!;
|
@@ -25,6 +29,8 @@ export class MultiValueMap<Key, Value> {
|
|
25
29
|
|
26
30
|
entries = (): IterableIterator<[Key, Value[]]> => this.dict.entries();
|
27
31
|
|
32
|
+
values = (): IterableIterator<Value[]> => this.dict.values();
|
33
|
+
|
28
34
|
has = (key: Key): boolean => this.dict.has(key);
|
29
35
|
}
|
30
36
|
|