@lehnihon/bit-form 2.2.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/angular/index.cjs +1 -1
  2. package/dist/angular/index.cjs.map +1 -1
  3. package/dist/angular/index.d.cts +19 -19
  4. package/dist/angular/index.d.ts +19 -19
  5. package/dist/angular/index.js +1 -1
  6. package/dist/angular/index.js.map +1 -1
  7. package/dist/{bus-70e4jnBj.d.cts → bus-B3pGaiFZ.d.cts} +14 -5
  8. package/dist/{bus-70e4jnBj.d.ts → bus-B3pGaiFZ.d.ts} +14 -5
  9. package/dist/chunk-442A4FTZ.cjs +2 -0
  10. package/dist/chunk-442A4FTZ.cjs.map +1 -0
  11. package/dist/chunk-6FJEE6O3.js +133 -0
  12. package/dist/chunk-6FJEE6O3.js.map +1 -0
  13. package/dist/chunk-FOV24ACZ.js +2 -0
  14. package/dist/chunk-FOV24ACZ.js.map +1 -0
  15. package/dist/chunk-YWXX6XRV.cjs +133 -0
  16. package/dist/chunk-YWXX6XRV.cjs.map +1 -0
  17. package/dist/devtools/bridge.cjs +1 -1
  18. package/dist/devtools/bridge.js +1 -1
  19. package/dist/devtools/index.cjs +1 -1
  20. package/dist/devtools/index.js +1 -1
  21. package/dist/index.cjs +1 -1
  22. package/dist/index.cjs.map +1 -1
  23. package/dist/index.d.cts +7 -6
  24. package/dist/index.d.ts +7 -6
  25. package/dist/index.js +1 -1
  26. package/dist/public-types-CtYuIAMP.d.cts +99 -0
  27. package/dist/public-types-Lq3eLstW.d.ts +99 -0
  28. package/dist/react/index.cjs +1 -1
  29. package/dist/react/index.d.cts +5 -5
  30. package/dist/react/index.d.ts +5 -5
  31. package/dist/react/index.js +1 -1
  32. package/dist/react-native/index.cjs +1 -1
  33. package/dist/react-native/index.d.cts +4 -4
  34. package/dist/react-native/index.d.ts +4 -4
  35. package/dist/react-native/index.js +1 -1
  36. package/dist/resolvers/joi.d.cts +1 -1
  37. package/dist/resolvers/joi.d.ts +1 -1
  38. package/dist/resolvers/yup.d.cts +1 -1
  39. package/dist/resolvers/yup.d.ts +1 -1
  40. package/dist/resolvers/zod.d.cts +1 -1
  41. package/dist/resolvers/zod.d.ts +1 -1
  42. package/dist/{use-bit-persist-JshPvwwy.d.cts → use-bit-persist-CWzGfovL.d.cts} +19 -23
  43. package/dist/{use-bit-persist-COdNw_fv.d.ts → use-bit-persist-hxJaKG2S.d.ts} +19 -23
  44. package/dist/vue/index.cjs +1 -1
  45. package/dist/vue/index.cjs.map +1 -1
  46. package/dist/vue/index.d.cts +36 -36
  47. package/dist/vue/index.d.ts +36 -36
  48. package/dist/vue/index.js +1 -1
  49. package/dist/vue/index.js.map +1 -1
  50. package/package.json +1 -1
  51. package/dist/chunk-25Q2XJBV.cjs +0 -133
  52. package/dist/chunk-25Q2XJBV.cjs.map +0 -1
  53. package/dist/chunk-2HAQ3QEQ.js +0 -133
  54. package/dist/chunk-2HAQ3QEQ.js.map +0 -1
  55. package/dist/chunk-HTB6QIUQ.js +0 -2
  56. package/dist/chunk-HTB6QIUQ.js.map +0 -1
  57. package/dist/chunk-W22D7QVJ.cjs +0 -2
  58. package/dist/chunk-W22D7QVJ.cjs.map +0 -1
  59. package/dist/public-types-BVZ16kgZ.d.ts +0 -74
  60. package/dist/public-types-r2aP68Gg.d.cts +0 -74
@@ -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 _chunk25Q2XJBVcjs = require('../chunk-25Q2XJBV.cjs');var _core = require('@angular/core');var b=new (0, _core.InjectionToken)("BIT_STORE");function G(t){return{provide:b,useValue:t}}function g(){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 X(){let t=g(),e=_core.inject.call(void 0, _core.DestroyRef),r=_core.signal.call(void 0, t.getState()),o=_core.signal.call(void 0, null),a=_core.signal.call(void 0, null),n=t.subscribe(()=>{r.set(t.getState())});e.onDestroy(()=>n());let p=_core.computed.call(void 0, ()=>r().isValid),s=_core.computed.call(void 0, ()=>r().isSubmitting),i=_core.computed.call(void 0, ()=>r().isDirty),u=()=>r().values,c=()=>r().errors,y=()=>r().touched,j=()=>t.getDirtyValues(),S=F=>B=>(_optionalChain([B, 'optionalAccess', _2 => _2.preventDefault, 'call', _3 => _3()]),_optionalChain([B, 'optionalAccess', _4 => _4.stopPropagation, 'call', _5 => _5()]),t.submit(F)),T=F=>B=>(_optionalChain([B, 'optionalAccess', _6 => _6.preventDefault, 'call', _7 => _7()]),_optionalChain([B, 'optionalAccess', _8 => _8.stopPropagation, 'call', _9 => _9()]),o.set(null),t.submit(async(l,m)=>{try{let d=await F(l,m);a.set(d),o.set(null)}catch(d){_chunk25Q2XJBVcjs.h.call(void 0, d)?t.setServerErrors(_chunk25Q2XJBVcjs.i.call(void 0, d)):o.set(d instanceof Error?d:new Error(String(d)))}})),P=()=>{t.reset(),o.set(null),a.set(null)};return{meta:{isValid:p,isDirty:i,isSubmitting:s,submitError:o.asReadonly(),lastResponse:a.asReadonly()},getValues:u,getErrors:c,getTouched:y,getDirtyValues:j,submit:S,onSubmit:T,reset:P,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 D(t){let e=_core.inject.call(void 0, b),r=_core.signal.call(void 0, e.getState()),o=e.subscribe(()=>{r.set(e.getState())});_core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>{o(),e.unregisterField&&e.unregisterField(t)});let a=_core.computed.call(void 0, ()=>_chunk25Q2XJBVcjs.e.call(void 0, r().values,t)),n=_core.computed.call(void 0, ()=>r().errors[t]),p=_core.computed.call(void 0, ()=>!!r().touched[t]),s=_core.computed.call(void 0, ()=>p()?n():void 0),i=_core.computed.call(void 0, ()=>(r(),e.isFieldDirty(t))),u=_core.computed.call(void 0, ()=>(r(),e.isFieldValidating(t))),c=_core.computed.call(void 0, ()=>(r(),e.isHidden(t))),y=_core.computed.call(void 0, ()=>(r(),e.isRequired(t))),j=_core.computed.call(void 0, ()=>p()&&!!n()),S=e.resolveMask(t),T=_core.computed.call(void 0, ()=>{let l=a();return l==null||l===""?"":S?S.format(l):String(l)}),P=l=>{if(!S){e.setField(t,l);return}let m=String(_nullishCoalesce(l, () => ("")));e.setField(t,S.parse(m))},h=()=>e.blurField(t),F=_core.computed.call(void 0, ()=>!!n());return{value:a,displayValue:T,setValue:P,setBlur:h,update:l=>P(_nullishCoalesce(_optionalChain([l, 'optionalAccess', _10 => _10.target, 'optionalAccess', _11 => _11.value]), () => (l))),meta:{error:s,touched:p,invalid:j,isDirty:i,isValidating:u,isHidden:c,isRequired:y,hasError:F}}}var E=()=>Math.random().toString(36).substring(2,9);function et(t){let e=_core.inject.call(void 0, b),r=_core.inject.call(void 0, _core.DestroyRef),o=()=>{let s=_chunk25Q2XJBVcjs.e.call(void 0, e.getState().values,t);return Array.isArray(s)?s:[]},a=_core.signal.call(void 0, o()),n=_core.signal.call(void 0, a().map(E)),p=e.subscribe(()=>{let s=o(),i=_core.untracked.call(void 0, n);a.set(s),s.length!==i.length&&(s.length>i.length?n.set([...i,...Array.from({length:s.length-i.length},E)]):n.set(i.slice(0,s.length)))});return r.onDestroy(()=>{p(),e.unregisterPrefix&&e.unregisterPrefix(`${t}.`)}),{fields:_core.computed.call(void 0, ()=>a().map((s,i)=>({key:n()[i]||`temp-${i}`,value:s,index:i}))),length:_core.computed.call(void 0, ()=>a().length),append:s=>{n.update(i=>[...i,E()]),e.pushItem(t,s)},prepend:s=>{n.update(i=>[E(),...i]),e.prependItem(t,s)},remove:s=>{n.update(i=>i.filter((u,c)=>c!==s)),e.removeItem(t,s)},insert:(s,i)=>{n.update(u=>{let c=[...u];return c.splice(s,0,E()),c}),e.insertItem(t,s,i)},swap:(s,i)=>{n.update(u=>{let c=[...u];return[c[s],c[i]]=[c[i],c[s]],c}),e.swapItems(t,s,i)},move:(s,i)=>{n.update(u=>{let c=[...u],[y]=c.splice(s,1);return c.splice(i,0,y),c}),e.moveItem(t,s,i)},replace:s=>{n.set(s.map(()=>E())),e.setField(t,s)},clear:()=>{n.set([]),e.setField(t,[])}}}function nt(){let t=g(),e=_core.inject.call(void 0, _core.DestroyRef),r=_core.signal.call(void 0, t.getHistoryMetadata()),o=t.subscribe(()=>{r.set(t.getHistoryMetadata())});return e.onDestroy(()=>o()),{canUndo:_core.computed.call(void 0, ()=>r().canUndo),canRedo:_core.computed.call(void 0, ()=>r().canRedo),historyIndex:_core.computed.call(void 0, ()=>r().historyIndex),historySize:_core.computed.call(void 0, ()=>r().historySize),undo:()=>t.undo(),redo:()=>t.redo()}}function lt(t,e){let r=Object.keys(t),o=Object.keys(e);return r.length!==o.length?!1:r.every(a=>t[a]===e[a])}function ut(t){let e=g(),r=e.getStepStatus(t),o=_core.signal.call(void 0, r),a=e.subscribe(()=>{let c=e.getStepStatus(t),y=o();(c.hasErrors!==y.hasErrors||c.isDirty!==y.isDirty||!lt(c.errors,y.errors))&&o.set(c)});try{_core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>a())}catch (e2){}let n=async()=>{let c=await e.validate({scope:t}),y=e.getStepErrors(t);return{valid:c,errors:y}},p=()=>e.getStepErrors(t),s=_core.computed.call(void 0, ()=>!o().hasErrors),i=_core.computed.call(void 0, ()=>o().isDirty),u=_core.computed.call(void 0, ()=>o().errors);return{scopeName:t,status:o,errors:u,validate:n,getErrors:p,isValid:s,isDirty:i,unsubscribe:a}}function pt(t,e){let r=Object.keys(t),o=Object.keys(e);return r.length!==o.length?!1:r.every(a=>t[a]===e[a])}function yt(t){let e=g(),r=_core.signal.call(void 0, 0),o=_core.computed.call(void 0, ()=>_nullishCoalesce(t[r()], () => (""))),a=()=>_nullishCoalesce(t[r()], () => ("")),n=_core.signal.call(void 0, e.getStepStatus(a())),p=()=>{let l=a(),m=e.getStepStatus(l),d=n();(m.hasErrors!==d.hasErrors||m.isDirty!==d.isDirty||!pt(m.errors,d.errors))&&n.set(m)},s=e.subscribe(p);try{_core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>s())}catch (e3){}let i=async()=>{let l=a(),m=await e.validate({scope:l}),d=e.getStepErrors(l);return{valid:m,errors:d}},u=()=>e.getStepErrors(a()),c=async()=>{let l=a(),m=e.getScopeFields(l);if(e.hasValidationsInProgress(m))return!1;let d=await e.validate({scope:l});if(d){let I=Math.min(r()+1,t.length-1);r.set(I),n.set(e.getStepStatus(_nullishCoalesce(t[I], () => (""))))}else{let I=e.getStepErrors(l),U=Object.keys(I);U.length>0&&e.markFieldsTouched(U)}return d},y=()=>{let l=Math.max(r()-1,0);r.set(l),n.set(e.getStepStatus(_nullishCoalesce(t[l], () => (""))))},j=l=>{let m=Math.max(0,Math.min(l-1,t.length-1));r.set(m),n.set(e.getStepStatus(_nullishCoalesce(t[m], () => (""))))},S=_core.computed.call(void 0, ()=>r()+1),T=_core.computed.call(void 0, ()=>r()===0),P=_core.computed.call(void 0, ()=>r()>=t.length-1),h=_core.computed.call(void 0, ()=>!n().hasErrors),F=_core.computed.call(void 0, ()=>n().isDirty),B=_core.computed.call(void 0, ()=>n().errors);return{step:S,stepIndex:r,scope:o,next:c,prev:y,goTo:j,isFirst:T,isLast:P,status:n,errors:B,isValid:h,isDirty:F,validate:i,getErrors:u}}function Bt(t){let e=g(),r=_core.inject.call(void 0, _core.DestroyRef),o=_core.signal.call(void 0, _chunk25Q2XJBVcjs.e.call(void 0, e.getState().values,t),{equal:_chunk25Q2XJBVcjs.d}),a=e.watch(t,n=>{o.set(n)});return r.onDestroy(a),o.asReadonly()}function Ft(t,e,r){let o=_core.inject.call(void 0, b),a=D(t),n=null,p=async i=>{if(i){o.beginFieldValidation(t),await o.clearFieldAsyncError(t);try{let u=await e(i);a.setValue(u.url),n=u.key,await o.clearFieldAsyncError(t)}catch(u){let c=u instanceof Error?u.message:"Upload failed";await o.setFieldAsyncError(t,c)}finally{o.endFieldValidation(t)}}},s=async()=>{if(n&&r)try{await r(n)}catch(i){let u=i instanceof Error?i.message:"Delete failed";await o.setFieldAsyncError(t,u);return}a.setValue(null),n=null,await o.clearFieldAsyncError(t)};return{value:_core.computed.call(void 0, ()=>a.value()),setValue:a.setValue,error:_core.computed.call(void 0, ()=>a.meta.error()),isValidating:_core.computed.call(void 0, ()=>a.meta.isValidating()||!1),upload:p,remove:s}}function vt(){let t=g(),e=_core.signal.call(void 0, !1),r=_core.signal.call(void 0, !1),o=_core.signal.call(void 0, null);return{restore:async()=>{r.set(!0),o.set(null);try{return await t.restorePersisted()}catch(s){return o.set(s instanceof Error?s:new Error(String(s))),!1}finally{r.set(!1)}},save:async()=>{e.set(!0),o.set(null);try{await t.forceSave()}catch(s){o.set(s instanceof Error?s:new Error(String(s)))}finally{e.set(!1)}},clear:async()=>{o.set(null);try{await t.clearPersisted()}catch(s){o.set(s instanceof Error?s:new Error(String(s)))}},meta:{isSaving:e.asReadonly(),isRestoring:r.asReadonly(),error:o.asReadonly()}}}exports.injectBitArray = et; exports.injectBitField = D; exports.injectBitForm = X; exports.injectBitHistory = nt; exports.injectBitPersist = vt; exports.injectBitScope = ut; exports.injectBitSteps = yt; exports.injectBitUpload = Ft; exports.injectBitWatch = Bt; exports.provideBitStore = G; 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 _chunkYWXX6XRVcjs = require('../chunk-YWXX6XRV.cjs');var _core = require('@angular/core');var P=new (0, _core.InjectionToken)("BIT_STORE");function G(t){return{provide:P,useValue:t}}function f(){let t=_core.inject.call(void 0, P,{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 X(){let t=f(),e=_core.inject.call(void 0, _core.DestroyRef),r=_core.signal.call(void 0, {isValid:t.getState().isValid,isSubmitting:t.getState().isSubmitting,isDirty:t.getState().isDirty}),o=_core.signal.call(void 0, null),a=_core.signal.call(void 0, null),i=t.subscribeSelector(g=>({isValid:g.isValid,isSubmitting:g.isSubmitting,isDirty:g.isDirty}),g=>{r.set(g)});e.onDestroy(()=>i());let p=_core.computed.call(void 0, ()=>r().isValid),s=_core.computed.call(void 0, ()=>r().isSubmitting),n=_core.computed.call(void 0, ()=>r().isDirty),u=()=>t.getState().values,c=()=>t.getState().errors,y=()=>t.getState().touched,v=()=>t.getDirtyValues(),B=g=>b=>(_optionalChain([b, 'optionalAccess', _2 => _2.preventDefault, 'call', _3 => _3()]),_optionalChain([b, 'optionalAccess', _4 => _4.stopPropagation, 'call', _5 => _5()]),t.submit(g)),R=g=>b=>(_optionalChain([b, 'optionalAccess', _6 => _6.preventDefault, 'call', _7 => _7()]),_optionalChain([b, 'optionalAccess', _8 => _8.stopPropagation, 'call', _9 => _9()]),o.set(null),t.submit(async(l,m)=>{try{let d=await g(l,m);a.set(d),o.set(null)}catch(d){_chunkYWXX6XRVcjs.i.call(void 0, d)?t.setServerErrors(_chunkYWXX6XRVcjs.j.call(void 0, d)):o.set(d instanceof Error?d:new Error(String(d)))}})),F=()=>{t.reset(),o.set(null),a.set(null)};return{meta:{isValid:p,isDirty:n,isSubmitting:s,submitError:o.asReadonly(),lastResponse:a.asReadonly()},getValues:u,getErrors:c,getTouched:y,getDirtyValues:v,submit:B,onSubmit:R,reset:F,replaceValues:t.replaceValues.bind(t),hydrate:t.hydrate.bind(t),rebase:t.rebase.bind(t),setValues:t.setValues.bind(t),setError:t.setError.bind(t),setErrors:t.setErrors.bind(t),setServerErrors:t.setServerErrors.bind(t),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 D(t){let e=_core.inject.call(void 0, P),r=_core.signal.call(void 0, e.getFieldState(t)),o=e.subscribeSelector(()=>e.getFieldState(t),l=>{r.set(l)});_core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>{o(),e.unregisterField&&e.unregisterField(t)});let a=_core.computed.call(void 0, ()=>r().value),i=_core.computed.call(void 0, ()=>r().error),p=_core.computed.call(void 0, ()=>r().touched),s=_core.computed.call(void 0, ()=>p()?i():void 0),n=_core.computed.call(void 0, ()=>r().isDirty),u=_core.computed.call(void 0, ()=>r().isValidating),c=_core.computed.call(void 0, ()=>r().isHidden),y=_core.computed.call(void 0, ()=>r().isRequired),v=_core.computed.call(void 0, ()=>p()&&!!i()),B=e.resolveMask(t),R=_core.computed.call(void 0, ()=>{let l=a();return l==null||l===""?"":B?B.format(l):String(l)}),F=l=>{if(!B){e.setField(t,l);return}let m=String(_nullishCoalesce(l, () => ("")));e.setField(t,B.parse(m))},E=()=>e.blurField(t),g=_core.computed.call(void 0, ()=>!!i());return{value:a,displayValue:R,setValue:F,setBlur:E,update:l=>F(_nullishCoalesce(_optionalChain([l, 'optionalAccess', _10 => _10.target, 'optionalAccess', _11 => _11.value]), () => (l))),meta:{error:s,touched:p,invalid:v,isDirty:n,isValidating:u,isHidden:c,isRequired:y,hasError:g}}}var T=()=>Math.random().toString(36).substring(2,9);function et(t){let e=_core.inject.call(void 0, P),r=_core.inject.call(void 0, _core.DestroyRef),a=_core.signal.call(void 0, (()=>{let s=_chunkYWXX6XRVcjs.f.call(void 0, e.getState().values,t);return Array.isArray(s)?s:[]})()),i=_core.signal.call(void 0, a().map(T)),p=e.subscribePath(t,s=>{let n=Array.isArray(s)?s:[],u=_core.untracked.call(void 0, i);a.set(n),n.length!==u.length&&(n.length>u.length?i.set([...u,...Array.from({length:n.length-u.length},T)]):i.set(u.slice(0,n.length)))});return r.onDestroy(()=>{p(),e.unregisterPrefix&&e.unregisterPrefix(`${t}.`)}),{fields:_core.computed.call(void 0, ()=>a().map((s,n)=>({key:i()[n]||`temp-${n}`,value:s,index:n}))),length:_core.computed.call(void 0, ()=>a().length),append:s=>{i.update(n=>[...n,T()]),e.pushItem(t,s)},prepend:s=>{i.update(n=>[T(),...n]),e.prependItem(t,s)},remove:s=>{i.update(n=>n.filter((u,c)=>c!==s)),e.removeItem(t,s)},insert:(s,n)=>{i.update(u=>{let c=[...u];return c.splice(s,0,T()),c}),e.insertItem(t,s,n)},swap:(s,n)=>{i.update(u=>{let c=[...u];return[c[s],c[n]]=[c[n],c[s]],c}),e.swapItems(t,s,n)},move:(s,n)=>{i.update(u=>{let c=[...u],[y]=c.splice(s,1);return c.splice(n,0,y),c}),e.moveItem(t,s,n)},replace:s=>{i.set(s.map(()=>T())),e.setField(t,s)},clear:()=>{i.set([]),e.setField(t,[])}}}function it(){let t=f(),e=_core.inject.call(void 0, _core.DestroyRef),r=_core.signal.call(void 0, t.getHistoryMetadata()),o=t.subscribe(()=>{r.set(t.getHistoryMetadata())});return e.onDestroy(()=>o()),{canUndo:_core.computed.call(void 0, ()=>r().canUndo),canRedo:_core.computed.call(void 0, ()=>r().canRedo),historyIndex:_core.computed.call(void 0, ()=>r().historyIndex),historySize:_core.computed.call(void 0, ()=>r().historySize),undo:()=>t.undo(),redo:()=>t.redo()}}function lt(t,e){let r=Object.keys(t),o=Object.keys(e);return r.length!==o.length?!1:r.every(a=>t[a]===e[a])}function ut(t){let e=f(),r=e.getStepStatus(t),o=_core.signal.call(void 0, r),a=e.subscribe(()=>{let c=e.getStepStatus(t),y=o();(c.hasErrors!==y.hasErrors||c.isDirty!==y.isDirty||!lt(c.errors,y.errors))&&o.set(c)});try{_core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>a())}catch (e2){}let i=async()=>{let c=await e.validate({scope:t}),y=e.getStepErrors(t);return{valid:c,errors:y}},p=()=>e.getStepErrors(t),s=_core.computed.call(void 0, ()=>!o().hasErrors),n=_core.computed.call(void 0, ()=>o().isDirty),u=_core.computed.call(void 0, ()=>o().errors);return{scopeName:t,status:o,errors:u,validate:i,getErrors:p,isValid:s,isDirty:n,unsubscribe:a}}function pt(t,e){let r=Object.keys(t),o=Object.keys(e);return r.length!==o.length?!1:r.every(a=>t[a]===e[a])}function yt(t){let e=f(),r=_core.signal.call(void 0, 0),o=_core.computed.call(void 0, ()=>_nullishCoalesce(t[r()], () => (""))),a=()=>_nullishCoalesce(t[r()], () => ("")),i=_core.signal.call(void 0, e.getStepStatus(a())),p=()=>{let l=a(),m=e.getStepStatus(l),d=i();(m.hasErrors!==d.hasErrors||m.isDirty!==d.isDirty||!pt(m.errors,d.errors))&&i.set(m)},s=e.subscribe(p);try{_core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>s())}catch (e3){}let n=async()=>{let l=a(),m=await e.validate({scope:l}),d=e.getStepErrors(l);return{valid:m,errors:d}},u=()=>e.getStepErrors(a()),c=async()=>{let l=a(),m=e.getScopeFields(l);if(e.hasValidationsInProgress(m))return!1;let d=await e.validate({scope:l});if(d){let V=Math.min(r()+1,t.length-1);r.set(V),i.set(e.getStepStatus(_nullishCoalesce(t[V], () => (""))))}else{let V=e.getStepErrors(l),U=Object.keys(V);U.length>0&&e.markFieldsTouched(U)}return d},y=()=>{let l=Math.max(r()-1,0);r.set(l),i.set(e.getStepStatus(_nullishCoalesce(t[l], () => (""))))},v=l=>{let m=Math.max(0,Math.min(l-1,t.length-1));r.set(m),i.set(e.getStepStatus(_nullishCoalesce(t[m], () => (""))))},B=_core.computed.call(void 0, ()=>r()+1),R=_core.computed.call(void 0, ()=>r()===0),F=_core.computed.call(void 0, ()=>r()>=t.length-1),E=_core.computed.call(void 0, ()=>!i().hasErrors),g=_core.computed.call(void 0, ()=>i().isDirty),b=_core.computed.call(void 0, ()=>i().errors);return{step:B,stepIndex:r,scope:o,next:c,prev:y,goTo:v,isFirst:R,isLast:F,status:i,errors:b,isValid:E,isDirty:g,validate:n,getErrors:u}}function Bt(t){let e=f(),r=_core.inject.call(void 0, _core.DestroyRef),o=_core.signal.call(void 0, _chunkYWXX6XRVcjs.f.call(void 0, e.getState().values,t),{equal:_chunkYWXX6XRVcjs.e}),a=e.watch(t,i=>{o.set(i)});return r.onDestroy(a),o.asReadonly()}function Pt(t,e,r){let o=_core.inject.call(void 0, P),a=D(t),i=null,p=async n=>{if(n){o.beginFieldValidation(t),await o.clearFieldAsyncError(t);try{let u=await e(n);a.setValue(u.url),i=u.key,await o.clearFieldAsyncError(t)}catch(u){let c=u instanceof Error?u.message:"Upload failed";await o.setFieldAsyncError(t,c)}finally{o.endFieldValidation(t)}}},s=async()=>{if(i&&r)try{await r(i)}catch(n){let u=n instanceof Error?n.message:"Delete failed";await o.setFieldAsyncError(t,u);return}a.setValue(null),i=null,await o.clearFieldAsyncError(t)};return{value:_core.computed.call(void 0, ()=>a.value()),setValue:a.setValue,error:_core.computed.call(void 0, ()=>a.meta.error()),isValidating:_core.computed.call(void 0, ()=>a.meta.isValidating()||!1),upload:p,remove:s}}function ht(){let t=f(),e=_core.signal.call(void 0, !1),r=_core.signal.call(void 0, !1),o=_core.signal.call(void 0, null);return{restore:async()=>{r.set(!0),o.set(null);try{return await t.restorePersisted()}catch(s){return o.set(s instanceof Error?s:new Error(String(s))),!1}finally{r.set(!1)}},save:async()=>{e.set(!0),o.set(null);try{await t.forceSave()}catch(s){o.set(s instanceof Error?s:new Error(String(s)))}finally{e.set(!1)}},clear:async()=>{o.set(null);try{await t.clearPersisted()}catch(s){o.set(s instanceof Error?s:new Error(String(s)))}},meta:{isSaving:e.asReadonly(),isRestoring:r.asReadonly(),error:o.asReadonly()}}}exports.injectBitArray = et; exports.injectBitField = D; exports.injectBitForm = X; exports.injectBitHistory = it; exports.injectBitPersist = ht; exports.injectBitScope = ut; exports.injectBitSteps = yt; exports.injectBitUpload = Pt; exports.injectBitWatch = Bt; exports.provideBitStore = G; 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","unsubscribe","value","getDeepValue","rawError","touched","error","isValidating","isHidden","isRequired","invalid","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 { getDeepValue, BitPath, BitPathValue } 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>(path: P): 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 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 resolvedMask = store.resolveMask(path as string);\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","state","nextState","isValid","computed","isSubmitting","isDirty","getValues","getErrors","getTouched","getDirtyValues","submit","onSuccess","event","onSubmit","handler","values","dirtyValues","result","err","isValidationErrorShape","extractServerErrors","reset","injectBitField","path","unsubscribe","value","rawError","touched","error","isValidating","isHidden","isRequired","invalid","resolvedMask","displayValue","val","setValue","stringVal","setBlur","hasError","e","generateId","injectBitArray","valuesSig","getDeepValue","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 { BitStoreApi } from \"../core\";\n\nexport const BIT_STORE_TOKEN = new InjectionToken<BitStoreApi<any>>(\n \"BIT_STORE\",\n);\n\nexport function provideBitStore<T extends object>(\n store: BitStoreApi<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 BitStoreApi<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({\n isValid: store.getState().isValid,\n isSubmitting: store.getState().isSubmitting,\n isDirty: store.getState().isDirty,\n });\n const submitError = signal<Error | null>(null);\n const lastResponse = signal<unknown>(null);\n\n const sub = store.subscribeSelector(\n (state) => ({\n isValid: state.isValid,\n isSubmitting: state.isSubmitting,\n isDirty: state.isDirty,\n }),\n (nextState) => {\n stateSignal.set(nextState);\n },\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 = () => store.getState().values;\n const getErrors = () => store.getState().errors;\n const getTouched = () => store.getState().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 replaceValues: store.replaceValues.bind(store),\n hydrate: store.hydrate.bind(store),\n rebase: store.rebase.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 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 { BitPath, BitPathValue } 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>(path: P): InjectBitFieldResult<TForm, P> {\n const store = inject(BIT_STORE_TOKEN);\n\n const stateSignal = signal(store.getFieldState(path));\n\n const unsubscribe = store.subscribeSelector(\n () => store.getFieldState(path),\n (nextState) => {\n stateSignal.set(nextState);\n },\n );\n\n inject(DestroyRef).onDestroy(() => {\n unsubscribe();\n if (store.unregisterField) {\n store.unregisterField(path as string);\n }\n });\n\n const value = computed(() => stateSignal().value as BitPathValue<TForm, P>);\n const rawError = computed(() => stateSignal().error);\n const touched = computed(() => stateSignal().touched);\n const error = computed(() => (touched() ? rawError() : undefined));\n\n const isDirty = computed(() => stateSignal().isDirty);\n\n const isValidating = computed(() => stateSignal().isValidating);\n\n const isHidden = computed(() => stateSignal().isHidden);\n\n const isRequired = computed(() => stateSignal().isRequired);\n\n const invalid = computed(() => touched() && !!rawError());\n\n const resolvedMask = store.resolveMask(path as string);\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.subscribePath(path, (value) => {\n const next = Array.isArray(value)\n ? (value as BitArrayItem<BitPathValue<TForm, P>>[])\n : [];\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(\n path as unknown as BitPath<TForm>,\n items as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n clear: () => {\n idsSig.set([]);\n store.setField(\n path as unknown as BitPath<TForm>,\n [] as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n };\n}\n"]}
@@ -1,11 +1,11 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { Provider, Signal } from '@angular/core';
3
- import { b as BitFrameworkStore } from '../public-types-r2aP68Gg.cjs';
4
- import { i as BitErrors, z as BitTouched, p as BitPath, q as BitPathValue, V as ValidateScopeResult, e as BitArrayPath, d as BitArrayItem, S as ScopeStatus } from '../bus-70e4jnBj.cjs';
3
+ import { B as BitStoreApi, i as BitValidationOptions, e as BitPersistMetadata } from '../public-types-CtYuIAMP.cjs';
4
+ import { i as BitErrors, A as BitTouched, G as DeepPartial, q as BitPath, r as BitPathValue, e as BitArrayPath, d as BitArrayItem, V as ValidateScopeResult, S as ScopeStatus } from '../bus-B3pGaiFZ.cjs';
5
5
  import { a as BitUploadFn, B as BitDeleteUploadFn } from '../types-C2mpfhp1.cjs';
6
6
 
7
- declare function provideBitStore<T extends object>(store: BitFrameworkStore<T>): Provider;
8
- declare function useBitStore<T extends object>(): BitFrameworkStore<T>;
7
+ declare function provideBitStore<T extends object>(store: BitStoreApi<T>): Provider;
8
+ declare function useBitStore<T extends object>(): BitStoreApi<T>;
9
9
 
10
10
  declare function injectBitForm<T extends object>(): {
11
11
  meta: {
@@ -22,23 +22,23 @@ declare function injectBitForm<T extends object>(): {
22
22
  submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>) => (event?: Event) => Promise<void>;
23
23
  onSubmit: (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => (event?: Event) => Promise<void>;
24
24
  reset: () => void;
25
+ replaceValues: (values: T) => void;
26
+ hydrate: (values: DeepPartial<T>) => void;
27
+ rebase: (values: T) => void;
25
28
  setValues: (values: T) => void;
26
29
  setError: (path: string, message: string | undefined) => void;
27
30
  setErrors: (errors: BitErrors<T>) => void;
28
31
  setServerErrors: (serverErrors: Record<string, string[] | string>) => void;
29
32
  setField: <P extends BitPath<T, "">>(path: P, value: BitPathValue<T, P>) => void;
30
33
  blurField: <P extends BitPath<T, "">>(path: P) => void;
31
- validate: (options?: {
32
- scope?: string;
33
- scopeFields?: string[];
34
- }) => Promise<boolean>;
34
+ validate: (options?: BitValidationOptions) => Promise<boolean>;
35
35
  mutations: {
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;
36
+ pushItem: <P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>) => void;
37
+ prependItem: <P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>) => void;
38
+ removeItem: <P extends BitArrayPath<T>>(path: P, index: number) => void;
39
+ insertItem: <P extends BitArrayPath<T>>(path: P, index: number, value: BitArrayItem<BitPathValue<T, P>>) => void;
40
+ moveItem: <P extends BitArrayPath<T>>(path: P, from: number, to: number) => void;
41
+ swapItems: <P extends BitArrayPath<T>>(path: P, indexA: number, indexB: number) => void;
42
42
  };
43
43
  };
44
44
 
@@ -106,8 +106,8 @@ interface InjectBitUploadResult {
106
106
  interface InjectBitHistoryResult {
107
107
  canUndo: ReturnType<typeof _angular_core.computed<boolean>>;
108
108
  canRedo: ReturnType<typeof _angular_core.computed<boolean>>;
109
- historyIndex: ReturnType<typeof _angular_core.computed<number>>;
110
- historySize: ReturnType<typeof _angular_core.computed<number>>;
109
+ historyIndex: ReturnType<typeof _angular_core.computed<BitHistoryMetadata["historyIndex"]>>;
110
+ historySize: ReturnType<typeof _angular_core.computed<BitHistoryMetadata["historySize"]>>;
111
111
  undo: () => void;
112
112
  redo: () => void;
113
113
  }
@@ -116,9 +116,9 @@ interface InjectBitPersistResult {
116
116
  save: () => Promise<void>;
117
117
  clear: () => Promise<void>;
118
118
  meta: {
119
- isSaving: Signal<boolean>;
120
- isRestoring: Signal<boolean>;
121
- error: Signal<Error | null>;
119
+ isSaving: Signal<BitPersistMetadata["isSaving"]>;
120
+ isRestoring: Signal<BitPersistMetadata["isRestoring"]>;
121
+ error: Signal<BitPersistMetadata["error"]>;
122
122
  };
123
123
  }
124
124
 
@@ -1,11 +1,11 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { Provider, Signal } from '@angular/core';
3
- import { b as BitFrameworkStore } from '../public-types-BVZ16kgZ.js';
4
- import { i as BitErrors, z as BitTouched, p as BitPath, q as BitPathValue, V as ValidateScopeResult, e as BitArrayPath, d as BitArrayItem, S as ScopeStatus } from '../bus-70e4jnBj.js';
3
+ import { B as BitStoreApi, i as BitValidationOptions, e as BitPersistMetadata } from '../public-types-Lq3eLstW.js';
4
+ import { i as BitErrors, A as BitTouched, G as DeepPartial, q as BitPath, r as BitPathValue, e as BitArrayPath, d as BitArrayItem, V as ValidateScopeResult, S as ScopeStatus } from '../bus-B3pGaiFZ.js';
5
5
  import { a as BitUploadFn, B as BitDeleteUploadFn } from '../types-C2mpfhp1.js';
6
6
 
7
- declare function provideBitStore<T extends object>(store: BitFrameworkStore<T>): Provider;
8
- declare function useBitStore<T extends object>(): BitFrameworkStore<T>;
7
+ declare function provideBitStore<T extends object>(store: BitStoreApi<T>): Provider;
8
+ declare function useBitStore<T extends object>(): BitStoreApi<T>;
9
9
 
10
10
  declare function injectBitForm<T extends object>(): {
11
11
  meta: {
@@ -22,23 +22,23 @@ declare function injectBitForm<T extends object>(): {
22
22
  submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>) => (event?: Event) => Promise<void>;
23
23
  onSubmit: (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => (event?: Event) => Promise<void>;
24
24
  reset: () => void;
25
+ replaceValues: (values: T) => void;
26
+ hydrate: (values: DeepPartial<T>) => void;
27
+ rebase: (values: T) => void;
25
28
  setValues: (values: T) => void;
26
29
  setError: (path: string, message: string | undefined) => void;
27
30
  setErrors: (errors: BitErrors<T>) => void;
28
31
  setServerErrors: (serverErrors: Record<string, string[] | string>) => void;
29
32
  setField: <P extends BitPath<T, "">>(path: P, value: BitPathValue<T, P>) => void;
30
33
  blurField: <P extends BitPath<T, "">>(path: P) => void;
31
- validate: (options?: {
32
- scope?: string;
33
- scopeFields?: string[];
34
- }) => Promise<boolean>;
34
+ validate: (options?: BitValidationOptions) => Promise<boolean>;
35
35
  mutations: {
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;
36
+ pushItem: <P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>) => void;
37
+ prependItem: <P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>) => void;
38
+ removeItem: <P extends BitArrayPath<T>>(path: P, index: number) => void;
39
+ insertItem: <P extends BitArrayPath<T>>(path: P, index: number, value: BitArrayItem<BitPathValue<T, P>>) => void;
40
+ moveItem: <P extends BitArrayPath<T>>(path: P, from: number, to: number) => void;
41
+ swapItems: <P extends BitArrayPath<T>>(path: P, indexA: number, indexB: number) => void;
42
42
  };
43
43
  };
44
44
 
@@ -106,8 +106,8 @@ interface InjectBitUploadResult {
106
106
  interface InjectBitHistoryResult {
107
107
  canUndo: ReturnType<typeof _angular_core.computed<boolean>>;
108
108
  canRedo: ReturnType<typeof _angular_core.computed<boolean>>;
109
- historyIndex: ReturnType<typeof _angular_core.computed<number>>;
110
- historySize: ReturnType<typeof _angular_core.computed<number>>;
109
+ historyIndex: ReturnType<typeof _angular_core.computed<BitHistoryMetadata["historyIndex"]>>;
110
+ historySize: ReturnType<typeof _angular_core.computed<BitHistoryMetadata["historySize"]>>;
111
111
  undo: () => void;
112
112
  redo: () => void;
113
113
  }
@@ -116,9 +116,9 @@ interface InjectBitPersistResult {
116
116
  save: () => Promise<void>;
117
117
  clear: () => Promise<void>;
118
118
  meta: {
119
- isSaving: Signal<boolean>;
120
- isRestoring: Signal<boolean>;
121
- error: Signal<Error | null>;
119
+ isSaving: Signal<BitPersistMetadata["isSaving"]>;
120
+ isRestoring: Signal<BitPersistMetadata["isRestoring"]>;
121
+ error: Signal<BitPersistMetadata["error"]>;
122
122
  };
123
123
  }
124
124
 
@@ -1,2 +1,2 @@
1
- import{d as M,e as R,h as _,i as H}from"../chunk-2HAQ3QEQ.js";import{inject as $,InjectionToken as L}from"@angular/core";var b=new L("BIT_STORE");function G(t){return{provide:b,useValue:t}}function g(){let t=$(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 x,computed as w,inject as J,DestroyRef as Q}from"@angular/core";function X(){let t=g(),e=J(Q),r=x(t.getState()),o=x(null),a=x(null),n=t.subscribe(()=>{r.set(t.getState())});e.onDestroy(()=>n());let p=w(()=>r().isValid),s=w(()=>r().isSubmitting),i=w(()=>r().isDirty),u=()=>r().values,c=()=>r().errors,y=()=>r().touched,j=()=>t.getDirtyValues(),S=F=>B=>(B?.preventDefault(),B?.stopPropagation(),t.submit(F)),T=F=>B=>(B?.preventDefault(),B?.stopPropagation(),o.set(null),t.submit(async(l,m)=>{try{let d=await F(l,m);a.set(d),o.set(null)}catch(d){_(d)?t.setServerErrors(H(d)):o.set(d instanceof Error?d:new Error(String(d)))}})),P=()=>{t.reset(),o.set(null),a.set(null)};return{meta:{isValid:p,isDirty:i,isSubmitting:s,submitError:o.asReadonly(),lastResponse:a.asReadonly()},getValues:u,getErrors:c,getTouched:y,getDirtyValues:j,submit:S,onSubmit:T,reset:P,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 q,DestroyRef as Y,computed as f,signal as Z}from"@angular/core";function D(t){let e=q(b),r=Z(e.getState()),o=e.subscribe(()=>{r.set(e.getState())});q(Y).onDestroy(()=>{o(),e.unregisterField&&e.unregisterField(t)});let a=f(()=>R(r().values,t)),n=f(()=>r().errors[t]),p=f(()=>!!r().touched[t]),s=f(()=>p()?n():void 0),i=f(()=>(r(),e.isFieldDirty(t))),u=f(()=>(r(),e.isFieldValidating(t))),c=f(()=>(r(),e.isHidden(t))),y=f(()=>(r(),e.isRequired(t))),j=f(()=>p()&&!!n()),S=e.resolveMask(t),T=f(()=>{let l=a();return l==null||l===""?"":S?S.format(l):String(l)}),P=l=>{if(!S){e.setField(t,l);return}let m=String(l??"");e.setField(t,S.parse(m))},h=()=>e.blurField(t),F=f(()=>!!n());return{value:a,displayValue:T,setValue:P,setBlur:h,update:l=>P(l?.target?.value??l),meta:{error:s,touched:p,invalid:j,isDirty:i,isValidating:u,isHidden:c,isRequired:y,hasError:F}}}import{DestroyRef as N,signal as K,computed as W,inject as z,untracked as tt}from"@angular/core";var E=()=>Math.random().toString(36).substring(2,9);function et(t){let e=z(b),r=z(N),o=()=>{let s=R(e.getState().values,t);return Array.isArray(s)?s:[]},a=K(o()),n=K(a().map(E)),p=e.subscribe(()=>{let s=o(),i=tt(n);a.set(s),s.length!==i.length&&(s.length>i.length?n.set([...i,...Array.from({length:s.length-i.length},E)]):n.set(i.slice(0,s.length)))});return r.onDestroy(()=>{p(),e.unregisterPrefix&&e.unregisterPrefix(`${t}.`)}),{fields:W(()=>a().map((s,i)=>({key:n()[i]||`temp-${i}`,value:s,index:i}))),length:W(()=>a().length),append:s=>{n.update(i=>[...i,E()]),e.pushItem(t,s)},prepend:s=>{n.update(i=>[E(),...i]),e.prependItem(t,s)},remove:s=>{n.update(i=>i.filter((u,c)=>c!==s)),e.removeItem(t,s)},insert:(s,i)=>{n.update(u=>{let c=[...u];return c.splice(s,0,E()),c}),e.insertItem(t,s,i)},swap:(s,i)=>{n.update(u=>{let c=[...u];return[c[s],c[i]]=[c[i],c[s]],c}),e.swapItems(t,s,i)},move:(s,i)=>{n.update(u=>{let c=[...u],[y]=c.splice(s,1);return c.splice(i,0,y),c}),e.moveItem(t,s,i)},replace:s=>{n.set(s.map(()=>E())),e.setField(t,s)},clear:()=>{n.set([]),e.setField(t,[])}}}import{computed as V,DestroyRef as rt,inject as st,signal as ot}from"@angular/core";function nt(){let t=g(),e=st(rt),r=ot(t.getHistoryMetadata()),o=t.subscribe(()=>{r.set(t.getHistoryMetadata())});return e.onDestroy(()=>o()),{canUndo:V(()=>r().canUndo),canRedo:V(()=>r().canRedo),historyIndex:V(()=>r().historyIndex),historySize:V(()=>r().historySize),undo:()=>t.undo(),redo:()=>t.redo()}}import{signal as it,computed as k,DestroyRef as at,inject as ct}from"@angular/core";function lt(t,e){let r=Object.keys(t),o=Object.keys(e);return r.length!==o.length?!1:r.every(a=>t[a]===e[a])}function ut(t){let e=g(),r=e.getStepStatus(t),o=it(r),a=e.subscribe(()=>{let c=e.getStepStatus(t),y=o();(c.hasErrors!==y.hasErrors||c.isDirty!==y.isDirty||!lt(c.errors,y.errors))&&o.set(c)});try{ct(at).onDestroy(()=>a())}catch{}let n=async()=>{let c=await e.validate({scope:t}),y=e.getStepErrors(t);return{valid:c,errors:y}},p=()=>e.getStepErrors(t),s=k(()=>!o().hasErrors),i=k(()=>o().isDirty),u=k(()=>o().errors);return{scopeName:t,status:o,errors:u,validate:n,getErrors:p,isValid:s,isDirty:i,unsubscribe:a}}import{signal as C,computed as v,DestroyRef as dt,inject as mt}from"@angular/core";function pt(t,e){let r=Object.keys(t),o=Object.keys(e);return r.length!==o.length?!1:r.every(a=>t[a]===e[a])}function yt(t){let e=g(),r=C(0),o=v(()=>t[r()]??""),a=()=>t[r()]??"",n=C(e.getStepStatus(a())),p=()=>{let l=a(),m=e.getStepStatus(l),d=n();(m.hasErrors!==d.hasErrors||m.isDirty!==d.isDirty||!pt(m.errors,d.errors))&&n.set(m)},s=e.subscribe(p);try{mt(dt).onDestroy(()=>s())}catch{}let i=async()=>{let l=a(),m=await e.validate({scope:l}),d=e.getStepErrors(l);return{valid:m,errors:d}},u=()=>e.getStepErrors(a()),c=async()=>{let l=a(),m=e.getScopeFields(l);if(e.hasValidationsInProgress(m))return!1;let d=await e.validate({scope:l});if(d){let I=Math.min(r()+1,t.length-1);r.set(I),n.set(e.getStepStatus(t[I]??""))}else{let I=e.getStepErrors(l),U=Object.keys(I);U.length>0&&e.markFieldsTouched(U)}return d},y=()=>{let l=Math.max(r()-1,0);r.set(l),n.set(e.getStepStatus(t[l]??""))},j=l=>{let m=Math.max(0,Math.min(l-1,t.length-1));r.set(m),n.set(e.getStepStatus(t[m]??""))},S=v(()=>r()+1),T=v(()=>r()===0),P=v(()=>r()>=t.length-1),h=v(()=>!n().hasErrors),F=v(()=>n().isDirty),B=v(()=>n().errors);return{step:S,stepIndex:r,scope:o,next:c,prev:y,goTo:j,isFirst:T,isLast:P,status:n,errors:B,isValid:h,isDirty:F,validate:i,getErrors:u}}import{DestroyRef as gt,signal as ft,inject as St}from"@angular/core";function Bt(t){let e=g(),r=St(gt),o=ft(R(e.getState().values,t),{equal:M}),a=e.watch(t,n=>{o.set(n)});return r.onDestroy(a),o.asReadonly()}import{computed as A,inject as bt}from"@angular/core";function Ft(t,e,r){let o=bt(b),a=D(t),n=null,p=async i=>{if(i){o.beginFieldValidation(t),await o.clearFieldAsyncError(t);try{let u=await e(i);a.setValue(u.url),n=u.key,await o.clearFieldAsyncError(t)}catch(u){let c=u instanceof Error?u.message:"Upload failed";await o.setFieldAsyncError(t,c)}finally{o.endFieldValidation(t)}}},s=async()=>{if(n&&r)try{await r(n)}catch(i){let u=i instanceof Error?i.message:"Delete failed";await o.setFieldAsyncError(t,u);return}a.setValue(null),n=null,await o.clearFieldAsyncError(t)};return{value:A(()=>a.value()),setValue:a.setValue,error:A(()=>a.meta.error()),isValidating:A(()=>a.meta.isValidating()||!1),upload:p,remove:s}}import{signal as O}from"@angular/core";function vt(){let t=g(),e=O(!1),r=O(!1),o=O(null);return{restore:async()=>{r.set(!0),o.set(null);try{return await t.restorePersisted()}catch(s){return o.set(s instanceof Error?s:new Error(String(s))),!1}finally{r.set(!1)}},save:async()=>{e.set(!0),o.set(null);try{await t.forceSave()}catch(s){o.set(s instanceof Error?s:new Error(String(s)))}finally{e.set(!1)}},clear:async()=>{o.set(null);try{await t.clearPersisted()}catch(s){o.set(s instanceof Error?s:new Error(String(s)))}},meta:{isSaving:e.asReadonly(),isRestoring:r.asReadonly(),error:o.asReadonly()}}}export{et as injectBitArray,D as injectBitField,X as injectBitForm,nt as injectBitHistory,vt as injectBitPersist,ut as injectBitScope,yt as injectBitSteps,Ft as injectBitUpload,Bt as injectBitWatch,G as provideBitStore,g as useBitStore};
1
+ import{e as M,f as j,i as _,j as H}from"../chunk-6FJEE6O3.js";import{inject as $,InjectionToken as L}from"@angular/core";var P=new L("BIT_STORE");function G(t){return{provide:P,useValue:t}}function f(){let t=$(P,{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 x,computed as w,inject as J,DestroyRef as Q}from"@angular/core";function X(){let t=f(),e=J(Q),r=x({isValid:t.getState().isValid,isSubmitting:t.getState().isSubmitting,isDirty:t.getState().isDirty}),o=x(null),a=x(null),i=t.subscribeSelector(g=>({isValid:g.isValid,isSubmitting:g.isSubmitting,isDirty:g.isDirty}),g=>{r.set(g)});e.onDestroy(()=>i());let p=w(()=>r().isValid),s=w(()=>r().isSubmitting),n=w(()=>r().isDirty),u=()=>t.getState().values,c=()=>t.getState().errors,y=()=>t.getState().touched,v=()=>t.getDirtyValues(),B=g=>b=>(b?.preventDefault(),b?.stopPropagation(),t.submit(g)),R=g=>b=>(b?.preventDefault(),b?.stopPropagation(),o.set(null),t.submit(async(l,m)=>{try{let d=await g(l,m);a.set(d),o.set(null)}catch(d){_(d)?t.setServerErrors(H(d)):o.set(d instanceof Error?d:new Error(String(d)))}})),F=()=>{t.reset(),o.set(null),a.set(null)};return{meta:{isValid:p,isDirty:n,isSubmitting:s,submitError:o.asReadonly(),lastResponse:a.asReadonly()},getValues:u,getErrors:c,getTouched:y,getDirtyValues:v,submit:B,onSubmit:R,reset:F,replaceValues:t.replaceValues.bind(t),hydrate:t.hydrate.bind(t),rebase:t.rebase.bind(t),setValues:t.setValues.bind(t),setError:t.setError.bind(t),setErrors:t.setErrors.bind(t),setServerErrors:t.setServerErrors.bind(t),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 q,DestroyRef as Y,computed as S,signal as Z}from"@angular/core";function D(t){let e=q(P),r=Z(e.getFieldState(t)),o=e.subscribeSelector(()=>e.getFieldState(t),l=>{r.set(l)});q(Y).onDestroy(()=>{o(),e.unregisterField&&e.unregisterField(t)});let a=S(()=>r().value),i=S(()=>r().error),p=S(()=>r().touched),s=S(()=>p()?i():void 0),n=S(()=>r().isDirty),u=S(()=>r().isValidating),c=S(()=>r().isHidden),y=S(()=>r().isRequired),v=S(()=>p()&&!!i()),B=e.resolveMask(t),R=S(()=>{let l=a();return l==null||l===""?"":B?B.format(l):String(l)}),F=l=>{if(!B){e.setField(t,l);return}let m=String(l??"");e.setField(t,B.parse(m))},E=()=>e.blurField(t),g=S(()=>!!i());return{value:a,displayValue:R,setValue:F,setBlur:E,update:l=>F(l?.target?.value??l),meta:{error:s,touched:p,invalid:v,isDirty:n,isValidating:u,isHidden:c,isRequired:y,hasError:g}}}import{DestroyRef as N,signal as K,computed as W,inject as z,untracked as tt}from"@angular/core";var T=()=>Math.random().toString(36).substring(2,9);function et(t){let e=z(P),r=z(N),a=K((()=>{let s=j(e.getState().values,t);return Array.isArray(s)?s:[]})()),i=K(a().map(T)),p=e.subscribePath(t,s=>{let n=Array.isArray(s)?s:[],u=tt(i);a.set(n),n.length!==u.length&&(n.length>u.length?i.set([...u,...Array.from({length:n.length-u.length},T)]):i.set(u.slice(0,n.length)))});return r.onDestroy(()=>{p(),e.unregisterPrefix&&e.unregisterPrefix(`${t}.`)}),{fields:W(()=>a().map((s,n)=>({key:i()[n]||`temp-${n}`,value:s,index:n}))),length:W(()=>a().length),append:s=>{i.update(n=>[...n,T()]),e.pushItem(t,s)},prepend:s=>{i.update(n=>[T(),...n]),e.prependItem(t,s)},remove:s=>{i.update(n=>n.filter((u,c)=>c!==s)),e.removeItem(t,s)},insert:(s,n)=>{i.update(u=>{let c=[...u];return c.splice(s,0,T()),c}),e.insertItem(t,s,n)},swap:(s,n)=>{i.update(u=>{let c=[...u];return[c[s],c[n]]=[c[n],c[s]],c}),e.swapItems(t,s,n)},move:(s,n)=>{i.update(u=>{let c=[...u],[y]=c.splice(s,1);return c.splice(n,0,y),c}),e.moveItem(t,s,n)},replace:s=>{i.set(s.map(()=>T())),e.setField(t,s)},clear:()=>{i.set([]),e.setField(t,[])}}}import{computed as I,DestroyRef as rt,inject as st,signal as ot}from"@angular/core";function it(){let t=f(),e=st(rt),r=ot(t.getHistoryMetadata()),o=t.subscribe(()=>{r.set(t.getHistoryMetadata())});return e.onDestroy(()=>o()),{canUndo:I(()=>r().canUndo),canRedo:I(()=>r().canRedo),historyIndex:I(()=>r().historyIndex),historySize:I(()=>r().historySize),undo:()=>t.undo(),redo:()=>t.redo()}}import{signal as nt,computed as A,DestroyRef as at,inject as ct}from"@angular/core";function lt(t,e){let r=Object.keys(t),o=Object.keys(e);return r.length!==o.length?!1:r.every(a=>t[a]===e[a])}function ut(t){let e=f(),r=e.getStepStatus(t),o=nt(r),a=e.subscribe(()=>{let c=e.getStepStatus(t),y=o();(c.hasErrors!==y.hasErrors||c.isDirty!==y.isDirty||!lt(c.errors,y.errors))&&o.set(c)});try{ct(at).onDestroy(()=>a())}catch{}let i=async()=>{let c=await e.validate({scope:t}),y=e.getStepErrors(t);return{valid:c,errors:y}},p=()=>e.getStepErrors(t),s=A(()=>!o().hasErrors),n=A(()=>o().isDirty),u=A(()=>o().errors);return{scopeName:t,status:o,errors:u,validate:i,getErrors:p,isValid:s,isDirty:n,unsubscribe:a}}import{signal as C,computed as h,DestroyRef as dt,inject as mt}from"@angular/core";function pt(t,e){let r=Object.keys(t),o=Object.keys(e);return r.length!==o.length?!1:r.every(a=>t[a]===e[a])}function yt(t){let e=f(),r=C(0),o=h(()=>t[r()]??""),a=()=>t[r()]??"",i=C(e.getStepStatus(a())),p=()=>{let l=a(),m=e.getStepStatus(l),d=i();(m.hasErrors!==d.hasErrors||m.isDirty!==d.isDirty||!pt(m.errors,d.errors))&&i.set(m)},s=e.subscribe(p);try{mt(dt).onDestroy(()=>s())}catch{}let n=async()=>{let l=a(),m=await e.validate({scope:l}),d=e.getStepErrors(l);return{valid:m,errors:d}},u=()=>e.getStepErrors(a()),c=async()=>{let l=a(),m=e.getScopeFields(l);if(e.hasValidationsInProgress(m))return!1;let d=await e.validate({scope:l});if(d){let V=Math.min(r()+1,t.length-1);r.set(V),i.set(e.getStepStatus(t[V]??""))}else{let V=e.getStepErrors(l),U=Object.keys(V);U.length>0&&e.markFieldsTouched(U)}return d},y=()=>{let l=Math.max(r()-1,0);r.set(l),i.set(e.getStepStatus(t[l]??""))},v=l=>{let m=Math.max(0,Math.min(l-1,t.length-1));r.set(m),i.set(e.getStepStatus(t[m]??""))},B=h(()=>r()+1),R=h(()=>r()===0),F=h(()=>r()>=t.length-1),E=h(()=>!i().hasErrors),g=h(()=>i().isDirty),b=h(()=>i().errors);return{step:B,stepIndex:r,scope:o,next:c,prev:y,goTo:v,isFirst:R,isLast:F,status:i,errors:b,isValid:E,isDirty:g,validate:n,getErrors:u}}import{DestroyRef as gt,signal as ft,inject as St}from"@angular/core";function Bt(t){let e=f(),r=St(gt),o=ft(j(e.getState().values,t),{equal:M}),a=e.watch(t,i=>{o.set(i)});return r.onDestroy(a),o.asReadonly()}import{computed as k,inject as bt}from"@angular/core";function Pt(t,e,r){let o=bt(P),a=D(t),i=null,p=async n=>{if(n){o.beginFieldValidation(t),await o.clearFieldAsyncError(t);try{let u=await e(n);a.setValue(u.url),i=u.key,await o.clearFieldAsyncError(t)}catch(u){let c=u instanceof Error?u.message:"Upload failed";await o.setFieldAsyncError(t,c)}finally{o.endFieldValidation(t)}}},s=async()=>{if(i&&r)try{await r(i)}catch(n){let u=n instanceof Error?n.message:"Delete failed";await o.setFieldAsyncError(t,u);return}a.setValue(null),i=null,await o.clearFieldAsyncError(t)};return{value:k(()=>a.value()),setValue:a.setValue,error:k(()=>a.meta.error()),isValidating:k(()=>a.meta.isValidating()||!1),upload:p,remove:s}}import{signal as O}from"@angular/core";function ht(){let t=f(),e=O(!1),r=O(!1),o=O(null);return{restore:async()=>{r.set(!0),o.set(null);try{return await t.restorePersisted()}catch(s){return o.set(s instanceof Error?s:new Error(String(s))),!1}finally{r.set(!1)}},save:async()=>{e.set(!0),o.set(null);try{await t.forceSave()}catch(s){o.set(s instanceof Error?s:new Error(String(s)))}finally{e.set(!1)}},clear:async()=>{o.set(null);try{await t.clearPersisted()}catch(s){o.set(s instanceof Error?s:new Error(String(s)))}},meta:{isSaving:e.asReadonly(),isRestoring:r.asReadonly(),error:o.asReadonly()}}}export{et as injectBitArray,D as injectBitField,X as injectBitForm,it as injectBitHistory,ht as injectBitPersist,ut as injectBitScope,yt as injectBitSteps,Pt as injectBitUpload,Bt as injectBitWatch,G as provideBitStore,f as useBitStore};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/angular/provider.ts","../../src/angular/inject-bit-form.ts","../../src/angular/inject-bit-field.ts","../../src/angular/inject-bit-array.ts","../../src/angular/inject-bit-history.ts","../../src/angular/inject-bit-scope.ts","../../src/angular/inject-bit-steps.ts","../../src/angular/inject-bit-watch.ts","../../src/angular/inject-bit-upload.ts","../../src/angular/inject-bit-persist.ts"],"sourcesContent":["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 { getDeepValue, BitPath, BitPathValue } 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>(path: P): 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 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 resolvedMask = store.resolveMask(path as string);\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","import { computed, DestroyRef, inject, signal } from \"@angular/core\";\nimport { useBitStore } from \"./provider\";\nimport type { InjectBitHistoryResult } from \"./types\";\n\nexport function injectBitHistory<\n T extends object = any,\n>(): InjectBitHistoryResult {\n const store = useBitStore<T>();\n const destroyRef = inject(DestroyRef);\n\n const meta = signal(store.getHistoryMetadata());\n\n const sub = store.subscribe(() => {\n meta.set(store.getHistoryMetadata());\n });\n\n destroyRef.onDestroy(() => sub());\n\n return {\n canUndo: computed(() => meta().canUndo),\n canRedo: computed(() => meta().canRedo),\n historyIndex: computed(() => meta().historyIndex),\n historySize: computed(() => meta().historySize),\n undo: () => store.undo(),\n redo: () => store.redo(),\n };\n}\n","import { signal, computed, DestroyRef, inject } from \"@angular/core\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { useBitStore } from \"./provider\";\n\nexport type { ScopeStatus, ValidateScopeResult };\n\nfunction errorsEqual(\n a: Record<string, string>,\n b: Record<string, string>,\n): boolean {\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n return keysA.every((k) => a[k] === b[k]);\n}\n\nexport function injectBitScope(scopeName: string) {\n const store = useBitStore();\n const initialStatus = store.getStepStatus(scopeName);\n\n const status = signal<ScopeStatus>(initialStatus);\n\n const unsubscribe = store.subscribe(() => {\n const newStatus = store.getStepStatus(scopeName);\n const current = status();\n if (\n newStatus.hasErrors !== current.hasErrors ||\n newStatus.isDirty !== current.isDirty ||\n !errorsEqual(newStatus.errors, current.errors)\n ) {\n status.set(newStatus);\n }\n });\n\n try {\n const destroyRef = inject(DestroyRef);\n destroyRef.onDestroy(() => unsubscribe());\n } catch {}\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const valid = await store.validate({ scope: scopeName });\n const errors = store.getStepErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.getStepErrors(scopeName);\n\n const isValid = computed(() => !status().hasErrors);\n const isDirty = computed(() => status().isDirty);\n const errors = computed(() => status().errors);\n\n return {\n scopeName,\n status,\n errors,\n validate,\n getErrors,\n isValid,\n isDirty,\n unsubscribe,\n };\n}\n","import { signal, computed, DestroyRef, inject } from \"@angular/core\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { useBitStore } from \"./provider\";\nimport type { InjectBitStepsResult } from \"./types\";\n\nfunction errorsEqual(\n a: Record<string, string>,\n b: Record<string, string>,\n): boolean {\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n return keysA.every((k) => a[k] === b[k]);\n}\n\nexport function injectBitSteps(scopeNames: string[]): InjectBitStepsResult {\n const store = useBitStore();\n const stepIndex = signal(0);\n\n const scope = computed(() => scopeNames[stepIndex()] ?? \"\");\n\n const getCurrentScope = () => scopeNames[stepIndex()] ?? \"\";\n const status = signal<ScopeStatus>(store.getStepStatus(getCurrentScope()));\n\n const updateStatus = () => {\n const scopeName = getCurrentScope();\n const newStatus = store.getStepStatus(scopeName);\n const current = status();\n if (\n newStatus.hasErrors !== current.hasErrors ||\n newStatus.isDirty !== current.isDirty ||\n !errorsEqual(newStatus.errors, current.errors)\n ) {\n status.set(newStatus);\n }\n };\n\n const unsubscribe = store.subscribe(updateStatus);\n\n try {\n const destroyRef = inject(DestroyRef);\n destroyRef.onDestroy(() => unsubscribe());\n } catch {}\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const scopeName = getCurrentScope();\n const valid = await store.validate({ scope: scopeName });\n const errors = store.getStepErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.getStepErrors(getCurrentScope());\n\n const next = async (): Promise<boolean> => {\n const scopeName = getCurrentScope();\n\n const scopeFields = store.getScopeFields(scopeName);\n if (store.hasValidationsInProgress(scopeFields)) {\n return false;\n }\n\n const valid = await store.validate({ scope: scopeName });\n if (valid) {\n const newIndex = Math.min(stepIndex() + 1, scopeNames.length - 1);\n stepIndex.set(newIndex);\n status.set(store.getStepStatus(scopeNames[newIndex] ?? \"\"));\n } else {\n const errors = store.getStepErrors(scopeName);\n const pathsWithErrors = Object.keys(errors);\n if (pathsWithErrors.length > 0) {\n store.markFieldsTouched(pathsWithErrors);\n }\n }\n return valid;\n };\n\n const prev = () => {\n const newIndex = Math.max(stepIndex() - 1, 0);\n stepIndex.set(newIndex);\n status.set(store.getStepStatus(scopeNames[newIndex] ?? \"\"));\n };\n\n const goTo = (targetStep: number) => {\n const newIndex = Math.max(\n 0,\n Math.min(targetStep - 1, scopeNames.length - 1),\n );\n stepIndex.set(newIndex);\n status.set(store.getStepStatus(scopeNames[newIndex] ?? \"\"));\n };\n\n const step = computed(() => stepIndex() + 1);\n const isFirst = computed(() => stepIndex() === 0);\n const isLast = computed(() => stepIndex() >= scopeNames.length - 1);\n const isValid = computed(() => !status().hasErrors);\n const isDirty = computed(() => status().isDirty);\n const errors = computed(() => status().errors);\n\n return {\n step,\n stepIndex,\n scope,\n next,\n prev,\n goTo,\n isFirst,\n isLast,\n status,\n errors,\n isValid,\n isDirty,\n validate,\n getErrors,\n };\n}\n","import { DestroyRef, signal, Signal, inject } from \"@angular/core\";\nimport { useBitStore } from \"./provider\";\nimport {\n getDeepValue,\n deepEqual,\n BitPath,\n BitPathValue,\n} from \"../core\";\n\nexport function injectBitWatch<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): Signal<BitPathValue<TForm, P>> {\n const store = useBitStore<TForm>();\n const destroyRef = inject(DestroyRef);\n const valueSig = signal<BitPathValue<TForm, P>>(\n getDeepValue(store.getState().values, path as string) as BitPathValue<\n TForm,\n P\n >,\n { equal: deepEqual },\n );\n\n const unsub = store.watch(path, (v) => {\n valueSig.set(v as BitPathValue<TForm, P>);\n });\n\n destroyRef.onDestroy(unsub);\n\n return valueSig.asReadonly();\n}\n","/**\n * Angular Dependency Injection for File Upload\n *\n * Minimal upload API integrated with global field validation lifecycle.\n */\n\nimport { computed, inject } from \"@angular/core\";\nimport { BIT_STORE_TOKEN } from \"./provider\";\nimport { injectBitField } from \"./inject-bit-field\";\nimport { BitUploadFn, BitDeleteUploadFn } from \"../core\";\nimport type { InjectBitUploadResult } from \"./types\";\n\nexport function injectBitUpload(\n fieldPath: string,\n uploadFn: BitUploadFn,\n deleteFile?: BitDeleteUploadFn,\n): InjectBitUploadResult {\n const store = inject(BIT_STORE_TOKEN);\n const field = injectBitField(fieldPath);\n let uploadKey: string | null = null;\n\n const upload = async (file: File | null | undefined) => {\n if (!file) return;\n\n store.beginFieldValidation(fieldPath);\n await store.clearFieldAsyncError(fieldPath);\n\n try {\n const result = await uploadFn(file);\n\n field.setValue(result.url);\n uploadKey = result.key;\n await store.clearFieldAsyncError(fieldPath);\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Upload failed\";\n await store.setFieldAsyncError(fieldPath, message);\n } finally {\n store.endFieldValidation(fieldPath);\n }\n };\n\n const remove = async () => {\n if (uploadKey && deleteFile) {\n try {\n await deleteFile(uploadKey);\n } catch (error) {\n const message =\n error instanceof Error ? error.message : \"Delete failed\";\n await store.setFieldAsyncError(fieldPath, message);\n return;\n }\n }\n\n field.setValue(null);\n uploadKey = null;\n await store.clearFieldAsyncError(fieldPath);\n };\n\n return {\n value: computed(() => field.value()),\n setValue: field.setValue,\n error: computed(() => field.meta.error()),\n isValidating: computed(() => field.meta.isValidating() || false),\n upload,\n remove,\n };\n}\n","import { signal } from \"@angular/core\";\nimport { useBitStore } from \"./provider\";\nimport type { InjectBitPersistResult } from \"./types\";\n\nexport function injectBitPersist<\n T extends object = any,\n>(): InjectBitPersistResult {\n const store = useBitStore<T>();\n const isSaving = signal(false);\n const isRestoring = signal(false);\n const error = signal<Error | null>(null);\n\n const restore = async (): Promise<boolean> => {\n isRestoring.set(true);\n error.set(null);\n\n try {\n return await store.restorePersisted();\n } catch (err) {\n error.set(err instanceof Error ? err : new Error(String(err)));\n return false;\n } finally {\n isRestoring.set(false);\n }\n };\n\n const save = async (): Promise<void> => {\n isSaving.set(true);\n error.set(null);\n\n try {\n await store.forceSave();\n } catch (err) {\n error.set(err instanceof Error ? err : new Error(String(err)));\n } finally {\n isSaving.set(false);\n }\n };\n\n const clear = async (): Promise<void> => {\n error.set(null);\n\n try {\n await store.clearPersisted();\n } catch (err) {\n error.set(err instanceof Error ? err : new Error(String(err)));\n }\n };\n\n return {\n restore,\n save,\n clear,\n meta: {\n isSaving: isSaving.asReadonly(),\n isRestoring: isRestoring.asReadonly(),\n error: error.asReadonly(),\n },\n };\n}\n"],"mappings":"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","names":["inject","InjectionToken","BIT_STORE_TOKEN","provideBitStore","store","useBitStore","signal","computed","inject","DestroyRef","injectBitForm","store","useBitStore","destroyRef","inject","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","inject","DestroyRef","computed","signal","injectBitField","path","store","inject","BIT_STORE_TOKEN","stateSignal","signal","unsubscribe","DestroyRef","value","computed","getDeepValue","rawError","touched","error","isDirty","isValidating","isHidden","isRequired","invalid","resolvedMask","displayValue","val","setValue","stringVal","setBlur","hasError","e","DestroyRef","signal","computed","inject","untracked","generateId","injectBitArray","path","store","inject","BIT_STORE_TOKEN","destroyRef","DestroyRef","getRaw","val","getDeepValue","valuesSig","signal","idsSig","unsub","next","ids","untracked","computed","v","i","_","idx","index","a","b","f","t","it","items","computed","DestroyRef","inject","signal","injectBitHistory","store","useBitStore","destroyRef","inject","DestroyRef","meta","signal","sub","computed","signal","computed","DestroyRef","inject","errorsEqual","a","b","keysA","keysB","k","injectBitScope","scopeName","store","useBitStore","initialStatus","status","signal","unsubscribe","newStatus","current","inject","DestroyRef","validate","valid","errors","getErrors","isValid","computed","isDirty","signal","computed","DestroyRef","inject","errorsEqual","a","b","keysA","keysB","k","injectBitSteps","scopeNames","store","useBitStore","stepIndex","signal","scope","computed","getCurrentScope","status","updateStatus","scopeName","newStatus","current","unsubscribe","inject","DestroyRef","validate","valid","errors","getErrors","next","scopeFields","newIndex","pathsWithErrors","prev","goTo","targetStep","step","isFirst","isLast","isValid","isDirty","DestroyRef","signal","inject","injectBitWatch","path","store","useBitStore","destroyRef","inject","DestroyRef","valueSig","signal","getDeepValue","deepEqual","unsub","v","computed","inject","injectBitUpload","fieldPath","uploadFn","deleteFile","store","inject","BIT_STORE_TOKEN","field","injectBitField","uploadKey","upload","file","result","error","message","remove","computed","signal","injectBitPersist","store","useBitStore","isSaving","signal","isRestoring","error","err"]}
1
+ {"version":3,"sources":["../../src/angular/provider.ts","../../src/angular/inject-bit-form.ts","../../src/angular/inject-bit-field.ts","../../src/angular/inject-bit-array.ts","../../src/angular/inject-bit-history.ts","../../src/angular/inject-bit-scope.ts","../../src/angular/inject-bit-steps.ts","../../src/angular/inject-bit-watch.ts","../../src/angular/inject-bit-upload.ts","../../src/angular/inject-bit-persist.ts"],"sourcesContent":["import { inject, InjectionToken, Provider } from \"@angular/core\";\nimport type { BitStoreApi } from \"../core\";\n\nexport const BIT_STORE_TOKEN = new InjectionToken<BitStoreApi<any>>(\n \"BIT_STORE\",\n);\n\nexport function provideBitStore<T extends object>(\n store: BitStoreApi<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 BitStoreApi<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({\n isValid: store.getState().isValid,\n isSubmitting: store.getState().isSubmitting,\n isDirty: store.getState().isDirty,\n });\n const submitError = signal<Error | null>(null);\n const lastResponse = signal<unknown>(null);\n\n const sub = store.subscribeSelector(\n (state) => ({\n isValid: state.isValid,\n isSubmitting: state.isSubmitting,\n isDirty: state.isDirty,\n }),\n (nextState) => {\n stateSignal.set(nextState);\n },\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 = () => store.getState().values;\n const getErrors = () => store.getState().errors;\n const getTouched = () => store.getState().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 replaceValues: store.replaceValues.bind(store),\n hydrate: store.hydrate.bind(store),\n rebase: store.rebase.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 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 { BitPath, BitPathValue } 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>(path: P): InjectBitFieldResult<TForm, P> {\n const store = inject(BIT_STORE_TOKEN);\n\n const stateSignal = signal(store.getFieldState(path));\n\n const unsubscribe = store.subscribeSelector(\n () => store.getFieldState(path),\n (nextState) => {\n stateSignal.set(nextState);\n },\n );\n\n inject(DestroyRef).onDestroy(() => {\n unsubscribe();\n if (store.unregisterField) {\n store.unregisterField(path as string);\n }\n });\n\n const value = computed(() => stateSignal().value as BitPathValue<TForm, P>);\n const rawError = computed(() => stateSignal().error);\n const touched = computed(() => stateSignal().touched);\n const error = computed(() => (touched() ? rawError() : undefined));\n\n const isDirty = computed(() => stateSignal().isDirty);\n\n const isValidating = computed(() => stateSignal().isValidating);\n\n const isHidden = computed(() => stateSignal().isHidden);\n\n const isRequired = computed(() => stateSignal().isRequired);\n\n const invalid = computed(() => touched() && !!rawError());\n\n const resolvedMask = store.resolveMask(path as string);\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.subscribePath(path, (value) => {\n const next = Array.isArray(value)\n ? (value as BitArrayItem<BitPathValue<TForm, P>>[])\n : [];\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(\n path as unknown as BitPath<TForm>,\n items as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n clear: () => {\n idsSig.set([]);\n store.setField(\n path as unknown as BitPath<TForm>,\n [] as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n };\n}\n","import { computed, DestroyRef, inject, signal } from \"@angular/core\";\nimport { useBitStore } from \"./provider\";\nimport type { InjectBitHistoryResult } from \"./types\";\n\nexport function injectBitHistory<\n T extends object = any,\n>(): InjectBitHistoryResult {\n const store = useBitStore<T>();\n const destroyRef = inject(DestroyRef);\n\n const meta = signal(store.getHistoryMetadata());\n\n const sub = store.subscribe(() => {\n meta.set(store.getHistoryMetadata());\n });\n\n destroyRef.onDestroy(() => sub());\n\n return {\n canUndo: computed(() => meta().canUndo),\n canRedo: computed(() => meta().canRedo),\n historyIndex: computed(() => meta().historyIndex),\n historySize: computed(() => meta().historySize),\n undo: () => store.undo(),\n redo: () => store.redo(),\n };\n}\n","import { signal, computed, DestroyRef, inject } from \"@angular/core\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { useBitStore } from \"./provider\";\n\nexport type { ScopeStatus, ValidateScopeResult };\n\nfunction errorsEqual(\n a: Record<string, string>,\n b: Record<string, string>,\n): boolean {\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n return keysA.every((k) => a[k] === b[k]);\n}\n\nexport function injectBitScope(scopeName: string) {\n const store = useBitStore();\n const initialStatus = store.getStepStatus(scopeName);\n\n const status = signal<ScopeStatus>(initialStatus);\n\n const unsubscribe = store.subscribe(() => {\n const newStatus = store.getStepStatus(scopeName);\n const current = status();\n if (\n newStatus.hasErrors !== current.hasErrors ||\n newStatus.isDirty !== current.isDirty ||\n !errorsEqual(newStatus.errors, current.errors)\n ) {\n status.set(newStatus);\n }\n });\n\n try {\n const destroyRef = inject(DestroyRef);\n destroyRef.onDestroy(() => unsubscribe());\n } catch {}\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const valid = await store.validate({ scope: scopeName });\n const errors = store.getStepErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.getStepErrors(scopeName);\n\n const isValid = computed(() => !status().hasErrors);\n const isDirty = computed(() => status().isDirty);\n const errors = computed(() => status().errors);\n\n return {\n scopeName,\n status,\n errors,\n validate,\n getErrors,\n isValid,\n isDirty,\n unsubscribe,\n };\n}\n","import { signal, computed, DestroyRef, inject } from \"@angular/core\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { useBitStore } from \"./provider\";\nimport type { InjectBitStepsResult } from \"./types\";\n\nfunction errorsEqual(\n a: Record<string, string>,\n b: Record<string, string>,\n): boolean {\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n return keysA.every((k) => a[k] === b[k]);\n}\n\nexport function injectBitSteps(scopeNames: string[]): InjectBitStepsResult {\n const store = useBitStore();\n const stepIndex = signal(0);\n\n const scope = computed(() => scopeNames[stepIndex()] ?? \"\");\n\n const getCurrentScope = () => scopeNames[stepIndex()] ?? \"\";\n const status = signal<ScopeStatus>(store.getStepStatus(getCurrentScope()));\n\n const updateStatus = () => {\n const scopeName = getCurrentScope();\n const newStatus = store.getStepStatus(scopeName);\n const current = status();\n if (\n newStatus.hasErrors !== current.hasErrors ||\n newStatus.isDirty !== current.isDirty ||\n !errorsEqual(newStatus.errors, current.errors)\n ) {\n status.set(newStatus);\n }\n };\n\n const unsubscribe = store.subscribe(updateStatus);\n\n try {\n const destroyRef = inject(DestroyRef);\n destroyRef.onDestroy(() => unsubscribe());\n } catch {}\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const scopeName = getCurrentScope();\n const valid = await store.validate({ scope: scopeName });\n const errors = store.getStepErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.getStepErrors(getCurrentScope());\n\n const next = async (): Promise<boolean> => {\n const scopeName = getCurrentScope();\n\n const scopeFields = store.getScopeFields(scopeName);\n if (store.hasValidationsInProgress(scopeFields)) {\n return false;\n }\n\n const valid = await store.validate({ scope: scopeName });\n if (valid) {\n const newIndex = Math.min(stepIndex() + 1, scopeNames.length - 1);\n stepIndex.set(newIndex);\n status.set(store.getStepStatus(scopeNames[newIndex] ?? \"\"));\n } else {\n const errors = store.getStepErrors(scopeName);\n const pathsWithErrors = Object.keys(errors);\n if (pathsWithErrors.length > 0) {\n store.markFieldsTouched(pathsWithErrors);\n }\n }\n return valid;\n };\n\n const prev = () => {\n const newIndex = Math.max(stepIndex() - 1, 0);\n stepIndex.set(newIndex);\n status.set(store.getStepStatus(scopeNames[newIndex] ?? \"\"));\n };\n\n const goTo = (targetStep: number) => {\n const newIndex = Math.max(\n 0,\n Math.min(targetStep - 1, scopeNames.length - 1),\n );\n stepIndex.set(newIndex);\n status.set(store.getStepStatus(scopeNames[newIndex] ?? \"\"));\n };\n\n const step = computed(() => stepIndex() + 1);\n const isFirst = computed(() => stepIndex() === 0);\n const isLast = computed(() => stepIndex() >= scopeNames.length - 1);\n const isValid = computed(() => !status().hasErrors);\n const isDirty = computed(() => status().isDirty);\n const errors = computed(() => status().errors);\n\n return {\n step,\n stepIndex,\n scope,\n next,\n prev,\n goTo,\n isFirst,\n isLast,\n status,\n errors,\n isValid,\n isDirty,\n validate,\n getErrors,\n };\n}\n","import { DestroyRef, signal, Signal, inject } from \"@angular/core\";\nimport { useBitStore } from \"./provider\";\nimport {\n getDeepValue,\n deepEqual,\n BitPath,\n BitPathValue,\n} from \"../core\";\n\nexport function injectBitWatch<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): Signal<BitPathValue<TForm, P>> {\n const store = useBitStore<TForm>();\n const destroyRef = inject(DestroyRef);\n const valueSig = signal<BitPathValue<TForm, P>>(\n getDeepValue(store.getState().values, path as string) as BitPathValue<\n TForm,\n P\n >,\n { equal: deepEqual },\n );\n\n const unsub = store.watch(path, (v) => {\n valueSig.set(v as BitPathValue<TForm, P>);\n });\n\n destroyRef.onDestroy(unsub);\n\n return valueSig.asReadonly();\n}\n","/**\n * Angular Dependency Injection for File Upload\n *\n * Minimal upload API integrated with global field validation lifecycle.\n */\n\nimport { computed, inject } from \"@angular/core\";\nimport { BIT_STORE_TOKEN } from \"./provider\";\nimport { injectBitField } from \"./inject-bit-field\";\nimport { BitUploadFn, BitDeleteUploadFn } from \"../core\";\nimport type { InjectBitUploadResult } from \"./types\";\n\nexport function injectBitUpload(\n fieldPath: string,\n uploadFn: BitUploadFn,\n deleteFile?: BitDeleteUploadFn,\n): InjectBitUploadResult {\n const store = inject(BIT_STORE_TOKEN);\n const field = injectBitField(fieldPath);\n let uploadKey: string | null = null;\n\n const upload = async (file: File | null | undefined) => {\n if (!file) return;\n\n store.beginFieldValidation(fieldPath);\n await store.clearFieldAsyncError(fieldPath);\n\n try {\n const result = await uploadFn(file);\n\n field.setValue(result.url);\n uploadKey = result.key;\n await store.clearFieldAsyncError(fieldPath);\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Upload failed\";\n await store.setFieldAsyncError(fieldPath, message);\n } finally {\n store.endFieldValidation(fieldPath);\n }\n };\n\n const remove = async () => {\n if (uploadKey && deleteFile) {\n try {\n await deleteFile(uploadKey);\n } catch (error) {\n const message =\n error instanceof Error ? error.message : \"Delete failed\";\n await store.setFieldAsyncError(fieldPath, message);\n return;\n }\n }\n\n field.setValue(null);\n uploadKey = null;\n await store.clearFieldAsyncError(fieldPath);\n };\n\n return {\n value: computed(() => field.value()),\n setValue: field.setValue,\n error: computed(() => field.meta.error()),\n isValidating: computed(() => field.meta.isValidating() || false),\n upload,\n remove,\n };\n}\n","import { signal } from \"@angular/core\";\nimport { useBitStore } from \"./provider\";\nimport type { InjectBitPersistResult } from \"./types\";\n\nexport function injectBitPersist<\n T extends object = any,\n>(): InjectBitPersistResult {\n const store = useBitStore<T>();\n const isSaving = signal(false);\n const isRestoring = signal(false);\n const error = signal<Error | null>(null);\n\n const restore = async (): Promise<boolean> => {\n isRestoring.set(true);\n error.set(null);\n\n try {\n return await store.restorePersisted();\n } catch (err) {\n error.set(err instanceof Error ? err : new Error(String(err)));\n return false;\n } finally {\n isRestoring.set(false);\n }\n };\n\n const save = async (): Promise<void> => {\n isSaving.set(true);\n error.set(null);\n\n try {\n await store.forceSave();\n } catch (err) {\n error.set(err instanceof Error ? err : new Error(String(err)));\n } finally {\n isSaving.set(false);\n }\n };\n\n const clear = async (): Promise<void> => {\n error.set(null);\n\n try {\n await store.clearPersisted();\n } catch (err) {\n error.set(err instanceof Error ? err : new Error(String(err)));\n }\n };\n\n return {\n restore,\n save,\n clear,\n meta: {\n isSaving: isSaving.asReadonly(),\n isRestoring: isRestoring.asReadonly(),\n error: error.asReadonly(),\n },\n };\n}\n"],"mappings":"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","names":["inject","InjectionToken","BIT_STORE_TOKEN","provideBitStore","store","useBitStore","signal","computed","inject","DestroyRef","injectBitForm","store","useBitStore","destroyRef","inject","DestroyRef","stateSignal","signal","submitError","lastResponse","sub","state","nextState","isValid","computed","isSubmitting","isDirty","getValues","getErrors","getTouched","getDirtyValues","submit","onSuccess","event","onSubmit","handler","values","dirtyValues","result","err","isValidationErrorShape","extractServerErrors","reset","inject","DestroyRef","computed","signal","injectBitField","path","store","inject","BIT_STORE_TOKEN","stateSignal","signal","unsubscribe","nextState","DestroyRef","value","computed","rawError","touched","error","isDirty","isValidating","isHidden","isRequired","invalid","resolvedMask","displayValue","val","setValue","stringVal","setBlur","hasError","e","DestroyRef","signal","computed","inject","untracked","generateId","injectBitArray","path","store","inject","BIT_STORE_TOKEN","destroyRef","DestroyRef","valuesSig","signal","val","getDeepValue","idsSig","unsub","value","next","ids","untracked","computed","v","i","_","idx","index","a","b","f","t","it","items","computed","DestroyRef","inject","signal","injectBitHistory","store","useBitStore","destroyRef","inject","DestroyRef","meta","signal","sub","computed","signal","computed","DestroyRef","inject","errorsEqual","a","b","keysA","keysB","k","injectBitScope","scopeName","store","useBitStore","initialStatus","status","signal","unsubscribe","newStatus","current","inject","DestroyRef","validate","valid","errors","getErrors","isValid","computed","isDirty","signal","computed","DestroyRef","inject","errorsEqual","a","b","keysA","keysB","k","injectBitSteps","scopeNames","store","useBitStore","stepIndex","signal","scope","computed","getCurrentScope","status","updateStatus","scopeName","newStatus","current","unsubscribe","inject","DestroyRef","validate","valid","errors","getErrors","next","scopeFields","newIndex","pathsWithErrors","prev","goTo","targetStep","step","isFirst","isLast","isValid","isDirty","DestroyRef","signal","inject","injectBitWatch","path","store","useBitStore","destroyRef","inject","DestroyRef","valueSig","signal","getDeepValue","deepEqual","unsub","v","computed","inject","injectBitUpload","fieldPath","uploadFn","deleteFile","store","inject","BIT_STORE_TOKEN","field","injectBitField","uploadKey","upload","file","result","error","message","remove","computed","signal","injectBitPersist","store","useBitStore","isSaving","signal","isRestoring","error","err"]}
@@ -42,6 +42,15 @@ interface BitState<T> {
42
42
  isSubmitting: boolean;
43
43
  isDirty: boolean;
44
44
  }
45
+ interface BitFieldState<T extends object = any, TValue = unknown> {
46
+ value: TValue;
47
+ error: string | undefined;
48
+ touched: boolean;
49
+ isHidden: boolean;
50
+ isRequired: boolean;
51
+ isDirty: boolean;
52
+ isValidating: boolean;
53
+ }
45
54
  type ValidatorFn<T> = (values: T, options?: {
46
55
  scopeFields?: string[];
47
56
  }) => Promise<BitErrors<T>> | BitErrors<T>;
@@ -75,7 +84,7 @@ interface DevToolsOptions {
75
84
  url?: string;
76
85
  }
77
86
  type BitPluginHookSource = "beforeValidate" | "afterValidate" | "beforeSubmit" | "afterSubmit" | "onFieldChange" | "setup" | "teardown" | "submit";
78
- type BitFieldChangeOrigin = "setField" | "setValues" | "array";
87
+ type BitFieldChangeOrigin = "setField" | "rebase" | "replaceValues" | "hydrate" | "array";
79
88
  type BitArrayOperation = "push" | "prepend" | "insert" | "remove" | "move" | "swap";
80
89
  interface BitFieldChangeMeta {
81
90
  origin: BitFieldChangeOrigin;
@@ -230,11 +239,11 @@ type BitPathValue<T, P extends string> = P extends `${infer K}.${infer Rest}` ?
230
239
  type BitArrayPath<T> = BitPath<T> extends infer P ? P extends string ? BitPathValue<T, P> extends readonly any[] ? P : never : never : never;
231
240
  type BitArrayItem<A> = A extends readonly (infer U)[] ? U : A extends (infer U)[] ? U : never;
232
241
 
233
- type BitBusListener = (storeId: string, newState: any) => void;
242
+ type BitBusListener<T extends object = any> = (storeId: string, newState: BitState<T>) => void;
234
243
  interface BitFormGlobal {
235
- stores: Record<string, any>;
244
+ stores: Record<string, unknown>;
236
245
  listeners: Set<BitBusListener>;
237
- dispatch: (storeId: string, state: any) => void;
246
+ dispatch: (storeId: string, state: BitState<any>) => void;
238
247
  subscribe: (fn: BitBusListener) => () => void;
239
248
  }
240
249
 
@@ -243,4 +252,4 @@ declare global {
243
252
  }
244
253
  declare const bitBus: BitFormGlobal;
245
254
 
246
- export { type BitTransformFn as A, type BitConfig as B, type CurrencyMaskConfig as C, type DateMaskConfig as D, type BitValidationConfig as E, type DeepPartial as F, type ValidatorFn as G, bitBus as H, type DevToolsOptions as I, type BitPersistResolvedConfig as J, type PatternMaskOptions as P, type ScopeStatus as S, type ValidateScopeResult as V, type BitMask as a, type BitAfterSubmitEvent as b, type BitAfterValidateEvent as c, type BitArrayItem as d, type BitArrayPath as e, type BitBeforeSubmitEvent as f, type BitBeforeValidateEvent as g, type BitComputedFn as h, type BitErrors as i, type BitFieldChangeEvent as j, type BitFieldChangeMeta as k, type BitFieldConditional as l, type BitFieldDefinition as m, type BitFieldValidation as n, type BitHistoryConfig as o, type BitPath as p, type BitPathValue as q, type BitPersistConfig as r, type BitPersistMode as s, type BitPersistStorageAdapter as t, type BitPlugin as u, type BitPluginContext as v, type BitPluginErrorEvent as w, type BitPluginHooks as x, type BitState as y, type BitTouched as z };
255
+ export { type BitTouched as A, type BitConfig as B, type CurrencyMaskConfig as C, type DateMaskConfig as D, type BitTransformFn as E, type BitValidationConfig as F, type DeepPartial as G, type ValidatorFn as H, bitBus as I, type DevToolsOptions as J, type BitPersistResolvedConfig as K, type PatternMaskOptions as P, type ScopeStatus as S, type ValidateScopeResult as V, type BitMask as a, type BitAfterSubmitEvent as b, type BitAfterValidateEvent as c, type BitArrayItem as d, type BitArrayPath as e, type BitBeforeSubmitEvent as f, type BitBeforeValidateEvent as g, type BitComputedFn as h, type BitErrors as i, type BitFieldChangeEvent as j, type BitFieldChangeMeta as k, type BitFieldConditional as l, type BitFieldDefinition as m, type BitFieldState as n, type BitFieldValidation as o, type BitHistoryConfig as p, type BitPath as q, type BitPathValue as r, type BitPersistConfig as s, type BitPersistMode as t, type BitPersistStorageAdapter as u, type BitPlugin as v, type BitPluginContext as w, type BitPluginErrorEvent as x, type BitPluginHooks as y, type BitState as z };