@lehnihon/bit-form 2.2.6 → 2.2.7

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 (121) hide show
  1. package/README.md +80 -24
  2. package/dist/angular/index.cjs +1 -1
  3. package/dist/angular/index.cjs.map +1 -1
  4. package/dist/angular/index.d.cts +18 -20
  5. package/dist/angular/index.d.ts +18 -20
  6. package/dist/angular/index.js +1 -1
  7. package/dist/angular/index.js.map +1 -1
  8. package/dist/array-controller-C1A5VKYd.d.cts +23 -0
  9. package/dist/array-controller-DtkmcnUr.d.ts +23 -0
  10. package/dist/{bus-B4zZmB9C.d.ts → bus-DgilLszS.d.ts} +83 -15
  11. package/dist/{bus-BeAeZwWu.d.cts → bus-rcUiufS7.d.cts} +83 -15
  12. package/dist/chunk-DIEE6LUO.js +2 -0
  13. package/dist/chunk-DIEE6LUO.js.map +1 -0
  14. package/dist/chunk-FUUQB4DV.cjs +2 -0
  15. package/dist/chunk-FUUQB4DV.cjs.map +1 -0
  16. package/dist/chunk-IV32WXCF.cjs +2 -0
  17. package/dist/chunk-IV32WXCF.cjs.map +1 -0
  18. package/dist/chunk-K5X37E3U.js +2 -0
  19. package/dist/chunk-K5X37E3U.js.map +1 -0
  20. package/dist/chunk-KWLLYQOL.cjs +2 -0
  21. package/dist/chunk-KWLLYQOL.cjs.map +1 -0
  22. package/dist/chunk-LIYZPSWM.js +2 -0
  23. package/dist/chunk-LIYZPSWM.js.map +1 -0
  24. package/dist/chunk-O5UPA33R.js +2 -0
  25. package/dist/chunk-O5UPA33R.js.map +1 -0
  26. package/dist/chunk-QAL6J5GQ.cjs +2 -0
  27. package/dist/chunk-QAL6J5GQ.cjs.map +1 -0
  28. package/dist/chunk-QKGTVKBU.cjs +2 -0
  29. package/dist/chunk-QKGTVKBU.cjs.map +1 -0
  30. package/dist/chunk-SA47B5OP.js +2 -0
  31. package/dist/chunk-SA47B5OP.js.map +1 -0
  32. package/dist/cli/index.cjs +22 -22
  33. package/dist/core.cjs +2 -0
  34. package/dist/core.cjs.map +1 -0
  35. package/dist/core.d.cts +122 -0
  36. package/dist/core.d.ts +122 -0
  37. package/dist/core.js +2 -0
  38. package/dist/core.js.map +1 -0
  39. package/dist/devtools/bridge.cjs +1 -1
  40. package/dist/devtools/bridge.cjs.map +1 -1
  41. package/dist/devtools/bridge.d.cts +4 -1
  42. package/dist/devtools/bridge.d.ts +4 -1
  43. package/dist/devtools/bridge.js +1 -1
  44. package/dist/devtools/bridge.js.map +1 -1
  45. package/dist/devtools/index.cjs +18 -18
  46. package/dist/devtools/index.cjs.map +1 -1
  47. package/dist/devtools/index.d.cts +26 -2
  48. package/dist/devtools/index.d.ts +26 -2
  49. package/dist/devtools/index.js +18 -18
  50. package/dist/devtools/index.js.map +1 -1
  51. package/dist/devtools/protocol.cjs +2 -0
  52. package/dist/devtools/protocol.cjs.map +1 -0
  53. package/dist/devtools/protocol.d.cts +54 -0
  54. package/dist/devtools/protocol.d.ts +54 -0
  55. package/dist/devtools/protocol.js +2 -0
  56. package/dist/devtools/protocol.js.map +1 -0
  57. package/dist/field-binding-Bi1g-D8X.d.ts +25 -0
  58. package/dist/field-binding-X5TkvfUt.d.cts +25 -0
  59. package/dist/index.cjs +1 -1
  60. package/dist/index.cjs.map +1 -1
  61. package/dist/index.d.cts +64 -171
  62. package/dist/index.d.ts +64 -171
  63. package/dist/index.js +1 -1
  64. package/dist/mask.d.cts +2 -2
  65. package/dist/mask.d.ts +2 -2
  66. package/dist/react/index.cjs +1 -1
  67. package/dist/react/index.cjs.map +1 -1
  68. package/dist/react/index.d.cts +8 -7
  69. package/dist/react/index.d.ts +8 -7
  70. package/dist/react/index.js +1 -1
  71. package/dist/react/index.js.map +1 -1
  72. package/dist/react-native/index.cjs +1 -1
  73. package/dist/react-native/index.cjs.map +1 -1
  74. package/dist/react-native/index.d.cts +7 -6
  75. package/dist/react-native/index.d.ts +7 -6
  76. package/dist/react-native/index.js +1 -1
  77. package/dist/react-native/index.js.map +1 -1
  78. package/dist/resolvers/index.cjs +1 -1
  79. package/dist/resolvers/index.cjs.map +1 -1
  80. package/dist/resolvers/index.d.cts +2 -2
  81. package/dist/resolvers/index.d.ts +2 -2
  82. package/dist/resolvers/index.js +1 -1
  83. package/dist/resolvers/joi.d.cts +2 -2
  84. package/dist/resolvers/joi.d.ts +2 -2
  85. package/dist/resolvers/yup.d.cts +2 -2
  86. package/dist/resolvers/yup.d.ts +2 -2
  87. package/dist/resolvers/zod.d.cts +2 -2
  88. package/dist/resolvers/zod.d.ts +2 -2
  89. package/dist/store-api-types-9ipdute1.d.ts +187 -0
  90. package/dist/store-api-types-B6_bPoVI.d.cts +187 -0
  91. package/dist/{types-D8DgIUhJ.d.cts → types-CUXh7PqD.d.cts} +1 -1
  92. package/dist/{types-D8DgIUhJ.d.ts → types-CUXh7PqD.d.ts} +1 -1
  93. package/dist/{use-bit-persist-Dk3fUrds.d.ts → use-bit-persist-Bc06fmqZ.d.ts} +12 -14
  94. package/dist/{use-bit-persist-D_gimC9A.d.cts → use-bit-persist-CIKFwtdM.d.cts} +12 -14
  95. package/dist/vue/index.cjs +1 -1
  96. package/dist/vue/index.cjs.map +1 -1
  97. package/dist/vue/index.d.cts +15 -18
  98. package/dist/vue/index.d.ts +15 -18
  99. package/dist/vue/index.js +1 -1
  100. package/dist/vue/index.js.map +1 -1
  101. package/package.json +20 -11
  102. package/dist/chunk-2CVKNPWX.js +0 -2
  103. package/dist/chunk-2CVKNPWX.js.map +0 -1
  104. package/dist/chunk-3EDD3V43.cjs +0 -2
  105. package/dist/chunk-3EDD3V43.cjs.map +0 -1
  106. package/dist/chunk-PX6WKENM.js +0 -2
  107. package/dist/chunk-PX6WKENM.js.map +0 -1
  108. package/dist/chunk-QWH2NBVB.js +0 -2
  109. package/dist/chunk-QWH2NBVB.js.map +0 -1
  110. package/dist/chunk-T3FR7D5V.js +0 -2
  111. package/dist/chunk-T3FR7D5V.js.map +0 -1
  112. package/dist/chunk-VQ7MK5VB.cjs +0 -2
  113. package/dist/chunk-VQ7MK5VB.cjs.map +0 -1
  114. package/dist/chunk-Y2ONHDRE.cjs +0 -2
  115. package/dist/chunk-Y2ONHDRE.cjs.map +0 -1
  116. package/dist/chunk-YCSWULEN.cjs +0 -2
  117. package/dist/chunk-YCSWULEN.cjs.map +0 -1
  118. package/dist/field-binding-BXw0Ku2c.d.cts +0 -12
  119. package/dist/field-binding-BXw0Ku2c.d.ts +0 -12
  120. package/dist/public-types-Cd9ai20P.d.cts +0 -97
  121. package/dist/public-types-DdZxD6Op.d.ts +0 -97
package/dist/vue/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{a as K,b as _,c as O}from"../chunk-QWH2NBVB.js";import{a as M,b as j,c as q,d as C,e as T,f as x}from"../chunk-2CVKNPWX.js";import{d as A,e as V,k as H}from"../chunk-PX6WKENM.js";import"../chunk-3NUJVIAM.js";import{inject as J,provide as Q}from"vue";var W=Symbol("BIT_STORE");function X(t){Q(W,H(t))}function c(){let t=J(W);if(!t)throw new Error("BitForm Vue hooks devem ser usados sob um provideBitStore");return t}import{computed as I,onUnmounted as Z,shallowRef as N,ref as z}from"vue";function ee(){let t=c(),e=N({isValid:t.getState().isValid,isSubmitting:t.getState().isSubmitting,isDirty:t.getState().isDirty}),i=z(null),s=z(null),o=t.subscribeSelector(p=>({isValid:p.isValid,isSubmitting:p.isSubmitting,isDirty:p.isDirty}),p=>{e.value=p},{paths:["isValid","isSubmitting","isDirty"]});Z(o);let u=j(t,{clearSubmissionState:()=>{i.value=null,s.value=null},setSubmissionResult:p=>{s.value=p},setSubmissionError:p=>{i.value=p}}),n=M(t),d=I(()=>e.value.isValid),S=I(()=>e.value.isSubmitting),f=I(()=>e.value.isDirty),r=u.onSubmit,a=u.reset;return{meta:{isValid:d,isDirty:f,isSubmitting:S,submitError:i,lastResponse:s},getValues:u.getValues,getErrors:u.getErrors,getTouched:u.getTouched,getDirtyValues:u.getDirtyValues,submit:u.submit,onSubmit:r,reset:a,...n}}import{computed as v,onUnmounted as te,shallowRef as re}from"vue";function E(t){let e=c(),i=e.resolveMask(t),s=C(e,t,i),o=re(e.getFieldState(t)),u=q(e,t,B=>{o.value=B});te(()=>{u(),e.unregisterField&&e.unregisterField(t)});let n=v(()=>o.value.value),d=v(()=>s.displayValue(n.value)),S=v({get:()=>d.value,set:B=>{s.setValue(B)}}),f=v(()=>o.value.error),r=v(()=>o.value.touched?o.value.error:void 0),a=v(()=>o.value.touched),l=v(()=>!!(a.value&&r.value)),p=v(()=>o.value.isValidating),b=v(()=>o.value.isDirty),P=v(()=>o.value.isHidden),h=v(()=>o.value.isRequired),R=v(()=>!!f.value),m=B=>{s.setValue(B)},g=()=>s.setBlur();return{value:n,displayValue:d,modelValue:S,setValue:m,setBlur:g,onInput:B=>{m(B)},onBlur:()=>{g()},meta:{error:r,touched:a,invalid:l,isValidating:p,isDirty:b,isHidden:P,isRequired:h,hasError:R}}}import{ref as L,computed as $,onUnmounted as oe}from"vue";function se(t){let e=c(),i=r=>e.config.idFactory({scope:"array",path:t,index:r}),o=(()=>{let r=V(e.getState().values,t);return Array.isArray(r)?r:[]})(),u=L(o),n=L(o.map((r,a)=>i(a))),d=e.subscribePath(t,r=>{let a=Array.isArray(r)?r:[];if(u.value=[...a],a.length!==n.value.length){let l=[...n.value];if(a.length>l.length){let p=a.length-l.length,b=Array.from({length:p},(P,h)=>i(l.length+h));n.value=[...l,...b]}else n.value=l.slice(0,a.length)}});oe(()=>{d(),e.unregisterPrefix&&e.unregisterPrefix(`${t}.`)});let S=$(()=>u.value.map((r,a)=>({key:n.value[a]||`temp-${a}`,value:r,index:a}))),f=$(()=>u.value.length);return{fields:S,length:f,append:r=>{n.value.push(i(n.value.length)),e.pushItem(t,r)},prepend:r=>{n.value.unshift(i(0)),e.prependItem(t,r)},insert:(r,a)=>{n.value.splice(r,0,i(r)),e.insertItem(t,r,a)},remove:r=>{n.value.splice(r,1),e.removeItem(t,r)},move:(r,a)=>{let l=[...n.value],[p]=l.splice(r,1);l.splice(a,0,p),n.value=l,e.moveItem(t,r,a)},swap:(r,a)=>{let l=[...n.value];[l[r],l[a]]=[l[a],l[r]],n.value=l,e.swapItems(t,r,a)},replace:r=>{n.value=r.map((a,l)=>i(l)),e.setField(t,r)},clear:()=>{n.value=[],e.setField(t,[])}}}import{computed as U,onUnmounted as ie,shallowRef as ne}from"vue";function ae(){let t=c(),e=ne(t.getHistoryMetadata()),i=t.subscribe(()=>{let u=t.getHistoryMetadata();K(e.value,u)||(e.value=u)});ie(i);let s=()=>t.undo(),o=()=>t.redo();return{canUndo:U(()=>e.value.canUndo),canRedo:U(()=>e.value.canRedo),historyIndex:U(()=>e.value.historyIndex),historySize:U(()=>e.value.historySize),undo:s,redo:o}}import{ref as ue,computed as D,onMounted as le,onUnmounted as ce}from"vue";function me(t){let e=c(),i=e.getScopeFields(t),s=ue(e.getStepStatus(t)),o;le(()=>{o=e.subscribeSelector(r=>({errors:r.errors,isDirty:r.isDirty}),()=>{let r=e.getStepStatus(t);T(s.value,r)||(s.value=r)},{paths:x(i)})}),ce(()=>{o?.()});let u=async()=>{let r=await e.validate({scope:t}),a=e.getStepErrors(t);return{valid:r,errors:a}},n=()=>e.getStepErrors(t),d=D(()=>!s.value.hasErrors),S=D(()=>s.value.isDirty),f=D(()=>s.value.errors);return{scopeName:t,status:s,errors:f,validate:u,getErrors:n,isValid:d,isDirty:S}}import{ref as Y,computed as y,watch as pe,onMounted as de,onUnmounted as ve}from"vue";function Se(t){let e=c(),i=Y(0),s=y(()=>t[i.value]??""),o=Y(e.getStepStatus(s.value)),u;pe(s,m=>{o.value=e.getStepStatus(m)});let n=()=>{let m=s.value,g=e.getStepStatus(m);T(o.value,g)||(o.value=g)};de(()=>{u=e.subscribeSelector(m=>({errors:m.errors,isDirty:m.isDirty}),n,{paths:x(e.getScopeFields(s.value))})}),ve(()=>{u?.()});let d=async()=>{let m=s.value,g=await e.validate({scope:m}),F=e.getStepErrors(m);return{valid:g,errors:F}},S=()=>e.getStepErrors(s.value),f=async()=>{let m=s.value,g=e.getScopeFields(m);if(e.hasValidationsInProgress(g))return!1;let F=await e.validate({scope:m});if(F)i.value=Math.min(i.value+1,t.length-1);else{let k=e.getStepErrors(m),B=Object.keys(k);B.length>0&&e.markFieldsTouched(B)}return F},r=()=>{i.value=Math.max(i.value-1,0)},a=m=>{i.value=Math.max(0,Math.min(m-1,t.length-1))},l=y(()=>i.value+1),p=y(()=>i.value===0),b=y(()=>i.value>=t.length-1),P=y(()=>!o.value.hasErrors),h=y(()=>o.value.isDirty),R=y(()=>o.value.errors);return{step:l,stepIndex:i,scope:s,next:f,prev:r,goTo:a,isFirst:p,isLast:b,status:o,errors:R,isValid:P,isDirty:h,validate:d,getErrors:S}}import{ref as fe,onUnmounted as Be,readonly as ge}from"vue";function ye(t){let e=c(),i=V(e.getState().values,t),s=fe(i),o=e.watch(t,u=>{A(s.value,u)||(s.value=u)});return Be(o),ge(s)}import{computed as G,ref as be}from"vue";function he(t,e,i){let s=c(),o=E(t),u=null,n=be(!1),d={setLoading:r=>{n.value=r},setError:(r,a)=>s.setError(r,a),setValue:r=>o.setValue(r),getUploadKey:()=>u,setUploadKey:r=>{u=r}},S=_(t,e,d),f=O(t,i,d);return{value:o.value,setValue:o.setValue,error:G(()=>o.meta.error.value),isValidating:G(()=>!!o.meta.isValidating.value||n.value),upload:S,remove:f}}import{computed as w,onUnmounted as Fe,ref as Pe}from"vue";function Ve(){let t=c(),e=Pe(t.getPersistMetadata()),i=t.subscribeSelector(n=>n.persist,n=>{e.value=n},{paths:["persist"]});return Fe(()=>i()),{restore:async()=>t.restorePersisted(),save:async()=>{await t.forceSave()},clear:async()=>{await t.clearPersisted()},meta:{isSaving:w(()=>e.value.isSaving),isRestoring:w(()=>e.value.isRestoring),error:w(()=>e.value.error)}}}export{X as provideBitStore,se as useBitArray,E as useBitField,ee as useBitForm,ae as useBitHistory,Ve as useBitPersist,me as useBitScope,Se as useBitSteps,c as useBitStore,he as useBitUpload,ye as useBitWatch};
1
+ import{a as $,b as G}from"../chunk-O5UPA33R.js";import{B as C,C as q,D as O,E as W,F as _,G as z,H as L,I as Y,c as D,e as H,m as M,n as j,p as k,r as I,s as A,y as K}from"../chunk-SA47B5OP.js";import"../chunk-3NUJVIAM.js";import{inject as ee,provide as te}from"vue";var J=Symbol("BIT_STORE");function oe(t){te(J,A(t))}function n(){let t=ee(J);if(!t)throw new Error("BitForm Vue hooks devem ser usados sob um provideBitStore");return t}import{computed as R,onUnmounted as re,shallowRef as se,ref as Q}from"vue";function ie(){let t=n(),e=se({isValid:!0,isDirty:!1,isSubmitting:!1}),o=Q(null),r=Q(null),i=K(t,v=>{e.value=v});re(i);let{controller:s,actions:a}=q(t,{clearSubmissionState:()=>{o.value=null,r.value=null},setSubmissionResult:v=>{r.value=v},setSubmissionError:v=>{o.value=v}}),d=R(()=>e.value.isValid),u=R(()=>e.value.isSubmitting),p=R(()=>e.value.isDirty),c=s.onSubmit,B=s.reset;return{meta:{isValid:d,isDirty:p,isSubmitting:u,submitError:o,lastResponse:r},getValues:s.getValues,getErrors:s.getErrors,getTouched:s.getTouched,getDirtyValues:s.getDirtyValues,submit:s.submit,onSubmit:c,reset:B,...a}}import{computed as m,onUnmounted as ne,shallowRef as ae}from"vue";function U(t){let e=n(),{fieldController:o}=W(e,t),r=ae(e.getFieldState(t)),i=O(e,t,f=>{r.value=f});ne(()=>{i(),z(e,t)});let s=m(()=>r.value.value),a=m(()=>o.displayValue(s.value)),d=m({get:()=>a.value,set:f=>{o.setValue(f)}}),u=m(()=>Y(r.value)),p=m(()=>u.value.error),c=m(()=>u.value.touched),B=m(()=>u.value.invalid),b=m(()=>u.value.isValidating),v=m(()=>u.value.isDirty),P=m(()=>u.value.isHidden),V=m(()=>u.value.isRequired),x=m(()=>u.value.hasError),F=f=>{o.setValue(f)},l=()=>o.setBlur();return{value:s,displayValue:a,modelValue:d,setValue:F,setBlur:l,onInput:f=>{F(f)},onBlur:()=>{l()},meta:{error:p,touched:c,invalid:B,isValidating:b,isDirty:v,isHidden:P,isRequired:V,hasError:x}}}import{shallowRef as ue,computed as X,onUnmounted as le}from"vue";function ce(t){let e=n(),o=_(e,t),r=ue(o.readItems()),i=e.subscribePath(t,()=>{r.value=o.readItems()});le(()=>{i(),L(e,`${t}.`)});let s=X(()=>o.getFields(r.value)),a=X(()=>r.value.length);return{fields:s,length:a,append:o.append,prepend:o.prepend,insert:o.insert,remove:o.remove,move:o.move,swap:o.swap,replace:o.replace,clear:o.clear}}import{computed as h,onUnmounted as me,shallowRef as pe}from"vue";function de(){let t=n(),e=pe(M(t)),o=j(t,s=>{e.value=s});me(o);let r=()=>t.undo(),i=()=>t.redo();return{canUndo:h(()=>e.value.canUndo),canRedo:h(()=>e.value.canRedo),historyIndex:h(()=>e.value.historyIndex),historySize:h(()=>e.value.historySize),undo:r,redo:i}}import{ref as ve,computed as T,onMounted as fe,onUnmounted as Be}from"vue";function Se(t){let e=n(),o=ve(e.getStepStatus(t)),r;fe(()=>{r=I(e,t,p=>{o.value=p})}),Be(()=>{r?.()});let i=async()=>{let p=await e.validate({scope:t}),c=e.getStepErrors(t);return{valid:p,errors:c}},s=()=>e.getStepErrors(t),a=T(()=>!o.value.hasErrors),d=T(()=>o.value.isDirty),u=T(()=>o.value.errors);return{scopeName:t,status:o,errors:u,validate:i,getErrors:s,isValid:a,isDirty:d}}import{ref as Z,computed as g,watch as ge,onMounted as ye,onUnmounted as be}from"vue";function Fe(t){let e=n(),o=Z(0),r=g(()=>t[o.value]??""),i=Z(e.getStepStatus(r.value)),s;ge(r,l=>{i.value=e.getStepStatus(l),s?.(),s=e.subscribeScopeStatus(l,a)});let a=()=>{let l=r.value,S=e.getStepStatus(l);k(i.value,S)||(i.value=S)};ye(()=>{s=e.subscribeScopeStatus(r.value,a)}),be(()=>{s?.()});let d=async()=>{let l=r.value,S=await e.validate({scope:l}),y=e.getStepErrors(l);return{valid:S,errors:y}},u=()=>e.getStepErrors(r.value),p=async()=>{let l=r.value,S=e.getScopeFields(l);if(e.hasValidationsInProgress(S))return!1;let y=await e.validate({scope:l});if(y)o.value=Math.min(o.value+1,t.length-1);else{let f=e.getStepErrors(l),w=Object.keys(f);w.length>0&&e.markFieldsTouched(w)}return y},c=()=>{o.value=Math.max(o.value-1,0)},B=l=>{o.value=Math.max(0,Math.min(l-1,t.length-1))},b=g(()=>o.value+1),v=g(()=>o.value===0),P=g(()=>o.value>=t.length-1),V=g(()=>!i.value.hasErrors),x=g(()=>i.value.isDirty),F=g(()=>i.value.errors);return{step:b,stepIndex:o,scope:r,next:p,prev:c,goTo:B,isFirst:v,isLast:P,status:i,errors:F,isValid:V,isDirty:x,validate:d,getErrors:u}}import{ref as he,onUnmounted as Pe,readonly as Ve}from"vue";function xe(t){let e=n(),o=H(e.getState().values,t),r=he(o),i=e.subscribePath(t,s=>{D(r.value,s)||(r.value=s)});return Pe(i),Ve(r)}import{computed as N,ref as Re}from"vue";function Ue(t,e,o){let r=n(),i=U(t),s=null,a=Re(!1),d={setLoading:c=>{a.value=c},setError:(c,B)=>r.setError(c,B),setValue:c=>i.setValue(c),getUploadKey:()=>s,setUploadKey:c=>{s=c}},u=$(t,e,d),p=G(t,o,d);return{value:i.value,setValue:i.setValue,error:N(()=>i.meta.error.value),isValidating:N(()=>!!i.meta.isValidating.value||a.value),upload:u,remove:p}}import{computed as E,onUnmounted as Te,ref as Ee}from"vue";function we(){let t=n(),e=Ee(t.getPersistMetadata()),o=C(t,a=>{e.value=a});return Te(()=>o()),{restore:async()=>t.restorePersisted(),save:async()=>{await t.forceSave()},clear:async()=>{await t.clearPersisted()},meta:{isSaving:E(()=>e.value.isSaving),isRestoring:E(()=>e.value.isRestoring),error:E(()=>e.value.error)}}}export{oe as provideBitStore,ce as useBitArray,U as useBitField,ie as useBitForm,de as useBitHistory,we as useBitPersist,Se as useBitScope,Fe as useBitSteps,n as useBitStore,Ue as useBitUpload,xe as useBitWatch};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/vue/context.ts","../../src/vue/use-bit-form.ts","../../src/vue/use-bit-field.ts","../../src/vue/use-bit-array.ts","../../src/vue/use-bit-history.ts","../../src/vue/use-bit-scope.ts","../../src/vue/use-bit-steps.ts","../../src/vue/use-bit-watch.ts","../../src/vue/use-bit-upload.ts","../../src/vue/use-bit-persist.ts"],"sourcesContent":["import { inject, provide, InjectionKey } from \"vue\";\nimport type { BitStoreApi, BitStoreHooksApi } from \"../core\";\nimport { resolveBitStoreForHooks } from \"../core\";\n\n// Chave única para evitar colisões\nexport const BIT_STORE_KEY: InjectionKey<BitStoreHooksApi<any>> =\n Symbol(\"BIT_STORE\");\n\nexport function provideBitStore<T extends object>(store: BitStoreApi<T>) {\n provide(BIT_STORE_KEY, resolveBitStoreForHooks(store));\n}\n\nexport function useBitStore<T extends object>() {\n const store = inject(BIT_STORE_KEY);\n if (!store)\n throw new Error(\n \"BitForm Vue hooks devem ser usados sob um provideBitStore\",\n );\n return store as BitStoreHooksApi<T>;\n}\n","import { computed, onUnmounted, shallowRef, ref } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport {\n createFormController,\n createStoreFormActions,\n} from \"../core/form-controller\";\nimport type { UseBitFormResult } from \"./types\";\n\nexport function useBitForm<T extends object>(): UseBitFormResult<T> {\n const store = useBitStore<T>();\n const state = shallowRef({\n isValid: store.getState().isValid,\n isSubmitting: store.getState().isSubmitting,\n isDirty: store.getState().isDirty,\n });\n const submitError = ref<Error | null>(null);\n const lastResponse = ref<unknown>(null);\n\n const unsubscribe = store.subscribeSelector(\n (snapshot) => ({\n isValid: snapshot.isValid,\n isSubmitting: snapshot.isSubmitting,\n isDirty: snapshot.isDirty,\n }),\n (nextState) => {\n state.value = nextState;\n },\n { paths: [\"isValid\", \"isSubmitting\", \"isDirty\"] },\n );\n\n onUnmounted(unsubscribe);\n\n const controller = createFormController(store, {\n clearSubmissionState: () => {\n submitError.value = null;\n lastResponse.value = null;\n },\n setSubmissionResult: (result) => {\n lastResponse.value = result;\n },\n setSubmissionError: (error) => {\n submitError.value = error;\n },\n });\n const actions = createStoreFormActions(store);\n\n const isValid = computed(() => state.value.isValid);\n const isSubmitting = computed(() => state.value.isSubmitting);\n const isDirty = computed(() => state.value.isDirty);\n\n const onSubmit = controller.onSubmit;\n const reset = controller.reset;\n\n const meta = {\n isValid,\n isDirty,\n isSubmitting,\n submitError,\n lastResponse,\n };\n\n return {\n // Metadata (grouped)\n meta,\n // Getters\n getValues: controller.getValues,\n getErrors: controller.getErrors,\n getTouched: controller.getTouched,\n getDirtyValues: controller.getDirtyValues,\n // Main actions (frequent use - flat)\n submit: controller.submit,\n onSubmit,\n reset,\n ...actions,\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitFieldVueResult } from \"./types\";\nimport type { BitPath, BitPathValue } from \"../core\";\nimport {\n createMaskedFieldController,\n subscribeFieldState,\n} from \"../core/field-controller\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldVueResult<BitPathValue<TForm, P>> {\n const store = useBitStore<TForm>();\n\n const resolvedMask = store.resolveMask(path);\n const fieldController = createMaskedFieldController(\n store,\n path,\n resolvedMask,\n );\n\n const state = shallowRef(store.getFieldState(path));\n\n const unsubscribe = subscribeFieldState(store, path, (nextState) => {\n state.value = nextState;\n });\n\n onUnmounted(() => {\n unsubscribe();\n if (store.unregisterField) {\n store.unregisterField(path);\n }\n });\n\n const rawValue = computed(() => state.value.value as BitPathValue<TForm, P>);\n\n const displayValue = computed(() =>\n fieldController.displayValue(rawValue.value),\n );\n\n const modelValue = computed({\n get: () => displayValue.value,\n set: (val: string) => {\n fieldController.setValue(val);\n },\n });\n\n const rawError = computed(() => state.value.error);\n const error = computed(() =>\n state.value.touched ? state.value.error : undefined,\n );\n const touched = computed(() => state.value.touched);\n const invalid = computed(() => !!(touched.value && error.value));\n\n const isValidating = computed(() => state.value.isValidating);\n\n const isDirty = computed(() => state.value.isDirty);\n\n const isHidden = computed(() => state.value.isHidden);\n\n const isRequired = computed(() => state.value.isRequired);\n\n const hasError = computed(() => !!rawError.value);\n\n const setValue = (\n val: BitPathValue<TForm, P> | string | number | null | undefined,\n ) => {\n fieldController.setValue(val);\n };\n\n const setBlur = () => fieldController.setBlur();\n\n const onInput = (\n val: BitPathValue<TForm, P> | string | number | null | undefined,\n ) => {\n setValue(val);\n };\n\n const onBlur = () => {\n setBlur();\n };\n\n return {\n // Main handlers and values (flat)\n value: rawValue,\n displayValue,\n modelValue,\n setValue,\n setBlur,\n onInput,\n onBlur,\n // Metadata (grouped)\n meta: {\n error,\n touched,\n invalid,\n isValidating,\n isDirty,\n isHidden,\n isRequired,\n hasError,\n },\n };\n}\n","import { ref, computed, onUnmounted } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport {\n getDeepValue,\n BitArrayPath,\n BitPathValue,\n BitArrayItem,\n BitPath,\n} from \"../core\";\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 const createId = (index?: number) =>\n store.config.idFactory({\n scope: \"array\",\n path: path as string,\n index,\n });\n\n type Item = BitArrayItem<BitPathValue<TForm, P>>;\n\n const getSnapshot = (): Item[] => {\n const val = getDeepValue(store.getState().values, path as string) as\n | BitPathValue<TForm, P>\n | undefined;\n return Array.isArray(val) ? (val as Item[]) : [];\n };\n\n const initialValues = getSnapshot();\n const values = ref<Item[]>(initialValues);\n const ids = ref<string[]>(initialValues.map((_, index) => createId(index)));\n\n const unsubscribe = store.subscribePath(path, (newValues) => {\n const nextValues = (Array.isArray(newValues) ? newValues : []) as Item[];\n\n values.value = [...nextValues];\n\n if (nextValues.length !== ids.value.length) {\n const currentIds = [...ids.value];\n if (nextValues.length > currentIds.length) {\n const diff = nextValues.length - currentIds.length;\n const newIds = Array.from({ length: diff }, (_, i) =>\n createId(currentIds.length + i),\n );\n ids.value = [...currentIds, ...newIds];\n } else {\n ids.value = currentIds.slice(0, nextValues.length);\n }\n }\n });\n\n onUnmounted(() => {\n unsubscribe();\n if (store.unregisterPrefix) {\n store.unregisterPrefix(`${path as string}.`);\n }\n });\n\n const fields = computed(() =>\n values.value.map((v, i) => ({\n key: ids.value[i] || `temp-${i}`,\n value: v,\n index: i,\n })),\n );\n\n const length = computed(() => values.value.length);\n\n return {\n fields,\n length,\n append: (val: Item) => {\n ids.value.push(createId(ids.value.length));\n store.pushItem(path, val);\n },\n prepend: (val: Item) => {\n ids.value.unshift(createId(0));\n store.prependItem(path, val);\n },\n insert: (index: number, val: Item) => {\n ids.value.splice(index, 0, createId(index));\n store.insertItem(path, index, val);\n },\n remove: (index: number) => {\n ids.value.splice(index, 1);\n store.removeItem(path, index);\n },\n move: (from: number, to: number) => {\n const currentIds = [...ids.value];\n const [id] = currentIds.splice(from, 1);\n currentIds.splice(to, 0, id);\n ids.value = currentIds;\n store.moveItem(path, from, to);\n },\n swap: (a: number, b: number) => {\n const currentIds = [...ids.value];\n [currentIds[a], currentIds[b]] = [currentIds[b], currentIds[a]];\n ids.value = currentIds;\n store.swapItems(path, a, b);\n },\n replace: (items: Item[]) => {\n ids.value = items.map((_, index) => createId(index));\n store.setField(\n path as unknown as BitPath<TForm>,\n items as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n clear: () => {\n ids.value = [];\n store.setField(\n path as unknown as BitPath<TForm>,\n [] as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\nimport { isHistoryMetaEqual } from \"../core/history-status\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitHistoryResult } from \"./types\";\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n\n const meta = shallowRef(store.getHistoryMetadata());\n\n const unsubscribe = store.subscribe(() => {\n const nextMeta = store.getHistoryMetadata();\n if (!isHistoryMetaEqual(meta.value, nextMeta)) {\n meta.value = nextMeta;\n }\n });\n\n onUnmounted(unsubscribe);\n\n const undo = () => store.undo();\n const redo = () => store.redo();\n\n return {\n canUndo: computed(() => meta.value.canUndo),\n canRedo: computed(() => meta.value.canRedo),\n historyIndex: computed(() => meta.value.historyIndex),\n historySize: computed(() => meta.value.historySize),\n undo,\n redo,\n };\n}\n","import { ref, computed, onMounted, onUnmounted } from \"vue\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport {\n getScopeSubscriptionPaths,\n isScopeStatusEqual,\n} from \"../core/scope-status\";\nimport { useBitStore } from \"./context\";\n\nexport type { ScopeStatus, ValidateScopeResult };\n\nexport function useBitScope(scopeName: string) {\n const store = useBitStore();\n const scopeFields = store.getScopeFields(scopeName);\n const status = ref<ScopeStatus>(store.getStepStatus(scopeName));\n let unsubscribe: () => void;\n\n onMounted(() => {\n unsubscribe = store.subscribeSelector(\n (state) => ({ errors: state.errors, isDirty: state.isDirty }),\n () => {\n const newStatus = store.getStepStatus(scopeName);\n if (!isScopeStatusEqual(status.value, newStatus)) {\n status.value = newStatus;\n }\n },\n { paths: getScopeSubscriptionPaths(scopeFields) },\n );\n });\n\n onUnmounted(() => {\n unsubscribe?.();\n });\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const valid = await store.validate({ scope: scopeName });\n const errors = store.getStepErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.getStepErrors(scopeName);\n\n const isValid = computed(() => !status.value.hasErrors);\n const isDirty = computed(() => status.value.isDirty);\n const errors = computed(() => status.value.errors);\n\n return {\n scopeName,\n status,\n errors,\n validate,\n getErrors,\n isValid,\n isDirty,\n };\n}\n","import { ref, computed, watch, onMounted, onUnmounted } from \"vue\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport {\n getScopeSubscriptionPaths,\n isScopeStatusEqual,\n} from \"../core/scope-status\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitStepsResult } from \"./types\";\n\nexport function useBitSteps(scopeNames: string[]): UseBitStepsResult {\n const store = useBitStore();\n const stepIndex = ref(0);\n\n const scope = computed(() => scopeNames[stepIndex.value] ?? \"\");\n const status = ref<ScopeStatus>(store.getStepStatus(scope.value));\n let unsubscribe: () => void;\n\n watch(scope, (newScope) => {\n status.value = store.getStepStatus(newScope);\n });\n\n const updateStatus = () => {\n const scopeName = scope.value;\n const newStatus = store.getStepStatus(scopeName);\n if (!isScopeStatusEqual(status.value, newStatus)) {\n status.value = newStatus;\n }\n };\n\n onMounted(() => {\n unsubscribe = store.subscribeSelector(\n (state) => ({ errors: state.errors, isDirty: state.isDirty }),\n updateStatus,\n { paths: getScopeSubscriptionPaths(store.getScopeFields(scope.value)) },\n );\n });\n\n onUnmounted(() => {\n unsubscribe?.();\n });\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const scopeName = scope.value;\n const valid = await store.validate({ scope: scopeName });\n const errors = store.getStepErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.getStepErrors(scope.value);\n\n const next = async (): Promise<boolean> => {\n const scopeName = scope.value;\n\n const scopeFields = store.getScopeFields(scopeName);\n if (store.hasValidationsInProgress(scopeFields)) {\n return false;\n }\n\n const valid = await store.validate({ scope: scopeName });\n if (valid) {\n stepIndex.value = Math.min(stepIndex.value + 1, scopeNames.length - 1);\n } else {\n const errors = store.getStepErrors(scopeName);\n const pathsWithErrors = Object.keys(errors);\n if (pathsWithErrors.length > 0) {\n store.markFieldsTouched(pathsWithErrors);\n }\n }\n return valid;\n };\n\n const prev = () => {\n stepIndex.value = Math.max(stepIndex.value - 1, 0);\n };\n\n const goTo = (targetStep: number) => {\n stepIndex.value = Math.max(\n 0,\n Math.min(targetStep - 1, scopeNames.length - 1),\n );\n };\n\n const step = computed(() => stepIndex.value + 1);\n const isFirst = computed(() => stepIndex.value === 0);\n const isLast = computed(() => stepIndex.value >= scopeNames.length - 1);\n const isValid = computed(() => !status.value.hasErrors);\n const isDirty = computed(() => status.value.isDirty);\n const errors = computed(() => status.value.errors);\n\n return {\n step,\n stepIndex,\n scope,\n next,\n prev,\n goTo,\n isFirst,\n isLast,\n status,\n errors,\n isValid,\n isDirty,\n validate,\n getErrors,\n };\n}\n","import { ref, onUnmounted, readonly } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport {\n getDeepValue,\n deepEqual,\n BitPath,\n BitPathValue,\n} from \"../core\";\n\nexport function useBitWatch<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n const initialValue = getDeepValue(\n store.getState().values,\n path as string,\n ) as BitPathValue<TForm, P>;\n const value = ref<BitPathValue<TForm, P>>(initialValue);\n\n const unsubscribe = store.watch(path, (newValue) => {\n if (!deepEqual(value.value, newValue)) {\n value.value = newValue as BitPathValue<TForm, P>;\n }\n });\n\n onUnmounted(unsubscribe);\n\n return readonly(value);\n}\n","/**\n * Vue Composition API for File Upload\n *\n * Minimal upload API integrated with global field validation lifecycle.\n */\n\nimport { computed, ComputedRef, ref } from \"vue\";\nimport { useBitField } from \"./use-bit-field\";\nimport { useBitStore } from \"./context\";\nimport { BitUploadFn, BitDeleteUploadFn } from \"../core\";\nimport { createUploadHandler, createRemoveHandler } from \"../core/adapters\";\nimport type { UseBitUploadResult } from \"./types\";\n\nexport function useBitUpload(\n fieldPath: string,\n uploadFn: BitUploadFn,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n let uploadKey: string | null = null;\n const isUploading = ref(false);\n\n const kernelCallbacks = {\n setLoading: (val: boolean) => {\n isUploading.value = val;\n },\n setError: (path: string, msg: string | undefined) =>\n store.setError(path, msg),\n setValue: (val: string | null) => field.setValue(val),\n getUploadKey: () => uploadKey,\n setUploadKey: (key: string | null) => {\n uploadKey = key;\n },\n };\n\n const upload = createUploadHandler(fieldPath, uploadFn, kernelCallbacks);\n const remove = createRemoveHandler(fieldPath, deleteFile, kernelCallbacks);\n\n return {\n value: field.value as ComputedRef<string | File | null>,\n setValue: field.setValue,\n error: computed(() => field.meta.error.value),\n isValidating: computed(\n () => !!field.meta.isValidating.value || isUploading.value,\n ),\n upload,\n remove,\n };\n}\n","import { computed, onUnmounted, ref } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitPersistResult } from \"./types\";\n\nexport function useBitPersist<T extends object = any>(): UseBitPersistResult {\n const store = useBitStore<T>();\n const meta = ref(store.getPersistMetadata());\n\n const unsubscribe = store.subscribeSelector(\n (state) => state.persist,\n (nextMeta) => {\n meta.value = nextMeta;\n },\n { paths: [\"persist\"] },\n );\n\n onUnmounted(() => unsubscribe());\n\n const restore = async (): Promise<boolean> => {\n return store.restorePersisted();\n };\n\n const save = async (): Promise<void> => {\n await store.forceSave();\n };\n\n const clear = async (): Promise<void> => {\n await store.clearPersisted();\n };\n\n return {\n restore,\n save,\n clear,\n meta: {\n isSaving: computed(() => meta.value.isSaving),\n isRestoring: computed(() => meta.value.isRestoring),\n error: computed(() => meta.value.error),\n },\n };\n}\n"],"mappings":"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","names":["inject","provide","BIT_STORE_KEY","provideBitStore","store","provide","resolveBitStoreForHooks","useBitStore","inject","computed","onUnmounted","shallowRef","ref","useBitForm","store","useBitStore","state","shallowRef","submitError","ref","lastResponse","unsubscribe","snapshot","nextState","onUnmounted","controller","createFormController","result","error","actions","createStoreFormActions","isValid","computed","isSubmitting","isDirty","onSubmit","reset","computed","onUnmounted","shallowRef","useBitField","path","store","useBitStore","resolvedMask","fieldController","createMaskedFieldController","state","shallowRef","unsubscribe","subscribeFieldState","nextState","onUnmounted","rawValue","computed","displayValue","modelValue","val","rawError","error","touched","invalid","isValidating","isDirty","isHidden","isRequired","hasError","setValue","setBlur","ref","computed","onUnmounted","useBitArray","path","store","useBitStore","createId","index","initialValues","val","getDeepValue","values","ref","ids","_","unsubscribe","newValues","nextValues","currentIds","diff","newIds","i","onUnmounted","fields","computed","v","length","from","to","id","a","b","items","computed","onUnmounted","shallowRef","useBitHistory","store","useBitStore","meta","shallowRef","unsubscribe","nextMeta","isHistoryMetaEqual","onUnmounted","undo","redo","computed","ref","computed","onMounted","onUnmounted","useBitScope","scopeName","store","useBitStore","scopeFields","status","ref","unsubscribe","onMounted","state","newStatus","isScopeStatusEqual","getScopeSubscriptionPaths","onUnmounted","validate","valid","errors","getErrors","isValid","computed","isDirty","ref","computed","watch","onMounted","onUnmounted","useBitSteps","scopeNames","store","useBitStore","stepIndex","ref","scope","computed","status","unsubscribe","watch","newScope","updateStatus","scopeName","newStatus","isScopeStatusEqual","onMounted","state","getScopeSubscriptionPaths","onUnmounted","validate","valid","errors","getErrors","next","scopeFields","pathsWithErrors","prev","goTo","targetStep","step","isFirst","isLast","isValid","isDirty","ref","onUnmounted","readonly","useBitWatch","path","store","useBitStore","initialValue","getDeepValue","value","ref","unsubscribe","newValue","deepEqual","onUnmounted","readonly","computed","ref","useBitUpload","fieldPath","uploadFn","deleteFile","store","useBitStore","field","useBitField","uploadKey","isUploading","ref","kernelCallbacks","val","path","msg","key","upload","createUploadHandler","remove","createRemoveHandler","computed","computed","onUnmounted","ref","useBitPersist","store","useBitStore","meta","ref","unsubscribe","state","nextMeta","onUnmounted","computed"]}
1
+ {"version":3,"sources":["../../src/vue/context.ts","../../src/vue/use-bit-form.ts","../../src/vue/use-bit-field.ts","../../src/vue/use-bit-array.ts","../../src/vue/use-bit-history.ts","../../src/vue/use-bit-scope.ts","../../src/vue/use-bit-steps.ts","../../src/vue/use-bit-watch.ts","../../src/vue/use-bit-upload.ts","../../src/vue/use-bit-persist.ts"],"sourcesContent":["import { inject, provide, InjectionKey } from \"vue\";\nimport type { BitFormBindingApi, BitStoreHooksApi } from \"../core\";\nimport { resolveBitStoreForHooks } from \"../core\";\n\n// Chave única para evitar colisões\nexport const BIT_STORE_KEY: InjectionKey<BitFormBindingApi<any>> =\n Symbol(\"BIT_STORE\");\n\nexport function provideBitStore<T extends object>(store: BitStoreHooksApi<T>) {\n provide(BIT_STORE_KEY, resolveBitStoreForHooks(store));\n}\n\nexport function useBitStore<T extends object>() {\n const store = inject(BIT_STORE_KEY);\n if (!store)\n throw new Error(\n \"BitForm Vue hooks devem ser usados sob um provideBitStore\",\n );\n return store as BitFormBindingApi<T>;\n}\n","import { computed, onUnmounted, shallowRef, ref } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport { createFrameworkFormBinding, observeFormMetaSnapshot } from \"../core\";\nimport type { UseBitFormResult } from \"./types\";\n\nexport function useBitForm<T extends object>(): UseBitFormResult<T> {\n const store = useBitStore<T>();\n const state = shallowRef({\n isValid: true,\n isDirty: false,\n isSubmitting: false,\n });\n const submitError = ref<Error | null>(null);\n const lastResponse = ref<unknown>(null);\n\n const unsubscribe = observeFormMetaSnapshot(store, (nextMeta) => {\n state.value = nextMeta;\n });\n\n onUnmounted(unsubscribe);\n\n const { controller, actions } = createFrameworkFormBinding(store, {\n clearSubmissionState: () => {\n submitError.value = null;\n lastResponse.value = null;\n },\n setSubmissionResult: (result) => {\n lastResponse.value = result;\n },\n setSubmissionError: (error) => {\n submitError.value = error;\n },\n });\n\n const isValid = computed(() => state.value.isValid);\n const isSubmitting = computed(() => state.value.isSubmitting);\n const isDirty = computed(() => state.value.isDirty);\n\n const onSubmit = controller.onSubmit;\n const reset = controller.reset;\n\n const meta = {\n isValid,\n isDirty,\n isSubmitting,\n submitError,\n lastResponse,\n };\n\n return {\n // Metadata (grouped)\n meta,\n // Getters\n getValues: controller.getValues,\n getErrors: controller.getErrors,\n getTouched: controller.getTouched,\n getDirtyValues: controller.getDirtyValues,\n // Main actions (frequent use - flat)\n submit: controller.submit,\n onSubmit,\n reset,\n ...actions,\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitFieldVueResult } from \"./types\";\nimport type { BitPath, BitPathValue } from \"../core\";\nimport {\n cleanupRegisteredField,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n subscribeFieldState,\n} from \"../core\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldVueResult<BitPathValue<TForm, P>> {\n const store = useBitStore<TForm>();\n\n const { fieldController } = createFrameworkMaskedFieldBinding(store, path);\n\n const state = shallowRef(store.getFieldState(path));\n\n const unsubscribe = subscribeFieldState(store, path, (nextState) => {\n state.value = nextState;\n });\n\n onUnmounted(() => {\n unsubscribe();\n cleanupRegisteredField(store, path as string);\n });\n\n const rawValue = computed(() => state.value.value as BitPathValue<TForm, P>);\n\n const displayValue = computed(() =>\n fieldController.displayValue(rawValue.value),\n );\n\n const modelValue = computed({\n get: () => displayValue.value,\n set: (val: string) => {\n fieldController.setValue(val);\n },\n });\n\n const metaState = computed(() => deriveFieldMeta(state.value));\n const error = computed(() => metaState.value.error);\n const touched = computed(() => metaState.value.touched);\n const invalid = computed(() => metaState.value.invalid);\n const isValidating = computed(() => metaState.value.isValidating);\n const isDirty = computed(() => metaState.value.isDirty);\n const isHidden = computed(() => metaState.value.isHidden);\n const isRequired = computed(() => metaState.value.isRequired);\n const hasError = computed(() => metaState.value.hasError);\n\n const setValue = (\n val: BitPathValue<TForm, P> | string | number | null | undefined,\n ) => {\n fieldController.setValue(val);\n };\n\n const setBlur = () => fieldController.setBlur();\n\n const onInput = (\n val: BitPathValue<TForm, P> | string | number | null | undefined,\n ) => {\n setValue(val);\n };\n\n const onBlur = () => {\n setBlur();\n };\n\n return {\n // Main handlers and values (flat)\n value: rawValue,\n displayValue,\n modelValue,\n setValue,\n setBlur,\n onInput,\n onBlur,\n // Metadata (grouped)\n meta: {\n error,\n touched,\n invalid,\n isValidating,\n isDirty,\n isHidden,\n isRequired,\n hasError,\n },\n };\n}\n","import { shallowRef, computed, onUnmounted } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport { createArrayBindingController, BitArrayPath } from \"../core\";\nimport { cleanupRegisteredPrefix } from \"../core\";\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 const controller = createArrayBindingController<TForm, P>(store, path);\n const values = shallowRef(controller.readItems());\n\n const unsubscribe = store.subscribePath(path, () => {\n values.value = controller.readItems();\n });\n\n onUnmounted(() => {\n unsubscribe();\n cleanupRegisteredPrefix(store, `${path as string}.`);\n });\n\n const fields = computed(() => controller.getFields(values.value));\n\n const length = computed(() => values.value.length);\n\n return {\n fields,\n length,\n append: controller.append,\n prepend: controller.prepend,\n insert: controller.insert,\n remove: controller.remove,\n move: controller.move,\n swap: controller.swap,\n replace: controller.replace,\n clear: controller.clear,\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\nimport { observeHistoryMetaSnapshot, readHistoryMetaSnapshot } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitHistoryResult } from \"./types\";\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n\n const meta = shallowRef(readHistoryMetaSnapshot(store));\n\n const unsubscribe = observeHistoryMetaSnapshot(store, (nextMeta) => {\n meta.value = nextMeta;\n });\n\n onUnmounted(unsubscribe);\n\n const undo = () => store.undo();\n const redo = () => store.redo();\n\n return {\n canUndo: computed(() => meta.value.canUndo),\n canRedo: computed(() => meta.value.canRedo),\n historyIndex: computed(() => meta.value.historyIndex),\n historySize: computed(() => meta.value.historySize),\n undo,\n redo,\n };\n}\n","import { ref, computed, onMounted, onUnmounted } from \"vue\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { observeScopeStatusSnapshot } from \"../core\";\nimport { useBitStore } from \"./context\";\n\nexport type { ScopeStatus, ValidateScopeResult };\n\nexport function useBitScope(scopeName: string) {\n const store = useBitStore();\n const status = ref<ScopeStatus>(store.getStepStatus(scopeName));\n let unsubscribe: () => void;\n\n onMounted(() => {\n unsubscribe = observeScopeStatusSnapshot(store, scopeName, (nextStatus) => {\n status.value = nextStatus;\n });\n });\n\n onUnmounted(() => {\n unsubscribe?.();\n });\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const valid = await store.validate({ scope: scopeName });\n const errors = store.getStepErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.getStepErrors(scopeName);\n\n const isValid = computed(() => !status.value.hasErrors);\n const isDirty = computed(() => status.value.isDirty);\n const errors = computed(() => status.value.errors);\n\n return {\n scopeName,\n status,\n errors,\n validate,\n getErrors,\n isValid,\n isDirty,\n };\n}\n","import { ref, computed, watch, onMounted, onUnmounted } from \"vue\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { isScopeStatusEqual } 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 = ref(0);\n\n const scope = computed(() => scopeNames[stepIndex.value] ?? \"\");\n const status = ref<ScopeStatus>(store.getStepStatus(scope.value));\n let unsubscribe: (() => void) | undefined;\n\n watch(scope, (newScope) => {\n status.value = store.getStepStatus(newScope);\n unsubscribe?.();\n unsubscribe = store.subscribeScopeStatus(newScope, updateStatus);\n });\n\n const updateStatus = () => {\n const scopeName = scope.value;\n const newStatus = store.getStepStatus(scopeName);\n if (!isScopeStatusEqual(status.value, newStatus)) {\n status.value = newStatus;\n }\n };\n\n onMounted(() => {\n unsubscribe = store.subscribeScopeStatus(scope.value, updateStatus);\n });\n\n onUnmounted(() => {\n unsubscribe?.();\n });\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const scopeName = scope.value;\n const valid = await store.validate({ scope: scopeName });\n const errors = store.getStepErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.getStepErrors(scope.value);\n\n const next = async (): Promise<boolean> => {\n const scopeName = scope.value;\n\n const scopeFields = store.getScopeFields(scopeName);\n if (store.hasValidationsInProgress(scopeFields)) {\n return false;\n }\n\n const valid = await store.validate({ scope: scopeName });\n if (valid) {\n stepIndex.value = Math.min(stepIndex.value + 1, scopeNames.length - 1);\n } else {\n const errors = store.getStepErrors(scopeName);\n const pathsWithErrors = Object.keys(errors);\n if (pathsWithErrors.length > 0) {\n store.markFieldsTouched(pathsWithErrors);\n }\n }\n return valid;\n };\n\n const prev = () => {\n stepIndex.value = Math.max(stepIndex.value - 1, 0);\n };\n\n const goTo = (targetStep: number) => {\n stepIndex.value = Math.max(\n 0,\n Math.min(targetStep - 1, scopeNames.length - 1),\n );\n };\n\n const step = computed(() => stepIndex.value + 1);\n const isFirst = computed(() => stepIndex.value === 0);\n const isLast = computed(() => stepIndex.value >= scopeNames.length - 1);\n const isValid = computed(() => !status.value.hasErrors);\n const isDirty = computed(() => status.value.isDirty);\n const errors = computed(() => status.value.errors);\n\n return {\n step,\n stepIndex,\n scope,\n next,\n prev,\n goTo,\n isFirst,\n isLast,\n status,\n errors,\n isValid,\n isDirty,\n validate,\n getErrors,\n };\n}\n","import { ref, onUnmounted, readonly } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport { getDeepValue, valueEqual, BitPath, BitPathValue } from \"../core\";\n\nexport function useBitWatch<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n const initialValue = getDeepValue(\n store.getState().values,\n path as string,\n ) as BitPathValue<TForm, P>;\n const value = ref<BitPathValue<TForm, P>>(initialValue);\n\n const unsubscribe = store.subscribePath(path, (newValue) => {\n if (!valueEqual(value.value, newValue)) {\n value.value = newValue as BitPathValue<TForm, P>;\n }\n });\n\n onUnmounted(unsubscribe);\n\n return readonly(value);\n}\n","/**\n * Vue Composition API for File Upload\n *\n * Minimal upload API integrated with global field validation lifecycle.\n */\n\nimport { computed, ComputedRef, ref } from \"vue\";\nimport { useBitField } from \"./use-bit-field\";\nimport { useBitStore } from \"./context\";\nimport { BitUploadFn, BitDeleteUploadFn } from \"../core\";\nimport { createUploadHandler, createRemoveHandler } from \"../core/adapters\";\nimport type { UseBitUploadResult } from \"./types\";\n\nexport function useBitUpload(\n fieldPath: string,\n uploadFn: BitUploadFn,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n let uploadKey: string | null = null;\n const isUploading = ref(false);\n\n const kernelCallbacks = {\n setLoading: (val: boolean) => {\n isUploading.value = val;\n },\n setError: (path: string, msg: string | undefined) =>\n store.setError(path, msg),\n setValue: (val: string | null) => field.setValue(val),\n getUploadKey: () => uploadKey,\n setUploadKey: (key: string | null) => {\n uploadKey = key;\n },\n };\n\n const upload = createUploadHandler(fieldPath, uploadFn, kernelCallbacks);\n const remove = createRemoveHandler(fieldPath, deleteFile, kernelCallbacks);\n\n return {\n value: field.value as ComputedRef<string | File | null>,\n setValue: field.setValue,\n error: computed(() => field.meta.error.value),\n isValidating: computed(\n () => !!field.meta.isValidating.value || isUploading.value,\n ),\n upload,\n remove,\n };\n}\n","import { computed, onUnmounted, ref } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport { observePersistMetaSnapshot } from \"../core\";\nimport type { UseBitPersistResult } from \"./types\";\n\nexport function useBitPersist<T extends object = any>(): UseBitPersistResult {\n const store = useBitStore<T>();\n const meta = ref(store.getPersistMetadata());\n\n const unsubscribe = observePersistMetaSnapshot(store, (nextMeta) => {\n meta.value = nextMeta;\n });\n\n onUnmounted(() => unsubscribe());\n\n const restore = async (): Promise<boolean> => {\n return store.restorePersisted();\n };\n\n const save = async (): Promise<void> => {\n await store.forceSave();\n };\n\n const clear = async (): Promise<void> => {\n await store.clearPersisted();\n };\n\n return {\n restore,\n save,\n clear,\n meta: {\n isSaving: computed(() => meta.value.isSaving),\n isRestoring: computed(() => meta.value.isRestoring),\n error: computed(() => meta.value.error),\n },\n };\n}\n"],"mappings":"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","names":["inject","provide","BIT_STORE_KEY","provideBitStore","store","provide","resolveBitStoreForHooks","useBitStore","inject","computed","onUnmounted","shallowRef","ref","useBitForm","store","useBitStore","state","shallowRef","submitError","ref","lastResponse","unsubscribe","observeFormMetaSnapshot","nextMeta","onUnmounted","controller","actions","createFrameworkFormBinding","result","error","isValid","computed","isSubmitting","isDirty","onSubmit","reset","computed","onUnmounted","shallowRef","useBitField","path","store","useBitStore","fieldController","createFrameworkMaskedFieldBinding","state","shallowRef","unsubscribe","subscribeFieldState","nextState","onUnmounted","cleanupRegisteredField","rawValue","computed","displayValue","modelValue","val","metaState","deriveFieldMeta","error","touched","invalid","isValidating","isDirty","isHidden","isRequired","hasError","setValue","setBlur","shallowRef","computed","onUnmounted","useBitArray","path","store","useBitStore","controller","createArrayBindingController","values","shallowRef","unsubscribe","onUnmounted","cleanupRegisteredPrefix","fields","computed","length","computed","onUnmounted","shallowRef","useBitHistory","store","useBitStore","meta","shallowRef","readHistoryMetaSnapshot","unsubscribe","observeHistoryMetaSnapshot","nextMeta","onUnmounted","undo","redo","computed","ref","computed","onMounted","onUnmounted","useBitScope","scopeName","store","useBitStore","status","ref","unsubscribe","onMounted","observeScopeStatusSnapshot","nextStatus","onUnmounted","validate","valid","errors","getErrors","isValid","computed","isDirty","ref","computed","watch","onMounted","onUnmounted","useBitSteps","scopeNames","store","useBitStore","stepIndex","ref","scope","computed","status","unsubscribe","watch","newScope","updateStatus","scopeName","newStatus","isScopeStatusEqual","onMounted","onUnmounted","validate","valid","errors","getErrors","next","scopeFields","pathsWithErrors","prev","goTo","targetStep","step","isFirst","isLast","isValid","isDirty","ref","onUnmounted","readonly","useBitWatch","path","store","useBitStore","initialValue","getDeepValue","value","ref","unsubscribe","newValue","valueEqual","onUnmounted","readonly","computed","ref","useBitUpload","fieldPath","uploadFn","deleteFile","store","useBitStore","field","useBitField","uploadKey","isUploading","ref","kernelCallbacks","val","path","msg","key","upload","createUploadHandler","remove","createRemoveHandler","computed","computed","onUnmounted","ref","useBitPersist","store","useBitStore","meta","ref","unsubscribe","observePersistMetaSnapshot","nextMeta","onUnmounted","computed"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lehnihon/bit-form",
3
- "version": "2.2.6",
3
+ "version": "2.2.7",
4
4
  "description": "Gerenciamento de estado de formulários agnóstico e performático",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -40,6 +40,11 @@
40
40
  "import": "./dist/index.js",
41
41
  "require": "./dist/index.cjs"
42
42
  },
43
+ "./core": {
44
+ "types": "./dist/core.d.ts",
45
+ "import": "./dist/core.js",
46
+ "require": "./dist/core.cjs"
47
+ },
43
48
  "./react": {
44
49
  "types": "./dist/react/index.d.ts",
45
50
  "import": "./dist/react/index.js",
@@ -84,6 +89,11 @@
84
89
  "types": "./dist/devtools/bridge.d.ts",
85
90
  "import": "./dist/devtools/bridge.js",
86
91
  "require": "./dist/devtools/bridge.cjs"
92
+ },
93
+ "./devtools/protocol": {
94
+ "types": "./dist/devtools/protocol.d.ts",
95
+ "import": "./dist/devtools/protocol.js",
96
+ "require": "./dist/devtools/protocol.cjs"
87
97
  }
88
98
  },
89
99
  "files": [
@@ -108,16 +118,18 @@
108
118
  "test:e2e:headed": "playwright test -c quality/e2e/playwright.config.ts --headed",
109
119
  "test:e2e:debug": "playwright test -c quality/e2e/playwright.config.ts --debug",
110
120
  "quality:e2e:serve": "vite --config quality/e2e/fixtures/react-pilot/vite.config.ts",
121
+ "quality:e2e:serve:prod": "vite build --config quality/e2e/fixtures/react-pilot/vite.config.ts && vite preview --config quality/e2e/fixtures/react-pilot/vite.config.ts --host 127.0.0.1 --port 4173 --strictPort",
111
122
  "test:bench": "vitest run -c quality/vitest.quality.config.ts quality/bench/perf.test.ts",
123
+ "test:bench:memory": "vitest run -c quality/vitest.quality.config.ts quality/bench/memory.bench.ts",
112
124
  "test:bench:compare": "vitest run -c quality/vitest.quality.config.ts quality/bench/rhf-compare.test.ts --maxWorkers=1 --minWorkers=1",
113
- "test:bench:all": "npm run test:bench && npm run test:bench:compare",
125
+ "test:bench:compare:browser": "playwright test -c quality/e2e/playwright.config.ts quality/e2e/tests/benchmark-compare.spec.ts --project=chromium",
126
+ "test:bench:compare:browser:prod": "E2E_PROD=1 playwright test -c quality/e2e/playwright.config.ts quality/e2e/tests/benchmark-compare.spec.ts --project=chromium",
127
+ "test:bench:all": "npm run test:bench && npm run test:bench:memory && npm run test:bench:compare",
128
+ "test:quality:critical": "npm run test:bench && npm run test:bench:memory && npm run test:release-gates",
114
129
  "test:compat": "node quality/compat/run-compat.mjs",
115
130
  "test:observability": "vitest run -c quality/vitest.quality.config.ts quality/release-gates/observability.test.ts",
116
131
  "test:bundle-size": "vitest run -c quality/vitest.quality.config.ts quality/release-gates/bundle-size.test.ts",
117
- "gate:release": "node quality/release-gates/check-changeset.mjs && npm run test:bundle-size && npm run test:observability",
118
- "changeset": "changeset",
119
- "changeset:status": "changeset status",
120
- "changeset:version": "changeset version",
132
+ "test:release-gates": "npm run build && npm run test:bench && npm run test:bench:memory && npm run test:bundle-size && vitest run -c quality/vitest.quality.config.ts quality/release-gates/bundle-size-gate.test.ts && npm run test:observability",
121
133
  "clean": "rm -rf dist && rm -f *.tsbuildinfo",
122
134
  "lint": "npm run clean && tsc --build && tsc -p tsconfig.test.json",
123
135
  "prepublishOnly": "npm run build && npm run test",
@@ -129,7 +141,6 @@
129
141
  "@angular/core": ">=16.0.0",
130
142
  "joi": "^17.0.0",
131
143
  "react": ">=16.8.0",
132
- "rxjs": "^7.0.0",
133
144
  "vue": ">=3.0.0",
134
145
  "yup": "^1.0.0",
135
146
  "zod": "^3.0.0"
@@ -152,19 +163,16 @@
152
163
  },
153
164
  "joi": {
154
165
  "optional": true
155
- },
156
- "rxjs": {
157
- "optional": true
158
166
  }
159
167
  },
160
168
  "devDependencies": {
161
- "@changesets/cli": "^2.29.7",
162
169
  "@angular/common": "^21.1.3",
163
170
  "@angular/compiler": "^21.1.3",
164
171
  "@angular/core": "^21.1.3",
165
172
  "@angular/platform-browser": "^21.1.3",
166
173
  "@angular/platform-browser-dynamic": "^21.1.3",
167
174
  "@playwright/test": "^1.55.0",
175
+ "@tanstack/react-form": "^1.28.5",
168
176
  "@testing-library/jest-dom": "^6.6.3",
169
177
  "@testing-library/react": "^16.2.0",
170
178
  "@types/node": "^22.19.11",
@@ -176,6 +184,7 @@
176
184
  "@vitejs/plugin-vue": "^5.2.1",
177
185
  "@vitest/coverage-v8": "^3.0.5",
178
186
  "@vue/test-utils": "^2.4.6",
187
+ "formik": "^2.4.9",
179
188
  "joi": "^17.13.3",
180
189
  "jsdom": "^26.0.0",
181
190
  "react": "^19.0.0",
@@ -1,2 +0,0 @@
1
- import{h as l,i as u}from"./chunk-PX6WKENM.js";import{b as d,c}from"./chunk-3NUJVIAM.js";async function m(e,r,o,i){try{let t=await e(r,o);i.onSuccess(t)}catch(t){if(l(t)){i.onServerErrors(u(t));return}i.onUnhandledError(t instanceof Error?t:new Error(String(t)))}}function E(e){return{setField:(r,o)=>e.setField(r,o),blurField:r=>e.blurField(r),replaceValues:r=>e.replaceValues(r),hydrate:r=>e.hydrate(r),rebase:r=>e.rebase(r),setError:(r,o)=>e.setError(r,o),setErrors:r=>e.setErrors(r),setServerErrors:r=>e.setServerErrors(r),validate:r=>e.validate(r),transaction:r=>e.transaction(r)}}function p(e,r){e?.preventDefault?.(),r?.stopPropagation&&e?.stopPropagation?.()}function f(e,r,o){return{submit:s=>a=>(p(a,o),e.submit(s)),onSubmit:s=>a=>(p(a,o),r.setSubmissionError(null),e.submit(async(b,F)=>{await m(s,b,F,{onSuccess:n=>{r.setSubmissionResult(n),r.setSubmissionError(null)},onServerErrors:n=>{e.setServerErrors(n)},onUnhandledError:n=>{r.setSubmissionError(n)}})})),reset:()=>{e.reset(),r.clearSubmissionState()},getValues:()=>e.getState().values,getErrors:()=>e.getState().errors,getTouched:()=>e.getState().touched,getDirtyValues:()=>e.getDirtyValues()}}function k(e,r,o){return e.subscribeSelector(()=>e.getFieldState(r),o,{paths:[r],autoTrackPaths:!1,equalityFn:(i,t)=>i.value===t.value&&i.error===t.error&&i.touched===t.touched&&i.isHidden===t.isHidden&&i.isRequired===t.isRequired&&i.isDirty===t.isDirty&&i.isValidating===t.isValidating})}function h(e,r,o){return{setValue:s=>{e.setField(r,c(s,o))},setBlur:()=>e.blurField(r),displayValue:s=>d(s,o)}}function P(e,r){let o=Object.keys(e),i=Object.keys(r);return o.length!==i.length?!1:o.every(t=>e[t]===r[t])}function x(e,r){return e.hasErrors===r.hasErrors&&e.isDirty===r.isDirty&&P(e.errors,r.errors)}function H(e){return[...e,"isDirty"]}export{E as a,f as b,k as c,h as d,x as e,H as f};
2
- //# sourceMappingURL=chunk-2CVKNPWX.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/core/submit-handler.ts","../src/core/form-controller.ts","../src/core/field-controller.ts","../src/core/scope-status.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/contracts/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 createStoreFormActions<T extends object>(\n store: BitStoreHooksApi<T>,\n) {\n return {\n setField: <P extends Parameters<BitStoreHooksApi<T>[\"setField\"]>[0]>(\n path: P,\n value: Parameters<BitStoreHooksApi<T>[\"setField\"]>[1],\n ) => store.setField(path, value),\n blurField: <P extends Parameters<BitStoreHooksApi<T>[\"blurField\"]>[0]>(\n path: P,\n ) => store.blurField(path),\n replaceValues: (values: T) => store.replaceValues(values),\n hydrate: (values: Parameters<BitStoreHooksApi<T>[\"hydrate\"]>[0]) =>\n store.hydrate(values),\n rebase: (values: T) => store.rebase(values),\n setError: (path: string, message: string | undefined) =>\n store.setError(path, message),\n setErrors: (errors: Parameters<BitStoreHooksApi<T>[\"setErrors\"]>[0]) =>\n store.setErrors(errors),\n setServerErrors: (\n serverErrors: Parameters<BitStoreHooksApi<T>[\"setServerErrors\"]>[0],\n ) => store.setServerErrors(serverErrors),\n validate: (options?: Parameters<BitStoreHooksApi<T>[\"validate\"]>[0]) =>\n store.validate(options),\n transaction: <TResult>(callback: () => TResult) =>\n store.transaction(callback),\n };\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/contracts/public-types\";\nimport type {\n BitFieldState,\n BitPath,\n BitPathValue,\n} from \"./store/contracts/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 {\n paths: [path as string],\n autoTrackPaths: false,\n equalityFn: (prev, next) =>\n prev.value === next.value &&\n prev.error === next.error &&\n prev.touched === next.touched &&\n prev.isHidden === next.isHidden &&\n prev.isRequired === next.isRequired &&\n prev.isDirty === next.isDirty &&\n prev.isValidating === next.isValidating,\n },\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","import type { ScopeStatus } from \"./store/contracts/types\";\n\nexport function areScopeErrorsEqual(\n currentErrors: Record<string, string>,\n nextErrors: Record<string, string>,\n): boolean {\n const currentKeys = Object.keys(currentErrors);\n const nextKeys = Object.keys(nextErrors);\n\n if (currentKeys.length !== nextKeys.length) {\n return false;\n }\n\n return currentKeys.every((key) => currentErrors[key] === nextErrors[key]);\n}\n\nexport function isScopeStatusEqual(\n currentStatus: ScopeStatus,\n nextStatus: ScopeStatus,\n): boolean {\n return (\n currentStatus.hasErrors === nextStatus.hasErrors &&\n currentStatus.isDirty === nextStatus.isDirty &&\n areScopeErrorsEqual(currentStatus.errors, nextStatus.errors)\n );\n}\n\nexport function getScopeSubscriptionPaths(scopeFields: readonly string[]) {\n return [...scopeFields, \"isDirty\"];\n}\n"],"mappings":"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","names":["executeSubmitHandler","handler","values","dirtyValues","handlers","result","error","isValidationErrorShape","extractServerErrors","createStoreFormActions","store","path","value","values","message","errors","serverErrors","options","callback","preventFormEvent","event","createFormController","runtime","onSuccess","handler","dirtyValues","executeSubmitHandler","result","error","subscribeFieldState","store","path","listener","prev","next","createMaskedFieldController","mask","value","parseMaskedInput","formatMaskedValue","areScopeErrorsEqual","currentErrors","nextErrors","currentKeys","nextKeys","key","isScopeStatusEqual","currentStatus","nextStatus","getScopeSubscriptionPaths","scopeFields"]}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunkY2ONHDREcjs = require('./chunk-Y2ONHDRE.cjs');var _chunkYCSWULENcjs = require('./chunk-YCSWULEN.cjs');var _react = require('react');var _jsxruntime = require('react/jsx-runtime');var q=_react.createContext.call(void 0, null),lt= exports.a =({store:t,children:e})=>_jsxruntime.jsx.call(void 0, q.Provider,{value:_chunkYCSWULENcjs.k.call(void 0, t),children:e}),S= exports.b =()=>{let t=_react.useContext.call(void 0, q);if(!t)throw new Error("BitForm hooks devem ser usados dentro de um BitFormProvider");return t};var G=t=>({isValid:t.isValid,isDirty:t.isDirty,isSubmitting:t.isSubmitting});function bt(){let t=S(),[e,o]=_react.useState.call(void 0, null),[s,n]=_react.useState.call(void 0, null),c=_react.useRef.call(void 0, null),l=_react.useCallback.call(void 0, ()=>{let p=t.getState(),P={isValid:p.isValid,isDirty:p.isDirty,isSubmitting:p.isSubmitting};return c.current&&c.current.isValid===P.isValid&&c.current.isDirty===P.isDirty&&c.current.isSubmitting===P.isSubmitting?c.current:(c.current=P,P)},[t]),d=_react.useCallback.call(void 0, p=>t.subscribeSelector(G,()=>p(),{paths:["isValid","isDirty","isSubmitting"]}),[t]),i=_react.useSyncExternalStore.call(void 0, d,l,l),r=_react.useMemo.call(void 0, ()=>_chunkY2ONHDREcjs.b.call(void 0, t,{clearSubmissionState:()=>{o(null),n(null)},setSubmissionResult:p=>{n(p)},setSubmissionError:p=>{o(p)}}),[t]),u=_react.useMemo.call(void 0, ()=>_chunkY2ONHDREcjs.a.call(void 0, t),[t]),a=_react.useCallback.call(void 0, r.submit,[r]),y=_react.useCallback.call(void 0, r.onSubmit,[r]),h=_react.useCallback.call(void 0, r.reset,[r]),B=_react.useCallback.call(void 0, r.getValues,[r]),E=_react.useCallback.call(void 0, r.getErrors,[r]),m=_react.useCallback.call(void 0, r.getTouched,[r]),g=_react.useCallback.call(void 0, r.getDirtyValues,[r]);return{meta:_react.useMemo.call(void 0, ()=>({...i,submitError:e,lastResponse:s}),[i,e,s]),getValues:B,getErrors:E,getTouched:m,getDirtyValues:g,submit:a,onSubmit:y,reset:h,...u}}function Tt(t){let e=S(),o=_react.useCallback.call(void 0, r=>e.config.idFactory({scope:"array",path:t,index:r}),[e,t]),s=_react.useRef.call(void 0, []),n=_react.useCallback.call(void 0, ()=>{let r=e.getState(),u=_chunkYCSWULENcjs.e.call(void 0, r.values,t),a=Array.isArray(u)?u:[];if(a.length!==s.current.length)if(a.length>s.current.length){let y=a.length-s.current.length;s.current=[...s.current,...Array(y).fill(null).map((h,B)=>o(s.current.length+B))]}else s.current=s.current.slice(0,a.length);return a},[e,t,o]),c=_react.useCallback.call(void 0, r=>e.subscribePath(t,()=>r()),[e,t]),l=_react.useSyncExternalStore.call(void 0, c,n,n),d=_react.useMemo.call(void 0, ()=>({append:r=>{s.current=[...s.current,o(s.current.length)],e.pushItem(t,r)},prepend:r=>{s.current=[o(0),...s.current],e.prependItem(t,r)},insert:(r,u)=>{let a=[...s.current];a.splice(r,0,o(r)),s.current=a,e.insertItem(t,r,u)},remove:r=>{s.current=s.current.filter((u,a)=>a!==r),e.removeItem(t,r)},move:(r,u)=>{let a=[...s.current],[y]=a.splice(r,1);a.splice(u,0,y),s.current=a,e.moveItem(t,r,u)},swap:(r,u)=>{let a=[...s.current];[a[r],a[u]]=[a[u],a[r]],s.current=a,e.swapItems(t,r,u)},replace:r=>{s.current=r.map((u,a)=>o(a)),e.setField(t,r)},clear:()=>{s.current=[],e.setField(t,[])}}),[e,t,o]);return{fields:_react.useMemo.call(void 0, ()=>l.map((r,u)=>({key:s.current[u]||`temp-${u}`,value:r,index:u})),[l]),length:l.length,...d}}function It(t){let e=S(),o=e.getScopeFields(t),s=_react.useRef.call(void 0, null),n=_react.useCallback.call(void 0, ()=>{let r=e.getStepStatus(t);return s.current&&_chunkY2ONHDREcjs.e.call(void 0, s.current,r)?s.current:(s.current=r,r)},[e,t]),c=_react.useCallback.call(void 0, r=>e.subscribeSelector(u=>({errors:u.errors,isDirty:u.isDirty}),()=>r(),{paths:_chunkY2ONHDREcjs.f.call(void 0, o)}),[e,o]),l=_react.useSyncExternalStore.call(void 0, c,n,n),d=_react.useCallback.call(void 0, async()=>{let r=await e.validate({scope:t}),u=e.getStepErrors(t);return{valid:r,errors:u}},[e,t]),i=_react.useCallback.call(void 0, ()=>e.getStepErrors(t),[e,t]);return{scopeName:t,status:l,errors:l.errors,validate:d,getErrors:i,isValid:!l.hasErrors,isDirty:l.isDirty}}function Ct(t){let e=S(),[o,s]=_react.useState.call(void 0, 0),n=_nullishCoalesce(t[o], () => ("")),c=e.getScopeFields(n),l=_react.useRef.call(void 0, null),d=_react.useCallback.call(void 0, ()=>{let m=e.getStepStatus(n);return l.current&&_chunkY2ONHDREcjs.e.call(void 0, l.current,m)?l.current:(l.current=m,m)},[e,n]),i=_react.useSyncExternalStore.call(void 0, _react.useCallback.call(void 0, m=>e.subscribeSelector(g=>({errors:g.errors,isDirty:g.isDirty}),()=>m(),{paths:_chunkY2ONHDREcjs.f.call(void 0, c)}),[e,c]),d,d),r=_react.useCallback.call(void 0, async()=>{let m=await e.validate({scope:n}),g=e.getStepErrors(n);return{valid:m,errors:g}},[e,n]),u=_react.useCallback.call(void 0, ()=>e.getStepErrors(n),[e,n]),a=_react.useCallback.call(void 0, async()=>{let m=e.getScopeFields(n);if(e.hasValidationsInProgress(m))return!1;let g=await e.validate({scope:n});if(g)s(F=>Math.min(F+1,t.length-1));else{let F=e.getStepErrors(n),p=Object.keys(F);p.length>0&&e.markFieldsTouched(p)}return g},[e,n,t.length]),y=_react.useCallback.call(void 0, ()=>{s(m=>Math.max(m-1,0))},[]),h=_react.useCallback.call(void 0, m=>{s(Math.max(0,Math.min(m-1,t.length-1)))},[t.length]),B=o===0,E=o>=t.length-1;return{step:o+1,stepIndex:o,scope:n,next:a,prev:y,goTo:h,isFirst:B,isLast:E,status:i,errors:i.errors,isValid:!i.hasErrors,isDirty:i.isDirty,validate:r,getErrors:u}}function Wt(t){let e=S(),o=_react.useRef.call(void 0, null),s=_react.useCallback.call(void 0, ()=>{let c=_chunkYCSWULENcjs.e.call(void 0, e.getState().values,t);return o.current!==null&&_chunkYCSWULENcjs.c.call(void 0, o.current,c)?o.current:(o.current=c,c)},[e,t]),n=_react.useCallback.call(void 0, c=>e.subscribePath(t,()=>c()),[e,t]);return _react.useSyncExternalStore.call(void 0, n,s,s)}function Gt(){let t=S(),e=_react.useSyncExternalStore.call(void 0, l=>t.subscribeSelector(d=>d.persist,()=>l(),{paths:["persist"]}),()=>t.getPersistMetadata(),()=>t.getPersistMetadata()),o=_react.useCallback.call(void 0, async()=>t.restorePersisted(),[t]),s=_react.useCallback.call(void 0, async()=>{await t.forceSave()},[t]),n=_react.useCallback.call(void 0, async()=>{await t.clearPersisted()},[t]),c=_react.useMemo.call(void 0, ()=>({isSaving:e.isSaving,isRestoring:e.isRestoring,error:e.error}),[e]);return{restore:o,save:s,clear:n,meta:c}}function Yt(t){let e=S(),o=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>()=>{e.unregisterField&&e.unregisterField(t)},[e,t]);let s=_react.useCallback.call(void 0, ()=>{let i=e.getFieldState(t);if(o.current&&o.current.value===i.value&&o.current.error===i.error&&o.current.touched===i.touched&&o.current.isHidden===i.isHidden&&o.current.isRequired===i.isRequired&&o.current.isDirty===i.isDirty&&o.current.isValidating===i.isValidating)return o.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 o.current=r,r},[e,t]),n=_react.useCallback.call(void 0, i=>_chunkY2ONHDREcjs.c.call(void 0, e,t,()=>i()),[e,t]),c=_react.useSyncExternalStore.call(void 0, n,s,s),l=_react.useCallback.call(void 0, i=>e.setField(t,i),[e,t]),d=_react.useCallback.call(void 0, ()=>e.blurField(t),[e,t]);return{fieldState:c,setValue:l,setBlur:d,store:e}}exports.a = lt; exports.b = S; exports.c = bt; exports.d = Yt; exports.e = Tt; exports.f = It; exports.g = Ct; exports.h = Wt; exports.i = Gt;
2
- //# sourceMappingURL=chunk-3EDD3V43.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/chunk-3EDD3V43.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","selectFormMeta","state","useBitForm","submitError","setSubmitError","useState","lastResponse","setLastResponse","lastMeta","useRef","getMetaSnapshot","useCallback","nextMeta","subscribeMeta","cb","metaState","useSyncExternalStore","controller","useMemo","createFormController","result","error","actions","createStoreFormActions","submit","onSubmit","reset","getValues","getErrors","getTouched","getDirtyValues","useBitArray","path","createId","index","idsRef","getSnapshot","value","getDeepValue","arrayValue","diff","_","i","subscribeArray","data","methods","newIds","from","to","item","indexA","indexB","items"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/chunk-3EDD3V43.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 {\n createFormController,\n createStoreFormActions,\n} from \"../core/form-controller\";\nimport type { UseBitFormResult } from \"./types\";\n\nconst selectFormMeta = <T extends object>(state: {\n isValid: boolean;\n isDirty: boolean;\n isSubmitting: boolean;\n}) => ({\n isValid: state.isValid,\n isDirty: state.isDirty,\n isSubmitting: state.isSubmitting,\n});\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(selectFormMeta, () => cb(), {\n paths: [\"isValid\", \"isDirty\", \"isSubmitting\"],\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 actions = useMemo(() => createStoreFormActions(store), [store]);\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 ...actions,\n };\n}\n","import { useCallback, useSyncExternalStore, useRef, useMemo } from \"react\";\nimport { useBitStore } from \"./context\";\nimport {\n getDeepValue,\n BitArrayPath,\n BitPathValue,\n BitArrayItem,\n BitPath,\n} from \"../core\";\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 const createId = useCallback(\n (index?: number) =>\n store.config.idFactory({\n scope: \"array\",\n path: path as string,\n index,\n }),\n [store, path],\n );\n const idsRef = useRef<string[]>([]);\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 const arrayValue = Array.isArray(value) ? (value as Item[]) : [];\n\n if (arrayValue.length !== idsRef.current.length) {\n if (arrayValue.length > idsRef.current.length) {\n const diff = arrayValue.length - idsRef.current.length;\n idsRef.current = [\n ...idsRef.current,\n ...Array(diff)\n .fill(null)\n .map((_, i) => createId(idsRef.current.length + i)),\n ];\n } else {\n idsRef.current = idsRef.current.slice(0, arrayValue.length);\n }\n }\n\n return arrayValue;\n }, [store, path, createId]);\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 methods = useMemo(\n () => ({\n append: (value: Item) => {\n idsRef.current = [...idsRef.current, createId(idsRef.current.length)];\n store.pushItem(path, value);\n },\n prepend: (value: Item) => {\n idsRef.current = [createId(0), ...idsRef.current];\n store.prependItem(path, value);\n },\n insert: (index: number, value: Item) => {\n const newIds = [...idsRef.current];\n newIds.splice(index, 0, createId(index));\n idsRef.current = newIds;\n store.insertItem(path, index, value);\n },\n remove: (index: number) => {\n idsRef.current = idsRef.current.filter((_, i) => i !== index);\n store.removeItem(path, index);\n },\n move: (from: number, to: number) => {\n const newIds = [...idsRef.current];\n const [item] = newIds.splice(from, 1);\n newIds.splice(to, 0, item);\n idsRef.current = newIds;\n store.moveItem(path, from, to);\n },\n swap: (indexA: number, indexB: number) => {\n const newIds = [...idsRef.current];\n [newIds[indexA], newIds[indexB]] = [newIds[indexB], newIds[indexA]];\n idsRef.current = newIds;\n store.swapItems(path, indexA, indexB);\n },\n replace: (items: Item[]) => {\n idsRef.current = items.map((_, index) => createId(index));\n store.setField(\n path as unknown as BitPath<TForm>,\n items as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n clear: () => {\n idsRef.current = [];\n store.setField(\n path as unknown as BitPath<TForm>,\n [] as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n }),\n [store, path, createId],\n );\n\n const fields = useMemo(\n () =>\n (data as Item[]).map((item: Item, index: number) => ({\n key: idsRef.current[index] || `temp-${index}`,\n value: item,\n index,\n })),\n [data],\n );\n\n return {\n fields,\n length: data.length,\n ...methods,\n };\n}\n"]}
@@ -1,2 +0,0 @@
1
- function h(n){if(n===null||typeof n!="object")return n;if(typeof structuredClone=="function")return structuredClone(n);if(n instanceof Date)return new Date(n.getTime());if(n instanceof RegExp)return new RegExp(n.source,n.flags);if(Array.isArray(n))return n.map(t=>h(t));let e={};for(let t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=h(n[t]));return e}function P(n,e){if(e===void 0)return h(n);if(e===null||typeof e!="object"||e instanceof Date||e instanceof RegExp||Array.isArray(e))return h(e);let t=n&&typeof n=="object"&&!Array.isArray(n)?h(n):{};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]=P(s,r);continue}t[i]=h(r)}return t}function S(n,e){return n===e?!0:n===null||typeof n!="object"||e===null||typeof e!="object"?!1:m(n,e)}function m(n,e){if(n===e)return!0;if(n===null||typeof n!="object"||e===null||typeof e!="object")return!1;if(n instanceof Date&&e instanceof Date)return n.getTime()===e.getTime();if(n instanceof RegExp&&e instanceof RegExp)return n.toString()===e.toString();let t=Object.keys(n),i=Object.keys(e);if(t.length!==i.length)return!1;for(let r of t)if(!Object.prototype.hasOwnProperty.call(e,r)||!m(n[r],e[r]))return!1;return!0}function N(n,e,t="",i=new Set){if(S(n,e))return i;if(n===null||typeof n!="object"||e===null||typeof e!="object")return t&&i.add(t),i;if(Array.isArray(n)||Array.isArray(e))return!S(n,e)&&t&&i.add(t),i;let r=new Set;for(let s of Object.keys(n||{}))r.add(s);for(let s of Object.keys(e||{}))r.add(s);for(let s of r){let o=t?`${t}.${s}`:s;N(n?.[s],e?.[s],o,i)}return i}var se=1e3,B=new Map;function K(n){let e=B.get(n);if(e)return e;let t=n.split(".");return B.size>=se&&B.clear(),B.set(n,t),t}function p(n,e){if(!e)return n;let t=K(e),i=n;for(let r of t){if(i==null)return;i=i[r]}return i}function y(n,e,t){if(!e)return t;let i=K(e),r=Array.isArray(n)?[...n]:{...n},s=r;for(let o=0;o<i.length-1;o++){let a=i[o],l=i[o+1],d=Number(l),c=Number.isInteger(d)&&String(d)===l,u=s[a];u==null?s[a]=c?[]:{}:s[a]=Array.isArray(u)?[...u]:{...u},s=s[a]}return s[i[i.length-1]]=t,r}function G(n,e){if(e.length===0)return n;let t=Array.isArray(n)?[...n]:{...n},i=new WeakSet;t&&typeof t=="object"&&i.add(t);for(let[r,s]of e){let o=K(r),a=t;for(let l=0;l<o.length-1;l++){let d=o[l],c=o[l+1],u=Number(c),g=Number.isInteger(u)&&String(u)===c,f=a[d];f==null?(a[d]=g?[]:{},i.add(a[d])):typeof f=="object"?i.has(f)||(a[d]=Array.isArray(f)?[...f]:{...f},i.add(a[d])):(a[d]=g?[]:{},i.add(a[d])),a=a[d]}a[o[o.length-1]]=s}return t}function ne(n,e){let t={},i=`${e}.`;for(let r in n)r!==e&&!r.startsWith(i)&&(t[r]=n[r]);return t}function E(n,e,t){let i={},r={},s={},o=`${e}.`;for(let a of Object.keys(n.errors)){let l=L(a,o,t);l&&(i[l]=n.errors[a])}for(let a of Object.keys(n.touched)){let l=L(a,o,t);l&&(r[l]=n.touched[a])}for(let a of Object.keys(n.isValidating)){let l=L(a,o,t);l&&(s[l]=n.isValidating[a])}return{errors:i,touched:r,isValidating:s}}function L(n,e,t){if(!n.startsWith(e))return n;let r=n.substring(e.length).split("."),s=parseInt(r[0],10),o=t(s);if(o===null)return null;let a=r.slice(1).join(".");return a?`${e}${o}.${a}`:`${e}${o}`}function J(n){if(typeof n!="object"||n===null||Array.isArray(n))return!1;let e=n.errors??n;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 ae(n){return J(n)?n.errors??n:{}}var $=typeof globalThis<"u"?globalThis:typeof global<"u"?global:window;$.__BIT_FORM__||($.__BIT_FORM__={stores:{},listeners:new Set,dispatch(n,e){this.listeners.forEach(t=>t(n,e))},subscribe(n){return this.listeners.add(n),()=>{this.listeners.delete(n)}}});var T=$.__BIT_FORM__;function oe(){return`bit-form-${Math.random().toString(36).slice(2,9)}`}function X(n={}){let e=n.initialValues??{},t=n.validation,i=n.history,r=n.name?`bit-form:${n.name}:draft`:"bit-form:draft",s={enabled:n.persist?.enabled??!1,key:n.persist?.key??r,storage:n.persist?.storage,autoSave:n.persist?.autoSave??!0,debounceMs:n.persist?.debounceMs??300,mode:n.persist?.mode??"values",serialize:n.persist?.serialize??JSON.stringify,deserialize:n.persist?.deserialize??(o=>JSON.parse(o)),onError:n.persist?.onError};return{name:n.name,initialValues:h(e),resolver:t?.resolver,validationDelay:t?.delay??300,enableHistory:i?.enabled??!1,historyLimit:i?.limit??15,masks:n.masks,fields:n.fields,devTools:n.devTools,persist:s,idFactory:n.idFactory??oe,plugins:n.plugins??[]}}var V=class{fieldConfigs=new Map;dependencies=new Map;hiddenFields=new Set;conditionalVisibilityPaths=new Set;requiredPathsByDependency=new Map;requiredConditionalPaths=new Set;requiredEvaluationCache=new WeakMap;requiredEvaluationCacheDirty=!1;getFieldConfig(e){return this.fieldConfigs.get(e)}forEachFieldConfig(e){this.fieldConfigs.forEach((t,i)=>e(t,i))}hasFieldConfig(e){return this.fieldConfigs.has(e)}getHiddenFields(){return this.hiddenFields}register(e,t,i){this.fieldConfigs.set(e,t),t.conditional?.showIf&&this.conditionalVisibilityPaths.add(e);let r=t.conditional?.dependsOn;r&&r.forEach(o=>{this.dependencies.has(o)||this.dependencies.set(o,new Set),this.dependencies.get(o).add(e)});let s=t.conditional?.dependsOn;s&&t.conditional?.requiredIf&&(this.requiredConditionalPaths.add(e),s.forEach(o=>{this.requiredPathsByDependency.has(o)||this.requiredPathsByDependency.set(o,new Set),this.requiredPathsByDependency.get(o).add(e)})),this.requiredEvaluationCacheDirty=!0,this.evaluateFieldCondition(e,i)}isHidden(e){return this.hiddenFields.has(e)}isRequired(e,t){let i=this.fieldConfigs.get(e);if(!i||this.isHidden(e)||!i.conditional?.requiredIf)return!1;this.requiredEvaluationCacheDirty&&(this.requiredEvaluationCache=new WeakMap,this.requiredEvaluationCacheDirty=!1);let r=this.requiredEvaluationCache.get(t);if(r||(r=new Map,this.requiredEvaluationCache.set(t,r)),r.has(e))return r.get(e);let s=!!i.conditional.requiredIf(t);return r.set(e,s),s}getRequiredErrors(e){let t={};return this.requiredConditionalPaths.forEach(i=>{let r=this.fieldConfigs.get(i);if(r&&this.isRequired(i,e)){let s=p(e,i);this.isEmpty(s)&&(t[i]=r.conditional?.requiredMessage??"required field")}}),t}evaluateAll(e){this.conditionalVisibilityPaths.forEach(t=>{this.evaluateFieldCondition(t,e)})}updateDependencies(e,t){let i=[],r=[e],s=new Set;for(;r.length>0;){let o=r.shift();if(s.has(o))continue;s.add(o);let a=this.dependencies.get(o);a&&a.forEach(l=>{let d=this.isHidden(l);this.evaluateFieldCondition(l,t);let c=this.isHidden(l);d!==c&&i.push(l),r.push(l)})}return i}unregister(e){let t=this.fieldConfigs.get(e);this.fieldConfigs.delete(e),this.hiddenFields.delete(e),this.conditionalVisibilityPaths.delete(e),this.dependencies.delete(e),this.requiredEvaluationCacheDirty=!0,this.requiredConditionalPaths.delete(e),t?.conditional?.dependsOn?.forEach(i=>{let r=this.requiredPathsByDependency.get(i);r&&(r.delete(e),r.size===0&&this.requiredPathsByDependency.delete(i))}),this.dependencies.forEach(i=>{i.delete(e)})}unregisterPrefix(e){let t=[];return this.fieldConfigs.forEach((i,r)=>{r.startsWith(e)&&t.push([r,i])}),t.forEach(([i])=>this.unregister(i)),t}evaluateFieldCondition(e,t){let r=this.fieldConfigs.get(e)?.conditional?.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}};var C=class n{constructor(e){this.getComputedEntries=e}static MIN_PASSES=4;computedDependencyCache=new Map;reverseDepsCache=null;childDepsIndex=null;invalidateReverseDeps(){this.reverseDepsCache=null,this.childDepsIndex=null}getReverseDependencies(e){if(this.reverseDepsCache)return this.reverseDepsCache;let t=new Map;for(let r of e){let s=this.getDependenciesForEntry(r);for(let o of s){let a=t.get(o);a||(a=new Set,t.set(o,a)),a.add(r.path)}}let i=new Map;for(let r of t.keys()){let s=r.split(".");for(let o=1;o<s.length;o++){let a=s.slice(0,o).join("."),l=i.get(a);l||(l=new Set,i.set(a,l)),l.add(r)}}return this.reverseDepsCache=t,this.childDepsIndex=i,t}apply(e,t){let i=this.normalizeEntries(this.getComputedEntries());if(i.length===0)return e;let r=this.resolveEntriesToRun(i,t),s=r.entries;if(s.length===0)return e;let o=e,a=r.requiresStabilizationPasses?Math.max(n.MIN_PASSES,s.length*2):1;for(let l=0;l<a;l++){let d=!1;for(let c of s){let{newValue:u,trackedDependencies:g}=this.computeWithTracking(c,o,r.shouldTrackDependencies),f=p(o,c.path);if(m(f,u)||(o=y(o,c.path,u),d=!0),g){let _=this.computedDependencyCache.get(c.path);this.computedDependencyCache.set(c.path,g),(!_||_.size!==g.size||Array.from(_).some(re=>!g.has(re)))&&this.invalidateReverseDeps()}}if(!d)break;if(r.requiresStabilizationPasses&&l===a-1)throw new Error("BitStore: computed fields did not stabilize. Check for cyclic computed definitions.")}return o}resolveEntriesToRun(e,t){if(!t||t.length===0||t.includes("*")){let l=e.every(d=>d.dependsOn!==void 0||this.computedDependencyCache.has(d.path));return{entries:this.orderEntries(e),shouldTrackDependencies:!l,requiresStabilizationPasses:!l}}let i=this.getReverseDependencies(e),r=!1;for(let l of e)this.getDependenciesForEntry(l).length===0&&(r=!0);let s=new Set,o=[...t];for(;o.length>0;){let l=o.shift(),d=this.getDependentsForPath(i,l);if(d)for(let c of d)s.has(c)||(s.add(c),o.push(c))}if(s.size===0)return{entries:[],shouldTrackDependencies:r,requiresStabilizationPasses:!1};let a=e.filter(l=>s.has(l.path));return{entries:this.orderEntries(a),shouldTrackDependencies:r,requiresStabilizationPasses:r}}normalizeEntries(e){return e.length===0||!Array.isArray(e[0])?e:e.map(t=>Array.isArray(t)?{path:t[0],compute:t[1]}:t)}getDependenciesForEntry(e){return e.dependsOn??Array.from(this.computedDependencyCache.get(e.path)??[])}orderEntries(e){if(e.length<=1)return e;let t=new Map(e.map(a=>[a.path,a])),i=new Map,r=new Map;e.forEach(a=>i.set(a.path,0)),e.forEach(a=>{this.getDependenciesForEntry(a).forEach(d=>{if(!t.has(d))return;let c=r.get(d)??new Set;c.has(a.path)||(c.add(a.path),r.set(d,c),i.set(a.path,(i.get(a.path)??0)+1))})});let s=e.filter(a=>(i.get(a.path)??0)===0).map(a=>a.path),o=[];for(;s.length>0;){let a=s.shift();o.push(a);let l=r.get(a);l&&l.forEach(d=>{let c=(i.get(d)??0)-1;i.set(d,c),c===0&&s.push(d)})}if(o.length!==e.length)throw new Error("BitStore: cyclic computed dependencies detected. Check computedDependsOn definitions.");return o.map(a=>t.get(a))}getDependentsForPath(e,t){let i=new Set,r=a=>{let l=e.get(a);l&&l.forEach(d=>i.add(d))};r(t);let s=t.split(".");for(;s.length>1;)s.pop(),r(s.join("."));let o=this.childDepsIndex?.get(t);if(o)for(let a of o)r(a);return i}computeWithTracking(e,t,i){let r=this.getDependenciesForEntry(e);if(!i||r.length>0)return{newValue:e.compute(t),trackedDependencies:null};let s=new Set,o=this.createTrackedValues(t,s);return{newValue:e.compute(o),trackedDependencies:s}}createTrackedValues(e,t){let i=(r,s)=>!r||typeof r!="object"?r:new Proxy(r,{get:(o,a)=>{if(typeof a!="string")return Reflect.get(o,a);let l=s?`${s}.${a}`:a;t.add(l);let d=Reflect.get(o,a);return i(d,l)}});return i(e,"")}};var F=class{dirtyPaths=new Set;dirtyPathIndex=new Set;dirtyPrefixRefCount=new Map;childrenByPrefix=new Map;updateForPath(e,t,i){this.removeDirtyChildren(e);let r=p(t,e),s=p(i,e);return S(r,s)?this.removeDirtyPath(e):this.addDirtyPath(e),this.dirtyPaths.size>0}rebuild(e,t){return this.dirtyPaths=N(e,t),this.dirtyPrefixRefCount.clear(),this.rebuildIndex(),this.dirtyPaths.size>0}clear(){this.dirtyPaths.clear(),this.dirtyPathIndex.clear(),this.dirtyPrefixRefCount.clear(),this.childrenByPrefix.clear()}get isDirty(){return this.dirtyPaths.size>0}getDirtyPaths(){return this.dirtyPaths}isPathDirty(e){if(this.dirtyPathIndex.has(e))return!0;let t=e.split(".");for(;t.length>1;)if(t.pop(),this.dirtyPaths.has(t.join(".")))return!0;return!1}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 o=s[1];if(i.has(o))continue;i.add(o);let a=p(e,o);t=y(t,o,a)}else{let o=p(e,r);t=y(t,r,o)}}return t}rebuildIndex(){let e=new Set,t=new Map,i=new Map;for(let r of this.dirtyPaths)this.forEachPathPrefix(r,s=>{e.add(s),t.set(s,(t.get(s)??0)+1)}),this.forEachAncestorPrefix(r,s=>{let o=i.get(s);o?o.add(r):i.set(s,new Set([r]))});this.dirtyPathIndex=e,this.dirtyPrefixRefCount=t,this.childrenByPrefix=i}removeDirtyChildren(e){let t=this.childrenByPrefix.get(e);if(!(!t||t.size===0))for(let i of[...t])this.removeDirtyPath(i)}addDirtyPath(e){this.dirtyPaths.has(e)||(this.dirtyPaths.add(e),this.forEachPathPrefix(e,t=>{this.dirtyPathIndex.add(t),this.dirtyPrefixRefCount.set(t,(this.dirtyPrefixRefCount.get(t)??0)+1)}),this.forEachAncestorPrefix(e,t=>{let i=this.childrenByPrefix.get(t);i?i.add(e):this.childrenByPrefix.set(t,new Set([e]))}))}removeDirtyPath(e){this.dirtyPaths.has(e)&&(this.dirtyPaths.delete(e),this.forEachPathPrefix(e,t=>{let i=(this.dirtyPrefixRefCount.get(t)??0)-1;if(i<=0){this.dirtyPrefixRefCount.delete(t),this.dirtyPathIndex.delete(t);return}this.dirtyPrefixRefCount.set(t,i)}),this.forEachAncestorPrefix(e,t=>{this.childrenByPrefix.get(t)?.delete(e)}))}forEachPathPrefix(e,t){let i=e.split("."),r="";for(let s of i)r=r?`${r}.${s}`:s,t(r)}forEachAncestorPrefix(e,t){let i=e.split("."),r="";for(let s=0;s<i.length-1;s++)r=r?`${r}.${i[s]}`:i[s],t(r)}};var x=class{constructor(e){this.getState=e}listeners=new Set;selectorListeners=new Set;pathScopedSubscriptions=new Map;pathSelectorIndex=new Map;expandedPathCache=new Map;subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}subscribeSelector(e,t,i,r){let s=e(this.getState()),o={notify:d=>{let c=e(d);r(s,c)||(s=c,t(c))}},a=i?.autoTrackPaths?this.collectTrackedSelectorPaths(e):[];i?.autoTrackPaths&&typeof process<"u"&&process.env?.NODE_ENV!=="production"&&console.warn("[bit-form] subscribeSelector: autoTrackPaths creates Proxy wrappers to detect accessed paths at subscription time. For high-frequency or dynamically-rendered fields (e.g. field arrays), prefer explicit `paths: [...]` to avoid mount-time overhead.");let l=this.normalizeSubscriptionPaths([...i?.paths??[],...a]);return l.length>0?(this.pathScopedSubscriptions.set(o,l),l.forEach(d=>{this.expandPathForIndexing(d).forEach(c=>{let u=this.pathSelectorIndex.get(c)??new Set;u.add(o),this.pathSelectorIndex.set(c,u)})})):this.selectorListeners.add(o),i?.emitImmediately&&t(s),()=>{this.selectorListeners.delete(o);let d=this.pathScopedSubscriptions.get(o);d&&(d.forEach(c=>{this.expandPathForIndexing(c).forEach(u=>{let g=this.pathSelectorIndex.get(u);g&&(g.delete(o),g.size===0&&this.pathSelectorIndex.delete(u))})}),this.pathScopedSubscriptions.delete(o))}}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(),this.expandedPathCache.clear()}normalizeSubscriptionPaths(e){if(!e||e.length===0)return[];let t=new Set,i=[];for(let r of e){let s=r.trim();s.length===0||t.has(s)||(t.add(s),i.push(s))}return i}collectTrackedSelectorPaths(e){let t=new Set,i=(s,o)=>!s||typeof s!="object"?s:new Proxy(s,{get:(a,l)=>{if(typeof l!="string")return Reflect.get(a,l);let d=o?`${o}.${l}`:l;t.add(d);let c=Reflect.get(a,l);return i(c,d)}}),r=new Proxy(this.getState(),{get:(s,o)=>{if(typeof o!="string")return Reflect.get(s,o);let a=Reflect.get(s,o);return o==="values"?i(a,""):a}});try{return e(r),Array.from(t)}catch{return[]}}collectSubscribersForChangedPaths(e){let t=new Set,i=s=>{let o=this.pathSelectorIndex.get(s);o&&o.forEach(a=>t.add(a))};return this.normalizeSubscriptionPaths(e).forEach(s=>{i(s);let o=s.split(".");for(;o.length>1;)o.pop(),i(o.join("."))}),t}expandPathForIndexing(e){let t=this.expandedPathCache.get(e);if(t)return t;let i=e.split("."),r=[];for(let s=1;s<=i.length;s++)r.push(i.slice(0,s).join("."));return this.expandedPathCache.set(e,r),r}};function le(n){let e=!1;for(let i of Object.values(n))if(i===void 0){e=!0;break}if(!e)return n;let t={};return Object.entries(n).forEach(([i,r])=>{r!==void 0&&(t[i]=r)}),t}function de(n){for(let e in n)return!0;return!1}function W(n){let{currentState:e,partialState:t,changedPaths:i,applyComputedValues:r}=n,s={...e,...t},o=!!t.values;t.values&&(s.values=r(t.values)),t.errors&&(s.errors=le(t.errors),s.isValid=!de(s.errors));let a=i&&i.length>0?i:void 0,l=ce(t,!a),d=ue(a,l);return{nextState:s,changedPaths:d,valuesChanged:o}}function ce(n,e){if(e&&n.values)return["*"];let t=new Set,i=[n.errors,n.touched,n.isValidating];for(let r of i)if(r)for(let s in r)t.add(s);return n.persist&&t.add("persist"),"isValid"in n&&t.add("isValid"),"isDirty"in n&&t.add("isDirty"),"isSubmitting"in n&&t.add("isSubmitting"),t.size>0?Array.from(t):void 0}function ue(n,e){if(!n?.length)return e;if(!e?.length)return n;let t=new Set;for(let i of n)t.add(i);for(let i of e)t.add(i);return Array.from(t)}function he(n){return typeof n=="boolean"?{enabled:n,mode:"local"}:{enabled:!!n,mode:n?.mode??"local",url:n?.url}}function Y(n){let e=he(n);return e.enabled?{name:"bit-devtools",setup:()=>{let t=null,i=!1;return(async()=>{try{if(e.mode==="remote"){let{setupRemoteBridge:r}=await import("./devtools/bridge.js");t=r(e.url||"ws://localhost:3000")}else{let{initDevTools:r}=await import("./devtools/index.js"),s=r();t=s&&typeof s.destroy=="function"?s.destroy:null}i&&t&&(t(),t=null)}catch{}})(),()=>{i=!0,t&&(t(),t=null)}}}:null}function pe(){if(typeof globalThis>"u")return;let n=globalThis.localStorage;if(n)return{getItem:e=>n.getItem(e),setItem:(e,t)=>n.setItem(e,t),removeItem:e=>n.removeItem(e)}}var w=class{constructor(e,t,i,r){this.config=e;this.getValues=t;this.getDirtyValues=i;this.applyRestoredValues=r}timer;getStorage(){return this.config.storage||pe()}canPersist(){return!!(this.config.enabled&&this.config.key&&this.getStorage())}handleError(e){this.config.onError?.(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(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 D=class{constructor(e,t){this.plugins=e;this.contextFactory=t}teardownFns=[];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=t.hooks?.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(),o={source:e,pluginName:r,error:t,event:i,values:s.getState().values,state:s.getState()};for(let a of this.plugins){let l=a.hooks?.onError;if(l)try{await l(o,s)}catch{}}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=r.hooks?.[e];if(s)try{await s(t,i)}catch(o){await this.reportError(e,o,t,r.name)}}}};var k=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)}}},M=class{constructor(e){this.steps=e}run(e){for(let t of this.steps){if(e.halted)break;t.run(e)}}};function A(n){for(let e in n)return!0;return!1}var R=class{constructor(e){this.store=e;this.validationPipeline=new v([{name:"validate:resolve-target-fields",run:t=>this.resolveTargetFields(t)},{name:"validate:before-hooks",run:async t=>this.runBeforeValidateHooks(t)},{name:"validate:resolver",run:async t=>this.runResolver(t)},{name:"validate:required-and-hidden",run:t=>this.applyRequiredAndHiddenRules(t)},{name:"validate:abort-check",run:async t=>this.abortIfOutdated(t)},{name:"validate:commit-scoped",run:async t=>this.commitScopedValidation(t)},{name:"validate:commit-global",run:async t=>this.commitGlobalValidation(t)}])}validationTimeout;currentValidationId=0;asyncEpoch=0;validatingCount=0;pendingScopeFields=null;asyncTimers=new Map;asyncRequests=new Map;asyncErrors=new Map;validationPipeline;updateFieldValidating(e,t){let i=this.store.getState();if(!!i.isValidating[e]===t)return;let s={...i.isValidating};t?(s[e]=!0,this.validatingCount+=1):(delete s[e],this.validatingCount=Math.max(0,this.validatingCount-1)),this.store.internalUpdateState({isValidating:s})}cancelFieldAsync(e){let t=this.asyncTimers.get(e);t&&(clearTimeout(t),this.asyncTimers.delete(e)),this.asyncRequests.set(e,(this.asyncRequests.get(e)||0)+1)}cleanupField(e){this.cancelFieldAsync(e),this.asyncTimers.delete(e),this.asyncRequests.delete(e),this.asyncErrors.delete(e),this.updateFieldValidating(e,!1)}cleanupPrefix(e){for(let t of this.asyncTimers.keys())(t===e||t.startsWith(`${e}.`))&&this.cleanupField(t)}beginExternalValidation(e){this.cancelFieldAsync(e),this.updateFieldValidating(e,!0)}endExternalValidation(e){this.updateFieldValidating(e,!1)}async setExternalError(e,t){if(t){this.asyncErrors.set(e,t),this.store.setError(e,t);return}if(this.asyncErrors.delete(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:!A(i)})}handleAsync(e,t){let i=this.store.getFieldConfig(e),r=i?.validation?.asyncValidate;if(!r){this.updateFieldValidating(e,!1);return}let s=this.asyncTimers.get(e);s&&clearTimeout(s);let o=i.validation?.asyncValidateDelay??500;this.updateFieldValidating(e,!0),this.asyncTimers.set(e,setTimeout(async()=>{this.asyncTimers.delete(e);let a=this.asyncEpoch,l=(this.asyncRequests.get(e)||0)+1;this.asyncRequests.set(e,l);try{let d=await r(t,this.store.getState().values);if(this.asyncRequests.get(e)!==l||a!==this.asyncEpoch)return;if(d)this.asyncErrors.set(e,d),this.store.setError(e,d);else if(this.asyncErrors.delete(e),this.store.validate)await this.store.validate({scopeFields:[e]});else{let c={...this.store.getState().errors};delete c[e],this.store.internalUpdateState({errors:c,isValid:!A(c)})}}finally{this.asyncRequests.get(e)===l&&a===this.asyncEpoch&&this.updateFieldValidating(e,!1)}},o))}hasValidationsInProgress(e){let t=this.store.getState();return e&&e.length>0?e.some(i=>!!t.isValidating[i]):this.validatingCount>0}trigger(e,t){this.validationTimeout&&clearTimeout(this.validationTimeout);let i=this.store.config.validationDelay??300,r=t?.forceDebounce?Math.max(1,i):i;if(r>0){if(e&&e.length>0)if(!this.pendingScopeFields)this.pendingScopeFields=new Set(e);else for(let o of e)this.pendingScopeFields.add(o);else this.pendingScopeFields=null;let s=this.pendingScopeFields?Array.from(this.pendingScopeFields):void 0;this.validationTimeout=setTimeout(()=>{this.pendingScopeFields=null,this.validate({scopeFields:s})},r)}else this.pendingScopeFields=null,this.validate({scopeFields:e})}async validate(e){let t={options:e,validationId:++this.currentValidationId,currentState:this.store.getState(),targetFields:e?.scopeFields,allErrors:{},isValid:!0,result:!0,aborted:!1};return await this.validationPipeline.run(t),t.result}clear(e){let t=this.asyncTimers.get(e);t&&clearTimeout(t),this.asyncTimers.delete(e),this.updateFieldValidating(e,!1),this.asyncErrors.delete(e)}cancelAll(){this.asyncEpoch+=1,this.validatingCount=0,this.pendingScopeFields=null,this.validationTimeout&&clearTimeout(this.validationTimeout),this.asyncTimers.forEach(e=>clearTimeout(e)),this.asyncTimers.clear(),this.asyncRequests.clear(),this.asyncErrors.clear(),this.store.internalUpdateState({isValidating:{}})}resolveTargetFields(e){if(e.options?.scope){let t=this.store.getScopeFields(e.options.scope);t.length>0&&(e.targetFields=t)}}async runBeforeValidateHooks(e){await this.store.emitBeforeValidate({values:e.currentState.values,state:e.currentState,scope:e.options?.scope,scopeFields:e.targetFields})}async runResolver(e){e.allErrors=this.store.config.resolver?await this.store.config.resolver(e.currentState.values,{scopeFields:e.targetFields}):{}}applyRequiredAndHiddenRules(e){let t=this.store.getRequiredErrors(e.currentState.values);e.allErrors={...e.allErrors,...t},this.store.getHiddenFields().forEach(i=>{delete e.allErrors[i],this.asyncErrors.delete(i)})}async abortIfOutdated(e){e.validationId!==this.currentValidationId&&(e.aborted=!0,e.result=e.currentState.isValid,await this.store.emitAfterValidate({values:this.store.getState().values,state:this.store.getState(),scope:e.options?.scope,scopeFields:e.targetFields,errors:this.store.getState().errors,result:e.currentState.isValid,aborted:!0}),e.halted=!0)}async commitScopedValidation(e){if(!e.targetFields)return;let t={...e.currentState.errors};e.targetFields.forEach(i=>{e.allErrors[i]?t[i]=e.allErrors[i]:this.asyncErrors.has(i)?t[i]=this.asyncErrors.get(i):delete t[i]}),e.isValid=!A(t),e.result=e.targetFields.every(i=>!e.allErrors[i]&&!this.asyncErrors.has(i)),this.store.internalUpdateState({errors:t,isValid:e.isValid}),await this.store.emitAfterValidate({values:this.store.getState().values,state:this.store.getState(),scope:e.options?.scope,scopeFields:e.targetFields,errors:t,result:e.result}),e.halted=!0}async commitGlobalValidation(e){e.allErrors={...Object.fromEntries(this.asyncErrors.entries()),...e.allErrors},e.isValid=!A(e.allErrors),e.result=e.isValid,this.store.internalUpdateState({errors:e.allErrors,isValid:e.isValid}),await this.store.emitAfterValidate({values:this.store.getState().values,state:this.store.getState(),scope:e.options?.scope,scopeFields:e.targetFields,errors:e.allErrors,result:e.isValid})}};var I=class{constructor(e){this.store=e;this.fieldUpdatePipeline=new M([{name:"field:clear-current-error",run:t=>this.clearCurrentError(t)},{name:"field:update-dependencies",run:t=>this.updateDependencies(t)},{name:"field:update-dirty",run:t=>this.updateDirtyState(t)},{name:"field:commit-state",run:t=>this.commitFieldState(t)},{name:"field:emit-change",run:t=>this.emitFieldChange(t)},{name:"field:trigger-validate",run:t=>this.triggerResolverValidation(t)},{name:"field:trigger-async-validate",run:t=>this.triggerAsyncValidation(t)}]),this.submitPipeline=new v([{name:"submit:start",run:async t=>this.startSubmit(t)},{name:"submit:invalid",run:async t=>this.handleInvalidSubmit(t)},{name:"submit:prepare",run:t=>this.prepareSubmitValues(t)},{name:"submit:before-hooks",run:async t=>this.runBeforeSubmitHooks(t)},{name:"submit:user-handler",run:async t=>this.runSubmitHandler(t)},{name:"submit:after-hooks",run:async t=>this.runAfterSubmitHooks(t)}])}fieldUpdatePipeline;submitPipeline;updateField(e,t,i={origin:"setField"}){let r=this.store.getState(),s={path:e,value:t,meta:i,previousValue:p(r.values,e),nextValues:y(r.values,e,t),nextErrors:r.errors,hasMutatedErrors:!1,toggledFields:[],isDirty:!1};this.fieldUpdatePipeline.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.getInitialValues());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=P(this.store.getState().values,e);this.replaceValues(t,"hydrate")}rebaseValues(e){let t=this.store.getState().values,i=h(e);this.store.setInitialValues(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:{}};try{await this.submitPipeline.run(i)}catch(r){i.error=r,await this.store.emitOperationalError({source:"submit",error:r}),await this.store.emitAfterSubmit({values:this.store.getState().values,dirtyValues:this.store.buildDirtyValues(this.store.getState().values),state:this.store.getState(),success:!1,error:r}),console.error(r)}finally{this.store.internalUpdateState({isSubmitting:!1})}}reset(){this.store.cancelAllValidations();let e=h(this.store.getInitialValues());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)}clearCurrentError(e){let t=Object.prototype.hasOwnProperty.call(e.nextErrors,e.path);t&&!e.hasMutatedErrors&&(e.nextErrors={...e.nextErrors},e.hasMutatedErrors=!0),t&&delete e.nextErrors[e.path],this.store.clearFieldValidation(e.path)}updateDependencies(e){e.toggledFields=this.store.updateDependencies(e.path,e.nextValues),e.toggledFields.forEach(t=>{if(this.store.isFieldHidden(t)){let i=Object.prototype.hasOwnProperty.call(e.nextErrors,t);i&&!e.hasMutatedErrors&&(e.nextErrors={...e.nextErrors},e.hasMutatedErrors=!0),i&&delete e.nextErrors[t],this.store.clearFieldValidation(t)}})}updateDirtyState(e){e.isDirty=this.store.updateDirtyForPath(e.path,e.nextValues,this.store.getInitialValues())}commitFieldState(e){this.store.internalUpdateState({values:e.nextValues,errors:e.nextErrors,isDirty:e.isDirty},[e.path,...e.toggledFields])}emitFieldChange(e){this.store.emitFieldChange({path:e.path,previousValue:e.previousValue,nextValue:e.value,values:this.store.getState().values,state:this.store.getState(),meta:e.meta})}triggerResolverValidation(e){this.store.config.resolver&&this.store.triggerValidation([e.path])}triggerAsyncValidation(e){this.store.handleFieldAsyncValidation(e.path,e.value)}async startSubmit(e){this.store.internalUpdateState({isSubmitting:!0}),e.isValid=await this.store.validateNow()}async handleInvalidSubmit(e){if(e.isValid)return;let t=this.store.getState().errors,i={...this.store.getState().touched};Object.keys(t).forEach(r=>{i[r]=!0}),this.store.batchStateUpdates(()=>{this.store.internalUpdateState({touched:i})}),e.dirtyValues=this.store.buildDirtyValues(this.store.getState().values),e.invalid=!0,await this.store.emitAfterSubmit({values:this.store.getState().values,dirtyValues:e.dirtyValues,state:this.store.getState(),success:!1,invalid:!0}),e.halted=!0}prepareSubmitValues(e){let t=[];this.store.getHiddenFields().forEach(i=>{t.push([i,void 0])});for(let[i,r]of this.store.getTransformEntries()){let s=p(e.valuesToSubmit,i);t.push([i,r(s,this.store.getState().values)])}t.length>0&&(e.valuesToSubmit=G(e.valuesToSubmit,t)),e.dirtyValues=this.store.buildDirtyValues(e.valuesToSubmit)}async runBeforeSubmitHooks(e){await this.store.emitBeforeSubmit({values:e.valuesToSubmit,dirtyValues:e.dirtyValues,state:this.store.getState()})}async runSubmitHandler(e){await e.onSuccess(e.valuesToSubmit,e.dirtyValues)}async runAfterSubmitHooks(e){await this.store.emitAfterSubmit({values:e.valuesToSubmit,dirtyValues:e.dirtyValues,state:this.store.getState(),success:!0})}};var q=class{constructor(e,t=15){this.enableHistory=e;this.maxHistory=t}history=[];historyIndex=-1;historySize=0;historyHead=0;saveSnapshot(e){if(!this.enableHistory)return;let t=this.getSnapshotAt(this.historyIndex);if(t&&m(t,e))return;let i=h(e),r=this.getCapacity();this.historyIndex<this.historySize-1&&(this.historySize=this.historyIndex+1);let s=this.historyIndex+1;s<r?(this.history[this.toPhysicalIndex(s)]=i,this.historySize=Math.max(this.historySize,s+1),this.historyIndex=s):(this.historyHead=(this.historyHead+1)%r,this.history[this.toPhysicalIndex(r-1)]=i,this.historySize=r,this.historyIndex=r-1)}get canUndo(){return this.enableHistory?this.historyIndex>0:!1}get canRedo(){return this.enableHistory?this.historyIndex<this.historySize-1:!1}undo(){return this.canUndo?(this.historyIndex--,h(this.getSnapshotAt(this.historyIndex))):null}redo(){return this.canRedo?(this.historyIndex++,h(this.getSnapshotAt(this.historyIndex))):null}reset(e){this.history=[],this.historyIndex=-1,this.historySize=0,this.historyHead=0,this.saveSnapshot(e)}getMetadata(){return{enabled:this.enableHistory,canUndo:this.canUndo,canRedo:this.canRedo,historyIndex:this.historyIndex,historySize:this.historySize}}getCapacity(){return Math.max(1,this.maxHistory)}toPhysicalIndex(e){return(this.historyHead+e)%this.getCapacity()}getSnapshotAt(e){if(!(e<0||e>=this.historySize))return this.history[this.toPhysicalIndex(e)]}};var H=class{constructor(e){this.store=e}pushItem(e,t){let i=p(this.store.getState().values,e)||[];this.store.setFieldWithMeta(e,[...i,t],{origin:"array",operation:"push"}),this.store.internalSaveSnapshot()}prependItem(e,t){let i=p(this.store.getState().values,e)||[];this.store.setFieldWithMeta(e,[t,...i],{origin:"array",operation:"prepend"}),this.store.internalSaveSnapshot()}insertItem(e,t,i){let r=[...p(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=p(i.values,e);if(!Array.isArray(r))return;let s=[...r];this.store.unregisterPrefix&&this.store.unregisterPrefix(`${e}.${t}.`);let o=r.filter((c,u)=>u!==t),a=y(i.values,e,o),l=this.store.updateDirtyForPath(e,a,this.store.getConfig().initialValues),d=E(i,e,c=>c===t?null:c>t?c-1:c);this.store.internalUpdateState({values:a,errors:d.errors,touched:d.touched,isValidating:d.isValidating,isDirty:l}),this.store.emitFieldChange({path:e,previousValue:s,nextValue:o,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=[...p(r.values,e)||[]],o=[...s];[s[t],s[i]]=[s[i],s[t]];let a=y(r.values,e,s),l=this.store.updateDirtyForPath(e,a,this.store.getConfig().initialValues),d=E(r,e,c=>c===t?i:c===i?t:c);this.store.internalUpdateState({values:a,errors:d.errors,touched:d.touched,isValidating:d.isValidating,isDirty:l}),this.store.emitFieldChange({path:e,previousValue:o,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=[...p(r.values,e)||[]],o=[...s],[a]=s.splice(t,1);s.splice(i,0,a);let l=y(r.values,e,s),d=this.store.updateDirtyForPath(e,l,this.store.getConfig().initialValues),c=E(r,e,u=>u===t?i:t<i&&u>t&&u<=i?u-1:t>i&&u>=i&&u<t?u+1:u);this.store.internalUpdateState({values:l,errors:c.errors,touched:c.touched,isValidating:c.isValidating,isDirty:d}),this.store.emitFieldChange({path:e,previousValue:o,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 O=class{constructor(e,t,i,r){this.getState=e;this.getInitialValues=t;this.getScopeFields=i;this.isPathDirty=r}getStepStatus(e){let t=this.getScopeFields(e),i=this.getState(),r=t.some(a=>!!i.errors[a]),s=t.some(a=>this.isPathDirty(a)),o=this.getStepErrors(e);return{hasErrors:r,isDirty:s,errors:o}}getStepErrors(e){let t=this.getScopeFields(e),i=this.getState(),r={};for(let s of t){let o=i.errors[s];o&&(r[s]=o)}return r}};var U=class{constructor(e,t,i,r){this.dependencyManager=e;this.getState=t;this.getConfig=i;this.isPathDirty=r}requiredValuesRef=null;isHidden(e){return this.dependencyManager.isHidden(e)}isRequired(e){let t=this.getState().values;return this.requiredValuesRef!==t&&(this.requiredValuesRef=t),this.dependencyManager.isRequired(e,t)}isFieldDirty(e){return this.isPathDirty(e)}isFieldValidating(e){return!!this.getState().isValidating[e]}};var j=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 z=class{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()}};function Q(n){let{store:e,dependencyManager:t,dirtyManager:i}=n,r=new z,s={getState:()=>e.getState(),internalUpdateState:a=>e.internalUpdateState(a),setError:(a,l)=>e.setError(a,l),validate:a=>e.validate(a),getFieldConfig:a=>e.getFieldConfig(a),getScopeFields:a=>e.getScopeFields(a),config:e.config,getRequiredErrors:a=>e.getRequiredErrors(a),getHiddenFields:()=>e.getHiddenFields(),emitBeforeValidate:a=>e.emitBeforeValidate(a),emitAfterValidate:a=>e.emitAfterValidate(a)},o={getState:()=>e.getState(),internalUpdateState:(a,l)=>e.internalUpdateState(a,l),internalSaveSnapshot:()=>e.internalSaveSnapshot(),batchStateUpdates:a=>e.batchStateUpdates(a),config:e.config,getTransformEntries:()=>e.getTransformEntries(),updateDependencies:(a,l)=>e.updateDependencies(a,l),isFieldHidden:a=>e.isFieldHidden(a),evaluateAllDependencies:a=>e.evaluateAllDependencies(a),getHiddenFields:()=>e.getHiddenFields(),clearFieldValidation:a=>e.clearFieldValidation(a),triggerValidation:(a,l)=>e.triggerValidation(a,l),handleFieldAsyncValidation:(a,l)=>e.handleFieldAsyncValidation(a,l),cancelAllValidations:()=>e.cancelAllValidations(),validateNow:a=>e.validateNow(a),hasValidationsInProgress:a=>e.hasValidationsInProgress(a),updateDirtyForPath:(a,l,d)=>e.updateDirtyForPath(a,l,d),rebuildDirtyState:(a,l)=>e.rebuildDirtyState(a,l),clearDirtyState:()=>e.clearDirtyState(),buildDirtyValues:a=>e.buildDirtyValues(a),getInitialValues:()=>e.getInitialValues(),setInitialValues:a=>e.setInitialValues(a),resetHistory:a=>e.resetHistory(a),emitFieldChange:a=>e.emitFieldChange(a),emitBeforeSubmit:a=>e.emitBeforeSubmit(a),emitAfterSubmit:a=>e.emitAfterSubmit(a),emitOperationalError:a=>e.emitOperationalError(a)};return r.register("validation",new R(s)),r.register("lifecycle",new I(o)),r.register("history",new q(!!e.config.enableHistory,e.config.historyLimit??15)),r.register("arrays",new H(e)),r.register("scope",new O(()=>e.getState(),()=>e.getInitialValues(),a=>e.getScopeFields(a),a=>i.isPathDirty(a))),r.register("query",new U(t,()=>e.getState(),()=>e.config,a=>i.isPathDirty(a))),r.register("error",new j(()=>e.getState(),a=>e.internalUpdateState(a))),r}function Z(n){let{storeId:e,storeInstance:t,config:i,getState:r,getConfig:s,getValues:o,getDirtyValues:a,applyPersistedValues:l}=n,d=new w(i.persist,o,a,l),c=[...i.plugins],u=Y(i.devTools);u&&c.push(u);let g=new D(c,()=>({storeId:e,getState:()=>r(),getConfig:()=>s()})),f=new k(e,t,d,g);return f.initialize(),f}function ee(n){let{config:e,dependencyManager:t,computedManager:i}=n,r=h(e.initialValues);return e.fields&&Object.entries(e.fields).forEach(([o,a])=>{t.register(o,a,r)}),{values:i.apply(r),errors:{},touched:{},isValidating:{},persist:{isSaving:!1,isRestoring:!1,error:null},isValid:!0,isSubmitting:!1,isDirty:!1}}var b=class{state;subscriptions;effects;capabilities;_initialValues;_masksVersion=0;config;storeId;dependencyManager;computedManager;dirtyManager;scopeFieldsIndex=null;computedEntriesCache=null;transformEntriesCache=null;batchDepth=0;batchedState=null;batchedChangedPaths=null;batchedValuesChanged=!1;invalidateFieldIndexes(){this.scopeFieldsIndex=null,this.computedEntriesCache=null,this.transformEntriesCache=null,this.computedManager.invalidateReverseDeps()}registerCachedFieldIndexes(e,t){if(this.scopeFieldsIndex&&t.scope){let i=this.scopeFieldsIndex.get(t.scope)??[];i.includes(e)||(i.push(e),this.scopeFieldsIndex.set(t.scope,i))}this.computedEntriesCache&&t.computed&&this.computedEntriesCache.push({path:e,compute:t.computed,dependsOn:t.computedDependsOn??t.conditional?.dependsOn}),this.transformEntriesCache&&t.transform&&this.transformEntriesCache.push([e,t.transform])}unregisterCachedFieldIndexes(e,t){if(!t){this.invalidateFieldIndexes();return}if(this.scopeFieldsIndex&&t.scope){let i=this.scopeFieldsIndex.get(t.scope);if(i){let r=i.filter(s=>s!==e);r.length>0?this.scopeFieldsIndex.set(t.scope,r):this.scopeFieldsIndex.delete(t.scope)}}this.computedEntriesCache&&t.computed&&(this.computedEntriesCache=this.computedEntriesCache.filter(i=>i.path!==e)),this.transformEntriesCache&&t.transform&&(this.transformEntriesCache=this.transformEntriesCache.filter(([i])=>i!==e))}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=X(e),this._initialValues=this.config.initialValues,this.dependencyManager=new V,this.computedManager=new C(()=>this.getComputedEntries()),this.dirtyManager=new F,this.capabilities=Q({store:this,dependencyManager:this.dependencyManager,dirtyManager:this.dirtyManager}),this.state=ee({config:this.config,dependencyManager:this.dependencyManager,computedManager:this.computedManager}),this.subscriptions=new x(()=>this.state),this.internalSaveSnapshot(),this.storeId=e.storeId||this.config.name||this.config.idFactory({scope:"store",storeName:this.config.name}),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.dependencyManager.getFieldConfig(e)||this.config.fields?.[e]}getScopeFields(e){if(!this.scopeFieldsIndex){let t=new Map;this.dependencyManager.forEachFieldConfig((i,r)=>{if(!i.scope)return;let s=t.get(i.scope)??[];s.push(r),t.set(i.scope,s)}),this.scopeFieldsIndex=t}return this.scopeFieldsIndex.get(e)??[]}getComputedEntries(){if(!this.computedEntriesCache){let e=[];this.dependencyManager.forEachFieldConfig((t,i)=>{t.computed&&e.push({path:i,compute:t.computed,dependsOn:t.computedDependsOn??t.conditional?.dependsOn})}),this.computedEntriesCache=e}return this.computedEntriesCache}getTransformEntries(){if(!this.transformEntriesCache){let e=[];this.dependencyManager.forEachFieldConfig((t,i)=>{t.transform&&e.push([i,t.transform])}),this.transformEntriesCache=e}return this.transformEntriesCache}resolveMask(e){let t=this.getFieldConfig(e)?.mask;if(t)return typeof t=="string"?this.config.masks?.[t]:t}getState(){return this.batchedState??this.state}getFieldState(e){return{value:p(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.dependencyManager.register(e,t,this.state.values),this.registerCachedFieldIndexes(e,t),this.dependencyManager.isHidden(e)&&this.subscriptions.notify(this.state,[e])}unregisterField(e){if(this.config.fields?.[e])return;let t=this.getFieldConfig(e);this.validation.cleanupField(e),this.dependencyManager.unregister(e),this.unregisterCachedFieldIndexes(e,t);let i={...this.state.errors},r={...this.state.touched},s=!1;i[e]&&(delete i[e],s=!0),r[e]&&(delete r[e],s=!0),s&&this.internalUpdateState({errors:i,touched:r})}unregisterPrefix(e){this.validation.cleanupPrefix(e),this.dependencyManager.unregisterPrefix(e).forEach(([i,r])=>{this.unregisterCachedFieldIndexes(i,r)})}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=i?.equalityFn??S;return this.subscriptions.subscribeSelector(e,t,i,r)}subscribePath(e,t,i){let r=[...i?.paths??[],e];return this.subscribeSelector(s=>p(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.batchStateUpdates(()=>{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()}transaction(e){return this.batchStateUpdates(e)}async submit(e){return this.lifecycle.submit(e)}registerMask(e,t){this.config.masks={...this.config.masks||{},[e]:t},this._masksVersion+=1,this.subscriptions.notify(this.state,["__masks__"])}getDirtyValues(){return this.dirtyManager.buildDirtyValues(this.state.values)}getPersistMetadata(){return this.state.persist}async restorePersisted(){this.internalUpdateState({persist:{...this.state.persist,isRestoring:!0,error:null}});try{return await this.effects.restorePersisted()}catch(e){return this.internalUpdateState({persist:{...this.state.persist,isRestoring:!1,error:e instanceof Error?e:new Error(String(e))}}),!1}finally{this.internalUpdateState({persist:{...this.state.persist,isRestoring:!1}})}}async forceSave(){this.internalUpdateState({persist:{...this.state.persist,isSaving:!0,error:null}});try{await this.effects.savePersistedNow()}catch(e){this.internalUpdateState({persist:{...this.state.persist,isSaving:!1,error:e instanceof Error?e:new Error(String(e))}});return}this.internalUpdateState({persist:{...this.state.persist,isSaving:!1}})}async clearPersisted(){this.internalUpdateState({persist:{...this.state.persist,error:null}});try{await this.effects.clearPersisted()}catch(e){this.internalUpdateState({persist:{...this.state.persist,error:e instanceof Error?e:new Error(String(e))}})}}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.dirtyManager.rebuild(e,this._initialValues);this.internalUpdateState({values:e,isDirty:t}),this.validation.trigger(void 0,{forceDebounce:!0})}}redo(){let e=this.history.redo();if(e){let t=this.dirtyManager.rebuild(e,this._initialValues);this.internalUpdateState({values:e,isDirty:t}),this.validation.trigger(void 0,{forceDebounce:!0})}}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,t){this.validation.trigger(e,t)}getStepStatus(e){return this.scope.getStepStatus(e)}getStepErrors(e){return this.scope.getStepErrors(e)}updateDependencies(e,t){return this.dependencyManager.updateDependencies(e,t)}isFieldHidden(e){return this.dependencyManager.isHidden(e)}evaluateAllDependencies(e){this.dependencyManager.evaluateAll(e)}getHiddenFields(){return this.dependencyManager.getHiddenFields()}getRequiredErrors(e){return this.dependencyManager.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.dirtyManager.updateForPath(e,t,i)}rebuildDirtyState(e,t){return this.dirtyManager.rebuild(e,t)}clearDirtyState(){this.dirtyManager.clear()}buildDirtyValues(e){return this.dirtyManager.buildDirtyValues(e)}batchStateUpdates(e){this.batchDepth+=1;try{return e()}finally{this.batchDepth-=1,this.batchDepth===0&&this.flushBatchedStateUpdates()}}resetHistory(e){this.history.reset(e)}get initialValues(){return this._initialValues}getInitialValues(){return this._initialValues}setInitialValues(e){this._initialValues=e,this.config.initialValues=e}getMasksVersion(){return this._masksVersion}internalUpdateState(e,t){if(this.batchDepth>0){let r=W({currentState:this.batchedState??this.state,partialState:e,changedPaths:t,applyComputedValues:s=>s});if(this.batchedState=r.nextState,this.batchedValuesChanged||=r.valuesChanged,r.changedPaths&&r.changedPaths.length>0){let s=this.batchedChangedPaths??new Set;r.changedPaths.forEach(o=>s.add(o)),this.batchedChangedPaths=s}return}let i=W({currentState:this.state,partialState:e,changedPaths:t,applyComputedValues:r=>this.computedManager.apply(r,t)});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._initialValues,...e});this.validation.cancelAll(),this.dependencyManager.evaluateAll(t);let i=this.dirtyManager.rebuild(t,this._initialValues);this.internalUpdateState({values:t,errors:{},touched:{},isValidating:{},persist:{...this.state.persist,error:null},isValid:!0,isDirty:i,isSubmitting:!1}),this.internalSaveSnapshot(),this.validation.validate()}cleanup(){this.subscriptions.destroy(),this.validation.cancelAll(),this.capabilities.clear(),this.effects.destroy()}flushBatchedStateUpdates(){if(!this.batchedState)return;let e=this.batchedState,t=this.batchedChangedPaths?Array.from(this.batchedChangedPaths):void 0,i=this.batchedValuesChanged;i&&(e={...e,values:this.computedManager.apply(e.values,t)}),this.batchedState=null,this.batchedChangedPaths=null,this.batchedValuesChanged=!1,this.state=e,this.subscriptions.notify(this.state,t),this.effects.onStateUpdated(this.state,i)}};var te=new Set(["config","getConfig","getState","subscribe","setField","blurField","replaceValues","hydrate","rebase","setError","setErrors","setServerErrors","validate","reset","transaction","submit","registerMask","getMasksVersion","getDirtyValues","getPersistMetadata","restorePersisted","forceSave","clearPersisted","cleanup","registerField","unregisterField","isHidden","isRequired","isFieldDirty","isFieldValidating","watch","pushItem","prependItem","insertItem","removeItem","moveItem","swapItems","getHistoryMetadata","undo","redo","getStepStatus","getStepErrors"]),ie=new WeakMap;function ge(n){let e=new Proxy(n,{get(t,i){if(typeof i=="string"&&!te.has(i))return;let r=Reflect.get(t,i,t);return typeof r=="function"?r.bind(t):r},has(t,i){return typeof i=="string"&&te.has(i)},set(){return!1}});return ie.set(e,n),e}function fe(n){return typeof n.getFieldState=="function"&&typeof n.subscribePath=="function"&&typeof n.subscribeSelector=="function"&&typeof n.markFieldsTouched=="function"&&typeof n.hasValidationsInProgress=="function"&&typeof n.resolveMask=="function"&&typeof n.getScopeFields=="function"}function ye(n){let e=ie.get(n);if(e)return e;if(n instanceof b||fe(n))return n;throw new Error("BitForm: o store informado n\xE3o exp\xF5e a API necess\xE1ria para hooks/framework bindings.")}function me(n={}){return ge(new b(n))}export{h as a,P as b,S as c,m as d,p as e,y as f,ne as g,J as h,ae as i,T as j,ye as k,me as l};
2
- //# sourceMappingURL=chunk-PX6WKENM.js.map