@lehnihon/bit-form 2.2.1 → 2.2.3

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.
Files changed (105) hide show
  1. package/dist/angular/index.cjs +1 -1
  2. package/dist/angular/index.cjs.map +1 -1
  3. package/dist/angular/index.d.cts +31 -38
  4. package/dist/angular/index.d.ts +31 -38
  5. package/dist/angular/index.js +1 -1
  6. package/dist/angular/index.js.map +1 -1
  7. package/dist/{bus-B3pGaiFZ.d.cts → bus-CILR-ENq.d.cts} +5 -26
  8. package/dist/{bus-B3pGaiFZ.d.ts → bus-DHQHDwUp.d.ts} +5 -26
  9. package/dist/chunk-3MUULXXZ.js +2 -0
  10. package/dist/chunk-3MUULXXZ.js.map +1 -0
  11. package/dist/chunk-7MBRAKBL.js +2 -0
  12. package/dist/chunk-7MBRAKBL.js.map +1 -0
  13. package/dist/chunk-ER2DNS7T.cjs +2 -0
  14. package/dist/chunk-ER2DNS7T.cjs.map +1 -0
  15. package/dist/chunk-FEW3ABPD.js +2 -0
  16. package/dist/chunk-FEW3ABPD.js.map +1 -0
  17. package/dist/chunk-JO37BU2C.cjs +2 -0
  18. package/dist/chunk-JO37BU2C.cjs.map +1 -0
  19. package/dist/chunk-NNKZFXEK.cjs +2 -0
  20. package/dist/chunk-NNKZFXEK.cjs.map +1 -0
  21. package/dist/chunk-PA6T2CBR.cjs +2 -0
  22. package/dist/chunk-PA6T2CBR.cjs.map +1 -0
  23. package/dist/chunk-T3XN5O7V.cjs +2 -0
  24. package/dist/chunk-T3XN5O7V.cjs.map +1 -0
  25. package/dist/chunk-ULC4OPIQ.js +2 -0
  26. package/dist/chunk-ULC4OPIQ.js.map +1 -0
  27. package/dist/chunk-VDWCFNA6.js +2 -0
  28. package/dist/chunk-VDWCFNA6.js.map +1 -0
  29. package/dist/cli/index.cjs +3 -3
  30. package/dist/devtools/bridge.cjs +1 -1
  31. package/dist/devtools/bridge.cjs.map +1 -1
  32. package/dist/devtools/bridge.js +1 -1
  33. package/dist/devtools/bridge.js.map +1 -1
  34. package/dist/devtools/index.cjs +132 -1
  35. package/dist/devtools/index.cjs.map +1 -1
  36. package/dist/devtools/index.js +132 -1
  37. package/dist/devtools/index.js.map +1 -1
  38. package/dist/index.cjs +1 -1
  39. package/dist/index.cjs.map +1 -1
  40. package/dist/index.d.cts +170 -99
  41. package/dist/index.d.ts +170 -99
  42. package/dist/index.js +1 -1
  43. package/dist/mask.cjs +2 -0
  44. package/dist/mask.cjs.map +1 -0
  45. package/dist/mask.d.cts +86 -0
  46. package/dist/mask.d.ts +86 -0
  47. package/dist/mask.js +2 -0
  48. package/dist/mask.js.map +1 -0
  49. package/dist/{public-types-Lq3eLstW.d.ts → public-types-Bgws0aVJ.d.ts} +14 -19
  50. package/dist/{public-types-CtYuIAMP.d.cts → public-types-SU17BarA.d.cts} +14 -19
  51. package/dist/react/index.cjs +1 -1
  52. package/dist/react/index.cjs.map +1 -1
  53. package/dist/react/index.d.cts +6 -5
  54. package/dist/react/index.d.ts +6 -5
  55. package/dist/react/index.js +1 -1
  56. package/dist/react/index.js.map +1 -1
  57. package/dist/react-native/index.cjs +1 -1
  58. package/dist/react-native/index.cjs.map +1 -1
  59. package/dist/react-native/index.d.cts +5 -4
  60. package/dist/react-native/index.d.ts +5 -4
  61. package/dist/react-native/index.js +1 -1
  62. package/dist/react-native/index.js.map +1 -1
  63. package/dist/resolvers/joi.cjs +1 -1
  64. package/dist/resolvers/joi.cjs.map +1 -1
  65. package/dist/resolvers/joi.d.cts +4 -4
  66. package/dist/resolvers/joi.d.ts +4 -4
  67. package/dist/resolvers/joi.js +1 -1
  68. package/dist/resolvers/joi.js.map +1 -1
  69. package/dist/resolvers/types.cjs +1 -0
  70. package/dist/resolvers/types.cjs.map +1 -0
  71. package/dist/resolvers/types.d.cts +16 -0
  72. package/dist/resolvers/types.d.ts +16 -0
  73. package/dist/resolvers/types.js +1 -0
  74. package/dist/resolvers/types.js.map +1 -0
  75. package/dist/resolvers/yup.cjs +1 -1
  76. package/dist/resolvers/yup.cjs.map +1 -1
  77. package/dist/resolvers/yup.d.cts +4 -4
  78. package/dist/resolvers/yup.d.ts +4 -4
  79. package/dist/resolvers/yup.js +1 -1
  80. package/dist/resolvers/yup.js.map +1 -1
  81. package/dist/resolvers/zod.cjs +1 -1
  82. package/dist/resolvers/zod.cjs.map +1 -1
  83. package/dist/resolvers/zod.d.cts +4 -4
  84. package/dist/resolvers/zod.d.ts +4 -4
  85. package/dist/resolvers/zod.js +1 -1
  86. package/dist/resolvers/zod.js.map +1 -1
  87. package/dist/types-D8DgIUhJ.d.cts +27 -0
  88. package/dist/types-D8DgIUhJ.d.ts +27 -0
  89. package/dist/{use-bit-persist-hxJaKG2S.d.ts → use-bit-persist-BlR-hHk6.d.ts} +35 -42
  90. package/dist/{use-bit-persist-CWzGfovL.d.cts → use-bit-persist-DEWMhvit.d.cts} +35 -42
  91. package/dist/vue/index.cjs +1 -1
  92. package/dist/vue/index.cjs.map +1 -1
  93. package/dist/vue/index.d.cts +31 -38
  94. package/dist/vue/index.d.ts +31 -38
  95. package/dist/vue/index.js +1 -1
  96. package/dist/vue/index.js.map +1 -1
  97. package/package.json +7 -1
  98. package/dist/chunk-442A4FTZ.cjs +0 -2
  99. package/dist/chunk-442A4FTZ.cjs.map +0 -1
  100. package/dist/chunk-6FJEE6O3.js +0 -133
  101. package/dist/chunk-6FJEE6O3.js.map +0 -1
  102. package/dist/chunk-FOV24ACZ.js +0 -2
  103. package/dist/chunk-FOV24ACZ.js.map +0 -1
  104. package/dist/chunk-YWXX6XRV.cjs +0 -133
  105. package/dist/chunk-YWXX6XRV.cjs.map +0 -1
@@ -1,26 +1,4 @@
1
- interface BitMask {
2
- format: (value: any) => string;
3
- parse: (value: string) => any;
4
- }
5
- interface PatternMaskOptions {
6
- allowChars?: string;
7
- customParse?: (value: string) => any;
8
- saveRaw?: boolean;
9
- guide?: boolean;
10
- placeholderChar?: string;
11
- }
12
- interface CurrencyMaskConfig {
13
- prefix?: string;
14
- suffix?: string;
15
- thousand: string;
16
- decimal: string;
17
- precision?: number;
18
- allowNegative?: boolean;
19
- saveRaw?: boolean;
20
- }
21
- interface DateMaskConfig extends PatternMaskOptions {
22
- format?: "DD/MM/YYYY" | "YYYY-MM-DD";
23
- }
1
+ import { B as BitMask, a as BitMaskName } from './types-D8DgIUhJ.cjs';
24
2
 
25
3
  type DeepPartial<T> = T extends object ? {
26
4
  [P in keyof T]?: DeepPartial<T[P]>;
@@ -73,8 +51,8 @@ interface BitFieldDefinition<T extends object = any> {
73
51
  validation?: BitFieldValidation<T>;
74
52
  transform?: BitTransformFn<T>;
75
53
  computed?: BitComputedFn<T>;
76
- /** Mask name (from registry) or BitMask instance. */
77
- mask?: BitMask | string;
54
+ /** Mask name (built-in or custom registry key) or BitMask instance. */
55
+ mask?: BitMask | BitMaskName;
78
56
  /** Scope name (e.g. wizard step). */
79
57
  scope?: string;
80
58
  }
@@ -201,6 +179,7 @@ interface BitHistoryConfig {
201
179
  interface BitConfig<T extends object = any> {
202
180
  /** Core */
203
181
  name?: string;
182
+ storeId?: string;
204
183
  initialValues?: T;
205
184
  /** Central field config: conditional, validation, transform, computed, mask, scope. */
206
185
  fields?: Record<string, BitFieldDefinition<T>>;
@@ -252,4 +231,4 @@ declare global {
252
231
  }
253
232
  declare const bitBus: BitFormGlobal;
254
233
 
255
- export { type BitTouched as A, type BitConfig as B, type CurrencyMaskConfig as C, type DateMaskConfig as D, type BitTransformFn as E, type BitValidationConfig as F, type DeepPartial as G, type ValidatorFn as H, bitBus as I, type DevToolsOptions as J, type BitPersistResolvedConfig as K, type PatternMaskOptions as P, type ScopeStatus as S, type ValidateScopeResult as V, type BitMask as a, type BitAfterSubmitEvent as b, type BitAfterValidateEvent as c, type BitArrayItem as d, type BitArrayPath as e, type BitBeforeSubmitEvent as f, type BitBeforeValidateEvent as g, type BitComputedFn as h, type BitErrors as i, type BitFieldChangeEvent as j, type BitFieldChangeMeta as k, type BitFieldConditional as l, type BitFieldDefinition as m, type BitFieldState as n, type BitFieldValidation as o, type BitHistoryConfig as p, type BitPath as q, type BitPathValue as r, type BitPersistConfig as s, type BitPersistMode as t, type BitPersistStorageAdapter as u, type BitPlugin as v, type BitPluginContext as w, type BitPluginErrorEvent as x, type BitPluginHooks as y, type BitState as z };
234
+ export { type BitTouched as A, type BitState as B, type BitValidationConfig as C, type DeepPartial as D, type ValidatorFn as E, bitBus as F, type DevToolsOptions as G, type BitPersistResolvedConfig as H, type ScopeStatus as S, type ValidateScopeResult as V, type BitTransformFn as a, type BitFieldChangeEvent as b, type BitBeforeSubmitEvent as c, type BitAfterSubmitEvent as d, type BitFieldDefinition as e, type BitErrors as f, type BitBeforeValidateEvent as g, type BitAfterValidateEvent as h, type BitConfig as i, type BitComputedFn as j, type BitPath as k, type BitFieldState as l, type BitPathValue as m, type BitFieldChangeMeta as n, type BitArrayPath as o, type BitArrayItem as p, type BitFieldConditional as q, type BitFieldValidation as r, type BitHistoryConfig as s, type BitPersistConfig as t, type BitPersistMode as u, type BitPersistStorageAdapter as v, type BitPlugin as w, type BitPluginContext as x, type BitPluginErrorEvent as y, type BitPluginHooks as z };
@@ -1,26 +1,4 @@
1
- interface BitMask {
2
- format: (value: any) => string;
3
- parse: (value: string) => any;
4
- }
5
- interface PatternMaskOptions {
6
- allowChars?: string;
7
- customParse?: (value: string) => any;
8
- saveRaw?: boolean;
9
- guide?: boolean;
10
- placeholderChar?: string;
11
- }
12
- interface CurrencyMaskConfig {
13
- prefix?: string;
14
- suffix?: string;
15
- thousand: string;
16
- decimal: string;
17
- precision?: number;
18
- allowNegative?: boolean;
19
- saveRaw?: boolean;
20
- }
21
- interface DateMaskConfig extends PatternMaskOptions {
22
- format?: "DD/MM/YYYY" | "YYYY-MM-DD";
23
- }
1
+ import { B as BitMask, a as BitMaskName } from './types-D8DgIUhJ.js';
24
2
 
25
3
  type DeepPartial<T> = T extends object ? {
26
4
  [P in keyof T]?: DeepPartial<T[P]>;
@@ -73,8 +51,8 @@ interface BitFieldDefinition<T extends object = any> {
73
51
  validation?: BitFieldValidation<T>;
74
52
  transform?: BitTransformFn<T>;
75
53
  computed?: BitComputedFn<T>;
76
- /** Mask name (from registry) or BitMask instance. */
77
- mask?: BitMask | string;
54
+ /** Mask name (built-in or custom registry key) or BitMask instance. */
55
+ mask?: BitMask | BitMaskName;
78
56
  /** Scope name (e.g. wizard step). */
79
57
  scope?: string;
80
58
  }
@@ -201,6 +179,7 @@ interface BitHistoryConfig {
201
179
  interface BitConfig<T extends object = any> {
202
180
  /** Core */
203
181
  name?: string;
182
+ storeId?: string;
204
183
  initialValues?: T;
205
184
  /** Central field config: conditional, validation, transform, computed, mask, scope. */
206
185
  fields?: Record<string, BitFieldDefinition<T>>;
@@ -252,4 +231,4 @@ declare global {
252
231
  }
253
232
  declare const bitBus: BitFormGlobal;
254
233
 
255
- export { type BitTouched as A, type BitConfig as B, type CurrencyMaskConfig as C, type DateMaskConfig as D, type BitTransformFn as E, type BitValidationConfig as F, type DeepPartial as G, type ValidatorFn as H, bitBus as I, type DevToolsOptions as J, type BitPersistResolvedConfig as K, type PatternMaskOptions as P, type ScopeStatus as S, type ValidateScopeResult as V, type BitMask as a, type BitAfterSubmitEvent as b, type BitAfterValidateEvent as c, type BitArrayItem as d, type BitArrayPath as e, type BitBeforeSubmitEvent as f, type BitBeforeValidateEvent as g, type BitComputedFn as h, type BitErrors as i, type BitFieldChangeEvent as j, type BitFieldChangeMeta as k, type BitFieldConditional as l, type BitFieldDefinition as m, type BitFieldState as n, type BitFieldValidation as o, type BitHistoryConfig as p, type BitPath as q, type BitPathValue as r, type BitPersistConfig as s, type BitPersistMode as t, type BitPersistStorageAdapter as u, type BitPlugin as v, type BitPluginContext as w, type BitPluginErrorEvent as x, type BitPluginHooks as y, type BitState as z };
234
+ export { type BitTouched as A, type BitState as B, type BitValidationConfig as C, type DeepPartial as D, type ValidatorFn as E, bitBus as F, type DevToolsOptions as G, type BitPersistResolvedConfig as H, type ScopeStatus as S, type ValidateScopeResult as V, type BitTransformFn as a, type BitFieldChangeEvent as b, type BitBeforeSubmitEvent as c, type BitAfterSubmitEvent as d, type BitFieldDefinition as e, type BitErrors as f, type BitBeforeValidateEvent as g, type BitAfterValidateEvent as h, type BitConfig as i, type BitComputedFn as j, type BitPath as k, type BitFieldState as l, type BitPathValue as m, type BitFieldChangeMeta as n, type BitArrayPath as o, type BitArrayItem as p, type BitFieldConditional as q, type BitFieldValidation as r, type BitHistoryConfig as s, type BitPersistConfig as t, type BitPersistMode as u, type BitPersistStorageAdapter as v, type BitPlugin as w, type BitPluginContext as x, type BitPluginErrorEvent as y, type BitPluginHooks as z };
@@ -0,0 +1,2 @@
1
+ import{a as I,b as w}from"./chunk-FEW3ABPD.js";import{d as k,e as E,l as D}from"./chunk-ULC4OPIQ.js";import{createContext as q,useContext as U}from"react";import{jsx as L}from"react/jsx-runtime";var A=q(null),at=({store:t,children:e})=>L(A.Provider,{value:D(t),children:e}),b=()=>{let t=U(A);if(!t)throw new Error("BitForm hooks devem ser usados dentro de um BitFormProvider");return t};import{useCallback as p,useSyncExternalStore as W,useMemo as C,useRef as _,useState as M}from"react";function St(){let t=b(),[e,s]=M(null),[m,o]=M(null),n=_(null),u=p(()=>{let g=t.getState(),y={isValid:g.isValid,isDirty:g.isDirty,isSubmitting:g.isSubmitting};return n.current&&n.current.isValid===y.isValid&&n.current.isDirty===y.isDirty&&n.current.isSubmitting===y.isSubmitting?n.current:(n.current=y,y)},[t]),c=p(g=>t.subscribeSelector(y=>({isValid:y.isValid,isDirty:y.isDirty,isSubmitting:y.isSubmitting}),()=>g()),[t]),i=W(c,u,u),r=C(()=>I(t,{clearSubmissionState:()=>{s(null),o(null)},setSubmissionResult:g=>{o(g)},setSubmissionError:g=>{s(g)}}),[t]),a=p(r.submit,[r]),l=p(r.onSubmit,[r]),d=p(r.reset,[r]),F=p(r.getValues,[r]),v=p(r.getErrors,[r]),S=p(r.getTouched,[r]),f=p(r.getDirtyValues,[r]);return{meta:C(()=>({...i,submitError:e,lastResponse:m}),[i,e,m]),getValues:F,getErrors:v,getTouched:S,getDirtyValues:f,submit:a,onSubmit:l,reset:d,setField:t.setField.bind(t),blurField:t.blurField.bind(t),replaceValues:t.replaceValues.bind(t),hydrate:t.hydrate.bind(t),rebase:t.rebase.bind(t),setError:t.setError.bind(t),setErrors:t.setErrors.bind(t),setServerErrors:t.setServerErrors.bind(t),validate:t.validate.bind(t)}}import{useCallback as j,useSyncExternalStore as $,useState as z,useMemo as H,useEffect as G}from"react";var B=()=>Math.random().toString(36).substring(2,9);function Ft(t){let e=b(),s=j(()=>{let r=e.getState(),a=E(r.values,t);return Array.isArray(a)?a:[]},[e,t]),m=j(r=>e.subscribePath(t,()=>r()),[e,t]),o=$(m,s,s),[n,u]=z(()=>o.map(B));G(()=>{o.length!==n.length&&u(r=>{if(o.length>r.length){let a=o.length-r.length;return[...r,...Array(a).fill(null).map(B)]}return r.slice(0,o.length)})},[o.length]);let c=H(()=>({append:r=>{u(a=>[...a,B()]),e.pushItem(t,r)},prepend:r=>{u(a=>[B(),...a]),e.prependItem(t,r)},insert:(r,a)=>{u(l=>{let d=[...l];return d.splice(r,0,B()),d}),e.insertItem(t,r,a)},remove:r=>{u(a=>a.filter((l,d)=>d!==r)),e.removeItem(t,r)},move:(r,a)=>{u(l=>{let d=[...l],[F]=d.splice(r,1);return d.splice(a,0,F),d}),e.moveItem(t,r,a)},swap:(r,a)=>{u(l=>{let d=[...l];return[d[r],d[a]]=[d[a],d[r]],d}),e.swapItems(t,r,a)},replace:r=>{u(r.map(B)),e.setField(t,r)},clear:()=>{u([]),e.setField(t,[])}}),[e,t]);return{fields:H(()=>o.map((r,a)=>({key:n[a]||`temp-${a}`,value:r,index:a})),[o,n]),length:o.length,...c}}import{useCallback as T,useSyncExternalStore as J,useRef as K}from"react";function Tt(t){let e=b(),s=K(null),m=T(()=>{let c=e.getStepStatus(t);return s.current&&s.current.hasErrors===c.hasErrors&&s.current.isDirty===c.isDirty&&Object.keys(s.current.errors).length===Object.keys(c.errors).length&&Object.entries(c.errors).every(([i,r])=>s.current.errors[i]===r)?s.current:(s.current=c,c)},[e,t]),o=J(e.subscribe.bind(e),m,m),n=T(async()=>{let c=await e.validate({scope:t}),i=e.getStepErrors(t);return{valid:c,errors:i}},[e,t]),u=T(()=>e.getStepErrors(t),[e,t]);return{scopeName:t,status:o,errors:o.errors,validate:n,getErrors:u,isValid:!o.hasErrors,isDirty:o.isDirty}}import{useCallback as P,useSyncExternalStore as Q,useRef as X,useState as Y}from"react";function Dt(t){let e=b(),[s,m]=Y(0),o=t[s]??"",n=X(null),u=P(()=>{let S=e.getStepStatus(o);return n.current&&n.current.hasErrors===S.hasErrors&&n.current.isDirty===S.isDirty&&Object.keys(n.current.errors).length===Object.keys(S.errors).length&&Object.entries(S.errors).every(([f,h])=>n.current.errors[f]===h)?n.current:(n.current=S,S)},[e,o]),c=Q(e.subscribe.bind(e),u,u),i=P(async()=>{let S=await e.validate({scope:o}),f=e.getStepErrors(o);return{valid:S,errors:f}},[e,o]),r=P(()=>e.getStepErrors(o),[e,o]),a=P(async()=>{let S=e.getScopeFields(o);if(e.hasValidationsInProgress(S))return!1;let f=await e.validate({scope:o});if(f)m(h=>Math.min(h+1,t.length-1));else{let h=e.getStepErrors(o),g=Object.keys(h);g.length>0&&e.markFieldsTouched(g)}return f},[e,o,t.length]),l=P(()=>{m(S=>Math.max(S-1,0))},[]),d=P(S=>{m(Math.max(0,Math.min(S-1,t.length-1)))},[t.length]),F=s===0,v=s>=t.length-1;return{step:s+1,stepIndex:s,scope:o,next:a,prev:l,goTo:d,isFirst:F,isLast:v,status:c,errors:c.errors,isValid:!c.hasErrors,isDirty:c.isDirty,validate:i,getErrors:r}}import{useCallback as O,useSyncExternalStore as Z,useRef as N}from"react";function Ht(t){let e=b(),s=N(null),m=O(()=>{let n=E(e.getState().values,t);return s.current!==null&&k(s.current,n)?s.current:(s.current=n,n)},[e,t]),o=O(n=>e.subscribe(n),[e]);return Z(o,m,m)}import{useCallback as R,useMemo as tt,useState as x}from"react";function Lt(){let t=b(),[e,s]=x(!1),[m,o]=x(!1),[n,u]=x(null),c=R(async()=>{o(!0),u(null);try{return await t.restorePersisted()}catch(l){return u(l instanceof Error?l:new Error(String(l))),!1}finally{o(!1)}},[t]),i=R(async()=>{s(!0),u(null);try{await t.forceSave()}catch(l){u(l instanceof Error?l:new Error(String(l)))}finally{s(!1)}},[t]),r=R(async()=>{u(null);try{await t.clearPersisted()}catch(l){u(l instanceof Error?l:new Error(String(l)))}},[t]),a=tt(()=>({isSaving:e,isRestoring:m,error:n}),[e,m,n]);return{restore:c,save:i,clear:r,meta:a}}import{useCallback as V,useSyncExternalStore as et,useRef as rt,useEffect as st}from"react";function Gt(t){let e=b(),s=rt(null);st(()=>()=>{e.unregisterField&&e.unregisterField(t)},[e,t]);let m=V(()=>{let i=e.getFieldState(t);if(s.current&&s.current.value===i.value&&s.current.error===i.error&&s.current.touched===i.touched&&s.current.isHidden===i.isHidden&&s.current.isRequired===i.isRequired&&s.current.isDirty===i.isDirty&&s.current.isValidating===i.isValidating)return s.current;let r={value:i.value,error:i.error,touched:i.touched,isHidden:i.isHidden,isRequired:i.isRequired,isDirty:i.isDirty,isValidating:i.isValidating};return s.current=r,r},[e,t]),o=V(i=>w(e,t,()=>i()),[e,t]),n=et(o,m,m),u=V(i=>e.setField(t,i),[e,t]),c=V(()=>e.blurField(t),[e,t]);return{fieldState:n,setValue:u,setBlur:c,store:e}}export{at as a,b,St as c,Gt as d,Ft as e,Tt as f,Dt as g,Ht as h,Lt as i};
2
+ //# sourceMappingURL=chunk-3MUULXXZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/react/context.tsx","../src/react/use-bit-form.ts","../src/react/use-bit-array.ts","../src/react/use-bit-scope.ts","../src/react/use-bit-steps.ts","../src/react/use-bit-watch.ts","../src/react/use-bit-persist.ts","../src/react/use-bit-field-base.ts"],"sourcesContent":["import React, { createContext, useContext } from \"react\";\nimport type { BitStoreApi, BitStoreHooksApi } from \"../core\";\nimport { resolveBitStoreForHooks } from \"../core\";\n\nconst BitContext = createContext<BitStoreHooksApi<any> | null>(null);\n\nexport const BitFormProvider = ({\n store,\n children,\n}: {\n store: BitStoreApi<any>;\n children: React.ReactNode;\n}) => (\n <BitContext.Provider value={resolveBitStoreForHooks(store)}>\n {children}\n </BitContext.Provider>\n);\n\nexport const useBitStore = <T extends object>() => {\n const store = useContext(BitContext);\n if (!store)\n throw new Error(\n \"BitForm hooks devem ser usados dentro de um BitFormProvider\",\n );\n return store as BitStoreHooksApi<T>;\n};\n","import {\n useCallback,\n useSyncExternalStore,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useBitStore } from \"./context\";\nimport { createFormController } from \"../core/form-controller\";\nimport type { UseBitFormResult } from \"./types\";\n\nexport function useBitForm<T extends object>(): UseBitFormResult<T> {\n const store = useBitStore<T>();\n\n const [submitError, setSubmitError] = useState<Error | null>(null);\n const [lastResponse, setLastResponse] = useState<unknown>(null);\n const lastMeta = useRef<{\n isValid: boolean;\n isDirty: boolean;\n isSubmitting: boolean;\n } | null>(null);\n\n const getMetaSnapshot = useCallback(() => {\n const state = store.getState();\n const nextMeta = {\n isValid: state.isValid,\n isDirty: state.isDirty,\n isSubmitting: state.isSubmitting,\n };\n\n if (\n lastMeta.current &&\n lastMeta.current.isValid === nextMeta.isValid &&\n lastMeta.current.isDirty === nextMeta.isDirty &&\n lastMeta.current.isSubmitting === nextMeta.isSubmitting\n ) {\n return lastMeta.current;\n }\n\n lastMeta.current = nextMeta;\n return nextMeta;\n }, [store]);\n\n const subscribeMeta = useCallback(\n (cb: () => void) =>\n store.subscribeSelector(\n (state) => ({\n isValid: state.isValid,\n isDirty: state.isDirty,\n isSubmitting: state.isSubmitting,\n }),\n () => cb(),\n ),\n [store],\n );\n\n const metaState = useSyncExternalStore(\n subscribeMeta,\n getMetaSnapshot,\n getMetaSnapshot,\n );\n\n const controller = useMemo(\n () =>\n createFormController(store, {\n clearSubmissionState: () => {\n setSubmitError(null);\n setLastResponse(null);\n },\n setSubmissionResult: (result) => {\n setLastResponse(result);\n },\n setSubmissionError: (error) => {\n setSubmitError(error);\n },\n }),\n [store],\n );\n\n const submit = useCallback(controller.submit, [controller]);\n const onSubmit = useCallback(controller.onSubmit, [controller]);\n const reset = useCallback(controller.reset, [controller]);\n\n const getValues = useCallback(controller.getValues, [controller]);\n const getErrors = useCallback(controller.getErrors, [controller]);\n const getTouched = useCallback(controller.getTouched, [controller]);\n const getDirtyValues = useCallback(controller.getDirtyValues, [controller]);\n\n const meta = useMemo(\n () => ({\n ...metaState,\n submitError,\n lastResponse,\n }),\n [metaState, submitError, lastResponse],\n );\n\n return {\n // Metadata (grouped)\n meta,\n // Getters\n getValues,\n getErrors,\n getTouched,\n getDirtyValues,\n // Main actions (frequent use - flat)\n submit,\n onSubmit,\n reset,\n setField: store.setField.bind(store),\n blurField: store.blurField.bind(store),\n replaceValues: store.replaceValues.bind(store),\n hydrate: store.hydrate.bind(store),\n rebase: store.rebase.bind(store),\n setError: store.setError.bind(store),\n setErrors: store.setErrors.bind(store),\n setServerErrors: store.setServerErrors.bind(store),\n validate: store.validate.bind(store),\n };\n}\n","import {\n useCallback,\n useSyncExternalStore,\n useState,\n useMemo,\n useEffect,\n} from \"react\";\nimport { useBitStore } from \"./context\";\nimport {\n getDeepValue,\n BitArrayPath,\n BitPathValue,\n BitArrayItem,\n BitPath,\n} from \"../core\";\n\nconst generateId = () => Math.random().toString(36).substring(2, 9);\n\nexport function useBitArray<\n TForm extends object = any,\n P extends BitArrayPath<TForm> = BitArrayPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n\n type Item = BitArrayItem<BitPathValue<TForm, P>>;\n\n const getSnapshot = useCallback(() => {\n const state = store.getState();\n const value = getDeepValue(state.values, path as string) as\n | BitPathValue<TForm, P>\n | undefined;\n return Array.isArray(value) ? (value as Item[]) : [];\n }, [store, path]);\n\n const subscribeArray = useCallback(\n (cb: () => void) => store.subscribePath(path, () => cb()),\n [store, path],\n );\n\n const data = useSyncExternalStore(subscribeArray, getSnapshot, getSnapshot);\n\n const [ids, setIds] = useState<string[]>(() =>\n (data as Item[]).map(generateId),\n );\n\n useEffect(() => {\n if (data.length !== ids.length) {\n setIds((prevIds) => {\n if (data.length > prevIds.length) {\n const diff = data.length - prevIds.length;\n return [...prevIds, ...Array(diff).fill(null).map(generateId)];\n }\n return prevIds.slice(0, data.length);\n });\n }\n }, [data.length]);\n\n const methods = useMemo(\n () => ({\n append: (value: Item) => {\n setIds((prev) => [...prev, generateId()]);\n store.pushItem(path, value);\n },\n prepend: (value: Item) => {\n setIds((prev) => [generateId(), ...prev]);\n store.prependItem(path, value);\n },\n insert: (index: number, value: Item) => {\n setIds((prev) => {\n const newIds = [...prev];\n newIds.splice(index, 0, generateId());\n return newIds;\n });\n store.insertItem(path, index, value);\n },\n remove: (index: number) => {\n setIds((prev) => prev.filter((_, i) => i !== index));\n store.removeItem(path, index);\n },\n move: (from: number, to: number) => {\n setIds((prev) => {\n const newIds = [...prev];\n const [item] = newIds.splice(from, 1);\n newIds.splice(to, 0, item);\n return newIds;\n });\n store.moveItem(path, from, to);\n },\n swap: (indexA: number, indexB: number) => {\n setIds((prev) => {\n const newIds = [...prev];\n [newIds[indexA], newIds[indexB]] = [newIds[indexB], newIds[indexA]];\n return newIds;\n });\n store.swapItems(path, indexA, indexB);\n },\n replace: (items: Item[]) => {\n setIds(items.map(generateId));\n store.setField(\n path as unknown as BitPath<TForm>,\n items as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n clear: () => {\n setIds([]);\n store.setField(\n path as unknown as BitPath<TForm>,\n [] as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n }),\n [store, path],\n );\n\n const fields = useMemo(\n () =>\n (data as Item[]).map((item: Item, index: number) => ({\n key: ids[index] || `temp-${index}`,\n value: item,\n index,\n })),\n [data, ids],\n );\n\n return {\n fields,\n length: data.length,\n ...methods,\n };\n}\n","import { useCallback, useSyncExternalStore, useRef } from \"react\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { useBitStore } from \"./context\";\n\nexport type { ScopeStatus, ValidateScopeResult };\n\nexport function useBitScope(scopeName: string) {\n const store = useBitStore();\n\n const lastStatus = useRef<ScopeStatus | null>(null);\n\n const getStatusSnapshot = useCallback(() => {\n const nextStatus = store.getStepStatus(scopeName);\n\n if (\n lastStatus.current &&\n lastStatus.current.hasErrors === nextStatus.hasErrors &&\n lastStatus.current.isDirty === nextStatus.isDirty &&\n Object.keys(lastStatus.current.errors).length ===\n Object.keys(nextStatus.errors).length &&\n Object.entries(nextStatus.errors).every(\n ([k, v]) => lastStatus.current!.errors[k] === v,\n )\n ) {\n return lastStatus.current;\n }\n\n lastStatus.current = nextStatus;\n return nextStatus;\n }, [store, scopeName]);\n\n const status = useSyncExternalStore(\n store.subscribe.bind(store),\n getStatusSnapshot,\n getStatusSnapshot,\n );\n\n const validate = useCallback(async (): Promise<ValidateScopeResult> => {\n const valid = await store.validate({ scope: scopeName });\n const errors = store.getStepErrors(scopeName);\n return { valid, errors };\n }, [store, scopeName]);\n\n const getErrors = useCallback(() => {\n return store.getStepErrors(scopeName);\n }, [store, scopeName]);\n\n return {\n scopeName,\n status,\n errors: status.errors,\n validate,\n getErrors,\n isValid: !status.hasErrors,\n isDirty: status.isDirty,\n };\n}\n","import { useCallback, useSyncExternalStore, useRef, useState } from \"react\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitStepsResult } from \"./types\";\n\nexport function useBitSteps(scopeNames: string[]): UseBitStepsResult {\n const store = useBitStore();\n const [stepIndex, setStepIndex] = useState(0);\n\n const scope = scopeNames[stepIndex] ?? \"\";\n const lastStatus = useRef<ScopeStatus | null>(null);\n\n const getStatusSnapshot = useCallback(() => {\n const nextStatus = store.getStepStatus(scope);\n\n if (\n lastStatus.current &&\n lastStatus.current.hasErrors === nextStatus.hasErrors &&\n lastStatus.current.isDirty === nextStatus.isDirty &&\n Object.keys(lastStatus.current.errors).length ===\n Object.keys(nextStatus.errors).length &&\n Object.entries(nextStatus.errors).every(\n ([k, v]) => lastStatus.current!.errors[k] === v,\n )\n ) {\n return lastStatus.current;\n }\n\n lastStatus.current = nextStatus;\n return nextStatus;\n }, [store, scope]);\n\n const status = useSyncExternalStore(\n store.subscribe.bind(store),\n getStatusSnapshot,\n getStatusSnapshot,\n );\n\n const validate = useCallback(async (): Promise<ValidateScopeResult> => {\n const valid = await store.validate({ scope });\n const errors = store.getStepErrors(scope);\n return { valid, errors };\n }, [store, scope]);\n\n const getErrors = useCallback(() => {\n return store.getStepErrors(scope);\n }, [store, scope]);\n\n const next = useCallback(async (): Promise<boolean> => {\n const scopeFields = store.getScopeFields(scope);\n\n if (store.hasValidationsInProgress(scopeFields)) {\n return false;\n }\n\n const valid = await store.validate({ scope });\n if (valid) {\n setStepIndex((s) => Math.min(s + 1, scopeNames.length - 1));\n } else {\n const errors = store.getStepErrors(scope);\n const pathsWithErrors = Object.keys(errors);\n if (pathsWithErrors.length > 0) {\n store.markFieldsTouched(pathsWithErrors);\n }\n }\n return valid;\n }, [store, scope, scopeNames.length]);\n\n const prev = useCallback(() => {\n setStepIndex((s) => Math.max(s - 1, 0));\n }, []);\n\n const goTo = useCallback(\n (targetStep: number) => {\n setStepIndex(\n Math.max(0, Math.min(targetStep - 1, scopeNames.length - 1)),\n );\n },\n [scopeNames.length],\n );\n\n const isFirst = stepIndex === 0;\n const isLast = stepIndex >= scopeNames.length - 1;\n\n return {\n step: stepIndex + 1,\n stepIndex,\n scope,\n next,\n prev,\n goTo,\n isFirst,\n isLast,\n status,\n errors: status.errors,\n isValid: !status.hasErrors,\n isDirty: status.isDirty,\n validate,\n getErrors,\n };\n}\n","import { useCallback, useSyncExternalStore, useRef } from \"react\";\nimport { useBitStore } from \"./context\";\nimport { getDeepValue, deepEqual, BitPath, BitPathValue } from \"../core\";\n\nexport function useBitWatch<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): BitPathValue<TForm, P> {\n const store = useBitStore<TForm>();\n const lastValue = useRef<BitPathValue<TForm, P> | null>(null);\n\n const getSnapshot = useCallback(() => {\n const value = getDeepValue(\n store.getState().values,\n path as string,\n ) as BitPathValue<TForm, P>;\n\n if (\n lastValue.current !== null &&\n deepEqual(lastValue.current, value)\n ) {\n return lastValue.current;\n }\n\n lastValue.current = value;\n return value;\n }, [store, path]);\n\n const subscribe = useCallback(\n (cb: () => void) => store.subscribe(cb),\n [store],\n );\n\n return useSyncExternalStore(\n subscribe,\n getSnapshot,\n getSnapshot,\n ) as BitPathValue<TForm, P>;\n}\n","import { useCallback, useMemo, useState } from \"react\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitPersistResult } from \"./types\";\n\nexport function useBitPersist(): UseBitPersistResult {\n const store = useBitStore<any>();\n const [isSaving, setIsSaving] = useState(false);\n const [isRestoring, setIsRestoring] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const restore = useCallback(async () => {\n setIsRestoring(true);\n setError(null);\n\n try {\n return await store.restorePersisted();\n } catch (err) {\n setError(err instanceof Error ? err : new Error(String(err)));\n return false;\n } finally {\n setIsRestoring(false);\n }\n }, [store]);\n\n const save = useCallback(async () => {\n setIsSaving(true);\n setError(null);\n\n try {\n await store.forceSave();\n } catch (err) {\n setError(err instanceof Error ? err : new Error(String(err)));\n } finally {\n setIsSaving(false);\n }\n }, [store]);\n\n const clear = useCallback(async () => {\n setError(null);\n\n try {\n await store.clearPersisted();\n } catch (err) {\n setError(err instanceof Error ? err : new Error(String(err)));\n }\n }, [store]);\n\n const meta = useMemo(\n () => ({\n isSaving,\n isRestoring,\n error,\n }),\n [isSaving, isRestoring, error],\n );\n\n return {\n restore,\n save,\n clear,\n meta,\n };\n}\n","import { useCallback, useSyncExternalStore, useRef, useEffect } from \"react\";\nimport { useBitStore } from \"./context\";\nimport { BitPath, BitPathValue } from \"../core\";\nimport { subscribeFieldState } from \"../core/field-controller\";\n\nexport function useBitFieldBase<\n TValue = any,\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n const lastState = useRef<{\n value: BitPathValue<TForm, P>;\n error: any;\n touched: boolean;\n isHidden: boolean;\n isRequired: boolean;\n isDirty: boolean;\n isValidating: boolean;\n } | null>(null);\n\n useEffect(() => {\n return () => {\n if (store.unregisterField) {\n store.unregisterField(path);\n }\n };\n }, [store, path]);\n\n const getSnapshot = useCallback(() => {\n const nextState = store.getFieldState(path);\n\n if (\n lastState.current &&\n lastState.current.value === nextState.value &&\n lastState.current.error === nextState.error &&\n lastState.current.touched === nextState.touched &&\n lastState.current.isHidden === nextState.isHidden &&\n lastState.current.isRequired === nextState.isRequired &&\n lastState.current.isDirty === nextState.isDirty &&\n lastState.current.isValidating === nextState.isValidating\n ) {\n return lastState.current;\n }\n\n const newState = {\n value: nextState.value,\n error: nextState.error,\n touched: nextState.touched,\n isHidden: nextState.isHidden,\n isRequired: nextState.isRequired,\n isDirty: nextState.isDirty,\n isValidating: nextState.isValidating,\n };\n lastState.current = newState;\n return newState;\n }, [store, path]);\n\n const subscribe = useCallback(\n (cb: () => void) => subscribeFieldState(store, path, () => cb()),\n [store, path],\n );\n\n const fieldState = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n const setValue = useCallback(\n (val: BitPathValue<TForm, P>) => store.setField(path, val),\n [store, path],\n );\n\n const setBlur = useCallback(() => store.blurField(path), [store, path]);\n\n return { fieldState, setValue, setBlur, store };\n}\n"],"mappings":"qGAAA,OAAgB,iBAAAA,EAAe,cAAAC,MAAkB,QAa/C,cAAAC,MAAA,oBATF,IAAMC,EAAaC,EAA4C,IAAI,EAEtDC,GAAkB,CAAC,CAC9B,MAAAC,EACA,SAAAC,CACF,IAIEL,EAACC,EAAW,SAAX,CAAoB,MAAOK,EAAwBF,CAAK,EACtD,SAAAC,EACH,EAGWE,EAAc,IAAwB,CACjD,IAAMH,EAAQI,EAAWP,CAAU,EACnC,GAAI,CAACG,EACH,MAAM,IAAI,MACR,6DACF,EACF,OAAOA,CACT,ECzBA,OACE,eAAAK,EACA,wBAAAC,EACA,WAAAC,EACA,UAAAC,EACA,YAAAC,MACK,QAKA,SAASC,IAAoD,CAClE,IAAMC,EAAQC,EAAe,EAEvB,CAACC,EAAaC,CAAc,EAAIC,EAAuB,IAAI,EAC3D,CAACC,EAAcC,CAAe,EAAIF,EAAkB,IAAI,EACxDG,EAAWC,EAIP,IAAI,EAERC,EAAkBC,EAAY,IAAM,CACxC,IAAMC,EAAQX,EAAM,SAAS,EACvBY,EAAW,CACf,QAASD,EAAM,QACf,QAASA,EAAM,QACf,aAAcA,EAAM,YACtB,EAEA,OACEJ,EAAS,SACTA,EAAS,QAAQ,UAAYK,EAAS,SACtCL,EAAS,QAAQ,UAAYK,EAAS,SACtCL,EAAS,QAAQ,eAAiBK,EAAS,aAEpCL,EAAS,SAGlBA,EAAS,QAAUK,EACZA,EACT,EAAG,CAACZ,CAAK,CAAC,EAEJa,EAAgBH,EACnBI,GACCd,EAAM,kBACHW,IAAW,CACV,QAASA,EAAM,QACf,QAASA,EAAM,QACf,aAAcA,EAAM,YACtB,GACA,IAAMG,EAAG,CACX,EACF,CAACd,CAAK,CACR,EAEMe,EAAYC,EAChBH,EACAJ,EACAA,CACF,EAEMQ,EAAaC,EACjB,IACEC,EAAqBnB,EAAO,CAC1B,qBAAsB,IAAM,CAC1BG,EAAe,IAAI,EACnBG,EAAgB,IAAI,CACtB,EACA,oBAAsBc,GAAW,CAC/Bd,EAAgBc,CAAM,CACxB,EACA,mBAAqBC,GAAU,CAC7BlB,EAAekB,CAAK,CACtB,CACF,CAAC,EACH,CAACrB,CAAK,CACR,EAEMsB,EAASZ,EAAYO,EAAW,OAAQ,CAACA,CAAU,CAAC,EACpDM,EAAWb,EAAYO,EAAW,SAAU,CAACA,CAAU,CAAC,EACxDO,EAAQd,EAAYO,EAAW,MAAO,CAACA,CAAU,CAAC,EAElDQ,EAAYf,EAAYO,EAAW,UAAW,CAACA,CAAU,CAAC,EAC1DS,EAAYhB,EAAYO,EAAW,UAAW,CAACA,CAAU,CAAC,EAC1DU,EAAajB,EAAYO,EAAW,WAAY,CAACA,CAAU,CAAC,EAC5DW,EAAiBlB,EAAYO,EAAW,eAAgB,CAACA,CAAU,CAAC,EAW1E,MAAO,CAEL,KAXWC,EACX,KAAO,CACL,GAAGH,EACH,YAAAb,EACA,aAAAG,CACF,GACA,CAACU,EAAWb,EAAaG,CAAY,CACvC,EAME,UAAAoB,EACA,UAAAC,EACA,WAAAC,EACA,eAAAC,EAEA,OAAAN,EACA,SAAAC,EACA,MAAAC,EACA,SAAUxB,EAAM,SAAS,KAAKA,CAAK,EACnC,UAAWA,EAAM,UAAU,KAAKA,CAAK,EACrC,cAAeA,EAAM,cAAc,KAAKA,CAAK,EAC7C,QAASA,EAAM,QAAQ,KAAKA,CAAK,EACjC,OAAQA,EAAM,OAAO,KAAKA,CAAK,EAC/B,SAAUA,EAAM,SAAS,KAAKA,CAAK,EACnC,UAAWA,EAAM,UAAU,KAAKA,CAAK,EACrC,gBAAiBA,EAAM,gBAAgB,KAAKA,CAAK,EACjD,SAAUA,EAAM,SAAS,KAAKA,CAAK,CACrC,CACF,CCvHA,OACE,eAAA6B,EACA,wBAAAC,EACA,YAAAC,EACA,WAAAC,EACA,aAAAC,MACK,QAUP,IAAMC,EAAa,IAAM,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,EAAG,CAAC,EAE3D,SAASC,GAGdC,EAAS,CACT,IAAMC,EAAQC,EAAmB,EAI3BC,EAAcC,EAAY,IAAM,CACpC,IAAMC,EAAQJ,EAAM,SAAS,EACvBK,EAAQC,EAAaF,EAAM,OAAQL,CAAc,EAGvD,OAAO,MAAM,QAAQM,CAAK,EAAKA,EAAmB,CAAC,CACrD,EAAG,CAACL,EAAOD,CAAI,CAAC,EAEVQ,EAAiBJ,EACpBK,GAAmBR,EAAM,cAAcD,EAAM,IAAMS,EAAG,CAAC,EACxD,CAACR,EAAOD,CAAI,CACd,EAEMU,EAAOC,EAAqBH,EAAgBL,EAAaA,CAAW,EAEpE,CAACS,EAAKC,CAAM,EAAIC,EAAmB,IACtCJ,EAAgB,IAAIZ,CAAU,CACjC,EAEAiB,EAAU,IAAM,CACVL,EAAK,SAAWE,EAAI,QACtBC,EAAQG,GAAY,CAClB,GAAIN,EAAK,OAASM,EAAQ,OAAQ,CAChC,IAAMC,EAAOP,EAAK,OAASM,EAAQ,OACnC,MAAO,CAAC,GAAGA,EAAS,GAAG,MAAMC,CAAI,EAAE,KAAK,IAAI,EAAE,IAAInB,CAAU,CAAC,CAC/D,CACA,OAAOkB,EAAQ,MAAM,EAAGN,EAAK,MAAM,CACrC,CAAC,CAEL,EAAG,CAACA,EAAK,MAAM,CAAC,EAEhB,IAAMQ,EAAUC,EACd,KAAO,CACL,OAASb,GAAgB,CACvBO,EAAQO,GAAS,CAAC,GAAGA,EAAMtB,EAAW,CAAC,CAAC,EACxCG,EAAM,SAASD,EAAMM,CAAK,CAC5B,EACA,QAAUA,GAAgB,CACxBO,EAAQO,GAAS,CAACtB,EAAW,EAAG,GAAGsB,CAAI,CAAC,EACxCnB,EAAM,YAAYD,EAAMM,CAAK,CAC/B,EACA,OAAQ,CAACe,EAAef,IAAgB,CACtCO,EAAQO,GAAS,CACf,IAAME,EAAS,CAAC,GAAGF,CAAI,EACvB,OAAAE,EAAO,OAAOD,EAAO,EAAGvB,EAAW,CAAC,EAC7BwB,CACT,CAAC,EACDrB,EAAM,WAAWD,EAAMqB,EAAOf,CAAK,CACrC,EACA,OAASe,GAAkB,CACzBR,EAAQO,GAASA,EAAK,OAAO,CAACG,EAAGC,IAAMA,IAAMH,CAAK,CAAC,EACnDpB,EAAM,WAAWD,EAAMqB,CAAK,CAC9B,EACA,KAAM,CAACI,EAAcC,IAAe,CAClCb,EAAQO,GAAS,CACf,IAAME,EAAS,CAAC,GAAGF,CAAI,EACjB,CAACO,CAAI,EAAIL,EAAO,OAAOG,EAAM,CAAC,EACpC,OAAAH,EAAO,OAAOI,EAAI,EAAGC,CAAI,EAClBL,CACT,CAAC,EACDrB,EAAM,SAASD,EAAMyB,EAAMC,CAAE,CAC/B,EACA,KAAM,CAACE,EAAgBC,IAAmB,CACxChB,EAAQO,GAAS,CACf,IAAME,EAAS,CAAC,GAAGF,CAAI,EACvB,OAACE,EAAOM,CAAM,EAAGN,EAAOO,CAAM,CAAC,EAAI,CAACP,EAAOO,CAAM,EAAGP,EAAOM,CAAM,CAAC,EAC3DN,CACT,CAAC,EACDrB,EAAM,UAAUD,EAAM4B,EAAQC,CAAM,CACtC,EACA,QAAUC,GAAkB,CAC1BjB,EAAOiB,EAAM,IAAIhC,CAAU,CAAC,EAC5BG,EAAM,SACJD,EACA8B,CACF,CACF,EACA,MAAO,IAAM,CACXjB,EAAO,CAAC,CAAC,EACTZ,EAAM,SACJD,EACA,CAAC,CACH,CACF,CACF,GACA,CAACC,EAAOD,CAAI,CACd,EAYA,MAAO,CACL,OAXamB,EACb,IACGT,EAAgB,IAAI,CAACiB,EAAYN,KAAmB,CACnD,IAAKT,EAAIS,CAAK,GAAK,QAAQA,CAAK,GAChC,MAAOM,EACP,MAAAN,CACF,EAAE,EACJ,CAACX,EAAME,CAAG,CACZ,EAIE,OAAQF,EAAK,OACb,GAAGQ,CACL,CACF,CCjIA,OAAS,eAAAa,EAAa,wBAAAC,EAAsB,UAAAC,MAAc,QAMnD,SAASC,GAAYC,EAAmB,CAC7C,IAAMC,EAAQC,EAAY,EAEpBC,EAAaC,EAA2B,IAAI,EAE5CC,EAAoBC,EAAY,IAAM,CAC1C,IAAMC,EAAaN,EAAM,cAAcD,CAAS,EAEhD,OACEG,EAAW,SACXA,EAAW,QAAQ,YAAcI,EAAW,WAC5CJ,EAAW,QAAQ,UAAYI,EAAW,SAC1C,OAAO,KAAKJ,EAAW,QAAQ,MAAM,EAAE,SACrC,OAAO,KAAKI,EAAW,MAAM,EAAE,QACjC,OAAO,QAAQA,EAAW,MAAM,EAAE,MAChC,CAAC,CAACC,EAAGC,CAAC,IAAMN,EAAW,QAAS,OAAOK,CAAC,IAAMC,CAChD,EAEON,EAAW,SAGpBA,EAAW,QAAUI,EACdA,EACT,EAAG,CAACN,EAAOD,CAAS,CAAC,EAEfU,EAASC,EACbV,EAAM,UAAU,KAAKA,CAAK,EAC1BI,EACAA,CACF,EAEMO,EAAWN,EAAY,SAA0C,CACrE,IAAMO,EAAQ,MAAMZ,EAAM,SAAS,CAAE,MAAOD,CAAU,CAAC,EACjDc,EAASb,EAAM,cAAcD,CAAS,EAC5C,MAAO,CAAE,MAAAa,EAAO,OAAAC,CAAO,CACzB,EAAG,CAACb,EAAOD,CAAS,CAAC,EAEfe,EAAYT,EAAY,IACrBL,EAAM,cAAcD,CAAS,EACnC,CAACC,EAAOD,CAAS,CAAC,EAErB,MAAO,CACL,UAAAA,EACA,OAAAU,EACA,OAAQA,EAAO,OACf,SAAAE,EACA,UAAAG,EACA,QAAS,CAACL,EAAO,UACjB,QAASA,EAAO,OAClB,CACF,CCxDA,OAAS,eAAAM,EAAa,wBAAAC,EAAsB,UAAAC,EAAQ,YAAAC,MAAgB,QAK7D,SAASC,GAAYC,EAAyC,CACnE,IAAMC,EAAQC,EAAY,EACpB,CAACC,EAAWC,CAAY,EAAIC,EAAS,CAAC,EAEtCC,EAAQN,EAAWG,CAAS,GAAK,GACjCI,EAAaC,EAA2B,IAAI,EAE5CC,EAAoBC,EAAY,IAAM,CAC1C,IAAMC,EAAaV,EAAM,cAAcK,CAAK,EAE5C,OACEC,EAAW,SACXA,EAAW,QAAQ,YAAcI,EAAW,WAC5CJ,EAAW,QAAQ,UAAYI,EAAW,SAC1C,OAAO,KAAKJ,EAAW,QAAQ,MAAM,EAAE,SACrC,OAAO,KAAKI,EAAW,MAAM,EAAE,QACjC,OAAO,QAAQA,EAAW,MAAM,EAAE,MAChC,CAAC,CAACC,EAAGC,CAAC,IAAMN,EAAW,QAAS,OAAOK,CAAC,IAAMC,CAChD,EAEON,EAAW,SAGpBA,EAAW,QAAUI,EACdA,EACT,EAAG,CAACV,EAAOK,CAAK,CAAC,EAEXQ,EAASC,EACbd,EAAM,UAAU,KAAKA,CAAK,EAC1BQ,EACAA,CACF,EAEMO,EAAWN,EAAY,SAA0C,CACrE,IAAMO,EAAQ,MAAMhB,EAAM,SAAS,CAAE,MAAAK,CAAM,CAAC,EACtCY,EAASjB,EAAM,cAAcK,CAAK,EACxC,MAAO,CAAE,MAAAW,EAAO,OAAAC,CAAO,CACzB,EAAG,CAACjB,EAAOK,CAAK,CAAC,EAEXa,EAAYT,EAAY,IACrBT,EAAM,cAAcK,CAAK,EAC/B,CAACL,EAAOK,CAAK,CAAC,EAEXc,EAAOV,EAAY,SAA8B,CACrD,IAAMW,EAAcpB,EAAM,eAAeK,CAAK,EAE9C,GAAIL,EAAM,yBAAyBoB,CAAW,EAC5C,MAAO,GAGT,IAAMJ,EAAQ,MAAMhB,EAAM,SAAS,CAAE,MAAAK,CAAM,CAAC,EAC5C,GAAIW,EACFb,EAAckB,GAAM,KAAK,IAAIA,EAAI,EAAGtB,EAAW,OAAS,CAAC,CAAC,MACrD,CACL,IAAMkB,EAASjB,EAAM,cAAcK,CAAK,EAClCiB,EAAkB,OAAO,KAAKL,CAAM,EACtCK,EAAgB,OAAS,GAC3BtB,EAAM,kBAAkBsB,CAAe,CAE3C,CACA,OAAON,CACT,EAAG,CAAChB,EAAOK,EAAON,EAAW,MAAM,CAAC,EAE9BwB,EAAOd,EAAY,IAAM,CAC7BN,EAAckB,GAAM,KAAK,IAAIA,EAAI,EAAG,CAAC,CAAC,CACxC,EAAG,CAAC,CAAC,EAECG,EAAOf,EACVgB,GAAuB,CACtBtB,EACE,KAAK,IAAI,EAAG,KAAK,IAAIsB,EAAa,EAAG1B,EAAW,OAAS,CAAC,CAAC,CAC7D,CACF,EACA,CAACA,EAAW,MAAM,CACpB,EAEM2B,EAAUxB,IAAc,EACxByB,EAASzB,GAAaH,EAAW,OAAS,EAEhD,MAAO,CACL,KAAMG,EAAY,EAClB,UAAAA,EACA,MAAAG,EACA,KAAAc,EACA,KAAAI,EACA,KAAAC,EACA,QAAAE,EACA,OAAAC,EACA,OAAAd,EACA,OAAQA,EAAO,OACf,QAAS,CAACA,EAAO,UACjB,QAASA,EAAO,QAChB,SAAAE,EACA,UAAAG,CACF,CACF,CCpGA,OAAS,eAAAU,EAAa,wBAAAC,EAAsB,UAAAC,MAAc,QAInD,SAASC,GAGdC,EAAiC,CACjC,IAAMC,EAAQC,EAAmB,EAC3BC,EAAYC,EAAsC,IAAI,EAEtDC,EAAcC,EAAY,IAAM,CACpC,IAAMC,EAAQC,EACZP,EAAM,SAAS,EAAE,OACjBD,CACF,EAEA,OACEG,EAAU,UAAY,MACtBM,EAAUN,EAAU,QAASI,CAAK,EAE3BJ,EAAU,SAGnBA,EAAU,QAAUI,EACbA,EACT,EAAG,CAACN,EAAOD,CAAI,CAAC,EAEVU,EAAYJ,EACfK,GAAmBV,EAAM,UAAUU,CAAE,EACtC,CAACV,CAAK,CACR,EAEA,OAAOW,EACLF,EACAL,EACAA,CACF,CACF,CCtCA,OAAS,eAAAQ,EAAa,WAAAC,GAAS,YAAAC,MAAgB,QAIxC,SAASC,IAAqC,CACnD,IAAMC,EAAQC,EAAiB,EACzB,CAACC,EAAUC,CAAW,EAAIC,EAAS,EAAK,EACxC,CAACC,EAAaC,CAAc,EAAIF,EAAS,EAAK,EAC9C,CAACG,EAAOC,CAAQ,EAAIJ,EAAuB,IAAI,EAE/CK,EAAUC,EAAY,SAAY,CACtCJ,EAAe,EAAI,EACnBE,EAAS,IAAI,EAEb,GAAI,CACF,OAAO,MAAMR,EAAM,iBAAiB,CACtC,OAASW,EAAK,CACZ,OAAAH,EAASG,aAAe,MAAQA,EAAM,IAAI,MAAM,OAAOA,CAAG,CAAC,CAAC,EACrD,EACT,QAAE,CACAL,EAAe,EAAK,CACtB,CACF,EAAG,CAACN,CAAK,CAAC,EAEJY,EAAOF,EAAY,SAAY,CACnCP,EAAY,EAAI,EAChBK,EAAS,IAAI,EAEb,GAAI,CACF,MAAMR,EAAM,UAAU,CACxB,OAASW,EAAK,CACZH,EAASG,aAAe,MAAQA,EAAM,IAAI,MAAM,OAAOA,CAAG,CAAC,CAAC,CAC9D,QAAE,CACAR,EAAY,EAAK,CACnB,CACF,EAAG,CAACH,CAAK,CAAC,EAEJa,EAAQH,EAAY,SAAY,CACpCF,EAAS,IAAI,EAEb,GAAI,CACF,MAAMR,EAAM,eAAe,CAC7B,OAASW,EAAK,CACZH,EAASG,aAAe,MAAQA,EAAM,IAAI,MAAM,OAAOA,CAAG,CAAC,CAAC,CAC9D,CACF,EAAG,CAACX,CAAK,CAAC,EAEJc,EAAOC,GACX,KAAO,CACL,SAAAb,EACA,YAAAG,EACA,MAAAE,CACF,GACA,CAACL,EAAUG,EAAaE,CAAK,CAC/B,EAEA,MAAO,CACL,QAAAE,EACA,KAAAG,EACA,MAAAC,EACA,KAAAC,CACF,CACF,CC9DA,OAAS,eAAAE,EAAa,wBAAAC,GAAsB,UAAAC,GAAQ,aAAAC,OAAiB,QAK9D,SAASC,GAIdC,EAAS,CACT,IAAMC,EAAQC,EAAmB,EAC3BC,EAAYC,GAQR,IAAI,EAEdC,GAAU,IACD,IAAM,CACPJ,EAAM,iBACRA,EAAM,gBAAgBD,CAAI,CAE9B,EACC,CAACC,EAAOD,CAAI,CAAC,EAEhB,IAAMM,EAAcC,EAAY,IAAM,CACpC,IAAMC,EAAYP,EAAM,cAAcD,CAAI,EAE1C,GACEG,EAAU,SACVA,EAAU,QAAQ,QAAUK,EAAU,OACtCL,EAAU,QAAQ,QAAUK,EAAU,OACtCL,EAAU,QAAQ,UAAYK,EAAU,SACxCL,EAAU,QAAQ,WAAaK,EAAU,UACzCL,EAAU,QAAQ,aAAeK,EAAU,YAC3CL,EAAU,QAAQ,UAAYK,EAAU,SACxCL,EAAU,QAAQ,eAAiBK,EAAU,aAE7C,OAAOL,EAAU,QAGnB,IAAMM,EAAW,CACf,MAAOD,EAAU,MACjB,MAAOA,EAAU,MACjB,QAASA,EAAU,QACnB,SAAUA,EAAU,SACpB,WAAYA,EAAU,WACtB,QAASA,EAAU,QACnB,aAAcA,EAAU,YAC1B,EACA,OAAAL,EAAU,QAAUM,EACbA,CACT,EAAG,CAACR,EAAOD,CAAI,CAAC,EAEVU,EAAYH,EACfI,GAAmBC,EAAoBX,EAAOD,EAAM,IAAMW,EAAG,CAAC,EAC/D,CAACV,EAAOD,CAAI,CACd,EAEMa,EAAaC,GAAqBJ,EAAWJ,EAAaA,CAAW,EAErES,EAAWR,EACdS,GAAgCf,EAAM,SAASD,EAAMgB,CAAG,EACzD,CAACf,EAAOD,CAAI,CACd,EAEMiB,EAAUV,EAAY,IAAMN,EAAM,UAAUD,CAAI,EAAG,CAACC,EAAOD,CAAI,CAAC,EAEtE,MAAO,CAAE,WAAAa,EAAY,SAAAE,EAAU,QAAAE,EAAS,MAAAhB,CAAM,CAChD","names":["createContext","useContext","jsx","BitContext","createContext","BitFormProvider","store","children","resolveBitStoreForHooks","useBitStore","useContext","useCallback","useSyncExternalStore","useMemo","useRef","useState","useBitForm","store","useBitStore","submitError","setSubmitError","useState","lastResponse","setLastResponse","lastMeta","useRef","getMetaSnapshot","useCallback","state","nextMeta","subscribeMeta","cb","metaState","useSyncExternalStore","controller","useMemo","createFormController","result","error","submit","onSubmit","reset","getValues","getErrors","getTouched","getDirtyValues","useCallback","useSyncExternalStore","useState","useMemo","useEffect","generateId","useBitArray","path","store","useBitStore","getSnapshot","useCallback","state","value","getDeepValue","subscribeArray","cb","data","useSyncExternalStore","ids","setIds","useState","useEffect","prevIds","diff","methods","useMemo","prev","index","newIds","_","i","from","to","item","indexA","indexB","items","useCallback","useSyncExternalStore","useRef","useBitScope","scopeName","store","useBitStore","lastStatus","useRef","getStatusSnapshot","useCallback","nextStatus","k","v","status","useSyncExternalStore","validate","valid","errors","getErrors","useCallback","useSyncExternalStore","useRef","useState","useBitSteps","scopeNames","store","useBitStore","stepIndex","setStepIndex","useState","scope","lastStatus","useRef","getStatusSnapshot","useCallback","nextStatus","k","v","status","useSyncExternalStore","validate","valid","errors","getErrors","next","scopeFields","s","pathsWithErrors","prev","goTo","targetStep","isFirst","isLast","useCallback","useSyncExternalStore","useRef","useBitWatch","path","store","useBitStore","lastValue","useRef","getSnapshot","useCallback","value","getDeepValue","deepEqual","subscribe","cb","useSyncExternalStore","useCallback","useMemo","useState","useBitPersist","store","useBitStore","isSaving","setIsSaving","useState","isRestoring","setIsRestoring","error","setError","restore","useCallback","err","save","clear","meta","useMemo","useCallback","useSyncExternalStore","useRef","useEffect","useBitFieldBase","path","store","useBitStore","lastState","useRef","useEffect","getSnapshot","useCallback","nextState","newState","subscribe","cb","subscribeFieldState","fieldState","useSyncExternalStore","setValue","val","setBlur"]}
@@ -0,0 +1,2 @@
1
+ function s(r){return r.replace(/\[(\d+)\]/g,".$1")}function f(r,t,e){!t||!e||r[t]||(r[t]=e)}function E(r,t){if(!t||t.length===0)return r;let e=new Set(t),o={};for(let[n,i]of Object.entries(r))e.has(n)&&i&&(o[n]=i);return o}export{s as a,f as b,E as c};
2
+ //# sourceMappingURL=chunk-7MBRAKBL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resolvers/utils.ts"],"sourcesContent":["import { BitErrors } from \"../core\";\n\nexport function normalizeErrorPath(path: string): string {\n return path.replace(/\\[(\\d+)\\]/g, \".$1\");\n}\n\nexport function setFirstError<T extends object>(\n errors: BitErrors<T>,\n path: string,\n message: string | undefined,\n) {\n if (!path || !message) {\n return;\n }\n\n if (!errors[path as keyof BitErrors<T>]) {\n errors[path as keyof BitErrors<T>] = message;\n }\n}\n\nexport function filterErrorsByScope<T extends object>(\n errors: BitErrors<T>,\n scopeFields?: string[],\n): BitErrors<T> {\n if (!scopeFields || scopeFields.length === 0) {\n return errors;\n }\n\n const scopeSet = new Set(scopeFields);\n const filtered: BitErrors<T> = {};\n\n for (const [key, message] of Object.entries(errors)) {\n if (scopeSet.has(key) && message) {\n filtered[key as keyof BitErrors<T>] = message;\n }\n }\n\n return filtered;\n}\n"],"mappings":"AAEO,SAASA,EAAmBC,EAAsB,CACvD,OAAOA,EAAK,QAAQ,aAAc,KAAK,CACzC,CAEO,SAASC,EACdC,EACAF,EACAG,EACA,CACI,CAACH,GAAQ,CAACG,GAITD,EAAOF,CAA0B,IACpCE,EAAOF,CAA0B,EAAIG,EAEzC,CAEO,SAASC,EACdF,EACAG,EACc,CACd,GAAI,CAACA,GAAeA,EAAY,SAAW,EACzC,OAAOH,EAGT,IAAMI,EAAW,IAAI,IAAID,CAAW,EAC9BE,EAAyB,CAAC,EAEhC,OAAW,CAACC,EAAKL,CAAO,IAAK,OAAO,QAAQD,CAAM,EAC5CI,EAAS,IAAIE,CAAG,GAAKL,IACvBI,EAASC,CAAyB,EAAIL,GAI1C,OAAOI,CACT","names":["normalizeErrorPath","path","setFirstError","errors","message","filterErrorsByScope","scopeFields","scopeSet","filtered","key"]}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});function s(r){return r.replace(/\[(\d+)\]/g,".$1")}function f(r,t,e){!t||!e||r[t]||(r[t]=e)}function E(r,t){if(!t||t.length===0)return r;let e=new Set(t),o={};for(let[n,i]of Object.entries(r))e.has(n)&&i&&(o[n]=i);return o}exports.a = s; exports.b = f; exports.c = E;
2
+ //# sourceMappingURL=chunk-ER2DNS7T.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resolvers/utils.ts"],"names":["normalizeErrorPath","path","setFirstError","errors","message","filterErrorsByScope","scopeFields","scopeSet","filtered","key"],"mappings":"AAEO,kFAASA,CAAAA,CAAmBC,CAAAA,CAAsB,CACvD,OAAOA,CAAAA,CAAK,OAAA,CAAQ,YAAA,CAAc,KAAK,CACzC,CAEO,SAASC,CAAAA,CACdC,CAAAA,CACAF,CAAAA,CACAG,CAAAA,CACA,CACI,CAACH,CAAAA,EAAQ,CAACG,CAAAA,EAITD,CAAAA,CAAOF,CAA0B,CAAA,EAAA,CACpCE,CAAAA,CAAOF,CAA0B,CAAA,CAAIG,CAAAA,CAEzC,CAEO,SAASC,CAAAA,CACdF,CAAAA,CACAG,CAAAA,CACc,CACd,EAAA,CAAI,CAACA,CAAAA,EAAeA,CAAAA,CAAY,MAAA,GAAW,CAAA,CACzC,OAAOH,CAAAA,CAGT,IAAMI,CAAAA,CAAW,IAAI,GAAA,CAAID,CAAW,CAAA,CAC9BE,CAAAA,CAAyB,CAAC,CAAA,CAEhC,GAAA,CAAA,GAAW,CAACC,CAAAA,CAAKL,CAAO,CAAA,GAAK,MAAA,CAAO,OAAA,CAAQD,CAAM,CAAA,CAC5CI,CAAAA,CAAS,GAAA,CAAIE,CAAG,CAAA,EAAKL,CAAAA,EAAAA,CACvBI,CAAAA,CAASC,CAAyB,CAAA,CAAIL,CAAAA,CAAAA,CAI1C,OAAOI,CACT,CAAA,4CAAA","file":"/home/runner/work/bit-form/bit-form/dist/chunk-ER2DNS7T.cjs","sourcesContent":["import { BitErrors } from \"../core\";\n\nexport function normalizeErrorPath(path: string): string {\n return path.replace(/\\[(\\d+)\\]/g, \".$1\");\n}\n\nexport function setFirstError<T extends object>(\n errors: BitErrors<T>,\n path: string,\n message: string | undefined,\n) {\n if (!path || !message) {\n return;\n }\n\n if (!errors[path as keyof BitErrors<T>]) {\n errors[path as keyof BitErrors<T>] = message;\n }\n}\n\nexport function filterErrorsByScope<T extends object>(\n errors: BitErrors<T>,\n scopeFields?: string[],\n): BitErrors<T> {\n if (!scopeFields || scopeFields.length === 0) {\n return errors;\n }\n\n const scopeSet = new Set(scopeFields);\n const filtered: BitErrors<T> = {};\n\n for (const [key, message] of Object.entries(errors)) {\n if (scopeSet.has(key) && message) {\n filtered[key as keyof BitErrors<T>] = message;\n }\n }\n\n return filtered;\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import{h as u,i as l}from"./chunk-ULC4OPIQ.js";import{L as m,M as d}from"./chunk-VDWCFNA6.js";async function p(t,r,e,n){try{let o=await t(r,e);n.onSuccess(o)}catch(o){if(u(o)){n.onServerErrors(l(o));return}n.onUnhandledError(o instanceof Error?o:new Error(String(o)))}}function c(t,r){t?.preventDefault?.(),r?.stopPropagation&&t?.stopPropagation?.()}function E(t,r,e){return{submit:i=>a=>(c(a,e),t.submit(i)),onSubmit:i=>a=>(c(a,e),r.setSubmissionError(null),t.submit(async(b,B)=>{await p(i,b,B,{onSuccess:s=>{r.setSubmissionResult(s),r.setSubmissionError(null)},onServerErrors:s=>{t.setServerErrors(s)},onUnhandledError:s=>{r.setSubmissionError(s)}})})),reset:()=>{t.reset(),r.clearSubmissionState()},getValues:()=>t.getState().values,getErrors:()=>t.getState().errors,getTouched:()=>t.getState().touched,getDirtyValues:()=>t.getDirtyValues()}}function y(t,r,e){return t.subscribeSelector(()=>t.getFieldState(r),e,{paths:[r]})}function x(t,r,e){return{setValue:i=>{t.setField(r,d(i,e))},setBlur:()=>t.blurField(r),displayValue:i=>m(i,e)}}export{E as a,y as b,x as c};
2
+ //# sourceMappingURL=chunk-FEW3ABPD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/submit-handler.ts","../src/core/form-controller.ts","../src/core/field-controller.ts"],"sourcesContent":["import { extractServerErrors, isValidationErrorShape } from \"./utils\";\n\nexport interface BitSubmitExecutionHandlers {\n onServerErrors: (errors: Record<string, string[] | string>) => void;\n onUnhandledError: (error: Error) => void;\n onSuccess: (result: unknown) => void;\n}\n\nexport async function executeSubmitHandler<T extends object>(\n handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>,\n values: T,\n dirtyValues: Partial<T> | undefined,\n handlers: BitSubmitExecutionHandlers,\n): Promise<void> {\n try {\n const result = await handler(values, dirtyValues);\n handlers.onSuccess(result);\n } catch (error) {\n if (isValidationErrorShape(error)) {\n handlers.onServerErrors(extractServerErrors(error));\n return;\n }\n\n handlers.onUnhandledError(\n error instanceof Error ? error : new Error(String(error)),\n );\n }\n}\n","import { executeSubmitHandler } from \"./submit-handler\";\nimport type { BitStoreHooksApi } from \"./store/public-types\";\n\nexport type BitFormDomEvent = {\n preventDefault?: () => void;\n stopPropagation?: () => void;\n};\n\nexport interface BitFormControllerRuntime {\n clearSubmissionState: () => void;\n setSubmissionResult: (result: unknown) => void;\n setSubmissionError: (error: Error | null) => void;\n}\n\nexport interface BitFormControllerOptions {\n stopPropagation?: boolean;\n}\n\nexport function preventFormEvent(\n event?: BitFormDomEvent,\n options?: BitFormControllerOptions,\n) {\n event?.preventDefault?.();\n if (options?.stopPropagation) {\n event?.stopPropagation?.();\n }\n}\n\nexport function createFormController<T extends object>(\n store: BitStoreHooksApi<T>,\n runtime: BitFormControllerRuntime,\n options?: BitFormControllerOptions,\n) {\n const submit = (\n onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>,\n ) => {\n return (event?: BitFormDomEvent) => {\n preventFormEvent(event, options);\n return store.submit(onSuccess);\n };\n };\n\n const onSubmit = (\n handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>,\n ) => {\n return (event?: BitFormDomEvent) => {\n preventFormEvent(event, options);\n runtime.setSubmissionError(null);\n\n return store.submit(async (values, dirtyValues) => {\n await executeSubmitHandler(handler, values, dirtyValues, {\n onSuccess: (result) => {\n runtime.setSubmissionResult(result);\n runtime.setSubmissionError(null);\n },\n onServerErrors: (serverErrors) => {\n store.setServerErrors(serverErrors);\n },\n onUnhandledError: (error) => {\n runtime.setSubmissionError(error);\n },\n });\n });\n };\n };\n\n const reset = () => {\n store.reset();\n runtime.clearSubmissionState();\n };\n\n return {\n submit,\n onSubmit,\n reset,\n getValues: () => store.getState().values,\n getErrors: () => store.getState().errors,\n getTouched: () => store.getState().touched,\n getDirtyValues: () => store.getDirtyValues(),\n };\n}\n","import { formatMaskedValue, parseMaskedInput } from \"./mask/field-binding\";\nimport type { BitMask } from \"./mask/types\";\nimport type { BitStoreHooksApi } from \"./store/public-types\";\nimport type { BitFieldState, BitPath, BitPathValue } from \"./store/types\";\n\nexport function subscribeFieldState<\n TForm extends object,\n P extends BitPath<TForm>,\n>(\n store: BitStoreHooksApi<TForm>,\n path: P,\n listener: (\n value: Readonly<BitFieldState<TForm, BitPathValue<TForm, P>>>,\n ) => void,\n) {\n return store.subscribeSelector(\n () =>\n store.getFieldState(path) as Readonly<\n BitFieldState<TForm, BitPathValue<TForm, P>>\n >,\n listener,\n { paths: [path as string] },\n );\n}\n\nexport function createMaskedFieldController<\n TForm extends object,\n P extends BitPath<TForm>,\n>(store: BitStoreHooksApi<TForm>, path: P, mask: BitMask | undefined) {\n const setValue = (value: unknown) => {\n store.setField(\n path,\n parseMaskedInput(value, mask) as BitPathValue<TForm, P>,\n );\n };\n\n const setBlur = () => store.blurField(path);\n\n const displayValue = (value: unknown) => formatMaskedValue(value, mask);\n\n return {\n setValue,\n setBlur,\n displayValue,\n };\n}\n"],"mappings":"8FAQA,eAAsBA,EACpBC,EACAC,EACAC,EACAC,EACe,CACf,GAAI,CACF,IAAMC,EAAS,MAAMJ,EAAQC,EAAQC,CAAW,EAChDC,EAAS,UAAUC,CAAM,CAC3B,OAASC,EAAO,CACd,GAAIC,EAAuBD,CAAK,EAAG,CACjCF,EAAS,eAAeI,EAAoBF,CAAK,CAAC,EAClD,MACF,CAEAF,EAAS,iBACPE,aAAiB,MAAQA,EAAQ,IAAI,MAAM,OAAOA,CAAK,CAAC,CAC1D,CACF,CACF,CCTO,SAASG,EACdC,EACAC,EACA,CACAD,GAAO,iBAAiB,EACpBC,GAAS,iBACXD,GAAO,kBAAkB,CAE7B,CAEO,SAASE,EACdC,EACAC,EACAH,EACA,CAuCA,MAAO,CACL,OAtCAI,GAEQL,IACND,EAAiBC,EAAOC,CAAO,EACxBE,EAAM,OAAOE,CAAS,GAmC/B,SA9BAC,GAEQN,IACND,EAAiBC,EAAOC,CAAO,EAC/BG,EAAQ,mBAAmB,IAAI,EAExBD,EAAM,OAAO,MAAOI,EAAQC,IAAgB,CACjD,MAAMC,EAAqBH,EAASC,EAAQC,EAAa,CACvD,UAAYE,GAAW,CACrBN,EAAQ,oBAAoBM,CAAM,EAClCN,EAAQ,mBAAmB,IAAI,CACjC,EACA,eAAiBO,GAAiB,CAChCR,EAAM,gBAAgBQ,CAAY,CACpC,EACA,iBAAmBC,GAAU,CAC3BR,EAAQ,mBAAmBQ,CAAK,CAClC,CACF,CAAC,CACH,CAAC,GAYH,MARY,IAAM,CAClBT,EAAM,MAAM,EACZC,EAAQ,qBAAqB,CAC/B,EAME,UAAW,IAAMD,EAAM,SAAS,EAAE,OAClC,UAAW,IAAMA,EAAM,SAAS,EAAE,OAClC,WAAY,IAAMA,EAAM,SAAS,EAAE,QACnC,eAAgB,IAAMA,EAAM,eAAe,CAC7C,CACF,CC3EO,SAASU,EAIdC,EACAC,EACAC,EAGA,CACA,OAAOF,EAAM,kBACX,IACEA,EAAM,cAAcC,CAAI,EAG1BC,EACA,CAAE,MAAO,CAACD,CAAc,CAAE,CAC5B,CACF,CAEO,SAASE,EAGdH,EAAgCC,EAASG,EAA2B,CAYpE,MAAO,CACL,SAZgBC,GAAmB,CACnCL,EAAM,SACJC,EACAK,EAAiBD,EAAOD,CAAI,CAC9B,CACF,EAQE,QANc,IAAMJ,EAAM,UAAUC,CAAI,EAOxC,aALoBI,GAAmBE,EAAkBF,EAAOD,CAAI,CAMtE,CACF","names":["executeSubmitHandler","handler","values","dirtyValues","handlers","result","error","isValidationErrorShape","extractServerErrors","preventFormEvent","event","options","createFormController","store","runtime","onSuccess","handler","values","dirtyValues","executeSubmitHandler","result","serverErrors","error","subscribeFieldState","store","path","listener","createMaskedFieldController","mask","value","parseMaskedInput","formatMaskedValue"]}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2; var _class3; var _class4; var _class5; var _class6; var _class7; var _class8;var _chunkPA6T2CBRcjs = require('./chunk-PA6T2CBR.cjs');function h(a){if(a===null||typeof a!="object")return a;if(a instanceof Date)return new Date(a.getTime());if(a instanceof RegExp)return new RegExp(a.source,a.flags);if(Array.isArray(a))return a.map(t=>h(t));let e={};for(let t in a)Object.prototype.hasOwnProperty.call(a,t)&&(e[t]=h(a[t]));return e}function b(a,e){if(e===void 0)return h(a);if(e===null||typeof e!="object"||e instanceof Date||e instanceof RegExp||Array.isArray(e))return h(e);let t=a&&typeof a=="object"&&!Array.isArray(a)?h(a):{};for(let i of Object.keys(e)){let r=e[i],s=t[i];if(r!==null&&typeof r=="object"&&!Array.isArray(r)&&!(r instanceof Date)&&!(r instanceof RegExp)){t[i]=b(s,r);continue}t[i]=h(r)}return t}function f(a,e){return a===e?!0:a===null||typeof a!="object"||e===null||typeof e!="object"?!1:m(a,e)}function m(a,e){if(a===e)return!0;if(a===null||typeof a!="object"||e===null||typeof e!="object")return!1;if(a instanceof Date&&e instanceof Date)return a.getTime()===e.getTime();if(a instanceof RegExp&&e instanceof RegExp)return a.toString()===e.toString();let t=Object.keys(a),i=Object.keys(e);if(t.length!==i.length)return!1;for(let r of t)if(!Object.prototype.hasOwnProperty.call(e,r)||!m(a[r],e[r]))return!1;return!0}function j(a,e,t="",i=new Set){if(f(a,e))return i;if(a===null||typeof a!="object"||e===null||typeof e!="object")return t&&i.add(t),i;if(Array.isArray(a)||Array.isArray(e))return!f(a,e)&&t&&i.add(t),i;let r=new Set([...Object.keys(a||{}),...Object.keys(e||{})]);for(let s of r){let n=t?`${t}.${s}`:s;j(_optionalChain([a, 'optionalAccess', _2 => _2[s]]),_optionalChain([e, 'optionalAccess', _3 => _3[s]]),n,i)}return i}var W=1e3,y=new Map;function c(a,e){if(!e)return a;let t=y.get(e);t||(t=e.split("."),y.size>=W&&y.delete(y.keys().next().value),y.set(e,t));let i=a;for(let r of t){if(i==null)return;i=i[r]}return i}function p(a,e,t){if(!e)return t;let i=y.get(e);i||(i=e.split("."),y.size>=W&&y.delete(y.keys().next().value),y.set(e,i));let r=Array.isArray(a)?[...a]:{...a},s=r;for(let n=0;n<i.length-1;n++){let o=i[n],l=i[n+1],d=/^\d+$/.test(l),u=s[o];u==null?s[o]=d?[]:{}:s[o]=Array.isArray(u)?[...u]:{...u},s=s[o]}return s[i[i.length-1]]=t,r}function te(a,e){let t={},i=`${e}.`;for(let r in a)r!==e&&!r.startsWith(i)&&(t[r]=a[r]);return t}var U=(a,e,t)=>{let i={},r=`${e}.`;return Object.keys(a).forEach(s=>{if(!s.startsWith(r)){i[s]=a[s];return}let o=s.substring(r.length).split("."),l=parseInt(o[0],10),d=o.slice(1).join(".");if(l!==t)if(l>t){let u=l-1,g=d?`${r}${u}.${d}`:`${r}${u}`;i[g]=a[s]}else i[s]=a[s]}),i},$=(a,e,t,i)=>{let r={},s=`${e}.`;return Object.keys(a).forEach(n=>{if(!n.startsWith(s)){r[n]=a[n];return}let l=n.substring(s.length).split("."),d=parseInt(l[0],10),u=l.slice(1).join(".");if(d===t){let g=u?`${s}${i}.${u}`:`${s}${i}`;r[g]=a[n]}else if(d===i){let g=u?`${s}${t}.${u}`:`${s}${t}`;r[g]=a[n]}else r[n]=a[n]}),r},_=(a,e,t,i)=>{let r={},s=`${e}.`;return Object.keys(a).forEach(n=>{if(!n.startsWith(s)){r[n]=a[n];return}let l=n.substring(s.length).split("."),d=parseInt(l[0],10),u=l.slice(1).join("."),g=d;d===t?g=i:t<i&&d>t&&d<=i?g=d-1:t>i&&d>=i&&d<t&&(g=d+1);let q=u?`${s}${g}.${u}`:`${s}${g}`;r[q]=a[n]}),r};function G(a){if(typeof a!="object"||a===null||Array.isArray(a))return!1;let e=_nullishCoalesce(a.errors, () => (a));return typeof e!="object"||e===null||Array.isArray(e)?!1:Object.values(e).every(t=>typeof t=="string"||Array.isArray(t)&&t.every(i=>typeof i=="string"))}function ie(a){return G(a)?_nullishCoalesce(a.errors, () => (a)):{}}var z=typeof globalThis<"u"?globalThis:typeof global<"u"?global:window;z.__BIT_FORM__||(z.__BIT_FORM__={stores:{},listeners:new Set,dispatch(a,e){this.listeners.forEach(t=>t(a,e))},subscribe(a){return this.listeners.add(a),()=>{this.listeners.delete(a)}}});var T=z.__BIT_FORM__;function J(a={}){let e=_nullishCoalesce(a.initialValues, () => ({})),t=a.validation,i=a.history,r=a.name?`bit-form:${a.name}:draft`:"bit-form:draft",s={enabled:_nullishCoalesce(_optionalChain([a, 'access', _4 => _4.persist, 'optionalAccess', _5 => _5.enabled]), () => (!1)),key:_nullishCoalesce(_optionalChain([a, 'access', _6 => _6.persist, 'optionalAccess', _7 => _7.key]), () => (r)),storage:_optionalChain([a, 'access', _8 => _8.persist, 'optionalAccess', _9 => _9.storage]),autoSave:_nullishCoalesce(_optionalChain([a, 'access', _10 => _10.persist, 'optionalAccess', _11 => _11.autoSave]), () => (!0)),debounceMs:_nullishCoalesce(_optionalChain([a, 'access', _12 => _12.persist, 'optionalAccess', _13 => _13.debounceMs]), () => (300)),mode:_nullishCoalesce(_optionalChain([a, 'access', _14 => _14.persist, 'optionalAccess', _15 => _15.mode]), () => ("values")),serialize:_nullishCoalesce(_optionalChain([a, 'access', _16 => _16.persist, 'optionalAccess', _17 => _17.serialize]), () => (JSON.stringify)),deserialize:_nullishCoalesce(_optionalChain([a, 'access', _18 => _18.persist, 'optionalAccess', _19 => _19.deserialize]), () => ((n=>JSON.parse(n)))),onError:_optionalChain([a, 'access', _20 => _20.persist, 'optionalAccess', _21 => _21.onError])};return{name:a.name,initialValues:h(e),resolver:_optionalChain([t, 'optionalAccess', _22 => _22.resolver]),validationDelay:_nullishCoalesce(_optionalChain([t, 'optionalAccess', _23 => _23.delay]), () => (300)),enableHistory:_nullishCoalesce(_optionalChain([i, 'optionalAccess', _24 => _24.enabled]), () => (!1)),historyLimit:_nullishCoalesce(_optionalChain([i, 'optionalAccess', _25 => _25.limit]), () => (15)),masks:{..._chunkPA6T2CBRcjs.N},fields:a.fields,devTools:a.devTools,persist:s,plugins:_nullishCoalesce(a.plugins, () => ([]))}}var B= (_class =class{constructor() { _class.prototype.__init.call(this);_class.prototype.__init2.call(this);_class.prototype.__init3.call(this); }__init() {this.fieldConfigs=new Map}__init2() {this.dependencies=new Map}__init3() {this.hiddenFields=new Set}register(e,t,i){this.fieldConfigs.set(e,t);let r=_optionalChain([t, 'access', _26 => _26.conditional, 'optionalAccess', _27 => _27.dependsOn]);r&&r.forEach(s=>{this.dependencies.has(s)||this.dependencies.set(s,new Set),this.dependencies.get(s).add(e)}),this.evaluateFieldCondition(e,i)}isHidden(e){return this.hiddenFields.has(e)}isRequired(e,t){let i=this.fieldConfigs.get(e);return!i||this.isHidden(e)?!1:!!_optionalChain([i, 'access', _28 => _28.conditional, 'optionalAccess', _29 => _29.requiredIf, 'optionalCall', _30 => _30(t)])}getRequiredErrors(e){let t={};return this.fieldConfigs.forEach((i,r)=>{if(this.isRequired(r,e)){let s=c(e,r);this.isEmpty(s)&&(t[r]=_nullishCoalesce(_optionalChain([i, 'access', _31 => _31.conditional, 'optionalAccess', _32 => _32.requiredMessage]), () => ("required field")))}}),t}evaluateAll(e){this.fieldConfigs.forEach((t,i)=>{this.evaluateFieldCondition(i,e)})}updateDependencies(e,t){let i=[],r=[e],s=new Set;for(;r.length>0;){let n=r.shift();if(s.has(n))continue;s.add(n);let o=this.dependencies.get(n);o&&o.forEach(l=>{let d=this.isHidden(l);this.evaluateFieldCondition(l,t);let u=this.isHidden(l);d!==u&&i.push(l),r.push(l)})}return i}unregister(e){this.fieldConfigs.delete(e),this.hiddenFields.delete(e),this.dependencies.delete(e),this.dependencies.forEach(t=>{t.delete(e)})}unregisterPrefix(e){let t=[];this.fieldConfigs.forEach((i,r)=>{r.startsWith(e)&&t.push(r)}),t.forEach(i=>this.unregister(i))}evaluateFieldCondition(e,t){let r=_optionalChain([this, 'access', _33 => _33.fieldConfigs, 'access', _34 => _34.get, 'call', _35 => _35(e), 'optionalAccess', _36 => _36.conditional, 'optionalAccess', _37 => _37.showIf]);r&&(r(t)?this.hiddenFields.delete(e):this.hiddenFields.add(e))}isEmpty(e){return e==null||typeof e=="string"&&e.trim()===""||Array.isArray(e)&&e.length===0}}, _class);var V= (_class2 =class a{constructor(e){this.getComputedEntries=e}static __initStatic() {this.MIN_PASSES=4}apply(e){let t=this.getComputedEntries();if(t.length===0)return e;let i=e,r=Math.max(a.MIN_PASSES,t.length*2);for(let s=0;s<r;s++){let n=!1;for(let[o,l]of t){let d=l(i),u=c(i,o);m(u,d)||(i=p(i,o,d),n=!0)}if(!n)break;if(s===r-1)throw new Error("BitStore: computed fields did not stabilize. Check for cyclic computed definitions.")}return i}}, _class2.__initStatic(), _class2);var P= (_class3 =class{constructor() { _class3.prototype.__init4.call(this); }__init4() {this.dirtyPaths=new Set}updateForPath(e,t,i){for(let n of this.dirtyPaths)n.startsWith(e+".")&&this.dirtyPaths.delete(n);let r=c(t,e),s=c(i,e);return f(r,s)?this.dirtyPaths.delete(e):this.dirtyPaths.add(e),this.dirtyPaths.size>0}rebuild(e,t){return this.dirtyPaths=j(e,t),this.dirtyPaths.size>0}clear(){this.dirtyPaths.clear()}get isDirty(){return this.dirtyPaths.size>0}getDirtyPaths(){return this.dirtyPaths}buildDirtyValues(e){if(this.dirtyPaths.size===0)return{};let t={},i=new Set;for(let r of this.dirtyPaths){let s=r.match(/^(.+)\.\d+/);if(s){let n=s[1];if(i.has(n))continue;i.add(n);let o=c(e,n);t=p(t,n,o)}else{let n=c(e,r);t=p(t,r,n)}}return t}}, _class3);var E= (_class4 =class{constructor(e){;_class4.prototype.__init5.call(this);_class4.prototype.__init6.call(this);_class4.prototype.__init7.call(this);_class4.prototype.__init8.call(this);this.getState=e}__init5() {this.listeners=new Set}__init6() {this.selectorListeners=new Set}__init7() {this.pathScopedSubscriptions=new Map}__init8() {this.pathSelectorIndex=new Map}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}subscribeSelector(e,t,i,r){let s=e(this.getState()),n={notify:d=>{let u=e(d);r(s,u)||(s=u,t(u))}},o=_optionalChain([i, 'optionalAccess', _38 => _38.autoTrackPaths])===!1?[]:this.collectTrackedSelectorPaths(e),l=this.normalizeSubscriptionPaths([..._nullishCoalesce(_optionalChain([i, 'optionalAccess', _39 => _39.paths]), () => ([])),...o]);return l.length>0?(this.pathScopedSubscriptions.set(n,l),l.forEach(d=>{let u=_nullishCoalesce(this.pathSelectorIndex.get(d), () => (new Set));u.add(n),this.pathSelectorIndex.set(d,u)})):this.selectorListeners.add(n),_optionalChain([i, 'optionalAccess', _40 => _40.emitImmediately])&&t(s),()=>{this.selectorListeners.delete(n);let d=this.pathScopedSubscriptions.get(n);d&&(d.forEach(u=>{let g=this.pathSelectorIndex.get(u);g&&(g.delete(n),g.size===0&&this.pathSelectorIndex.delete(u))}),this.pathScopedSubscriptions.delete(n))}}notify(e,t){if(this.listeners.forEach(r=>r()),this.selectorListeners.forEach(r=>{r.notify(e)}),this.pathScopedSubscriptions.size===0)return;if(!t||t.length===0||t.includes("*")){this.pathScopedSubscriptions.forEach((r,s)=>{s.notify(e)});return}this.collectSubscribersForChangedPaths(t).forEach(r=>{r.notify(e)})}destroy(){this.listeners.clear(),this.selectorListeners.clear(),this.pathScopedSubscriptions.clear(),this.pathSelectorIndex.clear()}normalizeSubscriptionPaths(e){return!e||e.length===0?[]:Array.from(new Set(e.map(t=>t.trim()).filter(t=>t.length>0)))}collectTrackedSelectorPaths(e){let t=new Set,i=(s,n)=>!s||typeof s!="object"?s:new Proxy(s,{get:(o,l)=>{if(typeof l!="string")return Reflect.get(o,l);let d=n?`${n}.${l}`:l;t.add(d);let u=Reflect.get(o,l);return i(u,d)}}),r=new Proxy(this.getState(),{get:(s,n)=>{if(typeof n!="string")return Reflect.get(s,n);let o=Reflect.get(s,n);return n==="values"?i(o,""):o}});try{return e(r),Array.from(t)}catch (e2){return[]}}collectSubscribersForChangedPaths(e){let t=new Set,i=s=>{let n=this.pathSelectorIndex.get(s);n&&n.forEach(o=>t.add(o))};return this.normalizeSubscriptionPaths(e).forEach(s=>{i(s);let n=s.split(".");for(;n.length>1;)n.pop(),i(n.join("."));this.pathSelectorIndex.forEach((o,l)=>{l.startsWith(`${s}.`)&&o.forEach(d=>t.add(d))})}),t}}, _class4);function X(a){let{currentState:e,partialState:t,changedPaths:i,applyComputedValues:r}=a,s={...e,...t},n=!!t.values;t.values&&(s.values=r(t.values)),t.errors&&(s.isValid=Object.keys(s.errors).length===0);let o=i&&i.length>0?i:t.values?["*"]:void 0;return{nextState:s,changedPaths:o,valuesChanged:n}}function re(a){return typeof a=="boolean"?{enabled:a,mode:"local"}:{enabled:!!a,mode:_nullishCoalesce(_optionalChain([a, 'optionalAccess', _41 => _41.mode]), () => ("local")),url:_optionalChain([a, 'optionalAccess', _42 => _42.url])}}function Q(a){let e=re(a);return e.enabled?{name:"bit-devtools",setup:()=>{let t=null,i=!1;return(async()=>{try{if(e.mode==="remote"){let{setupRemoteBridge:r}=await Promise.resolve().then(() => _interopRequireWildcard(require("./devtools/bridge.cjs")));t=r(e.url||"ws://localhost:3000")}else{let{initDevTools:r}=await Promise.resolve().then(() => _interopRequireWildcard(require("./devtools/index.cjs"))),s=r();t=s&&typeof s.destroy=="function"?s.destroy:null}i&&t&&(t(),t=null)}catch (e3){}})(),()=>{i=!0,t&&(t(),t=null)}}}:null}function se(){if(typeof globalThis>"u")return;let a=globalThis.localStorage;if(a)return{getItem:e=>a.getItem(e),setItem:(e,t)=>a.setItem(e,t),removeItem:e=>a.removeItem(e)}}var F=class{constructor(e,t,i,r){this.config=e;this.getValues=t;this.getDirtyValues=i;this.applyRestoredValues=r}getStorage(){return this.config.storage||se()}canPersist(){return!!(this.config.enabled&&this.config.key&&this.getStorage())}handleError(e){_optionalChain([this, 'access', _43 => _43.config, 'access', _44 => _44.onError, 'optionalCall', _45 => _45(e)])}async saveNow(){if(!this.canPersist())return;let e=this.getStorage();if(e)try{let t=this.config.mode==="dirtyValues"?this.getDirtyValues():this.getValues(),i=this.config.serialize(h(t));await e.setItem(this.config.key,i)}catch(t){this.handleError(t)}}queueSave(){!this.canPersist()||!this.config.autoSave||(this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.saveNow()},this.config.debounceMs))}async restore(){if(!this.canPersist())return!1;let e=this.getStorage();if(!e)return!1;try{let t=await e.getItem(this.config.key);if(!t)return!1;let i=this.config.deserialize(t);return!i||typeof i!="object"?!1:(this.applyRestoredValues(i),!0)}catch(t){return this.handleError(t),!1}}async clear(){if(!this.canPersist())return;let e=this.getStorage();if(e)try{await e.removeItem(this.config.key)}catch(t){this.handleError(t)}}destroy(){this.timer&&(clearTimeout(this.timer),this.timer=void 0)}};var C= (_class5 =class{constructor(e,t){;_class5.prototype.__init9.call(this);_class5.prototype.__init10.call(this);this.plugins=e;this.contextFactory=t}__init9() {this.teardownFns=[]}__init10() {this.notifyingError=!1}setupAll(){this.plugins.forEach(e=>{if(e.setup)try{let t=e.setup(this.contextFactory());typeof t=="function"&&this.teardownFns.push(t)}catch(t){this.reportError("setup",t,void 0,e.name)}})}async beforeValidate(e){await this.emitHook("beforeValidate",e)}async afterValidate(e){await this.emitHook("afterValidate",e)}async beforeSubmit(e){await this.emitHook("beforeSubmit",e)}async afterSubmit(e){await this.emitHook("afterSubmit",e)}onFieldChange(e){this.plugins.forEach(t=>{let i=_optionalChain([t, 'access', _46 => _46.hooks, 'optionalAccess', _47 => _47.onFieldChange]);if(i)try{let r=i(e,this.contextFactory());Promise.resolve(r).catch(s=>{this.reportError("onFieldChange",s,e,t.name)})}catch(r){this.reportError("onFieldChange",r,e,t.name)}})}async reportError(e,t,i,r){if(this.notifyingError)return;this.notifyingError=!0;let s=this.contextFactory(),n={source:e,pluginName:r,error:t,event:i,values:s.getState().values,state:s.getState()};for(let o of this.plugins){let l=_optionalChain([o, 'access', _48 => _48.hooks, 'optionalAccess', _49 => _49.onError]);if(l)try{await l(n,s)}catch (e4){}}this.notifyingError=!1}destroy(){for(let e=this.teardownFns.length-1;e>=0;e-=1){let t=this.teardownFns[e];try{t()}catch(i){this.reportError("teardown",i)}}this.teardownFns=[]}async emitHook(e,t){let i=this.contextFactory();for(let r of this.plugins){let s=_optionalChain([r, 'access', _50 => _50.hooks, 'optionalAccess', _51 => _51[e]]);if(s)try{await s(t,i)}catch(n){await this.reportError(e,n,t,r.name)}}}}, _class5);var w=class{constructor(e,t,i,r){this.storeId=e;this.storeInstance=t;this.persistManager=i;this.pluginManager=r}initialize(){this.pluginManager.setupAll(),T.stores[this.storeId]=this.storeInstance}onStateUpdated(e,t){t&&this.persistManager.queueSave(),T.dispatch(this.storeId,e)}restorePersisted(){return this.persistManager.restore()}savePersistedNow(){return this.persistManager.saveNow()}clearPersisted(){return this.persistManager.clear()}beforeValidate(e){return this.pluginManager.beforeValidate(e)}afterValidate(e){return this.pluginManager.afterValidate(e)}beforeSubmit(e){return this.pluginManager.beforeSubmit(e)}afterSubmit(e){return this.pluginManager.afterSubmit(e)}onFieldChange(e){this.pluginManager.onFieldChange(e)}reportOperationalError(e){return this.pluginManager.reportError(e.source,e.error,e.payload)}destroy(){this.persistManager.destroy(),this.pluginManager.destroy(),delete T.stores[this.storeId]}};var v=class{constructor(e){this.steps=e}async run(e){for(let t of this.steps){if(e.halted)break;await t.run(e)}}},x=class{constructor(e){this.steps=e}run(e){for(let t of this.steps){if(e.halted)break;t.run(e)}}};var M= (_class6 =class{constructor(e){;_class6.prototype.__init11.call(this);_class6.prototype.__init12.call(this);_class6.prototype.__init13.call(this);_class6.prototype.__init14.call(this);this.store=e}__init11() {this.currentValidationId=0}__init12() {this.asyncTimers={}}__init13() {this.asyncRequests={}}__init14() {this.asyncErrors={}}updateFieldValidating(e,t){this.store.internalUpdateState({isValidating:{...this.store.getState().isValidating,[e]:t}})}cancelFieldAsync(e){this.asyncTimers[e]&&(clearTimeout(this.asyncTimers[e]),delete this.asyncTimers[e]),this.asyncRequests[e]=(this.asyncRequests[e]||0)+1}beginExternalValidation(e){this.cancelFieldAsync(e),this.updateFieldValidating(e,!0)}endExternalValidation(e){this.updateFieldValidating(e,!1)}async setExternalError(e,t){if(t){this.asyncErrors[e]=t,this.store.setError(e,t);return}if(delete this.asyncErrors[e],this.store.validate){await this.store.validate({scopeFields:[e]});return}let i={...this.store.getState().errors};delete i[e],this.store.internalUpdateState({errors:i,isValid:Object.keys(i).length===0})}handleAsync(e,t){let i=this.store.getFieldConfig(e),r=_optionalChain([i, 'optionalAccess', _52 => _52.validation, 'optionalAccess', _53 => _53.asyncValidate]);if(!r){this.updateFieldValidating(e,!1);return}this.asyncTimers[e]&&clearTimeout(this.asyncTimers[e]);let s=_nullishCoalesce(_optionalChain([i, 'access', _54 => _54.validation, 'optionalAccess', _55 => _55.asyncValidateDelay]), () => (500));this.updateFieldValidating(e,!0),this.asyncTimers[e]=setTimeout(async()=>{delete this.asyncTimers[e];let n=(this.asyncRequests[e]||0)+1;this.asyncRequests[e]=n;try{let o=await r(t,this.store.getState().values);if(this.asyncRequests[e]!==n)return;if(o)this.asyncErrors[e]=o,this.store.setError(e,o);else if(delete this.asyncErrors[e],this.store.validate)await this.store.validate({scopeFields:[e]});else{let l={...this.store.getState().errors};delete l[e],this.store.internalUpdateState({errors:l,isValid:Object.keys(l).length===0})}}finally{this.asyncRequests[e]===n&&this.updateFieldValidating(e,!1)}},s)}hasValidationsInProgress(e){let t=this.store.getState();return e&&e.length>0?e.some(i=>!!t.isValidating[i]):Object.values(t.isValidating).some(Boolean)}trigger(e){this.validationTimeout&&clearTimeout(this.validationTimeout);let t=_nullishCoalesce(this.store.config.validationDelay, () => (300));t>0?this.validationTimeout=setTimeout(()=>{this.validate({scopeFields:e})},t):this.validate({scopeFields:e})}async validate(e){let t={options:e,validationId:++this.currentValidationId,currentState:this.store.getState(),targetFields:_optionalChain([e, 'optionalAccess', _56 => _56.scopeFields]),allErrors:{},isValid:!0,result:!0,aborted:!1};return await new v([{name:"validate:resolve-target-fields",run:r=>{if(_optionalChain([r, 'access', _57 => _57.options, 'optionalAccess', _58 => _58.scope])){let s=this.store.getScopeFields(r.options.scope);s.length>0&&(r.targetFields=s)}}},{name:"validate:before-hooks",run:async r=>{await this.store.emitBeforeValidate({values:r.currentState.values,state:r.currentState,scope:_optionalChain([r, 'access', _59 => _59.options, 'optionalAccess', _60 => _60.scope]),scopeFields:r.targetFields})}},{name:"validate:resolver",run:async r=>{r.allErrors=this.store.config.resolver?await this.store.config.resolver(r.currentState.values,{scopeFields:r.targetFields}):{}}},{name:"validate:required-and-hidden",run:r=>{let s=this.store.getRequiredErrors(r.currentState.values);r.allErrors={...r.allErrors,...s},this.store.getHiddenFields().forEach(n=>{delete r.allErrors[n],delete this.asyncErrors[n]})}},{name:"validate:abort-check",run:async r=>{r.validationId!==this.currentValidationId&&(r.aborted=!0,r.result=r.currentState.isValid,await this.store.emitAfterValidate({values:this.store.getState().values,state:this.store.getState(),scope:_optionalChain([r, 'access', _61 => _61.options, 'optionalAccess', _62 => _62.scope]),scopeFields:r.targetFields,errors:this.store.getState().errors,result:r.currentState.isValid,aborted:!0}),r.halted=!0)}},{name:"validate:commit-scoped",run:async r=>{if(!r.targetFields)return;let s={...r.currentState.errors};r.targetFields.forEach(n=>{r.allErrors[n]?s[n]=r.allErrors[n]:this.asyncErrors[n]?s[n]=this.asyncErrors[n]:delete s[n]}),r.isValid=Object.keys(s).length===0,r.result=r.targetFields.every(n=>!r.allErrors[n]&&!this.asyncErrors[n]),this.store.internalUpdateState({errors:s,isValid:r.isValid}),await this.store.emitAfterValidate({values:this.store.getState().values,state:this.store.getState(),scope:_optionalChain([r, 'access', _63 => _63.options, 'optionalAccess', _64 => _64.scope]),scopeFields:r.targetFields,errors:s,result:r.result}),r.halted=!0}},{name:"validate:commit-global",run:async r=>{r.allErrors={...this.asyncErrors,...r.allErrors},r.isValid=Object.keys(r.allErrors).length===0,r.result=r.isValid,this.store.internalUpdateState({errors:r.allErrors,isValid:r.isValid}),await this.store.emitAfterValidate({values:this.store.getState().values,state:this.store.getState(),scope:_optionalChain([r, 'access', _65 => _65.options, 'optionalAccess', _66 => _66.scope]),scopeFields:r.targetFields,errors:r.allErrors,result:r.isValid})}}]).run(t),t.result}clear(e){this.asyncTimers[e]&&clearTimeout(this.asyncTimers[e]),delete this.asyncTimers[e],this.updateFieldValidating(e,!1),delete this.asyncErrors[e]}cancelAll(){this.validationTimeout&&clearTimeout(this.validationTimeout),Object.values(this.asyncTimers).forEach(e=>clearTimeout(e)),this.asyncTimers={},this.store.internalUpdateState({isValidating:{}})}}, _class6);var D=class{constructor(e){this.store=e}updateField(e,t,i={origin:"setField"}){let r=this.store.getState(),s={path:e,value:t,meta:i,previousValue:c(r.values,e),nextValues:p(r.values,e,t),nextErrors:{...r.errors},toggledFields:[],isDirty:!1};new x([{name:"field:clear-current-error",run:o=>{delete o.nextErrors[o.path],this.store.clearFieldValidation(o.path)}},{name:"field:update-dependencies",run:o=>{o.toggledFields=this.store.updateDependencies(o.path,o.nextValues),o.toggledFields.forEach(l=>{this.store.isFieldHidden(l)&&(delete o.nextErrors[l],this.store.clearFieldValidation(l))})}},{name:"field:update-dirty",run:o=>{o.isDirty=this.store.updateDirtyForPath(o.path,o.nextValues,this.store.config.initialValues)}},{name:"field:commit-state",run:o=>{this.store.internalUpdateState({values:o.nextValues,errors:o.nextErrors,isValid:Object.keys(o.nextErrors).length===0,isDirty:o.isDirty},[o.path,...o.toggledFields])}},{name:"field:emit-change",run:o=>{this.store.emitFieldChange({path:o.path,previousValue:o.previousValue,nextValue:o.value,values:this.store.getState().values,state:this.store.getState(),meta:o.meta})}},{name:"field:trigger-validate",run:o=>{this.store.config.resolver&&this.store.triggerValidation([o.path])}},{name:"field:trigger-async-validate",run:o=>{this.store.handleFieldAsyncValidation(o.path,o.value)}}]).run(s)}replaceValues(e,t="replaceValues"){let i=this.store.getState().values,r=h(e);this.store.cancelAllValidations(),this.store.evaluateAllDependencies(r);let s=this.store.rebuildDirtyState(r,this.store.config.initialValues);this.store.internalUpdateState({values:r,errors:{},isValidating:{},isValid:!0,isDirty:s,isSubmitting:!1},["*"]),this.store.internalSaveSnapshot(),this.store.validateNow(),this.store.emitFieldChange({path:"*",previousValue:i,nextValue:r,values:this.store.getState().values,state:this.store.getState(),meta:{origin:t}})}hydrateValues(e){let t=b(this.store.getState().values,e);this.replaceValues(t,"hydrate")}rebaseValues(e){let t=this.store.getState().values,i=h(e);this.store.config.initialValues=h(i),this.store.cancelAllValidations(),this.store.evaluateAllDependencies(i),this.store.clearDirtyState(),this.store.internalUpdateState({values:i,errors:{},touched:{},isValidating:{},isValid:!0,isDirty:!1,isSubmitting:!1},["*"]),this.store.internalSaveSnapshot(),this.store.validateNow(),this.store.emitFieldChange({path:"*",previousValue:t,nextValue:i,values:this.store.getState().values,state:this.store.getState(),meta:{origin:"rebase"}})}async submit(e){if(this.store.getState().isSubmitting||this.store.hasValidationsInProgress())return;this.store.cancelAllValidations();let i={onSuccess:e,isValid:!1,valuesToSubmit:h(this.store.getState().values),dirtyValues:{}},r=new v([{name:"submit:start",run:async s=>{this.store.internalUpdateState({isSubmitting:!0}),s.isValid=await this.store.validateNow()}},{name:"submit:invalid",run:async s=>{if(s.isValid)return;let n=this.store.getState().errors,o={...this.store.getState().touched};Object.keys(n).forEach(l=>{o[l]=!0}),this.store.internalUpdateState({touched:o}),s.dirtyValues=this.store.buildDirtyValues(this.store.getState().values),s.invalid=!0,await this.store.emitAfterSubmit({values:this.store.getState().values,dirtyValues:s.dirtyValues,state:this.store.getState(),success:!1,invalid:!0}),s.halted=!0}},{name:"submit:prepare",run:s=>{this.store.getHiddenFields().forEach(n=>{s.valuesToSubmit=p(s.valuesToSubmit,n,void 0)});for(let[n,o]of this.store.getTransformEntries()){let l=c(s.valuesToSubmit,n);s.valuesToSubmit=p(s.valuesToSubmit,n,o(l,this.store.getState().values))}s.dirtyValues=this.store.buildDirtyValues(s.valuesToSubmit)}},{name:"submit:before-hooks",run:async s=>{await this.store.emitBeforeSubmit({values:s.valuesToSubmit,dirtyValues:s.dirtyValues,state:this.store.getState()})}},{name:"submit:user-handler",run:async s=>{await s.onSuccess(s.valuesToSubmit,s.dirtyValues)}},{name:"submit:after-hooks",run:async s=>{await this.store.emitAfterSubmit({values:s.valuesToSubmit,dirtyValues:s.dirtyValues,state:this.store.getState(),success:!0})}}]);try{await r.run(i)}catch(s){i.error=s,await this.store.emitOperationalError({source:"submit",error:s}),await this.store.emitAfterSubmit({values:this.store.getState().values,dirtyValues:this.store.buildDirtyValues(this.store.getState().values),state:this.store.getState(),success:!1,error:s}),console.error(s)}finally{this.store.internalUpdateState({isSubmitting:!1})}}reset(){this.store.cancelAllValidations();let e=h(this.store.config.initialValues);this.store.evaluateAllDependencies(e),this.store.clearDirtyState(),this.store.internalUpdateState({values:e,errors:{},touched:{},isValidating:{},isValid:!0,isDirty:!1,isSubmitting:!1},["*"]),this.store.resetHistory(e)}};var A= (_class7 =class{constructor(e,t=15){;_class7.prototype.__init15.call(this);_class7.prototype.__init16.call(this);this.enableHistory=e;this.maxHistory=t}__init15() {this.history=[]}__init16() {this.historyIndex=-1}saveSnapshot(e){if(!this.enableHistory)return;let t=this.history[this.historyIndex];t&&m(t,e)||(this.historyIndex<this.history.length-1&&(this.history=this.history.slice(0,this.historyIndex+1)),this.history.push(h(e)),this.history.length>this.maxHistory?this.history.shift():this.historyIndex++)}get canUndo(){return this.enableHistory?this.historyIndex>0:!1}get canRedo(){return this.enableHistory?this.historyIndex<this.history.length-1:!1}undo(){return this.canUndo?(this.historyIndex--,h(this.history[this.historyIndex])):null}redo(){return this.canRedo?(this.historyIndex++,h(this.history[this.historyIndex])):null}reset(e){this.history=[],this.historyIndex=-1,this.saveSnapshot(e)}getMetadata(){return{enabled:this.enableHistory,canUndo:this.canUndo,canRedo:this.canRedo,historyIndex:this.historyIndex,historySize:this.history.length}}}, _class7);var R=class{constructor(e){this.store=e}pushItem(e,t){let i=c(this.store.getState().values,e)||[];this.store.setFieldWithMeta(e,[...i,t],{origin:"array",operation:"push"}),this.store.internalSaveSnapshot()}prependItem(e,t){let i=c(this.store.getState().values,e)||[];this.store.setFieldWithMeta(e,[t,...i],{origin:"array",operation:"prepend"}),this.store.internalSaveSnapshot()}insertItem(e,t,i){let r=[...c(this.store.getState().values,e)||[]];r.splice(t,0,i),this.store.setFieldWithMeta(e,r,{origin:"array",operation:"insert",index:t}),this.store.internalSaveSnapshot()}removeItem(e,t){let i=this.store.getState(),r=c(i.values,e);if(!Array.isArray(r))return;let s=[...r];this.store.unregisterPrefix&&this.store.unregisterPrefix(`${e}.${t}.`);let n=r.filter((d,u)=>u!==t),o=p(i.values,e,n),l=this.store.updateDirtyForPath(e,o,this.store.getConfig().initialValues);this.store.internalUpdateState({values:o,errors:U(i.errors,e,t),touched:U(i.touched,e,t),isDirty:l}),this.store.emitFieldChange({path:e,previousValue:s,nextValue:n,values:this.store.getState().values,state:this.store.getState(),meta:{origin:"array",operation:"remove",index:t}}),this.store.internalSaveSnapshot(),this.revalidate(e)}swapItems(e,t,i){let r=this.store.getState(),s=[...c(r.values,e)||[]],n=[...s];[s[t],s[i]]=[s[i],s[t]];let o=p(r.values,e,s),l=this.store.updateDirtyForPath(e,o,this.store.getConfig().initialValues);this.store.internalUpdateState({values:o,errors:$(r.errors,e,t,i),touched:$(r.touched,e,t,i),isDirty:l}),this.store.emitFieldChange({path:e,previousValue:n,nextValue:s,values:this.store.getState().values,state:this.store.getState(),meta:{origin:"array",operation:"swap",from:t,to:i}}),this.store.internalSaveSnapshot(),this.revalidate(e)}moveItem(e,t,i){let r=this.store.getState(),s=[...c(r.values,e)||[]],n=[...s],[o]=s.splice(t,1);s.splice(i,0,o);let l=p(r.values,e,s),d=this.store.updateDirtyForPath(e,l,this.store.getConfig().initialValues);this.store.internalUpdateState({values:l,errors:_(r.errors,e,t,i),touched:_(r.touched,e,t,i),isDirty:d}),this.store.emitFieldChange({path:e,previousValue:n,nextValue:s,values:this.store.getState().values,state:this.store.getState(),meta:{origin:"array",operation:"move",from:t,to:i}}),this.store.internalSaveSnapshot(),this.revalidate(e)}revalidate(e){this.store.triggerValidation([e])}};var I=class{constructor(e,t,i){this.getState=e;this.getInitialValues=t;this.getScopeFields=i}getStepStatus(e){let t=this.getScopeFields(e),i=this.getState(),r=t.some(o=>!!i.errors[o]),s=t.some(o=>{let l=c(i.values,o),d=c(this.getInitialValues(),o);return!f(l,d)}),n=this.getStepErrors(e);return{hasErrors:r,isDirty:s,errors:n}}getStepErrors(e){let t=this.getScopeFields(e),i=this.getState(),r={};for(let s of t){let n=i.errors[s];n&&(r[s]=n)}return r}};var k=class{constructor(e,t,i){this.depsMg=e;this.getState=t;this.getConfig=i}isHidden(e){return this.depsMg.isHidden(e)}isRequired(e){return this.depsMg.isRequired(e,this.getState().values)}isFieldDirty(e){let t=c(this.getState().values,e),i=c(this.getConfig().initialValues,e);return!f(t,i)}isFieldValidating(e){return!!this.getState().isValidating[e]}};var O=class{constructor(e,t){this.getState=e;this.internalUpdateState=t}setError(e,t){let i={...this.getState().errors,[e]:t};t||delete i[e],this.internalUpdateState({errors:i})}setErrors(e){this.internalUpdateState({errors:{...this.getState().errors,...e}})}setServerErrors(e){let t={};for(let[i,r]of Object.entries(e))t[i]=Array.isArray(r)?r[0]:r;this.setErrors(t)}};var H= (_class8 =class{constructor() { _class8.prototype.__init17.call(this); }__init17() {this.capabilities=new Map}register(e,t){this.capabilities.set(e,t)}get(e){let t=this.capabilities.get(e);if(!t)throw new Error(`Capability "${String(e)}" is not registered`);return t}has(e){return this.capabilities.has(e)}clear(){this.capabilities.clear()}}, _class8);function Y(a){let{store:e,depsMg:t}=a,i=new H;return i.register("validation",new M(e)),i.register("lifecycle",new D(e)),i.register("history",new A(!!e.config.enableHistory,_nullishCoalesce(e.config.historyLimit, () => (15)))),i.register("arrays",new R(e)),i.register("scope",new I(()=>e.getState(),()=>e.config.initialValues,r=>e.getScopeFields(r))),i.register("query",new k(t,()=>e.getState(),()=>e.config)),i.register("error",new O(()=>e.getState(),r=>e.internalUpdateState(r))),i}function Z(a){let{storeId:e,storeInstance:t,config:i,getState:r,getConfig:s,getValues:n,getDirtyValues:o,applyPersistedValues:l}=a,d=new F(i.persist,n,o,l),u=[...i.plugins],g=Q(i.devTools);g&&u.push(g);let q=new C(u,()=>({storeId:e,getState:()=>r(),getConfig:()=>s()})),K=new w(e,t,d,q);return K.initialize(),K}function ee(a){let{config:e,depsMg:t,computedMg:i}=a,r=h(e.initialValues);return e.fields&&Object.entries(e.fields).forEach(([n,o])=>{t.register(n,o,r)}),{values:i.apply(r),errors:{},touched:{},isValidating:{},isValid:!0,isSubmitting:!1,isDirty:!1}}var S=class{getCapability(e){return this.capabilities.get(e)}get validation(){return this.getCapability("validation")}get lifecycle(){return this.getCapability("lifecycle")}get history(){return this.getCapability("history")}get arrays(){return this.getCapability("arrays")}get scope(){return this.getCapability("scope")}get query(){return this.getCapability("query")}get error(){return this.getCapability("error")}constructor(e={}){this.config=J(e),this.depsMg=new B,this.computedMg=new V(()=>this.getComputedEntries()),this.dirtyMg=new P,this.capabilities=Y({store:this,depsMg:this.depsMg}),this.state=ee({config:this.config,depsMg:this.depsMg,computedMg:this.computedMg}),this.subscriptions=new E(()=>this.state),this.internalSaveSnapshot(),this.storeId=e.storeId||this.config.name||`bit-form-${Math.random().toString(36).substring(2,9)}`,this.effects=Z({storeId:this.storeId,storeInstance:this,config:this.config,getState:()=>this.getState(),getConfig:()=>this.getConfig(),getValues:()=>this.state.values,getDirtyValues:()=>this.getDirtyValues(),applyPersistedValues:t=>this.applyPersistedValues(t)})}getConfig(){return this.config}getFieldConfig(e){return this.depsMg.fieldConfigs.get(e)||_optionalChain([this, 'access', _67 => _67.config, 'access', _68 => _68.fields, 'optionalAccess', _69 => _69[e]])}getScopeFields(e){let t=[];return this.depsMg.fieldConfigs.forEach((i,r)=>{i.scope===e&&t.push(r)}),t}getComputedEntries(){let e=[];return this.depsMg.fieldConfigs.forEach((t,i)=>{t.computed&&e.push([i,t.computed])}),e}getTransformEntries(){let e=[];return this.depsMg.fieldConfigs.forEach((t,i)=>{t.transform&&e.push([i,t.transform])}),e}resolveMask(e){let t=_optionalChain([this, 'access', _70 => _70.getFieldConfig, 'call', _71 => _71(e), 'optionalAccess', _72 => _72.mask]);if(t)return typeof t=="string"?_optionalChain([this, 'access', _73 => _73.config, 'access', _74 => _74.masks, 'optionalAccess', _75 => _75[t]]):t}getState(){return this.state}getFieldState(e){return{value:c(this.state.values,e),error:this.state.errors[e],touched:!!this.state.touched[e],isHidden:this.isHidden(e),isRequired:this.isRequired(e),isDirty:this.isFieldDirty(e),isValidating:this.isFieldValidating(e)}}get isValid(){return this.state.isValid}get isSubmitting(){return this.state.isSubmitting}get isDirty(){return this.state.isDirty}registerField(e,t){this.depsMg.register(e,t,this.state.values),this.depsMg.isHidden(e)&&this.subscriptions.notify(this.state,["*"])}unregisterField(e){if(_optionalChain([this, 'access', _76 => _76.config, 'access', _77 => _77.fields, 'optionalAccess', _78 => _78[e]]))return;this.depsMg.unregister(e);let t={...this.state.errors},i={...this.state.touched},r=!1;t[e]&&(delete t[e],r=!0),i[e]&&(delete i[e],r=!0),r&&this.internalUpdateState({errors:t,touched:i})}unregisterPrefix(e){this.depsMg.unregisterPrefix(e)}isHidden(e){return this.query.isHidden(e)}isRequired(e){return this.query.isRequired(e)}isFieldDirty(e){return this.query.isFieldDirty(e)}isFieldValidating(e){return this.query.isFieldValidating(e)}subscribe(e){return this.subscriptions.subscribe(e)}subscribeSelector(e,t,i){let r=_nullishCoalesce(_optionalChain([i, 'optionalAccess', _79 => _79.equalityFn]), () => (f));return this.subscriptions.subscribeSelector(e,t,i,r)}subscribePath(e,t,i){let r=[..._nullishCoalesce(_optionalChain([i, 'optionalAccess', _80 => _80.paths]), () => ([])),e];return this.subscribeSelector(s=>c(s.values,e),t,{...i,paths:r})}watch(e,t){return this.subscribePath(e,t,{equalityFn:m})}setField(e,t){this.setFieldWithMeta(e,t,{origin:"setField"})}setFieldWithMeta(e,t,i={origin:"setField"}){this.lifecycle.updateField(e,t,i)}blurField(e){this.internalSaveSnapshot(),this.state.touched[e]||this.internalUpdateState({touched:{...this.state.touched,[e]:!0}}),this.validation.trigger([e])}markFieldsTouched(e){if(e.length===0)return;let t={...this.state.touched};e.forEach(i=>t[i]=!0),this.internalUpdateState({touched:t})}replaceValues(e){this.lifecycle.replaceValues(e)}hydrate(e){this.lifecycle.hydrateValues(e)}rebase(e){this.lifecycle.rebaseValues(e)}setError(e,t){this.error.setError(e,t)}setErrors(e){this.error.setErrors(e)}setServerErrors(e){this.error.setServerErrors(e)}reset(){this.lifecycle.reset()}async submit(e){return this.lifecycle.submit(e)}registerMask(e,t){this.config.masks={...this.config.masks||{},[e]:t}}getDirtyValues(){return this.dirtyMg.buildDirtyValues(this.state.values)}async restorePersisted(){return this.effects.restorePersisted()}async forceSave(){await this.effects.savePersistedNow()}async clearPersisted(){await this.effects.clearPersisted()}pushItem(e,t){this.arrays.pushItem(e,t)}prependItem(e,t){this.arrays.prependItem(e,t)}insertItem(e,t,i){this.arrays.insertItem(e,t,i)}removeItem(e,t){this.arrays.removeItem(e,t)}swapItems(e,t,i){this.arrays.swapItems(e,t,i)}moveItem(e,t,i){this.arrays.moveItem(e,t,i)}get canUndo(){return this.history.canUndo}get canRedo(){return this.history.canRedo}undo(){let e=this.history.undo();if(e){let t=this.dirtyMg.rebuild(e,this.config.initialValues);this.internalUpdateState({values:e,isDirty:t}),this.validation.validate()}}redo(){let e=this.history.redo();if(e){let t=this.dirtyMg.rebuild(e,this.config.initialValues);this.internalUpdateState({values:e,isDirty:t}),this.validation.validate()}}getHistoryMetadata(){return this.history.getMetadata()}validate(e){return this.validation.validate(e)}emitBeforeValidate(e){return this.effects.beforeValidate(e)}emitAfterValidate(e){return this.effects.afterValidate(e)}emitBeforeSubmit(e){return this.effects.beforeSubmit(e)}emitAfterSubmit(e){return this.effects.afterSubmit(e)}emitFieldChange(e){this.effects.onFieldChange(e)}emitOperationalError(e){return this.effects.reportOperationalError(e)}hasValidationsInProgress(e){return this.validation.hasValidationsInProgress(e)}triggerValidation(e){this.validation.trigger(e)}getStepStatus(e){return this.scope.getStepStatus(e)}getStepErrors(e){return this.scope.getStepErrors(e)}updateDependencies(e,t){return this.depsMg.updateDependencies(e,t)}isFieldHidden(e){return this.depsMg.isHidden(e)}evaluateAllDependencies(e){this.depsMg.evaluateAll(e)}getHiddenFields(){return Array.from(this.depsMg.hiddenFields)}getRequiredErrors(e){return this.depsMg.getRequiredErrors(e)}clearFieldValidation(e){this.validation.clear(e)}handleFieldAsyncValidation(e,t){this.validation.handleAsync(e,t)}cancelAllValidations(){this.validation.cancelAll()}validateNow(e){return this.validation.validate(e)}updateDirtyForPath(e,t,i){return this.dirtyMg.updateForPath(e,t,i)}rebuildDirtyState(e,t){return this.dirtyMg.rebuild(e,t)}clearDirtyState(){this.dirtyMg.clear()}buildDirtyValues(e){return this.dirtyMg.buildDirtyValues(e)}resetHistory(e){this.history.reset(e)}internalUpdateState(e,t){let i=X({currentState:this.state,partialState:e,changedPaths:t,applyComputedValues:r=>this.computedMg.apply(r)});this.state=i.nextState,this.subscriptions.notify(this.state,i.changedPaths),this.effects.onStateUpdated(this.state,i.valuesChanged)}internalSaveSnapshot(){this.history.saveSnapshot(this.state.values)}applyPersistedValues(e){let t=h({...this.config.initialValues,...e});this.validation.cancelAll(),this.depsMg.evaluateAll(t);let i=this.dirtyMg.rebuild(t,this.config.initialValues);this.internalUpdateState({values:t,errors:{},touched:{},isValidating:{},isValid:!0,isDirty:i,isSubmitting:!1}),this.internalSaveSnapshot(),this.validation.validate()}cleanup(){this.subscriptions.destroy(),this.validation.cancelAll(),this.capabilities.clear(),this.effects.destroy()}};var L=Symbol.for("bit-form.store.engine");function ae(a){if(a instanceof S)return a;let e=a;return e[L]?e[L]:a}function ne(a={}){let e=new S(a),t={get config(){return e.config},getConfig:()=>e.getConfig(),getState:()=>e.getState(),subscribe:e.subscribe.bind(e),setField:e.setField.bind(e),blurField:e.blurField.bind(e),replaceValues:e.replaceValues.bind(e),hydrate:e.hydrate.bind(e),rebase:e.rebase.bind(e),setError:e.setError.bind(e),setErrors:e.setErrors.bind(e),setServerErrors:e.setServerErrors.bind(e),validate:e.validate.bind(e),reset:e.reset.bind(e),submit:e.submit.bind(e),registerMask:e.registerMask.bind(e),getDirtyValues:e.getDirtyValues.bind(e),restorePersisted:e.restorePersisted.bind(e),forceSave:e.forceSave.bind(e),clearPersisted:e.clearPersisted.bind(e),registerField:e.registerField.bind(e),unregisterField:e.unregisterField.bind(e),isHidden:e.isHidden.bind(e),isRequired:e.isRequired.bind(e),isFieldDirty:e.isFieldDirty.bind(e),isFieldValidating:e.isFieldValidating.bind(e),watch:e.watch.bind(e),pushItem:e.pushItem.bind(e),prependItem:e.prependItem.bind(e),insertItem:e.insertItem.bind(e),removeItem:e.removeItem.bind(e),moveItem:e.moveItem.bind(e),swapItems:e.swapItems.bind(e),getHistoryMetadata:e.getHistoryMetadata.bind(e),undo:e.undo.bind(e),redo:e.redo.bind(e),getStepStatus:e.getStepStatus.bind(e),getStepErrors:e.getStepErrors.bind(e),cleanup:e.cleanup.bind(e)};return Object.defineProperty(t,L,{value:e,enumerable:!1,configurable:!1,writable:!1}),t}exports.a = h; exports.b = b; exports.c = f; exports.d = m; exports.e = c; exports.f = p; exports.g = te; exports.h = G; exports.i = ie; exports.j = T; exports.k = S; exports.l = ae; exports.m = ne;
2
+ //# sourceMappingURL=chunk-JO37BU2C.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/chunk-JO37BU2C.cjs","../src/core/utils.ts"],"names":["deepClone","obj","item","clone","key","deepMerge","target","source","base","sourceValue","baseValue","valueEqual","b","deepEqual","keysA","keysB","collectDirtyPaths","initial","prefix","result","allKeys","k","p"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/chunk-JO37BU2C.cjs","sourcesContent":[null,"export function deepClone<T>(obj: T): T {\n if (obj === null || typeof obj !== \"object\") {\n return obj;\n }\n\n if (obj instanceof Date) {\n return new Date(obj.getTime()) as any as T;\n }\n if (obj instanceof RegExp) {\n return new RegExp(obj.source, obj.flags) as any as T;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => deepClone(item)) as any as T;\n }\n\n const clone: any = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n clone[key] = deepClone((obj as any)[key]);\n }\n }\n return clone as T;\n}\n\nexport function deepMerge<T>(target: T, source: any): T {\n if (source === undefined) {\n return deepClone(target);\n }\n\n if (\n source === null ||\n typeof source !== \"object\" ||\n source instanceof Date ||\n source instanceof RegExp ||\n Array.isArray(source)\n ) {\n return deepClone(source as T);\n }\n\n const base =\n target && typeof target === \"object\" && !Array.isArray(target)\n ? deepClone(target as any)\n : ({} as Record<string, unknown>);\n\n for (const key of Object.keys(source)) {\n const sourceValue = source[key];\n const baseValue = (base as Record<string, unknown>)[key];\n\n if (\n sourceValue !== null &&\n typeof sourceValue === \"object\" &&\n !Array.isArray(sourceValue) &&\n !(sourceValue instanceof Date) &&\n !(sourceValue instanceof RegExp)\n ) {\n (base as Record<string, unknown>)[key] = deepMerge(\n baseValue,\n sourceValue,\n );\n continue;\n }\n\n (base as Record<string, unknown>)[key] = deepClone(sourceValue);\n }\n\n return base as T;\n}\n\n/**\n * Fast equality for single values. Uses === for primitives, deepEqual for objects/arrays.\n * Prefer over deepEqual when comparing a single field value (e.g. isFieldDirty, getStepStatus).\n */\nexport function valueEqual(a: any, b: any): boolean {\n if (a === b) return true;\n if (\n a === null ||\n typeof a !== \"object\" ||\n b === null ||\n typeof b !== \"object\"\n ) {\n return false;\n }\n return deepEqual(a, b);\n}\n\nexport function deepEqual(a: any, b: any): boolean {\n if (a === b) return true;\n if (\n a === null ||\n typeof a !== \"object\" ||\n b === null ||\n typeof b !== \"object\"\n ) {\n return false;\n }\n\n if (a instanceof Date && b instanceof Date)\n return a.getTime() === b.getTime();\n if (a instanceof RegExp && b instanceof RegExp)\n return a.toString() === b.toString();\n\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n\n if (keysA.length !== keysB.length) return false;\n\n for (const key of keysA) {\n if (\n !Object.prototype.hasOwnProperty.call(b, key) ||\n !deepEqual(a[key], b[key])\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Collects all paths where obj differs from initial. Used to rebuild dirtyPaths after full state replacement.\n */\nexport function collectDirtyPaths(\n obj: any,\n initial: any,\n prefix = \"\",\n result: Set<string> = new Set(),\n): Set<string> {\n if (valueEqual(obj, initial)) return result;\n if (\n obj === null ||\n typeof obj !== \"object\" ||\n initial === null ||\n typeof initial !== \"object\"\n ) {\n if (prefix) result.add(prefix);\n return result;\n }\n if (Array.isArray(obj) || Array.isArray(initial)) {\n if (!valueEqual(obj, initial) && prefix) result.add(prefix);\n return result;\n }\n const allKeys = new Set([\n ...Object.keys(obj || {}),\n ...Object.keys(initial || {}),\n ]);\n for (const k of allKeys) {\n const p = prefix ? `${prefix}.${k}` : k;\n collectDirtyPaths((obj as any)?.[k], (initial as any)?.[k], p, result);\n }\n return result;\n}\n\nconst PATH_CACHE_MAX = 1000;\nconst pathCache = new Map<string, string[]>();\n\nexport function getDeepValue(obj: any, path: string): any {\n if (!path) return obj;\n\n let keys = pathCache.get(path);\n if (!keys) {\n keys = path.split(\".\");\n if (pathCache.size >= PATH_CACHE_MAX) {\n pathCache.delete(pathCache.keys().next().value!);\n }\n pathCache.set(path, keys);\n }\n\n let current = obj;\n for (const key of keys) {\n if (current === null || current === undefined) return undefined;\n current = current[key];\n }\n return current;\n}\n\nexport function setDeepValue(obj: any, path: string, value: any): any {\n if (!path) return value;\n\n let keys = pathCache.get(path);\n if (!keys) {\n keys = path.split(\".\");\n if (pathCache.size >= PATH_CACHE_MAX) {\n pathCache.delete(pathCache.keys().next().value!);\n }\n pathCache.set(path, keys);\n }\n\n const result = Array.isArray(obj) ? [...obj] : { ...obj };\n let current = result;\n\n for (let i = 0; i < keys.length - 1; i++) {\n const key = keys[i];\n const nextKey = keys[i + 1];\n\n const isNextNumeric = /^\\d+$/.test(nextKey);\n const currentValue = current[key];\n\n if (currentValue === null || currentValue === undefined) {\n current[key] = isNextNumeric ? [] : {};\n } else {\n current[key] = Array.isArray(currentValue)\n ? [...currentValue]\n : { ...currentValue };\n }\n\n current = current[key];\n }\n\n current[keys[keys.length - 1]] = value;\n\n return result;\n}\n\nexport function cleanPrefixedKeys(\n obj: Record<string, any>,\n prefix: string,\n): Record<string, any> {\n const newObj: Record<string, any> = {};\n const prefixWithDot = `${prefix}.`;\n\n for (const key in obj) {\n if (key !== prefix && !key.startsWith(prefixWithDot)) {\n newObj[key] = obj[key];\n }\n }\n return newObj;\n}\n\nexport const shiftKeys = (\n obj: Record<string, any>,\n path: string,\n removedIndex: number,\n) => {\n const newObj: Record<string, any> = {};\n const prefix = `${path}.`;\n\n Object.keys(obj).forEach((key) => {\n if (!key.startsWith(prefix)) {\n newObj[key] = obj[key];\n return;\n }\n const remaining = key.substring(prefix.length);\n const parts = remaining.split(\".\");\n const currentIdx = parseInt(parts[0], 10);\n const rest = parts.slice(1).join(\".\");\n\n if (currentIdx === removedIndex) return;\n\n if (currentIdx > removedIndex) {\n const newIdx = currentIdx - 1;\n const newKey = rest ? `${prefix}${newIdx}.${rest}` : `${prefix}${newIdx}`;\n newObj[newKey] = obj[key];\n } else {\n newObj[key] = obj[key];\n }\n });\n return newObj;\n};\n\nexport const swapKeys = (\n obj: Record<string, any>,\n path: string,\n indexA: number,\n indexB: number,\n) => {\n const newObj: Record<string, any> = {};\n const prefix = `${path}.`;\n\n Object.keys(obj).forEach((key) => {\n if (!key.startsWith(prefix)) {\n newObj[key] = obj[key];\n return;\n }\n const remaining = key.substring(prefix.length);\n const parts = remaining.split(\".\");\n const currentIdx = parseInt(parts[0], 10);\n const rest = parts.slice(1).join(\".\");\n\n if (currentIdx === indexA) {\n const newKey = rest ? `${prefix}${indexB}.${rest}` : `${prefix}${indexB}`;\n newObj[newKey] = obj[key];\n } else if (currentIdx === indexB) {\n const newKey = rest ? `${prefix}${indexA}.${rest}` : `${prefix}${indexA}`;\n newObj[newKey] = obj[key];\n } else {\n newObj[key] = obj[key];\n }\n });\n return newObj;\n};\n\nexport const moveKeys = (\n obj: Record<string, any>,\n path: string,\n from: number,\n to: number,\n) => {\n const newObj: Record<string, any> = {};\n const prefix = `${path}.`;\n\n Object.keys(obj).forEach((key) => {\n if (!key.startsWith(prefix)) {\n newObj[key] = obj[key];\n return;\n }\n const remaining = key.substring(prefix.length);\n const parts = remaining.split(\".\");\n const currentIdx = parseInt(parts[0], 10);\n const rest = parts.slice(1).join(\".\");\n\n let newIdx = currentIdx;\n if (currentIdx === from) {\n newIdx = to;\n } else if (from < to && currentIdx > from && currentIdx <= to) {\n newIdx = currentIdx - 1;\n } else if (from > to && currentIdx >= to && currentIdx < from) {\n newIdx = currentIdx + 1;\n }\n\n const newKey = rest ? `${prefix}${newIdx}.${rest}` : `${prefix}${newIdx}`;\n newObj[newKey] = obj[key];\n });\n return newObj;\n};\n\n/**\n * Checks if a value looks like a server validation error response.\n * Handles shapes like { email: \"Taken\" }, { errors: { email: [\"Taken\"] } }, etc.\n */\nexport function isValidationErrorShape(\n x: unknown,\n): x is Record<string, string | string[]> {\n if (typeof x !== \"object\" || x === null || Array.isArray(x)) return false;\n\n const obj = (x as Record<string, unknown>).errors ?? x;\n if (typeof obj !== \"object\" || obj === null || Array.isArray(obj))\n return false;\n\n return Object.values(obj as Record<string, unknown>).every(\n (v) =>\n typeof v === \"string\" ||\n (Array.isArray(v) && v.every((i) => typeof i === \"string\")),\n );\n}\n\n/**\n * Extracts server errors in the format expected by setServerErrors.\n */\nexport function extractServerErrors(\n x: unknown,\n): Record<string, string | string[]> {\n if (!isValidationErrorShape(x)) return {};\n\n const obj = (x as Record<string, unknown>).errors ?? x;\n return obj as Record<string, string | string[]>;\n}\n"]}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkJO37BU2Ccjs = require('./chunk-JO37BU2C.cjs');var _chunkPA6T2CBRcjs = require('./chunk-PA6T2CBR.cjs');async function p(t,r,e,n){try{let o=await t(r,e);n.onSuccess(o)}catch(o){if(_chunkJO37BU2Ccjs.h.call(void 0, o)){n.onServerErrors(_chunkJO37BU2Ccjs.i.call(void 0, o));return}n.onUnhandledError(o instanceof Error?o:new Error(String(o)))}}function c(t,r){_optionalChain([t, 'optionalAccess', _ => _.preventDefault, 'optionalCall', _2 => _2()]),_optionalChain([r, 'optionalAccess', _3 => _3.stopPropagation])&&_optionalChain([t, 'optionalAccess', _4 => _4.stopPropagation, 'optionalCall', _5 => _5()])}function E(t,r,e){return{submit:i=>a=>(c(a,e),t.submit(i)),onSubmit:i=>a=>(c(a,e),r.setSubmissionError(null),t.submit(async(b,B)=>{await p(i,b,B,{onSuccess:s=>{r.setSubmissionResult(s),r.setSubmissionError(null)},onServerErrors:s=>{t.setServerErrors(s)},onUnhandledError:s=>{r.setSubmissionError(s)}})})),reset:()=>{t.reset(),r.clearSubmissionState()},getValues:()=>t.getState().values,getErrors:()=>t.getState().errors,getTouched:()=>t.getState().touched,getDirtyValues:()=>t.getDirtyValues()}}function y(t,r,e){return t.subscribeSelector(()=>t.getFieldState(r),e,{paths:[r]})}function x(t,r,e){return{setValue:i=>{t.setField(r,_chunkPA6T2CBRcjs.M.call(void 0, i,e))},setBlur:()=>t.blurField(r),displayValue:i=>_chunkPA6T2CBRcjs.L.call(void 0, i,e)}}exports.a = E; exports.b = y; exports.c = x;
2
+ //# sourceMappingURL=chunk-NNKZFXEK.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/chunk-NNKZFXEK.cjs","../src/core/submit-handler.ts","../src/core/form-controller.ts","../src/core/field-controller.ts"],"names":["executeSubmitHandler","handler","values","dirtyValues","handlers","result","error","isValidationErrorShape","extractServerErrors","preventFormEvent","event","options","createFormController","store","runtime","onSuccess","serverErrors","subscribeFieldState","path","listener","createMaskedFieldController","mask","value","parseMaskedInput","formatMaskedValue"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/chunk-NNKZFXEK.cjs","sourcesContent":[null,"import { extractServerErrors, isValidationErrorShape } from \"./utils\";\n\nexport interface BitSubmitExecutionHandlers {\n onServerErrors: (errors: Record<string, string[] | string>) => void;\n onUnhandledError: (error: Error) => void;\n onSuccess: (result: unknown) => void;\n}\n\nexport async function executeSubmitHandler<T extends object>(\n handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>,\n values: T,\n dirtyValues: Partial<T> | undefined,\n handlers: BitSubmitExecutionHandlers,\n): Promise<void> {\n try {\n const result = await handler(values, dirtyValues);\n handlers.onSuccess(result);\n } catch (error) {\n if (isValidationErrorShape(error)) {\n handlers.onServerErrors(extractServerErrors(error));\n return;\n }\n\n handlers.onUnhandledError(\n error instanceof Error ? error : new Error(String(error)),\n );\n }\n}\n","import { executeSubmitHandler } from \"./submit-handler\";\nimport type { BitStoreHooksApi } from \"./store/public-types\";\n\nexport type BitFormDomEvent = {\n preventDefault?: () => void;\n stopPropagation?: () => void;\n};\n\nexport interface BitFormControllerRuntime {\n clearSubmissionState: () => void;\n setSubmissionResult: (result: unknown) => void;\n setSubmissionError: (error: Error | null) => void;\n}\n\nexport interface BitFormControllerOptions {\n stopPropagation?: boolean;\n}\n\nexport function preventFormEvent(\n event?: BitFormDomEvent,\n options?: BitFormControllerOptions,\n) {\n event?.preventDefault?.();\n if (options?.stopPropagation) {\n event?.stopPropagation?.();\n }\n}\n\nexport function createFormController<T extends object>(\n store: BitStoreHooksApi<T>,\n runtime: BitFormControllerRuntime,\n options?: BitFormControllerOptions,\n) {\n const submit = (\n onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>,\n ) => {\n return (event?: BitFormDomEvent) => {\n preventFormEvent(event, options);\n return store.submit(onSuccess);\n };\n };\n\n const onSubmit = (\n handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>,\n ) => {\n return (event?: BitFormDomEvent) => {\n preventFormEvent(event, options);\n runtime.setSubmissionError(null);\n\n return store.submit(async (values, dirtyValues) => {\n await executeSubmitHandler(handler, values, dirtyValues, {\n onSuccess: (result) => {\n runtime.setSubmissionResult(result);\n runtime.setSubmissionError(null);\n },\n onServerErrors: (serverErrors) => {\n store.setServerErrors(serverErrors);\n },\n onUnhandledError: (error) => {\n runtime.setSubmissionError(error);\n },\n });\n });\n };\n };\n\n const reset = () => {\n store.reset();\n runtime.clearSubmissionState();\n };\n\n return {\n submit,\n onSubmit,\n reset,\n getValues: () => store.getState().values,\n getErrors: () => store.getState().errors,\n getTouched: () => store.getState().touched,\n getDirtyValues: () => store.getDirtyValues(),\n };\n}\n","import { formatMaskedValue, parseMaskedInput } from \"./mask/field-binding\";\nimport type { BitMask } from \"./mask/types\";\nimport type { BitStoreHooksApi } from \"./store/public-types\";\nimport type { BitFieldState, BitPath, BitPathValue } from \"./store/types\";\n\nexport function subscribeFieldState<\n TForm extends object,\n P extends BitPath<TForm>,\n>(\n store: BitStoreHooksApi<TForm>,\n path: P,\n listener: (\n value: Readonly<BitFieldState<TForm, BitPathValue<TForm, P>>>,\n ) => void,\n) {\n return store.subscribeSelector(\n () =>\n store.getFieldState(path) as Readonly<\n BitFieldState<TForm, BitPathValue<TForm, P>>\n >,\n listener,\n { paths: [path as string] },\n );\n}\n\nexport function createMaskedFieldController<\n TForm extends object,\n P extends BitPath<TForm>,\n>(store: BitStoreHooksApi<TForm>, path: P, mask: BitMask | undefined) {\n const setValue = (value: unknown) => {\n store.setField(\n path,\n parseMaskedInput(value, mask) as BitPathValue<TForm, P>,\n );\n };\n\n const setBlur = () => store.blurField(path);\n\n const displayValue = (value: unknown) => formatMaskedValue(value, mask);\n\n return {\n setValue,\n setBlur,\n displayValue,\n };\n}\n"]}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var X={"#":/\d/,A:/[a-zA-Z]/,X:/[a-zA-Z0-9]/,H:/[0-9a-fA-F]/,U:/[A-Z]/,L:/[a-z]/,"*":/./},h= exports.a =(e,t)=>{if(e==null||e==="")return"";let s=String(e),p=s.startsWith("-"),n=t?t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"):"",c=new RegExp(`[^a-zA-Z0-9${n}]`,"g"),m=s.replace(c,"");return p&&m&&!m.startsWith("-")?`-${m}`:m},te= exports.b =(e,t=2)=>{if(typeof e=="number")return e;if(!e)return 0;let s=String(e),p=s.includes("-"),n=s.replace(/\D/g,"");if(!n)return 0;let c=parseInt(n,10)/Math.pow(10,t);return p?-c:c},a= exports.c =(e,t)=>{let s=o=>o.split("").filter(r=>X[r]).length,n=[...Array.isArray(e)?e:[e]].sort((o,r)=>s(o)-s(r)),c=o=>{let r=n[n.length-1];for(let i of n)if(o<=s(i)){r=i;break}return r},m=o=>{let r=h(o,_optionalChain([t, 'optionalAccess', _2 => _2.allowChars]));if(!r&&!_optionalChain([t, 'optionalAccess', _3 => _3.guide]))return"";let i=c(r.length),k=_optionalChain([t, 'optionalAccess', _4 => _4.guide])||!1,g=_optionalChain([t, 'optionalAccess', _5 => _5.placeholderChar])||"_",u="",H=0;for(let d=0;d<i.length;d++){let x=i[d],C=X[x];if(H<r.length){let f=r[H];if(C)if(x==="U"&&(f=f.toUpperCase()),x==="L"&&(f=f.toLowerCase()),C.test(f))u+=f,H++;else if(k)u+=g;else break;else u+=x,f===x&&H++}else if(k)u+=C?g:x;else break}return u};return{format:m,parse:o=>{if(_optionalChain([t, 'optionalAccess', _6 => _6.customParse]))return t.customParse(o);let r=m(o);if(_optionalChain([t, 'optionalAccess', _7 => _7.saveRaw])){if(_optionalChain([t, 'optionalAccess', _8 => _8.guide])){let k=(t.placeholderChar||"_").replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),g=new RegExp(k,"g");return r.replace(g,"")}return r}return h(r,_optionalChain([t, 'optionalAccess', _9 => _9.allowChars]))}}},l= exports.d =({prefix:e="",suffix:t="",thousand:s,decimal:p,precision:n=2,allowNegative:c=!0,saveRaw:m=!1})=>{let o=r=>{if(r==null||r==="")return"";let i="";if(typeof r=="number"?i=Math.abs(r).toFixed(n).replace(/\D/g,""):i=String(r).replace(/\D/g,""),!i&&String(r).includes("-")&&c)return"-";if(!i)return"";i=i.padStart(n+1,"0");let k=n>0?i.slice(0,-n).replace(/^0+(?=\d)/,"")||"0":i.replace(/^0+(?=\d)/,"")||"0",g=n>0?i.slice(-n):"",u=k.replace(/\B(?=(\d{3})+(?!\d))/g,s),d=(typeof r=="number"?r<0:String(r).includes("-"))&&c?"-":"";return n===0?`${d}${e}${u}${t}`:`${d}${e}${u}${p}${g}${t}`};return{format:o,parse:r=>{let i=te(r,n),k=c?i:Math.abs(i);return m?o(k):k}}},$= exports.e =e=>{let t=s=>/^3[47]/.test(s)?"#### ###### #####":/^3(?:0[0-5]|[68])/.test(s)?"#### ###### ####":"#### #### #### ####";return{format:s=>{let p=h(s,_optionalChain([e, 'optionalAccess', _10 => _10.allowChars])),n=t(p);return a(n,e).format(s)},parse:s=>{let p=h(s,_optionalChain([e, 'optionalAccess', _11 => _11.allowChars])),n=t(p);return a(n,e).parse(s)}}},M= exports.f =e=>{let s=(_optionalChain([e, 'optionalAccess', _12 => _12.format])||"DD/MM/YYYY")==="YYYY-MM-DD",p=a(s?"####-##-##":"##/##/####",e);return{format:n=>{let c=h(n);if(!c)return"";let m="",o="",r="";if(s?(r=c.substring(0,4),o=c.substring(4,6),m=c.substring(6,8)):(m=c.substring(0,2),o=c.substring(2,4),r=c.substring(4,8)),m.length===2){let k=parseInt(m,10);k>31&&(m="31"),k===0&&(m="01")}if(o.length===2){let k=parseInt(o,10);k>12&&(o="12"),k===0&&(o="01")}let i=s?`${r}${o}${m}`:`${m}${o}${r}`;return p.format(i)},parse:n=>p.parse(n)}};var y=l({prefix:"R$ ",thousand:".",decimal:",",precision:2}),D= exports.h =l({prefix:"$",thousand:",",decimal:".",precision:2}),S= exports.i =l({suffix:" \u20AC",thousand:".",decimal:",",precision:2}),b= exports.j =l({prefix:"\xA3",thousand:",",decimal:".",precision:2}),B= exports.k =l({prefix:"\xA5",thousand:",",decimal:".",precision:0}),I= exports.l =l({suffix:"%",thousand:".",decimal:",",precision:1}),Y= exports.m =l({thousand:".",decimal:",",precision:2}),P= exports.n =l({thousand:".",decimal:",",precision:0}),A= exports.o =a("###.###.###-##"),R= exports.p =a("##.###.###/####-##"),U= exports.q =a(["(##) ####-####","(##) #####-####"]),N= exports.r =a("(##) ####-####"),V= exports.s =a("#####-###"),w= exports.t =M({format:"DD/MM/YYYY",guide:!0,customParse:e=>{let t=e.replace(/_/g,""),s=t.split("/");return s.length===3&&s[2].length===4?`${s[2]}-${s[1]}-${s[0]}`:t.replace(/\D/g,"")}}),Z= exports.u =a("##:##"),L= exports.v =a("###########"),z= exports.w =a("##.###.###-X"),E= exports.x =a(["###.###.###-##","##.###.###/####-##"]),F= exports.y ={format(e){let t=String(_nullishCoalesce(e, () => (""))).replace(/[^a-zA-Z0-9]/g,"").toUpperCase().slice(0,7);if(t.length===0)return"";let s=t.slice(0,3),p=t.slice(3);return p.length===0?s:p.length>=2&&/[A-Z]/.test(p[1])?`${s}${p}`:`${s}-${p}`},parse(e){return String(_nullishCoalesce(e, () => (""))).replace(/[^a-zA-Z0-9]/g,"").toUpperCase().slice(0,7)}},O= exports.z =a("(###) ###-####"),J= exports.A =a("#####-####"),T= exports.B =a("##/##/####"),G= exports.C =a("###-##-####"),j= exports.D =$(),_= exports.E =a("####"),W= exports.F =M({format:"YYYY-MM-DD",saveRaw:!0,guide:!0}),q= exports.G =a("HH:HH:HH:HH:HH:HH"),K= exports.H =a("#HHHHHH"),Q= exports.I =a("###.###.###.###"),v= exports.J =a("HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH"),ee= exports.K =a("UU## XXXX XXXX XXXX XXXX XXXX XXXX XXXX XX",{allowChars:" "});var ae=(e,t)=>e==null||e===""?"":t?t.format(e):String(e),oe= exports.M =(e,t)=>t?t.parse(String(_nullishCoalesce(e, () => ("")))):e;var ce={brl:y,usd:D,eur:S,gbp:b,jpy:B,percent:I,decimal:Y,int:P,integer:P,cpf:A,cnpj:R,cpfCnpj:E,rg:z,cep:V,cnh:L,plate:F,phone:U,landline:N,date:w,time:Z,usPhone:O,zipCode:J,dateUS:T,ssn:G,cc:j,cvv:_,dateISO:W,ip:Q,ipv6:v,mac:q,color:K,iban:ee};exports.a = h; exports.b = te; exports.c = a; exports.d = l; exports.e = $; exports.f = M; exports.g = y; exports.h = D; exports.i = S; exports.j = b; exports.k = B; exports.l = I; exports.m = Y; exports.n = P; exports.o = A; exports.p = R; exports.q = U; exports.r = N; exports.s = V; exports.t = w; exports.u = Z; exports.v = L; exports.w = z; exports.x = E; exports.y = F; exports.z = O; exports.A = J; exports.B = T; exports.C = G; exports.D = j; exports.E = _; exports.F = W; exports.G = q; exports.H = K; exports.I = Q; exports.J = v; exports.K = ee; exports.L = ae; exports.M = oe; exports.N = ce;
2
+ //# sourceMappingURL=chunk-PA6T2CBR.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/mask/creators.ts"],"names":["tokens","unmask","value","allowChars","stringValue","isNegative","escapedChars","regex","clean"],"mappings":"AASA,qrBAAMA,CAAAA,CAAmB,CACvB,GAAA,CAAK,IAAA,CACL,CAAA,CAAG,UAAA,CACH,CAAA,CAAG,aAAA,CACH,CAAA,CAAG,aAAA,CACH,CAAA,CAAG,OAAA,CACH,CAAA,CAAG,OAAA,CACH,GAAA,CAAK,GACP,CAAA,CAEaC,CAAAA,aAAS,CACpBC,CAAAA,CACAC,CAAAA,CAAAA,EACW,CACX,EAAA,CAAID,CAAAA,EAAU,IAAA,EAA+BA,CAAAA,GAAU,EAAA,CAAI,MAAO,EAAA,CAClE,IAAME,CAAAA,CAAc,MAAA,CAAOF,CAAK,CAAA,CAC1BG,CAAAA,CAAaD,CAAAA,CAAY,UAAA,CAAW,GAAG,CAAA,CAEvCE,CAAAA,CAAeH,CAAAA,CACjBA,CAAAA,CAAW,OAAA,CAAQ,qBAAA,CAAuB,MAAM,CAAA,CAChD,EAAA,CACEI,CAAAA,CAAQ,IAAI,MAAA,CAAO,CAAA,WAAA,EAAcD,CAAY,CAAA,CAAA,CAAA,CAAK,GAAG,CAAA,CAErDE,CAAAA,CAAQJ,CAAAA,CAAY,OAAA,CAAQG,CAAAA,CAAO,EAAE,CAAA,CAC3C,OAAOF,CAAAA,EAAcG,CAAAA,EAAS,CAACA,CAAAA,CAAM,UAAA,CAAW,GAAG,CAAA,CAAI,CAAA,CAAA,EAAIA,CAAK,CAAA,CAAA","file":"/home/runner/work/bit-form/bit-form/dist/chunk-PA6T2CBR.cjs","sourcesContent":["import {\n BitMask,\n CurrencyMaskConfig,\n DateMaskConfig,\n PatternMaskOptions,\n} from \"./types\";\n\ntype TokenMap = Record<string, RegExp>;\n\nconst tokens: TokenMap = {\n \"#\": /\\d/,\n A: /[a-zA-Z]/,\n X: /[a-zA-Z0-9]/,\n H: /[0-9a-fA-F]/,\n U: /[A-Z]/,\n L: /[a-z]/,\n \"*\": /./,\n};\n\nexport const unmask = (\n value: string | number | null | undefined,\n allowChars?: string,\n): string => {\n if (value === null || value === undefined || value === \"\") return \"\";\n const stringValue = String(value);\n const isNegative = stringValue.startsWith(\"-\");\n\n const escapedChars = allowChars\n ? allowChars.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\n : \"\";\n const regex = new RegExp(`[^a-zA-Z0-9${escapedChars}]`, \"g\");\n\n const clean = stringValue.replace(regex, \"\");\n return isNegative && clean && !clean.startsWith(\"-\") ? `-${clean}` : clean;\n};\n\nexport const unmaskCurrency = (value: any, precision = 2): number => {\n if (typeof value === \"number\") return value;\n if (!value) return 0;\n\n const stringValue = String(value);\n const isNegative = stringValue.includes(\"-\");\n const digits = stringValue.replace(/\\D/g, \"\");\n\n if (!digits) return 0;\n\n const numberValue = parseInt(digits, 10) / Math.pow(10, precision);\n return isNegative ? -numberValue : numberValue;\n};\n\nexport const createPatternMask = (\n pattern: string | string[],\n options?: PatternMaskOptions,\n): BitMask => {\n const getRawLength = (p: string) =>\n p.split(\"\").filter((c) => tokens[c]).length;\n\n const patterns = Array.isArray(pattern) ? pattern : [pattern];\n const sortedPatterns = [...patterns].sort(\n (a, b) => getRawLength(a) - getRawLength(b),\n );\n\n const getActivePattern = (rawValueLength: number) => {\n let activePattern = sortedPatterns[sortedPatterns.length - 1];\n for (const candidate of sortedPatterns) {\n if (rawValueLength <= getRawLength(candidate)) {\n activePattern = candidate;\n break;\n }\n }\n return activePattern;\n };\n\n const formatValue = (value: string | number | null | undefined): string => {\n const stringVal = unmask(value, options?.allowChars);\n\n if (!stringVal && !options?.guide) {\n return \"\";\n }\n\n const activePattern = getActivePattern(stringVal.length);\n const showGuide = options?.guide || false;\n const placeholder = options?.placeholderChar || \"_\";\n\n let masked = \"\";\n let valueIndex = 0;\n\n for (let i = 0; i < activePattern.length; i++) {\n const patternChar = activePattern[i];\n const token = tokens[patternChar];\n\n if (valueIndex < stringVal.length) {\n let dataChar = stringVal[valueIndex];\n\n if (token) {\n if (patternChar === \"U\") dataChar = dataChar.toUpperCase();\n if (patternChar === \"L\") dataChar = dataChar.toLowerCase();\n\n if (token.test(dataChar)) {\n masked += dataChar;\n valueIndex++;\n } else if (showGuide) {\n masked += placeholder;\n } else {\n break;\n }\n } else {\n masked += patternChar;\n if (dataChar === patternChar) valueIndex++;\n }\n } else if (showGuide) {\n masked += token ? placeholder : patternChar;\n } else {\n break;\n }\n }\n\n return masked;\n };\n\n return {\n format: formatValue,\n parse: (value: string) => {\n if (options?.customParse) return options.customParse(value);\n\n const formatted = formatValue(value);\n\n if (options?.saveRaw) {\n if (options?.guide) {\n const placeholder = options.placeholderChar || \"_\";\n const escapedPlaceholder = placeholder.replace(\n /[.*+?^${}()|[\\]\\\\]/g,\n \"\\\\$&\",\n );\n const placeholderRegex = new RegExp(escapedPlaceholder, \"g\");\n\n return formatted.replace(placeholderRegex, \"\");\n }\n\n return formatted;\n }\n\n return unmask(formatted, options?.allowChars);\n },\n };\n};\n\nexport const createCurrencyMask = ({\n prefix = \"\",\n suffix = \"\",\n thousand,\n decimal,\n precision = 2,\n allowNegative = true,\n saveRaw = false,\n}: CurrencyMaskConfig): BitMask => {\n const formatFn = (value: any) => {\n if (value === undefined || value === null || value === \"\") return \"\";\n\n let stringValue = \"\";\n\n if (typeof value === \"number\") {\n stringValue = Math.abs(value).toFixed(precision).replace(/\\D/g, \"\");\n } else {\n stringValue = String(value).replace(/\\D/g, \"\");\n }\n\n if (!stringValue && String(value).includes(\"-\") && allowNegative)\n return \"-\";\n if (!stringValue) return \"\";\n\n stringValue = stringValue.padStart(precision + 1, \"0\");\n\n const integerPart =\n precision > 0\n ? stringValue.slice(0, -precision).replace(/^0+(?=\\d)/, \"\") || \"0\"\n : stringValue.replace(/^0+(?=\\d)/, \"\") || \"0\";\n const decimalPart = precision > 0 ? stringValue.slice(-precision) : \"\";\n\n const formattedInteger = integerPart.replace(\n /\\B(?=(\\d{3})+(?!\\d))/g,\n thousand,\n );\n\n const isNegative =\n typeof value === \"number\" ? value < 0 : String(value).includes(\"-\");\n const sign = isNegative && allowNegative ? \"-\" : \"\";\n\n if (precision === 0) {\n return `${sign}${prefix}${formattedInteger}${suffix}`;\n }\n\n return `${sign}${prefix}${formattedInteger}${decimal}${decimalPart}${suffix}`;\n };\n\n return {\n format: formatFn,\n parse: (value: string) => {\n const numericValue = unmaskCurrency(value, precision);\n const finalNumber = !allowNegative\n ? Math.abs(numericValue)\n : numericValue;\n if (saveRaw) return formatFn(finalNumber);\n return finalNumber;\n },\n };\n};\n\nexport const createCreditCardMask = (options?: PatternMaskOptions): BitMask => {\n // Função auxiliar para descobrir o padrão dinamicamente\n const getCardPattern = (rawValue: string) => {\n // Amex (American Express) começa com 34 ou 37 -> 15 dígitos\n if (/^3[47]/.test(rawValue)) {\n return \"#### ###### #####\";\n }\n // Diners Club começa com 300-305, 36 ou 38 -> 14 dígitos\n if (/^3(?:0[0-5]|[68])/.test(rawValue)) {\n return \"#### ###### ####\";\n }\n // Default: Visa, Mastercard, Discover, Elo, etc -> 16 dígitos\n return \"#### #### #### ####\";\n };\n\n return {\n format: (value: any) => {\n const stringVal = unmask(value, options?.allowChars);\n const pattern = getCardPattern(stringVal);\n const mask = createPatternMask(pattern, options);\n return mask.format(value);\n },\n parse: (value: string) => {\n const stringVal = unmask(value, options?.allowChars);\n const pattern = getCardPattern(stringVal);\n\n const mask = createPatternMask(pattern, options);\n return mask.parse(value);\n },\n };\n};\n\nexport const createDateMask = (config?: DateMaskConfig): BitMask => {\n const formatType = config?.format || \"DD/MM/YYYY\";\n const isISO = formatType === \"YYYY-MM-DD\";\n\n // Criamos a máscara base consoante o formato escolhido\n const baseMask = createPatternMask(\n isISO ? \"####-##-##\" : \"##/##/####\",\n config,\n );\n\n return {\n format: (value: any) => {\n let stringVal = unmask(value);\n if (!stringVal) return \"\";\n\n let day = \"\";\n let month = \"\";\n let year = \"\";\n\n // Separamos os componentes consoante o que o utilizador já digitou\n if (isISO) {\n year = stringVal.substring(0, 4);\n month = stringVal.substring(4, 6);\n day = stringVal.substring(6, 8);\n } else {\n day = stringVal.substring(0, 2);\n month = stringVal.substring(2, 4);\n year = stringVal.substring(4, 8);\n }\n\n // Validação do Dia (01 a 31)\n if (day.length === 2) {\n const d = parseInt(day, 10);\n if (d > 31) day = \"31\";\n if (d === 0) day = \"01\";\n }\n\n // Validação do Mês (01 a 12)\n if (month.length === 2) {\n const m = parseInt(month, 10);\n if (m > 12) month = \"12\";\n if (m === 0) month = \"01\";\n }\n\n // Reconstruímos a string limpa e passamos para o pattern normal\n const safeString = isISO\n ? `${year}${month}${day}`\n : `${day}${month}${year}`;\n\n return baseMask.format(safeString);\n },\n parse: (value: string) => {\n // Usamos a funcionalidade completa da máscara base (incluindo o saveRaw e o unmasking)\n return baseMask.parse(value);\n },\n };\n};\n"]}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunkNNKZFXEKcjs = require('./chunk-NNKZFXEK.cjs');var _chunkJO37BU2Ccjs = require('./chunk-JO37BU2C.cjs');var _react = require('react');var _jsxruntime = require('react/jsx-runtime');var A=_react.createContext.call(void 0, null),at= exports.a =({store:t,children:e})=>_jsxruntime.jsx.call(void 0, A.Provider,{value:_chunkJO37BU2Ccjs.l.call(void 0, t),children:e}),b= exports.b =()=>{let t=_react.useContext.call(void 0, A);if(!t)throw new Error("BitForm hooks devem ser usados dentro de um BitFormProvider");return t};function St(){let t=b(),[e,s]=_react.useState.call(void 0, null),[m,o]=_react.useState.call(void 0, null),n=_react.useRef.call(void 0, null),u=_react.useCallback.call(void 0, ()=>{let g=t.getState(),y={isValid:g.isValid,isDirty:g.isDirty,isSubmitting:g.isSubmitting};return n.current&&n.current.isValid===y.isValid&&n.current.isDirty===y.isDirty&&n.current.isSubmitting===y.isSubmitting?n.current:(n.current=y,y)},[t]),c=_react.useCallback.call(void 0, g=>t.subscribeSelector(y=>({isValid:y.isValid,isDirty:y.isDirty,isSubmitting:y.isSubmitting}),()=>g()),[t]),i=_react.useSyncExternalStore.call(void 0, c,u,u),r=_react.useMemo.call(void 0, ()=>_chunkNNKZFXEKcjs.a.call(void 0, t,{clearSubmissionState:()=>{s(null),o(null)},setSubmissionResult:g=>{o(g)},setSubmissionError:g=>{s(g)}}),[t]),a=_react.useCallback.call(void 0, r.submit,[r]),l=_react.useCallback.call(void 0, r.onSubmit,[r]),d=_react.useCallback.call(void 0, r.reset,[r]),F=_react.useCallback.call(void 0, r.getValues,[r]),v=_react.useCallback.call(void 0, r.getErrors,[r]),S=_react.useCallback.call(void 0, r.getTouched,[r]),f=_react.useCallback.call(void 0, r.getDirtyValues,[r]);return{meta:_react.useMemo.call(void 0, ()=>({...i,submitError:e,lastResponse:m}),[i,e,m]),getValues:F,getErrors:v,getTouched:S,getDirtyValues:f,submit:a,onSubmit:l,reset:d,setField:t.setField.bind(t),blurField:t.blurField.bind(t),replaceValues:t.replaceValues.bind(t),hydrate:t.hydrate.bind(t),rebase:t.rebase.bind(t),setError:t.setError.bind(t),setErrors:t.setErrors.bind(t),setServerErrors:t.setServerErrors.bind(t),validate:t.validate.bind(t)}}var B=()=>Math.random().toString(36).substring(2,9);function Ft(t){let e=b(),s=_react.useCallback.call(void 0, ()=>{let r=e.getState(),a=_chunkJO37BU2Ccjs.e.call(void 0, r.values,t);return Array.isArray(a)?a:[]},[e,t]),m=_react.useCallback.call(void 0, r=>e.subscribePath(t,()=>r()),[e,t]),o=_react.useSyncExternalStore.call(void 0, m,s,s),[n,u]=_react.useState.call(void 0, ()=>o.map(B));_react.useEffect.call(void 0, ()=>{o.length!==n.length&&u(r=>{if(o.length>r.length){let a=o.length-r.length;return[...r,...Array(a).fill(null).map(B)]}return r.slice(0,o.length)})},[o.length]);let c=_react.useMemo.call(void 0, ()=>({append:r=>{u(a=>[...a,B()]),e.pushItem(t,r)},prepend:r=>{u(a=>[B(),...a]),e.prependItem(t,r)},insert:(r,a)=>{u(l=>{let d=[...l];return d.splice(r,0,B()),d}),e.insertItem(t,r,a)},remove:r=>{u(a=>a.filter((l,d)=>d!==r)),e.removeItem(t,r)},move:(r,a)=>{u(l=>{let d=[...l],[F]=d.splice(r,1);return d.splice(a,0,F),d}),e.moveItem(t,r,a)},swap:(r,a)=>{u(l=>{let d=[...l];return[d[r],d[a]]=[d[a],d[r]],d}),e.swapItems(t,r,a)},replace:r=>{u(r.map(B)),e.setField(t,r)},clear:()=>{u([]),e.setField(t,[])}}),[e,t]);return{fields:_react.useMemo.call(void 0, ()=>o.map((r,a)=>({key:n[a]||`temp-${a}`,value:r,index:a})),[o,n]),length:o.length,...c}}function Tt(t){let e=b(),s=_react.useRef.call(void 0, null),m=_react.useCallback.call(void 0, ()=>{let c=e.getStepStatus(t);return s.current&&s.current.hasErrors===c.hasErrors&&s.current.isDirty===c.isDirty&&Object.keys(s.current.errors).length===Object.keys(c.errors).length&&Object.entries(c.errors).every(([i,r])=>s.current.errors[i]===r)?s.current:(s.current=c,c)},[e,t]),o=_react.useSyncExternalStore.call(void 0, e.subscribe.bind(e),m,m),n=_react.useCallback.call(void 0, async()=>{let c=await e.validate({scope:t}),i=e.getStepErrors(t);return{valid:c,errors:i}},[e,t]),u=_react.useCallback.call(void 0, ()=>e.getStepErrors(t),[e,t]);return{scopeName:t,status:o,errors:o.errors,validate:n,getErrors:u,isValid:!o.hasErrors,isDirty:o.isDirty}}function Dt(t){let e=b(),[s,m]=_react.useState.call(void 0, 0),o=_nullishCoalesce(t[s], () => ("")),n=_react.useRef.call(void 0, null),u=_react.useCallback.call(void 0, ()=>{let S=e.getStepStatus(o);return n.current&&n.current.hasErrors===S.hasErrors&&n.current.isDirty===S.isDirty&&Object.keys(n.current.errors).length===Object.keys(S.errors).length&&Object.entries(S.errors).every(([f,h])=>n.current.errors[f]===h)?n.current:(n.current=S,S)},[e,o]),c=_react.useSyncExternalStore.call(void 0, e.subscribe.bind(e),u,u),i=_react.useCallback.call(void 0, async()=>{let S=await e.validate({scope:o}),f=e.getStepErrors(o);return{valid:S,errors:f}},[e,o]),r=_react.useCallback.call(void 0, ()=>e.getStepErrors(o),[e,o]),a=_react.useCallback.call(void 0, async()=>{let S=e.getScopeFields(o);if(e.hasValidationsInProgress(S))return!1;let f=await e.validate({scope:o});if(f)m(h=>Math.min(h+1,t.length-1));else{let h=e.getStepErrors(o),g=Object.keys(h);g.length>0&&e.markFieldsTouched(g)}return f},[e,o,t.length]),l=_react.useCallback.call(void 0, ()=>{m(S=>Math.max(S-1,0))},[]),d=_react.useCallback.call(void 0, S=>{m(Math.max(0,Math.min(S-1,t.length-1)))},[t.length]),F=s===0,v=s>=t.length-1;return{step:s+1,stepIndex:s,scope:o,next:a,prev:l,goTo:d,isFirst:F,isLast:v,status:c,errors:c.errors,isValid:!c.hasErrors,isDirty:c.isDirty,validate:i,getErrors:r}}function Ht(t){let e=b(),s=_react.useRef.call(void 0, null),m=_react.useCallback.call(void 0, ()=>{let n=_chunkJO37BU2Ccjs.e.call(void 0, e.getState().values,t);return s.current!==null&&_chunkJO37BU2Ccjs.d.call(void 0, s.current,n)?s.current:(s.current=n,n)},[e,t]),o=_react.useCallback.call(void 0, n=>e.subscribe(n),[e]);return _react.useSyncExternalStore.call(void 0, o,m,m)}function Lt(){let t=b(),[e,s]=_react.useState.call(void 0, !1),[m,o]=_react.useState.call(void 0, !1),[n,u]=_react.useState.call(void 0, null),c=_react.useCallback.call(void 0, async()=>{o(!0),u(null);try{return await t.restorePersisted()}catch(l){return u(l instanceof Error?l:new Error(String(l))),!1}finally{o(!1)}},[t]),i=_react.useCallback.call(void 0, async()=>{s(!0),u(null);try{await t.forceSave()}catch(l){u(l instanceof Error?l:new Error(String(l)))}finally{s(!1)}},[t]),r=_react.useCallback.call(void 0, async()=>{u(null);try{await t.clearPersisted()}catch(l){u(l instanceof Error?l:new Error(String(l)))}},[t]),a=_react.useMemo.call(void 0, ()=>({isSaving:e,isRestoring:m,error:n}),[e,m,n]);return{restore:c,save:i,clear:r,meta:a}}function Gt(t){let e=b(),s=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>()=>{e.unregisterField&&e.unregisterField(t)},[e,t]);let m=_react.useCallback.call(void 0, ()=>{let i=e.getFieldState(t);if(s.current&&s.current.value===i.value&&s.current.error===i.error&&s.current.touched===i.touched&&s.current.isHidden===i.isHidden&&s.current.isRequired===i.isRequired&&s.current.isDirty===i.isDirty&&s.current.isValidating===i.isValidating)return s.current;let r={value:i.value,error:i.error,touched:i.touched,isHidden:i.isHidden,isRequired:i.isRequired,isDirty:i.isDirty,isValidating:i.isValidating};return s.current=r,r},[e,t]),o=_react.useCallback.call(void 0, i=>_chunkNNKZFXEKcjs.b.call(void 0, e,t,()=>i()),[e,t]),n=_react.useSyncExternalStore.call(void 0, o,m,m),u=_react.useCallback.call(void 0, i=>e.setField(t,i),[e,t]),c=_react.useCallback.call(void 0, ()=>e.blurField(t),[e,t]);return{fieldState:n,setValue:u,setBlur:c,store:e}}exports.a = at; exports.b = b; exports.c = St; exports.d = Gt; exports.e = Ft; exports.f = Tt; exports.g = Dt; exports.h = Ht; exports.i = Lt;
2
+ //# sourceMappingURL=chunk-T3XN5O7V.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/chunk-T3XN5O7V.cjs","../src/react/context.tsx","../src/react/use-bit-form.ts","../src/react/use-bit-array.ts"],"names":["BitContext","createContext","BitFormProvider","store","children","jsx","resolveBitStoreForHooks","useBitStore","useContext","useBitForm","submitError","setSubmitError","useState","lastResponse","setLastResponse","lastMeta","useRef","getMetaSnapshot","useCallback","state","nextMeta","subscribeMeta","cb","metaState","useSyncExternalStore","controller","useMemo","createFormController","result","error","submit","onSubmit","reset","getValues","getErrors","getTouched","getDirtyValues","generateId","useBitArray","path","getSnapshot","value","getDeepValue","subscribeArray","data","ids","setIds","useEffect","prevIds","diff","methods","prev","index","newIds","_","i","from","to","item","indexA","indexB","items"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/chunk-T3XN5O7V.cjs","sourcesContent":[null,"import React, { createContext, useContext } from \"react\";\nimport type { BitStoreApi, BitStoreHooksApi } from \"../core\";\nimport { resolveBitStoreForHooks } from \"../core\";\n\nconst BitContext = createContext<BitStoreHooksApi<any> | null>(null);\n\nexport const BitFormProvider = ({\n store,\n children,\n}: {\n store: BitStoreApi<any>;\n children: React.ReactNode;\n}) => (\n <BitContext.Provider value={resolveBitStoreForHooks(store)}>\n {children}\n </BitContext.Provider>\n);\n\nexport const useBitStore = <T extends object>() => {\n const store = useContext(BitContext);\n if (!store)\n throw new Error(\n \"BitForm hooks devem ser usados dentro de um BitFormProvider\",\n );\n return store as BitStoreHooksApi<T>;\n};\n","import {\n useCallback,\n useSyncExternalStore,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useBitStore } from \"./context\";\nimport { createFormController } from \"../core/form-controller\";\nimport type { UseBitFormResult } from \"./types\";\n\nexport function useBitForm<T extends object>(): UseBitFormResult<T> {\n const store = useBitStore<T>();\n\n const [submitError, setSubmitError] = useState<Error | null>(null);\n const [lastResponse, setLastResponse] = useState<unknown>(null);\n const lastMeta = useRef<{\n isValid: boolean;\n isDirty: boolean;\n isSubmitting: boolean;\n } | null>(null);\n\n const getMetaSnapshot = useCallback(() => {\n const state = store.getState();\n const nextMeta = {\n isValid: state.isValid,\n isDirty: state.isDirty,\n isSubmitting: state.isSubmitting,\n };\n\n if (\n lastMeta.current &&\n lastMeta.current.isValid === nextMeta.isValid &&\n lastMeta.current.isDirty === nextMeta.isDirty &&\n lastMeta.current.isSubmitting === nextMeta.isSubmitting\n ) {\n return lastMeta.current;\n }\n\n lastMeta.current = nextMeta;\n return nextMeta;\n }, [store]);\n\n const subscribeMeta = useCallback(\n (cb: () => void) =>\n store.subscribeSelector(\n (state) => ({\n isValid: state.isValid,\n isDirty: state.isDirty,\n isSubmitting: state.isSubmitting,\n }),\n () => cb(),\n ),\n [store],\n );\n\n const metaState = useSyncExternalStore(\n subscribeMeta,\n getMetaSnapshot,\n getMetaSnapshot,\n );\n\n const controller = useMemo(\n () =>\n createFormController(store, {\n clearSubmissionState: () => {\n setSubmitError(null);\n setLastResponse(null);\n },\n setSubmissionResult: (result) => {\n setLastResponse(result);\n },\n setSubmissionError: (error) => {\n setSubmitError(error);\n },\n }),\n [store],\n );\n\n const submit = useCallback(controller.submit, [controller]);\n const onSubmit = useCallback(controller.onSubmit, [controller]);\n const reset = useCallback(controller.reset, [controller]);\n\n const getValues = useCallback(controller.getValues, [controller]);\n const getErrors = useCallback(controller.getErrors, [controller]);\n const getTouched = useCallback(controller.getTouched, [controller]);\n const getDirtyValues = useCallback(controller.getDirtyValues, [controller]);\n\n const meta = useMemo(\n () => ({\n ...metaState,\n submitError,\n lastResponse,\n }),\n [metaState, submitError, lastResponse],\n );\n\n return {\n // Metadata (grouped)\n meta,\n // Getters\n getValues,\n getErrors,\n getTouched,\n getDirtyValues,\n // Main actions (frequent use - flat)\n submit,\n onSubmit,\n reset,\n setField: store.setField.bind(store),\n blurField: store.blurField.bind(store),\n replaceValues: store.replaceValues.bind(store),\n hydrate: store.hydrate.bind(store),\n rebase: store.rebase.bind(store),\n setError: store.setError.bind(store),\n setErrors: store.setErrors.bind(store),\n setServerErrors: store.setServerErrors.bind(store),\n validate: store.validate.bind(store),\n };\n}\n","import {\n useCallback,\n useSyncExternalStore,\n useState,\n useMemo,\n useEffect,\n} from \"react\";\nimport { useBitStore } from \"./context\";\nimport {\n getDeepValue,\n BitArrayPath,\n BitPathValue,\n BitArrayItem,\n BitPath,\n} from \"../core\";\n\nconst generateId = () => Math.random().toString(36).substring(2, 9);\n\nexport function useBitArray<\n TForm extends object = any,\n P extends BitArrayPath<TForm> = BitArrayPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n\n type Item = BitArrayItem<BitPathValue<TForm, P>>;\n\n const getSnapshot = useCallback(() => {\n const state = store.getState();\n const value = getDeepValue(state.values, path as string) as\n | BitPathValue<TForm, P>\n | undefined;\n return Array.isArray(value) ? (value as Item[]) : [];\n }, [store, path]);\n\n const subscribeArray = useCallback(\n (cb: () => void) => store.subscribePath(path, () => cb()),\n [store, path],\n );\n\n const data = useSyncExternalStore(subscribeArray, getSnapshot, getSnapshot);\n\n const [ids, setIds] = useState<string[]>(() =>\n (data as Item[]).map(generateId),\n );\n\n useEffect(() => {\n if (data.length !== ids.length) {\n setIds((prevIds) => {\n if (data.length > prevIds.length) {\n const diff = data.length - prevIds.length;\n return [...prevIds, ...Array(diff).fill(null).map(generateId)];\n }\n return prevIds.slice(0, data.length);\n });\n }\n }, [data.length]);\n\n const methods = useMemo(\n () => ({\n append: (value: Item) => {\n setIds((prev) => [...prev, generateId()]);\n store.pushItem(path, value);\n },\n prepend: (value: Item) => {\n setIds((prev) => [generateId(), ...prev]);\n store.prependItem(path, value);\n },\n insert: (index: number, value: Item) => {\n setIds((prev) => {\n const newIds = [...prev];\n newIds.splice(index, 0, generateId());\n return newIds;\n });\n store.insertItem(path, index, value);\n },\n remove: (index: number) => {\n setIds((prev) => prev.filter((_, i) => i !== index));\n store.removeItem(path, index);\n },\n move: (from: number, to: number) => {\n setIds((prev) => {\n const newIds = [...prev];\n const [item] = newIds.splice(from, 1);\n newIds.splice(to, 0, item);\n return newIds;\n });\n store.moveItem(path, from, to);\n },\n swap: (indexA: number, indexB: number) => {\n setIds((prev) => {\n const newIds = [...prev];\n [newIds[indexA], newIds[indexB]] = [newIds[indexB], newIds[indexA]];\n return newIds;\n });\n store.swapItems(path, indexA, indexB);\n },\n replace: (items: Item[]) => {\n setIds(items.map(generateId));\n store.setField(\n path as unknown as BitPath<TForm>,\n items as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n clear: () => {\n setIds([]);\n store.setField(\n path as unknown as BitPath<TForm>,\n [] as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n }),\n [store, path],\n );\n\n const fields = useMemo(\n () =>\n (data as Item[]).map((item: Item, index: number) => ({\n key: ids[index] || `temp-${index}`,\n value: item,\n index,\n })),\n [data, ids],\n );\n\n return {\n fields,\n length: data.length,\n ...methods,\n };\n}\n"]}