@lehnihon/bit-form 2.2.27 → 2.2.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/angular/index.cjs +1 -1
  2. package/dist/angular/index.js +1 -1
  3. package/dist/{chunk-WYYVVM2C.js → chunk-3MWOSR4W.js} +2 -2
  4. package/dist/chunk-77RIH3KJ.js +2 -0
  5. package/dist/chunk-77RIH3KJ.js.map +1 -0
  6. package/dist/chunk-CTQXXT26.cjs +2 -0
  7. package/dist/{chunk-U6UFULNS.cjs.map → chunk-CTQXXT26.cjs.map} +1 -1
  8. package/dist/{chunk-GBHOCY7E.cjs → chunk-G6EG5AWJ.cjs} +2 -2
  9. package/dist/{chunk-GBHOCY7E.cjs.map → chunk-G6EG5AWJ.cjs.map} +1 -1
  10. package/dist/{chunk-WKLCAC74.cjs → chunk-KDNY7F5Q.cjs} +2 -2
  11. package/dist/{chunk-WKLCAC74.cjs.map → chunk-KDNY7F5Q.cjs.map} +1 -1
  12. package/dist/{chunk-EYCJKAK3.js → chunk-V22XASFK.js} +2 -2
  13. package/dist/core/store.cjs +1 -1
  14. package/dist/core/store.js +1 -1
  15. package/dist/core.cjs +1 -1
  16. package/dist/core.js +1 -1
  17. package/dist/devtools/bridge.cjs +1 -1
  18. package/dist/devtools/bridge.js +1 -1
  19. package/dist/devtools/index.cjs +49 -24
  20. package/dist/devtools/index.cjs.map +1 -1
  21. package/dist/devtools/index.d.cts +2 -0
  22. package/dist/devtools/index.d.ts +2 -0
  23. package/dist/devtools/index.js +49 -24
  24. package/dist/devtools/index.js.map +1 -1
  25. package/dist/index.cjs +1 -1
  26. package/dist/index.js +1 -1
  27. package/dist/react/index.cjs +1 -1
  28. package/dist/react/index.js +1 -1
  29. package/dist/react-native/index.cjs +1 -1
  30. package/dist/react-native/index.js +1 -1
  31. package/dist/vue/index.cjs +1 -1
  32. package/dist/vue/index.js +1 -1
  33. package/package.json +1 -1
  34. package/dist/chunk-7T7L2TZX.js +0 -2
  35. package/dist/chunk-7T7L2TZX.js.map +0 -1
  36. package/dist/chunk-U6UFULNS.cjs +0 -2
  37. /package/dist/{chunk-WYYVVM2C.js.map → chunk-3MWOSR4W.js.map} +0 -0
  38. /package/dist/{chunk-EYCJKAK3.js.map → chunk-V22XASFK.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import{a as h,b as u,c as S}from"../chunk-WYYVVM2C.js";import{a as f,d as D}from"../chunk-K5X37E3U.js";import"../chunk-5NA2TFPG.js";import{a as T}from"../chunk-7T7L2TZX.js";import"../chunk-L42NQRVD.js";import"../chunk-W2E5UIXT.js";import"../chunk-UIKO6GGW.js";import"../chunk-L57KMBXS.js";import"../chunk-Y7TQTZY7.js";import"../chunk-UBVVBVLS.js";import"../chunk-MBEQLBJB.js";import"../chunk-DGEGYNQL.js";function E(){return`
1
+ import{a as T,b as m,c as D}from"../chunk-3MWOSR4W.js";import{a as u,d as S}from"../chunk-K5X37E3U.js";import"../chunk-5NA2TFPG.js";import{a as y}from"../chunk-77RIH3KJ.js";import"../chunk-L42NQRVD.js";import"../chunk-W2E5UIXT.js";import"../chunk-UIKO6GGW.js";import"../chunk-L57KMBXS.js";import"../chunk-Y7TQTZY7.js";import"../chunk-UBVVBVLS.js";import"../chunk-MBEQLBJB.js";import"../chunk-DGEGYNQL.js";function E(){return`
2
2
  .bit-devtools-container {
3
3
  position: fixed;
4
4
  bottom: 20px;
@@ -75,6 +75,31 @@ import{a as h,b as u,c as S}from"../chunk-WYYVVM2C.js";import{a as f,d as D}from
75
75
  .badge-warn { background: rgba(245, 158, 11, 0.2); color: #fbbf24; border: 1px solid rgba(245, 158, 11, 0.2); }
76
76
  .badge-info { background: rgba(56, 189, 248, 0.2); color: #7dd3fc; border: 1px solid rgba(56, 189, 248, 0.2); }
77
77
 
78
+ .bit-devtools-tabs {
79
+ display: flex;
80
+ gap: 4px;
81
+ padding: 8px 0 0 0;
82
+ border-bottom: 1px solid #1e293b;
83
+ }
84
+ .bit-devtools-tab {
85
+ background: transparent;
86
+ color: #94a3b8;
87
+ border: none;
88
+ border-bottom: 2px solid transparent;
89
+ padding: 6px 12px;
90
+ font-size: 12px;
91
+ font-family: inherit;
92
+ cursor: pointer;
93
+ transition: all 0.2s;
94
+ border-radius: 4px 4px 0 0;
95
+ }
96
+ .bit-devtools-tab:hover { color: #e2e8f0; background: rgba(255,255,255,0.05); }
97
+ .bit-devtools-tab.active {
98
+ color: #38bdf8;
99
+ border-bottom-color: #38bdf8;
100
+ background: rgba(56, 189, 248, 0.08);
101
+ }
102
+
78
103
  .bit-section-title { font-size: 11px; color: #94a3b8; text-transform: uppercase; letter-spacing: 1px; margin: 12px 0 4px 0; display: block; }
79
104
 
80
105
  .bit-controls { display: flex; gap: 6px; margin-bottom: 12px; background: #0f172a; padding: 8px; border-radius: 6px; }
@@ -86,48 +111,48 @@ import{a as h,b as u,c as S}from"../chunk-WYYVVM2C.js";import{a as f,d as D}from
86
111
 
87
112
  pre.bit-pre { background: #020617; padding: 10px; border-radius: 4px; font-size: 11px; overflow-x: auto; border: 1px solid #1e293b; margin: 0; color: #e2e8f0; }
88
113
  pre.bit-error-box { background: rgba(239, 68, 68, 0.05); padding: 10px; border-radius: 4px; font-size: 11px; border: 1px dashed #ef4444; color: #fca5a5; margin: 0; overflow-x: auto; }
89
- `}function m(t){return t.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function M(t){try{return JSON.stringify(t,null,2)}catch{return"[Unserializable]"}}var b=class{container;actions;rootElement;currentStoresState={};isOpen=!1;constructor(s,i){if(this.container=s,this.actions=i,!document.getElementById("bit-devtools-styles")){let e=document.createElement("style");e.id="bit-devtools-styles",e.textContent=E(),document.head.appendChild(e)}this.rootElement=document.createElement("div"),this.rootElement.className="bit-devtools-container",this.container.appendChild(this.rootElement),this.rootElement.addEventListener("click",e=>{let o=e.target;if(o.closest(".bit-devtools-trigger")){this.isOpen=!this.isOpen,this.render();return}let r=o.closest(".bit-action-btn");if(r&&!r.hasAttribute("disabled")){let n=r.getAttribute("data-action"),a=r.getAttribute("data-store");n&&a&&(n==="undo"&&this.actions.onUndo(a),n==="redo"&&this.actions.onRedo(a),n==="reset"&&this.actions.onReset(a))}})}updateState(s){this.currentStoresState=s,this.render()}render(){let s=Object.entries(this.currentStoresState);if(s.length===0){this.rootElement.innerHTML="";return}let i="";if(this.isOpen){i=`
90
- <div class="bit-devtools-panel">
91
- <div class="bit-devtools-header">
92
- <h2><span style="font-size: 20px;">\u{1F6E0}</span> Bit-Form DevTools</h2>
93
- <span style="font-size: 11px; color: #64748b;">v1.0.0</span>
94
- </div>
95
- `;for(let[o,r]of s){let n=Object.keys(r.errors||{}).length>0,a=r._meta||{totalSteps:0,currentIndex:-1,canUndo:!1,canRedo:!1},c=a.currentIndex+1,p=a.totalSteps;i+=`
114
+ `}function p(s){return s.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function O(s){try{return JSON.stringify(s,null,2)}catch{return"[Unserializable]"}}var b=class{container;actions;rootElement;currentStoresState={};isOpen=!1;activeStoreId=null;constructor(r,i){if(this.container=r,this.actions=i,!document.getElementById("bit-devtools-styles")){let t=document.createElement("style");t.id="bit-devtools-styles",t.textContent=E(),document.head.appendChild(t)}this.rootElement=document.createElement("div"),this.rootElement.className="bit-devtools-container",this.container.appendChild(this.rootElement),this.rootElement.addEventListener("click",t=>{let e=t.target;if(e.closest(".bit-devtools-trigger")){this.isOpen=!this.isOpen,this.render();return}let a=e.closest(".bit-devtools-tab");if(a){let n=a.getAttribute("data-store");n&&(this.activeStoreId=n,this.render());return}let o=e.closest(".bit-action-btn");if(o&&!o.hasAttribute("disabled")){let n=o.getAttribute("data-action"),d=o.getAttribute("data-store");n&&d&&(n==="undo"&&this.actions.onUndo(d),n==="redo"&&this.actions.onRedo(d),n==="reset"&&this.actions.onReset(d))}})}updateState(r){this.currentStoresState=r,this.render()}renderStoreBlock(r,i){let t=Object.keys(i.errors||{}).length>0,e=i._meta||{totalSteps:0,currentIndex:-1,canUndo:!1,canRedo:!1},a=e.currentIndex+1,o=e.totalSteps,n=`
96
115
  <div class="bit-store-block">
97
116
  <div class="bit-store-header">
98
- <h3 class="bit-store-title">${m(o)}</h3>
117
+ <h3 class="bit-store-title">${p(r)}</h3>
99
118
  <div class="bit-badge-group">
100
- <span class="bit-badge ${r.isValid?"badge-success":"badge-error"}">
101
- ${r.isValid?"\u2713 Valid":"\u2715 Invalid"}
119
+ <span class="bit-badge ${i.isValid?"badge-success":"badge-error"}">
120
+ ${i.isValid?"\u2713 Valid":"\u2715 Invalid"}
102
121
  </span>
103
- ${r.isDirty?'<span class="bit-badge badge-warn">Dirty</span>':""}
104
- ${r.isSubmitting?'<span class="bit-badge badge-info">\u23F3 Submitting</span>':""}
122
+ ${i.isDirty?'<span class="bit-badge badge-warn">Dirty</span>':""}
123
+ ${i.isSubmitting?'<span class="bit-badge badge-info">\u23F3 Submitting</span>':""}
105
124
  </div>
106
125
  </div>
107
126
 
108
- <span class="bit-section-title">Time Travel (${c}/${p})</span>
109
-
127
+ <span class="bit-section-title">Time Travel (${a}/${o})</span>
128
+
110
129
  <div class="bit-controls">
111
- <button class="bit-action-btn" data-action="undo" data-store="${m(o)}" ${a.canUndo?"":"disabled"}>
130
+ <button class="bit-action-btn" data-action="undo" data-store="${p(r)}" ${e.canUndo?"":"disabled"}>
112
131
  <span>\u21BA</span> Undo
113
132
  </button>
114
- <button class="bit-action-btn" data-action="redo" data-store="${m(o)}" ${a.canRedo?"":"disabled"}>
133
+ <button class="bit-action-btn" data-action="redo" data-store="${p(r)}" ${e.canRedo?"":"disabled"}>
115
134
  <span>\u21BB</span> Redo
116
135
  </button>
117
- <button class="bit-action-btn bit-btn-reset" data-action="reset" data-store="${m(o)}">
136
+ <button class="bit-action-btn bit-btn-reset" data-action="reset" data-store="${p(r)}">
118
137
  <span>\u{1F5D1}</span> Reset
119
138
  </button>
120
139
  </div>
121
- `,n&&(i+=`
140
+ `;return t&&(n+=`
122
141
  <span class="bit-section-title" style="color: #f87171;">\u26A0\uFE0F Validations Failing</span>
123
- <pre class="bit-error-box">${M(r.errors)}</pre>
124
- `),i+=`
142
+ <pre class="bit-error-box">${O(i.errors)}</pre>
143
+ `),n+=`
125
144
  <span class="bit-section-title">Values</span>
126
- <pre class="bit-pre">${M(r.values)}</pre>
145
+ <pre class="bit-pre">${O(i.values)}</pre>
146
+ </div>
147
+ `,n}render(){let r=Object.entries(this.currentStoresState);if(r.length===0){this.activeStoreId=null,this.rootElement.innerHTML="";return}let i=this.activeStoreId;(!this.activeStoreId||!r.some(([o])=>o===this.activeStoreId))&&(this.activeStoreId=r[0]?.[0]??null);let t=0;if(this.isOpen){let o=this.rootElement.querySelector(".bit-devtools-panel");o&&(t=o.scrollTop)}let e="";if(this.isOpen){if(e=`
148
+ <div class="bit-devtools-panel">
149
+ <div class="bit-devtools-header">
150
+ <h2><span style="font-size: 20px;">\u{1F6E0}</span> Bit-Form DevTools</h2>
151
+ <span style="font-size: 11px; color: #64748b;">v1.0.0</span>
127
152
  </div>
128
- `}i+="</div>"}let e=`
153
+ `,r.length>=2){e+='<div class="bit-devtools-tabs">';for(let[n]of r){let d=n===this.activeStoreId;e+=`<button class="bit-devtools-tab${d?" active":""}" data-store="${p(n)}">${p(n)}</button>`}e+="</div>"}let o=r.find(([n])=>n===this.activeStoreId)??r[0];e+=this.renderStoreBlock(o[0],o[1]),e+="</div>"}let a=`
129
154
  <button class="bit-devtools-trigger" style="transform: ${this.isOpen?"scale(0.9)":"scale(1)"};" title="Abrir DevTools">
130
155
  ${this.isOpen?"\u2716":"Bit"}
131
156
  </button>
132
- `;this.rootElement.innerHTML=i+e}};function O(t,s=T){let i=new b(t,{onUndo:n=>u(s.stores,n)?.undo(),onRedo:n=>u(s.stores,n)?.redo(),onReset:n=>u(s.stores,n)?.reset()}),e=()=>h(s.stores);i.updateState(e());let o,r=s.subscribe(()=>{o===void 0&&(o=requestAnimationFrame(()=>{o=void 0,i.updateState(e())}))});return{ui:i,destroy:()=>{o!==void 0&&cancelAnimationFrame(o),r(),t.innerHTML=""}}}function w(t,s="ws://localhost:3000",i){let e=null,o=l=>{if(e?.readyState===WebSocket.OPEN)try{e.send(JSON.stringify(l))}catch(d){console.warn("[bit-form] Failed to send message:",d)}else console.warn("[bit-form] Tentativa de envio falhou. WebSocket n\xE3o est\xE1 aberto.")},r=(l,d)=>{o({type:"ACTION",protocolVersion:1,payload:{storeId:l,action:d}})},n=new b(t,{onUndo:l=>r(l,"undo"),onRedo:l=>r(l,"redo"),onReset:l=>r(l,"reset")}),a=!1,c,p=0,x=3e4;function k(){e&&(e.addEventListener("open",()=>{p=0,o({type:"HELLO",protocolVersion:1,payload:{role:"client",protocolVersion:1}}),console.log(`[bit-form] Conectado ao DevTools remoto em ${s}`)}),e.addEventListener("message",l=>{try{let d=JSON.parse(l.data);D(d)&&n.updateState(d.payload)}catch(d){console.error("[bit-form] Erro ao processar mensagem do WebSocket:",d)}}),e.addEventListener("error",l=>{console.error("[bit-form] Erro na conex\xE3o do DevTools remoto:",l)}),e.addEventListener("close",()=>{if(a)return;console.log("[bit-form] Conex\xE3o DevTools remota fechada. Reconectando...");let d=Math.min(1e3*Math.pow(2,p),x)*(.5+Math.random()*.5);p++,c=setTimeout(()=>{a||g()},d)}))}function g(){e&&(e.onopen=null,e.onmessage=null,e.onerror=null,e.onclose=null,(e.readyState===WebSocket.OPEN||e.readyState===WebSocket.CONNECTING)&&e.close());try{e=new WebSocket(s)}catch(l){console.error("[bit-form] Failed to create WebSocket for remote devtools:",l);let y=Math.min(1e3*Math.pow(2,p),x)*(.5+Math.random()*.5);p++,a||(c=setTimeout(()=>{a||g()},y));return}k()}return g(),{ui:n,destroy:()=>{a=!0,c&&(clearTimeout(c),c=void 0),e&&(e.readyState===WebSocket.OPEN||e.readyState===WebSocket.CONNECTING)&&e.close(),t.innerHTML=""}}}function v(t={}){let{mode:s="local",url:i,bus:e}=t,o,r=!1;if(typeof t.container=="string"){let a=document.querySelector(t.container);if(!a)throw new Error(`[bit-form] Container '${t.container}' n\xE3o encontrado na p\xE1gina.`);o=a}else t.container instanceof HTMLElement?o=t.container:(o=document.createElement("div"),o.id="bit-form-devtools-root",o.style.position="fixed",o.style.bottom="20px",o.style.right="20px",o.style.zIndex="9999",o.style.maxHeight="80vh",o.style.overflowY="auto",o.style.boxShadow="0 10px 25px rgba(0,0,0,0.1)",document.body.appendChild(o),r=!0);let n;if(s==="local")console.log("[bit-form] DevTools iniciado em modo Local."),n=O(o,e);else if(s==="remote")console.log("[bit-form] DevTools iniciado em modo Remote."),n=w(o,i,e);else throw new Error(`[bit-form] Modo DevTools inv\xE1lido: ${s}`);return{...n,destroy:()=>{n&&typeof n.destroy=="function"&&n.destroy(),r&&o.parentNode?o.parentNode.removeChild(o):o.innerHTML=""}}}function L(t){return typeof t=="boolean"?{enabled:t,mode:"local"}:{enabled:!!t,mode:t?.mode??"local",url:t?.url}}function R(){return typeof process<"u"&&typeof process.env<"u"&&process.env.NODE_ENV==="production"?!0:(typeof process<"u"&&typeof process.env<"u"&&process.env.VITEST==="true",!1)}function A(t){return{name:"bit-devtools",setup:s=>{let i=L(t??s.getConfig().devTools);if(!i.enabled||R()&&t!==!0)return;let e=null,o=s.getConfig().bus;try{if(i.mode==="remote")e=S(i.url||"ws://localhost:3000",o);else{let r=v({bus:o});e=r&&typeof r.destroy=="function"?r.destroy:null}}catch{}return()=>{e&&(e(),e=null)}}}}export{f as DEVTOOLS_PROTOCOL_VERSION,A as createDevToolsPlugin,v as initDevTools};
157
+ `;if(this.rootElement.innerHTML=e+a,this.isOpen&&this.activeStoreId===i&&t>0){let o=this.rootElement.querySelector(".bit-devtools-panel");o&&(o.scrollTop=t)}}};function M(s,r=y){let i=new b(s,{onUndo:o=>m(r.stores,o)?.undo(),onRedo:o=>m(r.stores,o)?.redo(),onReset:o=>m(r.stores,o)?.reset()}),t=()=>T(r.stores);i.updateState(t());let e,a=r.subscribe(()=>{e===void 0&&(e=requestAnimationFrame(()=>{e=void 0,i.updateState(t())}))});return{ui:i,destroy:()=>{e!==void 0&&cancelAnimationFrame(e),a(),s.innerHTML=""}}}function k(s,r="ws://localhost:3000",i){let t=null,e=l=>{if(t?.readyState===WebSocket.OPEN)try{t.send(JSON.stringify(l))}catch(c){console.warn("[bit-form] Failed to send message:",c)}else console.warn("[bit-form] Tentativa de envio falhou. WebSocket n\xE3o est\xE1 aberto.")},a=(l,c)=>{e({type:"ACTION",protocolVersion:1,payload:{storeId:l,action:c}})},o=new b(s,{onUndo:l=>a(l,"undo"),onRedo:l=>a(l,"redo"),onReset:l=>a(l,"reset")}),n=!1,d,f=0,x=3e4;function w(){t&&(t.addEventListener("open",()=>{f=0,e({type:"HELLO",protocolVersion:1,payload:{role:"client",protocolVersion:1}}),console.log(`[bit-form] Conectado ao DevTools remoto em ${r}`)}),t.addEventListener("message",l=>{try{let c=JSON.parse(l.data);S(c)&&o.updateState(c.payload)}catch(c){console.error("[bit-form] Erro ao processar mensagem do WebSocket:",c)}}),t.addEventListener("error",l=>{console.error("[bit-form] Erro na conex\xE3o do DevTools remoto:",l)}),t.addEventListener("close",()=>{if(n)return;console.log("[bit-form] Conex\xE3o DevTools remota fechada. Reconectando...");let c=Math.min(1e3*Math.pow(2,f),x)*(.5+Math.random()*.5);f++,d=setTimeout(()=>{n||g()},c)}))}function g(){t&&(t.onopen=null,t.onmessage=null,t.onerror=null,t.onclose=null,(t.readyState===WebSocket.OPEN||t.readyState===WebSocket.CONNECTING)&&t.close());try{t=new WebSocket(r)}catch(l){console.error("[bit-form] Failed to create WebSocket for remote devtools:",l);let h=Math.min(1e3*Math.pow(2,f),x)*(.5+Math.random()*.5);f++,n||(d=setTimeout(()=>{n||g()},h));return}w()}return g(),{ui:o,destroy:()=>{n=!0,d&&(clearTimeout(d),d=void 0),t&&(t.readyState===WebSocket.OPEN||t.readyState===WebSocket.CONNECTING)&&t.close(),s.innerHTML=""}}}function v(s={}){let{mode:r="local",url:i,bus:t}=s,e,a=!1;if(typeof s.container=="string"){let n=document.querySelector(s.container);if(!n)throw new Error(`[bit-form] Container '${s.container}' n\xE3o encontrado na p\xE1gina.`);e=n}else s.container instanceof HTMLElement?e=s.container:(e=document.createElement("div"),e.id="bit-form-devtools-root",e.style.position="fixed",e.style.bottom="20px",e.style.right="20px",e.style.zIndex="9999",e.style.maxHeight="80vh",e.style.overflowY="auto",e.style.boxShadow="0 10px 25px rgba(0,0,0,0.1)",document.body.appendChild(e),a=!0);let o;if(r==="local")console.log("[bit-form] DevTools iniciado em modo Local."),o=M(e,t);else if(r==="remote")console.log("[bit-form] DevTools iniciado em modo Remote."),o=k(e,i,t);else throw new Error(`[bit-form] Modo DevTools inv\xE1lido: ${r}`);return{...o,destroy:()=>{o&&typeof o.destroy=="function"&&o.destroy(),a&&e.parentNode?e.parentNode.removeChild(e):e.innerHTML=""}}}function L(s){return typeof s=="boolean"?{enabled:s,mode:"local"}:{enabled:!!s,mode:s?.mode??"local",url:s?.url}}function A(){return typeof process<"u"&&typeof process.env<"u"&&process.env.NODE_ENV==="production"?!0:(typeof process<"u"&&typeof process.env<"u"&&process.env.VITEST==="true",!1)}function R(s){return{name:"bit-devtools",setup:r=>{let i=L(s??r.getConfig().devTools);if(!i.enabled||A()&&s!==!0)return;let t=null,e=r.getConfig().bus;try{if(i.mode==="remote")t=D(i.url||"ws://localhost:3000",e);else{let a=v({bus:e});t=a&&typeof a.destroy=="function"?a.destroy:null}}catch{}return()=>{t&&(t(),t=null)}}}}export{u as DEVTOOLS_PROTOCOL_VERSION,R as createDevToolsPlugin,v as initDevTools};
133
158
  //# sourceMappingURL=index.js.map
@@ -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, \"&amp;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\");\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 | null = null;\n\n const sendMessage = (message: DevToolsRemoteMessage) => {\n if (socket?.readyState === WebSocket.OPEN) {\n try {\n socket.send(JSON.stringify(message));\n } catch (e) {\n console.warn(\"[bit-form] Failed to send message:\", e);\n }\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 let retries = 0;\n const MAX_RETRY_DELAY = 30000;\n\n function attachListeners() {\n if (!socket) return;\n\n socket.addEventListener(\"open\", () => {\n retries = 0;\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...\");\n const delay = Math.min(1000 * Math.pow(2, retries), MAX_RETRY_DELAY);\n const jitter = delay * (0.5 + Math.random() * 0.5);\n retries++;\n reconnectTimer = setTimeout(() => {\n if (destroyed) return;\n connect();\n }, jitter);\n });\n }\n\n function connect() {\n if (socket) {\n socket.onopen = null;\n socket.onmessage = null;\n socket.onerror = null;\n socket.onclose = null;\n if (socket.readyState === WebSocket.OPEN || socket.readyState === WebSocket.CONNECTING) {\n socket.close();\n }\n }\n try {\n socket = new WebSocket(url);\n } catch (e) {\n console.error(\"[bit-form] Failed to create WebSocket for remote devtools:\", e);\n const delay = Math.min(1000 * Math.pow(2, retries), MAX_RETRY_DELAY);\n const jitter = delay * (0.5 + Math.random() * 0.5);\n retries++;\n if (!destroyed) {\n reconnectTimer = setTimeout(() => {\n if (destroyed) return;\n connect();\n }, jitter);\n }\n return;\n }\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 &&\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","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","e","sendAction","storeId","action","ui","BitFormDevToolsUI","id","destroyed","reconnectTimer","retries","MAX_RETRY_DELAY","attachListeners","msg","data","isDevToolsStateUpdateMessage","err","jitter","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
+ {"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-devtools-tabs {\n display: flex;\n gap: 4px;\n padding: 8px 0 0 0;\n border-bottom: 1px solid #1e293b;\n }\n .bit-devtools-tab {\n background: transparent;\n color: #94a3b8;\n border: none;\n border-bottom: 2px solid transparent;\n padding: 6px 12px;\n font-size: 12px;\n font-family: inherit;\n cursor: pointer;\n transition: all 0.2s;\n border-radius: 4px 4px 0 0;\n }\n .bit-devtools-tab:hover { color: #e2e8f0; background: rgba(255,255,255,0.05); }\n .bit-devtools-tab.active {\n color: #38bdf8;\n border-bottom-color: #38bdf8;\n background: rgba(56, 189, 248, 0.08);\n }\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, \"&amp;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\");\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 private activeStoreId: string | null = null;\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 if (target.closest(\".bit-devtools-trigger\")) {\n this.isOpen = !this.isOpen;\n this.render();\n return;\n }\n\n const tab = target.closest(\".bit-devtools-tab\");\n if (tab) {\n const storeId = tab.getAttribute(\"data-store\");\n if (storeId) {\n this.activeStoreId = storeId;\n this.render();\n }\n return;\n }\n\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 renderStoreBlock(id: string, state: DevToolsStoreSnapshots[string]) {\n const hasErrors = Object.keys(state.errors || {}).length > 0;\n\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 let html = `\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 html += `\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 html += `\n <span class=\"bit-section-title\">Values</span>\n <pre class=\"bit-pre\">${safeJsonStringify(state.values)}</pre>\n </div>\n `;\n\n return html;\n }\n\n private render() {\n const storeEntries = Object.entries(this.currentStoresState);\n if (storeEntries.length === 0) {\n this.activeStoreId = null;\n this.rootElement.innerHTML = \"\";\n return;\n }\n\n const prevActiveStoreId = this.activeStoreId;\n\n if (!this.activeStoreId || !storeEntries.some(([id]) => id === this.activeStoreId)) {\n this.activeStoreId = storeEntries[0]?.[0] ?? null;\n }\n\n let savedScrollTop = 0;\n if (this.isOpen) {\n const panel = this.rootElement.querySelector(\".bit-devtools-panel\");\n if (panel) {\n savedScrollTop = panel.scrollTop;\n }\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 if (storeEntries.length >= 2) {\n panelHtml += `<div class=\"bit-devtools-tabs\">`;\n for (const [id] of storeEntries) {\n const isActive = id === this.activeStoreId;\n panelHtml += `<button class=\"bit-devtools-tab${isActive ? \" active\" : \"\"}\" data-store=\"${escapeHtml(id)}\">${escapeHtml(id)}</button>`;\n }\n panelHtml += `</div>`;\n }\n\n const activeEntry = storeEntries.find(([id]) => id === this.activeStoreId) ?? storeEntries[0]!;\n panelHtml += this.renderStoreBlock(activeEntry[0], activeEntry[1]);\n\n panelHtml += `</div>`;\n }\n\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 if (this.isOpen && this.activeStoreId === prevActiveStoreId && savedScrollTop > 0) {\n const panel = this.rootElement.querySelector(\".bit-devtools-panel\");\n if (panel) {\n panel.scrollTop = savedScrollTop;\n }\n }\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 | null = null;\n\n const sendMessage = (message: DevToolsRemoteMessage) => {\n if (socket?.readyState === WebSocket.OPEN) {\n try {\n socket.send(JSON.stringify(message));\n } catch (e) {\n console.warn(\"[bit-form] Failed to send message:\", e);\n }\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 let retries = 0;\n const MAX_RETRY_DELAY = 30000;\n\n function attachListeners() {\n if (!socket) return;\n\n socket.addEventListener(\"open\", () => {\n retries = 0;\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...\");\n const delay = Math.min(1000 * Math.pow(2, retries), MAX_RETRY_DELAY);\n const jitter = delay * (0.5 + Math.random() * 0.5);\n retries++;\n reconnectTimer = setTimeout(() => {\n if (destroyed) return;\n connect();\n }, jitter);\n });\n }\n\n function connect() {\n if (socket) {\n socket.onopen = null;\n socket.onmessage = null;\n socket.onerror = null;\n socket.onclose = null;\n if (socket.readyState === WebSocket.OPEN || socket.readyState === WebSocket.CONNECTING) {\n socket.close();\n }\n }\n try {\n socket = new WebSocket(url);\n } catch (e) {\n console.error(\"[bit-form] Failed to create WebSocket for remote devtools:\", e);\n const delay = Math.min(1000 * Math.pow(2, retries), MAX_RETRY_DELAY);\n const jitter = delay * (0.5 + Math.random() * 0.5);\n retries++;\n if (!destroyed) {\n reconnectTimer = setTimeout(() => {\n if (destroyed) return;\n connect();\n }, jitter);\n }\n return;\n }\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 &&\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","tab","storeId","btn","action","storesState","id","state","hasErrors","meta","currentStep","totalSteps","html","storeEntries","prevActiveStoreId","savedScrollTop","panel","panelHtml","isActive","activeEntry","triggerHtml","setupLocalDevTools","container","bus","bitBus","ui","BitFormDevToolsUI","id","getDevToolsActionableStore","getFullSnapshot","createDevToolsSnapshotMap","rafId","unsubscribe","setupRemoteDevTools","container","url","_bus","socket","sendMessage","message","e","sendAction","storeId","action","ui","BitFormDevToolsUI","id","destroyed","reconnectTimer","retries","MAX_RETRY_DELAY","attachListeners","msg","data","isDevToolsStateUpdateMessage","err","jitter","connect","initDevTools","options","mode","url","bus","containerEl","isAutoCreated","el","adapterInstance","setupLocalDevTools","setupRemoteDevTools","resolveDevToolsOptions","devTools","isProductionEnv","createDevToolsPlugin","override","context","options","cleanup","bus","setupRemoteBridge","instance","initDevTools"]}
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-W5CLDRRE.cjs');var _chunkU6UFULNScjs = require('./chunk-U6UFULNS.cjs');require('./chunk-H27ROY4F.cjs');require('./chunk-BSGJ3T5S.cjs');require('./chunk-RHMJPKNV.cjs');require('./chunk-H6HGYVRV.cjs');require('./chunk-AV7YYSFI.cjs');require('./chunk-OWDDAM6C.cjs');require('./chunk-X3DGA5UC.cjs');require('./chunk-725CMNAV.cjs');exports.createBitStore = _chunkU6UFULNScjs.e; exports.createFrameworkStoreAdapter = _chunkU6UFULNScjs.d; exports.resolveBitStoreForHooks = _chunkU6UFULNScjs.c;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-W5CLDRRE.cjs');var _chunkCTQXXT26cjs = require('./chunk-CTQXXT26.cjs');require('./chunk-H27ROY4F.cjs');require('./chunk-BSGJ3T5S.cjs');require('./chunk-RHMJPKNV.cjs');require('./chunk-H6HGYVRV.cjs');require('./chunk-AV7YYSFI.cjs');require('./chunk-OWDDAM6C.cjs');require('./chunk-X3DGA5UC.cjs');require('./chunk-725CMNAV.cjs');exports.createBitStore = _chunkCTQXXT26cjs.e; exports.createFrameworkStoreAdapter = _chunkCTQXXT26cjs.d; exports.resolveBitStoreForHooks = _chunkCTQXXT26cjs.c;
2
2
  //# sourceMappingURL=index.cjs.map
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import"./chunk-5NA2TFPG.js";import{c as r,d as t,e}from"./chunk-7T7L2TZX.js";import"./chunk-L42NQRVD.js";import"./chunk-W2E5UIXT.js";import"./chunk-UIKO6GGW.js";import"./chunk-L57KMBXS.js";import"./chunk-Y7TQTZY7.js";import"./chunk-UBVVBVLS.js";import"./chunk-MBEQLBJB.js";import"./chunk-DGEGYNQL.js";export{e as createBitStore,t as createFrameworkStoreAdapter,r as resolveBitStoreForHooks};
1
+ import"./chunk-5NA2TFPG.js";import{c as r,d as t,e}from"./chunk-77RIH3KJ.js";import"./chunk-L42NQRVD.js";import"./chunk-W2E5UIXT.js";import"./chunk-UIKO6GGW.js";import"./chunk-L57KMBXS.js";import"./chunk-Y7TQTZY7.js";import"./chunk-UBVVBVLS.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
@@ -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 _chunkWKLCAC74cjs = require('../chunk-WKLCAC74.cjs');var _chunkH3RTOA6Xcjs = require('../chunk-H3RTOA6X.cjs');require('../chunk-W5CLDRRE.cjs');require('../chunk-U6UFULNS.cjs');var _chunkH27ROY4Fcjs = require('../chunk-H27ROY4F.cjs');require('../chunk-BSGJ3T5S.cjs');var _chunkRHMJPKNVcjs = require('../chunk-RHMJPKNV.cjs');var _chunkH6HGYVRVcjs = require('../chunk-H6HGYVRV.cjs');require('../chunk-AV7YYSFI.cjs');require('../chunk-OWDDAM6C.cjs');require('../chunk-X3DGA5UC.cjs');var _chunk725CMNAVcjs = require('../chunk-725CMNAV.cjs');var _react = require('react');function V(t){let{fieldState:r,setBlur:i,store:u}=_chunkWKLCAC74cjs.d.call(void 0, t),{fieldController:l}=_react.useMemo.call(void 0, ()=>_chunkH27ROY4Fcjs.h.call(void 0, u,t),[u,t]),a=_react.useMemo.call(void 0, ()=>l.displayValue(r.value),[r.value,l]),n=_react.useCallback.call(void 0, F=>{l.setValue(F)},[l]),{value:s}=r,b=_chunkH6HGYVRVcjs.a.call(void 0, r),{error:f,touched:c,invalid:y,isDirty:U,isValidating:B,isHidden:o,isRequired:p,hasError:g}=b,m=_react.useCallback.call(void 0, F=>{let L=_chunk725CMNAVcjs.a.call(void 0, F)?_optionalChain([F, 'access', _ => _.target, 'optionalAccess', _2 => _2.value]):F;n(L)},[n]),e=_react.useCallback.call(void 0, ()=>{i()},[i]),d=_react.useMemo.call(void 0, ()=>({value:a,onChange:m,onBlur:e}),[a,m,e]),h=_react.useMemo.call(void 0, ()=>({error:f,touched:c,invalid:y,isDirty:U,isValidating:B,isHidden:o,isRequired:p,hasError:g}),[f,c,y,U,B,o,p,g]);return _react.useMemo.call(void 0, ()=>({value:s,displayValue:a,setValue:n,setBlur:i,onChange:m,onBlur:e,props:d,meta:h}),[s,a,n,i,m,e,d,h])}function Q(){let t=_chunkWKLCAC74cjs.b.call(void 0, ),r=_react.useRef.call(void 0, null),i=_react.useCallback.call(void 0, ()=>{let s=_chunkRHMJPKNVcjs.f.call(void 0, t);return r.current&&r.current.canUndo===s.canUndo&&r.current.canRedo===s.canRedo&&r.current.historyIndex===s.historyIndex&&r.current.historySize===s.historySize?r.current:(r.current=s,s)},[t]),u=_react.useCallback.call(void 0, s=>t.observe.subscribeHistoryMeta(()=>s()),[t]),l=_react.useSyncExternalStore.call(void 0, u,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, ()=>({...l,undo:a,redo:n}),[l,a,n])}function Y(t,r,i){let u=_chunkWKLCAC74cjs.b.call(void 0, ),l=V(t),{value:a,setValue:n,meta:s}=l,b=_optionalChain([s, 'optionalAccess', _3 => _3.error]),f=!!_optionalChain([s, 'optionalAccess', _4 => _4.isValidating]),c=_react.useRef.call(void 0, null),[y,U]=_react.useState.call(void 0, !1),B=_react.useRef.call(void 0, {current:0}).current;_react.useEffect.call(void 0, ()=>()=>{B.current++,c.current=null},[]);let o=_react.useRef.call(void 0, {setLoading:U,setError:(e,d)=>u.write.setError(e,d),setValue:e=>n(e),getUploadKey:()=>c.current,setUploadKey:e=>{c.current=e},onCallbackError:e=>u.read.config.onUnhandledError(e,"upload")});_react.useEffect.call(void 0, ()=>{o.current.setLoading=U,o.current.setError=(e,d)=>u.write.setError(e,d),o.current.setValue=e=>n(e),o.current.getUploadKey=()=>c.current,o.current.setUploadKey=e=>{c.current=e},o.current.onCallbackError=e=>u.read.config.onUnhandledError(e,"upload")});let p=_react.useMemo.call(void 0, ()=>({setLoading:e=>o.current.setLoading(e),setError:(e,d)=>o.current.setError(e,d),setValue:e=>o.current.setValue(e),getUploadKey:()=>o.current.getUploadKey(),setUploadKey:e=>o.current.setUploadKey(e),onCallbackError:e=>_optionalChain([o, '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,p,B),[t,r,p]),m=_react.useMemo.call(void 0, ()=>_chunkH3RTOA6Xcjs.b.call(void 0, t,i,p,B),[t,i,p]);return _react.useMemo.call(void 0, ()=>({value:a,setValue:n,error:b,isValidating:f||y,upload:g,remove:m}),[a,n,b,f,y,g,m])}exports.BitFormProvider = _chunkWKLCAC74cjs.a; exports.useBitArray = _chunkWKLCAC74cjs.e; exports.useBitField = V; exports.useBitForm = _chunkWKLCAC74cjs.c; exports.useBitHistory = Q; exports.useBitPersist = _chunkWKLCAC74cjs.i; exports.useBitScope = _chunkWKLCAC74cjs.f; exports.useBitSteps = _chunkWKLCAC74cjs.g; exports.useBitStore = _chunkWKLCAC74cjs.b; exports.useBitUpload = Y; exports.useBitWatch = _chunkWKLCAC74cjs.h;
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 _chunkKDNY7F5Qcjs = require('../chunk-KDNY7F5Q.cjs');var _chunkH3RTOA6Xcjs = require('../chunk-H3RTOA6X.cjs');require('../chunk-W5CLDRRE.cjs');require('../chunk-CTQXXT26.cjs');var _chunkH27ROY4Fcjs = require('../chunk-H27ROY4F.cjs');require('../chunk-BSGJ3T5S.cjs');var _chunkRHMJPKNVcjs = require('../chunk-RHMJPKNV.cjs');var _chunkH6HGYVRVcjs = require('../chunk-H6HGYVRV.cjs');require('../chunk-AV7YYSFI.cjs');require('../chunk-OWDDAM6C.cjs');require('../chunk-X3DGA5UC.cjs');var _chunk725CMNAVcjs = require('../chunk-725CMNAV.cjs');var _react = require('react');function V(t){let{fieldState:r,setBlur:i,store:u}=_chunkKDNY7F5Qcjs.d.call(void 0, t),{fieldController:l}=_react.useMemo.call(void 0, ()=>_chunkH27ROY4Fcjs.h.call(void 0, u,t),[u,t]),a=_react.useMemo.call(void 0, ()=>l.displayValue(r.value),[r.value,l]),n=_react.useCallback.call(void 0, F=>{l.setValue(F)},[l]),{value:s}=r,b=_chunkH6HGYVRVcjs.a.call(void 0, r),{error:f,touched:c,invalid:y,isDirty:U,isValidating:B,isHidden:o,isRequired:p,hasError:g}=b,m=_react.useCallback.call(void 0, F=>{let L=_chunk725CMNAVcjs.a.call(void 0, F)?_optionalChain([F, 'access', _ => _.target, 'optionalAccess', _2 => _2.value]):F;n(L)},[n]),e=_react.useCallback.call(void 0, ()=>{i()},[i]),d=_react.useMemo.call(void 0, ()=>({value:a,onChange:m,onBlur:e}),[a,m,e]),h=_react.useMemo.call(void 0, ()=>({error:f,touched:c,invalid:y,isDirty:U,isValidating:B,isHidden:o,isRequired:p,hasError:g}),[f,c,y,U,B,o,p,g]);return _react.useMemo.call(void 0, ()=>({value:s,displayValue:a,setValue:n,setBlur:i,onChange:m,onBlur:e,props:d,meta:h}),[s,a,n,i,m,e,d,h])}function Q(){let t=_chunkKDNY7F5Qcjs.b.call(void 0, ),r=_react.useRef.call(void 0, null),i=_react.useCallback.call(void 0, ()=>{let s=_chunkRHMJPKNVcjs.f.call(void 0, t);return r.current&&r.current.canUndo===s.canUndo&&r.current.canRedo===s.canRedo&&r.current.historyIndex===s.historyIndex&&r.current.historySize===s.historySize?r.current:(r.current=s,s)},[t]),u=_react.useCallback.call(void 0, s=>t.observe.subscribeHistoryMeta(()=>s()),[t]),l=_react.useSyncExternalStore.call(void 0, u,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, ()=>({...l,undo:a,redo:n}),[l,a,n])}function Y(t,r,i){let u=_chunkKDNY7F5Qcjs.b.call(void 0, ),l=V(t),{value:a,setValue:n,meta:s}=l,b=_optionalChain([s, 'optionalAccess', _3 => _3.error]),f=!!_optionalChain([s, 'optionalAccess', _4 => _4.isValidating]),c=_react.useRef.call(void 0, null),[y,U]=_react.useState.call(void 0, !1),B=_react.useRef.call(void 0, {current:0}).current;_react.useEffect.call(void 0, ()=>()=>{B.current++,c.current=null},[]);let o=_react.useRef.call(void 0, {setLoading:U,setError:(e,d)=>u.write.setError(e,d),setValue:e=>n(e),getUploadKey:()=>c.current,setUploadKey:e=>{c.current=e},onCallbackError:e=>u.read.config.onUnhandledError(e,"upload")});_react.useEffect.call(void 0, ()=>{o.current.setLoading=U,o.current.setError=(e,d)=>u.write.setError(e,d),o.current.setValue=e=>n(e),o.current.getUploadKey=()=>c.current,o.current.setUploadKey=e=>{c.current=e},o.current.onCallbackError=e=>u.read.config.onUnhandledError(e,"upload")});let p=_react.useMemo.call(void 0, ()=>({setLoading:e=>o.current.setLoading(e),setError:(e,d)=>o.current.setError(e,d),setValue:e=>o.current.setValue(e),getUploadKey:()=>o.current.getUploadKey(),setUploadKey:e=>o.current.setUploadKey(e),onCallbackError:e=>_optionalChain([o, '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,p,B),[t,r,p]),m=_react.useMemo.call(void 0, ()=>_chunkH3RTOA6Xcjs.b.call(void 0, t,i,p,B),[t,i,p]);return _react.useMemo.call(void 0, ()=>({value:a,setValue:n,error:b,isValidating:f||y,upload:g,remove:m}),[a,n,b,f,y,g,m])}exports.BitFormProvider = _chunkKDNY7F5Qcjs.a; exports.useBitArray = _chunkKDNY7F5Qcjs.e; exports.useBitField = V; exports.useBitForm = _chunkKDNY7F5Qcjs.c; exports.useBitHistory = Q; exports.useBitPersist = _chunkKDNY7F5Qcjs.i; exports.useBitScope = _chunkKDNY7F5Qcjs.f; exports.useBitSteps = _chunkKDNY7F5Qcjs.g; exports.useBitStore = _chunkKDNY7F5Qcjs.b; exports.useBitUpload = Y; exports.useBitWatch = _chunkKDNY7F5Qcjs.h;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,2 +1,2 @@
1
- import{a as j,b as x,c as D,d as C,e as z,f as q,g as A,h as G,i as O}from"../chunk-EYCJKAK3.js";import{a as K,b as w}from"../chunk-CATA7YEV.js";import"../chunk-5NA2TFPG.js";import"../chunk-7T7L2TZX.js";import{h as H}from"../chunk-L42NQRVD.js";import"../chunk-W2E5UIXT.js";import{f as k}from"../chunk-UIKO6GGW.js";import{a as T}from"../chunk-L57KMBXS.js";import"../chunk-Y7TQTZY7.js";import"../chunk-UBVVBVLS.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:u}=C(t),{fieldController:l}=R(()=>H(u,t),[u,t]),a=R(()=>l.displayValue(r.value),[r.value,l]),n=S(F=>{l.setValue(F)},[l]),{value:s}=r,b=T(r),{error:f,touched:c,invalid:y,isDirty:U,isValidating:B,isHidden:o,isRequired:p,hasError:g}=b,m=S(F=>{let L=P(F)?F.target?.value:F;n(L)},[n]),e=S(()=>{i()},[i]),d=R(()=>({value:a,onChange:m,onBlur:e}),[a,m,e]),h=R(()=>({error:f,touched:c,invalid:y,isDirty:U,isValidating:B,isHidden:o,isRequired:p,hasError:g}),[f,c,y,U,B,o,p,g]);return R(()=>({value:s,displayValue:a,setValue:n,setBlur:i,onChange:m,onBlur:e,props:d,meta:h}),[s,a,n,i,m,e,d,h])}import{useCallback as v,useMemo as W,useRef as J,useSyncExternalStore as N}from"react";function Q(){let t=x(),r=J(null),i=v(()=>{let s=k(t);return r.current&&r.current.canUndo===s.canUndo&&r.current.canRedo===s.canRedo&&r.current.historyIndex===s.historyIndex&&r.current.historySize===s.historySize?r.current:(r.current=s,s)},[t]),u=v(s=>t.observe.subscribeHistoryMeta(()=>s()),[t]),l=N(u,i,i),a=v(()=>{t.feature.undo()},[t]),n=v(()=>{t.feature.redo()},[t]);return W(()=>({...l,undo:a,redo:n}),[l,a,n])}import{useMemo as E,useRef as M,useState as X,useEffect as I}from"react";function Y(t,r,i){let u=x(),l=V(t),{value:a,setValue:n,meta:s}=l,b=s?.error,f=!!s?.isValidating,c=M(null),[y,U]=X(!1),B=M({current:0}).current;I(()=>()=>{B.current++,c.current=null},[]);let o=M({setLoading:U,setError:(e,d)=>u.write.setError(e,d),setValue:e=>n(e),getUploadKey:()=>c.current,setUploadKey:e=>{c.current=e},onCallbackError:e=>u.read.config.onUnhandledError(e,"upload")});I(()=>{o.current.setLoading=U,o.current.setError=(e,d)=>u.write.setError(e,d),o.current.setValue=e=>n(e),o.current.getUploadKey=()=>c.current,o.current.setUploadKey=e=>{c.current=e},o.current.onCallbackError=e=>u.read.config.onUnhandledError(e,"upload")});let p=E(()=>({setLoading:e=>o.current.setLoading(e),setError:(e,d)=>o.current.setError(e,d),setValue:e=>o.current.setValue(e),getUploadKey:()=>o.current.getUploadKey(),setUploadKey:e=>o.current.setUploadKey(e),onCallbackError:e=>o.current.onCallbackError?.(e)}),[]),g=E(()=>K(t,r,p,B),[t,r,p]),m=E(()=>w(t,i,p,B),[t,i,p]);return E(()=>({value:a,setValue:n,error:b,isValidating:f||y,upload:g,remove:m}),[a,n,b,f,y,g,m])}export{j as BitFormProvider,z as useBitArray,V as useBitField,D as useBitForm,Q as useBitHistory,O as useBitPersist,q as useBitScope,A as useBitSteps,x as useBitStore,Y as useBitUpload,G as useBitWatch};
1
+ import{a as j,b as x,c as D,d as C,e as z,f as q,g as A,h as G,i as O}from"../chunk-V22XASFK.js";import{a as K,b as w}from"../chunk-CATA7YEV.js";import"../chunk-5NA2TFPG.js";import"../chunk-77RIH3KJ.js";import{h as H}from"../chunk-L42NQRVD.js";import"../chunk-W2E5UIXT.js";import{f as k}from"../chunk-UIKO6GGW.js";import{a as T}from"../chunk-L57KMBXS.js";import"../chunk-Y7TQTZY7.js";import"../chunk-UBVVBVLS.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:u}=C(t),{fieldController:l}=R(()=>H(u,t),[u,t]),a=R(()=>l.displayValue(r.value),[r.value,l]),n=S(F=>{l.setValue(F)},[l]),{value:s}=r,b=T(r),{error:f,touched:c,invalid:y,isDirty:U,isValidating:B,isHidden:o,isRequired:p,hasError:g}=b,m=S(F=>{let L=P(F)?F.target?.value:F;n(L)},[n]),e=S(()=>{i()},[i]),d=R(()=>({value:a,onChange:m,onBlur:e}),[a,m,e]),h=R(()=>({error:f,touched:c,invalid:y,isDirty:U,isValidating:B,isHidden:o,isRequired:p,hasError:g}),[f,c,y,U,B,o,p,g]);return R(()=>({value:s,displayValue:a,setValue:n,setBlur:i,onChange:m,onBlur:e,props:d,meta:h}),[s,a,n,i,m,e,d,h])}import{useCallback as v,useMemo as W,useRef as J,useSyncExternalStore as N}from"react";function Q(){let t=x(),r=J(null),i=v(()=>{let s=k(t);return r.current&&r.current.canUndo===s.canUndo&&r.current.canRedo===s.canRedo&&r.current.historyIndex===s.historyIndex&&r.current.historySize===s.historySize?r.current:(r.current=s,s)},[t]),u=v(s=>t.observe.subscribeHistoryMeta(()=>s()),[t]),l=N(u,i,i),a=v(()=>{t.feature.undo()},[t]),n=v(()=>{t.feature.redo()},[t]);return W(()=>({...l,undo:a,redo:n}),[l,a,n])}import{useMemo as E,useRef as M,useState as X,useEffect as I}from"react";function Y(t,r,i){let u=x(),l=V(t),{value:a,setValue:n,meta:s}=l,b=s?.error,f=!!s?.isValidating,c=M(null),[y,U]=X(!1),B=M({current:0}).current;I(()=>()=>{B.current++,c.current=null},[]);let o=M({setLoading:U,setError:(e,d)=>u.write.setError(e,d),setValue:e=>n(e),getUploadKey:()=>c.current,setUploadKey:e=>{c.current=e},onCallbackError:e=>u.read.config.onUnhandledError(e,"upload")});I(()=>{o.current.setLoading=U,o.current.setError=(e,d)=>u.write.setError(e,d),o.current.setValue=e=>n(e),o.current.getUploadKey=()=>c.current,o.current.setUploadKey=e=>{c.current=e},o.current.onCallbackError=e=>u.read.config.onUnhandledError(e,"upload")});let p=E(()=>({setLoading:e=>o.current.setLoading(e),setError:(e,d)=>o.current.setError(e,d),setValue:e=>o.current.setValue(e),getUploadKey:()=>o.current.getUploadKey(),setUploadKey:e=>o.current.setUploadKey(e),onCallbackError:e=>o.current.onCallbackError?.(e)}),[]),g=E(()=>K(t,r,p,B),[t,r,p]),m=E(()=>w(t,i,p,B),[t,i,p]);return E(()=>({value:a,setValue:n,error:b,isValidating:f||y,upload:g,remove:m}),[a,n,b,f,y,g,m])}export{j as BitFormProvider,z as useBitArray,V as useBitField,D as useBitForm,Q as useBitHistory,O as useBitPersist,q as useBitScope,A as useBitSteps,x as useBitStore,Y as useBitUpload,G as useBitWatch};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkWKLCAC74cjs = require('../chunk-WKLCAC74.cjs');require('../chunk-W5CLDRRE.cjs');require('../chunk-U6UFULNS.cjs');var _chunkH27ROY4Fcjs = require('../chunk-H27ROY4F.cjs');require('../chunk-BSGJ3T5S.cjs');require('../chunk-RHMJPKNV.cjs');var _chunkH6HGYVRVcjs = require('../chunk-H6HGYVRV.cjs');require('../chunk-AV7YYSFI.cjs');require('../chunk-OWDDAM6C.cjs');require('../chunk-X3DGA5UC.cjs');require('../chunk-725CMNAV.cjs');var _react = require('react');function U(u){let{fieldState:r,setBlur:o,store:m}=_chunkWKLCAC74cjs.d.call(void 0, u),{fieldController:t}=_react.useMemo.call(void 0, ()=>_chunkH27ROY4Fcjs.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 = _chunkWKLCAC74cjs.a; exports.useBitArray = _chunkWKLCAC74cjs.e; exports.useBitField = U; exports.useBitForm = _chunkWKLCAC74cjs.c; exports.useBitPersist = _chunkWKLCAC74cjs.i; exports.useBitScope = _chunkWKLCAC74cjs.f; exports.useBitSteps = _chunkWKLCAC74cjs.g; exports.useBitStore = _chunkWKLCAC74cjs.b; exports.useBitWatch = _chunkWKLCAC74cjs.h;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkKDNY7F5Qcjs = require('../chunk-KDNY7F5Q.cjs');require('../chunk-W5CLDRRE.cjs');require('../chunk-CTQXXT26.cjs');var _chunkH27ROY4Fcjs = require('../chunk-H27ROY4F.cjs');require('../chunk-BSGJ3T5S.cjs');require('../chunk-RHMJPKNV.cjs');var _chunkH6HGYVRVcjs = require('../chunk-H6HGYVRV.cjs');require('../chunk-AV7YYSFI.cjs');require('../chunk-OWDDAM6C.cjs');require('../chunk-X3DGA5UC.cjs');require('../chunk-725CMNAV.cjs');var _react = require('react');function U(u){let{fieldState:r,setBlur:o,store:m}=_chunkKDNY7F5Qcjs.d.call(void 0, u),{fieldController:t}=_react.useMemo.call(void 0, ()=>_chunkH27ROY4Fcjs.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 = _chunkKDNY7F5Qcjs.a; exports.useBitArray = _chunkKDNY7F5Qcjs.e; exports.useBitField = U; exports.useBitForm = _chunkKDNY7F5Qcjs.c; exports.useBitPersist = _chunkKDNY7F5Qcjs.i; exports.useBitScope = _chunkKDNY7F5Qcjs.f; exports.useBitSteps = _chunkKDNY7F5Qcjs.g; exports.useBitStore = _chunkKDNY7F5Qcjs.b; exports.useBitWatch = _chunkKDNY7F5Qcjs.h;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,2 +1,2 @@
1
- import{a as x,b as v,c as y,d as h,e as V,f as T,g,h as R,i as S}from"../chunk-EYCJKAK3.js";import"../chunk-5NA2TFPG.js";import"../chunk-7T7L2TZX.js";import{h as f}from"../chunk-L42NQRVD.js";import"../chunk-W2E5UIXT.js";import"../chunk-UIKO6GGW.js";import{a as P}from"../chunk-L57KMBXS.js";import"../chunk-Y7TQTZY7.js";import"../chunk-UBVVBVLS.js";import"../chunk-MBEQLBJB.js";import"../chunk-DGEGYNQL.js";import{useMemo as i,useCallback as n}from"react";function U(u){let{fieldState:r,setBlur:o,store:m}=h(u),{fieldController:t}=i(()=>f(m,u),[m,u]),s=i(()=>t.displayValue(r.value),[r.value,t]),a=n(d=>t.setValue(d),[t]),p=n(d=>t.setValue(d),[t]),{value:B}=r,e=P(r),l=n(()=>{o()},[o]),c=i(()=>({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=i(()=>({value:s,onChangeText:a,onBlur:l}),[s,a,l]);return i(()=>({value:B,displayValue:s,setValue:p,setBlur:o,onChangeText:a,onBlur:l,meta:c,props:F}),[B,s,p,o,a,l,c,F])}export{x as BitFormProvider,V as useBitArray,U as useBitField,y as useBitForm,S as useBitPersist,T as useBitScope,g as useBitSteps,v as useBitStore,R as useBitWatch};
1
+ import{a as x,b as v,c as y,d as h,e as V,f as T,g,h as R,i as S}from"../chunk-V22XASFK.js";import"../chunk-5NA2TFPG.js";import"../chunk-77RIH3KJ.js";import{h as f}from"../chunk-L42NQRVD.js";import"../chunk-W2E5UIXT.js";import"../chunk-UIKO6GGW.js";import{a as P}from"../chunk-L57KMBXS.js";import"../chunk-Y7TQTZY7.js";import"../chunk-UBVVBVLS.js";import"../chunk-MBEQLBJB.js";import"../chunk-DGEGYNQL.js";import{useMemo as i,useCallback as n}from"react";function U(u){let{fieldState:r,setBlur:o,store:m}=h(u),{fieldController:t}=i(()=>f(m,u),[m,u]),s=i(()=>t.displayValue(r.value),[r.value,t]),a=n(d=>t.setValue(d),[t]),p=n(d=>t.setValue(d),[t]),{value:B}=r,e=P(r),l=n(()=>{o()},[o]),c=i(()=>({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=i(()=>({value:s,onChangeText:a,onBlur:l}),[s,a,l]);return i(()=>({value:B,displayValue:s,setValue:p,setBlur:o,onChangeText:a,onBlur:l,meta:c,props:F}),[B,s,p,o,a,l,c,F])}export{x as BitFormProvider,V as useBitArray,U as useBitField,y as useBitForm,S as useBitPersist,T as useBitScope,g as useBitSteps,v as useBitStore,R as useBitWatch};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkH3RTOA6Xcjs = require('../chunk-H3RTOA6X.cjs');require('../chunk-W5CLDRRE.cjs');var _chunkU6UFULNScjs = require('../chunk-U6UFULNS.cjs');var _chunkH27ROY4Fcjs = require('../chunk-H27ROY4F.cjs');var _chunkBSGJ3T5Scjs = require('../chunk-BSGJ3T5S.cjs');var _chunkRHMJPKNVcjs = require('../chunk-RHMJPKNV.cjs');var _chunkH6HGYVRVcjs = require('../chunk-H6HGYVRV.cjs');require('../chunk-AV7YYSFI.cjs');var _chunkOWDDAM6Ccjs = require('../chunk-OWDDAM6C.cjs');require('../chunk-X3DGA5UC.cjs');require('../chunk-725CMNAV.cjs');var _vue = require('vue');var Q=Symbol("BIT_STORE");function se(r){let e=_chunkU6UFULNScjs.d.call(void 0, r);_vue.provide.call(void 0, Q,e),_vue.onUnmounted.call(void 0, ()=>{_optionalChain([e, 'access', _2 => _2.feature, 'optionalAccess', _3 => _3.cleanup, 'optionalCall', _4 => _4()])})}function i(){let r=_vue.inject.call(void 0, Q);if(!r)throw new Error("BitForm Vue hooks devem ser usados sob um provideBitStore");return r}function ue(){let r=i(),e=_vue.shallowRef.call(void 0, {isValid:!0,isDirty:!1,isSubmitting:!1}),t=_vue.ref.call(void 0, null),o=_vue.ref.call(void 0, null),s=_chunkH27ROY4Fcjs.c.call(void 0, r,B=>{e.value=B});_vue.onUnmounted.call(void 0, s);let{controller:a,actions:n}=_chunkH27ROY4Fcjs.i.call(void 0, r,{clearSubmissionState:()=>{t.value=null,o.value=null},setSubmissionResult:B=>{o.value=B},setSubmissionError:B=>{t.value=B}}),p=_vue.computed.call(void 0, ()=>e.value.isValid),u=_vue.computed.call(void 0, ()=>e.value.isSubmitting),v=_vue.computed.call(void 0, ()=>e.value.isDirty),S=a.onSubmit,l=a.reset;return{meta:_vue.reactive.call(void 0, {isValid:p,isDirty:v,isSubmitting:u,submitError:t,lastResponse:o}),getValues:a.getValues,getErrors:a.getErrors,getTouched:a.getTouched,getDirtyValues:a.getDirtyValues,submit:a.submit,onSubmit:S,reset:l,...n}}function k(r){let e=i(),{fieldController:t}=_chunkH27ROY4Fcjs.h.call(void 0, e,r),o=_vue.shallowRef.call(void 0, e.read.getFieldState(r)),s=e.observe.subscribeFieldState(r,d=>{o.value=d});_vue.onUnmounted.call(void 0, ()=>{s(),_chunkH27ROY4Fcjs.j.call(void 0, e,r)});let a=_vue.computed.call(void 0, ()=>o.value.value),n=_vue.computed.call(void 0, ()=>t.displayValue(a.value)),p=_vue.computed.call(void 0, {get:()=>n.value,set:d=>{t.setValue(d)}}),u=_vue.computed.call(void 0, ()=>_chunkH6HGYVRVcjs.a.call(void 0, o.value)),v=_vue.computed.call(void 0, ()=>u.value.error),S=_vue.computed.call(void 0, ()=>u.value.touched),l=_vue.computed.call(void 0, ()=>u.value.invalid),y=_vue.computed.call(void 0, ()=>u.value.isValidating),B=_vue.computed.call(void 0, ()=>u.value.isDirty),V=_vue.computed.call(void 0, ()=>u.value.isHidden),R=_vue.computed.call(void 0, ()=>u.value.isRequired),x=_vue.computed.call(void 0, ()=>u.value.hasError),F=d=>{t.setValue(d)},h=()=>t.setBlur();return{value:a,displayValue:n,modelValue:p,setValue:F,setBlur:h,onInput:d=>{F(d)},onBlur:()=>{h()},meta:_vue.reactive.call(void 0, {error:v,touched:S,invalid:l,isValidating:y,isDirty:B,isHidden:V,isRequired:R,hasError:x})}}function ve(r){let e=i(),t=_chunkH27ROY4Fcjs.g.call(void 0, e,r),o=_vue.shallowRef.call(void 0, t.readItems()),s=e.observe.subscribePath(r,()=>{o.value=t.readItems()});_vue.onUnmounted.call(void 0, ()=>{s(),_chunkH27ROY4Fcjs.k.call(void 0, e,`${r}.`)});let a=_vue.computed.call(void 0, ()=>t.getFields(o.value)),n=_vue.computed.call(void 0, ()=>o.value.length);return{fields:a,length:n,append:t.append,prepend:t.prepend,insert:t.insert,remove:t.remove,move:t.move,swap:t.swap,replace:t.replace,clear:t.clear}}function Be(){let r=i(),e=_vue.shallowRef.call(void 0, _chunkRHMJPKNVcjs.f.call(void 0, r)),t=_chunkRHMJPKNVcjs.g.call(void 0, r,a=>{e.value=a});_vue.onUnmounted.call(void 0, t);let o=()=>{e.value.canUndo&&r.feature.undo()},s=()=>{e.value.canRedo&&r.feature.redo()};return{canUndo:_vue.computed.call(void 0, ()=>e.value.canUndo),canRedo:_vue.computed.call(void 0, ()=>e.value.canRedo),historyIndex:_vue.computed.call(void 0, ()=>e.value.historyIndex),historySize:_vue.computed.call(void 0, ()=>e.value.historySize),undo:o,redo:s}}function ye(r){let e=i(),t=_vue.ref.call(void 0, e.read.getScopeStatus(r)),o=_chunkBSGJ3T5Scjs.a.call(void 0, e,r,v=>{t.value=v});_vue.onUnmounted.call(void 0, ()=>{o()});let s=async()=>{let v=await e.feature.validate({scope:r}),S=e.read.getScopeErrors(r);return{valid:v,errors:S}},a=()=>e.read.getScopeErrors(r),n=_vue.computed.call(void 0, ()=>!t.value.hasErrors),p=_vue.computed.call(void 0, ()=>t.value.isDirty),u=_vue.computed.call(void 0, ()=>t.value.errors);return{scopeName:r,status:t,errors:u,validate:s,getErrors:a,isValid:n,isDirty:p}}function he(r){if(r.length===0)throw new Error("useBitSteps: scopeNames must not be empty");let e=i(),t=_vue.ref.call(void 0, 0),o=_vue.computed.call(void 0, ()=>_nullishCoalesce(r[t.value], () => (""))),s=_vue.ref.call(void 0, e.read.getScopeStatus(o.value)),a=o.value,n=e.observe.subscribeScopeStatus(a,c=>{o.value===a&&(_chunkRHMJPKNVcjs.b.call(void 0, s.value,c)||(s.value=c))}),p=()=>{let c=o.value,f=e.observe.subscribeScopeStatus(c,g=>{o.value===c&&(_chunkRHMJPKNVcjs.b.call(void 0, s.value,g)||(s.value=g))}),d=n;n=f,a=c,d()};_vue.onUnmounted.call(void 0, ()=>{n()});let u=async()=>{let c=o.value,f=t.value,d=await e.feature.validate({scope:c});if(t.value!==f){let P=o.value;return{valid:await e.feature.validate({scope:P}),errors:e.read.getScopeErrors(P)}}let g=e.read.getScopeErrors(c);return{valid:d,errors:g}},v=()=>e.read.getScopeErrors(o.value),S=async()=>{let c=t.value,f=_nullishCoalesce(r[c], () => (""));if(!f)return!1;let d=e.read.getScopeFields(f);if(e.feature.hasValidationsInProgress(d))return!1;let g=await e.feature.validate({scope:f});if(c!==t.value)return!1;if(g)t.value=Math.min(t.value+1,r.length-1),s.value=e.read.getScopeStatus(o.value),p();else{let P=e.read.getScopeErrors(f),T=Object.keys(P);T.length>0&&e.write.markFieldsTouched(T),s.value=e.read.getScopeStatus(f)}return g},l=()=>{t.value=Math.max(t.value-1,0),s.value=e.read.getScopeStatus(o.value),p()},y=c=>{t.value=Math.max(0,Math.min(c-1,r.length-1)),s.value=e.read.getScopeStatus(o.value),p()},B=_vue.computed.call(void 0, ()=>t.value+1),V=_vue.computed.call(void 0, ()=>t.value===0),R=_vue.computed.call(void 0, ()=>t.value>=r.length-1),x=_vue.computed.call(void 0, ()=>!s.value.hasErrors),F=_vue.computed.call(void 0, ()=>s.value.isDirty),h=_vue.computed.call(void 0, ()=>s.value.errors);return{step:B,stepIndex:t,scope:o,next:S,prev:l,goTo:y,isFirst:V,isLast:R,status:s,errors:h,isValid:x,isDirty:F,validate:u,getErrors:v}}function Re(r){let e=i(),t=_chunkOWDDAM6Ccjs.f.call(void 0, e.read.getState().values,r),o=_vue.ref.call(void 0, t),s=e.observe.subscribePath(r,a=>{_chunkOWDDAM6Ccjs.c.call(void 0, o.value,a)||(o.value=a)});return _vue.onUnmounted.call(void 0, s),_vue.readonly.call(void 0, o)}function we(r,e,t){let o=i(),s=k(r),a=null,n=_vue.ref.call(void 0, !1),p={current:0},u={setLoading:l=>{n.value=l},setError:(l,y)=>o.write.setError(l,y),setValue:l=>s.setValue(l),getUploadKey:()=>a,setUploadKey:l=>{a=l},onCallbackError:l=>o.read.config.onUnhandledError(l,"upload")},v=_chunkH3RTOA6Xcjs.a.call(void 0, r,e,u,p),S=_chunkH3RTOA6Xcjs.b.call(void 0, r,t,u,p);return _vue.onUnmounted.call(void 0, ()=>{p.current++,a=null}),{value:s.value,setValue:s.setValue,error:_vue.computed.call(void 0, ()=>s.meta.error),isValidating:_vue.computed.call(void 0, ()=>!!s.meta.isValidating||n.value),upload:v,remove:S}}function Ie(){let r=i(),e=_vue.ref.call(void 0, r.read.getPersistMetadata()),t=_chunkH27ROY4Fcjs.f.call(void 0, r,n=>{e.value=n});return _vue.onUnmounted.call(void 0, ()=>t()),{restore:async()=>r.feature.restorePersisted(),save:async()=>{await r.feature.forceSave()},clear:async()=>{await r.feature.clearPersisted()},meta:_vue.reactive.call(void 0, {isSaving:_vue.computed.call(void 0, ()=>e.value.isSaving),isRestoring:_vue.computed.call(void 0, ()=>e.value.isRestoring),error:_vue.computed.call(void 0, ()=>e.value.error)})}}exports.provideBitStore = se; exports.useBitArray = ve; exports.useBitField = k; exports.useBitForm = ue; exports.useBitHistory = Be; exports.useBitPersist = Ie; exports.useBitScope = ye; exports.useBitSteps = he; exports.useBitStore = i; exports.useBitUpload = we; exports.useBitWatch = Re;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkH3RTOA6Xcjs = require('../chunk-H3RTOA6X.cjs');require('../chunk-W5CLDRRE.cjs');var _chunkCTQXXT26cjs = require('../chunk-CTQXXT26.cjs');var _chunkH27ROY4Fcjs = require('../chunk-H27ROY4F.cjs');var _chunkBSGJ3T5Scjs = require('../chunk-BSGJ3T5S.cjs');var _chunkRHMJPKNVcjs = require('../chunk-RHMJPKNV.cjs');var _chunkH6HGYVRVcjs = require('../chunk-H6HGYVRV.cjs');require('../chunk-AV7YYSFI.cjs');var _chunkOWDDAM6Ccjs = require('../chunk-OWDDAM6C.cjs');require('../chunk-X3DGA5UC.cjs');require('../chunk-725CMNAV.cjs');var _vue = require('vue');var Q=Symbol("BIT_STORE");function se(r){let e=_chunkCTQXXT26cjs.d.call(void 0, r);_vue.provide.call(void 0, Q,e),_vue.onUnmounted.call(void 0, ()=>{_optionalChain([e, 'access', _2 => _2.feature, 'optionalAccess', _3 => _3.cleanup, 'optionalCall', _4 => _4()])})}function i(){let r=_vue.inject.call(void 0, Q);if(!r)throw new Error("BitForm Vue hooks devem ser usados sob um provideBitStore");return r}function ue(){let r=i(),e=_vue.shallowRef.call(void 0, {isValid:!0,isDirty:!1,isSubmitting:!1}),t=_vue.ref.call(void 0, null),o=_vue.ref.call(void 0, null),s=_chunkH27ROY4Fcjs.c.call(void 0, r,B=>{e.value=B});_vue.onUnmounted.call(void 0, s);let{controller:a,actions:n}=_chunkH27ROY4Fcjs.i.call(void 0, r,{clearSubmissionState:()=>{t.value=null,o.value=null},setSubmissionResult:B=>{o.value=B},setSubmissionError:B=>{t.value=B}}),p=_vue.computed.call(void 0, ()=>e.value.isValid),u=_vue.computed.call(void 0, ()=>e.value.isSubmitting),v=_vue.computed.call(void 0, ()=>e.value.isDirty),S=a.onSubmit,l=a.reset;return{meta:_vue.reactive.call(void 0, {isValid:p,isDirty:v,isSubmitting:u,submitError:t,lastResponse:o}),getValues:a.getValues,getErrors:a.getErrors,getTouched:a.getTouched,getDirtyValues:a.getDirtyValues,submit:a.submit,onSubmit:S,reset:l,...n}}function k(r){let e=i(),{fieldController:t}=_chunkH27ROY4Fcjs.h.call(void 0, e,r),o=_vue.shallowRef.call(void 0, e.read.getFieldState(r)),s=e.observe.subscribeFieldState(r,d=>{o.value=d});_vue.onUnmounted.call(void 0, ()=>{s(),_chunkH27ROY4Fcjs.j.call(void 0, e,r)});let a=_vue.computed.call(void 0, ()=>o.value.value),n=_vue.computed.call(void 0, ()=>t.displayValue(a.value)),p=_vue.computed.call(void 0, {get:()=>n.value,set:d=>{t.setValue(d)}}),u=_vue.computed.call(void 0, ()=>_chunkH6HGYVRVcjs.a.call(void 0, o.value)),v=_vue.computed.call(void 0, ()=>u.value.error),S=_vue.computed.call(void 0, ()=>u.value.touched),l=_vue.computed.call(void 0, ()=>u.value.invalid),y=_vue.computed.call(void 0, ()=>u.value.isValidating),B=_vue.computed.call(void 0, ()=>u.value.isDirty),V=_vue.computed.call(void 0, ()=>u.value.isHidden),R=_vue.computed.call(void 0, ()=>u.value.isRequired),x=_vue.computed.call(void 0, ()=>u.value.hasError),F=d=>{t.setValue(d)},h=()=>t.setBlur();return{value:a,displayValue:n,modelValue:p,setValue:F,setBlur:h,onInput:d=>{F(d)},onBlur:()=>{h()},meta:_vue.reactive.call(void 0, {error:v,touched:S,invalid:l,isValidating:y,isDirty:B,isHidden:V,isRequired:R,hasError:x})}}function ve(r){let e=i(),t=_chunkH27ROY4Fcjs.g.call(void 0, e,r),o=_vue.shallowRef.call(void 0, t.readItems()),s=e.observe.subscribePath(r,()=>{o.value=t.readItems()});_vue.onUnmounted.call(void 0, ()=>{s(),_chunkH27ROY4Fcjs.k.call(void 0, e,`${r}.`)});let a=_vue.computed.call(void 0, ()=>t.getFields(o.value)),n=_vue.computed.call(void 0, ()=>o.value.length);return{fields:a,length:n,append:t.append,prepend:t.prepend,insert:t.insert,remove:t.remove,move:t.move,swap:t.swap,replace:t.replace,clear:t.clear}}function Be(){let r=i(),e=_vue.shallowRef.call(void 0, _chunkRHMJPKNVcjs.f.call(void 0, r)),t=_chunkRHMJPKNVcjs.g.call(void 0, r,a=>{e.value=a});_vue.onUnmounted.call(void 0, t);let o=()=>{e.value.canUndo&&r.feature.undo()},s=()=>{e.value.canRedo&&r.feature.redo()};return{canUndo:_vue.computed.call(void 0, ()=>e.value.canUndo),canRedo:_vue.computed.call(void 0, ()=>e.value.canRedo),historyIndex:_vue.computed.call(void 0, ()=>e.value.historyIndex),historySize:_vue.computed.call(void 0, ()=>e.value.historySize),undo:o,redo:s}}function ye(r){let e=i(),t=_vue.ref.call(void 0, e.read.getScopeStatus(r)),o=_chunkBSGJ3T5Scjs.a.call(void 0, e,r,v=>{t.value=v});_vue.onUnmounted.call(void 0, ()=>{o()});let s=async()=>{let v=await e.feature.validate({scope:r}),S=e.read.getScopeErrors(r);return{valid:v,errors:S}},a=()=>e.read.getScopeErrors(r),n=_vue.computed.call(void 0, ()=>!t.value.hasErrors),p=_vue.computed.call(void 0, ()=>t.value.isDirty),u=_vue.computed.call(void 0, ()=>t.value.errors);return{scopeName:r,status:t,errors:u,validate:s,getErrors:a,isValid:n,isDirty:p}}function he(r){if(r.length===0)throw new Error("useBitSteps: scopeNames must not be empty");let e=i(),t=_vue.ref.call(void 0, 0),o=_vue.computed.call(void 0, ()=>_nullishCoalesce(r[t.value], () => (""))),s=_vue.ref.call(void 0, e.read.getScopeStatus(o.value)),a=o.value,n=e.observe.subscribeScopeStatus(a,c=>{o.value===a&&(_chunkRHMJPKNVcjs.b.call(void 0, s.value,c)||(s.value=c))}),p=()=>{let c=o.value,f=e.observe.subscribeScopeStatus(c,g=>{o.value===c&&(_chunkRHMJPKNVcjs.b.call(void 0, s.value,g)||(s.value=g))}),d=n;n=f,a=c,d()};_vue.onUnmounted.call(void 0, ()=>{n()});let u=async()=>{let c=o.value,f=t.value,d=await e.feature.validate({scope:c});if(t.value!==f){let P=o.value;return{valid:await e.feature.validate({scope:P}),errors:e.read.getScopeErrors(P)}}let g=e.read.getScopeErrors(c);return{valid:d,errors:g}},v=()=>e.read.getScopeErrors(o.value),S=async()=>{let c=t.value,f=_nullishCoalesce(r[c], () => (""));if(!f)return!1;let d=e.read.getScopeFields(f);if(e.feature.hasValidationsInProgress(d))return!1;let g=await e.feature.validate({scope:f});if(c!==t.value)return!1;if(g)t.value=Math.min(t.value+1,r.length-1),s.value=e.read.getScopeStatus(o.value),p();else{let P=e.read.getScopeErrors(f),T=Object.keys(P);T.length>0&&e.write.markFieldsTouched(T),s.value=e.read.getScopeStatus(f)}return g},l=()=>{t.value=Math.max(t.value-1,0),s.value=e.read.getScopeStatus(o.value),p()},y=c=>{t.value=Math.max(0,Math.min(c-1,r.length-1)),s.value=e.read.getScopeStatus(o.value),p()},B=_vue.computed.call(void 0, ()=>t.value+1),V=_vue.computed.call(void 0, ()=>t.value===0),R=_vue.computed.call(void 0, ()=>t.value>=r.length-1),x=_vue.computed.call(void 0, ()=>!s.value.hasErrors),F=_vue.computed.call(void 0, ()=>s.value.isDirty),h=_vue.computed.call(void 0, ()=>s.value.errors);return{step:B,stepIndex:t,scope:o,next:S,prev:l,goTo:y,isFirst:V,isLast:R,status:s,errors:h,isValid:x,isDirty:F,validate:u,getErrors:v}}function Re(r){let e=i(),t=_chunkOWDDAM6Ccjs.f.call(void 0, e.read.getState().values,r),o=_vue.ref.call(void 0, t),s=e.observe.subscribePath(r,a=>{_chunkOWDDAM6Ccjs.c.call(void 0, o.value,a)||(o.value=a)});return _vue.onUnmounted.call(void 0, s),_vue.readonly.call(void 0, o)}function we(r,e,t){let o=i(),s=k(r),a=null,n=_vue.ref.call(void 0, !1),p={current:0},u={setLoading:l=>{n.value=l},setError:(l,y)=>o.write.setError(l,y),setValue:l=>s.setValue(l),getUploadKey:()=>a,setUploadKey:l=>{a=l},onCallbackError:l=>o.read.config.onUnhandledError(l,"upload")},v=_chunkH3RTOA6Xcjs.a.call(void 0, r,e,u,p),S=_chunkH3RTOA6Xcjs.b.call(void 0, r,t,u,p);return _vue.onUnmounted.call(void 0, ()=>{p.current++,a=null}),{value:s.value,setValue:s.setValue,error:_vue.computed.call(void 0, ()=>s.meta.error),isValidating:_vue.computed.call(void 0, ()=>!!s.meta.isValidating||n.value),upload:v,remove:S}}function Ie(){let r=i(),e=_vue.ref.call(void 0, r.read.getPersistMetadata()),t=_chunkH27ROY4Fcjs.f.call(void 0, r,n=>{e.value=n});return _vue.onUnmounted.call(void 0, ()=>t()),{restore:async()=>r.feature.restorePersisted(),save:async()=>{await r.feature.forceSave()},clear:async()=>{await r.feature.clearPersisted()},meta:_vue.reactive.call(void 0, {isSaving:_vue.computed.call(void 0, ()=>e.value.isSaving),isRestoring:_vue.computed.call(void 0, ()=>e.value.isRestoring),error:_vue.computed.call(void 0, ()=>e.value.error)})}}exports.provideBitStore = se; exports.useBitArray = ve; exports.useBitField = k; exports.useBitForm = ue; exports.useBitHistory = Be; exports.useBitPersist = Ie; exports.useBitScope = ye; exports.useBitSteps = he; exports.useBitStore = i; exports.useBitUpload = we; exports.useBitWatch = Re;
2
2
  //# sourceMappingURL=index.cjs.map
package/dist/vue/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{a as $,b as J}from"../chunk-CATA7YEV.js";import"../chunk-5NA2TFPG.js";import{d as K}from"../chunk-7T7L2TZX.js";import{c as C,f as q,g as O,h as W,i as _,j as z,k as L}from"../chunk-L42NQRVD.js";import{a as G}from"../chunk-W2E5UIXT.js";import{b as w,f as j,g as H}from"../chunk-UIKO6GGW.js";import{a as Y}from"../chunk-L57KMBXS.js";import"../chunk-Y7TQTZY7.js";import{c as M,f as A}from"../chunk-UBVVBVLS.js";import"../chunk-MBEQLBJB.js";import"../chunk-DGEGYNQL.js";import{inject as te,onUnmounted as re,provide as oe}from"vue";var Q=Symbol("BIT_STORE");function se(r){let e=K(r);oe(Q,e),re(()=>{e.feature?.cleanup?.()})}function i(){let r=te(Q);if(!r)throw new Error("BitForm Vue hooks devem ser usados sob um provideBitStore");return r}import{computed as E,onUnmounted as ae,shallowRef as ie,ref as X,reactive as ne}from"vue";function ue(){let r=i(),e=ie({isValid:!0,isDirty:!1,isSubmitting:!1}),t=X(null),o=X(null),s=C(r,B=>{e.value=B});ae(s);let{controller:a,actions:n}=_(r,{clearSubmissionState:()=>{t.value=null,o.value=null},setSubmissionResult:B=>{o.value=B},setSubmissionError:B=>{t.value=B}}),p=E(()=>e.value.isValid),u=E(()=>e.value.isSubmitting),v=E(()=>e.value.isDirty),S=a.onSubmit,l=a.reset;return{meta:ne({isValid:p,isDirty:v,isSubmitting:u,submitError:t,lastResponse:o}),getValues:a.getValues,getErrors:a.getErrors,getTouched:a.getTouched,getDirtyValues:a.getDirtyValues,submit:a.submit,onSubmit:S,reset:l,...n}}import{computed as m,onUnmounted as le,shallowRef as ce,reactive as pe}from"vue";function k(r){let e=i(),{fieldController:t}=W(e,r),o=ce(e.read.getFieldState(r)),s=e.observe.subscribeFieldState(r,d=>{o.value=d});le(()=>{s(),z(e,r)});let a=m(()=>o.value.value),n=m(()=>t.displayValue(a.value)),p=m({get:()=>n.value,set:d=>{t.setValue(d)}}),u=m(()=>Y(o.value)),v=m(()=>u.value.error),S=m(()=>u.value.touched),l=m(()=>u.value.invalid),y=m(()=>u.value.isValidating),B=m(()=>u.value.isDirty),V=m(()=>u.value.isHidden),R=m(()=>u.value.isRequired),x=m(()=>u.value.hasError),F=d=>{t.setValue(d)},h=()=>t.setBlur();return{value:a,displayValue:n,modelValue:p,setValue:F,setBlur:h,onInput:d=>{F(d)},onBlur:()=>{h()},meta:pe({error:v,touched:S,invalid:l,isValidating:y,isDirty:B,isHidden:V,isRequired:R,hasError:x})}}import{computed as Z,onUnmounted as de,shallowRef as me}from"vue";function ve(r){let e=i(),t=O(e,r),o=me(t.readItems()),s=e.observe.subscribePath(r,()=>{o.value=t.readItems()});de(()=>{s(),L(e,`${r}.`)});let a=Z(()=>t.getFields(o.value)),n=Z(()=>o.value.length);return{fields:a,length:n,append:t.append,prepend:t.prepend,insert:t.insert,remove:t.remove,move:t.move,swap:t.swap,replace:t.replace,clear:t.clear}}import{computed as U,onUnmounted as fe,shallowRef as Se}from"vue";function Be(){let r=i(),e=Se(j(r)),t=H(r,a=>{e.value=a});fe(t);let o=()=>{e.value.canUndo&&r.feature.undo()},s=()=>{e.value.canRedo&&r.feature.redo()};return{canUndo:U(()=>e.value.canUndo),canRedo:U(()=>e.value.canRedo),historyIndex:U(()=>e.value.historyIndex),historySize:U(()=>e.value.historySize),undo:o,redo:s}}import{computed as D,onUnmounted as ge,ref as be}from"vue";function ye(r){let e=i(),t=be(e.read.getScopeStatus(r)),o=G(e,r,v=>{t.value=v});ge(()=>{o()});let s=async()=>{let v=await e.feature.validate({scope:r}),S=e.read.getScopeErrors(r);return{valid:v,errors:S}},a=()=>e.read.getScopeErrors(r),n=D(()=>!t.value.hasErrors),p=D(()=>t.value.isDirty),u=D(()=>t.value.errors);return{scopeName:r,status:t,errors:u,validate:s,getErrors:a,isValid:n,isDirty:p}}import{computed as b,onUnmounted as Fe,ref as N}from"vue";function he(r){if(r.length===0)throw new Error("useBitSteps: scopeNames must not be empty");let e=i(),t=N(0),o=b(()=>r[t.value]??""),s=N(e.read.getScopeStatus(o.value)),a=o.value,n=e.observe.subscribeScopeStatus(a,c=>{o.value===a&&(w(s.value,c)||(s.value=c))}),p=()=>{let c=o.value,f=e.observe.subscribeScopeStatus(c,g=>{o.value===c&&(w(s.value,g)||(s.value=g))}),d=n;n=f,a=c,d()};Fe(()=>{n()});let u=async()=>{let c=o.value,f=t.value,d=await e.feature.validate({scope:c});if(t.value!==f){let P=o.value;return{valid:await e.feature.validate({scope:P}),errors:e.read.getScopeErrors(P)}}let g=e.read.getScopeErrors(c);return{valid:d,errors:g}},v=()=>e.read.getScopeErrors(o.value),S=async()=>{let c=t.value,f=r[c]??"";if(!f)return!1;let d=e.read.getScopeFields(f);if(e.feature.hasValidationsInProgress(d))return!1;let g=await e.feature.validate({scope:f});if(c!==t.value)return!1;if(g)t.value=Math.min(t.value+1,r.length-1),s.value=e.read.getScopeStatus(o.value),p();else{let P=e.read.getScopeErrors(f),T=Object.keys(P);T.length>0&&e.write.markFieldsTouched(T),s.value=e.read.getScopeStatus(f)}return g},l=()=>{t.value=Math.max(t.value-1,0),s.value=e.read.getScopeStatus(o.value),p()},y=c=>{t.value=Math.max(0,Math.min(c-1,r.length-1)),s.value=e.read.getScopeStatus(o.value),p()},B=b(()=>t.value+1),V=b(()=>t.value===0),R=b(()=>t.value>=r.length-1),x=b(()=>!s.value.hasErrors),F=b(()=>s.value.isDirty),h=b(()=>s.value.errors);return{step:B,stepIndex:t,scope:o,next:S,prev:l,goTo:y,isFirst:V,isLast:R,status:s,errors:h,isValid:x,isDirty:F,validate:u,getErrors:v}}import{ref as Pe,onUnmounted as Ue,readonly as Ve}from"vue";function Re(r){let e=i(),t=A(e.read.getState().values,r),o=Pe(t),s=e.observe.subscribePath(r,a=>{M(o.value,a)||(o.value=a)});return Ue(s),Ve(o)}import{computed as ee,onUnmounted as xe,ref as Te}from"vue";function we(r,e,t){let o=i(),s=k(r),a=null,n=Te(!1),p={current:0},u={setLoading:l=>{n.value=l},setError:(l,y)=>o.write.setError(l,y),setValue:l=>s.setValue(l),getUploadKey:()=>a,setUploadKey:l=>{a=l},onCallbackError:l=>o.read.config.onUnhandledError(l,"upload")},v=$(r,e,u,p),S=J(r,t,u,p);return xe(()=>{p.current++,a=null}),{value:s.value,setValue:s.setValue,error:ee(()=>s.meta.error),isValidating:ee(()=>!!s.meta.isValidating||n.value),upload:v,remove:S}}import{computed as I,onUnmounted as Ee,ref as ke,reactive as De}from"vue";function Ie(){let r=i(),e=ke(r.read.getPersistMetadata()),t=q(r,n=>{e.value=n});return Ee(()=>t()),{restore:async()=>r.feature.restorePersisted(),save:async()=>{await r.feature.forceSave()},clear:async()=>{await r.feature.clearPersisted()},meta:De({isSaving:I(()=>e.value.isSaving),isRestoring:I(()=>e.value.isRestoring),error:I(()=>e.value.error)})}}export{se as provideBitStore,ve as useBitArray,k as useBitField,ue as useBitForm,Be as useBitHistory,Ie as useBitPersist,ye as useBitScope,he as useBitSteps,i as useBitStore,we as useBitUpload,Re as useBitWatch};
1
+ import{a as $,b as J}from"../chunk-CATA7YEV.js";import"../chunk-5NA2TFPG.js";import{d as K}from"../chunk-77RIH3KJ.js";import{c as C,f as q,g as O,h as W,i as _,j as z,k as L}from"../chunk-L42NQRVD.js";import{a as G}from"../chunk-W2E5UIXT.js";import{b as w,f as j,g as H}from"../chunk-UIKO6GGW.js";import{a as Y}from"../chunk-L57KMBXS.js";import"../chunk-Y7TQTZY7.js";import{c as M,f as A}from"../chunk-UBVVBVLS.js";import"../chunk-MBEQLBJB.js";import"../chunk-DGEGYNQL.js";import{inject as te,onUnmounted as re,provide as oe}from"vue";var Q=Symbol("BIT_STORE");function se(r){let e=K(r);oe(Q,e),re(()=>{e.feature?.cleanup?.()})}function i(){let r=te(Q);if(!r)throw new Error("BitForm Vue hooks devem ser usados sob um provideBitStore");return r}import{computed as E,onUnmounted as ae,shallowRef as ie,ref as X,reactive as ne}from"vue";function ue(){let r=i(),e=ie({isValid:!0,isDirty:!1,isSubmitting:!1}),t=X(null),o=X(null),s=C(r,B=>{e.value=B});ae(s);let{controller:a,actions:n}=_(r,{clearSubmissionState:()=>{t.value=null,o.value=null},setSubmissionResult:B=>{o.value=B},setSubmissionError:B=>{t.value=B}}),p=E(()=>e.value.isValid),u=E(()=>e.value.isSubmitting),v=E(()=>e.value.isDirty),S=a.onSubmit,l=a.reset;return{meta:ne({isValid:p,isDirty:v,isSubmitting:u,submitError:t,lastResponse:o}),getValues:a.getValues,getErrors:a.getErrors,getTouched:a.getTouched,getDirtyValues:a.getDirtyValues,submit:a.submit,onSubmit:S,reset:l,...n}}import{computed as m,onUnmounted as le,shallowRef as ce,reactive as pe}from"vue";function k(r){let e=i(),{fieldController:t}=W(e,r),o=ce(e.read.getFieldState(r)),s=e.observe.subscribeFieldState(r,d=>{o.value=d});le(()=>{s(),z(e,r)});let a=m(()=>o.value.value),n=m(()=>t.displayValue(a.value)),p=m({get:()=>n.value,set:d=>{t.setValue(d)}}),u=m(()=>Y(o.value)),v=m(()=>u.value.error),S=m(()=>u.value.touched),l=m(()=>u.value.invalid),y=m(()=>u.value.isValidating),B=m(()=>u.value.isDirty),V=m(()=>u.value.isHidden),R=m(()=>u.value.isRequired),x=m(()=>u.value.hasError),F=d=>{t.setValue(d)},h=()=>t.setBlur();return{value:a,displayValue:n,modelValue:p,setValue:F,setBlur:h,onInput:d=>{F(d)},onBlur:()=>{h()},meta:pe({error:v,touched:S,invalid:l,isValidating:y,isDirty:B,isHidden:V,isRequired:R,hasError:x})}}import{computed as Z,onUnmounted as de,shallowRef as me}from"vue";function ve(r){let e=i(),t=O(e,r),o=me(t.readItems()),s=e.observe.subscribePath(r,()=>{o.value=t.readItems()});de(()=>{s(),L(e,`${r}.`)});let a=Z(()=>t.getFields(o.value)),n=Z(()=>o.value.length);return{fields:a,length:n,append:t.append,prepend:t.prepend,insert:t.insert,remove:t.remove,move:t.move,swap:t.swap,replace:t.replace,clear:t.clear}}import{computed as U,onUnmounted as fe,shallowRef as Se}from"vue";function Be(){let r=i(),e=Se(j(r)),t=H(r,a=>{e.value=a});fe(t);let o=()=>{e.value.canUndo&&r.feature.undo()},s=()=>{e.value.canRedo&&r.feature.redo()};return{canUndo:U(()=>e.value.canUndo),canRedo:U(()=>e.value.canRedo),historyIndex:U(()=>e.value.historyIndex),historySize:U(()=>e.value.historySize),undo:o,redo:s}}import{computed as D,onUnmounted as ge,ref as be}from"vue";function ye(r){let e=i(),t=be(e.read.getScopeStatus(r)),o=G(e,r,v=>{t.value=v});ge(()=>{o()});let s=async()=>{let v=await e.feature.validate({scope:r}),S=e.read.getScopeErrors(r);return{valid:v,errors:S}},a=()=>e.read.getScopeErrors(r),n=D(()=>!t.value.hasErrors),p=D(()=>t.value.isDirty),u=D(()=>t.value.errors);return{scopeName:r,status:t,errors:u,validate:s,getErrors:a,isValid:n,isDirty:p}}import{computed as b,onUnmounted as Fe,ref as N}from"vue";function he(r){if(r.length===0)throw new Error("useBitSteps: scopeNames must not be empty");let e=i(),t=N(0),o=b(()=>r[t.value]??""),s=N(e.read.getScopeStatus(o.value)),a=o.value,n=e.observe.subscribeScopeStatus(a,c=>{o.value===a&&(w(s.value,c)||(s.value=c))}),p=()=>{let c=o.value,f=e.observe.subscribeScopeStatus(c,g=>{o.value===c&&(w(s.value,g)||(s.value=g))}),d=n;n=f,a=c,d()};Fe(()=>{n()});let u=async()=>{let c=o.value,f=t.value,d=await e.feature.validate({scope:c});if(t.value!==f){let P=o.value;return{valid:await e.feature.validate({scope:P}),errors:e.read.getScopeErrors(P)}}let g=e.read.getScopeErrors(c);return{valid:d,errors:g}},v=()=>e.read.getScopeErrors(o.value),S=async()=>{let c=t.value,f=r[c]??"";if(!f)return!1;let d=e.read.getScopeFields(f);if(e.feature.hasValidationsInProgress(d))return!1;let g=await e.feature.validate({scope:f});if(c!==t.value)return!1;if(g)t.value=Math.min(t.value+1,r.length-1),s.value=e.read.getScopeStatus(o.value),p();else{let P=e.read.getScopeErrors(f),T=Object.keys(P);T.length>0&&e.write.markFieldsTouched(T),s.value=e.read.getScopeStatus(f)}return g},l=()=>{t.value=Math.max(t.value-1,0),s.value=e.read.getScopeStatus(o.value),p()},y=c=>{t.value=Math.max(0,Math.min(c-1,r.length-1)),s.value=e.read.getScopeStatus(o.value),p()},B=b(()=>t.value+1),V=b(()=>t.value===0),R=b(()=>t.value>=r.length-1),x=b(()=>!s.value.hasErrors),F=b(()=>s.value.isDirty),h=b(()=>s.value.errors);return{step:B,stepIndex:t,scope:o,next:S,prev:l,goTo:y,isFirst:V,isLast:R,status:s,errors:h,isValid:x,isDirty:F,validate:u,getErrors:v}}import{ref as Pe,onUnmounted as Ue,readonly as Ve}from"vue";function Re(r){let e=i(),t=A(e.read.getState().values,r),o=Pe(t),s=e.observe.subscribePath(r,a=>{M(o.value,a)||(o.value=a)});return Ue(s),Ve(o)}import{computed as ee,onUnmounted as xe,ref as Te}from"vue";function we(r,e,t){let o=i(),s=k(r),a=null,n=Te(!1),p={current:0},u={setLoading:l=>{n.value=l},setError:(l,y)=>o.write.setError(l,y),setValue:l=>s.setValue(l),getUploadKey:()=>a,setUploadKey:l=>{a=l},onCallbackError:l=>o.read.config.onUnhandledError(l,"upload")},v=$(r,e,u,p),S=J(r,t,u,p);return xe(()=>{p.current++,a=null}),{value:s.value,setValue:s.setValue,error:ee(()=>s.meta.error),isValidating:ee(()=>!!s.meta.isValidating||n.value),upload:v,remove:S}}import{computed as I,onUnmounted as Ee,ref as ke,reactive as De}from"vue";function Ie(){let r=i(),e=ke(r.read.getPersistMetadata()),t=q(r,n=>{e.value=n});return Ee(()=>t()),{restore:async()=>r.feature.restorePersisted(),save:async()=>{await r.feature.forceSave()},clear:async()=>{await r.feature.clearPersisted()},meta:De({isSaving:I(()=>e.value.isSaving),isRestoring:I(()=>e.value.isRestoring),error:I(()=>e.value.error)})}}export{se as provideBitStore,ve as useBitArray,k as useBitField,ue as useBitForm,Be as useBitHistory,Ie as useBitPersist,ye as useBitScope,he as useBitSteps,i as useBitStore,we as useBitUpload,Re as useBitWatch};
2
2
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lehnihon/bit-form",
3
- "version": "2.2.27",
3
+ "version": "2.2.28",
4
4
  "description": "Gerenciamento de estado de formulários agnóstico e performático",
5
5
  "publishConfig": {
6
6
  "access": "public"