@lehnihon/bit-form 2.2.4 → 2.2.5
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.
- package/dist/angular/index.cjs +1 -1
- package/dist/angular/index.cjs.map +1 -1
- package/dist/angular/index.d.cts +3 -2
- package/dist/angular/index.d.ts +3 -2
- package/dist/angular/index.js +1 -1
- package/dist/angular/index.js.map +1 -1
- package/dist/{bus-BQI1FIOs.d.ts → bus-B4zZmB9C.d.ts} +4 -1
- package/dist/{bus-a_GA51Qw.d.cts → bus-BeAeZwWu.d.cts} +4 -1
- package/dist/chunk-2FDEJYA5.js +2 -0
- package/dist/chunk-2FDEJYA5.js.map +1 -0
- package/dist/chunk-3CARTBEN.cjs +2 -0
- package/dist/chunk-3CARTBEN.cjs.map +1 -0
- package/dist/chunk-3NUJVIAM.js +2 -0
- package/dist/chunk-3NUJVIAM.js.map +1 -0
- package/dist/chunk-64KSP4TP.js +2 -0
- package/dist/chunk-64KSP4TP.js.map +1 -0
- package/dist/{chunk-YEXRRTI3.cjs → chunk-77PK7U73.cjs} +2 -2
- package/dist/{chunk-YEXRRTI3.cjs.map → chunk-77PK7U73.cjs.map} +1 -1
- package/dist/chunk-CTURHI75.cjs +2 -0
- package/dist/{chunk-CFFLDMLG.cjs.map → chunk-CTURHI75.cjs.map} +1 -1
- package/dist/{chunk-MQX4YS6D.cjs → chunk-DD6XWUMR.cjs} +2 -2
- package/dist/{chunk-MQX4YS6D.cjs.map → chunk-DD6XWUMR.cjs.map} +1 -1
- package/dist/{chunk-BMHK77NL.js → chunk-FGJB4DHQ.js} +2 -2
- package/dist/{chunk-4XLU5ZCX.js → chunk-GDRNKTHO.js} +2 -2
- package/dist/chunk-GUU6EXFN.js +2 -0
- package/dist/chunk-GUU6EXFN.js.map +1 -0
- package/dist/chunk-JIWR4KSZ.cjs +2 -0
- package/dist/chunk-JIWR4KSZ.cjs.map +1 -0
- package/dist/{chunk-MBTLLIBM.js → chunk-M2XR4C7T.js} +2 -2
- package/dist/chunk-OZKLQRO6.cjs +2 -0
- package/dist/chunk-OZKLQRO6.cjs.map +1 -0
- package/dist/chunk-PFPGASVZ.cjs +2 -0
- package/dist/chunk-PFPGASVZ.cjs.map +1 -0
- package/dist/chunk-QWH2NBVB.js +2 -0
- package/dist/chunk-QWH2NBVB.js.map +1 -0
- package/dist/chunk-UMKOKAPD.js +2 -0
- package/dist/chunk-UMKOKAPD.js.map +1 -0
- package/dist/{chunk-KYM7JG2G.cjs → chunk-UT63HKR6.cjs} +2 -2
- package/dist/{chunk-KYM7JG2G.cjs.map → chunk-UT63HKR6.cjs.map} +1 -1
- package/dist/chunk-VQ7MK5VB.cjs +2 -0
- package/dist/chunk-VQ7MK5VB.cjs.map +1 -0
- package/dist/devtools/bridge.cjs +1 -1
- package/dist/devtools/bridge.cjs.map +1 -1
- package/dist/devtools/bridge.js +1 -1
- package/dist/devtools/bridge.js.map +1 -1
- package/dist/devtools/index.cjs +2 -2
- package/dist/devtools/index.cjs.map +1 -1
- package/dist/devtools/index.js +1 -1
- package/dist/devtools/index.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +23 -49
- package/dist/index.d.ts +23 -49
- package/dist/index.js +1 -1
- package/dist/mask.cjs +1 -1
- package/dist/mask.cjs.map +1 -1
- package/dist/mask.js +1 -1
- package/dist/mask.js.map +1 -1
- package/dist/{public-types-D14VY_4o.d.cts → public-types-BQXaxmAE.d.cts} +7 -2
- package/dist/{public-types-D3WIiMGu.d.ts → public-types-CVgFf_qY.d.ts} +7 -2
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +5 -5
- package/dist/react/index.d.ts +5 -5
- package/dist/react/index.js +1 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react-native/index.cjs +1 -1
- package/dist/react-native/index.d.cts +4 -4
- package/dist/react-native/index.d.ts +4 -4
- package/dist/react-native/index.js +1 -1
- package/dist/resolvers/index.cjs +1 -1
- package/dist/resolvers/index.d.cts +1 -1
- package/dist/resolvers/index.d.ts +1 -1
- package/dist/resolvers/index.js +1 -1
- package/dist/resolvers/joi.cjs +1 -1
- package/dist/resolvers/joi.d.cts +1 -1
- package/dist/resolvers/joi.d.ts +1 -1
- package/dist/resolvers/joi.js +1 -1
- package/dist/resolvers/yup.cjs +1 -1
- package/dist/resolvers/yup.d.cts +1 -1
- package/dist/resolvers/yup.d.ts +1 -1
- package/dist/resolvers/yup.js +1 -1
- package/dist/resolvers/zod.cjs +1 -1
- package/dist/resolvers/zod.d.cts +1 -1
- package/dist/resolvers/zod.d.ts +1 -1
- package/dist/resolvers/zod.js +1 -1
- package/dist/{use-bit-persist-Dt4zIl2u.d.cts → use-bit-persist-CIVN-oIi.d.cts} +3 -2
- package/dist/{use-bit-persist-CNtQ3Gaq.d.ts → use-bit-persist-iPWLbD8l.d.ts} +3 -2
- package/dist/vue/index.cjs +1 -1
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.d.cts +3 -2
- package/dist/vue/index.d.ts +3 -2
- package/dist/vue/index.js +1 -1
- package/dist/vue/index.js.map +1 -1
- package/package.json +20 -1
- package/dist/chunk-66DIO2SH.js +0 -2
- package/dist/chunk-66DIO2SH.js.map +0 -1
- package/dist/chunk-7LMNIQTT.js +0 -2
- package/dist/chunk-7LMNIQTT.js.map +0 -1
- package/dist/chunk-AE4G32HS.js +0 -2
- package/dist/chunk-AE4G32HS.js.map +0 -1
- package/dist/chunk-CFFLDMLG.cjs +0 -2
- package/dist/chunk-EI5L5L3R.cjs +0 -2
- package/dist/chunk-EI5L5L3R.cjs.map +0 -1
- package/dist/chunk-IV32WXCF.cjs +0 -2
- package/dist/chunk-IV32WXCF.cjs.map +0 -1
- package/dist/chunk-K5NZDYAT.js +0 -2
- package/dist/chunk-K5NZDYAT.js.map +0 -1
- package/dist/chunk-LOYB7TTM.cjs +0 -2
- package/dist/chunk-LOYB7TTM.cjs.map +0 -1
- package/dist/chunk-O5UPA33R.js +0 -2
- package/dist/chunk-O5UPA33R.js.map +0 -1
- package/dist/chunk-RFFMBY7M.cjs +0 -2
- package/dist/chunk-RFFMBY7M.cjs.map +0 -1
- package/dist/chunk-YGAD4ZZW.js +0 -2
- package/dist/chunk-YGAD4ZZW.js.map +0 -1
- package/dist/chunk-ZO3GXKF3.cjs +0 -2
- package/dist/chunk-ZO3GXKF3.cjs.map +0 -1
- /package/dist/{chunk-BMHK77NL.js.map → chunk-FGJB4DHQ.js.map} +0 -0
- /package/dist/{chunk-4XLU5ZCX.js.map → chunk-GDRNKTHO.js.map} +0 -0
- /package/dist/{chunk-MBTLLIBM.js.map → chunk-M2XR4C7T.js.map} +0 -0
package/dist/angular/index.cjs
CHANGED
|
@@ -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
|
|
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 _chunkVQ7MK5VBcjs = require('../chunk-VQ7MK5VB.cjs');var _chunkJIWR4KSZcjs = require('../chunk-JIWR4KSZ.cjs');var _chunkOZKLQRO6cjs = require('../chunk-OZKLQRO6.cjs');var _chunkPFPGASVZcjs = require('../chunk-PFPGASVZ.cjs');var _core = require('@angular/core');var B=new (0, _core.InjectionToken)("BIT_STORE");function et(t){return{provide:B,useValue:_chunkOZKLQRO6cjs.k.call(void 0, t)}}function y(){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 st(){let t=y(),e=_core.inject.call(void 0, _core.DestroyRef),o=_core.signal.call(void 0, {isValid:t.getState().isValid,isSubmitting:t.getState().isSubmitting,isDirty:t.getState().isDirty}),l=_core.signal.call(void 0, null),i=_core.signal.call(void 0, null),c=t.subscribeSelector(m=>({isValid:m.isValid,isSubmitting:m.isSubmitting,isDirty:m.isDirty}),m=>{o.set(m)},{paths:["isValid","isSubmitting","isDirty"]});e.onDestroy(()=>c());let u=_core.computed.call(void 0, ()=>o().isValid),S=_core.computed.call(void 0, ()=>o().isSubmitting),s=_core.computed.call(void 0, ()=>o().isDirty),r=_chunkJIWR4KSZcjs.b.call(void 0, t,{clearSubmissionState:()=>{l.set(null),i.set(null)},setSubmissionResult:m=>{i.set(m)},setSubmissionError:m=>{l.set(m)}},{stopPropagation:!0}),n=_chunkJIWR4KSZcjs.a.call(void 0, t);return{meta:{isValid:u,isDirty:s,isSubmitting:S,submitError:l.asReadonly(),lastResponse:i.asReadonly()},getValues:r.getValues,getErrors:r.getErrors,getTouched:r.getTouched,getDirtyValues:r.getDirtyValues,submit:r.submit,onSubmit:r.onSubmit,reset:r.reset,...n}}function A(t){let e=_core.inject.call(void 0, B),o=_core.signal.call(void 0, e.getFieldState(t)),l=_chunkJIWR4KSZcjs.c.call(void 0, e,t,d=>{o.set(d)});_core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>{l(),e.unregisterField&&e.unregisterField(t)});let i=_core.computed.call(void 0, ()=>o().value),c=_core.computed.call(void 0, ()=>o().error),u=_core.computed.call(void 0, ()=>o().touched),S=_core.computed.call(void 0, ()=>u()?c():void 0),s=_core.computed.call(void 0, ()=>o().isDirty),r=_core.computed.call(void 0, ()=>o().isValidating),n=_core.computed.call(void 0, ()=>o().isHidden),a=_core.computed.call(void 0, ()=>o().isRequired),m=_core.computed.call(void 0, ()=>u()&&!!c()),I=e.resolveMask(t),F=_chunkJIWR4KSZcjs.d.call(void 0, e,t,I),v=_core.computed.call(void 0, ()=>F.displayValue(i())),h=d=>{F.setValue(d)},x=()=>F.setBlur(),D=_core.computed.call(void 0, ()=>!!c());return{value:i,displayValue:v,setValue:h,setBlur:x,update:d=>h(_chunkPFPGASVZcjs.a.call(void 0, d)?_nullishCoalesce(_optionalChain([d, 'access', _2 => _2.target, 'optionalAccess', _3 => _3.value]), () => (null)):d),meta:{error:S,touched:u,invalid:m,isDirty:s,isValidating:r,isHidden:n,isRequired:a,hasError:D}}}function ut(t){let e=_core.inject.call(void 0, B),o=_core.inject.call(void 0, _core.DestroyRef),l=s=>e.config.idFactory({scope:"array",path:t,index:s}),c=_core.signal.call(void 0, (()=>{let s=_chunkOZKLQRO6cjs.e.call(void 0, e.getState().values,t);return Array.isArray(s)?s:[]})()),u=_core.signal.call(void 0, c().map((s,r)=>l(r))),S=e.subscribePath(t,s=>{let r=Array.isArray(s)?s:[],n=_core.untracked.call(void 0, u);c.set(r),r.length!==n.length&&(r.length>n.length?u.set([...n,...Array.from({length:r.length-n.length},(a,m)=>l(n.length+m))]):u.set(n.slice(0,r.length)))});return o.onDestroy(()=>{S(),e.unregisterPrefix&&e.unregisterPrefix(`${t}.`)}),{fields:_core.computed.call(void 0, ()=>c().map((s,r)=>({key:u()[r]||`temp-${r}`,value:s,index:r}))),length:_core.computed.call(void 0, ()=>c().length),append:s=>{u.update(r=>[...r,l(r.length)]),e.pushItem(t,s)},prepend:s=>{u.update(r=>[l(0),...r]),e.prependItem(t,s)},remove:s=>{u.update(r=>r.filter((n,a)=>a!==s)),e.removeItem(t,s)},insert:(s,r)=>{u.update(n=>{let a=[...n];return a.splice(s,0,l(s)),a}),e.insertItem(t,s,r)},swap:(s,r)=>{u.update(n=>{let a=[...n];return[a[s],a[r]]=[a[r],a[s]],a}),e.swapItems(t,s,r)},move:(s,r)=>{u.update(n=>{let a=[...n],[m]=a.splice(s,1);return a.splice(r,0,m),a}),e.moveItem(t,s,r)},replace:s=>{u.set(s.map((r,n)=>l(n))),e.setField(t,s)},clear:()=>{u.set([]),e.setField(t,[])}}}function dt(){let t=y(),e=_core.inject.call(void 0, _core.DestroyRef),o=_core.signal.call(void 0, t.getHistoryMetadata()),l=t.subscribe(()=>{let i=t.getHistoryMetadata();_chunkVQ7MK5VBcjs.a.call(void 0, o(),i)||o.set(i)});return e.onDestroy(()=>l()),{canUndo:_core.computed.call(void 0, ()=>o().canUndo),canRedo:_core.computed.call(void 0, ()=>o().canRedo),historyIndex:_core.computed.call(void 0, ()=>o().historyIndex),historySize:_core.computed.call(void 0, ()=>o().historySize),undo:()=>t.undo(),redo:()=>t.redo()}}function Bt(t){let e=y(),o=e.getScopeFields(t),l=e.getStepStatus(t),i=_core.signal.call(void 0, l),c=e.subscribeSelector(a=>({errors:a.errors,isDirty:a.isDirty}),()=>{let a=e.getStepStatus(t),m=i();_chunkJIWR4KSZcjs.e.call(void 0, m,a)||i.set(a)},{paths:_chunkJIWR4KSZcjs.f.call(void 0, o)});try{_core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>c())}catch (e2){}let u=async()=>{let a=await e.validate({scope:t}),m=e.getStepErrors(t);return{valid:a,errors:m}},S=()=>e.getStepErrors(t),s=_core.computed.call(void 0, ()=>!i().hasErrors),r=_core.computed.call(void 0, ()=>i().isDirty),n=_core.computed.call(void 0, ()=>i().errors);return{scopeName:t,status:i,errors:n,validate:u,getErrors:S,isValid:s,isDirty:r,unsubscribe:c}}function Ft(t){let e=y(),o=_core.signal.call(void 0, 0),l=_core.computed.call(void 0, ()=>_nullishCoalesce(t[o()], () => (""))),i=()=>_nullishCoalesce(t[o()], () => ("")),c=_core.signal.call(void 0, e.getStepStatus(i())),u=()=>{let p=i(),d=e.getStepStatus(p),P=c();_chunkJIWR4KSZcjs.e.call(void 0, P,d)||c.set(d)},S=e.subscribeSelector(p=>({errors:p.errors,isDirty:p.isDirty}),u,{paths:_chunkJIWR4KSZcjs.f.call(void 0, e.getScopeFields(i()))});try{_core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>S())}catch (e3){}let s=async()=>{let p=i(),d=await e.validate({scope:p}),P=e.getStepErrors(p);return{valid:d,errors:P}},r=()=>e.getStepErrors(i()),n=async()=>{let p=i(),d=e.getScopeFields(p);if(e.hasValidationsInProgress(d))return!1;let P=await e.validate({scope:p});if(P){let b=Math.min(o()+1,t.length-1);o.set(b),c.set(e.getStepStatus(_nullishCoalesce(t[b], () => (""))))}else{let b=e.getStepErrors(p),M=Object.keys(b);M.length>0&&e.markFieldsTouched(M)}return P},a=()=>{let p=Math.max(o()-1,0);o.set(p),c.set(e.getStepStatus(_nullishCoalesce(t[p], () => (""))))},m=p=>{let d=Math.max(0,Math.min(p-1,t.length-1));o.set(d),c.set(e.getStepStatus(_nullishCoalesce(t[d], () => (""))))},I=_core.computed.call(void 0, ()=>o()+1),F=_core.computed.call(void 0, ()=>o()===0),v=_core.computed.call(void 0, ()=>o()>=t.length-1),h=_core.computed.call(void 0, ()=>!c().hasErrors),x=_core.computed.call(void 0, ()=>c().isDirty),D=_core.computed.call(void 0, ()=>c().errors);return{step:I,stepIndex:o,scope:l,next:n,prev:a,goTo:m,isFirst:F,isLast:v,status:c,errors:D,isValid:h,isDirty:x,validate:s,getErrors:r}}function jt(t){let e=y(),o=_core.inject.call(void 0, _core.DestroyRef),l=_core.signal.call(void 0, _chunkOZKLQRO6cjs.e.call(void 0, e.getState().values,t),{equal:_chunkOZKLQRO6cjs.d}),i=e.watch(t,c=>{l.set(c)});return o.onDestroy(i),l.asReadonly()}function It(t,e,o){let l=_core.inject.call(void 0, B),i=A(t),c=null,u=_core.signal.call(void 0, !1),S={setLoading:n=>u.set(n),setError:(n,a)=>l.setError(n,a),setValue:n=>i.setValue(n),getUploadKey:()=>c,setUploadKey:n=>{c=n}},s=_chunkVQ7MK5VBcjs.b.call(void 0, t,e,S),r=_chunkVQ7MK5VBcjs.c.call(void 0, t,o,S);return{value:_core.computed.call(void 0, ()=>i.value()),setValue:i.setValue,error:_core.computed.call(void 0, ()=>i.meta.error()),isValidating:_core.computed.call(void 0, ()=>!!i.meta.isValidating()||u()),upload:s,remove:r}}function Et(){let t=y(),e=_core.signal.call(void 0, t.getPersistMetadata()),o=t.subscribeSelector(u=>u.persist,u=>{e.set(u)},{paths:["persist"]});try{_core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>o())}catch (e4){}return{restore:async()=>t.restorePersisted(),save:async()=>{await t.forceSave()},clear:async()=>{await t.clearPersisted()},meta:{isSaving:_core.computed.call(void 0, ()=>e().isSaving),isRestoring:_core.computed.call(void 0, ()=>e().isRestoring),error:_core.computed.call(void 0, ()=>e().error)}}}exports.injectBitArray = ut; exports.injectBitField = A; exports.injectBitForm = st; exports.injectBitHistory = dt; exports.injectBitPersist = Et; exports.injectBitScope = Bt; exports.injectBitSteps = Ft; exports.injectBitUpload = It; exports.injectBitWatch = jt; exports.provideBitStore = et; 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","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","isBitFieldInputEventObject","injectBitArray","createId","index","valuesSig","getDeepValue","idsSig","_","unsub","next","ids","untracked","i"],"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, BitStoreHooksApi } from \"../core\";\nimport { resolveBitStoreForHooks } from \"../core\";\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 { isBitFieldInputEventObject } from \"../core/mask/field-binding\";\nimport type {\n BitFieldInputEvent,\n InjectBitFieldMeta,\n InjectBitFieldResult,\n} 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 = (\n val: BitPathValue<TForm, P> | string | number | null | undefined,\n ) => {\n fieldController.setValue(val);\n };\n\n const setBlur = () => fieldController.setBlur();\n\n const hasError = computed(() => !!rawError());\n\n const update = (e: BitFieldInputEvent) =>\n setValue(isBitFieldInputEventObject(e) ? (e.target?.value ?? null) : 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\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 createId = (index?: number) =>\n store.config.idFactory({\n scope: \"array\",\n path: path as string,\n index,\n });\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[]>(\n valuesSig().map((_, index) => createId(index)),\n );\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 }, (_, i) =>\n createId(ids.length + i),\n ),\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, createId(ids.length)]);\n store.pushItem(path, v);\n },\n prepend: (v: BitArrayItem<BitPathValue<TForm, P>>) => {\n idsSig.update((ids) => [createId(0), ...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, createId(index));\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((_, index) => createId(index)));\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
|
+
{"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","actions","createStoreFormActions","injectBitField","path","unsubscribe","subscribeFieldState","value","rawError","touched","isValidating","isHidden","isRequired","invalid","resolvedMask","fieldController","createMaskedFieldController","displayValue","setValue","val","setBlur","hasError","e","isBitFieldInputEventObject","injectBitArray","createId","index","valuesSig","getDeepValue","idsSig","_","unsub","next","ids","untracked","i"],"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, BitStoreHooksApi } from \"../core\";\nimport { resolveBitStoreForHooks } from \"../core\";\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 {\n createFormController,\n createStoreFormActions,\n} 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 { paths: [\"isValid\", \"isSubmitting\", \"isDirty\"] },\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 const actions = createStoreFormActions(store);\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 ...actions,\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 { isBitFieldInputEventObject } from \"../core/mask/field-binding\";\nimport type {\n BitFieldInputEvent,\n InjectBitFieldMeta,\n InjectBitFieldResult,\n} 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 = (\n val: BitPathValue<TForm, P> | string | number | null | undefined,\n ) => {\n fieldController.setValue(val);\n };\n\n const setBlur = () => fieldController.setBlur();\n\n const hasError = computed(() => !!rawError());\n\n const update = (e: BitFieldInputEvent) =>\n setValue(isBitFieldInputEventObject(e) ? (e.target?.value ?? null) : 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\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 createId = (index?: number) =>\n store.config.idFactory({\n scope: \"array\",\n path: path as string,\n index,\n });\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[]>(\n valuesSig().map((_, index) => createId(index)),\n );\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 }, (_, i) =>\n createId(ids.length + i),\n ),\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, createId(ids.length)]);\n store.pushItem(path, v);\n },\n prepend: (v: BitArrayItem<BitPathValue<TForm, P>>) => {\n idsSig.update((ids) => [createId(0), ...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, createId(index));\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((_, index) => createId(index)));\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"]}
|
package/dist/angular/index.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { Provider, Signal } from '@angular/core';
|
|
3
|
-
import { e as BitStoreApi, f as BitStoreHooksApi,
|
|
4
|
-
import { f as BitPath, g as BitPathValue, j as BitPersistMetadata, n as ValidateScopeResult, i as BitErrors, H as BitTouched, h as DeepPartial, k as BitArrayPath, l as BitArrayItem, S as ScopeStatus } from '../bus-
|
|
3
|
+
import { e as BitStoreApi, f as BitStoreHooksApi, d as BitValidationOptions } from '../public-types-BQXaxmAE.cjs';
|
|
4
|
+
import { f as BitPath, g as BitPathValue, j as BitPersistMetadata, n as ValidateScopeResult, i as BitErrors, H as BitTouched, h as DeepPartial, k as BitArrayPath, l as BitArrayItem, S as ScopeStatus } from '../bus-BeAeZwWu.cjs';
|
|
5
5
|
import { B as BitFieldInputEvent } from '../field-binding-BXw0Ku2c.cjs';
|
|
6
6
|
import { B as BitUploadFn, a as BitDeleteUploadFn } from '../upload-EXnJLq8k.cjs';
|
|
7
7
|
import '../types-D8DgIUhJ.cjs';
|
|
@@ -103,6 +103,7 @@ interface InjectBitFormResult<T extends object = any> {
|
|
|
103
103
|
submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>) => (event?: Event) => Promise<void>;
|
|
104
104
|
onSubmit: (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => (event?: Event) => Promise<void>;
|
|
105
105
|
reset: () => void;
|
|
106
|
+
transaction: <TResult>(callback: () => TResult) => TResult;
|
|
106
107
|
replaceValues: (values: T) => void;
|
|
107
108
|
hydrate: (values: DeepPartial<T>) => void;
|
|
108
109
|
rebase: (values: T) => void;
|
package/dist/angular/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { Provider, Signal } from '@angular/core';
|
|
3
|
-
import { e as BitStoreApi, f as BitStoreHooksApi,
|
|
4
|
-
import { f as BitPath, g as BitPathValue, j as BitPersistMetadata, n as ValidateScopeResult, i as BitErrors, H as BitTouched, h as DeepPartial, k as BitArrayPath, l as BitArrayItem, S as ScopeStatus } from '../bus-
|
|
3
|
+
import { e as BitStoreApi, f as BitStoreHooksApi, d as BitValidationOptions } from '../public-types-CVgFf_qY.js';
|
|
4
|
+
import { f as BitPath, g as BitPathValue, j as BitPersistMetadata, n as ValidateScopeResult, i as BitErrors, H as BitTouched, h as DeepPartial, k as BitArrayPath, l as BitArrayItem, S as ScopeStatus } from '../bus-B4zZmB9C.js';
|
|
5
5
|
import { B as BitFieldInputEvent } from '../field-binding-BXw0Ku2c.js';
|
|
6
6
|
import { B as BitUploadFn, a as BitDeleteUploadFn } from '../upload-EXnJLq8k.js';
|
|
7
7
|
import '../types-D8DgIUhJ.js';
|
|
@@ -103,6 +103,7 @@ interface InjectBitFormResult<T extends object = any> {
|
|
|
103
103
|
submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>) => (event?: Event) => Promise<void>;
|
|
104
104
|
onSubmit: (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => (event?: Event) => Promise<void>;
|
|
105
105
|
reset: () => void;
|
|
106
|
+
transaction: <TResult>(callback: () => TResult) => TResult;
|
|
106
107
|
replaceValues: (values: T) => void;
|
|
107
108
|
hydrate: (values: DeepPartial<T>) => void;
|
|
108
109
|
rebase: (values: T) => void;
|
package/dist/angular/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as
|
|
1
|
+
import{a as L,b as $,c as G}from"../chunk-QWH2NBVB.js";import{a as K,b as C,c as W,d as z,e as j,f as R}from"../chunk-2FDEJYA5.js";import{d as _,e as T,k as O}from"../chunk-64KSP4TP.js";import{a as q}from"../chunk-3NUJVIAM.js";import{inject as N,InjectionToken as tt}from"@angular/core";var B=new tt("BIT_STORE");function et(t){return{provide:B,useValue:O(t)}}function y(){let t=N(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 E,computed as w,inject as rt,DestroyRef as ot}from"@angular/core";function st(){let t=y(),e=rt(ot),o=E({isValid:t.getState().isValid,isSubmitting:t.getState().isSubmitting,isDirty:t.getState().isDirty}),l=E(null),i=E(null),c=t.subscribeSelector(m=>({isValid:m.isValid,isSubmitting:m.isSubmitting,isDirty:m.isDirty}),m=>{o.set(m)},{paths:["isValid","isSubmitting","isDirty"]});e.onDestroy(()=>c());let u=w(()=>o().isValid),S=w(()=>o().isSubmitting),s=w(()=>o().isDirty),r=C(t,{clearSubmissionState:()=>{l.set(null),i.set(null)},setSubmissionResult:m=>{i.set(m)},setSubmissionError:m=>{l.set(m)}},{stopPropagation:!0}),n=K(t);return{meta:{isValid:u,isDirty:s,isSubmitting:S,submitError:l.asReadonly(),lastResponse:i.asReadonly()},getValues:r.getValues,getErrors:r.getErrors,getTouched:r.getTouched,getDirtyValues:r.getDirtyValues,submit:r.submit,onSubmit:r.onSubmit,reset:r.reset,...n}}import{inject as J,DestroyRef as it,computed as g,signal as nt}from"@angular/core";function A(t){let e=J(B),o=nt(e.getFieldState(t)),l=W(e,t,d=>{o.set(d)});J(it).onDestroy(()=>{l(),e.unregisterField&&e.unregisterField(t)});let i=g(()=>o().value),c=g(()=>o().error),u=g(()=>o().touched),S=g(()=>u()?c():void 0),s=g(()=>o().isDirty),r=g(()=>o().isValidating),n=g(()=>o().isHidden),a=g(()=>o().isRequired),m=g(()=>u()&&!!c()),I=e.resolveMask(t),F=z(e,t,I),v=g(()=>F.displayValue(i())),h=d=>{F.setValue(d)},x=()=>F.setBlur(),D=g(()=>!!c());return{value:i,displayValue:v,setValue:h,setBlur:x,update:d=>h(q(d)?d.target?.value??null:d),meta:{error:S,touched:u,invalid:m,isDirty:s,isValidating:r,isHidden:n,isRequired:a,hasError:D}}}import{DestroyRef as at,signal as Q,computed as X,inject as Y,untracked as ct}from"@angular/core";function ut(t){let e=Y(B),o=Y(at),l=s=>e.config.idFactory({scope:"array",path:t,index:s}),c=Q((()=>{let s=T(e.getState().values,t);return Array.isArray(s)?s:[]})()),u=Q(c().map((s,r)=>l(r))),S=e.subscribePath(t,s=>{let r=Array.isArray(s)?s:[],n=ct(u);c.set(r),r.length!==n.length&&(r.length>n.length?u.set([...n,...Array.from({length:r.length-n.length},(a,m)=>l(n.length+m))]):u.set(n.slice(0,r.length)))});return o.onDestroy(()=>{S(),e.unregisterPrefix&&e.unregisterPrefix(`${t}.`)}),{fields:X(()=>c().map((s,r)=>({key:u()[r]||`temp-${r}`,value:s,index:r}))),length:X(()=>c().length),append:s=>{u.update(r=>[...r,l(r.length)]),e.pushItem(t,s)},prepend:s=>{u.update(r=>[l(0),...r]),e.prependItem(t,s)},remove:s=>{u.update(r=>r.filter((n,a)=>a!==s)),e.removeItem(t,s)},insert:(s,r)=>{u.update(n=>{let a=[...n];return a.splice(s,0,l(s)),a}),e.insertItem(t,s,r)},swap:(s,r)=>{u.update(n=>{let a=[...n];return[a[s],a[r]]=[a[r],a[s]],a}),e.swapItems(t,s,r)},move:(s,r)=>{u.update(n=>{let a=[...n],[m]=a.splice(s,1);return a.splice(r,0,m),a}),e.moveItem(t,s,r)},replace:s=>{u.set(s.map((r,n)=>l(n))),e.setField(t,s)},clear:()=>{u.set([]),e.setField(t,[])}}}import{computed as V,DestroyRef as lt,inject as mt,signal as pt}from"@angular/core";function dt(){let t=y(),e=mt(lt),o=pt(t.getHistoryMetadata()),l=t.subscribe(()=>{let i=t.getHistoryMetadata();L(o(),i)||o.set(i)});return e.onDestroy(()=>l()),{canUndo:V(()=>o().canUndo),canRedo:V(()=>o().canRedo),historyIndex:V(()=>o().historyIndex),historySize:V(()=>o().historySize),undo:()=>t.undo(),redo:()=>t.redo()}}import{signal as yt,computed as k,DestroyRef as St,inject as gt}from"@angular/core";function Bt(t){let e=y(),o=e.getScopeFields(t),l=e.getStepStatus(t),i=yt(l),c=e.subscribeSelector(a=>({errors:a.errors,isDirty:a.isDirty}),()=>{let a=e.getStepStatus(t),m=i();j(m,a)||i.set(a)},{paths:R(o)});try{gt(St).onDestroy(()=>c())}catch{}let u=async()=>{let a=await e.validate({scope:t}),m=e.getStepErrors(t);return{valid:a,errors:m}},S=()=>e.getStepErrors(t),s=k(()=>!i().hasErrors),r=k(()=>i().isDirty),n=k(()=>i().errors);return{scopeName:t,status:i,errors:n,validate:u,getErrors:S,isValid:s,isDirty:r,unsubscribe:c}}import{signal as Z,computed as f,DestroyRef as ft,inject as Pt}from"@angular/core";function Ft(t){let e=y(),o=Z(0),l=f(()=>t[o()]??""),i=()=>t[o()]??"",c=Z(e.getStepStatus(i())),u=()=>{let p=i(),d=e.getStepStatus(p),P=c();j(P,d)||c.set(d)},S=e.subscribeSelector(p=>({errors:p.errors,isDirty:p.isDirty}),u,{paths:R(e.getScopeFields(i()))});try{Pt(ft).onDestroy(()=>S())}catch{}let s=async()=>{let p=i(),d=await e.validate({scope:p}),P=e.getStepErrors(p);return{valid:d,errors:P}},r=()=>e.getStepErrors(i()),n=async()=>{let p=i(),d=e.getScopeFields(p);if(e.hasValidationsInProgress(d))return!1;let P=await e.validate({scope:p});if(P){let b=Math.min(o()+1,t.length-1);o.set(b),c.set(e.getStepStatus(t[b]??""))}else{let b=e.getStepErrors(p),M=Object.keys(b);M.length>0&&e.markFieldsTouched(M)}return P},a=()=>{let p=Math.max(o()-1,0);o.set(p),c.set(e.getStepStatus(t[p]??""))},m=p=>{let d=Math.max(0,Math.min(p-1,t.length-1));o.set(d),c.set(e.getStepStatus(t[d]??""))},I=f(()=>o()+1),F=f(()=>o()===0),v=f(()=>o()>=t.length-1),h=f(()=>!c().hasErrors),x=f(()=>c().isDirty),D=f(()=>c().errors);return{step:I,stepIndex:o,scope:l,next:n,prev:a,goTo:m,isFirst:F,isLast:v,status:c,errors:D,isValid:h,isDirty:x,validate:s,getErrors:r}}import{DestroyRef as ht,signal as bt,inject as Tt}from"@angular/core";function jt(t){let e=y(),o=Tt(ht),l=bt(T(e.getState().values,t),{equal:_}),i=e.watch(t,c=>{l.set(c)});return o.onDestroy(i),l.asReadonly()}import{computed as H,inject as Rt,signal as Vt}from"@angular/core";function It(t,e,o){let l=Rt(B),i=A(t),c=null,u=Vt(!1),S={setLoading:n=>u.set(n),setError:(n,a)=>l.setError(n,a),setValue:n=>i.setValue(n),getUploadKey:()=>c,setUploadKey:n=>{c=n}},s=$(t,e,S),r=G(t,o,S);return{value:H(()=>i.value()),setValue:i.setValue,error:H(()=>i.meta.error()),isValidating:H(()=>!!i.meta.isValidating()||u()),upload:s,remove:r}}import{computed as U,inject as vt,signal as xt,DestroyRef as Dt}from"@angular/core";function Et(){let t=y(),e=xt(t.getPersistMetadata()),o=t.subscribeSelector(u=>u.persist,u=>{e.set(u)},{paths:["persist"]});try{vt(Dt).onDestroy(()=>o())}catch{}return{restore:async()=>t.restorePersisted(),save:async()=>{await t.forceSave()},clear:async()=>{await t.clearPersisted()},meta:{isSaving:U(()=>e().isSaving),isRestoring:U(()=>e().isRestoring),error:U(()=>e().error)}}}export{ut as injectBitArray,A as injectBitField,st as injectBitForm,dt as injectBitHistory,Et as injectBitPersist,Bt as injectBitScope,Ft as injectBitSteps,It as injectBitUpload,jt as injectBitWatch,et 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 { BitStoreApi, BitStoreHooksApi } from \"../core\";\nimport { resolveBitStoreForHooks } from \"../core\";\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 { isBitFieldInputEventObject } from \"../core/mask/field-binding\";\nimport type {\n BitFieldInputEvent,\n InjectBitFieldMeta,\n InjectBitFieldResult,\n} 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 = (\n val: BitPathValue<TForm, P> | string | number | null | undefined,\n ) => {\n fieldController.setValue(val);\n };\n\n const setBlur = () => fieldController.setBlur();\n\n const hasError = computed(() => !!rawError());\n\n const update = (e: BitFieldInputEvent) =>\n setValue(isBitFieldInputEventObject(e) ? (e.target?.value ?? null) : 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\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 createId = (index?: number) =>\n store.config.idFactory({\n scope: \"array\",\n path: path as string,\n index,\n });\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[]>(\n valuesSig().map((_, index) => createId(index)),\n );\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 }, (_, i) =>\n createId(ids.length + i),\n ),\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, createId(ids.length)]);\n store.pushItem(path, v);\n },\n prepend: (v: BitArrayItem<BitPathValue<TForm, P>>) => {\n idsSig.update((ids) => [createId(0), ...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, createId(index));\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((_, index) => createId(index)));\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.subscribeSelector(\n (state) => ({ errors: state.errors, isDirty: state.isDirty }),\n () => {\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\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.subscribeSelector(\n (state) => ({ errors: state.errors, isDirty: state.isDirty }),\n updateStatus,\n );\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 { createUploadHandler, createRemoveHandler } from \"../core/adapters\";\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 kernelCallbacks = {\n setLoading: (val: boolean) => isUploading.set(val),\n setError: (path: string, msg: string | undefined) =>\n store.setError(path, msg),\n setValue: (val: string | null) => field.setValue(val),\n getUploadKey: () => uploadKey,\n setUploadKey: (key: string | null) => {\n uploadKey = key;\n },\n };\n\n const upload = createUploadHandler(fieldPath, uploadFn, kernelCallbacks);\n const remove = createRemoveHandler(fieldPath, deleteFile, kernelCallbacks);\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 { computed, inject, signal, DestroyRef } 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 persist = signal(store.getPersistMetadata());\n\n const unsubscribe = store.subscribeSelector(\n (state) => state.persist,\n (nextPersist) => {\n persist.set(nextPersist);\n },\n );\n\n try {\n inject(DestroyRef).onDestroy(() => unsubscribe());\n } catch {}\n\n const restore = async (): Promise<boolean> => {\n return store.restorePersisted();\n };\n\n const save = async (): Promise<void> => {\n await store.forceSave();\n };\n\n const clear = async (): Promise<void> => {\n await store.clearPersisted();\n };\n\n return {\n restore,\n save,\n clear,\n meta: {\n isSaving: computed(() => persist().isSaving),\n isRestoring: computed(() => persist().isRestoring),\n error: computed(() => persist().error),\n },\n };\n}\n"],"mappings":"uMAAA,OAAS,UAAAA,EAAQ,kBAAAC,MAAgC,gBAI1C,IAAMC,EAAkB,IAAIC,EACjC,WACF,EAEO,SAASC,EACdC,EACU,CACV,MAAO,CAAE,QAASH,EAAiB,SAAUI,EAAwBD,CAAK,CAAE,CAC9E,CAEO,SAASE,GAAgC,CAC9C,IAAMF,EAAQG,EAAON,EAAiB,CAAE,SAAU,EAAK,CAAC,EAExD,GAAI,CAACG,EACH,MAAM,IAAI,MACR,wJAEF,EAGF,OAAOA,CACT,CCzBA,OAAS,UAAAI,EAAQ,YAAAC,EAAU,UAAAC,EAAQ,cAAAC,MAAkB,gBAK9C,SAASC,IAA0D,CACxE,IAAMC,EAAQC,EAAe,EACvBC,EAAaC,EAAOC,CAAU,EAC9BC,EAAcC,EAAO,CACzB,QAASN,EAAM,SAAS,EAAE,QAC1B,aAAcA,EAAM,SAAS,EAAE,aAC/B,QAASA,EAAM,SAAS,EAAE,OAC5B,CAAC,EACKO,EAAcD,EAAqB,IAAI,EACvCE,EAAeF,EAAgB,IAAI,EAEnCG,EAAMT,EAAM,kBACfU,IAAW,CACV,QAASA,EAAM,QACf,aAAcA,EAAM,aACpB,QAASA,EAAM,OACjB,GACCC,GAAc,CACbN,EAAY,IAAIM,CAAS,CAC3B,CACF,EAEAT,EAAW,UAAU,IAAMO,EAAI,CAAC,EAEhC,IAAMG,EAAUC,EAAS,IAAMR,EAAY,EAAE,OAAO,EAC9CS,EAAeD,EAAS,IAAMR,EAAY,EAAE,YAAY,EACxDU,EAAUF,EAAS,IAAMR,EAAY,EAAE,OAAO,EAE9CW,EAAaC,EACjBjB,EACA,CACE,qBAAsB,IAAM,CAC1BO,EAAY,IAAI,IAAI,EACpBC,EAAa,IAAI,IAAI,CACvB,EACA,oBAAsBU,GAAW,CAC/BV,EAAa,IAAIU,CAAM,CACzB,EACA,mBAAqBC,GAAU,CAC7BZ,EAAY,IAAIY,CAAK,CACvB,CACF,EACA,CAAE,gBAAiB,EAAK,CAC1B,EAUA,MAAO,CAEL,KAVW,CACX,QAAAP,EACA,QAAAG,EACA,aAAAD,EACA,YAAaP,EAAY,WAAW,EACpC,aAAcC,EAAa,WAAW,CACxC,EAME,UAAWQ,EAAW,UACtB,UAAWA,EAAW,UACtB,WAAYA,EAAW,WACvB,eAAgBA,EAAW,eAE3B,OAAQA,EAAW,OACnB,SAAUA,EAAW,SACrB,MAAOA,EAAW,MAClB,cAAehB,EAAM,cAAc,KAAKA,CAAK,EAC7C,QAASA,EAAM,QAAQ,KAAKA,CAAK,EACjC,OAAQA,EAAM,OAAO,KAAKA,CAAK,EAC/B,SAAUA,EAAM,SAAS,KAAKA,CAAK,EACnC,UAAWA,EAAM,UAAU,KAAKA,CAAK,EACrC,gBAAiBA,EAAM,gBAAgB,KAAKA,CAAK,EACjD,SAAUA,EAAM,SAAS,KAAKA,CAAK,EACnC,UAAWA,EAAM,UAAU,KAAKA,CAAK,EACrC,SAAUA,EAAM,SAAS,KAAKA,CAAK,CACrC,CACF,CChFA,OAAS,UAAAoB,EAAQ,cAAAC,GAAY,YAAAC,EAAU,UAAAC,OAAc,gBAc9C,SAASC,EAIdC,EAAyC,CACzC,IAAMC,EAAQC,EAAOC,CAAe,EAE9BC,EAAcC,GAAOJ,EAAM,cAAcD,CAAI,CAAC,EAE9CM,EAAcC,EAAoBN,EAAOD,EAAOQ,GAAc,CAClEJ,EAAY,IAAII,CAAS,CAC3B,CAAC,EAEDN,EAAOO,EAAU,EAAE,UAAU,IAAM,CACjCH,EAAY,EACRL,EAAM,iBACRA,EAAM,gBAAgBD,CAAc,CAExC,CAAC,EAED,IAAMU,EAAQC,EAAS,IAAMP,EAAY,EAAE,KAA+B,EACpEQ,EAAWD,EAAS,IAAMP,EAAY,EAAE,KAAK,EAC7CS,EAAUF,EAAS,IAAMP,EAAY,EAAE,OAAO,EAC9CU,EAAQH,EAAS,IAAOE,EAAQ,EAAID,EAAS,EAAI,MAAU,EAE3DG,EAAUJ,EAAS,IAAMP,EAAY,EAAE,OAAO,EAE9CY,EAAeL,EAAS,IAAMP,EAAY,EAAE,YAAY,EAExDa,EAAWN,EAAS,IAAMP,EAAY,EAAE,QAAQ,EAEhDc,EAAaP,EAAS,IAAMP,EAAY,EAAE,UAAU,EAEpDe,EAAUR,EAAS,IAAME,EAAQ,GAAK,CAAC,CAACD,EAAS,CAAC,EAElDQ,EAAenB,EAAM,YAAYD,CAAc,EAC/CqB,EAAkBC,EACtBrB,EACAD,EACAoB,CACF,EAEMG,EAAeZ,EAAS,IAAMU,EAAgB,aAAaX,EAAM,CAAC,CAAC,EAEnEc,EACJC,GACG,CACHJ,EAAgB,SAASI,CAAG,CAC9B,EAEMC,EAAU,IAAML,EAAgB,QAAQ,EAExCM,EAAWhB,EAAS,IAAM,CAAC,CAACC,EAAS,CAAC,EAK5C,MAAO,CAEL,MAAAF,EACA,aAAAa,EACA,SAAAC,EACA,QAAAE,EACA,OATcE,GACdJ,EAASK,EAA2BD,CAAC,EAAKA,EAAE,QAAQ,OAAS,KAAQA,CAAC,EAUtE,KAAM,CACJ,MAAAd,EACA,QAAAD,EACA,QAAAM,EACA,QAAAJ,EACA,aAAAC,EACA,SAAAC,EACA,WAAAC,EACA,SAAAS,CACF,CACF,CACF,CC1FA,OAAS,cAAAG,GAAY,UAAAC,EAAQ,YAAAC,EAAU,UAAAC,EAAQ,aAAAC,OAAiB,gBAUzD,SAASC,GAGdC,EAAS,CACT,IAAMC,EAAQC,EAAOC,CAAe,EAC9BC,EAAaF,EAAOG,EAAU,EAE9BC,EAAYC,GAChBN,EAAM,OAAO,UAAU,CACrB,MAAO,QACP,KAAMD,EACN,MAAAO,CACF,CAAC,EAYGC,EAAYC,GAVH,IAAM,CACnB,IAAMC,EAAMC,EACVV,EAAM,SAAS,EAAE,OACjBD,CACF,EACA,OAAO,MAAM,QAAQU,CAAG,EACnBA,EACD,CAAC,CACP,GAEwE,CAAC,EACnEE,EAASH,EACbD,EAAU,EAAE,IAAI,CAACK,EAAGN,IAAUD,EAASC,CAAK,CAAC,CAC/C,EAEMO,EAAQb,EAAM,cAAcD,EAAOe,GAAU,CACjD,IAAMC,EAAO,MAAM,QAAQD,CAAK,EAC3BA,EACD,CAAC,EACCE,EAAMC,GAAUN,CAAM,EAC5BJ,EAAU,IAAIQ,CAAI,EAEdA,EAAK,SAAWC,EAAI,SAClBD,EAAK,OAASC,EAAI,OACpBL,EAAO,IAAI,CACT,GAAGK,EACH,GAAG,MAAM,KAAK,CAAE,OAAQD,EAAK,OAASC,EAAI,MAAO,EAAG,CAACJ,EAAGM,IACtDb,EAASW,EAAI,OAASE,CAAC,CACzB,CACF,CAAC,EAEDP,EAAO,IAAIK,EAAI,MAAM,EAAGD,EAAK,MAAM,CAAC,EAG1C,CAAC,EAED,OAAAZ,EAAW,UAAU,IAAM,CACzBU,EAAM,EACFb,EAAM,kBAAkBA,EAAM,iBAAiB,GAAGD,CAAc,GAAG,CACzE,CAAC,EAEM,CACL,OAAQoB,EAAS,IACfZ,EAAU,EAAE,IAAI,CAACa,EAAGF,KAAO,CACzB,IAAKP,EAAO,EAAEO,CAAC,GAAK,QAAQA,CAAC,GAC7B,MAAOE,EACP,MAAOF,CACT,EAAE,CACJ,EACA,OAAQC,EAAS,IAAMZ,EAAU,EAAE,MAAM,EACzC,OAASa,GAA4C,CACnDT,EAAO,OAAQK,GAAQ,CAAC,GAAGA,EAAKX,EAASW,EAAI,MAAM,CAAC,CAAC,EACrDhB,EAAM,SAASD,EAAMqB,CAAC,CACxB,EACA,QAAUA,GAA4C,CACpDT,EAAO,OAAQK,GAAQ,CAACX,EAAS,CAAC,EAAG,GAAGW,CAAG,CAAC,EAC5ChB,EAAM,YAAYD,EAAMqB,CAAC,CAC3B,EACA,OAASF,GAAc,CACrBP,EAAO,OAAQK,GAAQA,EAAI,OAAO,CAACJ,EAAGS,IAAQA,IAAQH,CAAC,CAAC,EACxDlB,EAAM,WAAWD,EAAMmB,CAAC,CAC1B,EACA,OAAQ,CAACZ,EAAec,IAA4C,CAClET,EAAO,OAAQK,GAAQ,CACrB,IAAMM,EAAI,CAAC,GAAGN,CAAG,EACjB,OAAAM,EAAE,OAAOhB,EAAO,EAAGD,EAASC,CAAK,CAAC,EAC3BgB,CACT,CAAC,EACDtB,EAAM,WAAWD,EAAMO,EAAOc,CAAC,CACjC,EACA,KAAM,CAACG,EAAWC,IAAc,CAC9Bb,EAAO,OAAQK,GAAQ,CACrB,IAAMM,EAAI,CAAC,GAAGN,CAAG,EACjB,OAACM,EAAEC,CAAC,EAAGD,EAAEE,CAAC,CAAC,EAAI,CAACF,EAAEE,CAAC,EAAGF,EAAEC,CAAC,CAAC,EACnBD,CACT,CAAC,EACDtB,EAAM,UAAUD,EAAMwB,EAAGC,CAAC,CAC5B,EACA,KAAM,CAACC,EAAWC,IAAc,CAC9Bf,EAAO,OAAQK,GAAQ,CACrB,IAAMM,EAAI,CAAC,GAAGN,CAAG,EACX,CAACW,CAAE,EAAIL,EAAE,OAAOG,EAAG,CAAC,EAC1B,OAAAH,EAAE,OAAOI,EAAG,EAAGC,CAAE,EACVL,CACT,CAAC,EACDtB,EAAM,SAASD,EAAM0B,EAAGC,CAAC,CAC3B,EACA,QAAUE,GAAkD,CAC1DjB,EAAO,IAAIiB,EAAM,IAAI,CAAChB,EAAGN,IAAUD,EAASC,CAAK,CAAC,CAAC,EACnDN,EAAM,SACJD,EACA6B,CACF,CACF,EACA,MAAO,IAAM,CACXjB,EAAO,IAAI,CAAC,CAAC,EACbX,EAAM,SACJD,EACA,CAAC,CACH,CACF,CACF,CACF,CC9HA,OAAS,YAAA8B,EAAU,cAAAC,GAAY,UAAAC,GAAQ,UAAAC,OAAc,gBAI9C,SAASC,IAEY,CAC1B,IAAMC,EAAQC,EAAe,EACvBC,EAAaC,GAAOC,EAAU,EAE9BC,EAAOC,GAAON,EAAM,mBAAmB,CAAC,EAExCO,EAAMP,EAAM,UAAU,IAAM,CAChCK,EAAK,IAAIL,EAAM,mBAAmB,CAAC,CACrC,CAAC,EAED,OAAAE,EAAW,UAAU,IAAMK,EAAI,CAAC,EAEzB,CACL,QAASC,EAAS,IAAMH,EAAK,EAAE,OAAO,EACtC,QAASG,EAAS,IAAMH,EAAK,EAAE,OAAO,EACtC,aAAcG,EAAS,IAAMH,EAAK,EAAE,YAAY,EAChD,YAAaG,EAAS,IAAMH,EAAK,EAAE,WAAW,EAC9C,KAAM,IAAML,EAAM,KAAK,EACvB,KAAM,IAAMA,EAAM,KAAK,CACzB,CACF,CC1BA,OAAS,UAAAS,GAAQ,YAAAC,EAAU,cAAAC,GAAY,UAAAC,OAAc,gBAMrD,SAASC,GACPC,EACAC,EACS,CACT,IAAMC,EAAQ,OAAO,KAAKF,CAAC,EACrBG,EAAQ,OAAO,KAAKF,CAAC,EAC3B,OAAIC,EAAM,SAAWC,EAAM,OAAe,GACnCD,EAAM,MAAOE,GAAMJ,EAAEI,CAAC,IAAMH,EAAEG,CAAC,CAAC,CACzC,CAEO,SAASC,GAAeC,EAAmB,CAChD,IAAMC,EAAQC,EAAY,EACpBC,EAAgBF,EAAM,cAAcD,CAAS,EAE7CI,EAASC,GAAoBF,CAAa,EAE1CG,EAAcL,EAAM,kBACvBM,IAAW,CAAE,OAAQA,EAAM,OAAQ,QAASA,EAAM,OAAQ,GAC3D,IAAM,CACJ,IAAMC,EAAYP,EAAM,cAAcD,CAAS,EACzCS,EAAUL,EAAO,GAErBI,EAAU,YAAcC,EAAQ,WAChCD,EAAU,UAAYC,EAAQ,SAC9B,CAAChB,GAAYe,EAAU,OAAQC,EAAQ,MAAM,IAE7CL,EAAO,IAAII,CAAS,CAExB,CACF,EAEA,GAAI,CACiBE,GAAOC,EAAU,EACzB,UAAU,IAAML,EAAY,CAAC,CAC1C,MAAQ,CAAC,CAET,IAAMM,EAAW,SAA0C,CACzD,IAAMC,EAAQ,MAAMZ,EAAM,SAAS,CAAE,MAAOD,CAAU,CAAC,EACjDc,EAASb,EAAM,cAAcD,CAAS,EAC5C,MAAO,CAAE,MAAAa,EAAO,OAAAC,CAAO,CACzB,EAEMC,EAAY,IAAMd,EAAM,cAAcD,CAAS,EAE/CgB,EAAUC,EAAS,IAAM,CAACb,EAAO,EAAE,SAAS,EAC5Cc,EAAUD,EAAS,IAAMb,EAAO,EAAE,OAAO,EACzCU,EAASG,EAAS,IAAMb,EAAO,EAAE,MAAM,EAE7C,MAAO,CACL,UAAAJ,EACA,OAAAI,EACA,OAAAU,EACA,SAAAF,EACA,UAAAG,EACA,QAAAC,EACA,QAAAE,EACA,YAAAZ,CACF,CACF,CChEA,OAAS,UAAAa,EAAQ,YAAAC,EAAU,cAAAC,GAAY,UAAAC,OAAc,gBAKrD,SAASC,GACPC,EACAC,EACS,CACT,IAAMC,EAAQ,OAAO,KAAKF,CAAC,EACrBG,EAAQ,OAAO,KAAKF,CAAC,EAC3B,OAAIC,EAAM,SAAWC,EAAM,OAAe,GACnCD,EAAM,MAAOE,GAAMJ,EAAEI,CAAC,IAAMH,EAAEG,CAAC,CAAC,CACzC,CAEO,SAASC,GAAeC,EAA4C,CACzE,IAAMC,EAAQC,EAAY,EACpBC,EAAYC,EAAO,CAAC,EAEpBC,EAAQC,EAAS,IAAMN,EAAWG,EAAU,CAAC,GAAK,EAAE,EAEpDI,EAAkB,IAAMP,EAAWG,EAAU,CAAC,GAAK,GACnDK,EAASJ,EAAoBH,EAAM,cAAcM,EAAgB,CAAC,CAAC,EAEnEE,EAAe,IAAM,CACzB,IAAMC,EAAYH,EAAgB,EAC5BI,EAAYV,EAAM,cAAcS,CAAS,EACzCE,EAAUJ,EAAO,GAErBG,EAAU,YAAcC,EAAQ,WAChCD,EAAU,UAAYC,EAAQ,SAC9B,CAACnB,GAAYkB,EAAU,OAAQC,EAAQ,MAAM,IAE7CJ,EAAO,IAAIG,CAAS,CAExB,EAEME,EAAcZ,EAAM,kBACvBa,IAAW,CAAE,OAAQA,EAAM,OAAQ,QAASA,EAAM,OAAQ,GAC3DL,CACF,EAEA,GAAI,CACiBM,GAAOC,EAAU,EACzB,UAAU,IAAMH,EAAY,CAAC,CAC1C,MAAQ,CAAC,CAET,IAAMI,EAAW,SAA0C,CACzD,IAAMP,EAAYH,EAAgB,EAC5BW,EAAQ,MAAMjB,EAAM,SAAS,CAAE,MAAOS,CAAU,CAAC,EACjDS,EAASlB,EAAM,cAAcS,CAAS,EAC5C,MAAO,CAAE,MAAAQ,EAAO,OAAAC,CAAO,CACzB,EAEMC,EAAY,IAAMnB,EAAM,cAAcM,EAAgB,CAAC,EAEvDc,EAAO,SAA8B,CACzC,IAAMX,EAAYH,EAAgB,EAE5Be,EAAcrB,EAAM,eAAeS,CAAS,EAClD,GAAIT,EAAM,yBAAyBqB,CAAW,EAC5C,MAAO,GAGT,IAAMJ,EAAQ,MAAMjB,EAAM,SAAS,CAAE,MAAOS,CAAU,CAAC,EACvD,GAAIQ,EAAO,CACT,IAAMK,EAAW,KAAK,IAAIpB,EAAU,EAAI,EAAGH,EAAW,OAAS,CAAC,EAChEG,EAAU,IAAIoB,CAAQ,EACtBf,EAAO,IAAIP,EAAM,cAAcD,EAAWuB,CAAQ,GAAK,EAAE,CAAC,CAC5D,KAAO,CACL,IAAMJ,EAASlB,EAAM,cAAcS,CAAS,EACtCc,EAAkB,OAAO,KAAKL,CAAM,EACtCK,EAAgB,OAAS,GAC3BvB,EAAM,kBAAkBuB,CAAe,CAE3C,CACA,OAAON,CACT,EAEMO,EAAO,IAAM,CACjB,IAAMF,EAAW,KAAK,IAAIpB,EAAU,EAAI,EAAG,CAAC,EAC5CA,EAAU,IAAIoB,CAAQ,EACtBf,EAAO,IAAIP,EAAM,cAAcD,EAAWuB,CAAQ,GAAK,EAAE,CAAC,CAC5D,EAEMG,EAAQC,GAAuB,CACnC,IAAMJ,EAAW,KAAK,IACpB,EACA,KAAK,IAAII,EAAa,EAAG3B,EAAW,OAAS,CAAC,CAChD,EACAG,EAAU,IAAIoB,CAAQ,EACtBf,EAAO,IAAIP,EAAM,cAAcD,EAAWuB,CAAQ,GAAK,EAAE,CAAC,CAC5D,EAEMK,EAAOtB,EAAS,IAAMH,EAAU,EAAI,CAAC,EACrC0B,EAAUvB,EAAS,IAAMH,EAAU,IAAM,CAAC,EAC1C2B,EAASxB,EAAS,IAAMH,EAAU,GAAKH,EAAW,OAAS,CAAC,EAC5D+B,EAAUzB,EAAS,IAAM,CAACE,EAAO,EAAE,SAAS,EAC5CwB,EAAU1B,EAAS,IAAME,EAAO,EAAE,OAAO,EACzCW,EAASb,EAAS,IAAME,EAAO,EAAE,MAAM,EAE7C,MAAO,CACL,KAAAoB,EACA,UAAAzB,EACA,MAAAE,EACA,KAAAgB,EACA,KAAAI,EACA,KAAAC,EACA,QAAAG,EACA,OAAAC,EACA,OAAAtB,EACA,OAAAW,EACA,QAAAY,EACA,QAAAC,EACA,SAAAf,EACA,UAAAG,CACF,CACF,CCrHA,OAAS,cAAAa,GAAY,UAAAC,GAAgB,UAAAC,OAAc,gBAS5C,SAASC,GAGdC,EAAyC,CACzC,IAAMC,EAAQC,EAAmB,EAC3BC,EAAaC,GAAOC,EAAU,EAC9BC,EAAWC,GACfC,EAAaP,EAAM,SAAS,EAAE,OAAQD,CAAc,EAIpD,CAAE,MAAOS,CAAU,CACrB,EAEMC,EAAQT,EAAM,MAAMD,EAAOW,GAAM,CACrCL,EAAS,IAAIK,CAA2B,CAC1C,CAAC,EAED,OAAAR,EAAW,UAAUO,CAAK,EAEnBJ,EAAS,WAAW,CAC7B,CCxBA,OAAS,YAAAM,EAAU,UAAAC,GAAQ,UAAAC,OAAc,gBAOlC,SAASC,GACdC,EACAC,EACAC,EACuB,CACvB,IAAMC,EAAQC,GAAOC,CAAe,EAC9BC,EAAQC,EAAeP,CAAS,EAClCQ,EAA2B,KACzBC,EAAcC,GAAO,EAAK,EAE1BC,EAAkB,CACtB,WAAaC,GAAiBH,EAAY,IAAIG,CAAG,EACjD,SAAU,CAACC,EAAcC,IACvBX,EAAM,SAASU,EAAMC,CAAG,EAC1B,SAAWF,GAAuBN,EAAM,SAASM,CAAG,EACpD,aAAc,IAAMJ,EACpB,aAAeO,GAAuB,CACpCP,EAAYO,CACd,CACF,EAEMC,EAASC,EAAoBjB,EAAWC,EAAUU,CAAe,EACjEO,EAASC,EAAoBnB,EAAWE,EAAYS,CAAe,EAEzE,MAAO,CACL,MAAOS,EAAS,IAAMd,EAAM,MAAM,CAAC,EACnC,SAAUA,EAAM,SAChB,MAAOc,EAAS,IAAMd,EAAM,KAAK,MAAM,CAAC,EACxC,aAAcc,EAAS,IAAM,CAAC,CAACd,EAAM,KAAK,aAAa,GAAKG,EAAY,CAAC,EACzE,OAAAO,EACA,OAAAE,CACF,CACF,CC7CA,OAAS,YAAAG,EAAU,UAAAC,GAAQ,UAAAC,GAAQ,cAAAC,OAAkB,gBAI9C,SAASC,IAEY,CAC1B,IAAMC,EAAQC,EAAe,EACvBC,EAAUC,GAAOH,EAAM,mBAAmB,CAAC,EAE3CI,EAAcJ,EAAM,kBACvBK,GAAUA,EAAM,QAChBC,GAAgB,CACfJ,EAAQ,IAAII,CAAW,CACzB,CACF,EAEA,GAAI,CACFC,GAAOC,EAAU,EAAE,UAAU,IAAMJ,EAAY,CAAC,CAClD,MAAQ,CAAC,CAcT,MAAO,CACL,QAbc,SACPJ,EAAM,iBAAiB,EAa9B,KAVW,SAA2B,CACtC,MAAMA,EAAM,UAAU,CACxB,EASE,MAPY,SAA2B,CACvC,MAAMA,EAAM,eAAe,CAC7B,EAME,KAAM,CACJ,SAAUS,EAAS,IAAMP,EAAQ,EAAE,QAAQ,EAC3C,YAAaO,EAAS,IAAMP,EAAQ,EAAE,WAAW,EACjD,MAAOO,EAAS,IAAMP,EAAQ,EAAE,KAAK,CACvC,CACF,CACF","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","isBitFieldInputEventObject","DestroyRef","signal","computed","inject","untracked","injectBitArray","path","store","inject","BIT_STORE_TOKEN","destroyRef","DestroyRef","createId","index","valuesSig","signal","val","getDeepValue","idsSig","_","unsub","value","next","ids","untracked","i","computed","v","idx","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","state","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","state","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","kernelCallbacks","val","path","msg","key","upload","createUploadHandler","remove","createRemoveHandler","computed","computed","inject","signal","DestroyRef","injectBitPersist","store","useBitStore","persist","signal","unsubscribe","state","nextPersist","inject","DestroyRef","computed"]}
|
|
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, BitStoreHooksApi } from \"../core\";\nimport { resolveBitStoreForHooks } from \"../core\";\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 {\n createFormController,\n createStoreFormActions,\n} 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 { paths: [\"isValid\", \"isSubmitting\", \"isDirty\"] },\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 const actions = createStoreFormActions(store);\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 ...actions,\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 { isBitFieldInputEventObject } from \"../core/mask/field-binding\";\nimport type {\n BitFieldInputEvent,\n InjectBitFieldMeta,\n InjectBitFieldResult,\n} 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 = (\n val: BitPathValue<TForm, P> | string | number | null | undefined,\n ) => {\n fieldController.setValue(val);\n };\n\n const setBlur = () => fieldController.setBlur();\n\n const hasError = computed(() => !!rawError());\n\n const update = (e: BitFieldInputEvent) =>\n setValue(isBitFieldInputEventObject(e) ? (e.target?.value ?? null) : 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\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 createId = (index?: number) =>\n store.config.idFactory({\n scope: \"array\",\n path: path as string,\n index,\n });\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[]>(\n valuesSig().map((_, index) => createId(index)),\n );\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 }, (_, i) =>\n createId(ids.length + i),\n ),\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, createId(ids.length)]);\n store.pushItem(path, v);\n },\n prepend: (v: BitArrayItem<BitPathValue<TForm, P>>) => {\n idsSig.update((ids) => [createId(0), ...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, createId(index));\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((_, index) => createId(index)));\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 { isHistoryMetaEqual } from \"../core/history-status\";\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 const nextMeta = store.getHistoryMetadata();\n if (!isHistoryMetaEqual(meta(), nextMeta)) {\n meta.set(nextMeta);\n }\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 {\n getScopeSubscriptionPaths,\n isScopeStatusEqual,\n} from \"../core/scope-status\";\nimport { useBitStore } from \"./provider\";\n\nexport type { ScopeStatus, ValidateScopeResult };\n\nexport function injectBitScope(scopeName: string) {\n const store = useBitStore();\n const scopeFields = store.getScopeFields(scopeName);\n const initialStatus = store.getStepStatus(scopeName);\n\n const status = signal<ScopeStatus>(initialStatus);\n\n const unsubscribe = store.subscribeSelector(\n (state) => ({ errors: state.errors, isDirty: state.isDirty }),\n () => {\n const newStatus = store.getStepStatus(scopeName);\n const current = status();\n if (!isScopeStatusEqual(current, newStatus)) {\n status.set(newStatus);\n }\n },\n { paths: getScopeSubscriptionPaths(scopeFields) },\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 {\n getScopeSubscriptionPaths,\n isScopeStatusEqual,\n} from \"../core/scope-status\";\nimport { useBitStore } from \"./provider\";\nimport type { InjectBitStepsResult } from \"./types\";\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 (!isScopeStatusEqual(current, newStatus)) {\n status.set(newStatus);\n }\n };\n\n const unsubscribe = store.subscribeSelector(\n (state) => ({ errors: state.errors, isDirty: state.isDirty }),\n updateStatus,\n {\n paths: getScopeSubscriptionPaths(store.getScopeFields(getCurrentScope())),\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 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 { createUploadHandler, createRemoveHandler } from \"../core/adapters\";\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 kernelCallbacks = {\n setLoading: (val: boolean) => isUploading.set(val),\n setError: (path: string, msg: string | undefined) =>\n store.setError(path, msg),\n setValue: (val: string | null) => field.setValue(val),\n getUploadKey: () => uploadKey,\n setUploadKey: (key: string | null) => {\n uploadKey = key;\n },\n };\n\n const upload = createUploadHandler(fieldPath, uploadFn, kernelCallbacks);\n const remove = createRemoveHandler(fieldPath, deleteFile, kernelCallbacks);\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 { computed, inject, signal, DestroyRef } 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 persist = signal(store.getPersistMetadata());\n\n const unsubscribe = store.subscribeSelector(\n (state) => state.persist,\n (nextPersist) => {\n persist.set(nextPersist);\n },\n { paths: [\"persist\"] },\n );\n\n try {\n inject(DestroyRef).onDestroy(() => unsubscribe());\n } catch {}\n\n const restore = async (): Promise<boolean> => {\n return store.restorePersisted();\n };\n\n const save = async (): Promise<void> => {\n await store.forceSave();\n };\n\n const clear = async (): Promise<void> => {\n await store.clearPersisted();\n };\n\n return {\n restore,\n save,\n clear,\n meta: {\n isSaving: computed(() => persist().isSaving),\n isRestoring: computed(() => persist().isRestoring),\n error: computed(() => persist().error),\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","actions","createStoreFormActions","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","isBitFieldInputEventObject","DestroyRef","signal","computed","inject","untracked","injectBitArray","path","store","inject","BIT_STORE_TOKEN","destroyRef","DestroyRef","createId","index","valuesSig","signal","val","getDeepValue","idsSig","_","unsub","value","next","ids","untracked","i","computed","v","idx","c","a","b","f","t","it","items","computed","DestroyRef","inject","signal","injectBitHistory","store","useBitStore","destroyRef","inject","DestroyRef","meta","signal","sub","nextMeta","isHistoryMetaEqual","computed","signal","computed","DestroyRef","inject","injectBitScope","scopeName","store","useBitStore","scopeFields","initialStatus","status","signal","unsubscribe","state","newStatus","current","isScopeStatusEqual","getScopeSubscriptionPaths","inject","DestroyRef","validate","valid","errors","getErrors","isValid","computed","isDirty","signal","computed","DestroyRef","inject","injectBitSteps","scopeNames","store","useBitStore","stepIndex","signal","scope","computed","getCurrentScope","status","updateStatus","scopeName","newStatus","current","isScopeStatusEqual","unsubscribe","state","getScopeSubscriptionPaths","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","kernelCallbacks","val","path","msg","key","upload","createUploadHandler","remove","createRemoveHandler","computed","computed","inject","signal","DestroyRef","injectBitPersist","store","useBitStore","persist","signal","unsubscribe","state","nextPersist","inject","DestroyRef","computed"]}
|
|
@@ -60,6 +60,8 @@ interface BitFieldDefinition<T extends object = any> {
|
|
|
60
60
|
validation?: BitFieldValidation<T>;
|
|
61
61
|
transform?: BitTransformFn<T>;
|
|
62
62
|
computed?: BitComputedFn<T>;
|
|
63
|
+
/** Explicit dependencies for computed optimization. Falls back to conditional.dependsOn when omitted. */
|
|
64
|
+
computedDependsOn?: string[];
|
|
63
65
|
/** Mask name (built-in or custom registry key) or BitMask instance. */
|
|
64
66
|
mask?: BitMask | BitMaskName;
|
|
65
67
|
/** Scope name (e.g. wizard step). */
|
|
@@ -191,6 +193,7 @@ interface BitConfig<T extends object = any> {
|
|
|
191
193
|
storeId?: string;
|
|
192
194
|
idFactory?: BitIdFactory;
|
|
193
195
|
initialValues?: T;
|
|
196
|
+
masks?: Record<string, BitMask>;
|
|
194
197
|
/** Central field config: conditional, validation, transform, computed, mask, scope. */
|
|
195
198
|
fields?: Record<string, BitFieldDefinition<T>>;
|
|
196
199
|
/** Schema-level validation */
|
|
@@ -241,4 +244,4 @@ declare global {
|
|
|
241
244
|
}
|
|
242
245
|
declare const bitBus: BitFormGlobal;
|
|
243
246
|
|
|
244
|
-
export { type BitPersistMode as A, type BitConfig as B, type BitPersistStorageAdapter as C, type DevToolsOptions as D, type BitPluginContext as E, type BitPluginErrorEvent as F, type BitPluginHooks as G, type BitTouched as H, type BitValidationConfig as I, bitBus as J, type ScopeStatus as S, type ValidatorFn as V, type BitFieldDefinition as a, type BitPersistResolvedConfig as b, type BitIdFactory as c, type BitPlugin as d, type BitState as e, type BitPath as f, type BitPathValue as g, type DeepPartial as h, type BitErrors as i, type BitPersistMetadata as j, type BitArrayPath as k, type BitArrayItem as l, type BitFieldState as m, type ValidateScopeResult as n, type
|
|
247
|
+
export { type BitPersistMode as A, type BitConfig as B, type BitPersistStorageAdapter as C, type DevToolsOptions as D, type BitPluginContext as E, type BitPluginErrorEvent as F, type BitPluginHooks as G, type BitTouched as H, type BitValidationConfig as I, bitBus as J, type ScopeStatus as S, type ValidatorFn as V, type BitFieldDefinition as a, type BitPersistResolvedConfig as b, type BitIdFactory as c, type BitPlugin as d, type BitState as e, type BitPath as f, type BitPathValue as g, type DeepPartial as h, type BitErrors as i, type BitPersistMetadata as j, type BitArrayPath as k, type BitArrayItem as l, type BitFieldState as m, type ValidateScopeResult as n, type BitComputedFn as o, type BitTransformFn as p, type BitFieldChangeMeta as q, type BitBeforeValidateEvent as r, type BitAfterValidateEvent as s, type BitBeforeSubmitEvent as t, type BitAfterSubmitEvent as u, type BitFieldChangeEvent as v, type BitFieldConditional as w, type BitFieldValidation as x, type BitHistoryConfig as y, type BitPersistConfig as z };
|
|
@@ -60,6 +60,8 @@ interface BitFieldDefinition<T extends object = any> {
|
|
|
60
60
|
validation?: BitFieldValidation<T>;
|
|
61
61
|
transform?: BitTransformFn<T>;
|
|
62
62
|
computed?: BitComputedFn<T>;
|
|
63
|
+
/** Explicit dependencies for computed optimization. Falls back to conditional.dependsOn when omitted. */
|
|
64
|
+
computedDependsOn?: string[];
|
|
63
65
|
/** Mask name (built-in or custom registry key) or BitMask instance. */
|
|
64
66
|
mask?: BitMask | BitMaskName;
|
|
65
67
|
/** Scope name (e.g. wizard step). */
|
|
@@ -191,6 +193,7 @@ interface BitConfig<T extends object = any> {
|
|
|
191
193
|
storeId?: string;
|
|
192
194
|
idFactory?: BitIdFactory;
|
|
193
195
|
initialValues?: T;
|
|
196
|
+
masks?: Record<string, BitMask>;
|
|
194
197
|
/** Central field config: conditional, validation, transform, computed, mask, scope. */
|
|
195
198
|
fields?: Record<string, BitFieldDefinition<T>>;
|
|
196
199
|
/** Schema-level validation */
|
|
@@ -241,4 +244,4 @@ declare global {
|
|
|
241
244
|
}
|
|
242
245
|
declare const bitBus: BitFormGlobal;
|
|
243
246
|
|
|
244
|
-
export { type BitPersistMode as A, type BitConfig as B, type BitPersistStorageAdapter as C, type DevToolsOptions as D, type BitPluginContext as E, type BitPluginErrorEvent as F, type BitPluginHooks as G, type BitTouched as H, type BitValidationConfig as I, bitBus as J, type ScopeStatus as S, type ValidatorFn as V, type BitFieldDefinition as a, type BitPersistResolvedConfig as b, type BitIdFactory as c, type BitPlugin as d, type BitState as e, type BitPath as f, type BitPathValue as g, type DeepPartial as h, type BitErrors as i, type BitPersistMetadata as j, type BitArrayPath as k, type BitArrayItem as l, type BitFieldState as m, type ValidateScopeResult as n, type
|
|
247
|
+
export { type BitPersistMode as A, type BitConfig as B, type BitPersistStorageAdapter as C, type DevToolsOptions as D, type BitPluginContext as E, type BitPluginErrorEvent as F, type BitPluginHooks as G, type BitTouched as H, type BitValidationConfig as I, bitBus as J, type ScopeStatus as S, type ValidatorFn as V, type BitFieldDefinition as a, type BitPersistResolvedConfig as b, type BitIdFactory as c, type BitPlugin as d, type BitState as e, type BitPath as f, type BitPathValue as g, type DeepPartial as h, type BitErrors as i, type BitPersistMetadata as j, type BitArrayPath as k, type BitArrayItem as l, type BitFieldState as m, type ValidateScopeResult as n, type BitComputedFn as o, type BitTransformFn as p, type BitFieldChangeMeta as q, type BitBeforeValidateEvent as r, type BitAfterValidateEvent as s, type BitBeforeSubmitEvent as t, type BitAfterSubmitEvent as u, type BitFieldChangeEvent as v, type BitFieldConditional as w, type BitFieldValidation as x, type BitHistoryConfig as y, type BitPersistConfig as z };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{h as l,i as u}from"./chunk-64KSP4TP.js";import{b as d,c}from"./chunk-3NUJVIAM.js";async function m(e,r,o,i){try{let t=await e(r,o);i.onSuccess(t)}catch(t){if(l(t)){i.onServerErrors(u(t));return}i.onUnhandledError(t instanceof Error?t:new Error(String(t)))}}function E(e){return{setField:(r,o)=>e.setField(r,o),blurField:r=>e.blurField(r),replaceValues:r=>e.replaceValues(r),hydrate:r=>e.hydrate(r),rebase:r=>e.rebase(r),setError:(r,o)=>e.setError(r,o),setErrors:r=>e.setErrors(r),setServerErrors:r=>e.setServerErrors(r),validate:r=>e.validate(r),transaction:r=>e.transaction(r)}}function p(e,r){e?.preventDefault?.(),r?.stopPropagation&&e?.stopPropagation?.()}function f(e,r,o){return{submit:s=>a=>(p(a,o),e.submit(s)),onSubmit:s=>a=>(p(a,o),r.setSubmissionError(null),e.submit(async(b,F)=>{await m(s,b,F,{onSuccess:n=>{r.setSubmissionResult(n),r.setSubmissionError(null)},onServerErrors:n=>{e.setServerErrors(n)},onUnhandledError:n=>{r.setSubmissionError(n)}})})),reset:()=>{e.reset(),r.clearSubmissionState()},getValues:()=>e.getState().values,getErrors:()=>e.getState().errors,getTouched:()=>e.getState().touched,getDirtyValues:()=>e.getDirtyValues()}}function k(e,r,o){return e.subscribeSelector(()=>e.getFieldState(r),o,{paths:[r],autoTrackPaths:!1,equalityFn:(i,t)=>i.value===t.value&&i.error===t.error&&i.touched===t.touched&&i.isHidden===t.isHidden&&i.isRequired===t.isRequired&&i.isDirty===t.isDirty&&i.isValidating===t.isValidating})}function h(e,r,o){return{setValue:s=>{e.setField(r,c(s,o))},setBlur:()=>e.blurField(r),displayValue:s=>d(s,o)}}function P(e,r){let o=Object.keys(e),i=Object.keys(r);return o.length!==i.length?!1:o.every(t=>e[t]===r[t])}function x(e,r){return e.hasErrors===r.hasErrors&&e.isDirty===r.isDirty&&P(e.errors,r.errors)}function H(e){return[...e,"isDirty"]}export{E as a,f as b,k as c,h as d,x as e,H as f};
|
|
2
|
+
//# sourceMappingURL=chunk-2FDEJYA5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/submit-handler.ts","../src/core/form-controller.ts","../src/core/field-controller.ts","../src/core/scope-status.ts"],"sourcesContent":["import { extractServerErrors, isValidationErrorShape } from \"./utils\";\n\nexport interface BitSubmitExecutionHandlers {\n onServerErrors: (errors: Record<string, string[] | string>) => void;\n onUnhandledError: (error: Error) => void;\n onSuccess: (result: unknown) => void;\n}\n\nexport async function executeSubmitHandler<T extends object>(\n handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>,\n values: T,\n dirtyValues: Partial<T> | undefined,\n handlers: BitSubmitExecutionHandlers,\n): Promise<void> {\n try {\n const result = await handler(values, dirtyValues);\n handlers.onSuccess(result);\n } catch (error) {\n if (isValidationErrorShape(error)) {\n handlers.onServerErrors(extractServerErrors(error));\n return;\n }\n\n handlers.onUnhandledError(\n error instanceof Error ? error : new Error(String(error)),\n );\n }\n}\n","import { executeSubmitHandler } from \"./submit-handler\";\nimport type { BitStoreHooksApi } from \"./store/contracts/public-types\";\n\nexport type BitFormDomEvent = {\n preventDefault?: () => void;\n stopPropagation?: () => void;\n};\n\nexport interface BitFormControllerRuntime {\n clearSubmissionState: () => void;\n setSubmissionResult: (result: unknown) => void;\n setSubmissionError: (error: Error | null) => void;\n}\n\nexport interface BitFormControllerOptions {\n stopPropagation?: boolean;\n}\n\nexport function createStoreFormActions<T extends object>(\n store: BitStoreHooksApi<T>,\n) {\n return {\n setField: <P extends Parameters<BitStoreHooksApi<T>[\"setField\"]>[0]>(\n path: P,\n value: Parameters<BitStoreHooksApi<T>[\"setField\"]>[1],\n ) => store.setField(path, value),\n blurField: <P extends Parameters<BitStoreHooksApi<T>[\"blurField\"]>[0]>(\n path: P,\n ) => store.blurField(path),\n replaceValues: (values: T) => store.replaceValues(values),\n hydrate: (values: Parameters<BitStoreHooksApi<T>[\"hydrate\"]>[0]) =>\n store.hydrate(values),\n rebase: (values: T) => store.rebase(values),\n setError: (path: string, message: string | undefined) =>\n store.setError(path, message),\n setErrors: (errors: Parameters<BitStoreHooksApi<T>[\"setErrors\"]>[0]) =>\n store.setErrors(errors),\n setServerErrors: (\n serverErrors: Parameters<BitStoreHooksApi<T>[\"setServerErrors\"]>[0],\n ) => store.setServerErrors(serverErrors),\n validate: (options?: Parameters<BitStoreHooksApi<T>[\"validate\"]>[0]) =>\n store.validate(options),\n transaction: <TResult>(callback: () => TResult) =>\n store.transaction(callback),\n };\n}\n\nexport function preventFormEvent(\n event?: BitFormDomEvent,\n options?: BitFormControllerOptions,\n) {\n event?.preventDefault?.();\n if (options?.stopPropagation) {\n event?.stopPropagation?.();\n }\n}\n\nexport function createFormController<T extends object>(\n store: BitStoreHooksApi<T>,\n runtime: BitFormControllerRuntime,\n options?: BitFormControllerOptions,\n) {\n const submit = (\n onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>,\n ) => {\n return (event?: BitFormDomEvent) => {\n preventFormEvent(event, options);\n return store.submit(onSuccess);\n };\n };\n\n const onSubmit = (\n handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>,\n ) => {\n return (event?: BitFormDomEvent) => {\n preventFormEvent(event, options);\n runtime.setSubmissionError(null);\n\n return store.submit(async (values, dirtyValues) => {\n await executeSubmitHandler(handler, values, dirtyValues, {\n onSuccess: (result) => {\n runtime.setSubmissionResult(result);\n runtime.setSubmissionError(null);\n },\n onServerErrors: (serverErrors) => {\n store.setServerErrors(serverErrors);\n },\n onUnhandledError: (error) => {\n runtime.setSubmissionError(error);\n },\n });\n });\n };\n };\n\n const reset = () => {\n store.reset();\n runtime.clearSubmissionState();\n };\n\n return {\n submit,\n onSubmit,\n reset,\n getValues: () => store.getState().values,\n getErrors: () => store.getState().errors,\n getTouched: () => store.getState().touched,\n getDirtyValues: () => store.getDirtyValues(),\n };\n}\n","import { formatMaskedValue, parseMaskedInput } from \"./mask/field-binding\";\nimport type { BitMask } from \"./mask/types\";\nimport type { BitStoreHooksApi } from \"./store/contracts/public-types\";\nimport type {\n BitFieldState,\n BitPath,\n BitPathValue,\n} from \"./store/contracts/types\";\n\nexport function subscribeFieldState<\n TForm extends object,\n P extends BitPath<TForm>,\n>(\n store: BitStoreHooksApi<TForm>,\n path: P,\n listener: (\n value: Readonly<BitFieldState<TForm, BitPathValue<TForm, P>>>,\n ) => void,\n) {\n return store.subscribeSelector(\n () =>\n store.getFieldState(path) as Readonly<\n BitFieldState<TForm, BitPathValue<TForm, P>>\n >,\n listener,\n {\n paths: [path as string],\n autoTrackPaths: false,\n equalityFn: (prev, next) =>\n prev.value === next.value &&\n prev.error === next.error &&\n prev.touched === next.touched &&\n prev.isHidden === next.isHidden &&\n prev.isRequired === next.isRequired &&\n prev.isDirty === next.isDirty &&\n prev.isValidating === next.isValidating,\n },\n );\n}\n\nexport function createMaskedFieldController<\n TForm extends object,\n P extends BitPath<TForm>,\n>(store: BitStoreHooksApi<TForm>, path: P, mask: BitMask | undefined) {\n const setValue = (value: unknown) => {\n store.setField(\n path,\n parseMaskedInput(value, mask) as BitPathValue<TForm, P>,\n );\n };\n\n const setBlur = () => store.blurField(path);\n\n const displayValue = (value: unknown) => formatMaskedValue(value, mask);\n\n return {\n setValue,\n setBlur,\n displayValue,\n };\n}\n","import type { ScopeStatus } from \"./store/contracts/types\";\n\nexport function areScopeErrorsEqual(\n currentErrors: Record<string, string>,\n nextErrors: Record<string, string>,\n): boolean {\n const currentKeys = Object.keys(currentErrors);\n const nextKeys = Object.keys(nextErrors);\n\n if (currentKeys.length !== nextKeys.length) {\n return false;\n }\n\n return currentKeys.every((key) => currentErrors[key] === nextErrors[key]);\n}\n\nexport function isScopeStatusEqual(\n currentStatus: ScopeStatus,\n nextStatus: ScopeStatus,\n): boolean {\n return (\n currentStatus.hasErrors === nextStatus.hasErrors &&\n currentStatus.isDirty === nextStatus.isDirty &&\n areScopeErrorsEqual(currentStatus.errors, nextStatus.errors)\n );\n}\n\nexport function getScopeSubscriptionPaths(scopeFields: readonly string[]) {\n return [...scopeFields, \"isDirty\"];\n}\n"],"mappings":"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","names":["executeSubmitHandler","handler","values","dirtyValues","handlers","result","error","isValidationErrorShape","extractServerErrors","createStoreFormActions","store","path","value","values","message","errors","serverErrors","options","callback","preventFormEvent","event","createFormController","runtime","onSuccess","handler","dirtyValues","executeSubmitHandler","result","error","subscribeFieldState","store","path","listener","prev","next","createMaskedFieldController","mask","value","parseMaskedInput","formatMaskedValue","areScopeErrorsEqual","currentErrors","nextErrors","currentKeys","nextKeys","key","isScopeStatusEqual","currentStatus","nextStatus","getScopeSubscriptionPaths","scopeFields"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunkJIWR4KSZcjs = require('./chunk-JIWR4KSZ.cjs');var _chunkOZKLQRO6cjs = require('./chunk-OZKLQRO6.cjs');var _react = require('react');var _jsxruntime = require('react/jsx-runtime');var q=_react.createContext.call(void 0, null),lt= exports.a =({store:t,children:e})=>_jsxruntime.jsx.call(void 0, q.Provider,{value:_chunkOZKLQRO6cjs.k.call(void 0, t),children:e}),S= exports.b =()=>{let t=_react.useContext.call(void 0, q);if(!t)throw new Error("BitForm hooks devem ser usados dentro de um BitFormProvider");return t};var G=t=>({isValid:t.isValid,isDirty:t.isDirty,isSubmitting:t.isSubmitting});function bt(){let t=S(),[e,o]=_react.useState.call(void 0, null),[s,n]=_react.useState.call(void 0, null),c=_react.useRef.call(void 0, null),l=_react.useCallback.call(void 0, ()=>{let p=t.getState(),P={isValid:p.isValid,isDirty:p.isDirty,isSubmitting:p.isSubmitting};return c.current&&c.current.isValid===P.isValid&&c.current.isDirty===P.isDirty&&c.current.isSubmitting===P.isSubmitting?c.current:(c.current=P,P)},[t]),d=_react.useCallback.call(void 0, p=>t.subscribeSelector(G,()=>p(),{paths:["isValid","isDirty","isSubmitting"]}),[t]),i=_react.useSyncExternalStore.call(void 0, d,l,l),r=_react.useMemo.call(void 0, ()=>_chunkJIWR4KSZcjs.b.call(void 0, t,{clearSubmissionState:()=>{o(null),n(null)},setSubmissionResult:p=>{n(p)},setSubmissionError:p=>{o(p)}}),[t]),u=_react.useMemo.call(void 0, ()=>_chunkJIWR4KSZcjs.a.call(void 0, t),[t]),a=_react.useCallback.call(void 0, r.submit,[r]),y=_react.useCallback.call(void 0, r.onSubmit,[r]),h=_react.useCallback.call(void 0, r.reset,[r]),B=_react.useCallback.call(void 0, r.getValues,[r]),E=_react.useCallback.call(void 0, r.getErrors,[r]),m=_react.useCallback.call(void 0, r.getTouched,[r]),g=_react.useCallback.call(void 0, r.getDirtyValues,[r]);return{meta:_react.useMemo.call(void 0, ()=>({...i,submitError:e,lastResponse:s}),[i,e,s]),getValues:B,getErrors:E,getTouched:m,getDirtyValues:g,submit:a,onSubmit:y,reset:h,...u}}function Tt(t){let e=S(),o=_react.useCallback.call(void 0, r=>e.config.idFactory({scope:"array",path:t,index:r}),[e,t]),s=_react.useRef.call(void 0, []),n=_react.useCallback.call(void 0, ()=>{let r=e.getState(),u=_chunkOZKLQRO6cjs.e.call(void 0, r.values,t),a=Array.isArray(u)?u:[];if(a.length!==s.current.length)if(a.length>s.current.length){let y=a.length-s.current.length;s.current=[...s.current,...Array(y).fill(null).map((h,B)=>o(s.current.length+B))]}else s.current=s.current.slice(0,a.length);return a},[e,t,o]),c=_react.useCallback.call(void 0, r=>e.subscribePath(t,()=>r()),[e,t]),l=_react.useSyncExternalStore.call(void 0, c,n,n),d=_react.useMemo.call(void 0, ()=>({append:r=>{s.current=[...s.current,o(s.current.length)],e.pushItem(t,r)},prepend:r=>{s.current=[o(0),...s.current],e.prependItem(t,r)},insert:(r,u)=>{let a=[...s.current];a.splice(r,0,o(r)),s.current=a,e.insertItem(t,r,u)},remove:r=>{s.current=s.current.filter((u,a)=>a!==r),e.removeItem(t,r)},move:(r,u)=>{let a=[...s.current],[y]=a.splice(r,1);a.splice(u,0,y),s.current=a,e.moveItem(t,r,u)},swap:(r,u)=>{let a=[...s.current];[a[r],a[u]]=[a[u],a[r]],s.current=a,e.swapItems(t,r,u)},replace:r=>{s.current=r.map((u,a)=>o(a)),e.setField(t,r)},clear:()=>{s.current=[],e.setField(t,[])}}),[e,t,o]);return{fields:_react.useMemo.call(void 0, ()=>l.map((r,u)=>({key:s.current[u]||`temp-${u}`,value:r,index:u})),[l]),length:l.length,...d}}function It(t){let e=S(),o=e.getScopeFields(t),s=_react.useRef.call(void 0, null),n=_react.useCallback.call(void 0, ()=>{let r=e.getStepStatus(t);return s.current&&_chunkJIWR4KSZcjs.e.call(void 0, s.current,r)?s.current:(s.current=r,r)},[e,t]),c=_react.useCallback.call(void 0, r=>e.subscribeSelector(u=>({errors:u.errors,isDirty:u.isDirty}),()=>r(),{paths:_chunkJIWR4KSZcjs.f.call(void 0, o)}),[e,o]),l=_react.useSyncExternalStore.call(void 0, c,n,n),d=_react.useCallback.call(void 0, async()=>{let r=await e.validate({scope:t}),u=e.getStepErrors(t);return{valid:r,errors:u}},[e,t]),i=_react.useCallback.call(void 0, ()=>e.getStepErrors(t),[e,t]);return{scopeName:t,status:l,errors:l.errors,validate:d,getErrors:i,isValid:!l.hasErrors,isDirty:l.isDirty}}function Ct(t){let e=S(),[o,s]=_react.useState.call(void 0, 0),n=_nullishCoalesce(t[o], () => ("")),c=e.getScopeFields(n),l=_react.useRef.call(void 0, null),d=_react.useCallback.call(void 0, ()=>{let m=e.getStepStatus(n);return l.current&&_chunkJIWR4KSZcjs.e.call(void 0, l.current,m)?l.current:(l.current=m,m)},[e,n]),i=_react.useSyncExternalStore.call(void 0, _react.useCallback.call(void 0, m=>e.subscribeSelector(g=>({errors:g.errors,isDirty:g.isDirty}),()=>m(),{paths:_chunkJIWR4KSZcjs.f.call(void 0, c)}),[e,c]),d,d),r=_react.useCallback.call(void 0, async()=>{let m=await e.validate({scope:n}),g=e.getStepErrors(n);return{valid:m,errors:g}},[e,n]),u=_react.useCallback.call(void 0, ()=>e.getStepErrors(n),[e,n]),a=_react.useCallback.call(void 0, async()=>{let m=e.getScopeFields(n);if(e.hasValidationsInProgress(m))return!1;let g=await e.validate({scope:n});if(g)s(F=>Math.min(F+1,t.length-1));else{let F=e.getStepErrors(n),p=Object.keys(F);p.length>0&&e.markFieldsTouched(p)}return g},[e,n,t.length]),y=_react.useCallback.call(void 0, ()=>{s(m=>Math.max(m-1,0))},[]),h=_react.useCallback.call(void 0, m=>{s(Math.max(0,Math.min(m-1,t.length-1)))},[t.length]),B=o===0,E=o>=t.length-1;return{step:o+1,stepIndex:o,scope:n,next:a,prev:y,goTo:h,isFirst:B,isLast:E,status:i,errors:i.errors,isValid:!i.hasErrors,isDirty:i.isDirty,validate:r,getErrors:u}}function Wt(t){let e=S(),o=_react.useRef.call(void 0, null),s=_react.useCallback.call(void 0, ()=>{let c=_chunkOZKLQRO6cjs.e.call(void 0, e.getState().values,t);return o.current!==null&&_chunkOZKLQRO6cjs.c.call(void 0, o.current,c)?o.current:(o.current=c,c)},[e,t]),n=_react.useCallback.call(void 0, c=>e.subscribePath(t,()=>c()),[e,t]);return _react.useSyncExternalStore.call(void 0, n,s,s)}function Gt(){let t=S(),e=_react.useSyncExternalStore.call(void 0, l=>t.subscribeSelector(d=>d.persist,()=>l(),{paths:["persist"]}),()=>t.getPersistMetadata(),()=>t.getPersistMetadata()),o=_react.useCallback.call(void 0, async()=>t.restorePersisted(),[t]),s=_react.useCallback.call(void 0, async()=>{await t.forceSave()},[t]),n=_react.useCallback.call(void 0, async()=>{await t.clearPersisted()},[t]),c=_react.useMemo.call(void 0, ()=>({isSaving:e.isSaving,isRestoring:e.isRestoring,error:e.error}),[e]);return{restore:o,save:s,clear:n,meta:c}}function Yt(t){let e=S(),o=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>()=>{e.unregisterField&&e.unregisterField(t)},[e,t]);let s=_react.useCallback.call(void 0, ()=>{let i=e.getFieldState(t);if(o.current&&o.current.value===i.value&&o.current.error===i.error&&o.current.touched===i.touched&&o.current.isHidden===i.isHidden&&o.current.isRequired===i.isRequired&&o.current.isDirty===i.isDirty&&o.current.isValidating===i.isValidating)return o.current;let r={value:i.value,error:i.error,touched:i.touched,isHidden:i.isHidden,isRequired:i.isRequired,isDirty:i.isDirty,isValidating:i.isValidating};return o.current=r,r},[e,t]),n=_react.useCallback.call(void 0, i=>_chunkJIWR4KSZcjs.c.call(void 0, e,t,()=>i()),[e,t]),c=_react.useSyncExternalStore.call(void 0, n,s,s),l=_react.useCallback.call(void 0, i=>e.setField(t,i),[e,t]),d=_react.useCallback.call(void 0, ()=>e.blurField(t),[e,t]);return{fieldState:c,setValue:l,setBlur:d,store:e}}exports.a = lt; exports.b = S; exports.c = bt; exports.d = Yt; exports.e = Tt; exports.f = It; exports.g = Ct; exports.h = Wt; exports.i = Gt;
|
|
2
|
+
//# sourceMappingURL=chunk-3CARTBEN.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/chunk-3CARTBEN.cjs","../src/react/context.tsx","../src/react/use-bit-form.ts","../src/react/use-bit-array.ts"],"names":["BitContext","createContext","BitFormProvider","store","children","jsx","resolveBitStoreForHooks","useBitStore","useContext","selectFormMeta","state","useBitForm","submitError","setSubmitError","useState","lastResponse","setLastResponse","lastMeta","useRef","getMetaSnapshot","useCallback","nextMeta","subscribeMeta","cb","metaState","useSyncExternalStore","controller","useMemo","createFormController","result","error","actions","createStoreFormActions","submit","onSubmit","reset","getValues","getErrors","getTouched","getDirtyValues","useBitArray","path","createId","index","idsRef","getSnapshot","value","getDeepValue","arrayValue","diff","_","i","subscribeArray","data","methods","newIds","from","to","item","indexA","indexB","items"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/chunk-3CARTBEN.cjs","sourcesContent":[null,"import React, { createContext, useContext } from \"react\";\nimport type { BitStoreApi, BitStoreHooksApi } from \"../core\";\nimport { resolveBitStoreForHooks } from \"../core\";\n\nconst BitContext = createContext<BitStoreHooksApi<any> | null>(null);\n\nexport const BitFormProvider = ({\n store,\n children,\n}: {\n store: BitStoreApi<any>;\n children: React.ReactNode;\n}) => (\n <BitContext.Provider value={resolveBitStoreForHooks(store)}>\n {children}\n </BitContext.Provider>\n);\n\nexport const useBitStore = <T extends object>() => {\n const store = useContext(BitContext);\n if (!store)\n throw new Error(\n \"BitForm hooks devem ser usados dentro de um BitFormProvider\",\n );\n return store as BitStoreHooksApi<T>;\n};\n","import {\n useCallback,\n useSyncExternalStore,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useBitStore } from \"./context\";\nimport {\n createFormController,\n createStoreFormActions,\n} from \"../core/form-controller\";\nimport type { UseBitFormResult } from \"./types\";\n\nconst selectFormMeta = <T extends object>(state: {\n isValid: boolean;\n isDirty: boolean;\n isSubmitting: boolean;\n}) => ({\n isValid: state.isValid,\n isDirty: state.isDirty,\n isSubmitting: state.isSubmitting,\n});\n\nexport function useBitForm<T extends object>(): UseBitFormResult<T> {\n const store = useBitStore<T>();\n\n const [submitError, setSubmitError] = useState<Error | null>(null);\n const [lastResponse, setLastResponse] = useState<unknown>(null);\n const lastMeta = useRef<{\n isValid: boolean;\n isDirty: boolean;\n isSubmitting: boolean;\n } | null>(null);\n\n const getMetaSnapshot = useCallback(() => {\n const state = store.getState();\n const nextMeta = {\n isValid: state.isValid,\n isDirty: state.isDirty,\n isSubmitting: state.isSubmitting,\n };\n\n if (\n lastMeta.current &&\n lastMeta.current.isValid === nextMeta.isValid &&\n lastMeta.current.isDirty === nextMeta.isDirty &&\n lastMeta.current.isSubmitting === nextMeta.isSubmitting\n ) {\n return lastMeta.current;\n }\n\n lastMeta.current = nextMeta;\n return nextMeta;\n }, [store]);\n\n const subscribeMeta = useCallback(\n (cb: () => void) =>\n store.subscribeSelector(selectFormMeta, () => cb(), {\n paths: [\"isValid\", \"isDirty\", \"isSubmitting\"],\n }),\n [store],\n );\n\n const metaState = useSyncExternalStore(\n subscribeMeta,\n getMetaSnapshot,\n getMetaSnapshot,\n );\n\n const controller = useMemo(\n () =>\n createFormController(store, {\n clearSubmissionState: () => {\n setSubmitError(null);\n setLastResponse(null);\n },\n setSubmissionResult: (result) => {\n setLastResponse(result);\n },\n setSubmissionError: (error) => {\n setSubmitError(error);\n },\n }),\n [store],\n );\n\n const actions = useMemo(() => createStoreFormActions(store), [store]);\n\n const submit = useCallback(controller.submit, [controller]);\n const onSubmit = useCallback(controller.onSubmit, [controller]);\n const reset = useCallback(controller.reset, [controller]);\n\n const getValues = useCallback(controller.getValues, [controller]);\n const getErrors = useCallback(controller.getErrors, [controller]);\n const getTouched = useCallback(controller.getTouched, [controller]);\n const getDirtyValues = useCallback(controller.getDirtyValues, [controller]);\n\n const meta = useMemo(\n () => ({\n ...metaState,\n submitError,\n lastResponse,\n }),\n [metaState, submitError, lastResponse],\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 ...actions,\n };\n}\n","import { useCallback, useSyncExternalStore, useRef, useMemo } from \"react\";\nimport { useBitStore } from \"./context\";\nimport {\n getDeepValue,\n BitArrayPath,\n BitPathValue,\n BitArrayItem,\n BitPath,\n} from \"../core\";\n\nexport function useBitArray<\n TForm extends object = any,\n P extends BitArrayPath<TForm> = BitArrayPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n const createId = useCallback(\n (index?: number) =>\n store.config.idFactory({\n scope: \"array\",\n path: path as string,\n index,\n }),\n [store, path],\n );\n const idsRef = useRef<string[]>([]);\n\n type Item = BitArrayItem<BitPathValue<TForm, P>>;\n\n const getSnapshot = useCallback(() => {\n const state = store.getState();\n const value = getDeepValue(state.values, path as string) as\n | BitPathValue<TForm, P>\n | undefined;\n const arrayValue = Array.isArray(value) ? (value as Item[]) : [];\n\n if (arrayValue.length !== idsRef.current.length) {\n if (arrayValue.length > idsRef.current.length) {\n const diff = arrayValue.length - idsRef.current.length;\n idsRef.current = [\n ...idsRef.current,\n ...Array(diff)\n .fill(null)\n .map((_, i) => createId(idsRef.current.length + i)),\n ];\n } else {\n idsRef.current = idsRef.current.slice(0, arrayValue.length);\n }\n }\n\n return arrayValue;\n }, [store, path, createId]);\n\n const subscribeArray = useCallback(\n (cb: () => void) => store.subscribePath(path, () => cb()),\n [store, path],\n );\n\n const data = useSyncExternalStore(subscribeArray, getSnapshot, getSnapshot);\n\n const methods = useMemo(\n () => ({\n append: (value: Item) => {\n idsRef.current = [...idsRef.current, createId(idsRef.current.length)];\n store.pushItem(path, value);\n },\n prepend: (value: Item) => {\n idsRef.current = [createId(0), ...idsRef.current];\n store.prependItem(path, value);\n },\n insert: (index: number, value: Item) => {\n const newIds = [...idsRef.current];\n newIds.splice(index, 0, createId(index));\n idsRef.current = newIds;\n store.insertItem(path, index, value);\n },\n remove: (index: number) => {\n idsRef.current = idsRef.current.filter((_, i) => i !== index);\n store.removeItem(path, index);\n },\n move: (from: number, to: number) => {\n const newIds = [...idsRef.current];\n const [item] = newIds.splice(from, 1);\n newIds.splice(to, 0, item);\n idsRef.current = newIds;\n store.moveItem(path, from, to);\n },\n swap: (indexA: number, indexB: number) => {\n const newIds = [...idsRef.current];\n [newIds[indexA], newIds[indexB]] = [newIds[indexB], newIds[indexA]];\n idsRef.current = newIds;\n store.swapItems(path, indexA, indexB);\n },\n replace: (items: Item[]) => {\n idsRef.current = items.map((_, index) => createId(index));\n store.setField(\n path as unknown as BitPath<TForm>,\n items as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n clear: () => {\n idsRef.current = [];\n store.setField(\n path as unknown as BitPath<TForm>,\n [] as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n }),\n [store, path, createId],\n );\n\n const fields = useMemo(\n () =>\n (data as Item[]).map((item: Item, index: number) => ({\n key: idsRef.current[index] || `temp-${index}`,\n value: item,\n index,\n })),\n [data],\n );\n\n return {\n fields,\n length: data.length,\n ...methods,\n };\n}\n"]}
|