@lehnihon/bit-form 2.2.19 → 2.2.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -13
- package/dist/angular/index.cjs +1 -1
- package/dist/angular/index.cjs.map +1 -1
- package/dist/angular/index.d.cts +7 -7
- package/dist/angular/index.d.ts +7 -7
- package/dist/angular/index.js +1 -1
- package/dist/angular/index.js.map +1 -1
- package/dist/chunk-4WPLTOBT.cjs.map +1 -1
- package/dist/chunk-725CMNAV.cjs.map +1 -1
- package/dist/chunk-7T7L2TZX.js +2 -0
- package/dist/chunk-7T7L2TZX.js.map +1 -0
- package/dist/chunk-AV7YYSFI.cjs +2 -0
- package/dist/chunk-AV7YYSFI.cjs.map +1 -0
- package/dist/chunk-BSGJ3T5S.cjs.map +1 -1
- package/dist/chunk-CATA7YEV.js +2 -0
- package/dist/chunk-CATA7YEV.js.map +1 -0
- package/dist/chunk-EYCJKAK3.js +2 -0
- package/dist/chunk-EYCJKAK3.js.map +1 -0
- package/dist/chunk-GBHOCY7E.cjs +2 -0
- package/dist/chunk-GBHOCY7E.cjs.map +1 -0
- package/dist/{chunk-EPBSLPRL.cjs → chunk-H27ROY4F.cjs} +2 -2
- package/dist/chunk-H27ROY4F.cjs.map +1 -0
- package/dist/chunk-H3RTOA6X.cjs +2 -0
- package/dist/chunk-H3RTOA6X.cjs.map +1 -0
- package/dist/chunk-H6HGYVRV.cjs +2 -0
- package/dist/chunk-H6HGYVRV.cjs.map +1 -0
- package/dist/chunk-L42NQRVD.js +2 -0
- package/dist/{chunk-3WNZPBME.js.map → chunk-L42NQRVD.js.map} +1 -1
- package/dist/chunk-L57KMBXS.js +2 -0
- package/dist/chunk-L57KMBXS.js.map +1 -0
- package/dist/chunk-MBEQLBJB.js +2 -0
- package/dist/chunk-MBEQLBJB.js.map +1 -0
- package/dist/chunk-MFSDDSVG.cjs.map +1 -1
- package/dist/chunk-OWDDAM6C.cjs +2 -0
- package/dist/chunk-OWDDAM6C.cjs.map +1 -0
- package/dist/chunk-QKGTVKBU.cjs.map +1 -1
- package/dist/chunk-RHMJPKNV.cjs.map +1 -1
- package/dist/chunk-U6UFULNS.cjs +2 -0
- package/dist/chunk-U6UFULNS.cjs.map +1 -0
- package/dist/chunk-UBVVBVLS.js +2 -0
- package/dist/chunk-UBVVBVLS.js.map +1 -0
- package/dist/chunk-W5CLDRRE.cjs.map +1 -1
- package/dist/chunk-WKLCAC74.cjs +2 -0
- package/dist/chunk-WKLCAC74.cjs.map +1 -0
- package/dist/chunk-WYYVVM2C.js +2 -0
- package/dist/chunk-WYYVVM2C.js.map +1 -0
- package/dist/chunk-X3DGA5UC.cjs +2 -0
- package/dist/chunk-X3DGA5UC.cjs.map +1 -0
- package/dist/chunk-Y7TQTZY7.js +2 -0
- package/dist/chunk-Y7TQTZY7.js.map +1 -0
- package/dist/cli/index.cjs +21 -19
- package/dist/{config-types-bTt2lcw9.d.ts → config-types-DB6FaTiZ.d.ts} +3 -3
- package/dist/{config-types-Dbyt7t3D.d.cts → config-types-mZFlp2Bi.d.cts} +3 -3
- package/dist/core/bindings.cjs +1 -1
- package/dist/core/bindings.cjs.map +1 -1
- package/dist/core/bindings.d.cts +4 -4
- package/dist/core/bindings.d.ts +4 -4
- package/dist/core/bindings.js +1 -1
- package/dist/core/status.cjs.map +1 -1
- package/dist/core/status.d.cts +3 -3
- package/dist/core/status.d.ts +3 -3
- package/dist/core/store.cjs +1 -1
- package/dist/core/store.cjs.map +1 -1
- package/dist/core/store.d.cts +5 -5
- package/dist/core/store.d.ts +5 -5
- package/dist/core/store.js +1 -1
- package/dist/core/utils.cjs +1 -1
- package/dist/core/utils.cjs.map +1 -1
- package/dist/core/utils.js +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +4 -4
- package/dist/core.d.ts +4 -4
- package/dist/core.js +1 -1
- package/dist/devtools/bridge.cjs +1 -1
- package/dist/devtools/bridge.cjs.map +1 -1
- package/dist/devtools/bridge.js +1 -1
- package/dist/devtools/index.cjs +17 -17
- package/dist/devtools/index.cjs.map +1 -1
- package/dist/devtools/index.d.cts +2 -2
- package/dist/devtools/index.d.ts +2 -2
- package/dist/devtools/index.js +17 -17
- package/dist/devtools/index.js.map +1 -1
- package/dist/devtools/protocol.cjs.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +1 -1
- package/dist/mask.cjs +1 -1
- package/dist/mask.cjs.map +1 -1
- package/dist/mask.d.cts +1 -1
- package/dist/mask.d.ts +1 -1
- package/dist/mask.js +1 -1
- package/dist/{meta-types-BC1VLABk.d.cts → meta-types-1Xcht8hj.d.cts} +1 -1
- package/dist/{meta-types-BC1VLABk.d.ts → meta-types-1Xcht8hj.d.ts} +1 -1
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +6 -6
- package/dist/react/index.d.ts +6 -6
- package/dist/react/index.js +1 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react-native/index.cjs +1 -1
- package/dist/react-native/index.cjs.map +1 -1
- package/dist/react-native/index.d.cts +5 -5
- package/dist/react-native/index.d.ts +5 -5
- package/dist/react-native/index.js +1 -1
- package/dist/resolvers/index.cjs +1 -1
- package/dist/resolvers/index.cjs.map +1 -1
- package/dist/resolvers/index.d.cts +0 -8
- package/dist/resolvers/index.d.ts +0 -8
- package/dist/resolvers/index.js +1 -1
- package/dist/resolvers/joi.cjs +1 -1
- package/dist/resolvers/joi.cjs.map +1 -1
- package/dist/resolvers/joi.js +1 -1
- package/dist/resolvers/joi.js.map +1 -1
- package/dist/resolvers/types.cjs.map +1 -1
- package/dist/resolvers/yup.cjs +1 -1
- package/dist/resolvers/yup.cjs.map +1 -1
- package/dist/resolvers/yup.js +1 -1
- package/dist/resolvers/yup.js.map +1 -1
- package/dist/resolvers/zod.cjs +1 -1
- package/dist/resolvers/zod.cjs.map +1 -1
- package/dist/resolvers/zod.js +1 -1
- package/dist/resolvers/zod.js.map +1 -1
- package/dist/{runtime-types-D1SRZr-n.d.cts → runtime-types-BLCkMgcy.d.cts} +1 -1
- package/dist/{runtime-types-D1SRZr-n.d.ts → runtime-types-BLCkMgcy.d.ts} +1 -1
- package/dist/{store-api-types-i-zmM25p.d.ts → store-api-types-CgRVo2DA.d.ts} +4 -4
- package/dist/{store-api-types-BPD27biP.d.cts → store-api-types-D7i0KWbr.d.cts} +4 -4
- package/dist/{use-bit-persist-BGH2Bazx.d.ts → use-bit-persist-CFcuAzwp.d.ts} +5 -5
- package/dist/{use-bit-persist-DiwICsEm.d.cts → use-bit-persist-Dsr69hme.d.cts} +5 -5
- package/dist/utils.cjs +1 -1
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.js +1 -1
- package/dist/vue/index.cjs +1 -1
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.d.cts +5 -5
- package/dist/vue/index.d.ts +5 -5
- package/dist/vue/index.js +1 -1
- package/dist/vue/index.js.map +1 -1
- package/package.json +84 -11
- package/dist/chunk-23DHXQOC.js +0 -2
- package/dist/chunk-23DHXQOC.js.map +0 -1
- package/dist/chunk-27LJCW56.cjs +0 -2
- package/dist/chunk-27LJCW56.cjs.map +0 -1
- package/dist/chunk-32RH5MSM.js +0 -2
- package/dist/chunk-32RH5MSM.js.map +0 -1
- package/dist/chunk-33TGLA5D.cjs +0 -2
- package/dist/chunk-33TGLA5D.cjs.map +0 -1
- package/dist/chunk-3CPIJF3Z.cjs +0 -2
- package/dist/chunk-3CPIJF3Z.cjs.map +0 -1
- package/dist/chunk-3KI3GEU3.cjs +0 -2
- package/dist/chunk-3KI3GEU3.cjs.map +0 -1
- package/dist/chunk-3WNZPBME.js +0 -2
- package/dist/chunk-5ILGCBKG.cjs +0 -2
- package/dist/chunk-5ILGCBKG.cjs.map +0 -1
- package/dist/chunk-7IO2KLSJ.cjs +0 -2
- package/dist/chunk-7IO2KLSJ.cjs.map +0 -1
- package/dist/chunk-AJUX7LYB.js +0 -2
- package/dist/chunk-AJUX7LYB.js.map +0 -1
- package/dist/chunk-B45EMB4Q.js +0 -2
- package/dist/chunk-B45EMB4Q.js.map +0 -1
- package/dist/chunk-CIS3YZSK.cjs +0 -2
- package/dist/chunk-CIS3YZSK.cjs.map +0 -1
- package/dist/chunk-EPBSLPRL.cjs.map +0 -1
- package/dist/chunk-ICYXODTQ.js +0 -2
- package/dist/chunk-ICYXODTQ.js.map +0 -1
- package/dist/chunk-JUDBIEZK.js +0 -2
- package/dist/chunk-JUDBIEZK.js.map +0 -1
- package/dist/chunk-K2JSAJAF.cjs +0 -2
- package/dist/chunk-K2JSAJAF.cjs.map +0 -1
- package/dist/chunk-K2KCQEER.js +0 -2
- package/dist/chunk-K2KCQEER.js.map +0 -1
- package/dist/chunk-K65TKDQ2.cjs +0 -2
- package/dist/chunk-K65TKDQ2.cjs.map +0 -1
- package/dist/chunk-S5A65JVL.cjs +0 -2
- package/dist/chunk-S5A65JVL.cjs.map +0 -1
- package/dist/chunk-SFVGMVIE.js +0 -2
- package/dist/chunk-SFVGMVIE.js.map +0 -1
- package/dist/chunk-T7TOEIOH.js +0 -2
- package/dist/chunk-T7TOEIOH.js.map +0 -1
- package/dist/chunk-TLUCO2ZN.cjs +0 -2
- package/dist/chunk-TLUCO2ZN.cjs.map +0 -1
- package/dist/chunk-WEZ5Q6YO.js +0 -2
- package/dist/chunk-WEZ5Q6YO.js.map +0 -1
- package/dist/chunk-Y34N5TWV.js +0 -2
- package/dist/chunk-Y34N5TWV.js.map +0 -1
package/dist/devtools/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { B as BitBus } from '../bus-BFOBGmd9.js';
|
|
2
2
|
import { DevToolsStoreSnapshots } from './protocol.js';
|
|
3
3
|
export { DEVTOOLS_PROTOCOL_VERSION, DevToolsActionName, DevToolsActionPayload, DevToolsHelloMessage, DevToolsHelloPayload, DevToolsRemoteMessage, DevToolsStateUpdateMessage, DevToolsStoreSnapshot } from './protocol.js';
|
|
4
|
-
import {
|
|
5
|
-
import { D as DevToolsOptions } from '../runtime-types-
|
|
4
|
+
import { r as BitPlugin } from '../config-types-DB6FaTiZ.js';
|
|
5
|
+
import { D as DevToolsOptions } from '../runtime-types-BLCkMgcy.js';
|
|
6
6
|
import '../state-types-8bUndWfg.js';
|
|
7
7
|
import '../types-CUXh7PqD.js';
|
|
8
8
|
|
package/dist/devtools/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as
|
|
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`
|
|
2
2
|
.bit-devtools-container {
|
|
3
3
|
position: fixed;
|
|
4
4
|
bottom: 20px;
|
|
@@ -86,48 +86,48 @@ import{a as g,b as c,c as x}from"../chunk-Y34N5TWV.js";import{a as p,d as v}from
|
|
|
86
86
|
|
|
87
87
|
pre.bit-pre { background: #020617; padding: 10px; border-radius: 4px; font-size: 11px; overflow-x: auto; border: 1px solid #1e293b; margin: 0; color: #e2e8f0; }
|
|
88
88
|
pre.bit-error-box { background: rgba(239, 68, 68, 0.05); padding: 10px; border-radius: 4px; font-size: 11px; border: 1px dashed #ef4444; color: #fca5a5; margin: 0; overflow-x: auto; }
|
|
89
|
-
`}function
|
|
89
|
+
`}function m(t){return t.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}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
90
|
<div class="bit-devtools-panel">
|
|
91
91
|
<div class="bit-devtools-header">
|
|
92
92
|
<h2><span style="font-size: 20px;">\u{1F6E0}</span> Bit-Form DevTools</h2>
|
|
93
93
|
<span style="font-size: 11px; color: #64748b;">v1.0.0</span>
|
|
94
94
|
</div>
|
|
95
|
-
`;for(let[
|
|
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+=`
|
|
96
96
|
<div class="bit-store-block">
|
|
97
97
|
<div class="bit-store-header">
|
|
98
|
-
<h3 class="bit-store-title">${
|
|
98
|
+
<h3 class="bit-store-title">${m(o)}</h3>
|
|
99
99
|
<div class="bit-badge-group">
|
|
100
|
-
<span class="bit-badge ${
|
|
101
|
-
${
|
|
100
|
+
<span class="bit-badge ${r.isValid?"badge-success":"badge-error"}">
|
|
101
|
+
${r.isValid?"\u2713 Valid":"\u2715 Invalid"}
|
|
102
102
|
</span>
|
|
103
|
-
${
|
|
104
|
-
${
|
|
103
|
+
${r.isDirty?'<span class="bit-badge badge-warn">Dirty</span>':""}
|
|
104
|
+
${r.isSubmitting?'<span class="bit-badge badge-info">\u23F3 Submitting</span>':""}
|
|
105
105
|
</div>
|
|
106
106
|
</div>
|
|
107
107
|
|
|
108
|
-
<span class="bit-section-title">Time Travel (${
|
|
108
|
+
<span class="bit-section-title">Time Travel (${c}/${p})</span>
|
|
109
109
|
|
|
110
110
|
<div class="bit-controls">
|
|
111
|
-
<button class="bit-action-btn" data-action="undo" data-store="${
|
|
111
|
+
<button class="bit-action-btn" data-action="undo" data-store="${m(o)}" ${a.canUndo?"":"disabled"}>
|
|
112
112
|
<span>\u21BA</span> Undo
|
|
113
113
|
</button>
|
|
114
|
-
<button class="bit-action-btn" data-action="redo" data-store="${
|
|
114
|
+
<button class="bit-action-btn" data-action="redo" data-store="${m(o)}" ${a.canRedo?"":"disabled"}>
|
|
115
115
|
<span>\u21BB</span> Redo
|
|
116
116
|
</button>
|
|
117
|
-
<button class="bit-action-btn bit-btn-reset" data-action="reset" data-store="${
|
|
117
|
+
<button class="bit-action-btn bit-btn-reset" data-action="reset" data-store="${m(o)}">
|
|
118
118
|
<span>\u{1F5D1}</span> Reset
|
|
119
119
|
</button>
|
|
120
120
|
</div>
|
|
121
|
-
`,
|
|
121
|
+
`,n&&(i+=`
|
|
122
122
|
<span class="bit-section-title" style="color: #f87171;">\u26A0\uFE0F Validations Failing</span>
|
|
123
|
-
<pre class="bit-error-box">${
|
|
123
|
+
<pre class="bit-error-box">${M(r.errors)}</pre>
|
|
124
124
|
`),i+=`
|
|
125
125
|
<span class="bit-section-title">Values</span>
|
|
126
|
-
<pre class="bit-pre">${
|
|
126
|
+
<pre class="bit-pre">${M(r.values)}</pre>
|
|
127
127
|
</div>
|
|
128
|
-
`}i+="</div>"}let
|
|
128
|
+
`}i+="</div>"}let e=`
|
|
129
129
|
<button class="bit-devtools-trigger" style="transform: ${this.isOpen?"scale(0.9)":"scale(1)"};" title="Abrir DevTools">
|
|
130
130
|
${this.isOpen?"\u2716":"Bit"}
|
|
131
131
|
</button>
|
|
132
|
-
`;this.rootElement.innerHTML=i+
|
|
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};
|
|
133
133
|
//# 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, \"&\")\n .replace(/\"/g, \""\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\");\n}\n\nfunction safeJsonStringify(value: unknown): string {\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return \"[Unserializable]\";\n }\n}\n\nexport class BitFormDevToolsUI {\n private container: HTMLElement;\n private actions: DevToolsActions;\n private rootElement: HTMLDivElement;\n private currentStoresState: DevToolsStoreSnapshots = {};\n private isOpen = false;\n\n constructor(container: HTMLElement, actions: DevToolsActions) {\n this.container = container;\n this.actions = actions;\n\n if (!document.getElementById(\"bit-devtools-styles\")) {\n const style = document.createElement(\"style\");\n style.id = \"bit-devtools-styles\";\n style.textContent = getDevToolsCSS();\n document.head.appendChild(style);\n }\n\n this.rootElement = document.createElement(\"div\");\n this.rootElement.className = \"bit-devtools-container\";\n this.container.appendChild(this.rootElement);\n\n this.rootElement.addEventListener(\"click\", (e) => {\n const target = e.target as HTMLElement;\n\n // Evento do botão flutuante\n if (target.closest(\".bit-devtools-trigger\")) {\n this.isOpen = !this.isOpen;\n this.render();\n return;\n }\n\n // Eventos dos botões de ação\n const btn = target.closest(\".bit-action-btn\");\n if (btn && !btn.hasAttribute(\"disabled\")) {\n const action = btn.getAttribute(\"data-action\");\n const storeId = btn.getAttribute(\"data-store\");\n\n if (action && storeId) {\n if (action === \"undo\") this.actions.onUndo(storeId);\n if (action === \"redo\") this.actions.onRedo(storeId);\n if (action === \"reset\") this.actions.onReset(storeId);\n }\n }\n });\n }\n\n public updateState(storesState: DevToolsStoreSnapshots) {\n this.currentStoresState = storesState;\n this.render();\n }\n\n private render() {\n const storeEntries = Object.entries(this.currentStoresState);\n if (storeEntries.length === 0) {\n this.rootElement.innerHTML = \"\";\n return;\n }\n\n let panelHtml = \"\";\n\n if (this.isOpen) {\n panelHtml = `\n <div class=\"bit-devtools-panel\">\n <div class=\"bit-devtools-header\">\n <h2><span style=\"font-size: 20px;\">🛠</span> Bit-Form DevTools</h2>\n <span style=\"font-size: 11px; color: #64748b;\">v1.0.0</span>\n </div>\n `;\n\n for (const [id, state] of storeEntries) {\n const hasErrors = Object.keys(state.errors || {}).length > 0;\n\n // Lemos os metadados do histórico que o adaptador injetou\n const meta = state._meta || {\n totalSteps: 0,\n currentIndex: -1,\n canUndo: false,\n canRedo: false,\n };\n const currentStep = meta.currentIndex + 1;\n const totalSteps = meta.totalSteps;\n\n panelHtml += `\n <div class=\"bit-store-block\">\n <div class=\"bit-store-header\">\n <h3 class=\"bit-store-title\">${escapeHtml(id)}</h3>\n <div class=\"bit-badge-group\">\n <span class=\"bit-badge ${state.isValid ? \"badge-success\" : \"badge-error\"}\">\n ${state.isValid ? \"✓ Valid\" : \"✕ Invalid\"}\n </span>\n ${state.isDirty ? `<span class=\"bit-badge badge-warn\">Dirty</span>` : \"\"}\n ${state.isSubmitting ? `<span class=\"bit-badge badge-info\">⏳ Submitting</span>` : \"\"}\n </div>\n </div>\n\n <span class=\"bit-section-title\">Time Travel (${currentStep}/${totalSteps})</span>\n \n <div class=\"bit-controls\">\n <button class=\"bit-action-btn\" data-action=\"undo\" data-store=\"${escapeHtml(id)}\" ${meta.canUndo ? \"\" : \"disabled\"}>\n <span>↺</span> Undo\n </button>\n <button class=\"bit-action-btn\" data-action=\"redo\" data-store=\"${escapeHtml(id)}\" ${meta.canRedo ? \"\" : \"disabled\"}>\n <span>↻</span> Redo\n </button>\n <button class=\"bit-action-btn bit-btn-reset\" data-action=\"reset\" data-store=\"${escapeHtml(id)}\">\n <span>🗑</span> Reset\n </button>\n </div>\n `;\n\n if (hasErrors) {\n panelHtml += `\n <span class=\"bit-section-title\" style=\"color: #f87171;\">⚠️ Validations Failing</span>\n <pre class=\"bit-error-box\">${safeJsonStringify(state.errors)}</pre>\n `;\n }\n\n panelHtml += `\n <span class=\"bit-section-title\">Values</span>\n <pre class=\"bit-pre\">${safeJsonStringify(state.values)}</pre>\n </div>\n `;\n }\n\n panelHtml += `</div>`;\n }\n\n // Botão Flutuante (sempre renderizado)\n const triggerHtml = `\n <button class=\"bit-devtools-trigger\" style=\"transform: ${this.isOpen ? \"scale(0.9)\" : \"scale(1)\"};\" title=\"Abrir DevTools\">\n ${this.isOpen ? \"✖\" : \"Bit\"}\n </button>\n `;\n\n this.rootElement.innerHTML = panelHtml + triggerHtml;\n }\n}\n","import { bitBus } from \"../../core\";\nimport type { BitBus } from \"../../core\";\nimport { BitFormDevToolsUI } from \"../ui\";\nimport { createDevToolsSnapshotMap } from \"../store-snapshot\";\nimport { getDevToolsActionableStore } from \"../store-port\";\n\nexport function setupLocalDevTools(\n container: HTMLElement,\n bus: BitBus = bitBus,\n) {\n const ui = new BitFormDevToolsUI(container, {\n onUndo: (id) => getDevToolsActionableStore(bus.stores, id)?.undo(),\n onRedo: (id) => getDevToolsActionableStore(bus.stores, id)?.redo(),\n onReset: (id) => getDevToolsActionableStore(bus.stores, id)?.reset(),\n });\n\n const getFullSnapshot = () => createDevToolsSnapshotMap(bus.stores);\n\n ui.updateState(getFullSnapshot());\n\n const unsubscribe = bus.subscribe(() => {\n ui.updateState(getFullSnapshot());\n });\n\n return {\n ui,\n destroy: () => {\n unsubscribe();\n container.innerHTML = \"\";\n },\n };\n}\n","import { BitFormDevToolsUI } from \"../ui\";\nimport type { BitBus } from \"../../core\";\nimport type {\n DevToolsHelloMessage,\n DevToolsActionMessage,\n DevToolsActionName,\n DevToolsRemoteMessage,\n} from \"../types\";\nimport {\n DEVTOOLS_PROTOCOL_VERSION,\n isDevToolsStateUpdateMessage,\n} from \"../protocol\";\n\nexport function setupRemoteDevTools(\n container: HTMLElement,\n url: string = \"ws://localhost:3000\",\n _bus?: BitBus,\n) {\n const socket = new WebSocket(url);\n\n const sendMessage = (message: DevToolsRemoteMessage) => {\n if (socket.readyState === WebSocket.OPEN) {\n socket.send(JSON.stringify(message));\n } else {\n console.warn(\n \"[bit-form] Tentativa de envio falhou. WebSocket não está aberto.\",\n );\n }\n };\n\n const sendAction = (storeId: string, action: DevToolsActionName) => {\n const message: DevToolsActionMessage = {\n type: \"ACTION\",\n protocolVersion: DEVTOOLS_PROTOCOL_VERSION,\n payload: { storeId, action },\n };\n sendMessage(message);\n };\n\n const ui = new BitFormDevToolsUI(container, {\n onUndo: (id) => sendAction(id, \"undo\"),\n onRedo: (id) => sendAction(id, \"redo\"),\n onReset: (id) => sendAction(id, \"reset\"),\n });\n\n socket.addEventListener(\"open\", () => {\n const helloMessage: DevToolsHelloMessage = {\n type: \"HELLO\",\n protocolVersion: DEVTOOLS_PROTOCOL_VERSION,\n payload: { role: \"client\", protocolVersion: DEVTOOLS_PROTOCOL_VERSION },\n };\n\n sendMessage(helloMessage);\n console.log(`[bit-form] Conectado ao DevTools remoto em ${url}`);\n });\n\n socket.addEventListener(\"message\", (msg: MessageEvent) => {\n try {\n const data = JSON.parse(msg.data) as DevToolsRemoteMessage;\n if (isDevToolsStateUpdateMessage(data)) {\n ui.updateState(data.payload);\n }\n } catch (e) {\n console.error(\"[bit-form] Erro ao processar mensagem do WebSocket:\", e);\n }\n });\n\n socket.addEventListener(\"error\", (err) => {\n console.error(\"[bit-form] Erro na conexão do DevTools remoto:\", err);\n });\n\n return {\n ui,\n destroy: () => {\n if (\n socket.readyState === WebSocket.OPEN ||\n socket.readyState === WebSocket.CONNECTING\n ) {\n socket.close();\n }\n container.innerHTML = \"\";\n },\n };\n}\n","import { setupLocalDevTools } from \"./adapters/local\";\nimport { setupRemoteDevTools } from \"./adapters/remote\";\nimport type { BitDevToolsOptions } from \"./types\";\nimport type { BitDevToolsAdapter } from \"./adapters/types\";\n\nexport type { BitDevToolsOptions };\n\nexport function initDevTools(options: BitDevToolsOptions = {}) {\n const { mode = \"local\", url, bus } = options;\n let containerEl: HTMLElement;\n\n let isAutoCreated = false;\n\n if (typeof options.container === \"string\") {\n const el = document.querySelector<HTMLElement>(options.container);\n if (!el)\n throw new Error(\n `[bit-form] Container '${options.container}' não encontrado na página.`,\n );\n containerEl = el;\n } else if (options.container instanceof HTMLElement) {\n containerEl = options.container;\n } else {\n containerEl = document.createElement(\"div\");\n containerEl.id = \"bit-form-devtools-root\";\n containerEl.style.position = \"fixed\";\n containerEl.style.bottom = \"20px\";\n containerEl.style.right = \"20px\";\n containerEl.style.zIndex = \"9999\";\n containerEl.style.maxHeight = \"80vh\";\n containerEl.style.overflowY = \"auto\";\n containerEl.style.boxShadow = \"0 10px 25px rgba(0,0,0,0.1)\";\n document.body.appendChild(containerEl);\n isAutoCreated = true;\n }\n\n let adapterInstance: BitDevToolsAdapter;\n\n if (mode === \"local\") {\n console.log(\"[bit-form] DevTools iniciado em modo Local.\");\n adapterInstance = setupLocalDevTools(containerEl, bus);\n } else if (mode === \"remote\") {\n console.log(\"[bit-form] DevTools iniciado em modo Remote.\");\n adapterInstance = setupRemoteDevTools(containerEl, url, bus);\n } else {\n throw new Error(`[bit-form] Modo DevTools inválido: ${mode}`);\n }\n\n return {\n ...adapterInstance,\n destroy: () => {\n if (adapterInstance && typeof adapterInstance.destroy === \"function\") {\n adapterInstance.destroy();\n }\n\n if (isAutoCreated && containerEl.parentNode) {\n containerEl.parentNode.removeChild(containerEl);\n } else {\n containerEl.innerHTML = \"\";\n }\n },\n };\n}\n","import type { BitPlugin, DevToolsOptions } from \"../core\";\nimport { setupRemoteBridge } from \"./bridge\";\nimport { initDevTools } from \"./init-dev-tools\";\n\nfunction resolveDevToolsOptions(\n devTools: boolean | DevToolsOptions | undefined,\n): Required<Pick<DevToolsOptions, \"enabled\" | \"mode\">> &\n Pick<DevToolsOptions, \"url\"> {\n if (typeof devTools === \"boolean\") {\n return { enabled: devTools, mode: \"local\" };\n }\n\n return {\n enabled: !!devTools,\n mode: devTools?.mode ?? \"local\",\n url: devTools?.url,\n };\n}\n\nfunction isProductionEnv(): boolean {\n if (\n typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\" &&\n process.env.NODE_ENV === \"production\"\n ) {\n return true;\n }\n\n if (\n typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\" &&\n process.env.VITEST === \"true\"\n ) {\n return false;\n }\n\n return false;\n}\n\nexport function createDevToolsPlugin<T extends object = any>(\n override?: boolean | DevToolsOptions,\n): BitPlugin<T> {\n return {\n name: \"bit-devtools\",\n setup: (context) => {\n const options = resolveDevToolsOptions(\n override ?? context.getConfig().devTools,\n );\n\n if (!options.enabled) {\n return;\n }\n\n if (isProductionEnv() && override !== true) {\n return;\n }\n\n let cleanup: (() => void) | null = null;\n const bus = context.getConfig().bus;\n\n try {\n if (options.mode === \"remote\") {\n cleanup = setupRemoteBridge(\n options.url || \"ws://localhost:3000\",\n bus,\n );\n } else {\n const instance = initDevTools({ bus });\n cleanup =\n instance && typeof instance.destroy === \"function\"\n ? instance.destroy\n : null;\n }\n } catch {\n // fail-open: devtools não deve impactar runtime principal\n }\n\n return () => {\n if (cleanup) {\n cleanup();\n cleanup = null;\n }\n };\n },\n };\n}\n"],"mappings":"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","names":["getDevToolsCSS","escapeHtml","str","safeJsonStringify","value","BitFormDevToolsUI","container","actions","style","getDevToolsCSS","e","target","btn","action","storeId","storesState","storeEntries","panelHtml","id","state","hasErrors","meta","currentStep","totalSteps","triggerHtml","setupLocalDevTools","container","bus","bitBus","ui","BitFormDevToolsUI","id","getDevToolsActionableStore","getFullSnapshot","createDevToolsSnapshotMap","unsubscribe","setupRemoteDevTools","container","url","_bus","socket","sendMessage","message","sendAction","storeId","action","ui","BitFormDevToolsUI","id","msg","data","isDevToolsStateUpdateMessage","e","err","initDevTools","options","mode","url","bus","containerEl","isAutoCreated","el","adapterInstance","setupLocalDevTools","setupRemoteDevTools","resolveDevToolsOptions","devTools","isProductionEnv","createDevToolsPlugin","override","context","options","cleanup","bus","setupRemoteBridge","instance","initDevTools"]}
|
|
1
|
+
{"version":3,"sources":["../../src/devtools/ui/styles.ts","../../src/devtools/ui/index.ts","../../src/devtools/adapters/local.ts","../../src/devtools/adapters/remote.ts","../../src/devtools/init-dev-tools.ts","../../src/devtools/create-plugin.ts"],"sourcesContent":["export function getDevToolsCSS(): string {\n return `\n .bit-devtools-container {\n position: fixed;\n bottom: 20px;\n right: 20px;\n z-index: 9999;\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n }\n\n .bit-devtools-trigger {\n background: #10b981;\n color: #fff;\n border: none;\n border-radius: 50%;\n width: 48px;\n height: 48px;\n cursor: pointer;\n box-shadow: 0 4px 12px rgba(16, 185, 129, 0.4);\n font-weight: bold;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.2s;\n font-size: 16px;\n margin-top: 16px;\n }\n .bit-devtools-trigger:hover { transform: scale(1.05); }\n\n .bit-devtools-panel {\n width: 450px;\n max-height: 80vh;\n background: #0f172a;\n color: #f8fafc;\n border-radius: 8px;\n padding: 16px;\n overflow-y: auto;\n box-shadow: 0 20px 25px -5px rgba(0,0,0,0.5), 0 8px 10px -6px rgba(0,0,0,0.5);\n border: 1px solid #334155;\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n .bit-devtools-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-bottom: 12px;\n border-bottom: 1px solid #1e293b;\n }\n .bit-devtools-header h2 { margin: 0; font-size: 16px; display: flex; align-items: center; gap: 8px; }\n\n .bit-store-block {\n background: #1e293b;\n border-radius: 6px;\n padding: 12px;\n border: 1px solid #334155;\n }\n\n .bit-store-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n }\n .bit-store-title { margin: 0; color: #38bdf8; font-size: 14px; font-weight: bold; }\n\n .bit-badge-group { display: flex; gap: 6px; flex-wrap: wrap; }\n .bit-badge { font-size: 10px; padding: 2px 6px; border-radius: 4px; text-transform: uppercase; font-weight: bold; }\n .badge-success { background: rgba(16, 185, 129, 0.2); color: #34d399; border: 1px solid rgba(16, 185, 129, 0.2); }\n .badge-error { background: rgba(239, 68, 68, 0.2); color: #f87171; border: 1px solid rgba(239, 68, 68, 0.2); }\n .badge-warn { background: rgba(245, 158, 11, 0.2); color: #fbbf24; border: 1px solid rgba(245, 158, 11, 0.2); }\n .badge-info { background: rgba(56, 189, 248, 0.2); color: #7dd3fc; border: 1px solid rgba(56, 189, 248, 0.2); }\n\n .bit-section-title { font-size: 11px; color: #94a3b8; text-transform: uppercase; letter-spacing: 1px; margin: 12px 0 4px 0; display: block; }\n\n .bit-controls { display: flex; gap: 6px; margin-bottom: 12px; background: #0f172a; padding: 8px; border-radius: 6px; }\n .bit-action-btn { flex: 1; background: #334155; color: #e2e8f0; border: 1px solid #475569; padding: 6px 0; border-radius: 4px; cursor: pointer; font-size: 11px; display: flex; align-items: center; justify-content: center; gap: 4px; transition: all 0.2s; }\n .bit-action-btn:hover:not(:disabled) { background: #475569; }\n .bit-action-btn:disabled { opacity: 0.5; cursor: not-allowed; }\n .bit-btn-reset { color: #fca5a5; border-color: rgba(239,68,68,0.3); }\n .bit-btn-reset:hover { background: rgba(239,68,68,0.1) !important; }\n\n pre.bit-pre { background: #020617; padding: 10px; border-radius: 4px; font-size: 11px; overflow-x: auto; border: 1px solid #1e293b; margin: 0; color: #e2e8f0; }\n pre.bit-error-box { background: rgba(239, 68, 68, 0.05); padding: 10px; border-radius: 4px; font-size: 11px; border: 1px dashed #ef4444; color: #fca5a5; margin: 0; overflow-x: auto; }\n `;\n}\n","import { getDevToolsCSS } from \"./styles\";\nimport type { DevToolsActions } from \"../types\";\nimport type { DevToolsStoreSnapshots } from \"../protocol\";\n\nexport type { DevToolsActions };\n\nfunction escapeHtml(str: string): string {\n return str\n .replace(/&/g, \"&\")\n .replace(/\"/g, \""\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\");\n}\n\nfunction safeJsonStringify(value: unknown): string {\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return \"[Unserializable]\";\n }\n}\n\nexport class BitFormDevToolsUI {\n private container: HTMLElement;\n private actions: DevToolsActions;\n private rootElement: HTMLDivElement;\n private currentStoresState: DevToolsStoreSnapshots = {};\n private isOpen = false;\n\n constructor(container: HTMLElement, actions: DevToolsActions) {\n this.container = container;\n this.actions = actions;\n\n if (!document.getElementById(\"bit-devtools-styles\")) {\n const style = document.createElement(\"style\");\n style.id = \"bit-devtools-styles\";\n style.textContent = getDevToolsCSS();\n document.head.appendChild(style);\n }\n\n this.rootElement = document.createElement(\"div\");\n this.rootElement.className = \"bit-devtools-container\";\n this.container.appendChild(this.rootElement);\n\n this.rootElement.addEventListener(\"click\", (e) => {\n const target = e.target as HTMLElement;\n\n // Evento do botão flutuante\n if (target.closest(\".bit-devtools-trigger\")) {\n this.isOpen = !this.isOpen;\n this.render();\n return;\n }\n\n // Eventos dos botões de ação\n const btn = target.closest(\".bit-action-btn\");\n if (btn && !btn.hasAttribute(\"disabled\")) {\n const action = btn.getAttribute(\"data-action\");\n const storeId = btn.getAttribute(\"data-store\");\n\n if (action && storeId) {\n if (action === \"undo\") this.actions.onUndo(storeId);\n if (action === \"redo\") this.actions.onRedo(storeId);\n if (action === \"reset\") this.actions.onReset(storeId);\n }\n }\n });\n }\n\n public updateState(storesState: DevToolsStoreSnapshots) {\n this.currentStoresState = storesState;\n this.render();\n }\n\n private render() {\n const storeEntries = Object.entries(this.currentStoresState);\n if (storeEntries.length === 0) {\n this.rootElement.innerHTML = \"\";\n return;\n }\n\n let panelHtml = \"\";\n\n if (this.isOpen) {\n panelHtml = `\n <div class=\"bit-devtools-panel\">\n <div class=\"bit-devtools-header\">\n <h2><span style=\"font-size: 20px;\">🛠</span> Bit-Form DevTools</h2>\n <span style=\"font-size: 11px; color: #64748b;\">v1.0.0</span>\n </div>\n `;\n\n for (const [id, state] of storeEntries) {\n const hasErrors = Object.keys(state.errors || {}).length > 0;\n\n // Lemos os metadados do histórico que o adaptador injetou\n const meta = state._meta || {\n totalSteps: 0,\n currentIndex: -1,\n canUndo: false,\n canRedo: false,\n };\n const currentStep = meta.currentIndex + 1;\n const totalSteps = meta.totalSteps;\n\n panelHtml += `\n <div class=\"bit-store-block\">\n <div class=\"bit-store-header\">\n <h3 class=\"bit-store-title\">${escapeHtml(id)}</h3>\n <div class=\"bit-badge-group\">\n <span class=\"bit-badge ${state.isValid ? \"badge-success\" : \"badge-error\"}\">\n ${state.isValid ? \"✓ Valid\" : \"✕ Invalid\"}\n </span>\n ${state.isDirty ? `<span class=\"bit-badge badge-warn\">Dirty</span>` : \"\"}\n ${state.isSubmitting ? `<span class=\"bit-badge badge-info\">⏳ Submitting</span>` : \"\"}\n </div>\n </div>\n\n <span class=\"bit-section-title\">Time Travel (${currentStep}/${totalSteps})</span>\n \n <div class=\"bit-controls\">\n <button class=\"bit-action-btn\" data-action=\"undo\" data-store=\"${escapeHtml(id)}\" ${meta.canUndo ? \"\" : \"disabled\"}>\n <span>↺</span> Undo\n </button>\n <button class=\"bit-action-btn\" data-action=\"redo\" data-store=\"${escapeHtml(id)}\" ${meta.canRedo ? \"\" : \"disabled\"}>\n <span>↻</span> Redo\n </button>\n <button class=\"bit-action-btn bit-btn-reset\" data-action=\"reset\" data-store=\"${escapeHtml(id)}\">\n <span>🗑</span> Reset\n </button>\n </div>\n `;\n\n if (hasErrors) {\n panelHtml += `\n <span class=\"bit-section-title\" style=\"color: #f87171;\">⚠️ Validations Failing</span>\n <pre class=\"bit-error-box\">${safeJsonStringify(state.errors)}</pre>\n `;\n }\n\n panelHtml += `\n <span class=\"bit-section-title\">Values</span>\n <pre class=\"bit-pre\">${safeJsonStringify(state.values)}</pre>\n </div>\n `;\n }\n\n panelHtml += `</div>`;\n }\n\n // Botão Flutuante (sempre renderizado)\n const triggerHtml = `\n <button class=\"bit-devtools-trigger\" style=\"transform: ${this.isOpen ? \"scale(0.9)\" : \"scale(1)\"};\" title=\"Abrir DevTools\">\n ${this.isOpen ? \"✖\" : \"Bit\"}\n </button>\n `;\n\n this.rootElement.innerHTML = panelHtml + triggerHtml;\n }\n}\n","import { bitBus } from \"../../core\";\nimport type { BitBus } from \"../../core\";\nimport { BitFormDevToolsUI } from \"../ui\";\nimport { createDevToolsSnapshotMap } from \"../store-snapshot\";\nimport { getDevToolsActionableStore } from \"../store-port\";\n\nexport function setupLocalDevTools(\n container: HTMLElement,\n bus: BitBus = bitBus,\n) {\n const ui = new BitFormDevToolsUI(container, {\n onUndo: (id) => getDevToolsActionableStore(bus.stores, id)?.undo(),\n onRedo: (id) => getDevToolsActionableStore(bus.stores, id)?.redo(),\n onReset: (id) => getDevToolsActionableStore(bus.stores, id)?.reset(),\n });\n\n const getFullSnapshot = () => createDevToolsSnapshotMap(bus.stores);\n\n ui.updateState(getFullSnapshot());\n\n let rafId: number | undefined;\n const unsubscribe = bus.subscribe(() => {\n if (rafId !== undefined) return;\n rafId = requestAnimationFrame(() => {\n rafId = undefined;\n ui.updateState(getFullSnapshot());\n });\n });\n\n return {\n ui,\n destroy: () => {\n if (rafId !== undefined) cancelAnimationFrame(rafId);\n unsubscribe();\n container.innerHTML = \"\";\n },\n };\n}\n","import { BitFormDevToolsUI } from \"../ui\";\nimport type { BitBus } from \"../../core\";\nimport type {\n DevToolsHelloMessage,\n DevToolsActionMessage,\n DevToolsActionName,\n DevToolsRemoteMessage,\n} from \"../types\";\nimport {\n DEVTOOLS_PROTOCOL_VERSION,\n isDevToolsStateUpdateMessage,\n} from \"../protocol\";\n\nexport function setupRemoteDevTools(\n container: HTMLElement,\n url: string = \"ws://localhost:3000\",\n _bus?: BitBus,\n) {\n let socket: WebSocket | 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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/
|
|
1
|
+
{"version":3,"sources":["/builds/kenji.ccp-group/bit-form/dist/devtools/protocol.cjs"],"names":[],"mappings":"AAAA,kIAA8C,6UAA0L","file":"/builds/kenji.ccp-group/bit-form/dist/devtools/protocol.cjs"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-W5CLDRRE.cjs');var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-W5CLDRRE.cjs');var _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;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/
|
|
1
|
+
{"version":3,"sources":["/builds/kenji.ccp-group/bit-form/dist/index.cjs"],"names":[],"mappings":"AAAA,yGAA4B,wDAAkD,gCAA6B,gCAA6B,gCAA6B,gCAA6B,gCAA6B,gCAA6B,gCAA6B,gCAA6B,+JAA0F","file":"/builds/kenji.ccp-group/bit-form/dist/index.cjs"}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { e as BitConfig } from './config-types-
|
|
2
|
-
import {
|
|
1
|
+
import { e as BitConfig } from './config-types-mZFlp2Bi.cjs';
|
|
2
|
+
import { f as BitStoreApi, b as BitFrameworkStoreApi, h as BitStoreHooksApi } from './store-api-types-D7i0KWbr.cjs';
|
|
3
|
+
export { a as BitArrayPath, b as BitErrors, d as BitPath, e as BitPathValue } from './state-types-8bUndWfg.cjs';
|
|
3
4
|
import './bus-DzTqgkZ4.cjs';
|
|
4
5
|
import './types-CUXh7PqD.cjs';
|
|
5
|
-
import './
|
|
6
|
-
import './
|
|
7
|
-
import './meta-types-BC1VLABk.cjs';
|
|
6
|
+
import './runtime-types-BLCkMgcy.cjs';
|
|
7
|
+
import './meta-types-1Xcht8hj.cjs';
|
|
8
8
|
|
|
9
9
|
declare function resolveBitStoreForHooks<T extends object>(store: unknown): BitStoreHooksApi<T>;
|
|
10
10
|
declare function createFrameworkStoreAdapter<T extends object>(store: unknown): BitFrameworkStoreApi<T>;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { e as BitConfig } from './config-types-
|
|
2
|
-
import {
|
|
1
|
+
import { e as BitConfig } from './config-types-DB6FaTiZ.js';
|
|
2
|
+
import { f as BitStoreApi, b as BitFrameworkStoreApi, h as BitStoreHooksApi } from './store-api-types-CgRVo2DA.js';
|
|
3
|
+
export { a as BitArrayPath, b as BitErrors, d as BitPath, e as BitPathValue } from './state-types-8bUndWfg.js';
|
|
3
4
|
import './bus-BFOBGmd9.js';
|
|
4
5
|
import './types-CUXh7PqD.js';
|
|
5
|
-
import './
|
|
6
|
-
import './
|
|
7
|
-
import './meta-types-BC1VLABk.js';
|
|
6
|
+
import './runtime-types-BLCkMgcy.js';
|
|
7
|
+
import './meta-types-1Xcht8hj.js';
|
|
8
8
|
|
|
9
9
|
declare function resolveBitStoreForHooks<T extends object>(store: unknown): BitStoreHooksApi<T>;
|
|
10
10
|
declare function createFrameworkStoreAdapter<T extends object>(store: unknown): BitFrameworkStoreApi<T>;
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"./chunk-5NA2TFPG.js";import{c as r,d as
|
|
1
|
+
import"./chunk-5NA2TFPG.js";import{c as r,d as t,e}from"./chunk-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};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/mask.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkX3DGA5UCcjs = require('./chunk-X3DGA5UC.cjs');require('./chunk-725CMNAV.cjs');exports.bitMasks = _chunkX3DGA5UCcjs.L; exports.createCreditCardMask = _chunkX3DGA5UCcjs.e; exports.createCurrencyMask = _chunkX3DGA5UCcjs.d; exports.createDateMask = _chunkX3DGA5UCcjs.f; exports.createPatternMask = _chunkX3DGA5UCcjs.c; exports.maskBRL = _chunkX3DGA5UCcjs.g; exports.maskCEP = _chunkX3DGA5UCcjs.s; exports.maskCNH = _chunkX3DGA5UCcjs.v; exports.maskCNPJ = _chunkX3DGA5UCcjs.p; exports.maskCPF = _chunkX3DGA5UCcjs.o; exports.maskCPFCNPJ = _chunkX3DGA5UCcjs.x; exports.maskCVV = _chunkX3DGA5UCcjs.E; exports.maskColorHex = _chunkX3DGA5UCcjs.H; exports.maskCreditCard = _chunkX3DGA5UCcjs.D; exports.maskDate = _chunkX3DGA5UCcjs.t; exports.maskDateISO = _chunkX3DGA5UCcjs.F; exports.maskDateUS = _chunkX3DGA5UCcjs.B; exports.maskDecimal = _chunkX3DGA5UCcjs.m; exports.maskEUR = _chunkX3DGA5UCcjs.i; exports.maskGBP = _chunkX3DGA5UCcjs.j; exports.maskIBAN = _chunkX3DGA5UCcjs.K; exports.maskIPv4 = _chunkX3DGA5UCcjs.I; exports.maskIPv6 = _chunkX3DGA5UCcjs.J; exports.maskInteger = _chunkX3DGA5UCcjs.n; exports.maskJPY = _chunkX3DGA5UCcjs.k; exports.maskLandline = _chunkX3DGA5UCcjs.r; exports.maskMacAddress = _chunkX3DGA5UCcjs.G; exports.maskPercent = _chunkX3DGA5UCcjs.l; exports.maskPhone = _chunkX3DGA5UCcjs.q; exports.maskPlate = _chunkX3DGA5UCcjs.y; exports.maskRG = _chunkX3DGA5UCcjs.w; exports.maskSSN = _chunkX3DGA5UCcjs.C; exports.maskTime = _chunkX3DGA5UCcjs.u; exports.maskUSD = _chunkX3DGA5UCcjs.h; exports.maskUSPhone = _chunkX3DGA5UCcjs.z; exports.maskZipCode = _chunkX3DGA5UCcjs.A; exports.unmask = _chunkX3DGA5UCcjs.a; exports.unmaskCurrency = _chunkX3DGA5UCcjs.b;
|
|
2
2
|
//# sourceMappingURL=mask.cjs.map
|
package/dist/mask.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/
|
|
1
|
+
{"version":3,"sources":["/builds/kenji.ccp-group/bit-form/dist/mask.cjs"],"names":[],"mappings":"AAAA,iIAAiS,gCAA6B,yjDAAsmB","file":"/builds/kenji.ccp-group/bit-form/dist/mask.cjs"}
|
package/dist/mask.d.cts
CHANGED
|
@@ -41,7 +41,7 @@ declare const maskDate: BitMask;
|
|
|
41
41
|
declare const maskTime: BitMask;
|
|
42
42
|
/** CNH (Carteira de Motorista - 11 dígitos) */
|
|
43
43
|
declare const maskCNH: BitMask;
|
|
44
|
-
/** RG (00.000.000-X) - Suporta o 'X' como dígito verificador */
|
|
44
|
+
/** RG (00.000.000 ou 00.000.000-X) - Suporta o 'X' como dígito verificador e RG sem dígito */
|
|
45
45
|
declare const maskRG: BitMask;
|
|
46
46
|
/**
|
|
47
47
|
* CPF + CNPJ combinado — alterna automaticamente pelo número de dígitos:
|
package/dist/mask.d.ts
CHANGED
|
@@ -41,7 +41,7 @@ declare const maskDate: BitMask;
|
|
|
41
41
|
declare const maskTime: BitMask;
|
|
42
42
|
/** CNH (Carteira de Motorista - 11 dígitos) */
|
|
43
43
|
declare const maskCNH: BitMask;
|
|
44
|
-
/** RG (00.000.000-X) - Suporta o 'X' como dígito verificador */
|
|
44
|
+
/** RG (00.000.000 ou 00.000.000-X) - Suporta o 'X' como dígito verificador e RG sem dígito */
|
|
45
45
|
declare const maskRG: BitMask;
|
|
46
46
|
/**
|
|
47
47
|
* CPF + CNPJ combinado — alterna automaticamente pelo número de dígitos:
|
package/dist/mask.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{A as g,B as J,C as R,D as b,E as h,F as v,G as A,H as E,I as F,J as G,K as H,L as a,a as s,b as e,c as m,d as k,e as r,f as t,g as o,h as C,i as n,j as i,k as P,l as p,m as M,n as c,o as f,p as x,q as d,r as B,s as D,t as N,u,v as I,w as S,x as l,y,z as U}from"./chunk-
|
|
1
|
+
import{A as g,B as J,C as R,D as b,E as h,F as v,G as A,H as E,I as F,J as G,K as H,L as a,a as s,b as e,c as m,d as k,e as r,f as t,g as o,h as C,i as n,j as i,k as P,l as p,m as M,n as c,o as f,p as x,q as d,r as B,s as D,t as N,u,v as I,w as S,x as l,y,z as U}from"./chunk-MBEQLBJB.js";import"./chunk-DGEGYNQL.js";export{a as bitMasks,r as createCreditCardMask,k as createCurrencyMask,t as createDateMask,m as createPatternMask,o as maskBRL,D as maskCEP,I as maskCNH,x as maskCNPJ,f as maskCPF,l as maskCPFCNPJ,h as maskCVV,E as maskColorHex,b as maskCreditCard,N as maskDate,v as maskDateISO,J as maskDateUS,M as maskDecimal,n as maskEUR,i as maskGBP,H as maskIBAN,F as maskIPv4,G as maskIPv6,c as maskInteger,P as maskJPY,B as maskLandline,A as maskMacAddress,p as maskPercent,d as maskPhone,y as maskPlate,S as maskRG,R as maskSSN,u as maskTime,C as maskUSD,U as maskUSPhone,g as maskZipCode,s as unmask,e as unmaskCurrency};
|
|
2
2
|
//# sourceMappingURL=mask.js.map
|
|
@@ -25,4 +25,4 @@ interface BitFormMeta {
|
|
|
25
25
|
isSubmitting: boolean;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
export type { BitFormMeta as B, BitHistoryMetadata as a,
|
|
28
|
+
export type { BitFormMeta as B, BitHistoryMetadata as a, BitServerErrorOptions as b, BitValidationOptions as c };
|
|
@@ -25,4 +25,4 @@ interface BitFormMeta {
|
|
|
25
25
|
isSubmitting: boolean;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
export type { BitFormMeta as B, BitHistoryMetadata as a,
|
|
28
|
+
export type { BitFormMeta as B, BitHistoryMetadata as a, BitServerErrorOptions as b, BitValidationOptions as c };
|
package/dist/react/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _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;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/react/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/react/index.cjs","../../src/react/use-bit-field.ts","../../src/react/use-bit-history.ts","../../src/react/use-bit-upload.ts"],"names":["useBitField","path","fieldState","setBlur","store","useBitFieldBase","fieldController","useMemo","createFrameworkMaskedFieldBinding","displayValue","setValue","useCallback","val","value","metaState","deriveFieldMeta","error","touched","invalid","isDirty","isValidating","isHidden","isRequired","hasError","onChange","e","isBitFieldInputEventObject","onBlur","props","meta","useBitHistory","useBitStore","lastMeta","useRef","getSnapshot","nextMeta","readHistoryMetaSnapshot","subscribe","cb","useSyncExternalStore","undo","redo","useBitUpload","fieldPath","uploadFn","deleteFile","field","fieldIsValidating","uploadKeyRef","isUploading","setIsUploading","useState","callbacksRef","msg","key","useEffect","stableCallbacks","upload","createUploadHandler","remove","createRemoveHandler"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/react/index.cjs","sourcesContent":[null,"import { useCallback, useMemo } from \"react\";\nimport {\n BitPath,\n BitPathValue,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n isBitFieldInputEventObject,\n} from \"../core\";\nimport type { BitFieldInputEvent, UseBitFieldResult } from \"./types\";\nimport { useBitFieldBase } from \"./use-bit-field-base\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldResult<TForm, P> {\n const { fieldState, setBlur, store } = useBitFieldBase<\n BitPathValue<TForm, P>,\n TForm,\n P\n >(path);\n\n const { fieldController } = useMemo(() => {\n return createFrameworkMaskedFieldBinding(store, path);\n }, [store, path]);\n\n const displayValue = useMemo(\n () => fieldController.displayValue(fieldState.value),\n [fieldState.value, fieldController],\n );\n\n const setValue = useCallback(\n (val: BitPathValue<TForm, P> | string | number | null | undefined) => {\n fieldController.setValue(val);\n },\n [fieldController],\n );\n\n const { value } = fieldState;\n const metaState = deriveFieldMeta(fieldState);\n const {\n error,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError,\n } = metaState;\n\n const onChange = useCallback(\n (e: BitFieldInputEvent) => {\n const val = isBitFieldInputEventObject(e) ? e.target?.value : e;\n setValue(val);\n },\n [setValue],\n );\n\n const onBlur = useCallback(() => {\n setBlur();\n }, [setBlur]);\n\n const props = useMemo(\n () => ({\n value: displayValue,\n onChange,\n onBlur,\n }),\n [displayValue, onChange, onBlur],\n );\n\n const meta = useMemo(\n () => ({\n error,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError,\n }),\n [\n error,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError,\n ],\n );\n\n return useMemo(\n () => ({\n // Main handlers and values (flat)\n value: value as BitPathValue<TForm, P>,\n displayValue,\n setValue,\n setBlur,\n onChange,\n onBlur,\n // Props helper\n props,\n // Metadata (grouped)\n meta,\n }),\n [value, displayValue, setValue, setBlur, onChange, onBlur, props, meta],\n );\n}\n","import { useCallback, useMemo, useRef, useSyncExternalStore } from \"react\";\nimport { readHistoryMetaSnapshot, type HistoryMeta } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitHistoryResult } from \"./types\";\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n const lastMeta = useRef<HistoryMeta | null>(null);\n\n const getSnapshot = useCallback(() => {\n const nextMeta = readHistoryMetaSnapshot(store);\n\n if (\n lastMeta.current &&\n lastMeta.current.canUndo === nextMeta.canUndo &&\n lastMeta.current.canRedo === nextMeta.canRedo &&\n lastMeta.current.historyIndex === nextMeta.historyIndex &&\n lastMeta.current.historySize === nextMeta.historySize\n ) {\n return lastMeta.current;\n }\n\n lastMeta.current = nextMeta;\n return nextMeta;\n }, [store]);\n\n const subscribe = useCallback(\n (cb: () => void) => store.observe.subscribeHistoryMeta(() => cb()),\n [store],\n );\n\n const meta = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n const undo = useCallback(() => {\n store.feature.undo();\n }, [store]);\n\n const redo = useCallback(() => {\n store.feature.redo();\n }, [store]);\n\n return useMemo(\n () => ({\n ...meta,\n undo,\n redo,\n }),\n [meta, undo, redo],\n );\n}\n","/**\n * React Hook for File Upload Integration\n *\n * Minimal upload API integrated with global field validation lifecycle.\n *\n * @example\n * ```typescript\n * const avatar = useBitUpload(\"avatar\", uploadFn);\n *\n * return (\n * <>\n * <input\n * type=\"file\"\n * onChange={(e) => avatar.upload(e.target.files?.[0])}\n * disabled={avatar.isValidating}\n * />\n * {avatar.error && <Error>{avatar.error}</Error>}\n * </>\n * );\n * ```\n */\n\nimport { useMemo, useRef, useState, useEffect } from \"react\";\nimport type { BitDeleteUploadFn, BitUploadFn } from \"../core\";\nimport { createRemoveHandler, createUploadHandler } from \"../core/adapters\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitUploadResult } from \"./types\";\nimport { useBitField } from \"./use-bit-field\";\n\nexport function useBitUpload<\n TMetadata extends Record<string, unknown> = Record<string, unknown>,\n>(\n fieldPath: string,\n uploadFn: BitUploadFn<TMetadata>,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n const { value, setValue, meta } = field;\n const error = meta?.error;\n const fieldIsValidating = !!meta?.isValidating;\n const uploadKeyRef = useRef<string | null>(null);\n const [isUploading, setIsUploading] = useState(false);\n\n // Ref que sempre aponta para os valores mais recentes de render,\n // permitindo que o handler factory (e seu `currentGeneration`) seja\n // criado uma única vez por (fieldPath, uploadFn). Sem este padrão,\n // qualquer re-render que gere nova referência de callbacks zeraria\n // `currentGeneration` e perderia silenciosamente a URL de upload.\n const callbacksRef = useRef({\n setLoading: setIsUploading,\n setError: (path: string, msg: string | undefined) =>\n store.write.setError(path, msg),\n setValue: (val: string | null) => setValue(val as any),\n getUploadKey: () => uploadKeyRef.current,\n setUploadKey: (key: string | null) => {\n uploadKeyRef.current = key;\n },\n onCallbackError: (e: unknown) =>\n store.read.config.onUnhandledError(e, \"upload\"),\n });\n // Mantém os closures da ref atualizados sem recriar o objeto.\n // Usamos useEffect para evitar mutações de ref durante o render phase\n // (React concurrent mode pode descartar renders, tornando mutações inseguras).\n useEffect(() => {\n callbacksRef.current.setLoading = setIsUploading;\n callbacksRef.current.setError = (path, msg) =>\n store.write.setError(path, msg);\n callbacksRef.current.setValue = (val) => setValue(val as any);\n callbacksRef.current.onCallbackError = (e) =>\n store.read.config.onUnhandledError(e, \"upload\");\n });\n\n const stableCallbacks = useMemo(\n () => ({\n setLoading: (val: boolean) => callbacksRef.current.setLoading(val),\n setError: (path: string, msg: string | undefined) =>\n callbacksRef.current.setError(path, msg),\n setValue: (val: string | null) => callbacksRef.current.setValue(val),\n getUploadKey: () => callbacksRef.current.getUploadKey(),\n setUploadKey: (key: string | null) =>\n callbacksRef.current.setUploadKey(key),\n onCallbackError: (e: unknown) =>\n callbacksRef.current.onCallbackError?.(e),\n }),\n [], // estável para todo o lifetime do componente\n );\n\n const upload = useMemo(\n () => createUploadHandler(fieldPath, uploadFn, stableCallbacks),\n [fieldPath, uploadFn, stableCallbacks],\n );\n\n const remove = useMemo(\n () => createRemoveHandler(fieldPath, deleteFile, stableCallbacks),\n [fieldPath, deleteFile, stableCallbacks],\n );\n\n return useMemo(\n () => ({\n value,\n setValue,\n error,\n isValidating: fieldIsValidating || isUploading,\n upload,\n remove,\n }),\n [value, setValue, error, fieldIsValidating, isUploading, upload, remove],\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["/builds/kenji.ccp-group/bit-form/dist/react/index.cjs","../../src/react/use-bit-field.ts","../../src/react/use-bit-history.ts","../../src/react/use-bit-upload.ts"],"names":["useBitField","path","fieldState","setBlur","store","useBitFieldBase","fieldController","useMemo","createFrameworkMaskedFieldBinding","displayValue","setValue","useCallback","val","value","metaState","deriveFieldMeta","error","touched","invalid","isDirty","isValidating","isHidden","isRequired","hasError","onChange","e","isBitFieldInputEventObject","onBlur","props","meta","useBitHistory","useBitStore","lastMeta","useRef","getSnapshot","nextMeta","readHistoryMetaSnapshot","subscribe","cb","useSyncExternalStore","undo","redo","useBitUpload","fieldPath","uploadFn","deleteFile","field","fieldIsValidating","uploadKeyRef","isUploading","setIsUploading","useState","sharedGen","useEffect","callbacksRef","msg","key","stableCallbacks","upload","createUploadHandler","remove","createRemoveHandler"],"mappings":"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","file":"/builds/kenji.ccp-group/bit-form/dist/react/index.cjs","sourcesContent":[null,"import { useCallback, useMemo } from \"react\";\nimport {\n BitPath,\n BitPathValue,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n isBitFieldInputEventObject,\n} from \"../core\";\nimport type { BitFieldInputEvent, UseBitFieldResult } from \"./types\";\nimport { useBitFieldBase } from \"./use-bit-field-base\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldResult<TForm, P> {\n const { fieldState, setBlur, store } = useBitFieldBase<\n BitPathValue<TForm, P>,\n TForm,\n P\n >(path);\n\n const { fieldController } = useMemo(() => {\n return createFrameworkMaskedFieldBinding(store, path);\n }, [store, path]);\n\n const displayValue = useMemo(\n () => fieldController.displayValue(fieldState.value),\n [fieldState.value, fieldController],\n );\n\n const setValue = useCallback(\n (val: BitPathValue<TForm, P> | string | number | null | undefined) => {\n fieldController.setValue(val);\n },\n [fieldController],\n );\n\n const { value } = fieldState;\n const metaState = deriveFieldMeta(fieldState);\n const {\n error,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError,\n } = metaState;\n\n const onChange = useCallback(\n (e: BitFieldInputEvent) => {\n const val = isBitFieldInputEventObject(e) ? e.target?.value : e;\n setValue(val);\n },\n [setValue],\n );\n\n const onBlur = useCallback(() => {\n setBlur();\n }, [setBlur]);\n\n const props = useMemo(\n () => ({\n value: displayValue,\n onChange,\n onBlur,\n }),\n [displayValue, onChange, onBlur],\n );\n\n const meta = useMemo(\n () => ({\n error,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError,\n }),\n [\n error,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError,\n ],\n );\n\n return useMemo(\n () => ({\n // Main handlers and values (flat)\n value: value as BitPathValue<TForm, P>,\n displayValue,\n setValue,\n setBlur,\n onChange,\n onBlur,\n // Props helper\n props,\n // Metadata (grouped)\n meta,\n }),\n [value, displayValue, setValue, setBlur, onChange, onBlur, props, meta],\n );\n}\n","import { useCallback, useMemo, useRef, useSyncExternalStore } from \"react\";\nimport { readHistoryMetaSnapshot, type HistoryMeta } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitHistoryResult } from \"./types\";\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n const lastMeta = useRef<HistoryMeta | null>(null);\n\n const getSnapshot = useCallback(() => {\n const nextMeta = readHistoryMetaSnapshot(store);\n\n if (\n lastMeta.current &&\n lastMeta.current.canUndo === nextMeta.canUndo &&\n lastMeta.current.canRedo === nextMeta.canRedo &&\n lastMeta.current.historyIndex === nextMeta.historyIndex &&\n lastMeta.current.historySize === nextMeta.historySize\n ) {\n return lastMeta.current;\n }\n\n lastMeta.current = nextMeta;\n return nextMeta;\n }, [store]);\n\n const subscribe = useCallback(\n (cb: () => void) => store.observe.subscribeHistoryMeta(() => cb()),\n [store],\n );\n\n const meta = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n const undo = useCallback(() => {\n store.feature.undo();\n }, [store]);\n\n const redo = useCallback(() => {\n store.feature.redo();\n }, [store]);\n\n return useMemo(\n () => ({\n ...meta,\n undo,\n redo,\n }),\n [meta, undo, redo],\n );\n}\n","/**\n * React Hook for File Upload Integration\n *\n * Minimal upload API integrated with global field validation lifecycle.\n *\n * @example\n * ```typescript\n * const avatar = useBitUpload(\"avatar\", uploadFn);\n *\n * return (\n * <>\n * <input\n * type=\"file\"\n * onChange={(e) => avatar.upload(e.target.files?.[0])}\n * disabled={avatar.isValidating}\n * />\n * {avatar.error && <Error>{avatar.error}</Error>}\n * </>\n * );\n * ```\n */\n\nimport { useMemo, useRef, useState, useEffect } from \"react\";\nimport type { BitDeleteUploadFn, BitUploadFn } from \"../core\";\nimport { createRemoveHandler, createUploadHandler } from \"../core/adapters\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitUploadResult } from \"./types\";\nimport { useBitField } from \"./use-bit-field\";\n\nexport function useBitUpload<\n TMetadata extends Record<string, unknown> = Record<string, unknown>,\n>(\n fieldPath: string,\n uploadFn: BitUploadFn<TMetadata>,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n const { value, setValue, meta } = field;\n const error = meta?.error;\n const fieldIsValidating = !!meta?.isValidating;\n const uploadKeyRef = useRef<string | null>(null);\n const [isUploading, setIsUploading] = useState(false);\n\n const sharedGen = useRef({ current: 0 }).current;\n\n useEffect(() => {\n return () => {\n sharedGen.current++;\n uploadKeyRef.current = null;\n };\n }, []);\n\n const callbacksRef = useRef({\n setLoading: setIsUploading,\n setError: (path: string, msg: string | undefined) =>\n store.write.setError(path, msg),\n setValue: (val: string | null) => setValue(val as any),\n getUploadKey: () => uploadKeyRef.current,\n setUploadKey: (key: string | null) => {\n uploadKeyRef.current = key;\n },\n onCallbackError: (e: unknown) =>\n store.read.config.onUnhandledError(e, \"upload\"),\n });\n\n useEffect(() => {\n callbacksRef.current.setLoading = setIsUploading;\n callbacksRef.current.setError = (path, msg) =>\n store.write.setError(path, msg);\n callbacksRef.current.setValue = (val) => setValue(val as any);\n callbacksRef.current.getUploadKey = () => uploadKeyRef.current;\n callbacksRef.current.setUploadKey = (key) => {\n uploadKeyRef.current = key;\n };\n callbacksRef.current.onCallbackError = (e) =>\n store.read.config.onUnhandledError(e, \"upload\");\n });\n\n const stableCallbacks = useMemo(\n () => ({\n setLoading: (val: boolean) => callbacksRef.current.setLoading(val),\n setError: (path: string, msg: string | undefined) =>\n callbacksRef.current.setError(path, msg),\n setValue: (val: string | null) => callbacksRef.current.setValue(val),\n getUploadKey: () => callbacksRef.current.getUploadKey(),\n setUploadKey: (key: string | null) =>\n callbacksRef.current.setUploadKey(key),\n onCallbackError: (e: unknown) =>\n callbacksRef.current.onCallbackError?.(e),\n }),\n [],\n );\n\n const upload = useMemo(\n () => createUploadHandler(fieldPath, uploadFn, stableCallbacks, sharedGen),\n [fieldPath, uploadFn, stableCallbacks],\n );\n\n const remove = useMemo(\n () => createRemoveHandler(fieldPath, deleteFile, stableCallbacks, sharedGen),\n [fieldPath, deleteFile, stableCallbacks],\n );\n\n return useMemo(\n () => ({\n value,\n setValue,\n error,\n isValidating: fieldIsValidating || isUploading,\n upload,\n remove,\n }),\n [value, setValue, error, fieldIsValidating, isUploading, upload, remove],\n );\n}\n"]}
|
package/dist/react/index.d.cts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { g as UseBitFieldResult, h as UseBitHistoryResult, i as UseBitUploadResult } from '../use-bit-persist-
|
|
2
|
-
export { B as BitFormProvider, j as UseBitFieldBindProps, k as UseBitFieldMeta, U as UseBitPersistResult,
|
|
1
|
+
import { g as UseBitFieldResult, h as UseBitHistoryResult, i as UseBitUploadResult } from '../use-bit-persist-Dsr69hme.cjs';
|
|
2
|
+
export { B as BitFormProvider, j as UseBitFieldBindProps, k as UseBitFieldMeta, l as UseBitFormMeta, m as UseBitFormResult, U as UseBitPersistResult, n as UseBitStepsResult, u as useBitArray, a as useBitForm, b as useBitPersist, c as useBitScope, d as useBitSteps, e as useBitStore, f as useBitWatch } from '../use-bit-persist-Dsr69hme.cjs';
|
|
3
3
|
import { d as BitPath } from '../state-types-8bUndWfg.cjs';
|
|
4
4
|
import '../bus-DzTqgkZ4.cjs';
|
|
5
5
|
import { g as BitUploadFn, b as BitDeleteUploadFn } from '../upload-C4JqIaU2.cjs';
|
|
6
|
-
export { S as ScopeStatus, V as ValidateScopeResult } from '../runtime-types-
|
|
6
|
+
export { S as ScopeStatus, V as ValidateScopeResult } from '../runtime-types-BLCkMgcy.cjs';
|
|
7
7
|
import 'react';
|
|
8
|
-
import '../store-api-types-
|
|
8
|
+
import '../store-api-types-D7i0KWbr.cjs';
|
|
9
9
|
import '../types-CUXh7PqD.cjs';
|
|
10
|
-
import '../config-types-
|
|
11
|
-
import '../meta-types-
|
|
10
|
+
import '../config-types-mZFlp2Bi.cjs';
|
|
11
|
+
import '../meta-types-1Xcht8hj.cjs';
|
|
12
12
|
import '../field-binding-X5TkvfUt.cjs';
|
|
13
13
|
|
|
14
14
|
declare function useBitField<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): UseBitFieldResult<TForm, P>;
|
package/dist/react/index.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { g as UseBitFieldResult, h as UseBitHistoryResult, i as UseBitUploadResult } from '../use-bit-persist-
|
|
2
|
-
export { B as BitFormProvider, j as UseBitFieldBindProps, k as UseBitFieldMeta, U as UseBitPersistResult,
|
|
1
|
+
import { g as UseBitFieldResult, h as UseBitHistoryResult, i as UseBitUploadResult } from '../use-bit-persist-CFcuAzwp.js';
|
|
2
|
+
export { B as BitFormProvider, j as UseBitFieldBindProps, k as UseBitFieldMeta, l as UseBitFormMeta, m as UseBitFormResult, U as UseBitPersistResult, n as UseBitStepsResult, u as useBitArray, a as useBitForm, b as useBitPersist, c as useBitScope, d as useBitSteps, e as useBitStore, f as useBitWatch } from '../use-bit-persist-CFcuAzwp.js';
|
|
3
3
|
import { d as BitPath } from '../state-types-8bUndWfg.js';
|
|
4
4
|
import '../bus-BFOBGmd9.js';
|
|
5
5
|
import { g as BitUploadFn, b as BitDeleteUploadFn } from '../upload-ao6skK9K.js';
|
|
6
|
-
export { S as ScopeStatus, V as ValidateScopeResult } from '../runtime-types-
|
|
6
|
+
export { S as ScopeStatus, V as ValidateScopeResult } from '../runtime-types-BLCkMgcy.js';
|
|
7
7
|
import 'react';
|
|
8
|
-
import '../store-api-types-
|
|
8
|
+
import '../store-api-types-CgRVo2DA.js';
|
|
9
9
|
import '../types-CUXh7PqD.js';
|
|
10
|
-
import '../config-types-
|
|
11
|
-
import '../meta-types-
|
|
10
|
+
import '../config-types-DB6FaTiZ.js';
|
|
11
|
+
import '../meta-types-1Xcht8hj.js';
|
|
12
12
|
import '../field-binding-Bi1g-D8X.js';
|
|
13
13
|
|
|
14
14
|
declare function useBitField<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): UseBitFieldResult<TForm, P>;
|
package/dist/react/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as
|
|
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};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|