@lehnihon/bit-form 2.2.1 → 2.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/dist/angular/index.cjs +1 -1
  2. package/dist/angular/index.cjs.map +1 -1
  3. package/dist/angular/index.d.cts +31 -38
  4. package/dist/angular/index.d.ts +31 -38
  5. package/dist/angular/index.js +1 -1
  6. package/dist/angular/index.js.map +1 -1
  7. package/dist/bus-B1my-s_o.d.ts +16 -0
  8. package/dist/bus-BI29cKpD.d.cts +16 -0
  9. package/dist/chunk-2UVV7SU4.js +2 -0
  10. package/dist/chunk-2UVV7SU4.js.map +1 -0
  11. package/dist/chunk-676WXU4S.cjs +2 -0
  12. package/dist/chunk-676WXU4S.cjs.map +1 -0
  13. package/dist/chunk-7MBRAKBL.js +2 -0
  14. package/dist/chunk-7MBRAKBL.js.map +1 -0
  15. package/dist/chunk-AD7T42HJ.js +1 -0
  16. package/dist/chunk-AD7T42HJ.js.map +1 -0
  17. package/dist/chunk-C4BYXZGB.cjs +1 -0
  18. package/dist/chunk-C4BYXZGB.cjs.map +1 -0
  19. package/dist/chunk-ER2DNS7T.cjs +2 -0
  20. package/dist/chunk-ER2DNS7T.cjs.map +1 -0
  21. package/dist/chunk-NWPA4F3B.cjs +2 -0
  22. package/dist/chunk-NWPA4F3B.cjs.map +1 -0
  23. package/dist/chunk-O5RRLZR7.js +2 -0
  24. package/dist/chunk-O5RRLZR7.js.map +1 -0
  25. package/dist/chunk-TRPMTJ35.js +2 -0
  26. package/dist/chunk-TRPMTJ35.js.map +1 -0
  27. package/dist/chunk-VSWCUQAF.cjs +2 -0
  28. package/dist/chunk-VSWCUQAF.cjs.map +1 -0
  29. package/dist/cli/index.cjs +3 -3
  30. package/dist/core/light.cjs +2 -0
  31. package/dist/core/light.cjs.map +1 -0
  32. package/dist/core/light.d.cts +29 -0
  33. package/dist/core/light.d.ts +29 -0
  34. package/dist/core/light.js +2 -0
  35. package/dist/core/light.js.map +1 -0
  36. package/dist/devtools/bridge.cjs +1 -1
  37. package/dist/devtools/bridge.cjs.map +1 -1
  38. package/dist/devtools/bridge.js +1 -1
  39. package/dist/devtools/bridge.js.map +1 -1
  40. package/dist/devtools/index.cjs +132 -1
  41. package/dist/devtools/index.cjs.map +1 -1
  42. package/dist/devtools/index.js +132 -1
  43. package/dist/devtools/index.js.map +1 -1
  44. package/dist/index.cjs +1 -1
  45. package/dist/index.cjs.map +1 -1
  46. package/dist/index.d.cts +19 -53
  47. package/dist/index.d.ts +19 -53
  48. package/dist/index.js +1 -1
  49. package/dist/{public-types-Lq3eLstW.d.ts → public-types-Bl94ECPb.d.ts} +11 -19
  50. package/dist/{public-types-CtYuIAMP.d.cts → public-types-CLIDR8aC.d.cts} +11 -19
  51. package/dist/react/index.cjs +1 -1
  52. package/dist/react/index.cjs.map +1 -1
  53. package/dist/react/index.d.cts +6 -5
  54. package/dist/react/index.d.ts +6 -5
  55. package/dist/react/index.js +1 -1
  56. package/dist/react/index.js.map +1 -1
  57. package/dist/react-native/index.cjs +1 -1
  58. package/dist/react-native/index.cjs.map +1 -1
  59. package/dist/react-native/index.d.cts +5 -4
  60. package/dist/react-native/index.d.ts +5 -4
  61. package/dist/react-native/index.js +1 -1
  62. package/dist/react-native/index.js.map +1 -1
  63. package/dist/resolvers/joi.cjs +1 -1
  64. package/dist/resolvers/joi.cjs.map +1 -1
  65. package/dist/resolvers/joi.d.cts +4 -4
  66. package/dist/resolvers/joi.d.ts +4 -4
  67. package/dist/resolvers/joi.js +1 -1
  68. package/dist/resolvers/joi.js.map +1 -1
  69. package/dist/resolvers/types.cjs +1 -0
  70. package/dist/resolvers/types.cjs.map +1 -0
  71. package/dist/resolvers/types.d.cts +16 -0
  72. package/dist/resolvers/types.d.ts +16 -0
  73. package/dist/resolvers/types.js +1 -0
  74. package/dist/resolvers/types.js.map +1 -0
  75. package/dist/resolvers/yup.cjs +1 -1
  76. package/dist/resolvers/yup.cjs.map +1 -1
  77. package/dist/resolvers/yup.d.cts +4 -4
  78. package/dist/resolvers/yup.d.ts +4 -4
  79. package/dist/resolvers/yup.js +1 -1
  80. package/dist/resolvers/yup.js.map +1 -1
  81. package/dist/resolvers/zod.cjs +1 -1
  82. package/dist/resolvers/zod.cjs.map +1 -1
  83. package/dist/resolvers/zod.d.cts +4 -4
  84. package/dist/resolvers/zod.d.ts +4 -4
  85. package/dist/resolvers/zod.js +1 -1
  86. package/dist/resolvers/zod.js.map +1 -1
  87. package/dist/{bus-B3pGaiFZ.d.cts → types-DqeN9Kq_.d.cts} +6 -16
  88. package/dist/{bus-B3pGaiFZ.d.ts → types-DqeN9Kq_.d.ts} +6 -16
  89. package/dist/{use-bit-persist-hxJaKG2S.d.ts → use-bit-persist-BgFBg8lQ.d.cts} +37 -43
  90. package/dist/{use-bit-persist-CWzGfovL.d.cts → use-bit-persist-JtinX6Vy.d.ts} +37 -43
  91. package/dist/vue/index.cjs +1 -1
  92. package/dist/vue/index.cjs.map +1 -1
  93. package/dist/vue/index.d.cts +31 -38
  94. package/dist/vue/index.d.ts +31 -38
  95. package/dist/vue/index.js +1 -1
  96. package/dist/vue/index.js.map +1 -1
  97. package/package.json +7 -1
  98. package/dist/chunk-442A4FTZ.cjs +0 -2
  99. package/dist/chunk-442A4FTZ.cjs.map +0 -1
  100. package/dist/chunk-6FJEE6O3.js +0 -133
  101. package/dist/chunk-6FJEE6O3.js.map +0 -1
  102. package/dist/chunk-FOV24ACZ.js +0 -2
  103. package/dist/chunk-FOV24ACZ.js.map +0 -1
  104. package/dist/chunk-YWXX6XRV.cjs +0 -133
  105. package/dist/chunk-YWXX6XRV.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/devtools/index.cjs"],"names":[],"mappings":"AAAA,kIAAyC,2CAA0B","file":"/home/runner/work/bit-form/bit-form/dist/devtools/index.cjs"}
1
+ {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/devtools/index.cjs","../../src/devtools/ui/styles.ts","../../src/devtools/ui/index.ts","../../src/devtools/adapters/local.ts","../../src/devtools/adapters/remote.ts"],"names":["getDevToolsCSS","BitFormDevToolsUI","container","actions","style","target","btn","action","storeId","storesState","storeEntries","panelHtml","id","state","hasErrors","meta","currentStep","totalSteps","triggerHtml","setupLocalDevTools","ui","bitBus","getFullSnapshot","states","instance","storeInstance","historyMeta","unsubscribe","setupRemoteDevTools","url","socket","sendMessage","message","sendAction"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/devtools/index.cjs","sourcesContent":[null,"export function getDevToolsCSS(): string {\n return `\n .bit-devtools-container {\n position: fixed;\n bottom: 20px;\n right: 20px;\n z-index: 9999;\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n }\n\n .bit-devtools-trigger {\n background: #10b981;\n color: #fff;\n border: none;\n border-radius: 50%;\n width: 48px;\n height: 48px;\n cursor: pointer;\n box-shadow: 0 4px 12px rgba(16, 185, 129, 0.4);\n font-weight: bold;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.2s;\n font-size: 16px;\n margin-top: 16px;\n }\n .bit-devtools-trigger:hover { transform: scale(1.05); }\n\n .bit-devtools-panel {\n width: 450px;\n max-height: 80vh;\n background: #0f172a;\n color: #f8fafc;\n border-radius: 8px;\n padding: 16px;\n overflow-y: auto;\n box-shadow: 0 20px 25px -5px rgba(0,0,0,0.5), 0 8px 10px -6px rgba(0,0,0,0.5);\n border: 1px solid #334155;\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n .bit-devtools-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-bottom: 12px;\n border-bottom: 1px solid #1e293b;\n }\n .bit-devtools-header h2 { margin: 0; font-size: 16px; display: flex; align-items: center; gap: 8px; }\n\n .bit-store-block {\n background: #1e293b;\n border-radius: 6px;\n padding: 12px;\n border: 1px solid #334155;\n }\n\n .bit-store-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n }\n .bit-store-title { margin: 0; color: #38bdf8; font-size: 14px; font-weight: bold; }\n\n .bit-badge-group { display: flex; gap: 6px; flex-wrap: wrap; }\n .bit-badge { font-size: 10px; padding: 2px 6px; border-radius: 4px; text-transform: uppercase; font-weight: bold; }\n .badge-success { background: rgba(16, 185, 129, 0.2); color: #34d399; border: 1px solid rgba(16, 185, 129, 0.2); }\n .badge-error { background: rgba(239, 68, 68, 0.2); color: #f87171; border: 1px solid rgba(239, 68, 68, 0.2); }\n .badge-warn { background: rgba(245, 158, 11, 0.2); color: #fbbf24; border: 1px solid rgba(245, 158, 11, 0.2); }\n .badge-info { background: rgba(56, 189, 248, 0.2); color: #7dd3fc; border: 1px solid rgba(56, 189, 248, 0.2); }\n\n .bit-section-title { font-size: 11px; color: #94a3b8; text-transform: uppercase; letter-spacing: 1px; margin: 12px 0 4px 0; display: block; }\n\n .bit-controls { display: flex; gap: 6px; margin-bottom: 12px; background: #0f172a; padding: 8px; border-radius: 6px; }\n .bit-action-btn { flex: 1; background: #334155; color: #e2e8f0; border: 1px solid #475569; padding: 6px 0; border-radius: 4px; cursor: pointer; font-size: 11px; display: flex; align-items: center; justify-content: center; gap: 4px; transition: all 0.2s; }\n .bit-action-btn:hover:not(:disabled) { background: #475569; }\n .bit-action-btn:disabled { opacity: 0.5; cursor: not-allowed; }\n .bit-btn-reset { color: #fca5a5; border-color: rgba(239,68,68,0.3); }\n .bit-btn-reset:hover { background: rgba(239,68,68,0.1) !important; }\n\n pre.bit-pre { background: #020617; padding: 10px; border-radius: 4px; font-size: 11px; overflow-x: auto; border: 1px solid #1e293b; margin: 0; color: #e2e8f0; }\n pre.bit-error-box { background: rgba(239, 68, 68, 0.05); padding: 10px; border-radius: 4px; font-size: 11px; border: 1px dashed #ef4444; color: #fca5a5; margin: 0; overflow-x: auto; }\n `;\n}\n","import { getDevToolsCSS } from \"./styles\";\nimport type { DevToolsActions } from \"../types\";\n\nexport type { DevToolsActions };\n\nexport class BitFormDevToolsUI {\n private container: HTMLElement;\n private actions: DevToolsActions;\n private rootElement: HTMLDivElement;\n private currentStoresState: Record<string, any> = {};\n private isOpen: boolean = false;\n\n constructor(container: HTMLElement, actions: DevToolsActions) {\n this.container = container;\n this.actions = actions;\n\n if (!document.getElementById(\"bit-devtools-styles\")) {\n const style = document.createElement(\"style\");\n style.id = \"bit-devtools-styles\";\n style.textContent = getDevToolsCSS();\n document.head.appendChild(style);\n }\n\n this.rootElement = document.createElement(\"div\");\n this.rootElement.className = \"bit-devtools-container\";\n this.container.appendChild(this.rootElement);\n\n this.rootElement.addEventListener(\"click\", (e) => {\n const target = e.target as HTMLElement;\n\n // Evento do botão flutuante\n if (target.closest(\".bit-devtools-trigger\")) {\n this.isOpen = !this.isOpen;\n this.render();\n return;\n }\n\n // Eventos dos botões de ação\n const btn = target.closest(\".bit-action-btn\");\n if (btn && !btn.hasAttribute(\"disabled\")) {\n const action = btn.getAttribute(\"data-action\");\n const storeId = btn.getAttribute(\"data-store\");\n\n if (action && storeId) {\n if (action === \"undo\") this.actions.onUndo(storeId);\n if (action === \"redo\") this.actions.onRedo(storeId);\n if (action === \"reset\") this.actions.onReset(storeId);\n }\n }\n });\n }\n\n public updateState(storesState: Record<string, any>) {\n this.currentStoresState = storesState;\n this.render();\n }\n\n private render() {\n const storeEntries = Object.entries(this.currentStoresState);\n if (storeEntries.length === 0) {\n this.rootElement.innerHTML = \"\";\n return;\n }\n\n let panelHtml = \"\";\n\n if (this.isOpen) {\n panelHtml = `\n <div class=\"bit-devtools-panel\">\n <div class=\"bit-devtools-header\">\n <h2><span style=\"font-size: 20px;\">🛠</span> Bit-Form DevTools</h2>\n <span style=\"font-size: 11px; color: #64748b;\">v1.0.0</span>\n </div>\n `;\n\n for (const [id, state] of storeEntries) {\n const hasErrors = Object.keys(state.errors || {}).length > 0;\n\n // Lemos os metadados do histórico que o adaptador injetou\n const meta = state._meta || {\n totalSteps: 0,\n currentIndex: -1,\n canUndo: false,\n canRedo: false,\n };\n const currentStep = meta.currentIndex + 1;\n const totalSteps = meta.totalSteps;\n\n panelHtml += `\n <div class=\"bit-store-block\">\n <div class=\"bit-store-header\">\n <h3 class=\"bit-store-title\">${id}</h3>\n <div class=\"bit-badge-group\">\n <span class=\"bit-badge ${state.isValid ? \"badge-success\" : \"badge-error\"}\">\n ${state.isValid ? \"✓ Valid\" : \"✕ Invalid\"}\n </span>\n ${state.isDirty ? `<span class=\"bit-badge badge-warn\">Dirty</span>` : \"\"}\n ${state.isSubmitting ? `<span class=\"bit-badge badge-info\">⏳ Submitting</span>` : \"\"}\n </div>\n </div>\n\n <span class=\"bit-section-title\">Time Travel (${currentStep}/${totalSteps})</span>\n \n <div class=\"bit-controls\">\n <button class=\"bit-action-btn\" data-action=\"undo\" data-store=\"${id}\" ${meta.canUndo ? \"\" : \"disabled\"}>\n <span>↺</span> Undo\n </button>\n <button class=\"bit-action-btn\" data-action=\"redo\" data-store=\"${id}\" ${meta.canRedo ? \"\" : \"disabled\"}>\n <span>↻</span> Redo\n </button>\n <button class=\"bit-action-btn bit-btn-reset\" data-action=\"reset\" data-store=\"${id}\">\n <span>🗑</span> Reset\n </button>\n </div>\n `;\n\n if (hasErrors) {\n panelHtml += `\n <span class=\"bit-section-title\" style=\"color: #f87171;\">⚠️ Validations Failing</span>\n <pre class=\"bit-error-box\">${JSON.stringify(state.errors, null, 2)}</pre>\n `;\n }\n\n panelHtml += `\n <span class=\"bit-section-title\">Values</span>\n <pre class=\"bit-pre\">${JSON.stringify(state.values, null, 2)}</pre>\n </div>\n `;\n }\n\n panelHtml += `</div>`;\n }\n\n // Botão Flutuante (sempre renderizado)\n const triggerHtml = `\n <button class=\"bit-devtools-trigger\" style=\"transform: ${this.isOpen ? \"scale(0.9)\" : \"scale(1)\"};\" title=\"Abrir DevTools\">\n ${this.isOpen ? \"✖\" : \"Bit\"}\n </button>\n `;\n\n this.rootElement.innerHTML = panelHtml + triggerHtml;\n }\n}\n","import { bitBus } from \"../../core\";\nimport type { BitStore } from \"../../core/store\";\nimport { BitFormDevToolsUI } from \"../ui\";\n\nexport function setupLocalDevTools(container: HTMLElement) {\n const ui = new BitFormDevToolsUI(container, {\n onUndo: (id) => (bitBus.stores[id] as BitStore<any>)?.undo(),\n onRedo: (id) => (bitBus.stores[id] as BitStore<any>)?.redo(),\n onReset: (id) => (bitBus.stores[id] as BitStore<any>)?.reset(),\n });\n\n const getFullSnapshot = () => {\n const states: Record<string, any> = {};\n\n for (const [id, instance] of Object.entries(bitBus.stores)) {\n const storeInstance = instance as any;\n const state = storeInstance.getState();\n\n const historyMeta = storeInstance?.getHistoryMetadata?.() || {\n enabled: false,\n canUndo: false,\n canRedo: false,\n historyIndex: -1,\n historySize: 0,\n };\n\n states[id] = {\n ...state,\n _meta: {\n canUndo: historyMeta.canUndo,\n canRedo: historyMeta.canRedo,\n totalSteps: historyMeta.historySize,\n currentIndex: historyMeta.historyIndex,\n },\n };\n }\n return states;\n };\n\n ui.updateState(getFullSnapshot());\n\n const unsubscribe = bitBus.subscribe(() => {\n ui.updateState(getFullSnapshot());\n });\n\n return {\n ui,\n destroy: () => {\n unsubscribe();\n container.innerHTML = \"\";\n },\n };\n}\n","import { BitFormDevToolsUI } from \"../ui\";\nimport type {\n DevToolsActionMessage,\n DevToolsActionName,\n DevToolsRemoteMessage,\n DevToolsStateUpdateMessage,\n} from \"../types\";\n\nexport function setupRemoteDevTools(\n container: HTMLElement,\n url: string = \"ws://localhost:3000\",\n) {\n const socket = new WebSocket(url);\n\n const sendMessage = (message: DevToolsRemoteMessage) => {\n if (socket.readyState === WebSocket.OPEN) {\n socket.send(JSON.stringify(message));\n } else {\n console.warn(\n \"[bit-form] Tentativa de envio falhou. WebSocket não está aberto.\",\n );\n }\n };\n\n const sendAction = (storeId: string, action: DevToolsActionName) => {\n const message: DevToolsActionMessage = {\n type: \"ACTION\",\n payload: { storeId, action },\n };\n sendMessage(message);\n };\n\n const ui = new BitFormDevToolsUI(container, {\n onUndo: (id) => sendAction(id, \"undo\"),\n onRedo: (id) => sendAction(id, \"redo\"),\n onReset: (id) => sendAction(id, \"reset\"),\n });\n\n socket.addEventListener(\"open\", () => {\n console.log(`[bit-form] Conectado ao DevTools remoto em ${url}`);\n });\n\n socket.addEventListener(\"message\", (msg: MessageEvent) => {\n try {\n const data = JSON.parse(msg.data) as DevToolsRemoteMessage;\n if (data.type === \"STATE_UPDATE\") {\n ui.updateState((data as DevToolsStateUpdateMessage).payload);\n }\n } catch (e) {\n console.error(\"[bit-form] Erro ao processar mensagem do WebSocket:\", e);\n }\n });\n\n socket.addEventListener(\"error\", (err) => {\n console.error(\"[bit-form] Erro na conexão do DevTools remoto:\", err);\n });\n\n return {\n ui,\n destroy: () => {\n if (\n socket.readyState === WebSocket.OPEN ||\n socket.readyState === WebSocket.CONNECTING\n ) {\n socket.close();\n }\n container.innerHTML = \"\";\n },\n };\n}\n"]}
@@ -1,2 +1,133 @@
1
- import{V as a}from"../chunk-6FJEE6O3.js";export{a as initDevTools};
1
+ import"../chunk-AD7T42HJ.js";import{a as d}from"../chunk-2UVV7SU4.js";function b(){return`
2
+ .bit-devtools-container {
3
+ position: fixed;
4
+ bottom: 20px;
5
+ right: 20px;
6
+ z-index: 9999;
7
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
8
+ display: flex;
9
+ flex-direction: column;
10
+ align-items: flex-end;
11
+ }
12
+
13
+ .bit-devtools-trigger {
14
+ background: #10b981;
15
+ color: #fff;
16
+ border: none;
17
+ border-radius: 50%;
18
+ width: 48px;
19
+ height: 48px;
20
+ cursor: pointer;
21
+ box-shadow: 0 4px 12px rgba(16, 185, 129, 0.4);
22
+ font-weight: bold;
23
+ display: flex;
24
+ align-items: center;
25
+ justify-content: center;
26
+ transition: transform 0.2s;
27
+ font-size: 16px;
28
+ margin-top: 16px;
29
+ }
30
+ .bit-devtools-trigger:hover { transform: scale(1.05); }
31
+
32
+ .bit-devtools-panel {
33
+ width: 450px;
34
+ max-height: 80vh;
35
+ background: #0f172a;
36
+ color: #f8fafc;
37
+ border-radius: 8px;
38
+ padding: 16px;
39
+ overflow-y: auto;
40
+ box-shadow: 0 20px 25px -5px rgba(0,0,0,0.5), 0 8px 10px -6px rgba(0,0,0,0.5);
41
+ border: 1px solid #334155;
42
+ display: flex;
43
+ flex-direction: column;
44
+ gap: 16px;
45
+ }
46
+
47
+ .bit-devtools-header {
48
+ display: flex;
49
+ justify-content: space-between;
50
+ align-items: center;
51
+ padding-bottom: 12px;
52
+ border-bottom: 1px solid #1e293b;
53
+ }
54
+ .bit-devtools-header h2 { margin: 0; font-size: 16px; display: flex; align-items: center; gap: 8px; }
55
+
56
+ .bit-store-block {
57
+ background: #1e293b;
58
+ border-radius: 6px;
59
+ padding: 12px;
60
+ border: 1px solid #334155;
61
+ }
62
+
63
+ .bit-store-header {
64
+ display: flex;
65
+ justify-content: space-between;
66
+ align-items: center;
67
+ margin-bottom: 12px;
68
+ }
69
+ .bit-store-title { margin: 0; color: #38bdf8; font-size: 14px; font-weight: bold; }
70
+
71
+ .bit-badge-group { display: flex; gap: 6px; flex-wrap: wrap; }
72
+ .bit-badge { font-size: 10px; padding: 2px 6px; border-radius: 4px; text-transform: uppercase; font-weight: bold; }
73
+ .badge-success { background: rgba(16, 185, 129, 0.2); color: #34d399; border: 1px solid rgba(16, 185, 129, 0.2); }
74
+ .badge-error { background: rgba(239, 68, 68, 0.2); color: #f87171; border: 1px solid rgba(239, 68, 68, 0.2); }
75
+ .badge-warn { background: rgba(245, 158, 11, 0.2); color: #fbbf24; border: 1px solid rgba(245, 158, 11, 0.2); }
76
+ .badge-info { background: rgba(56, 189, 248, 0.2); color: #7dd3fc; border: 1px solid rgba(56, 189, 248, 0.2); }
77
+
78
+ .bit-section-title { font-size: 11px; color: #94a3b8; text-transform: uppercase; letter-spacing: 1px; margin: 12px 0 4px 0; display: block; }
79
+
80
+ .bit-controls { display: flex; gap: 6px; margin-bottom: 12px; background: #0f172a; padding: 8px; border-radius: 6px; }
81
+ .bit-action-btn { flex: 1; background: #334155; color: #e2e8f0; border: 1px solid #475569; padding: 6px 0; border-radius: 4px; cursor: pointer; font-size: 11px; display: flex; align-items: center; justify-content: center; gap: 4px; transition: all 0.2s; }
82
+ .bit-action-btn:hover:not(:disabled) { background: #475569; }
83
+ .bit-action-btn:disabled { opacity: 0.5; cursor: not-allowed; }
84
+ .bit-btn-reset { color: #fca5a5; border-color: rgba(239,68,68,0.3); }
85
+ .bit-btn-reset:hover { background: rgba(239,68,68,0.1) !important; }
86
+
87
+ pre.bit-pre { background: #020617; padding: 10px; border-radius: 4px; font-size: 11px; overflow-x: auto; border: 1px solid #1e293b; margin: 0; color: #e2e8f0; }
88
+ pre.bit-error-box { background: rgba(239, 68, 68, 0.05); padding: 10px; border-radius: 4px; font-size: 11px; border: 1px dashed #ef4444; color: #fca5a5; margin: 0; overflow-x: auto; }
89
+ `}var c=class{container;actions;rootElement;currentStoresState={};isOpen=!1;constructor(i,r){if(this.container=i,this.actions=r,!document.getElementById("bit-devtools-styles")){let e=document.createElement("style");e.id="bit-devtools-styles",e.textContent=b(),document.head.appendChild(e)}this.rootElement=document.createElement("div"),this.rootElement.className="bit-devtools-container",this.container.appendChild(this.rootElement),this.rootElement.addEventListener("click",e=>{let s=e.target;if(s.closest(".bit-devtools-trigger")){this.isOpen=!this.isOpen,this.render();return}let t=s.closest(".bit-action-btn");if(t&&!t.hasAttribute("disabled")){let o=t.getAttribute("data-action"),n=t.getAttribute("data-store");o&&n&&(o==="undo"&&this.actions.onUndo(n),o==="redo"&&this.actions.onRedo(n),o==="reset"&&this.actions.onReset(n))}})}updateState(i){this.currentStoresState=i,this.render()}render(){let i=Object.entries(this.currentStoresState);if(i.length===0){this.rootElement.innerHTML="";return}let r="";if(this.isOpen){r=`
90
+ <div class="bit-devtools-panel">
91
+ <div class="bit-devtools-header">
92
+ <h2><span style="font-size: 20px;">\u{1F6E0}</span> Bit-Form DevTools</h2>
93
+ <span style="font-size: 11px; color: #64748b;">v1.0.0</span>
94
+ </div>
95
+ `;for(let[s,t]of i){let o=Object.keys(t.errors||{}).length>0,n=t._meta||{totalSteps:0,currentIndex:-1,canUndo:!1,canRedo:!1},p=n.currentIndex+1,l=n.totalSteps;r+=`
96
+ <div class="bit-store-block">
97
+ <div class="bit-store-header">
98
+ <h3 class="bit-store-title">${s}</h3>
99
+ <div class="bit-badge-group">
100
+ <span class="bit-badge ${t.isValid?"badge-success":"badge-error"}">
101
+ ${t.isValid?"\u2713 Valid":"\u2715 Invalid"}
102
+ </span>
103
+ ${t.isDirty?'<span class="bit-badge badge-warn">Dirty</span>':""}
104
+ ${t.isSubmitting?'<span class="bit-badge badge-info">\u23F3 Submitting</span>':""}
105
+ </div>
106
+ </div>
107
+
108
+ <span class="bit-section-title">Time Travel (${p}/${l})</span>
109
+
110
+ <div class="bit-controls">
111
+ <button class="bit-action-btn" data-action="undo" data-store="${s}" ${n.canUndo?"":"disabled"}>
112
+ <span>\u21BA</span> Undo
113
+ </button>
114
+ <button class="bit-action-btn" data-action="redo" data-store="${s}" ${n.canRedo?"":"disabled"}>
115
+ <span>\u21BB</span> Redo
116
+ </button>
117
+ <button class="bit-action-btn bit-btn-reset" data-action="reset" data-store="${s}">
118
+ <span>\u{1F5D1}</span> Reset
119
+ </button>
120
+ </div>
121
+ `,o&&(r+=`
122
+ <span class="bit-section-title" style="color: #f87171;">\u26A0\uFE0F Validations Failing</span>
123
+ <pre class="bit-error-box">${JSON.stringify(t.errors,null,2)}</pre>
124
+ `),r+=`
125
+ <span class="bit-section-title">Values</span>
126
+ <pre class="bit-pre">${JSON.stringify(t.values,null,2)}</pre>
127
+ </div>
128
+ `}r+="</div>"}let e=`
129
+ <button class="bit-devtools-trigger" style="transform: ${this.isOpen?"scale(0.9)":"scale(1)"};" title="Abrir DevTools">
130
+ ${this.isOpen?"\u2716":"Bit"}
131
+ </button>
132
+ `;this.rootElement.innerHTML=r+e}};function g(a){let i=new c(a,{onUndo:s=>d.stores[s]?.undo(),onRedo:s=>d.stores[s]?.redo(),onReset:s=>d.stores[s]?.reset()}),r=()=>{let s={};for(let[t,o]of Object.entries(d.stores)){let n=o,p=n.getState(),l=n?.getHistoryMetadata?.()||{enabled:!1,canUndo:!1,canRedo:!1,historyIndex:-1,historySize:0};s[t]={...p,_meta:{canUndo:l.canUndo,canRedo:l.canRedo,totalSteps:l.historySize,currentIndex:l.historyIndex}}}return s};i.updateState(r());let e=d.subscribe(()=>{i.updateState(r())});return{ui:i,destroy:()=>{e(),a.innerHTML=""}}}function f(a,i="ws://localhost:3000"){let r=new WebSocket(i),e=o=>{r.readyState===WebSocket.OPEN?r.send(JSON.stringify(o)):console.warn("[bit-form] Tentativa de envio falhou. WebSocket n\xE3o est\xE1 aberto.")},s=(o,n)=>{e({type:"ACTION",payload:{storeId:o,action:n}})},t=new c(a,{onUndo:o=>s(o,"undo"),onRedo:o=>s(o,"redo"),onReset:o=>s(o,"reset")});return r.addEventListener("open",()=>{console.log(`[bit-form] Conectado ao DevTools remoto em ${i}`)}),r.addEventListener("message",o=>{try{let n=JSON.parse(o.data);n.type==="STATE_UPDATE"&&t.updateState(n.payload)}catch(n){console.error("[bit-form] Erro ao processar mensagem do WebSocket:",n)}}),r.addEventListener("error",o=>{console.error("[bit-form] Erro na conex\xE3o do DevTools remoto:",o)}),{ui:t,destroy:()=>{(r.readyState===WebSocket.OPEN||r.readyState===WebSocket.CONNECTING)&&r.close(),a.innerHTML=""}}}function m(a={}){let{mode:i="local",url:r}=a,e,s=!1;if(typeof a.container=="string"){let o=document.querySelector(a.container);if(!o)throw new Error(`[bit-form] Container '${a.container}' n\xE3o encontrado na p\xE1gina.`);e=o}else a.container instanceof HTMLElement?e=a.container:(e=document.createElement("div"),e.id="bit-form-devtools-root",e.style.position="fixed",e.style.bottom="20px",e.style.right="20px",e.style.zIndex="9999",e.style.maxHeight="80vh",e.style.overflowY="auto",e.style.boxShadow="0 10px 25px rgba(0,0,0,0.1)",document.body.appendChild(e),s=!0);let t;if(i==="local")console.log("[bit-form] DevTools iniciado em modo Local."),t=g(e);else if(i==="remote")console.log("[bit-form] DevTools iniciado em modo Remote."),t=f(e,r);else throw new Error(`[bit-form] Modo DevTools inv\xE1lido: ${i}`);return{...t,destroy:()=>{t&&typeof t.destroy=="function"&&t.destroy(),s&&e.parentNode?e.parentNode.removeChild(e):e.innerHTML=""}}}export{m as initDevTools};
2
133
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
1
+ {"version":3,"sources":["../../src/devtools/ui/styles.ts","../../src/devtools/ui/index.ts","../../src/devtools/adapters/local.ts","../../src/devtools/adapters/remote.ts","../../src/devtools/init-dev-tools.ts"],"sourcesContent":["export function getDevToolsCSS(): string {\n return `\n .bit-devtools-container {\n position: fixed;\n bottom: 20px;\n right: 20px;\n z-index: 9999;\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n }\n\n .bit-devtools-trigger {\n background: #10b981;\n color: #fff;\n border: none;\n border-radius: 50%;\n width: 48px;\n height: 48px;\n cursor: pointer;\n box-shadow: 0 4px 12px rgba(16, 185, 129, 0.4);\n font-weight: bold;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.2s;\n font-size: 16px;\n margin-top: 16px;\n }\n .bit-devtools-trigger:hover { transform: scale(1.05); }\n\n .bit-devtools-panel {\n width: 450px;\n max-height: 80vh;\n background: #0f172a;\n color: #f8fafc;\n border-radius: 8px;\n padding: 16px;\n overflow-y: auto;\n box-shadow: 0 20px 25px -5px rgba(0,0,0,0.5), 0 8px 10px -6px rgba(0,0,0,0.5);\n border: 1px solid #334155;\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n .bit-devtools-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-bottom: 12px;\n border-bottom: 1px solid #1e293b;\n }\n .bit-devtools-header h2 { margin: 0; font-size: 16px; display: flex; align-items: center; gap: 8px; }\n\n .bit-store-block {\n background: #1e293b;\n border-radius: 6px;\n padding: 12px;\n border: 1px solid #334155;\n }\n\n .bit-store-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n }\n .bit-store-title { margin: 0; color: #38bdf8; font-size: 14px; font-weight: bold; }\n\n .bit-badge-group { display: flex; gap: 6px; flex-wrap: wrap; }\n .bit-badge { font-size: 10px; padding: 2px 6px; border-radius: 4px; text-transform: uppercase; font-weight: bold; }\n .badge-success { background: rgba(16, 185, 129, 0.2); color: #34d399; border: 1px solid rgba(16, 185, 129, 0.2); }\n .badge-error { background: rgba(239, 68, 68, 0.2); color: #f87171; border: 1px solid rgba(239, 68, 68, 0.2); }\n .badge-warn { background: rgba(245, 158, 11, 0.2); color: #fbbf24; border: 1px solid rgba(245, 158, 11, 0.2); }\n .badge-info { background: rgba(56, 189, 248, 0.2); color: #7dd3fc; border: 1px solid rgba(56, 189, 248, 0.2); }\n\n .bit-section-title { font-size: 11px; color: #94a3b8; text-transform: uppercase; letter-spacing: 1px; margin: 12px 0 4px 0; display: block; }\n\n .bit-controls { display: flex; gap: 6px; margin-bottom: 12px; background: #0f172a; padding: 8px; border-radius: 6px; }\n .bit-action-btn { flex: 1; background: #334155; color: #e2e8f0; border: 1px solid #475569; padding: 6px 0; border-radius: 4px; cursor: pointer; font-size: 11px; display: flex; align-items: center; justify-content: center; gap: 4px; transition: all 0.2s; }\n .bit-action-btn:hover:not(:disabled) { background: #475569; }\n .bit-action-btn:disabled { opacity: 0.5; cursor: not-allowed; }\n .bit-btn-reset { color: #fca5a5; border-color: rgba(239,68,68,0.3); }\n .bit-btn-reset:hover { background: rgba(239,68,68,0.1) !important; }\n\n pre.bit-pre { background: #020617; padding: 10px; border-radius: 4px; font-size: 11px; overflow-x: auto; border: 1px solid #1e293b; margin: 0; color: #e2e8f0; }\n pre.bit-error-box { background: rgba(239, 68, 68, 0.05); padding: 10px; border-radius: 4px; font-size: 11px; border: 1px dashed #ef4444; color: #fca5a5; margin: 0; overflow-x: auto; }\n `;\n}\n","import { getDevToolsCSS } from \"./styles\";\nimport type { DevToolsActions } from \"../types\";\n\nexport type { DevToolsActions };\n\nexport class BitFormDevToolsUI {\n private container: HTMLElement;\n private actions: DevToolsActions;\n private rootElement: HTMLDivElement;\n private currentStoresState: Record<string, any> = {};\n private isOpen: boolean = false;\n\n constructor(container: HTMLElement, actions: DevToolsActions) {\n this.container = container;\n this.actions = actions;\n\n if (!document.getElementById(\"bit-devtools-styles\")) {\n const style = document.createElement(\"style\");\n style.id = \"bit-devtools-styles\";\n style.textContent = getDevToolsCSS();\n document.head.appendChild(style);\n }\n\n this.rootElement = document.createElement(\"div\");\n this.rootElement.className = \"bit-devtools-container\";\n this.container.appendChild(this.rootElement);\n\n this.rootElement.addEventListener(\"click\", (e) => {\n const target = e.target as HTMLElement;\n\n // Evento do botão flutuante\n if (target.closest(\".bit-devtools-trigger\")) {\n this.isOpen = !this.isOpen;\n this.render();\n return;\n }\n\n // Eventos dos botões de ação\n const btn = target.closest(\".bit-action-btn\");\n if (btn && !btn.hasAttribute(\"disabled\")) {\n const action = btn.getAttribute(\"data-action\");\n const storeId = btn.getAttribute(\"data-store\");\n\n if (action && storeId) {\n if (action === \"undo\") this.actions.onUndo(storeId);\n if (action === \"redo\") this.actions.onRedo(storeId);\n if (action === \"reset\") this.actions.onReset(storeId);\n }\n }\n });\n }\n\n public updateState(storesState: Record<string, any>) {\n this.currentStoresState = storesState;\n this.render();\n }\n\n private render() {\n const storeEntries = Object.entries(this.currentStoresState);\n if (storeEntries.length === 0) {\n this.rootElement.innerHTML = \"\";\n return;\n }\n\n let panelHtml = \"\";\n\n if (this.isOpen) {\n panelHtml = `\n <div class=\"bit-devtools-panel\">\n <div class=\"bit-devtools-header\">\n <h2><span style=\"font-size: 20px;\">🛠</span> Bit-Form DevTools</h2>\n <span style=\"font-size: 11px; color: #64748b;\">v1.0.0</span>\n </div>\n `;\n\n for (const [id, state] of storeEntries) {\n const hasErrors = Object.keys(state.errors || {}).length > 0;\n\n // Lemos os metadados do histórico que o adaptador injetou\n const meta = state._meta || {\n totalSteps: 0,\n currentIndex: -1,\n canUndo: false,\n canRedo: false,\n };\n const currentStep = meta.currentIndex + 1;\n const totalSteps = meta.totalSteps;\n\n panelHtml += `\n <div class=\"bit-store-block\">\n <div class=\"bit-store-header\">\n <h3 class=\"bit-store-title\">${id}</h3>\n <div class=\"bit-badge-group\">\n <span class=\"bit-badge ${state.isValid ? \"badge-success\" : \"badge-error\"}\">\n ${state.isValid ? \"✓ Valid\" : \"✕ Invalid\"}\n </span>\n ${state.isDirty ? `<span class=\"bit-badge badge-warn\">Dirty</span>` : \"\"}\n ${state.isSubmitting ? `<span class=\"bit-badge badge-info\">⏳ Submitting</span>` : \"\"}\n </div>\n </div>\n\n <span class=\"bit-section-title\">Time Travel (${currentStep}/${totalSteps})</span>\n \n <div class=\"bit-controls\">\n <button class=\"bit-action-btn\" data-action=\"undo\" data-store=\"${id}\" ${meta.canUndo ? \"\" : \"disabled\"}>\n <span>↺</span> Undo\n </button>\n <button class=\"bit-action-btn\" data-action=\"redo\" data-store=\"${id}\" ${meta.canRedo ? \"\" : \"disabled\"}>\n <span>↻</span> Redo\n </button>\n <button class=\"bit-action-btn bit-btn-reset\" data-action=\"reset\" data-store=\"${id}\">\n <span>🗑</span> Reset\n </button>\n </div>\n `;\n\n if (hasErrors) {\n panelHtml += `\n <span class=\"bit-section-title\" style=\"color: #f87171;\">⚠️ Validations Failing</span>\n <pre class=\"bit-error-box\">${JSON.stringify(state.errors, null, 2)}</pre>\n `;\n }\n\n panelHtml += `\n <span class=\"bit-section-title\">Values</span>\n <pre class=\"bit-pre\">${JSON.stringify(state.values, null, 2)}</pre>\n </div>\n `;\n }\n\n panelHtml += `</div>`;\n }\n\n // Botão Flutuante (sempre renderizado)\n const triggerHtml = `\n <button class=\"bit-devtools-trigger\" style=\"transform: ${this.isOpen ? \"scale(0.9)\" : \"scale(1)\"};\" title=\"Abrir DevTools\">\n ${this.isOpen ? \"✖\" : \"Bit\"}\n </button>\n `;\n\n this.rootElement.innerHTML = panelHtml + triggerHtml;\n }\n}\n","import { bitBus } from \"../../core\";\nimport type { BitStore } from \"../../core/store\";\nimport { BitFormDevToolsUI } from \"../ui\";\n\nexport function setupLocalDevTools(container: HTMLElement) {\n const ui = new BitFormDevToolsUI(container, {\n onUndo: (id) => (bitBus.stores[id] as BitStore<any>)?.undo(),\n onRedo: (id) => (bitBus.stores[id] as BitStore<any>)?.redo(),\n onReset: (id) => (bitBus.stores[id] as BitStore<any>)?.reset(),\n });\n\n const getFullSnapshot = () => {\n const states: Record<string, any> = {};\n\n for (const [id, instance] of Object.entries(bitBus.stores)) {\n const storeInstance = instance as any;\n const state = storeInstance.getState();\n\n const historyMeta = storeInstance?.getHistoryMetadata?.() || {\n enabled: false,\n canUndo: false,\n canRedo: false,\n historyIndex: -1,\n historySize: 0,\n };\n\n states[id] = {\n ...state,\n _meta: {\n canUndo: historyMeta.canUndo,\n canRedo: historyMeta.canRedo,\n totalSteps: historyMeta.historySize,\n currentIndex: historyMeta.historyIndex,\n },\n };\n }\n return states;\n };\n\n ui.updateState(getFullSnapshot());\n\n const unsubscribe = bitBus.subscribe(() => {\n ui.updateState(getFullSnapshot());\n });\n\n return {\n ui,\n destroy: () => {\n unsubscribe();\n container.innerHTML = \"\";\n },\n };\n}\n","import { BitFormDevToolsUI } from \"../ui\";\nimport type {\n DevToolsActionMessage,\n DevToolsActionName,\n DevToolsRemoteMessage,\n DevToolsStateUpdateMessage,\n} from \"../types\";\n\nexport function setupRemoteDevTools(\n container: HTMLElement,\n url: string = \"ws://localhost:3000\",\n) {\n const socket = new WebSocket(url);\n\n const sendMessage = (message: DevToolsRemoteMessage) => {\n if (socket.readyState === WebSocket.OPEN) {\n socket.send(JSON.stringify(message));\n } else {\n console.warn(\n \"[bit-form] Tentativa de envio falhou. WebSocket não está aberto.\",\n );\n }\n };\n\n const sendAction = (storeId: string, action: DevToolsActionName) => {\n const message: DevToolsActionMessage = {\n type: \"ACTION\",\n payload: { storeId, action },\n };\n sendMessage(message);\n };\n\n const ui = new BitFormDevToolsUI(container, {\n onUndo: (id) => sendAction(id, \"undo\"),\n onRedo: (id) => sendAction(id, \"redo\"),\n onReset: (id) => sendAction(id, \"reset\"),\n });\n\n socket.addEventListener(\"open\", () => {\n console.log(`[bit-form] Conectado ao DevTools remoto em ${url}`);\n });\n\n socket.addEventListener(\"message\", (msg: MessageEvent) => {\n try {\n const data = JSON.parse(msg.data) as DevToolsRemoteMessage;\n if (data.type === \"STATE_UPDATE\") {\n ui.updateState((data as DevToolsStateUpdateMessage).payload);\n }\n } catch (e) {\n console.error(\"[bit-form] Erro ao processar mensagem do WebSocket:\", e);\n }\n });\n\n socket.addEventListener(\"error\", (err) => {\n console.error(\"[bit-form] Erro na conexão do DevTools remoto:\", err);\n });\n\n return {\n ui,\n destroy: () => {\n if (\n socket.readyState === WebSocket.OPEN ||\n socket.readyState === WebSocket.CONNECTING\n ) {\n socket.close();\n }\n container.innerHTML = \"\";\n },\n };\n}\n","import { setupLocalDevTools } from \"./adapters/local\";\nimport { setupRemoteDevTools } from \"./adapters/remote\";\nimport type { BitDevToolsOptions } from \"./types\";\n\nexport type { BitDevToolsOptions };\n\nexport function initDevTools(options: BitDevToolsOptions = {}) {\n const { mode = \"local\", url } = options;\n let containerEl: HTMLElement;\n\n let isAutoCreated = false;\n\n if (typeof options.container === \"string\") {\n const el = document.querySelector<HTMLElement>(options.container);\n if (!el)\n throw new Error(\n `[bit-form] Container '${options.container}' não encontrado na página.`,\n );\n containerEl = el;\n } else if (options.container instanceof HTMLElement) {\n containerEl = options.container;\n } else {\n containerEl = document.createElement(\"div\");\n containerEl.id = \"bit-form-devtools-root\";\n containerEl.style.position = \"fixed\";\n containerEl.style.bottom = \"20px\";\n containerEl.style.right = \"20px\";\n containerEl.style.zIndex = \"9999\";\n containerEl.style.maxHeight = \"80vh\";\n containerEl.style.overflowY = \"auto\";\n containerEl.style.boxShadow = \"0 10px 25px rgba(0,0,0,0.1)\";\n document.body.appendChild(containerEl);\n isAutoCreated = true;\n }\n\n let adapterInstance: any;\n\n if (mode === \"local\") {\n console.log(\"[bit-form] DevTools iniciado em modo Local.\");\n adapterInstance = setupLocalDevTools(containerEl);\n } else if (mode === \"remote\") {\n console.log(\"[bit-form] DevTools iniciado em modo Remote.\");\n adapterInstance = setupRemoteDevTools(containerEl, url);\n } else {\n throw new Error(`[bit-form] Modo DevTools inválido: ${mode}`);\n }\n\n return {\n ...adapterInstance,\n destroy: () => {\n if (adapterInstance && typeof adapterInstance.destroy === \"function\") {\n adapterInstance.destroy();\n }\n\n if (isAutoCreated && containerEl.parentNode) {\n containerEl.parentNode.removeChild(containerEl);\n } else {\n containerEl.innerHTML = \"\";\n }\n },\n };\n}\n"],"mappings":"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","names":["getDevToolsCSS","BitFormDevToolsUI","container","actions","style","getDevToolsCSS","target","btn","action","storeId","storesState","storeEntries","panelHtml","id","state","hasErrors","meta","currentStep","totalSteps","triggerHtml","setupLocalDevTools","container","ui","BitFormDevToolsUI","id","bitBus","getFullSnapshot","states","instance","storeInstance","state","historyMeta","unsubscribe","setupRemoteDevTools","container","url","socket","sendMessage","message","sendAction","storeId","action","ui","BitFormDevToolsUI","id","msg","data","e","err","initDevTools","options","mode","url","containerEl","isAutoCreated","el","adapterInstance","setupLocalDevTools","setupRemoteDevTools"]}
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkYWXX6XRVcjs = require('./chunk-YWXX6XRV.cjs');exports.bitBus = _chunkYWXX6XRVcjs.a; exports.bitMasks = _chunkYWXX6XRVcjs.T; exports.cleanPrefixedKeys = _chunkYWXX6XRVcjs.h; exports.createBitStore = _chunkYWXX6XRVcjs.W; exports.createCreditCardMask = _chunkYWXX6XRVcjs.o; exports.createCurrencyMask = _chunkYWXX6XRVcjs.n; exports.createDateMask = _chunkYWXX6XRVcjs.p; exports.createPatternMask = _chunkYWXX6XRVcjs.m; exports.deepClone = _chunkYWXX6XRVcjs.b; exports.deepEqual = _chunkYWXX6XRVcjs.e; exports.deepMerge = _chunkYWXX6XRVcjs.c; exports.extractServerErrors = _chunkYWXX6XRVcjs.j; exports.getDeepValue = _chunkYWXX6XRVcjs.f; exports.isValidationErrorShape = _chunkYWXX6XRVcjs.i; exports.maskBRL = _chunkYWXX6XRVcjs.q; exports.maskCEP = _chunkYWXX6XRVcjs.C; exports.maskCNH = _chunkYWXX6XRVcjs.F; exports.maskCNPJ = _chunkYWXX6XRVcjs.z; exports.maskCPF = _chunkYWXX6XRVcjs.y; exports.maskCVV = _chunkYWXX6XRVcjs.M; exports.maskColorHex = _chunkYWXX6XRVcjs.P; exports.maskCreditCard = _chunkYWXX6XRVcjs.L; exports.maskDate = _chunkYWXX6XRVcjs.D; exports.maskDateISO = _chunkYWXX6XRVcjs.N; exports.maskDateUS = _chunkYWXX6XRVcjs.J; exports.maskDecimal = _chunkYWXX6XRVcjs.w; exports.maskEUR = _chunkYWXX6XRVcjs.s; exports.maskGBP = _chunkYWXX6XRVcjs.t; exports.maskIBAN = _chunkYWXX6XRVcjs.S; exports.maskIPv4 = _chunkYWXX6XRVcjs.Q; exports.maskIPv6 = _chunkYWXX6XRVcjs.R; exports.maskInteger = _chunkYWXX6XRVcjs.x; exports.maskJPY = _chunkYWXX6XRVcjs.u; exports.maskLandline = _chunkYWXX6XRVcjs.B; exports.maskMacAddress = _chunkYWXX6XRVcjs.O; exports.maskPercent = _chunkYWXX6XRVcjs.v; exports.maskPhone = _chunkYWXX6XRVcjs.A; exports.maskRG = _chunkYWXX6XRVcjs.G; exports.maskSSN = _chunkYWXX6XRVcjs.K; exports.maskTime = _chunkYWXX6XRVcjs.E; exports.maskUSD = _chunkYWXX6XRVcjs.r; exports.maskUSPhone = _chunkYWXX6XRVcjs.H; exports.maskZipCode = _chunkYWXX6XRVcjs.I; exports.setDeepValue = _chunkYWXX6XRVcjs.g; exports.unmask = _chunkYWXX6XRVcjs.k; exports.unmaskCurrency = _chunkYWXX6XRVcjs.l; exports.valueEqual = _chunkYWXX6XRVcjs.d;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-C4BYXZGB.cjs');var _chunk676WXU4Scjs = require('./chunk-676WXU4S.cjs');exports.bitBus = _chunk676WXU4Scjs.a; exports.bitMasks = _chunk676WXU4Scjs.X; exports.cleanPrefixedKeys = _chunk676WXU4Scjs.h; exports.createBitStore = _chunk676WXU4Scjs.Z; exports.createCreditCardMask = _chunk676WXU4Scjs.o; exports.createCurrencyMask = _chunk676WXU4Scjs.n; exports.createDateMask = _chunk676WXU4Scjs.p; exports.createPatternMask = _chunk676WXU4Scjs.m; exports.deepClone = _chunk676WXU4Scjs.b; exports.deepEqual = _chunk676WXU4Scjs.e; exports.deepMerge = _chunk676WXU4Scjs.c; exports.extractServerErrors = _chunk676WXU4Scjs.j; exports.getDeepValue = _chunk676WXU4Scjs.f; exports.isValidationErrorShape = _chunk676WXU4Scjs.i; exports.maskBRL = _chunk676WXU4Scjs.q; exports.maskCEP = _chunk676WXU4Scjs.C; exports.maskCNH = _chunk676WXU4Scjs.F; exports.maskCNPJ = _chunk676WXU4Scjs.z; exports.maskCPF = _chunk676WXU4Scjs.y; exports.maskCPFCNPJ = _chunk676WXU4Scjs.H; exports.maskCVV = _chunk676WXU4Scjs.O; exports.maskColorHex = _chunk676WXU4Scjs.R; exports.maskCreditCard = _chunk676WXU4Scjs.N; exports.maskDate = _chunk676WXU4Scjs.D; exports.maskDateISO = _chunk676WXU4Scjs.P; exports.maskDateUS = _chunk676WXU4Scjs.L; exports.maskDecimal = _chunk676WXU4Scjs.w; exports.maskEUR = _chunk676WXU4Scjs.s; exports.maskGBP = _chunk676WXU4Scjs.t; exports.maskIBAN = _chunk676WXU4Scjs.U; exports.maskIPv4 = _chunk676WXU4Scjs.S; exports.maskIPv6 = _chunk676WXU4Scjs.T; exports.maskInteger = _chunk676WXU4Scjs.x; exports.maskJPY = _chunk676WXU4Scjs.u; exports.maskLandline = _chunk676WXU4Scjs.B; exports.maskMacAddress = _chunk676WXU4Scjs.Q; exports.maskPercent = _chunk676WXU4Scjs.v; exports.maskPhone = _chunk676WXU4Scjs.A; exports.maskPlate = _chunk676WXU4Scjs.I; exports.maskRG = _chunk676WXU4Scjs.G; exports.maskSSN = _chunk676WXU4Scjs.M; exports.maskTime = _chunk676WXU4Scjs.E; exports.maskUSD = _chunk676WXU4Scjs.r; exports.maskUSPhone = _chunk676WXU4Scjs.J; exports.maskZipCode = _chunk676WXU4Scjs.K; exports.setDeepValue = _chunk676WXU4Scjs.g; exports.unmask = _chunk676WXU4Scjs.k; exports.unmaskCurrency = _chunk676WXU4Scjs.l; exports.valueEqual = _chunk676WXU4Scjs.d;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/index.cjs"],"names":[],"mappings":"AAAA,iIAA4P,g9DAAmxB","file":"/home/runner/work/bit-form/bit-form/dist/index.cjs"}
1
+ {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/index.cjs"],"names":[],"mappings":"AAAA,yGAA4B,wDAAsQ,oiEAAmzB","file":"/home/runner/work/bit-form/bit-form/dist/index.cjs"}
package/dist/index.d.cts CHANGED
@@ -1,32 +1,10 @@
1
- import { B as BitConfig, P as PatternMaskOptions, a as BitMask, C as CurrencyMaskConfig, D as DateMaskConfig } from './bus-B3pGaiFZ.cjs';
2
- export { b as BitAfterSubmitEvent, c as BitAfterValidateEvent, d as BitArrayItem, e as BitArrayPath, f as BitBeforeSubmitEvent, g as BitBeforeValidateEvent, h as BitComputedFn, i as BitErrors, j as BitFieldChangeEvent, k as BitFieldChangeMeta, l as BitFieldConditional, m as BitFieldDefinition, n as BitFieldState, o as BitFieldValidation, p as BitHistoryConfig, q as BitPath, r as BitPathValue, s as BitPersistConfig, t as BitPersistMode, u as BitPersistStorageAdapter, v as BitPlugin, w as BitPluginContext, x as BitPluginErrorEvent, y as BitPluginHooks, z as BitState, A as BitTouched, E as BitTransformFn, F as BitValidationConfig, G as DeepPartial, S as ScopeStatus, V as ValidateScopeResult, H as ValidatorFn, I as bitBus } from './bus-B3pGaiFZ.cjs';
3
- import { B as BitStoreApi } from './public-types-CtYuIAMP.cjs';
4
- export { a as BitEqualityFn, b as BitFrameworkConfig, c as BitFrameworkStore, d as BitHistoryMetadata, e as BitPersistMetadata, f as BitPublicStore, g as BitSelector, h as BitSelectorSubscriptionOptions, i as BitValidationOptions } from './public-types-CtYuIAMP.cjs';
1
+ export { cleanPrefixedKeys, createBitStore, deepClone, deepEqual, deepMerge, extractServerErrors, getDeepValue, isValidationErrorShape, setDeepValue, valueEqual } from './core/light.cjs';
2
+ export { B as BitEqualityFn, a as BitFrameworkConfig, b as BitHistoryMetadata, c as BitPersistMetadata, d as BitSelector, e as BitSelectorSubscriptionOptions, f as BitStoreApi, g as BitStoreHooksApi, h as BitValidationOptions } from './public-types-CLIDR8aC.cjs';
3
+ export { b as bitBus } from './bus-BI29cKpD.cjs';
4
+ import { P as PatternMaskOptions, a as BitMask, C as CurrencyMaskConfig, o as DateMaskConfig, p as BitBuiltInMaskName } from './types-DqeN9Kq_.cjs';
5
+ export { q as BitAfterSubmitEvent, r as BitAfterValidateEvent, l as BitArrayItem, k as BitArrayPath, s as BitBeforeSubmitEvent, t as BitBeforeValidateEvent, u as BitComputedFn, B as BitConfig, i as BitErrors, v as BitFieldChangeEvent, w as BitFieldChangeMeta, x as BitFieldConditional, b as BitFieldDefinition, m as BitFieldState, y as BitFieldValidation, z as BitHistoryConfig, j as BitMaskName, f as BitPath, g as BitPathValue, A as BitPersistConfig, E as BitPersistMode, F as BitPersistStorageAdapter, d as BitPlugin, G as BitPluginContext, H as BitPluginErrorEvent, I as BitPluginHooks, e as BitState, J as BitTouched, K as BitTransformFn, L as BitValidationConfig, h as DeepPartial, S as ScopeStatus, n as ValidateScopeResult, V as ValidatorFn } from './types-DqeN9Kq_.cjs';
5
6
  export { B as BitDeleteUploadFn, a as BitUploadFn, b as BitUploadResult } from './types-C2mpfhp1.cjs';
6
7
 
7
- declare function createBitStore<T extends object = any>(config?: BitConfig<T>): BitStoreApi<T>;
8
-
9
- declare function deepClone<T>(obj: T): T;
10
- declare function deepMerge<T>(target: T, source: any): T;
11
- /**
12
- * Fast equality for single values. Uses === for primitives, deepEqual for objects/arrays.
13
- * Prefer over deepEqual when comparing a single field value (e.g. isFieldDirty, getStepStatus).
14
- */
15
- declare function valueEqual(a: any, b: any): boolean;
16
- declare function deepEqual(a: any, b: any): boolean;
17
- declare function getDeepValue(obj: any, path: string): any;
18
- declare function setDeepValue(obj: any, path: string, value: any): any;
19
- declare function cleanPrefixedKeys(obj: Record<string, any>, prefix: string): Record<string, any>;
20
- /**
21
- * Checks if a value looks like a server validation error response.
22
- * Handles shapes like { email: "Taken" }, { errors: { email: ["Taken"] } }, etc.
23
- */
24
- declare function isValidationErrorShape(x: unknown): x is Record<string, string | string[]>;
25
- /**
26
- * Extracts server errors in the format expected by setServerErrors.
27
- */
28
- declare function extractServerErrors(x: unknown): Record<string, string | string[]>;
29
-
30
8
  declare const unmask: (value: string | number | null | undefined, allowChars?: string) => string;
31
9
  declare const unmaskCurrency: (value: any, precision?: number) => number;
32
10
  declare const createPatternMask: (pattern: string | string[], options?: PatternMaskOptions) => BitMask;
@@ -67,6 +45,18 @@ declare const maskTime: BitMask;
67
45
  declare const maskCNH: BitMask;
68
46
  /** RG (00.000.000-X) - Suporta o 'X' como dígito verificador */
69
47
  declare const maskRG: BitMask;
48
+ /**
49
+ * CPF + CNPJ combinado — alterna automaticamente pelo número de dígitos:
50
+ * - Até 11 dígitos → CPF (000.000.000-00)
51
+ * - Mais de 11 → CNPJ (00.000.000/0000-00)
52
+ */
53
+ declare const maskCPFCNPJ: BitMask;
54
+ /**
55
+ * Placa de veículo BR — detecta o formato pelo 5.º caractere:
56
+ * - Antigo → ABC-1234 (posição 5 é dígito)
57
+ * - Mercosul → ABC1D23 (posição 5 é letra)
58
+ */
59
+ declare const maskPlate: BitMask;
70
60
  /** US Phone ((000) 000-0000) */
71
61
  declare const maskUSPhone: BitMask;
72
62
  /** ZIP Code (00000 or 00000-0000) */
@@ -95,30 +85,6 @@ declare const maskIPv6: BitMask;
95
85
  */
96
86
  declare const maskIBAN: BitMask;
97
87
 
98
- declare const bitMasks: {
99
- brl: BitMask;
100
- usd: BitMask;
101
- eur: BitMask;
102
- gbp: BitMask;
103
- jpy: BitMask;
104
- cpf: BitMask;
105
- cnpj: BitMask;
106
- rg: BitMask;
107
- cep: BitMask;
108
- cnh: BitMask;
109
- phone: BitMask;
110
- landline: BitMask;
111
- date: BitMask;
112
- time: BitMask;
113
- ip: BitMask;
114
- ipv6: BitMask;
115
- mac: BitMask;
116
- color: BitMask;
117
- cc: BitMask;
118
- cvv: BitMask;
119
- percent: BitMask;
120
- decimal: BitMask;
121
- int: BitMask;
122
- };
88
+ declare const bitMasks: Record<BitBuiltInMaskName, BitMask>;
123
89
 
124
- export { BitConfig, BitMask, BitStoreApi, CurrencyMaskConfig, DateMaskConfig, PatternMaskOptions, bitMasks, cleanPrefixedKeys, createBitStore, createCreditCardMask, createCurrencyMask, createDateMask, createPatternMask, deepClone, deepEqual, deepMerge, extractServerErrors, getDeepValue, isValidationErrorShape, maskBRL, maskCEP, maskCNH, maskCNPJ, maskCPF, maskCVV, maskColorHex, maskCreditCard, maskDate, maskDateISO, maskDateUS, maskDecimal, maskEUR, maskGBP, maskIBAN, maskIPv4, maskIPv6, maskInteger, maskJPY, maskLandline, maskMacAddress, maskPercent, maskPhone, maskRG, maskSSN, maskTime, maskUSD, maskUSPhone, maskZipCode, setDeepValue, unmask, unmaskCurrency, valueEqual };
90
+ export { BitBuiltInMaskName, BitMask, CurrencyMaskConfig, DateMaskConfig, PatternMaskOptions, bitMasks, createCreditCardMask, createCurrencyMask, createDateMask, createPatternMask, maskBRL, maskCEP, maskCNH, maskCNPJ, maskCPF, maskCPFCNPJ, maskCVV, maskColorHex, maskCreditCard, maskDate, maskDateISO, maskDateUS, maskDecimal, maskEUR, maskGBP, maskIBAN, maskIPv4, maskIPv6, maskInteger, maskJPY, maskLandline, maskMacAddress, maskPercent, maskPhone, maskPlate, maskRG, maskSSN, maskTime, maskUSD, maskUSPhone, maskZipCode, unmask, unmaskCurrency };
package/dist/index.d.ts CHANGED
@@ -1,32 +1,10 @@
1
- import { B as BitConfig, P as PatternMaskOptions, a as BitMask, C as CurrencyMaskConfig, D as DateMaskConfig } from './bus-B3pGaiFZ.js';
2
- export { b as BitAfterSubmitEvent, c as BitAfterValidateEvent, d as BitArrayItem, e as BitArrayPath, f as BitBeforeSubmitEvent, g as BitBeforeValidateEvent, h as BitComputedFn, i as BitErrors, j as BitFieldChangeEvent, k as BitFieldChangeMeta, l as BitFieldConditional, m as BitFieldDefinition, n as BitFieldState, o as BitFieldValidation, p as BitHistoryConfig, q as BitPath, r as BitPathValue, s as BitPersistConfig, t as BitPersistMode, u as BitPersistStorageAdapter, v as BitPlugin, w as BitPluginContext, x as BitPluginErrorEvent, y as BitPluginHooks, z as BitState, A as BitTouched, E as BitTransformFn, F as BitValidationConfig, G as DeepPartial, S as ScopeStatus, V as ValidateScopeResult, H as ValidatorFn, I as bitBus } from './bus-B3pGaiFZ.js';
3
- import { B as BitStoreApi } from './public-types-Lq3eLstW.js';
4
- export { a as BitEqualityFn, b as BitFrameworkConfig, c as BitFrameworkStore, d as BitHistoryMetadata, e as BitPersistMetadata, f as BitPublicStore, g as BitSelector, h as BitSelectorSubscriptionOptions, i as BitValidationOptions } from './public-types-Lq3eLstW.js';
1
+ export { cleanPrefixedKeys, createBitStore, deepClone, deepEqual, deepMerge, extractServerErrors, getDeepValue, isValidationErrorShape, setDeepValue, valueEqual } from './core/light.js';
2
+ export { B as BitEqualityFn, a as BitFrameworkConfig, b as BitHistoryMetadata, c as BitPersistMetadata, d as BitSelector, e as BitSelectorSubscriptionOptions, f as BitStoreApi, g as BitStoreHooksApi, h as BitValidationOptions } from './public-types-Bl94ECPb.js';
3
+ export { b as bitBus } from './bus-B1my-s_o.js';
4
+ import { P as PatternMaskOptions, a as BitMask, C as CurrencyMaskConfig, o as DateMaskConfig, p as BitBuiltInMaskName } from './types-DqeN9Kq_.js';
5
+ export { q as BitAfterSubmitEvent, r as BitAfterValidateEvent, l as BitArrayItem, k as BitArrayPath, s as BitBeforeSubmitEvent, t as BitBeforeValidateEvent, u as BitComputedFn, B as BitConfig, i as BitErrors, v as BitFieldChangeEvent, w as BitFieldChangeMeta, x as BitFieldConditional, b as BitFieldDefinition, m as BitFieldState, y as BitFieldValidation, z as BitHistoryConfig, j as BitMaskName, f as BitPath, g as BitPathValue, A as BitPersistConfig, E as BitPersistMode, F as BitPersistStorageAdapter, d as BitPlugin, G as BitPluginContext, H as BitPluginErrorEvent, I as BitPluginHooks, e as BitState, J as BitTouched, K as BitTransformFn, L as BitValidationConfig, h as DeepPartial, S as ScopeStatus, n as ValidateScopeResult, V as ValidatorFn } from './types-DqeN9Kq_.js';
5
6
  export { B as BitDeleteUploadFn, a as BitUploadFn, b as BitUploadResult } from './types-C2mpfhp1.js';
6
7
 
7
- declare function createBitStore<T extends object = any>(config?: BitConfig<T>): BitStoreApi<T>;
8
-
9
- declare function deepClone<T>(obj: T): T;
10
- declare function deepMerge<T>(target: T, source: any): T;
11
- /**
12
- * Fast equality for single values. Uses === for primitives, deepEqual for objects/arrays.
13
- * Prefer over deepEqual when comparing a single field value (e.g. isFieldDirty, getStepStatus).
14
- */
15
- declare function valueEqual(a: any, b: any): boolean;
16
- declare function deepEqual(a: any, b: any): boolean;
17
- declare function getDeepValue(obj: any, path: string): any;
18
- declare function setDeepValue(obj: any, path: string, value: any): any;
19
- declare function cleanPrefixedKeys(obj: Record<string, any>, prefix: string): Record<string, any>;
20
- /**
21
- * Checks if a value looks like a server validation error response.
22
- * Handles shapes like { email: "Taken" }, { errors: { email: ["Taken"] } }, etc.
23
- */
24
- declare function isValidationErrorShape(x: unknown): x is Record<string, string | string[]>;
25
- /**
26
- * Extracts server errors in the format expected by setServerErrors.
27
- */
28
- declare function extractServerErrors(x: unknown): Record<string, string | string[]>;
29
-
30
8
  declare const unmask: (value: string | number | null | undefined, allowChars?: string) => string;
31
9
  declare const unmaskCurrency: (value: any, precision?: number) => number;
32
10
  declare const createPatternMask: (pattern: string | string[], options?: PatternMaskOptions) => BitMask;
@@ -67,6 +45,18 @@ declare const maskTime: BitMask;
67
45
  declare const maskCNH: BitMask;
68
46
  /** RG (00.000.000-X) - Suporta o 'X' como dígito verificador */
69
47
  declare const maskRG: BitMask;
48
+ /**
49
+ * CPF + CNPJ combinado — alterna automaticamente pelo número de dígitos:
50
+ * - Até 11 dígitos → CPF (000.000.000-00)
51
+ * - Mais de 11 → CNPJ (00.000.000/0000-00)
52
+ */
53
+ declare const maskCPFCNPJ: BitMask;
54
+ /**
55
+ * Placa de veículo BR — detecta o formato pelo 5.º caractere:
56
+ * - Antigo → ABC-1234 (posição 5 é dígito)
57
+ * - Mercosul → ABC1D23 (posição 5 é letra)
58
+ */
59
+ declare const maskPlate: BitMask;
70
60
  /** US Phone ((000) 000-0000) */
71
61
  declare const maskUSPhone: BitMask;
72
62
  /** ZIP Code (00000 or 00000-0000) */
@@ -95,30 +85,6 @@ declare const maskIPv6: BitMask;
95
85
  */
96
86
  declare const maskIBAN: BitMask;
97
87
 
98
- declare const bitMasks: {
99
- brl: BitMask;
100
- usd: BitMask;
101
- eur: BitMask;
102
- gbp: BitMask;
103
- jpy: BitMask;
104
- cpf: BitMask;
105
- cnpj: BitMask;
106
- rg: BitMask;
107
- cep: BitMask;
108
- cnh: BitMask;
109
- phone: BitMask;
110
- landline: BitMask;
111
- date: BitMask;
112
- time: BitMask;
113
- ip: BitMask;
114
- ipv6: BitMask;
115
- mac: BitMask;
116
- color: BitMask;
117
- cc: BitMask;
118
- cvv: BitMask;
119
- percent: BitMask;
120
- decimal: BitMask;
121
- int: BitMask;
122
- };
88
+ declare const bitMasks: Record<BitBuiltInMaskName, BitMask>;
123
89
 
124
- export { BitConfig, BitMask, BitStoreApi, CurrencyMaskConfig, DateMaskConfig, PatternMaskOptions, bitMasks, cleanPrefixedKeys, createBitStore, createCreditCardMask, createCurrencyMask, createDateMask, createPatternMask, deepClone, deepEqual, deepMerge, extractServerErrors, getDeepValue, isValidationErrorShape, maskBRL, maskCEP, maskCNH, maskCNPJ, maskCPF, maskCVV, maskColorHex, maskCreditCard, maskDate, maskDateISO, maskDateUS, maskDecimal, maskEUR, maskGBP, maskIBAN, maskIPv4, maskIPv6, maskInteger, maskJPY, maskLandline, maskMacAddress, maskPercent, maskPhone, maskRG, maskSSN, maskTime, maskUSD, maskUSPhone, maskZipCode, setDeepValue, unmask, unmaskCurrency, valueEqual };
90
+ export { BitBuiltInMaskName, BitMask, CurrencyMaskConfig, DateMaskConfig, PatternMaskOptions, bitMasks, createCreditCardMask, createCurrencyMask, createDateMask, createPatternMask, maskBRL, maskCEP, maskCNH, maskCNPJ, maskCPF, maskCPFCNPJ, maskCVV, maskColorHex, maskCreditCard, maskDate, maskDateISO, maskDateUS, maskDecimal, maskEUR, maskGBP, maskIBAN, maskIPv4, maskIPv6, maskInteger, maskJPY, maskLandline, maskMacAddress, maskPercent, maskPhone, maskPlate, maskRG, maskSSN, maskTime, maskUSD, maskUSPhone, maskZipCode, unmask, unmaskCurrency };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,W as U,a as o,b as r,c as e,d as f,e as m,f as p,g as t,h as x,i as a,j as b,k as c,l as d,m as g,n as h,o as i,p as j,q as k,r as l,s as n,t as q,u as s,v as u,w as v,x as w,y,z}from"./chunk-6FJEE6O3.js";export{o as bitBus,T as bitMasks,x as cleanPrefixedKeys,U as createBitStore,i as createCreditCardMask,h as createCurrencyMask,j as createDateMask,g as createPatternMask,r as deepClone,m as deepEqual,e as deepMerge,b as extractServerErrors,p as getDeepValue,a as isValidationErrorShape,k as maskBRL,C as maskCEP,F as maskCNH,z as maskCNPJ,y as maskCPF,M as maskCVV,P as maskColorHex,L as maskCreditCard,D as maskDate,N as maskDateISO,J as maskDateUS,v as maskDecimal,n as maskEUR,q as maskGBP,S as maskIBAN,Q as maskIPv4,R as maskIPv6,w as maskInteger,s as maskJPY,B as maskLandline,O as maskMacAddress,u as maskPercent,A as maskPhone,G as maskRG,K as maskSSN,E as maskTime,l as maskUSD,H as maskUSPhone,I as maskZipCode,t as setDeepValue,c as unmask,d as unmaskCurrency,f as valueEqual};
1
+ import"./chunk-AD7T42HJ.js";import{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,X as V,Z as W,a as o,b as r,c as e,d as f,e as m,f as p,g as t,h as x,i as a,j as b,k as c,l as d,m as g,n as h,o as i,p as j,q as k,r as l,s as n,t as q,u as s,v as u,w as v,x as w,y,z}from"./chunk-2UVV7SU4.js";export{o as bitBus,V as bitMasks,x as cleanPrefixedKeys,W as createBitStore,i as createCreditCardMask,h as createCurrencyMask,j as createDateMask,g as createPatternMask,r as deepClone,m as deepEqual,e as deepMerge,b as extractServerErrors,p as getDeepValue,a as isValidationErrorShape,k as maskBRL,C as maskCEP,F as maskCNH,z as maskCNPJ,y as maskCPF,H as maskCPFCNPJ,O as maskCVV,R as maskColorHex,N as maskCreditCard,D as maskDate,P as maskDateISO,L as maskDateUS,v as maskDecimal,n as maskEUR,q as maskGBP,U as maskIBAN,S as maskIPv4,T as maskIPv6,w as maskInteger,s as maskJPY,B as maskLandline,Q as maskMacAddress,u as maskPercent,A as maskPhone,I as maskPlate,G as maskRG,M as maskSSN,E as maskTime,l as maskUSD,J as maskUSPhone,K as maskZipCode,t as setDeepValue,c as unmask,d as unmaskCurrency,f as valueEqual};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,10 +1,12 @@
1
- import { B as BitConfig, H as ValidatorFn, a as BitMask, m as BitFieldDefinition, J as DevToolsOptions, K as BitPersistResolvedConfig, v as BitPlugin, z as BitState, q as BitPath, n as BitFieldState, r as BitPathValue, G as DeepPartial, i as BitErrors, e as BitArrayPath, d as BitArrayItem, S as ScopeStatus } from './bus-B3pGaiFZ.js';
1
+ import { B as BitConfig, V as ValidatorFn, a as BitMask, b as BitFieldDefinition, D as DevToolsOptions, c as BitPersistResolvedConfig, d as BitPlugin, e as BitState, f as BitPath, g as BitPathValue, h as DeepPartial, i as BitErrors, j as BitMaskName, k as BitArrayPath, l as BitArrayItem, S as ScopeStatus, m as BitFieldState } from './types-DqeN9Kq_.js';
2
2
 
3
3
  type BitSelector<T extends object, TSlice> = (state: Readonly<BitState<T>>) => TSlice;
4
4
  type BitEqualityFn<TValue> = (previous: TValue, next: TValue) => boolean;
5
5
  interface BitSelectorSubscriptionOptions<TValue> {
6
6
  equalityFn?: BitEqualityFn<TValue>;
7
7
  emitImmediately?: boolean;
8
+ paths?: string[];
9
+ autoTrackPaths?: boolean;
8
10
  }
9
11
  interface BitValidationOptions {
10
12
  scope?: string;
@@ -38,24 +40,19 @@ interface BitStoreApi<T extends object = any> {
38
40
  readonly config: Readonly<BitFrameworkConfig<T>>;
39
41
  getConfig(): Readonly<BitFrameworkConfig<T>>;
40
42
  getState(): Readonly<BitState<T>>;
41
- getFieldState<P extends BitPath<T>>(path: P): Readonly<BitFieldState<T, BitPathValue<T, P>>>;
42
43
  subscribe(listener: () => void): () => void;
43
- subscribePath<P extends BitPath<T>>(path: P, listener: (value: BitPathValue<T, P>) => void, options?: BitSelectorSubscriptionOptions<BitPathValue<T, P>>): () => void;
44
- subscribeSelector<TSlice>(selector: BitSelector<T, TSlice>, listener: (slice: TSlice) => void, options?: BitSelectorSubscriptionOptions<TSlice>): () => void;
45
44
  setField<P extends BitPath<T>>(path: P, value: BitPathValue<T, P>): void;
46
45
  blurField<P extends BitPath<T>>(path: P): void;
47
46
  replaceValues(values: T): void;
48
47
  hydrate(values: DeepPartial<T>): void;
49
48
  rebase(values: T): void;
50
- /** @deprecated Use `rebase()` instead. This method is an alias and may be removed in a future version. */
51
- setValues(values: T): void;
52
49
  setError(path: string, message: string | undefined): void;
53
50
  setErrors(errors: BitErrors<T>): void;
54
51
  setServerErrors(serverErrors: Record<string, string[] | string>): void;
55
52
  validate(options?: BitValidationOptions): Promise<boolean>;
56
53
  reset(): void;
57
54
  submit(onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>): Promise<void>;
58
- registerMask(name: string, mask: BitMask): void;
55
+ registerMask(name: BitMaskName, mask: BitMask): void;
59
56
  getDirtyValues(): Partial<T>;
60
57
  restorePersisted(): Promise<boolean>;
61
58
  forceSave(): Promise<void>;
@@ -63,7 +60,6 @@ interface BitStoreApi<T extends object = any> {
63
60
  cleanup(): void;
64
61
  registerField(path: string, config: BitFieldDefinition<T>): void;
65
62
  unregisterField(path: string): void;
66
- unregisterPrefix?(prefix: string): void;
67
63
  isHidden<P extends BitPath<T>>(path: P): boolean;
68
64
  isRequired<P extends BitPath<T>>(path: P): boolean;
69
65
  isFieldDirty(path: string): boolean;
@@ -80,20 +76,16 @@ interface BitStoreApi<T extends object = any> {
80
76
  redo(): void;
81
77
  getStepStatus(scopeName: string): ScopeStatus;
82
78
  getStepErrors(scopeName: string): Record<string, string>;
79
+ }
80
+ interface BitStoreHooksApi<T extends object = any> extends BitStoreApi<T> {
81
+ getFieldState<P extends BitPath<T>>(path: P): Readonly<BitFieldState<T, BitPathValue<T, P>>>;
82
+ subscribePath<P extends BitPath<T>>(path: P, listener: (value: BitPathValue<T, P>) => void, options?: BitSelectorSubscriptionOptions<BitPathValue<T, P>>): () => void;
83
+ subscribeSelector<TSlice>(selector: BitSelector<T, TSlice>, listener: (slice: TSlice) => void, options?: BitSelectorSubscriptionOptions<TSlice>): () => void;
84
+ unregisterPrefix?(prefix: string): void;
83
85
  markFieldsTouched(paths: string[]): void;
84
86
  hasValidationsInProgress(scopeFields?: string[]): boolean;
85
- beginFieldValidation(path: string): void;
86
- endFieldValidation(path: string): void;
87
- setFieldAsyncError(path: string, message: string): Promise<void>;
88
- clearFieldAsyncError(path: string): Promise<void>;
89
87
  resolveMask(path: string): BitMask | undefined;
90
88
  getScopeFields(scopeName: string): string[];
91
89
  }
92
- /** @deprecated Use `BitStoreApi` instead. */
93
- interface BitPublicStore<T extends object = any> extends BitStoreApi<T> {
94
- }
95
- /** @deprecated Use `BitStoreApi` instead. */
96
- interface BitFrameworkStore<T extends object = any> extends BitStoreApi<T> {
97
- }
98
90
 
99
- export type { BitStoreApi as B, BitEqualityFn as a, BitFrameworkConfig as b, BitFrameworkStore as c, BitHistoryMetadata as d, BitPersistMetadata as e, BitPublicStore as f, BitSelector as g, BitSelectorSubscriptionOptions as h, BitValidationOptions as i };
91
+ export type { BitEqualityFn as B, BitFrameworkConfig as a, BitHistoryMetadata as b, BitPersistMetadata as c, BitSelector as d, BitSelectorSubscriptionOptions as e, BitStoreApi as f, BitStoreHooksApi as g, BitValidationOptions as h };
@@ -1,10 +1,12 @@
1
- import { B as BitConfig, H as ValidatorFn, a as BitMask, m as BitFieldDefinition, J as DevToolsOptions, K as BitPersistResolvedConfig, v as BitPlugin, z as BitState, q as BitPath, n as BitFieldState, r as BitPathValue, G as DeepPartial, i as BitErrors, e as BitArrayPath, d as BitArrayItem, S as ScopeStatus } from './bus-B3pGaiFZ.cjs';
1
+ import { B as BitConfig, V as ValidatorFn, a as BitMask, b as BitFieldDefinition, D as DevToolsOptions, c as BitPersistResolvedConfig, d as BitPlugin, e as BitState, f as BitPath, g as BitPathValue, h as DeepPartial, i as BitErrors, j as BitMaskName, k as BitArrayPath, l as BitArrayItem, S as ScopeStatus, m as BitFieldState } from './types-DqeN9Kq_.cjs';
2
2
 
3
3
  type BitSelector<T extends object, TSlice> = (state: Readonly<BitState<T>>) => TSlice;
4
4
  type BitEqualityFn<TValue> = (previous: TValue, next: TValue) => boolean;
5
5
  interface BitSelectorSubscriptionOptions<TValue> {
6
6
  equalityFn?: BitEqualityFn<TValue>;
7
7
  emitImmediately?: boolean;
8
+ paths?: string[];
9
+ autoTrackPaths?: boolean;
8
10
  }
9
11
  interface BitValidationOptions {
10
12
  scope?: string;
@@ -38,24 +40,19 @@ interface BitStoreApi<T extends object = any> {
38
40
  readonly config: Readonly<BitFrameworkConfig<T>>;
39
41
  getConfig(): Readonly<BitFrameworkConfig<T>>;
40
42
  getState(): Readonly<BitState<T>>;
41
- getFieldState<P extends BitPath<T>>(path: P): Readonly<BitFieldState<T, BitPathValue<T, P>>>;
42
43
  subscribe(listener: () => void): () => void;
43
- subscribePath<P extends BitPath<T>>(path: P, listener: (value: BitPathValue<T, P>) => void, options?: BitSelectorSubscriptionOptions<BitPathValue<T, P>>): () => void;
44
- subscribeSelector<TSlice>(selector: BitSelector<T, TSlice>, listener: (slice: TSlice) => void, options?: BitSelectorSubscriptionOptions<TSlice>): () => void;
45
44
  setField<P extends BitPath<T>>(path: P, value: BitPathValue<T, P>): void;
46
45
  blurField<P extends BitPath<T>>(path: P): void;
47
46
  replaceValues(values: T): void;
48
47
  hydrate(values: DeepPartial<T>): void;
49
48
  rebase(values: T): void;
50
- /** @deprecated Use `rebase()` instead. This method is an alias and may be removed in a future version. */
51
- setValues(values: T): void;
52
49
  setError(path: string, message: string | undefined): void;
53
50
  setErrors(errors: BitErrors<T>): void;
54
51
  setServerErrors(serverErrors: Record<string, string[] | string>): void;
55
52
  validate(options?: BitValidationOptions): Promise<boolean>;
56
53
  reset(): void;
57
54
  submit(onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>): Promise<void>;
58
- registerMask(name: string, mask: BitMask): void;
55
+ registerMask(name: BitMaskName, mask: BitMask): void;
59
56
  getDirtyValues(): Partial<T>;
60
57
  restorePersisted(): Promise<boolean>;
61
58
  forceSave(): Promise<void>;
@@ -63,7 +60,6 @@ interface BitStoreApi<T extends object = any> {
63
60
  cleanup(): void;
64
61
  registerField(path: string, config: BitFieldDefinition<T>): void;
65
62
  unregisterField(path: string): void;
66
- unregisterPrefix?(prefix: string): void;
67
63
  isHidden<P extends BitPath<T>>(path: P): boolean;
68
64
  isRequired<P extends BitPath<T>>(path: P): boolean;
69
65
  isFieldDirty(path: string): boolean;
@@ -80,20 +76,16 @@ interface BitStoreApi<T extends object = any> {
80
76
  redo(): void;
81
77
  getStepStatus(scopeName: string): ScopeStatus;
82
78
  getStepErrors(scopeName: string): Record<string, string>;
79
+ }
80
+ interface BitStoreHooksApi<T extends object = any> extends BitStoreApi<T> {
81
+ getFieldState<P extends BitPath<T>>(path: P): Readonly<BitFieldState<T, BitPathValue<T, P>>>;
82
+ subscribePath<P extends BitPath<T>>(path: P, listener: (value: BitPathValue<T, P>) => void, options?: BitSelectorSubscriptionOptions<BitPathValue<T, P>>): () => void;
83
+ subscribeSelector<TSlice>(selector: BitSelector<T, TSlice>, listener: (slice: TSlice) => void, options?: BitSelectorSubscriptionOptions<TSlice>): () => void;
84
+ unregisterPrefix?(prefix: string): void;
83
85
  markFieldsTouched(paths: string[]): void;
84
86
  hasValidationsInProgress(scopeFields?: string[]): boolean;
85
- beginFieldValidation(path: string): void;
86
- endFieldValidation(path: string): void;
87
- setFieldAsyncError(path: string, message: string): Promise<void>;
88
- clearFieldAsyncError(path: string): Promise<void>;
89
87
  resolveMask(path: string): BitMask | undefined;
90
88
  getScopeFields(scopeName: string): string[];
91
89
  }
92
- /** @deprecated Use `BitStoreApi` instead. */
93
- interface BitPublicStore<T extends object = any> extends BitStoreApi<T> {
94
- }
95
- /** @deprecated Use `BitStoreApi` instead. */
96
- interface BitFrameworkStore<T extends object = any> extends BitStoreApi<T> {
97
- }
98
90
 
99
- export type { BitStoreApi as B, BitEqualityFn as a, BitFrameworkConfig as b, BitFrameworkStore as c, BitHistoryMetadata as d, BitPersistMetadata as e, BitPublicStore as f, BitSelector as g, BitSelectorSubscriptionOptions as h, BitValidationOptions as i };
91
+ export type { BitEqualityFn as B, BitFrameworkConfig as a, BitHistoryMetadata as b, BitPersistMetadata as c, BitSelector as d, BitSelectorSubscriptionOptions as e, BitStoreApi as f, BitStoreHooksApi as g, BitValidationOptions as h };