@lehnihon/bit-form 2.1.2 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +6 -0
  2. package/dist/angular/index.cjs +1 -1
  3. package/dist/angular/index.cjs.map +1 -1
  4. package/dist/angular/index.d.cts +29 -17
  5. package/dist/angular/index.d.ts +29 -17
  6. package/dist/angular/index.js +1 -1
  7. package/dist/angular/index.js.map +1 -1
  8. package/dist/bus-B3pGaiFZ.d.cts +255 -0
  9. package/dist/bus-B3pGaiFZ.d.ts +255 -0
  10. package/dist/chunk-442A4FTZ.cjs +2 -0
  11. package/dist/chunk-442A4FTZ.cjs.map +1 -0
  12. package/dist/chunk-6FJEE6O3.js +133 -0
  13. package/dist/chunk-6FJEE6O3.js.map +1 -0
  14. package/dist/chunk-FOV24ACZ.js +2 -0
  15. package/dist/chunk-FOV24ACZ.js.map +1 -0
  16. package/dist/chunk-YWXX6XRV.cjs +133 -0
  17. package/dist/chunk-YWXX6XRV.cjs.map +1 -0
  18. package/dist/devtools/bridge.cjs +1 -1
  19. package/dist/devtools/bridge.js +1 -1
  20. package/dist/devtools/index.cjs +1 -1
  21. package/dist/devtools/index.js +1 -1
  22. package/dist/index.cjs +1 -1
  23. package/dist/index.cjs.map +1 -1
  24. package/dist/index.d.cts +7 -6
  25. package/dist/index.d.ts +7 -6
  26. package/dist/index.js +1 -1
  27. package/dist/public-types-CtYuIAMP.d.cts +99 -0
  28. package/dist/public-types-Lq3eLstW.d.ts +99 -0
  29. package/dist/react/index.cjs +1 -1
  30. package/dist/react/index.cjs.map +1 -1
  31. package/dist/react/index.d.cts +5 -5
  32. package/dist/react/index.d.ts +5 -5
  33. package/dist/react/index.js +1 -1
  34. package/dist/react/index.js.map +1 -1
  35. package/dist/react-native/index.cjs +1 -1
  36. package/dist/react-native/index.cjs.map +1 -1
  37. package/dist/react-native/index.d.cts +10 -12
  38. package/dist/react-native/index.d.ts +10 -12
  39. package/dist/react-native/index.js +1 -1
  40. package/dist/react-native/index.js.map +1 -1
  41. package/dist/resolvers/joi.d.cts +1 -1
  42. package/dist/resolvers/joi.d.ts +1 -1
  43. package/dist/resolvers/yup.d.cts +1 -1
  44. package/dist/resolvers/yup.d.ts +1 -1
  45. package/dist/resolvers/zod.d.cts +1 -1
  46. package/dist/resolvers/zod.d.ts +1 -1
  47. package/dist/{use-bit-watch-hA0AqCkC.d.ts → use-bit-persist-CWzGfovL.d.cts} +27 -19
  48. package/dist/{use-bit-watch-BRekIj2W.d.cts → use-bit-persist-hxJaKG2S.d.ts} +27 -19
  49. package/dist/vue/index.cjs +1 -1
  50. package/dist/vue/index.cjs.map +1 -1
  51. package/dist/vue/index.d.cts +45 -33
  52. package/dist/vue/index.d.ts +45 -33
  53. package/dist/vue/index.js +1 -1
  54. package/dist/vue/index.js.map +1 -1
  55. package/package.json +1 -1
  56. package/dist/bus-vCbulIYH.d.cts +0 -141
  57. package/dist/bus-vCbulIYH.d.ts +0 -141
  58. package/dist/chunk-2QNUW6ZN.cjs +0 -133
  59. package/dist/chunk-2QNUW6ZN.cjs.map +0 -1
  60. package/dist/chunk-F6LJWWEW.js +0 -2
  61. package/dist/chunk-F6LJWWEW.js.map +0 -1
  62. package/dist/chunk-LPRLSFPT.cjs +0 -2
  63. package/dist/chunk-LPRLSFPT.cjs.map +0 -1
  64. package/dist/chunk-N6IA7HQL.js +0 -133
  65. package/dist/chunk-N6IA7HQL.js.map +0 -1
  66. package/dist/public-types-ChP5j3xc.d.ts +0 -69
  67. package/dist/public-types-Nv__uZTR.d.cts +0 -69
@@ -0,0 +1,133 @@
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
@@ -0,0 +1 @@
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"]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk2QNUW6ZNcjs = require('../chunk-2QNUW6ZN.cjs');exports.setupRemoteBridge = _chunk2QNUW6ZNcjs.T;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkYWXX6XRVcjs = require('../chunk-YWXX6XRV.cjs');exports.setupRemoteBridge = _chunkYWXX6XRVcjs.U;
2
2
  //# sourceMappingURL=bridge.cjs.map
@@ -1,2 +1,2 @@
1
- import{T as a}from"../chunk-N6IA7HQL.js";export{a as setupRemoteBridge};
1
+ import{U as a}from"../chunk-6FJEE6O3.js";export{a as setupRemoteBridge};
2
2
  //# sourceMappingURL=bridge.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk2QNUW6ZNcjs = require('../chunk-2QNUW6ZN.cjs');exports.initDevTools = _chunk2QNUW6ZNcjs.U;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkYWXX6XRVcjs = require('../chunk-YWXX6XRV.cjs');exports.initDevTools = _chunkYWXX6XRVcjs.V;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,2 +1,2 @@
1
- import{U as a}from"../chunk-N6IA7HQL.js";export{a as initDevTools};
1
+ import{V as a}from"../chunk-6FJEE6O3.js";export{a as initDevTools};
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk2QNUW6ZNcjs = require('./chunk-2QNUW6ZN.cjs');exports.bitBus = _chunk2QNUW6ZNcjs.a; exports.bitMasks = _chunk2QNUW6ZNcjs.S; exports.cleanPrefixedKeys = _chunk2QNUW6ZNcjs.g; exports.createBitStore = _chunk2QNUW6ZNcjs.V; exports.createCreditCardMask = _chunk2QNUW6ZNcjs.n; exports.createCurrencyMask = _chunk2QNUW6ZNcjs.m; exports.createDateMask = _chunk2QNUW6ZNcjs.o; exports.createPatternMask = _chunk2QNUW6ZNcjs.l; exports.deepClone = _chunk2QNUW6ZNcjs.b; exports.deepEqual = _chunk2QNUW6ZNcjs.d; exports.extractServerErrors = _chunk2QNUW6ZNcjs.i; exports.getDeepValue = _chunk2QNUW6ZNcjs.e; exports.isValidationErrorShape = _chunk2QNUW6ZNcjs.h; exports.maskBRL = _chunk2QNUW6ZNcjs.p; exports.maskCEP = _chunk2QNUW6ZNcjs.B; exports.maskCNH = _chunk2QNUW6ZNcjs.E; exports.maskCNPJ = _chunk2QNUW6ZNcjs.y; exports.maskCPF = _chunk2QNUW6ZNcjs.x; exports.maskCVV = _chunk2QNUW6ZNcjs.L; exports.maskColorHex = _chunk2QNUW6ZNcjs.O; exports.maskCreditCard = _chunk2QNUW6ZNcjs.K; exports.maskDate = _chunk2QNUW6ZNcjs.C; exports.maskDateISO = _chunk2QNUW6ZNcjs.M; exports.maskDateUS = _chunk2QNUW6ZNcjs.I; exports.maskDecimal = _chunk2QNUW6ZNcjs.v; exports.maskEUR = _chunk2QNUW6ZNcjs.r; exports.maskGBP = _chunk2QNUW6ZNcjs.s; exports.maskIBAN = _chunk2QNUW6ZNcjs.R; exports.maskIPv4 = _chunk2QNUW6ZNcjs.P; exports.maskIPv6 = _chunk2QNUW6ZNcjs.Q; exports.maskInteger = _chunk2QNUW6ZNcjs.w; exports.maskJPY = _chunk2QNUW6ZNcjs.t; exports.maskLandline = _chunk2QNUW6ZNcjs.A; exports.maskMacAddress = _chunk2QNUW6ZNcjs.N; exports.maskPercent = _chunk2QNUW6ZNcjs.u; exports.maskPhone = _chunk2QNUW6ZNcjs.z; exports.maskRG = _chunk2QNUW6ZNcjs.F; exports.maskSSN = _chunk2QNUW6ZNcjs.J; exports.maskTime = _chunk2QNUW6ZNcjs.D; exports.maskUSD = _chunk2QNUW6ZNcjs.q; exports.maskUSPhone = _chunk2QNUW6ZNcjs.G; exports.maskZipCode = _chunk2QNUW6ZNcjs.H; exports.setDeepValue = _chunk2QNUW6ZNcjs.f; exports.unmask = _chunk2QNUW6ZNcjs.j; exports.unmaskCurrency = _chunk2QNUW6ZNcjs.k; exports.valueEqual = _chunk2QNUW6ZNcjs.c;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkYWXX6XRVcjs = require('./chunk-YWXX6XRV.cjs');exports.bitBus = _chunkYWXX6XRVcjs.a; exports.bitMasks = _chunkYWXX6XRVcjs.T; exports.cleanPrefixedKeys = _chunkYWXX6XRVcjs.h; exports.createBitStore = _chunkYWXX6XRVcjs.W; exports.createCreditCardMask = _chunkYWXX6XRVcjs.o; exports.createCurrencyMask = _chunkYWXX6XRVcjs.n; exports.createDateMask = _chunkYWXX6XRVcjs.p; exports.createPatternMask = _chunkYWXX6XRVcjs.m; exports.deepClone = _chunkYWXX6XRVcjs.b; exports.deepEqual = _chunkYWXX6XRVcjs.e; exports.deepMerge = _chunkYWXX6XRVcjs.c; exports.extractServerErrors = _chunkYWXX6XRVcjs.j; exports.getDeepValue = _chunkYWXX6XRVcjs.f; exports.isValidationErrorShape = _chunkYWXX6XRVcjs.i; exports.maskBRL = _chunkYWXX6XRVcjs.q; exports.maskCEP = _chunkYWXX6XRVcjs.C; exports.maskCNH = _chunkYWXX6XRVcjs.F; exports.maskCNPJ = _chunkYWXX6XRVcjs.z; exports.maskCPF = _chunkYWXX6XRVcjs.y; exports.maskCVV = _chunkYWXX6XRVcjs.M; exports.maskColorHex = _chunkYWXX6XRVcjs.P; exports.maskCreditCard = _chunkYWXX6XRVcjs.L; exports.maskDate = _chunkYWXX6XRVcjs.D; exports.maskDateISO = _chunkYWXX6XRVcjs.N; exports.maskDateUS = _chunkYWXX6XRVcjs.J; exports.maskDecimal = _chunkYWXX6XRVcjs.w; exports.maskEUR = _chunkYWXX6XRVcjs.s; exports.maskGBP = _chunkYWXX6XRVcjs.t; exports.maskIBAN = _chunkYWXX6XRVcjs.S; exports.maskIPv4 = _chunkYWXX6XRVcjs.Q; exports.maskIPv6 = _chunkYWXX6XRVcjs.R; exports.maskInteger = _chunkYWXX6XRVcjs.x; exports.maskJPY = _chunkYWXX6XRVcjs.u; exports.maskLandline = _chunkYWXX6XRVcjs.B; exports.maskMacAddress = _chunkYWXX6XRVcjs.O; exports.maskPercent = _chunkYWXX6XRVcjs.v; exports.maskPhone = _chunkYWXX6XRVcjs.A; exports.maskRG = _chunkYWXX6XRVcjs.G; exports.maskSSN = _chunkYWXX6XRVcjs.K; exports.maskTime = _chunkYWXX6XRVcjs.E; exports.maskUSD = _chunkYWXX6XRVcjs.r; exports.maskUSPhone = _chunkYWXX6XRVcjs.H; exports.maskZipCode = _chunkYWXX6XRVcjs.I; exports.setDeepValue = _chunkYWXX6XRVcjs.g; exports.unmask = _chunkYWXX6XRVcjs.k; exports.unmaskCurrency = _chunkYWXX6XRVcjs.l; exports.valueEqual = _chunkYWXX6XRVcjs.d;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/index.cjs"],"names":[],"mappings":"AAAA,iIAA0P,u6DAAowB","file":"/home/runner/work/bit-form/bit-form/dist/index.cjs"}
1
+ {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/index.cjs"],"names":[],"mappings":"AAAA,iIAA4P,g9DAAmxB","file":"/home/runner/work/bit-form/bit-form/dist/index.cjs"}
package/dist/index.d.cts CHANGED
@@ -1,12 +1,13 @@
1
- import { B as BitConfig, P as PatternMaskOptions, a as BitMask, C as CurrencyMaskConfig, D as DateMaskConfig } from './bus-vCbulIYH.cjs';
2
- export { b as BitArrayItem, c as BitArrayPath, d as BitComputedFn, e as BitErrors, f as BitFieldConditional, g as BitFieldDefinition, h as BitFieldValidation, i as BitHistoryConfig, j as BitPath, k as BitPathValue, l as BitState, m as BitTouched, n as BitTransformFn, o as BitValidationConfig, p as DeepPartial, S as ScopeStatus, V as ValidateScopeResult, q as ValidatorFn, r as bitBus } from './bus-vCbulIYH.cjs';
3
- import { B as BitPublicStore } from './public-types-Nv__uZTR.cjs';
4
- export { a as BitFrameworkConfig, b as BitFrameworkStore } from './public-types-Nv__uZTR.cjs';
1
+ import { B as BitConfig, P as PatternMaskOptions, a as BitMask, C as CurrencyMaskConfig, D as DateMaskConfig } from './bus-B3pGaiFZ.cjs';
2
+ export { b as BitAfterSubmitEvent, c as BitAfterValidateEvent, d as BitArrayItem, e as BitArrayPath, f as BitBeforeSubmitEvent, g as BitBeforeValidateEvent, h as BitComputedFn, i as BitErrors, j as BitFieldChangeEvent, k as BitFieldChangeMeta, l as BitFieldConditional, m as BitFieldDefinition, n as BitFieldState, o as BitFieldValidation, p as BitHistoryConfig, q as BitPath, r as BitPathValue, s as BitPersistConfig, t as BitPersistMode, u as BitPersistStorageAdapter, v as BitPlugin, w as BitPluginContext, x as BitPluginErrorEvent, y as BitPluginHooks, z as BitState, A as BitTouched, E as BitTransformFn, F as BitValidationConfig, G as DeepPartial, S as ScopeStatus, V as ValidateScopeResult, H as ValidatorFn, I as bitBus } from './bus-B3pGaiFZ.cjs';
3
+ import { B as BitStoreApi } from './public-types-CtYuIAMP.cjs';
4
+ export { a as BitEqualityFn, b as BitFrameworkConfig, c as BitFrameworkStore, d as BitHistoryMetadata, e as BitPersistMetadata, f as BitPublicStore, g as BitSelector, h as BitSelectorSubscriptionOptions, i as BitValidationOptions } from './public-types-CtYuIAMP.cjs';
5
5
  export { B as BitDeleteUploadFn, a as BitUploadFn, b as BitUploadResult } from './types-C2mpfhp1.cjs';
6
6
 
7
- declare function createBitStore<T extends object = any>(config?: BitConfig<T>): BitPublicStore<T>;
7
+ declare function createBitStore<T extends object = any>(config?: BitConfig<T>): BitStoreApi<T>;
8
8
 
9
9
  declare function deepClone<T>(obj: T): T;
10
+ declare function deepMerge<T>(target: T, source: any): T;
10
11
  /**
11
12
  * Fast equality for single values. Uses === for primitives, deepEqual for objects/arrays.
12
13
  * Prefer over deepEqual when comparing a single field value (e.g. isFieldDirty, getStepStatus).
@@ -120,4 +121,4 @@ declare const bitMasks: {
120
121
  int: BitMask;
121
122
  };
122
123
 
123
- export { BitConfig, BitMask, BitPublicStore, CurrencyMaskConfig, DateMaskConfig, PatternMaskOptions, bitMasks, cleanPrefixedKeys, createBitStore, createCreditCardMask, createCurrencyMask, createDateMask, createPatternMask, deepClone, deepEqual, extractServerErrors, getDeepValue, isValidationErrorShape, maskBRL, maskCEP, maskCNH, maskCNPJ, maskCPF, maskCVV, maskColorHex, maskCreditCard, maskDate, maskDateISO, maskDateUS, maskDecimal, maskEUR, maskGBP, maskIBAN, maskIPv4, maskIPv6, maskInteger, maskJPY, maskLandline, maskMacAddress, maskPercent, maskPhone, maskRG, maskSSN, maskTime, maskUSD, maskUSPhone, maskZipCode, setDeepValue, unmask, unmaskCurrency, valueEqual };
124
+ export { BitConfig, BitMask, BitStoreApi, CurrencyMaskConfig, DateMaskConfig, PatternMaskOptions, bitMasks, cleanPrefixedKeys, createBitStore, createCreditCardMask, createCurrencyMask, createDateMask, createPatternMask, deepClone, deepEqual, deepMerge, extractServerErrors, getDeepValue, isValidationErrorShape, maskBRL, maskCEP, maskCNH, maskCNPJ, maskCPF, maskCVV, maskColorHex, maskCreditCard, maskDate, maskDateISO, maskDateUS, maskDecimal, maskEUR, maskGBP, maskIBAN, maskIPv4, maskIPv6, maskInteger, maskJPY, maskLandline, maskMacAddress, maskPercent, maskPhone, maskRG, maskSSN, maskTime, maskUSD, maskUSPhone, maskZipCode, setDeepValue, unmask, unmaskCurrency, valueEqual };
package/dist/index.d.ts CHANGED
@@ -1,12 +1,13 @@
1
- import { B as BitConfig, P as PatternMaskOptions, a as BitMask, C as CurrencyMaskConfig, D as DateMaskConfig } from './bus-vCbulIYH.js';
2
- export { b as BitArrayItem, c as BitArrayPath, d as BitComputedFn, e as BitErrors, f as BitFieldConditional, g as BitFieldDefinition, h as BitFieldValidation, i as BitHistoryConfig, j as BitPath, k as BitPathValue, l as BitState, m as BitTouched, n as BitTransformFn, o as BitValidationConfig, p as DeepPartial, S as ScopeStatus, V as ValidateScopeResult, q as ValidatorFn, r as bitBus } from './bus-vCbulIYH.js';
3
- import { B as BitPublicStore } from './public-types-ChP5j3xc.js';
4
- export { a as BitFrameworkConfig, b as BitFrameworkStore } from './public-types-ChP5j3xc.js';
1
+ import { B as BitConfig, P as PatternMaskOptions, a as BitMask, C as CurrencyMaskConfig, D as DateMaskConfig } from './bus-B3pGaiFZ.js';
2
+ export { b as BitAfterSubmitEvent, c as BitAfterValidateEvent, d as BitArrayItem, e as BitArrayPath, f as BitBeforeSubmitEvent, g as BitBeforeValidateEvent, h as BitComputedFn, i as BitErrors, j as BitFieldChangeEvent, k as BitFieldChangeMeta, l as BitFieldConditional, m as BitFieldDefinition, n as BitFieldState, o as BitFieldValidation, p as BitHistoryConfig, q as BitPath, r as BitPathValue, s as BitPersistConfig, t as BitPersistMode, u as BitPersistStorageAdapter, v as BitPlugin, w as BitPluginContext, x as BitPluginErrorEvent, y as BitPluginHooks, z as BitState, A as BitTouched, E as BitTransformFn, F as BitValidationConfig, G as DeepPartial, S as ScopeStatus, V as ValidateScopeResult, H as ValidatorFn, I as bitBus } from './bus-B3pGaiFZ.js';
3
+ import { B as BitStoreApi } from './public-types-Lq3eLstW.js';
4
+ export { a as BitEqualityFn, b as BitFrameworkConfig, c as BitFrameworkStore, d as BitHistoryMetadata, e as BitPersistMetadata, f as BitPublicStore, g as BitSelector, h as BitSelectorSubscriptionOptions, i as BitValidationOptions } from './public-types-Lq3eLstW.js';
5
5
  export { B as BitDeleteUploadFn, a as BitUploadFn, b as BitUploadResult } from './types-C2mpfhp1.js';
6
6
 
7
- declare function createBitStore<T extends object = any>(config?: BitConfig<T>): BitPublicStore<T>;
7
+ declare function createBitStore<T extends object = any>(config?: BitConfig<T>): BitStoreApi<T>;
8
8
 
9
9
  declare function deepClone<T>(obj: T): T;
10
+ declare function deepMerge<T>(target: T, source: any): T;
10
11
  /**
11
12
  * Fast equality for single values. Uses === for primitives, deepEqual for objects/arrays.
12
13
  * Prefer over deepEqual when comparing a single field value (e.g. isFieldDirty, getStepStatus).
@@ -120,4 +121,4 @@ declare const bitMasks: {
120
121
  int: BitMask;
121
122
  };
122
123
 
123
- export { BitConfig, BitMask, BitPublicStore, CurrencyMaskConfig, DateMaskConfig, PatternMaskOptions, bitMasks, cleanPrefixedKeys, createBitStore, createCreditCardMask, createCurrencyMask, createDateMask, createPatternMask, deepClone, deepEqual, extractServerErrors, getDeepValue, isValidationErrorShape, maskBRL, maskCEP, maskCNH, maskCNPJ, maskCPF, maskCVV, maskColorHex, maskCreditCard, maskDate, maskDateISO, maskDateUS, maskDecimal, maskEUR, maskGBP, maskIBAN, maskIPv4, maskIPv6, maskInteger, maskJPY, maskLandline, maskMacAddress, maskPercent, maskPhone, maskRG, maskSSN, maskTime, maskUSD, maskUSPhone, maskZipCode, setDeepValue, unmask, unmaskCurrency, valueEqual };
124
+ export { BitConfig, BitMask, BitStoreApi, CurrencyMaskConfig, DateMaskConfig, PatternMaskOptions, bitMasks, cleanPrefixedKeys, createBitStore, createCreditCardMask, createCurrencyMask, createDateMask, createPatternMask, deepClone, deepEqual, deepMerge, extractServerErrors, getDeepValue, isValidationErrorShape, maskBRL, maskCEP, maskCNH, maskCNPJ, maskCPF, maskCVV, maskColorHex, maskCreditCard, maskDate, maskDateISO, maskDateUS, maskDecimal, maskEUR, maskGBP, maskIBAN, maskIPv4, maskIPv6, maskInteger, maskJPY, maskLandline, maskMacAddress, maskPercent, maskPhone, maskRG, maskSSN, maskTime, maskUSD, maskUSPhone, maskZipCode, setDeepValue, unmask, unmaskCurrency, valueEqual };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,V as T,a as o,b as r,c as e,d as f,e as m,f as p,g as t,h as x,i as a,j as b,k as c,l as d,m as g,n as h,o as i,p as j,q as k,r as l,s as n,t as q,u as s,v as u,w as v,x as w,y,z}from"./chunk-N6IA7HQL.js";export{o as bitBus,S as bitMasks,t as cleanPrefixedKeys,T as createBitStore,h as createCreditCardMask,g as createCurrencyMask,i as createDateMask,d as createPatternMask,r as deepClone,f as deepEqual,a as extractServerErrors,m as getDeepValue,x as isValidationErrorShape,j as maskBRL,B as maskCEP,E as maskCNH,y as maskCNPJ,w as maskCPF,L as maskCVV,O as maskColorHex,K as maskCreditCard,C as maskDate,M as maskDateISO,I as maskDateUS,u as maskDecimal,l as maskEUR,n as maskGBP,R as maskIBAN,P as maskIPv4,Q as maskIPv6,v as maskInteger,q as maskJPY,A as maskLandline,N as maskMacAddress,s as maskPercent,z as maskPhone,F as maskRG,J as maskSSN,D as maskTime,k as maskUSD,G as maskUSPhone,H as maskZipCode,p as setDeepValue,b as unmask,c as unmaskCurrency,e as valueEqual};
1
+ import{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,W as U,a as o,b as r,c as e,d as f,e as m,f as p,g as t,h as x,i as a,j as b,k as c,l as d,m as g,n as h,o as i,p as j,q as k,r as l,s as n,t as q,u as s,v as u,w as v,x as w,y,z}from"./chunk-6FJEE6O3.js";export{o as bitBus,T as bitMasks,x as cleanPrefixedKeys,U as createBitStore,i as createCreditCardMask,h as createCurrencyMask,j as createDateMask,g as createPatternMask,r as deepClone,m as deepEqual,e as deepMerge,b as extractServerErrors,p as getDeepValue,a as isValidationErrorShape,k as maskBRL,C as maskCEP,F as maskCNH,z as maskCNPJ,y as maskCPF,M as maskCVV,P as maskColorHex,L as maskCreditCard,D as maskDate,N as maskDateISO,J as maskDateUS,v as maskDecimal,n as maskEUR,q as maskGBP,S as maskIBAN,Q as maskIPv4,R as maskIPv6,w as maskInteger,s as maskJPY,B as maskLandline,O as maskMacAddress,u as maskPercent,A as maskPhone,G as maskRG,K as maskSSN,E as maskTime,l as maskUSD,H as maskUSPhone,I as maskZipCode,t as setDeepValue,c as unmask,d as unmaskCurrency,f as valueEqual};
2
2
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,99 @@
1
+ import { B as BitConfig, H as ValidatorFn, a as BitMask, m as BitFieldDefinition, J as DevToolsOptions, K as BitPersistResolvedConfig, v as BitPlugin, z as BitState, q as BitPath, n as BitFieldState, r as BitPathValue, G as DeepPartial, i as BitErrors, e as BitArrayPath, d as BitArrayItem, S as ScopeStatus } from './bus-B3pGaiFZ.cjs';
2
+
3
+ type BitSelector<T extends object, TSlice> = (state: Readonly<BitState<T>>) => TSlice;
4
+ type BitEqualityFn<TValue> = (previous: TValue, next: TValue) => boolean;
5
+ interface BitSelectorSubscriptionOptions<TValue> {
6
+ equalityFn?: BitEqualityFn<TValue>;
7
+ emitImmediately?: boolean;
8
+ }
9
+ interface BitValidationOptions {
10
+ scope?: string;
11
+ scopeFields?: string[];
12
+ }
13
+ interface BitHistoryMetadata {
14
+ enabled: boolean;
15
+ canUndo: boolean;
16
+ canRedo: boolean;
17
+ historyIndex: number;
18
+ historySize: number;
19
+ }
20
+ interface BitPersistMetadata {
21
+ isSaving: boolean;
22
+ isRestoring: boolean;
23
+ error: Error | null;
24
+ }
25
+ interface BitFrameworkConfig<T extends object = any> extends BitConfig<T> {
26
+ initialValues: T;
27
+ resolver?: ValidatorFn<T>;
28
+ validationDelay: number;
29
+ enableHistory: boolean;
30
+ historyLimit: number;
31
+ masks?: Record<string, BitMask>;
32
+ fields?: Record<string, BitFieldDefinition<T>>;
33
+ devTools?: boolean | DevToolsOptions;
34
+ persist: BitPersistResolvedConfig<T>;
35
+ plugins: BitPlugin<T>[];
36
+ }
37
+ interface BitStoreApi<T extends object = any> {
38
+ readonly config: Readonly<BitFrameworkConfig<T>>;
39
+ getConfig(): Readonly<BitFrameworkConfig<T>>;
40
+ getState(): Readonly<BitState<T>>;
41
+ getFieldState<P extends BitPath<T>>(path: P): Readonly<BitFieldState<T, BitPathValue<T, P>>>;
42
+ subscribe(listener: () => void): () => void;
43
+ subscribePath<P extends BitPath<T>>(path: P, listener: (value: BitPathValue<T, P>) => void, options?: BitSelectorSubscriptionOptions<BitPathValue<T, P>>): () => void;
44
+ subscribeSelector<TSlice>(selector: BitSelector<T, TSlice>, listener: (slice: TSlice) => void, options?: BitSelectorSubscriptionOptions<TSlice>): () => void;
45
+ setField<P extends BitPath<T>>(path: P, value: BitPathValue<T, P>): void;
46
+ blurField<P extends BitPath<T>>(path: P): void;
47
+ replaceValues(values: T): void;
48
+ hydrate(values: DeepPartial<T>): void;
49
+ rebase(values: T): void;
50
+ /** @deprecated Use `rebase()` instead. This method is an alias and may be removed in a future version. */
51
+ setValues(values: T): void;
52
+ setError(path: string, message: string | undefined): void;
53
+ setErrors(errors: BitErrors<T>): void;
54
+ setServerErrors(serverErrors: Record<string, string[] | string>): void;
55
+ validate(options?: BitValidationOptions): Promise<boolean>;
56
+ reset(): void;
57
+ submit(onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>): Promise<void>;
58
+ registerMask(name: string, mask: BitMask): void;
59
+ getDirtyValues(): Partial<T>;
60
+ restorePersisted(): Promise<boolean>;
61
+ forceSave(): Promise<void>;
62
+ clearPersisted(): Promise<void>;
63
+ cleanup(): void;
64
+ registerField(path: string, config: BitFieldDefinition<T>): void;
65
+ unregisterField(path: string): void;
66
+ unregisterPrefix?(prefix: string): void;
67
+ isHidden<P extends BitPath<T>>(path: P): boolean;
68
+ isRequired<P extends BitPath<T>>(path: P): boolean;
69
+ isFieldDirty(path: string): boolean;
70
+ isFieldValidating(path: string): boolean;
71
+ watch<P extends BitPath<T>>(path: P, callback: (value: BitPathValue<T, P>) => void): () => void;
72
+ pushItem<P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>): void;
73
+ prependItem<P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>): void;
74
+ insertItem<P extends BitArrayPath<T>>(path: P, index: number, value: BitArrayItem<BitPathValue<T, P>>): void;
75
+ removeItem<P extends BitArrayPath<T>>(path: P, index: number): void;
76
+ moveItem<P extends BitArrayPath<T>>(path: P, from: number, to: number): void;
77
+ swapItems<P extends BitArrayPath<T>>(path: P, indexA: number, indexB: number): void;
78
+ getHistoryMetadata(): BitHistoryMetadata;
79
+ undo(): void;
80
+ redo(): void;
81
+ getStepStatus(scopeName: string): ScopeStatus;
82
+ getStepErrors(scopeName: string): Record<string, string>;
83
+ markFieldsTouched(paths: string[]): void;
84
+ hasValidationsInProgress(scopeFields?: string[]): boolean;
85
+ beginFieldValidation(path: string): void;
86
+ endFieldValidation(path: string): void;
87
+ setFieldAsyncError(path: string, message: string): Promise<void>;
88
+ clearFieldAsyncError(path: string): Promise<void>;
89
+ resolveMask(path: string): BitMask | undefined;
90
+ getScopeFields(scopeName: string): string[];
91
+ }
92
+ /** @deprecated Use `BitStoreApi` instead. */
93
+ interface BitPublicStore<T extends object = any> extends BitStoreApi<T> {
94
+ }
95
+ /** @deprecated Use `BitStoreApi` instead. */
96
+ interface BitFrameworkStore<T extends object = any> extends BitStoreApi<T> {
97
+ }
98
+
99
+ export type { BitStoreApi as B, BitEqualityFn as a, BitFrameworkConfig as b, BitFrameworkStore as c, BitHistoryMetadata as d, BitPersistMetadata as e, BitPublicStore as f, BitSelector as g, BitSelectorSubscriptionOptions as h, BitValidationOptions as i };