@lehnihon/bit-form 2.2.1 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/angular/index.cjs +1 -1
- package/dist/angular/index.cjs.map +1 -1
- package/dist/angular/index.d.cts +31 -38
- package/dist/angular/index.d.ts +31 -38
- package/dist/angular/index.js +1 -1
- package/dist/angular/index.js.map +1 -1
- package/dist/bus-B1my-s_o.d.ts +16 -0
- package/dist/bus-BI29cKpD.d.cts +16 -0
- package/dist/chunk-2UVV7SU4.js +2 -0
- package/dist/chunk-2UVV7SU4.js.map +1 -0
- package/dist/chunk-676WXU4S.cjs +2 -0
- package/dist/chunk-676WXU4S.cjs.map +1 -0
- package/dist/chunk-7MBRAKBL.js +2 -0
- package/dist/chunk-7MBRAKBL.js.map +1 -0
- package/dist/chunk-AD7T42HJ.js +1 -0
- package/dist/chunk-AD7T42HJ.js.map +1 -0
- package/dist/chunk-C4BYXZGB.cjs +1 -0
- package/dist/chunk-C4BYXZGB.cjs.map +1 -0
- package/dist/chunk-ER2DNS7T.cjs +2 -0
- package/dist/chunk-ER2DNS7T.cjs.map +1 -0
- package/dist/chunk-NWPA4F3B.cjs +2 -0
- package/dist/chunk-NWPA4F3B.cjs.map +1 -0
- package/dist/chunk-O5RRLZR7.js +2 -0
- package/dist/chunk-O5RRLZR7.js.map +1 -0
- package/dist/chunk-TRPMTJ35.js +2 -0
- package/dist/chunk-TRPMTJ35.js.map +1 -0
- package/dist/chunk-VSWCUQAF.cjs +2 -0
- package/dist/chunk-VSWCUQAF.cjs.map +1 -0
- package/dist/cli/index.cjs +3 -3
- package/dist/core/light.cjs +2 -0
- package/dist/core/light.cjs.map +1 -0
- package/dist/core/light.d.cts +29 -0
- package/dist/core/light.d.ts +29 -0
- package/dist/core/light.js +2 -0
- package/dist/core/light.js.map +1 -0
- 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/bridge.js.map +1 -1
- package/dist/devtools/index.cjs +132 -1
- package/dist/devtools/index.cjs.map +1 -1
- package/dist/devtools/index.js +132 -1
- package/dist/devtools/index.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +19 -53
- package/dist/index.d.ts +19 -53
- package/dist/index.js +1 -1
- package/dist/{public-types-Lq3eLstW.d.ts → public-types-Bl94ECPb.d.ts} +11 -19
- package/dist/{public-types-CtYuIAMP.d.cts → public-types-CLIDR8aC.d.cts} +11 -19
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +6 -5
- package/dist/react/index.d.ts +6 -5
- 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 -4
- package/dist/react-native/index.d.ts +5 -4
- package/dist/react-native/index.js +1 -1
- package/dist/react-native/index.js.map +1 -1
- package/dist/resolvers/joi.cjs +1 -1
- package/dist/resolvers/joi.cjs.map +1 -1
- package/dist/resolvers/joi.d.cts +4 -4
- package/dist/resolvers/joi.d.ts +4 -4
- package/dist/resolvers/joi.js +1 -1
- package/dist/resolvers/joi.js.map +1 -1
- package/dist/resolvers/types.cjs +1 -0
- package/dist/resolvers/types.cjs.map +1 -0
- package/dist/resolvers/types.d.cts +16 -0
- package/dist/resolvers/types.d.ts +16 -0
- package/dist/resolvers/types.js +1 -0
- package/dist/resolvers/types.js.map +1 -0
- package/dist/resolvers/yup.cjs +1 -1
- package/dist/resolvers/yup.cjs.map +1 -1
- package/dist/resolvers/yup.d.cts +4 -4
- package/dist/resolvers/yup.d.ts +4 -4
- 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.d.cts +4 -4
- package/dist/resolvers/zod.d.ts +4 -4
- package/dist/resolvers/zod.js +1 -1
- package/dist/resolvers/zod.js.map +1 -1
- package/dist/{bus-B3pGaiFZ.d.cts → types-DqeN9Kq_.d.cts} +6 -16
- package/dist/{bus-B3pGaiFZ.d.ts → types-DqeN9Kq_.d.ts} +6 -16
- package/dist/{use-bit-persist-hxJaKG2S.d.ts → use-bit-persist-BgFBg8lQ.d.cts} +37 -43
- package/dist/{use-bit-persist-CWzGfovL.d.cts → use-bit-persist-JtinX6Vy.d.ts} +37 -43
- package/dist/vue/index.cjs +1 -1
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.d.cts +31 -38
- package/dist/vue/index.d.ts +31 -38
- package/dist/vue/index.js +1 -1
- package/dist/vue/index.js.map +1 -1
- package/package.json +7 -1
- package/dist/chunk-442A4FTZ.cjs +0 -2
- package/dist/chunk-442A4FTZ.cjs.map +0 -1
- package/dist/chunk-6FJEE6O3.js +0 -133
- package/dist/chunk-6FJEE6O3.js.map +0 -1
- package/dist/chunk-FOV24ACZ.js +0 -2
- package/dist/chunk-FOV24ACZ.js.map +0 -1
- package/dist/chunk-YWXX6XRV.cjs +0 -133
- package/dist/chunk-YWXX6XRV.cjs.map +0 -1
package/dist/chunk-YWXX6XRV.cjs
DELETED
|
@@ -1,133 +0,0 @@
|
|
|
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 _class; var _class2; var _class3; var _class4; var _class5; var _class6; var _class7; var _class8; var _class9;var z=typeof globalThis<"u"?globalThis:typeof global<"u"?global:window;z.__BIT_FORM__||(z.__BIT_FORM__={stores:{},listeners:new Set,dispatch(o,t){this.listeners.forEach(e=>e(o,t))},subscribe(o){return this.listeners.add(o),()=>{this.listeners.delete(o)}}});var m=z.__BIT_FORM__;function p(o){if(o===null||typeof o!="object")return o;if(o instanceof Date)return new Date(o.getTime());if(o instanceof RegExp)return new RegExp(o.source,o.flags);if(Array.isArray(o))return o.map(e=>p(e));let t={};for(let e in o)Object.prototype.hasOwnProperty.call(o,e)&&(t[e]=p(o[e]));return t}function M(o,t){if(t===void 0)return p(o);if(t===null||typeof t!="object"||t instanceof Date||t instanceof RegExp||Array.isArray(t))return p(t);let e=o&&typeof o=="object"&&!Array.isArray(o)?p(o):{};for(let s of Object.keys(t)){let r=t[s],i=e[s];if(r!==null&&typeof r=="object"&&!Array.isArray(r)&&!(r instanceof Date)&&!(r instanceof RegExp)){e[s]=M(i,r);continue}e[s]=p(r)}return e}function b(o,t){return o===t?!0:o===null||typeof o!="object"||t===null||typeof t!="object"?!1:T(o,t)}function T(o,t){if(o===t)return!0;if(o===null||typeof o!="object"||t===null||typeof t!="object")return!1;if(o instanceof Date&&t instanceof Date)return o.getTime()===t.getTime();if(o instanceof RegExp&&t instanceof RegExp)return o.toString()===t.toString();let e=Object.keys(o),s=Object.keys(t);if(e.length!==s.length)return!1;for(let r of e)if(!Object.prototype.hasOwnProperty.call(t,r)||!T(o[r],t[r]))return!1;return!0}function _(o,t,e="",s=new Set){if(b(o,t))return s;if(o===null||typeof o!="object"||t===null||typeof t!="object")return e&&s.add(e),s;if(Array.isArray(o)||Array.isArray(t))return!b(o,t)&&e&&s.add(e),s;let r=new Set([...Object.keys(o||{}),...Object.keys(t||{})]);for(let i of r){let n=e?`${e}.${i}`:i;_(_optionalChain([o, 'optionalAccess', _2 => _2[i]]),_optionalChain([t, 'optionalAccess', _3 => _3[i]]),n,s)}return s}var x=new Map;function g(o,t){if(!t)return o;let e=x.get(t)||t.split(".");x.has(t)||x.set(t,e);let s=o;for(let r of e){if(s==null)return;s=s[r]}return s}function v(o,t,e){if(!t)return e;let s=x.get(t)||t.split(".");x.has(t)||x.set(t,s);let r=Array.isArray(o)?[...o]:{...o},i=r;for(let n=0;n<s.length-1;n++){let l=s[n],a=s[n+1],d=/^\d+$/.test(a),c=i[l];c==null?i[l]=d?[]:{}:i[l]=Array.isArray(c)?[...c]:{...c},i=i[l]}return i[s[s.length-1]]=e,r}function wt(o,t){let e={},s=`${t}.`;for(let r in o)r!==t&&!r.startsWith(s)&&(e[r]=o[r]);return e}var X=(o,t,e)=>{let s={},r=`${t}.`;return Object.keys(o).forEach(i=>{if(!i.startsWith(r)){s[i]=o[i];return}let l=i.substring(r.length).split("."),a=parseInt(l[0],10),d=l.slice(1).join(".");if(a!==e)if(a>e){let c=a-1,u=d?`${r}${c}.${d}`:`${r}${c}`;s[u]=o[i]}else s[i]=o[i]}),s},W=(o,t,e,s)=>{let r={},i=`${t}.`;return Object.keys(o).forEach(n=>{if(!n.startsWith(i)){r[n]=o[n];return}let a=n.substring(i.length).split("."),d=parseInt(a[0],10),c=a.slice(1).join(".");if(d===e){let u=c?`${i}${s}.${c}`:`${i}${s}`;r[u]=o[n]}else if(d===s){let u=c?`${i}${e}.${c}`:`${i}${e}`;r[u]=o[n]}else r[n]=o[n]}),r},Y=(o,t,e,s)=>{let r={},i=`${t}.`;return Object.keys(o).forEach(n=>{if(!n.startsWith(i)){r[n]=o[n];return}let a=n.substring(i.length).split("."),d=parseInt(a[0],10),c=a.slice(1).join("."),u=d;d===e?u=s:e<s&&d>e&&d<=s?u=d-1:e>s&&d>=s&&d<e&&(u=d+1);let f=c?`${i}${u}.${c}`:`${i}${u}`;r[f]=o[n]}),r};function Tt(o){if(typeof o!="object"||o===null||Array.isArray(o))return!1;let t=_nullishCoalesce(o.errors, () => (o));return typeof t!="object"||t===null||Array.isArray(t)?!1:Object.values(t).every(e=>typeof e=="string"||Array.isArray(e)&&e.every(s=>typeof s=="string"))}function Ct(o){return Tt(o)?_nullishCoalesce(o.errors, () => (o)):{}}var Bt={"#":/\d/,A:/[a-zA-Z]/,X:/[a-zA-Z0-9]/,H:/[0-9a-fA-F]/,U:/[A-Z]/,L:/[a-z]/,"*":/./},E= exports.k =(o,t)=>{if(o==null||o==="")return"";let e=String(o),s=e.startsWith("-"),r=t?t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"):"",i=new RegExp(`[^a-zA-Z0-9${r}]`,"g"),n=e.replace(i,"");return s&&n&&!n.startsWith("-")?`-${n}`:n},xt= exports.l =(o,t=2)=>{if(typeof o=="number")return o;if(!o)return 0;let e=String(o),s=e.includes("-"),r=e.replace(/\D/g,"");if(!r)return 0;let i=parseInt(r,10)/Math.pow(10,t);return s?-i:i},h= exports.m =(o,t)=>{let e=s=>s.split("").filter(r=>Bt[r]).length;return{format:s=>{let r=E(s,_optionalChain([t, 'optionalAccess', _4 => _4.allowChars]));if(!r&&!_optionalChain([t, 'optionalAccess', _5 => _5.guide]))return"";let n=[...Array.isArray(o)?o:[o]].sort((f,y)=>e(f)-e(y)),l=n[n.length-1];for(let f of n)if(r.length<=e(f)){l=f;break}let a="",d=0,c=_optionalChain([t, 'optionalAccess', _6 => _6.guide])||!1,u=_optionalChain([t, 'optionalAccess', _7 => _7.placeholderChar])||"_";for(let f=0;f<l.length;f++){let y=l[f],k=Bt[y];if(d<r.length){let B=r[d];if(k)if(y==="U"&&(B=B.toUpperCase()),y==="L"&&(B=B.toLowerCase()),k.test(B))a+=B,d++;else if(c)a+=u;else break;else a+=y,B===y&&d++}else if(c)a+=k?u:y;else break}return a},parse:s=>{if(_optionalChain([t, 'optionalAccess', _8 => _8.customParse]))return t.customParse(s);let i=h(o,t).format(s);if(_optionalChain([t, 'optionalAccess', _9 => _9.saveRaw])){if(_optionalChain([t, 'optionalAccess', _10 => _10.guide])){let l=(t.placeholderChar||"_").replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),a=new RegExp(l,"g");return i.replace(a,"")}return i}return E(i,_optionalChain([t, 'optionalAccess', _11 => _11.allowChars]))}}},S= exports.n =({prefix:o="",suffix:t="",thousand:e,decimal:s,precision:r=2,allowNegative:i=!0,saveRaw:n=!1})=>{let l=a=>{if(a==null||a==="")return"";let d="";if(typeof a=="number"?d=Math.abs(a).toFixed(r).replace(/\D/g,""):d=String(a).replace(/\D/g,""),!d&&String(a).includes("-")&&i)return"-";if(!d)return"";d=d.padStart(r+1,"0");let c=d.slice(0,-r).replace(/^0+(?=\d)/,"")||"0",u=d.slice(-r),f=c.replace(/\B(?=(\d{3})+(?!\d))/g,e);return`${(typeof a=="number"?a<0:String(a).includes("-"))&&i?"-":""}${o}${f}${s}${u}${t}`};return{format:l,parse:a=>{let d=xt(a,r),c=i?d:Math.abs(d);return n?l(c):c}}},J= exports.o =o=>{let t=e=>/^3[47]/.test(e)?"#### ###### #####":/^3(?:0[0-5]|[68])/.test(e)?"#### ###### ####":"#### #### #### ####";return{format:e=>{let s=E(e,_optionalChain([o, 'optionalAccess', _12 => _12.allowChars])),r=t(s);return h(r,o).format(e)},parse:e=>{let s=E(e,_optionalChain([o, 'optionalAccess', _13 => _13.allowChars])),r=t(s);return h(r,o).parse(e)}}},P= exports.p =o=>{let e=(_optionalChain([o, 'optionalAccess', _14 => _14.format])||"DD/MM/YYYY")==="YYYY-MM-DD",s=h(e?"####-##-##":"##/##/####",o);return{format:r=>{let i=E(r);if(!i)return"";let n="",l="",a="";if(e?(a=i.substring(0,4),l=i.substring(4,6),n=i.substring(6,8)):(n=i.substring(0,2),l=i.substring(2,4),a=i.substring(4,8)),n.length===2){let c=parseInt(n,10);c>31&&(n="31"),c===0&&(n="01")}if(l.length===2){let c=parseInt(l,10);c>12&&(l="12"),c===0&&(l="01")}let d=e?`${a}${l}${n}`:`${n}${l}${a}`;return s.format(d)},parse:r=>s.parse(r)}};var K=S({prefix:"R$ ",thousand:".",decimal:",",precision:2}),G= exports.r =S({prefix:"$",thousand:",",decimal:".",precision:2}),Z= exports.s =S({suffix:" \u20AC",thousand:".",decimal:",",precision:2}),Q= exports.t =S({prefix:"\xA3",thousand:",",decimal:".",precision:2}),tt= exports.u =S({prefix:"\xA5",thousand:",",decimal:".",precision:0}),et= exports.v =S({suffix:"%",thousand:".",decimal:",",precision:1}),st= exports.w =S({thousand:".",decimal:",",precision:2}),rt= exports.x =S({thousand:".",decimal:",",precision:0}),it= exports.y =h("###.###.###-##"),ot= exports.z =h("##.###.###/####-##"),nt= exports.A =h(["(##) ####-####","(##) #####-####"]),at= exports.B =h("(##) ####-####"),lt= exports.C =h("#####-###"),dt= exports.D =P({format:"DD/MM/YYYY",guide:!0,customParse:o=>{let t=o.replace(/_/g,""),e=t.split("/");return e.length===3&&e[2].length===4?`${e[2]}-${e[1]}-${e[0]}`:t.replace(/\D/g,"")}}),ct= exports.E =h("##:##"),ut= exports.F =h("###########"),gt= exports.G =h("##.###.###-X"),Dt= exports.H =h("(###) ###-####"),It= exports.I =h("#####-####"),At= exports.J =h("##/##/####"),Rt= exports.K =h("###-##-####"),pt= exports.L =J(),ht= exports.M =h("####"),Ht= exports.N =P({format:"YYYY-MM-DD",saveRaw:!0,guide:!0}),ft= exports.O =h("HH:HH:HH:HH:HH:HH"),mt= exports.P =h("#HHHHHH"),yt= exports.Q =h("###.###.###.###"),bt= exports.R =h("HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH"),Ot= exports.S =h("UU## XXXX XXXX XXXX XXXX XXXX XXXX XXXX XX",{allowChars:" "});var vt={brl:K,usd:G,eur:Z,gbp:Q,jpy:tt,cpf:it,cnpj:ot,rg:gt,cep:lt,cnh:ut,phone:nt,landline:at,date:dt,time:ct,ip:yt,ipv6:bt,mac:ft,color:mt,cc:pt,cvv:ht,percent:et,decimal:st,int:rt};function Et(o={}){let t=_nullishCoalesce(o.initialValues, () => ({})),e=o.validation,s=o.history,r=o.name?`bit-form:${o.name}:draft`:"bit-form:draft",i={enabled:_nullishCoalesce(_optionalChain([o, 'access', _15 => _15.persist, 'optionalAccess', _16 => _16.enabled]), () => (!1)),key:_nullishCoalesce(_optionalChain([o, 'access', _17 => _17.persist, 'optionalAccess', _18 => _18.key]), () => (r)),storage:_optionalChain([o, 'access', _19 => _19.persist, 'optionalAccess', _20 => _20.storage]),autoSave:_nullishCoalesce(_optionalChain([o, 'access', _21 => _21.persist, 'optionalAccess', _22 => _22.autoSave]), () => (!0)),debounceMs:_nullishCoalesce(_optionalChain([o, 'access', _23 => _23.persist, 'optionalAccess', _24 => _24.debounceMs]), () => (300)),mode:_nullishCoalesce(_optionalChain([o, 'access', _25 => _25.persist, 'optionalAccess', _26 => _26.mode]), () => ("values")),serialize:_nullishCoalesce(_optionalChain([o, 'access', _27 => _27.persist, 'optionalAccess', _28 => _28.serialize]), () => (JSON.stringify)),deserialize:_nullishCoalesce(_optionalChain([o, 'access', _29 => _29.persist, 'optionalAccess', _30 => _30.deserialize]), () => ((n=>JSON.parse(n)))),onError:_optionalChain([o, 'access', _31 => _31.persist, 'optionalAccess', _32 => _32.onError])};return{name:o.name,initialValues:p(t),resolver:_optionalChain([e, 'optionalAccess', _33 => _33.resolver]),validationDelay:_nullishCoalesce(_optionalChain([e, 'optionalAccess', _34 => _34.delay]), () => (300)),enableHistory:_nullishCoalesce(_optionalChain([s, 'optionalAccess', _35 => _35.enabled]), () => (!1)),historyLimit:_nullishCoalesce(_optionalChain([s, 'optionalAccess', _36 => _36.limit]), () => (15)),masks:{...vt},fields:o.fields,devTools:o.devTools,persist:i,plugins:_nullishCoalesce(o.plugins, () => ([]))}}var F= (_class =class{constructor() { _class.prototype.__init.call(this);_class.prototype.__init2.call(this);_class.prototype.__init3.call(this); }__init() {this.fieldConfigs=new Map}__init2() {this.dependencies=new Map}__init3() {this.hiddenFields=new Set}register(t,e,s){this.fieldConfigs.set(t,e);let r=_optionalChain([e, 'access', _37 => _37.conditional, 'optionalAccess', _38 => _38.dependsOn]);r&&r.forEach(i=>{this.dependencies.has(i)||this.dependencies.set(i,new Set),this.dependencies.get(i).add(t)}),this.evaluateFieldCondition(t,s)}isHidden(t){return this.hiddenFields.has(t)}isRequired(t,e){let s=this.fieldConfigs.get(t);return!s||this.isHidden(t)?!1:!!_optionalChain([s, 'access', _39 => _39.conditional, 'optionalAccess', _40 => _40.requiredIf, 'optionalCall', _41 => _41(e)])}getRequiredErrors(t){let e={};return this.fieldConfigs.forEach((s,r)=>{if(this.isRequired(r,t)){let i=g(t,r);this.isEmpty(i)&&(e[r]=_nullishCoalesce(_optionalChain([s, 'access', _42 => _42.conditional, 'optionalAccess', _43 => _43.requiredMessage]), () => ("required field")))}}),e}evaluateAll(t){this.fieldConfigs.forEach((e,s)=>{this.evaluateFieldCondition(s,t)})}updateDependencies(t,e){let s=[],r=[t],i=new Set;for(;r.length>0;){let n=r.shift();if(i.has(n))continue;i.add(n);let l=this.dependencies.get(n);l&&l.forEach(a=>{let d=this.isHidden(a);this.evaluateFieldCondition(a,e);let c=this.isHidden(a);d!==c&&s.push(a),r.push(a)})}return s}unregister(t){this.fieldConfigs.delete(t),this.hiddenFields.delete(t),this.dependencies.delete(t),this.dependencies.forEach(e=>{e.delete(t)})}unregisterPrefix(t){let e=[];this.fieldConfigs.forEach((s,r)=>{r.startsWith(t)&&e.push(r)}),e.forEach(s=>this.unregister(s))}evaluateFieldCondition(t,e){let r=_optionalChain([this, 'access', _44 => _44.fieldConfigs, 'access', _45 => _45.get, 'call', _46 => _46(t), 'optionalAccess', _47 => _47.conditional, 'optionalAccess', _48 => _48.showIf]);r&&(r(e)?this.hiddenFields.delete(t):this.hiddenFields.add(t))}isEmpty(t){return t==null||typeof t=="string"&&t.trim()===""||Array.isArray(t)&&t.length===0}}, _class);var w= (_class2 =class{constructor(t,e=15){;_class2.prototype.__init4.call(this);_class2.prototype.__init5.call(this);this.enableHistory=t;this.maxHistory=e}__init4() {this.history=[]}__init5() {this.historyIndex=-1}saveSnapshot(t){if(!this.enableHistory)return;let e=this.history[this.historyIndex];e&&T(e,t)||(this.historyIndex<this.history.length-1&&(this.history=this.history.slice(0,this.historyIndex+1)),this.history.push(p(t)),this.history.length>this.maxHistory?this.history.shift():this.historyIndex++)}get canUndo(){return this.enableHistory?this.historyIndex>0:!1}get canRedo(){return this.enableHistory?this.historyIndex<this.history.length-1:!1}undo(){return this.canUndo?(this.historyIndex--,p(this.history[this.historyIndex])):null}redo(){return this.canRedo?(this.historyIndex++,p(this.history[this.historyIndex])):null}reset(t){this.history=[],this.historyIndex=-1,this.saveSnapshot(t)}getMetadata(){return{enabled:this.enableHistory,canUndo:this.canUndo,canRedo:this.canRedo,historyIndex:this.historyIndex,historySize:this.history.length}}}, _class2);var C=class{constructor(t){this.store=t}pushItem(t,e){let s=g(this.store.getState().values,t)||[];this.store.setFieldWithMeta(t,[...s,e],{origin:"array",operation:"push"}),this.store.internalSaveSnapshot()}prependItem(t,e){let s=g(this.store.getState().values,t)||[];this.store.setFieldWithMeta(t,[e,...s],{origin:"array",operation:"prepend"}),this.store.internalSaveSnapshot()}insertItem(t,e,s){let r=[...g(this.store.getState().values,t)||[]];r.splice(e,0,s),this.store.setFieldWithMeta(t,r,{origin:"array",operation:"insert",index:e}),this.store.internalSaveSnapshot()}removeItem(t,e){let s=this.store.getState(),r=g(s.values,t);if(!Array.isArray(r))return;let i=[...r];this.store.unregisterPrefix&&this.store.unregisterPrefix(`${t}.${e}.`);let n=r.filter((d,c)=>c!==e),l=v(s.values,t,n),a=this.store.updateDirtyForPath(t,l,this.store.getConfig().initialValues);this.store.internalUpdateState({values:l,errors:X(s.errors,t,e),touched:X(s.touched,t,e),isDirty:a}),this.store.emitFieldChange({path:t,previousValue:i,nextValue:n,values:this.store.getState().values,state:this.store.getState(),meta:{origin:"array",operation:"remove",index:e}}),this.store.internalSaveSnapshot(),this.revalidate(t)}swapItems(t,e,s){let r=this.store.getState(),i=[...g(r.values,t)||[]],n=[...i];[i[e],i[s]]=[i[s],i[e]];let l=v(r.values,t,i),a=this.store.updateDirtyForPath(t,l,this.store.getConfig().initialValues);this.store.internalUpdateState({values:l,errors:W(r.errors,t,e,s),touched:W(r.touched,t,e,s),isDirty:a}),this.store.emitFieldChange({path:t,previousValue:n,nextValue:i,values:this.store.getState().values,state:this.store.getState(),meta:{origin:"array",operation:"swap",from:e,to:s}}),this.store.internalSaveSnapshot(),this.revalidate(t)}moveItem(t,e,s){let r=this.store.getState(),i=[...g(r.values,t)||[]],n=[...i],[l]=i.splice(e,1);i.splice(s,0,l);let a=v(r.values,t,i),d=this.store.updateDirtyForPath(t,a,this.store.getConfig().initialValues);this.store.internalUpdateState({values:a,errors:Y(r.errors,t,e,s),touched:Y(r.touched,t,e,s),isDirty:d}),this.store.emitFieldChange({path:t,previousValue:n,nextValue:i,values:this.store.getState().values,state:this.store.getState(),meta:{origin:"array",operation:"move",from:e,to:s}}),this.store.internalSaveSnapshot(),this.revalidate(t)}revalidate(t){this.store.triggerValidation([t])}};var D= (_class3 =class o{constructor(t){this.getComputedEntries=t}static __initStatic() {this.MIN_PASSES=4}apply(t){let e=this.getComputedEntries();if(e.length===0)return t;let s=t,r=Math.max(o.MIN_PASSES,e.length*2);for(let i=0;i<r;i++){let n=!1;for(let[l,a]of e){let d=a(s),c=g(s,l);T(c,d)||(s=v(s,l,d),n=!0)}if(!n)break;if(i===r-1)throw new Error("BitStore: computed fields did not stabilize. Check for cyclic computed definitions.")}return s}}, _class3.__initStatic(), _class3);var I= (_class4 =class{constructor(t){;_class4.prototype.__init6.call(this);_class4.prototype.__init7.call(this);_class4.prototype.__init8.call(this);_class4.prototype.__init9.call(this);this.store=t}__init6() {this.currentValidationId=0}__init7() {this.asyncTimers={}}__init8() {this.asyncRequests={}}__init9() {this.asyncErrors={}}updateFieldValidating(t,e){this.store.internalUpdateState({isValidating:{...this.store.getState().isValidating,[t]:e}})}cancelFieldAsync(t){this.asyncTimers[t]&&(clearTimeout(this.asyncTimers[t]),delete this.asyncTimers[t]),this.asyncRequests[t]=(this.asyncRequests[t]||0)+1}beginExternalValidation(t){this.cancelFieldAsync(t),this.updateFieldValidating(t,!0)}endExternalValidation(t){this.updateFieldValidating(t,!1)}async setExternalError(t,e){if(e){this.asyncErrors[t]=e,this.store.setError(t,e);return}if(delete this.asyncErrors[t],this.store.validate){await this.store.validate({scopeFields:[t]});return}let s={...this.store.getState().errors};delete s[t],this.store.internalUpdateState({errors:s,isValid:Object.keys(s).length===0})}handleAsync(t,e){let s=this.store.getFieldConfig(t),r=_optionalChain([s, 'optionalAccess', _49 => _49.validation, 'optionalAccess', _50 => _50.asyncValidate]);if(!r){this.updateFieldValidating(t,!1);return}this.asyncTimers[t]&&clearTimeout(this.asyncTimers[t]);let i=_nullishCoalesce(_optionalChain([s, 'access', _51 => _51.validation, 'optionalAccess', _52 => _52.asyncValidateDelay]), () => (500));this.updateFieldValidating(t,!0),this.asyncTimers[t]=setTimeout(async()=>{delete this.asyncTimers[t];let n=(this.asyncRequests[t]||0)+1;this.asyncRequests[t]=n;try{let l=await r(e,this.store.getState().values);if(this.asyncRequests[t]!==n)return;if(l)this.asyncErrors[t]=l,this.store.setError(t,l);else if(delete this.asyncErrors[t],this.store.validate)await this.store.validate({scopeFields:[t]});else{let a={...this.store.getState().errors};delete a[t],this.store.internalUpdateState({errors:a,isValid:Object.keys(a).length===0})}}finally{this.asyncRequests[t]===n&&this.updateFieldValidating(t,!1)}},i)}hasValidationsInProgress(t){let e=this.store.getState();return t&&t.length>0?t.some(s=>!!e.isValidating[s]):Object.values(e.isValidating).some(Boolean)}trigger(t){this.validationTimeout&&clearTimeout(this.validationTimeout);let e=_nullishCoalesce(this.store.config.validationDelay, () => (300));e>0?this.validationTimeout=setTimeout(()=>{this.validate({scopeFields:t})},e):this.validate({scopeFields:t})}async validate(t){let e=++this.currentValidationId,s=this.store.getState(),r=_optionalChain([t, 'optionalAccess', _53 => _53.scopeFields]);if(_optionalChain([t, 'optionalAccess', _54 => _54.scope])){let a=this.store.getScopeFields(t.scope);a.length>0&&(r=a)}await this.store.emitBeforeValidate({values:s.values,state:s,scope:_optionalChain([t, 'optionalAccess', _55 => _55.scope]),scopeFields:r});let i=this.store.config.resolver?await this.store.config.resolver(s.values,{scopeFields:r}):{},n=this.store.getRequiredErrors(s.values);if(i={...i,...n},this.store.getHiddenFields().forEach(a=>{delete i[a],delete this.asyncErrors[a]}),e!==this.currentValidationId)return await this.store.emitAfterValidate({values:this.store.getState().values,state:this.store.getState(),scope:_optionalChain([t, 'optionalAccess', _56 => _56.scope]),scopeFields:r,errors:this.store.getState().errors,result:s.isValid,aborted:!0}),s.isValid;if(r){let a={...s.errors};r.forEach(u=>{i[u]?a[u]=i[u]:this.asyncErrors[u]?a[u]=this.asyncErrors[u]:delete a[u]});let d=Object.keys(a).length===0;this.store.internalUpdateState({errors:a,isValid:d});let c=r.every(u=>!i[u]&&!this.asyncErrors[u]);return await this.store.emitAfterValidate({values:this.store.getState().values,state:this.store.getState(),scope:_optionalChain([t, 'optionalAccess', _57 => _57.scope]),scopeFields:r,errors:a,result:c}),c}i={...this.asyncErrors,...i};let l=Object.keys(i).length===0;return this.store.internalUpdateState({errors:i,isValid:l}),await this.store.emitAfterValidate({values:this.store.getState().values,state:this.store.getState(),scope:_optionalChain([t, 'optionalAccess', _58 => _58.scope]),scopeFields:r,errors:i,result:l}),l}clear(t){this.asyncTimers[t]&&clearTimeout(this.asyncTimers[t]),delete this.asyncTimers[t],this.updateFieldValidating(t,!1),delete this.asyncErrors[t]}cancelAll(){this.validationTimeout&&clearTimeout(this.validationTimeout),Object.values(this.asyncTimers).forEach(t=>clearTimeout(t)),this.asyncTimers={},this.store.internalUpdateState({isValidating:{}})}}, _class4);var A=class{constructor(t){this.store=t}updateField(t,e,s={origin:"setField"}){let r=this.store.getState(),i=g(r.values,t),n=v(r.values,t,e),l={...r.errors};delete l[t],this.store.clearFieldValidation(t),this.store.updateDependencies(t,n).forEach(c=>{this.store.isFieldHidden(c)&&(delete l[c],this.store.clearFieldValidation(c))});let d=this.store.updateDirtyForPath(t,n,this.store.config.initialValues);this.store.internalUpdateState({values:n,errors:l,isValid:Object.keys(l).length===0,isDirty:d}),this.store.emitFieldChange({path:t,previousValue:i,nextValue:e,values:this.store.getState().values,state:this.store.getState(),meta:s}),this.store.config.resolver&&this.store.triggerValidation([t]),this.store.handleFieldAsyncValidation(t,e)}replaceValues(t,e="replaceValues"){let s=this.store.getState().values,r=p(t);this.store.cancelAllValidations(),this.store.evaluateAllDependencies(r);let i=this.store.rebuildDirtyState(r,this.store.config.initialValues);this.store.internalUpdateState({values:r,errors:{},isValidating:{},isValid:!0,isDirty:i,isSubmitting:!1}),this.store.internalSaveSnapshot(),this.store.validateNow(),this.store.emitFieldChange({path:"*",previousValue:s,nextValue:r,values:this.store.getState().values,state:this.store.getState(),meta:{origin:e}})}hydrateValues(t){let e=M(this.store.getState().values,t);this.replaceValues(e,"hydrate")}rebaseValues(t){let e=this.store.getState().values,s=p(t);this.store.config.initialValues=p(s),this.store.cancelAllValidations(),this.store.evaluateAllDependencies(s),this.store.clearDirtyState(),this.store.internalUpdateState({values:s,errors:{},touched:{},isValidating:{},isValid:!0,isDirty:!1,isSubmitting:!1}),this.store.internalSaveSnapshot(),this.store.validateNow(),this.store.emitFieldChange({path:"*",previousValue:e,nextValue:s,values:this.store.getState().values,state:this.store.getState(),meta:{origin:"rebase"}})}async submit(t){if(this.store.getState().isSubmitting||this.store.hasValidationsInProgress())return;if(this.store.cancelAllValidations(),this.store.internalUpdateState({isSubmitting:!0}),await this.store.validateNow())try{let r=p(this.store.getState().values);this.store.getHiddenFields().forEach(n=>{r=v(r,n,void 0)});for(let[n,l]of this.store.getTransformEntries()){let a=g(r,n);r=v(r,n,l(a,this.store.getState().values))}let i=this.store.buildDirtyValues(r);await this.store.emitBeforeSubmit({values:r,dirtyValues:i,state:this.store.getState()}),await t(r,i),await this.store.emitAfterSubmit({values:r,dirtyValues:i,state:this.store.getState(),success:!0})}catch(r){await this.store.emitOperationalError({source:"submit",error:r}),await this.store.emitAfterSubmit({values:this.store.getState().values,dirtyValues:this.store.buildDirtyValues(this.store.getState().values),state:this.store.getState(),success:!1,error:r}),console.error(r)}else{let r=this.store.getState().errors,i={...this.store.getState().touched};Object.keys(r).forEach(n=>{i[n]=!0}),this.store.internalUpdateState({touched:i}),await this.store.emitAfterSubmit({values:this.store.getState().values,dirtyValues:this.store.buildDirtyValues(this.store.getState().values),state:this.store.getState(),success:!1,invalid:!0})}this.store.internalUpdateState({isSubmitting:!1})}reset(){this.store.cancelAllValidations();let t=p(this.store.config.initialValues);this.store.evaluateAllDependencies(t),this.store.clearDirtyState(),this.store.internalUpdateState({values:t,errors:{},touched:{},isValidating:{},isValid:!0,isDirty:!1,isSubmitting:!1}),this.store.resetHistory(t)}};function Vt(){return`
|
|
2
|
-
.bit-devtools-container {
|
|
3
|
-
position: fixed;
|
|
4
|
-
bottom: 20px;
|
|
5
|
-
right: 20px;
|
|
6
|
-
z-index: 9999;
|
|
7
|
-
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
|
|
8
|
-
display: flex;
|
|
9
|
-
flex-direction: column;
|
|
10
|
-
align-items: flex-end;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
.bit-devtools-trigger {
|
|
14
|
-
background: #10b981;
|
|
15
|
-
color: #fff;
|
|
16
|
-
border: none;
|
|
17
|
-
border-radius: 50%;
|
|
18
|
-
width: 48px;
|
|
19
|
-
height: 48px;
|
|
20
|
-
cursor: pointer;
|
|
21
|
-
box-shadow: 0 4px 12px rgba(16, 185, 129, 0.4);
|
|
22
|
-
font-weight: bold;
|
|
23
|
-
display: flex;
|
|
24
|
-
align-items: center;
|
|
25
|
-
justify-content: center;
|
|
26
|
-
transition: transform 0.2s;
|
|
27
|
-
font-size: 16px;
|
|
28
|
-
margin-top: 16px;
|
|
29
|
-
}
|
|
30
|
-
.bit-devtools-trigger:hover { transform: scale(1.05); }
|
|
31
|
-
|
|
32
|
-
.bit-devtools-panel {
|
|
33
|
-
width: 450px;
|
|
34
|
-
max-height: 80vh;
|
|
35
|
-
background: #0f172a;
|
|
36
|
-
color: #f8fafc;
|
|
37
|
-
border-radius: 8px;
|
|
38
|
-
padding: 16px;
|
|
39
|
-
overflow-y: auto;
|
|
40
|
-
box-shadow: 0 20px 25px -5px rgba(0,0,0,0.5), 0 8px 10px -6px rgba(0,0,0,0.5);
|
|
41
|
-
border: 1px solid #334155;
|
|
42
|
-
display: flex;
|
|
43
|
-
flex-direction: column;
|
|
44
|
-
gap: 16px;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
.bit-devtools-header {
|
|
48
|
-
display: flex;
|
|
49
|
-
justify-content: space-between;
|
|
50
|
-
align-items: center;
|
|
51
|
-
padding-bottom: 12px;
|
|
52
|
-
border-bottom: 1px solid #1e293b;
|
|
53
|
-
}
|
|
54
|
-
.bit-devtools-header h2 { margin: 0; font-size: 16px; display: flex; align-items: center; gap: 8px; }
|
|
55
|
-
|
|
56
|
-
.bit-store-block {
|
|
57
|
-
background: #1e293b;
|
|
58
|
-
border-radius: 6px;
|
|
59
|
-
padding: 12px;
|
|
60
|
-
border: 1px solid #334155;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
.bit-store-header {
|
|
64
|
-
display: flex;
|
|
65
|
-
justify-content: space-between;
|
|
66
|
-
align-items: center;
|
|
67
|
-
margin-bottom: 12px;
|
|
68
|
-
}
|
|
69
|
-
.bit-store-title { margin: 0; color: #38bdf8; font-size: 14px; font-weight: bold; }
|
|
70
|
-
|
|
71
|
-
.bit-badge-group { display: flex; gap: 6px; flex-wrap: wrap; }
|
|
72
|
-
.bit-badge { font-size: 10px; padding: 2px 6px; border-radius: 4px; text-transform: uppercase; font-weight: bold; }
|
|
73
|
-
.badge-success { background: rgba(16, 185, 129, 0.2); color: #34d399; border: 1px solid rgba(16, 185, 129, 0.2); }
|
|
74
|
-
.badge-error { background: rgba(239, 68, 68, 0.2); color: #f87171; border: 1px solid rgba(239, 68, 68, 0.2); }
|
|
75
|
-
.badge-warn { background: rgba(245, 158, 11, 0.2); color: #fbbf24; border: 1px solid rgba(245, 158, 11, 0.2); }
|
|
76
|
-
.badge-info { background: rgba(56, 189, 248, 0.2); color: #7dd3fc; border: 1px solid rgba(56, 189, 248, 0.2); }
|
|
77
|
-
|
|
78
|
-
.bit-section-title { font-size: 11px; color: #94a3b8; text-transform: uppercase; letter-spacing: 1px; margin: 12px 0 4px 0; display: block; }
|
|
79
|
-
|
|
80
|
-
.bit-controls { display: flex; gap: 6px; margin-bottom: 12px; background: #0f172a; padding: 8px; border-radius: 6px; }
|
|
81
|
-
.bit-action-btn { flex: 1; background: #334155; color: #e2e8f0; border: 1px solid #475569; padding: 6px 0; border-radius: 4px; cursor: pointer; font-size: 11px; display: flex; align-items: center; justify-content: center; gap: 4px; transition: all 0.2s; }
|
|
82
|
-
.bit-action-btn:hover:not(:disabled) { background: #475569; }
|
|
83
|
-
.bit-action-btn:disabled { opacity: 0.5; cursor: not-allowed; }
|
|
84
|
-
.bit-btn-reset { color: #fca5a5; border-color: rgba(239,68,68,0.3); }
|
|
85
|
-
.bit-btn-reset:hover { background: rgba(239,68,68,0.1) !important; }
|
|
86
|
-
|
|
87
|
-
pre.bit-pre { background: #020617; padding: 10px; border-radius: 4px; font-size: 11px; overflow-x: auto; border: 1px solid #1e293b; margin: 0; color: #e2e8f0; }
|
|
88
|
-
pre.bit-error-box { background: rgba(239, 68, 68, 0.05); padding: 10px; border-radius: 4px; font-size: 11px; border: 1px dashed #ef4444; color: #fca5a5; margin: 0; overflow-x: auto; }
|
|
89
|
-
`}var V= (_class5 =class{__init10() {this.currentStoresState={}}__init11() {this.isOpen=!1}constructor(t,e){;_class5.prototype.__init10.call(this);_class5.prototype.__init11.call(this);if(this.container=t,this.actions=e,!document.getElementById("bit-devtools-styles")){let s=document.createElement("style");s.id="bit-devtools-styles",s.textContent=Vt(),document.head.appendChild(s)}this.rootElement=document.createElement("div"),this.rootElement.className="bit-devtools-container",this.container.appendChild(this.rootElement),this.rootElement.addEventListener("click",s=>{let r=s.target;if(r.closest(".bit-devtools-trigger")){this.isOpen=!this.isOpen,this.render();return}let i=r.closest(".bit-action-btn");if(i&&!i.hasAttribute("disabled")){let n=i.getAttribute("data-action"),l=i.getAttribute("data-store");n&&l&&(n==="undo"&&this.actions.onUndo(l),n==="redo"&&this.actions.onRedo(l),n==="reset"&&this.actions.onReset(l))}})}updateState(t){this.currentStoresState=t,this.render()}render(){let t=Object.entries(this.currentStoresState);if(t.length===0){this.rootElement.innerHTML="";return}let e="";if(this.isOpen){e=`
|
|
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[r,i]of t){let n=Object.keys(i.errors||{}).length>0,l=i._meta||{totalSteps:0,currentIndex:-1,canUndo:!1,canRedo:!1},a=l.currentIndex+1,d=l.totalSteps;e+=`
|
|
96
|
-
<div class="bit-store-block">
|
|
97
|
-
<div class="bit-store-header">
|
|
98
|
-
<h3 class="bit-store-title">${r}</h3>
|
|
99
|
-
<div class="bit-badge-group">
|
|
100
|
-
<span class="bit-badge ${i.isValid?"badge-success":"badge-error"}">
|
|
101
|
-
${i.isValid?"\u2713 Valid":"\u2715 Invalid"}
|
|
102
|
-
</span>
|
|
103
|
-
${i.isDirty?'<span class="bit-badge badge-warn">Dirty</span>':""}
|
|
104
|
-
${i.isSubmitting?'<span class="bit-badge badge-info">\u23F3 Submitting</span>':""}
|
|
105
|
-
</div>
|
|
106
|
-
</div>
|
|
107
|
-
|
|
108
|
-
<span class="bit-section-title">Time Travel (${a}/${d})</span>
|
|
109
|
-
|
|
110
|
-
<div class="bit-controls">
|
|
111
|
-
<button class="bit-action-btn" data-action="undo" data-store="${r}" ${l.canUndo?"":"disabled"}>
|
|
112
|
-
<span>\u21BA</span> Undo
|
|
113
|
-
</button>
|
|
114
|
-
<button class="bit-action-btn" data-action="redo" data-store="${r}" ${l.canRedo?"":"disabled"}>
|
|
115
|
-
<span>\u21BB</span> Redo
|
|
116
|
-
</button>
|
|
117
|
-
<button class="bit-action-btn bit-btn-reset" data-action="reset" data-store="${r}">
|
|
118
|
-
<span>\u{1F5D1}</span> Reset
|
|
119
|
-
</button>
|
|
120
|
-
</div>
|
|
121
|
-
`,n&&(e+=`
|
|
122
|
-
<span class="bit-section-title" style="color: #f87171;">\u26A0\uFE0F Validations Failing</span>
|
|
123
|
-
<pre class="bit-error-box">${JSON.stringify(i.errors,null,2)}</pre>
|
|
124
|
-
`),e+=`
|
|
125
|
-
<span class="bit-section-title">Values</span>
|
|
126
|
-
<pre class="bit-pre">${JSON.stringify(i.values,null,2)}</pre>
|
|
127
|
-
</div>
|
|
128
|
-
`}e+="</div>"}let s=`
|
|
129
|
-
<button class="bit-devtools-trigger" style="transform: ${this.isOpen?"scale(0.9)":"scale(1)"};" title="Abrir DevTools">
|
|
130
|
-
${this.isOpen?"\u2716":"Bit"}
|
|
131
|
-
</button>
|
|
132
|
-
`;this.rootElement.innerHTML=e+s}}, _class5);function kt(o){let t=new V(o,{onUndo:r=>_optionalChain([m, 'access', _59 => _59.stores, 'access', _60 => _60[r], 'optionalAccess', _61 => _61.undo, 'call', _62 => _62()]),onRedo:r=>_optionalChain([m, 'access', _63 => _63.stores, 'access', _64 => _64[r], 'optionalAccess', _65 => _65.redo, 'call', _66 => _66()]),onReset:r=>_optionalChain([m, 'access', _67 => _67.stores, 'access', _68 => _68[r], 'optionalAccess', _69 => _69.reset, 'call', _70 => _70()])}),e=()=>{let r={};for(let[i,n]of Object.entries(m.stores)){let l=n,a=l.getState(),d=_optionalChain([l, 'optionalAccess', _71 => _71.getHistoryMetadata, 'optionalCall', _72 => _72()])||{enabled:!1,canUndo:!1,canRedo:!1,historyIndex:-1,historySize:0};r[i]={...a,_meta:{canUndo:d.canUndo,canRedo:d.canRedo,totalSteps:d.historySize,currentIndex:d.historyIndex}}}return r};t.updateState(e());let s=m.subscribe(()=>{t.updateState(e())});return{ui:t,destroy:()=>{s(),o.innerHTML=""}}}function Mt(o,t="ws://localhost:3000"){let e=new WebSocket(t),s=new V(o,{onUndo:i=>r("ACTION",{storeId:i,action:"undo"}),onRedo:i=>r("ACTION",{storeId:i,action:"redo"}),onReset:i=>r("ACTION",{storeId:i,action:"reset"})}),r=(i,n)=>{e.readyState===WebSocket.OPEN?e.send(JSON.stringify({type:i,payload:n})):console.warn("[bit-form] Tentativa de envio falhou. WebSocket n\xE3o est\xE1 aberto.")};return e.addEventListener("open",()=>{console.log(`[bit-form] Conectado ao DevTools remoto em ${t}`)}),e.addEventListener("message",i=>{try{let n=JSON.parse(i.data);n.type==="STATE_UPDATE"&&s.updateState(n.payload)}catch(n){console.error("[bit-form] Erro ao processar mensagem do WebSocket:",n)}}),e.addEventListener("error",i=>{console.error("[bit-form] Erro na conex\xE3o do DevTools remoto:",i)}),s}function St(o={}){let{mode:t="local",url:e}=o,s,r=!1;if(typeof o.container=="string"){let n=document.querySelector(o.container);if(!n)throw new Error(`[bit-form] Container '${o.container}' n\xE3o encontrado na p\xE1gina.`);s=n}else o.container instanceof HTMLElement?s=o.container:(s=document.createElement("div"),s.id="bit-form-devtools-root",s.style.position="fixed",s.style.bottom="20px",s.style.right="20px",s.style.zIndex="9999",s.style.maxHeight="80vh",s.style.overflowY="auto",s.style.boxShadow="0 10px 25px rgba(0,0,0,0.1)",document.body.appendChild(s),r=!0);let i;if(t==="local")console.log("[bit-form] DevTools iniciado em modo Local."),i=kt(s);else if(t==="remote")console.log("[bit-form] DevTools iniciado em modo Remote."),i=Mt(s,e);else throw new Error(`[bit-form] Modo DevTools inv\xE1lido: ${t}`);return{...i,destroy:()=>{i&&typeof i.destroy=="function"&&i.destroy(),r&&s.parentNode?s.parentNode.removeChild(s):s.innerHTML=""}}}var R= (_class6 =class{__init12() {this.cleanupFn=null}constructor(t){;_class6.prototype.__init12.call(this);this.store=t,this.setup()}setup(){let t=this.store.config.devTools;if(!t)return;let e=typeof t=="boolean"?{enabled:t,mode:"local"}:{enabled:!0,mode:_nullishCoalesce(t.mode, () => ("local")),...t};if(e.enabled)if(e.mode==="remote"){let s=e.url||"ws://localhost:3000";this.cleanupFn=Pt(s)}else{let s=St();s&&typeof s.destroy=="function"&&(this.cleanupFn=s.destroy)}}destroy(){this.cleanupFn&&this.cleanupFn()}}, _class6);var H= (_class7 =class{constructor() { _class7.prototype.__init13.call(this); }__init13() {this.dirtyPaths=new Set}updateForPath(t,e,s){for(let n of this.dirtyPaths)n.startsWith(t+".")&&this.dirtyPaths.delete(n);let r=g(e,t),i=g(s,t);return b(r,i)?this.dirtyPaths.delete(t):this.dirtyPaths.add(t),this.dirtyPaths.size>0}rebuild(t,e){return this.dirtyPaths=_(t,e),this.dirtyPaths.size>0}clear(){this.dirtyPaths.clear()}get isDirty(){return this.dirtyPaths.size>0}getDirtyPaths(){return this.dirtyPaths}buildDirtyValues(t){if(this.dirtyPaths.size===0)return{};let e={},s=new Set;for(let r of this.dirtyPaths){let i=r.match(/^(.+)\.(\d+)/);if(i){let n=i[1];if(s.has(n))continue;s.add(n),this.setNestedValue(e,n,this.getNestedValue(t,n))}else this.setNestedValue(e,r,this.getNestedValue(t,r))}return e}getNestedValue(t,e){let s=e.split("."),r=t;for(let i of s){if(r==null)return;r=r[i]}return r}setNestedValue(t,e,s){let r=e.split("."),i=t;for(let n=0;n<r.length-1;n++){let l=r[n];l in i||(i[l]={}),i=i[l]}i[r[r.length-1]]=s}}, _class7);var O=class{constructor(t,e,s){this.getState=t;this.getInitialValues=e;this.getScopeFields=s}getStepStatus(t){let e=this.getScopeFields(t),s=this.getState(),r=e.some(l=>!!s.errors[l]),i=e.some(l=>{let a=g(s.values,l),d=g(this.getInitialValues(),l);return!b(a,d)}),n=this.getStepErrors(t);return{hasErrors:r,isDirty:i,errors:n}}getStepErrors(t){let e=this.getScopeFields(t),s=this.getState(),r={};for(let i of e){let n=s.errors[i];n&&(r[i]=n)}return r}};var $=class{constructor(t,e,s){this.depsMg=t;this.getState=e;this.getConfig=s}isHidden(t){return this.depsMg.isHidden(t)}isRequired(t){return this.depsMg.isRequired(t,this.getState().values)}isFieldDirty(t){let e=g(this.getState().values,t),s=g(this.getConfig().initialValues,t);return!b(e,s)}isFieldValidating(t){return!!this.getState().isValidating[t]}};var U=class{constructor(t,e){this.getState=t;this.internalUpdateState=e}setError(t,e){let s={...this.getState().errors,[t]:e};e||delete s[t],this.internalUpdateState({errors:s})}setErrors(t){this.internalUpdateState({errors:{...this.getState().errors,...t}})}setServerErrors(t){let e={};for(let[s,r]of Object.entries(t))e[s]=Array.isArray(r)?r[0]:r;this.setErrors(e)}};function Ut(){if(typeof globalThis>"u")return;let o=globalThis.localStorage;if(o)return{getItem:t=>o.getItem(t),setItem:(t,e)=>o.setItem(t,e),removeItem:t=>o.removeItem(t)}}var N=class{constructor(t,e,s,r){this.config=t;this.getValues=e;this.getDirtyValues=s;this.applyRestoredValues=r}getStorage(){return this.config.storage||Ut()}canPersist(){return!!(this.config.enabled&&this.config.key&&this.getStorage())}handleError(t){_optionalChain([this, 'access', _73 => _73.config, 'access', _74 => _74.onError, 'optionalCall', _75 => _75(t)])}async saveNow(){if(!this.canPersist())return;let t=this.getStorage();if(t)try{let e=this.config.mode==="dirtyValues"?this.getDirtyValues():this.getValues(),s=this.config.serialize(p(e));await t.setItem(this.config.key,s)}catch(e){this.handleError(e)}}queueSave(){!this.canPersist()||!this.config.autoSave||(this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.saveNow()},this.config.debounceMs))}async restore(){if(!this.canPersist())return!1;let t=this.getStorage();if(!t)return!1;try{let e=await t.getItem(this.config.key);if(!e)return!1;let s=this.config.deserialize(e);return!s||typeof s!="object"?!1:(this.applyRestoredValues(s),!0)}catch(e){return this.handleError(e),!1}}async clear(){if(!this.canPersist())return;let t=this.getStorage();if(t)try{await t.removeItem(this.config.key)}catch(e){this.handleError(e)}}destroy(){this.timer&&(clearTimeout(this.timer),this.timer=void 0)}};var q= (_class8 =class{constructor(t,e){;_class8.prototype.__init14.call(this);_class8.prototype.__init15.call(this);this.plugins=t;this.contextFactory=e}__init14() {this.teardownFns=[]}__init15() {this.notifyingError=!1}setupAll(){this.plugins.forEach(t=>{if(t.setup)try{let e=t.setup(this.contextFactory());typeof e=="function"&&this.teardownFns.push(e)}catch(e){this.reportError("setup",e,void 0,t.name)}})}async beforeValidate(t){await this.emitHook("beforeValidate",t)}async afterValidate(t){await this.emitHook("afterValidate",t)}async beforeSubmit(t){await this.emitHook("beforeSubmit",t)}async afterSubmit(t){await this.emitHook("afterSubmit",t)}onFieldChange(t){this.plugins.forEach(e=>{let s=_optionalChain([e, 'access', _76 => _76.hooks, 'optionalAccess', _77 => _77.onFieldChange]);if(s)try{let r=s(t,this.contextFactory());Promise.resolve(r).catch(i=>{this.reportError("onFieldChange",i,t,e.name)})}catch(r){this.reportError("onFieldChange",r,t,e.name)}})}async reportError(t,e,s,r){if(this.notifyingError)return;this.notifyingError=!0;let i=this.contextFactory(),n={source:t,pluginName:r,error:e,event:s,values:i.getState().values,state:i.getState()};for(let l of this.plugins){let a=_optionalChain([l, 'access', _78 => _78.hooks, 'optionalAccess', _79 => _79.onError]);if(a)try{await a(n,i)}catch (e2){}}this.notifyingError=!1}destroy(){for(let t=this.teardownFns.length-1;t>=0;t-=1){let e=this.teardownFns[t];try{e()}catch(s){this.reportError("teardown",s)}}this.teardownFns=[]}async emitHook(t,e){let s=this.contextFactory();for(let r of this.plugins){let i=_optionalChain([r, 'access', _80 => _80.hooks, 'optionalAccess', _81 => _81[t]]);if(i)try{await i(e,s)}catch(n){await this.reportError(t,n,e,r.name)}}}}, _class8);var L= (_class9 =class{__init16() {this.listeners=new Set}__init17() {this.selectorListeners=new Set}constructor(t={}){;_class9.prototype.__init16.call(this);_class9.prototype.__init17.call(this);this.config=Et(t),this.depsMg=new F,this.computedMg=new D(()=>this.getComputedEntries()),this.validatorMg=new I(this),this.dirtyMg=new H,this.lifecycleMg=new A(this),this.historyMg=new w(!!this.config.enableHistory,_nullishCoalesce(this.config.historyLimit, () => (15))),this.arraysMg=new C(this),this.devtoolsMg=new R(this),this.scopeMg=new O(()=>this.state,()=>this.config.initialValues,r=>this.getScopeFields(r)),this.queryMg=new $(this.depsMg,()=>this.state,()=>this.config),this.errorMg=new U(()=>this.state,r=>this.internalUpdateState(r)),this.persistMg=new N(this.config.persist,()=>this.state.values,()=>this.getDirtyValues(),r=>this.applyPersistedValues(r));let e=p(this.config.initialValues);this.config.fields&&Object.entries(this.config.fields).forEach(([r,i])=>{this.depsMg.register(r,i,e)});let s=this.computedMg.apply(e);this.state={values:s,errors:{},touched:{},isValidating:{},isValid:!0,isSubmitting:!1,isDirty:!1},this.internalSaveSnapshot(),this.storeId=this.config.name||`bit-form-${Math.random().toString(36).substring(2,9)}`,this.pluginMg=new q(this.config.plugins,()=>({storeId:this.storeId,getState:()=>this.getState(),getConfig:()=>this.getConfig()})),this.pluginMg.setupAll(),m.stores[this.storeId]=this}getConfig(){return this.config}getFieldConfig(t){return this.depsMg.fieldConfigs.get(t)||_optionalChain([this, 'access', _82 => _82.config, 'access', _83 => _83.fields, 'optionalAccess', _84 => _84[t]])}getScopeFields(t){let e=[];return this.depsMg.fieldConfigs.forEach((s,r)=>{s.scope===t&&e.push(r)}),e}getComputedEntries(){let t=[];return this.depsMg.fieldConfigs.forEach((e,s)=>{e.computed&&t.push([s,e.computed])}),t}getTransformEntries(){let t=[];return this.depsMg.fieldConfigs.forEach((e,s)=>{e.transform&&t.push([s,e.transform])}),t}resolveMask(t){let e=_optionalChain([this, 'access', _85 => _85.getFieldConfig, 'call', _86 => _86(t), 'optionalAccess', _87 => _87.mask]);if(e)return typeof e=="string"?_optionalChain([this, 'access', _88 => _88.config, 'access', _89 => _89.masks, 'optionalAccess', _90 => _90[e]]):e}getState(){return this.state}getFieldState(t){return{value:g(this.state.values,t),error:this.state.errors[t],touched:!!this.state.touched[t],isHidden:this.isHidden(t),isRequired:this.isRequired(t),isDirty:this.isFieldDirty(t),isValidating:this.isFieldValidating(t)}}get isValid(){return this.state.isValid}get isSubmitting(){return this.state.isSubmitting}get isDirty(){return this.state.isDirty}registerField(t,e){this.depsMg.register(t,e,this.state.values),this.depsMg.isHidden(t)&&this.notify()}unregisterField(t){if(_optionalChain([this, 'access', _91 => _91.config, 'access', _92 => _92.fields, 'optionalAccess', _93 => _93[t]]))return;this.depsMg.unregister(t);let e={...this.state.errors},s={...this.state.touched},r=!1;e[t]&&(delete e[t],r=!0),s[t]&&(delete s[t],r=!0),r&&this.internalUpdateState({errors:e,touched:s})}unregisterPrefix(t){this.depsMg.unregisterPrefix(t)}isHidden(t){return this.queryMg.isHidden(t)}isRequired(t){return this.queryMg.isRequired(t)}isFieldDirty(t){return this.queryMg.isFieldDirty(t)}isFieldValidating(t){return this.queryMg.isFieldValidating(t)}subscribe(t){return this.listeners.add(t),()=>this.listeners.delete(t)}subscribeSelector(t,e,s){let r=_nullishCoalesce(_optionalChain([s, 'optionalAccess', _94 => _94.equalityFn]), () => (b)),i=t(this.state),n={notify:l=>{let a=t(l);r(i,a)||(i=a,e(a))}};return this.selectorListeners.add(n),_optionalChain([s, 'optionalAccess', _95 => _95.emitImmediately])&&e(i),()=>this.selectorListeners.delete(n)}subscribePath(t,e,s){return this.subscribeSelector(r=>g(r.values,t),e,s)}watch(t,e){return this.subscribePath(t,e,{equalityFn:T})}setField(t,e){this.setFieldWithMeta(t,e,{origin:"setField"})}setFieldWithMeta(t,e,s={origin:"setField"}){this.lifecycleMg.updateField(t,e,s)}blurField(t){this.internalSaveSnapshot(),this.state.touched[t]||this.internalUpdateState({touched:{...this.state.touched,[t]:!0}}),this.validatorMg.trigger([t])}markFieldsTouched(t){if(t.length===0)return;let e={...this.state.touched};t.forEach(s=>e[s]=!0),this.internalUpdateState({touched:e})}setValues(t){this.rebase(t)}replaceValues(t){this.lifecycleMg.replaceValues(t)}hydrate(t){this.lifecycleMg.hydrateValues(t)}rebase(t){this.lifecycleMg.rebaseValues(t)}setError(t,e){this.errorMg.setError(t,e)}setErrors(t){this.errorMg.setErrors(t)}setServerErrors(t){this.errorMg.setServerErrors(t)}reset(){this.lifecycleMg.reset()}async submit(t){return this.lifecycleMg.submit(t)}registerMask(t,e){this.config.masks={...this.config.masks||{},[t]:e}}getDirtyValues(){return this.dirtyMg.buildDirtyValues(this.state.values)}async restorePersisted(){return this.persistMg.restore()}async forceSave(){await this.persistMg.saveNow()}async clearPersisted(){await this.persistMg.clear()}pushItem(t,e){this.arraysMg.pushItem(t,e)}prependItem(t,e){this.arraysMg.prependItem(t,e)}insertItem(t,e,s){this.arraysMg.insertItem(t,e,s)}removeItem(t,e){this.arraysMg.removeItem(t,e)}swapItems(t,e,s){this.arraysMg.swapItems(t,e,s)}moveItem(t,e,s){this.arraysMg.moveItem(t,e,s)}get canUndo(){return this.historyMg.canUndo}get canRedo(){return this.historyMg.canRedo}undo(){let t=this.historyMg.undo();if(t){let e=this.dirtyMg.rebuild(t,this.config.initialValues);this.internalUpdateState({values:t,isDirty:e}),this.validatorMg.validate()}}redo(){let t=this.historyMg.redo();if(t){let e=this.dirtyMg.rebuild(t,this.config.initialValues);this.internalUpdateState({values:t,isDirty:e}),this.validatorMg.validate()}}getHistoryMetadata(){return this.historyMg.getMetadata()}validate(t){return this.validatorMg.validate(t)}emitBeforeValidate(t){return this.pluginMg.beforeValidate(t)}emitAfterValidate(t){return this.pluginMg.afterValidate(t)}emitBeforeSubmit(t){return this.pluginMg.beforeSubmit(t)}emitAfterSubmit(t){return this.pluginMg.afterSubmit(t)}emitFieldChange(t){this.pluginMg.onFieldChange(t)}emitOperationalError(t){return this.pluginMg.reportError(t.source,t.error,t.payload)}hasValidationsInProgress(t){return this.validatorMg.hasValidationsInProgress(t)}beginFieldValidation(t){this.validatorMg.beginExternalValidation(t)}endFieldValidation(t){this.validatorMg.endExternalValidation(t)}setFieldAsyncError(t,e){return this.validatorMg.setExternalError(t,e)}clearFieldAsyncError(t){return this.validatorMg.setExternalError(t,void 0)}triggerValidation(t){this.validatorMg.trigger(t)}getStepStatus(t){return this.scopeMg.getStepStatus(t)}getStepErrors(t){return this.scopeMg.getStepErrors(t)}updateDependencies(t,e){return this.depsMg.updateDependencies(t,e)}isFieldHidden(t){return this.depsMg.isHidden(t)}evaluateAllDependencies(t){this.depsMg.evaluateAll(t)}getHiddenFields(){return Array.from(this.depsMg.hiddenFields)}getRequiredErrors(t){return this.depsMg.getRequiredErrors(t)}clearFieldValidation(t){this.validatorMg.clear(t)}handleFieldAsyncValidation(t,e){this.validatorMg.handleAsync(t,e)}cancelAllValidations(){this.validatorMg.cancelAll()}validateNow(t){return this.validatorMg.validate(t)}updateDirtyForPath(t,e,s){return this.dirtyMg.updateForPath(t,e,s)}rebuildDirtyState(t,e){return this.dirtyMg.rebuild(t,e)}clearDirtyState(){this.dirtyMg.clear()}buildDirtyValues(t){return this.dirtyMg.buildDirtyValues(t)}resetHistory(t){this.historyMg.reset(t)}internalUpdateState(t){let e=this.state,s={...this.state,...t};t.values&&(s.values=this.computedMg.apply(t.values)),t.errors&&(s.isValid=Object.keys(s.errors).length===0),this.state=s,t.values&&this.persistMg.queueSave(),this.notify(e,s),m.dispatch(this.storeId,this.state)}internalSaveSnapshot(){this.historyMg.saveSnapshot(this.state.values)}applyPersistedValues(t){let e=p({...this.config.initialValues,...t});this.validatorMg.cancelAll(),this.depsMg.evaluateAll(e);let s=this.dirtyMg.rebuild(e,this.config.initialValues);this.internalUpdateState({values:e,errors:{},touched:{},isValidating:{},isValid:!0,isDirty:s,isSubmitting:!1}),this.internalSaveSnapshot(),this.validatorMg.validate()}cleanup(){this.listeners.clear(),this.selectorListeners.clear(),this.validatorMg.cancelAll(),this.devtoolsMg.destroy(),this.persistMg.destroy(),this.pluginMg.destroy(),delete m.stores[this.storeId]}notify(t=this.state,e=this.state){this.listeners.forEach(s=>s()),this.selectorListeners.forEach(s=>{s.notify(e)})}}, _class9);function Nt(o={}){let t=new L(o);return{get config(){return t.config},getConfig:()=>t.getConfig(),getState:()=>t.getState(),getFieldState:t.getFieldState.bind(t),subscribe:t.subscribe.bind(t),subscribePath:t.subscribePath.bind(t),subscribeSelector:t.subscribeSelector.bind(t),setField:t.setField.bind(t),blurField:t.blurField.bind(t),replaceValues:t.replaceValues.bind(t),hydrate:t.hydrate.bind(t),rebase:t.rebase.bind(t),setValues:t.setValues.bind(t),setError:t.setError.bind(t),setErrors:t.setErrors.bind(t),setServerErrors:t.setServerErrors.bind(t),validate:t.validate.bind(t),reset:t.reset.bind(t),submit:t.submit.bind(t),registerMask:t.registerMask.bind(t),getDirtyValues:t.getDirtyValues.bind(t),restorePersisted:t.restorePersisted.bind(t),forceSave:t.forceSave.bind(t),clearPersisted:t.clearPersisted.bind(t),registerField:t.registerField.bind(t),unregisterField:t.unregisterField.bind(t),unregisterPrefix:t.unregisterPrefix.bind(t),isHidden:t.isHidden.bind(t),isRequired:t.isRequired.bind(t),isFieldDirty:t.isFieldDirty.bind(t),isFieldValidating:t.isFieldValidating.bind(t),watch:t.watch.bind(t),pushItem:t.pushItem.bind(t),prependItem:t.prependItem.bind(t),insertItem:t.insertItem.bind(t),removeItem:t.removeItem.bind(t),moveItem:t.moveItem.bind(t),swapItems:t.swapItems.bind(t),getHistoryMetadata:t.getHistoryMetadata.bind(t),undo:t.undo.bind(t),redo:t.redo.bind(t),getStepStatus:t.getStepStatus.bind(t),getStepErrors:t.getStepErrors.bind(t),markFieldsTouched:t.markFieldsTouched.bind(t),hasValidationsInProgress:t.hasValidationsInProgress.bind(t),beginFieldValidation:t.beginFieldValidation.bind(t),endFieldValidation:t.endFieldValidation.bind(t),setFieldAsyncError:t.setFieldAsyncError.bind(t),clearFieldAsyncError:t.clearFieldAsyncError.bind(t),resolveMask:t.resolveMask.bind(t),getScopeFields:t.getScopeFields.bind(t),cleanup:t.cleanup.bind(t)}}var Ft=o=>{let t=typeof o.getState=="function"?o.getState():o,e=_optionalChain([o, 'optionalAccess', _96 => _96.getHistoryMetadata, 'optionalCall', _97 => _97()])||{canUndo:!1,canRedo:!1,historyIndex:-1,historySize:0};return{...t,_meta:{canUndo:e.canUndo,canRedo:e.canRedo,totalSteps:e.historySize,currentIndex:e.historyIndex}}},j=null;function Pt(o){j&&(console.warn("[bit-form] Reiniciando ponte do DevTools (Fast Refresh detectado)."),j());let t=null,e=null,s,r=!1,i=()=>{r=!1,t=new WebSocket(o),t.onopen=()=>{console.log("[bit-form] \u{1F50C} Conectado ao CLI DevTools via WebSocket.");let l=Object.entries(m.stores);if(l.length>0){let a=l.reduce((d,[c,u])=>(d[c]=Ft(u),d),{});_optionalChain([t, 'optionalAccess', _98 => _98.send, 'call', _99 => _99(JSON.stringify({type:"STATE_UPDATE",payload:a}))])}e=m.subscribe((a,d)=>{if(_optionalChain([t, 'optionalAccess', _100 => _100.readyState])===WebSocket.OPEN){let c=m.stores[a];c&&t.send(JSON.stringify({type:"STATE_UPDATE",payload:{[a]:Ft(c)}}))}}),s=setInterval(()=>{_optionalChain([t, 'optionalAccess', _101 => _101.readyState])===WebSocket.OPEN&&t.send(JSON.stringify({type:"PING"}))},3e4)},t.onmessage=l=>{try{let a=JSON.parse(l.data);if(a.type==="ACTION"){let d=a.payload,c=d.storeId,u=d.action;if(typeof c!="string"||typeof u!="string")return;let f=m.stores[c];if(!f||typeof f!="object")return;let y=f[u];typeof y=="function"&&y.call(f)}}catch(a){console.warn("[bit-form] Erro ao processar comando do CLI:",a)}},t.onclose=()=>{e&&e(),clearInterval(s),r?console.log("[bit-form] Ponte antiga encerrada com sucesso."):(console.log("[bit-form] Conex\xE3o perdida. Reconectando em 3s..."),setTimeout(i,3e3))}};i();let n=()=>{r=!0,e&&e(),clearInterval(s),t&&(t.readyState===WebSocket.OPEN||t.readyState===WebSocket.CONNECTING)&&t.close(),j=null};return j=n,n}exports.a = m; exports.b = p; exports.c = M; exports.d = b; exports.e = T; exports.f = g; exports.g = v; exports.h = wt; exports.i = Tt; exports.j = Ct; exports.k = E; exports.l = xt; exports.m = h; exports.n = S; exports.o = J; exports.p = P; exports.q = K; exports.r = G; exports.s = Z; exports.t = Q; exports.u = tt; exports.v = et; exports.w = st; exports.x = rt; exports.y = it; exports.z = ot; exports.A = nt; exports.B = at; exports.C = lt; exports.D = dt; exports.E = ct; exports.F = ut; exports.G = gt; exports.H = Dt; exports.I = It; exports.J = At; exports.K = Rt; exports.L = pt; exports.M = ht; exports.N = Ht; exports.O = ft; exports.P = mt; exports.Q = yt; exports.R = bt; exports.S = Ot; exports.T = vt; exports.U = Pt; exports.V = St; exports.W = Nt;
|
|
133
|
-
//# sourceMappingURL=chunk-YWXX6XRV.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/store/bus.ts","../src/core/utils.ts","../src/devtools/ui/styles.ts","../src/devtools/ui/index.ts","../src/devtools/init-dev-tools.ts"],"names":["rootGlobal","id","state","fn","bitBus","deepClone","obj","item","clone","key","deepMerge","target","source","base","sourceValue","baseValue","valueEqual","a","b","deepEqual","keysA","keysB","collectDirtyPaths","initial","prefix","result","allKeys","k","p"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/chunk-YWXX6XRV.cjs","sourcesContent":["import { BitBusListener, BitFormGlobal } from \"./bus-types\";\n\ndeclare global {\n var __BIT_FORM__: BitFormGlobal | undefined;\n}\n\nconst rootGlobal =\n typeof globalThis !== \"undefined\"\n ? globalThis\n : typeof global !== \"undefined\"\n ? global\n : window;\n\nif (!rootGlobal.__BIT_FORM__) {\n rootGlobal.__BIT_FORM__ = {\n stores: {},\n listeners: new Set<BitBusListener>(),\n\n dispatch(id: string, state: any) {\n this.listeners.forEach((fn: BitBusListener) => fn(id, state));\n },\n\n subscribe(fn: BitBusListener) {\n this.listeners.add(fn);\n return () => {\n this.listeners.delete(fn);\n };\n },\n };\n}\n\nexport const bitBus = rootGlobal.__BIT_FORM__ as BitFormGlobal;\n","export function deepClone<T>(obj: T): T {\n if (obj === null || typeof obj !== \"object\") {\n return obj;\n }\n\n if (obj instanceof Date) {\n return new Date(obj.getTime()) as any as T;\n }\n if (obj instanceof RegExp) {\n return new RegExp(obj.source, obj.flags) as any as T;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => deepClone(item)) as any as T;\n }\n\n const clone: any = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n clone[key] = deepClone((obj as any)[key]);\n }\n }\n return clone as T;\n}\n\nexport function deepMerge<T>(target: T, source: any): T {\n if (source === undefined) {\n return deepClone(target);\n }\n\n if (\n source === null ||\n typeof source !== \"object\" ||\n source instanceof Date ||\n source instanceof RegExp ||\n Array.isArray(source)\n ) {\n return deepClone(source as T);\n }\n\n const base =\n target && typeof target === \"object\" && !Array.isArray(target)\n ? deepClone(target as any)\n : ({} as Record<string, unknown>);\n\n for (const key of Object.keys(source)) {\n const sourceValue = source[key];\n const baseValue = (base as Record<string, unknown>)[key];\n\n if (\n sourceValue !== null &&\n typeof sourceValue === \"object\" &&\n !Array.isArray(sourceValue) &&\n !(sourceValue instanceof Date) &&\n !(sourceValue instanceof RegExp)\n ) {\n (base as Record<string, unknown>)[key] = deepMerge(\n baseValue,\n sourceValue,\n );\n continue;\n }\n\n (base as Record<string, unknown>)[key] = deepClone(sourceValue);\n }\n\n return base as T;\n}\n\n/**\n * Fast equality for single values. Uses === for primitives, deepEqual for objects/arrays.\n * Prefer over deepEqual when comparing a single field value (e.g. isFieldDirty, getStepStatus).\n */\nexport function valueEqual(a: any, b: any): boolean {\n if (a === b) return true;\n if (\n a === null ||\n typeof a !== \"object\" ||\n b === null ||\n typeof b !== \"object\"\n ) {\n return false;\n }\n return deepEqual(a, b);\n}\n\nexport function deepEqual(a: any, b: any): boolean {\n if (a === b) return true;\n if (\n a === null ||\n typeof a !== \"object\" ||\n b === null ||\n typeof b !== \"object\"\n ) {\n return false;\n }\n\n if (a instanceof Date && b instanceof Date)\n return a.getTime() === b.getTime();\n if (a instanceof RegExp && b instanceof RegExp)\n return a.toString() === b.toString();\n\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n\n if (keysA.length !== keysB.length) return false;\n\n for (const key of keysA) {\n if (\n !Object.prototype.hasOwnProperty.call(b, key) ||\n !deepEqual(a[key], b[key])\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Collects all paths where obj differs from initial. Used to rebuild dirtyPaths after full state replacement.\n */\nexport function collectDirtyPaths(\n obj: any,\n initial: any,\n prefix = \"\",\n result: Set<string> = new Set(),\n): Set<string> {\n if (valueEqual(obj, initial)) return result;\n if (\n obj === null ||\n typeof obj !== \"object\" ||\n initial === null ||\n typeof initial !== \"object\"\n ) {\n if (prefix) result.add(prefix);\n return result;\n }\n if (Array.isArray(obj) || Array.isArray(initial)) {\n if (!valueEqual(obj, initial) && prefix) result.add(prefix);\n return result;\n }\n const allKeys = new Set([\n ...Object.keys(obj || {}),\n ...Object.keys(initial || {}),\n ]);\n for (const k of allKeys) {\n const p = prefix ? `${prefix}.${k}` : k;\n collectDirtyPaths((obj as any)?.[k], (initial as any)?.[k], p, result);\n }\n return result;\n}\n\nconst pathCache = new Map<string, string[]>();\n\nexport function getDeepValue(obj: any, path: string): any {\n if (!path) return obj;\n\n const keys = pathCache.get(path) || path.split(\".\");\n if (!pathCache.has(path)) pathCache.set(path, keys);\n\n let current = obj;\n for (const key of keys) {\n if (current === null || current === undefined) return undefined;\n current = current[key];\n }\n return current;\n}\n\nexport function setDeepValue(obj: any, path: string, value: any): any {\n if (!path) return value;\n\n const keys = pathCache.get(path) || path.split(\".\");\n if (!pathCache.has(path)) pathCache.set(path, keys);\n\n const result = Array.isArray(obj) ? [...obj] : { ...obj };\n let current = result;\n\n for (let i = 0; i < keys.length - 1; i++) {\n const key = keys[i];\n const nextKey = keys[i + 1];\n\n const isNextNumeric = /^\\d+$/.test(nextKey);\n const currentValue = current[key];\n\n if (currentValue === null || currentValue === undefined) {\n current[key] = isNextNumeric ? [] : {};\n } else {\n current[key] = Array.isArray(currentValue)\n ? [...currentValue]\n : { ...currentValue };\n }\n\n current = current[key];\n }\n\n current[keys[keys.length - 1]] = value;\n\n return result;\n}\n\nexport function cleanPrefixedKeys(\n obj: Record<string, any>,\n prefix: string,\n): Record<string, any> {\n const newObj: Record<string, any> = {};\n const prefixWithDot = `${prefix}.`;\n\n for (const key in obj) {\n if (key !== prefix && !key.startsWith(prefixWithDot)) {\n newObj[key] = obj[key];\n }\n }\n return newObj;\n}\n\nexport const shiftKeys = (\n obj: Record<string, any>,\n path: string,\n removedIndex: number,\n) => {\n const newObj: Record<string, any> = {};\n const prefix = `${path}.`;\n\n Object.keys(obj).forEach((key) => {\n if (!key.startsWith(prefix)) {\n newObj[key] = obj[key];\n return;\n }\n const remaining = key.substring(prefix.length);\n const parts = remaining.split(\".\");\n const currentIdx = parseInt(parts[0], 10);\n const rest = parts.slice(1).join(\".\");\n\n if (currentIdx === removedIndex) return;\n\n if (currentIdx > removedIndex) {\n const newIdx = currentIdx - 1;\n const newKey = rest ? `${prefix}${newIdx}.${rest}` : `${prefix}${newIdx}`;\n newObj[newKey] = obj[key];\n } else {\n newObj[key] = obj[key];\n }\n });\n return newObj;\n};\n\nexport const swapKeys = (\n obj: Record<string, any>,\n path: string,\n indexA: number,\n indexB: number,\n) => {\n const newObj: Record<string, any> = {};\n const prefix = `${path}.`;\n\n Object.keys(obj).forEach((key) => {\n if (!key.startsWith(prefix)) {\n newObj[key] = obj[key];\n return;\n }\n const remaining = key.substring(prefix.length);\n const parts = remaining.split(\".\");\n const currentIdx = parseInt(parts[0], 10);\n const rest = parts.slice(1).join(\".\");\n\n if (currentIdx === indexA) {\n const newKey = rest ? `${prefix}${indexB}.${rest}` : `${prefix}${indexB}`;\n newObj[newKey] = obj[key];\n } else if (currentIdx === indexB) {\n const newKey = rest ? `${prefix}${indexA}.${rest}` : `${prefix}${indexA}`;\n newObj[newKey] = obj[key];\n } else {\n newObj[key] = obj[key];\n }\n });\n return newObj;\n};\n\nexport const moveKeys = (\n obj: Record<string, any>,\n path: string,\n from: number,\n to: number,\n) => {\n const newObj: Record<string, any> = {};\n const prefix = `${path}.`;\n\n Object.keys(obj).forEach((key) => {\n if (!key.startsWith(prefix)) {\n newObj[key] = obj[key];\n return;\n }\n const remaining = key.substring(prefix.length);\n const parts = remaining.split(\".\");\n const currentIdx = parseInt(parts[0], 10);\n const rest = parts.slice(1).join(\".\");\n\n let newIdx = currentIdx;\n if (currentIdx === from) {\n newIdx = to;\n } else if (from < to && currentIdx > from && currentIdx <= to) {\n newIdx = currentIdx - 1;\n } else if (from > to && currentIdx >= to && currentIdx < from) {\n newIdx = currentIdx + 1;\n }\n\n const newKey = rest ? `${prefix}${newIdx}.${rest}` : `${prefix}${newIdx}`;\n newObj[newKey] = obj[key];\n });\n return newObj;\n};\n\n/**\n * Checks if a value looks like a server validation error response.\n * Handles shapes like { email: \"Taken\" }, { errors: { email: [\"Taken\"] } }, etc.\n */\nexport function isValidationErrorShape(\n x: unknown,\n): x is Record<string, string | string[]> {\n if (typeof x !== \"object\" || x === null || Array.isArray(x)) return false;\n\n const obj = (x as Record<string, unknown>).errors ?? x;\n if (typeof obj !== \"object\" || obj === null || Array.isArray(obj))\n return false;\n\n return Object.values(obj as Record<string, unknown>).every(\n (v) =>\n typeof v === \"string\" ||\n (Array.isArray(v) && v.every((i) => typeof i === \"string\")),\n );\n}\n\n/**\n * Extracts server errors in the format expected by setServerErrors.\n */\nexport function extractServerErrors(\n x: unknown,\n): Record<string, string | string[]> {\n if (!isValidationErrorShape(x)) return {};\n\n const obj = (x as Record<string, unknown>).errors ?? x;\n return obj as Record<string, string | string[]>;\n}\n","export function getDevToolsCSS(): string {\n return `\n .bit-devtools-container {\n position: fixed;\n bottom: 20px;\n right: 20px;\n z-index: 9999;\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n }\n\n .bit-devtools-trigger {\n background: #10b981;\n color: #fff;\n border: none;\n border-radius: 50%;\n width: 48px;\n height: 48px;\n cursor: pointer;\n box-shadow: 0 4px 12px rgba(16, 185, 129, 0.4);\n font-weight: bold;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.2s;\n font-size: 16px;\n margin-top: 16px;\n }\n .bit-devtools-trigger:hover { transform: scale(1.05); }\n\n .bit-devtools-panel {\n width: 450px;\n max-height: 80vh;\n background: #0f172a;\n color: #f8fafc;\n border-radius: 8px;\n padding: 16px;\n overflow-y: auto;\n box-shadow: 0 20px 25px -5px rgba(0,0,0,0.5), 0 8px 10px -6px rgba(0,0,0,0.5);\n border: 1px solid #334155;\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n .bit-devtools-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-bottom: 12px;\n border-bottom: 1px solid #1e293b;\n }\n .bit-devtools-header h2 { margin: 0; font-size: 16px; display: flex; align-items: center; gap: 8px; }\n\n .bit-store-block {\n background: #1e293b;\n border-radius: 6px;\n padding: 12px;\n border: 1px solid #334155;\n }\n\n .bit-store-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n }\n .bit-store-title { margin: 0; color: #38bdf8; font-size: 14px; font-weight: bold; }\n\n .bit-badge-group { display: flex; gap: 6px; flex-wrap: wrap; }\n .bit-badge { font-size: 10px; padding: 2px 6px; border-radius: 4px; text-transform: uppercase; font-weight: bold; }\n .badge-success { background: rgba(16, 185, 129, 0.2); color: #34d399; border: 1px solid rgba(16, 185, 129, 0.2); }\n .badge-error { background: rgba(239, 68, 68, 0.2); color: #f87171; border: 1px solid rgba(239, 68, 68, 0.2); }\n .badge-warn { background: rgba(245, 158, 11, 0.2); color: #fbbf24; border: 1px solid rgba(245, 158, 11, 0.2); }\n .badge-info { background: rgba(56, 189, 248, 0.2); color: #7dd3fc; border: 1px solid rgba(56, 189, 248, 0.2); }\n\n .bit-section-title { font-size: 11px; color: #94a3b8; text-transform: uppercase; letter-spacing: 1px; margin: 12px 0 4px 0; display: block; }\n\n .bit-controls { display: flex; gap: 6px; margin-bottom: 12px; background: #0f172a; padding: 8px; border-radius: 6px; }\n .bit-action-btn { flex: 1; background: #334155; color: #e2e8f0; border: 1px solid #475569; padding: 6px 0; border-radius: 4px; cursor: pointer; font-size: 11px; display: flex; align-items: center; justify-content: center; gap: 4px; transition: all 0.2s; }\n .bit-action-btn:hover:not(:disabled) { background: #475569; }\n .bit-action-btn:disabled { opacity: 0.5; cursor: not-allowed; }\n .bit-btn-reset { color: #fca5a5; border-color: rgba(239,68,68,0.3); }\n .bit-btn-reset:hover { background: rgba(239,68,68,0.1) !important; }\n\n pre.bit-pre { background: #020617; padding: 10px; border-radius: 4px; font-size: 11px; overflow-x: auto; border: 1px solid #1e293b; margin: 0; color: #e2e8f0; }\n pre.bit-error-box { background: rgba(239, 68, 68, 0.05); padding: 10px; border-radius: 4px; font-size: 11px; border: 1px dashed #ef4444; color: #fca5a5; margin: 0; overflow-x: auto; }\n `;\n}\n","import { getDevToolsCSS } from \"./styles\";\nimport type { DevToolsActions } from \"../types\";\n\nexport type { DevToolsActions };\n\nexport class BitFormDevToolsUI {\n private container: HTMLElement;\n private actions: DevToolsActions;\n private rootElement: HTMLDivElement;\n private currentStoresState: Record<string, any> = {};\n private isOpen: boolean = false;\n\n constructor(container: HTMLElement, actions: DevToolsActions) {\n this.container = container;\n this.actions = actions;\n\n if (!document.getElementById(\"bit-devtools-styles\")) {\n const style = document.createElement(\"style\");\n style.id = \"bit-devtools-styles\";\n style.textContent = getDevToolsCSS();\n document.head.appendChild(style);\n }\n\n this.rootElement = document.createElement(\"div\");\n this.rootElement.className = \"bit-devtools-container\";\n this.container.appendChild(this.rootElement);\n\n this.rootElement.addEventListener(\"click\", (e) => {\n const target = e.target as HTMLElement;\n\n // Evento do botão flutuante\n if (target.closest(\".bit-devtools-trigger\")) {\n this.isOpen = !this.isOpen;\n this.render();\n return;\n }\n\n // Eventos dos botões de ação\n const btn = target.closest(\".bit-action-btn\");\n if (btn && !btn.hasAttribute(\"disabled\")) {\n const action = btn.getAttribute(\"data-action\");\n const storeId = btn.getAttribute(\"data-store\");\n\n if (action && storeId) {\n if (action === \"undo\") this.actions.onUndo(storeId);\n if (action === \"redo\") this.actions.onRedo(storeId);\n if (action === \"reset\") this.actions.onReset(storeId);\n }\n }\n });\n }\n\n public updateState(storesState: Record<string, any>) {\n this.currentStoresState = storesState;\n this.render();\n }\n\n private render() {\n const storeEntries = Object.entries(this.currentStoresState);\n if (storeEntries.length === 0) {\n this.rootElement.innerHTML = \"\";\n return;\n }\n\n let panelHtml = \"\";\n\n if (this.isOpen) {\n panelHtml = `\n <div class=\"bit-devtools-panel\">\n <div class=\"bit-devtools-header\">\n <h2><span style=\"font-size: 20px;\">🛠</span> Bit-Form DevTools</h2>\n <span style=\"font-size: 11px; color: #64748b;\">v1.0.0</span>\n </div>\n `;\n\n for (const [id, state] of storeEntries) {\n const hasErrors = Object.keys(state.errors || {}).length > 0;\n\n // Lemos os metadados do histórico que o adaptador injetou\n const meta = state._meta || {\n totalSteps: 0,\n currentIndex: -1,\n canUndo: false,\n canRedo: false,\n };\n const currentStep = meta.currentIndex + 1;\n const totalSteps = meta.totalSteps;\n\n panelHtml += `\n <div class=\"bit-store-block\">\n <div class=\"bit-store-header\">\n <h3 class=\"bit-store-title\">${id}</h3>\n <div class=\"bit-badge-group\">\n <span class=\"bit-badge ${state.isValid ? \"badge-success\" : \"badge-error\"}\">\n ${state.isValid ? \"✓ Valid\" : \"✕ Invalid\"}\n </span>\n ${state.isDirty ? `<span class=\"bit-badge badge-warn\">Dirty</span>` : \"\"}\n ${state.isSubmitting ? `<span class=\"bit-badge badge-info\">⏳ Submitting</span>` : \"\"}\n </div>\n </div>\n\n <span class=\"bit-section-title\">Time Travel (${currentStep}/${totalSteps})</span>\n \n <div class=\"bit-controls\">\n <button class=\"bit-action-btn\" data-action=\"undo\" data-store=\"${id}\" ${meta.canUndo ? \"\" : \"disabled\"}>\n <span>↺</span> Undo\n </button>\n <button class=\"bit-action-btn\" data-action=\"redo\" data-store=\"${id}\" ${meta.canRedo ? \"\" : \"disabled\"}>\n <span>↻</span> Redo\n </button>\n <button class=\"bit-action-btn bit-btn-reset\" data-action=\"reset\" data-store=\"${id}\">\n <span>🗑</span> Reset\n </button>\n </div>\n `;\n\n if (hasErrors) {\n panelHtml += `\n <span class=\"bit-section-title\" style=\"color: #f87171;\">⚠️ Validations Failing</span>\n <pre class=\"bit-error-box\">${JSON.stringify(state.errors, null, 2)}</pre>\n `;\n }\n\n panelHtml += `\n <span class=\"bit-section-title\">Values</span>\n <pre class=\"bit-pre\">${JSON.stringify(state.values, null, 2)}</pre>\n </div>\n `;\n }\n\n panelHtml += `</div>`;\n }\n\n // Botão Flutuante (sempre renderizado)\n const triggerHtml = `\n <button class=\"bit-devtools-trigger\" style=\"transform: ${this.isOpen ? \"scale(0.9)\" : \"scale(1)\"};\" title=\"Abrir DevTools\">\n ${this.isOpen ? \"✖\" : \"Bit\"}\n </button>\n `;\n\n this.rootElement.innerHTML = panelHtml + triggerHtml;\n }\n}\n","import { setupLocalDevTools } from \"./adapters/local\";\nimport { setupRemoteDevTools } from \"./adapters/remote\";\nimport type { BitDevToolsOptions } from \"./types\";\n\nexport type { BitDevToolsOptions };\n\nexport function initDevTools(options: BitDevToolsOptions = {}) {\n const { mode = \"local\", url } = options;\n let containerEl: HTMLElement;\n\n let isAutoCreated = false;\n\n if (typeof options.container === \"string\") {\n const el = document.querySelector<HTMLElement>(options.container);\n if (!el)\n throw new Error(\n `[bit-form] Container '${options.container}' não encontrado na página.`,\n );\n containerEl = el;\n } else if (options.container instanceof HTMLElement) {\n containerEl = options.container;\n } else {\n containerEl = document.createElement(\"div\");\n containerEl.id = \"bit-form-devtools-root\";\n containerEl.style.position = \"fixed\";\n containerEl.style.bottom = \"20px\";\n containerEl.style.right = \"20px\";\n containerEl.style.zIndex = \"9999\";\n containerEl.style.maxHeight = \"80vh\";\n containerEl.style.overflowY = \"auto\";\n containerEl.style.boxShadow = \"0 10px 25px rgba(0,0,0,0.1)\";\n document.body.appendChild(containerEl);\n isAutoCreated = true;\n }\n\n let adapterInstance: any;\n\n if (mode === \"local\") {\n console.log(\"[bit-form] DevTools iniciado em modo Local.\");\n adapterInstance = setupLocalDevTools(containerEl);\n } else if (mode === \"remote\") {\n console.log(\"[bit-form] DevTools iniciado em modo Remote.\");\n adapterInstance = setupRemoteDevTools(containerEl, url);\n } else {\n throw new Error(`[bit-form] Modo DevTools inválido: ${mode}`);\n }\n\n return {\n ...adapterInstance,\n destroy: () => {\n if (adapterInstance && typeof adapterInstance.destroy === \"function\") {\n adapterInstance.destroy();\n }\n\n if (isAutoCreated && containerEl.parentNode) {\n containerEl.parentNode.removeChild(containerEl);\n } else {\n containerEl.innerHTML = \"\";\n }\n },\n };\n}\n"]}
|