react-simple-formkit 2.2.0 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -7
- package/dist/react-simple-formkit.js +4 -4
- package/dist/react-simple-formkit.mjs +474 -448
- package/dist/react-simple-formkit.umd.js +4 -4
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(A,r){typeof exports=="object"&&typeof module<"u"?r(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],r):(A=typeof globalThis<"u"?globalThis:A||self,r(A.Name={},A.React))})(this,function(A,r){"use strict";var
|
|
1
|
+
(function(A,r){typeof exports=="object"&&typeof module<"u"?r(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],r):(A=typeof globalThis<"u"?globalThis:A||self,r(A.Name={},A.React))})(this,function(A,r){"use strict";var te={exports:{}},G={};/**
|
|
2
2
|
* @license React
|
|
3
3
|
* react-jsx-runtime.production.js
|
|
4
4
|
*
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* This source code is licensed under the MIT license found in the
|
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
|
9
|
-
*/var
|
|
9
|
+
*/var fe;function Re(){if(fe)return G;fe=1;var s=Symbol.for("react.transitional.element"),a=Symbol.for("react.fragment");function l(f,h,E){var m=null;if(E!==void 0&&(m=""+E),h.key!==void 0&&(m=""+h.key),"key"in h){E={};for(var R in h)R!=="key"&&(E[R]=h[R])}else E=h;return h=E.ref,{$$typeof:s,type:f,key:m,ref:h!==void 0?h:null,props:E}}return G.Fragment=a,G.jsx=l,G.jsxs=l,G}var H={};/**
|
|
10
10
|
* @license React
|
|
11
11
|
* react-jsx-runtime.development.js
|
|
12
12
|
*
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
*
|
|
15
15
|
* This source code is licensed under the MIT license found in the
|
|
16
16
|
* LICENSE file in the root directory of this source tree.
|
|
17
|
-
*/var
|
|
17
|
+
*/var de;function ve(){return de||(de=1,process.env.NODE_ENV!=="production"&&function(){function s(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===Q?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case d:return"Fragment";case x:return"Profiler";case O:return"StrictMode";case se:return"Suspense";case ne:return"SuspenseList";case j:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case b:return"Portal";case ie:return(e.displayName||"Context")+".Provider";case Y:return(e._context.displayName||"Context")+".Consumer";case X:var c=e.render;return e=e.displayName,e||(e=c.displayName||c.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case ae:return c=e.displayName||null,c!==null?c:s(e.type)||"Memo";case Z:c=e._payload,e=e._init;try{return s(e(c))}catch{}}return null}function a(e){return""+e}function l(e){try{a(e);var c=!1}catch{c=!0}if(c){c=console;var k=c.error,y=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return k.call(c,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",y),a(e)}}function f(e){if(e===d)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===Z)return"<...>";try{var c=s(e);return c?"<"+c+">":"<...>"}catch{return"<...>"}}function h(){var e=W.A;return e===null?null:e.getOwner()}function E(){return Error("react-stack-top-frame")}function m(e){if(B.call(e,"key")){var c=Object.getOwnPropertyDescriptor(e,"key").get;if(c&&c.isReactWarning)return!1}return e.key!==void 0}function R(e,c){function k(){K||(K=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",c))}k.isReactWarning=!0,Object.defineProperty(e,"key",{get:k,configurable:!0})}function v(){var e=s(this.type);return q[e]||(q[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function F(e,c,k,y,P,_,U,J){return k=_.ref,e={$$typeof:u,type:e,key:c,props:_,_owner:P},(k!==void 0?k:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:v}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:U}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:J}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function i(e,c,k,y,P,_,U,J){var p=c.children;if(p!==void 0)if(y)if(D(p)){for(y=0;y<p.length;y++)g(p[y]);Object.freeze&&Object.freeze(p)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else g(p);if(B.call(c,"key")){p=s(e);var V=Object.keys(c).filter(function(oe){return oe!=="key"});y=0<V.length?"{key: someKey, "+V.join(": ..., ")+": ...}":"{key: someKey}",ee[p+y]||(V=0<V.length?"{"+V.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
|
|
18
18
|
let props = %s;
|
|
19
19
|
<%s {...props} />
|
|
20
20
|
React keys must be passed directly to JSX without using spread:
|
|
21
21
|
let props = %s;
|
|
22
|
-
<%s key={someKey} {...props} />`,p,S,N,S),ee[S+p]=!0)}if(S=null,R!==void 0&&(l(R),S=""+R),E(a)&&(l(a.key),S=""+a.key),"key"in a){R={};for(var te in a)te!=="key"&&(R[te]=a[te])}else R=a;return S&&C(R,typeof e=="function"?e.displayName||e.name||"Unknown":e),T(e,S,w,j,d(),R,L,U)}function b(e){typeof e=="object"&&e!==null&&e.$$typeof===c&&e._store&&(e._store.validated=1)}var i=r,c=Symbol.for("react.transitional.element"),f=Symbol.for("react.portal"),m=Symbol.for("react.fragment"),O=Symbol.for("react.strict_mode"),B=Symbol.for("react.profiler"),W=Symbol.for("react.consumer"),H=Symbol.for("react.context"),X=Symbol.for("react.forward_ref"),ne=Symbol.for("react.suspense"),oe=Symbol.for("react.suspense_list"),ae=Symbol.for("react.memo"),Z=Symbol.for("react.lazy"),P=Symbol.for("react.activity"),Q=Symbol.for("react.client.reference"),x=i.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,M=Object.prototype.hasOwnProperty,V=Array.isArray,D=console.createTask?console.createTask:function(){return null};i={"react-stack-bottom-frame":function(e){return e()}};var K,q={},$=i["react-stack-bottom-frame"].bind(i,g)(),y=D(h(g)),ee={};G.Fragment=m,G.jsx=function(e,a,R,p,j){var w=1e4>x.recentlyCreatedOwnerStacks++;return u(e,a,R,!1,p,j,w?Error("react-stack-top-frame"):$,w?D(h(e)):y)},G.jsxs=function(e,a,R,p,j){var w=1e4>x.recentlyCreatedOwnerStacks++;return u(e,a,R,!0,p,j,w?Error("react-stack-top-frame"):$,w?D(h(e)):y)}}()),G}var fe;function ke(){return fe||(fe=1,process.env.NODE_ENV==="production"?se.exports=ge():se.exports=Re()),se.exports}var de=ke();const k=()=>{},be=r.createContext({ref:null,watch:k,actions:{reset:k,resetField:k,setValue:k,getValues:k,getErrors:k,getFieldStates:k,getFormStates:k,setError:k,clearError:k,clearErrors:k,checkValidity:k,getNumberFields:k,getFieldValidity:k,getDefaultValues:k,setFieldState:k,resetFieldState:k,getControlledFields:k},registerController:k,registerHookWatcher:k,lastReloadedAt:k,loadFormValues:k,getWatchValue:k,channels:{}}),ce=()=>r.useContext(be),Se=({id:n,control:o,method:l,action:h,children:d,onSubmit:g=()=>{},onInput:E=()=>{},onChange:C=()=>{},onBlur:v=()=>{},onReset:T=()=>{},numberFields:u=[],className:b,...i})=>(r.useEffect(()=>{const c=o.channels.subscribe("onChange",C),f=o.channels.subscribe("onBlur",v);return()=>{c(),f()}},[]),de.jsx(be.Provider,{value:o,children:de.jsx("form",{id:n,ref:o.ref,action:h,method:l,className:b,onInput:E,onSubmit:c=>{l||c.preventDefault();const f=o.loadFormValues();g(f)},onChange:c=>{const f=c.target.name;o.actions.getControlledFields().has(f)||o.actions.setValue(f,c.target.value)},onBlur:c=>{const f=c.target.name;if(o.actions.getControlledFields().has(f))return;const m=c.target.value;o.channels.publish("onBlur",f,m,o.actions.getValues())},onReset:c=>{o.actions.reset(),T(c)},...i,children:d},o.lastReloadedAt)})),me=({control:n,name:o,compute:l})=>{const{getWatchValue:h,registerHookWatcher:d}=n||ce(),g=h({name:o,compute:l}),[E,C]=r.useState(g);return r.useEffect(()=>{const v=d({name:o,compute:l,value:E,setValue:C});return()=>v.forEach(T=>T())},[]),E},Ee=({name:n,defaultValue:o})=>{const{actions:l,registerController:h,channels:d}=ce(),g=r.useRef(),E=l.getDefaultValues()[n]||o||"",[C,v]=r.useState(E),T=me({name:`fieldStates.${n}.customState`}),u=r.useCallback(c=>{l.setFieldState(n,"customState",c)},[]),b=r.useCallback((c,{shouldDirty:f=!0,shouldOnChange:m=!0}={})=>{v(c),l.setValue(n,c,{shouldDirty:f,shouldOnChange:m})},[l.setValue]),i=r.useCallback(()=>{d.publish("onBlur",n,C,l.getValues())},[]);return r.useEffect(()=>h(n,v),[]),{ref:g,name:n,defaultValue:E,value:C,onChange:b,onBlur:i,customState:T,setCustomState:u}},ye=({name:n,defaultValue:o,render:l=({ref:h,name:d,defaultValue:g,value:E,onChange:C,onBlur:v,customState:T,setCustomState:u})=>null})=>{const h=Ee({name:n,defaultValue:o});return l(h)},Ce=["errors","fieldStates","formState"],I=n=>Ce.some(o=>n.startsWith(o))?n:"values."+n,ve=["badInput","customError","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","tooLong","tooShort","typeMismatch","valueMissing"],he=n=>{typeof n.setCustomValidity=="function"&&n.setCustomValidity("");let o=n.validity,l=ve.find(h=>o[h]);if(l)return{type:l,message:n.validationMessage}};class pe{constructor(){this.events=new Map}getEvents(){return this.events}subscribe(o,l){return this.events.has(o)||this.events.set(o,new Set),this.events.get(o).add(l),()=>{var h;return(h=this.events.get(o))==null?void 0:h.delete(l)}}publish(o,...l){const h=this.events.get(o);h&&h.forEach(d=>d(...l)),this.events.forEach((d,g)=>{o.includes(g)&&d.forEach(E=>E(...l))})}reset(){this.events.clear()}}const Fe=()=>{const n=r.useRef(new pe),o=r.useCallback((d,...g)=>{n.current.publish(d,...g)},[]),l=r.useCallback((d,g)=>n.current.subscribe(d,g),[]),h=r.useCallback(()=>{n.current.reset()},[]);return{publish:o,subscribe:l,reset:h}},Te=()=>{const[n,o]=r.useState(),l=r.useCallback(()=>o(new Date().toString()),[]);return[n,l]},_e=()=>{const[,n]=r.useState({});return r.useCallback(()=>n({}),[])},we=({channels:n,getValues:o,getErrors:l,getFieldStates:h,getFormState:d})=>{const g=_e(),E=r.useCallback(({name:u,compute:b})=>{if(typeof b=="function")return b(o());if(Array.isArray(u)){const i={};return u.forEach(c=>{i[c]=E({name:c})}),i}return u.split(".").reduce((i,c)=>i&&i[c]!==void 0?i[c]:void 0,{...o(),errors:{...l()},formState:{...d()},fieldStates:{...h()}})},[]),C=r.useCallback(u=>{if(!u)return n.subscribe("values",()=>g()),o();if(typeof u=="string"){const b=I(u);return n.subscribe(b,()=>g()),E({name:u})}if(Array.isArray(u)){const b={};return u.forEach(i=>{const c=I(i);n.subscribe(c,()=>g()),b[i]=E({name:i})}),{...b}}throw new Error("Parameters of watch must be string or array of string")},[]),v=r.useCallback(({name:u,compute:b,value:i,setValue:c})=>{if(typeof b=="function")return[n.subscribe("values",()=>{const m=E({compute:b});c(m)})];if(!u)return[n.subscribe("values",()=>{c(o())})];if(typeof u=="string"){const f=I(u);return[n.subscribe(f,()=>{const O=E({name:u});c(O)})]}if(Array.isArray(u)){const f=E({name:u}),m=[];return u.forEach(O=>{const B=I(O),W=n.subscribe(B,()=>{const H=E({name:O});f[O]=H,c({...f})});m.push(W)}),m}throw new Error("Parameters of name must be string or array of string or compute must be a function")},[]),T=r.useCallback((u,b)=>{if(!u)return n.subscribe("values",b);if(typeof u=="string"){const i=I(u);return n.subscribe(i,b)}if(Array.isArray(u)){const i={},c=[];return u.forEach(f=>{const m=I(f),O=n.subscribe(m,()=>{i[f]=E({name:f}),b({...i})});c.push(O)}),c}throw new Error("Parameters of name must be string or array of string")},[n]);return{watch:C,registerHookWatcher:v,getWatchValue:E,subscribe:T}},ue={isError:!1,isDirty:!1,isTouched:!1,customState:null},Ae=[],Oe={},je=({numberFields:n=Ae,defaultValues:o=Oe,shouldUnRegister:l=!1,shouldConvertNumber:h=!1}={})=>{const[d,g]=Te(),E=r.useRef(),C=r.useRef(!1),v=r.useRef(!1),T=r.useRef(n),u=r.useRef(new Map),b=r.useRef({}),i=r.useRef({}),c=r.useRef(o),f=r.useRef(o),m=Fe(),O=r.useCallback(()=>{i.current=Object.keys(f.current).reduce((t,s)=>({...t,[s]:{...ue}}),{})},[]),B=r.useCallback((t={})=>{f.current={...f.current,...t},c.current={...f.current},u.current.forEach((s,F)=>{s(f.current[F])}),C.current=!1,b.current={},T.current=n,u.current=new Map,m.reset(),O(),n.length>0&&(h=!0),g()},[]),W=r.useCallback(()=>{const t=Object.fromEntries(new FormData(E.current));return u.current.forEach((F,_)=>{t[_]=c.current[_]}),h&&T.current.forEach(F=>t.hasOwnProperty(F)&&(t[F]=Number(t[F])||0)),t},[]),H=r.useCallback(()=>!!Object.values(M()).find(t=>t.isDirty),[]),X=r.useCallback(()=>!!Object.values(x()).find(t=>!!t),[]),ne=r.useCallback(t=>he(t.target),[]),oe=r.useCallback(()=>f.current,[]),ae=r.useCallback(()=>T.current,[]),Z=r.useCallback(()=>u.current,[]),P=r.useCallback((t,s)=>s?Array.isArray(s)?s.map(F=>t[F]):t[s]:{...t},[]),Q=r.useCallback(t=>P(c.current,t),[P]),x=r.useCallback(t=>P(b.current,t),[P]),M=r.useCallback(t=>P(i.current,t),[P]),V=r.useCallback(t=>P({isDirty:C.current,isError:v.current,errorFields:Object.keys(b.current).filter(s=>!!b.current[s]),dirtyFields:Object.keys(i.current).filter(s=>i.current[s].isDirty),touchedFields:Object.keys(i.current).filter(s=>i.current[s].isTouched)},t),[P]),{watch:D,registerHookWatcher:K,getWatchValue:q,subscribe:$}=we({channels:m,getValues:Q,getErrors:x,getFieldStates:M,getFormState:V}),y=r.useCallback((t,s,F)=>{const _=i.current[t]||{...ue};_[s]!==F&&(i.current[t]={..._,[s]:F},m.publish(`fieldStates.${t}.${s}`,F),s==="isError"&&m.publish("formState.errorFields",V("errorFields")),s==="isDirty"&&m.publish("formState.dirtyFields",V("dirtyFields")),s==="isTouched"&&m.publish("formState.touchedFields",V("touchedFields")))},[]),ee=r.useCallback(t=>{y(t,"isError",!1),y(t,"isDirty",!1),y(t,"isTouched",!1),y(t,"customState",null)},[y]),e=r.useCallback((t,s)=>{if(b.current[t]===s)return;b.current[t]=s,y(t,"isError",!!s),m.publish(`errors.${t}`,s);const _=X();v.current!==_&&(v.current=_,m.publish("formState.isError",_))},[y]),a=r.useCallback(t=>{if(!b.current[t])return;b.current[t]=null,y(t,"isError",!1),m.publish(`errors.${t}`,null);const s=X();v.current!==s&&(v.current=s,m.publish("formState.isError",s))},[y]),R=r.useCallback(()=>{if(Object.keys(b.current)===0)return;Object.keys(b.current).forEach(s=>a(s)),b.current={};const t=X();v.current!==t&&(v.current=t,m.publish("formState.isError",t))},[]),p=r.useCallback(t=>{const s=he(t.target);s?e(t.target.name,s):a(t.target.name)},[e,a]),j=r.useCallback((t,s,{shouldDirty:F=!0,shouldOnChange:_=!0}={})=>{if(s===c.current[t])return;h&&T.current.includes(t)&&(s=Number(s)||void 0),y(t,"isTouched",!0);const re=s!==f.current[t];F&&i.current[t].isDirty!==re&&y(t,"isDirty",re);const Y=H();C.current!==Y&&(C.current=Y,m.publish("formState.isDirty",Y)),c.current[t]=s;const J=u.current.get(t);J&&J(s),m.publish(`values.${t}`,s,{shouldDirty:F,shouldOnChange:_}),_&&m.publish("onChange",t,s,c.current)},[y]),w=r.useCallback((t,s)=>(u.current.set(t,s),i.current[t]={...ue},()=>{l&&u.current.delete(t)}),[]),L=r.useCallback((t,{keepError:s,keepDirty:F,keepTouched:_,keepCustomState:re,defaultValue:Y})=>{const J=u.current.get(t);if(!J)throw new Error(`Cannot reset "${t}" because it's uncontrolled field`);f.current[t]=Y,c.current[t]=Y,J&&J(Y),s||a(t),F||y(t,"isDirty",!1),_||y(t,"isTouched",!1),re||y(t,"customState",null)},[a,y]),U=r.useCallback((t,s=S.getValues(t))=>{m.publish("onBlur",t,s,S.getValues())},[]),S=r.useMemo(()=>({subscribe:$,reset:B,resetField:L,setValue:j,getValues:Q,getErrors:x,getFieldStates:M,getFormState:V,setError:e,clearError:a,clearErrors:R,checkValidity:p,getNumberFields:ae,getFieldValidity:ne,getDefaultValues:oe,setFieldState:y,triggerFieldBlur:U,resetFieldState:ee,getControlledFields:Z}),[$,B,L,j,Q,x,M,V,e,a,R,p,ae,ne,oe,y,ee,U,Z]),N=r.useMemo(()=>({ref:E,watch:D,actions:S,registerController:w,registerHookWatcher:K,lastReloadedAt:d,loadFormValues:W,getWatchValue:q,channels:m}),[E,D,S,w,K,d,W,q,m]),te=r.useMemo(()=>({control:N,actions:S,watch:D}),[d,N,S,D]);return r.useLayoutEffect(()=>{if([...E.current.querySelectorAll("[name]")].forEach(s=>{!s.defaultValue&&!u.current.has(s.name)&&f.current[s.name]&&(s.defaultValue=f.current[s.name]),s.type==="number"&&!T.current.includes(s.name)&&T.current.push(s.name)}),E.current){const s=W();c.current={...s},f.current={...s}}},[d]),r.useLayoutEffect(()=>{O()},[]),te};A.Controller=ye,A.Form=Se,A.useController=Ee,A.useForm=je,A.useFormContext=ce,A.useWatch=me,Object.defineProperty(A,Symbol.toStringTag,{value:"Module"})});
|
|
22
|
+
<%s key={someKey} {...props} />`,y,p,V,p),ee[p+y]=!0)}if(p=null,k!==void 0&&(l(k),p=""+k),m(c)&&(l(c.key),p=""+c.key),"key"in c){k={};for(var N in c)N!=="key"&&(k[N]=c[N])}else k=c;return p&&R(k,typeof e=="function"?e.displayName||e.name||"Unknown":e),F(e,p,_,P,h(),k,U,J)}function g(e){typeof e=="object"&&e!==null&&e.$$typeof===u&&e._store&&(e._store.validated=1)}var o=r,u=Symbol.for("react.transitional.element"),b=Symbol.for("react.portal"),d=Symbol.for("react.fragment"),O=Symbol.for("react.strict_mode"),x=Symbol.for("react.profiler"),Y=Symbol.for("react.consumer"),ie=Symbol.for("react.context"),X=Symbol.for("react.forward_ref"),se=Symbol.for("react.suspense"),ne=Symbol.for("react.suspense_list"),ae=Symbol.for("react.memo"),Z=Symbol.for("react.lazy"),j=Symbol.for("react.activity"),Q=Symbol.for("react.client.reference"),W=o.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,B=Object.prototype.hasOwnProperty,D=Array.isArray,M=console.createTask?console.createTask:function(){return null};o={"react-stack-bottom-frame":function(e){return e()}};var K,q={},$=o["react-stack-bottom-frame"].bind(o,E)(),S=M(f(E)),ee={};H.Fragment=d,H.jsx=function(e,c,k,y,P){var _=1e4>W.recentlyCreatedOwnerStacks++;return i(e,c,k,!1,y,P,_?Error("react-stack-top-frame"):$,_?M(f(e)):S)},H.jsxs=function(e,c,k,y,P){var _=1e4>W.recentlyCreatedOwnerStacks++;return i(e,c,k,!0,y,P,_?Error("react-stack-top-frame"):$,_?M(f(e)):S)}}()),H}var be;function Ce(){return be||(be=1,process.env.NODE_ENV==="production"?te.exports=Re():te.exports=ve()),te.exports}var he=Ce();const C=()=>{},Ee=r.createContext({ref:null,watch:C,actions:{reset:C,resetField:C,setValue:C,getValues:C,getErrors:C,getFieldStates:C,getFormStates:C,setError:C,clearError:C,clearErrors:C,checkValidity:C,getNumberFields:C,getFieldValidity:C,getDefaultValues:C,setFieldState:C,resetFieldState:C,getControlledFields:C},registerController:C,registerHookWatcher:C,lastReloadedAt:C,loadFormValues:C,getWatchValue:C,channels:{}}),ue=()=>r.useContext(Ee),Se=({id:s,control:a,method:l,action:f,children:h,onSubmit:E=()=>{},onInput:m=()=>{},onChange:R=()=>{},onBlur:v=()=>{},onReset:F=()=>{},numberFields:i=[],className:g,...o})=>(r.useEffect(()=>{const u=a.channels.subscribe("onChange",R),b=a.channels.subscribe("onBlur",v);return()=>{u(),b()}},[]),he.jsx(Ee.Provider,{value:a,children:he.jsx("form",{id:s,ref:a.ref,action:f,method:l,className:g,onInput:m,onSubmit:u=>{l||u.preventDefault();const b=a.loadFormValues();E(b)},onChange:u=>{const b=u.target.name;!b||a.actions.getControlledFields().has(b)||a.actions.setValue(b,u.target.value)},onBlur:u=>{const b=u.target.name;if(!b||a.actions.getControlledFields().has(b))return;const d=u.target.value;a.channels.publish("onBlur",b,d,a.actions.getValues())},onReset:u=>{a.actions.reset(),F(u)},...o,children:h},a.lastReloadedAt)})),me=({control:s,name:a,compute:l})=>{const{getWatchValue:f,registerHookWatcher:h}=s||ue(),E=f({name:a,compute:l}),[m,R]=r.useState(E);return r.useEffect(()=>{const v=h({name:a,compute:l,value:m,setValue:R});return()=>v.forEach(F=>F())},[]),m},ge=({name:s,defaultValue:a})=>{const{actions:l,registerController:f,channels:h}=ue(),E=r.useRef(),m=l.getDefaultValues()[s]||a||"",[R,v]=r.useState(m),F=me({name:`fieldStates.${s}`}),i=r.useCallback((o,{shouldDirty:u=!0,shouldOnChange:b=!0}={})=>{var O,x;let d=o;(O=o==null?void 0:o.target)!=null&&O.value&&(d=o.target.value),(x=o==null?void 0:o.target)!=null&&x.checked&&(d=o.target.checked+""),v(d),l.setValue(s,d,{shouldDirty:u,shouldOnChange:b})},[l.setValue]),g=r.useCallback(o=>{const u=l.getValues(),b=o??u[s];h.publish("onBlur",s,b,u)},[]);return r.useEffect(()=>f(s,v),[]),{ref:E,name:s,defaultValue:m,value:R,onChange:i,onBlur:g,fieldState:F}},ye=({name:s,defaultValue:a,render:l=({ref:f,name:h,defaultValue:E,value:m,onChange:R,onBlur:v,customState:F,setCustomState:i})=>null})=>{const f=ge({name:s,defaultValue:a});return l(f)},pe=["errors","fieldStates","formState"],re=(s={},a="")=>a.split(".").reduce((l,f)=>l&&l[f]!==void 0?l[f]:void 0,s),we=(s={},a="",l)=>{let f=s;const h=a.split(".");return h.forEach((E,m)=>{if(m<h.length-1){f[E]||(f[E]={}),f=f[E];return}f[E]=l}),s},L=s=>pe.some(a=>s.startsWith(a))?s:"values."+s,Fe=["badInput","customError","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","tooLong","tooShort","typeMismatch","valueMissing"],ke=s=>{typeof s.setCustomValidity=="function"&&s.setCustomValidity("");let a=s.validity,l=Fe.find(f=>a[f]);if(l)return{type:l,message:s.validationMessage}};class Te{constructor(){this.events=new Map,this.watchEvents=new Map}getWatchEvents(){return this.watchEvents}getEvents(){return this.events}subscribe(a,l){return this.events.has(a)||this.events.set(a,new Set),this.events.get(a).add(l),()=>{var f;return(f=this.events.get(a))==null?void 0:f.delete(l)}}subscribeWatch(a,l){this.watchEvents.has(a)||(this.watchEvents.set(a,new Set),this.watchEvents.get(a).add(l))}publish(a,...l){this.events.forEach((f,h)=>{a.includes(h)&&f.forEach(E=>E(...l))}),this.watchEvents.forEach((f,h)=>{a.includes(h)&&f.forEach(E=>E(...l))})}reset(){this.events.clear(),this.watchEvents.clear()}}const _e=()=>{const s=r.useRef(new Te),a=r.useCallback((R,...v)=>{s.current.publish(R,...v)},[]),l=r.useCallback((R,v)=>s.current.subscribe(R,v),[]),f=r.useCallback((R,v)=>{s.current.subscribeWatch(R,v)},[]),h=r.useCallback(()=>s.current.getEvents(),[]),E=r.useCallback(()=>s.current.getWatchEvents(),[]),m=r.useCallback(()=>{s.current.reset()},[]);return{publish:a,subscribe:l,reset:m,getEvents:h,subscribeWatch:f,getWatchEvents:E}},Ae=()=>{const[s,a]=r.useState(),l=r.useCallback(()=>a(new Date().toString()),[]);return[s,l]},Oe=()=>{const[,s]=r.useState({});return r.useCallback(()=>s({}),[])},Pe=({channels:s,getValues:a,getErrors:l,getFieldStates:f,getFormState:h})=>{const E=Oe(),m=r.useCallback(({name:i,compute:g})=>{if(typeof g=="function")return g(a());if(Array.isArray(i)){const o={};return i.forEach(u=>{o[u]=m({name:u})}),o}return re({...a(),errors:{...l()},formState:{...h()},fieldStates:{...f()}},i)},[]),R=r.useCallback(i=>{if(!i)return s.subscribeWatch("values",()=>E()),a();if(typeof i=="string"){const g=L(i);return s.subscribeWatch(g,()=>E()),m({name:i})}if(Array.isArray(i)){const g={};return i.forEach(o=>{const u=L(o);s.subscribeWatch(u,()=>E()),g[o]=m({name:o})}),{...g}}throw new Error("Parameters of watch must be string or array of string")},[]),v=r.useCallback(({name:i,compute:g,setValue:o})=>{if(typeof g=="function")return[s.subscribe("values",()=>{const b=m({compute:g});o(b)})];if(!i)return[s.subscribe("values",()=>{o(a())})];if(typeof i=="string"){const u=L(i);return[s.subscribe(u,()=>{const d=m({name:i});o(d)})]}if(Array.isArray(i)){const u=m({name:i}),b=[];return i.forEach(d=>{const O=L(d),x=s.subscribe(O,()=>{const Y=m({name:d});u[d]=Y,o({...u})});b.push(x)}),b}throw new Error("Parameters of name must be string or array of string or compute must be a function")},[]),F=r.useCallback((i,g)=>{if(!i)return s.subscribe("values",g);if(typeof i=="string"){const o=L(i);return s.subscribe(o,g)}if(Array.isArray(i)){const o={},u=[];return i.forEach(b=>{const d=L(b),O=s.subscribe(d,()=>{o[b]=m({name:b}),g({...o})});u.push(O)}),u}throw new Error("Parameters of name must be string or array of string")},[s]);return{watch:R,registerHookWatcher:v,getWatchValue:m,subscribe:F}},le={isDirty:!1,isTouched:!1,error:null},je=[],Ne={},xe=({numberFields:s=je,defaultValues:a=Ne,shouldUnRegister:l=!1,shouldConvertNumber:f=!1}={})=>{const[h,E]=Ae(),m=r.useRef(),R=r.useRef(!1),v=r.useRef(!1),F=r.useRef(s),i=r.useRef(new Map),g=r.useRef({}),o=r.useRef({}),u=r.useRef({...a}),b=r.useRef({...a}),d=_e(),O=r.useCallback(()=>{o.current=Object.keys(b.current).reduce((t,n)=>({...t,[n]:{...le}}),{})},[]),x=r.useCallback((t={})=>{b.current={...b.current,...t},u.current={...b.current},i.current.forEach((n,w)=>{n(b.current[w])}),R.current=!1,g.current={},F.current=s,i.current=new Map,d.reset(),O(),s.length>0&&(f=!0),E()},[]),Y=r.useCallback(()=>{const t=Object.fromEntries(new FormData(m.current));return i.current.forEach((w,T)=>{t[T]=u.current[T]}),f&&F.current.forEach(w=>t.hasOwnProperty(w)&&(t[w]=Number(t[w])||0)),{...u.current,...t}},[]),ie=r.useCallback(()=>!!Object.values(B()).find(t=>t.isDirty),[]),X=r.useCallback(()=>!!Object.values(W()).find(t=>!!t),[]),se=r.useCallback(t=>ke(t.target),[]),ne=r.useCallback(()=>b.current,[]),ae=r.useCallback(()=>F.current,[]),Z=r.useCallback(()=>i.current,[]),j=r.useCallback((t,n)=>n?Array.isArray(n)?n.reduce((w,T)=>({...w,[T]:re(t,T)}),{}):re(t,n):{...t},[]),Q=r.useCallback(t=>j(u.current,t),[j]),W=r.useCallback(t=>j(g.current,t),[j]),B=r.useCallback(t=>j(o.current,t),[j]),D=r.useCallback(t=>j({isDirty:R.current,isError:v.current,errorFields:Object.keys(g.current).filter(n=>!!g.current[n]),dirtyFields:Object.keys(o.current).filter(n=>o.current[n].isDirty),touchedFields:Object.keys(o.current).filter(n=>o.current[n].isTouched)},t),[j]),{watch:M,registerHookWatcher:K,getWatchValue:q,subscribe:$}=Pe({channels:d,getValues:Q,getErrors:W,getFieldStates:B,getFormState:D}),S=r.useCallback((t,n,w)=>{const T=o.current[t]||{...le};re(T,n)!==w&&(we(o.current,`${t}.${n}`,w),d.publish(`fieldStates.${t}.${n}`,w),n==="error"&&d.publish("formState.errorFields",D("errorFields")),n==="isDirty"&&d.publish("formState.dirtyFields",D("dirtyFields")),n==="isTouched"&&d.publish("formState.touchedFields",D("touchedFields")))},[]),ee=r.useCallback(t=>{S(t,"isDirty",!1),S(t,"isTouched",!1),S(t,"error",null)},[S]),e=r.useCallback((t,n)=>{if(g.current[t]===n)return;g.current[t]=n,S(t,"error",n),d.publish(`errors.${t}`,n);const T=X();v.current!==T&&(v.current=T,d.publish("formState.isError",T))},[S]),c=r.useCallback(t=>{if(!g.current[t])return;g.current[t]=null,S(t,"error",null),d.publish(`errors.${t}`,null);const n=X();v.current!==n&&(v.current=n,d.publish("formState.isError",n))},[S]),k=r.useCallback(()=>{if(Object.keys(g.current)===0)return;Object.keys(g.current).forEach(n=>c(n)),g.current={};const t=X();v.current!==t&&(v.current=t,d.publish("formState.isError",t))},[]),y=r.useCallback(t=>{const n=ke(t.target);n?e(t.target.name,n):c(t.target.name)},[e,c]),P=r.useCallback((t,n,{shouldDirty:w=!0,shouldOnChange:T=!0}={})=>{if(n===u.current[t])return;f&&F.current.includes(t)&&(n=Number(n)||void 0),S(t,"isTouched",!0);const ce=n!==b.current[t];w&&o.current[t].isDirty!==ce&&S(t,"isDirty",ce);const I=ie();R.current!==I&&(R.current=I,d.publish("formState.isDirty",I)),u.current[t]=n;const z=i.current.get(t);z&&z(n),d.publish(`values.${t}`,n,{shouldDirty:w,shouldOnChange:T}),T&&d.publish("onChange",t,n,u.current)},[S]),_=r.useCallback((t,n)=>(i.current.set(t,n),o.current[t]={...le},()=>{l&&i.current.delete(t)}),[]),U=r.useCallback((t,{keepError:n,keepDirty:w,keepTouched:T,keepCustomState:ce,defaultValue:I})=>{const z=i.current.get(t);if(!z)throw new Error(`Cannot reset "${t}" because it's uncontrolled field`);b.current[t]=I,u.current[t]=I,z&&z(I),n||c(t),w||S(t,"isDirty",!1),T||S(t,"isTouched",!1)},[c,S]),J=r.useCallback((t,n=N.getValues(t))=>{d.publish("onBlur",t,n,N.getValues())},[]),p=r.useCallback(t=>d.subscribe("onChange",t),[]),V=r.useCallback(t=>d.subscribe("onBlur",t),[]),N=r.useMemo(()=>({subscribe:$,reset:x,resetField:U,setValue:P,getValues:Q,getErrors:W,getFieldStates:B,getFormState:D,setError:e,clearError:c,clearErrors:k,checkValidity:y,getNumberFields:ae,getFieldValidity:se,getDefaultValues:ne,setFieldState:S,triggerFieldBlur:J,resetFieldState:ee,getControlledFields:Z,subscribeChange:p,subscribeBlur:V,getEvents:d.getEvents,getWatchEvents:d.getWatchEvents}),[$,x,U,P,Q,W,B,D,e,c,k,y,ae,se,ne,S,ee,J,Z,p,V]),oe=r.useMemo(()=>({ref:m,watch:M,actions:N,registerController:_,registerHookWatcher:K,lastReloadedAt:h,loadFormValues:Y,getWatchValue:q,channels:d}),[m,M,N,_,K,h,Y,q,d]),Ve=r.useMemo(()=>({control:oe,actions:N,watch:M}),[h,oe,N,M]);return r.useLayoutEffect(()=>{if([...m.current.querySelectorAll("[name]")].forEach(n=>{!n.defaultValue&&!i.current.has(n.name)&&b.current[n.name]&&(n.defaultValue=b.current[n.name]),n.type==="number"&&!F.current.includes(n.name)&&F.current.push(n.name)}),m.current){const n=Y();u.current={...n},b.current={...n}}},[h]),r.useLayoutEffect(()=>{O()},[]),Ve};A.Controller=ye,A.Form=Se,A.useController=ge,A.useForm=xe,A.useFormContext=ue,A.useWatch=me,Object.defineProperty(A,Symbol.toStringTag,{value:"Module"})});
|