react-simple-formkit 2.2.7 → 2.3.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/README.md CHANGED
@@ -187,10 +187,10 @@ State updates only when observed via `watch()`, `useWatch()`, `subscribe()`, or
187
187
  - [actions.subscribe(name, callback)](#subscribe) is just a handler callback that is called when watched values change.
188
188
  - [onChange](#form) is just a handler callback that is called when field values change.
189
189
  - [onBlur](#form) is just a handler callback that is called when field blurred.
190
- - [actions.subscribeChange(callback)](#useform) subscribe onChange callback instead of passing `onChange` in [Form](#form) component.
191
- - [actions.subscribeBlur(callback)](#useform) subscribe onBlur callback instead of passing `onBlur` in [Form](#form) component.
190
+ - [actions.subscribe('onChange', callback)](#useform) subscribe onChange callback instead of passing `onChange` in [Form](#form) component.
191
+ - [actions.subscribe('onBlur', callback)](#useform) subscribe onBlur callback instead of passing `onBlur` in [Form](#form) component.
192
192
 
193
- > **Rule\*:** By default, onBlur works automatically for uncontrolled fields. However, for controlled fields, you must explicitly pass the onBlur prop when rendering the field. For captured fields, use actions.triggerFieldBlur(fieldName) to manually trigger the onBlur event.
193
+ > **Rule\*:** By default, onBlur works automatically for uncontrolled fields. However, for controlled fields, you must explicitly pass the onBlur prop when rendering the field.
194
194
 
195
195
  ### The Power of watch (Unified Observation)
196
196
 
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react");var se={exports:{}},z={};/**
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react");var te={exports:{}},z={};/**
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 ie;function Se(){if(ie)return z;ie=1;var s=Symbol.for("react.transitional.element"),n=Symbol.for("react.fragment");function l(f,h,E){var g=null;if(E!==void 0&&(g=""+E),h.key!==void 0&&(g=""+h.key),"key"in h){E={};for(var k in h)k!=="key"&&(E[k]=h[k])}else E=h;return h=E.ref,{$$typeof:s,type:f,key:g,ref:h!==void 0?h:null,props:E}}return z.Fragment=n,z.jsx=l,z.jsxs=l,z}var G={};/**
9
+ */var ie;function Se(){if(ie)return z;ie=1;var s=Symbol.for("react.transitional.element"),o=Symbol.for("react.fragment");function h(R,g,k){var d=null;if(k!==void 0&&(d=""+k),g.key!==void 0&&(d=""+g.key),"key"in g){k={};for(var C in g)C!=="key"&&(k[C]=g[C])}else k=g;return g=k.ref,{$$typeof:s,type:R,key:d,ref:g!==void 0?g:null,props:k}}return z.Fragment=o,z.jsx=h,z.jsxs=h,z}var G={};/**
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 fe;function ye(){return fe||(fe=1,process.env.NODE_ENV!=="production"&&function(){function s(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===I?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case C:return"Fragment";case x:return"Profiler";case O:return"StrictMode";case ue:return"Suspense";case ae:return"SuspenseList";case X: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 a:return"Portal";case B:return(e.displayName||"Context")+".Provider";case Y:return(e._context.displayName||"Context")+".Consumer";case ne:var i=e.render;return e=e.displayName,e||(e=i.displayName||i.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case oe:return i=e.displayName||null,i!==null?i:s(e.type)||"Memo";case P:i=e._payload,e=e._init;try{return s(e(i))}catch{}}return null}function n(e){return""+e}function l(e){try{n(e);var i=!1}catch{i=!0}if(i){i=console;var v=i.error,F=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return v.call(i,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",F),n(e)}}function f(e){if(e===C)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===P)return"<...>";try{var i=s(e);return i?"<"+i+">":"<...>"}catch{return"<...>"}}function h(){var e=W.A;return e===null?null:e.getOwner()}function E(){return Error("react-stack-top-frame")}function g(e){if(L.call(e,"key")){var i=Object.getOwnPropertyDescriptor(e,"key").get;if(i&&i.isReactWarning)return!1}return e.key!==void 0}function k(e,i){function v(){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)",i))}v.isReactWarning=!0,Object.defineProperty(e,"key",{get:v,configurable:!0})}function R(){var e=s(this.type);return K[e]||(K[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 y(e,i,v,F,j,A,q,J){return v=A.ref,e={$$typeof:o,type:e,key:i,props:A,_owner:j},(v!==void 0?v:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:R}):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:q}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:J}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function b(e,i,v,F,j,A,q,J){var w=i.children;if(w!==void 0)if(F)if(Z(w)){for(F=0;F<w.length;F++)d(w[F]);Object.freeze&&Object.freeze(w)}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 d(w);if(L.call(i,"key")){w=s(e);var N=Object.keys(i).filter(function(te){return te!=="key"});F=0<N.length?"{key: someKey, "+N.join(": ..., ")+": ...}":"{key: someKey}",re[w+F]||(N=0<N.length?"{"+N.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
17
+ */var fe;function ye(){return fe||(fe=1,process.env.NODE_ENV!=="production"&&function(){function s(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===B?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case E:return"Fragment";case N:return"Profiler";case A:return"StrictMode";case ne:return"Suspense";case ue:return"SuspenseList";case X: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 n:return"Portal";case I:return(e.displayName||"Context")+".Provider";case Y:return(e._context.displayName||"Context")+".Consumer";case se:var f=e.render;return e=e.displayName,e||(e=f.displayName||f.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case oe:return f=e.displayName||null,f!==null?f:s(e.type)||"Memo";case j:f=e._payload,e=e._init;try{return s(e(f))}catch{}}return null}function o(e){return""+e}function h(e){try{o(e);var f=!1}catch{f=!0}if(f){f=console;var S=f.error,F=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return S.call(f,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",F),o(e)}}function R(e){if(e===E)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===j)return"<...>";try{var f=s(e);return f?"<"+f+">":"<...>"}catch{return"<...>"}}function g(){var e=W.A;return e===null?null:e.getOwner()}function k(){return Error("react-stack-top-frame")}function d(e){if(L.call(e,"key")){var f=Object.getOwnPropertyDescriptor(e,"key").get;if(f&&f.isReactWarning)return!1}return e.key!==void 0}function C(e,f){function S(){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)",f))}S.isReactWarning=!0,Object.defineProperty(e,"key",{get:S,configurable:!0})}function v(){var e=s(this.type);return K[e]||(K[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 b(e,f,S,F,x,O,q,J){return S=O.ref,e={$$typeof:i,type:e,key:f,props:O,_owner:x},(S!==void 0?S: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:q}),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,f,S,F,x,O,q,J){var T=f.children;if(T!==void 0)if(F)if(Z(T)){for(F=0;F<T.length;F++)c(T[F]);Object.freeze&&Object.freeze(T)}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 c(T);if(L.call(f,"key")){T=s(e);var P=Object.keys(f).filter(function(ae){return ae!=="key"});F=0<P.length?"{key: someKey, "+P.join(": ..., ")+": ...}":"{key: someKey}",re[T+F]||(P=0<P.length?"{"+P.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} />`,F,w,N,w),re[w+F]=!0)}if(w=null,v!==void 0&&(l(v),w=""+v),g(i)&&(l(i.key),w=""+i.key),"key"in i){v={};for(var V in i)V!=="key"&&(v[V]=i[V])}else v=i;return w&&k(v,typeof e=="function"?e.displayName||e.name||"Unknown":e),y(e,w,A,j,h(),v,q,J)}function d(e){typeof e=="object"&&e!==null&&e.$$typeof===o&&e._store&&(e._store.validated=1)}var c=t,o=Symbol.for("react.transitional.element"),a=Symbol.for("react.portal"),C=Symbol.for("react.fragment"),O=Symbol.for("react.strict_mode"),x=Symbol.for("react.profiler"),Y=Symbol.for("react.consumer"),B=Symbol.for("react.context"),ne=Symbol.for("react.forward_ref"),ue=Symbol.for("react.suspense"),ae=Symbol.for("react.suspense_list"),oe=Symbol.for("react.memo"),P=Symbol.for("react.lazy"),X=Symbol.for("react.activity"),I=Symbol.for("react.client.reference"),W=c.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,L=Object.prototype.hasOwnProperty,Z=Array.isArray,U=console.createTask?console.createTask:function(){return null};c={"react-stack-bottom-frame":function(e){return e()}};var Q,K={},ee=c["react-stack-bottom-frame"].bind(c,E)(),T=U(f(E)),re={};G.Fragment=C,G.jsx=function(e,i,v,F,j){var A=1e4>W.recentlyCreatedOwnerStacks++;return b(e,i,v,!1,F,j,A?Error("react-stack-top-frame"):ee,A?U(f(e)):T)},G.jsxs=function(e,i,v,F,j){var A=1e4>W.recentlyCreatedOwnerStacks++;return b(e,i,v,!0,F,j,A?Error("react-stack-top-frame"):ee,A?U(f(e)):T)}}()),G}var be;function pe(){return be||(be=1,process.env.NODE_ENV==="production"?se.exports=Se():se.exports=ye()),se.exports}var de=pe();const S=()=>{},me=t.createContext({ref:null,watch:S,actions:{reset:S,resetField:S,setValue:S,getValues:S,getErrors:S,getFieldStates:S,getFormStates:S,setError:S,clearError:S,clearErrors:S,checkValidity:S,getNumberFields:S,getFieldValidity:S,getDefaultValues:S,setFieldState:S,resetFieldState:S,getControlledFields:S},registerController:S,registerHookWatcher:S,lastReloadedAt:S,loadFormValues:S,getWatchValue:S,channels:{}}),le=()=>t.useContext(me),Fe=({id:s,control:n,method:l,action:f,children:h,onSubmit:E=()=>{},onInput:g=()=>{},onChange:k=()=>{},onBlur:R=()=>{},onReset:y=()=>{},numberFields:b=[],className:d,...c})=>(t.useEffect(()=>{const o=n.channels.subscribe("onChange",k),a=n.channels.subscribe("onBlur",R);return()=>{o(),a()}},[n.lastReloadedAt]),de.jsx(me.Provider,{value:n,children:de.jsx("form",{id:s,ref:o=>{n.ref&&(n.ref.current=o,o&&n.initForm())},action:f,method:l,className:d,onInput:g,onSubmit:o=>{l||o.preventDefault();const a=n.loadFormValues();E(a)},onChange:o=>{const a=o.target.name;!a||n.actions.getControlledFields().has(a)||n.actions.setValue(a,o.target.value)},onBlur:o=>{const a=o.target.name;if(!a||n.actions.getControlledFields().has(a))return;const C=o.target.value;n.channels.publish("onBlur",a,C,n.actions.getValues())},onReset:o=>{n.actions.reset(),y(o)},...c,children:h},n.lastReloadedAt)})),ke=({control:s,name:n,compute:l})=>{const{getWatchValue:f,registerHookWatcher:h}=s||le(),E=f({name:n,compute:l}),[g,k]=t.useState(E);return t.useEffect(()=>h({name:n,compute:l,value:g,setValue:k}),[]),g},Re=({name:s,defaultValue:n})=>{const{actions:l,registerController:f,channels:h}=le(),E=t.useRef(),g=l.getDefaultValues()[s]||n||"",[k,R]=t.useState(g),y=ke({name:`fieldStates.${s}`}),b=t.useCallback((c,{shouldDirty:o=!0,shouldOnChange:a=!0}={})=>{var O,x;let C=c;(O=c==null?void 0:c.target)!=null&&O.value&&(C=c.target.value),(x=c==null?void 0:c.target)!=null&&x.checked&&(C=c.target.checked+""),R(C),l.setValue(s,C,{shouldDirty:o,shouldOnChange:a})},[l.setValue]),d=t.useCallback(c=>{const o=l.getValues(),a=c??o[s];h.publish("onBlur",s,a,o)},[]);return t.useEffect(()=>f(s,R),[]),{ref:E,name:s,defaultValue:g,value:k,onChange:b,onBlur:d,fieldState:y}},we=({name:s,defaultValue:n,render:l=({ref:f,name:h,defaultValue:E,value:g,onChange:k,onBlur:R,fieldState:y})=>null})=>{const f=Re({name:s,defaultValue:n});return l(f)},Te=["errors","fieldStates","formState"],H=(s={},n="")=>n.split(".").reduce((l,f)=>l&&l[f]!==void 0?l[f]:void 0,s),he=(s={},n="",l)=>{let f=s;const h=n.split(".");return h.forEach((E,g)=>{g<h.length-1&&(f[E]||(f[E]={}),g===h.length-2&&(f[E]={...f[E]}),f=f[E]),f[E]=l}),s},M=s=>Te.some(n=>s.startsWith(n))?s:"values."+s,_e=["badInput","customError","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","tooLong","tooShort","typeMismatch","valueMissing"],Ee=s=>{typeof s.setCustomValidity=="function"&&s.setCustomValidity("");let n=s.validity,l=_e.find(f=>n[f]);if(l)return{type:l,message:s.validationMessage}};class Ae{constructor(){this.events=new Map,this.watchEvents=new Map}getWatchEvents(){return this.watchEvents}getEvents(){return this.events}subscribe(n,l){return this.events.has(n)||this.events.set(n,new Set),this.events.get(n).add(l),()=>{var f;return(f=this.events.get(n))==null?void 0:f.delete(l)}}subscribeWatch(n,l){this.watchEvents.has(n)||(this.watchEvents.set(n,new Set),this.watchEvents.get(n).add(l))}publish(n,...l){this.events.forEach((f,h)=>{n.includes(h)&&f.forEach(E=>E(...l))}),this.watchEvents.forEach((f,h)=>{n.includes(h)&&f.forEach(E=>E(...l))})}reset(){this.events.clear(),this.watchEvents.clear()}}const Oe=()=>{const s=t.useRef(new Ae),n=t.useCallback((k,...R)=>{s.current.publish(k,...R)},[]),l=t.useCallback((k,R)=>s.current.subscribe(k,R),[]),f=t.useCallback((k,R)=>{s.current.subscribeWatch(k,R)},[]),h=t.useCallback(()=>s.current.getEvents(),[]),E=t.useCallback(()=>s.current.getWatchEvents(),[]),g=t.useCallback(()=>{s.current.reset()},[]);return{publish:n,subscribe:l,reset:g,getEvents:h,subscribeWatch:f,getWatchEvents:E}},Pe=()=>{const[s,n]=t.useState(),l=t.useCallback(()=>n(new Date().toString()),[]);return[s,l]},je=()=>{const[,s]=t.useState({});return t.useCallback(()=>s({}),[])},xe=({channels:s,getValues:n,getErrors:l,getFieldStates:f,getFormState:h})=>{const E=je(),g=t.useCallback(({name:b,compute:d})=>{if(typeof d=="function")return d(n());if(Array.isArray(b)){const c={};return b.forEach(o=>{c[o]=g({name:o})}),c}return H({...n(),errors:{...l()},formState:{...h()},fieldStates:{...f()}},b)},[]),k=t.useCallback(b=>{if(!b)return s.subscribeWatch("values",()=>E()),n();if(typeof b=="string"){const d=M(b);return s.subscribeWatch(d,()=>E()),g({name:b})}if(Array.isArray(b)){const d={};return b.forEach(c=>{const o=M(c);s.subscribeWatch(o,()=>E()),d[c]=g({name:c})}),{...d}}throw new Error("Parameters of watch must be string or array of string")},[]),R=t.useCallback(({name:b,compute:d,setValue:c})=>{if(typeof d=="function")return s.subscribe("values",()=>{const a=g({compute:d});c(a)});if(!b)return s.subscribe("values",()=>{c(n())});if(typeof b=="string"){const o=M(b);return s.subscribe(o,()=>{const C=g({name:b});c(C)})}if(Array.isArray(b)){const o=g({name:b}),a=[];return b.forEach(C=>{const O=M(C),x=s.subscribe(O,()=>{const Y=g({name:C});o[C]=Y,c({...o})});a.push(x)}),()=>a.forEach(C=>C())}throw new Error("Parameters of name must be string or array of string or compute must be a function")},[]),y=t.useCallback((b,d)=>{if(!b)return s.subscribe("values",d);if(typeof b=="string"){const c=M(b);return s.subscribe(c,d)}if(Array.isArray(b)){const c={},o=[];return b.forEach(a=>{const C=M(a),O=s.subscribe(C,()=>{c[a]=g({name:a}),d({...c})});o.push(O)}),()=>o.forEach(a=>a())}throw new Error("Parameters of name must be string or array of string")},[]);return{watch:k,registerHookWatcher:R,getWatchValue:g,subscribe:y}},ge={lastReset:null,isDirty:!1,isError:!1,errorFields:[],dirtyFields:[],touchedFields:[]},ce={isDirty:!1,isTouched:!1,error:null},Ne=[],Ve={},We=({numberFields:s=Ne,defaultValues:n=Ve,shouldUnRegister:l=!1,shouldConvertNumber:f=!1}={})=>{const[h,E]=Pe(),g=t.useRef(),k=t.useRef(s),R=t.useRef(new Map),y=t.useRef({}),b=t.useRef({}),d=t.useRef({...ge}),c=t.useRef({...n}),o=t.useRef({...n}),a=Oe(),C=t.useCallback(r=>{b.current=Object.keys(o.current).reduce((u,m)=>({...u,[m]:{...r?{}:b.current[m]||{},...ce}}),{})},[]),O=t.useCallback((r={},{clearCustomFormStates:u=!1,clearCustomFieldStates:m=!1}={})=>{o.current={...o.current,...r},c.current={...o.current},R.current.forEach((p,D)=>{p(o.current[D])}),y.current={},d.current={...u?{}:d.current,...ge},k.current=s,R.current=new Map,a.reset(),C(m),s.length>0&&(f=!0),E()},[]),x=t.useCallback(()=>{const r=Object.fromEntries(new FormData(g.current));return R.current.forEach((m,p)=>{r[p]=c.current[p]}),f&&k.current.forEach(m=>r.hasOwnProperty(m)&&(r[m]=Number(r[m])||0)),{...c.current,...r}},[]),Y=t.useCallback(()=>!!Object.values(W()).find(r=>r.isDirty),[]),B=t.useCallback(()=>!!Object.values(I()).find(r=>!!r),[]),ne=t.useCallback(r=>Ee(r.target),[]),ue=t.useCallback(()=>o.current,[]),ae=t.useCallback(()=>k.current,[]),oe=t.useCallback(()=>R.current,[]),P=t.useCallback((r,u)=>u?Array.isArray(u)?u.reduce((m,p)=>({...m,[p]:H(r,p)}),{}):H(r,u):{...r},[]),X=t.useCallback(r=>P(c.current,r),[P]),I=t.useCallback(r=>P(y.current,r),[P]),W=t.useCallback(r=>P(b.current,r),[P]),L=t.useCallback(r=>P({...d.current,lastReset:h},r),[h]),{watch:Z,registerHookWatcher:U,getWatchValue:Q,subscribe:K}=xe({channels:a,getValues:X,getErrors:I,getFieldStates:W,getFormState:L}),ee=t.useCallback((r,u)=>{const m=d.current;H(m,r)!==u&&(he(d.current,r,u),a.publish(`formState.${r}`,u))},[]),T=t.useCallback((r,u,m)=>{const p=b.current[r]||{...ce};H(p,u)!==m&&(he(b.current,`${r}.${u}`,m),a.publish(`fieldStates.${r}.${u}`,m),u==="error"&&(d.current.errorFields=Object.keys(y.current).filter(_=>!!y.current[_]),a.publish("formState.errorFields",d.current.errorFields)),u==="isDirty"&&(d.current.dirtyFields=Object.keys(b.current).filter(_=>b.current[_].isDirty),a.publish("formState.dirtyFields",d.current.dirtyFields)),u==="isTouched"&&(d.current.touchedFields=Object.keys(b.current).filter(_=>b.current[_].isTouched),a.publish("formState.touchedFields",d.current.touchedFields)))},[]),re=t.useCallback(r=>{T(r,"isDirty",!1),T(r,"isTouched",!1),T(r,"error",null)},[]),e=t.useCallback((r,u)=>{if(y.current[r]===u)return;y.current[r]=u,T(r,"error",u),a.publish(`errors.${r}`,u);const p=B();d.current.isError!==p&&(d.current.isError=p,a.publish("formState.isError",p))},[]),i=t.useCallback(r=>{if(!y.current[r])return;y.current[r]=null,T(r,"error",null),a.publish(`errors.${r}`,null);const u=B();d.current.isError!==u&&(d.current.isError=u,a.publish("formState.isError",u))},[]),v=t.useCallback(()=>{if(Object.keys(y.current)===0)return;Object.keys(y.current).forEach(u=>i(u)),y.current={};const r=B();d.current.isError!==r&&(d.current.isError=r,a.publish("formState.isError",r))},[]),F=t.useCallback(r=>{const u=Ee(r.target);u?e(r.target.name,u):i(r.target.name)},[]),j=t.useCallback((r,u,{shouldDirty:m=!0,shouldOnChange:p=!0}={})=>{if(u===c.current[r])return;f&&k.current.includes(r)&&(u=Number(u)||void 0),T(r,"isTouched",!0);const D=u!==o.current[r];m&&b.current[r].isDirty!==D&&T(r,"isDirty",D);const _=Y();d.current.isDirty!==_&&(d.current.isDirty=_,a.publish("formState.isDirty",_)),c.current[r]=u;const $=R.current.get(r);$&&$(u),a.publish(`values.${r}`,u,{shouldDirty:m,shouldOnChange:p}),p&&a.publish("onChange",r,u,c.current)},[]),A=t.useCallback((r,u)=>(R.current.set(r,u),b.current[r]={...ce},()=>{l&&R.current.delete(r)}),[]),q=t.useCallback((r,{keepError:u,keepDirty:m,keepTouched:p,keepCustomState:D,defaultValue:_})=>{const $=R.current.get(r);if(!$)throw new Error(`Cannot reset "${r}" because it's uncontrolled field`);o.current[r]=_,c.current[r]=_,$&&$(_),u||i(r),m||T(r,"isDirty",!1),p||T(r,"isTouched",!1)},[]),J=t.useCallback((r,u=V.getValues(r))=>{a.publish("onBlur",r,u,V.getValues())},[]),w=t.useCallback(r=>a.subscribe("onChange",r),[]),N=t.useCallback(r=>a.subscribe("onBlur",r),[]),V=t.useMemo(()=>({subscribe:K,reset:O,reload:E,resetField:q,setValue:j,getValues:X,getErrors:I,getFieldStates:W,getFormState:L,setError:e,clearError:i,clearErrors:v,checkValidity:F,getNumberFields:ae,getFieldValidity:ne,getDefaultValues:ue,setFieldState:T,triggerFieldBlur:J,resetFieldState:re,getControlledFields:oe,subscribeChange:w,subscribeBlur:N,setFormState:ee,getEvents:a.getEvents,getWatchEvents:a.getWatchEvents}),[h]),te=t.useCallback(()=>{[...g.current.querySelectorAll("[name]")].forEach(m=>{!m.defaultValue&&!R.current.has(m.name)&&o.current[m.name]&&(m.defaultValue=o.current[m.name]),m.type==="number"&&!k.current.includes(m.name)&&k.current.push(m.name)});const u=x();c.current={...u},o.current={...u}},[]),ve=t.useMemo(()=>({ref:g,watch:Z,actions:V,initForm:te,registerController:A,registerHookWatcher:U,lastReloadedAt:h,loadFormValues:x,getWatchValue:Q,channels:a}),[h]),Ce=t.useMemo(()=>({control:ve,actions:V,watch:Z}),[h]);return t.useLayoutEffect(()=>{g.current&&te()},[h]),t.useLayoutEffect(()=>{C(!1)},[]),Ce};exports.Controller=we;exports.Form=Fe;exports.useController=Re;exports.useForm=We;exports.useFormContext=le;exports.useWatch=ke;
22
+ <%s key={someKey} {...props} />`,F,T,P,T),re[T+F]=!0)}if(T=null,S!==void 0&&(h(S),T=""+S),d(f)&&(h(f.key),T=""+f.key),"key"in f){S={};for(var D in f)D!=="key"&&(S[D]=f[D])}else S=f;return T&&C(S,typeof e=="function"?e.displayName||e.name||"Unknown":e),b(e,T,O,x,g(),S,q,J)}function c(e){typeof e=="object"&&e!==null&&e.$$typeof===i&&e._store&&(e._store.validated=1)}var l=t,i=Symbol.for("react.transitional.element"),n=Symbol.for("react.portal"),E=Symbol.for("react.fragment"),A=Symbol.for("react.strict_mode"),N=Symbol.for("react.profiler"),Y=Symbol.for("react.consumer"),I=Symbol.for("react.context"),se=Symbol.for("react.forward_ref"),ne=Symbol.for("react.suspense"),ue=Symbol.for("react.suspense_list"),oe=Symbol.for("react.memo"),j=Symbol.for("react.lazy"),X=Symbol.for("react.activity"),B=Symbol.for("react.client.reference"),W=l.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,L=Object.prototype.hasOwnProperty,Z=Array.isArray,U=console.createTask?console.createTask:function(){return null};l={"react-stack-bottom-frame":function(e){return e()}};var Q,K={},ee=l["react-stack-bottom-frame"].bind(l,k)(),_=U(R(k)),re={};G.Fragment=E,G.jsx=function(e,f,S,F,x){var O=1e4>W.recentlyCreatedOwnerStacks++;return u(e,f,S,!1,F,x,O?Error("react-stack-top-frame"):ee,O?U(R(e)):_)},G.jsxs=function(e,f,S,F,x){var O=1e4>W.recentlyCreatedOwnerStacks++;return u(e,f,S,!0,F,x,O?Error("react-stack-top-frame"):ee,O?U(R(e)):_)}}()),G}var de;function ve(){return de||(de=1,process.env.NODE_ENV==="production"?te.exports=Se():te.exports=ye()),te.exports}var be=ve();const y=()=>{},me=t.createContext({ref:null,watch:y,actions:{reset:y,resetField:y,setValue:y,getValues:y,getErrors:y,getFieldStates:y,getFormStates:y,setError:y,clearError:y,clearErrors:y,checkValidity:y,getNumberFields:y,getFieldValidity:y,getDefaultValues:y,setFieldState:y,resetFieldState:y,getControlledFields:y},registerController:y,registerHookWatcher:y,lastReloadedAt:y,loadFormValues:y,getWatchValue:y,channels:{}}),le=()=>t.useContext(me),pe=({id:s,control:o,method:h,action:R,children:g,onChange:k,onBlur:d,onSubmit:C=()=>{},onInput:v=()=>{},onReset:b=()=>{},numberFields:u=[],className:c,...l})=>{const i=t.useCallback(n=>{o.ref&&(o.ref.current=n,o.ref.current&&o.initForm())},[o]);return t.useEffect(()=>{let n=()=>{},E=()=>{};return k&&(n=o.channels.subscribe("onChange",k)),d&&(E=o.channels.subscribe("onBlur",d)),()=>{n(),E()}},[o.lastReloadedAt]),be.jsx(me.Provider,{value:o,children:be.jsx("form",{id:s,ref:i,action:R,method:h,className:c,onInput:v,onSubmit:n=>{h||n.preventDefault();const E=o.loadFormValues();C(E)},onChange:n=>{const E=n.target.name;!E||o.actions.getControlledFields().has(E)||o.actions.setValue(E,n.target.value)},onBlur:n=>{const E=n.target.name;if(!E||o.actions.getControlledFields().has(E))return;const A=n.target.value;o.channels.publish("onBlur",E,A,o.actions.getValues())},onReset:n=>{o.actions.reset(),b(n)},...l,children:g},o.lastReloadedAt)})},Re=({control:s,name:o,compute:h})=>{const{getWatchValue:R,registerHookWatcher:g}=s||le(),k=R({name:o,compute:h}),[d,C]=t.useState(k);return t.useEffect(()=>g({name:o,compute:h,value:d,setValue:C}),[]),d},ke=({name:s,defaultValue:o})=>{const{actions:h,registerController:R,channels:g}=le(),k=t.useRef(),d=h.getDefaultValues()[s]||o||"",[C,v]=t.useState(d),b=Re({name:`fieldStates.${s}`}),u=t.useCallback((l,{shouldDirty:i=!0,shouldOnChange:n=!0}={})=>{var A,N;let E=l;(A=l==null?void 0:l.target)!=null&&A.value&&(E=l.target.value),(N=l==null?void 0:l.target)!=null&&N.checked&&(E=l.target.checked+""),v(E),h.setValue(s,E,{shouldDirty:i,shouldOnChange:n})},[h.setValue]),c=t.useCallback(l=>{const i=h.getValues(),n=l??i[s];g.publish("onBlur",s,n,i)},[]);return t.useEffect(()=>R(s,v),[]),{ref:k,name:s,defaultValue:d,value:C,onChange:u,onBlur:c,fieldState:b}},Fe=({name:s,defaultValue:o,render:h=({ref:R,name:g,defaultValue:k,value:d,onChange:C,onBlur:v,fieldState:b})=>null})=>{const R=ke({name:s,defaultValue:o});return h(R)},Te=["errors","fieldStates","formState"],H=(s={},o="")=>o.split(".").reduce((h,R)=>h&&h[R]!==void 0?h[R]:void 0,s),Ee=(s={},o="",h)=>{const R={...s};let g=s;const k=o.split(".");return k.forEach((d,C)=>{C<k.length-1?(g[d]||(g[d]={}),R[d]={...g[d]},g=R[d]):g[d]=h}),R},V=s=>Te.some(o=>s.startsWith(o))?s:"values."+s,_e=["badInput","customError","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","tooLong","tooShort","typeMismatch","valueMissing"],ge=s=>{typeof s.setCustomValidity=="function"&&s.setCustomValidity("");let o=s.validity,h=_e.find(R=>o[R]);if(h)return{type:h,message:s.validationMessage}},we=()=>{const s=t.useRef(new Map),o=t.useRef(new Map),h=t.useCallback(()=>o.current,[]),R=t.useCallback(()=>s.current,[]),g=t.useCallback(()=>{s.current.clear(),o.current.clear()},[]),k=t.useCallback((b,...u)=>{const c=s.current.get(b),l=o.current.get(b);c&&c.forEach(i=>i(...u)),l&&l.forEach(i=>i(...u)),s.current.forEach((i,n)=>{n!==b&&b.startsWith(n)&&i.forEach(E=>E(...u))}),o.current.forEach((i,n)=>{n!==b&&b.startsWith(n)&&i.forEach(E=>E(...u))})},[]),d=t.useCallback(b=>{s.current.forEach((u,c)=>{c.startsWith(b)&&u.forEach(l=>l())}),o.current.forEach((u,c)=>{c.startsWith(b)&&u.forEach(l=>l())})},[]),C=t.useCallback((b,u)=>(s.current.has(b)||s.current.set(b,new Set),s.current.get(b).add(u),()=>{var c;return(c=s.current.get(b))==null?void 0:c.delete(u)}),[]),v=t.useCallback((b,u)=>{o.current.has(b)||(o.current.set(b,new Set),o.current.get(b).add(u))},[]);return{reset:g,publish:k,subscribe:C,subscribeWatch:v,getEvents:R,getWatchEvents:h,trigger:d}},Ae=()=>{const[s,o]=t.useState(),h=t.useCallback(()=>o(new Date().toString()),[]);return[s,h]},Oe=()=>{const[,s]=t.useState({});return t.useCallback(()=>s({}),[])},Pe=({channels:s,getValues:o,getErrors:h,getFieldStates:R,getFormState:g})=>{const k=Oe(),d=t.useCallback(({name:u,compute:c})=>{if(typeof c=="function")return c(o());if(Array.isArray(u)){const l={};return u.forEach(i=>{l[i]=d({name:i})}),l}return H({...o(),errors:{...h()},formState:{...g()},fieldStates:{...R()}},u)},[]),C=t.useCallback(u=>{if(!u)return s.subscribeWatch("values",()=>k()),o();if(typeof u=="string"){const c=V(u);return s.subscribeWatch(c,()=>k()),d({name:u})}if(Array.isArray(u)){const c={};return u.forEach(l=>{const i=V(l);s.subscribeWatch(i,()=>k()),c[l]=d({name:l})}),{...c}}throw new Error("Parameters of watch must be string or array of string")},[]),v=t.useCallback(({name:u,compute:c,setValue:l})=>{if(typeof c=="function")return s.subscribe("values",()=>{const n=d({compute:c});l(n)});if(!u)return s.subscribe("values",()=>{l(o())});if(typeof u=="string"){const i=V(u);return s.subscribe(i,()=>{const E=d({name:u});l(E)})}if(Array.isArray(u)){const i=d({name:u}),n=[];return u.forEach(E=>{const A=V(E),N=s.subscribe(A,()=>{const Y=d({name:E});i[E]=Y,l({...i})});n.push(N)}),()=>n.forEach(E=>E())}throw new Error("Parameters of name must be string or array of string or compute must be a function")},[]),b=t.useCallback((u,c)=>{if(!u)return s.subscribe("values",()=>c(o()));if(["onChange","onBlur"].includes(u))return s.subscribe(u,c);if(typeof u=="string"){const l=V(u);return s.subscribe(l,()=>c(d({name:u})))}if(Array.isArray(u)){const l={},i=[];return u.forEach(n=>{const E=V(n),A=s.subscribe(E,()=>{l[n]=d({name:n}),c({...l})});i.push(A)}),()=>i.forEach(n=>n())}throw new Error("Parameters of name must be string or array of string")},[]);return{watch:C,registerHookWatcher:v,getWatchValue:d,subscribe:b}},he={lastReset:null,isDirty:!1,isError:!1,errorFields:[],dirtyFields:[],touchedFields:[]},ce={isDirty:!1,isTouched:!1,error:null},je=[],xe={},Ne=({numberFields:s=je,defaultValues:o=xe,shouldUnRegister:h=!1,shouldConvertNumber:R=!1}={})=>{const[g,k]=Ae(),d=t.useRef(),C=t.useRef(s),v=t.useRef(new Map),b=t.useRef({}),u=t.useRef({}),c=t.useRef({...he}),l=t.useRef({...o}),i=t.useRef({...o}),n=we(),E=t.useCallback(r=>{u.current=Object.keys(i.current).reduce((a,m)=>({...a,[m]:{...r?{}:u.current[m]||{},...ce}}),{})},[]),A=t.useCallback((r={},{clearCustomFormStates:a=!1,clearCustomFieldStates:m=!1}={})=>{i.current={...i.current,...r},l.current={...i.current},v.current.forEach((p,$)=>{p(i.current[$]??"")}),b.current={},c.current={...a?{}:c.current,...he},C.current=s,v.current=new Map,n.reset(),E(m),s.length>0&&(R=!0),k()},[]),N=t.useCallback(()=>{const r=Object.fromEntries(new FormData(d.current));return v.current.forEach((m,p)=>{r[p]=l.current[p]}),R&&C.current.forEach(m=>r.hasOwnProperty(m)&&(r[m]=Number(r[m])||0)),{...l.current,...r}},[]),Y=t.useCallback(()=>!!Object.values(W()).find(r=>r.isDirty),[]),I=t.useCallback(()=>!!Object.values(B()).find(r=>!!r),[]),se=t.useCallback(r=>ge(r.target),[]),ne=t.useCallback(()=>i.current,[]),ue=t.useCallback(()=>C.current,[]),oe=t.useCallback(()=>v.current,[]),j=t.useCallback((r,a)=>a?Array.isArray(a)?a.reduce((m,p)=>({...m,[p]:H(r,p)}),{}):H(r,a):{...r},[]),X=t.useCallback(r=>j(l.current,r),[j]),B=t.useCallback(r=>j(b.current,r),[j]),W=t.useCallback(r=>j(u.current,r),[j]),L=t.useCallback(r=>j({...c.current,lastReset:g},r),[g]),{watch:Z,registerHookWatcher:U,getWatchValue:Q,subscribe:K}=Pe({channels:n,getValues:X,getErrors:B,getFieldStates:W,getFormState:L}),ee=t.useCallback((r,a)=>{const m=c.current;H(m,r)!==a&&(c.current=Ee(c.current,r,a),n.publish(`formState.${r}`,a))},[]),_=t.useCallback((r,a,m)=>{const p=u.current[r]||{...ce};H(p,a)!==m&&(u.current=Ee(u.current,`${r}.${a}`,m),n.publish(`fieldStates.${r}.${a}`,m),a==="error"&&(c.current.errorFields=Object.keys(b.current).filter(w=>!!b.current[w]),n.publish("formState.errorFields",c.current.errorFields)),a==="isDirty"&&(c.current.dirtyFields=Object.keys(u.current).filter(w=>u.current[w].isDirty),n.publish("formState.dirtyFields",c.current.dirtyFields)),a==="isTouched"&&(c.current.touchedFields=Object.keys(u.current).filter(w=>u.current[w].isTouched),n.publish("formState.touchedFields",c.current.touchedFields)))},[]),re=t.useCallback(r=>{_(r,"isDirty",!1),_(r,"isTouched",!1),_(r,"error",null)},[]),e=t.useCallback((r,a)=>{if(b.current[r]===a)return;b.current[r]=a,_(r,"error",a),n.publish(`errors.${r}`,a);const p=I();c.current.isError!==p&&(c.current.isError=p,n.publish("formState.isError",p))},[]),f=t.useCallback(r=>{if(!b.current[r])return;b.current[r]=null,_(r,"error",null),n.publish(`errors.${r}`,null);const a=I();c.current.isError!==a&&(c.current.isError=a,n.publish("formState.isError",a))},[]),S=t.useCallback(()=>{if(Object.keys(b.current)===0)return;Object.keys(b.current).forEach(a=>f(a)),b.current={};const r=I();c.current.isError!==r&&(c.current.isError=r,n.publish("formState.isError",r))},[]),F=t.useCallback(r=>{const a=ge(r.target);a?e(r.target.name,a):f(r.target.name)},[]),x=t.useCallback((r,a,{shouldDirty:m=!0,shouldOnChange:p=!0}={})=>{if(a===l.current[r])return;R&&C.current.includes(r)&&(a=Number(a)||void 0),_(r,"isTouched",!0);const $=a!==i.current[r];m&&u.current[r].isDirty!==$&&_(r,"isDirty",$);const w=Y();c.current.isDirty!==w&&(c.current.isDirty=w,n.publish("formState.isDirty",w)),l.current[r]=a;const M=v.current.get(r);M&&M(a),n.publish(`values.${r}`,a,{shouldDirty:m,shouldOnChange:p}),p&&n.publish("onChange",r,a,l.current)},[]),O=t.useCallback((r,a)=>(v.current.set(r,a),u.current[r]={...ce},()=>{h&&v.current.delete(r)}),[]),q=t.useCallback((r,{keepError:a,keepDirty:m,keepTouched:p,keepCustomState:$,defaultValue:w})=>{const M=v.current.get(r);if(!M)throw new Error(`Cannot reset "${r}" because it's uncontrolled field`);i.current[r]=w,l.current[r]=w,M&&M(w),a||f(r),m||_(r,"isDirty",!1),p||_(r,"isTouched",!1)},[]),J=t.useCallback(r=>{if(!r)return n.trigger("values");if(Array.isArray(r))return r.forEach(m=>{const p=V(m);n.trigger(p)});const a=V(r);n.trigger(a)},[]),T=t.useCallback((r,a=P.getValues(r))=>{n.publish("onBlur",r,a,P.getValues())},[]),P=t.useMemo(()=>({subscribe:K,reset:A,trigger:J,reload:k,resetField:q,setValue:x,getValues:X,getErrors:B,getFieldStates:W,getFormState:L,setError:e,clearError:f,clearErrors:S,checkValidity:F,getNumberFields:ue,getFieldValidity:se,getDefaultValues:ne,setFieldState:_,triggerFieldBlur:T,resetFieldState:re,getControlledFields:oe,setFormState:ee,getEvents:n.getEvents,getWatchEvents:n.getWatchEvents}),[g]),D=t.useCallback(()=>{[...d.current.querySelectorAll("[name]")].forEach(m=>{!m.defaultValue&&!v.current.has(m.name)&&i.current[m.name]&&(m.defaultValue=i.current[m.name]),m.type==="number"&&!C.current.includes(m.name)&&C.current.push(m.name)});const a=N();l.current={...a},i.current={...a}},[]),ae=t.useMemo(()=>({ref:d,watch:Z,actions:P,initForm:D,registerController:O,registerHookWatcher:U,lastReloadedAt:g,loadFormValues:N,getWatchValue:Q,channels:n}),[g]),Ce=t.useMemo(()=>({control:ae,actions:P,watch:Z}),[g]);return t.useLayoutEffect(()=>{d.current&&D()},[g]),t.useLayoutEffect(()=>{E(!1)},[]),Ce};exports.Controller=Fe;exports.Form=pe;exports.useController=ke;exports.useForm=Ne;exports.useFormContext=le;exports.useWatch=Re;