@lehnihon/bit-form 2.2.7 → 2.2.9

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 (167) hide show
  1. package/README.md +6 -6
  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 -15
  5. package/dist/angular/index.d.ts +18 -15
  6. package/dist/angular/index.js +1 -1
  7. package/dist/angular/index.js.map +1 -1
  8. package/dist/{array-controller-DtkmcnUr.d.ts → array-controller-C61ByyG6.d.ts} +5 -5
  9. package/dist/{array-controller-C1A5VKYd.d.cts → array-controller-CtlqjA0e.d.cts} +5 -5
  10. package/dist/bus-BKuMV3E7.d.ts +19 -0
  11. package/dist/bus-WOHGxuVy.d.cts +19 -0
  12. package/dist/chunk-2QLQPMCZ.js +2 -0
  13. package/dist/chunk-2QLQPMCZ.js.map +1 -0
  14. package/dist/chunk-3KI3GEU3.cjs +2 -0
  15. package/dist/chunk-3KI3GEU3.cjs.map +1 -0
  16. package/dist/chunk-5NA2TFPG.js +1 -0
  17. package/dist/chunk-5NA2TFPG.js.map +1 -0
  18. package/dist/chunk-6LNXTSZ6.cjs +2 -0
  19. package/dist/chunk-6LNXTSZ6.cjs.map +1 -0
  20. package/dist/chunk-BSGJ3T5S.cjs +2 -0
  21. package/dist/chunk-BSGJ3T5S.cjs.map +1 -0
  22. package/dist/chunk-GGZPA7AO.cjs +2 -0
  23. package/dist/chunk-GGZPA7AO.cjs.map +1 -0
  24. package/dist/chunk-ICYXODTQ.js +2 -0
  25. package/dist/chunk-ICYXODTQ.js.map +1 -0
  26. package/dist/chunk-J5ALITQW.cjs +2 -0
  27. package/dist/chunk-J5ALITQW.cjs.map +1 -0
  28. package/dist/chunk-J5GQLEVA.js +2 -0
  29. package/dist/chunk-J5GQLEVA.js.map +1 -0
  30. package/dist/chunk-KDHPLXZF.cjs +2 -0
  31. package/dist/chunk-KDHPLXZF.cjs.map +1 -0
  32. package/dist/chunk-N4HCGMMM.js +2 -0
  33. package/dist/chunk-N4HCGMMM.js.map +1 -0
  34. package/dist/chunk-OLQVH24Z.cjs +2 -0
  35. package/dist/chunk-OLQVH24Z.cjs.map +1 -0
  36. package/dist/chunk-QX2IVNMK.js +2 -0
  37. package/dist/chunk-QX2IVNMK.js.map +1 -0
  38. package/dist/chunk-RHMJPKNV.cjs +2 -0
  39. package/dist/chunk-RHMJPKNV.cjs.map +1 -0
  40. package/dist/chunk-UARLAXZX.js +2 -0
  41. package/dist/chunk-UARLAXZX.js.map +1 -0
  42. package/dist/chunk-UIKO6GGW.js +2 -0
  43. package/dist/chunk-UIKO6GGW.js.map +1 -0
  44. package/dist/chunk-W2E5UIXT.js +2 -0
  45. package/dist/chunk-W2E5UIXT.js.map +1 -0
  46. package/dist/chunk-W5CLDRRE.cjs +1 -0
  47. package/dist/chunk-W5CLDRRE.cjs.map +1 -0
  48. package/dist/chunk-X5UCRGYJ.cjs +2 -0
  49. package/dist/chunk-X5UCRGYJ.cjs.map +1 -0
  50. package/dist/chunk-Y3XVQGCU.js +2 -0
  51. package/dist/chunk-Y3XVQGCU.js.map +1 -0
  52. package/dist/cli/index.cjs +2 -2
  53. package/dist/core/bindings.cjs +2 -0
  54. package/dist/core/bindings.cjs.map +1 -0
  55. package/dist/core/bindings.d.cts +89 -0
  56. package/dist/core/bindings.d.ts +89 -0
  57. package/dist/core/bindings.js +2 -0
  58. package/dist/core/bindings.js.map +1 -0
  59. package/dist/core/status.cjs +2 -0
  60. package/dist/core/status.cjs.map +1 -0
  61. package/dist/core/status.d.cts +44 -0
  62. package/dist/core/status.d.ts +44 -0
  63. package/dist/core/status.js +2 -0
  64. package/dist/core/status.js.map +1 -0
  65. package/dist/core/store.cjs +2 -0
  66. package/dist/core/store.cjs.map +1 -0
  67. package/dist/core/store.d.cts +84 -0
  68. package/dist/core/store.d.ts +84 -0
  69. package/dist/core/store.js +2 -0
  70. package/dist/core/store.js.map +1 -0
  71. package/dist/core/utils.cjs +2 -0
  72. package/dist/core/utils.cjs.map +1 -0
  73. package/dist/core/utils.d.cts +74 -0
  74. package/dist/core/utils.d.ts +74 -0
  75. package/dist/core/utils.js +2 -0
  76. package/dist/core/utils.js.map +1 -0
  77. package/dist/core.cjs +1 -1
  78. package/dist/core.cjs.map +1 -1
  79. package/dist/core.d.cts +14 -122
  80. package/dist/core.d.ts +14 -122
  81. package/dist/core.js +1 -1
  82. package/dist/devtools/bridge.cjs +1 -1
  83. package/dist/devtools/bridge.cjs.map +1 -1
  84. package/dist/devtools/bridge.d.cts +3 -2
  85. package/dist/devtools/bridge.d.ts +3 -2
  86. package/dist/devtools/bridge.js +1 -1
  87. package/dist/devtools/index.cjs +2 -2
  88. package/dist/devtools/index.cjs.map +1 -1
  89. package/dist/devtools/index.d.cts +3 -2
  90. package/dist/devtools/index.d.ts +3 -2
  91. package/dist/devtools/index.js +1 -1
  92. package/dist/devtools/index.js.map +1 -1
  93. package/dist/{field-binding-X5TkvfUt.d.cts → field-binding-B_OX3bjp.d.cts} +1 -1
  94. package/dist/{field-binding-Bi1g-D8X.d.ts → field-binding-MX6jVQbT.d.ts} +1 -1
  95. package/dist/index.cjs +1 -1
  96. package/dist/index.cjs.map +1 -1
  97. package/dist/index.d.cts +8 -85
  98. package/dist/index.d.ts +8 -85
  99. package/dist/index.js +1 -1
  100. package/dist/mask.cjs +1 -1
  101. package/dist/mask.cjs.map +1 -1
  102. package/dist/mask.d.cts +2 -2
  103. package/dist/mask.d.ts +2 -2
  104. package/dist/mask.js +1 -1
  105. package/dist/mask.js.map +1 -1
  106. package/dist/meta-types-Bzmm21TP.d.cts +18 -0
  107. package/dist/meta-types-Bzmm21TP.d.ts +18 -0
  108. package/dist/react/index.cjs +1 -1
  109. package/dist/react/index.cjs.map +1 -1
  110. package/dist/react/index.d.cts +11 -9
  111. package/dist/react/index.d.ts +11 -9
  112. package/dist/react/index.js +1 -1
  113. package/dist/react/index.js.map +1 -1
  114. package/dist/react-native/index.cjs +1 -1
  115. package/dist/react-native/index.cjs.map +1 -1
  116. package/dist/react-native/index.d.cts +9 -7
  117. package/dist/react-native/index.d.ts +9 -7
  118. package/dist/react-native/index.js +1 -1
  119. package/dist/react-native/index.js.map +1 -1
  120. package/dist/resolvers/index.cjs +1 -1
  121. package/dist/resolvers/index.cjs.map +1 -1
  122. package/dist/resolvers/index.d.cts +3 -2
  123. package/dist/resolvers/index.d.ts +3 -2
  124. package/dist/resolvers/index.js +1 -1
  125. package/dist/resolvers/joi.d.cts +3 -2
  126. package/dist/resolvers/joi.d.ts +3 -2
  127. package/dist/resolvers/yup.d.cts +3 -2
  128. package/dist/resolvers/yup.d.ts +3 -2
  129. package/dist/resolvers/zod.d.cts +3 -2
  130. package/dist/resolvers/zod.d.ts +3 -2
  131. package/dist/store-api-types-Bm3EAqR_.d.cts +161 -0
  132. package/dist/store-api-types-DfTFy2h4.d.ts +161 -0
  133. package/dist/{bus-DgilLszS.d.ts → types-CRCP4Pgq.d.ts} +82 -45
  134. package/dist/{types-CUXh7PqD.d.cts → types-D8DgIUhJ.d.cts} +1 -1
  135. package/dist/{types-CUXh7PqD.d.ts → types-D8DgIUhJ.d.ts} +1 -1
  136. package/dist/{bus-rcUiufS7.d.cts → types-SOg9xEce.d.cts} +82 -45
  137. package/dist/{upload-EXnJLq8k.d.cts → upload-C2mpfhp1.d.cts} +1 -1
  138. package/dist/{upload-EXnJLq8k.d.ts → upload-C2mpfhp1.d.ts} +1 -1
  139. package/dist/{use-bit-persist-CIKFwtdM.d.cts → use-bit-persist-BDMZmxBh.d.ts} +8 -6
  140. package/dist/{use-bit-persist-Bc06fmqZ.d.ts → use-bit-persist-CBTZIMc5.d.cts} +8 -6
  141. package/dist/utils.cjs +2 -0
  142. package/dist/utils.cjs.map +1 -0
  143. package/dist/utils.d.cts +6 -0
  144. package/dist/utils.d.ts +6 -0
  145. package/dist/utils.js +2 -0
  146. package/dist/utils.js.map +1 -0
  147. package/dist/vue/index.cjs +1 -1
  148. package/dist/vue/index.cjs.map +1 -1
  149. package/dist/vue/index.d.cts +9 -7
  150. package/dist/vue/index.d.ts +9 -7
  151. package/dist/vue/index.js +1 -1
  152. package/dist/vue/index.js.map +1 -1
  153. package/package.json +39 -14
  154. package/dist/chunk-DIEE6LUO.js +0 -2
  155. package/dist/chunk-DIEE6LUO.js.map +0 -1
  156. package/dist/chunk-FUUQB4DV.cjs +0 -2
  157. package/dist/chunk-FUUQB4DV.cjs.map +0 -1
  158. package/dist/chunk-KWLLYQOL.cjs +0 -2
  159. package/dist/chunk-KWLLYQOL.cjs.map +0 -1
  160. package/dist/chunk-LIYZPSWM.js +0 -2
  161. package/dist/chunk-LIYZPSWM.js.map +0 -1
  162. package/dist/chunk-QAL6J5GQ.cjs +0 -2
  163. package/dist/chunk-QAL6J5GQ.cjs.map +0 -1
  164. package/dist/chunk-SA47B5OP.js +0 -2
  165. package/dist/chunk-SA47B5OP.js.map +0 -1
  166. package/dist/store-api-types-9ipdute1.d.ts +0 -187
  167. package/dist/store-api-types-B6_bPoVI.d.cts +0 -187
@@ -0,0 +1,2 @@
1
+ function a(t,e){let o=Object.keys(t),s=Object.keys(e);return o.length!==s.length?!1:o.every(r=>t[r]===e[r])}function n(t,e){return t.hasErrors===e.hasErrors&&t.isDirty===e.isDirty&&a(t.errors,e.errors)}function c(t){return[...t,"isDirty"]}function y(t){return`__scope__.${t}`}function p(t,e){return t.canUndo===e.canUndo&&t.canRedo===e.canRedo&&t.historyIndex===e.historyIndex&&t.historySize===e.historySize}function i(t){let e=t.read.getHistoryMetadata();return{canUndo:e.canUndo,canRedo:e.canRedo,historyIndex:e.historyIndex,historySize:e.historySize}}function u(t,e){return e(i(t)),t.observe.subscribeHistoryMeta(()=>{e(i(t))})}function h(){return"__history__"}export{a,n as b,c,y as d,p as e,i as f,u as g,h};
2
+ //# sourceMappingURL=chunk-UIKO6GGW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/store/shared/scope-status.ts","../src/core/history-status.ts"],"sourcesContent":["import type { ScopeStatus } from \"../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\nexport function getScopeRegistrySubscriptionPath(scopeName: string) {\n return `__scope__.${scopeName}`;\n}\n","import type { BitHistoryMetadata } from \"./store/contracts/public/meta-types\";\n\n/**\n * Subconjunto relevante de BitHistoryMetadata para comparação de igualdade.\n * Evita re-renders/updates desnecessários quando o estado de histórico não muda.\n */\nexport type HistoryMeta = Pick<\n BitHistoryMetadata,\n \"canUndo\" | \"canRedo\" | \"historyIndex\" | \"historySize\"\n>;\n\n/**\n * Compara dois snapshots de metadata de histórico por valor.\n * Retorna `true` quando todos os campos relevantes são idênticos,\n * permitindo que os bindings de framework ignorem atualizações não relacionadas.\n */\nexport function isHistoryMetaEqual(a: HistoryMeta, b: HistoryMeta): boolean {\n return (\n a.canUndo === b.canUndo &&\n a.canRedo === b.canRedo &&\n a.historyIndex === b.historyIndex &&\n a.historySize === b.historySize\n );\n}\n\nexport function readHistoryMetaSnapshot<_T extends object>(store: {\n read: {\n getHistoryMetadata(): BitHistoryMetadata;\n };\n}): HistoryMeta {\n const nextMeta = store.read.getHistoryMetadata();\n\n return {\n canUndo: nextMeta.canUndo,\n canRedo: nextMeta.canRedo,\n historyIndex: nextMeta.historyIndex,\n historySize: nextMeta.historySize,\n };\n}\n\nexport function observeHistoryMetaSnapshot<_T extends object>(\n store: {\n read: {\n getHistoryMetadata(): BitHistoryMetadata;\n };\n observe: {\n subscribeHistoryMeta(\n listener: (meta: BitHistoryMetadata) => void,\n ): () => void;\n };\n },\n listener: (meta: HistoryMeta) => void,\n): () => void {\n listener(readHistoryMetaSnapshot(store));\n\n return store.observe.subscribeHistoryMeta(() => {\n listener(readHistoryMetaSnapshot(store));\n });\n}\n\nexport function getHistorySubscriptionPath() {\n return \"__history__\";\n}\n"],"mappings":"AAEO,SAASA,EACdC,EACAC,EACS,CACT,IAAMC,EAAc,OAAO,KAAKF,CAAa,EACvCG,EAAW,OAAO,KAAKF,CAAU,EAEvC,OAAIC,EAAY,SAAWC,EAAS,OAC3B,GAGFD,EAAY,MAAOE,GAAQJ,EAAcI,CAAG,IAAMH,EAAWG,CAAG,CAAC,CAC1E,CAEO,SAASC,EACdC,EACAC,EACS,CACT,OACED,EAAc,YAAcC,EAAW,WACvCD,EAAc,UAAYC,EAAW,SACrCR,EAAoBO,EAAc,OAAQC,EAAW,MAAM,CAE/D,CAEO,SAASC,EAA0BC,EAAgC,CACxE,MAAO,CAAC,GAAGA,EAAa,SAAS,CACnC,CAEO,SAASC,EAAiCC,EAAmB,CAClE,MAAO,aAAaA,CAAS,EAC/B,CCjBO,SAASC,EAAmBC,EAAgBC,EAAyB,CAC1E,OACED,EAAE,UAAYC,EAAE,SAChBD,EAAE,UAAYC,EAAE,SAChBD,EAAE,eAAiBC,EAAE,cACrBD,EAAE,cAAgBC,EAAE,WAExB,CAEO,SAASC,EAA2CC,EAI3C,CACd,IAAMC,EAAWD,EAAM,KAAK,mBAAmB,EAE/C,MAAO,CACL,QAASC,EAAS,QAClB,QAASA,EAAS,QAClB,aAAcA,EAAS,aACvB,YAAaA,EAAS,WACxB,CACF,CAEO,SAASC,EACdF,EAUAG,EACY,CACZ,OAAAA,EAASJ,EAAwBC,CAAK,CAAC,EAEhCA,EAAM,QAAQ,qBAAqB,IAAM,CAC9CG,EAASJ,EAAwBC,CAAK,CAAC,CACzC,CAAC,CACH,CAEO,SAASI,GAA6B,CAC3C,MAAO,aACT","names":["areScopeErrorsEqual","currentErrors","nextErrors","currentKeys","nextKeys","key","isScopeStatusEqual","currentStatus","nextStatus","getScopeSubscriptionPaths","scopeFields","getScopeRegistrySubscriptionPath","scopeName","isHistoryMetaEqual","a","b","readHistoryMetaSnapshot","store","nextMeta","observeHistoryMetaSnapshot","listener","getHistorySubscriptionPath"]}
@@ -0,0 +1,2 @@
1
+ function p(t,e,o){return o(t.read.getScopeStatus(e)),t.observe.subscribeScopeStatus(e,o)}export{p as a};
2
+ //# sourceMappingURL=chunk-W2E5UIXT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/scope-status.ts"],"sourcesContent":["import type { ScopeStatus } from \"./store/contracts/types\";\nexport {\n areScopeErrorsEqual,\n isScopeStatusEqual,\n getScopeSubscriptionPaths,\n} from \"./store/shared/scope-status\";\n\nexport function observeScopeStatusSnapshot(\n store: {\n read: {\n getScopeStatus(scopeName: string): ScopeStatus;\n };\n observe: {\n subscribeScopeStatus(\n scopeName: string,\n listener: (status: ScopeStatus) => void,\n ): () => void;\n };\n },\n scopeName: string,\n listener: (status: ScopeStatus) => void,\n): () => void {\n listener(store.read.getScopeStatus(scopeName));\n\n return store.observe.subscribeScopeStatus(scopeName, listener);\n}\n"],"mappings":"AAOO,SAASA,EACdC,EAWAC,EACAC,EACY,CACZ,OAAAA,EAASF,EAAM,KAAK,eAAeC,CAAS,CAAC,EAEtCD,EAAM,QAAQ,qBAAqBC,EAAWC,CAAQ,CAC/D","names":["observeScopeStatusSnapshot","store","scopeName","listener"]}
@@ -0,0 +1 @@
1
+ "use strict";//# sourceMappingURL=chunk-W5CLDRRE.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/chunk-W5CLDRRE.cjs"],"names":[],"mappings":"AAAA","file":"/home/runner/work/bit-form/bit-form/dist/chunk-W5CLDRRE.cjs"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunkJ5ALITQWcjs = require('./chunk-J5ALITQW.cjs');var _chunkKDHPLXZFcjs = require('./chunk-KDHPLXZF.cjs');var _chunkRHMJPKNVcjs = require('./chunk-RHMJPKNV.cjs');var _chunkOLQVH24Zcjs = require('./chunk-OLQVH24Z.cjs');var _chunk6LNXTSZ6cjs = require('./chunk-6LNXTSZ6.cjs');var _react = require('react');var _jsxruntime = require('react/jsx-runtime');var L=_react.createContext.call(void 0, null),dt= exports.a =({store:t,children:e})=>_jsxruntime.jsx.call(void 0, L.Provider,{value:_chunkJ5ALITQWcjs.d.call(void 0, t),children:e}),c= exports.b =()=>{let t=_react.useContext.call(void 0, L);if(!t)throw new Error("BitForm hooks devem ser usados dentro de um BitFormProvider");return t};function yt(){let t=c(),[e,r]=_react.useState.call(void 0, null),[n,o]=_react.useState.call(void 0, null),s=_react.useRef.call(void 0, null),m=_react.useCallback.call(void 0, S=>_chunkKDHPLXZFcjs.b.call(void 0, t,S),[t]),l=_react.useCallback.call(void 0, ()=>{let S=_chunkKDHPLXZFcjs.a.call(void 0, t);return s.current&&s.current.isValid===S.isValid&&s.current.isDirty===S.isDirty&&s.current.isSubmitting===S.isSubmitting?s.current:(s.current=S,S)},[t]),i=_react.useSyncExternalStore.call(void 0, m,l,l),d=_react.useMemo.call(void 0, ()=>_chunkKDHPLXZFcjs.i.call(void 0, t,{clearSubmissionState:()=>{r(null),o(null)},setSubmissionResult:S=>{o(S)},setSubmissionError:S=>{r(S)}}),[t]),{controller:a,actions:h}=d,x=_react.useCallback.call(void 0, a.submit,[a]),v=_react.useCallback.call(void 0, a.onSubmit,[a]),T=_react.useCallback.call(void 0, a.reset,[a]),u=_react.useCallback.call(void 0, a.getValues,[a]),b=_react.useCallback.call(void 0, a.getErrors,[a]),B=_react.useCallback.call(void 0, a.getTouched,[a]),g=_react.useCallback.call(void 0, a.getDirtyValues,[a]);return{meta:_react.useMemo.call(void 0, ()=>({...i,submitError:e,lastResponse:n}),[i,e,n]),getValues:u,getErrors:b,getTouched:B,getDirtyValues:g,submit:x,onSubmit:v,reset:T,...h}}function Et(t){let e=c(),r=_react.useMemo.call(void 0, ()=>_chunkKDHPLXZFcjs.g.call(void 0, e,t),[e,t]),n=_react.useCallback.call(void 0, ()=>r.readItems(),[r]),o=_react.useCallback.call(void 0, l=>e.observe.subscribePath(t,()=>l()),[e,t]),s=_react.useSyncExternalStore.call(void 0, o,n,n),m=_react.useMemo.call(void 0, ()=>r.getFields(s),[r,s]);return _react.useEffect.call(void 0, ()=>()=>{_chunkKDHPLXZFcjs.k.call(void 0, e,`${t}.`)},[e,t]),{fields:m,length:s.length,append:r.append,prepend:r.prepend,insert:r.insert,remove:r.remove,move:r.move,swap:r.swap,replace:r.replace,clear:r.clear}}function Mt(t){let e=c(),r=_react.useRef.call(void 0, null),n=_react.useCallback.call(void 0, ()=>{let i=e.read.getScopeStatus(t);return r.current&&_chunkRHMJPKNVcjs.b.call(void 0, r.current,i)?r.current:(r.current=i,i)},[e,t]),o=_react.useCallback.call(void 0, i=>e.observe.subscribeScopeStatus(t,()=>i()),[e,t]),s=_react.useSyncExternalStore.call(void 0, o,n,n),m=_react.useCallback.call(void 0, async()=>{let i=await e.feature.validate({scope:t}),d=e.read.getScopeErrors(t);return{valid:i,errors:d}},[e,t]),l=_react.useCallback.call(void 0, ()=>e.read.getScopeErrors(t),[e,t]);return{scopeName:t,status:s,errors:s.errors,validate:m,getErrors:l,isValid:!s.hasErrors,isDirty:s.isDirty}}function jt(t){let e=c(),[r,n]=_react.useState.call(void 0, 0),o=_nullishCoalesce(t[r], () => ("")),s=_react.useRef.call(void 0, null),m=_react.useCallback.call(void 0, ()=>{let u=e.read.getScopeStatus(o);return s.current&&_chunkRHMJPKNVcjs.b.call(void 0, s.current,u)?s.current:(s.current=u,u)},[e,o]),l=_react.useSyncExternalStore.call(void 0, _react.useCallback.call(void 0, u=>e.observe.subscribeScopeStatus(o,()=>u()),[e,o]),m,m),i=_react.useCallback.call(void 0, async()=>{let u=await e.feature.validate({scope:o}),b=e.read.getScopeErrors(o);return{valid:u,errors:b}},[e,o]),d=_react.useCallback.call(void 0, ()=>e.read.getScopeErrors(o),[e,o]),a=_react.useCallback.call(void 0, async()=>{let u=e.read.getScopeFields(o);if(e.feature.hasValidationsInProgress(u))return!1;let b=await e.feature.validate({scope:o});if(b)n(B=>Math.min(B+1,t.length-1));else{let B=e.read.getScopeErrors(o),g=Object.keys(B);g.length>0&&e.write.markFieldsTouched(g)}return b},[e,o,t.length]),h=_react.useCallback.call(void 0, ()=>{n(u=>Math.max(u-1,0))},[]),x=_react.useCallback.call(void 0, u=>{n(Math.max(0,Math.min(u-1,t.length-1)))},[t.length]),v=r===0,T=r>=t.length-1;return{step:r+1,stepIndex:r,scope:o,next:a,prev:h,goTo:x,isFirst:v,isLast:T,status:l,errors:l.errors,isValid:!l.hasErrors,isDirty:l.isDirty,validate:i,getErrors:d}}function $t(t){let e=c(),r=_react.useRef.call(void 0, null),n=_react.useCallback.call(void 0, ()=>{let s=_chunk6LNXTSZ6cjs.f.call(void 0, e.read.getState().values,t);return r.current!==null&&_chunk6LNXTSZ6cjs.c.call(void 0, r.current,s)?r.current:(r.current=s,s)},[e,t]),o=_react.useCallback.call(void 0, s=>e.observe.subscribePath(t,()=>s()),[e,t]);return _react.useSyncExternalStore.call(void 0, o,n,n)}function Kt(){let t=c(),e=_react.useSyncExternalStore.call(void 0, m=>_chunkKDHPLXZFcjs.e.call(void 0, t,m),()=>_chunkKDHPLXZFcjs.d.call(void 0, t),()=>_chunkKDHPLXZFcjs.d.call(void 0, t)),r=_react.useCallback.call(void 0, async()=>t.feature.restorePersisted(),[t]),n=_react.useCallback.call(void 0, async()=>{await t.feature.forceSave()},[t]),o=_react.useCallback.call(void 0, async()=>{await t.feature.clearPersisted()},[t]),s=_react.useMemo.call(void 0, ()=>({isSaving:e.isSaving,isRestoring:e.isRestoring,error:e.error}),[e]);return{restore:r,save:n,clear:o,meta:s}}function re(t){let e=c(),r=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>()=>_chunkKDHPLXZFcjs.j.call(void 0, e,t),[e,t]);let n=_react.useCallback.call(void 0, ()=>{let i=e.read.getFieldState(t),d=_chunkOLQVH24Zcjs.a.call(void 0, i,r.current);return r.current=d,d},[e,t]),o=_react.useCallback.call(void 0, i=>e.observe.subscribeFieldState(t,()=>i()),[e,t]),s=_react.useSyncExternalStore.call(void 0, o,n,n),m=_react.useCallback.call(void 0, i=>e.write.setField(t,i),[e,t]),l=_react.useCallback.call(void 0, ()=>e.write.blurField(t),[e,t]);return{fieldState:s,setValue:m,setBlur:l,store:e}}exports.a = dt; exports.b = c; exports.c = yt; exports.d = re; exports.e = Et; exports.f = Mt; exports.g = jt; exports.h = $t; exports.i = Kt;
2
+ //# sourceMappingURL=chunk-X5UCRGYJ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/chunk-X5UCRGYJ.cjs","../src/react/context.tsx","../src/react/use-bit-form.ts","../src/react/use-bit-array.ts"],"names":["BitContext","createContext","BitFormProvider","store","children","jsx","createFrameworkStoreAdapter","useBitStore","useContext","useBitForm","submitError","setSubmitError","useState","lastResponse","setLastResponse","lastMeta","useRef","subscribeMeta","useCallback","cb","subscribeFormMetaSnapshot","getMetaSnapshot","nextMeta","readFormMetaSnapshot","metaState","useSyncExternalStore","binding","useMemo","createFrameworkFormBinding","result","error","controller","actions","submit","onSubmit","reset","getValues","getErrors","getTouched","getDirtyValues","useBitArray","path","createArrayBinding","getSnapshot","subscribeArray","data","fields","useEffect","cleanupRegisteredPrefix"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/chunk-X5UCRGYJ.cjs","sourcesContent":[null,"import React, { createContext, useContext } from \"react\";\nimport type { BitFrameworkStoreApi, BitStoreApi } from \"../core\";\nimport { createFrameworkStoreAdapter } from \"../core\";\n\nconst BitContext = createContext<BitFrameworkStoreApi<any> | null>(null);\n\nexport const BitFormProvider = ({\n store,\n children,\n}: {\n store: BitFrameworkStoreApi<any> | BitStoreApi<any>;\n children: React.ReactNode;\n}) => (\n <BitContext.Provider value={createFrameworkStoreAdapter(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 BitFrameworkStoreApi<T>;\n};\n","import {\n useCallback,\n useSyncExternalStore,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useBitStore } from \"./context\";\nimport {\n createFrameworkFormBinding,\n readFormMetaSnapshot,\n subscribeFormMetaSnapshot,\n} from \"../core\";\nimport type { UseBitFormResult } from \"./types\";\n\nexport function useBitForm<T extends object>(): UseBitFormResult<T> {\n const store = useBitStore<T>();\n\n const [submitError, setSubmitError] = useState<Error | null>(null);\n const [lastResponse, setLastResponse] = useState<unknown>(null);\n const lastMeta = useRef<ReturnType<typeof readFormMetaSnapshot<T>> | null>(\n null,\n );\n\n const subscribeMeta = useCallback(\n (cb: () => void) => subscribeFormMetaSnapshot(store, cb),\n [store],\n );\n const getMetaSnapshot = useCallback(() => {\n const nextMeta = readFormMetaSnapshot(store);\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 metaState = useSyncExternalStore(\n subscribeMeta,\n getMetaSnapshot,\n getMetaSnapshot,\n );\n\n const binding = useMemo(\n () =>\n createFrameworkFormBinding(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 { controller, actions } = binding;\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, useEffect, useMemo, useSyncExternalStore } from \"react\";\nimport {\n BitArrayPath,\n cleanupRegisteredPrefix,\n createArrayBinding,\n} from \"../core\";\nimport { useBitStore } from \"./context\";\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 = useMemo(\n () => createArrayBinding<TForm, P>(store, path),\n [store, path],\n );\n\n const getSnapshot = useCallback(() => {\n return controller.readItems();\n }, [controller]);\n\n const subscribeArray = useCallback(\n (cb: () => void) => store.observe.subscribePath(path, () => cb()),\n [store, path],\n );\n\n const data = useSyncExternalStore(subscribeArray, getSnapshot, getSnapshot);\n\n const fields = useMemo(() => controller.getFields(data), [controller, data]);\n\n useEffect(() => {\n return () => {\n cleanupRegisteredPrefix(store, `${path as string}.`);\n };\n }, [store, path]);\n\n return {\n fields,\n length: data.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"]}
@@ -0,0 +1,2 @@
1
+ import{f as B,l as F,m as b}from"./chunk-QX2IVNMK.js";import{b as u,c as p}from"./chunk-3NUJVIAM.js";function c(e){let t=e.read.getState();return{isValid:t.isValid,isDirty:t.isDirty,isSubmitting:t.isSubmitting}}function f(e,t){return e.observe.subscribeFormMeta(()=>t())}function x(e,t){return t(c(e)),f(e,()=>{t(c(e))})}function P(e){return e.read.getPersistMetadata()}function T(e,t){return e.observe.subscribePersistMeta(()=>t())}function h(e,t){return t(P(e)),e.observe.subscribePersistMeta(i=>{t(i)})}function M(e,t){let i=[],n=r=>e.feature.createArrayItemId(t,r),s=r=>Array.isArray(r)?r:[],d=r=>{if(r.length!==i.length)if(r.length>i.length){let a=r.length-i.length;i=[...i,...Array.from({length:a},(o,l)=>n(i.length+l))]}else i=i.slice(0,r.length);return r};return{readItems(){let r=B(e.read.getState().values,t);return d(s(r))},getFields(r){return r.map((a,o)=>({key:i[o]||`temp-${o}`,value:a,index:o}))},append(r){i=[...i,n(i.length)],e.feature.pushItem(t,r)},prepend(r){i=[n(0),...i],e.feature.prependItem(t,r)},insert(r,a){let o=[...i];o.splice(r,0,n(r)),i=o,e.feature.insertItem(t,r,a)},remove(r){i=i.filter((a,o)=>o!==r),e.feature.removeItem(t,r)},move(r,a){let o=[...i],[l]=o.splice(r,1);o.splice(a,0,l),i=o,e.feature.moveItem(t,r,a)},swap(r,a){let o=[...i];[o[r],o[a]]=[o[a],o[r]],i=o,e.feature.swapItems(t,r,a)},replace(r){i=r.map((a,o)=>n(o)),e.feature.replaceItems(t,r)},clear(){i=[],e.feature.clearItems(t)}}}function v(e,t,i){return{setValue:r=>{let a=i();e.setField(t,p(r,a))},setBlur:()=>e.blurField(t),displayValue:r=>u(r,i())}}function w(e,t){return{fieldController:v({setField(n,s){e.write.setField(n,s)},blurField(n){e.write.blurField(n)}},t,()=>e.feature.resolveMask(t))}}async function y(e,t,i,n){try{let s=await e(t,i);n.onSuccess(s)}catch(s){if(F(s)){n.onServerErrors(b(s));return}n.onUnhandledError(s instanceof Error?s:new Error(String(s)))}}function S(e,t){e?.preventDefault?.(),t?.stopPropagation&&e?.stopPropagation?.()}function g(e,t,i){return{submit:r=>async a=>{S(a,i),await e.submit(r)},onSubmit:r=>async a=>{S(a,i),t.setSubmissionError(null),await e.submit(async(o,l)=>{await y(r,o,l,{onSuccess:m=>{t.setSubmissionResult(m),t.setSubmissionError(null)},onServerErrors:m=>{e.setServerErrors(m)},onUnhandledError:m=>{t.setSubmissionError(m)}})})},reset:()=>{e.reset(),t.clearSubmissionState()},getValues:()=>e.getState().values,getErrors:()=>e.getState().errors,getTouched:()=>e.getState().touched,getDirtyValues:()=>e.getDirtyValues()}}function I(e,t,i){let n={getState:e.read.getState,getDirtyValues:e.read.getDirtyValues,submit:e.write.submit,reset:e.write.reset,setServerErrors:e.write.setServerErrors};return{controller:g(n,t,i),actions:{setField:e.write.setField.bind(e.write),blurField:e.write.blurField.bind(e.write),setValues:e.write.setValues.bind(e.write),setError:e.write.setError.bind(e.write),setErrors:e.write.setErrors.bind(e.write),setServerErrors:e.write.setServerErrors.bind(e.write),validate:e.feature.validate.bind(e.feature),transaction:e.write.transaction.bind(e.write)}}}function A(e,t){e.feature?.unregisterField?.(t)}function E(e,t){e.feature?.unregisterPrefix?.(t)}export{c as a,f as b,x as c,P as d,T as e,h as f,M as g,w as h,I as i,A as j,E as k};
2
+ //# sourceMappingURL=chunk-Y3XVQGCU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/bindings/form-meta.ts","../src/core/bindings/persist-meta.ts","../src/core/bindings/array-controller.ts","../src/core/field-controller.ts","../src/core/bindings/field-binding.ts","../src/core/submit-handler.ts","../src/core/form-controller.ts","../src/core/bindings/form-binding.ts","../src/core/bindings/framework-cleanup.ts"],"sourcesContent":["import type { BitFormMeta } from \"../store/contracts/public/meta-types\";\nimport type { BitStoreApi } from \"../store/contracts/public/store-api-types\";\n\nexport function readFormMetaSnapshot<T extends object>(\n store: BitStoreApi<T>,\n): BitFormMeta {\n const state = store.read.getState();\n return {\n isValid: state.isValid,\n isDirty: state.isDirty,\n isSubmitting: state.isSubmitting,\n };\n}\n\nexport function subscribeFormMetaSnapshot<T extends object>(\n store: BitStoreApi<T>,\n listener: () => void,\n): () => void {\n return store.observe.subscribeFormMeta(() => listener());\n}\n\nexport function observeFormMetaSnapshot<T extends object>(\n store: BitStoreApi<T>,\n listener: (meta: BitFormMeta) => void,\n): () => void {\n listener(readFormMetaSnapshot(store));\n\n return subscribeFormMetaSnapshot(store, () => {\n listener(readFormMetaSnapshot(store));\n });\n}\n","import type { BitPersistMetadata } from \"../store/contracts/types\";\n\ntype BitPersistMetaReadableStore = {\n read: {\n getPersistMetadata(): BitPersistMetadata;\n };\n observe: {\n subscribePersistMeta(\n listener: (meta: BitPersistMetadata) => void,\n ): () => void;\n };\n};\n\nexport function readPersistMetaSnapshot(store: {\n read: {\n getPersistMetadata(): BitPersistMetadata;\n };\n}): BitPersistMetadata {\n return store.read.getPersistMetadata();\n}\n\nexport function subscribePersistMetaSnapshot(\n store: BitPersistMetaReadableStore,\n listener: () => void,\n): () => void {\n return store.observe.subscribePersistMeta(() => listener());\n}\n\nexport function observePersistMetaSnapshot(\n store: BitPersistMetaReadableStore,\n listener: (meta: BitPersistMetadata) => void,\n): () => void {\n listener(readPersistMetaSnapshot(store));\n\n return store.observe.subscribePersistMeta((meta) => {\n listener(meta);\n });\n}\n","import type { BitStoreApi } from \"../store/contracts/public/store-api-types\";\nimport type {\n BitArrayItem,\n BitArrayPath,\n BitPathValue,\n} from \"../store/contracts/types\";\nimport { getDeepValue } from \"../utils\";\n\nexport interface BitArrayBindingField<TItem> {\n key: string;\n value: TItem;\n index: number;\n}\n\nexport interface BitArrayBinding<\n TForm extends object,\n P extends BitArrayPath<TForm>,\n> {\n readItems(): BitArrayItem<BitPathValue<TForm, P>>[];\n getFields(\n items: BitArrayItem<BitPathValue<TForm, P>>[],\n ): BitArrayBindingField<BitArrayItem<BitPathValue<TForm, P>>>[];\n append(value: BitArrayItem<BitPathValue<TForm, P>>): void;\n prepend(value: BitArrayItem<BitPathValue<TForm, P>>): void;\n insert(index: number, value: BitArrayItem<BitPathValue<TForm, P>>): void;\n remove(index: number): void;\n move(from: number, to: number): void;\n swap(indexA: number, indexB: number): void;\n replace(items: BitArrayItem<BitPathValue<TForm, P>>[]): void;\n clear(): void;\n}\n\nexport function createArrayBinding<\n TForm extends object,\n P extends BitArrayPath<TForm>,\n>(store: BitStoreApi<TForm>, path: P): BitArrayBinding<TForm, P> {\n type Item = BitArrayItem<BitPathValue<TForm, P>>;\n\n let ids: string[] = [];\n\n const createId = (index?: number) =>\n store.feature.createArrayItemId(path as string, index);\n\n const normalizeItems = (value: unknown): Item[] =>\n Array.isArray(value) ? (value as Item[]) : [];\n\n const syncIds = (items: Item[]): Item[] => {\n if (items.length !== ids.length) {\n if (items.length > ids.length) {\n const diff = items.length - ids.length;\n ids = [\n ...ids,\n ...Array.from({ length: diff }, (_, offset) =>\n createId(ids.length + offset),\n ),\n ];\n } else {\n ids = ids.slice(0, items.length);\n }\n }\n\n return items;\n };\n\n return {\n readItems() {\n const value = getDeepValue(\n store.read.getState().values,\n path as string,\n ) as BitPathValue<TForm, P> | undefined;\n return syncIds(normalizeItems(value));\n },\n\n getFields(items) {\n return items.map((item, index) => ({\n key: ids[index] || `temp-${index}`,\n value: item,\n index,\n }));\n },\n\n append(value) {\n ids = [...ids, createId(ids.length)];\n store.feature.pushItem(path, value);\n },\n\n prepend(value) {\n ids = [createId(0), ...ids];\n store.feature.prependItem(path, value);\n },\n\n insert(index, value) {\n const nextIds = [...ids];\n nextIds.splice(index, 0, createId(index));\n ids = nextIds;\n store.feature.insertItem(path, index, value);\n },\n\n remove(index) {\n ids = ids.filter((_, currentIndex) => currentIndex !== index);\n store.feature.removeItem(path, index);\n },\n\n move(from, to) {\n const nextIds = [...ids];\n const [item] = nextIds.splice(from, 1);\n nextIds.splice(to, 0, item);\n ids = nextIds;\n store.feature.moveItem(path, from, to);\n },\n\n swap(indexA, indexB) {\n const nextIds = [...ids];\n [nextIds[indexA], nextIds[indexB]] = [nextIds[indexB], nextIds[indexA]];\n ids = nextIds;\n store.feature.swapItems(path, indexA, indexB);\n },\n\n replace(items) {\n ids = items.map((_, index) => createId(index));\n store.feature.replaceItems(path, items);\n },\n\n clear() {\n ids = [];\n store.feature.clearItems(path);\n },\n };\n}\n","import { formatMaskedValue, parseMaskedInput } from \"./mask/field-binding\";\nimport type { BitMask } from \"./mask/types\";\nimport type { BitPath } from \"./store/contracts/types\";\n\ntype BitMaskedFieldControllerStore<TForm extends object> = {\n setField(path: BitPath<TForm>, value: unknown): void;\n blurField(path: BitPath<TForm>): void;\n};\n\nexport function createMaskedFieldController<\n TForm extends object,\n P extends BitPath<TForm>,\n>(\n store: BitMaskedFieldControllerStore<TForm>,\n path: P,\n resolveMask: () => BitMask | undefined,\n) {\n const setValue = (value: unknown) => {\n const mask = resolveMask();\n store.setField(path, parseMaskedInput(value, mask));\n };\n\n const setBlur = () => store.blurField(path);\n\n const displayValue = (value: unknown) =>\n formatMaskedValue(value, resolveMask());\n\n return {\n setValue,\n setBlur,\n displayValue,\n };\n}\n","import { createMaskedFieldController } from \"../field-controller\";\nimport type { BitStoreApi } from \"../store/contracts/public/store-api-types\";\nimport type { BitPath, BitPathValue } from \"../store/contracts/types\";\n\nexport function createFrameworkMaskedFieldBinding<\n TForm extends object,\n P extends BitPath<TForm>,\n>(store: BitStoreApi<TForm>, path: P) {\n const fieldStore = {\n setField<PPath extends BitPath<TForm>>(\n targetPath: PPath,\n value: BitPathValue<TForm, PPath>,\n ) {\n store.write.setField(targetPath, value);\n },\n blurField<PPath extends BitPath<TForm>>(targetPath: PPath) {\n store.write.blurField(targetPath);\n },\n };\n\n return {\n fieldController: createMaskedFieldController(fieldStore, path, () =>\n store.feature.resolveMask(path as string),\n ),\n };\n}\n","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 { BitFormControllerStoreApi } from \"./store/contracts/public/store-api-types\";\n\nexport type BitFormDomEvent = {\n preventDefault?: () => void;\n stopPropagation?: () => void;\n};\n\nexport interface BitFormControllerRuntime {\n clearSubmissionState: () => void;\n setSubmissionResult: (result: unknown) => void;\n setSubmissionError: (error: Error | null) => void;\n}\n\nexport interface BitFormControllerOptions {\n stopPropagation?: boolean;\n}\n\nexport function preventFormEvent(\n event?: BitFormDomEvent,\n options?: BitFormControllerOptions,\n) {\n event?.preventDefault?.();\n if (options?.stopPropagation) {\n event?.stopPropagation?.();\n }\n}\n\nexport function createFormController<T extends object>(\n store: BitFormControllerStoreApi<T>,\n runtime: BitFormControllerRuntime,\n options?: BitFormControllerOptions,\n) {\n const submit = (\n onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>,\n ) => {\n return async (event?: BitFormDomEvent): Promise<void> => {\n preventFormEvent(event, options);\n await store.submit(onSuccess);\n };\n };\n\n const onSubmit = (\n handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>,\n ) => {\n return async (event?: BitFormDomEvent): Promise<void> => {\n preventFormEvent(event, options);\n runtime.setSubmissionError(null);\n\n await 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 type {\n BitFormControllerOptions,\n BitFormControllerRuntime,\n} from \"../form-controller\";\nimport { createFormController } from \"../form-controller\";\nimport type { BitStoreApi } from \"../store/contracts/public/store-api-types\";\n\nexport function createFrameworkFormBinding<T extends object>(\n store: BitStoreApi<T>,\n runtime: BitFormControllerRuntime,\n options?: BitFormControllerOptions,\n) {\n const controllerStore = {\n getState: store.read.getState,\n getDirtyValues: store.read.getDirtyValues,\n submit: store.write.submit,\n reset: store.write.reset,\n setServerErrors: store.write.setServerErrors,\n };\n\n return {\n controller: createFormController(controllerStore, runtime, options),\n actions: {\n setField: store.write.setField.bind(store.write),\n blurField: store.write.blurField.bind(store.write),\n setValues: store.write.setValues.bind(store.write),\n setError: store.write.setError.bind(store.write),\n setErrors: store.write.setErrors.bind(store.write),\n setServerErrors: store.write.setServerErrors.bind(store.write),\n validate: store.feature.validate.bind(store.feature),\n transaction: store.write.transaction.bind(store.write),\n },\n };\n}\n","type FieldCleanupStore = {\n feature?: {\n unregisterField?: (path: string) => void;\n };\n};\n\ntype PrefixCleanupStore = {\n feature?: {\n unregisterPrefix?: (prefix: string) => void;\n };\n};\n\nexport function cleanupRegisteredField(\n store: FieldCleanupStore,\n path: string,\n): void {\n store.feature?.unregisterField?.(path);\n}\n\nexport function cleanupRegisteredPrefix(\n store: PrefixCleanupStore,\n prefix: string,\n): void {\n store.feature?.unregisterPrefix?.(prefix);\n}\n"],"mappings":"qGAGO,SAASA,EACdC,EACa,CACb,IAAMC,EAAQD,EAAM,KAAK,SAAS,EAClC,MAAO,CACL,QAASC,EAAM,QACf,QAASA,EAAM,QACf,aAAcA,EAAM,YACtB,CACF,CAEO,SAASC,EACdF,EACAG,EACY,CACZ,OAAOH,EAAM,QAAQ,kBAAkB,IAAMG,EAAS,CAAC,CACzD,CAEO,SAASC,EACdJ,EACAG,EACY,CACZ,OAAAA,EAASJ,EAAqBC,CAAK,CAAC,EAE7BE,EAA0BF,EAAO,IAAM,CAC5CG,EAASJ,EAAqBC,CAAK,CAAC,CACtC,CAAC,CACH,CCjBO,SAASK,EAAwBC,EAIjB,CACrB,OAAOA,EAAM,KAAK,mBAAmB,CACvC,CAEO,SAASC,EACdD,EACAE,EACY,CACZ,OAAOF,EAAM,QAAQ,qBAAqB,IAAME,EAAS,CAAC,CAC5D,CAEO,SAASC,EACdH,EACAE,EACY,CACZ,OAAAA,EAASH,EAAwBC,CAAK,CAAC,EAEhCA,EAAM,QAAQ,qBAAsBI,GAAS,CAClDF,EAASE,CAAI,CACf,CAAC,CACH,CCLO,SAASC,EAGdC,EAA2BC,EAAoC,CAG/D,IAAIC,EAAgB,CAAC,EAEfC,EAAYC,GAChBJ,EAAM,QAAQ,kBAAkBC,EAAgBG,CAAK,EAEjDC,EAAkBC,GACtB,MAAM,QAAQA,CAAK,EAAKA,EAAmB,CAAC,EAExCC,EAAWC,GAA0B,CACzC,GAAIA,EAAM,SAAWN,EAAI,OACvB,GAAIM,EAAM,OAASN,EAAI,OAAQ,CAC7B,IAAMO,EAAOD,EAAM,OAASN,EAAI,OAChCA,EAAM,CACJ,GAAGA,EACH,GAAG,MAAM,KAAK,CAAE,OAAQO,CAAK,EAAG,CAACC,EAAGC,IAClCR,EAASD,EAAI,OAASS,CAAM,CAC9B,CACF,CACF,MACET,EAAMA,EAAI,MAAM,EAAGM,EAAM,MAAM,EAInC,OAAOA,CACT,EAEA,MAAO,CACL,WAAY,CACV,IAAMF,EAAQM,EACZZ,EAAM,KAAK,SAAS,EAAE,OACtBC,CACF,EACA,OAAOM,EAAQF,EAAeC,CAAK,CAAC,CACtC,EAEA,UAAUE,EAAO,CACf,OAAOA,EAAM,IAAI,CAACK,EAAMT,KAAW,CACjC,IAAKF,EAAIE,CAAK,GAAK,QAAQA,CAAK,GAChC,MAAOS,EACP,MAAAT,CACF,EAAE,CACJ,EAEA,OAAOE,EAAO,CACZJ,EAAM,CAAC,GAAGA,EAAKC,EAASD,EAAI,MAAM,CAAC,EACnCF,EAAM,QAAQ,SAASC,EAAMK,CAAK,CACpC,EAEA,QAAQA,EAAO,CACbJ,EAAM,CAACC,EAAS,CAAC,EAAG,GAAGD,CAAG,EAC1BF,EAAM,QAAQ,YAAYC,EAAMK,CAAK,CACvC,EAEA,OAAOF,EAAOE,EAAO,CACnB,IAAMQ,EAAU,CAAC,GAAGZ,CAAG,EACvBY,EAAQ,OAAOV,EAAO,EAAGD,EAASC,CAAK,CAAC,EACxCF,EAAMY,EACNd,EAAM,QAAQ,WAAWC,EAAMG,EAAOE,CAAK,CAC7C,EAEA,OAAOF,EAAO,CACZF,EAAMA,EAAI,OAAO,CAACQ,EAAGK,IAAiBA,IAAiBX,CAAK,EAC5DJ,EAAM,QAAQ,WAAWC,EAAMG,CAAK,CACtC,EAEA,KAAKY,EAAMC,EAAI,CACb,IAAMH,EAAU,CAAC,GAAGZ,CAAG,EACjB,CAACW,CAAI,EAAIC,EAAQ,OAAOE,EAAM,CAAC,EACrCF,EAAQ,OAAOG,EAAI,EAAGJ,CAAI,EAC1BX,EAAMY,EACNd,EAAM,QAAQ,SAASC,EAAMe,EAAMC,CAAE,CACvC,EAEA,KAAKC,EAAQC,EAAQ,CACnB,IAAML,EAAU,CAAC,GAAGZ,CAAG,EACvB,CAACY,EAAQI,CAAM,EAAGJ,EAAQK,CAAM,CAAC,EAAI,CAACL,EAAQK,CAAM,EAAGL,EAAQI,CAAM,CAAC,EACtEhB,EAAMY,EACNd,EAAM,QAAQ,UAAUC,EAAMiB,EAAQC,CAAM,CAC9C,EAEA,QAAQX,EAAO,CACbN,EAAMM,EAAM,IAAI,CAACE,EAAGN,IAAUD,EAASC,CAAK,CAAC,EAC7CJ,EAAM,QAAQ,aAAaC,EAAMO,CAAK,CACxC,EAEA,OAAQ,CACNN,EAAM,CAAC,EACPF,EAAM,QAAQ,WAAWC,CAAI,CAC/B,CACF,CACF,CCvHO,SAASmB,EAIdC,EACAC,EACAC,EACA,CAWA,MAAO,CACL,SAXgBC,GAAmB,CACnC,IAAMC,EAAOF,EAAY,EACzBF,EAAM,SAASC,EAAMI,EAAiBF,EAAOC,CAAI,CAAC,CACpD,EASE,QAPc,IAAMJ,EAAM,UAAUC,CAAI,EAQxC,aANoBE,GACpBG,EAAkBH,EAAOD,EAAY,CAAC,CAMxC,CACF,CC5BO,SAASK,EAGdC,EAA2BC,EAAS,CAapC,MAAO,CACL,gBAAiBC,EAbA,CACjB,SACEC,EACAC,EACA,CACAJ,EAAM,MAAM,SAASG,EAAYC,CAAK,CACxC,EACA,UAAwCD,EAAmB,CACzDH,EAAM,MAAM,UAAUG,CAAU,CAClC,CACF,EAG2DF,EAAM,IAC7DD,EAAM,QAAQ,YAAYC,CAAc,CAC1C,CACF,CACF,CCjBA,eAAsBI,EACpBC,EACAC,EACAC,EACAC,EACe,CACf,GAAI,CACF,IAAMC,EAAS,MAAMJ,EAAQC,EAAQC,CAAW,EAChDC,EAAS,UAAUC,CAAM,CAC3B,OAASC,EAAO,CACd,GAAIC,EAAuBD,CAAK,EAAG,CACjCF,EAAS,eAAeI,EAAoBF,CAAK,CAAC,EAClD,MACF,CAEAF,EAAS,iBACPE,aAAiB,MAAQA,EAAQ,IAAI,MAAM,OAAOA,CAAK,CAAC,CAC1D,CACF,CACF,CCTO,SAASG,EACdC,EACAC,EACA,CACAD,GAAO,iBAAiB,EACpBC,GAAS,iBACXD,GAAO,kBAAkB,CAE7B,CAEO,SAASE,EACdC,EACAC,EACAH,EACA,CAuCA,MAAO,CACL,OAtCAI,GAEO,MAAOL,GAA2C,CACvDD,EAAiBC,EAAOC,CAAO,EAC/B,MAAME,EAAM,OAAOE,CAAS,CAC9B,EAkCA,SA9BAC,GAEO,MAAON,GAA2C,CACvDD,EAAiBC,EAAOC,CAAO,EAC/BG,EAAQ,mBAAmB,IAAI,EAE/B,MAAMD,EAAM,OAAO,MAAOI,EAAQC,IAAgB,CAChD,MAAMC,EAAqBH,EAASC,EAAQC,EAAa,CACvD,UAAYE,GAAW,CACrBN,EAAQ,oBAAoBM,CAAM,EAClCN,EAAQ,mBAAmB,IAAI,CACjC,EACA,eAAiBO,GAAiB,CAChCR,EAAM,gBAAgBQ,CAAY,CACpC,EACA,iBAAmBC,GAAU,CAC3BR,EAAQ,mBAAmBQ,CAAK,CAClC,CACF,CAAC,CACH,CAAC,CACH,EAWA,MARY,IAAM,CAClBT,EAAM,MAAM,EACZC,EAAQ,qBAAqB,CAC/B,EAME,UAAW,IAAMD,EAAM,SAAS,EAAE,OAClC,UAAW,IAAMA,EAAM,SAAS,EAAE,OAClC,WAAY,IAAMA,EAAM,SAAS,EAAE,QACnC,eAAgB,IAAMA,EAAM,eAAe,CAC7C,CACF,CCzEO,SAASU,EACdC,EACAC,EACAC,EACA,CACA,IAAMC,EAAkB,CACtB,SAAUH,EAAM,KAAK,SACrB,eAAgBA,EAAM,KAAK,eAC3B,OAAQA,EAAM,MAAM,OACpB,MAAOA,EAAM,MAAM,MACnB,gBAAiBA,EAAM,MAAM,eAC/B,EAEA,MAAO,CACL,WAAYI,EAAqBD,EAAiBF,EAASC,CAAO,EAClE,QAAS,CACP,SAAUF,EAAM,MAAM,SAAS,KAAKA,EAAM,KAAK,EAC/C,UAAWA,EAAM,MAAM,UAAU,KAAKA,EAAM,KAAK,EACjD,UAAWA,EAAM,MAAM,UAAU,KAAKA,EAAM,KAAK,EACjD,SAAUA,EAAM,MAAM,SAAS,KAAKA,EAAM,KAAK,EAC/C,UAAWA,EAAM,MAAM,UAAU,KAAKA,EAAM,KAAK,EACjD,gBAAiBA,EAAM,MAAM,gBAAgB,KAAKA,EAAM,KAAK,EAC7D,SAAUA,EAAM,QAAQ,SAAS,KAAKA,EAAM,OAAO,EACnD,YAAaA,EAAM,MAAM,YAAY,KAAKA,EAAM,KAAK,CACvD,CACF,CACF,CCrBO,SAASK,EACdC,EACAC,EACM,CACND,EAAM,SAAS,kBAAkBC,CAAI,CACvC,CAEO,SAASC,EACdF,EACAG,EACM,CACNH,EAAM,SAAS,mBAAmBG,CAAM,CAC1C","names":["readFormMetaSnapshot","store","state","subscribeFormMetaSnapshot","listener","observeFormMetaSnapshot","readPersistMetaSnapshot","store","subscribePersistMetaSnapshot","listener","observePersistMetaSnapshot","meta","createArrayBinding","store","path","ids","createId","index","normalizeItems","value","syncIds","items","diff","_","offset","getDeepValue","item","nextIds","currentIndex","from","to","indexA","indexB","createMaskedFieldController","store","path","resolveMask","value","mask","parseMaskedInput","formatMaskedValue","createFrameworkMaskedFieldBinding","store","path","createMaskedFieldController","targetPath","value","executeSubmitHandler","handler","values","dirtyValues","handlers","result","error","isValidationErrorShape","extractServerErrors","preventFormEvent","event","options","createFormController","store","runtime","onSuccess","handler","values","dirtyValues","executeSubmitHandler","result","serverErrors","error","createFrameworkFormBinding","store","runtime","options","controllerStore","createFormController","cleanupRegisteredField","store","path","cleanupRegisteredPrefix","prefix"]}
@@ -5,7 +5,7 @@
5
5
  `+Object.keys(s).map(i=>`${i}: ${s[i]}`).join(`\r
6
6
  `)+`\r
7
7
  \r
8
- `+r)}function U(t,e,r,s,i,n){if(t.listenerCount("wsClientError")){let o=new Error(i);Error.captureStackTrace(o,U),t.emit("wsClientError",o,r,e)}else se(r,s,i,n)}});var nr=w(require("http"),1),Ve=w(require("fs"),1),$e=w(require("path"),1);function Xe(t){return`
8
+ `+r)}function U(t,e,r,s,i,n){if(t.listenerCount("wsClientError")){let o=new Error(i);Error.captureStackTrace(o,U),t.emit("wsClientError",o,r,e)}else se(r,s,i,n)}});var Ve=w(require("fs"),1),nr=w(require("http"),1),$e=w(require("path"),1);function Xe(t){return`
9
9
  <!DOCTYPE html>
10
10
  <html lang="pt-BR">
11
11
  <head>
@@ -486,7 +486,7 @@ export function BitFormRadioGroup({
486
486
  </div>
487
487
  );
488
488
  }
489
- `}var Ge={input:ar,textarea:lr,select:cr,checkbox:dr,switch:fr,"radio-group":hr},je=Object.keys(Ge);var ur={name:"shadcn",framework:"react",components:je,renderComponent(t,e){let r=t.toLowerCase().replace(/\s+/g,"-"),s=Ge[r];if(!s)throw new Error(`Unknown shadcn component: ${t}. Available: ${je.join(", ")}`);let i=s(e.uiPath);return{filename:r==="radio-group"?"bit-form-radio-group.tsx":`bit-form-${r}.tsx`,contents:i}}};var zs={shadcn:ur};function pr(t){return zs[t.toLowerCase()]}var Ys="@/components/ui";function Ks(t){let e=t[0]??"",r=t.slice(1),s=".",i=Ys,n=!1,o=!1,l=[];for(let c=0;c<r.length;c++){let a=r[c];a==="--path"&&r[c+1]?s=r[++c]:a==="--ui-path"&&r[c+1]?i=r[++c]:a==="--overwrite"?n=!0:a==="--yes"||a==="-y"?o=!0:a.startsWith("--")||l.push(a)}return{adapter:e,components:l,flags:{path:s,uiPath:i,overwrite:n,yes:o}}}function Xs(t){let e=ie.join(t,"components.json");try{return L.accessSync(e),!0}catch{return!1}}function mr(t){let{adapter:e,components:r,flags:s}=Ks(t);if(!e)throw new Error("bit-form add: missing adapter name. Example: bit-form add shadcn input");let i=pr(e);if(!i)throw new Error(`bit-form add: unknown adapter "${e}". Available: shadcn`);let n=r.length>0?r:i.components;if(n.length===0)throw new Error("bit-form add: specify at least one component or use no arguments to add all.");let o=process.cwd(),l=ie.resolve(o,s.path);i.name==="shadcn"&&!Xs(o)&&console.warn("Warning: components.json not found in project root. Make sure shadcn/ui is initialized (e.g. npx shadcn@latest init) or pass --ui-path to match your setup.");try{L.mkdirSync(l,{recursive:!0})}catch(a){throw new Error(`bit-form add: could not create output directory: ${a.message}`)}let c={cwd:o,path:l,uiPath:s.uiPath,overwrite:s.overwrite,yes:s.yes};for(let a of n){let{filename:d,contents:f}=i.renderComponent(a,c),u=ie.join(l,d);if(!s.overwrite&&L.existsSync(u)){console.log(`Skip ${d} (exists; use --overwrite to replace)`);continue}L.writeFileSync(u,f,"utf-8"),console.log(`Created ${d}`)}}var z=process.argv.slice(2),_r=z[0];if(_r==="devtools"){let t=z.indexOf("-p")!==-1?z.indexOf("-p"):z.indexOf("--port"),e=t!==-1?Number(z[t+1]):3e3;or(e)}else if(_r==="add")try{mr(z.slice(1))}catch(t){console.error(t.message),process.exit(1)}else console.log(`
489
+ `}var Ge={input:ar,textarea:lr,select:cr,checkbox:dr,switch:fr,"radio-group":hr},je=Object.keys(Ge);var ur={name:"shadcn",framework:"react",components:je,renderComponent(t,e){let r=t.toLowerCase().replace(/\s+/g,"-"),s=Ge[r];if(!s)throw new Error(`Unknown shadcn component: ${t}. Available: ${je.join(", ")}`);let i=s(e.uiPath);return{filename:r==="radio-group"?"bit-form-radio-group.tsx":`bit-form-${r}.tsx`,contents:i}}};var zs={shadcn:ur};function pr(t){return zs[t.toLowerCase()]}var Ys="@/components/ui";function Ks(t){let e=t[0]??"",r=t.slice(1),s=".",i=Ys,n=!1,o=!1,l=[];for(let c=0;c<r.length;c++){let a=r[c];a==="--path"&&r[c+1]?s=r[++c]:a==="--ui-path"&&r[c+1]?i=r[++c]:a==="--overwrite"?n=!0:a==="--yes"||a==="-y"?o=!0:a.startsWith("--")||l.push(a)}return{adapter:e,components:l,flags:{path:s,uiPath:i,overwrite:n,yes:o}}}function Xs(t){let e=ie.join(t,"components.json");try{return L.accessSync(e),!0}catch{return!1}}function mr(t){let{adapter:e,components:r,flags:s}=Ks(t);if(!e)throw new Error("bit-form add: missing adapter name. Example: bit-form add shadcn input");let i=pr(e);if(!i)throw new Error(`bit-form add: unknown adapter "${e}". Available: shadcn`);let n=r.length>0?r:i.components;if(n.length===0)throw new Error("bit-form add: specify at least one component or use no arguments to add all.");let o=process.cwd(),l=ie.resolve(o,s.path);i.name==="shadcn"&&!Xs(o)&&console.warn("Warning: components.json not found in project root. Make sure shadcn/ui is initialized (e.g. npx shadcn@latest init) or pass --ui-path to match your setup.");try{L.mkdirSync(l,{recursive:!0})}catch(a){let d=a instanceof Error?a.message:String(a);throw new Error(`bit-form add: could not create output directory: ${d}`,{cause:a})}let c={cwd:o,path:l,uiPath:s.uiPath,overwrite:s.overwrite,yes:s.yes};for(let a of n){let{filename:d,contents:f}=i.renderComponent(a,c),u=ie.join(l,d);if(!s.overwrite&&L.existsSync(u)){console.log(`Skip ${d} (exists; use --overwrite to replace)`);continue}L.writeFileSync(u,f,"utf-8"),console.log(`Created ${d}`)}}var z=process.argv.slice(2),_r=z[0];if(_r==="devtools"){let t=z.indexOf("-p")!==-1?z.indexOf("-p"):z.indexOf("--port"),e=t!==-1?Number(z[t+1]):3e3;or(e)}else if(_r==="add")try{mr(z.slice(1))}catch(t){console.error(t.message),process.exit(1)}else console.log(`
490
490
  \u{1F6E0} Bit-Form CLI
491
491
 
492
492
  Uso:
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkKDHPLXZFcjs = require('../chunk-KDHPLXZF.cjs');require('../chunk-6LNXTSZ6.cjs');var _chunkPFPGASVZcjs = require('../chunk-PFPGASVZ.cjs');exports.cleanupRegisteredField = _chunkKDHPLXZFcjs.j; exports.cleanupRegisteredPrefix = _chunkKDHPLXZFcjs.k; exports.createArrayBinding = _chunkKDHPLXZFcjs.g; exports.createFrameworkFormBinding = _chunkKDHPLXZFcjs.i; exports.createFrameworkMaskedFieldBinding = _chunkKDHPLXZFcjs.h; exports.formatMaskedValue = _chunkPFPGASVZcjs.b; exports.isBitFieldInputEventObject = _chunkPFPGASVZcjs.a; exports.observeFormMetaSnapshot = _chunkKDHPLXZFcjs.c; exports.observePersistMetaSnapshot = _chunkKDHPLXZFcjs.f; exports.parseMaskedInput = _chunkPFPGASVZcjs.c; exports.readFormMetaSnapshot = _chunkKDHPLXZFcjs.a; exports.readPersistMetaSnapshot = _chunkKDHPLXZFcjs.d; exports.subscribeFormMetaSnapshot = _chunkKDHPLXZFcjs.b; exports.subscribePersistMetaSnapshot = _chunkKDHPLXZFcjs.e;
2
+ //# sourceMappingURL=bindings.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/core/bindings.cjs"],"names":[],"mappings":"AAAA,kIAA4E,iCAA8B,yDAAwD,qwBAAka","file":"/home/runner/work/bit-form/bit-form/dist/core/bindings.cjs"}
@@ -0,0 +1,89 @@
1
+ import { B as BitFormMeta, b as BitValidationOptions } from '../meta-types-Bzmm21TP.cjs';
2
+ import { e as BitStoreApi } from '../store-api-types-Bm3EAqR_.cjs';
3
+ import { x as BitPersistMetadata, u as BitPath, v as BitPathValue, L as DeepPartial } from '../types-SOg9xEce.cjs';
4
+ export { B as BitArrayBinding, a as BitArrayBindingField, c as createArrayBinding } from '../array-controller-CtlqjA0e.cjs';
5
+ import '../bus-WOHGxuVy.cjs';
6
+ export { B as BitFieldInputEvent, f as formatMaskedValue, i as isBitFieldInputEventObject, p as parseMaskedInput } from '../field-binding-B_OX3bjp.cjs';
7
+ export { B as BitDeleteUploadFn, a as BitUploadFn, b as BitUploadResult } from '../upload-C2mpfhp1.cjs';
8
+ import '../types-D8DgIUhJ.cjs';
9
+
10
+ declare function readFormMetaSnapshot<T extends object>(store: BitStoreApi<T>): BitFormMeta;
11
+ declare function subscribeFormMetaSnapshot<T extends object>(store: BitStoreApi<T>, listener: () => void): () => void;
12
+ declare function observeFormMetaSnapshot<T extends object>(store: BitStoreApi<T>, listener: (meta: BitFormMeta) => void): () => void;
13
+
14
+ type BitPersistMetaReadableStore = {
15
+ read: {
16
+ getPersistMetadata(): BitPersistMetadata;
17
+ };
18
+ observe: {
19
+ subscribePersistMeta(listener: (meta: BitPersistMetadata) => void): () => void;
20
+ };
21
+ };
22
+ declare function readPersistMetaSnapshot(store: {
23
+ read: {
24
+ getPersistMetadata(): BitPersistMetadata;
25
+ };
26
+ }): BitPersistMetadata;
27
+ declare function subscribePersistMetaSnapshot(store: BitPersistMetaReadableStore, listener: () => void): () => void;
28
+ declare function observePersistMetaSnapshot(store: BitPersistMetaReadableStore, listener: (meta: BitPersistMetadata) => void): () => void;
29
+
30
+ declare function createFrameworkMaskedFieldBinding<TForm extends object, P extends BitPath<TForm>>(store: BitStoreApi<TForm>, path: P): {
31
+ fieldController: {
32
+ setValue: (value: unknown) => void;
33
+ setBlur: () => void;
34
+ displayValue: (value: unknown) => string;
35
+ };
36
+ };
37
+
38
+ type BitFormDomEvent = {
39
+ preventDefault?: () => void;
40
+ stopPropagation?: () => void;
41
+ };
42
+ interface BitFormControllerRuntime {
43
+ clearSubmissionState: () => void;
44
+ setSubmissionResult: (result: unknown) => void;
45
+ setSubmissionError: (error: Error | null) => void;
46
+ }
47
+ interface BitFormControllerOptions {
48
+ stopPropagation?: boolean;
49
+ }
50
+
51
+ declare function createFrameworkFormBinding<T extends object>(store: BitStoreApi<T>, runtime: BitFormControllerRuntime, options?: BitFormControllerOptions): {
52
+ controller: {
53
+ submit: (onSuccess: (values: T, dirtyValues?: Partial<T> | undefined) => void | Promise<void>) => (event?: BitFormDomEvent) => Promise<void>;
54
+ onSubmit: (handler: (values: T, dirtyValues?: Partial<T> | undefined) => Promise<unknown>) => (event?: BitFormDomEvent) => Promise<void>;
55
+ reset: () => void;
56
+ getValues: () => T;
57
+ getErrors: () => Partial<Record<BitPath<T, "">, string | undefined>>;
58
+ getTouched: () => Partial<Record<BitPath<T, "">, boolean | undefined>>;
59
+ getDirtyValues: () => Partial<T>;
60
+ };
61
+ actions: {
62
+ setField: <P extends BitPath<T, "">>(path: P, value: BitPathValue<T, P>) => void;
63
+ blurField: <P extends BitPath<T, "">>(path: P) => void;
64
+ setValues: (values: T | DeepPartial<T>, options?: {
65
+ partial?: boolean;
66
+ rebase?: boolean;
67
+ }) => void;
68
+ setError: (path: string, message: string | undefined) => void;
69
+ setErrors: (errors: Partial<Record<BitPath<T, "">, string | undefined>>) => void;
70
+ setServerErrors: (serverErrors: Record<string, string[] | string>) => void;
71
+ validate: (options?: BitValidationOptions) => Promise<boolean>;
72
+ transaction: <TResult>(callback: () => TResult) => TResult;
73
+ };
74
+ };
75
+
76
+ type FieldCleanupStore = {
77
+ feature?: {
78
+ unregisterField?: (path: string) => void;
79
+ };
80
+ };
81
+ type PrefixCleanupStore = {
82
+ feature?: {
83
+ unregisterPrefix?: (prefix: string) => void;
84
+ };
85
+ };
86
+ declare function cleanupRegisteredField(store: FieldCleanupStore, path: string): void;
87
+ declare function cleanupRegisteredPrefix(store: PrefixCleanupStore, prefix: string): void;
88
+
89
+ export { cleanupRegisteredField, cleanupRegisteredPrefix, createFrameworkFormBinding, createFrameworkMaskedFieldBinding, observeFormMetaSnapshot, observePersistMetaSnapshot, readFormMetaSnapshot, readPersistMetaSnapshot, subscribeFormMetaSnapshot, subscribePersistMetaSnapshot };
@@ -0,0 +1,89 @@
1
+ import { B as BitFormMeta, b as BitValidationOptions } from '../meta-types-Bzmm21TP.js';
2
+ import { e as BitStoreApi } from '../store-api-types-DfTFy2h4.js';
3
+ import { x as BitPersistMetadata, u as BitPath, v as BitPathValue, L as DeepPartial } from '../types-CRCP4Pgq.js';
4
+ export { B as BitArrayBinding, a as BitArrayBindingField, c as createArrayBinding } from '../array-controller-C61ByyG6.js';
5
+ import '../bus-BKuMV3E7.js';
6
+ export { B as BitFieldInputEvent, f as formatMaskedValue, i as isBitFieldInputEventObject, p as parseMaskedInput } from '../field-binding-MX6jVQbT.js';
7
+ export { B as BitDeleteUploadFn, a as BitUploadFn, b as BitUploadResult } from '../upload-C2mpfhp1.js';
8
+ import '../types-D8DgIUhJ.js';
9
+
10
+ declare function readFormMetaSnapshot<T extends object>(store: BitStoreApi<T>): BitFormMeta;
11
+ declare function subscribeFormMetaSnapshot<T extends object>(store: BitStoreApi<T>, listener: () => void): () => void;
12
+ declare function observeFormMetaSnapshot<T extends object>(store: BitStoreApi<T>, listener: (meta: BitFormMeta) => void): () => void;
13
+
14
+ type BitPersistMetaReadableStore = {
15
+ read: {
16
+ getPersistMetadata(): BitPersistMetadata;
17
+ };
18
+ observe: {
19
+ subscribePersistMeta(listener: (meta: BitPersistMetadata) => void): () => void;
20
+ };
21
+ };
22
+ declare function readPersistMetaSnapshot(store: {
23
+ read: {
24
+ getPersistMetadata(): BitPersistMetadata;
25
+ };
26
+ }): BitPersistMetadata;
27
+ declare function subscribePersistMetaSnapshot(store: BitPersistMetaReadableStore, listener: () => void): () => void;
28
+ declare function observePersistMetaSnapshot(store: BitPersistMetaReadableStore, listener: (meta: BitPersistMetadata) => void): () => void;
29
+
30
+ declare function createFrameworkMaskedFieldBinding<TForm extends object, P extends BitPath<TForm>>(store: BitStoreApi<TForm>, path: P): {
31
+ fieldController: {
32
+ setValue: (value: unknown) => void;
33
+ setBlur: () => void;
34
+ displayValue: (value: unknown) => string;
35
+ };
36
+ };
37
+
38
+ type BitFormDomEvent = {
39
+ preventDefault?: () => void;
40
+ stopPropagation?: () => void;
41
+ };
42
+ interface BitFormControllerRuntime {
43
+ clearSubmissionState: () => void;
44
+ setSubmissionResult: (result: unknown) => void;
45
+ setSubmissionError: (error: Error | null) => void;
46
+ }
47
+ interface BitFormControllerOptions {
48
+ stopPropagation?: boolean;
49
+ }
50
+
51
+ declare function createFrameworkFormBinding<T extends object>(store: BitStoreApi<T>, runtime: BitFormControllerRuntime, options?: BitFormControllerOptions): {
52
+ controller: {
53
+ submit: (onSuccess: (values: T, dirtyValues?: Partial<T> | undefined) => void | Promise<void>) => (event?: BitFormDomEvent) => Promise<void>;
54
+ onSubmit: (handler: (values: T, dirtyValues?: Partial<T> | undefined) => Promise<unknown>) => (event?: BitFormDomEvent) => Promise<void>;
55
+ reset: () => void;
56
+ getValues: () => T;
57
+ getErrors: () => Partial<Record<BitPath<T, "">, string | undefined>>;
58
+ getTouched: () => Partial<Record<BitPath<T, "">, boolean | undefined>>;
59
+ getDirtyValues: () => Partial<T>;
60
+ };
61
+ actions: {
62
+ setField: <P extends BitPath<T, "">>(path: P, value: BitPathValue<T, P>) => void;
63
+ blurField: <P extends BitPath<T, "">>(path: P) => void;
64
+ setValues: (values: T | DeepPartial<T>, options?: {
65
+ partial?: boolean;
66
+ rebase?: boolean;
67
+ }) => void;
68
+ setError: (path: string, message: string | undefined) => void;
69
+ setErrors: (errors: Partial<Record<BitPath<T, "">, string | undefined>>) => void;
70
+ setServerErrors: (serverErrors: Record<string, string[] | string>) => void;
71
+ validate: (options?: BitValidationOptions) => Promise<boolean>;
72
+ transaction: <TResult>(callback: () => TResult) => TResult;
73
+ };
74
+ };
75
+
76
+ type FieldCleanupStore = {
77
+ feature?: {
78
+ unregisterField?: (path: string) => void;
79
+ };
80
+ };
81
+ type PrefixCleanupStore = {
82
+ feature?: {
83
+ unregisterPrefix?: (prefix: string) => void;
84
+ };
85
+ };
86
+ declare function cleanupRegisteredField(store: FieldCleanupStore, path: string): void;
87
+ declare function cleanupRegisteredPrefix(store: PrefixCleanupStore, prefix: string): void;
88
+
89
+ export { cleanupRegisteredField, cleanupRegisteredPrefix, createFrameworkFormBinding, createFrameworkMaskedFieldBinding, observeFormMetaSnapshot, observePersistMetaSnapshot, readFormMetaSnapshot, readPersistMetaSnapshot, subscribeFormMetaSnapshot, subscribePersistMetaSnapshot };
@@ -0,0 +1,2 @@
1
+ import{a,b,c,d,e,f,g,h as k,i as l,j as m,k as n}from"../chunk-Y3XVQGCU.js";import"../chunk-QX2IVNMK.js";import{a as h,b as i,c as j}from"../chunk-3NUJVIAM.js";export{m as cleanupRegisteredField,n as cleanupRegisteredPrefix,g as createArrayBinding,l as createFrameworkFormBinding,k as createFrameworkMaskedFieldBinding,i as formatMaskedValue,h as isBitFieldInputEventObject,c as observeFormMetaSnapshot,f as observePersistMetaSnapshot,j as parseMaskedInput,a as readFormMetaSnapshot,d as readPersistMetaSnapshot,b as subscribeFormMetaSnapshot,e as subscribePersistMetaSnapshot};
2
+ //# sourceMappingURL=bindings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkBSGJ3T5Scjs = require('../chunk-BSGJ3T5S.cjs');var _chunkRHMJPKNVcjs = require('../chunk-RHMJPKNV.cjs');exports.areScopeErrorsEqual = _chunkRHMJPKNVcjs.a; exports.getScopeSubscriptionPaths = _chunkRHMJPKNVcjs.c; exports.isHistoryMetaEqual = _chunkRHMJPKNVcjs.e; exports.isScopeStatusEqual = _chunkRHMJPKNVcjs.b; exports.observeHistoryMetaSnapshot = _chunkRHMJPKNVcjs.g; exports.observeScopeStatusSnapshot = _chunkBSGJ3T5Scjs.a; exports.readHistoryMetaSnapshot = _chunkRHMJPKNVcjs.f;
2
+ //# sourceMappingURL=status.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/core/status.cjs"],"names":[],"mappings":"AAAA,kIAAyC,yDAA8D,0XAA6M","file":"/home/runner/work/bit-form/bit-form/dist/core/status.cjs"}
@@ -0,0 +1,44 @@
1
+ import { a as BitHistoryMetadata } from '../meta-types-Bzmm21TP.cjs';
2
+ import { S as ScopeStatus } from '../types-SOg9xEce.cjs';
3
+ export { V as ValidateScopeResult } from '../types-SOg9xEce.cjs';
4
+ import '../types-D8DgIUhJ.cjs';
5
+
6
+ /**
7
+ * Subconjunto relevante de BitHistoryMetadata para comparação de igualdade.
8
+ * Evita re-renders/updates desnecessários quando o estado de histórico não muda.
9
+ */
10
+ type HistoryMeta = Pick<BitHistoryMetadata, "canUndo" | "canRedo" | "historyIndex" | "historySize">;
11
+ /**
12
+ * Compara dois snapshots de metadata de histórico por valor.
13
+ * Retorna `true` quando todos os campos relevantes são idênticos,
14
+ * permitindo que os bindings de framework ignorem atualizações não relacionadas.
15
+ */
16
+ declare function isHistoryMetaEqual(a: HistoryMeta, b: HistoryMeta): boolean;
17
+ declare function readHistoryMetaSnapshot<_T extends object>(store: {
18
+ read: {
19
+ getHistoryMetadata(): BitHistoryMetadata;
20
+ };
21
+ }): HistoryMeta;
22
+ declare function observeHistoryMetaSnapshot<_T extends object>(store: {
23
+ read: {
24
+ getHistoryMetadata(): BitHistoryMetadata;
25
+ };
26
+ observe: {
27
+ subscribeHistoryMeta(listener: (meta: BitHistoryMetadata) => void): () => void;
28
+ };
29
+ }, listener: (meta: HistoryMeta) => void): () => void;
30
+
31
+ declare function areScopeErrorsEqual(currentErrors: Record<string, string>, nextErrors: Record<string, string>): boolean;
32
+ declare function isScopeStatusEqual(currentStatus: ScopeStatus, nextStatus: ScopeStatus): boolean;
33
+ declare function getScopeSubscriptionPaths(scopeFields: readonly string[]): string[];
34
+
35
+ declare function observeScopeStatusSnapshot(store: {
36
+ read: {
37
+ getScopeStatus(scopeName: string): ScopeStatus;
38
+ };
39
+ observe: {
40
+ subscribeScopeStatus(scopeName: string, listener: (status: ScopeStatus) => void): () => void;
41
+ };
42
+ }, scopeName: string, listener: (status: ScopeStatus) => void): () => void;
43
+
44
+ export { type HistoryMeta, ScopeStatus, areScopeErrorsEqual, getScopeSubscriptionPaths, isHistoryMetaEqual, isScopeStatusEqual, observeHistoryMetaSnapshot, observeScopeStatusSnapshot, readHistoryMetaSnapshot };
@@ -0,0 +1,44 @@
1
+ import { a as BitHistoryMetadata } from '../meta-types-Bzmm21TP.js';
2
+ import { S as ScopeStatus } from '../types-CRCP4Pgq.js';
3
+ export { V as ValidateScopeResult } from '../types-CRCP4Pgq.js';
4
+ import '../types-D8DgIUhJ.js';
5
+
6
+ /**
7
+ * Subconjunto relevante de BitHistoryMetadata para comparação de igualdade.
8
+ * Evita re-renders/updates desnecessários quando o estado de histórico não muda.
9
+ */
10
+ type HistoryMeta = Pick<BitHistoryMetadata, "canUndo" | "canRedo" | "historyIndex" | "historySize">;
11
+ /**
12
+ * Compara dois snapshots de metadata de histórico por valor.
13
+ * Retorna `true` quando todos os campos relevantes são idênticos,
14
+ * permitindo que os bindings de framework ignorem atualizações não relacionadas.
15
+ */
16
+ declare function isHistoryMetaEqual(a: HistoryMeta, b: HistoryMeta): boolean;
17
+ declare function readHistoryMetaSnapshot<_T extends object>(store: {
18
+ read: {
19
+ getHistoryMetadata(): BitHistoryMetadata;
20
+ };
21
+ }): HistoryMeta;
22
+ declare function observeHistoryMetaSnapshot<_T extends object>(store: {
23
+ read: {
24
+ getHistoryMetadata(): BitHistoryMetadata;
25
+ };
26
+ observe: {
27
+ subscribeHistoryMeta(listener: (meta: BitHistoryMetadata) => void): () => void;
28
+ };
29
+ }, listener: (meta: HistoryMeta) => void): () => void;
30
+
31
+ declare function areScopeErrorsEqual(currentErrors: Record<string, string>, nextErrors: Record<string, string>): boolean;
32
+ declare function isScopeStatusEqual(currentStatus: ScopeStatus, nextStatus: ScopeStatus): boolean;
33
+ declare function getScopeSubscriptionPaths(scopeFields: readonly string[]): string[];
34
+
35
+ declare function observeScopeStatusSnapshot(store: {
36
+ read: {
37
+ getScopeStatus(scopeName: string): ScopeStatus;
38
+ };
39
+ observe: {
40
+ subscribeScopeStatus(scopeName: string, listener: (status: ScopeStatus) => void): () => void;
41
+ };
42
+ }, scopeName: string, listener: (status: ScopeStatus) => void): () => void;
43
+
44
+ export { type HistoryMeta, ScopeStatus, areScopeErrorsEqual, getScopeSubscriptionPaths, isHistoryMetaEqual, isScopeStatusEqual, observeHistoryMetaSnapshot, observeScopeStatusSnapshot, readHistoryMetaSnapshot };
@@ -0,0 +1,2 @@
1
+ import{a as g}from"../chunk-W2E5UIXT.js";import{a,b,c,e as d,f as e,g as f}from"../chunk-UIKO6GGW.js";export{a as areScopeErrorsEqual,c as getScopeSubscriptionPaths,d as isHistoryMetaEqual,b as isScopeStatusEqual,f as observeHistoryMetaSnapshot,g as observeScopeStatusSnapshot,e as readHistoryMetaSnapshot};
2
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkJ5ALITQWcjs = require('../chunk-J5ALITQW.cjs');require('../chunk-RHMJPKNV.cjs');require('../chunk-OLQVH24Z.cjs');require('../chunk-6LNXTSZ6.cjs');exports.bitBus = _chunkJ5ALITQWcjs.a; exports.createBitBus = _chunkJ5ALITQWcjs.b; exports.createBitStore = _chunkJ5ALITQWcjs.e; exports.createFrameworkStoreAdapter = _chunkJ5ALITQWcjs.d; exports.extractFeatureSlice = _chunkJ5ALITQWcjs.i; exports.extractObserveSlice = _chunkJ5ALITQWcjs.g; exports.extractReadSlice = _chunkJ5ALITQWcjs.f; exports.extractSlices = _chunkJ5ALITQWcjs.j; exports.extractWriteSlice = _chunkJ5ALITQWcjs.h; exports.resolveBitStoreForHooks = _chunkJ5ALITQWcjs.c;
2
+ //# sourceMappingURL=store.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/core/store.cjs"],"names":[],"mappings":"AAAA,kIAAsD,iCAA8B,iCAA8B,iCAA8B,qeAA0O","file":"/home/runner/work/bit-form/bit-form/dist/core/store.cjs"}
@@ -0,0 +1,84 @@
1
+ export { createBitStore, createFrameworkStoreAdapter, resolveBitStoreForHooks } from '../index.cjs';
2
+ import { e as BitStoreApi, g as BitStoreFeatureApi, h as BitStoreObserveSliceApi, i as BitStoreReadSliceApi, j as BitStoreWriteSliceApi } from '../store-api-types-Bm3EAqR_.cjs';
3
+ export { B as BitEqualityFn, a as BitFrameworkConfig, b as BitFrameworkStoreApi, c as BitSelector, d as BitSelectorSubscriptionOptions } from '../store-api-types-Bm3EAqR_.cjs';
4
+ export { B as BitFormMeta, a as BitHistoryMetadata, b as BitValidationOptions } from '../meta-types-Bzmm21TP.cjs';
5
+ export { B as BitAfterSubmitEvent, a as BitAfterValidateEvent, b as BitArrayItem, c as BitArrayPath, d as BitBeforeSubmitEvent, e as BitBeforeValidateEvent, f as BitBus, g as BitBusListener, h as BitBusStorePort, i as BitComputedFn, j as BitConfig, k as BitErrors, l as BitFieldChangeEvent, m as BitFieldChangeMeta, n as BitFieldConditional, o as BitFieldDefinition, p as BitFieldState, q as BitFieldValidation, r as BitFormGlobal, s as BitHistoryConfig, t as BitNormalizeFn, u as BitPath, v as BitPathValue, w as BitPersistConfig, x as BitPersistMetadata, y as BitPersistMode, z as BitPersistStorageAdapter, A as BitPlugin, C as BitPluginContext, D as BitPluginErrorEvent, E as BitPluginHooks, F as BitScheduler, G as BitState, H as BitSubmitResult, I as BitTouched, J as BitTransformFn, K as BitValidationConfig, L as DeepPartial, M as DevToolsOptions, S as ScopeStatus, V as ValidateScopeResult, N as ValidatorFn } from '../types-SOg9xEce.cjs';
6
+ export { b as bitBus, c as createBitBus } from '../bus-WOHGxuVy.cjs';
7
+ import '../types-D8DgIUhJ.cjs';
8
+
9
+ /**
10
+ * Extracts the `read` slice from a BitStore instance.
11
+ *
12
+ * Use this to pass a read-only API to utility functions and services.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * function useFormValidation(read: BitStoreReadSliceApi<MyForm>) {
17
+ * const isValid = read.getIsValid();
18
+ * // ...
19
+ * }
20
+ *
21
+ * useFormValidation(extractReadSlice(store));
22
+ * ```
23
+ */
24
+ declare function extractReadSlice<T extends object>(store: BitStoreApi<T>): BitStoreReadSliceApi<T>;
25
+ /**
26
+ * Extracts the `observe` slice from a BitStore instance.
27
+ *
28
+ * Use this to pass an observation-only API to framework hooks and subscriptions.
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * function useFormSubscribe(observe: BitStoreObserveSliceApi<MyForm>) {
33
+ * useEffect(() => observe.subscribe(handler), [observe]);
34
+ * }
35
+ *
36
+ * useFormSubscribe(extractObserveSlice(store));
37
+ * ```
38
+ */
39
+ declare function extractObserveSlice<T extends object>(store: BitStoreApi<T>): BitStoreObserveSliceApi<T>;
40
+ /**
41
+ * Extracts the `write` slice from a BitStore instance.
42
+ *
43
+ * Use this to pass a write-only API for form mutations.
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * function useFormActions(write: BitStoreWriteSliceApi<MyForm>) {
48
+ * const handleChange = (path: string, value: any) => {
49
+ * write.setField(path, value);
50
+ * };
51
+ * }
52
+ *
53
+ * useFormActions(extractWriteSlice(store));
54
+ * ```
55
+ */
56
+ declare function extractWriteSlice<T extends object>(store: BitStoreApi<T>): BitStoreWriteSliceApi<T>;
57
+ /**
58
+ * Extracts the `feature` slice from a BitStore instance.
59
+ *
60
+ * Use this to pass feature-specific APIs (validation, history, persistence, etc.)
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * function useFormValidation(feature: BitStoreFeatureApi<MyForm>) {
65
+ * const isValid = await feature.validate();
66
+ * }
67
+ *
68
+ * useFormValidation(extractFeatureSlice(store));
69
+ * ```
70
+ */
71
+ declare function extractFeatureSlice<T extends object>(store: BitStoreApi<T>): BitStoreFeatureApi<T>;
72
+ /**
73
+ * Extracts multiple slices at once for convenience.
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * const [readApi, writeApi] = extractSlices(store, ["read", "write"]);
78
+ * ```
79
+ */
80
+ declare function extractSlices<T extends object, K extends (keyof BitStoreApi<T>)[]>(store: BitStoreApi<T>, keys: readonly [...K]): {
81
+ [P in K[number]]: BitStoreApi<T>[P];
82
+ };
83
+
84
+ export { BitStoreApi, extractFeatureSlice, extractObserveSlice, extractReadSlice, extractSlices, extractWriteSlice };