@lehnihon/bit-form 2.2.0 → 2.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) 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 +37 -44
  4. package/dist/angular/index.d.ts +37 -44
  5. package/dist/angular/index.js +1 -1
  6. package/dist/angular/index.js.map +1 -1
  7. package/dist/bus-B1my-s_o.d.ts +16 -0
  8. package/dist/bus-BI29cKpD.d.cts +16 -0
  9. package/dist/chunk-2UVV7SU4.js +2 -0
  10. package/dist/chunk-2UVV7SU4.js.map +1 -0
  11. package/dist/chunk-676WXU4S.cjs +2 -0
  12. package/dist/chunk-676WXU4S.cjs.map +1 -0
  13. package/dist/chunk-7MBRAKBL.js +2 -0
  14. package/dist/chunk-7MBRAKBL.js.map +1 -0
  15. package/dist/chunk-AD7T42HJ.js +1 -0
  16. package/dist/chunk-AD7T42HJ.js.map +1 -0
  17. package/dist/chunk-C4BYXZGB.cjs +1 -0
  18. package/dist/chunk-C4BYXZGB.cjs.map +1 -0
  19. package/dist/chunk-ER2DNS7T.cjs +2 -0
  20. package/dist/chunk-ER2DNS7T.cjs.map +1 -0
  21. package/dist/chunk-NWPA4F3B.cjs +2 -0
  22. package/dist/chunk-NWPA4F3B.cjs.map +1 -0
  23. package/dist/chunk-O5RRLZR7.js +2 -0
  24. package/dist/chunk-O5RRLZR7.js.map +1 -0
  25. package/dist/chunk-TRPMTJ35.js +2 -0
  26. package/dist/chunk-TRPMTJ35.js.map +1 -0
  27. package/dist/chunk-VSWCUQAF.cjs +2 -0
  28. package/dist/chunk-VSWCUQAF.cjs.map +1 -0
  29. package/dist/cli/index.cjs +3 -3
  30. package/dist/core/light.cjs +2 -0
  31. package/dist/core/light.cjs.map +1 -0
  32. package/dist/core/light.d.cts +29 -0
  33. package/dist/core/light.d.ts +29 -0
  34. package/dist/core/light.js +2 -0
  35. package/dist/core/light.js.map +1 -0
  36. package/dist/devtools/bridge.cjs +1 -1
  37. package/dist/devtools/bridge.cjs.map +1 -1
  38. package/dist/devtools/bridge.js +1 -1
  39. package/dist/devtools/bridge.js.map +1 -1
  40. package/dist/devtools/index.cjs +132 -1
  41. package/dist/devtools/index.cjs.map +1 -1
  42. package/dist/devtools/index.js +132 -1
  43. package/dist/devtools/index.js.map +1 -1
  44. package/dist/index.cjs +1 -1
  45. package/dist/index.cjs.map +1 -1
  46. package/dist/index.d.cts +19 -52
  47. package/dist/index.d.ts +19 -52
  48. package/dist/index.js +1 -1
  49. package/dist/public-types-Bl94ECPb.d.ts +91 -0
  50. package/dist/public-types-CLIDR8aC.d.cts +91 -0
  51. package/dist/react/index.cjs +1 -1
  52. package/dist/react/index.cjs.map +1 -1
  53. package/dist/react/index.d.cts +6 -5
  54. package/dist/react/index.d.ts +6 -5
  55. package/dist/react/index.js +1 -1
  56. package/dist/react/index.js.map +1 -1
  57. package/dist/react-native/index.cjs +1 -1
  58. package/dist/react-native/index.cjs.map +1 -1
  59. package/dist/react-native/index.d.cts +5 -4
  60. package/dist/react-native/index.d.ts +5 -4
  61. package/dist/react-native/index.js +1 -1
  62. package/dist/react-native/index.js.map +1 -1
  63. package/dist/resolvers/joi.cjs +1 -1
  64. package/dist/resolvers/joi.cjs.map +1 -1
  65. package/dist/resolvers/joi.d.cts +4 -4
  66. package/dist/resolvers/joi.d.ts +4 -4
  67. package/dist/resolvers/joi.js +1 -1
  68. package/dist/resolvers/joi.js.map +1 -1
  69. package/dist/resolvers/types.cjs +1 -0
  70. package/dist/resolvers/types.cjs.map +1 -0
  71. package/dist/resolvers/types.d.cts +16 -0
  72. package/dist/resolvers/types.d.ts +16 -0
  73. package/dist/resolvers/types.js +1 -0
  74. package/dist/resolvers/types.js.map +1 -0
  75. package/dist/resolvers/yup.cjs +1 -1
  76. package/dist/resolvers/yup.cjs.map +1 -1
  77. package/dist/resolvers/yup.d.cts +4 -4
  78. package/dist/resolvers/yup.d.ts +4 -4
  79. package/dist/resolvers/yup.js +1 -1
  80. package/dist/resolvers/yup.js.map +1 -1
  81. package/dist/resolvers/zod.cjs +1 -1
  82. package/dist/resolvers/zod.cjs.map +1 -1
  83. package/dist/resolvers/zod.d.cts +4 -4
  84. package/dist/resolvers/zod.d.ts +4 -4
  85. package/dist/resolvers/zod.js +1 -1
  86. package/dist/resolvers/zod.js.map +1 -1
  87. package/dist/{bus-70e4jnBj.d.cts → types-DqeN9Kq_.d.cts} +16 -17
  88. package/dist/{bus-70e4jnBj.d.ts → types-DqeN9Kq_.d.ts} +16 -17
  89. package/dist/{use-bit-persist-COdNw_fv.d.ts → use-bit-persist-BgFBg8lQ.d.cts} +43 -53
  90. package/dist/{use-bit-persist-JshPvwwy.d.cts → use-bit-persist-JtinX6Vy.d.ts} +43 -53
  91. package/dist/vue/index.cjs +1 -1
  92. package/dist/vue/index.cjs.map +1 -1
  93. package/dist/vue/index.d.cts +54 -61
  94. package/dist/vue/index.d.ts +54 -61
  95. package/dist/vue/index.js +1 -1
  96. package/dist/vue/index.js.map +1 -1
  97. package/package.json +7 -1
  98. package/dist/chunk-25Q2XJBV.cjs +0 -133
  99. package/dist/chunk-25Q2XJBV.cjs.map +0 -1
  100. package/dist/chunk-2HAQ3QEQ.js +0 -133
  101. package/dist/chunk-2HAQ3QEQ.js.map +0 -1
  102. package/dist/chunk-HTB6QIUQ.js +0 -2
  103. package/dist/chunk-HTB6QIUQ.js.map +0 -1
  104. package/dist/chunk-W22D7QVJ.cjs +0 -2
  105. package/dist/chunk-W22D7QVJ.cjs.map +0 -1
  106. package/dist/public-types-BVZ16kgZ.d.ts +0 -74
  107. 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 _chunkNWPA4F3Bcjs = require('../chunk-NWPA4F3B.cjs');require('../chunk-C4BYXZGB.cjs');var _chunk676WXU4Scjs = require('../chunk-676WXU4S.cjs');var _core = require('@angular/core');var S=new (0, _core.InjectionToken)("BIT_STORE");function Q(t){return{provide:S,useValue:_chunk676WXU4Scjs.Y.call(void 0, t)}}function y(){let t=_core.inject.call(void 0, S,{optional:!0});if(!t)throw new Error('BitForm: N\xE3o foi poss\xEDvel encontrar a BitStore. Certifique-se de que voc\xEA adicionou "provideBitStore(store)" nos providers do seu componente.');return t}function Z(){let t=y(),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),n=_core.signal.call(void 0, null),i=t.subscribeSelector(u=>({isValid:u.isValid,isSubmitting:u.isSubmitting,isDirty:u.isDirty}),u=>{r.set(u)});e.onDestroy(()=>i());let d=_core.computed.call(void 0, ()=>r().isValid),s=_core.computed.call(void 0, ()=>r().isSubmitting),c=_core.computed.call(void 0, ()=>r().isDirty),l=_chunkNWPA4F3Bcjs.a.call(void 0, t,{clearSubmissionState:()=>{o.set(null),n.set(null)},setSubmissionResult:u=>{n.set(u)},setSubmissionError:u=>{o.set(u)}},{stopPropagation:!0});return{meta:{isValid:d,isDirty:c,isSubmitting:s,submitError:o.asReadonly(),lastResponse:n.asReadonly()},getValues:l.getValues,getErrors:l.getErrors,getTouched:l.getTouched,getDirtyValues:l.getDirtyValues,submit:l.submit,onSubmit:l.onSubmit,reset:l.reset,replaceValues:t.replaceValues.bind(t),hydrate:t.hydrate.bind(t),rebase:t.rebase.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)}}function w(t){let e=_core.inject.call(void 0, S),r=_core.signal.call(void 0, e.getFieldState(t)),o=_chunkNWPA4F3Bcjs.b.call(void 0, e,t,m=>{r.set(m)});_core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>{o(),e.unregisterField&&e.unregisterField(t)});let n=_core.computed.call(void 0, ()=>r().value),i=_core.computed.call(void 0, ()=>r().error),d=_core.computed.call(void 0, ()=>r().touched),s=_core.computed.call(void 0, ()=>d()?i():void 0),c=_core.computed.call(void 0, ()=>r().isDirty),l=_core.computed.call(void 0, ()=>r().isValidating),a=_core.computed.call(void 0, ()=>r().isHidden),u=_core.computed.call(void 0, ()=>r().isRequired),T=_core.computed.call(void 0, ()=>d()&&!!i()),E=e.resolveMask(t),h=_chunkNWPA4F3Bcjs.c.call(void 0, e,t,E),V=_core.computed.call(void 0, ()=>h.displayValue(n())),P=m=>{h.setValue(m)},v=()=>h.setBlur(),x=_core.computed.call(void 0, ()=>!!i());return{value:n,displayValue:V,setValue:P,setBlur:v,update:m=>P(_nullishCoalesce(_optionalChain([m, 'optionalAccess', _2 => _2.target, 'optionalAccess', _3 => _3.value]), () => (m))),meta:{error:s,touched:d,invalid:T,isDirty:c,isValidating:l,isHidden:a,isRequired:u,hasError:x}}}var b=()=>Math.random().toString(36).substring(2,9);function st(t){let e=_core.inject.call(void 0, S),r=_core.inject.call(void 0, _core.DestroyRef),n=_core.signal.call(void 0, (()=>{let s=_chunk676WXU4Scjs.f.call(void 0, e.getState().values,t);return Array.isArray(s)?s:[]})()),i=_core.signal.call(void 0, n().map(b)),d=e.subscribePath(t,s=>{let c=Array.isArray(s)?s:[],l=_core.untracked.call(void 0, i);n.set(c),c.length!==l.length&&(c.length>l.length?i.set([...l,...Array.from({length:c.length-l.length},b)]):i.set(l.slice(0,c.length)))});return r.onDestroy(()=>{d(),e.unregisterPrefix&&e.unregisterPrefix(`${t}.`)}),{fields:_core.computed.call(void 0, ()=>n().map((s,c)=>({key:i()[c]||`temp-${c}`,value:s,index:c}))),length:_core.computed.call(void 0, ()=>n().length),append:s=>{i.update(c=>[...c,b()]),e.pushItem(t,s)},prepend:s=>{i.update(c=>[b(),...c]),e.prependItem(t,s)},remove:s=>{i.update(c=>c.filter((l,a)=>a!==s)),e.removeItem(t,s)},insert:(s,c)=>{i.update(l=>{let a=[...l];return a.splice(s,0,b()),a}),e.insertItem(t,s,c)},swap:(s,c)=>{i.update(l=>{let a=[...l];return[a[s],a[c]]=[a[c],a[s]],a}),e.swapItems(t,s,c)},move:(s,c)=>{i.update(l=>{let a=[...l],[u]=a.splice(s,1);return a.splice(c,0,u),a}),e.moveItem(t,s,c)},replace:s=>{i.set(s.map(()=>b())),e.setField(t,s)},clear:()=>{i.set([]),e.setField(t,[])}}}function at(){let t=y(),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 mt(t,e){let r=Object.keys(t),o=Object.keys(e);return r.length!==o.length?!1:r.every(n=>t[n]===e[n])}function dt(t){let e=y(),r=e.getStepStatus(t),o=_core.signal.call(void 0, r),n=e.subscribe(()=>{let a=e.getStepStatus(t),u=o();(a.hasErrors!==u.hasErrors||a.isDirty!==u.isDirty||!mt(a.errors,u.errors))&&o.set(a)});try{_core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>n())}catch (e2){}let i=async()=>{let a=await e.validate({scope:t}),u=e.getStepErrors(t);return{valid:a,errors:u}},d=()=>e.getStepErrors(t),s=_core.computed.call(void 0, ()=>!o().hasErrors),c=_core.computed.call(void 0, ()=>o().isDirty),l=_core.computed.call(void 0, ()=>o().errors);return{scopeName:t,status:o,errors:l,validate:i,getErrors:d,isValid:s,isDirty:c,unsubscribe:n}}function gt(t,e){let r=Object.keys(t),o=Object.keys(e);return r.length!==o.length?!1:r.every(n=>t[n]===e[n])}function ft(t){let e=y(),r=_core.signal.call(void 0, 0),o=_core.computed.call(void 0, ()=>_nullishCoalesce(t[r()], () => (""))),n=()=>_nullishCoalesce(t[r()], () => ("")),i=_core.signal.call(void 0, e.getStepStatus(n())),d=()=>{let p=n(),m=e.getStepStatus(p),f=i();(m.hasErrors!==f.hasErrors||m.isDirty!==f.isDirty||!gt(m.errors,f.errors))&&i.set(m)},s=e.subscribe(d);try{_core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>s())}catch (e3){}let c=async()=>{let p=n(),m=await e.validate({scope:p}),f=e.getStepErrors(p);return{valid:m,errors:f}},l=()=>e.getStepErrors(n()),a=async()=>{let p=n(),m=e.getScopeFields(p);if(e.hasValidationsInProgress(m))return!1;let f=await e.validate({scope:p});if(f){let F=Math.min(r()+1,t.length-1);r.set(F),i.set(e.getStepStatus(_nullishCoalesce(t[F], () => (""))))}else{let F=e.getStepErrors(p),H=Object.keys(F);H.length>0&&e.markFieldsTouched(H)}return f},u=()=>{let p=Math.max(r()-1,0);r.set(p),i.set(e.getStepStatus(_nullishCoalesce(t[p], () => (""))))},T=p=>{let m=Math.max(0,Math.min(p-1,t.length-1));r.set(m),i.set(e.getStepStatus(_nullishCoalesce(t[m], () => (""))))},E=_core.computed.call(void 0, ()=>r()+1),h=_core.computed.call(void 0, ()=>r()===0),V=_core.computed.call(void 0, ()=>r()>=t.length-1),P=_core.computed.call(void 0, ()=>!i().hasErrors),v=_core.computed.call(void 0, ()=>i().isDirty),x=_core.computed.call(void 0, ()=>i().errors);return{step:E,stepIndex:r,scope:o,next:a,prev:u,goTo:T,isFirst:h,isLast:V,status:i,errors:x,isValid:P,isDirty:v,validate:c,getErrors:l}}function ht(t){let e=y(),r=_core.inject.call(void 0, _core.DestroyRef),o=_core.signal.call(void 0, _chunk676WXU4Scjs.f.call(void 0, e.getState().values,t),{equal:_chunk676WXU4Scjs.e}),n=e.watch(t,i=>{o.set(i)});return r.onDestroy(n),o.asReadonly()}function Rt(t,e,r){let o=_core.inject.call(void 0, S),n=w(t),i=null,d=_core.signal.call(void 0, !1),s=async l=>{if(l){d.set(!0),o.setError(t,void 0);try{let a=await e(l);n.setValue(a.url),i=a.key,o.setError(t,void 0)}catch(a){let u=a instanceof Error?a.message:"Upload failed";o.setError(t,u)}finally{d.set(!1)}}},c=async()=>{if(i&&r)try{await r(i)}catch(l){let a=l instanceof Error?l.message:"Delete failed";o.setError(t,a);return}n.setValue(null),i=null,o.setError(t,void 0)};return{value:_core.computed.call(void 0, ()=>n.value()),setValue:n.setValue,error:_core.computed.call(void 0, ()=>n.meta.error()),isValidating:_core.computed.call(void 0, ()=>!!n.meta.isValidating()||d()),upload:s,remove:c}}function jt(){let t=y(),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 = st; exports.injectBitField = w; exports.injectBitForm = Z; exports.injectBitHistory = at; exports.injectBitPersist = jt; exports.injectBitScope = dt; exports.injectBitSteps = ft; exports.injectBitUpload = Rt; exports.injectBitWatch = ht; exports.provideBitStore = Q; exports.useBitStore = y;
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","resolveBitStoreForHooks","useBitStore","inject","injectBitForm","destroyRef","stateSignal","signal","submitError","lastResponse","sub","state","nextState","isValid","computed","isSubmitting","isDirty","controller","createFormController","result","error","injectBitField","path","unsubscribe","subscribeFieldState","value","rawError","touched","isValidating","isHidden","isRequired","invalid","resolvedMask","fieldController","createMaskedFieldController","displayValue","setValue","val","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\";\nimport type { BitStoreHooksApi } from \"../core/store/public-types\";\nimport { resolveBitStoreForHooks } from \"../core/store/create-store\";\n\nexport const BIT_STORE_TOKEN = new InjectionToken<BitStoreHooksApi<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: resolveBitStoreForHooks(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 BitStoreHooksApi<T>;\n}\n","import { signal, computed, inject, DestroyRef } from \"@angular/core\";\nimport { useBitStore } from \"./provider\";\nimport { createFormController } from \"../core/form-controller\";\nimport type { InjectBitFormResult } from \"./types\";\n\nexport function injectBitForm<T extends object>(): InjectBitFormResult<T> {\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 controller = createFormController(\n store,\n {\n clearSubmissionState: () => {\n submitError.set(null);\n lastResponse.set(null);\n },\n setSubmissionResult: (result) => {\n lastResponse.set(result);\n },\n setSubmissionError: (error) => {\n submitError.set(error);\n },\n },\n { stopPropagation: true },\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: controller.getValues,\n getErrors: controller.getErrors,\n getTouched: controller.getTouched,\n getDirtyValues: controller.getDirtyValues,\n // Main actions (frequent use - flat)\n submit: controller.submit,\n onSubmit: controller.onSubmit,\n reset: controller.reset,\n replaceValues: store.replaceValues.bind(store),\n hydrate: store.hydrate.bind(store),\n rebase: store.rebase.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 };\n}\n","import { inject, DestroyRef, computed, signal } from \"@angular/core\";\nimport { BIT_STORE_TOKEN } from \"./provider\";\nimport { BitPath, BitPathValue } from \"../core\";\nimport {\n createMaskedFieldController,\n subscribeFieldState,\n} from \"../core/field-controller\";\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 = subscribeFieldState(store, path, (nextState) => {\n stateSignal.set(nextState);\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 const fieldController = createMaskedFieldController(\n store,\n path,\n resolvedMask,\n );\n\n const displayValue = computed(() => fieldController.displayValue(value()));\n\n const setValue = (val: any) => {\n fieldController.setValue(val);\n };\n\n const setBlur = () => fieldController.setBlur();\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,46 +1,12 @@
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 { f as BitStoreApi, g as BitStoreHooksApi, c as BitPersistMetadata, h as BitValidationOptions } from '../public-types-CLIDR8aC.cjs';
4
+ import '../bus-BI29cKpD.cjs';
5
+ import { f as BitPath, g as BitPathValue, n as ValidateScopeResult, i as BitErrors, J as BitTouched, h as DeepPartial, k as BitArrayPath, l as BitArrayItem, S as ScopeStatus } from '../types-DqeN9Kq_.cjs';
5
6
  import { a as BitUploadFn, B as BitDeleteUploadFn } from '../types-C2mpfhp1.cjs';
6
7
 
7
- declare function provideBitStore<T extends object>(store: BitFrameworkStore<T>): Provider;
8
- declare function useBitStore<T extends object>(): BitFrameworkStore<T>;
9
-
10
- declare function injectBitForm<T extends object>(): {
11
- meta: {
12
- isValid: _angular_core.Signal<boolean>;
13
- isDirty: _angular_core.Signal<boolean>;
14
- isSubmitting: _angular_core.Signal<boolean>;
15
- submitError: _angular_core.Signal<Error | null>;
16
- lastResponse: _angular_core.Signal<unknown>;
17
- };
18
- getValues: () => T;
19
- getErrors: () => BitErrors<T>;
20
- getTouched: () => BitTouched<T>;
21
- getDirtyValues: () => Partial<T>;
22
- submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>) => (event?: Event) => Promise<void>;
23
- onSubmit: (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => (event?: Event) => Promise<void>;
24
- reset: () => void;
25
- setValues: (values: T) => void;
26
- setError: (path: string, message: string | undefined) => void;
27
- setErrors: (errors: BitErrors<T>) => void;
28
- setServerErrors: (serverErrors: Record<string, string[] | string>) => void;
29
- setField: <P extends BitPath<T, "">>(path: P, value: BitPathValue<T, P>) => void;
30
- blurField: <P extends BitPath<T, "">>(path: P) => void;
31
- validate: (options?: {
32
- scope?: string;
33
- scopeFields?: string[];
34
- }) => Promise<boolean>;
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;
42
- };
43
- };
8
+ declare function provideBitStore<T extends object>(store: BitStoreApi<T>): Provider;
9
+ declare function useBitStore<T extends object>(): BitStoreHooksApi<T>;
44
10
 
45
11
  /**
46
12
  * Metadata describing the current state of a form field (Angular Signal).
@@ -106,8 +72,8 @@ interface InjectBitUploadResult {
106
72
  interface InjectBitHistoryResult {
107
73
  canUndo: ReturnType<typeof _angular_core.computed<boolean>>;
108
74
  canRedo: ReturnType<typeof _angular_core.computed<boolean>>;
109
- historyIndex: ReturnType<typeof _angular_core.computed<number>>;
110
- historySize: ReturnType<typeof _angular_core.computed<number>>;
75
+ historyIndex: ReturnType<typeof _angular_core.computed<BitHistoryMetadata["historyIndex"]>>;
76
+ historySize: ReturnType<typeof _angular_core.computed<BitHistoryMetadata["historySize"]>>;
111
77
  undo: () => void;
112
78
  redo: () => void;
113
79
  }
@@ -116,11 +82,38 @@ interface InjectBitPersistResult {
116
82
  save: () => Promise<void>;
117
83
  clear: () => Promise<void>;
118
84
  meta: {
119
- isSaving: Signal<boolean>;
120
- isRestoring: Signal<boolean>;
121
- error: Signal<Error | null>;
85
+ isSaving: Signal<BitPersistMetadata["isSaving"]>;
86
+ isRestoring: Signal<BitPersistMetadata["isRestoring"]>;
87
+ error: Signal<BitPersistMetadata["error"]>;
122
88
  };
123
89
  }
90
+ interface InjectBitFormResult<T extends object = any> {
91
+ meta: {
92
+ isValid: ReturnType<typeof _angular_core.computed<boolean>>;
93
+ isDirty: ReturnType<typeof _angular_core.computed<boolean>>;
94
+ isSubmitting: ReturnType<typeof _angular_core.computed<boolean>>;
95
+ submitError: Signal<Error | null>;
96
+ lastResponse: Signal<unknown>;
97
+ };
98
+ getValues: () => T;
99
+ getErrors: () => BitErrors<T>;
100
+ getTouched: () => BitTouched<T>;
101
+ getDirtyValues: () => Partial<T>;
102
+ submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>) => (event?: Event) => Promise<void>;
103
+ onSubmit: (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => (event?: Event) => Promise<void>;
104
+ reset: () => void;
105
+ replaceValues: (values: T) => void;
106
+ hydrate: (values: DeepPartial<T>) => void;
107
+ rebase: (values: T) => void;
108
+ setError: (path: string, message: string | undefined) => void;
109
+ setErrors: (errors: BitErrors<T>) => void;
110
+ setServerErrors: (serverErrors: Record<string, string[] | string>) => void;
111
+ setField: <P extends BitPath<T>>(path: P, value: BitPathValue<T, P>) => void;
112
+ blurField: <P extends BitPath<T>>(path: P) => void;
113
+ validate: (options?: BitValidationOptions) => Promise<boolean>;
114
+ }
115
+
116
+ declare function injectBitForm<T extends object>(): InjectBitFormResult<T>;
124
117
 
125
118
  declare function injectBitField<TValue = any, TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): InjectBitFieldResult<TForm, P>;
126
119
 
@@ -1,46 +1,12 @@
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 { f as BitStoreApi, g as BitStoreHooksApi, c as BitPersistMetadata, h as BitValidationOptions } from '../public-types-Bl94ECPb.js';
4
+ import '../bus-B1my-s_o.js';
5
+ import { f as BitPath, g as BitPathValue, n as ValidateScopeResult, i as BitErrors, J as BitTouched, h as DeepPartial, k as BitArrayPath, l as BitArrayItem, S as ScopeStatus } from '../types-DqeN9Kq_.js';
5
6
  import { a as BitUploadFn, B as BitDeleteUploadFn } from '../types-C2mpfhp1.js';
6
7
 
7
- declare function provideBitStore<T extends object>(store: BitFrameworkStore<T>): Provider;
8
- declare function useBitStore<T extends object>(): BitFrameworkStore<T>;
9
-
10
- declare function injectBitForm<T extends object>(): {
11
- meta: {
12
- isValid: _angular_core.Signal<boolean>;
13
- isDirty: _angular_core.Signal<boolean>;
14
- isSubmitting: _angular_core.Signal<boolean>;
15
- submitError: _angular_core.Signal<Error | null>;
16
- lastResponse: _angular_core.Signal<unknown>;
17
- };
18
- getValues: () => T;
19
- getErrors: () => BitErrors<T>;
20
- getTouched: () => BitTouched<T>;
21
- getDirtyValues: () => Partial<T>;
22
- submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>) => (event?: Event) => Promise<void>;
23
- onSubmit: (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => (event?: Event) => Promise<void>;
24
- reset: () => void;
25
- setValues: (values: T) => void;
26
- setError: (path: string, message: string | undefined) => void;
27
- setErrors: (errors: BitErrors<T>) => void;
28
- setServerErrors: (serverErrors: Record<string, string[] | string>) => void;
29
- setField: <P extends BitPath<T, "">>(path: P, value: BitPathValue<T, P>) => void;
30
- blurField: <P extends BitPath<T, "">>(path: P) => void;
31
- validate: (options?: {
32
- scope?: string;
33
- scopeFields?: string[];
34
- }) => Promise<boolean>;
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;
42
- };
43
- };
8
+ declare function provideBitStore<T extends object>(store: BitStoreApi<T>): Provider;
9
+ declare function useBitStore<T extends object>(): BitStoreHooksApi<T>;
44
10
 
45
11
  /**
46
12
  * Metadata describing the current state of a form field (Angular Signal).
@@ -106,8 +72,8 @@ interface InjectBitUploadResult {
106
72
  interface InjectBitHistoryResult {
107
73
  canUndo: ReturnType<typeof _angular_core.computed<boolean>>;
108
74
  canRedo: ReturnType<typeof _angular_core.computed<boolean>>;
109
- historyIndex: ReturnType<typeof _angular_core.computed<number>>;
110
- historySize: ReturnType<typeof _angular_core.computed<number>>;
75
+ historyIndex: ReturnType<typeof _angular_core.computed<BitHistoryMetadata["historyIndex"]>>;
76
+ historySize: ReturnType<typeof _angular_core.computed<BitHistoryMetadata["historySize"]>>;
111
77
  undo: () => void;
112
78
  redo: () => void;
113
79
  }
@@ -116,11 +82,38 @@ interface InjectBitPersistResult {
116
82
  save: () => Promise<void>;
117
83
  clear: () => Promise<void>;
118
84
  meta: {
119
- isSaving: Signal<boolean>;
120
- isRestoring: Signal<boolean>;
121
- error: Signal<Error | null>;
85
+ isSaving: Signal<BitPersistMetadata["isSaving"]>;
86
+ isRestoring: Signal<BitPersistMetadata["isRestoring"]>;
87
+ error: Signal<BitPersistMetadata["error"]>;
122
88
  };
123
89
  }
90
+ interface InjectBitFormResult<T extends object = any> {
91
+ meta: {
92
+ isValid: ReturnType<typeof _angular_core.computed<boolean>>;
93
+ isDirty: ReturnType<typeof _angular_core.computed<boolean>>;
94
+ isSubmitting: ReturnType<typeof _angular_core.computed<boolean>>;
95
+ submitError: Signal<Error | null>;
96
+ lastResponse: Signal<unknown>;
97
+ };
98
+ getValues: () => T;
99
+ getErrors: () => BitErrors<T>;
100
+ getTouched: () => BitTouched<T>;
101
+ getDirtyValues: () => Partial<T>;
102
+ submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>) => (event?: Event) => Promise<void>;
103
+ onSubmit: (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => (event?: Event) => Promise<void>;
104
+ reset: () => void;
105
+ replaceValues: (values: T) => void;
106
+ hydrate: (values: DeepPartial<T>) => void;
107
+ rebase: (values: T) => void;
108
+ setError: (path: string, message: string | undefined) => void;
109
+ setErrors: (errors: BitErrors<T>) => void;
110
+ setServerErrors: (serverErrors: Record<string, string[] | string>) => void;
111
+ setField: <P extends BitPath<T>>(path: P, value: BitPathValue<T, P>) => void;
112
+ blurField: <P extends BitPath<T>>(path: P) => void;
113
+ validate: (options?: BitValidationOptions) => Promise<boolean>;
114
+ }
115
+
116
+ declare function injectBitForm<T extends object>(): InjectBitFormResult<T>;
124
117
 
125
118
  declare function injectBitField<TValue = any, TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): InjectBitFieldResult<TForm, P>;
126
119
 
@@ -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{a as _,b as q,c as C}from"../chunk-O5RRLZR7.js";import"../chunk-AD7T42HJ.js";import{Y as M,e as U,f as R}from"../chunk-2UVV7SU4.js";import{inject as G,InjectionToken as J}from"@angular/core";var S=new J("BIT_STORE");function Q(t){return{provide:S,useValue:M(t)}}function y(){let t=G(S,{optional:!0});if(!t)throw new Error('BitForm: N\xE3o foi poss\xEDvel encontrar a BitStore. Certifique-se de que voc\xEA adicionou "provideBitStore(store)" nos providers do seu componente.');return t}import{signal as I,computed as D,inject as X,DestroyRef as Y}from"@angular/core";function Z(){let t=y(),e=X(Y),r=I({isValid:t.getState().isValid,isSubmitting:t.getState().isSubmitting,isDirty:t.getState().isDirty}),o=I(null),n=I(null),i=t.subscribeSelector(u=>({isValid:u.isValid,isSubmitting:u.isSubmitting,isDirty:u.isDirty}),u=>{r.set(u)});e.onDestroy(()=>i());let d=D(()=>r().isValid),s=D(()=>r().isSubmitting),c=D(()=>r().isDirty),l=_(t,{clearSubmissionState:()=>{o.set(null),n.set(null)},setSubmissionResult:u=>{n.set(u)},setSubmissionError:u=>{o.set(u)}},{stopPropagation:!0});return{meta:{isValid:d,isDirty:c,isSubmitting:s,submitError:o.asReadonly(),lastResponse:n.asReadonly()},getValues:l.getValues,getErrors:l.getErrors,getTouched:l.getTouched,getDirtyValues:l.getDirtyValues,submit:l.submit,onSubmit:l.onSubmit,reset:l.reset,replaceValues:t.replaceValues.bind(t),hydrate:t.hydrate.bind(t),rebase:t.rebase.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)}}import{inject as K,DestroyRef as N,computed as g,signal as tt}from"@angular/core";function w(t){let e=K(S),r=tt(e.getFieldState(t)),o=q(e,t,m=>{r.set(m)});K(N).onDestroy(()=>{o(),e.unregisterField&&e.unregisterField(t)});let n=g(()=>r().value),i=g(()=>r().error),d=g(()=>r().touched),s=g(()=>d()?i():void 0),c=g(()=>r().isDirty),l=g(()=>r().isValidating),a=g(()=>r().isHidden),u=g(()=>r().isRequired),T=g(()=>d()&&!!i()),E=e.resolveMask(t),h=C(e,t,E),V=g(()=>h.displayValue(n())),P=m=>{h.setValue(m)},v=()=>h.setBlur(),x=g(()=>!!i());return{value:n,displayValue:V,setValue:P,setBlur:v,update:m=>P(m?.target?.value??m),meta:{error:s,touched:d,invalid:T,isDirty:c,isValidating:l,isHidden:a,isRequired:u,hasError:x}}}import{DestroyRef as et,signal as W,computed as z,inject as $,untracked as rt}from"@angular/core";var b=()=>Math.random().toString(36).substring(2,9);function st(t){let e=$(S),r=$(et),n=W((()=>{let s=R(e.getState().values,t);return Array.isArray(s)?s:[]})()),i=W(n().map(b)),d=e.subscribePath(t,s=>{let c=Array.isArray(s)?s:[],l=rt(i);n.set(c),c.length!==l.length&&(c.length>l.length?i.set([...l,...Array.from({length:c.length-l.length},b)]):i.set(l.slice(0,c.length)))});return r.onDestroy(()=>{d(),e.unregisterPrefix&&e.unregisterPrefix(`${t}.`)}),{fields:z(()=>n().map((s,c)=>({key:i()[c]||`temp-${c}`,value:s,index:c}))),length:z(()=>n().length),append:s=>{i.update(c=>[...c,b()]),e.pushItem(t,s)},prepend:s=>{i.update(c=>[b(),...c]),e.prependItem(t,s)},remove:s=>{i.update(c=>c.filter((l,a)=>a!==s)),e.removeItem(t,s)},insert:(s,c)=>{i.update(l=>{let a=[...l];return a.splice(s,0,b()),a}),e.insertItem(t,s,c)},swap:(s,c)=>{i.update(l=>{let a=[...l];return[a[s],a[c]]=[a[c],a[s]],a}),e.swapItems(t,s,c)},move:(s,c)=>{i.update(l=>{let a=[...l],[u]=a.splice(s,1);return a.splice(c,0,u),a}),e.moveItem(t,s,c)},replace:s=>{i.set(s.map(()=>b())),e.setField(t,s)},clear:()=>{i.set([]),e.setField(t,[])}}}import{computed as j,DestroyRef as ot,inject as it,signal as nt}from"@angular/core";function at(){let t=y(),e=it(ot),r=nt(t.getHistoryMetadata()),o=t.subscribe(()=>{r.set(t.getHistoryMetadata())});return e.onDestroy(()=>o()),{canUndo:j(()=>r().canUndo),canRedo:j(()=>r().canRedo),historyIndex:j(()=>r().historyIndex),historySize:j(()=>r().historySize),undo:()=>t.undo(),redo:()=>t.redo()}}import{signal as ct,computed as A,DestroyRef as lt,inject as ut}from"@angular/core";function mt(t,e){let r=Object.keys(t),o=Object.keys(e);return r.length!==o.length?!1:r.every(n=>t[n]===e[n])}function dt(t){let e=y(),r=e.getStepStatus(t),o=ct(r),n=e.subscribe(()=>{let a=e.getStepStatus(t),u=o();(a.hasErrors!==u.hasErrors||a.isDirty!==u.isDirty||!mt(a.errors,u.errors))&&o.set(a)});try{ut(lt).onDestroy(()=>n())}catch{}let i=async()=>{let a=await e.validate({scope:t}),u=e.getStepErrors(t);return{valid:a,errors:u}},d=()=>e.getStepErrors(t),s=A(()=>!o().hasErrors),c=A(()=>o().isDirty),l=A(()=>o().errors);return{scopeName:t,status:o,errors:l,validate:i,getErrors:d,isValid:s,isDirty:c,unsubscribe:n}}import{signal as L,computed as B,DestroyRef as pt,inject as yt}from"@angular/core";function gt(t,e){let r=Object.keys(t),o=Object.keys(e);return r.length!==o.length?!1:r.every(n=>t[n]===e[n])}function ft(t){let e=y(),r=L(0),o=B(()=>t[r()]??""),n=()=>t[r()]??"",i=L(e.getStepStatus(n())),d=()=>{let p=n(),m=e.getStepStatus(p),f=i();(m.hasErrors!==f.hasErrors||m.isDirty!==f.isDirty||!gt(m.errors,f.errors))&&i.set(m)},s=e.subscribe(d);try{yt(pt).onDestroy(()=>s())}catch{}let c=async()=>{let p=n(),m=await e.validate({scope:p}),f=e.getStepErrors(p);return{valid:m,errors:f}},l=()=>e.getStepErrors(n()),a=async()=>{let p=n(),m=e.getScopeFields(p);if(e.hasValidationsInProgress(m))return!1;let f=await e.validate({scope:p});if(f){let F=Math.min(r()+1,t.length-1);r.set(F),i.set(e.getStepStatus(t[F]??""))}else{let F=e.getStepErrors(p),H=Object.keys(F);H.length>0&&e.markFieldsTouched(H)}return f},u=()=>{let p=Math.max(r()-1,0);r.set(p),i.set(e.getStepStatus(t[p]??""))},T=p=>{let m=Math.max(0,Math.min(p-1,t.length-1));r.set(m),i.set(e.getStepStatus(t[m]??""))},E=B(()=>r()+1),h=B(()=>r()===0),V=B(()=>r()>=t.length-1),P=B(()=>!i().hasErrors),v=B(()=>i().isDirty),x=B(()=>i().errors);return{step:E,stepIndex:r,scope:o,next:a,prev:u,goTo:T,isFirst:h,isLast:V,status:i,errors:x,isValid:P,isDirty:v,validate:c,getErrors:l}}import{DestroyRef as St,signal as Bt,inject as bt}from"@angular/core";function ht(t){let e=y(),r=bt(St),o=Bt(R(e.getState().values,t),{equal:U}),n=e.watch(t,i=>{o.set(i)});return r.onDestroy(n),o.asReadonly()}import{computed as k,inject as Pt,signal as Ft}from"@angular/core";function Rt(t,e,r){let o=Pt(S),n=w(t),i=null,d=Ft(!1),s=async l=>{if(l){d.set(!0),o.setError(t,void 0);try{let a=await e(l);n.setValue(a.url),i=a.key,o.setError(t,void 0)}catch(a){let u=a instanceof Error?a.message:"Upload failed";o.setError(t,u)}finally{d.set(!1)}}},c=async()=>{if(i&&r)try{await r(i)}catch(l){let a=l instanceof Error?l.message:"Delete failed";o.setError(t,a);return}n.setValue(null),i=null,o.setError(t,void 0)};return{value:k(()=>n.value()),setValue:n.setValue,error:k(()=>n.meta.error()),isValidating:k(()=>!!n.meta.isValidating()||d()),upload:s,remove:c}}import{signal as O}from"@angular/core";function jt(){let t=y(),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{st as injectBitArray,w as injectBitField,Z as injectBitForm,at as injectBitHistory,jt as injectBitPersist,dt as injectBitScope,ft as injectBitSteps,Rt as injectBitUpload,ht as injectBitWatch,Q as provideBitStore,y 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\";\nimport type { BitStoreHooksApi } from \"../core/store/public-types\";\nimport { resolveBitStoreForHooks } from \"../core/store/create-store\";\n\nexport const BIT_STORE_TOKEN = new InjectionToken<BitStoreHooksApi<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: resolveBitStoreForHooks(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 BitStoreHooksApi<T>;\n}\n","import { signal, computed, inject, DestroyRef } from \"@angular/core\";\nimport { useBitStore } from \"./provider\";\nimport { createFormController } from \"../core/form-controller\";\nimport type { InjectBitFormResult } from \"./types\";\n\nexport function injectBitForm<T extends object>(): InjectBitFormResult<T> {\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 controller = createFormController(\n store,\n {\n clearSubmissionState: () => {\n submitError.set(null);\n lastResponse.set(null);\n },\n setSubmissionResult: (result) => {\n lastResponse.set(result);\n },\n setSubmissionError: (error) => {\n submitError.set(error);\n },\n },\n { stopPropagation: true },\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: controller.getValues,\n getErrors: controller.getErrors,\n getTouched: controller.getTouched,\n getDirtyValues: controller.getDirtyValues,\n // Main actions (frequent use - flat)\n submit: controller.submit,\n onSubmit: controller.onSubmit,\n reset: controller.reset,\n replaceValues: store.replaceValues.bind(store),\n hydrate: store.hydrate.bind(store),\n rebase: store.rebase.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 };\n}\n","import { inject, DestroyRef, computed, signal } from \"@angular/core\";\nimport { BIT_STORE_TOKEN } from \"./provider\";\nimport { BitPath, BitPathValue } from \"../core\";\nimport {\n createMaskedFieldController,\n subscribeFieldState,\n} from \"../core/field-controller\";\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 = subscribeFieldState(store, path, (nextState) => {\n stateSignal.set(nextState);\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 const fieldController = createMaskedFieldController(\n store,\n path,\n resolvedMask,\n );\n\n const displayValue = computed(() => fieldController.displayValue(value()));\n\n const setValue = (val: any) => {\n fieldController.setValue(val);\n };\n\n const setBlur = () => fieldController.setBlur();\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, signal } 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 const isUploading = signal(false);\n\n const upload = async (file: File | null | undefined) => {\n if (!file) return;\n\n isUploading.set(true);\n store.setError(fieldPath, undefined);\n\n try {\n const result = await uploadFn(file);\n\n field.setValue(result.url);\n uploadKey = result.key;\n store.setError(fieldPath, undefined);\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Upload failed\";\n store.setError(fieldPath, message);\n } finally {\n isUploading.set(false);\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 store.setError(fieldPath, message);\n return;\n }\n }\n\n field.setValue(null);\n uploadKey = null;\n store.setError(fieldPath, undefined);\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() || isUploading()),\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","InjectionToken","provideBitStore","store","resolveBitStoreForHooks","useBitStore","inject","signal","computed","inject","DestroyRef","injectBitForm","store","useBitStore","destroyRef","inject","DestroyRef","stateSignal","signal","submitError","lastResponse","sub","state","nextState","isValid","computed","isSubmitting","isDirty","controller","createFormController","result","error","inject","DestroyRef","computed","signal","injectBitField","path","store","inject","BIT_STORE_TOKEN","stateSignal","signal","unsubscribe","subscribeFieldState","nextState","DestroyRef","value","computed","rawError","touched","error","isDirty","isValidating","isHidden","isRequired","invalid","resolvedMask","fieldController","createMaskedFieldController","displayValue","setValue","val","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","c","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","signal","injectBitUpload","fieldPath","uploadFn","deleteFile","store","inject","BIT_STORE_TOKEN","field","injectBitField","uploadKey","isUploading","signal","upload","file","result","error","message","remove","computed","signal","injectBitPersist","store","useBitStore","isSaving","signal","isRestoring","error","err"]}
@@ -0,0 +1,16 @@
1
+ import { e as BitState } from './types-DqeN9Kq_.js';
2
+
3
+ type BitBusListener<T extends object = any> = (storeId: string, newState: BitState<T>) => void;
4
+ interface BitFormGlobal {
5
+ stores: Record<string, unknown>;
6
+ listeners: Set<BitBusListener>;
7
+ dispatch: (storeId: string, state: BitState<any>) => void;
8
+ subscribe: (fn: BitBusListener) => () => void;
9
+ }
10
+
11
+ declare global {
12
+ var __BIT_FORM__: BitFormGlobal | undefined;
13
+ }
14
+ declare const bitBus: BitFormGlobal;
15
+
16
+ export { bitBus as b };