@lehnihon/bit-form 2.2.3 → 2.2.4

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 (127) 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 +6 -5
  4. package/dist/angular/index.d.ts +6 -5
  5. package/dist/angular/index.js +1 -1
  6. package/dist/angular/index.js.map +1 -1
  7. package/dist/{bus-DHQHDwUp.d.ts → bus-BQI1FIOs.d.ts} +20 -10
  8. package/dist/{bus-CILR-ENq.d.cts → bus-a_GA51Qw.d.cts} +20 -10
  9. package/dist/chunk-4XLU5ZCX.js +2 -0
  10. package/dist/chunk-4XLU5ZCX.js.map +1 -0
  11. package/dist/chunk-66DIO2SH.js +2 -0
  12. package/dist/chunk-66DIO2SH.js.map +1 -0
  13. package/dist/chunk-7LMNIQTT.js +2 -0
  14. package/dist/{chunk-VDWCFNA6.js.map → chunk-7LMNIQTT.js.map} +1 -1
  15. package/dist/chunk-AE4G32HS.js +2 -0
  16. package/dist/chunk-AE4G32HS.js.map +1 -0
  17. package/dist/chunk-BMHK77NL.js +2 -0
  18. package/dist/chunk-BMHK77NL.js.map +1 -0
  19. package/dist/chunk-CFFLDMLG.cjs +2 -0
  20. package/dist/chunk-CFFLDMLG.cjs.map +1 -0
  21. package/dist/chunk-EI5L5L3R.cjs +2 -0
  22. package/dist/{chunk-PA6T2CBR.cjs.map → chunk-EI5L5L3R.cjs.map} +1 -1
  23. package/dist/chunk-FQLJOSF7.js +1 -0
  24. package/dist/chunk-FQLJOSF7.js.map +1 -0
  25. package/dist/chunk-IV32WXCF.cjs +2 -0
  26. package/dist/chunk-IV32WXCF.cjs.map +1 -0
  27. package/dist/chunk-K5NZDYAT.js +2 -0
  28. package/dist/chunk-K5NZDYAT.js.map +1 -0
  29. package/dist/chunk-KYM7JG2G.cjs +2 -0
  30. package/dist/chunk-KYM7JG2G.cjs.map +1 -0
  31. package/dist/chunk-LOYB7TTM.cjs +2 -0
  32. package/dist/{chunk-JO37BU2C.cjs.map → chunk-LOYB7TTM.cjs.map} +1 -1
  33. package/dist/chunk-MBTLLIBM.js +2 -0
  34. package/dist/chunk-MBTLLIBM.js.map +1 -0
  35. package/dist/chunk-MFSDDSVG.cjs +1 -0
  36. package/dist/chunk-MFSDDSVG.cjs.map +1 -0
  37. package/dist/chunk-MQX4YS6D.cjs +2 -0
  38. package/dist/chunk-MQX4YS6D.cjs.map +1 -0
  39. package/dist/chunk-O5UPA33R.js +2 -0
  40. package/dist/chunk-O5UPA33R.js.map +1 -0
  41. package/dist/{chunk-NNKZFXEK.cjs → chunk-RFFMBY7M.cjs} +2 -2
  42. package/dist/{chunk-NNKZFXEK.cjs.map → chunk-RFFMBY7M.cjs.map} +1 -1
  43. package/dist/chunk-YEXRRTI3.cjs +2 -0
  44. package/dist/chunk-YEXRRTI3.cjs.map +1 -0
  45. package/dist/{chunk-FEW3ABPD.js → chunk-YGAD4ZZW.js} +2 -2
  46. package/dist/chunk-YGAD4ZZW.js.map +1 -0
  47. package/dist/chunk-ZO3GXKF3.cjs +2 -0
  48. package/dist/chunk-ZO3GXKF3.cjs.map +1 -0
  49. package/dist/devtools/bridge.cjs +1 -1
  50. package/dist/devtools/bridge.js +1 -1
  51. package/dist/devtools/index.cjs +2 -2
  52. package/dist/devtools/index.cjs.map +1 -1
  53. package/dist/devtools/index.js +1 -1
  54. package/dist/devtools/index.js.map +1 -1
  55. package/dist/field-binding-BXw0Ku2c.d.cts +12 -0
  56. package/dist/field-binding-BXw0Ku2c.d.ts +12 -0
  57. package/dist/index.cjs +1 -1
  58. package/dist/index.cjs.map +1 -1
  59. package/dist/index.d.cts +20 -15
  60. package/dist/index.d.ts +20 -15
  61. package/dist/index.js +1 -1
  62. package/dist/mask.cjs +1 -1
  63. package/dist/mask.js +1 -1
  64. package/dist/{public-types-SU17BarA.d.cts → public-types-D14VY_4o.d.cts} +4 -9
  65. package/dist/{public-types-Bgws0aVJ.d.ts → public-types-D3WIiMGu.d.ts} +4 -9
  66. package/dist/react/index.cjs +1 -1
  67. package/dist/react/index.cjs.map +1 -1
  68. package/dist/react/index.d.cts +7 -6
  69. package/dist/react/index.d.ts +7 -6
  70. package/dist/react/index.js +1 -1
  71. package/dist/react/index.js.map +1 -1
  72. package/dist/react-native/index.cjs +1 -1
  73. package/dist/react-native/index.d.cts +5 -4
  74. package/dist/react-native/index.d.ts +5 -4
  75. package/dist/react-native/index.js +1 -1
  76. package/dist/resolvers/index.cjs +2 -0
  77. package/dist/resolvers/index.cjs.map +1 -0
  78. package/dist/resolvers/index.d.cts +9 -0
  79. package/dist/resolvers/index.d.ts +9 -0
  80. package/dist/resolvers/index.js +2 -0
  81. package/dist/resolvers/index.js.map +1 -0
  82. package/dist/resolvers/joi.cjs +1 -1
  83. package/dist/resolvers/joi.cjs.map +1 -1
  84. package/dist/resolvers/joi.d.cts +1 -1
  85. package/dist/resolvers/joi.d.ts +1 -1
  86. package/dist/resolvers/joi.js +1 -1
  87. package/dist/resolvers/joi.js.map +1 -1
  88. package/dist/resolvers/types.cjs +2 -1
  89. package/dist/resolvers/types.cjs.map +1 -1
  90. package/dist/resolvers/types.js +1 -0
  91. package/dist/resolvers/yup.cjs +1 -1
  92. package/dist/resolvers/yup.cjs.map +1 -1
  93. package/dist/resolvers/yup.d.cts +1 -1
  94. package/dist/resolvers/yup.d.ts +1 -1
  95. package/dist/resolvers/yup.js +1 -1
  96. package/dist/resolvers/yup.js.map +1 -1
  97. package/dist/resolvers/zod.cjs +1 -1
  98. package/dist/resolvers/zod.cjs.map +1 -1
  99. package/dist/resolvers/zod.d.cts +1 -1
  100. package/dist/resolvers/zod.d.ts +1 -1
  101. package/dist/resolvers/zod.js +1 -1
  102. package/dist/resolvers/zod.js.map +1 -1
  103. package/dist/{types-C2mpfhp1.d.cts → upload-EXnJLq8k.d.cts} +1 -1
  104. package/dist/{types-C2mpfhp1.d.ts → upload-EXnJLq8k.d.ts} +1 -1
  105. package/dist/{use-bit-persist-DEWMhvit.d.cts → use-bit-persist-CNtQ3Gaq.d.ts} +7 -6
  106. package/dist/{use-bit-persist-BlR-hHk6.d.ts → use-bit-persist-Dt4zIl2u.d.cts} +7 -6
  107. package/dist/vue/index.cjs +1 -1
  108. package/dist/vue/index.cjs.map +1 -1
  109. package/dist/vue/index.d.cts +3 -3
  110. package/dist/vue/index.d.ts +3 -3
  111. package/dist/vue/index.js +1 -1
  112. package/dist/vue/index.js.map +1 -1
  113. package/package.json +6 -1
  114. package/dist/chunk-3MUULXXZ.js +0 -2
  115. package/dist/chunk-3MUULXXZ.js.map +0 -1
  116. package/dist/chunk-7MBRAKBL.js +0 -2
  117. package/dist/chunk-7MBRAKBL.js.map +0 -1
  118. package/dist/chunk-ER2DNS7T.cjs +0 -2
  119. package/dist/chunk-ER2DNS7T.cjs.map +0 -1
  120. package/dist/chunk-FEW3ABPD.js.map +0 -1
  121. package/dist/chunk-JO37BU2C.cjs +0 -2
  122. package/dist/chunk-PA6T2CBR.cjs +0 -2
  123. package/dist/chunk-T3XN5O7V.cjs +0 -2
  124. package/dist/chunk-T3XN5O7V.cjs.map +0 -1
  125. package/dist/chunk-ULC4OPIQ.js +0 -2
  126. package/dist/chunk-ULC4OPIQ.js.map +0 -1
  127. package/dist/chunk-VDWCFNA6.js +0 -2
@@ -1 +1 @@
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"]}
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 { BitStoreHooksApi } from \"../../core\";\nimport { BitFormDevToolsUI } from \"../ui\";\n\nexport function setupLocalDevTools(container: HTMLElement) {\n const ui = new BitFormDevToolsUI(container, {\n onUndo: (id) => (bitBus.stores[id] as BitStoreHooksApi<any>)?.undo(),\n onRedo: (id) => (bitBus.stores[id] as BitStoreHooksApi<any>)?.redo(),\n onReset: (id) => (bitBus.stores[id] as BitStoreHooksApi<any>)?.reset(),\n });\n\n const getFullSnapshot = () => {\n const states: Record<string, unknown> = {};\n\n for (const [id, instance] of Object.entries(bitBus.stores)) {\n const storeInstance = instance as BitStoreHooksApi<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"]}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Tipo de entrada aceito pelos handlers de campo.
3
+ * Cobre eventos nativos (`e.target.value`), eventos sintéticos e valores diretos.
4
+ * Definido aqui para ser compartilhado entre todos os frameworks.
5
+ */
6
+ type BitFieldInputEvent = {
7
+ target?: {
8
+ value?: string | number | null;
9
+ };
10
+ } | string | number | null | undefined;
11
+
12
+ export type { BitFieldInputEvent as B };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Tipo de entrada aceito pelos handlers de campo.
3
+ * Cobre eventos nativos (`e.target.value`), eventos sintéticos e valores diretos.
4
+ * Definido aqui para ser compartilhado entre todos os frameworks.
5
+ */
6
+ type BitFieldInputEvent = {
7
+ target?: {
8
+ value?: string | number | null;
9
+ };
10
+ } | string | number | null | undefined;
11
+
12
+ export type { BitFieldInputEvent as B };
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkJO37BU2Ccjs = require('./chunk-JO37BU2C.cjs');require('./chunk-PA6T2CBR.cjs');exports.BitStore = _chunkJO37BU2Ccjs.k; exports.bitBus = _chunkJO37BU2Ccjs.j; exports.cleanPrefixedKeys = _chunkJO37BU2Ccjs.g; exports.createBitStore = _chunkJO37BU2Ccjs.m; exports.deepClone = _chunkJO37BU2Ccjs.a; exports.deepEqual = _chunkJO37BU2Ccjs.d; exports.deepMerge = _chunkJO37BU2Ccjs.b; exports.extractServerErrors = _chunkJO37BU2Ccjs.i; exports.getDeepValue = _chunkJO37BU2Ccjs.e; exports.isValidationErrorShape = _chunkJO37BU2Ccjs.h; exports.resolveBitStoreForHooks = _chunkJO37BU2Ccjs.l; exports.setDeepValue = _chunkJO37BU2Ccjs.f; exports.valueEqual = _chunkJO37BU2Ccjs.c;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkLOYB7TTMcjs = require('./chunk-LOYB7TTM.cjs');require('./chunk-EI5L5L3R.cjs');exports.bitBus = _chunkLOYB7TTMcjs.j; exports.cleanPrefixedKeys = _chunkLOYB7TTMcjs.g; exports.createBitStore = _chunkLOYB7TTMcjs.l; exports.deepClone = _chunkLOYB7TTMcjs.a; exports.deepEqual = _chunkLOYB7TTMcjs.d; exports.deepMerge = _chunkLOYB7TTMcjs.b; exports.extractServerErrors = _chunkLOYB7TTMcjs.i; exports.getDeepValue = _chunkLOYB7TTMcjs.e; exports.isValidationErrorShape = _chunkLOYB7TTMcjs.h; exports.resolveBitStoreForHooks = _chunkLOYB7TTMcjs.k; exports.setDeepValue = _chunkLOYB7TTMcjs.f; exports.valueEqual = _chunkLOYB7TTMcjs.c;
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,iIAA4H,gCAA6B,ykBAAgQ","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,iIAAqH,gCAA6B,iiBAAkP","file":"/home/runner/work/bit-form/bit-form/dist/index.cjs"}
package/dist/index.d.cts CHANGED
@@ -1,16 +1,16 @@
1
1
  import { B as BitMask, a as BitMaskName } from './types-D8DgIUhJ.cjs';
2
- import { B as BitState, a as BitTransformFn, b as BitFieldChangeEvent, c as BitBeforeSubmitEvent, d as BitAfterSubmitEvent, e as BitFieldDefinition, f as BitErrors, g as BitBeforeValidateEvent, h as BitAfterValidateEvent, i as BitConfig, j as BitComputedFn, k as BitPath, l as BitFieldState, m as BitPathValue, n as BitFieldChangeMeta, D as DeepPartial, o as BitArrayPath, p as BitArrayItem } from './bus-CILR-ENq.cjs';
3
- export { q as BitFieldConditional, r as BitFieldValidation, s as BitHistoryConfig, t as BitPersistConfig, u as BitPersistMode, v as BitPersistStorageAdapter, w as BitPlugin, x as BitPluginContext, y as BitPluginErrorEvent, z as BitPluginHooks, A as BitTouched, C as BitValidationConfig, S as ScopeStatus, V as ValidateScopeResult, E as ValidatorFn, F as bitBus } from './bus-CILR-ENq.cjs';
4
- import { B as BitResolvedConfig, a as BitValidationOptions, b as BitSelector, c as BitSelectorSubscriptionOptions, d as BitHistoryMetadata, e as BitStoreApi, f as BitStoreHooksApi } from './public-types-SU17BarA.cjs';
5
- export { g as BitEqualityFn, h as BitFrameworkConfig, i as BitPersistMetadata } from './public-types-SU17BarA.cjs';
6
- export { B as BitDeleteUploadFn, a as BitUploadFn, b as BitUploadResult } from './types-C2mpfhp1.cjs';
2
+ import { e as BitState, o as BitTransformFn, p as BitFieldChangeEvent, q as BitBeforeSubmitEvent, r as BitAfterSubmitEvent, a as BitFieldDefinition, i as BitErrors, s as BitBeforeValidateEvent, t as BitAfterValidateEvent, B as BitConfig, u as BitComputedFn, f as BitPath, m as BitFieldState, g as BitPathValue, v as BitFieldChangeMeta, h as DeepPartial, j as BitPersistMetadata, k as BitArrayPath, l as BitArrayItem } from './bus-a_GA51Qw.cjs';
3
+ export { w as BitFieldConditional, x as BitFieldValidation, y as BitHistoryConfig, z as BitPersistConfig, A as BitPersistMode, C as BitPersistStorageAdapter, d as BitPlugin, E as BitPluginContext, F as BitPluginErrorEvent, G as BitPluginHooks, H as BitTouched, I as BitValidationConfig, S as ScopeStatus, n as ValidateScopeResult, V as ValidatorFn, J as bitBus } from './bus-a_GA51Qw.cjs';
4
+ import { B as BitFrameworkConfig, a as BitValidationOptions, b as BitSelector, c as BitSelectorSubscriptionOptions, d as BitHistoryMetadata, e as BitStoreApi, f as BitStoreHooksApi } from './public-types-D14VY_4o.cjs';
5
+ export { g as BitEqualityFn } from './public-types-D14VY_4o.cjs';
6
+ export { a as BitDeleteUploadFn, B as BitUploadFn, b as BitUploadResult } from './upload-EXnJLq8k.cjs';
7
7
 
8
8
  interface BitLifecycleStorePort<T extends object> {
9
9
  getState: () => BitState<T>;
10
10
  internalUpdateState: (partial: Partial<BitState<T>>, changedPaths?: string[]) => void;
11
11
  internalSaveSnapshot: () => void;
12
12
  getTransformEntries: () => [string, BitTransformFn<T>][];
13
- config: BitResolvedConfig<T>;
13
+ config: BitFrameworkConfig<T>;
14
14
  updateDependencies: (changedPath: string, newValues: T) => string[];
15
15
  isFieldHidden: (path: string) => boolean;
16
16
  evaluateAllDependencies: (values: T) => void;
@@ -43,7 +43,7 @@ interface BitValidationStorePort<T extends object> {
43
43
  validate: (opts: BitValidationOptions) => Promise<boolean>;
44
44
  getFieldConfig: (path: string) => BitFieldDefinition<T> | undefined;
45
45
  getScopeFields: (scopeName: string) => string[];
46
- config: BitResolvedConfig<T>;
46
+ config: BitFrameworkConfig<T>;
47
47
  getRequiredErrors: (values: T) => BitErrors<T>;
48
48
  getHiddenFields: () => string[];
49
49
  emitBeforeValidate: (event: BitBeforeValidateEvent<T>) => Promise<void>;
@@ -65,11 +65,15 @@ declare class BitStore<T extends object = any> implements BitValidationStorePort
65
65
  private readonly subscriptions;
66
66
  private readonly effects;
67
67
  private readonly capabilities;
68
- config: BitResolvedConfig<T>;
69
- storeId: string;
70
- private readonly depsMg;
71
- private readonly computedMg;
72
- private readonly dirtyMg;
68
+ config: BitFrameworkConfig<T>;
69
+ readonly storeId: string;
70
+ private readonly dependencyManager;
71
+ private readonly computedManager;
72
+ private readonly dirtyManager;
73
+ private scopeFieldsIndex;
74
+ private computedEntriesCache;
75
+ private transformEntriesCache;
76
+ private invalidateFieldIndexes;
73
77
  private getCapability;
74
78
  private get validation();
75
79
  private get lifecycle();
@@ -79,7 +83,7 @@ declare class BitStore<T extends object = any> implements BitValidationStorePort
79
83
  private get query();
80
84
  private get error();
81
85
  constructor(config?: BitConfig<T>);
82
- getConfig(): BitResolvedConfig<T>;
86
+ getConfig(): BitFrameworkConfig<T>;
83
87
  getFieldConfig(path: string): BitFieldDefinition<T> | undefined;
84
88
  getScopeFields(scopeName: string): string[];
85
89
  getComputedEntries(): [string, BitComputedFn<T>][];
@@ -91,7 +95,7 @@ declare class BitStore<T extends object = any> implements BitValidationStorePort
91
95
  get isSubmitting(): boolean;
92
96
  get isDirty(): boolean;
93
97
  registerField(path: string, config: BitFieldDefinition<T>): void;
94
- unregisterField<P extends BitPath<T>>(path: P): void;
98
+ unregisterField(path: string): void;
95
99
  unregisterPrefix(prefix: string): void;
96
100
  isHidden<P extends BitPath<T>>(path: P): boolean;
97
101
  isRequired<P extends BitPath<T>>(path: P): boolean;
@@ -115,6 +119,7 @@ declare class BitStore<T extends object = any> implements BitValidationStorePort
115
119
  submit(onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>): Promise<void>;
116
120
  registerMask(name: BitMaskName, mask: BitMask): void;
117
121
  getDirtyValues(): Partial<T>;
122
+ getPersistMetadata(): BitPersistMetadata;
118
123
  restorePersisted(): Promise<boolean>;
119
124
  forceSave(): Promise<void>;
120
125
  clearPersisted(): Promise<void>;
@@ -192,4 +197,4 @@ declare function isValidationErrorShape(x: unknown): x is Record<string, string
192
197
  */
193
198
  declare function extractServerErrors(x: unknown): Record<string, string | string[]>;
194
199
 
195
- export { BitAfterSubmitEvent, BitAfterValidateEvent, BitArrayItem, BitArrayPath, BitBeforeSubmitEvent, BitBeforeValidateEvent, BitComputedFn, BitConfig, BitErrors, BitFieldChangeEvent, BitFieldChangeMeta, BitFieldDefinition, BitFieldState, BitHistoryMetadata, BitPath, BitPathValue, BitSelector, BitSelectorSubscriptionOptions, BitState, BitStore, BitStoreApi, BitStoreHooksApi, BitTransformFn, BitValidationOptions, DeepPartial, cleanPrefixedKeys, createBitStore, deepClone, deepEqual, deepMerge, extractServerErrors, getDeepValue, isValidationErrorShape, resolveBitStoreForHooks, setDeepValue, valueEqual };
200
+ export { BitAfterSubmitEvent, BitAfterValidateEvent, BitArrayItem, BitArrayPath, BitBeforeSubmitEvent, BitBeforeValidateEvent, BitComputedFn, BitConfig, BitErrors, BitFieldChangeEvent, BitFieldChangeMeta, BitFieldDefinition, BitFieldState, BitFrameworkConfig, BitHistoryMetadata, BitPath, BitPathValue, BitPersistMetadata, BitSelector, BitSelectorSubscriptionOptions, BitState, BitStoreApi, BitStoreHooksApi, BitTransformFn, BitValidationOptions, DeepPartial, cleanPrefixedKeys, createBitStore, deepClone, deepEqual, deepMerge, extractServerErrors, getDeepValue, isValidationErrorShape, resolveBitStoreForHooks, setDeepValue, valueEqual };
package/dist/index.d.ts CHANGED
@@ -1,16 +1,16 @@
1
1
  import { B as BitMask, a as BitMaskName } from './types-D8DgIUhJ.js';
2
- import { B as BitState, a as BitTransformFn, b as BitFieldChangeEvent, c as BitBeforeSubmitEvent, d as BitAfterSubmitEvent, e as BitFieldDefinition, f as BitErrors, g as BitBeforeValidateEvent, h as BitAfterValidateEvent, i as BitConfig, j as BitComputedFn, k as BitPath, l as BitFieldState, m as BitPathValue, n as BitFieldChangeMeta, D as DeepPartial, o as BitArrayPath, p as BitArrayItem } from './bus-DHQHDwUp.js';
3
- export { q as BitFieldConditional, r as BitFieldValidation, s as BitHistoryConfig, t as BitPersistConfig, u as BitPersistMode, v as BitPersistStorageAdapter, w as BitPlugin, x as BitPluginContext, y as BitPluginErrorEvent, z as BitPluginHooks, A as BitTouched, C as BitValidationConfig, S as ScopeStatus, V as ValidateScopeResult, E as ValidatorFn, F as bitBus } from './bus-DHQHDwUp.js';
4
- import { B as BitResolvedConfig, a as BitValidationOptions, b as BitSelector, c as BitSelectorSubscriptionOptions, d as BitHistoryMetadata, e as BitStoreApi, f as BitStoreHooksApi } from './public-types-Bgws0aVJ.js';
5
- export { g as BitEqualityFn, h as BitFrameworkConfig, i as BitPersistMetadata } from './public-types-Bgws0aVJ.js';
6
- export { B as BitDeleteUploadFn, a as BitUploadFn, b as BitUploadResult } from './types-C2mpfhp1.js';
2
+ import { e as BitState, o as BitTransformFn, p as BitFieldChangeEvent, q as BitBeforeSubmitEvent, r as BitAfterSubmitEvent, a as BitFieldDefinition, i as BitErrors, s as BitBeforeValidateEvent, t as BitAfterValidateEvent, B as BitConfig, u as BitComputedFn, f as BitPath, m as BitFieldState, g as BitPathValue, v as BitFieldChangeMeta, h as DeepPartial, j as BitPersistMetadata, k as BitArrayPath, l as BitArrayItem } from './bus-BQI1FIOs.js';
3
+ export { w as BitFieldConditional, x as BitFieldValidation, y as BitHistoryConfig, z as BitPersistConfig, A as BitPersistMode, C as BitPersistStorageAdapter, d as BitPlugin, E as BitPluginContext, F as BitPluginErrorEvent, G as BitPluginHooks, H as BitTouched, I as BitValidationConfig, S as ScopeStatus, n as ValidateScopeResult, V as ValidatorFn, J as bitBus } from './bus-BQI1FIOs.js';
4
+ import { B as BitFrameworkConfig, a as BitValidationOptions, b as BitSelector, c as BitSelectorSubscriptionOptions, d as BitHistoryMetadata, e as BitStoreApi, f as BitStoreHooksApi } from './public-types-D3WIiMGu.js';
5
+ export { g as BitEqualityFn } from './public-types-D3WIiMGu.js';
6
+ export { a as BitDeleteUploadFn, B as BitUploadFn, b as BitUploadResult } from './upload-EXnJLq8k.js';
7
7
 
8
8
  interface BitLifecycleStorePort<T extends object> {
9
9
  getState: () => BitState<T>;
10
10
  internalUpdateState: (partial: Partial<BitState<T>>, changedPaths?: string[]) => void;
11
11
  internalSaveSnapshot: () => void;
12
12
  getTransformEntries: () => [string, BitTransformFn<T>][];
13
- config: BitResolvedConfig<T>;
13
+ config: BitFrameworkConfig<T>;
14
14
  updateDependencies: (changedPath: string, newValues: T) => string[];
15
15
  isFieldHidden: (path: string) => boolean;
16
16
  evaluateAllDependencies: (values: T) => void;
@@ -43,7 +43,7 @@ interface BitValidationStorePort<T extends object> {
43
43
  validate: (opts: BitValidationOptions) => Promise<boolean>;
44
44
  getFieldConfig: (path: string) => BitFieldDefinition<T> | undefined;
45
45
  getScopeFields: (scopeName: string) => string[];
46
- config: BitResolvedConfig<T>;
46
+ config: BitFrameworkConfig<T>;
47
47
  getRequiredErrors: (values: T) => BitErrors<T>;
48
48
  getHiddenFields: () => string[];
49
49
  emitBeforeValidate: (event: BitBeforeValidateEvent<T>) => Promise<void>;
@@ -65,11 +65,15 @@ declare class BitStore<T extends object = any> implements BitValidationStorePort
65
65
  private readonly subscriptions;
66
66
  private readonly effects;
67
67
  private readonly capabilities;
68
- config: BitResolvedConfig<T>;
69
- storeId: string;
70
- private readonly depsMg;
71
- private readonly computedMg;
72
- private readonly dirtyMg;
68
+ config: BitFrameworkConfig<T>;
69
+ readonly storeId: string;
70
+ private readonly dependencyManager;
71
+ private readonly computedManager;
72
+ private readonly dirtyManager;
73
+ private scopeFieldsIndex;
74
+ private computedEntriesCache;
75
+ private transformEntriesCache;
76
+ private invalidateFieldIndexes;
73
77
  private getCapability;
74
78
  private get validation();
75
79
  private get lifecycle();
@@ -79,7 +83,7 @@ declare class BitStore<T extends object = any> implements BitValidationStorePort
79
83
  private get query();
80
84
  private get error();
81
85
  constructor(config?: BitConfig<T>);
82
- getConfig(): BitResolvedConfig<T>;
86
+ getConfig(): BitFrameworkConfig<T>;
83
87
  getFieldConfig(path: string): BitFieldDefinition<T> | undefined;
84
88
  getScopeFields(scopeName: string): string[];
85
89
  getComputedEntries(): [string, BitComputedFn<T>][];
@@ -91,7 +95,7 @@ declare class BitStore<T extends object = any> implements BitValidationStorePort
91
95
  get isSubmitting(): boolean;
92
96
  get isDirty(): boolean;
93
97
  registerField(path: string, config: BitFieldDefinition<T>): void;
94
- unregisterField<P extends BitPath<T>>(path: P): void;
98
+ unregisterField(path: string): void;
95
99
  unregisterPrefix(prefix: string): void;
96
100
  isHidden<P extends BitPath<T>>(path: P): boolean;
97
101
  isRequired<P extends BitPath<T>>(path: P): boolean;
@@ -115,6 +119,7 @@ declare class BitStore<T extends object = any> implements BitValidationStorePort
115
119
  submit(onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>): Promise<void>;
116
120
  registerMask(name: BitMaskName, mask: BitMask): void;
117
121
  getDirtyValues(): Partial<T>;
122
+ getPersistMetadata(): BitPersistMetadata;
118
123
  restorePersisted(): Promise<boolean>;
119
124
  forceSave(): Promise<void>;
120
125
  clearPersisted(): Promise<void>;
@@ -192,4 +197,4 @@ declare function isValidationErrorShape(x: unknown): x is Record<string, string
192
197
  */
193
198
  declare function extractServerErrors(x: unknown): Record<string, string | string[]>;
194
199
 
195
- export { BitAfterSubmitEvent, BitAfterValidateEvent, BitArrayItem, BitArrayPath, BitBeforeSubmitEvent, BitBeforeValidateEvent, BitComputedFn, BitConfig, BitErrors, BitFieldChangeEvent, BitFieldChangeMeta, BitFieldDefinition, BitFieldState, BitHistoryMetadata, BitPath, BitPathValue, BitSelector, BitSelectorSubscriptionOptions, BitState, BitStore, BitStoreApi, BitStoreHooksApi, BitTransformFn, BitValidationOptions, DeepPartial, cleanPrefixedKeys, createBitStore, deepClone, deepEqual, deepMerge, extractServerErrors, getDeepValue, isValidationErrorShape, resolveBitStoreForHooks, setDeepValue, valueEqual };
200
+ export { BitAfterSubmitEvent, BitAfterValidateEvent, BitArrayItem, BitArrayPath, BitBeforeSubmitEvent, BitBeforeValidateEvent, BitComputedFn, BitConfig, BitErrors, BitFieldChangeEvent, BitFieldChangeMeta, BitFieldDefinition, BitFieldState, BitFrameworkConfig, BitHistoryMetadata, BitPath, BitPathValue, BitPersistMetadata, BitSelector, BitSelectorSubscriptionOptions, BitState, BitStoreApi, BitStoreHooksApi, BitTransformFn, BitValidationOptions, DeepPartial, cleanPrefixedKeys, createBitStore, deepClone, deepEqual, deepMerge, extractServerErrors, getDeepValue, isValidationErrorShape, resolveBitStoreForHooks, setDeepValue, valueEqual };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{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}from"./chunk-ULC4OPIQ.js";import"./chunk-VDWCFNA6.js";export{c as BitStore,b as bitBus,t as cleanPrefixedKeys,g as createBitStore,o as deepClone,f as deepEqual,r as deepMerge,a as extractServerErrors,m as getDeepValue,x as isValidationErrorShape,d as resolveBitStoreForHooks,p as setDeepValue,e as valueEqual};
1
+ import{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}from"./chunk-AE4G32HS.js";import"./chunk-7LMNIQTT.js";export{b as bitBus,t as cleanPrefixedKeys,d as createBitStore,o as deepClone,f as deepEqual,r as deepMerge,a as extractServerErrors,m as getDeepValue,x as isValidationErrorShape,c as resolveBitStoreForHooks,p as setDeepValue,e as valueEqual};
2
2
  //# sourceMappingURL=index.js.map
package/dist/mask.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkPA6T2CBRcjs = require('./chunk-PA6T2CBR.cjs');exports.bitMasks = _chunkPA6T2CBRcjs.N; exports.createCreditCardMask = _chunkPA6T2CBRcjs.e; exports.createCurrencyMask = _chunkPA6T2CBRcjs.d; exports.createDateMask = _chunkPA6T2CBRcjs.f; exports.createPatternMask = _chunkPA6T2CBRcjs.c; exports.maskBRL = _chunkPA6T2CBRcjs.g; exports.maskCEP = _chunkPA6T2CBRcjs.s; exports.maskCNH = _chunkPA6T2CBRcjs.v; exports.maskCNPJ = _chunkPA6T2CBRcjs.p; exports.maskCPF = _chunkPA6T2CBRcjs.o; exports.maskCPFCNPJ = _chunkPA6T2CBRcjs.x; exports.maskCVV = _chunkPA6T2CBRcjs.E; exports.maskColorHex = _chunkPA6T2CBRcjs.H; exports.maskCreditCard = _chunkPA6T2CBRcjs.D; exports.maskDate = _chunkPA6T2CBRcjs.t; exports.maskDateISO = _chunkPA6T2CBRcjs.F; exports.maskDateUS = _chunkPA6T2CBRcjs.B; exports.maskDecimal = _chunkPA6T2CBRcjs.m; exports.maskEUR = _chunkPA6T2CBRcjs.i; exports.maskGBP = _chunkPA6T2CBRcjs.j; exports.maskIBAN = _chunkPA6T2CBRcjs.K; exports.maskIPv4 = _chunkPA6T2CBRcjs.I; exports.maskIPv6 = _chunkPA6T2CBRcjs.J; exports.maskInteger = _chunkPA6T2CBRcjs.n; exports.maskJPY = _chunkPA6T2CBRcjs.k; exports.maskLandline = _chunkPA6T2CBRcjs.r; exports.maskMacAddress = _chunkPA6T2CBRcjs.G; exports.maskPercent = _chunkPA6T2CBRcjs.l; exports.maskPhone = _chunkPA6T2CBRcjs.q; exports.maskPlate = _chunkPA6T2CBRcjs.y; exports.maskRG = _chunkPA6T2CBRcjs.w; exports.maskSSN = _chunkPA6T2CBRcjs.C; exports.maskTime = _chunkPA6T2CBRcjs.u; exports.maskUSD = _chunkPA6T2CBRcjs.h; exports.maskUSPhone = _chunkPA6T2CBRcjs.z; exports.maskZipCode = _chunkPA6T2CBRcjs.A; exports.unmask = _chunkPA6T2CBRcjs.a; exports.unmaskCurrency = _chunkPA6T2CBRcjs.b;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkEI5L5L3Rcjs = require('./chunk-EI5L5L3R.cjs');exports.bitMasks = _chunkEI5L5L3Rcjs.O; exports.createCreditCardMask = _chunkEI5L5L3Rcjs.e; exports.createCurrencyMask = _chunkEI5L5L3Rcjs.d; exports.createDateMask = _chunkEI5L5L3Rcjs.f; exports.createPatternMask = _chunkEI5L5L3Rcjs.c; exports.maskBRL = _chunkEI5L5L3Rcjs.g; exports.maskCEP = _chunkEI5L5L3Rcjs.s; exports.maskCNH = _chunkEI5L5L3Rcjs.v; exports.maskCNPJ = _chunkEI5L5L3Rcjs.p; exports.maskCPF = _chunkEI5L5L3Rcjs.o; exports.maskCPFCNPJ = _chunkEI5L5L3Rcjs.x; exports.maskCVV = _chunkEI5L5L3Rcjs.E; exports.maskColorHex = _chunkEI5L5L3Rcjs.H; exports.maskCreditCard = _chunkEI5L5L3Rcjs.D; exports.maskDate = _chunkEI5L5L3Rcjs.t; exports.maskDateISO = _chunkEI5L5L3Rcjs.F; exports.maskDateUS = _chunkEI5L5L3Rcjs.B; exports.maskDecimal = _chunkEI5L5L3Rcjs.m; exports.maskEUR = _chunkEI5L5L3Rcjs.i; exports.maskGBP = _chunkEI5L5L3Rcjs.j; exports.maskIBAN = _chunkEI5L5L3Rcjs.K; exports.maskIPv4 = _chunkEI5L5L3Rcjs.I; exports.maskIPv6 = _chunkEI5L5L3Rcjs.J; exports.maskInteger = _chunkEI5L5L3Rcjs.n; exports.maskJPY = _chunkEI5L5L3Rcjs.k; exports.maskLandline = _chunkEI5L5L3Rcjs.r; exports.maskMacAddress = _chunkEI5L5L3Rcjs.G; exports.maskPercent = _chunkEI5L5L3Rcjs.l; exports.maskPhone = _chunkEI5L5L3Rcjs.q; exports.maskPlate = _chunkEI5L5L3Rcjs.y; exports.maskRG = _chunkEI5L5L3Rcjs.w; exports.maskSSN = _chunkEI5L5L3Rcjs.C; exports.maskTime = _chunkEI5L5L3Rcjs.u; exports.maskUSD = _chunkEI5L5L3Rcjs.h; exports.maskUSPhone = _chunkEI5L5L3Rcjs.z; exports.maskZipCode = _chunkEI5L5L3Rcjs.A; exports.unmask = _chunkEI5L5L3Rcjs.a; exports.unmaskCurrency = _chunkEI5L5L3Rcjs.b;
2
2
  //# sourceMappingURL=mask.cjs.map
package/dist/mask.js CHANGED
@@ -1,2 +1,2 @@
1
- import{A as U,B as g,C as J,D as R,E as h,F as v,G as A,H as E,I as F,J as G,K as H,N as L,a,b as s,c as k,d as e,e as m,f as t,g as r,h as C,i as n,j as o,k as P,l as i,m as M,n as c,o as d,p,q as B,r as D,s as N,t as f,u,v as I,w as S,x as l,y as x,z as y}from"./chunk-VDWCFNA6.js";export{L as bitMasks,m as createCreditCardMask,e as createCurrencyMask,t as createDateMask,k as createPatternMask,r as maskBRL,N as maskCEP,I as maskCNH,p as maskCNPJ,d as maskCPF,l as maskCPFCNPJ,h as maskCVV,E as maskColorHex,R as maskCreditCard,f as maskDate,v as maskDateISO,g as maskDateUS,M as maskDecimal,n as maskEUR,o as maskGBP,H as maskIBAN,F as maskIPv4,G as maskIPv6,c as maskInteger,P as maskJPY,D as maskLandline,A as maskMacAddress,i as maskPercent,B as maskPhone,x as maskPlate,S as maskRG,J as maskSSN,u as maskTime,C as maskUSD,y as maskUSPhone,U as maskZipCode,a as unmask,s as unmaskCurrency};
1
+ import{A as U,B as g,C as J,D as R,E as h,F as v,G as A,H as E,I as F,J as G,K as H,O as L,a,b as s,c as k,d as e,e as m,f as t,g as r,h as C,i as n,j as o,k as P,l as i,m as M,n as c,o as d,p,q as B,r as D,s as N,t as f,u,v as I,w as S,x as l,y as x,z as y}from"./chunk-7LMNIQTT.js";export{L as bitMasks,m as createCreditCardMask,e as createCurrencyMask,t as createDateMask,k as createPatternMask,r as maskBRL,N as maskCEP,I as maskCNH,p as maskCNPJ,d as maskCPF,l as maskCPFCNPJ,h as maskCVV,E as maskColorHex,R as maskCreditCard,f as maskDate,v as maskDateISO,g as maskDateUS,M as maskDecimal,n as maskEUR,o as maskGBP,H as maskIBAN,F as maskIPv4,G as maskIPv6,c as maskInteger,P as maskJPY,D as maskLandline,A as maskMacAddress,i as maskPercent,B as maskPhone,x as maskPlate,S as maskRG,J as maskSSN,u as maskTime,C as maskUSD,y as maskUSPhone,U as maskZipCode,a as unmask,s as unmaskCurrency};
2
2
  //# sourceMappingURL=mask.js.map
@@ -1,4 +1,4 @@
1
- import { i as BitConfig, E as ValidatorFn, e as BitFieldDefinition, G as DevToolsOptions, H as BitPersistResolvedConfig, w as BitPlugin, B as BitState, k as BitPath, m as BitPathValue, D as DeepPartial, f as BitErrors, o as BitArrayPath, p as BitArrayItem, S as ScopeStatus, l as BitFieldState } from './bus-CILR-ENq.cjs';
1
+ import { B as BitConfig, V as ValidatorFn, a as BitFieldDefinition, D as DevToolsOptions, b as BitPersistResolvedConfig, c as BitIdFactory, d as BitPlugin, e as BitState, f as BitPath, g as BitPathValue, h as DeepPartial, i as BitErrors, j as BitPersistMetadata, k as BitArrayPath, l as BitArrayItem, S as ScopeStatus, m as BitFieldState } from './bus-a_GA51Qw.cjs';
2
2
  import { B as BitMask, a as BitMaskName } from './types-D8DgIUhJ.cjs';
3
3
 
4
4
  type BitSelector<T extends object, TSlice> = (state: Readonly<BitState<T>>) => TSlice;
@@ -20,11 +20,6 @@ interface BitHistoryMetadata {
20
20
  historyIndex: number;
21
21
  historySize: number;
22
22
  }
23
- interface BitPersistMetadata {
24
- isSaving: boolean;
25
- isRestoring: boolean;
26
- error: Error | null;
27
- }
28
23
  interface BitFrameworkConfig<T extends object = any> extends BitConfig<T> {
29
24
  initialValues: T;
30
25
  resolver?: ValidatorFn<T>;
@@ -35,10 +30,9 @@ interface BitFrameworkConfig<T extends object = any> extends BitConfig<T> {
35
30
  fields?: Record<string, BitFieldDefinition<T>>;
36
31
  devTools?: boolean | DevToolsOptions;
37
32
  persist: BitPersistResolvedConfig<T>;
33
+ idFactory: BitIdFactory;
38
34
  plugins: BitPlugin<T>[];
39
35
  }
40
- interface BitResolvedConfig<T extends object = any> extends BitFrameworkConfig<T> {
41
- }
42
36
  interface BitStoreApi<T extends object = any> {
43
37
  readonly config: Readonly<BitFrameworkConfig<T>>;
44
38
  getConfig(): Readonly<BitFrameworkConfig<T>>;
@@ -57,6 +51,7 @@ interface BitStoreApi<T extends object = any> {
57
51
  submit(onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>): Promise<void>;
58
52
  registerMask(name: BitMaskName, mask: BitMask): void;
59
53
  getDirtyValues(): Partial<T>;
54
+ getPersistMetadata(): BitPersistMetadata;
60
55
  restorePersisted(): Promise<boolean>;
61
56
  forceSave(): Promise<void>;
62
57
  clearPersisted(): Promise<void>;
@@ -91,4 +86,4 @@ interface BitStoreHooksApi<T extends object = any> extends BitStoreApi<T> {
91
86
  getScopeFields(scopeName: string): string[];
92
87
  }
93
88
 
94
- export type { BitResolvedConfig as B, BitValidationOptions as a, BitSelector as b, BitSelectorSubscriptionOptions as c, BitHistoryMetadata as d, BitStoreApi as e, BitStoreHooksApi as f, BitEqualityFn as g, BitFrameworkConfig as h, BitPersistMetadata as i };
89
+ export type { BitFrameworkConfig as B, BitValidationOptions as a, BitSelector as b, BitSelectorSubscriptionOptions as c, BitHistoryMetadata as d, BitStoreApi as e, BitStoreHooksApi as f, BitEqualityFn as g };
@@ -1,4 +1,4 @@
1
- import { i as BitConfig, E as ValidatorFn, e as BitFieldDefinition, G as DevToolsOptions, H as BitPersistResolvedConfig, w as BitPlugin, B as BitState, k as BitPath, m as BitPathValue, D as DeepPartial, f as BitErrors, o as BitArrayPath, p as BitArrayItem, S as ScopeStatus, l as BitFieldState } from './bus-DHQHDwUp.js';
1
+ import { B as BitConfig, V as ValidatorFn, a as BitFieldDefinition, D as DevToolsOptions, b as BitPersistResolvedConfig, c as BitIdFactory, d as BitPlugin, e as BitState, f as BitPath, g as BitPathValue, h as DeepPartial, i as BitErrors, j as BitPersistMetadata, k as BitArrayPath, l as BitArrayItem, S as ScopeStatus, m as BitFieldState } from './bus-BQI1FIOs.js';
2
2
  import { B as BitMask, a as BitMaskName } from './types-D8DgIUhJ.js';
3
3
 
4
4
  type BitSelector<T extends object, TSlice> = (state: Readonly<BitState<T>>) => TSlice;
@@ -20,11 +20,6 @@ interface BitHistoryMetadata {
20
20
  historyIndex: number;
21
21
  historySize: number;
22
22
  }
23
- interface BitPersistMetadata {
24
- isSaving: boolean;
25
- isRestoring: boolean;
26
- error: Error | null;
27
- }
28
23
  interface BitFrameworkConfig<T extends object = any> extends BitConfig<T> {
29
24
  initialValues: T;
30
25
  resolver?: ValidatorFn<T>;
@@ -35,10 +30,9 @@ interface BitFrameworkConfig<T extends object = any> extends BitConfig<T> {
35
30
  fields?: Record<string, BitFieldDefinition<T>>;
36
31
  devTools?: boolean | DevToolsOptions;
37
32
  persist: BitPersistResolvedConfig<T>;
33
+ idFactory: BitIdFactory;
38
34
  plugins: BitPlugin<T>[];
39
35
  }
40
- interface BitResolvedConfig<T extends object = any> extends BitFrameworkConfig<T> {
41
- }
42
36
  interface BitStoreApi<T extends object = any> {
43
37
  readonly config: Readonly<BitFrameworkConfig<T>>;
44
38
  getConfig(): Readonly<BitFrameworkConfig<T>>;
@@ -57,6 +51,7 @@ interface BitStoreApi<T extends object = any> {
57
51
  submit(onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>): Promise<void>;
58
52
  registerMask(name: BitMaskName, mask: BitMask): void;
59
53
  getDirtyValues(): Partial<T>;
54
+ getPersistMetadata(): BitPersistMetadata;
60
55
  restorePersisted(): Promise<boolean>;
61
56
  forceSave(): Promise<void>;
62
57
  clearPersisted(): Promise<void>;
@@ -91,4 +86,4 @@ interface BitStoreHooksApi<T extends object = any> extends BitStoreApi<T> {
91
86
  getScopeFields(scopeName: string): string[];
92
87
  }
93
88
 
94
- export type { BitResolvedConfig as B, BitValidationOptions as a, BitSelector as b, BitSelectorSubscriptionOptions as c, BitHistoryMetadata as d, BitStoreApi as e, BitStoreHooksApi as f, BitEqualityFn as g, BitFrameworkConfig as h, BitPersistMetadata as i };
89
+ export type { BitFrameworkConfig as B, BitValidationOptions as a, BitSelector as b, BitSelectorSubscriptionOptions as c, BitHistoryMetadata as d, BitStoreApi as e, BitStoreHooksApi as f, BitEqualityFn as g };
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkT3XN5O7Vcjs = require('../chunk-T3XN5O7V.cjs');require('../chunk-NNKZFXEK.cjs');require('../chunk-JO37BU2C.cjs');var _chunkPA6T2CBRcjs = require('../chunk-PA6T2CBR.cjs');var _react = require('react');function y(e){let{fieldState:t,setValue:a,setBlur:o,store:r}=_chunkT3XN5O7Vcjs.d.call(void 0, e),i=_react.useMemo.call(void 0, ()=>r.resolveMask(e),[r.config.masks,r.config.fields,e]),s=_react.useMemo.call(void 0, ()=>_chunkPA6T2CBRcjs.L.call(void 0, t.value,_nullishCoalesce(i, () => (void 0))),[t.value,i]),u=_react.useCallback.call(void 0, c=>a(_chunkPA6T2CBRcjs.M.call(void 0, c,_nullishCoalesce(i, () => (void 0)))),[i,a]),{isHidden:m,isRequired:B,value:l,error:n,touched:d,isDirty:b,isValidating:h}=t,M=!!(d&&n),E=d?n:void 0,x=_react.useCallback.call(void 0, c=>{let P=_optionalChain([c, 'optionalAccess', _ => _.target])?c.target.value:c;u(P)},[u]),F=_react.useCallback.call(void 0, ()=>{o()},[o]);return{value:l,displayValue:s,setValue:u,setBlur:o,onChange:x,onBlur:F,props:{value:s,onChange:x,onBlur:F},meta:{error:E,touched:d,invalid:M,isDirty:b,isValidating:h,isHidden:m,isRequired:B,hasError:!!n}}}function K(){let e=_chunkT3XN5O7Vcjs.b.call(void 0, ),t=_react.useRef.call(void 0, null),a=_react.useCallback.call(void 0, ()=>{let s=e.getHistoryMetadata();if(t.current&&t.current.canUndo===s.canUndo&&t.current.canRedo===s.canRedo&&t.current.historyIndex===s.historyIndex&&t.current.historySize===s.historySize)return t.current;let u={canUndo:s.canUndo,canRedo:s.canRedo,historyIndex:s.historyIndex,historySize:s.historySize};return t.current=u,u},[e]),o=_react.useSyncExternalStore.call(void 0, e.subscribe.bind(e),a,a),r=_react.useCallback.call(void 0, ()=>{e.undo()},[e]),i=_react.useCallback.call(void 0, ()=>{e.redo()},[e]);return{...o,undo:r,redo:i}}function W(e,t,a){let o=_chunkT3XN5O7Vcjs.b.call(void 0, ),r=y(e),i=_react.useRef.call(void 0, null),[s,u]=_react.useState.call(void 0, !1),m=_react.useCallback.call(void 0, async l=>{if(l){u(!0),o.setError(e,void 0);try{let n=await t(l);r.setValue(n.url),i.current=n.key,o.setError(e,void 0)}catch(n){let d=n instanceof Error?n.message:"Upload failed";o.setError(e,d)}finally{u(!1)}}},[t,r,e,o]),B=_react.useCallback.call(void 0, async()=>{let l=i.current;if(l&&a)try{await a(l)}catch(n){let d=n instanceof Error?n.message:"Delete failed";o.setError(e,d);return}r.setValue(null),i.current=null,o.setError(e,void 0)},[a,r,e,o]);return{value:r.value,setValue:r.setValue,error:_optionalChain([r, 'access', _2 => _2.meta, 'optionalAccess', _3 => _3.error]),isValidating:!!_optionalChain([r, 'access', _4 => _4.meta, 'optionalAccess', _5 => _5.isValidating])||s,upload:m,remove:B}}exports.BitFormProvider = _chunkT3XN5O7Vcjs.a; exports.useBitArray = _chunkT3XN5O7Vcjs.e; exports.useBitField = y; exports.useBitForm = _chunkT3XN5O7Vcjs.c; exports.useBitHistory = K; exports.useBitPersist = _chunkT3XN5O7Vcjs.i; exports.useBitScope = _chunkT3XN5O7Vcjs.f; exports.useBitSteps = _chunkT3XN5O7Vcjs.g; exports.useBitStore = _chunkT3XN5O7Vcjs.b; exports.useBitUpload = W; exports.useBitWatch = _chunkT3XN5O7Vcjs.h;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkZO3GXKF3cjs = require('../chunk-ZO3GXKF3.cjs');var _chunkIV32WXCFcjs = require('../chunk-IV32WXCF.cjs');require('../chunk-RFFMBY7M.cjs');require('../chunk-LOYB7TTM.cjs');var _chunkEI5L5L3Rcjs = require('../chunk-EI5L5L3R.cjs');var _react = require('react');function y(e){let{fieldState:t,setValue:a,setBlur:s,store:r}=_chunkZO3GXKF3cjs.d.call(void 0, e),i=_react.useMemo.call(void 0, ()=>r.resolveMask(e),[r.config.masks,r.config.fields,e]),o=_react.useMemo.call(void 0, ()=>_chunkEI5L5L3Rcjs.M.call(void 0, t.value,_nullishCoalesce(i, () => (void 0))),[t.value,i]),l=_react.useCallback.call(void 0, d=>a(_chunkEI5L5L3Rcjs.N.call(void 0, d,_nullishCoalesce(i, () => (void 0)))),[i,a]),{isHidden:c,isRequired:m,value:B,error:n,touched:u,isDirty:M,isValidating:T}=t,k=!!(u&&n),I=u?n:void 0,F=_react.useCallback.call(void 0, d=>{let H=_chunkEI5L5L3Rcjs.L.call(void 0, d)?_optionalChain([d, 'access', _ => _.target, 'optionalAccess', _2 => _2.value]):d;l(H)},[l]),x=_react.useCallback.call(void 0, ()=>{s()},[s]);return{value:B,displayValue:o,setValue:l,setBlur:s,onChange:F,onBlur:x,props:{value:o,onChange:F,onBlur:x},meta:{error:I,touched:u,invalid:k,isDirty:M,isValidating:T,isHidden:c,isRequired:m,hasError:!!n}}}function L(){let e=_chunkZO3GXKF3cjs.b.call(void 0, ),t=_react.useRef.call(void 0, null),a=_react.useCallback.call(void 0, ()=>{let o=e.getHistoryMetadata();if(t.current&&t.current.canUndo===o.canUndo&&t.current.canRedo===o.canRedo&&t.current.historyIndex===o.historyIndex&&t.current.historySize===o.historySize)return t.current;let l={canUndo:o.canUndo,canRedo:o.canRedo,historyIndex:o.historyIndex,historySize:o.historySize};return t.current=l,l},[e]),s=_react.useSyncExternalStore.call(void 0, e.subscribe.bind(e),a,a),r=_react.useCallback.call(void 0, ()=>{e.undo()},[e]),i=_react.useCallback.call(void 0, ()=>{e.redo()},[e]);return{...s,undo:r,redo:i}}function G(e,t,a){let s=_chunkZO3GXKF3cjs.b.call(void 0, ),r=y(e),i=_react.useRef.call(void 0, null),[o,l]=_react.useState.call(void 0, !1),c={setLoading:l,setError:(n,u)=>s.setError(n,u),setValue:n=>r.setValue(n),getUploadKey:()=>i.current,setUploadKey:n=>{i.current=n}},m=_react.useCallback.call(void 0, _chunkIV32WXCFcjs.a.call(void 0, e,t,c),[t,r,e,s]),B=_react.useCallback.call(void 0, _chunkIV32WXCFcjs.b.call(void 0, e,a,c),[a,r,e,s]);return{value:r.value,setValue:r.setValue,error:_optionalChain([r, 'access', _3 => _3.meta, 'optionalAccess', _4 => _4.error]),isValidating:!!_optionalChain([r, 'access', _5 => _5.meta, 'optionalAccess', _6 => _6.isValidating])||o,upload:m,remove:B}}exports.BitFormProvider = _chunkZO3GXKF3cjs.a; exports.useBitArray = _chunkZO3GXKF3cjs.e; exports.useBitField = y; exports.useBitForm = _chunkZO3GXKF3cjs.c; exports.useBitHistory = L; exports.useBitPersist = _chunkZO3GXKF3cjs.i; exports.useBitScope = _chunkZO3GXKF3cjs.f; exports.useBitSteps = _chunkZO3GXKF3cjs.g; exports.useBitStore = _chunkZO3GXKF3cjs.b; exports.useBitUpload = G; exports.useBitWatch = _chunkZO3GXKF3cjs.h;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/react/index.cjs","../../src/react/use-bit-field.ts","../../src/react/use-bit-history.ts","../../src/react/use-bit-upload.ts"],"names":["useBitField","path","fieldState","rawSetValue","setBlur","store","useBitFieldBase","resolvedMask","useMemo","displayValue","formatMaskedValue","setValue","useCallback","val","parseMaskedInput","isHidden","isRequired","value","error","touched","isDirty","isValidating","invalid","visibleError","onChange","e","onBlur","useBitHistory","useBitStore","lastMeta","useRef","getSnapshot","nextMeta","stableMeta","meta","useSyncExternalStore","undo","redo","useBitUpload","fieldPath","uploadFn","deleteFile","field","uploadKeyRef","isUploading","setIsUploading","useState","upload","file","result","message","remove","uploadKey"],"mappings":"AAAA,0uBAAiG,iCAA8B,iCAA8B,yDAAiD,8BCAzK,SAarBA,CAAAA,CAGdC,CAAAA,CAAsC,CACtC,GAAM,CACJ,UAAA,CAAAC,CAAAA,CACA,QAAA,CAAUC,CAAAA,CACV,OAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CACF,CAAA,CAAIC,iCAAAA,CAAsD,CAAA,CAEpDC,CAAAA,CAAeC,4BAAAA,CAAQ,CAAA,EACpBH,CAAAA,CAAM,WAAA,CAAYJ,CAAc,CAAA,CACtC,CAACI,CAAAA,CAAM,MAAA,CAAO,KAAA,CAAOA,CAAAA,CAAM,MAAA,CAAO,MAAA,CAAQJ,CAAI,CAAC,CAAA,CAE5CQ,CAAAA,CAAeD,4BAAAA,CACnB,CAAA,EAAME,iCAAAA,CAAkBR,CAAW,KAAA,kBAAOK,CAAAA,SAAgB,KAAA,GAAS,CAAA,CACnE,CAACL,CAAAA,CAAW,KAAA,CAAOK,CAAY,CACjC,CAAA,CAEMI,CAAAA,CAAWC,gCAAAA,CACdC,EACCV,CAAAA,CAAYW,iCAAAA,CAAiBD,kBAAKN,CAAAA,SAAgB,KAAA,GAAS,CAAQ,CAAA,CACrE,CAACA,CAAAA,CAAcJ,CAAW,CAC5B,CAAA,CAEM,CAAE,QAAA,CAAAY,CAAAA,CAAU,UAAA,CAAAC,CAAAA,CAAY,KAAA,CAAAC,CAAAA,CAAO,KAAA,CAAAC,CAAAA,CAAO,OAAA,CAAAC,CAAAA,CAAS,OAAA,CAAAC,CAAAA,CAAS,YAAA,CAAAC,CAAa,CAAA,CACzEnB,CAAAA,CAEIoB,CAAAA,CAAU,CAAC,CAAA,CAAEH,CAAAA,EAAWD,CAAAA,CAAAA,CACxBK,CAAAA,CAAeJ,CAAAA,CAAUD,CAAAA,CAAQ,KAAA,CAAA,CAEjCM,CAAAA,CAAWZ,gCAAAA,CACda,EAAW,CACV,IAAMZ,CAAAA,iBAAMY,CAAAA,2BAAG,QAAA,CAASA,CAAAA,CAAE,MAAA,CAAO,KAAA,CAAQA,CAAAA,CACzCd,CAAAA,CAASE,CAAG,CACd,CAAA,CACA,CAACF,CAAQ,CACX,CAAA,CAEMe,CAAAA,CAASd,gCAAAA,CAAY,CAAA,EAAM,CAC/BR,CAAAA,CAAQ,CACV,CAAA,CAAG,CAACA,CAAO,CAAC,CAAA,CAEZ,MAAO,CAEL,KAAA,CAAOa,CAAAA,CACP,YAAA,CAAAR,CAAAA,CACA,QAAA,CAAAE,CAAAA,CACA,OAAA,CAAAP,CAAAA,CACA,QAAA,CAAAoB,CAAAA,CACA,MAAA,CAAAE,CAAAA,CAEA,KAAA,CAAO,CACL,KAAA,CAAOjB,CAAAA,CACP,QAAA,CAAAe,CAAAA,CACA,MAAA,CAAAE,CACF,CAAA,CAEA,IAAA,CAAM,CACJ,KAAA,CAAOH,CAAAA,CACP,OAAA,CAAAJ,CAAAA,CACA,OAAA,CAAAG,CAAAA,CACA,OAAA,CAAAF,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,QAAA,CAAAN,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,QAAA,CAAU,CAAC,CAACE,CACd,CACF,CACF,CCnFA,SAIgBS,CAAAA,CAAAA,CAA6D,CAC3E,IAAMtB,CAAAA,CAAQuB,iCAAAA,CAAe,CACvBC,CAAAA,CAAWC,2BAAAA,IAKH,CAAA,CAERC,CAAAA,CAAcnB,gCAAAA,CAAY,CAAA,EAAM,CACpC,IAAMoB,CAAAA,CAAW3B,CAAAA,CAAM,kBAAA,CAAmB,CAAA,CAE1C,EAAA,CACEwB,CAAAA,CAAS,OAAA,EACTA,CAAAA,CAAS,OAAA,CAAQ,OAAA,GAAYG,CAAAA,CAAS,OAAA,EACtCH,CAAAA,CAAS,OAAA,CAAQ,OAAA,GAAYG,CAAAA,CAAS,OAAA,EACtCH,CAAAA,CAAS,OAAA,CAAQ,YAAA,GAAiBG,CAAAA,CAAS,YAAA,EAC3CH,CAAAA,CAAS,OAAA,CAAQ,WAAA,GAAgBG,CAAAA,CAAS,WAAA,CAE1C,OAAOH,CAAAA,CAAS,OAAA,CAGlB,IAAMI,CAAAA,CAAa,CACjB,OAAA,CAASD,CAAAA,CAAS,OAAA,CAClB,OAAA,CAASA,CAAAA,CAAS,OAAA,CAClB,YAAA,CAAcA,CAAAA,CAAS,YAAA,CACvB,WAAA,CAAaA,CAAAA,CAAS,WACxB,CAAA,CAEA,OAAAH,CAAAA,CAAS,OAAA,CAAUI,CAAAA,CACZA,CACT,CAAA,CAAG,CAAC5B,CAAK,CAAC,CAAA,CAEJ6B,CAAAA,CAAOC,yCAAAA,CACX9B,CAAM,SAAA,CAAU,IAAA,CAAKA,CAAK,CAAA,CAC1B0B,CAAAA,CACAA,CACF,CAAA,CAEMK,CAAAA,CAAOxB,gCAAAA,CAAY,CAAA,EAAM,CAC7BP,CAAAA,CAAM,IAAA,CAAK,CACb,CAAA,CAAG,CAACA,CAAK,CAAC,CAAA,CAEJgC,CAAAA,CAAOzB,gCAAAA,CAAY,CAAA,EAAM,CAC7BP,CAAAA,CAAM,IAAA,CAAK,CACb,CAAA,CAAG,CAACA,CAAK,CAAC,CAAA,CAEV,MAAO,CACL,GAAG6B,CAAAA,CACH,IAAA,CAAAE,CAAAA,CACA,IAAA,CAAAC,CACF,CACF,CClCA,SAMgBC,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACoB,CACpB,IAAMpC,CAAAA,CAAQuB,iCAAAA,CAAiB,CACzBc,CAAAA,CAAQ1C,CAAAA,CAAYuC,CAAS,CAAA,CAC7BI,CAAAA,CAAeb,2BAAAA,IAA0B,CAAA,CACzC,CAACc,CAAAA,CAAaC,CAAc,CAAA,CAAIC,6BAAAA,CAAS,CAAK,CAAA,CAE9CC,CAAAA,CAASnC,gCAAAA,MACNoC,CAAAA,EAAkC,CACvC,EAAA,CAAKA,CAAAA,CAEL,CAAAH,CAAAA,CAAe,CAAA,CAAI,CAAA,CACnBxC,CAAAA,CAAM,QAAA,CAASkC,CAAAA,CAAW,KAAA,CAAS,CAAA,CAEnC,GAAI,CACF,IAAMU,CAAAA,CAAS,MAAMT,CAAAA,CAASQ,CAAI,CAAA,CAElCN,CAAAA,CAAM,QAAA,CAASO,CAAAA,CAAO,GAAG,CAAA,CACzBN,CAAAA,CAAa,OAAA,CAAUM,CAAAA,CAAO,GAAA,CAC9B5C,CAAAA,CAAM,QAAA,CAASkC,CAAAA,CAAW,KAAA,CAAS,CACrC,CAAA,KAAA,CAASrB,CAAAA,CAAO,CACd,IAAMgC,CAAAA,CACJhC,EAAAA,WAAiB,KAAA,CAAQA,CAAAA,CAAM,OAAA,CAAU,eAAA,CAC3Cb,CAAAA,CAAM,QAAA,CAASkC,CAAAA,CAAWW,CAAO,CACnC,CAAA,OAAE,CACAL,CAAAA,CAAe,CAAA,CAAK,CACtB,CAAA,CACF,CAAA,CACA,CAACL,CAAAA,CAAUE,CAAAA,CAAOH,CAAAA,CAAWlC,CAAK,CACpC,CAAA,CAEM8C,CAAAA,CAASvC,gCAAAA,KAAY,CAAA,CAAA,EAAY,CACrC,IAAMwC,CAAAA,CAAYT,CAAAA,CAAa,OAAA,CAE/B,EAAA,CAAIS,CAAAA,EAAaX,CAAAA,CACf,GAAI,CACF,MAAMA,CAAAA,CAAWW,CAAS,CAC5B,CAAA,KAAA,CAASlC,CAAAA,CAAO,CACd,IAAMgC,CAAAA,CACJhC,EAAAA,WAAiB,KAAA,CAAQA,CAAAA,CAAM,OAAA,CAAU,eAAA,CAC3Cb,CAAAA,CAAM,QAAA,CAASkC,CAAAA,CAAWW,CAAO,CAAA,CACjC,MACF,CAGFR,CAAAA,CAAM,QAAA,CAAS,IAAI,CAAA,CACnBC,CAAAA,CAAa,OAAA,CAAU,IAAA,CACvBtC,CAAAA,CAAM,QAAA,CAASkC,CAAAA,CAAW,KAAA,CAAS,CACrC,CAAA,CAAG,CAACE,CAAAA,CAAYC,CAAAA,CAAOH,CAAAA,CAAWlC,CAAK,CAAC,CAAA,CAExC,MAAO,CACL,KAAA,CAAOqC,CAAAA,CAAM,KAAA,CACb,QAAA,CAAUA,CAAAA,CAAM,QAAA,CAChB,KAAA,iBAAOA,CAAAA,qBAAM,IAAA,6BAAM,OAAA,CACnB,YAAA,CAAc,CAAC,iBAACA,CAAAA,qBAAM,IAAA,6BAAM,cAAA,EAAgBE,CAAAA,CAC5C,MAAA,CAAAG,CAAAA,CACA,MAAA,CAAAI,CACF,CACF,CAAA,0aAAA","file":"/home/runner/work/bit-form/bit-form/dist/react/index.cjs","sourcesContent":[null,"import { useMemo, useCallback } from \"react\";\nimport { useBitFieldBase } from \"./use-bit-field-base\";\nimport { BitPath, BitPathValue } from \"../core\";\nimport {\n formatMaskedValue,\n parseMaskedInput,\n} from \"../core/mask/field-binding\";\nimport type {\n UseBitFieldMeta,\n UseBitFieldBindProps,\n UseBitFieldResult,\n} from \"./types\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldResult<TForm, P> {\n const {\n fieldState,\n setValue: rawSetValue,\n setBlur,\n store,\n } = useBitFieldBase<BitPathValue<TForm, P>, TForm, P>(path);\n\n const resolvedMask = useMemo(() => {\n return store.resolveMask(path as string);\n }, [store.config.masks, store.config.fields, path]);\n\n const displayValue = useMemo(\n () => formatMaskedValue(fieldState.value, resolvedMask ?? undefined),\n [fieldState.value, resolvedMask],\n );\n\n const setValue = useCallback(\n (val: any) =>\n rawSetValue(parseMaskedInput(val, resolvedMask ?? undefined) as any),\n [resolvedMask, rawSetValue],\n );\n\n const { isHidden, isRequired, value, error, touched, isDirty, isValidating } =\n fieldState;\n\n const invalid = !!(touched && error);\n const visibleError = touched ? error : undefined;\n\n const onChange = useCallback(\n (e: any) => {\n const val = e?.target ? e.target.value : e;\n setValue(val);\n },\n [setValue],\n );\n\n const onBlur = useCallback(() => {\n setBlur();\n }, [setBlur]);\n\n return {\n // Main handlers and values (flat)\n value: value as BitPathValue<TForm, P>,\n displayValue,\n setValue,\n setBlur,\n onChange,\n onBlur,\n // Props helper\n props: {\n value: displayValue,\n onChange,\n onBlur,\n },\n // Metadata (grouped)\n meta: {\n error: visibleError,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError: !!error,\n },\n };\n}\n","import { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitHistoryResult } from \"./types\";\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n const lastMeta = useRef<{\n canUndo: boolean;\n canRedo: boolean;\n historyIndex: number;\n historySize: number;\n } | null>(null);\n\n const getSnapshot = useCallback(() => {\n const nextMeta = store.getHistoryMetadata();\n\n if (\n lastMeta.current &&\n lastMeta.current.canUndo === nextMeta.canUndo &&\n lastMeta.current.canRedo === nextMeta.canRedo &&\n lastMeta.current.historyIndex === nextMeta.historyIndex &&\n lastMeta.current.historySize === nextMeta.historySize\n ) {\n return lastMeta.current;\n }\n\n const stableMeta = {\n canUndo: nextMeta.canUndo,\n canRedo: nextMeta.canRedo,\n historyIndex: nextMeta.historyIndex,\n historySize: nextMeta.historySize,\n };\n\n lastMeta.current = stableMeta;\n return stableMeta;\n }, [store]);\n\n const meta = useSyncExternalStore(\n store.subscribe.bind(store),\n getSnapshot,\n getSnapshot,\n );\n\n const undo = useCallback(() => {\n store.undo();\n }, [store]);\n\n const redo = useCallback(() => {\n store.redo();\n }, [store]);\n\n return {\n ...meta,\n undo,\n redo,\n };\n}\n","/**\n * React Hook for File Upload Integration\n *\n * Minimal upload API integrated with global field validation lifecycle.\n *\n * @example\n * ```typescript\n * const avatar = useBitUpload(\"avatar\", uploadFn);\n *\n * return (\n * <>\n * <input\n * type=\"file\"\n * onChange={(e) => avatar.upload(e.target.files?.[0])}\n * disabled={avatar.isValidating}\n * />\n * {avatar.error && <Error>{avatar.error}</Error>}\n * </>\n * );\n * ```\n */\n\nimport { useCallback, useRef, useState } from \"react\";\nimport { useBitField } from \"./use-bit-field\";\nimport { useBitStore } from \"./context\";\nimport { BitUploadFn, BitDeleteUploadFn } from \"../core\";\nimport type { UseBitUploadResult } from \"./types\";\n\nexport function useBitUpload(\n fieldPath: string,\n uploadFn: BitUploadFn,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n const uploadKeyRef = useRef<string | null>(null);\n const [isUploading, setIsUploading] = useState(false);\n\n const upload = useCallback(\n async (file: File | null | undefined) => {\n if (!file) return;\n\n setIsUploading(true);\n store.setError(fieldPath, undefined);\n\n try {\n const result = await uploadFn(file);\n\n field.setValue(result.url);\n uploadKeyRef.current = result.key;\n store.setError(fieldPath, undefined);\n } catch (error) {\n const message =\n error instanceof Error ? error.message : \"Upload failed\";\n store.setError(fieldPath, message);\n } finally {\n setIsUploading(false);\n }\n },\n [uploadFn, field, fieldPath, store],\n );\n\n const remove = useCallback(async () => {\n const uploadKey = uploadKeyRef.current;\n\n if (uploadKey && deleteFile) {\n try {\n await deleteFile(uploadKey);\n } catch (error) {\n const message =\n error instanceof Error ? error.message : \"Delete failed\";\n store.setError(fieldPath, message);\n return;\n }\n }\n\n field.setValue(null);\n uploadKeyRef.current = null;\n store.setError(fieldPath, undefined);\n }, [deleteFile, field, fieldPath, store]);\n\n return {\n value: field.value,\n setValue: field.setValue,\n error: field.meta?.error,\n isValidating: !!field.meta?.isValidating || isUploading,\n upload,\n remove,\n };\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/react/index.cjs","../../src/react/use-bit-field.ts","../../src/react/use-bit-history.ts","../../src/react/use-bit-upload.ts"],"names":["useBitField","path","fieldState","rawSetValue","setBlur","store","useBitFieldBase","resolvedMask","useMemo","displayValue","formatMaskedValue","setValue","useCallback","val","parseMaskedInput","isHidden","isRequired","value","error","touched","isDirty","isValidating","invalid","visibleError","onChange","e","isBitFieldInputEventObject","onBlur","useBitHistory","useBitStore","lastMeta","useRef","getSnapshot","nextMeta","stableMeta","meta","useSyncExternalStore","undo","redo","useBitUpload","fieldPath","uploadFn","deleteFile","field","uploadKeyRef","isUploading","setIsUploading","useState","kernelCallbacks","msg","key","upload","createUploadHandler","remove","createRemoveHandler"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/react/index.cjs","sourcesContent":[null,"import { useMemo, useCallback } from \"react\";\nimport { useBitFieldBase } from \"./use-bit-field-base\";\nimport { BitPath, BitPathValue } from \"../core\";\nimport {\n formatMaskedValue,\n parseMaskedInput,\n isBitFieldInputEventObject,\n} from \"../core/mask/field-binding\";\nimport type {\n BitFieldInputEvent,\n UseBitFieldMeta,\n UseBitFieldBindProps,\n UseBitFieldResult,\n} from \"./types\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldResult<TForm, P> {\n const {\n fieldState,\n setValue: rawSetValue,\n setBlur,\n store,\n } = useBitFieldBase<BitPathValue<TForm, P>, TForm, P>(path);\n\n const resolvedMask = useMemo(() => {\n return store.resolveMask(path as string);\n }, [store.config.masks, store.config.fields, path]);\n\n const displayValue = useMemo(\n () => formatMaskedValue(fieldState.value, resolvedMask ?? undefined),\n [fieldState.value, resolvedMask],\n );\n\n const setValue = useCallback(\n (val: BitPathValue<TForm, P> | string | number | null | undefined) =>\n rawSetValue(\n parseMaskedInput(val, resolvedMask ?? undefined) as BitPathValue<\n TForm,\n P\n >,\n ),\n [resolvedMask, rawSetValue],\n );\n\n const { isHidden, isRequired, value, error, touched, isDirty, isValidating } =\n fieldState;\n\n const invalid = !!(touched && error);\n const visibleError = touched ? error : undefined;\n\n const onChange = useCallback(\n (e: BitFieldInputEvent) => {\n const val = isBitFieldInputEventObject(e) ? e.target?.value : e;\n setValue(val);\n },\n [setValue],\n );\n\n const onBlur = useCallback(() => {\n setBlur();\n }, [setBlur]);\n\n return {\n // Main handlers and values (flat)\n value: value as BitPathValue<TForm, P>,\n displayValue,\n setValue,\n setBlur,\n onChange,\n onBlur,\n // Props helper\n props: {\n value: displayValue,\n onChange,\n onBlur,\n },\n // Metadata (grouped)\n meta: {\n error: visibleError,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError: !!error,\n },\n };\n}\n","import { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitHistoryResult } from \"./types\";\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n const lastMeta = useRef<{\n canUndo: boolean;\n canRedo: boolean;\n historyIndex: number;\n historySize: number;\n } | null>(null);\n\n const getSnapshot = useCallback(() => {\n const nextMeta = store.getHistoryMetadata();\n\n if (\n lastMeta.current &&\n lastMeta.current.canUndo === nextMeta.canUndo &&\n lastMeta.current.canRedo === nextMeta.canRedo &&\n lastMeta.current.historyIndex === nextMeta.historyIndex &&\n lastMeta.current.historySize === nextMeta.historySize\n ) {\n return lastMeta.current;\n }\n\n const stableMeta = {\n canUndo: nextMeta.canUndo,\n canRedo: nextMeta.canRedo,\n historyIndex: nextMeta.historyIndex,\n historySize: nextMeta.historySize,\n };\n\n lastMeta.current = stableMeta;\n return stableMeta;\n }, [store]);\n\n const meta = useSyncExternalStore(\n store.subscribe.bind(store),\n getSnapshot,\n getSnapshot,\n );\n\n const undo = useCallback(() => {\n store.undo();\n }, [store]);\n\n const redo = useCallback(() => {\n store.redo();\n }, [store]);\n\n return {\n ...meta,\n undo,\n redo,\n };\n}\n","/**\n * React Hook for File Upload Integration\n *\n * Minimal upload API integrated with global field validation lifecycle.\n *\n * @example\n * ```typescript\n * const avatar = useBitUpload(\"avatar\", uploadFn);\n *\n * return (\n * <>\n * <input\n * type=\"file\"\n * onChange={(e) => avatar.upload(e.target.files?.[0])}\n * disabled={avatar.isValidating}\n * />\n * {avatar.error && <Error>{avatar.error}</Error>}\n * </>\n * );\n * ```\n */\n\nimport { useCallback, useRef, useState } from \"react\";\nimport { useBitField } from \"./use-bit-field\";\nimport { useBitStore } from \"./context\";\nimport { BitUploadFn, BitDeleteUploadFn } from \"../core\";\nimport { createUploadHandler, createRemoveHandler } from \"../core/adapters\";\nimport type { UseBitUploadResult } from \"./types\";\n\nexport function useBitUpload(\n fieldPath: string,\n uploadFn: BitUploadFn,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n const uploadKeyRef = useRef<string | null>(null);\n const [isUploading, setIsUploading] = useState(false);\n\n const kernelCallbacks = {\n setLoading: setIsUploading,\n setError: (path: string, msg: string | undefined) =>\n store.setError(path, msg),\n setValue: (val: string | null) => field.setValue(val as any),\n getUploadKey: () => uploadKeyRef.current,\n setUploadKey: (key: string | null) => {\n uploadKeyRef.current = key;\n },\n };\n\n const upload = useCallback(\n createUploadHandler(fieldPath, uploadFn, kernelCallbacks),\n [uploadFn, field, fieldPath, store],\n );\n\n const remove = useCallback(\n createRemoveHandler(fieldPath, deleteFile, kernelCallbacks),\n [deleteFile, field, fieldPath, store],\n );\n\n return {\n value: field.value,\n setValue: field.setValue,\n error: field.meta?.error,\n isValidating: !!field.meta?.isValidating || isUploading,\n upload,\n remove,\n };\n}\n"]}
@@ -1,12 +1,13 @@
1
- import { U as UseBitFieldResult, a as UseBitHistoryResult, b as UseBitUploadResult } from '../use-bit-persist-DEWMhvit.cjs';
2
- export { B as BitFormProvider, c as UseBitFieldBindProps, d as UseBitFieldMeta, e as UseBitPersistResult, f as UseBitStepsResult, u as useBitArray, g as useBitForm, h as useBitPersist, i as useBitScope, j as useBitSteps, k as useBitStore, l as useBitWatch } from '../use-bit-persist-DEWMhvit.cjs';
3
- import { k as BitPath } from '../bus-CILR-ENq.cjs';
4
- export { S as ScopeStatus, V as ValidateScopeResult } from '../bus-CILR-ENq.cjs';
5
- import { a as BitUploadFn, B as BitDeleteUploadFn } from '../types-C2mpfhp1.cjs';
1
+ import { g as UseBitFieldResult, h as UseBitHistoryResult, i as UseBitUploadResult } from '../use-bit-persist-Dt4zIl2u.cjs';
2
+ export { B as BitFormProvider, j as UseBitFieldBindProps, k as UseBitFieldMeta, U as UseBitPersistResult, l as UseBitStepsResult, u as useBitArray, a as useBitForm, b as useBitPersist, c as useBitScope, d as useBitSteps, e as useBitStore, f as useBitWatch } from '../use-bit-persist-Dt4zIl2u.cjs';
3
+ import { f as BitPath } from '../bus-a_GA51Qw.cjs';
4
+ export { S as ScopeStatus, n as ValidateScopeResult } from '../bus-a_GA51Qw.cjs';
5
+ import { B as BitUploadFn, a as BitDeleteUploadFn } from '../upload-EXnJLq8k.cjs';
6
6
  import 'react/jsx-runtime';
7
7
  import 'react';
8
- import '../public-types-SU17BarA.cjs';
8
+ import '../public-types-D14VY_4o.cjs';
9
9
  import '../types-D8DgIUhJ.cjs';
10
+ import '../field-binding-BXw0Ku2c.cjs';
10
11
 
11
12
  declare function useBitField<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): UseBitFieldResult<TForm, P>;
12
13
 
@@ -1,12 +1,13 @@
1
- import { U as UseBitFieldResult, a as UseBitHistoryResult, b as UseBitUploadResult } from '../use-bit-persist-BlR-hHk6.js';
2
- export { B as BitFormProvider, c as UseBitFieldBindProps, d as UseBitFieldMeta, e as UseBitPersistResult, f as UseBitStepsResult, u as useBitArray, g as useBitForm, h as useBitPersist, i as useBitScope, j as useBitSteps, k as useBitStore, l as useBitWatch } from '../use-bit-persist-BlR-hHk6.js';
3
- import { k as BitPath } from '../bus-DHQHDwUp.js';
4
- export { S as ScopeStatus, V as ValidateScopeResult } from '../bus-DHQHDwUp.js';
5
- import { a as BitUploadFn, B as BitDeleteUploadFn } from '../types-C2mpfhp1.js';
1
+ import { g as UseBitFieldResult, h as UseBitHistoryResult, i as UseBitUploadResult } from '../use-bit-persist-CNtQ3Gaq.js';
2
+ export { B as BitFormProvider, j as UseBitFieldBindProps, k as UseBitFieldMeta, U as UseBitPersistResult, l as UseBitStepsResult, u as useBitArray, a as useBitForm, b as useBitPersist, c as useBitScope, d as useBitSteps, e as useBitStore, f as useBitWatch } from '../use-bit-persist-CNtQ3Gaq.js';
3
+ import { f as BitPath } from '../bus-BQI1FIOs.js';
4
+ export { S as ScopeStatus, n as ValidateScopeResult } from '../bus-BQI1FIOs.js';
5
+ import { B as BitUploadFn, a as BitDeleteUploadFn } from '../upload-EXnJLq8k.js';
6
6
  import 'react/jsx-runtime';
7
7
  import 'react';
8
- import '../public-types-Bgws0aVJ.js';
8
+ import '../public-types-D3WIiMGu.js';
9
9
  import '../types-D8DgIUhJ.js';
10
+ import '../field-binding-BXw0Ku2c.js';
10
11
 
11
12
  declare function useBitField<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): UseBitFieldResult<TForm, P>;
12
13
 
@@ -1,2 +1,2 @@
1
- import{a as k,b as p,c as T,d as g,e as H,f as I,g as z,h as C,i as D}from"../chunk-3MUULXXZ.js";import"../chunk-FEW3ABPD.js";import"../chunk-ULC4OPIQ.js";import{L as R,M as S}from"../chunk-VDWCFNA6.js";import{useMemo as V,useCallback as f}from"react";function y(e){let{fieldState:t,setValue:a,setBlur:o,store:r}=g(e),i=V(()=>r.resolveMask(e),[r.config.masks,r.config.fields,e]),s=V(()=>R(t.value,i??void 0),[t.value,i]),u=f(c=>a(S(c,i??void 0)),[i,a]),{isHidden:m,isRequired:B,value:l,error:n,touched:d,isDirty:b,isValidating:h}=t,M=!!(d&&n),E=d?n:void 0,x=f(c=>{let P=c?.target?c.target.value:c;u(P)},[u]),F=f(()=>{o()},[o]);return{value:l,displayValue:s,setValue:u,setBlur:o,onChange:x,onBlur:F,props:{value:s,onChange:x,onBlur:F},meta:{error:E,touched:d,invalid:M,isDirty:b,isValidating:h,isHidden:m,isRequired:B,hasError:!!n}}}import{useCallback as U,useRef as w,useSyncExternalStore as j}from"react";function K(){let e=p(),t=w(null),a=U(()=>{let s=e.getHistoryMetadata();if(t.current&&t.current.canUndo===s.canUndo&&t.current.canRedo===s.canRedo&&t.current.historyIndex===s.historyIndex&&t.current.historySize===s.historySize)return t.current;let u={canUndo:s.canUndo,canRedo:s.canRedo,historyIndex:s.historyIndex,historySize:s.historySize};return t.current=u,u},[e]),o=j(e.subscribe.bind(e),a,a),r=U(()=>{e.undo()},[e]),i=U(()=>{e.redo()},[e]);return{...o,undo:r,redo:i}}import{useCallback as v,useRef as q,useState as A}from"react";function W(e,t,a){let o=p(),r=y(e),i=q(null),[s,u]=A(!1),m=v(async l=>{if(l){u(!0),o.setError(e,void 0);try{let n=await t(l);r.setValue(n.url),i.current=n.key,o.setError(e,void 0)}catch(n){let d=n instanceof Error?n.message:"Upload failed";o.setError(e,d)}finally{u(!1)}}},[t,r,e,o]),B=v(async()=>{let l=i.current;if(l&&a)try{await a(l)}catch(n){let d=n instanceof Error?n.message:"Delete failed";o.setError(e,d);return}r.setValue(null),i.current=null,o.setError(e,void 0)},[a,r,e,o]);return{value:r.value,setValue:r.setValue,error:r.meta?.error,isValidating:!!r.meta?.isValidating||s,upload:m,remove:B}}export{k as BitFormProvider,H as useBitArray,y as useBitField,T as useBitForm,K as useBitHistory,D as useBitPersist,I as useBitScope,z as useBitSteps,p as useBitStore,W as useBitUpload,C as useBitWatch};
1
+ import{a as E,b as p,c as z,d as v,e as C,f as j,g as D,h as K,i as q}from"../chunk-66DIO2SH.js";import{a as V,b}from"../chunk-O5UPA33R.js";import"../chunk-YGAD4ZZW.js";import"../chunk-AE4G32HS.js";import{L as R,M as g,N as S}from"../chunk-7LMNIQTT.js";import{useMemo as h,useCallback as f}from"react";function y(e){let{fieldState:t,setValue:a,setBlur:s,store:r}=v(e),i=h(()=>r.resolveMask(e),[r.config.masks,r.config.fields,e]),o=h(()=>g(t.value,i??void 0),[t.value,i]),l=f(d=>a(S(d,i??void 0)),[i,a]),{isHidden:c,isRequired:m,value:B,error:n,touched:u,isDirty:M,isValidating:T}=t,k=!!(u&&n),I=u?n:void 0,F=f(d=>{let H=R(d)?d.target?.value:d;l(H)},[l]),x=f(()=>{s()},[s]);return{value:B,displayValue:o,setValue:l,setBlur:s,onChange:F,onBlur:x,props:{value:o,onChange:F,onBlur:x},meta:{error:I,touched:u,invalid:k,isDirty:M,isValidating:T,isHidden:c,isRequired:m,hasError:!!n}}}import{useCallback as U,useRef as w,useSyncExternalStore as A}from"react";function L(){let e=p(),t=w(null),a=U(()=>{let o=e.getHistoryMetadata();if(t.current&&t.current.canUndo===o.canUndo&&t.current.canRedo===o.canRedo&&t.current.historyIndex===o.historyIndex&&t.current.historySize===o.historySize)return t.current;let l={canUndo:o.canUndo,canRedo:o.canRedo,historyIndex:o.historyIndex,historySize:o.historySize};return t.current=l,l},[e]),s=A(e.subscribe.bind(e),a,a),r=U(()=>{e.undo()},[e]),i=U(()=>{e.redo()},[e]);return{...s,undo:r,redo:i}}import{useCallback as P,useRef as O,useState as W}from"react";function G(e,t,a){let s=p(),r=y(e),i=O(null),[o,l]=W(!1),c={setLoading:l,setError:(n,u)=>s.setError(n,u),setValue:n=>r.setValue(n),getUploadKey:()=>i.current,setUploadKey:n=>{i.current=n}},m=P(V(e,t,c),[t,r,e,s]),B=P(b(e,a,c),[a,r,e,s]);return{value:r.value,setValue:r.setValue,error:r.meta?.error,isValidating:!!r.meta?.isValidating||o,upload:m,remove:B}}export{E as BitFormProvider,C as useBitArray,y as useBitField,z as useBitForm,L as useBitHistory,q as useBitPersist,j as useBitScope,D as useBitSteps,p as useBitStore,G as useBitUpload,K as useBitWatch};
2
2
  //# sourceMappingURL=index.js.map