@lehnihon/bit-form 2.2.19 → 2.2.24
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.
- package/README.md +10 -13
- package/dist/angular/index.cjs +1 -1
- package/dist/angular/index.cjs.map +1 -1
- package/dist/angular/index.d.cts +7 -6
- package/dist/angular/index.d.ts +7 -6
- package/dist/angular/index.js +1 -1
- package/dist/angular/index.js.map +1 -1
- package/dist/chunk-27LJCW56.cjs.map +1 -1
- package/dist/chunk-3SEB4YRQ.cjs +2 -0
- package/dist/chunk-3SEB4YRQ.cjs.map +1 -0
- package/dist/chunk-4WPLTOBT.cjs.map +1 -1
- package/dist/chunk-5ILGCBKG.cjs.map +1 -1
- package/dist/chunk-725CMNAV.cjs.map +1 -1
- package/dist/{chunk-7IO2KLSJ.cjs → chunk-7LCFS2JM.cjs} +2 -2
- package/dist/chunk-7LCFS2JM.cjs.map +1 -0
- package/dist/{chunk-EPBSLPRL.cjs → chunk-AOMXTUA4.cjs} +2 -2
- package/dist/chunk-AOMXTUA4.cjs.map +1 -0
- package/dist/chunk-BSGJ3T5S.cjs.map +1 -1
- package/dist/chunk-CATA7YEV.js +2 -0
- package/dist/chunk-CATA7YEV.js.map +1 -0
- package/dist/chunk-DNHPYPJA.js +2 -0
- package/dist/chunk-DNHPYPJA.js.map +1 -0
- package/dist/chunk-H3RTOA6X.cjs +2 -0
- package/dist/chunk-H3RTOA6X.cjs.map +1 -0
- package/dist/chunk-H6HGYVRV.cjs +2 -0
- package/dist/chunk-H6HGYVRV.cjs.map +1 -0
- package/dist/chunk-JVRTPL7W.js +2 -0
- package/dist/chunk-JVRTPL7W.js.map +1 -0
- package/dist/chunk-K2JSAJAF.cjs.map +1 -1
- package/dist/chunk-L57KMBXS.js +2 -0
- package/dist/chunk-L57KMBXS.js.map +1 -0
- package/dist/chunk-LY67POOF.js +2 -0
- package/dist/chunk-LY67POOF.js.map +1 -0
- package/dist/chunk-MBEQLBJB.js +2 -0
- package/dist/chunk-MBEQLBJB.js.map +1 -0
- package/dist/chunk-MFSDDSVG.cjs.map +1 -1
- package/dist/chunk-PDFT5E2E.cjs +2 -0
- package/dist/chunk-PDFT5E2E.cjs.map +1 -0
- package/dist/chunk-PRMNTQD5.js +2 -0
- package/dist/chunk-PRMNTQD5.js.map +1 -0
- package/dist/chunk-QKGTVKBU.cjs.map +1 -1
- package/dist/chunk-RHMJPKNV.cjs.map +1 -1
- package/dist/chunk-SMCFLQIA.cjs +2 -0
- package/dist/chunk-SMCFLQIA.cjs.map +1 -0
- package/dist/chunk-T36GFQHU.cjs +2 -0
- package/dist/chunk-T36GFQHU.cjs.map +1 -0
- package/dist/chunk-W5CLDRRE.cjs.map +1 -1
- package/dist/chunk-X3DGA5UC.cjs +2 -0
- package/dist/chunk-X3DGA5UC.cjs.map +1 -0
- package/dist/{chunk-AJUX7LYB.js → chunk-X3OFU2UH.js} +2 -2
- package/dist/chunk-XPY6TCOO.js +2 -0
- package/dist/{chunk-3WNZPBME.js.map → chunk-XPY6TCOO.js.map} +1 -1
- package/dist/cli/index.cjs +18 -17
- package/dist/{config-types-bTt2lcw9.d.ts → config-types-DB6FaTiZ.d.ts} +3 -3
- package/dist/{config-types-Dbyt7t3D.d.cts → config-types-mZFlp2Bi.d.cts} +3 -3
- package/dist/core/bindings.cjs +1 -1
- package/dist/core/bindings.cjs.map +1 -1
- package/dist/core/bindings.d.cts +4 -4
- package/dist/core/bindings.d.ts +4 -4
- package/dist/core/bindings.js +1 -1
- package/dist/core/status.cjs.map +1 -1
- package/dist/core/status.d.cts +3 -3
- package/dist/core/status.d.ts +3 -3
- package/dist/core/store.cjs +1 -1
- package/dist/core/store.cjs.map +1 -1
- package/dist/core/store.d.cts +5 -5
- package/dist/core/store.d.ts +5 -5
- package/dist/core/store.js +1 -1
- package/dist/core/utils.cjs +1 -1
- package/dist/core/utils.cjs.map +1 -1
- package/dist/core/utils.js +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +4 -4
- package/dist/core.d.ts +4 -4
- package/dist/core.js +1 -1
- package/dist/devtools/bridge.cjs +1 -1
- package/dist/devtools/bridge.cjs.map +1 -1
- package/dist/devtools/bridge.js +1 -1
- package/dist/devtools/index.cjs +17 -17
- package/dist/devtools/index.cjs.map +1 -1
- package/dist/devtools/index.d.cts +2 -2
- package/dist/devtools/index.d.ts +2 -2
- package/dist/devtools/index.js +17 -17
- package/dist/devtools/index.js.map +1 -1
- package/dist/devtools/protocol.cjs.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +1 -1
- package/dist/mask.cjs +1 -1
- package/dist/mask.cjs.map +1 -1
- package/dist/mask.d.cts +1 -1
- package/dist/mask.d.ts +1 -1
- package/dist/mask.js +1 -1
- package/dist/{meta-types-BC1VLABk.d.cts → meta-types-1Xcht8hj.d.cts} +1 -1
- package/dist/{meta-types-BC1VLABk.d.ts → meta-types-1Xcht8hj.d.ts} +1 -1
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +6 -6
- package/dist/react/index.d.ts +6 -6
- package/dist/react/index.js +1 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react-native/index.cjs +1 -1
- package/dist/react-native/index.cjs.map +1 -1
- package/dist/react-native/index.d.cts +5 -5
- package/dist/react-native/index.d.ts +5 -5
- package/dist/react-native/index.js +1 -1
- package/dist/resolvers/index.cjs.map +1 -1
- package/dist/resolvers/joi.cjs.map +1 -1
- package/dist/resolvers/types.cjs.map +1 -1
- package/dist/resolvers/yup.cjs.map +1 -1
- package/dist/resolvers/zod.cjs.map +1 -1
- package/dist/{runtime-types-D1SRZr-n.d.cts → runtime-types-BLCkMgcy.d.cts} +1 -1
- package/dist/{runtime-types-D1SRZr-n.d.ts → runtime-types-BLCkMgcy.d.ts} +1 -1
- package/dist/{store-api-types-i-zmM25p.d.ts → store-api-types-CgRVo2DA.d.ts} +4 -4
- package/dist/{store-api-types-BPD27biP.d.cts → store-api-types-D7i0KWbr.d.cts} +4 -4
- package/dist/{use-bit-persist-BGH2Bazx.d.ts → use-bit-persist-CFcuAzwp.d.ts} +5 -5
- package/dist/{use-bit-persist-DiwICsEm.d.cts → use-bit-persist-Dsr69hme.d.cts} +5 -5
- package/dist/utils.cjs +1 -1
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.js +1 -1
- package/dist/vue/index.cjs +1 -1
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.d.cts +5 -5
- package/dist/vue/index.d.ts +5 -5
- package/dist/vue/index.js +1 -1
- package/dist/vue/index.js.map +1 -1
- package/package.json +64 -11
- package/dist/chunk-23DHXQOC.js +0 -2
- package/dist/chunk-23DHXQOC.js.map +0 -1
- package/dist/chunk-32RH5MSM.js +0 -2
- package/dist/chunk-32RH5MSM.js.map +0 -1
- package/dist/chunk-33TGLA5D.cjs +0 -2
- package/dist/chunk-33TGLA5D.cjs.map +0 -1
- package/dist/chunk-3CPIJF3Z.cjs +0 -2
- package/dist/chunk-3CPIJF3Z.cjs.map +0 -1
- package/dist/chunk-3KI3GEU3.cjs +0 -2
- package/dist/chunk-3KI3GEU3.cjs.map +0 -1
- package/dist/chunk-3WNZPBME.js +0 -2
- package/dist/chunk-7IO2KLSJ.cjs.map +0 -1
- package/dist/chunk-B45EMB4Q.js +0 -2
- package/dist/chunk-B45EMB4Q.js.map +0 -1
- package/dist/chunk-CIS3YZSK.cjs +0 -2
- package/dist/chunk-CIS3YZSK.cjs.map +0 -1
- package/dist/chunk-EPBSLPRL.cjs.map +0 -1
- package/dist/chunk-ICYXODTQ.js +0 -2
- package/dist/chunk-ICYXODTQ.js.map +0 -1
- package/dist/chunk-JUDBIEZK.js +0 -2
- package/dist/chunk-JUDBIEZK.js.map +0 -1
- package/dist/chunk-K65TKDQ2.cjs +0 -2
- package/dist/chunk-K65TKDQ2.cjs.map +0 -1
- package/dist/chunk-S5A65JVL.cjs +0 -2
- package/dist/chunk-S5A65JVL.cjs.map +0 -1
- package/dist/chunk-T7TOEIOH.js +0 -2
- package/dist/chunk-T7TOEIOH.js.map +0 -1
- package/dist/chunk-TLUCO2ZN.cjs +0 -2
- package/dist/chunk-TLUCO2ZN.cjs.map +0 -1
- package/dist/chunk-Y34N5TWV.js +0 -2
- package/dist/chunk-Y34N5TWV.js.map +0 -1
- /package/dist/{chunk-AJUX7LYB.js.map → chunk-X3OFU2UH.js.map} +0 -0
|
@@ -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","../../src/devtools/create-plugin.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\";\nimport type { DevToolsStoreSnapshots } from \"../protocol\";\n\nexport type { DevToolsActions };\n\nfunction escapeHtml(str: string): string {\n return str\n .replace(/&/g, \"&\")\n .replace(/\"/g, \""\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\");\n}\n\nfunction safeJsonStringify(value: unknown): string {\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return \"[Unserializable]\";\n }\n}\n\nexport class BitFormDevToolsUI {\n private container: HTMLElement;\n private actions: DevToolsActions;\n private rootElement: HTMLDivElement;\n private currentStoresState: DevToolsStoreSnapshots = {};\n private isOpen = 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: DevToolsStoreSnapshots) {\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\">${escapeHtml(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=\"${escapeHtml(id)}\" ${meta.canUndo ? \"\" : \"disabled\"}>\n <span>↺</span> Undo\n </button>\n <button class=\"bit-action-btn\" data-action=\"redo\" data-store=\"${escapeHtml(id)}\" ${meta.canRedo ? \"\" : \"disabled\"}>\n <span>↻</span> Redo\n </button>\n <button class=\"bit-action-btn bit-btn-reset\" data-action=\"reset\" data-store=\"${escapeHtml(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\">${safeJsonStringify(state.errors)}</pre>\n `;\n }\n\n panelHtml += `\n <span class=\"bit-section-title\">Values</span>\n <pre class=\"bit-pre\">${safeJsonStringify(state.values)}</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 { BitBus } from \"../../core\";\nimport { BitFormDevToolsUI } from \"../ui\";\nimport { createDevToolsSnapshotMap } from \"../store-snapshot\";\nimport { getDevToolsActionableStore } from \"../store-port\";\n\nexport function setupLocalDevTools(\n container: HTMLElement,\n bus: BitBus = bitBus,\n) {\n const ui = new BitFormDevToolsUI(container, {\n onUndo: (id) => getDevToolsActionableStore(bus.stores, id)?.undo(),\n onRedo: (id) => getDevToolsActionableStore(bus.stores, id)?.redo(),\n onReset: (id) => getDevToolsActionableStore(bus.stores, id)?.reset(),\n });\n\n const getFullSnapshot = () => createDevToolsSnapshotMap(bus.stores);\n\n ui.updateState(getFullSnapshot());\n\n const unsubscribe = bus.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 { BitBus } from \"../../core\";\nimport type {\n DevToolsHelloMessage,\n DevToolsActionMessage,\n DevToolsActionName,\n DevToolsRemoteMessage,\n} from \"../types\";\nimport {\n DEVTOOLS_PROTOCOL_VERSION,\n isDevToolsStateUpdateMessage,\n} from \"../protocol\";\n\nexport function setupRemoteDevTools(\n container: HTMLElement,\n url: string = \"ws://localhost:3000\",\n _bus?: BitBus,\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 protocolVersion: DEVTOOLS_PROTOCOL_VERSION,\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 const helloMessage: DevToolsHelloMessage = {\n type: \"HELLO\",\n protocolVersion: DEVTOOLS_PROTOCOL_VERSION,\n payload: { role: \"client\", protocolVersion: DEVTOOLS_PROTOCOL_VERSION },\n };\n\n sendMessage(helloMessage);\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 (isDevToolsStateUpdateMessage(data)) {\n ui.updateState(data.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\";\nimport type { BitDevToolsAdapter } from \"./adapters/types\";\n\nexport type { BitDevToolsOptions };\n\nexport function initDevTools(options: BitDevToolsOptions = {}) {\n const { mode = \"local\", url, bus } = 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: BitDevToolsAdapter;\n\n if (mode === \"local\") {\n console.log(\"[bit-form] DevTools iniciado em modo Local.\");\n adapterInstance = setupLocalDevTools(containerEl, bus);\n } else if (mode === \"remote\") {\n console.log(\"[bit-form] DevTools iniciado em modo Remote.\");\n adapterInstance = setupRemoteDevTools(containerEl, url, bus);\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","import type { BitPlugin, DevToolsOptions } from \"../core\";\nimport { setupRemoteBridge } from \"./bridge\";\nimport { initDevTools } from \"./init-dev-tools\";\n\nfunction resolveDevToolsOptions(\n devTools: boolean | DevToolsOptions | undefined,\n): Required<Pick<DevToolsOptions, \"enabled\" | \"mode\">> &\n Pick<DevToolsOptions, \"url\"> {\n if (typeof devTools === \"boolean\") {\n return { enabled: devTools, mode: \"local\" };\n }\n\n return {\n enabled: !!devTools,\n mode: devTools?.mode ?? \"local\",\n url: devTools?.url,\n };\n}\n\nfunction isProductionEnv(): boolean {\n if (\n typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\" &&\n process.env.NODE_ENV === \"production\"\n ) {\n return true;\n }\n\n if (\n typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\" &&\n process.env.VITEST === \"true\"\n ) {\n return false;\n }\n\n return false;\n}\n\nexport function createDevToolsPlugin<T extends object = any>(\n override?: boolean | DevToolsOptions,\n): BitPlugin<T> {\n return {\n name: \"bit-devtools\",\n setup: (context) => {\n const options = resolveDevToolsOptions(\n override ?? context.getConfig().devTools,\n );\n\n if (!options.enabled) {\n return;\n }\n\n if (isProductionEnv() && override !== true) {\n return;\n }\n\n let cleanup: (() => void) | null = null;\n const bus = context.getConfig().bus;\n\n try {\n if (options.mode === \"remote\") {\n cleanup = setupRemoteBridge(\n options.url || \"ws://localhost:3000\",\n bus,\n );\n } else {\n const instance = initDevTools({ bus });\n cleanup =\n instance && typeof instance.destroy === \"function\"\n ? instance.destroy\n : null;\n }\n } catch {\n // fail-open: devtools não deve impactar runtime principal\n }\n\n return () => {\n if (cleanup) {\n cleanup();\n cleanup = null;\n }\n };\n },\n };\n}\n"],"mappings":"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","names":["getDevToolsCSS","escapeHtml","str","safeJsonStringify","value","BitFormDevToolsUI","container","actions","style","getDevToolsCSS","e","target","btn","action","storeId","storesState","storeEntries","panelHtml","id","state","hasErrors","meta","currentStep","totalSteps","triggerHtml","setupLocalDevTools","container","bus","bitBus","ui","BitFormDevToolsUI","id","getDevToolsActionableStore","getFullSnapshot","createDevToolsSnapshotMap","unsubscribe","setupRemoteDevTools","container","url","_bus","socket","sendMessage","message","sendAction","storeId","action","ui","BitFormDevToolsUI","id","msg","data","isDevToolsStateUpdateMessage","e","err","initDevTools","options","mode","url","bus","containerEl","isAutoCreated","el","adapterInstance","setupLocalDevTools","setupRemoteDevTools","resolveDevToolsOptions","devTools","isProductionEnv","createDevToolsPlugin","override","context","options","cleanup","bus","setupRemoteBridge","instance","initDevTools"]}
|
|
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","../../src/devtools/create-plugin.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\";\nimport type { DevToolsStoreSnapshots } from \"../protocol\";\n\nexport type { DevToolsActions };\n\nfunction escapeHtml(str: string): string {\n return str\n .replace(/&/g, \"&\")\n .replace(/\"/g, \""\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\");\n}\n\nfunction safeJsonStringify(value: unknown): string {\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return \"[Unserializable]\";\n }\n}\n\nexport class BitFormDevToolsUI {\n private container: HTMLElement;\n private actions: DevToolsActions;\n private rootElement: HTMLDivElement;\n private currentStoresState: DevToolsStoreSnapshots = {};\n private isOpen = 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: DevToolsStoreSnapshots) {\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\">${escapeHtml(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=\"${escapeHtml(id)}\" ${meta.canUndo ? \"\" : \"disabled\"}>\n <span>↺</span> Undo\n </button>\n <button class=\"bit-action-btn\" data-action=\"redo\" data-store=\"${escapeHtml(id)}\" ${meta.canRedo ? \"\" : \"disabled\"}>\n <span>↻</span> Redo\n </button>\n <button class=\"bit-action-btn bit-btn-reset\" data-action=\"reset\" data-store=\"${escapeHtml(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\">${safeJsonStringify(state.errors)}</pre>\n `;\n }\n\n panelHtml += `\n <span class=\"bit-section-title\">Values</span>\n <pre class=\"bit-pre\">${safeJsonStringify(state.values)}</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 { BitBus } from \"../../core\";\nimport { BitFormDevToolsUI } from \"../ui\";\nimport { createDevToolsSnapshotMap } from \"../store-snapshot\";\nimport { getDevToolsActionableStore } from \"../store-port\";\n\nexport function setupLocalDevTools(\n container: HTMLElement,\n bus: BitBus = bitBus,\n) {\n const ui = new BitFormDevToolsUI(container, {\n onUndo: (id) => getDevToolsActionableStore(bus.stores, id)?.undo(),\n onRedo: (id) => getDevToolsActionableStore(bus.stores, id)?.redo(),\n onReset: (id) => getDevToolsActionableStore(bus.stores, id)?.reset(),\n });\n\n const getFullSnapshot = () => createDevToolsSnapshotMap(bus.stores);\n\n ui.updateState(getFullSnapshot());\n\n let rafId: number | undefined;\n const unsubscribe = bus.subscribe(() => {\n if (rafId !== undefined) return;\n rafId = requestAnimationFrame(() => {\n rafId = undefined;\n ui.updateState(getFullSnapshot());\n });\n });\n\n return {\n ui,\n destroy: () => {\n if (rafId !== undefined) cancelAnimationFrame(rafId);\n unsubscribe();\n container.innerHTML = \"\";\n },\n };\n}\n","import { BitFormDevToolsUI } from \"../ui\";\nimport type { BitBus } from \"../../core\";\nimport type {\n DevToolsHelloMessage,\n DevToolsActionMessage,\n DevToolsActionName,\n DevToolsRemoteMessage,\n} from \"../types\";\nimport {\n DEVTOOLS_PROTOCOL_VERSION,\n isDevToolsStateUpdateMessage,\n} from \"../protocol\";\n\nexport function setupRemoteDevTools(\n container: HTMLElement,\n url: string = \"ws://localhost:3000\",\n _bus?: BitBus,\n) {\n let socket: WebSocket;\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 protocolVersion: DEVTOOLS_PROTOCOL_VERSION,\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 let destroyed = false;\n let reconnectTimer: ReturnType<typeof setTimeout> | undefined;\n\n function attachListeners() {\n socket.addEventListener(\"open\", () => {\n const helloMessage: DevToolsHelloMessage = {\n type: \"HELLO\",\n protocolVersion: DEVTOOLS_PROTOCOL_VERSION,\n payload: { role: \"client\", protocolVersion: DEVTOOLS_PROTOCOL_VERSION },\n };\n\n sendMessage(helloMessage);\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 (isDevToolsStateUpdateMessage(data)) {\n ui.updateState(data.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 socket.addEventListener(\"close\", () => {\n if (destroyed) return;\n console.log(\"[bit-form] Conexão DevTools remota fechada. Reconectando em 5s...\");\n reconnectTimer = setTimeout(() => {\n if (destroyed) return;\n connect();\n }, 5000);\n });\n }\n\n function connect() {\n socket = new WebSocket(url);\n attachListeners();\n }\n\n connect();\n\n return {\n ui,\n destroy: () => {\n destroyed = true;\n if (reconnectTimer) {\n clearTimeout(reconnectTimer);\n reconnectTimer = undefined;\n }\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\";\nimport type { BitDevToolsAdapter } from \"./adapters/types\";\n\nexport type { BitDevToolsOptions };\n\nexport function initDevTools(options: BitDevToolsOptions = {}) {\n const { mode = \"local\", url, bus } = 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: BitDevToolsAdapter;\n\n if (mode === \"local\") {\n console.log(\"[bit-form] DevTools iniciado em modo Local.\");\n adapterInstance = setupLocalDevTools(containerEl, bus);\n } else if (mode === \"remote\") {\n console.log(\"[bit-form] DevTools iniciado em modo Remote.\");\n adapterInstance = setupRemoteDevTools(containerEl, url, bus);\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","import type { BitPlugin, DevToolsOptions } from \"../core\";\nimport { setupRemoteBridge } from \"./bridge\";\nimport { initDevTools } from \"./init-dev-tools\";\n\nfunction resolveDevToolsOptions(\n devTools: boolean | DevToolsOptions | undefined,\n): Required<Pick<DevToolsOptions, \"enabled\" | \"mode\">> &\n Pick<DevToolsOptions, \"url\"> {\n if (typeof devTools === \"boolean\") {\n return { enabled: devTools, mode: \"local\" };\n }\n\n return {\n enabled: !!devTools,\n mode: devTools?.mode ?? \"local\",\n url: devTools?.url,\n };\n}\n\nfunction isProductionEnv(): boolean {\n if (\n typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\" &&\n process.env.NODE_ENV === \"production\"\n ) {\n return true;\n }\n\n if (\n typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\" &&\n process.env.VITEST === \"true\"\n ) {\n return false;\n }\n\n return false;\n}\n\nexport function createDevToolsPlugin<T extends object = any>(\n override?: boolean | DevToolsOptions,\n): BitPlugin<T> {\n return {\n name: \"bit-devtools\",\n setup: (context) => {\n const options = resolveDevToolsOptions(\n override ?? context.getConfig().devTools,\n );\n\n if (!options.enabled) {\n return;\n }\n\n if (isProductionEnv() && override !== true) {\n return;\n }\n\n let cleanup: (() => void) | null = null;\n const bus = context.getConfig().bus;\n\n try {\n if (options.mode === \"remote\") {\n cleanup = setupRemoteBridge(\n options.url || \"ws://localhost:3000\",\n bus,\n );\n } else {\n const instance = initDevTools({ bus });\n cleanup =\n instance && typeof instance.destroy === \"function\"\n ? instance.destroy\n : null;\n }\n } catch {\n // fail-open: devtools não deve impactar runtime principal\n }\n\n return () => {\n if (cleanup) {\n cleanup();\n cleanup = null;\n }\n };\n },\n };\n}\n"],"mappings":"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","names":["getDevToolsCSS","escapeHtml","str","safeJsonStringify","value","BitFormDevToolsUI","container","actions","style","getDevToolsCSS","e","target","btn","action","storeId","storesState","storeEntries","panelHtml","id","state","hasErrors","meta","currentStep","totalSteps","triggerHtml","setupLocalDevTools","container","bus","bitBus","ui","BitFormDevToolsUI","id","getDevToolsActionableStore","getFullSnapshot","createDevToolsSnapshotMap","rafId","unsubscribe","setupRemoteDevTools","container","url","_bus","socket","sendMessage","message","sendAction","storeId","action","ui","BitFormDevToolsUI","id","destroyed","reconnectTimer","attachListeners","msg","data","isDevToolsStateUpdateMessage","e","err","connect","initDevTools","options","mode","url","bus","containerEl","isAutoCreated","el","adapterInstance","setupLocalDevTools","setupRemoteDevTools","resolveDevToolsOptions","devTools","isProductionEnv","createDevToolsPlugin","override","context","options","cleanup","bus","setupRemoteBridge","instance","initDevTools"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/
|
|
1
|
+
{"version":3,"sources":["/builds/kenji.ccp-group/bit-form/dist/devtools/protocol.cjs"],"names":[],"mappings":"AAAA,kIAA8C,6UAA0L","file":"/builds/kenji.ccp-group/bit-form/dist/devtools/protocol.cjs"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-W5CLDRRE.cjs');var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-W5CLDRRE.cjs');var _chunkPDFT5E2Ecjs = require('./chunk-PDFT5E2E.cjs');require('./chunk-AOMXTUA4.cjs');require('./chunk-BSGJ3T5S.cjs');require('./chunk-RHMJPKNV.cjs');require('./chunk-H6HGYVRV.cjs');require('./chunk-7LCFS2JM.cjs');require('./chunk-3SEB4YRQ.cjs');require('./chunk-X3DGA5UC.cjs');require('./chunk-725CMNAV.cjs');exports.createBitStore = _chunkPDFT5E2Ecjs.e; exports.createFrameworkStoreAdapter = _chunkPDFT5E2Ecjs.d; exports.resolveBitStoreForHooks = _chunkPDFT5E2Ecjs.c;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/
|
|
1
|
+
{"version":3,"sources":["/builds/kenji.ccp-group/bit-form/dist/index.cjs"],"names":[],"mappings":"AAAA,yGAA4B,wDAAkD,gCAA6B,gCAA6B,gCAA6B,gCAA6B,gCAA6B,gCAA6B,gCAA6B,gCAA6B,+JAA0F","file":"/builds/kenji.ccp-group/bit-form/dist/index.cjs"}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { e as BitConfig } from './config-types-
|
|
2
|
-
import {
|
|
1
|
+
import { e as BitConfig } from './config-types-mZFlp2Bi.cjs';
|
|
2
|
+
import { f as BitStoreApi, b as BitFrameworkStoreApi, h as BitStoreHooksApi } from './store-api-types-D7i0KWbr.cjs';
|
|
3
|
+
export { a as BitArrayPath, b as BitErrors, d as BitPath, e as BitPathValue } from './state-types-8bUndWfg.cjs';
|
|
3
4
|
import './bus-DzTqgkZ4.cjs';
|
|
4
5
|
import './types-CUXh7PqD.cjs';
|
|
5
|
-
import './
|
|
6
|
-
import './
|
|
7
|
-
import './meta-types-BC1VLABk.cjs';
|
|
6
|
+
import './runtime-types-BLCkMgcy.cjs';
|
|
7
|
+
import './meta-types-1Xcht8hj.cjs';
|
|
8
8
|
|
|
9
9
|
declare function resolveBitStoreForHooks<T extends object>(store: unknown): BitStoreHooksApi<T>;
|
|
10
10
|
declare function createFrameworkStoreAdapter<T extends object>(store: unknown): BitFrameworkStoreApi<T>;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { e as BitConfig } from './config-types-
|
|
2
|
-
import {
|
|
1
|
+
import { e as BitConfig } from './config-types-DB6FaTiZ.js';
|
|
2
|
+
import { f as BitStoreApi, b as BitFrameworkStoreApi, h as BitStoreHooksApi } from './store-api-types-CgRVo2DA.js';
|
|
3
|
+
export { a as BitArrayPath, b as BitErrors, d as BitPath, e as BitPathValue } from './state-types-8bUndWfg.js';
|
|
3
4
|
import './bus-BFOBGmd9.js';
|
|
4
5
|
import './types-CUXh7PqD.js';
|
|
5
|
-
import './
|
|
6
|
-
import './
|
|
7
|
-
import './meta-types-BC1VLABk.js';
|
|
6
|
+
import './runtime-types-BLCkMgcy.js';
|
|
7
|
+
import './meta-types-1Xcht8hj.js';
|
|
8
8
|
|
|
9
9
|
declare function resolveBitStoreForHooks<T extends object>(store: unknown): BitStoreHooksApi<T>;
|
|
10
10
|
declare function createFrameworkStoreAdapter<T extends object>(store: unknown): BitFrameworkStoreApi<T>;
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"./chunk-5NA2TFPG.js";import{c as r,d as
|
|
1
|
+
import"./chunk-5NA2TFPG.js";import{c as r,d as t,e}from"./chunk-PRMNTQD5.js";import"./chunk-XPY6TCOO.js";import"./chunk-W2E5UIXT.js";import"./chunk-UIKO6GGW.js";import"./chunk-L57KMBXS.js";import"./chunk-X3OFU2UH.js";import"./chunk-JVRTPL7W.js";import"./chunk-MBEQLBJB.js";import"./chunk-DGEGYNQL.js";export{e as createBitStore,t as createFrameworkStoreAdapter,r as resolveBitStoreForHooks};
|
|
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
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkX3DGA5UCcjs = require('./chunk-X3DGA5UC.cjs');require('./chunk-725CMNAV.cjs');exports.bitMasks = _chunkX3DGA5UCcjs.L; exports.createCreditCardMask = _chunkX3DGA5UCcjs.e; exports.createCurrencyMask = _chunkX3DGA5UCcjs.d; exports.createDateMask = _chunkX3DGA5UCcjs.f; exports.createPatternMask = _chunkX3DGA5UCcjs.c; exports.maskBRL = _chunkX3DGA5UCcjs.g; exports.maskCEP = _chunkX3DGA5UCcjs.s; exports.maskCNH = _chunkX3DGA5UCcjs.v; exports.maskCNPJ = _chunkX3DGA5UCcjs.p; exports.maskCPF = _chunkX3DGA5UCcjs.o; exports.maskCPFCNPJ = _chunkX3DGA5UCcjs.x; exports.maskCVV = _chunkX3DGA5UCcjs.E; exports.maskColorHex = _chunkX3DGA5UCcjs.H; exports.maskCreditCard = _chunkX3DGA5UCcjs.D; exports.maskDate = _chunkX3DGA5UCcjs.t; exports.maskDateISO = _chunkX3DGA5UCcjs.F; exports.maskDateUS = _chunkX3DGA5UCcjs.B; exports.maskDecimal = _chunkX3DGA5UCcjs.m; exports.maskEUR = _chunkX3DGA5UCcjs.i; exports.maskGBP = _chunkX3DGA5UCcjs.j; exports.maskIBAN = _chunkX3DGA5UCcjs.K; exports.maskIPv4 = _chunkX3DGA5UCcjs.I; exports.maskIPv6 = _chunkX3DGA5UCcjs.J; exports.maskInteger = _chunkX3DGA5UCcjs.n; exports.maskJPY = _chunkX3DGA5UCcjs.k; exports.maskLandline = _chunkX3DGA5UCcjs.r; exports.maskMacAddress = _chunkX3DGA5UCcjs.G; exports.maskPercent = _chunkX3DGA5UCcjs.l; exports.maskPhone = _chunkX3DGA5UCcjs.q; exports.maskPlate = _chunkX3DGA5UCcjs.y; exports.maskRG = _chunkX3DGA5UCcjs.w; exports.maskSSN = _chunkX3DGA5UCcjs.C; exports.maskTime = _chunkX3DGA5UCcjs.u; exports.maskUSD = _chunkX3DGA5UCcjs.h; exports.maskUSPhone = _chunkX3DGA5UCcjs.z; exports.maskZipCode = _chunkX3DGA5UCcjs.A; exports.unmask = _chunkX3DGA5UCcjs.a; exports.unmaskCurrency = _chunkX3DGA5UCcjs.b;
|
|
2
2
|
//# sourceMappingURL=mask.cjs.map
|
package/dist/mask.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/
|
|
1
|
+
{"version":3,"sources":["/builds/kenji.ccp-group/bit-form/dist/mask.cjs"],"names":[],"mappings":"AAAA,iIAAiS,gCAA6B,yjDAAsmB","file":"/builds/kenji.ccp-group/bit-form/dist/mask.cjs"}
|
package/dist/mask.d.cts
CHANGED
|
@@ -41,7 +41,7 @@ declare const maskDate: BitMask;
|
|
|
41
41
|
declare const maskTime: BitMask;
|
|
42
42
|
/** CNH (Carteira de Motorista - 11 dígitos) */
|
|
43
43
|
declare const maskCNH: BitMask;
|
|
44
|
-
/** RG (00.000.000-X) - Suporta o 'X' como dígito verificador */
|
|
44
|
+
/** RG (00.000.000 ou 00.000.000-X) - Suporta o 'X' como dígito verificador e RG sem dígito */
|
|
45
45
|
declare const maskRG: BitMask;
|
|
46
46
|
/**
|
|
47
47
|
* CPF + CNPJ combinado — alterna automaticamente pelo número de dígitos:
|
package/dist/mask.d.ts
CHANGED
|
@@ -41,7 +41,7 @@ declare const maskDate: BitMask;
|
|
|
41
41
|
declare const maskTime: BitMask;
|
|
42
42
|
/** CNH (Carteira de Motorista - 11 dígitos) */
|
|
43
43
|
declare const maskCNH: BitMask;
|
|
44
|
-
/** RG (00.000.000-X) - Suporta o 'X' como dígito verificador */
|
|
44
|
+
/** RG (00.000.000 ou 00.000.000-X) - Suporta o 'X' como dígito verificador e RG sem dígito */
|
|
45
45
|
declare const maskRG: BitMask;
|
|
46
46
|
/**
|
|
47
47
|
* CPF + CNPJ combinado — alterna automaticamente pelo número de dígitos:
|
package/dist/mask.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{A as g,B as J,C as R,D as b,E as h,F as v,G as A,H as E,I as F,J as G,K as H,L as a,a as s,b as e,c as m,d as k,e as r,f as t,g as o,h as C,i as n,j as i,k as P,l as p,m as M,n as c,o as f,p as x,q as d,r as B,s as D,t as N,u,v as I,w as S,x as l,y,z as U}from"./chunk-
|
|
1
|
+
import{A as g,B as J,C as R,D as b,E as h,F as v,G as A,H as E,I as F,J as G,K as H,L as a,a as s,b as e,c as m,d as k,e as r,f as t,g as o,h as C,i as n,j as i,k as P,l as p,m as M,n as c,o as f,p as x,q as d,r as B,s as D,t as N,u,v as I,w as S,x as l,y,z as U}from"./chunk-MBEQLBJB.js";import"./chunk-DGEGYNQL.js";export{a as bitMasks,r as createCreditCardMask,k as createCurrencyMask,t as createDateMask,m as createPatternMask,o as maskBRL,D as maskCEP,I as maskCNH,x as maskCNPJ,f as maskCPF,l as maskCPFCNPJ,h as maskCVV,E as maskColorHex,b as maskCreditCard,N as maskDate,v as maskDateISO,J as maskDateUS,M as maskDecimal,n as maskEUR,i as maskGBP,H as maskIBAN,F as maskIPv4,G as maskIPv6,c as maskInteger,P as maskJPY,B as maskLandline,A as maskMacAddress,p as maskPercent,d as maskPhone,y as maskPlate,S as maskRG,R as maskSSN,u as maskTime,C as maskUSD,U as maskUSPhone,g as maskZipCode,s as unmask,e as unmaskCurrency};
|
|
2
2
|
//# sourceMappingURL=mask.js.map
|
|
@@ -25,4 +25,4 @@ interface BitFormMeta {
|
|
|
25
25
|
isSubmitting: boolean;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
export type { BitFormMeta as B, BitHistoryMetadata as a,
|
|
28
|
+
export type { BitFormMeta as B, BitHistoryMetadata as a, BitServerErrorOptions as b, BitValidationOptions as c };
|
|
@@ -25,4 +25,4 @@ interface BitFormMeta {
|
|
|
25
25
|
isSubmitting: boolean;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
export type { BitFormMeta as B, BitHistoryMetadata as a,
|
|
28
|
+
export type { BitFormMeta as B, BitHistoryMetadata as a, BitServerErrorOptions as b, BitValidationOptions as c };
|
package/dist/react/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkT36GFQHUcjs = require('../chunk-T36GFQHU.cjs');var _chunkH3RTOA6Xcjs = require('../chunk-H3RTOA6X.cjs');require('../chunk-W5CLDRRE.cjs');require('../chunk-PDFT5E2E.cjs');var _chunkAOMXTUA4cjs = require('../chunk-AOMXTUA4.cjs');require('../chunk-BSGJ3T5S.cjs');var _chunkRHMJPKNVcjs = require('../chunk-RHMJPKNV.cjs');var _chunkH6HGYVRVcjs = require('../chunk-H6HGYVRV.cjs');require('../chunk-7LCFS2JM.cjs');require('../chunk-3SEB4YRQ.cjs');require('../chunk-X3DGA5UC.cjs');var _chunk725CMNAVcjs = require('../chunk-725CMNAV.cjs');var _react = require('react');function V(t){let{fieldState:r,setBlur:i,store:l}=_chunkT36GFQHUcjs.d.call(void 0, t),{fieldController:u}=_react.useMemo.call(void 0, ()=>_chunkAOMXTUA4cjs.h.call(void 0, l,t),[l,t]),a=_react.useMemo.call(void 0, ()=>u.displayValue(r.value),[r.value,u]),n=_react.useCallback.call(void 0, F=>{u.setValue(F)},[u]),{value:o}=r,b=_chunkH6HGYVRVcjs.a.call(void 0, r),{error:m,touched:B,invalid:f,isDirty:y,isValidating:U,isHidden:s,isRequired:d,hasError:g}=b,p=_react.useCallback.call(void 0, F=>{let K=_chunk725CMNAVcjs.a.call(void 0, F)?_optionalChain([F, 'access', _ => _.target, 'optionalAccess', _2 => _2.value]):F;n(K)},[n]),e=_react.useCallback.call(void 0, ()=>{i()},[i]),c=_react.useMemo.call(void 0, ()=>({value:a,onChange:p,onBlur:e}),[a,p,e]),h=_react.useMemo.call(void 0, ()=>({error:m,touched:B,invalid:f,isDirty:y,isValidating:U,isHidden:s,isRequired:d,hasError:g}),[m,B,f,y,U,s,d,g]);return _react.useMemo.call(void 0, ()=>({value:o,displayValue:a,setValue:n,setBlur:i,onChange:p,onBlur:e,props:c,meta:h}),[o,a,n,i,p,e,c,h])}function N(){let t=_chunkT36GFQHUcjs.b.call(void 0, ),r=_react.useRef.call(void 0, null),i=_react.useCallback.call(void 0, ()=>{let o=_chunkRHMJPKNVcjs.f.call(void 0, t);return r.current&&r.current.canUndo===o.canUndo&&r.current.canRedo===o.canRedo&&r.current.historyIndex===o.historyIndex&&r.current.historySize===o.historySize?r.current:(r.current=o,o)},[t]),l=_react.useCallback.call(void 0, o=>t.observe.subscribeHistoryMeta(()=>o()),[t]),u=_react.useSyncExternalStore.call(void 0, l,i,i),a=_react.useCallback.call(void 0, ()=>{t.feature.undo()},[t]),n=_react.useCallback.call(void 0, ()=>{t.feature.redo()},[t]);return _react.useMemo.call(void 0, ()=>({...u,undo:a,redo:n}),[u,a,n])}function Y(t,r,i){let l=_chunkT36GFQHUcjs.b.call(void 0, ),u=V(t),{value:a,setValue:n,meta:o}=u,b=_optionalChain([o, 'optionalAccess', _3 => _3.error]),m=!!_optionalChain([o, 'optionalAccess', _4 => _4.isValidating]),B=_react.useRef.call(void 0, null),[f,y]=_react.useState.call(void 0, !1),U=_react.useRef.call(void 0, {current:0}).current,s=_react.useRef.call(void 0, {setLoading:y,setError:(e,c)=>l.write.setError(e,c),setValue:e=>n(e),getUploadKey:()=>B.current,setUploadKey:e=>{B.current=e},onCallbackError:e=>l.read.config.onUnhandledError(e,"upload")});_react.useEffect.call(void 0, ()=>{s.current.setLoading=y,s.current.setError=(e,c)=>l.write.setError(e,c),s.current.setValue=e=>n(e),s.current.onCallbackError=e=>l.read.config.onUnhandledError(e,"upload")});let d=_react.useMemo.call(void 0, ()=>({setLoading:e=>s.current.setLoading(e),setError:(e,c)=>s.current.setError(e,c),setValue:e=>s.current.setValue(e),getUploadKey:()=>s.current.getUploadKey(),setUploadKey:e=>s.current.setUploadKey(e),onCallbackError:e=>_optionalChain([s, 'access', _5 => _5.current, 'access', _6 => _6.onCallbackError, 'optionalCall', _7 => _7(e)])}),[]),g=_react.useMemo.call(void 0, ()=>_chunkH3RTOA6Xcjs.a.call(void 0, t,r,d,U),[t,r,d]),p=_react.useMemo.call(void 0, ()=>_chunkH3RTOA6Xcjs.b.call(void 0, t,i,d,U),[t,i,d]);return _react.useMemo.call(void 0, ()=>({value:a,setValue:n,error:b,isValidating:m||f,upload:g,remove:p}),[a,n,b,m,f,g,p])}exports.BitFormProvider = _chunkT36GFQHUcjs.a; exports.useBitArray = _chunkT36GFQHUcjs.e; exports.useBitField = V; exports.useBitForm = _chunkT36GFQHUcjs.c; exports.useBitHistory = N; exports.useBitPersist = _chunkT36GFQHUcjs.i; exports.useBitScope = _chunkT36GFQHUcjs.f; exports.useBitSteps = _chunkT36GFQHUcjs.g; exports.useBitStore = _chunkT36GFQHUcjs.b; exports.useBitUpload = Y; exports.useBitWatch = _chunkT36GFQHUcjs.h;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/react/index.cjs.map
CHANGED
|
@@ -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","setBlur","store","useBitFieldBase","fieldController","useMemo","createFrameworkMaskedFieldBinding","displayValue","setValue","useCallback","val","value","metaState","deriveFieldMeta","error","touched","invalid","isDirty","isValidating","isHidden","isRequired","hasError","onChange","e","isBitFieldInputEventObject","onBlur","props","meta","useBitHistory","useBitStore","lastMeta","useRef","getSnapshot","nextMeta","readHistoryMetaSnapshot","subscribe","cb","useSyncExternalStore","undo","redo","useBitUpload","fieldPath","uploadFn","deleteFile","field","fieldIsValidating","uploadKeyRef","isUploading","setIsUploading","useState","callbacksRef","msg","key","useEffect","stableCallbacks","upload","createUploadHandler","remove","createRemoveHandler"],"mappings":"AAAA,soBAAiG,yDAAiD,iCAA8B,iCAA8B,yDAAqC,iCAA8B,yDAA0C,yDAA0C,iCAA8B,iCAA8B,iCAA8B,yDAA0C,8BCApc,SAWrBA,CAAAA,CAGdC,CAAAA,CAAsC,CACtC,GAAM,CAAE,UAAA,CAAAC,CAAAA,CAAY,OAAA,CAAAC,CAAAA,CAAS,KAAA,CAAAC,CAAM,CAAA,CAAIC,iCAAAA,CAIjC,CAAA,CAEA,CAAE,eAAA,CAAAC,CAAgB,CAAA,CAAIC,4BAAAA,CAAQ,CAAA,EAC3BC,iCAAAA,CAAkCJ,CAAOH,CAAI,CAAA,CACnD,CAACG,CAAAA,CAAOH,CAAI,CAAC,CAAA,CAEVQ,CAAAA,CAAeF,4BAAAA,CACnB,CAAA,EAAMD,CAAAA,CAAgB,YAAA,CAAaJ,CAAAA,CAAW,KAAK,CAAA,CACnD,CAACA,CAAAA,CAAW,KAAA,CAAOI,CAAe,CACpC,CAAA,CAEMI,CAAAA,CAAWC,gCAAAA,CACdC,EAAqE,CACpEN,CAAAA,CAAgB,QAAA,CAASM,CAAG,CAC9B,CAAA,CACA,CAACN,CAAe,CAClB,CAAA,CAEM,CAAE,KAAA,CAAAO,CAAM,CAAA,CAAIX,CAAAA,CACZY,CAAAA,CAAYC,iCAAAA,CAA0B,CAAA,CACtC,CACJ,KAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CACF,CAAA,CAAIT,CAAAA,CAEEU,CAAAA,CAAWb,gCAAAA,CACdc,EAA0B,CACzB,IAAMb,CAAAA,CAAMc,iCAAAA,CAA4B,CAAA,iBAAID,CAAAA,mBAAE,MAAA,6BAAQ,OAAA,CAAQA,CAAAA,CAC9Df,CAAAA,CAASE,CAAG,CACd,CAAA,CACA,CAACF,CAAQ,CACX,CAAA,CAEMiB,CAAAA,CAAShB,gCAAAA,CAAY,CAAA,EAAM,CAC/BR,CAAAA,CAAQ,CACV,CAAA,CAAG,CAACA,CAAO,CAAC,CAAA,CAENyB,CAAAA,CAAQrB,4BAAAA,CACZ,CAAA,EAAA,CAAO,CACL,KAAA,CAAOE,CAAAA,CACP,QAAA,CAAAe,CAAAA,CACA,MAAA,CAAAG,CACF,CAAA,CAAA,CACA,CAAClB,CAAAA,CAAce,CAAAA,CAAUG,CAAM,CACjC,CAAA,CAEME,CAAAA,CAAOtB,4BAAAA,CACX,CAAA,EAAA,CAAO,CACL,KAAA,CAAAS,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CACF,CAAA,CAAA,CACA,CACEP,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAC,CACF,CACF,CAAA,CAEA,OAAOhB,4BAAAA,CACL,CAAA,EAAA,CAAO,CAEL,KAAA,CAAOM,CAAAA,CACP,YAAA,CAAAJ,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,OAAA,CAAAP,CAAAA,CACA,QAAA,CAAAqB,CAAAA,CACA,MAAA,CAAAG,CAAAA,CAEA,KAAA,CAAAC,CAAAA,CAEA,IAAA,CAAAC,CACF,CAAA,CAAA,CACA,CAAChB,CAAAA,CAAOJ,CAAAA,CAAcC,CAAAA,CAAUP,CAAAA,CAASqB,CAAAA,CAAUG,CAAAA,CAAQC,CAAAA,CAAOC,CAAI,CACxE,CACF,CC9GA,SAKgBC,CAAAA,CAAAA,CAA6D,CAC3E,IAAM1B,CAAAA,CAAQ2B,iCAAAA,CAAe,CACvBC,CAAAA,CAAWC,2BAAAA,IAA+B,CAAA,CAE1CC,CAAAA,CAAcvB,gCAAAA,CAAY,CAAA,EAAM,CACpC,IAAMwB,CAAAA,CAAWC,iCAAAA,CAA6B,CAAA,CAE9C,OACEJ,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,CAEnCH,CAAAA,CAAS,OAAA,CAAA,CAGlBA,CAAAA,CAAS,OAAA,CAAUG,CAAAA,CACZA,CAAAA,CACT,CAAA,CAAG,CAAC/B,CAAK,CAAC,CAAA,CAEJiC,CAAAA,CAAY1B,gCAAAA,CACf2B,EAAmBlC,CAAAA,CAAM,OAAA,CAAQ,oBAAA,CAAqB,CAAA,CAAA,EAAMkC,CAAAA,CAAG,CAAC,CAAA,CACjE,CAAClC,CAAK,CACR,CAAA,CAEMyB,CAAAA,CAAOU,yCAAAA,CAAqBF,CAAWH,CAAAA,CAAaA,CAAW,CAAA,CAE/DM,CAAAA,CAAO7B,gCAAAA,CAAY,CAAA,EAAM,CAC7BP,CAAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,CACrB,CAAA,CAAG,CAACA,CAAK,CAAC,CAAA,CAEJqC,CAAAA,CAAO9B,gCAAAA,CAAY,CAAA,EAAM,CAC7BP,CAAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,CACrB,CAAA,CAAG,CAACA,CAAK,CAAC,CAAA,CAEV,OAAOG,4BAAAA,CACL,CAAA,EAAA,CAAO,CACL,GAAGsB,CAAAA,CACH,IAAA,CAAAW,CAAAA,CACA,IAAA,CAAAC,CACF,CAAA,CAAA,CACA,CAACZ,CAAAA,CAAMW,CAAAA,CAAMC,CAAI,CACnB,CACF,CC3BA,SAOgBC,CAAAA,CAGdC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACoB,CACpB,IAAMzC,CAAAA,CAAQ2B,iCAAAA,CAAiB,CACzBe,CAAAA,CAAQ9C,CAAAA,CAAY2C,CAAS,CAAA,CAC7B,CAAE,KAAA,CAAA9B,CAAAA,CAAO,QAAA,CAAAH,CAAAA,CAAU,IAAA,CAAAmB,CAAK,CAAA,CAAIiB,CAAAA,CAC5B9B,CAAAA,iBAAQa,CAAAA,6BAAM,OAAA,CACdkB,CAAAA,CAAoB,CAAC,iBAAClB,CAAAA,6BAAM,cAAA,CAC5BmB,CAAAA,CAAef,2BAAAA,IAA0B,CAAA,CACzC,CAACgB,CAAAA,CAAaC,CAAc,CAAA,CAAIC,6BAAAA,CAAS,CAAK,CAAA,CAO9CC,CAAAA,CAAenB,2BAAAA,CACnB,UAAA,CAAYiB,CAAAA,CACZ,QAAA,CAAU,CAACjD,CAAAA,CAAcoD,CAAAA,CAAAA,EACvBjD,CAAAA,CAAM,KAAA,CAAM,QAAA,CAASH,CAAAA,CAAMoD,CAAG,CAAA,CAChC,QAAA,CAAWzC,CAAAA,EAAuBF,CAAAA,CAASE,CAAU,CAAA,CACrD,YAAA,CAAc,CAAA,CAAA,EAAMoC,CAAAA,CAAa,OAAA,CACjC,YAAA,CAAeM,CAAAA,EAAuB,CACpCN,CAAAA,CAAa,OAAA,CAAUM,CACzB,CAAA,CACA,eAAA,CAAkB,CAAA,EAChBlD,CAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,gBAAA,CAAiB,CAAA,CAAG,QAAQ,CAClD,CAAC,CAAA,CAIDmD,8BAAAA,CAAU,CAAA,EAAM,CACdH,CAAAA,CAAa,OAAA,CAAQ,UAAA,CAAaF,CAAAA,CAClCE,CAAAA,CAAa,OAAA,CAAQ,QAAA,CAAW,CAACnD,CAAAA,CAAMoD,CAAAA,CAAAA,EACrCjD,CAAAA,CAAM,KAAA,CAAM,QAAA,CAASH,CAAAA,CAAMoD,CAAG,CAAA,CAChCD,CAAAA,CAAa,OAAA,CAAQ,QAAA,CAAYxC,CAAAA,EAAQF,CAAAA,CAASE,CAAU,CAAA,CAC5DwC,CAAAA,CAAa,OAAA,CAAQ,eAAA,CAAmB,CAAA,EACtChD,CAAAA,CAAM,IAAA,CAAK,MAAA,CAAO,gBAAA,CAAiB,CAAA,CAAG,QAAQ,CAClD,CAAC,CAAA,CAED,IAAMoD,CAAAA,CAAkBjD,4BAAAA,CACtB,CAAA,EAAA,CAAO,CACL,UAAA,CAAaK,CAAAA,EAAiBwC,CAAAA,CAAa,OAAA,CAAQ,UAAA,CAAWxC,CAAG,CAAA,CACjE,QAAA,CAAU,CAACX,CAAAA,CAAcoD,CAAAA,CAAAA,EACvBD,CAAAA,CAAa,OAAA,CAAQ,QAAA,CAASnD,CAAAA,CAAMoD,CAAG,CAAA,CACzC,QAAA,CAAWzC,CAAAA,EAAuBwC,CAAAA,CAAa,OAAA,CAAQ,QAAA,CAASxC,CAAG,CAAA,CACnE,YAAA,CAAc,CAAA,CAAA,EAAMwC,CAAAA,CAAa,OAAA,CAAQ,YAAA,CAAa,CAAA,CACtD,YAAA,CAAeE,CAAAA,EACbF,CAAAA,CAAa,OAAA,CAAQ,YAAA,CAAaE,CAAG,CAAA,CACvC,eAAA,CAAkB,CAAA,kBAChBF,CAAAA,qBAAa,OAAA,qBAAQ,eAAA,0BAAA,CAAkB,CAAC,GAC5C,CAAA,CAAA,CACA,CAAC,CACH,CAAA,CAEMK,CAAAA,CAASlD,4BAAAA,CACb,CAAA,EAAMmD,iCAAAA,CAAoBf,CAAWC,CAAAA,CAAUY,CAAe,CAAA,CAC9D,CAACb,CAAAA,CAAWC,CAAAA,CAAUY,CAAe,CACvC,CAAA,CAEMG,CAAAA,CAASpD,4BAAAA,CACb,CAAA,EAAMqD,iCAAAA,CAAoBjB,CAAWE,CAAAA,CAAYW,CAAe,CAAA,CAChE,CAACb,CAAAA,CAAWE,CAAAA,CAAYW,CAAe,CACzC,CAAA,CAEA,OAAOjD,4BAAAA,CACL,CAAA,EAAA,CAAO,CACL,KAAA,CAAAM,CAAAA,CACA,QAAA,CAAAH,CAAAA,CACA,KAAA,CAAAM,CAAAA,CACA,YAAA,CAAc+B,CAAAA,EAAqBE,CAAAA,CACnC,MAAA,CAAAQ,CAAAA,CACA,MAAA,CAAAE,CACF,CAAA,CAAA,CACA,CAAC9C,CAAAA,CAAOH,CAAAA,CAAUM,CAAAA,CAAO+B,CAAAA,CAAmBE,CAAAA,CAAaQ,CAAAA,CAAQE,CAAM,CACzE,CACF,CAAA,0aAAA","file":"/home/runner/work/bit-form/bit-form/dist/react/index.cjs","sourcesContent":[null,"import { useCallback, useMemo } from \"react\";\nimport {\n BitPath,\n BitPathValue,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n isBitFieldInputEventObject,\n} from \"../core\";\nimport type { BitFieldInputEvent, UseBitFieldResult } from \"./types\";\nimport { useBitFieldBase } from \"./use-bit-field-base\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldResult<TForm, P> {\n const { fieldState, setBlur, store } = useBitFieldBase<\n BitPathValue<TForm, P>,\n TForm,\n P\n >(path);\n\n const { fieldController } = useMemo(() => {\n return createFrameworkMaskedFieldBinding(store, path);\n }, [store, path]);\n\n const displayValue = useMemo(\n () => fieldController.displayValue(fieldState.value),\n [fieldState.value, fieldController],\n );\n\n const setValue = useCallback(\n (val: BitPathValue<TForm, P> | string | number | null | undefined) => {\n fieldController.setValue(val);\n },\n [fieldController],\n );\n\n const { value } = fieldState;\n const metaState = deriveFieldMeta(fieldState);\n const {\n error,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError,\n } = metaState;\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 const props = useMemo(\n () => ({\n value: displayValue,\n onChange,\n onBlur,\n }),\n [displayValue, onChange, onBlur],\n );\n\n const meta = useMemo(\n () => ({\n error,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError,\n }),\n [\n error,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError,\n ],\n );\n\n return useMemo(\n () => ({\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 // Metadata (grouped)\n meta,\n }),\n [value, displayValue, setValue, setBlur, onChange, onBlur, props, meta],\n );\n}\n","import { useCallback, useMemo, useRef, useSyncExternalStore } from \"react\";\nimport { readHistoryMetaSnapshot, type HistoryMeta } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitHistoryResult } from \"./types\";\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n const lastMeta = useRef<HistoryMeta | null>(null);\n\n const getSnapshot = useCallback(() => {\n const nextMeta = readHistoryMetaSnapshot(store);\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 lastMeta.current = nextMeta;\n return nextMeta;\n }, [store]);\n\n const subscribe = useCallback(\n (cb: () => void) => store.observe.subscribeHistoryMeta(() => cb()),\n [store],\n );\n\n const meta = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n const undo = useCallback(() => {\n store.feature.undo();\n }, [store]);\n\n const redo = useCallback(() => {\n store.feature.redo();\n }, [store]);\n\n return useMemo(\n () => ({\n ...meta,\n undo,\n redo,\n }),\n [meta, undo, 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 { useMemo, useRef, useState, useEffect } from \"react\";\nimport type { BitDeleteUploadFn, BitUploadFn } from \"../core\";\nimport { createRemoveHandler, createUploadHandler } from \"../core/adapters\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitUploadResult } from \"./types\";\nimport { useBitField } from \"./use-bit-field\";\n\nexport function useBitUpload<\n TMetadata extends Record<string, unknown> = Record<string, unknown>,\n>(\n fieldPath: string,\n uploadFn: BitUploadFn<TMetadata>,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n const { value, setValue, meta } = field;\n const error = meta?.error;\n const fieldIsValidating = !!meta?.isValidating;\n const uploadKeyRef = useRef<string | null>(null);\n const [isUploading, setIsUploading] = useState(false);\n\n // Ref que sempre aponta para os valores mais recentes de render,\n // permitindo que o handler factory (e seu `currentGeneration`) seja\n // criado uma única vez por (fieldPath, uploadFn). Sem este padrão,\n // qualquer re-render que gere nova referência de callbacks zeraria\n // `currentGeneration` e perderia silenciosamente a URL de upload.\n const callbacksRef = useRef({\n setLoading: setIsUploading,\n setError: (path: string, msg: string | undefined) =>\n store.write.setError(path, msg),\n setValue: (val: string | null) => setValue(val as any),\n getUploadKey: () => uploadKeyRef.current,\n setUploadKey: (key: string | null) => {\n uploadKeyRef.current = key;\n },\n onCallbackError: (e: unknown) =>\n store.read.config.onUnhandledError(e, \"upload\"),\n });\n // Mantém os closures da ref atualizados sem recriar o objeto.\n // Usamos useEffect para evitar mutações de ref durante o render phase\n // (React concurrent mode pode descartar renders, tornando mutações inseguras).\n useEffect(() => {\n callbacksRef.current.setLoading = setIsUploading;\n callbacksRef.current.setError = (path, msg) =>\n store.write.setError(path, msg);\n callbacksRef.current.setValue = (val) => setValue(val as any);\n callbacksRef.current.onCallbackError = (e) =>\n store.read.config.onUnhandledError(e, \"upload\");\n });\n\n const stableCallbacks = useMemo(\n () => ({\n setLoading: (val: boolean) => callbacksRef.current.setLoading(val),\n setError: (path: string, msg: string | undefined) =>\n callbacksRef.current.setError(path, msg),\n setValue: (val: string | null) => callbacksRef.current.setValue(val),\n getUploadKey: () => callbacksRef.current.getUploadKey(),\n setUploadKey: (key: string | null) =>\n callbacksRef.current.setUploadKey(key),\n onCallbackError: (e: unknown) =>\n callbacksRef.current.onCallbackError?.(e),\n }),\n [], // estável para todo o lifetime do componente\n );\n\n const upload = useMemo(\n () => createUploadHandler(fieldPath, uploadFn, stableCallbacks),\n [fieldPath, uploadFn, stableCallbacks],\n );\n\n const remove = useMemo(\n () => createRemoveHandler(fieldPath, deleteFile, stableCallbacks),\n [fieldPath, deleteFile, stableCallbacks],\n );\n\n return useMemo(\n () => ({\n value,\n setValue,\n error,\n isValidating: fieldIsValidating || isUploading,\n upload,\n remove,\n }),\n [value, setValue, error, fieldIsValidating, isUploading, upload, remove],\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["/builds/kenji.ccp-group/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","setBlur","store","useBitFieldBase","fieldController","useMemo","createFrameworkMaskedFieldBinding","displayValue","setValue","useCallback","val","value","metaState","deriveFieldMeta","error","touched","invalid","isDirty","isValidating","isHidden","isRequired","hasError","onChange","e","isBitFieldInputEventObject","onBlur","props","meta","useBitHistory","useBitStore","lastMeta","useRef","getSnapshot","nextMeta","readHistoryMetaSnapshot","subscribe","cb","useSyncExternalStore","undo","redo","useBitUpload","fieldPath","uploadFn","deleteFile","field","fieldIsValidating","uploadKeyRef","isUploading","setIsUploading","useState","sharedGen","callbacksRef","msg","key","useEffect","stableCallbacks","upload","createUploadHandler","remove","createRemoveHandler"],"mappings":"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","file":"/builds/kenji.ccp-group/bit-form/dist/react/index.cjs","sourcesContent":[null,"import { useCallback, useMemo } from \"react\";\nimport {\n BitPath,\n BitPathValue,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n isBitFieldInputEventObject,\n} from \"../core\";\nimport type { BitFieldInputEvent, UseBitFieldResult } from \"./types\";\nimport { useBitFieldBase } from \"./use-bit-field-base\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldResult<TForm, P> {\n const { fieldState, setBlur, store } = useBitFieldBase<\n BitPathValue<TForm, P>,\n TForm,\n P\n >(path);\n\n const { fieldController } = useMemo(() => {\n return createFrameworkMaskedFieldBinding(store, path);\n }, [store, path]);\n\n const displayValue = useMemo(\n () => fieldController.displayValue(fieldState.value),\n [fieldState.value, fieldController],\n );\n\n const setValue = useCallback(\n (val: BitPathValue<TForm, P> | string | number | null | undefined) => {\n fieldController.setValue(val);\n },\n [fieldController],\n );\n\n const { value } = fieldState;\n const metaState = deriveFieldMeta(fieldState);\n const {\n error,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError,\n } = metaState;\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 const props = useMemo(\n () => ({\n value: displayValue,\n onChange,\n onBlur,\n }),\n [displayValue, onChange, onBlur],\n );\n\n const meta = useMemo(\n () => ({\n error,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError,\n }),\n [\n error,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError,\n ],\n );\n\n return useMemo(\n () => ({\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 // Metadata (grouped)\n meta,\n }),\n [value, displayValue, setValue, setBlur, onChange, onBlur, props, meta],\n );\n}\n","import { useCallback, useMemo, useRef, useSyncExternalStore } from \"react\";\nimport { readHistoryMetaSnapshot, type HistoryMeta } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitHistoryResult } from \"./types\";\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n const lastMeta = useRef<HistoryMeta | null>(null);\n\n const getSnapshot = useCallback(() => {\n const nextMeta = readHistoryMetaSnapshot(store);\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 lastMeta.current = nextMeta;\n return nextMeta;\n }, [store]);\n\n const subscribe = useCallback(\n (cb: () => void) => store.observe.subscribeHistoryMeta(() => cb()),\n [store],\n );\n\n const meta = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n const undo = useCallback(() => {\n store.feature.undo();\n }, [store]);\n\n const redo = useCallback(() => {\n store.feature.redo();\n }, [store]);\n\n return useMemo(\n () => ({\n ...meta,\n undo,\n redo,\n }),\n [meta, undo, 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 { useMemo, useRef, useState, useEffect } from \"react\";\nimport type { BitDeleteUploadFn, BitUploadFn } from \"../core\";\nimport { createRemoveHandler, createUploadHandler } from \"../core/adapters\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitUploadResult } from \"./types\";\nimport { useBitField } from \"./use-bit-field\";\n\nexport function useBitUpload<\n TMetadata extends Record<string, unknown> = Record<string, unknown>,\n>(\n fieldPath: string,\n uploadFn: BitUploadFn<TMetadata>,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n const { value, setValue, meta } = field;\n const error = meta?.error;\n const fieldIsValidating = !!meta?.isValidating;\n const uploadKeyRef = useRef<string | null>(null);\n const [isUploading, setIsUploading] = useState(false);\n\n // Shared generation counter so remove() invalidates in-flight uploads.\n // This prevents a remove-during-upload race where the stale upload URL\n // would overwrite the null set by remove.\n const sharedGen = useRef({ current: 0 }).current;\n\n // Ref que sempre aponta para os valores mais recentes de render,\n // permitindo que o handler factory (e seu `currentGeneration`) seja\n // criado uma única vez por (fieldPath, uploadFn). Sem este padrão,\n // qualquer re-render que gere nova referência de callbacks zeraria\n // `currentGeneration` e perderia silenciosamente a URL de upload.\n const callbacksRef = useRef({\n setLoading: setIsUploading,\n setError: (path: string, msg: string | undefined) =>\n store.write.setError(path, msg),\n setValue: (val: string | null) => setValue(val as any),\n getUploadKey: () => uploadKeyRef.current,\n setUploadKey: (key: string | null) => {\n uploadKeyRef.current = key;\n },\n onCallbackError: (e: unknown) =>\n store.read.config.onUnhandledError(e, \"upload\"),\n });\n // Mantém os closures da ref atualizados sem recriar o objeto.\n // Usamos useEffect para evitar mutações de ref durante o render phase\n // (React concurrent mode pode descartar renders, tornando mutações inseguras).\n useEffect(() => {\n callbacksRef.current.setLoading = setIsUploading;\n callbacksRef.current.setError = (path, msg) =>\n store.write.setError(path, msg);\n callbacksRef.current.setValue = (val) => setValue(val as any);\n callbacksRef.current.onCallbackError = (e) =>\n store.read.config.onUnhandledError(e, \"upload\");\n });\n\n const stableCallbacks = useMemo(\n () => ({\n setLoading: (val: boolean) => callbacksRef.current.setLoading(val),\n setError: (path: string, msg: string | undefined) =>\n callbacksRef.current.setError(path, msg),\n setValue: (val: string | null) => callbacksRef.current.setValue(val),\n getUploadKey: () => callbacksRef.current.getUploadKey(),\n setUploadKey: (key: string | null) =>\n callbacksRef.current.setUploadKey(key),\n onCallbackError: (e: unknown) =>\n callbacksRef.current.onCallbackError?.(e),\n }),\n [], // estável para todo o lifetime do componente\n );\n\n const upload = useMemo(\n () => createUploadHandler(fieldPath, uploadFn, stableCallbacks, sharedGen),\n [fieldPath, uploadFn, stableCallbacks],\n );\n\n const remove = useMemo(\n () => createRemoveHandler(fieldPath, deleteFile, stableCallbacks, sharedGen),\n [fieldPath, deleteFile, stableCallbacks],\n );\n\n return useMemo(\n () => ({\n value,\n setValue,\n error,\n isValidating: fieldIsValidating || isUploading,\n upload,\n remove,\n }),\n [value, setValue, error, fieldIsValidating, isUploading, upload, remove],\n );\n}\n"]}
|
package/dist/react/index.d.cts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { g as UseBitFieldResult, h as UseBitHistoryResult, i as UseBitUploadResult } from '../use-bit-persist-
|
|
2
|
-
export { B as BitFormProvider, j as UseBitFieldBindProps, k as UseBitFieldMeta, U as UseBitPersistResult,
|
|
1
|
+
import { g as UseBitFieldResult, h as UseBitHistoryResult, i as UseBitUploadResult } from '../use-bit-persist-Dsr69hme.cjs';
|
|
2
|
+
export { B as BitFormProvider, j as UseBitFieldBindProps, k as UseBitFieldMeta, l as UseBitFormMeta, m as UseBitFormResult, U as UseBitPersistResult, n 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-Dsr69hme.cjs';
|
|
3
3
|
import { d as BitPath } from '../state-types-8bUndWfg.cjs';
|
|
4
4
|
import '../bus-DzTqgkZ4.cjs';
|
|
5
5
|
import { g as BitUploadFn, b as BitDeleteUploadFn } from '../upload-C4JqIaU2.cjs';
|
|
6
|
-
export { S as ScopeStatus, V as ValidateScopeResult } from '../runtime-types-
|
|
6
|
+
export { S as ScopeStatus, V as ValidateScopeResult } from '../runtime-types-BLCkMgcy.cjs';
|
|
7
7
|
import 'react';
|
|
8
|
-
import '../store-api-types-
|
|
8
|
+
import '../store-api-types-D7i0KWbr.cjs';
|
|
9
9
|
import '../types-CUXh7PqD.cjs';
|
|
10
|
-
import '../config-types-
|
|
11
|
-
import '../meta-types-
|
|
10
|
+
import '../config-types-mZFlp2Bi.cjs';
|
|
11
|
+
import '../meta-types-1Xcht8hj.cjs';
|
|
12
12
|
import '../field-binding-X5TkvfUt.cjs';
|
|
13
13
|
|
|
14
14
|
declare function useBitField<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): UseBitFieldResult<TForm, P>;
|
package/dist/react/index.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { g as UseBitFieldResult, h as UseBitHistoryResult, i as UseBitUploadResult } from '../use-bit-persist-
|
|
2
|
-
export { B as BitFormProvider, j as UseBitFieldBindProps, k as UseBitFieldMeta, U as UseBitPersistResult,
|
|
1
|
+
import { g as UseBitFieldResult, h as UseBitHistoryResult, i as UseBitUploadResult } from '../use-bit-persist-CFcuAzwp.js';
|
|
2
|
+
export { B as BitFormProvider, j as UseBitFieldBindProps, k as UseBitFieldMeta, l as UseBitFormMeta, m as UseBitFormResult, U as UseBitPersistResult, n 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-CFcuAzwp.js';
|
|
3
3
|
import { d as BitPath } from '../state-types-8bUndWfg.js';
|
|
4
4
|
import '../bus-BFOBGmd9.js';
|
|
5
5
|
import { g as BitUploadFn, b as BitDeleteUploadFn } from '../upload-ao6skK9K.js';
|
|
6
|
-
export { S as ScopeStatus, V as ValidateScopeResult } from '../runtime-types-
|
|
6
|
+
export { S as ScopeStatus, V as ValidateScopeResult } from '../runtime-types-BLCkMgcy.js';
|
|
7
7
|
import 'react';
|
|
8
|
-
import '../store-api-types-
|
|
8
|
+
import '../store-api-types-CgRVo2DA.js';
|
|
9
9
|
import '../types-CUXh7PqD.js';
|
|
10
|
-
import '../config-types-
|
|
11
|
-
import '../meta-types-
|
|
10
|
+
import '../config-types-DB6FaTiZ.js';
|
|
11
|
+
import '../meta-types-1Xcht8hj.js';
|
|
12
12
|
import '../field-binding-Bi1g-D8X.js';
|
|
13
13
|
|
|
14
14
|
declare function useBitField<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): UseBitFieldResult<TForm, P>;
|
package/dist/react/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as L,b as
|
|
1
|
+
import{a as L,b as x,c as j,d as C,e as D,f as z,g as q,h as A,i as G}from"../chunk-DNHPYPJA.js";import{a as w,b as I}from"../chunk-CATA7YEV.js";import"../chunk-5NA2TFPG.js";import"../chunk-PRMNTQD5.js";import{h as H}from"../chunk-XPY6TCOO.js";import"../chunk-W2E5UIXT.js";import{f as k}from"../chunk-UIKO6GGW.js";import{a as T}from"../chunk-L57KMBXS.js";import"../chunk-X3OFU2UH.js";import"../chunk-JVRTPL7W.js";import"../chunk-MBEQLBJB.js";import{a as P}from"../chunk-DGEGYNQL.js";import{useCallback as S,useMemo as R}from"react";function V(t){let{fieldState:r,setBlur:i,store:l}=C(t),{fieldController:u}=R(()=>H(l,t),[l,t]),a=R(()=>u.displayValue(r.value),[r.value,u]),n=S(F=>{u.setValue(F)},[u]),{value:o}=r,b=T(r),{error:m,touched:B,invalid:f,isDirty:y,isValidating:U,isHidden:s,isRequired:d,hasError:g}=b,p=S(F=>{let K=P(F)?F.target?.value:F;n(K)},[n]),e=S(()=>{i()},[i]),c=R(()=>({value:a,onChange:p,onBlur:e}),[a,p,e]),h=R(()=>({error:m,touched:B,invalid:f,isDirty:y,isValidating:U,isHidden:s,isRequired:d,hasError:g}),[m,B,f,y,U,s,d,g]);return R(()=>({value:o,displayValue:a,setValue:n,setBlur:i,onChange:p,onBlur:e,props:c,meta:h}),[o,a,n,i,p,e,c,h])}import{useCallback as v,useMemo as O,useRef as W,useSyncExternalStore as J}from"react";function N(){let t=x(),r=W(null),i=v(()=>{let o=k(t);return r.current&&r.current.canUndo===o.canUndo&&r.current.canRedo===o.canRedo&&r.current.historyIndex===o.historyIndex&&r.current.historySize===o.historySize?r.current:(r.current=o,o)},[t]),l=v(o=>t.observe.subscribeHistoryMeta(()=>o()),[t]),u=J(l,i,i),a=v(()=>{t.feature.undo()},[t]),n=v(()=>{t.feature.redo()},[t]);return O(()=>({...u,undo:a,redo:n}),[u,a,n])}import{useMemo as E,useRef as M,useState as Q,useEffect as X}from"react";function Y(t,r,i){let l=x(),u=V(t),{value:a,setValue:n,meta:o}=u,b=o?.error,m=!!o?.isValidating,B=M(null),[f,y]=Q(!1),U=M({current:0}).current,s=M({setLoading:y,setError:(e,c)=>l.write.setError(e,c),setValue:e=>n(e),getUploadKey:()=>B.current,setUploadKey:e=>{B.current=e},onCallbackError:e=>l.read.config.onUnhandledError(e,"upload")});X(()=>{s.current.setLoading=y,s.current.setError=(e,c)=>l.write.setError(e,c),s.current.setValue=e=>n(e),s.current.onCallbackError=e=>l.read.config.onUnhandledError(e,"upload")});let d=E(()=>({setLoading:e=>s.current.setLoading(e),setError:(e,c)=>s.current.setError(e,c),setValue:e=>s.current.setValue(e),getUploadKey:()=>s.current.getUploadKey(),setUploadKey:e=>s.current.setUploadKey(e),onCallbackError:e=>s.current.onCallbackError?.(e)}),[]),g=E(()=>w(t,r,d,U),[t,r,d]),p=E(()=>I(t,i,d,U),[t,i,d]);return E(()=>({value:a,setValue:n,error:b,isValidating:m||f,upload:g,remove:p}),[a,n,b,m,f,g,p])}export{L as BitFormProvider,D as useBitArray,V as useBitField,j as useBitForm,N as useBitHistory,G as useBitPersist,z as useBitScope,q as useBitSteps,x as useBitStore,Y as useBitUpload,A as useBitWatch};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/react/use-bit-field.ts","../../src/react/use-bit-history.ts","../../src/react/use-bit-upload.ts"],"sourcesContent":["import { useCallback, useMemo } from \"react\";\nimport {\n BitPath,\n BitPathValue,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n isBitFieldInputEventObject,\n} from \"../core\";\nimport type { BitFieldInputEvent, UseBitFieldResult } from \"./types\";\nimport { useBitFieldBase } from \"./use-bit-field-base\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldResult<TForm, P> {\n const { fieldState, setBlur, store } = useBitFieldBase<\n BitPathValue<TForm, P>,\n TForm,\n P\n >(path);\n\n const { fieldController } = useMemo(() => {\n return createFrameworkMaskedFieldBinding(store, path);\n }, [store, path]);\n\n const displayValue = useMemo(\n () => fieldController.displayValue(fieldState.value),\n [fieldState.value, fieldController],\n );\n\n const setValue = useCallback(\n (val: BitPathValue<TForm, P> | string | number | null | undefined) => {\n fieldController.setValue(val);\n },\n [fieldController],\n );\n\n const { value } = fieldState;\n const metaState = deriveFieldMeta(fieldState);\n const {\n error,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError,\n } = metaState;\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 const props = useMemo(\n () => ({\n value: displayValue,\n onChange,\n onBlur,\n }),\n [displayValue, onChange, onBlur],\n );\n\n const meta = useMemo(\n () => ({\n error,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError,\n }),\n [\n error,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError,\n ],\n );\n\n return useMemo(\n () => ({\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 // Metadata (grouped)\n meta,\n }),\n [value, displayValue, setValue, setBlur, onChange, onBlur, props, meta],\n );\n}\n","import { useCallback, useMemo, useRef, useSyncExternalStore } from \"react\";\nimport { readHistoryMetaSnapshot, type HistoryMeta } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitHistoryResult } from \"./types\";\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n const lastMeta = useRef<HistoryMeta | null>(null);\n\n const getSnapshot = useCallback(() => {\n const nextMeta = readHistoryMetaSnapshot(store);\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 lastMeta.current = nextMeta;\n return nextMeta;\n }, [store]);\n\n const subscribe = useCallback(\n (cb: () => void) => store.observe.subscribeHistoryMeta(() => cb()),\n [store],\n );\n\n const meta = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n const undo = useCallback(() => {\n store.feature.undo();\n }, [store]);\n\n const redo = useCallback(() => {\n store.feature.redo();\n }, [store]);\n\n return useMemo(\n () => ({\n ...meta,\n undo,\n redo,\n }),\n [meta, undo, 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 { useMemo, useRef, useState, useEffect } from \"react\";\nimport type { BitDeleteUploadFn, BitUploadFn } from \"../core\";\nimport { createRemoveHandler, createUploadHandler } from \"../core/adapters\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitUploadResult } from \"./types\";\nimport { useBitField } from \"./use-bit-field\";\n\nexport function useBitUpload<\n TMetadata extends Record<string, unknown> = Record<string, unknown>,\n>(\n fieldPath: string,\n uploadFn: BitUploadFn<TMetadata>,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n const { value, setValue, meta } = field;\n const error = meta?.error;\n const fieldIsValidating = !!meta?.isValidating;\n const uploadKeyRef = useRef<string | null>(null);\n const [isUploading, setIsUploading] = useState(false);\n\n // Ref que sempre aponta para os valores mais recentes de render,\n // permitindo que o handler factory (e seu `currentGeneration`) seja\n // criado uma única vez por (fieldPath, uploadFn). Sem este padrão,\n // qualquer re-render que gere nova referência de callbacks zeraria\n // `currentGeneration` e perderia silenciosamente a URL de upload.\n const callbacksRef = useRef({\n setLoading: setIsUploading,\n setError: (path: string, msg: string | undefined) =>\n store.write.setError(path, msg),\n setValue: (val: string | null) => setValue(val as any),\n getUploadKey: () => uploadKeyRef.current,\n setUploadKey: (key: string | null) => {\n uploadKeyRef.current = key;\n },\n onCallbackError: (e: unknown) =>\n store.read.config.onUnhandledError(e, \"upload\"),\n });\n // Mantém os closures da ref atualizados sem recriar o objeto.\n // Usamos useEffect para evitar mutações de ref durante o render phase\n // (React concurrent mode pode descartar renders, tornando mutações inseguras).\n useEffect(() => {\n callbacksRef.current.setLoading = setIsUploading;\n callbacksRef.current.setError = (path, msg) =>\n store.write.setError(path, msg);\n callbacksRef.current.setValue = (val) => setValue(val as any);\n callbacksRef.current.onCallbackError = (e) =>\n store.read.config.onUnhandledError(e, \"upload\");\n });\n\n const stableCallbacks = useMemo(\n () => ({\n setLoading: (val: boolean) => callbacksRef.current.setLoading(val),\n setError: (path: string, msg: string | undefined) =>\n callbacksRef.current.setError(path, msg),\n setValue: (val: string | null) => callbacksRef.current.setValue(val),\n getUploadKey: () => callbacksRef.current.getUploadKey(),\n setUploadKey: (key: string | null) =>\n callbacksRef.current.setUploadKey(key),\n onCallbackError: (e: unknown) =>\n callbacksRef.current.onCallbackError?.(e),\n }),\n [], // estável para todo o lifetime do componente\n );\n\n const upload = useMemo(\n () => createUploadHandler(fieldPath, uploadFn, stableCallbacks),\n [fieldPath, uploadFn, stableCallbacks],\n );\n\n const remove = useMemo(\n () => createRemoveHandler(fieldPath, deleteFile, stableCallbacks),\n [fieldPath, deleteFile, stableCallbacks],\n );\n\n return useMemo(\n () => ({\n value,\n setValue,\n error,\n isValidating: fieldIsValidating || isUploading,\n upload,\n remove,\n }),\n [value, setValue, error, fieldIsValidating, isUploading, upload, remove],\n );\n}\n"],"mappings":"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","names":["useCallback","useMemo","useBitField","path","fieldState","setBlur","store","useBitFieldBase","fieldController","useMemo","createFrameworkMaskedFieldBinding","displayValue","setValue","useCallback","val","value","metaState","deriveFieldMeta","error","touched","invalid","isDirty","isValidating","isHidden","isRequired","hasError","onChange","e","isBitFieldInputEventObject","onBlur","props","meta","useCallback","useMemo","useRef","useSyncExternalStore","useBitHistory","store","useBitStore","lastMeta","useRef","getSnapshot","useCallback","nextMeta","readHistoryMetaSnapshot","subscribe","cb","meta","useSyncExternalStore","undo","redo","useMemo","useMemo","useRef","useState","useEffect","useBitUpload","fieldPath","uploadFn","deleteFile","store","useBitStore","field","useBitField","value","setValue","meta","error","fieldIsValidating","uploadKeyRef","useRef","isUploading","setIsUploading","useState","callbacksRef","path","msg","val","key","useEffect","stableCallbacks","useMemo","upload","createUploadHandler","remove","createRemoveHandler"]}
|
|
1
|
+
{"version":3,"sources":["../../src/react/use-bit-field.ts","../../src/react/use-bit-history.ts","../../src/react/use-bit-upload.ts"],"sourcesContent":["import { useCallback, useMemo } from \"react\";\nimport {\n BitPath,\n BitPathValue,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n isBitFieldInputEventObject,\n} from \"../core\";\nimport type { BitFieldInputEvent, UseBitFieldResult } from \"./types\";\nimport { useBitFieldBase } from \"./use-bit-field-base\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldResult<TForm, P> {\n const { fieldState, setBlur, store } = useBitFieldBase<\n BitPathValue<TForm, P>,\n TForm,\n P\n >(path);\n\n const { fieldController } = useMemo(() => {\n return createFrameworkMaskedFieldBinding(store, path);\n }, [store, path]);\n\n const displayValue = useMemo(\n () => fieldController.displayValue(fieldState.value),\n [fieldState.value, fieldController],\n );\n\n const setValue = useCallback(\n (val: BitPathValue<TForm, P> | string | number | null | undefined) => {\n fieldController.setValue(val);\n },\n [fieldController],\n );\n\n const { value } = fieldState;\n const metaState = deriveFieldMeta(fieldState);\n const {\n error,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError,\n } = metaState;\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 const props = useMemo(\n () => ({\n value: displayValue,\n onChange,\n onBlur,\n }),\n [displayValue, onChange, onBlur],\n );\n\n const meta = useMemo(\n () => ({\n error,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError,\n }),\n [\n error,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError,\n ],\n );\n\n return useMemo(\n () => ({\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 // Metadata (grouped)\n meta,\n }),\n [value, displayValue, setValue, setBlur, onChange, onBlur, props, meta],\n );\n}\n","import { useCallback, useMemo, useRef, useSyncExternalStore } from \"react\";\nimport { readHistoryMetaSnapshot, type HistoryMeta } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitHistoryResult } from \"./types\";\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n const lastMeta = useRef<HistoryMeta | null>(null);\n\n const getSnapshot = useCallback(() => {\n const nextMeta = readHistoryMetaSnapshot(store);\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 lastMeta.current = nextMeta;\n return nextMeta;\n }, [store]);\n\n const subscribe = useCallback(\n (cb: () => void) => store.observe.subscribeHistoryMeta(() => cb()),\n [store],\n );\n\n const meta = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n const undo = useCallback(() => {\n store.feature.undo();\n }, [store]);\n\n const redo = useCallback(() => {\n store.feature.redo();\n }, [store]);\n\n return useMemo(\n () => ({\n ...meta,\n undo,\n redo,\n }),\n [meta, undo, 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 { useMemo, useRef, useState, useEffect } from \"react\";\nimport type { BitDeleteUploadFn, BitUploadFn } from \"../core\";\nimport { createRemoveHandler, createUploadHandler } from \"../core/adapters\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitUploadResult } from \"./types\";\nimport { useBitField } from \"./use-bit-field\";\n\nexport function useBitUpload<\n TMetadata extends Record<string, unknown> = Record<string, unknown>,\n>(\n fieldPath: string,\n uploadFn: BitUploadFn<TMetadata>,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n const { value, setValue, meta } = field;\n const error = meta?.error;\n const fieldIsValidating = !!meta?.isValidating;\n const uploadKeyRef = useRef<string | null>(null);\n const [isUploading, setIsUploading] = useState(false);\n\n // Shared generation counter so remove() invalidates in-flight uploads.\n // This prevents a remove-during-upload race where the stale upload URL\n // would overwrite the null set by remove.\n const sharedGen = useRef({ current: 0 }).current;\n\n // Ref que sempre aponta para os valores mais recentes de render,\n // permitindo que o handler factory (e seu `currentGeneration`) seja\n // criado uma única vez por (fieldPath, uploadFn). Sem este padrão,\n // qualquer re-render que gere nova referência de callbacks zeraria\n // `currentGeneration` e perderia silenciosamente a URL de upload.\n const callbacksRef = useRef({\n setLoading: setIsUploading,\n setError: (path: string, msg: string | undefined) =>\n store.write.setError(path, msg),\n setValue: (val: string | null) => setValue(val as any),\n getUploadKey: () => uploadKeyRef.current,\n setUploadKey: (key: string | null) => {\n uploadKeyRef.current = key;\n },\n onCallbackError: (e: unknown) =>\n store.read.config.onUnhandledError(e, \"upload\"),\n });\n // Mantém os closures da ref atualizados sem recriar o objeto.\n // Usamos useEffect para evitar mutações de ref durante o render phase\n // (React concurrent mode pode descartar renders, tornando mutações inseguras).\n useEffect(() => {\n callbacksRef.current.setLoading = setIsUploading;\n callbacksRef.current.setError = (path, msg) =>\n store.write.setError(path, msg);\n callbacksRef.current.setValue = (val) => setValue(val as any);\n callbacksRef.current.onCallbackError = (e) =>\n store.read.config.onUnhandledError(e, \"upload\");\n });\n\n const stableCallbacks = useMemo(\n () => ({\n setLoading: (val: boolean) => callbacksRef.current.setLoading(val),\n setError: (path: string, msg: string | undefined) =>\n callbacksRef.current.setError(path, msg),\n setValue: (val: string | null) => callbacksRef.current.setValue(val),\n getUploadKey: () => callbacksRef.current.getUploadKey(),\n setUploadKey: (key: string | null) =>\n callbacksRef.current.setUploadKey(key),\n onCallbackError: (e: unknown) =>\n callbacksRef.current.onCallbackError?.(e),\n }),\n [], // estável para todo o lifetime do componente\n );\n\n const upload = useMemo(\n () => createUploadHandler(fieldPath, uploadFn, stableCallbacks, sharedGen),\n [fieldPath, uploadFn, stableCallbacks],\n );\n\n const remove = useMemo(\n () => createRemoveHandler(fieldPath, deleteFile, stableCallbacks, sharedGen),\n [fieldPath, deleteFile, stableCallbacks],\n );\n\n return useMemo(\n () => ({\n value,\n setValue,\n error,\n isValidating: fieldIsValidating || isUploading,\n upload,\n remove,\n }),\n [value, setValue, error, fieldIsValidating, isUploading, upload, remove],\n );\n}\n"],"mappings":"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","names":["useCallback","useMemo","useBitField","path","fieldState","setBlur","store","useBitFieldBase","fieldController","useMemo","createFrameworkMaskedFieldBinding","displayValue","setValue","useCallback","val","value","metaState","deriveFieldMeta","error","touched","invalid","isDirty","isValidating","isHidden","isRequired","hasError","onChange","e","isBitFieldInputEventObject","onBlur","props","meta","useCallback","useMemo","useRef","useSyncExternalStore","useBitHistory","store","useBitStore","lastMeta","useRef","getSnapshot","useCallback","nextMeta","readHistoryMetaSnapshot","subscribe","cb","meta","useSyncExternalStore","undo","redo","useMemo","useMemo","useRef","useState","useEffect","useBitUpload","fieldPath","uploadFn","deleteFile","store","useBitStore","field","useBitField","value","setValue","meta","error","fieldIsValidating","uploadKeyRef","useRef","isUploading","setIsUploading","useState","sharedGen","callbacksRef","path","msg","val","key","useEffect","stableCallbacks","useMemo","upload","createUploadHandler","remove","createRemoveHandler"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkT36GFQHUcjs = require('../chunk-T36GFQHU.cjs');require('../chunk-W5CLDRRE.cjs');require('../chunk-PDFT5E2E.cjs');var _chunkAOMXTUA4cjs = require('../chunk-AOMXTUA4.cjs');require('../chunk-BSGJ3T5S.cjs');require('../chunk-RHMJPKNV.cjs');var _chunkH6HGYVRVcjs = require('../chunk-H6HGYVRV.cjs');require('../chunk-7LCFS2JM.cjs');require('../chunk-3SEB4YRQ.cjs');require('../chunk-X3DGA5UC.cjs');require('../chunk-725CMNAV.cjs');var _react = require('react');function U(u){let{fieldState:r,setBlur:o,store:m}=_chunkT36GFQHUcjs.d.call(void 0, u),{fieldController:t}=_react.useMemo.call(void 0, ()=>_chunkAOMXTUA4cjs.h.call(void 0, m,u),[m,u]),s=_react.useMemo.call(void 0, ()=>t.displayValue(r.value),[r.value,t]),a=_react.useCallback.call(void 0, d=>t.setValue(d),[t]),p=_react.useCallback.call(void 0, d=>t.setValue(d),[t]),{value:B}=r,e=_chunkH6HGYVRVcjs.a.call(void 0, r),l=_react.useCallback.call(void 0, ()=>{o()},[o]),c=_react.useMemo.call(void 0, ()=>({error:e.error,touched:e.touched,invalid:e.invalid,isValidating:e.isValidating,isDirty:e.isDirty,isHidden:e.isHidden,isRequired:e.isRequired,hasError:e.hasError}),[e.error,e.touched,e.invalid,e.isValidating,e.isDirty,e.isHidden,e.isRequired,e.hasError]),F=_react.useMemo.call(void 0, ()=>({value:s,onChangeText:a,onBlur:l}),[s,a,l]);return _react.useMemo.call(void 0, ()=>({value:B,displayValue:s,setValue:p,setBlur:o,onChangeText:a,onBlur:l,meta:c,props:F}),[B,s,p,o,a,l,c,F])}exports.BitFormProvider = _chunkT36GFQHUcjs.a; exports.useBitArray = _chunkT36GFQHUcjs.e; exports.useBitField = U; exports.useBitForm = _chunkT36GFQHUcjs.c; exports.useBitPersist = _chunkT36GFQHUcjs.i; exports.useBitScope = _chunkT36GFQHUcjs.f; exports.useBitSteps = _chunkT36GFQHUcjs.g; exports.useBitStore = _chunkT36GFQHUcjs.b; exports.useBitWatch = _chunkT36GFQHUcjs.h;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/
|
|
1
|
+
{"version":3,"sources":["/builds/kenji.ccp-group/bit-form/dist/react-native/index.cjs","../../src/react-native/use-bit-field.ts"],"names":["useBitField","path","fieldState","setBlur","store","useBitFieldBase","fieldController","useMemo","createFrameworkMaskedFieldBinding","displayValue","handleChange","useCallback","text","setValue","val","value","metaState","deriveFieldMeta","onBlur","meta","props"],"mappings":"AAAA,kIAA4F,iCAA8B,iCAA8B,yDAA0C,iCAA8B,iCAA8B,yDAA0C,iCAA8B,iCAA8B,iCAA8B,iCAA8B,8BCA3X,SAUrBA,CAAAA,CAGdC,CAAAA,CAA4C,CAC5C,GAAM,CAAE,UAAA,CAAAC,CAAAA,CAAY,OAAA,CAAAC,CAAAA,CAAS,KAAA,CAAAC,CAAM,CAAA,CAAIC,iCAAAA,CAIjC,CAAA,CAEA,CAAE,eAAA,CAAAC,CAAgB,CAAA,CAAIC,4BAAAA,CAAQ,CAAA,EAC3BC,iCAAAA,CAAkCJ,CAAOH,CAAI,CAAA,CACnD,CAACG,CAAAA,CAAOH,CAAI,CAAC,CAAA,CAEVQ,CAAAA,CAAeF,4BAAAA,CACnB,CAAA,EAAMD,CAAAA,CAAgB,YAAA,CAAaJ,CAAAA,CAAW,KAAK,CAAA,CACnD,CAACA,CAAAA,CAAW,KAAA,CAAOI,CAAe,CACpC,CAAA,CAEMI,CAAAA,CAAeC,gCAAAA,CAClBC,EAAiBN,CAAAA,CAAgB,QAAA,CAASM,CAAI,CAAA,CAC/C,CAACN,CAAe,CAClB,CAAA,CAEMO,CAAAA,CAAWF,gCAAAA,CACdG,EACCR,CAAAA,CAAgB,QAAA,CAASQ,CAAG,CAAA,CAC9B,CAACR,CAAe,CAClB,CAAA,CAEM,CAAE,KAAA,CAAAS,CAAM,CAAA,CAAIb,CAAAA,CACZc,CAAAA,CAAYC,iCAAAA,CAA0B,CAAA,CAEtCC,CAAAA,CAASP,gCAAAA,CAAY,CAAA,EAAM,CAC/BR,CAAAA,CAAQ,CACV,CAAA,CAAG,CAACA,CAAO,CAAC,CAAA,CAENgB,CAAAA,CAAOZ,4BAAAA,CACX,CAAA,EAAA,CAAO,CACL,KAAA,CAAOS,CAAAA,CAAU,KAAA,CACjB,OAAA,CAASA,CAAAA,CAAU,OAAA,CACnB,OAAA,CAASA,CAAAA,CAAU,OAAA,CACnB,YAAA,CAAcA,CAAAA,CAAU,YAAA,CACxB,OAAA,CAASA,CAAAA,CAAU,OAAA,CACnB,QAAA,CAAUA,CAAAA,CAAU,QAAA,CACpB,UAAA,CAAYA,CAAAA,CAAU,UAAA,CACtB,QAAA,CAAUA,CAAAA,CAAU,QACtB,CAAA,CAAA,CACA,CACEA,CAAAA,CAAU,KAAA,CACVA,CAAAA,CAAU,OAAA,CACVA,CAAAA,CAAU,OAAA,CACVA,CAAAA,CAAU,YAAA,CACVA,CAAAA,CAAU,OAAA,CACVA,CAAAA,CAAU,QAAA,CACVA,CAAAA,CAAU,UAAA,CACVA,CAAAA,CAAU,QACZ,CACF,CAAA,CAEMI,CAAAA,CAAQb,4BAAAA,CACZ,CAAA,EAAA,CAAO,CACL,KAAA,CAAOE,CAAAA,CACP,YAAA,CAAcC,CAAAA,CACd,MAAA,CAAAQ,CACF,CAAA,CAAA,CACA,CAACT,CAAAA,CAAcC,CAAAA,CAAcQ,CAAM,CACrC,CAAA,CAEA,OAAOX,4BAAAA,CACL,CAAA,EAAA,CAAO,CACL,KAAA,CAAOQ,CAAAA,CACP,YAAA,CAAAN,CAAAA,CACA,QAAA,CAAAI,CAAAA,CACA,OAAA,CAAAV,CAAAA,CACA,YAAA,CAAcO,CAAAA,CACd,MAAA,CAAAQ,CAAAA,CACA,IAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CACF,CAAA,CAAA,CACA,CAACL,CAAAA,CAAON,CAAAA,CAAcI,CAAAA,CAAUV,CAAAA,CAASO,CAAAA,CAAcQ,CAAAA,CAAQC,CAAAA,CAAMC,CAAK,CAC5E,CACF,CAAA,qXAAA","file":"/builds/kenji.ccp-group/bit-form/dist/react-native/index.cjs","sourcesContent":[null,"import { useMemo, useCallback } from \"react\";\nimport { useBitFieldBase } from \"../react/use-bit-field-base\";\nimport {\n BitPath,\n BitPathValue,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n} from \"../core\";\nimport type { UseBitFieldNativeResult } from \"./types\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldNativeResult<TForm, P> {\n const { fieldState, setBlur, store } = useBitFieldBase<\n BitPathValue<TForm, P>,\n TForm,\n P\n >(path);\n\n const { fieldController } = useMemo(() => {\n return createFrameworkMaskedFieldBinding(store, path);\n }, [store, path]);\n\n const displayValue = useMemo(\n () => fieldController.displayValue(fieldState.value),\n [fieldState.value, fieldController],\n );\n\n const handleChange = useCallback(\n (text: string) => fieldController.setValue(text),\n [fieldController],\n );\n\n const setValue = useCallback(\n (val: BitPathValue<TForm, P> | string | number | null | undefined) =>\n fieldController.setValue(val),\n [fieldController],\n );\n\n const { value } = fieldState;\n const metaState = deriveFieldMeta(fieldState);\n\n const onBlur = useCallback(() => {\n setBlur();\n }, [setBlur]);\n\n const meta = useMemo(\n () => ({\n error: metaState.error,\n touched: metaState.touched,\n invalid: metaState.invalid,\n isValidating: metaState.isValidating,\n isDirty: metaState.isDirty,\n isHidden: metaState.isHidden,\n isRequired: metaState.isRequired,\n hasError: metaState.hasError,\n }),\n [\n metaState.error,\n metaState.touched,\n metaState.invalid,\n metaState.isValidating,\n metaState.isDirty,\n metaState.isHidden,\n metaState.isRequired,\n metaState.hasError,\n ],\n );\n\n const props = useMemo(\n () => ({\n value: displayValue,\n onChangeText: handleChange,\n onBlur,\n }),\n [displayValue, handleChange, onBlur],\n );\n\n return useMemo(\n () => ({\n value: value as BitPathValue<TForm, P>,\n displayValue,\n setValue,\n setBlur,\n onChangeText: handleChange,\n onBlur,\n meta,\n props,\n }),\n [value, displayValue, setValue, setBlur, handleChange, onBlur, meta, props],\n );\n}\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export { B as BitFormProvider, U as UseBitPersistResult, 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-
|
|
1
|
+
export { B as BitFormProvider, U as UseBitPersistResult, 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-Dsr69hme.cjs';
|
|
2
2
|
import { d as BitPath, e as BitPathValue } from '../state-types-8bUndWfg.cjs';
|
|
3
3
|
import '../bus-DzTqgkZ4.cjs';
|
|
4
|
-
export { S as ScopeStatus, V as ValidateScopeResult } from '../runtime-types-
|
|
4
|
+
export { S as ScopeStatus, V as ValidateScopeResult } from '../runtime-types-BLCkMgcy.cjs';
|
|
5
5
|
import 'react';
|
|
6
|
-
import '../store-api-types-
|
|
6
|
+
import '../store-api-types-D7i0KWbr.cjs';
|
|
7
7
|
import '../types-CUXh7PqD.cjs';
|
|
8
|
-
import '../config-types-
|
|
9
|
-
import '../meta-types-
|
|
8
|
+
import '../config-types-mZFlp2Bi.cjs';
|
|
9
|
+
import '../meta-types-1Xcht8hj.cjs';
|
|
10
10
|
import '../upload-C4JqIaU2.cjs';
|
|
11
11
|
import '../field-binding-X5TkvfUt.cjs';
|
|
12
12
|
|