react-simple-formkit 2.1.9 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -5
- package/dist/react-simple-formkit.js +4 -4
- package/dist/react-simple-formkit.mjs +345 -344
- 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 se={exports:{}},
|
|
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 se={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 ie;function Re(){if(ie)return G;ie=1;var n=Symbol.for("react.transitional.element"),o=Symbol.for("react.fragment");function l(g,E,h){var i=null;if(h!==void 0&&(i=""+h),E.key!==void 0&&(i=""+E.key),"key"in E){h={};for(var C in E)C!=="key"&&(h[C]=E[C])}else h=E;return E=h.ref,{$$typeof:n,type:g,key:i,ref:E!==void 0?E:null,props:h}}return G.Fragment=o,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 fe;function ke(){return fe||(fe=1,process.env.NODE_ENV!=="production"&&function(){function n(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===K?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case d:return"Fragment";case L:return"Profiler";case O:return"StrictMode";case ne:return"Suspense";case oe:return"SuspenseList";case P: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 X:return(e.displayName||"Context")+".Provider";case M:return(e._context.displayName||"Context")+".Consumer";case Z:var a=e.render;return e=e.displayName,e||(e=a.displayName||a.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case ae:return a=e.displayName||null,a!==null?a:n(e.type)||"Memo";case Q:a=e._payload,e=e._init;try{return n(e(a))}catch{}}return null}function o(e){return""+e}function l(e){try{o(e);var a=!1}catch{a=!0}if(a){a=console;var R=a.error,v=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return R.call(a,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",v),o(e)}}function g(e){if(e===d)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===Q)return"<...>";try{var a=n(e);return a?"<"+a+">":"<...>"}catch{return"<...>"}}function E(){var e=V.A;return e===null?null:e.getOwner()}function h(){return Error("react-stack-top-frame")}function i(e){if(Y.call(e,"key")){var a=Object.getOwnPropertyDescriptor(e,"key").get;if(a&&a.isReactWarning)return!1}return e.key!==void 0}function C(e,a){function R(){q||(q=!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)",a))}R.isReactWarning=!0,Object.defineProperty(e,"key",{get:R,configurable:!0})}function y(){var e=n(this.type);return $[e]||($[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 T(e,a,R,v,j,w,U,J){return R=w.ref,e={$$typeof:c,type:e,key:a,props:w,_owner:j},(R!==void 0?R:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:y}):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 u(e,a,R,v,j,w,U,J){var p=a.children;if(p!==void 0)if(v)if(D(p)){for(v=0;v<p.length;v++)m(p[v]);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 m(p);if(Y.call(a,"key")){p=n(e);var x=Object.keys(a).filter(function(ce){return ce!=="key"});v=0<x.length?"{key: someKey, "+x.join(": ..., ")+": ...}":"{key: someKey}",te[p+v]||(x=0<x.length?"{"+x.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 f=r,c=Symbol.for("react.transitional.element"),i=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=f.__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};f={"react-stack-bottom-frame":function(e){return e()}};var K,q={},$=f["react-stack-bottom-frame"].bind(f,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 ie;function Re(){return ie||(ie=1,process.env.NODE_ENV==="production"?se.exports=he():se.exports=ge()),se.exports}var fe=Re();const k=()=>{},de=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(de),ke=({id:n,control:o,method:l,action:h,children:d,onSubmit:g=()=>{},onInput:E=()=>{},onChange:C=()=>{},onBlur:v=()=>{},onReset:T=()=>{},numberFields:u=[],className:b,...f})=>(r.useEffect(()=>{const c=o.channels.subscribe("onChange",C),i=o.channels.subscribe("onBlur",v);return()=>{c(),i()}},[]),fe.jsx(de.Provider,{value:o,children:fe.jsx("form",{id:n,ref:o.ref,action:h,method:l,className:b,onInput:E,onSubmit:c=>{l||c.preventDefault();const i=o.loadFormValues();g(i)},onChange:c=>{const i=c.target.name;o.actions.getControlledFields().has(i)||o.actions.setValue(i,c.target.value)},onBlur:c=>{const i=c.target.name;if(o.actions.getControlledFields().has(i))return;const m=c.target.value;o.channels.publish("onBlur",i,m,o.actions.getValues())},onReset:c=>{o.actions.reset(),T(c)},...f,children:d},o.lastReloadedAt)})),be=({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},me=({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=be({name:`fieldStates.${n}.customState`}),u=r.useCallback(c=>{l.setFieldState(n,"customState",c)},[]),b=r.useCallback((c,{shouldDirty:i=!0,shouldOnChange:m=!0}={})=>{v(c),l.setValue(n,c,{shouldDirty:i,shouldOnChange:m})},[l.setValue]),f=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:f,customState:T,setCustomState:u}},Se=({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=me({name:n,defaultValue:o});return l(h)},ye=["errors","fieldStates","formState"],I=n=>ye.some(o=>n.startsWith(o))?n:"values."+n,Ce=["badInput","customError","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","tooLong","tooShort","typeMismatch","valueMissing"],Ee=n=>{typeof n.setCustomValidity=="function"&&n.setCustomValidity("");let o=n.validity,l=Ce.find(h=>o[h]);if(l)return{type:l,message:n.validationMessage}};class ve{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 pe=()=>{const n=r.useRef(new ve),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}},Fe=()=>{const[n,o]=r.useState(),l=r.useCallback(()=>o(new Date().toString()),[]);return[n,l]},Te=()=>{const[,n]=r.useState({});return r.useCallback(()=>n({}),[])},_e=({channels:n,getValues:o,getErrors:l,getFieldStates:h,getFormState:d})=>{const g=Te(),E=r.useCallback(({name:u,compute:b})=>{if(typeof b=="function")return b(o());if(Array.isArray(u)){const f={};return u.forEach(c=>{f[c]=E({name:c})}),f}return u.split(".").reduce((f,c)=>f&&f[c]!==void 0?f[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(f=>{const c=I(f);n.subscribe(c,()=>g()),b[f]=E({name:f})}),{...b}}throw new Error("Parameters of watch must be string or array of string")},[]),v=r.useCallback(({name:u,compute:b,value:f,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 i=I(u);return[n.subscribe(i,()=>{const O=E({name:u});c(O)})]}if(Array.isArray(u)){const i=E({name:u}),m=[];return u.forEach(O=>{const B=I(O),W=n.subscribe(B,()=>{const H=E({name:O});i[O]=H,c({...i})});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 f=I(u);return n.subscribe(f,b)}if(Array.isArray(u)){const f={},c=[];return u.forEach(i=>{const m=I(i),O=n.subscribe(m,()=>{f[i]=E({name:i}),b({...f})});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}},we=[],Ae={},Oe=({numberFields:n=we,defaultValues:o=Ae,shouldUnRegister:l=!1,shouldConvertNumber:h=!1}={})=>{const[d,g]=Fe(),E=r.useRef(),C=r.useRef(!1),v=r.useRef(!1),T=r.useRef(n),u=r.useRef(new Map),b=r.useRef({}),f=r.useRef({}),c=r.useRef(o),i=r.useRef(o),m=pe(),O=r.useCallback(()=>{f.current=Object.keys(i.current).reduce((t,s)=>({...t,[s]:{isError:!1,isDirty:!1,isTouched:!1,customState:null}}),{})},[]),B=r.useCallback((t={})=>{i.current={...i.current,...t},c.current={...i.current},u.current.forEach((s,F)=>{s(i.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=>Ee(t.target),[]),oe=r.useCallback(()=>i.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(f.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(f.current).filter(s=>f.current[s].isDirty),touchedFields:Object.keys(f.current).filter(s=>f.current[s].isTouched)},t),[P]),{watch:D,registerHookWatcher:K,getWatchValue:q,subscribe:$}=_e({channels:m,getValues:Q,getErrors:x,getFieldStates:M,getFormState:V}),y=r.useCallback((t,s,F)=>{const _=f.current[t];_[s]!==F&&(f.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=Ee(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!==i.current[t];F&&f.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),()=>{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`);i.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&&i.current[s.name]&&(s.defaultValue=i.current[s.name]),s.type==="number"&&!T.current.includes(s.name)&&T.current.push(s.name)}),E.current){const s=W();c.current={...s},i.current={...s}}},[d]),r.useLayoutEffect(()=>{O()},[]),te};A.Controller=Se,A.Form=ke,A.useController=me,A.useForm=Oe,A.useFormContext=ce,A.useWatch=be,Object.defineProperty(A,Symbol.toStringTag,{value:"Module"})});
|
|
22
|
+
<%s key={someKey} {...props} />`,v,p,x,p),te[p+v]=!0)}if(p=null,R!==void 0&&(l(R),p=""+R),i(a)&&(l(a.key),p=""+a.key),"key"in a){R={};for(var N in a)N!=="key"&&(R[N]=a[N])}else R=a;return p&&C(R,typeof e=="function"?e.displayName||e.name||"Unknown":e),T(e,p,w,j,E(),R,U,J)}function m(e){typeof e=="object"&&e!==null&&e.$$typeof===c&&e._store&&(e._store.validated=1)}var f=r,c=Symbol.for("react.transitional.element"),b=Symbol.for("react.portal"),d=Symbol.for("react.fragment"),O=Symbol.for("react.strict_mode"),L=Symbol.for("react.profiler"),M=Symbol.for("react.consumer"),X=Symbol.for("react.context"),Z=Symbol.for("react.forward_ref"),ne=Symbol.for("react.suspense"),oe=Symbol.for("react.suspense_list"),ae=Symbol.for("react.memo"),Q=Symbol.for("react.lazy"),P=Symbol.for("react.activity"),K=Symbol.for("react.client.reference"),V=f.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Y=Object.prototype.hasOwnProperty,D=Array.isArray,W=console.createTask?console.createTask:function(){return null};f={"react-stack-bottom-frame":function(e){return e()}};var q,$={},ee=f["react-stack-bottom-frame"].bind(f,h)(),S=W(g(h)),te={};H.Fragment=d,H.jsx=function(e,a,R,v,j){var w=1e4>V.recentlyCreatedOwnerStacks++;return u(e,a,R,!1,v,j,w?Error("react-stack-top-frame"):ee,w?W(g(e)):S)},H.jsxs=function(e,a,R,v,j){var w=1e4>V.recentlyCreatedOwnerStacks++;return u(e,a,R,!0,v,j,w?Error("react-stack-top-frame"):ee,w?W(g(e)):S)}}()),H}var be;function Se(){return be||(be=1,process.env.NODE_ENV==="production"?se.exports=Re():se.exports=ke()),se.exports}var de=Se();const k=()=>{},me=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:{}}),ue=()=>r.useContext(me),Ce=({id:n,control:o,method:l,action:g,children:E,onSubmit:h=()=>{},onInput:i=()=>{},onChange:C=()=>{},onBlur:y=()=>{},onReset:T=()=>{},numberFields:u=[],className:m,...f})=>(r.useEffect(()=>{const c=o.channels.subscribe("onChange",C),b=o.channels.subscribe("onBlur",y);return()=>{c(),b()}},[]),de.jsx(me.Provider,{value:o,children:de.jsx("form",{id:n,ref:o.ref,action:g,method:l,className:m,onInput:i,onSubmit:c=>{l||c.preventDefault();const b=o.loadFormValues();h(b)},onChange:c=>{const b=c.target.name;o.actions.getControlledFields().has(b)||o.actions.setValue(b,c.target.value)},onBlur:c=>{const b=c.target.name;if(o.actions.getControlledFields().has(b))return;const d=c.target.value;o.channels.publish("onBlur",b,d,o.actions.getValues())},onReset:c=>{o.actions.reset(),T(c)},...f,children:E},o.lastReloadedAt)})),Ee=({control:n,name:o,compute:l})=>{const{getWatchValue:g,registerHookWatcher:E}=n||ue(),h=g({name:o,compute:l}),[i,C]=r.useState(h);return r.useEffect(()=>{const y=E({name:o,compute:l,value:i,setValue:C});return()=>y.forEach(T=>T())},[]),i},ge=({name:n,defaultValue:o})=>{const{actions:l,registerController:g,channels:E}=ue(),h=r.useRef(),i=l.getDefaultValues()[n]||o||"",[C,y]=r.useState(i),T=Ee({name:`fieldStates.${n}.customState`}),u=r.useCallback(c=>{l.setFieldState(n,"customState",c)},[]),m=r.useCallback((c,{shouldDirty:b=!0,shouldOnChange:d=!0}={})=>{y(c),l.setValue(n,c,{shouldDirty:b,shouldOnChange:d})},[l.setValue]),f=r.useCallback(()=>{E.publish("onBlur",n,C,l.getValues())},[]);return r.useEffect(()=>g(n,y),[]),{ref:h,name:n,defaultValue:i,value:C,onChange:m,onBlur:f,customState:T,setCustomState:u}},ye=({name:n,defaultValue:o,render:l=({ref:g,name:E,defaultValue:h,value:i,onChange:C,onBlur:y,customState:T,setCustomState:u})=>null})=>{const g=ge({name:n,defaultValue:o});return l(g)},ve=["errors","fieldStates","formState"],I=n=>ve.some(o=>n.startsWith(o))?n:"values."+n,pe=["badInput","customError","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","tooLong","tooShort","typeMismatch","valueMissing"],he=n=>{typeof n.setCustomValidity=="function"&&n.setCustomValidity("");let o=n.validity,l=pe.find(g=>o[g]);if(l)return{type:l,message:n.validationMessage}};class Fe{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 g;return(g=this.events.get(o))==null?void 0:g.delete(l)}}publish(o,...l){const g=this.events.get(o);g&&g.forEach(E=>E(...l)),this.events.forEach((E,h)=>{h!==o&&o.includes(h)&&E.forEach(i=>i(...l))})}reset(){this.events.clear()}}const Te=()=>{const n=r.useRef(new Fe),o=r.useCallback((h,...i)=>{n.current.publish(h,...i)},[]),l=r.useCallback((h,i)=>n.current.subscribe(h,i),[]),g=r.useCallback(()=>n.current.getEvents(),[]),E=r.useCallback(()=>{n.current.reset()},[]);return{publish:o,subscribe:l,reset:E,getEvents:g}},_e=()=>{const[n,o]=r.useState(),l=r.useCallback(()=>o(new Date().toString()),[]);return[n,l]},we=()=>{const[,n]=r.useState({});return r.useCallback(()=>n({}),[])},Ae=({channels:n,getValues:o,getErrors:l,getFieldStates:g,getFormState:E})=>{const h=we(),i=r.useCallback(({name:u,compute:m})=>{if(typeof m=="function")return m(o());if(Array.isArray(u)){const f={};return u.forEach(c=>{f[c]=i({name:c})}),f}return u.split(".").reduce((f,c)=>f&&f[c]!==void 0?f[c]:void 0,{...o(),errors:{...l()},formState:{...E()},fieldStates:{...g()}})},[]),C=r.useCallback(u=>{if(!u)return n.subscribe("values",()=>h()),o();if(typeof u=="string"){const m=I(u);return n.subscribe(m,()=>h()),i({name:u})}if(Array.isArray(u)){const m={};return u.forEach(f=>{const c=I(f);n.subscribe(c,()=>h()),m[f]=i({name:f})}),{...m}}throw new Error("Parameters of watch must be string or array of string")},[]),y=r.useCallback(({name:u,compute:m,value:f,setValue:c})=>{if(typeof m=="function")return[n.subscribe("values",()=>{const d=i({compute:m});c(d)})];if(!u)return[n.subscribe("values",()=>{c(o())})];if(typeof u=="string"){const b=I(u);return[n.subscribe(b,()=>{const O=i({name:u});c(O)})]}if(Array.isArray(u)){const b=i({name:u}),d=[];return u.forEach(O=>{const L=I(O),M=n.subscribe(L,()=>{const X=i({name:O});b[O]=X,c({...b})});d.push(M)}),d}throw new Error("Parameters of name must be string or array of string or compute must be a function")},[]),T=r.useCallback((u,m)=>{if(!u)return n.subscribe("values",m);if(typeof u=="string"){const f=I(u);return n.subscribe(f,m)}if(Array.isArray(u)){const f={},c=[];return u.forEach(b=>{const d=I(b),O=n.subscribe(d,()=>{f[b]=i({name:b}),m({...f})});c.push(O)}),c}throw new Error("Parameters of name must be string or array of string")},[n]);return{watch:C,registerHookWatcher:y,getWatchValue:i,subscribe:T}},le={isError:!1,isDirty:!1,isTouched:!1,customState:null},Oe=[],je={},Pe=({numberFields:n=Oe,defaultValues:o=je,shouldUnRegister:l=!1,shouldConvertNumber:g=!1}={})=>{const[E,h]=_e(),i=r.useRef(),C=r.useRef(!1),y=r.useRef(!1),T=r.useRef(n),u=r.useRef(new Map),m=r.useRef({}),f=r.useRef({}),c=r.useRef({...o}),b=r.useRef({...o}),d=Te(),O=r.useCallback(()=>{f.current=Object.keys(b.current).reduce((t,s)=>({...t,[s]:{...le}}),{})},[]),L=r.useCallback((t={})=>{b.current={...b.current,...t},c.current={...b.current},u.current.forEach((s,F)=>{s(b.current[F])}),C.current=!1,m.current={},T.current=n,u.current=new Map,d.reset(),O(),n.length>0&&(g=!0),h()},[]),M=r.useCallback(()=>{const t=Object.fromEntries(new FormData(i.current));return u.current.forEach((F,_)=>{t[_]=c.current[_]}),g&&T.current.forEach(F=>t.hasOwnProperty(F)&&(t[F]=Number(t[F])||0)),t},[]),X=r.useCallback(()=>!!Object.values(Y()).find(t=>t.isDirty),[]),Z=r.useCallback(()=>!!Object.values(V()).find(t=>!!t),[]),ne=r.useCallback(t=>he(t.target),[]),oe=r.useCallback(()=>b.current,[]),ae=r.useCallback(()=>T.current,[]),Q=r.useCallback(()=>u.current,[]),P=r.useCallback((t,s)=>s?Array.isArray(s)?s.map(F=>t[F]):t[s]:{...t},[]),K=r.useCallback(t=>P(c.current,t),[P]),V=r.useCallback(t=>P(m.current,t),[P]),Y=r.useCallback(t=>P(f.current,t),[P]),D=r.useCallback(t=>P({isDirty:C.current,isError:y.current,errorFields:Object.keys(m.current).filter(s=>!!m.current[s]),dirtyFields:Object.keys(f.current).filter(s=>f.current[s].isDirty),touchedFields:Object.keys(f.current).filter(s=>f.current[s].isTouched)},t),[P]),{watch:W,registerHookWatcher:q,getWatchValue:$,subscribe:ee}=Ae({channels:d,getValues:K,getErrors:V,getFieldStates:Y,getFormState:D}),S=r.useCallback((t,s,F)=>{const _=f.current[t]||{...le};_[s]!==F&&(f.current[t]={..._,[s]:F},d.publish(`fieldStates.${t}.${s}`,F),s==="isError"&&d.publish("formState.errorFields",D("errorFields")),s==="isDirty"&&d.publish("formState.dirtyFields",D("dirtyFields")),s==="isTouched"&&d.publish("formState.touchedFields",D("touchedFields")))},[]),te=r.useCallback(t=>{S(t,"isError",!1),S(t,"isDirty",!1),S(t,"isTouched",!1),S(t,"customState",null)},[S]),e=r.useCallback((t,s)=>{if(m.current[t]===s)return;m.current[t]=s,S(t,"isError",!!s),d.publish(`errors.${t}`,s);const _=Z();y.current!==_&&(y.current=_,d.publish("formState.isError",_))},[S]),a=r.useCallback(t=>{if(!m.current[t])return;m.current[t]=null,S(t,"isError",!1),d.publish(`errors.${t}`,null);const s=Z();y.current!==s&&(y.current=s,d.publish("formState.isError",s))},[S]),R=r.useCallback(()=>{if(Object.keys(m.current)===0)return;Object.keys(m.current).forEach(s=>a(s)),m.current={};const t=Z();y.current!==t&&(y.current=t,d.publish("formState.isError",t))},[]),v=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;g&&T.current.includes(t)&&(s=Number(s)||void 0),S(t,"isTouched",!0);const re=s!==b.current[t];F&&f.current[t].isDirty!==re&&S(t,"isDirty",re);const B=X();C.current!==B&&(C.current=B,d.publish("formState.isDirty",B)),c.current[t]=s;const z=u.current.get(t);z&&z(s),d.publish(`values.${t}`,s,{shouldDirty:F,shouldOnChange:_}),_&&d.publish("onChange",t,s,c.current)},[S]),w=r.useCallback((t,s)=>(u.current.set(t,s),f.current[t]={...le},()=>{l&&u.current.delete(t)}),[]),U=r.useCallback((t,{keepError:s,keepDirty:F,keepTouched:_,keepCustomState:re,defaultValue:B})=>{const z=u.current.get(t);if(!z)throw new Error(`Cannot reset "${t}" because it's uncontrolled field`);b.current[t]=B,c.current[t]=B,z&&z(B),s||a(t),F||S(t,"isDirty",!1),_||S(t,"isTouched",!1),re||S(t,"customState",null)},[a,S]),J=r.useCallback((t,s=N.getValues(t))=>{d.publish("onBlur",t,s,N.getValues())},[]),p=r.useCallback(t=>d.subscribe("onChange",t),[]),x=r.useCallback(t=>d.subscribe("onBlur",t),[]),N=r.useMemo(()=>({subscribe:ee,reset:L,resetField:U,setValue:j,getValues:K,getErrors:V,getFieldStates:Y,getFormState:D,setError:e,clearError:a,clearErrors:R,checkValidity:v,getNumberFields:ae,getFieldValidity:ne,getDefaultValues:oe,setFieldState:S,triggerFieldBlur:J,resetFieldState:te,getControlledFields:Q,subscribeChange:p,subscribeBlur:x}),[ee,L,U,j,K,V,Y,D,e,a,R,v,ae,ne,oe,S,te,J,Q,p,x]),ce=r.useMemo(()=>({ref:i,watch:W,actions:N,registerController:w,registerHookWatcher:q,lastReloadedAt:E,loadFormValues:M,getWatchValue:$,channels:d}),[i,W,N,w,q,E,M,$,d]),Ne=r.useMemo(()=>({control:ce,actions:N,watch:W}),[E,ce,N,W]);return r.useLayoutEffect(()=>{if([...i.current.querySelectorAll("[name]")].forEach(s=>{!s.defaultValue&&!u.current.has(s.name)&&b.current[s.name]&&(s.defaultValue=b.current[s.name]),s.type==="number"&&!T.current.includes(s.name)&&T.current.push(s.name)}),i.current){const s=M();c.current={...s},b.current={...s}}},[E]),r.useLayoutEffect(()=>{O()},[]),Ne};A.Controller=ye,A.Form=Ce,A.useController=ge,A.useForm=Pe,A.useFormContext=ue,A.useWatch=Ee,Object.defineProperty(A,Symbol.toStringTag,{value:"Module"})});
|