@lehnihon/bit-form 2.0.1 → 2.1.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 (66) hide show
  1. package/README.md +1 -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 +74 -37
  5. package/dist/angular/index.d.ts +74 -37
  6. package/dist/angular/index.js +1 -1
  7. package/dist/angular/index.js.map +1 -1
  8. package/dist/bus-C1xKmQdw.d.cts +144 -0
  9. package/dist/bus-C1xKmQdw.d.ts +144 -0
  10. package/dist/chunk-5JV3QKOT.js +2 -0
  11. package/dist/chunk-5JV3QKOT.js.map +1 -0
  12. package/dist/{chunk-VCHMCHED.cjs → chunk-CPFHKRLU.cjs} +2 -2
  13. package/dist/chunk-CPFHKRLU.cjs.map +1 -0
  14. package/dist/{chunk-4MPIKMTH.cjs → chunk-SIM4YIOW.cjs} +7 -7
  15. package/dist/chunk-SIM4YIOW.cjs.map +1 -0
  16. package/dist/chunk-XHZAMKSZ.js +133 -0
  17. package/dist/chunk-XHZAMKSZ.js.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.d.cts +6 -24
  24. package/dist/index.d.ts +6 -24
  25. package/dist/index.js +1 -1
  26. package/dist/public-types-B3jU1R2E.d.cts +70 -0
  27. package/dist/public-types-By_9Weno.d.ts +70 -0
  28. package/dist/react/index.cjs +1 -1
  29. package/dist/react/index.cjs.map +1 -1
  30. package/dist/react/index.d.cts +31 -38
  31. package/dist/react/index.d.ts +31 -38
  32. package/dist/react/index.js +1 -1
  33. package/dist/react/index.js.map +1 -1
  34. package/dist/react-native/index.cjs +1 -1
  35. package/dist/react-native/index.cjs.map +1 -1
  36. package/dist/react-native/index.d.cts +15 -4
  37. package/dist/react-native/index.d.ts +15 -4
  38. package/dist/react-native/index.js +1 -1
  39. package/dist/react-native/index.js.map +1 -1
  40. package/dist/resolvers/joi.d.cts +1 -1
  41. package/dist/resolvers/joi.d.ts +1 -1
  42. package/dist/resolvers/yup.d.cts +1 -1
  43. package/dist/resolvers/yup.d.ts +1 -1
  44. package/dist/resolvers/zod.d.cts +1 -1
  45. package/dist/resolvers/zod.d.ts +1 -1
  46. package/dist/types-C2mpfhp1.d.cts +17 -0
  47. package/dist/types-C2mpfhp1.d.ts +17 -0
  48. package/dist/{use-bit-watch-CtdglHvd.d.cts → use-bit-watch-DVxSlp2A.d.ts} +92 -28
  49. package/dist/{use-bit-watch-B_ket_j5.d.ts → use-bit-watch-v4eamRCT.d.cts} +92 -28
  50. package/dist/vue/index.cjs +1 -1
  51. package/dist/vue/index.cjs.map +1 -1
  52. package/dist/vue/index.d.cts +74 -36
  53. package/dist/vue/index.d.ts +74 -36
  54. package/dist/vue/index.js +1 -1
  55. package/dist/vue/index.js.map +1 -1
  56. package/package.json +7 -2
  57. package/dist/bus-CnqfsZpc.d.cts +0 -286
  58. package/dist/bus-CnqfsZpc.d.ts +0 -286
  59. package/dist/chunk-4MPIKMTH.cjs.map +0 -1
  60. package/dist/chunk-OZOSKSJA.js +0 -2
  61. package/dist/chunk-OZOSKSJA.js.map +0 -1
  62. package/dist/chunk-VCHMCHED.cjs.map +0 -1
  63. package/dist/chunk-ZWLZ4XDF.js +0 -133
  64. package/dist/chunk-ZWLZ4XDF.js.map +0 -1
  65. package/dist/index-BAOM6INR.d.ts +0 -206
  66. package/dist/index-BdLuC0wS.d.cts +0 -206
package/README.md CHANGED
@@ -161,6 +161,7 @@ The complete documentation is available in the `/docs` folder. Explore the guide
161
161
  - **[Conditional Logic](./docs/features/conditional-logic.md)**: Managing field dependencies.
162
162
  - **[Computed Fields](./docs/features/computed-fields.md)**: Handling derived form values.
163
163
  - **[Field Arrays](./docs/features/field-arrays.md)**: Managing dynamic lists of fields.
164
+ - **[File Uploads](./docs/features/file-uploads.md)**: Backend-first upload integration with `useBitUpload` and `injectBitUpload`.
164
165
  - **[Scopes](./docs/features/scopes.md)**: Per-step validation and status for wizard forms (`useBitScope`, `injectBitScope`).
165
166
  - **[History & Time Travel](./docs/features/history-and-time-travel.md)**: Using Undo/Redo features.
166
167
 
@@ -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 _chunk4MPIKMTHcjs = require('../chunk-4MPIKMTH.cjs');var _core = require('@angular/core');var v=new (0, _core.InjectionToken)("BIT_STORE");function C(t){return{provide:v,useValue:t}}function g(){let t=_core.inject.call(void 0, v,{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 G(){let t=g(),e=_core.inject.call(void 0, _core.DestroyRef),s=_core.signal.call(void 0, t.getState()),r=_core.signal.call(void 0, null),n=_core.signal.call(void 0, null),a=t.subscribe(()=>{s.set(t.getState())});e.onDestroy(()=>a());let S=_core.computed.call(void 0, ()=>s().isValid),o=_core.computed.call(void 0, ()=>s().isSubmitting),i=_core.computed.call(void 0, ()=>s().isDirty),m=()=>s().values,c=()=>s().errors,y=()=>s().touched,x=()=>t.getDirtyValues(),I=P=>B=>(_optionalChain([B, 'optionalAccess', _2 => _2.preventDefault, 'call', _3 => _3()]),_optionalChain([B, 'optionalAccess', _4 => _4.stopPropagation, 'call', _5 => _5()]),t.submit(P)),V=P=>B=>(_optionalChain([B, 'optionalAccess', _6 => _6.preventDefault, 'call', _7 => _7()]),_optionalChain([B, 'optionalAccess', _8 => _8.stopPropagation, 'call', _9 => _9()]),r.set(null),t.submit(async(l,d)=>{try{let u=await P(l,d);n.set(u),r.set(null)}catch(u){_chunk4MPIKMTHcjs.h.call(void 0, u)?t.setServerErrors(_chunk4MPIKMTHcjs.i.call(void 0, u)):r.set(u instanceof Error?u:new Error(String(u)))}})),b=()=>{t.reset(),r.set(null),n.set(null)};return{meta:{isValid:S,isDirty:i,isSubmitting:o,submitError:r.asReadonly(),lastResponse:n.asReadonly()},getValues:m,getErrors:c,getTouched:y,getDirtyValues:x,submit:I,onSubmit:V,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),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)}}}function X(t,e,s){let r=_core.inject.call(void 0, v),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 S=_core.computed.call(void 0, ()=>_chunk4MPIKMTHcjs.e.call(void 0, n().values,t)),o=_core.computed.call(void 0, ()=>n().errors[t]),i=_core.computed.call(void 0, ()=>!!n().touched[t]),m=_core.computed.call(void 0, ()=>i()?o():void 0),c=_core.computed.call(void 0, ()=>(n(),r.isFieldDirty(t))),y=_core.computed.call(void 0, ()=>(n(),r.isFieldValidating(t))),x=_core.computed.call(void 0, ()=>(n(),r.isHidden(t))),I=_core.computed.call(void 0, ()=>(n(),r.isRequired(t))),V=_core.computed.call(void 0, ()=>i()&&!!o()),b=_nullishCoalesce(_optionalChain([s, 'optionalAccess', _10 => _10.mask]), () => (_optionalChain([r, 'access', _11 => _11.config, 'access', _12 => _12.fields, 'optionalAccess', _13 => _13[t], 'optionalAccess', _14 => _14.mask]))),T=b?typeof b=="string"?r.config.masks[b]:b:void 0,P=_core.computed.call(void 0, ()=>{let p=S();return p==null||p===""?"":T?T.format(p):String(p)}),B=p=>{if(!T){r.setField(t,p);return}let K=String(_nullishCoalesce(p, () => ("")));r.setField(t,T.parse(K))},l=()=>r.blurField(t),d=_core.computed.call(void 0, ()=>!!o());return{value:S,displayValue:P,setValue:B,setBlur:l,update:p=>B(_nullishCoalesce(_optionalChain([p, 'optionalAccess', _15 => _15.target, 'optionalAccess', _16 => _16.value]), () => (p))),meta:{error:m,touched:i,invalid:V,isDirty:c,isValidating:y,isHidden:x,isRequired:I,hasError:d}}}var F=()=>Math.random().toString(36).substring(2,9);function N(t){let e=_core.inject.call(void 0, v),s=_core.inject.call(void 0, _core.DestroyRef),r=()=>{let o=_chunk4MPIKMTHcjs.e.call(void 0, e.getState().values,t);return Array.isArray(o)?o:[]},n=_core.signal.call(void 0, r()),a=_core.signal.call(void 0, n().map(F)),S=e.subscribe(()=>{let o=r(),i=_core.untracked.call(void 0, a);n.set(o),o.length!==i.length&&(o.length>i.length?a.set([...i,...Array.from({length:o.length-i.length},F)]):a.set(i.slice(0,o.length)))});return s.onDestroy(()=>{S(),e.unregisterPrefix&&e.unregisterPrefix(`${t}.`)}),{fields:_core.computed.call(void 0, ()=>n().map((o,i)=>({key:a()[i]||`temp-${i}`,value:o,index:i}))),length:_core.computed.call(void 0, ()=>n().length),append:o=>{a.update(i=>[...i,F()]),e.pushItem(t,o)},prepend:o=>{a.update(i=>[F(),...i]),e.prependItem(t,o)},remove:o=>{a.update(i=>i.filter((m,c)=>c!==o)),e.removeItem(t,o)},insert:(o,i)=>{a.update(m=>{let c=[...m];return c.splice(o,0,F()),c}),e.insertItem(t,o,i)},swap:(o,i)=>{a.update(m=>{let c=[...m];return[c[o],c[i]]=[c[i],c[o]],c}),e.swapItems(t,o,i)},move:(o,i)=>{a.update(m=>{let c=[...m],[y]=c.splice(o,1);return c.splice(i,0,y),c}),e.moveItem(t,o,i)},replace:o=>{a.set(o.map(()=>F())),e.setField(t,o)},clear:()=>{a.set([]),e.setField(t,[])}}}function ot(){let t=g(),e=_core.inject.call(void 0, _core.DestroyRef),s=_core.signal.call(void 0, t.getHistoryMetadata()),r=t.subscribe(()=>{s.set(t.getHistoryMetadata())});return e.onDestroy(()=>r()),{canUndo:_core.computed.call(void 0, ()=>s().canUndo),canRedo:_core.computed.call(void 0, ()=>s().canRedo),historyIndex:_core.computed.call(void 0, ()=>s().historyIndex),historySize:_core.computed.call(void 0, ()=>s().historySize),undo:()=>t.undo(),redo:()=>t.redo()}}function at(t,e){let s=Object.keys(t),r=Object.keys(e);return s.length!==r.length?!1:s.every(n=>t[n]===e[n])}function ct(t){let e=g(),s=e.getStepStatus(t),r=_core.signal.call(void 0, s),n=e.subscribe(()=>{let c=e.getStepStatus(t),y=r();(c.hasErrors!==y.hasErrors||c.isDirty!==y.isDirty||!at(c.errors,y.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}),y=e.getStepErrors(t);return{valid:c,errors:y}},S=()=>e.getStepErrors(t),o=_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:S,isValid:o,isDirty:i,unsubscribe:n}}function dt(t,e){let s=Object.keys(t),r=Object.keys(e);return s.length!==r.length?!1:s.every(n=>t[n]===e[n])}function mt(t){let e=g(),s=_core.signal.call(void 0, 0),r=_core.computed.call(void 0, ()=>_nullishCoalesce(t[s()], () => (""))),n=()=>_nullishCoalesce(t[s()], () => ("")),a=_core.signal.call(void 0, e.getStepStatus(n())),S=()=>{let l=n(),d=e.getStepStatus(l),u=a();(d.hasErrors!==u.hasErrors||d.isDirty!==u.isDirty||!dt(d.errors,u.errors))&&a.set(d)},o=e.subscribe(S);try{_core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>o())}catch (e3){}let i=async()=>{let l=n(),d=await e.validate({scope:l}),u=e.getStepErrors(l);return{valid:d,errors:u}},m=()=>e.getStepErrors(n()),c=async()=>{let l=n(),d=await e.validate({scope:l});if(d){let u=Math.min(s()+1,t.length-1);s.set(u),a.set(e.getStepStatus(_nullishCoalesce(t[u], () => (""))))}else{let u=e.getStepErrors(l),p=Object.keys(u);p.length>0&&e.markFieldsTouched(p)}return d},y=()=>{let l=Math.max(s()-1,0);s.set(l),a.set(e.getStepStatus(_nullishCoalesce(t[l], () => (""))))},x=l=>{let d=Math.max(0,Math.min(l-1,t.length-1));s.set(d),a.set(e.getStepStatus(_nullishCoalesce(t[d], () => (""))))},I=_core.computed.call(void 0, ()=>s()+1),V=_core.computed.call(void 0, ()=>s()===0),b=_core.computed.call(void 0, ()=>s()>=t.length-1),T=_core.computed.call(void 0, ()=>!a().hasErrors),P=_core.computed.call(void 0, ()=>a().isDirty),B=_core.computed.call(void 0, ()=>a().errors);return{step:I,stepIndex:s,scope:r,next:c,prev:y,goTo:x,isFirst:V,isLast:b,status:a,errors:B,isValid:T,isDirty:P,validate:i,getErrors:m}}function ft(t){let e=g(),s=_core.inject.call(void 0, _core.DestroyRef),r=_core.signal.call(void 0, _chunk4MPIKMTHcjs.e.call(void 0, e.getState().values,t),{equal:_chunk4MPIKMTHcjs.d}),n=e.watch(t,a=>{r.set(a)});return s.onDestroy(n),r.asReadonly()}exports.injectBitArray = N; exports.injectBitField = X; exports.injectBitForm = G; exports.injectBitHistory = ot; exports.injectBitScope = ct; exports.injectBitSteps = mt; exports.injectBitWatch = ft; exports.provideBitStore = C; exports.useBitStore = g;
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 _chunkSIM4YIOWcjs = require('../chunk-SIM4YIOW.cjs');var _core = require('@angular/core');var b=new (0, _core.InjectionToken)("BIT_STORE");function L(t){return{provide:b,useValue:t}}function f(){let t=_core.inject.call(void 0, b,{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 Q(){let t=f(),e=_core.inject.call(void 0, _core.DestroyRef),s=_core.signal.call(void 0, t.getState()),r=_core.signal.call(void 0, null),n=_core.signal.call(void 0, null),a=t.subscribe(()=>{s.set(t.getState())});e.onDestroy(()=>a());let g=_core.computed.call(void 0, ()=>s().isValid),o=_core.computed.call(void 0, ()=>s().isSubmitting),i=_core.computed.call(void 0, ()=>s().isDirty),u=()=>s().values,c=()=>s().errors,y=()=>s().touched,E=()=>t.getDirtyValues(),I=v=>S=>(_optionalChain([S, 'optionalAccess', _2 => _2.preventDefault, 'call', _3 => _3()]),_optionalChain([S, 'optionalAccess', _4 => _4.stopPropagation, 'call', _5 => _5()]),t.submit(v)),P=v=>S=>(_optionalChain([S, 'optionalAccess', _6 => _6.preventDefault, 'call', _7 => _7()]),_optionalChain([S, 'optionalAccess', _8 => _8.stopPropagation, 'call', _9 => _9()]),r.set(null),t.submit(async(l,p)=>{try{let d=await v(l,p);n.set(d),r.set(null)}catch(d){_chunkSIM4YIOWcjs.h.call(void 0, d)?t.setServerErrors(_chunkSIM4YIOWcjs.i.call(void 0, d)):r.set(d instanceof Error?d:new Error(String(d)))}})),F=()=>{t.reset(),r.set(null),n.set(null)};return{meta:{isValid:g,isDirty:i,isSubmitting:o,submitError:r.asReadonly(),lastResponse:n.asReadonly()},getValues:u,getErrors:c,getTouched:y,getDirtyValues:E,submit:I,onSubmit:P,reset:F,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),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)}}}function k(t,e,s){let r=_core.inject.call(void 0, b),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 g=_core.computed.call(void 0, ()=>_chunkSIM4YIOWcjs.e.call(void 0, n().values,t)),o=_core.computed.call(void 0, ()=>n().errors[t]),i=_core.computed.call(void 0, ()=>!!n().touched[t]),u=_core.computed.call(void 0, ()=>i()?o():void 0),c=_core.computed.call(void 0, ()=>(n(),r.isFieldDirty(t))),y=_core.computed.call(void 0, ()=>(n(),r.isFieldValidating(t))),E=_core.computed.call(void 0, ()=>(n(),r.isHidden(t))),I=_core.computed.call(void 0, ()=>(n(),r.isRequired(t))),P=_core.computed.call(void 0, ()=>i()&&!!o()),F=_nullishCoalesce(_optionalChain([s, 'optionalAccess', _10 => _10.mask]), () => (_optionalChain([r, 'access', _11 => _11.config, 'access', _12 => _12.fields, 'optionalAccess', _13 => _13[t], 'optionalAccess', _14 => _14.mask]))),T=F?typeof F=="string"?r.config.masks[F]:F:void 0,v=_core.computed.call(void 0, ()=>{let m=g();return m==null||m===""?"":T?T.format(m):String(m)}),S=m=>{if(!T){r.setField(t,m);return}let V=String(_nullishCoalesce(m, () => ("")));r.setField(t,T.parse(V))},l=()=>r.blurField(t),p=_core.computed.call(void 0, ()=>!!o());return{value:g,displayValue:v,setValue:S,setBlur:l,update:m=>S(_nullishCoalesce(_optionalChain([m, 'optionalAccess', _15 => _15.target, 'optionalAccess', _16 => _16.value]), () => (m))),meta:{error:u,touched:i,invalid:P,isDirty:c,isValidating:y,isHidden:E,isRequired:I,hasError:p}}}var j=()=>Math.random().toString(36).substring(2,9);function tt(t){let e=_core.inject.call(void 0, b),s=_core.inject.call(void 0, _core.DestroyRef),r=()=>{let o=_chunkSIM4YIOWcjs.e.call(void 0, e.getState().values,t);return Array.isArray(o)?o:[]},n=_core.signal.call(void 0, r()),a=_core.signal.call(void 0, n().map(j)),g=e.subscribe(()=>{let o=r(),i=_core.untracked.call(void 0, a);n.set(o),o.length!==i.length&&(o.length>i.length?a.set([...i,...Array.from({length:o.length-i.length},j)]):a.set(i.slice(0,o.length)))});return s.onDestroy(()=>{g(),e.unregisterPrefix&&e.unregisterPrefix(`${t}.`)}),{fields:_core.computed.call(void 0, ()=>n().map((o,i)=>({key:a()[i]||`temp-${i}`,value:o,index:i}))),length:_core.computed.call(void 0, ()=>n().length),append:o=>{a.update(i=>[...i,j()]),e.pushItem(t,o)},prepend:o=>{a.update(i=>[j(),...i]),e.prependItem(t,o)},remove:o=>{a.update(i=>i.filter((u,c)=>c!==o)),e.removeItem(t,o)},insert:(o,i)=>{a.update(u=>{let c=[...u];return c.splice(o,0,j()),c}),e.insertItem(t,o,i)},swap:(o,i)=>{a.update(u=>{let c=[...u];return[c[o],c[i]]=[c[i],c[o]],c}),e.swapItems(t,o,i)},move:(o,i)=>{a.update(u=>{let c=[...u],[y]=c.splice(o,1);return c.splice(i,0,y),c}),e.moveItem(t,o,i)},replace:o=>{a.set(o.map(()=>j())),e.setField(t,o)},clear:()=>{a.set([]),e.setField(t,[])}}}function ot(){let t=f(),e=_core.inject.call(void 0, _core.DestroyRef),s=_core.signal.call(void 0, t.getHistoryMetadata()),r=t.subscribe(()=>{s.set(t.getHistoryMetadata())});return e.onDestroy(()=>r()),{canUndo:_core.computed.call(void 0, ()=>s().canUndo),canRedo:_core.computed.call(void 0, ()=>s().canRedo),historyIndex:_core.computed.call(void 0, ()=>s().historyIndex),historySize:_core.computed.call(void 0, ()=>s().historySize),undo:()=>t.undo(),redo:()=>t.redo()}}function ct(t,e){let s=Object.keys(t),r=Object.keys(e);return s.length!==r.length?!1:s.every(n=>t[n]===e[n])}function ut(t){let e=f(),s=e.getStepStatus(t),r=_core.signal.call(void 0, s),n=e.subscribe(()=>{let c=e.getStepStatus(t),y=r();(c.hasErrors!==y.hasErrors||c.isDirty!==y.isDirty||!ct(c.errors,y.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}),y=e.getStepErrors(t);return{valid:c,errors:y}},g=()=>e.getStepErrors(t),o=_core.computed.call(void 0, ()=>!r().hasErrors),i=_core.computed.call(void 0, ()=>r().isDirty),u=_core.computed.call(void 0, ()=>r().errors);return{scopeName:t,status:r,errors:u,validate:a,getErrors:g,isValid:o,isDirty:i,unsubscribe:n}}function mt(t,e){let s=Object.keys(t),r=Object.keys(e);return s.length!==r.length?!1:s.every(n=>t[n]===e[n])}function pt(t){let e=f(),s=_core.signal.call(void 0, 0),r=_core.computed.call(void 0, ()=>_nullishCoalesce(t[s()], () => (""))),n=()=>_nullishCoalesce(t[s()], () => ("")),a=_core.signal.call(void 0, e.getStepStatus(n())),g=()=>{let l=n(),p=e.getStepStatus(l),d=a();(p.hasErrors!==d.hasErrors||p.isDirty!==d.isDirty||!mt(p.errors,d.errors))&&a.set(p)},o=e.subscribe(g);try{_core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>o())}catch (e3){}let i=async()=>{let l=n(),p=await e.validate({scope:l}),d=e.getStepErrors(l);return{valid:p,errors:d}},u=()=>e.getStepErrors(n()),c=async()=>{let l=n(),p=_optionalChain([e, 'access', _17 => _17.getConfig, 'call', _18 => _18(), 'access', _19 => _19.scopes, 'optionalAccess', _20 => _20[l]]);if(e.hasValidationsInProgress(p))return!1;let d=await e.validate({scope:l});if(d){let m=Math.min(s()+1,t.length-1);s.set(m),a.set(e.getStepStatus(_nullishCoalesce(t[m], () => (""))))}else{let m=e.getStepErrors(l),V=Object.keys(m);V.length>0&&e.markFieldsTouched(V)}return d},y=()=>{let l=Math.max(s()-1,0);s.set(l),a.set(e.getStepStatus(_nullishCoalesce(t[l], () => (""))))},E=l=>{let p=Math.max(0,Math.min(l-1,t.length-1));s.set(p),a.set(e.getStepStatus(_nullishCoalesce(t[p], () => (""))))},I=_core.computed.call(void 0, ()=>s()+1),P=_core.computed.call(void 0, ()=>s()===0),F=_core.computed.call(void 0, ()=>s()>=t.length-1),T=_core.computed.call(void 0, ()=>!a().hasErrors),v=_core.computed.call(void 0, ()=>a().isDirty),S=_core.computed.call(void 0, ()=>a().errors);return{step:I,stepIndex:s,scope:r,next:c,prev:y,goTo:E,isFirst:P,isLast:F,status:a,errors:S,isValid:T,isDirty:v,validate:i,getErrors:u}}function Bt(t){let e=f(),s=_core.inject.call(void 0, _core.DestroyRef),r=_core.signal.call(void 0, _chunkSIM4YIOWcjs.e.call(void 0, e.getState().values,t),{equal:_chunkSIM4YIOWcjs.d}),n=e.watch(t,a=>{r.set(a)});return s.onDestroy(n),r.asReadonly()}function Ft(t,e,s){let r=_core.inject.call(void 0, b),n=k(t),a=null,g=async i=>{if(i){r.beginFieldValidation(t),await r.clearFieldAsyncError(t);try{let u=await e(i);n.setValue(u.url),a=u.key,await r.clearFieldAsyncError(t)}catch(u){let c=u instanceof Error?u.message:"Upload failed";await r.setFieldAsyncError(t,c)}finally{r.endFieldValidation(t)}}},o=async()=>{if(a&&s)try{await s(a)}catch(i){let u=i instanceof Error?i.message:"Delete failed";await r.setFieldAsyncError(t,u);return}n.setValue(null),a=null,await r.clearFieldAsyncError(t)};return{value:_core.computed.call(void 0, ()=>n.value()),setValue:n.setValue,error:_core.computed.call(void 0, ()=>n.meta.error()),isValidating:_core.computed.call(void 0, ()=>n.meta.isValidating()||!1),upload:g,remove:o}}exports.injectBitArray = tt; exports.injectBitField = k; exports.injectBitForm = Q; exports.injectBitHistory = ot; exports.injectBitScope = ut; exports.injectBitSteps = pt; exports.injectBitUpload = Ft; exports.injectBitWatch = Bt; exports.provideBitStore = L; exports.useBitStore = f;
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","getValues","getErrors","getTouched","getDirtyValues","submit","onSuccess","event","onSubmit","handler","values","dirtyValues","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/store\";\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 getValues = () => stateSignal().values;\n const getErrors = () => stateSignal().errors;\n const getTouched = () => stateSignal().touched;\n const getDirtyValues = () => store.getDirtyValues();\n\n const submit = (\n onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>,\n ) => {\n return (event?: Event) => {\n event?.preventDefault();\n event?.stopPropagation();\n return store.submit(onSuccess);\n };\n };\n\n const onSubmit = (\n handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>,\n ) => {\n return (event?: Event) => {\n event?.preventDefault();\n event?.stopPropagation();\n submitError.set(null);\n return store.submit(async (values, dirtyValues) => {\n try {\n const result = await handler(values, dirtyValues);\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 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 getDirtyValues,\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 // 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 };\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
+ {"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","getValues","getErrors","getTouched","getDirtyValues","submit","onSuccess","event","onSubmit","handler","values","dirtyValues","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\";\nimport type { BitFrameworkStore } from \"../core\";\n\nexport const BIT_STORE_TOKEN = new InjectionToken<BitFrameworkStore<any>>(\n \"BIT_STORE\",\n);\n\nexport function provideBitStore<T extends object>(\n store: BitFrameworkStore<T>,\n): 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 BitFrameworkStore<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 getValues = () => stateSignal().values;\n const getErrors = () => stateSignal().errors;\n const getTouched = () => stateSignal().touched;\n const getDirtyValues = () => store.getDirtyValues();\n\n const submit = (\n onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>,\n ) => {\n return (event?: Event) => {\n event?.preventDefault();\n event?.stopPropagation();\n return store.submit(onSuccess);\n };\n };\n\n const onSubmit = (\n handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>,\n ) => {\n return (event?: Event) => {\n event?.preventDefault();\n event?.stopPropagation();\n submitError.set(null);\n return store.submit(async (values, dirtyValues) => {\n try {\n const result = await handler(values, dirtyValues);\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 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 getDirtyValues,\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 // 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 };\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\";\nimport type { InjectBitFieldMeta, InjectBitFieldResult } from \"./types\";\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,10 +1,11 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { Provider, computed, signal, Signal } from '@angular/core';
3
- import { B as BitStore } from '../index-BdLuC0wS.cjs';
4
- import { d as BitErrors, o as BitTouched, b as BitPath, c as BitPathValue, h as BitArrayPath, g as BitArrayItem, k as BitFieldDefinition, l as BitFieldOptions, S as ScopeStatus, V as ValidateScopeResult } from '../bus-CnqfsZpc.cjs';
2
+ import { Provider, Signal } from '@angular/core';
3
+ import { b as BitFrameworkStore } from '../public-types-B3jU1R2E.cjs';
4
+ import { e as BitErrors, n as BitTouched, k as BitPath, l as BitPathValue, V as ValidateScopeResult, g as BitFieldDefinition, h as BitFieldOptions, c as BitArrayPath, b as BitArrayItem, S as ScopeStatus } from '../bus-C1xKmQdw.cjs';
5
+ import { a as BitUploadFn, B as BitDeleteUploadFn } from '../types-C2mpfhp1.cjs';
5
6
 
6
- declare function provideBitStore(store: BitStore<any>): Provider;
7
- declare function useBitStore<T extends object>(): BitStore<T>;
7
+ declare function provideBitStore<T extends object>(store: BitFrameworkStore<T>): Provider;
8
+ declare function useBitStore<T extends object>(): BitFrameworkStore<T>;
8
9
 
9
10
  declare function injectBitForm<T extends object>(): {
10
11
  meta: {
@@ -21,7 +22,7 @@ declare function injectBitForm<T extends object>(): {
21
22
  submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>) => (event?: Event) => Promise<void>;
22
23
  onSubmit: (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => (event?: Event) => Promise<void>;
23
24
  reset: () => void;
24
- setValues: (newValues: T) => void;
25
+ setValues: (values: T) => void;
25
26
  setError: (path: string, message: string | undefined) => void;
26
27
  setErrors: (errors: BitErrors<T>) => void;
27
28
  setServerErrors: (serverErrors: Record<string, string[] | string>) => void;
@@ -32,15 +33,18 @@ declare function injectBitForm<T extends object>(): {
32
33
  scopeFields?: string[];
33
34
  }) => Promise<boolean>;
34
35
  mutations: {
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;
36
+ pushItem: (path: any, value: any) => void;
37
+ prependItem: (path: any, value: any) => void;
38
+ removeItem: (path: any, index: number) => void;
39
+ insertItem: (path: any, index: number, value: any) => void;
40
+ moveItem: (path: any, from: number, to: number) => void;
41
+ swapItems: (path: any, indexA: number, indexB: number) => void;
41
42
  };
42
43
  };
43
44
 
45
+ /**
46
+ * Metadata describing the current state of a form field (Angular Signal).
47
+ */
44
48
  interface InjectBitFieldMeta {
45
49
  error: () => string | undefined;
46
50
  touched: () => boolean;
@@ -51,6 +55,10 @@ interface InjectBitFieldMeta {
51
55
  isRequired: () => boolean;
52
56
  hasError: () => boolean;
53
57
  }
58
+ /**
59
+ * Result from injectBitField in Angular.
60
+ * Provides field state, value, handlers, and metadata using Angular Signals.
61
+ */
54
62
  interface InjectBitFieldResult<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>> {
55
63
  value: () => BitPathValue<TForm, P>;
56
64
  displayValue: () => string;
@@ -59,6 +67,51 @@ interface InjectBitFieldResult<TForm extends object = any, P extends BitPath<TFo
59
67
  update: (e: any) => void;
60
68
  meta: InjectBitFieldMeta;
61
69
  }
70
+ /**
71
+ * Result from injectBitSteps in Angular.
72
+ * Provides multi-step form navigation and validation using Angular Signals.
73
+ */
74
+ interface InjectBitStepsResult {
75
+ step: ReturnType<typeof _angular_core.computed<number>>;
76
+ stepIndex: ReturnType<typeof _angular_core.signal<number>>;
77
+ scope: ReturnType<typeof _angular_core.computed<string>>;
78
+ next: () => Promise<boolean>;
79
+ prev: () => void;
80
+ goTo: (step: number) => void;
81
+ isFirst: ReturnType<typeof _angular_core.computed<boolean>>;
82
+ isLast: ReturnType<typeof _angular_core.computed<boolean>>;
83
+ status: ReturnType<typeof _angular_core.signal<ScopeStatus>>;
84
+ errors: ReturnType<typeof _angular_core.computed<Record<string, string>>>;
85
+ isValid: ReturnType<typeof _angular_core.computed<boolean>>;
86
+ isDirty: ReturnType<typeof _angular_core.computed<boolean>>;
87
+ validate: () => Promise<ValidateScopeResult>;
88
+ getErrors: () => Record<string, string>;
89
+ }
90
+ /**
91
+ * Result from injectBitUpload in Angular.
92
+ * Provides file upload functionality with integrated validation (Angular Signal).
93
+ */
94
+ interface InjectBitUploadResult {
95
+ value: Signal<string | File | null>;
96
+ setValue: (value: string | File | null) => void;
97
+ error: Signal<string | undefined>;
98
+ isValidating: Signal<boolean>;
99
+ upload: (file: File | null | undefined) => Promise<void>;
100
+ remove: () => Promise<void>;
101
+ }
102
+ /**
103
+ * Result from injectBitHistory in Angular.
104
+ * Provides form history undo/redo capabilities (Angular Signals).
105
+ */
106
+ interface InjectBitHistoryResult {
107
+ canUndo: ReturnType<typeof _angular_core.computed<boolean>>;
108
+ canRedo: ReturnType<typeof _angular_core.computed<boolean>>;
109
+ historyIndex: ReturnType<typeof _angular_core.computed<number>>;
110
+ historySize: ReturnType<typeof _angular_core.computed<number>>;
111
+ undo: () => void;
112
+ redo: () => void;
113
+ }
114
+
62
115
  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>;
63
116
 
64
117
  declare function injectBitArray<TForm extends object = any, P extends BitArrayPath<TForm> = BitArrayPath<TForm>>(path: P): {
@@ -78,14 +131,6 @@ declare function injectBitArray<TForm extends object = any, P extends BitArrayPa
78
131
  clear: () => void;
79
132
  };
80
133
 
81
- interface InjectBitHistoryResult {
82
- canUndo: ReturnType<typeof computed<boolean>>;
83
- canRedo: ReturnType<typeof computed<boolean>>;
84
- historyIndex: ReturnType<typeof computed<number>>;
85
- historySize: ReturnType<typeof computed<number>>;
86
- undo: () => void;
87
- redo: () => void;
88
- }
89
134
  declare function injectBitHistory<T extends object = any>(): InjectBitHistoryResult;
90
135
 
91
136
  declare function injectBitScope(scopeName: string): {
@@ -99,24 +144,16 @@ declare function injectBitScope(scopeName: string): {
99
144
  unsubscribe: () => void;
100
145
  };
101
146
 
102
- interface InjectBitStepsResult {
103
- step: ReturnType<typeof computed<number>>;
104
- stepIndex: ReturnType<typeof signal<number>>;
105
- scope: ReturnType<typeof computed<string>>;
106
- next: () => Promise<boolean>;
107
- prev: () => void;
108
- goTo: (step: number) => void;
109
- isFirst: ReturnType<typeof computed<boolean>>;
110
- isLast: ReturnType<typeof computed<boolean>>;
111
- status: ReturnType<typeof signal<ScopeStatus>>;
112
- errors: ReturnType<typeof computed<Record<string, string>>>;
113
- isValid: ReturnType<typeof computed<boolean>>;
114
- isDirty: ReturnType<typeof computed<boolean>>;
115
- validate: () => Promise<ValidateScopeResult>;
116
- getErrors: () => Record<string, string>;
117
- }
118
147
  declare function injectBitSteps(scopeNames: string[]): InjectBitStepsResult;
119
148
 
120
149
  declare function injectBitWatch<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): Signal<BitPathValue<TForm, P>>;
121
150
 
122
- export { type InjectBitFieldMeta, type InjectBitFieldResult, ScopeStatus, ValidateScopeResult, injectBitArray, injectBitField, injectBitForm, injectBitHistory, injectBitScope, injectBitSteps, injectBitWatch, provideBitStore, useBitStore };
151
+ /**
152
+ * Angular Dependency Injection for File Upload
153
+ *
154
+ * Minimal upload API integrated with global field validation lifecycle.
155
+ */
156
+
157
+ declare function injectBitUpload(fieldPath: string, uploadFn: BitUploadFn, deleteFile?: BitDeleteUploadFn): InjectBitUploadResult;
158
+
159
+ export { type InjectBitFieldMeta, type InjectBitFieldResult, type InjectBitHistoryResult, type InjectBitStepsResult, type InjectBitUploadResult, ScopeStatus, ValidateScopeResult, injectBitArray, injectBitField, injectBitForm, injectBitHistory, injectBitScope, injectBitSteps, injectBitUpload, injectBitWatch, provideBitStore, useBitStore };
@@ -1,10 +1,11 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { Provider, computed, signal, Signal } from '@angular/core';
3
- import { B as BitStore } from '../index-BAOM6INR.js';
4
- import { d as BitErrors, o as BitTouched, b as BitPath, c as BitPathValue, h as BitArrayPath, g as BitArrayItem, k as BitFieldDefinition, l as BitFieldOptions, S as ScopeStatus, V as ValidateScopeResult } from '../bus-CnqfsZpc.js';
2
+ import { Provider, Signal } from '@angular/core';
3
+ import { b as BitFrameworkStore } from '../public-types-By_9Weno.js';
4
+ import { e as BitErrors, n as BitTouched, k as BitPath, l as BitPathValue, V as ValidateScopeResult, g as BitFieldDefinition, h as BitFieldOptions, c as BitArrayPath, b as BitArrayItem, S as ScopeStatus } from '../bus-C1xKmQdw.js';
5
+ import { a as BitUploadFn, B as BitDeleteUploadFn } from '../types-C2mpfhp1.js';
5
6
 
6
- declare function provideBitStore(store: BitStore<any>): Provider;
7
- declare function useBitStore<T extends object>(): BitStore<T>;
7
+ declare function provideBitStore<T extends object>(store: BitFrameworkStore<T>): Provider;
8
+ declare function useBitStore<T extends object>(): BitFrameworkStore<T>;
8
9
 
9
10
  declare function injectBitForm<T extends object>(): {
10
11
  meta: {
@@ -21,7 +22,7 @@ declare function injectBitForm<T extends object>(): {
21
22
  submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>) => (event?: Event) => Promise<void>;
22
23
  onSubmit: (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => (event?: Event) => Promise<void>;
23
24
  reset: () => void;
24
- setValues: (newValues: T) => void;
25
+ setValues: (values: T) => void;
25
26
  setError: (path: string, message: string | undefined) => void;
26
27
  setErrors: (errors: BitErrors<T>) => void;
27
28
  setServerErrors: (serverErrors: Record<string, string[] | string>) => void;
@@ -32,15 +33,18 @@ declare function injectBitForm<T extends object>(): {
32
33
  scopeFields?: string[];
33
34
  }) => Promise<boolean>;
34
35
  mutations: {
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;
36
+ pushItem: (path: any, value: any) => void;
37
+ prependItem: (path: any, value: any) => void;
38
+ removeItem: (path: any, index: number) => void;
39
+ insertItem: (path: any, index: number, value: any) => void;
40
+ moveItem: (path: any, from: number, to: number) => void;
41
+ swapItems: (path: any, indexA: number, indexB: number) => void;
41
42
  };
42
43
  };
43
44
 
45
+ /**
46
+ * Metadata describing the current state of a form field (Angular Signal).
47
+ */
44
48
  interface InjectBitFieldMeta {
45
49
  error: () => string | undefined;
46
50
  touched: () => boolean;
@@ -51,6 +55,10 @@ interface InjectBitFieldMeta {
51
55
  isRequired: () => boolean;
52
56
  hasError: () => boolean;
53
57
  }
58
+ /**
59
+ * Result from injectBitField in Angular.
60
+ * Provides field state, value, handlers, and metadata using Angular Signals.
61
+ */
54
62
  interface InjectBitFieldResult<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>> {
55
63
  value: () => BitPathValue<TForm, P>;
56
64
  displayValue: () => string;
@@ -59,6 +67,51 @@ interface InjectBitFieldResult<TForm extends object = any, P extends BitPath<TFo
59
67
  update: (e: any) => void;
60
68
  meta: InjectBitFieldMeta;
61
69
  }
70
+ /**
71
+ * Result from injectBitSteps in Angular.
72
+ * Provides multi-step form navigation and validation using Angular Signals.
73
+ */
74
+ interface InjectBitStepsResult {
75
+ step: ReturnType<typeof _angular_core.computed<number>>;
76
+ stepIndex: ReturnType<typeof _angular_core.signal<number>>;
77
+ scope: ReturnType<typeof _angular_core.computed<string>>;
78
+ next: () => Promise<boolean>;
79
+ prev: () => void;
80
+ goTo: (step: number) => void;
81
+ isFirst: ReturnType<typeof _angular_core.computed<boolean>>;
82
+ isLast: ReturnType<typeof _angular_core.computed<boolean>>;
83
+ status: ReturnType<typeof _angular_core.signal<ScopeStatus>>;
84
+ errors: ReturnType<typeof _angular_core.computed<Record<string, string>>>;
85
+ isValid: ReturnType<typeof _angular_core.computed<boolean>>;
86
+ isDirty: ReturnType<typeof _angular_core.computed<boolean>>;
87
+ validate: () => Promise<ValidateScopeResult>;
88
+ getErrors: () => Record<string, string>;
89
+ }
90
+ /**
91
+ * Result from injectBitUpload in Angular.
92
+ * Provides file upload functionality with integrated validation (Angular Signal).
93
+ */
94
+ interface InjectBitUploadResult {
95
+ value: Signal<string | File | null>;
96
+ setValue: (value: string | File | null) => void;
97
+ error: Signal<string | undefined>;
98
+ isValidating: Signal<boolean>;
99
+ upload: (file: File | null | undefined) => Promise<void>;
100
+ remove: () => Promise<void>;
101
+ }
102
+ /**
103
+ * Result from injectBitHistory in Angular.
104
+ * Provides form history undo/redo capabilities (Angular Signals).
105
+ */
106
+ interface InjectBitHistoryResult {
107
+ canUndo: ReturnType<typeof _angular_core.computed<boolean>>;
108
+ canRedo: ReturnType<typeof _angular_core.computed<boolean>>;
109
+ historyIndex: ReturnType<typeof _angular_core.computed<number>>;
110
+ historySize: ReturnType<typeof _angular_core.computed<number>>;
111
+ undo: () => void;
112
+ redo: () => void;
113
+ }
114
+
62
115
  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>;
63
116
 
64
117
  declare function injectBitArray<TForm extends object = any, P extends BitArrayPath<TForm> = BitArrayPath<TForm>>(path: P): {
@@ -78,14 +131,6 @@ declare function injectBitArray<TForm extends object = any, P extends BitArrayPa
78
131
  clear: () => void;
79
132
  };
80
133
 
81
- interface InjectBitHistoryResult {
82
- canUndo: ReturnType<typeof computed<boolean>>;
83
- canRedo: ReturnType<typeof computed<boolean>>;
84
- historyIndex: ReturnType<typeof computed<number>>;
85
- historySize: ReturnType<typeof computed<number>>;
86
- undo: () => void;
87
- redo: () => void;
88
- }
89
134
  declare function injectBitHistory<T extends object = any>(): InjectBitHistoryResult;
90
135
 
91
136
  declare function injectBitScope(scopeName: string): {
@@ -99,24 +144,16 @@ declare function injectBitScope(scopeName: string): {
99
144
  unsubscribe: () => void;
100
145
  };
101
146
 
102
- interface InjectBitStepsResult {
103
- step: ReturnType<typeof computed<number>>;
104
- stepIndex: ReturnType<typeof signal<number>>;
105
- scope: ReturnType<typeof computed<string>>;
106
- next: () => Promise<boolean>;
107
- prev: () => void;
108
- goTo: (step: number) => void;
109
- isFirst: ReturnType<typeof computed<boolean>>;
110
- isLast: ReturnType<typeof computed<boolean>>;
111
- status: ReturnType<typeof signal<ScopeStatus>>;
112
- errors: ReturnType<typeof computed<Record<string, string>>>;
113
- isValid: ReturnType<typeof computed<boolean>>;
114
- isDirty: ReturnType<typeof computed<boolean>>;
115
- validate: () => Promise<ValidateScopeResult>;
116
- getErrors: () => Record<string, string>;
117
- }
118
147
  declare function injectBitSteps(scopeNames: string[]): InjectBitStepsResult;
119
148
 
120
149
  declare function injectBitWatch<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): Signal<BitPathValue<TForm, P>>;
121
150
 
122
- export { type InjectBitFieldMeta, type InjectBitFieldResult, ScopeStatus, ValidateScopeResult, injectBitArray, injectBitField, injectBitForm, injectBitHistory, injectBitScope, injectBitSteps, injectBitWatch, provideBitStore, useBitStore };
151
+ /**
152
+ * Angular Dependency Injection for File Upload
153
+ *
154
+ * Minimal upload API integrated with global field validation lifecycle.
155
+ */
156
+
157
+ declare function injectBitUpload(fieldPath: string, uploadFn: BitUploadFn, deleteFile?: BitDeleteUploadFn): InjectBitUploadResult;
158
+
159
+ export { type InjectBitFieldMeta, type InjectBitFieldResult, type InjectBitHistoryResult, type InjectBitStepsResult, type InjectBitUploadResult, ScopeStatus, ValidateScopeResult, injectBitArray, injectBitField, injectBitForm, injectBitHistory, injectBitScope, injectBitSteps, injectBitUpload, injectBitWatch, provideBitStore, useBitStore };
@@ -1,2 +1,2 @@
1
- import{d as k,e as h,h as A,i as O}from"../chunk-ZWLZ4XDF.js";import{inject as U,InjectionToken as W}from"@angular/core";var v=new W("BIT_STORE");function C(t){return{provide:v,useValue:t}}function g(){let t=U(v,{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 E,computed as D,inject as L,DestroyRef as $}from"@angular/core";function G(){let t=g(),e=L($),s=E(t.getState()),r=E(null),n=E(null),a=t.subscribe(()=>{s.set(t.getState())});e.onDestroy(()=>a());let S=D(()=>s().isValid),o=D(()=>s().isSubmitting),i=D(()=>s().isDirty),m=()=>s().values,c=()=>s().errors,y=()=>s().touched,x=()=>t.getDirtyValues(),I=P=>B=>(B?.preventDefault(),B?.stopPropagation(),t.submit(P)),V=P=>B=>(B?.preventDefault(),B?.stopPropagation(),r.set(null),t.submit(async(l,d)=>{try{let u=await P(l,d);n.set(u),r.set(null)}catch(u){A(u)?t.setServerErrors(O(u)):r.set(u instanceof Error?u:new Error(String(u)))}})),b=()=>{t.reset(),r.set(null),n.set(null)};return{meta:{isValid:S,isDirty:i,isSubmitting:o,submitError:r.asReadonly(),lastResponse:n.asReadonly()},getValues:m,getErrors:c,getTouched:y,getDirtyValues:x,submit:I,onSubmit:V,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),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)}}}import{inject as M,DestroyRef as J,computed as f,signal as Q}from"@angular/core";function X(t,e,s){let r=M(v),n=Q(r.getState()),a=r.subscribe(()=>{n.set(r.getState())});M(J).onDestroy(()=>{a(),r.unregisterField&&r.unregisterField(t)}),e&&r.registerField(t,e);let S=f(()=>h(n().values,t)),o=f(()=>n().errors[t]),i=f(()=>!!n().touched[t]),m=f(()=>i()?o():void 0),c=f(()=>(n(),r.isFieldDirty(t))),y=f(()=>(n(),r.isFieldValidating(t))),x=f(()=>(n(),r.isHidden(t))),I=f(()=>(n(),r.isRequired(t))),V=f(()=>i()&&!!o()),b=s?.mask??r.config.fields?.[t]?.mask,T=b?typeof b=="string"?r.config.masks[b]:b:void 0,P=f(()=>{let p=S();return p==null||p===""?"":T?T.format(p):String(p)}),B=p=>{if(!T){r.setField(t,p);return}let K=String(p??"");r.setField(t,T.parse(K))},l=()=>r.blurField(t),d=f(()=>!!o());return{value:S,displayValue:P,setValue:B,setBlur:l,update:p=>B(p?.target?.value??p),meta:{error:m,touched:i,invalid:V,isDirty:c,isValidating:y,isHidden:x,isRequired:I,hasError:d}}}import{DestroyRef as Y,signal as q,computed as H,inject as _,untracked as Z}from"@angular/core";var F=()=>Math.random().toString(36).substring(2,9);function N(t){let e=_(v),s=_(Y),r=()=>{let o=h(e.getState().values,t);return Array.isArray(o)?o:[]},n=q(r()),a=q(n().map(F)),S=e.subscribe(()=>{let o=r(),i=Z(a);n.set(o),o.length!==i.length&&(o.length>i.length?a.set([...i,...Array.from({length:o.length-i.length},F)]):a.set(i.slice(0,o.length)))});return s.onDestroy(()=>{S(),e.unregisterPrefix&&e.unregisterPrefix(`${t}.`)}),{fields:H(()=>n().map((o,i)=>({key:a()[i]||`temp-${i}`,value:o,index:i}))),length:H(()=>n().length),append:o=>{a.update(i=>[...i,F()]),e.pushItem(t,o)},prepend:o=>{a.update(i=>[F(),...i]),e.prependItem(t,o)},remove:o=>{a.update(i=>i.filter((m,c)=>c!==o)),e.removeItem(t,o)},insert:(o,i)=>{a.update(m=>{let c=[...m];return c.splice(o,0,F()),c}),e.insertItem(t,o,i)},swap:(o,i)=>{a.update(m=>{let c=[...m];return[c[o],c[i]]=[c[i],c[o]],c}),e.swapItems(t,o,i)},move:(o,i)=>{a.update(m=>{let c=[...m],[y]=c.splice(o,1);return c.splice(i,0,y),c}),e.moveItem(t,o,i)},replace:o=>{a.set(o.map(()=>F())),e.setField(t,o)},clear:()=>{a.set([]),e.setField(t,[])}}}import{computed as j,DestroyRef as tt,inject as et,signal as rt}from"@angular/core";function ot(){let t=g(),e=et(tt),s=rt(t.getHistoryMetadata()),r=t.subscribe(()=>{s.set(t.getHistoryMetadata())});return e.onDestroy(()=>r()),{canUndo:j(()=>s().canUndo),canRedo:j(()=>s().canRedo),historyIndex:j(()=>s().historyIndex),historySize:j(()=>s().historySize),undo:()=>t.undo(),redo:()=>t.redo()}}import{signal as st,computed as w,DestroyRef as nt,inject as it}from"@angular/core";function at(t,e){let s=Object.keys(t),r=Object.keys(e);return s.length!==r.length?!1:s.every(n=>t[n]===e[n])}function ct(t){let e=g(),s=e.getStepStatus(t),r=st(s),n=e.subscribe(()=>{let c=e.getStepStatus(t),y=r();(c.hasErrors!==y.hasErrors||c.isDirty!==y.isDirty||!at(c.errors,y.errors))&&r.set(c)});try{it(nt).onDestroy(()=>n())}catch{}let a=async()=>{let c=await e.validate({scope:t}),y=e.getStepErrors(t);return{valid:c,errors:y}},S=()=>e.getStepErrors(t),o=w(()=>!r().hasErrors),i=w(()=>r().isDirty),m=w(()=>r().errors);return{scopeName:t,status:r,errors:m,validate:a,getErrors:S,isValid:o,isDirty:i,unsubscribe:n}}import{signal as z,computed as R,DestroyRef as ut,inject as lt}from"@angular/core";function dt(t,e){let s=Object.keys(t),r=Object.keys(e);return s.length!==r.length?!1:s.every(n=>t[n]===e[n])}function mt(t){let e=g(),s=z(0),r=R(()=>t[s()]??""),n=()=>t[s()]??"",a=z(e.getStepStatus(n())),S=()=>{let l=n(),d=e.getStepStatus(l),u=a();(d.hasErrors!==u.hasErrors||d.isDirty!==u.isDirty||!dt(d.errors,u.errors))&&a.set(d)},o=e.subscribe(S);try{lt(ut).onDestroy(()=>o())}catch{}let i=async()=>{let l=n(),d=await e.validate({scope:l}),u=e.getStepErrors(l);return{valid:d,errors:u}},m=()=>e.getStepErrors(n()),c=async()=>{let l=n(),d=await e.validate({scope:l});if(d){let u=Math.min(s()+1,t.length-1);s.set(u),a.set(e.getStepStatus(t[u]??""))}else{let u=e.getStepErrors(l),p=Object.keys(u);p.length>0&&e.markFieldsTouched(p)}return d},y=()=>{let l=Math.max(s()-1,0);s.set(l),a.set(e.getStepStatus(t[l]??""))},x=l=>{let d=Math.max(0,Math.min(l-1,t.length-1));s.set(d),a.set(e.getStepStatus(t[d]??""))},I=R(()=>s()+1),V=R(()=>s()===0),b=R(()=>s()>=t.length-1),T=R(()=>!a().hasErrors),P=R(()=>a().isDirty),B=R(()=>a().errors);return{step:I,stepIndex:s,scope:r,next:c,prev:y,goTo:x,isFirst:V,isLast:b,status:a,errors:B,isValid:T,isDirty:P,validate:i,getErrors:m}}import{DestroyRef as pt,signal as yt,inject as gt}from"@angular/core";function ft(t){let e=g(),s=gt(pt),r=yt(h(e.getState().values,t),{equal:k}),n=e.watch(t,a=>{r.set(a)});return s.onDestroy(n),r.asReadonly()}export{N as injectBitArray,X as injectBitField,G as injectBitForm,ot as injectBitHistory,ct as injectBitScope,mt as injectBitSteps,ft as injectBitWatch,C as provideBitStore,g as useBitStore};
1
+ import{d as U,e as h,h as M,i as _}from"../chunk-XHZAMKSZ.js";import{inject as z,InjectionToken as $}from"@angular/core";var b=new $("BIT_STORE");function L(t){return{provide:b,useValue:t}}function f(){let t=z(b,{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 D,computed as w,inject as G,DestroyRef as J}from"@angular/core";function Q(){let t=f(),e=G(J),s=D(t.getState()),r=D(null),n=D(null),a=t.subscribe(()=>{s.set(t.getState())});e.onDestroy(()=>a());let g=w(()=>s().isValid),o=w(()=>s().isSubmitting),i=w(()=>s().isDirty),u=()=>s().values,c=()=>s().errors,y=()=>s().touched,E=()=>t.getDirtyValues(),I=v=>S=>(S?.preventDefault(),S?.stopPropagation(),t.submit(v)),P=v=>S=>(S?.preventDefault(),S?.stopPropagation(),r.set(null),t.submit(async(l,p)=>{try{let d=await v(l,p);n.set(d),r.set(null)}catch(d){M(d)?t.setServerErrors(_(d)):r.set(d instanceof Error?d:new Error(String(d)))}})),F=()=>{t.reset(),r.set(null),n.set(null)};return{meta:{isValid:g,isDirty:i,isSubmitting:o,submitError:r.asReadonly(),lastResponse:n.asReadonly()},getValues:u,getErrors:c,getTouched:y,getDirtyValues:E,submit:I,onSubmit:P,reset:F,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),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)}}}import{inject as H,DestroyRef as X,computed as B,signal as Y}from"@angular/core";function k(t,e,s){let r=H(b),n=Y(r.getState()),a=r.subscribe(()=>{n.set(r.getState())});H(X).onDestroy(()=>{a(),r.unregisterField&&r.unregisterField(t)}),e&&r.registerField(t,e);let g=B(()=>h(n().values,t)),o=B(()=>n().errors[t]),i=B(()=>!!n().touched[t]),u=B(()=>i()?o():void 0),c=B(()=>(n(),r.isFieldDirty(t))),y=B(()=>(n(),r.isFieldValidating(t))),E=B(()=>(n(),r.isHidden(t))),I=B(()=>(n(),r.isRequired(t))),P=B(()=>i()&&!!o()),F=s?.mask??r.config.fields?.[t]?.mask,T=F?typeof F=="string"?r.config.masks[F]:F:void 0,v=B(()=>{let m=g();return m==null||m===""?"":T?T.format(m):String(m)}),S=m=>{if(!T){r.setField(t,m);return}let V=String(m??"");r.setField(t,T.parse(V))},l=()=>r.blurField(t),p=B(()=>!!o());return{value:g,displayValue:v,setValue:S,setBlur:l,update:m=>S(m?.target?.value??m),meta:{error:u,touched:i,invalid:P,isDirty:c,isValidating:y,isHidden:E,isRequired:I,hasError:p}}}import{DestroyRef as Z,signal as q,computed as K,inject as C,untracked as N}from"@angular/core";var j=()=>Math.random().toString(36).substring(2,9);function tt(t){let e=C(b),s=C(Z),r=()=>{let o=h(e.getState().values,t);return Array.isArray(o)?o:[]},n=q(r()),a=q(n().map(j)),g=e.subscribe(()=>{let o=r(),i=N(a);n.set(o),o.length!==i.length&&(o.length>i.length?a.set([...i,...Array.from({length:o.length-i.length},j)]):a.set(i.slice(0,o.length)))});return s.onDestroy(()=>{g(),e.unregisterPrefix&&e.unregisterPrefix(`${t}.`)}),{fields:K(()=>n().map((o,i)=>({key:a()[i]||`temp-${i}`,value:o,index:i}))),length:K(()=>n().length),append:o=>{a.update(i=>[...i,j()]),e.pushItem(t,o)},prepend:o=>{a.update(i=>[j(),...i]),e.prependItem(t,o)},remove:o=>{a.update(i=>i.filter((u,c)=>c!==o)),e.removeItem(t,o)},insert:(o,i)=>{a.update(u=>{let c=[...u];return c.splice(o,0,j()),c}),e.insertItem(t,o,i)},swap:(o,i)=>{a.update(u=>{let c=[...u];return[c[o],c[i]]=[c[i],c[o]],c}),e.swapItems(t,o,i)},move:(o,i)=>{a.update(u=>{let c=[...u],[y]=c.splice(o,1);return c.splice(i,0,y),c}),e.moveItem(t,o,i)},replace:o=>{a.set(o.map(()=>j())),e.setField(t,o)},clear:()=>{a.set([]),e.setField(t,[])}}}import{computed as x,DestroyRef as et,inject as rt,signal as st}from"@angular/core";function ot(){let t=f(),e=rt(et),s=st(t.getHistoryMetadata()),r=t.subscribe(()=>{s.set(t.getHistoryMetadata())});return e.onDestroy(()=>r()),{canUndo:x(()=>s().canUndo),canRedo:x(()=>s().canRedo),historyIndex:x(()=>s().historyIndex),historySize:x(()=>s().historySize),undo:()=>t.undo(),redo:()=>t.redo()}}import{signal as nt,computed as A,DestroyRef as it,inject as at}from"@angular/core";function ct(t,e){let s=Object.keys(t),r=Object.keys(e);return s.length!==r.length?!1:s.every(n=>t[n]===e[n])}function ut(t){let e=f(),s=e.getStepStatus(t),r=nt(s),n=e.subscribe(()=>{let c=e.getStepStatus(t),y=r();(c.hasErrors!==y.hasErrors||c.isDirty!==y.isDirty||!ct(c.errors,y.errors))&&r.set(c)});try{at(it).onDestroy(()=>n())}catch{}let a=async()=>{let c=await e.validate({scope:t}),y=e.getStepErrors(t);return{valid:c,errors:y}},g=()=>e.getStepErrors(t),o=A(()=>!r().hasErrors),i=A(()=>r().isDirty),u=A(()=>r().errors);return{scopeName:t,status:r,errors:u,validate:a,getErrors:g,isValid:o,isDirty:i,unsubscribe:n}}import{signal as W,computed as R,DestroyRef as lt,inject as dt}from"@angular/core";function mt(t,e){let s=Object.keys(t),r=Object.keys(e);return s.length!==r.length?!1:s.every(n=>t[n]===e[n])}function pt(t){let e=f(),s=W(0),r=R(()=>t[s()]??""),n=()=>t[s()]??"",a=W(e.getStepStatus(n())),g=()=>{let l=n(),p=e.getStepStatus(l),d=a();(p.hasErrors!==d.hasErrors||p.isDirty!==d.isDirty||!mt(p.errors,d.errors))&&a.set(p)},o=e.subscribe(g);try{dt(lt).onDestroy(()=>o())}catch{}let i=async()=>{let l=n(),p=await e.validate({scope:l}),d=e.getStepErrors(l);return{valid:p,errors:d}},u=()=>e.getStepErrors(n()),c=async()=>{let l=n(),p=e.getConfig().scopes?.[l];if(e.hasValidationsInProgress(p))return!1;let d=await e.validate({scope:l});if(d){let m=Math.min(s()+1,t.length-1);s.set(m),a.set(e.getStepStatus(t[m]??""))}else{let m=e.getStepErrors(l),V=Object.keys(m);V.length>0&&e.markFieldsTouched(V)}return d},y=()=>{let l=Math.max(s()-1,0);s.set(l),a.set(e.getStepStatus(t[l]??""))},E=l=>{let p=Math.max(0,Math.min(l-1,t.length-1));s.set(p),a.set(e.getStepStatus(t[p]??""))},I=R(()=>s()+1),P=R(()=>s()===0),F=R(()=>s()>=t.length-1),T=R(()=>!a().hasErrors),v=R(()=>a().isDirty),S=R(()=>a().errors);return{step:I,stepIndex:s,scope:r,next:c,prev:y,goTo:E,isFirst:P,isLast:F,status:a,errors:S,isValid:T,isDirty:v,validate:i,getErrors:u}}import{DestroyRef as yt,signal as gt,inject as ft}from"@angular/core";function Bt(t){let e=f(),s=ft(yt),r=gt(h(e.getState().values,t),{equal:U}),n=e.watch(t,a=>{r.set(a)});return s.onDestroy(n),r.asReadonly()}import{computed as O,inject as St}from"@angular/core";function Ft(t,e,s){let r=St(b),n=k(t),a=null,g=async i=>{if(i){r.beginFieldValidation(t),await r.clearFieldAsyncError(t);try{let u=await e(i);n.setValue(u.url),a=u.key,await r.clearFieldAsyncError(t)}catch(u){let c=u instanceof Error?u.message:"Upload failed";await r.setFieldAsyncError(t,c)}finally{r.endFieldValidation(t)}}},o=async()=>{if(a&&s)try{await s(a)}catch(i){let u=i instanceof Error?i.message:"Delete failed";await r.setFieldAsyncError(t,u);return}n.setValue(null),a=null,await r.clearFieldAsyncError(t)};return{value:O(()=>n.value()),setValue:n.setValue,error:O(()=>n.meta.error()),isValidating:O(()=>n.meta.isValidating()||!1),upload:g,remove:o}}export{tt as injectBitArray,k as injectBitField,Q as injectBitForm,ot as injectBitHistory,ut as injectBitScope,pt as injectBitSteps,Ft as injectBitUpload,Bt as injectBitWatch,L as provideBitStore,f as useBitStore};
2
2
  //# sourceMappingURL=index.js.map