@lehnihon/bit-form 1.0.6 → 1.0.8

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 (62) hide show
  1. package/README.md +42 -1
  2. package/dist/angular/index.cjs +1 -1
  3. package/dist/angular/index.cjs.map +1 -1
  4. package/dist/angular/index.d.cts +44 -41
  5. package/dist/angular/index.d.ts +44 -41
  6. package/dist/angular/index.js +1 -1
  7. package/dist/angular/index.js.map +1 -1
  8. package/dist/{bus-DAwKIiMY.d.cts → bus-BtKUu_9m.d.cts} +42 -7
  9. package/dist/{bus-DAwKIiMY.d.ts → bus-BtKUu_9m.d.ts} +42 -7
  10. package/dist/chunk-4SZ2BOTW.js +2 -0
  11. package/dist/chunk-4SZ2BOTW.js.map +1 -0
  12. package/dist/chunk-IUDMKNON.cjs +2 -0
  13. package/dist/chunk-IUDMKNON.cjs.map +1 -0
  14. package/dist/chunk-MVDS4KAD.js +133 -0
  15. package/dist/chunk-MVDS4KAD.js.map +1 -0
  16. package/dist/chunk-QB7MQ6ZB.cjs +133 -0
  17. package/dist/{chunk-6VDQSKUN.cjs.map → chunk-QB7MQ6ZB.cjs.map} +1 -1
  18. package/dist/cli/index.cjs +404 -4
  19. package/dist/devtools/bridge.cjs +1 -1
  20. package/dist/devtools/bridge.js +1 -1
  21. package/dist/devtools/index.cjs +1 -1
  22. package/dist/devtools/index.js +1 -1
  23. package/dist/{index-BD_l3aH5.d.cts → index-C4HaSh5W.d.ts} +102 -15
  24. package/dist/{index-CPKnWBVv.d.ts → index-CH9ZdEkZ.d.cts} +102 -15
  25. package/dist/index.cjs +1 -1
  26. package/dist/index.d.cts +3 -3
  27. package/dist/index.d.ts +3 -3
  28. package/dist/index.js +1 -1
  29. package/dist/react/index.cjs +1 -1
  30. package/dist/react/index.cjs.map +1 -1
  31. package/dist/react/index.d.cts +23 -22
  32. package/dist/react/index.d.ts +23 -22
  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 +24 -14
  38. package/dist/react-native/index.d.ts +24 -14
  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-CoCFwS-F.d.ts → use-bit-watch-Bdwj9l_g.d.ts} +32 -27
  48. package/dist/{use-bit-watch-BSWy9rG7.d.cts → use-bit-watch-ClvBxm6Z.d.cts} +32 -27
  49. package/dist/vue/index.cjs +1 -1
  50. package/dist/vue/index.cjs.map +1 -1
  51. package/dist/vue/index.d.cts +48 -42
  52. package/dist/vue/index.d.ts +48 -42
  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/chunk-6VDQSKUN.cjs +0 -133
  57. package/dist/chunk-KA4FAGIX.js +0 -133
  58. package/dist/chunk-KA4FAGIX.js.map +0 -1
  59. package/dist/chunk-UFYHEI6S.js +0 -2
  60. package/dist/chunk-UFYHEI6S.js.map +0 -1
  61. package/dist/chunk-Z6ITPS2B.cjs +0 -2
  62. package/dist/chunk-Z6ITPS2B.cjs.map +0 -1
package/README.md CHANGED
@@ -1,3 +1,42 @@
1
+ <div align="center">
2
+ <img src="logo.png" alt="Bit-Form" width="280" />
3
+ </div>
4
+
5
+ <p align="center">
6
+ <i>Made with ❤️ by <a href="https://github.com/lehnihon">lehnihon</a> & contributors</i>
7
+ </p>
8
+
9
+ <p align="center">
10
+ <a href="https://github.com/lehnihon/bit-form/actions/workflows/ci.yml">
11
+ <img src="https://img.shields.io/github/actions/workflow/status/lehnihon/bit-form/ci.yml?branch=main&label=tests&style=flat-square" alt="tests" />
12
+ </a>
13
+ <a href="https://github.com/lehnihon/bit-form/actions/workflows/ci.yml">
14
+ <img src="https://img.shields.io/github/actions/workflow/status/lehnihon/bit-form/ci.yml?branch=main&label=build&style=flat-square" alt="build" />
15
+ </a>
16
+ <a href="https://www.npmjs.com/package/@lehnihon/bit-form">
17
+ <img src="https://img.shields.io/npm/v/@lehnihon/bit-form?style=flat-square" alt="npm version" />
18
+ </a>
19
+ <a href="https://www.npmjs.com/package/@lehnihon/bit-form">
20
+ <img src="https://img.shields.io/npm/dm/@lehnihon/bit-form?style=flat-square" alt="npm downloads" />
21
+ </a>
22
+ <a href="https://github.com/lehnihon/bit-form/stargazers">
23
+ <img src="https://img.shields.io/github/stars/lehnihon/bit-form?style=flat-square" alt="stars" />
24
+ </a>
25
+ <a href="https://github.com/lehnihon/bit-form/network/members">
26
+ <img src="https://img.shields.io/github/forks/lehnihon/bit-form?style=flat-square" alt="forks" />
27
+ </a>
28
+ <a href="https://github.com/lehnihon/bit-form/issues">
29
+ <img src="https://img.shields.io/github/issues/lehnihon/bit-form?style=flat-square" alt="issues" />
30
+ </a>
31
+ <a href="https://github.com/lehnihon/bit-form/blob/main/LICENSE">
32
+ <img src="https://img.shields.io/npm/l/@lehnihon/bit-form?style=flat-square" alt="license" />
33
+ </a>
34
+ <img src="https://img.shields.io/badge/TypeScript-007ACC?style=flat-square&logo=typescript&logoColor=white" alt="TypeScript" />
35
+ <img src="https://img.shields.io/badge/Vitest-6E9F18?style=flat-square&logo=vitest&logoColor=white" alt="Vitest" />
36
+ </p>
37
+
38
+ ---
39
+
1
40
  # 🛠 Bit-Form
2
41
 
3
42
  **Agnostic and performant form state management**.
@@ -110,6 +149,7 @@ The complete documentation is available in the `/docs` folder. Explore the guide
110
149
  ### 🖼 Framework Guides
111
150
 
112
151
  - **[React](./docs/frameworks/react.md)**: Using hooks and Context Provider.
152
+ - **[React + shadcn/ui](./docs/frameworks/react-shadcn.md)**: Generate form wrappers with `bit-form add shadcn` (Input, Textarea, Select, Checkbox, Switch, RadioGroup).
113
153
  - **[React Native](./docs/frameworks/react-native.md)**: Mobile specifics and `onChangeText` mapping.
114
154
  - **[Vue](./docs/frameworks/vue.md)**: Using composables and InjectionKeys.
115
155
  - **[Angular](./docs/frameworks/angular.md)**: Reactive forms via Signals.
@@ -130,11 +170,12 @@ The complete documentation is available in the `/docs` folder. Explore the guide
130
170
  - **[Complete Form Example](./docs/examples/complete-form-example.md)**: End-to-end example with masks, asyncValidate, conditional logic, scopes, history, and DevTools.
131
171
  - **[Server Errors](./docs/examples/server-errors.md)**: Client validation (resolver/asyncValidate) vs API 422 handling (setServerErrors, onSubmit).
132
172
 
133
- ### 🔍 DevTools
173
+ ### 🔍 DevTools & CLI
134
174
 
135
175
  - **[DevTools Overview](./docs/devtools/index.md)**: Configuration (`devTools: true` or `{ mode: "remote" }`).
136
176
  - **[Floating Panel](./docs/devtools/floating-panel.md)**: In-app inspector (local mode).
137
177
  - **[CLI & Remote Dashboard](./docs/devtools/cli-remote-dashboard.md)**: `bit-form devtools` + WebSocket for React Native / remote debugging.
178
+ - **CLI `add`**: Generate Bit-Form + shadcn/ui wrappers with `bit-form add shadcn [input|textarea|select|checkbox|switch|radio-group]` — see [React + shadcn](./docs/frameworks/react-shadcn.md).
138
179
 
139
180
  ### 📑 Reference
140
181
 
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunk6VDQSKUNcjs = require('../chunk-6VDQSKUN.cjs');var _core = require('@angular/core');var h=new (0, _core.InjectionToken)("BIT_STORE");function C(t){return{provide:h,useValue:t}}function S(){let t=_core.inject.call(void 0, h,{optional:!0});if(!t)throw new Error('BitForm: N\xE3o foi poss\xEDvel encontrar a BitStore. Certifique-se de que voc\xEA adicionou "provideBitStore(store)" nos providers do seu componente.');return t}function $(){let t=S(),e=_core.inject.call(void 0, _core.DestroyRef),o=_core.signal.call(void 0, t.getState()),r=_core.signal.call(void 0, null),n=_core.signal.call(void 0, null),c=t.subscribe(()=>{o.set(t.getState())});e.onDestroy(()=>c());let g=_core.computed.call(void 0, ()=>o().isValid),s=_core.computed.call(void 0, ()=>o().isSubmitting),i=_core.computed.call(void 0, ()=>o().isDirty),d=_core.computed.call(void 0, ()=>(o(),t.canUndo)),u=_core.computed.call(void 0, ()=>(o(),t.canRedo));return{store:t,isValid:g,isSubmitting:s,isDirty:i,canUndo:d,canRedo:u,getValues:()=>o().values,getErrors:()=>o().errors,getTouched:()=>o().touched,submit:B=>f=>(_optionalChain([f, 'optionalAccess', _2 => _2.preventDefault, 'call', _3 => _3()]),_optionalChain([f, 'optionalAccess', _4 => _4.stopPropagation, 'call', _5 => _5()]),t.submit(B)),onSubmit:B=>f=>(_optionalChain([f, 'optionalAccess', _6 => _6.preventDefault, 'call', _7 => _7()]),_optionalChain([f, 'optionalAccess', _8 => _8.stopPropagation, 'call', _9 => _9()]),r.set(null),t.submit(async l=>{try{let a=await B(l);n.set(a),r.set(null)}catch(a){_chunk6VDQSKUNcjs.h.call(void 0, a)?t.setServerErrors(_chunk6VDQSKUNcjs.i.call(void 0, a)):r.set(a instanceof Error?a:new Error(String(a)))}})),submitError:r,lastResponse:n,reset:()=>{t.reset(),r.set(null),n.set(null)},validate:t.validate.bind(t),setValues:t.setValues.bind(t),setError:t.setError.bind(t),setErrors:t.setErrors.bind(t),setServerErrors:t.setServerErrors.bind(t),setField:t.setField.bind(t),blurField:t.blurField.bind(t),registerMask:t.registerMask.bind(t),pushItem:t.pushItem.bind(t),prependItem:t.prependItem.bind(t),removeItem:t.removeItem.bind(t),insertItem:t.insertItem.bind(t),moveItem:t.moveItem.bind(t),swapItems:t.swapItems.bind(t),undo:t.undo.bind(t),redo:t.redo.bind(t)}}function J(t,e,o){let r=_core.inject.call(void 0, h),n=_core.signal.call(void 0, r.getState()),c=r.subscribe(()=>{n.set(r.getState())});_core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>{c(),r.unregisterField&&r.unregisterField(t)}),e&&r.registerField(t,e);let g=_core.computed.call(void 0, ()=>_chunk6VDQSKUNcjs.e.call(void 0, n().values,t)),s=_core.computed.call(void 0, ()=>n().errors[t]),i=_core.computed.call(void 0, ()=>!!n().touched[t]),d=_core.computed.call(void 0, ()=>(n(),r.isFieldDirty(t))),u=_core.computed.call(void 0, ()=>(n(),r.isFieldValidating(t))),m=_core.computed.call(void 0, ()=>(n(),r.isHidden(t))),R=_core.computed.call(void 0, ()=>(n(),r.isRequired(t))),V=_core.computed.call(void 0, ()=>i()&&!!s()),b=_nullishCoalesce(_optionalChain([o, 'optionalAccess', _10 => _10.mask]), () => (_optionalChain([r, 'access', _11 => _11.config, 'access', _12 => _12.fields, 'optionalAccess', _13 => _13[t], 'optionalAccess', _14 => _14.mask]))),P=b?typeof b=="string"?r.config.masks[b]:b:void 0,x=_core.computed.call(void 0, ()=>{let a=g();return a==null||a===""?"":P?P.format(a):String(a)}),B=a=>{if(!P){r.setField(t,a);return}let p=String(_nullishCoalesce(a, () => ("")));r.setField(t,P.parse(p))},f=()=>r.blurField(t),l=_core.computed.call(void 0, ()=>({isDirty:d(),isValidating:u(),isHidden:m(),isRequired:R(),hasError:!!s()}));return{value:g,displayValue:x,error:s,touched:i,invalid:V,isDirty:d,isValidating:u,isHidden:m,isRequired:R,fieldMeta:l,setValue:B,setBlur:f,update:a=>B(_nullishCoalesce(_optionalChain([a, 'optionalAccess', _15 => _15.target, 'optionalAccess', _16 => _16.value]), () => (a)))}}var F=()=>Math.random().toString(36).substring(2,9);function Y(t){let e=_core.inject.call(void 0, h),o=_core.inject.call(void 0, _core.DestroyRef),r=()=>{let s=_chunk6VDQSKUNcjs.e.call(void 0, e.getState().values,t);return Array.isArray(s)?s:[]},n=_core.signal.call(void 0, r()),c=_core.signal.call(void 0, n().map(F)),g=e.subscribe(()=>{let s=r(),i=_core.untracked.call(void 0, c);n.set(s),s.length!==i.length&&(s.length>i.length?c.set([...i,...Array.from({length:s.length-i.length},F)]):c.set(i.slice(0,s.length)))});return o.onDestroy(()=>{g(),e.unregisterPrefix&&e.unregisterPrefix(`${t}.`)}),{fields:_core.computed.call(void 0, ()=>n().map((s,i)=>({key:c()[i]||`temp-${i}`,value:s,index:i}))),length:_core.computed.call(void 0, ()=>n().length),append:s=>{c.update(i=>[...i,F()]),e.pushItem(t,s)},prepend:s=>{c.update(i=>[F(),...i]),e.prependItem(t,s)},remove:s=>{c.update(i=>i.filter((d,u)=>u!==s)),e.removeItem(t,s)},insert:(s,i)=>{c.update(d=>{let u=[...d];return u.splice(s,0,F()),u}),e.insertItem(t,s,i)},swap:(s,i)=>{c.update(d=>{let u=[...d];return[u[s],u[i]]=[u[i],u[s]],u}),e.swapItems(t,s,i)},move:(s,i)=>{c.update(d=>{let u=[...d],[m]=u.splice(s,1);return u.splice(i,0,m),u}),e.moveItem(t,s,i)},replace:s=>{c.set(s.map(()=>F())),e.setField(t,s)},clear:()=>{c.set([]),e.setField(t,[])}}}function et(t,e){let o=Object.keys(t),r=Object.keys(e);return o.length!==r.length?!1:o.every(n=>t[n]===e[n])}function rt(t){let e=S(),o=e.getStepStatus(t),r=_core.signal.call(void 0, o),n=e.subscribe(()=>{let u=e.getStepStatus(t),m=r();(u.hasErrors!==m.hasErrors||u.isDirty!==m.isDirty||!et(u.errors,m.errors))&&r.set(u)});try{_core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>n())}catch (e2){}let c=async()=>{let u=await e.validate({scope:t}),m=e.getStepErrors(t);return{valid:u,errors:m}},g=()=>e.getStepErrors(t),s=_core.computed.call(void 0, ()=>!r().hasErrors),i=_core.computed.call(void 0, ()=>r().isDirty),d=_core.computed.call(void 0, ()=>r().errors);return{scopeName:t,status:r,errors:d,validate:c,getErrors:g,isValid:s,isDirty:i,unsubscribe:n}}function nt(t,e){let o=Object.keys(t),r=Object.keys(e);return o.length!==r.length?!1:o.every(n=>t[n]===e[n])}function it(t){let e=S(),o=_core.signal.call(void 0, 0),r=_core.computed.call(void 0, ()=>_nullishCoalesce(t[o()], () => (""))),n=()=>_nullishCoalesce(t[o()], () => ("")),c=_core.signal.call(void 0, e.getStepStatus(n())),g=()=>{let l=n(),a=e.getStepStatus(l),p=c();(a.hasErrors!==p.hasErrors||a.isDirty!==p.isDirty||!nt(a.errors,p.errors))&&c.set(a)},s=e.subscribe(g);try{_core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>s())}catch (e3){}let i=async()=>{let l=n(),a=await e.validate({scope:l}),p=e.getStepErrors(l);return{valid:a,errors:p}},d=()=>e.getStepErrors(n()),u=async()=>{let l=n(),a=await e.validate({scope:l});if(a){let p=Math.min(o()+1,t.length-1);o.set(p),c.set(e.getStepStatus(_nullishCoalesce(t[p], () => (""))))}else{let p=e.getStepErrors(l),j=Object.keys(p);j.length>0&&e.markFieldsTouched(j)}return a},m=()=>{let l=Math.max(o()-1,0);o.set(l),c.set(e.getStepStatus(_nullishCoalesce(t[l], () => (""))))},R=l=>{let a=Math.max(0,Math.min(l-1,t.length-1));o.set(a),c.set(e.getStepStatus(_nullishCoalesce(t[a], () => (""))))},V=_core.computed.call(void 0, ()=>o()+1),b=_core.computed.call(void 0, ()=>o()===0),P=_core.computed.call(void 0, ()=>o()>=t.length-1),x=_core.computed.call(void 0, ()=>!c().hasErrors),B=_core.computed.call(void 0, ()=>c().isDirty),f=_core.computed.call(void 0, ()=>c().errors);return{step:V,stepIndex:o,scope:r,next:u,prev:m,goTo:R,isFirst:b,isLast:P,status:c,errors:f,isValid:x,isDirty:B,validate:i,getErrors:d}}function lt(t){let e=S(),o=_core.inject.call(void 0, _core.DestroyRef),r=_core.signal.call(void 0, _chunk6VDQSKUNcjs.e.call(void 0, e.getState().values,t),{equal:_chunk6VDQSKUNcjs.d}),n=e.watch(t,c=>{r.set(c)});return o.onDestroy(n),r.asReadonly()}exports.injectBitArray = Y; exports.injectBitField = J; exports.injectBitForm = $; exports.injectBitScope = rt; exports.injectBitSteps = it; exports.injectBitWatch = lt; exports.provideBitStore = C; exports.useBitStore = S;
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 _chunkQB7MQ6ZBcjs = require('../chunk-QB7MQ6ZB.cjs');var _core = require('@angular/core');var T=new (0, _core.InjectionToken)("BIT_STORE");function L(t){return{provide:T,useValue:t}}function S(){let t=_core.inject.call(void 0, T,{optional:!0});if(!t)throw new Error('BitForm: N\xE3o foi poss\xEDvel encontrar a BitStore. Certifique-se de que voc\xEA adicionou "provideBitStore(store)" nos providers do seu componente.');return t}function z(){let t=S(),e=_core.inject.call(void 0, _core.DestroyRef),o=_core.signal.call(void 0, t.getState()),r=_core.signal.call(void 0, null),n=_core.signal.call(void 0, null),a=t.subscribe(()=>{o.set(t.getState())});e.onDestroy(()=>a());let f=_core.computed.call(void 0, ()=>o().isValid),s=_core.computed.call(void 0, ()=>o().isSubmitting),i=_core.computed.call(void 0, ()=>o().isDirty),m=_core.computed.call(void 0, ()=>(o(),t.canUndo)),c=_core.computed.call(void 0, ()=>(o(),t.canRedo)),g=()=>o().values,R=()=>o().errors,E=()=>o().touched,x=P=>u=>(_optionalChain([u, 'optionalAccess', _2 => _2.preventDefault, 'call', _3 => _3()]),_optionalChain([u, 'optionalAccess', _4 => _4.stopPropagation, 'call', _5 => _5()]),t.submit(P)),B=P=>u=>(_optionalChain([u, 'optionalAccess', _6 => _6.preventDefault, 'call', _7 => _7()]),_optionalChain([u, 'optionalAccess', _8 => _8.stopPropagation, 'call', _9 => _9()]),r.set(null),t.submit(async d=>{try{let l=await P(d);n.set(l),r.set(null)}catch(l){_chunkQB7MQ6ZBcjs.h.call(void 0, l)?t.setServerErrors(_chunkQB7MQ6ZBcjs.i.call(void 0, l)):r.set(l instanceof Error?l:new Error(String(l)))}})),b=()=>{t.reset(),r.set(null),n.set(null)};return{meta:{isValid:f,isDirty:i,isSubmitting:s,canUndo:m,canRedo:c,submitError:r.asReadonly(),lastResponse:n.asReadonly()},getValues:g,getErrors:R,getTouched:E,submit:x,onSubmit:B,reset:b,setValues:t.setValues.bind(t),setError:t.setError.bind(t),setErrors:t.setErrors.bind(t),setServerErrors:t.setServerErrors.bind(t),setField:t.setField.bind(t),blurField:t.blurField.bind(t),validate:t.validate.bind(t),registerMask:t.registerMask.bind(t),mutations:{pushItem:t.pushItem.bind(t),prependItem:t.prependItem.bind(t),removeItem:t.removeItem.bind(t),insertItem:t.insertItem.bind(t),moveItem:t.moveItem.bind(t),swapItems:t.swapItems.bind(t)},history:{undo:t.undo.bind(t),redo:t.redo.bind(t)}}}function Q(t,e,o){let r=_core.inject.call(void 0, T),n=_core.signal.call(void 0, r.getState()),a=r.subscribe(()=>{n.set(r.getState())});_core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>{a(),r.unregisterField&&r.unregisterField(t)}),e&&r.registerField(t,e);let f=_core.computed.call(void 0, ()=>_chunkQB7MQ6ZBcjs.e.call(void 0, n().values,t)),s=_core.computed.call(void 0, ()=>n().errors[t]),i=_core.computed.call(void 0, ()=>!!n().touched[t]),m=_core.computed.call(void 0, ()=>i()?s():void 0),c=_core.computed.call(void 0, ()=>(n(),r.isFieldDirty(t))),g=_core.computed.call(void 0, ()=>(n(),r.isFieldValidating(t))),R=_core.computed.call(void 0, ()=>(n(),r.isHidden(t))),E=_core.computed.call(void 0, ()=>(n(),r.isRequired(t))),x=_core.computed.call(void 0, ()=>i()&&!!s()),B=_nullishCoalesce(_optionalChain([o, 'optionalAccess', _10 => _10.mask]), () => (_optionalChain([r, 'access', _11 => _11.config, 'access', _12 => _12.fields, 'optionalAccess', _13 => _13[t], 'optionalAccess', _14 => _14.mask]))),b=B?typeof B=="string"?r.config.masks[B]:B:void 0,I=_core.computed.call(void 0, ()=>{let p=f();return p==null||p===""?"":b?b.format(p):String(p)}),P=p=>{if(!b){r.setField(t,p);return}let K=String(_nullishCoalesce(p, () => ("")));r.setField(t,b.parse(K))},u=()=>r.blurField(t),d=_core.computed.call(void 0, ()=>!!s());return{value:f,displayValue:I,setValue:P,setBlur:u,update:p=>P(_nullishCoalesce(_optionalChain([p, 'optionalAccess', _15 => _15.target, 'optionalAccess', _16 => _16.value]), () => (p))),meta:{error:m,touched:i,invalid:x,isDirty:c,isValidating:g,isHidden:R,isRequired:E,hasError:d}}}var h=()=>Math.random().toString(36).substring(2,9);function Z(t){let e=_core.inject.call(void 0, T),o=_core.inject.call(void 0, _core.DestroyRef),r=()=>{let s=_chunkQB7MQ6ZBcjs.e.call(void 0, e.getState().values,t);return Array.isArray(s)?s:[]},n=_core.signal.call(void 0, r()),a=_core.signal.call(void 0, n().map(h)),f=e.subscribe(()=>{let s=r(),i=_core.untracked.call(void 0, a);n.set(s),s.length!==i.length&&(s.length>i.length?a.set([...i,...Array.from({length:s.length-i.length},h)]):a.set(i.slice(0,s.length)))});return o.onDestroy(()=>{f(),e.unregisterPrefix&&e.unregisterPrefix(`${t}.`)}),{fields:_core.computed.call(void 0, ()=>n().map((s,i)=>({key:a()[i]||`temp-${i}`,value:s,index:i}))),length:_core.computed.call(void 0, ()=>n().length),append:s=>{a.update(i=>[...i,h()]),e.pushItem(t,s)},prepend:s=>{a.update(i=>[h(),...i]),e.prependItem(t,s)},remove:s=>{a.update(i=>i.filter((m,c)=>c!==s)),e.removeItem(t,s)},insert:(s,i)=>{a.update(m=>{let c=[...m];return c.splice(s,0,h()),c}),e.insertItem(t,s,i)},swap:(s,i)=>{a.update(m=>{let c=[...m];return[c[s],c[i]]=[c[i],c[s]],c}),e.swapItems(t,s,i)},move:(s,i)=>{a.update(m=>{let c=[...m],[g]=c.splice(s,1);return c.splice(i,0,g),c}),e.moveItem(t,s,i)},replace:s=>{a.set(s.map(()=>h())),e.setField(t,s)},clear:()=>{a.set([]),e.setField(t,[])}}}function rt(t,e){let o=Object.keys(t),r=Object.keys(e);return o.length!==r.length?!1:o.every(n=>t[n]===e[n])}function st(t){let e=S(),o=e.getStepStatus(t),r=_core.signal.call(void 0, o),n=e.subscribe(()=>{let c=e.getStepStatus(t),g=r();(c.hasErrors!==g.hasErrors||c.isDirty!==g.isDirty||!rt(c.errors,g.errors))&&r.set(c)});try{_core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>n())}catch (e2){}let a=async()=>{let c=await e.validate({scope:t}),g=e.getStepErrors(t);return{valid:c,errors:g}},f=()=>e.getStepErrors(t),s=_core.computed.call(void 0, ()=>!r().hasErrors),i=_core.computed.call(void 0, ()=>r().isDirty),m=_core.computed.call(void 0, ()=>r().errors);return{scopeName:t,status:r,errors:m,validate:a,getErrors:f,isValid:s,isDirty:i,unsubscribe:n}}function it(t,e){let o=Object.keys(t),r=Object.keys(e);return o.length!==r.length?!1:o.every(n=>t[n]===e[n])}function at(t){let e=S(),o=_core.signal.call(void 0, 0),r=_core.computed.call(void 0, ()=>_nullishCoalesce(t[o()], () => (""))),n=()=>_nullishCoalesce(t[o()], () => ("")),a=_core.signal.call(void 0, e.getStepStatus(n())),f=()=>{let u=n(),d=e.getStepStatus(u),l=a();(d.hasErrors!==l.hasErrors||d.isDirty!==l.isDirty||!it(d.errors,l.errors))&&a.set(d)},s=e.subscribe(f);try{_core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>s())}catch (e3){}let i=async()=>{let u=n(),d=await e.validate({scope:u}),l=e.getStepErrors(u);return{valid:d,errors:l}},m=()=>e.getStepErrors(n()),c=async()=>{let u=n(),d=await e.validate({scope:u});if(d){let l=Math.min(o()+1,t.length-1);o.set(l),a.set(e.getStepStatus(_nullishCoalesce(t[l], () => (""))))}else{let l=e.getStepErrors(u),p=Object.keys(l);p.length>0&&e.markFieldsTouched(p)}return d},g=()=>{let u=Math.max(o()-1,0);o.set(u),a.set(e.getStepStatus(_nullishCoalesce(t[u], () => (""))))},R=u=>{let d=Math.max(0,Math.min(u-1,t.length-1));o.set(d),a.set(e.getStepStatus(_nullishCoalesce(t[d], () => (""))))},E=_core.computed.call(void 0, ()=>o()+1),x=_core.computed.call(void 0, ()=>o()===0),B=_core.computed.call(void 0, ()=>o()>=t.length-1),b=_core.computed.call(void 0, ()=>!a().hasErrors),I=_core.computed.call(void 0, ()=>a().isDirty),P=_core.computed.call(void 0, ()=>a().errors);return{step:E,stepIndex:o,scope:r,next:c,prev:g,goTo:R,isFirst:x,isLast:B,status:a,errors:P,isValid:b,isDirty:I,validate:i,getErrors:m}}function dt(t){let e=S(),o=_core.inject.call(void 0, _core.DestroyRef),r=_core.signal.call(void 0, _chunkQB7MQ6ZBcjs.e.call(void 0, e.getState().values,t),{equal:_chunkQB7MQ6ZBcjs.d}),n=e.watch(t,a=>{r.set(a)});return o.onDestroy(n),r.asReadonly()}exports.injectBitArray = Z; exports.injectBitField = Q; exports.injectBitForm = z; exports.injectBitScope = st; exports.injectBitSteps = at; exports.injectBitWatch = dt; exports.provideBitStore = L; exports.useBitStore = S;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/angular/index.cjs","../../src/angular/provider.ts","../../src/angular/inject-bit-form.ts","../../src/angular/inject-bit-field.ts","../../src/angular/inject-bit-array.ts"],"names":["BIT_STORE_TOKEN","InjectionToken","provideBitStore","store","useBitStore","inject","injectBitForm","destroyRef","stateSignal","signal","submitError","lastResponse","sub","isValid","computed","isSubmitting","isDirty","canUndo","canRedo","onSuccess","event","handler","values","result","err","isValidationErrorShape","extractServerErrors","injectBitField","path","config","options","unsubscribe","value","getDeepValue","error","touched","isValidating","isHidden","isRequired","invalid","maskOption","resolvedMask","displayValue","val","setValue","stringVal","setBlur","fieldMeta","e","generateId","injectBitArray","getRaw","valuesSig","idsSig","unsub","next","ids","untracked"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/angular/index.cjs","sourcesContent":[null,"import { inject, InjectionToken, Provider } from \"@angular/core\"; // IMPORTANTE: Adicione o 'inject' aqui\nimport { BitStore } from \"../core\";\n\nexport const BIT_STORE_TOKEN = new InjectionToken<BitStore<any>>(\"BIT_STORE\");\n\nexport function provideBitStore(store: BitStore<any>): Provider {\n return { provide: BIT_STORE_TOKEN, useValue: store };\n}\n\nexport function useBitStore<T extends object>() {\n const store = inject(BIT_STORE_TOKEN, { optional: true });\n\n if (!store) {\n throw new Error(\n \"BitForm: Não foi possível encontrar a BitStore. \" +\n 'Certifique-se de que você adicionou \"provideBitStore(store)\" nos providers do seu componente.',\n );\n }\n\n return store as BitStore<T>;\n}\n","import { signal, computed, inject, DestroyRef } from \"@angular/core\";\nimport { useBitStore } from \"./provider\";\nimport { isValidationErrorShape, extractServerErrors } from \"../core/utils\";\n\nexport function injectBitForm<T extends object>() {\n const store = useBitStore<T>();\n const destroyRef = inject(DestroyRef);\n const stateSignal = signal(store.getState());\n const submitError = signal<Error | null>(null);\n const lastResponse = signal<unknown>(null);\n\n const sub = store.subscribe(() => {\n stateSignal.set(store.getState());\n });\n\n destroyRef.onDestroy(() => sub());\n\n const isValid = computed(() => stateSignal().isValid);\n const isSubmitting = computed(() => stateSignal().isSubmitting);\n const isDirty = computed(() => stateSignal().isDirty);\n\n const canUndo = computed(() => {\n stateSignal();\n return store.canUndo;\n });\n\n const canRedo = computed(() => {\n stateSignal();\n return store.canRedo;\n });\n\n const getValues = () => stateSignal().values;\n const getErrors = () => stateSignal().errors;\n const getTouched = () => stateSignal().touched;\n\n const submit = (onSuccess: (values: T) => void | Promise<void>) => {\n return (event?: Event) => {\n event?.preventDefault();\n event?.stopPropagation();\n return store.submit(onSuccess);\n };\n };\n\n const onSubmit = (handler: (values: T) => Promise<unknown>) => {\n return (event?: Event) => {\n event?.preventDefault();\n event?.stopPropagation();\n submitError.set(null);\n return store.submit(async (values) => {\n try {\n const result = await handler(values);\n lastResponse.set(result);\n submitError.set(null);\n } catch (err) {\n if (isValidationErrorShape(err)) {\n store.setServerErrors(extractServerErrors(err));\n } else {\n submitError.set(\n err instanceof Error ? err : new Error(String(err)),\n );\n }\n }\n });\n };\n };\n\n const reset = () => {\n store.reset();\n submitError.set(null);\n lastResponse.set(null);\n };\n\n return {\n store,\n isValid,\n isSubmitting,\n isDirty,\n canUndo,\n canRedo,\n getValues,\n getErrors,\n getTouched,\n submit,\n onSubmit,\n submitError,\n lastResponse,\n reset,\n validate: store.validate.bind(store),\n setValues: store.setValues.bind(store),\n setError: store.setError.bind(store),\n setErrors: store.setErrors.bind(store),\n setServerErrors: store.setServerErrors.bind(store),\n setField: store.setField.bind(store),\n blurField: store.blurField.bind(store),\n registerMask: store.registerMask.bind(store),\n pushItem: store.pushItem.bind(store),\n prependItem: store.prependItem.bind(store),\n removeItem: store.removeItem.bind(store),\n insertItem: store.insertItem.bind(store),\n moveItem: store.moveItem.bind(store),\n swapItems: store.swapItems.bind(store),\n undo: store.undo.bind(store),\n redo: store.redo.bind(store),\n };\n}\n","import { inject, DestroyRef, computed, signal } from \"@angular/core\";\nimport { BIT_STORE_TOKEN } from \"./provider\";\nimport {\n BitFieldDefinition,\n BitFieldOptions,\n getDeepValue,\n BitPath,\n BitPathValue,\n} from \"../core\";\n\nexport function injectBitField<\n TValue = any,\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P, config?: BitFieldDefinition<TForm>, options?: BitFieldOptions) {\n const store = inject(BIT_STORE_TOKEN);\n\n const stateSignal = signal(store.getState());\n\n const unsubscribe = store.subscribe(() => {\n stateSignal.set(store.getState());\n });\n\n inject(DestroyRef).onDestroy(() => {\n unsubscribe();\n if (store.unregisterField) {\n store.unregisterField(path as string);\n }\n });\n\n if (config) {\n store.registerField(path as string, config as any);\n }\n\n const value = computed(\n () =>\n getDeepValue(\n stateSignal().values,\n path as string,\n ) as BitPathValue<TForm, P>,\n );\n const error = computed(\n () => (stateSignal().errors as Record<string, any>)[path],\n );\n const touched = computed(\n () => !!(stateSignal().touched as Record<string, any>)[path],\n );\n\n const isDirty = computed(() => {\n stateSignal();\n return store.isFieldDirty(path);\n });\n\n const isValidating = computed(() => {\n stateSignal();\n return store.isFieldValidating(path);\n });\n\n const isHidden = computed(() => {\n stateSignal();\n return store.isHidden(path);\n });\n\n const isRequired = computed(() => {\n stateSignal();\n return store.isRequired(path);\n });\n\n const invalid = computed(() => touched() && !!error());\n\n const maskOption =\n options?.mask ?? store.config.fields?.[path as string]?.mask;\n const resolvedMask = maskOption\n ? typeof maskOption === \"string\"\n ? store.config.masks![maskOption]\n : maskOption\n : undefined;\n\n const displayValue = computed(() => {\n const val = value();\n if (val === undefined || val === null || val === \"\") return \"\";\n\n return resolvedMask ? resolvedMask.format(val) : String(val);\n });\n\n const setValue = (val: any) => {\n if (!resolvedMask) {\n store.setField(path, val);\n return;\n }\n\n const stringVal = String(val ?? \"\");\n store.setField(path, resolvedMask.parse(stringVal) as any);\n };\n\n const setBlur = () => store.blurField(path);\n\n const fieldMeta = computed(() => ({\n isDirty: isDirty(),\n isValidating: isValidating(),\n isHidden: isHidden(),\n isRequired: isRequired(),\n hasError: !!error(),\n }));\n\n return {\n value,\n displayValue,\n error,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n fieldMeta,\n setValue,\n setBlur,\n update: (e: any) => setValue(e?.target?.value ?? e),\n };\n}\n","import { DestroyRef, signal, computed, inject, untracked } from \"@angular/core\";\nimport { BIT_STORE_TOKEN } from \"./provider\";\nimport {\n getDeepValue,\n BitArrayPath,\n BitPathValue,\n BitArrayItem,\n BitPath,\n} from \"../core\";\n\nconst generateId = () => Math.random().toString(36).substring(2, 9);\n\nexport function injectBitArray<\n TForm extends object = any,\n P extends BitArrayPath<TForm> = BitArrayPath<TForm>,\n>(path: P) {\n const store = inject(BIT_STORE_TOKEN);\n const destroyRef = inject(DestroyRef);\n\n const getRaw = () => {\n const val = getDeepValue(\n store.getState().values,\n path as string,\n ) as BitPathValue<TForm, P>;\n return Array.isArray(val)\n ? (val as BitArrayItem<BitPathValue<TForm, P>>[])\n : [];\n };\n\n const valuesSig = signal<BitArrayItem<BitPathValue<TForm, P>>[]>(getRaw());\n const idsSig = signal<string[]>(valuesSig().map(generateId));\n\n const unsub = store.subscribe(() => {\n const next = getRaw();\n const ids = untracked(idsSig);\n valuesSig.set(next);\n\n if (next.length !== ids.length) {\n if (next.length > ids.length) {\n idsSig.set([\n ...ids,\n ...Array.from({ length: next.length - ids.length }, generateId),\n ]);\n } else {\n idsSig.set(ids.slice(0, next.length));\n }\n }\n });\n\n destroyRef.onDestroy(() => {\n unsub();\n if (store.unregisterPrefix) store.unregisterPrefix(`${path as string}.`);\n });\n\n return {\n fields: computed(() =>\n valuesSig().map((v, i) => ({\n key: idsSig()[i] || `temp-${i}`,\n value: v,\n index: i,\n })),\n ),\n length: computed(() => valuesSig().length),\n append: (v: BitArrayItem<BitPathValue<TForm, P>>) => {\n idsSig.update((ids) => [...ids, generateId()]);\n store.pushItem(path, v);\n },\n prepend: (v: BitArrayItem<BitPathValue<TForm, P>>) => {\n idsSig.update((ids) => [generateId(), ...ids]);\n store.prependItem(path, v);\n },\n remove: (i: number) => {\n idsSig.update((ids) => ids.filter((_, idx) => idx !== i));\n store.removeItem(path, i);\n },\n insert: (index: number, v: BitArrayItem<BitPathValue<TForm, P>>) => {\n idsSig.update((ids) => {\n const c = [...ids];\n c.splice(index, 0, generateId());\n return c;\n });\n store.insertItem(path, index, v);\n },\n swap: (a: number, b: number) => {\n idsSig.update((ids) => {\n const c = [...ids];\n [c[a], c[b]] = [c[b], c[a]];\n return c;\n });\n store.swapItems(path, a, b);\n },\n move: (f: number, t: number) => {\n idsSig.update((ids) => {\n const c = [...ids];\n const [it] = c.splice(f, 1);\n c.splice(t, 0, it);\n return c;\n });\n store.moveItem(path, f, t);\n },\n replace: (items: BitArrayItem<BitPathValue<TForm, P>>[]) => {\n idsSig.set(items.map(() => generateId()));\n store.setField(path as unknown as BitPath<TForm>, items as any);\n },\n clear: () => {\n idsSig.set([]);\n store.setField(path as unknown as BitPath<TForm>, [] as any);\n },\n };\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/angular/index.cjs","../../src/angular/provider.ts","../../src/angular/inject-bit-form.ts","../../src/angular/inject-bit-field.ts","../../src/angular/inject-bit-array.ts"],"names":["BIT_STORE_TOKEN","InjectionToken","provideBitStore","store","useBitStore","inject","injectBitForm","destroyRef","stateSignal","signal","submitError","lastResponse","sub","isValid","computed","isSubmitting","isDirty","canUndo","canRedo","getValues","getErrors","getTouched","submit","onSuccess","event","onSubmit","handler","values","result","err","isValidationErrorShape","extractServerErrors","reset","injectBitField","path","config","options","unsubscribe","value","getDeepValue","rawError","touched","error","isValidating","isHidden","isRequired","invalid","maskOption","resolvedMask","displayValue","val","setValue","stringVal","setBlur","hasError","e","generateId","injectBitArray","getRaw","valuesSig","idsSig","unsub","next","ids","untracked"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/angular/index.cjs","sourcesContent":[null,"import { inject, InjectionToken, Provider } from \"@angular/core\"; // IMPORTANTE: Adicione o 'inject' aqui\nimport { BitStore } from \"../core\";\n\nexport const BIT_STORE_TOKEN = new InjectionToken<BitStore<any>>(\"BIT_STORE\");\n\nexport function provideBitStore(store: BitStore<any>): Provider {\n return { provide: BIT_STORE_TOKEN, useValue: store };\n}\n\nexport function useBitStore<T extends object>() {\n const store = inject(BIT_STORE_TOKEN, { optional: true });\n\n if (!store) {\n throw new Error(\n \"BitForm: Não foi possível encontrar a BitStore. \" +\n 'Certifique-se de que você adicionou \"provideBitStore(store)\" nos providers do seu componente.',\n );\n }\n\n return store as BitStore<T>;\n}\n","import { signal, computed, inject, DestroyRef } from \"@angular/core\";\nimport { useBitStore } from \"./provider\";\nimport { isValidationErrorShape, extractServerErrors } from \"../core/utils\";\n\nexport function injectBitForm<T extends object>() {\n const store = useBitStore<T>();\n const destroyRef = inject(DestroyRef);\n const stateSignal = signal(store.getState());\n const submitError = signal<Error | null>(null);\n const lastResponse = signal<unknown>(null);\n\n const sub = store.subscribe(() => {\n stateSignal.set(store.getState());\n });\n\n destroyRef.onDestroy(() => sub());\n\n const isValid = computed(() => stateSignal().isValid);\n const isSubmitting = computed(() => stateSignal().isSubmitting);\n const isDirty = computed(() => stateSignal().isDirty);\n\n const canUndo = computed(() => {\n stateSignal();\n return store.canUndo;\n });\n\n const canRedo = computed(() => {\n stateSignal();\n return store.canRedo;\n });\n\n const getValues = () => stateSignal().values;\n const getErrors = () => stateSignal().errors;\n const getTouched = () => stateSignal().touched;\n\n const submit = (onSuccess: (values: T) => void | Promise<void>) => {\n return (event?: Event) => {\n event?.preventDefault();\n event?.stopPropagation();\n return store.submit(onSuccess);\n };\n };\n\n const onSubmit = (handler: (values: T) => Promise<unknown>) => {\n return (event?: Event) => {\n event?.preventDefault();\n event?.stopPropagation();\n submitError.set(null);\n return store.submit(async (values) => {\n try {\n const result = await handler(values);\n lastResponse.set(result);\n submitError.set(null);\n } catch (err) {\n if (isValidationErrorShape(err)) {\n store.setServerErrors(extractServerErrors(err));\n } else {\n submitError.set(\n err instanceof Error ? err : new Error(String(err)),\n );\n }\n }\n });\n };\n };\n\n const reset = () => {\n store.reset();\n submitError.set(null);\n lastResponse.set(null);\n };\n\n const meta = {\n isValid,\n isDirty,\n isSubmitting,\n canUndo,\n canRedo,\n submitError: submitError.asReadonly(),\n lastResponse: lastResponse.asReadonly(),\n };\n\n return {\n // Metadata (grouped)\n meta,\n // Getters\n getValues,\n getErrors,\n getTouched,\n // Main actions (frequent use - flat)\n submit,\n onSubmit,\n reset,\n setValues: store.setValues.bind(store),\n setError: store.setError.bind(store),\n setErrors: store.setErrors.bind(store),\n setServerErrors: store.setServerErrors.bind(store),\n setField: store.setField.bind(store),\n blurField: store.blurField.bind(store),\n validate: store.validate.bind(store),\n registerMask: store.registerMask.bind(store),\n // Array mutations (grouped)\n mutations: {\n pushItem: store.pushItem.bind(store),\n prependItem: store.prependItem.bind(store),\n removeItem: store.removeItem.bind(store),\n insertItem: store.insertItem.bind(store),\n moveItem: store.moveItem.bind(store),\n swapItems: store.swapItems.bind(store),\n },\n // History (grouped)\n history: {\n undo: store.undo.bind(store),\n redo: store.redo.bind(store),\n },\n };\n}\n","import { inject, DestroyRef, computed, signal } from \"@angular/core\";\nimport { BIT_STORE_TOKEN } from \"./provider\";\nimport {\n BitFieldDefinition,\n BitFieldOptions,\n getDeepValue,\n BitPath,\n BitPathValue,\n} from \"../core\";\n\nexport interface InjectBitFieldMeta {\n error: () => string | undefined;\n touched: () => boolean;\n invalid: () => boolean;\n isDirty: () => boolean;\n isValidating: () => boolean;\n isHidden: () => boolean;\n isRequired: () => boolean;\n hasError: () => boolean;\n}\n\nexport interface InjectBitFieldResult<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n> {\n // Main handlers and values (flat)\n value: () => BitPathValue<TForm, P>;\n displayValue: () => string;\n setValue: (val: any) => void;\n setBlur: () => void;\n update: (e: any) => void;\n // Metadata (grouped)\n meta: InjectBitFieldMeta;\n}\n\nexport function injectBitField<\n TValue = any,\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(\n path: P,\n config?: BitFieldDefinition<TForm>,\n options?: BitFieldOptions,\n): InjectBitFieldResult<TForm, P> {\n const store = inject(BIT_STORE_TOKEN);\n\n const stateSignal = signal(store.getState());\n\n const unsubscribe = store.subscribe(() => {\n stateSignal.set(store.getState());\n });\n\n inject(DestroyRef).onDestroy(() => {\n unsubscribe();\n if (store.unregisterField) {\n store.unregisterField(path as string);\n }\n });\n\n if (config) {\n store.registerField(path as string, config as any);\n }\n\n const value = computed(\n () =>\n getDeepValue(stateSignal().values, path as string) as BitPathValue<\n TForm,\n P\n >,\n );\n const rawError = computed(\n () =>\n (stateSignal().errors as Record<string, any>)[path] as string | undefined,\n );\n const touched = computed(\n () => !!(stateSignal().touched as Record<string, any>)[path],\n );\n const error = computed(() => (touched() ? rawError() : undefined));\n\n const isDirty = computed(() => {\n stateSignal();\n return store.isFieldDirty(path);\n });\n\n const isValidating = computed(() => {\n stateSignal();\n return store.isFieldValidating(path);\n });\n\n const isHidden = computed(() => {\n stateSignal();\n return store.isHidden(path);\n });\n\n const isRequired = computed(() => {\n stateSignal();\n return store.isRequired(path);\n });\n\n const invalid = computed(() => touched() && !!rawError());\n\n const maskOption =\n options?.mask ?? store.config.fields?.[path as string]?.mask;\n const resolvedMask = maskOption\n ? typeof maskOption === \"string\"\n ? store.config.masks![maskOption]\n : maskOption\n : undefined;\n\n const displayValue = computed(() => {\n const val = value();\n if (val === undefined || val === null || val === \"\") return \"\";\n\n return resolvedMask ? resolvedMask.format(val) : String(val);\n });\n\n const setValue = (val: any) => {\n if (!resolvedMask) {\n store.setField(path, val);\n return;\n }\n\n const stringVal = String(val ?? \"\");\n store.setField(path, resolvedMask.parse(stringVal) as any);\n };\n\n const setBlur = () => store.blurField(path);\n\n const hasError = computed(() => !!rawError());\n\n const update = (e: any) => setValue(e?.target?.value ?? e);\n\n return {\n // Main handlers and values (flat)\n value,\n displayValue,\n setValue,\n setBlur,\n update,\n // Metadata (grouped)\n meta: {\n error,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError,\n },\n };\n}\n","import { DestroyRef, signal, computed, inject, untracked } from \"@angular/core\";\nimport { BIT_STORE_TOKEN } from \"./provider\";\nimport {\n getDeepValue,\n BitArrayPath,\n BitPathValue,\n BitArrayItem,\n BitPath,\n} from \"../core\";\n\nconst generateId = () => Math.random().toString(36).substring(2, 9);\n\nexport function injectBitArray<\n TForm extends object = any,\n P extends BitArrayPath<TForm> = BitArrayPath<TForm>,\n>(path: P) {\n const store = inject(BIT_STORE_TOKEN);\n const destroyRef = inject(DestroyRef);\n\n const getRaw = () => {\n const val = getDeepValue(\n store.getState().values,\n path as string,\n ) as BitPathValue<TForm, P>;\n return Array.isArray(val)\n ? (val as BitArrayItem<BitPathValue<TForm, P>>[])\n : [];\n };\n\n const valuesSig = signal<BitArrayItem<BitPathValue<TForm, P>>[]>(getRaw());\n const idsSig = signal<string[]>(valuesSig().map(generateId));\n\n const unsub = store.subscribe(() => {\n const next = getRaw();\n const ids = untracked(idsSig);\n valuesSig.set(next);\n\n if (next.length !== ids.length) {\n if (next.length > ids.length) {\n idsSig.set([\n ...ids,\n ...Array.from({ length: next.length - ids.length }, generateId),\n ]);\n } else {\n idsSig.set(ids.slice(0, next.length));\n }\n }\n });\n\n destroyRef.onDestroy(() => {\n unsub();\n if (store.unregisterPrefix) store.unregisterPrefix(`${path as string}.`);\n });\n\n return {\n fields: computed(() =>\n valuesSig().map((v, i) => ({\n key: idsSig()[i] || `temp-${i}`,\n value: v,\n index: i,\n })),\n ),\n length: computed(() => valuesSig().length),\n append: (v: BitArrayItem<BitPathValue<TForm, P>>) => {\n idsSig.update((ids) => [...ids, generateId()]);\n store.pushItem(path, v);\n },\n prepend: (v: BitArrayItem<BitPathValue<TForm, P>>) => {\n idsSig.update((ids) => [generateId(), ...ids]);\n store.prependItem(path, v);\n },\n remove: (i: number) => {\n idsSig.update((ids) => ids.filter((_, idx) => idx !== i));\n store.removeItem(path, i);\n },\n insert: (index: number, v: BitArrayItem<BitPathValue<TForm, P>>) => {\n idsSig.update((ids) => {\n const c = [...ids];\n c.splice(index, 0, generateId());\n return c;\n });\n store.insertItem(path, index, v);\n },\n swap: (a: number, b: number) => {\n idsSig.update((ids) => {\n const c = [...ids];\n [c[a], c[b]] = [c[b], c[a]];\n return c;\n });\n store.swapItems(path, a, b);\n },\n move: (f: number, t: number) => {\n idsSig.update((ids) => {\n const c = [...ids];\n const [it] = c.splice(f, 1);\n c.splice(t, 0, it);\n return c;\n });\n store.moveItem(path, f, t);\n },\n replace: (items: BitArrayItem<BitPathValue<TForm, P>>[]) => {\n idsSig.set(items.map(() => generateId()));\n store.setField(path as unknown as BitPath<TForm>, items as any);\n },\n clear: () => {\n idsSig.set([]);\n store.setField(path as unknown as BitPath<TForm>, [] as any);\n },\n };\n}\n"]}
@@ -1,68 +1,71 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { Provider, computed, signal, Signal } from '@angular/core';
3
- import { B as BitStore } from '../index-BD_l3aH5.cjs';
4
- import { e as BitErrors, n as BitTouched, k as BitPath, l as BitPathValue, B as BitMask, b as BitArrayPath, a as BitArrayItem, g as BitFieldDefinition, h as BitFieldOptions, S as ScopeStatus, V as ValidateScopeResult } from '../bus-DAwKIiMY.cjs';
3
+ import { B as BitStore } from '../index-CH9ZdEkZ.cjs';
4
+ import { e as BitErrors, n as BitTouched, k as BitPath, l as BitPathValue, B as BitMask, b as BitArrayPath, a as BitArrayItem, g as BitFieldDefinition, h as BitFieldOptions, S as ScopeStatus, V as ValidateScopeResult } from '../bus-BtKUu_9m.cjs';
5
5
 
6
6
  declare function provideBitStore(store: BitStore<any>): Provider;
7
7
  declare function useBitStore<T extends object>(): BitStore<T>;
8
8
 
9
9
  declare function injectBitForm<T extends object>(): {
10
- store: BitStore<T>;
11
- isValid: _angular_core.Signal<boolean>;
12
- isSubmitting: _angular_core.Signal<boolean>;
13
- isDirty: _angular_core.Signal<boolean>;
14
- canUndo: _angular_core.Signal<boolean>;
15
- canRedo: _angular_core.Signal<boolean>;
10
+ meta: {
11
+ isValid: _angular_core.Signal<boolean>;
12
+ isDirty: _angular_core.Signal<boolean>;
13
+ isSubmitting: _angular_core.Signal<boolean>;
14
+ canUndo: _angular_core.Signal<boolean>;
15
+ canRedo: _angular_core.Signal<boolean>;
16
+ submitError: _angular_core.Signal<Error | null>;
17
+ lastResponse: _angular_core.Signal<unknown>;
18
+ };
16
19
  getValues: () => T;
17
20
  getErrors: () => BitErrors<T>;
18
21
  getTouched: () => BitTouched<T>;
19
22
  submit: (onSuccess: (values: T) => void | Promise<void>) => (event?: Event) => Promise<void>;
20
23
  onSubmit: (handler: (values: T) => Promise<unknown>) => (event?: Event) => Promise<void>;
21
- submitError: _angular_core.WritableSignal<Error | null>;
22
- lastResponse: _angular_core.WritableSignal<unknown>;
23
24
  reset: () => void;
24
- validate: (options?: {
25
- scope?: string;
26
- scopeFields?: string[];
27
- }) => Promise<boolean>;
28
25
  setValues: (newValues: T) => void;
29
26
  setError: (path: string, message: string | undefined) => void;
30
27
  setErrors: (errors: BitErrors<T>) => void;
31
28
  setServerErrors: (serverErrors: Record<string, string[] | string>) => void;
32
29
  setField: <P extends BitPath<T, "">>(path: P, value: BitPathValue<T, P>) => void;
33
30
  blurField: <P extends BitPath<T, "">>(path: P) => void;
31
+ validate: (options?: {
32
+ scope?: string;
33
+ scopeFields?: string[];
34
+ }) => Promise<boolean>;
34
35
  registerMask: (name: string, mask: BitMask) => void;
35
- pushItem: <P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>) => void;
36
- prependItem: <P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>) => void;
37
- removeItem: <P extends BitArrayPath<T>>(path: P, index: number) => void;
38
- insertItem: <P extends BitArrayPath<T>>(path: P, index: number, value: BitArrayItem<BitPathValue<T, P>>) => void;
39
- moveItem: <P extends BitArrayPath<T>>(path: P, from: number, to: number) => void;
40
- swapItems: <P extends BitArrayPath<T>>(path: P, indexA: number, indexB: number) => void;
41
- undo: () => void;
42
- redo: () => void;
36
+ mutations: {
37
+ pushItem: <P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>) => void;
38
+ prependItem: <P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>) => void;
39
+ removeItem: <P extends BitArrayPath<T>>(path: P, index: number) => void;
40
+ insertItem: <P extends BitArrayPath<T>>(path: P, index: number, value: BitArrayItem<BitPathValue<T, P>>) => void;
41
+ moveItem: <P extends BitArrayPath<T>>(path: P, from: number, to: number) => void;
42
+ swapItems: <P extends BitArrayPath<T>>(path: P, indexA: number, indexB: number) => void;
43
+ };
44
+ history: {
45
+ undo: () => void;
46
+ redo: () => void;
47
+ };
43
48
  };
44
49
 
45
- declare function injectBitField<TValue = any, TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P, config?: BitFieldDefinition<TForm>, options?: BitFieldOptions): {
46
- value: _angular_core.Signal<BitPathValue<TForm, P>>;
47
- displayValue: _angular_core.Signal<string>;
48
- error: _angular_core.Signal<any>;
49
- touched: _angular_core.Signal<boolean>;
50
- invalid: _angular_core.Signal<boolean>;
51
- isDirty: _angular_core.Signal<boolean>;
52
- isValidating: _angular_core.Signal<boolean>;
53
- isHidden: _angular_core.Signal<boolean>;
54
- isRequired: _angular_core.Signal<boolean>;
55
- fieldMeta: _angular_core.Signal<{
56
- isDirty: boolean;
57
- isValidating: boolean;
58
- isHidden: boolean;
59
- isRequired: boolean;
60
- hasError: boolean;
61
- }>;
50
+ interface InjectBitFieldMeta {
51
+ error: () => string | undefined;
52
+ touched: () => boolean;
53
+ invalid: () => boolean;
54
+ isDirty: () => boolean;
55
+ isValidating: () => boolean;
56
+ isHidden: () => boolean;
57
+ isRequired: () => boolean;
58
+ hasError: () => boolean;
59
+ }
60
+ interface InjectBitFieldResult<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>> {
61
+ value: () => BitPathValue<TForm, P>;
62
+ displayValue: () => string;
62
63
  setValue: (val: any) => void;
63
64
  setBlur: () => void;
64
65
  update: (e: any) => void;
65
- };
66
+ meta: InjectBitFieldMeta;
67
+ }
68
+ declare function injectBitField<TValue = any, TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P, config?: BitFieldDefinition<TForm>, options?: BitFieldOptions): InjectBitFieldResult<TForm, P>;
66
69
 
67
70
  declare function injectBitArray<TForm extends object = any, P extends BitArrayPath<TForm> = BitArrayPath<TForm>>(path: P): {
68
71
  fields: _angular_core.Signal<{
@@ -112,4 +115,4 @@ declare function injectBitSteps(scopeNames: string[]): InjectBitStepsResult;
112
115
 
113
116
  declare function injectBitWatch<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): Signal<BitPathValue<TForm, P>>;
114
117
 
115
- export { ScopeStatus, ValidateScopeResult, injectBitArray, injectBitField, injectBitForm, injectBitScope, injectBitSteps, injectBitWatch, provideBitStore, useBitStore };
118
+ export { type InjectBitFieldMeta, type InjectBitFieldResult, ScopeStatus, ValidateScopeResult, injectBitArray, injectBitField, injectBitForm, injectBitScope, injectBitSteps, injectBitWatch, provideBitStore, useBitStore };
@@ -1,68 +1,71 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { Provider, computed, signal, Signal } from '@angular/core';
3
- import { B as BitStore } from '../index-CPKnWBVv.js';
4
- import { e as BitErrors, n as BitTouched, k as BitPath, l as BitPathValue, B as BitMask, b as BitArrayPath, a as BitArrayItem, g as BitFieldDefinition, h as BitFieldOptions, S as ScopeStatus, V as ValidateScopeResult } from '../bus-DAwKIiMY.js';
3
+ import { B as BitStore } from '../index-C4HaSh5W.js';
4
+ import { e as BitErrors, n as BitTouched, k as BitPath, l as BitPathValue, B as BitMask, b as BitArrayPath, a as BitArrayItem, g as BitFieldDefinition, h as BitFieldOptions, S as ScopeStatus, V as ValidateScopeResult } from '../bus-BtKUu_9m.js';
5
5
 
6
6
  declare function provideBitStore(store: BitStore<any>): Provider;
7
7
  declare function useBitStore<T extends object>(): BitStore<T>;
8
8
 
9
9
  declare function injectBitForm<T extends object>(): {
10
- store: BitStore<T>;
11
- isValid: _angular_core.Signal<boolean>;
12
- isSubmitting: _angular_core.Signal<boolean>;
13
- isDirty: _angular_core.Signal<boolean>;
14
- canUndo: _angular_core.Signal<boolean>;
15
- canRedo: _angular_core.Signal<boolean>;
10
+ meta: {
11
+ isValid: _angular_core.Signal<boolean>;
12
+ isDirty: _angular_core.Signal<boolean>;
13
+ isSubmitting: _angular_core.Signal<boolean>;
14
+ canUndo: _angular_core.Signal<boolean>;
15
+ canRedo: _angular_core.Signal<boolean>;
16
+ submitError: _angular_core.Signal<Error | null>;
17
+ lastResponse: _angular_core.Signal<unknown>;
18
+ };
16
19
  getValues: () => T;
17
20
  getErrors: () => BitErrors<T>;
18
21
  getTouched: () => BitTouched<T>;
19
22
  submit: (onSuccess: (values: T) => void | Promise<void>) => (event?: Event) => Promise<void>;
20
23
  onSubmit: (handler: (values: T) => Promise<unknown>) => (event?: Event) => Promise<void>;
21
- submitError: _angular_core.WritableSignal<Error | null>;
22
- lastResponse: _angular_core.WritableSignal<unknown>;
23
24
  reset: () => void;
24
- validate: (options?: {
25
- scope?: string;
26
- scopeFields?: string[];
27
- }) => Promise<boolean>;
28
25
  setValues: (newValues: T) => void;
29
26
  setError: (path: string, message: string | undefined) => void;
30
27
  setErrors: (errors: BitErrors<T>) => void;
31
28
  setServerErrors: (serverErrors: Record<string, string[] | string>) => void;
32
29
  setField: <P extends BitPath<T, "">>(path: P, value: BitPathValue<T, P>) => void;
33
30
  blurField: <P extends BitPath<T, "">>(path: P) => void;
31
+ validate: (options?: {
32
+ scope?: string;
33
+ scopeFields?: string[];
34
+ }) => Promise<boolean>;
34
35
  registerMask: (name: string, mask: BitMask) => void;
35
- pushItem: <P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>) => void;
36
- prependItem: <P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>) => void;
37
- removeItem: <P extends BitArrayPath<T>>(path: P, index: number) => void;
38
- insertItem: <P extends BitArrayPath<T>>(path: P, index: number, value: BitArrayItem<BitPathValue<T, P>>) => void;
39
- moveItem: <P extends BitArrayPath<T>>(path: P, from: number, to: number) => void;
40
- swapItems: <P extends BitArrayPath<T>>(path: P, indexA: number, indexB: number) => void;
41
- undo: () => void;
42
- redo: () => void;
36
+ mutations: {
37
+ pushItem: <P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>) => void;
38
+ prependItem: <P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>) => void;
39
+ removeItem: <P extends BitArrayPath<T>>(path: P, index: number) => void;
40
+ insertItem: <P extends BitArrayPath<T>>(path: P, index: number, value: BitArrayItem<BitPathValue<T, P>>) => void;
41
+ moveItem: <P extends BitArrayPath<T>>(path: P, from: number, to: number) => void;
42
+ swapItems: <P extends BitArrayPath<T>>(path: P, indexA: number, indexB: number) => void;
43
+ };
44
+ history: {
45
+ undo: () => void;
46
+ redo: () => void;
47
+ };
43
48
  };
44
49
 
45
- declare function injectBitField<TValue = any, TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P, config?: BitFieldDefinition<TForm>, options?: BitFieldOptions): {
46
- value: _angular_core.Signal<BitPathValue<TForm, P>>;
47
- displayValue: _angular_core.Signal<string>;
48
- error: _angular_core.Signal<any>;
49
- touched: _angular_core.Signal<boolean>;
50
- invalid: _angular_core.Signal<boolean>;
51
- isDirty: _angular_core.Signal<boolean>;
52
- isValidating: _angular_core.Signal<boolean>;
53
- isHidden: _angular_core.Signal<boolean>;
54
- isRequired: _angular_core.Signal<boolean>;
55
- fieldMeta: _angular_core.Signal<{
56
- isDirty: boolean;
57
- isValidating: boolean;
58
- isHidden: boolean;
59
- isRequired: boolean;
60
- hasError: boolean;
61
- }>;
50
+ interface InjectBitFieldMeta {
51
+ error: () => string | undefined;
52
+ touched: () => boolean;
53
+ invalid: () => boolean;
54
+ isDirty: () => boolean;
55
+ isValidating: () => boolean;
56
+ isHidden: () => boolean;
57
+ isRequired: () => boolean;
58
+ hasError: () => boolean;
59
+ }
60
+ interface InjectBitFieldResult<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>> {
61
+ value: () => BitPathValue<TForm, P>;
62
+ displayValue: () => string;
62
63
  setValue: (val: any) => void;
63
64
  setBlur: () => void;
64
65
  update: (e: any) => void;
65
- };
66
+ meta: InjectBitFieldMeta;
67
+ }
68
+ declare function injectBitField<TValue = any, TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P, config?: BitFieldDefinition<TForm>, options?: BitFieldOptions): InjectBitFieldResult<TForm, P>;
66
69
 
67
70
  declare function injectBitArray<TForm extends object = any, P extends BitArrayPath<TForm> = BitArrayPath<TForm>>(path: P): {
68
71
  fields: _angular_core.Signal<{
@@ -112,4 +115,4 @@ declare function injectBitSteps(scopeNames: string[]): InjectBitStepsResult;
112
115
 
113
116
  declare function injectBitWatch<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): Signal<BitPathValue<TForm, P>>;
114
117
 
115
- export { ScopeStatus, ValidateScopeResult, injectBitArray, injectBitField, injectBitForm, injectBitScope, injectBitSteps, injectBitWatch, provideBitStore, useBitStore };
118
+ export { type InjectBitFieldMeta, type InjectBitFieldResult, ScopeStatus, ValidateScopeResult, injectBitArray, injectBitField, injectBitForm, injectBitScope, injectBitSteps, injectBitWatch, provideBitStore, useBitStore };
@@ -1,2 +1,2 @@
1
- import{d as w,e as v,h as k,i as A}from"../chunk-KA4FAGIX.js";import{inject as K,InjectionToken as W}from"@angular/core";var h=new W("BIT_STORE");function C(t){return{provide:h,useValue:t}}function S(){let t=K(h,{optional:!0});if(!t)throw new Error('BitForm: N\xE3o foi poss\xEDvel encontrar a BitStore. Certifique-se de que voc\xEA adicionou "provideBitStore(store)" nos providers do seu componente.');return t}import{signal as I,computed as E,inject as L,DestroyRef as U}from"@angular/core";function $(){let t=S(),e=L(U),o=I(t.getState()),r=I(null),n=I(null),c=t.subscribe(()=>{o.set(t.getState())});e.onDestroy(()=>c());let g=E(()=>o().isValid),s=E(()=>o().isSubmitting),i=E(()=>o().isDirty),d=E(()=>(o(),t.canUndo)),u=E(()=>(o(),t.canRedo));return{store:t,isValid:g,isSubmitting:s,isDirty:i,canUndo:d,canRedo:u,getValues:()=>o().values,getErrors:()=>o().errors,getTouched:()=>o().touched,submit:B=>f=>(f?.preventDefault(),f?.stopPropagation(),t.submit(B)),onSubmit:B=>f=>(f?.preventDefault(),f?.stopPropagation(),r.set(null),t.submit(async l=>{try{let a=await B(l);n.set(a),r.set(null)}catch(a){k(a)?t.setServerErrors(A(a)):r.set(a instanceof Error?a:new Error(String(a)))}})),submitError:r,lastResponse:n,reset:()=>{t.reset(),r.set(null),n.set(null)},validate:t.validate.bind(t),setValues:t.setValues.bind(t),setError:t.setError.bind(t),setErrors:t.setErrors.bind(t),setServerErrors:t.setServerErrors.bind(t),setField:t.setField.bind(t),blurField:t.blurField.bind(t),registerMask:t.registerMask.bind(t),pushItem:t.pushItem.bind(t),prependItem:t.prependItem.bind(t),removeItem:t.removeItem.bind(t),insertItem:t.insertItem.bind(t),moveItem:t.moveItem.bind(t),swapItems:t.swapItems.bind(t),undo:t.undo.bind(t),redo:t.redo.bind(t)}}import{inject as O,DestroyRef as z,computed as y,signal as G}from"@angular/core";function J(t,e,o){let r=O(h),n=G(r.getState()),c=r.subscribe(()=>{n.set(r.getState())});O(z).onDestroy(()=>{c(),r.unregisterField&&r.unregisterField(t)}),e&&r.registerField(t,e);let g=y(()=>v(n().values,t)),s=y(()=>n().errors[t]),i=y(()=>!!n().touched[t]),d=y(()=>(n(),r.isFieldDirty(t))),u=y(()=>(n(),r.isFieldValidating(t))),m=y(()=>(n(),r.isHidden(t))),R=y(()=>(n(),r.isRequired(t))),V=y(()=>i()&&!!s()),b=o?.mask??r.config.fields?.[t]?.mask,P=b?typeof b=="string"?r.config.masks[b]:b:void 0,x=y(()=>{let a=g();return a==null||a===""?"":P?P.format(a):String(a)}),B=a=>{if(!P){r.setField(t,a);return}let p=String(a??"");r.setField(t,P.parse(p))},f=()=>r.blurField(t),l=y(()=>({isDirty:d(),isValidating:u(),isHidden:m(),isRequired:R(),hasError:!!s()}));return{value:g,displayValue:x,error:s,touched:i,invalid:V,isDirty:d,isValidating:u,isHidden:m,isRequired:R,fieldMeta:l,setValue:B,setBlur:f,update:a=>B(a?.target?.value??a)}}import{DestroyRef as Q,signal as q,computed as M,inject as _,untracked as X}from"@angular/core";var F=()=>Math.random().toString(36).substring(2,9);function Y(t){let e=_(h),o=_(Q),r=()=>{let s=v(e.getState().values,t);return Array.isArray(s)?s:[]},n=q(r()),c=q(n().map(F)),g=e.subscribe(()=>{let s=r(),i=X(c);n.set(s),s.length!==i.length&&(s.length>i.length?c.set([...i,...Array.from({length:s.length-i.length},F)]):c.set(i.slice(0,s.length)))});return o.onDestroy(()=>{g(),e.unregisterPrefix&&e.unregisterPrefix(`${t}.`)}),{fields:M(()=>n().map((s,i)=>({key:c()[i]||`temp-${i}`,value:s,index:i}))),length:M(()=>n().length),append:s=>{c.update(i=>[...i,F()]),e.pushItem(t,s)},prepend:s=>{c.update(i=>[F(),...i]),e.prependItem(t,s)},remove:s=>{c.update(i=>i.filter((d,u)=>u!==s)),e.removeItem(t,s)},insert:(s,i)=>{c.update(d=>{let u=[...d];return u.splice(s,0,F()),u}),e.insertItem(t,s,i)},swap:(s,i)=>{c.update(d=>{let u=[...d];return[u[s],u[i]]=[u[i],u[s]],u}),e.swapItems(t,s,i)},move:(s,i)=>{c.update(d=>{let u=[...d],[m]=u.splice(s,1);return u.splice(i,0,m),u}),e.moveItem(t,s,i)},replace:s=>{c.set(s.map(()=>F())),e.setField(t,s)},clear:()=>{c.set([]),e.setField(t,[])}}}import{signal as Z,computed as D,DestroyRef as N,inject as tt}from"@angular/core";function et(t,e){let o=Object.keys(t),r=Object.keys(e);return o.length!==r.length?!1:o.every(n=>t[n]===e[n])}function rt(t){let e=S(),o=e.getStepStatus(t),r=Z(o),n=e.subscribe(()=>{let u=e.getStepStatus(t),m=r();(u.hasErrors!==m.hasErrors||u.isDirty!==m.isDirty||!et(u.errors,m.errors))&&r.set(u)});try{tt(N).onDestroy(()=>n())}catch{}let c=async()=>{let u=await e.validate({scope:t}),m=e.getStepErrors(t);return{valid:u,errors:m}},g=()=>e.getStepErrors(t),s=D(()=>!r().hasErrors),i=D(()=>r().isDirty),d=D(()=>r().errors);return{scopeName:t,status:r,errors:d,validate:c,getErrors:g,isValid:s,isDirty:i,unsubscribe:n}}import{signal as H,computed as T,DestroyRef as st,inject as ot}from"@angular/core";function nt(t,e){let o=Object.keys(t),r=Object.keys(e);return o.length!==r.length?!1:o.every(n=>t[n]===e[n])}function it(t){let e=S(),o=H(0),r=T(()=>t[o()]??""),n=()=>t[o()]??"",c=H(e.getStepStatus(n())),g=()=>{let l=n(),a=e.getStepStatus(l),p=c();(a.hasErrors!==p.hasErrors||a.isDirty!==p.isDirty||!nt(a.errors,p.errors))&&c.set(a)},s=e.subscribe(g);try{ot(st).onDestroy(()=>s())}catch{}let i=async()=>{let l=n(),a=await e.validate({scope:l}),p=e.getStepErrors(l);return{valid:a,errors:p}},d=()=>e.getStepErrors(n()),u=async()=>{let l=n(),a=await e.validate({scope:l});if(a){let p=Math.min(o()+1,t.length-1);o.set(p),c.set(e.getStepStatus(t[p]??""))}else{let p=e.getStepErrors(l),j=Object.keys(p);j.length>0&&e.markFieldsTouched(j)}return a},m=()=>{let l=Math.max(o()-1,0);o.set(l),c.set(e.getStepStatus(t[l]??""))},R=l=>{let a=Math.max(0,Math.min(l-1,t.length-1));o.set(a),c.set(e.getStepStatus(t[a]??""))},V=T(()=>o()+1),b=T(()=>o()===0),P=T(()=>o()>=t.length-1),x=T(()=>!c().hasErrors),B=T(()=>c().isDirty),f=T(()=>c().errors);return{step:V,stepIndex:o,scope:r,next:u,prev:m,goTo:R,isFirst:b,isLast:P,status:c,errors:f,isValid:x,isDirty:B,validate:i,getErrors:d}}import{DestroyRef as at,signal as ct,inject as ut}from"@angular/core";function lt(t){let e=S(),o=ut(at),r=ct(v(e.getState().values,t),{equal:w}),n=e.watch(t,c=>{r.set(c)});return o.onDestroy(n),r.asReadonly()}export{Y as injectBitArray,J as injectBitField,$ as injectBitForm,rt as injectBitScope,it as injectBitSteps,lt as injectBitWatch,C as provideBitStore,S as useBitStore};
1
+ import{d as w,e as F,h as k,i as A}from"../chunk-MVDS4KAD.js";import{inject as W,InjectionToken as C}from"@angular/core";var T=new C("BIT_STORE");function L(t){return{provide:T,useValue:t}}function S(){let t=W(T,{optional:!0});if(!t)throw new Error('BitForm: N\xE3o foi poss\xEDvel encontrar a BitStore. Certifique-se de que voc\xEA adicionou "provideBitStore(store)" nos providers do seu componente.');return t}import{signal as j,computed as V,inject as U,DestroyRef as $}from"@angular/core";function z(){let t=S(),e=U($),o=j(t.getState()),r=j(null),n=j(null),a=t.subscribe(()=>{o.set(t.getState())});e.onDestroy(()=>a());let f=V(()=>o().isValid),s=V(()=>o().isSubmitting),i=V(()=>o().isDirty),m=V(()=>(o(),t.canUndo)),c=V(()=>(o(),t.canRedo)),g=()=>o().values,R=()=>o().errors,E=()=>o().touched,x=P=>u=>(u?.preventDefault(),u?.stopPropagation(),t.submit(P)),B=P=>u=>(u?.preventDefault(),u?.stopPropagation(),r.set(null),t.submit(async d=>{try{let l=await P(d);n.set(l),r.set(null)}catch(l){k(l)?t.setServerErrors(A(l)):r.set(l instanceof Error?l:new Error(String(l)))}})),b=()=>{t.reset(),r.set(null),n.set(null)};return{meta:{isValid:f,isDirty:i,isSubmitting:s,canUndo:m,canRedo:c,submitError:r.asReadonly(),lastResponse:n.asReadonly()},getValues:g,getErrors:R,getTouched:E,submit:x,onSubmit:B,reset:b,setValues:t.setValues.bind(t),setError:t.setError.bind(t),setErrors:t.setErrors.bind(t),setServerErrors:t.setServerErrors.bind(t),setField:t.setField.bind(t),blurField:t.blurField.bind(t),validate:t.validate.bind(t),registerMask:t.registerMask.bind(t),mutations:{pushItem:t.pushItem.bind(t),prependItem:t.prependItem.bind(t),removeItem:t.removeItem.bind(t),insertItem:t.insertItem.bind(t),moveItem:t.moveItem.bind(t),swapItems:t.swapItems.bind(t)},history:{undo:t.undo.bind(t),redo:t.redo.bind(t)}}}import{inject as O,DestroyRef as G,computed as y,signal as J}from"@angular/core";function Q(t,e,o){let r=O(T),n=J(r.getState()),a=r.subscribe(()=>{n.set(r.getState())});O(G).onDestroy(()=>{a(),r.unregisterField&&r.unregisterField(t)}),e&&r.registerField(t,e);let f=y(()=>F(n().values,t)),s=y(()=>n().errors[t]),i=y(()=>!!n().touched[t]),m=y(()=>i()?s():void 0),c=y(()=>(n(),r.isFieldDirty(t))),g=y(()=>(n(),r.isFieldValidating(t))),R=y(()=>(n(),r.isHidden(t))),E=y(()=>(n(),r.isRequired(t))),x=y(()=>i()&&!!s()),B=o?.mask??r.config.fields?.[t]?.mask,b=B?typeof B=="string"?r.config.masks[B]:B:void 0,I=y(()=>{let p=f();return p==null||p===""?"":b?b.format(p):String(p)}),P=p=>{if(!b){r.setField(t,p);return}let K=String(p??"");r.setField(t,b.parse(K))},u=()=>r.blurField(t),d=y(()=>!!s());return{value:f,displayValue:I,setValue:P,setBlur:u,update:p=>P(p?.target?.value??p),meta:{error:m,touched:i,invalid:x,isDirty:c,isValidating:g,isHidden:R,isRequired:E,hasError:d}}}import{DestroyRef as X,signal as M,computed as q,inject as _,untracked as Y}from"@angular/core";var h=()=>Math.random().toString(36).substring(2,9);function Z(t){let e=_(T),o=_(X),r=()=>{let s=F(e.getState().values,t);return Array.isArray(s)?s:[]},n=M(r()),a=M(n().map(h)),f=e.subscribe(()=>{let s=r(),i=Y(a);n.set(s),s.length!==i.length&&(s.length>i.length?a.set([...i,...Array.from({length:s.length-i.length},h)]):a.set(i.slice(0,s.length)))});return o.onDestroy(()=>{f(),e.unregisterPrefix&&e.unregisterPrefix(`${t}.`)}),{fields:q(()=>n().map((s,i)=>({key:a()[i]||`temp-${i}`,value:s,index:i}))),length:q(()=>n().length),append:s=>{a.update(i=>[...i,h()]),e.pushItem(t,s)},prepend:s=>{a.update(i=>[h(),...i]),e.prependItem(t,s)},remove:s=>{a.update(i=>i.filter((m,c)=>c!==s)),e.removeItem(t,s)},insert:(s,i)=>{a.update(m=>{let c=[...m];return c.splice(s,0,h()),c}),e.insertItem(t,s,i)},swap:(s,i)=>{a.update(m=>{let c=[...m];return[c[s],c[i]]=[c[i],c[s]],c}),e.swapItems(t,s,i)},move:(s,i)=>{a.update(m=>{let c=[...m],[g]=c.splice(s,1);return c.splice(i,0,g),c}),e.moveItem(t,s,i)},replace:s=>{a.set(s.map(()=>h())),e.setField(t,s)},clear:()=>{a.set([]),e.setField(t,[])}}}import{signal as N,computed as D,DestroyRef as tt,inject as et}from"@angular/core";function rt(t,e){let o=Object.keys(t),r=Object.keys(e);return o.length!==r.length?!1:o.every(n=>t[n]===e[n])}function st(t){let e=S(),o=e.getStepStatus(t),r=N(o),n=e.subscribe(()=>{let c=e.getStepStatus(t),g=r();(c.hasErrors!==g.hasErrors||c.isDirty!==g.isDirty||!rt(c.errors,g.errors))&&r.set(c)});try{et(tt).onDestroy(()=>n())}catch{}let a=async()=>{let c=await e.validate({scope:t}),g=e.getStepErrors(t);return{valid:c,errors:g}},f=()=>e.getStepErrors(t),s=D(()=>!r().hasErrors),i=D(()=>r().isDirty),m=D(()=>r().errors);return{scopeName:t,status:r,errors:m,validate:a,getErrors:f,isValid:s,isDirty:i,unsubscribe:n}}import{signal as H,computed as v,DestroyRef as ot,inject as nt}from"@angular/core";function it(t,e){let o=Object.keys(t),r=Object.keys(e);return o.length!==r.length?!1:o.every(n=>t[n]===e[n])}function at(t){let e=S(),o=H(0),r=v(()=>t[o()]??""),n=()=>t[o()]??"",a=H(e.getStepStatus(n())),f=()=>{let u=n(),d=e.getStepStatus(u),l=a();(d.hasErrors!==l.hasErrors||d.isDirty!==l.isDirty||!it(d.errors,l.errors))&&a.set(d)},s=e.subscribe(f);try{nt(ot).onDestroy(()=>s())}catch{}let i=async()=>{let u=n(),d=await e.validate({scope:u}),l=e.getStepErrors(u);return{valid:d,errors:l}},m=()=>e.getStepErrors(n()),c=async()=>{let u=n(),d=await e.validate({scope:u});if(d){let l=Math.min(o()+1,t.length-1);o.set(l),a.set(e.getStepStatus(t[l]??""))}else{let l=e.getStepErrors(u),p=Object.keys(l);p.length>0&&e.markFieldsTouched(p)}return d},g=()=>{let u=Math.max(o()-1,0);o.set(u),a.set(e.getStepStatus(t[u]??""))},R=u=>{let d=Math.max(0,Math.min(u-1,t.length-1));o.set(d),a.set(e.getStepStatus(t[d]??""))},E=v(()=>o()+1),x=v(()=>o()===0),B=v(()=>o()>=t.length-1),b=v(()=>!a().hasErrors),I=v(()=>a().isDirty),P=v(()=>a().errors);return{step:E,stepIndex:o,scope:r,next:c,prev:g,goTo:R,isFirst:x,isLast:B,status:a,errors:P,isValid:b,isDirty:I,validate:i,getErrors:m}}import{DestroyRef as ct,signal as ut,inject as lt}from"@angular/core";function dt(t){let e=S(),o=lt(ct),r=ut(F(e.getState().values,t),{equal:w}),n=e.watch(t,a=>{r.set(a)});return o.onDestroy(n),r.asReadonly()}export{Z as injectBitArray,Q as injectBitField,z as injectBitForm,st as injectBitScope,at as injectBitSteps,dt as injectBitWatch,L as provideBitStore,S as useBitStore};
2
2
  //# sourceMappingURL=index.js.map