@lehnihon/bit-form 2.2.24 → 2.2.27
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/README.md +0 -28
- package/dist/angular/index.cjs +1 -1
- package/dist/angular/index.cjs.map +1 -1
- package/dist/angular/index.d.cts +0 -1
- package/dist/angular/index.d.ts +0 -1
- package/dist/angular/index.js +1 -1
- package/dist/angular/index.js.map +1 -1
- package/dist/chunk-7T7L2TZX.js +2 -0
- package/dist/chunk-7T7L2TZX.js.map +1 -0
- package/dist/chunk-AV7YYSFI.cjs +2 -0
- package/dist/chunk-AV7YYSFI.cjs.map +1 -0
- package/dist/chunk-EYCJKAK3.js +2 -0
- package/dist/chunk-EYCJKAK3.js.map +1 -0
- package/dist/chunk-GBHOCY7E.cjs +2 -0
- package/dist/chunk-GBHOCY7E.cjs.map +1 -0
- package/dist/{chunk-AOMXTUA4.cjs → chunk-H27ROY4F.cjs} +2 -2
- package/dist/{chunk-AOMXTUA4.cjs.map → chunk-H27ROY4F.cjs.map} +1 -1
- package/dist/{chunk-XPY6TCOO.js → chunk-L42NQRVD.js} +2 -2
- package/dist/chunk-OWDDAM6C.cjs +2 -0
- package/dist/chunk-OWDDAM6C.cjs.map +1 -0
- package/dist/chunk-U6UFULNS.cjs +2 -0
- package/dist/chunk-U6UFULNS.cjs.map +1 -0
- package/dist/chunk-UBVVBVLS.js +2 -0
- package/dist/chunk-UBVVBVLS.js.map +1 -0
- package/dist/chunk-WKLCAC74.cjs +2 -0
- package/dist/chunk-WKLCAC74.cjs.map +1 -0
- package/dist/chunk-WYYVVM2C.js +2 -0
- package/dist/chunk-WYYVVM2C.js.map +1 -0
- package/dist/chunk-Y7TQTZY7.js +2 -0
- package/dist/chunk-Y7TQTZY7.js.map +1 -0
- package/dist/cli/index.cjs +6 -5
- package/dist/core/bindings.cjs +1 -1
- package/dist/core/bindings.js +1 -1
- package/dist/core/store.cjs +1 -1
- package/dist/core/store.js +1 -1
- package/dist/core/utils.cjs +1 -1
- package/dist/core/utils.js +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.js +1 -1
- package/dist/devtools/bridge.cjs +1 -1
- package/dist/devtools/bridge.js +1 -1
- package/dist/devtools/index.cjs +16 -16
- package/dist/devtools/index.cjs.map +1 -1
- package/dist/devtools/index.js +16 -16
- package/dist/devtools/index.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.cjs.map +1 -1
- 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.js +1 -1
- package/dist/resolvers/index.cjs +1 -1
- package/dist/resolvers/index.cjs.map +1 -1
- package/dist/resolvers/index.d.cts +0 -8
- package/dist/resolvers/index.d.ts +0 -8
- package/dist/resolvers/index.js +1 -1
- package/dist/resolvers/joi.cjs +1 -1
- package/dist/resolvers/joi.cjs.map +1 -1
- package/dist/resolvers/joi.js +1 -1
- package/dist/resolvers/joi.js.map +1 -1
- package/dist/resolvers/yup.cjs +1 -1
- package/dist/resolvers/yup.cjs.map +1 -1
- package/dist/resolvers/yup.js +1 -1
- package/dist/resolvers/yup.js.map +1 -1
- package/dist/resolvers/zod.cjs +1 -1
- package/dist/resolvers/zod.cjs.map +1 -1
- package/dist/resolvers/zod.js +1 -1
- package/dist/resolvers/zod.js.map +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +1 -1
- package/dist/vue/index.cjs +1 -1
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.js +1 -1
- package/dist/vue/index.js.map +1 -1
- package/package.json +21 -1
- package/dist/chunk-27LJCW56.cjs +0 -2
- package/dist/chunk-27LJCW56.cjs.map +0 -1
- package/dist/chunk-3SEB4YRQ.cjs +0 -2
- package/dist/chunk-3SEB4YRQ.cjs.map +0 -1
- package/dist/chunk-5ILGCBKG.cjs +0 -2
- package/dist/chunk-5ILGCBKG.cjs.map +0 -1
- package/dist/chunk-7LCFS2JM.cjs +0 -2
- package/dist/chunk-7LCFS2JM.cjs.map +0 -1
- package/dist/chunk-DNHPYPJA.js +0 -2
- package/dist/chunk-DNHPYPJA.js.map +0 -1
- package/dist/chunk-JVRTPL7W.js +0 -2
- package/dist/chunk-JVRTPL7W.js.map +0 -1
- package/dist/chunk-K2JSAJAF.cjs +0 -2
- package/dist/chunk-K2JSAJAF.cjs.map +0 -1
- package/dist/chunk-K2KCQEER.js +0 -2
- package/dist/chunk-K2KCQEER.js.map +0 -1
- package/dist/chunk-LY67POOF.js +0 -2
- package/dist/chunk-LY67POOF.js.map +0 -1
- package/dist/chunk-PDFT5E2E.cjs +0 -2
- package/dist/chunk-PDFT5E2E.cjs.map +0 -1
- package/dist/chunk-PRMNTQD5.js +0 -2
- package/dist/chunk-PRMNTQD5.js.map +0 -1
- package/dist/chunk-SFVGMVIE.js +0 -2
- package/dist/chunk-SFVGMVIE.js.map +0 -1
- package/dist/chunk-SMCFLQIA.cjs +0 -2
- package/dist/chunk-SMCFLQIA.cjs.map +0 -1
- package/dist/chunk-T36GFQHU.cjs +0 -2
- package/dist/chunk-T36GFQHU.cjs.map +0 -1
- package/dist/chunk-WEZ5Q6YO.js +0 -2
- package/dist/chunk-WEZ5Q6YO.js.map +0 -1
- package/dist/chunk-X3OFU2UH.js +0 -2
- package/dist/chunk-X3OFU2UH.js.map +0 -1
- /package/dist/{chunk-XPY6TCOO.js.map → chunk-L42NQRVD.js.map} +0 -0
package/README.md
CHANGED
|
@@ -204,7 +204,6 @@ The complete documentation is available in the `/docs` folder. Explore the guide
|
|
|
204
204
|
|
|
205
205
|
- **[When to Use What](./docs/guides/when-to-use-what.md)**: Quick reference for resolver vs asyncValidate vs setServerErrors, normalize vs computed vs transform, and conditional fields.
|
|
206
206
|
- **[Troubleshooting](./docs/guides/troubleshooting.md)**: Debug common form setup, validation, and devtools issues.
|
|
207
|
-
- **[Migration Guide](./docs/guides/migration.md)**: Plan upgrades and breaking-change checks safely.
|
|
208
207
|
- **[Testing Guide](./docs/guides/testing.md)**: Unit, integration, and e2e testing strategies.
|
|
209
208
|
- **[Performance Guide](./docs/guides/performance.md)**: Optimize large forms and subscription patterns.
|
|
210
209
|
- **[Accessibility Guide](./docs/guides/accessibility.md)**: Build accessible form experiences across frameworks.
|
|
@@ -234,33 +233,6 @@ The complete documentation is available in the `/docs` folder. Explore the guide
|
|
|
234
233
|
- **[Type Definitions](./docs/api-reference/types.md)**: Core TypeScript interfaces and types.
|
|
235
234
|
- **[Advanced Core API](./docs/api-reference/advanced-core.md)**: Public advanced exports for custom adapters and tooling.
|
|
236
235
|
|
|
237
|
-
## ⚠️ Breaking Changes (dev branch)
|
|
238
|
-
|
|
239
|
-
This branch currently allows breaking changes while architecture/performance work is in progress.
|
|
240
|
-
|
|
241
|
-
- **New explicit `@lehnihon/bit-form/core` subpath** for store/runtime contracts. The package root is now curated for app usage and no longer mirrors every core helper/export.
|
|
242
|
-
- **History default limit changed** from `15` to `50` (`history.limit`).
|
|
243
|
-
- **Selector subscriptions no longer rely on deep value diff inference** when no `paths` are provided internally; updates are now path-driven for predictable performance.
|
|
244
|
-
- **`subscribeSelector` now supports explicit modes**: `mode: "scoped"` (default, path-driven) and `mode: "tracked"` (auto-track with re-track on branch changes).
|
|
245
|
-
- **`resolveBitStoreForHooks` now uses symbol branding** instead of duck-typing checks.
|
|
246
|
-
- **SSR/Edge support improved** with injectable bus instances (`createBitBus`, `config.bus`, `initDevTools({ bus })`).
|
|
247
|
-
- **Field `asyncValidate` now defaults to `blur` trigger**. To keep validation while typing, set `validation.asyncValidateOn: "change"` explicitly.
|
|
248
|
-
- **Framework bindings now share internal binding-core helpers** for form meta and field-array orchestration, reducing adapter drift across React, Vue and Angular.
|
|
249
|
-
- **New dedicated metadata subscriptions**: `subscribePersistMeta`, `subscribeHistoryMeta` and `subscribeScopeStatus` reduce adapter reliance on generic selectors/tracked subscriptions.
|
|
250
|
-
- **React Native is now treated as a thin derivative of the React binding layer**, keeping only native-specific field adaptation.
|
|
251
|
-
- **Store capabilities are now first-class namespaces**: `read`, `observe`, `write`, `feature` are the primary contract and `slices` was removed in this major.
|
|
252
|
-
- **`BitStoreApi` now represents the namespaced contract only** (`read/observe/write/feature`). During dev migration, flat methods remain available in `BitStoreHooksApi` returned by `createBitStore` for internal/framework compatibility.
|
|
253
|
-
- **Capability registry indirection removed from runtime composition**: ports are wired directly in store runtime creation.
|
|
254
|
-
- **Devtools bus now stores a typed store port** (state/history/actions) instead of arbitrary store instance references.
|
|
255
|
-
|
|
256
|
-
### Migration quick notes
|
|
257
|
-
|
|
258
|
-
- If you relied on broad selector notifications, migrate to `subscribeSelector` with `mode: "scoped"` + `paths`, or `mode: "tracked"` when auto-tracking is needed.
|
|
259
|
-
- If you built internal adapters over generic metadata selectors, migrate to `subscribePersistMeta`, `subscribeHistoryMeta` and `subscribeScopeStatus`.
|
|
260
|
-
- If you need old history density, set `history: { limit: 15 }` explicitly.
|
|
261
|
-
- In SSR/Edge runtimes, create one bus per request scope and inject it into the store and DevTools.
|
|
262
|
-
- If you relied on async validation firing while typing, add `asyncValidateOn: "change"` to the field config. `validate()` and submit still execute async validators.
|
|
263
|
-
|
|
264
236
|
## 🤝 Contributing
|
|
265
237
|
|
|
266
238
|
Contributions are welcome! Feel free to open issues or submit pull requests.
|
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 _chunkH3RTOA6Xcjs = require('../chunk-H3RTOA6X.cjs');require('../chunk-W5CLDRRE.cjs');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 _chunkH3RTOA6Xcjs = require('../chunk-H3RTOA6X.cjs');require('../chunk-W5CLDRRE.cjs');var _chunkU6UFULNScjs = require('../chunk-U6UFULNS.cjs');var _chunkH27ROY4Fcjs = require('../chunk-H27ROY4F.cjs');var _chunkBSGJ3T5Scjs = require('../chunk-BSGJ3T5S.cjs');var _chunkRHMJPKNVcjs = require('../chunk-RHMJPKNV.cjs');var _chunkH6HGYVRVcjs = require('../chunk-H6HGYVRV.cjs');require('../chunk-AV7YYSFI.cjs');var _chunkOWDDAM6Ccjs = require('../chunk-OWDDAM6C.cjs');require('../chunk-X3DGA5UC.cjs');var _chunk725CMNAVcjs = require('../chunk-725CMNAV.cjs');var _core = require('@angular/core');var R=new (0, _core.InjectionToken)("BIT_STORE");function ut(t){let e=_chunkU6UFULNScjs.d.call(void 0, t);try{_core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>{_optionalChain([e, 'access', _2 => _2.feature, 'optionalAccess', _3 => _3.cleanup, 'optionalCall', _4 => _4()])})}catch(r){if(!(r instanceof Error&&_optionalChain([r, 'access', _5 => _5.message, 'optionalAccess', _6 => _6.includes, 'call', _7 => _7("inject")])))throw r}return{provide:R,useValue:e}}function d(){let t=_core.inject.call(void 0, R,{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 mt(){let t=d(),e=_core.inject.call(void 0, _core.DestroyRef),r=_core.signal.call(void 0, {isValid:!0,isDirty:!1,isSubmitting:!1}),o=_core.signal.call(void 0, null),i=_core.signal.call(void 0, null),s=_chunkH27ROY4Fcjs.c.call(void 0, t,n=>{r.set(n)});e.onDestroy(()=>s());let u=_core.computed.call(void 0, ()=>r().isValid),c=_core.computed.call(void 0, ()=>r().isSubmitting),p=_core.computed.call(void 0, ()=>r().isDirty),{controller:l,actions:S}=_chunkH27ROY4Fcjs.i.call(void 0, t,{clearSubmissionState:()=>{o.set(null),i.set(null)},setSubmissionResult:n=>{i.set(n)},setSubmissionError:n=>{o.set(n)}},{stopPropagation:!0});return{meta:{isValid:u,isDirty:p,isSubmitting:c,submitError:o.asReadonly(),lastResponse:i.asReadonly()},getValues:l.getValues,getErrors:l.getErrors,getTouched:l.getTouched,getDirtyValues:l.getDirtyValues,submit:l.submit,onSubmit:l.onSubmit,reset:l.reset,...S}}function k(t){let e=_core.inject.call(void 0, R),r=_core.signal.call(void 0, e.read.getFieldState(t)),o=e.observe.subscribeFieldState(t,g=>{r.set(g)});_core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>{o(),_chunkH27ROY4Fcjs.j.call(void 0, e,t)});let i=_core.computed.call(void 0, ()=>r().value),s=_core.computed.call(void 0, ()=>_chunkH6HGYVRVcjs.a.call(void 0, r())),u=_core.computed.call(void 0, ()=>s().error),c=_core.computed.call(void 0, ()=>s().touched),p=_core.computed.call(void 0, ()=>s().invalid),l=_core.computed.call(void 0, ()=>s().isDirty),S=_core.computed.call(void 0, ()=>s().isValidating),y=_core.computed.call(void 0, ()=>s().isHidden),n=_core.computed.call(void 0, ()=>s().isRequired),{fieldController:B}=_chunkH27ROY4Fcjs.h.call(void 0, e,t),h=_core.computed.call(void 0, ()=>B.displayValue(i())),P=g=>{B.setValue(g)},x=()=>B.setBlur(),V=_core.computed.call(void 0, ()=>s().hasError);return{value:i,displayValue:h,setValue:P,setBlur:x,update:g=>P(_chunk725CMNAVcjs.a.call(void 0, g)?_nullishCoalesce(_optionalChain([g, 'access', _8 => _8.target, 'optionalAccess', _9 => _9.value]), () => (null)):g),onBlur:()=>B.setBlur(),meta:{error:u,touched:c,invalid:p,isDirty:l,isValidating:S,isHidden:y,isRequired:n,hasError:V}}}function Bt(t){let e=_core.inject.call(void 0, R),r=_core.inject.call(void 0, _core.DestroyRef),o=_chunkH27ROY4Fcjs.g.call(void 0, e,t),i=_core.signal.call(void 0, o.readItems()),s=e.observe.subscribePath(t,()=>{i.set(o.readItems())});return r.onDestroy(()=>{s(),_chunkH27ROY4Fcjs.k.call(void 0, e,`${t}.`)}),{fields:_core.computed.call(void 0, ()=>o.getFields(i())),length:_core.computed.call(void 0, ()=>i().length),append:o.append,prepend:o.prepend,remove:o.remove,insert:o.insert,swap:o.swap,move:o.move,replace:o.replace,clear:o.clear}}function vt(){let t=d(),e=_core.inject.call(void 0, _core.DestroyRef),r=_core.signal.call(void 0, _chunkRHMJPKNVcjs.f.call(void 0, t)),o=_chunkRHMJPKNVcjs.g.call(void 0, t,i=>{r.set(i)});return e.onDestroy(()=>o()),{canUndo:_core.computed.call(void 0, ()=>r().canUndo),canRedo:_core.computed.call(void 0, ()=>r().canRedo),historyIndex:_core.computed.call(void 0, ()=>r().historyIndex),historySize:_core.computed.call(void 0, ()=>r().historySize),undo:()=>t.feature.undo(),redo:()=>t.feature.redo()}}function ht(t){let e=d(),r=e.read.getScopeStatus(t),o=_core.signal.call(void 0, r),i=_chunkBSGJ3T5Scjs.a.call(void 0, e,t,y=>{o.set(y)});_core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>i());let u=async()=>{let y=await e.feature.validate({scope:t}),n=e.read.getScopeErrors(t);return{valid:y,errors:n}},c=()=>e.read.getScopeErrors(t),p=_core.computed.call(void 0, ()=>!o().hasErrors),l=_core.computed.call(void 0, ()=>o().isDirty),S=_core.computed.call(void 0, ()=>o().errors);return{scopeName:t,status:o,errors:S,validate:u,getErrors:c,isValid:p,isDirty:l}}function It(t){if(t.length===0)throw new Error("injectBitSteps: scopeNames must not be empty");let e=d(),r=_core.signal.call(void 0, 0),o=_core.computed.call(void 0, ()=>_nullishCoalesce(t[r()], () => (""))),i=()=>_nullishCoalesce(t[r()], () => ("")),s=_core.signal.call(void 0, e.read.getScopeStatus(i())),u=i(),c=e.observe.subscribeScopeStatus(u,a=>{i()===u&&(_chunkRHMJPKNVcjs.b.call(void 0, s(),a)||s.set(a))}),p=()=>{let a=i(),m=e.observe.subscribeScopeStatus(a,b=>{i()===a&&(_chunkRHMJPKNVcjs.b.call(void 0, s(),b)||s.set(b))}),F=c;c=m,u=a,F()};_core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>c());let S=async()=>{let a=i(),m=r(),F=await e.feature.validate({scope:a});if(r()!==m){let j=i();return{valid:await e.feature.validate({scope:j}),errors:e.read.getScopeErrors(j)}}let b=e.read.getScopeErrors(a);return{valid:F,errors:b}},y=()=>e.read.getScopeErrors(i()),n=async()=>{let a=r(),m=_nullishCoalesce(t[a], () => (""));if(!m)return!1;let F=e.read.getScopeFields(m);if(e.feature.hasValidationsInProgress(F))return!1;let b=await e.feature.validate({scope:m});if(r()!==a)return!1;if(b){let j=Math.min(a+1,t.length-1);r.set(j),s.set(e.read.getScopeStatus(_nullishCoalesce(t[j], () => ("")))),p()}else{let j=e.read.getScopeErrors(m),I=Object.keys(j);I.length>0&&e.write.markFieldsTouched(I),s.set(e.read.getScopeStatus(m))}return b},B=()=>{let a=Math.max(r()-1,0);r.set(a),s.set(e.read.getScopeStatus(_nullishCoalesce(t[a], () => ("")))),p()},h=a=>{let m=Math.max(0,Math.min(a-1,t.length-1));r.set(m),s.set(e.read.getScopeStatus(_nullishCoalesce(t[m], () => ("")))),p()},P=_core.computed.call(void 0, ()=>r()+1),x=_core.computed.call(void 0, ()=>r()===0),V=_core.computed.call(void 0, ()=>r()>=t.length-1),H=_core.computed.call(void 0, ()=>!s().hasErrors),O=_core.computed.call(void 0, ()=>s().isDirty),g=_core.computed.call(void 0, ()=>s().errors);return{step:P,stepIndex:r,scope:o,next:n,prev:B,goTo:h,isFirst:x,isLast:V,status:s,errors:g,isValid:H,isDirty:O,validate:S,getErrors:y}}function kt(t){let e=d(),r=_core.inject.call(void 0, _core.DestroyRef),o=_core.signal.call(void 0, _chunkOWDDAM6Ccjs.f.call(void 0, e.read.getState().values,t),{equal:_chunkOWDDAM6Ccjs.c}),i=e.observe.subscribePath(t,s=>{o.set(s)});return r.onDestroy(i),o.asReadonly()}function Mt(t,e,r){let o=_core.inject.call(void 0, R),i=k(t),s=null,u=_core.signal.call(void 0, !1),c={current:0},p={setLoading:n=>u.set(n),setError:(n,B)=>o.write.setError(n,B),setValue:n=>i.setValue(n),getUploadKey:()=>s,setUploadKey:n=>{s=n},onCallbackError:n=>o.read.config.onUnhandledError(n,"upload")},l=_chunkH3RTOA6Xcjs.a.call(void 0, t,e,p,c),S=_chunkH3RTOA6Xcjs.b.call(void 0, t,r,p,c);return _core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>{c.current++,s=null}),{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:l,remove:S}}function qt(){let t=d(),e=_core.signal.call(void 0, t.read.getPersistMetadata()),r=_chunkH27ROY4Fcjs.f.call(void 0, t,c=>{e.set(c)});return _core.inject.call(void 0, _core.DestroyRef).onDestroy(()=>r()),{restore:async()=>t.feature.restorePersisted(),save:async()=>{await t.feature.forceSave()},clear:async()=>{await t.feature.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 = Bt; exports.injectBitField = k; exports.injectBitForm = mt; exports.injectBitHistory = vt; exports.injectBitPersist = qt; exports.injectBitScope = ht; exports.injectBitSteps = It; exports.injectBitUpload = Mt; exports.injectBitWatch = kt; exports.provideBitStore = ut; exports.useBitStore = d;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/builds/kenji.ccp-group/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","adapted","createFrameworkStoreAdapter","inject","useBitStore","injectBitForm","destroyRef","stateSignal","signal","submitError","lastResponse","sub","observeFormMetaSnapshot","nextMeta","isValid","computed","isSubmitting","isDirty","controller","actions","createFrameworkFormBinding","result","error","injectBitField","path","unsubscribe","nextState","cleanupRegisteredField","value","metaState","deriveFieldMeta","touched","invalid","isValidating","isHidden","isRequired","fieldController","createFrameworkMaskedFieldBinding","displayValue","setValue","val","setBlur","hasError","e","isBitFieldInputEventObject","injectBitArray","createArrayBinding","valuesSig","unsub","cleanupRegisteredPrefix"],"mappings":"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","file":"/builds/kenji.ccp-group/bit-form/dist/angular/index.cjs","sourcesContent":[null,"import { DestroyRef, inject, InjectionToken, Provider } from \"@angular/core\";\nimport type { BitFrameworkStoreApi, BitStoreApi } from \"../core\";\nimport { createFrameworkStoreAdapter } from \"../core\";\n\nexport const BIT_STORE_TOKEN = new InjectionToken<BitFrameworkStoreApi<any>>(\n \"BIT_STORE\",\n);\n\nexport function provideBitStore<T extends object>(\n store: BitFrameworkStoreApi<T> | BitStoreApi<T>,\n): Provider {\n const adapted = createFrameworkStoreAdapter<T>(store);\n\n try {\n const destroyRef = inject(DestroyRef);\n destroyRef.onDestroy(() => {\n (adapted as any).feature?.cleanup?.();\n });\n } catch {\n // Called outside injection context (e.g., root module) — cleanup is\n // the caller's responsibility.\n }\n\n return {\n provide: BIT_STORE_TOKEN,\n useValue: adapted,\n };\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 BitFrameworkStoreApi<T>;\n}\n","import { signal, computed, inject, DestroyRef } from \"@angular/core\";\nimport { useBitStore } from \"./provider\";\nimport { createFrameworkFormBinding, observeFormMetaSnapshot } from \"../core\";\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: true,\n isDirty: false,\n isSubmitting: false,\n });\n const submitError = signal<Error | null>(null);\n const lastResponse = signal<unknown>(null);\n\n const sub = observeFormMetaSnapshot(store, (nextMeta) => {\n stateSignal.set(nextMeta);\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, actions } = createFrameworkFormBinding(\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 ...actions,\n };\n}\n","import { DestroyRef, computed, inject, signal } from \"@angular/core\";\nimport {\n BitPath,\n BitPathValue,\n cleanupRegisteredField,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n isBitFieldInputEventObject,\n} from \"../core\";\nimport { BIT_STORE_TOKEN } from \"./provider\";\nimport type { BitFieldInputEvent, InjectBitFieldResult } from \"./types\";\n\nexport function injectBitField<\n _TValue = any,\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): InjectBitFieldResult<TForm, P> {\n const store = inject(BIT_STORE_TOKEN);\n\n const stateSignal = signal(store.read.getFieldState(path));\n\n const unsubscribe = store.observe.subscribeFieldState(path, (nextState) => {\n stateSignal.set(nextState);\n });\n\n inject(DestroyRef).onDestroy(() => {\n unsubscribe();\n cleanupRegisteredField(store, path as string);\n });\n\n const value = computed(() => stateSignal().value as BitPathValue<TForm, P>);\n const metaState = computed(() => deriveFieldMeta(stateSignal()));\n const error = computed(() => metaState().error);\n const touched = computed(() => metaState().touched);\n const invalid = computed(() => metaState().invalid);\n const isDirty = computed(() => metaState().isDirty);\n const isValidating = computed(() => metaState().isValidating);\n const isHidden = computed(() => metaState().isHidden);\n const isRequired = computed(() => metaState().isRequired);\n\n const { fieldController } = createFrameworkMaskedFieldBinding(store, path);\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(() => metaState().hasError);\n\n const onBlur = () => fieldController.setBlur();\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 onBlur,\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 { computed, DestroyRef, inject, signal } from \"@angular/core\";\nimport {\n BitArrayItem,\n BitArrayPath,\n BitPathValue,\n cleanupRegisteredPrefix,\n createArrayBinding,\n} from \"../core\";\nimport { BIT_STORE_TOKEN } from \"./provider\";\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 const controller = createArrayBinding<TForm, P>(store, path);\n\n const valuesSig = signal<BitArrayItem<BitPathValue<TForm, P>>[]>(\n controller.readItems(),\n );\n\n const unsub = store.observe.subscribePath(path, () => {\n valuesSig.set(controller.readItems());\n });\n\n destroyRef.onDestroy(() => {\n unsub();\n cleanupRegisteredPrefix(store, `${path as string}.`);\n });\n\n return {\n fields: computed(() => controller.getFields(valuesSig())),\n length: computed(() => valuesSig().length),\n append: controller.append,\n prepend: controller.prepend,\n remove: controller.remove,\n insert: controller.insert,\n swap: controller.swap,\n move: controller.move,\n replace: controller.replace,\n clear: controller.clear,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["/builds/kenji.ccp-group/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","adapted","createFrameworkStoreAdapter","inject","error","useBitStore","injectBitForm","destroyRef","stateSignal","signal","submitError","lastResponse","sub","observeFormMetaSnapshot","nextMeta","isValid","computed","isSubmitting","isDirty","controller","actions","createFrameworkFormBinding","result","injectBitField","path","unsubscribe","nextState","cleanupRegisteredField","value","metaState","deriveFieldMeta","touched","invalid","isValidating","isHidden","isRequired","fieldController","createFrameworkMaskedFieldBinding","displayValue","setValue","val","setBlur","hasError","e","isBitFieldInputEventObject","injectBitArray","createArrayBinding","valuesSig","unsub","cleanupRegisteredPrefix"],"mappings":"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","file":"/builds/kenji.ccp-group/bit-form/dist/angular/index.cjs","sourcesContent":[null,"import { DestroyRef, inject, InjectionToken, Provider } from \"@angular/core\";\nimport type { BitFrameworkStoreApi, BitStoreApi } from \"../core\";\nimport { createFrameworkStoreAdapter } from \"../core\";\n\nexport const BIT_STORE_TOKEN = new InjectionToken<BitFrameworkStoreApi<any>>(\n \"BIT_STORE\",\n);\n\nexport function provideBitStore<T extends object>(\n store: BitFrameworkStoreApi<T> | BitStoreApi<T>,\n): Provider {\n const adapted = createFrameworkStoreAdapter<T>(store);\n\n try {\n const destroyRef = inject(DestroyRef);\n destroyRef.onDestroy(() => {\n adapted.feature?.cleanup?.();\n });\n } catch (error: unknown) {\n if (error instanceof Error && error.message?.includes(\"inject\")) {\n // Called outside injection context (e.g., root module)\n } else {\n throw error;\n }\n }\n\n return {\n provide: BIT_STORE_TOKEN,\n useValue: adapted,\n };\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 BitFrameworkStoreApi<T>;\n}\n","import { signal, computed, inject, DestroyRef } from \"@angular/core\";\nimport { useBitStore } from \"./provider\";\nimport { createFrameworkFormBinding, observeFormMetaSnapshot } from \"../core\";\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: true,\n isDirty: false,\n isSubmitting: false,\n });\n const submitError = signal<Error | null>(null);\n const lastResponse = signal<unknown>(null);\n\n const sub = observeFormMetaSnapshot(store, (nextMeta) => {\n stateSignal.set(nextMeta);\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, actions } = createFrameworkFormBinding(\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 ...actions,\n };\n}\n","import { DestroyRef, computed, inject, signal } from \"@angular/core\";\nimport {\n BitPath,\n BitPathValue,\n cleanupRegisteredField,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n isBitFieldInputEventObject,\n} from \"../core\";\nimport { BIT_STORE_TOKEN } from \"./provider\";\nimport type { BitFieldInputEvent, InjectBitFieldResult } from \"./types\";\n\nexport function injectBitField<\n _TValue = any,\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): InjectBitFieldResult<TForm, P> {\n const store = inject(BIT_STORE_TOKEN);\n\n const stateSignal = signal(store.read.getFieldState(path));\n\n const unsubscribe = store.observe.subscribeFieldState(path, (nextState) => {\n stateSignal.set(nextState);\n });\n\n inject(DestroyRef).onDestroy(() => {\n unsubscribe();\n cleanupRegisteredField(store, path as string);\n });\n\n const value = computed(() => stateSignal().value as BitPathValue<TForm, P>);\n const metaState = computed(() => deriveFieldMeta(stateSignal()));\n const error = computed(() => metaState().error);\n const touched = computed(() => metaState().touched);\n const invalid = computed(() => metaState().invalid);\n const isDirty = computed(() => metaState().isDirty);\n const isValidating = computed(() => metaState().isValidating);\n const isHidden = computed(() => metaState().isHidden);\n const isRequired = computed(() => metaState().isRequired);\n\n const { fieldController } = createFrameworkMaskedFieldBinding(store, path);\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(() => metaState().hasError);\n\n const onBlur = () => fieldController.setBlur();\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 onBlur,\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 { computed, DestroyRef, inject, signal } from \"@angular/core\";\nimport {\n BitArrayItem,\n BitArrayPath,\n BitPathValue,\n cleanupRegisteredPrefix,\n createArrayBinding,\n} from \"../core\";\nimport { BIT_STORE_TOKEN } from \"./provider\";\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 const controller = createArrayBinding<TForm, P>(store, path);\n\n const valuesSig = signal<BitArrayItem<BitPathValue<TForm, P>>[]>(\n controller.readItems(),\n );\n\n const unsub = store.observe.subscribePath(path, () => {\n valuesSig.set(controller.readItems());\n });\n\n destroyRef.onDestroy(() => {\n unsub();\n cleanupRegisteredPrefix(store, `${path as string}.`);\n });\n\n return {\n fields: computed(() => controller.getFields(valuesSig())),\n length: computed(() => valuesSig().length),\n append: controller.append,\n prepend: controller.prepend,\n remove: controller.remove,\n insert: controller.insert,\n swap: controller.swap,\n move: controller.move,\n replace: controller.replace,\n clear: controller.clear,\n };\n}\n"]}
|
package/dist/angular/index.d.cts
CHANGED
|
@@ -114,7 +114,6 @@ interface InjectBitScopeResult {
|
|
|
114
114
|
getErrors: () => Record<string, string>;
|
|
115
115
|
isValid: Signal<boolean>;
|
|
116
116
|
isDirty: Signal<boolean>;
|
|
117
|
-
unsubscribe: () => void;
|
|
118
117
|
}
|
|
119
118
|
declare function injectBitScope(scopeName: string): InjectBitScopeResult;
|
|
120
119
|
|
package/dist/angular/index.d.ts
CHANGED
|
@@ -114,7 +114,6 @@ interface InjectBitScopeResult {
|
|
|
114
114
|
getErrors: () => Record<string, string>;
|
|
115
115
|
isValid: Signal<boolean>;
|
|
116
116
|
isDirty: Signal<boolean>;
|
|
117
|
-
unsubscribe: () => void;
|
|
118
117
|
}
|
|
119
118
|
declare function injectBitScope(scopeName: string): InjectBitScopeResult;
|
|
120
119
|
|
package/dist/angular/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as
|
|
1
|
+
import{a as tt,b as et}from"../chunk-CATA7YEV.js";import"../chunk-5NA2TFPG.js";import{d as W}from"../chunk-7T7L2TZX.js";import{c as z,f as L,g as G,h as J,i as Q,j as X,k as Y}from"../chunk-L42NQRVD.js";import{a as Z}from"../chunk-W2E5UIXT.js";import{b as E,f as K,g as C}from"../chunk-UIKO6GGW.js";import{a as N}from"../chunk-L57KMBXS.js";import"../chunk-Y7TQTZY7.js";import{c as _,f as q}from"../chunk-UBVVBVLS.js";import"../chunk-MBEQLBJB.js";import{a as $}from"../chunk-DGEGYNQL.js";import{DestroyRef as ct,inject as rt,InjectionToken as lt}from"@angular/core";var R=new lt("BIT_STORE");function ut(t){let e=W(t);try{rt(ct).onDestroy(()=>{e.feature?.cleanup?.()})}catch(r){if(!(r instanceof Error&&r.message?.includes("inject")))throw r}return{provide:R,useValue:e}}function d(){let t=rt(R,{optional:!0});if(!t)throw new Error('BitForm: N\xE3o foi poss\xEDvel encontrar a BitStore. Certifique-se de que voc\xEA adicionou "provideBitStore(store)" nos providers do seu componente.');return t}import{signal as D,computed as w,inject as dt,DestroyRef as pt}from"@angular/core";function mt(){let t=d(),e=dt(pt),r=D({isValid:!0,isDirty:!1,isSubmitting:!1}),o=D(null),i=D(null),s=z(t,n=>{r.set(n)});e.onDestroy(()=>s());let u=w(()=>r().isValid),c=w(()=>r().isSubmitting),p=w(()=>r().isDirty),{controller:l,actions:S}=Q(t,{clearSubmissionState:()=>{o.set(null),i.set(null)},setSubmissionResult:n=>{i.set(n)},setSubmissionError:n=>{o.set(n)}},{stopPropagation:!0});return{meta:{isValid:u,isDirty:p,isSubmitting:c,submitError:o.asReadonly(),lastResponse:i.asReadonly()},getValues:l.getValues,getErrors:l.getErrors,getTouched:l.getTouched,getDirtyValues:l.getDirtyValues,submit:l.submit,onSubmit:l.onSubmit,reset:l.reset,...S}}import{DestroyRef as ft,computed as f,inject as ot,signal as St}from"@angular/core";function k(t){let e=ot(R),r=St(e.read.getFieldState(t)),o=e.observe.subscribeFieldState(t,g=>{r.set(g)});ot(ft).onDestroy(()=>{o(),X(e,t)});let i=f(()=>r().value),s=f(()=>N(r())),u=f(()=>s().error),c=f(()=>s().touched),p=f(()=>s().invalid),l=f(()=>s().isDirty),S=f(()=>s().isValidating),y=f(()=>s().isHidden),n=f(()=>s().isRequired),{fieldController:B}=J(e,t),h=f(()=>B.displayValue(i())),P=g=>{B.setValue(g)},x=()=>B.setBlur(),V=f(()=>s().hasError);return{value:i,displayValue:h,setValue:P,setBlur:x,update:g=>P($(g)?g.target?.value??null:g),onBlur:()=>B.setBlur(),meta:{error:u,touched:c,invalid:p,isDirty:l,isValidating:S,isHidden:y,isRequired:n,hasError:V}}}import{computed as st,DestroyRef as yt,inject as it,signal as gt}from"@angular/core";function Bt(t){let e=it(R),r=it(yt),o=G(e,t),i=gt(o.readItems()),s=e.observe.subscribePath(t,()=>{i.set(o.readItems())});return r.onDestroy(()=>{s(),Y(e,`${t}.`)}),{fields:st(()=>o.getFields(i())),length:st(()=>i().length),append:o.append,prepend:o.prepend,remove:o.remove,insert:o.insert,swap:o.swap,move:o.move,replace:o.replace,clear:o.clear}}import{computed as T,DestroyRef as Rt,inject as bt,signal as jt}from"@angular/core";function vt(){let t=d(),e=bt(Rt),r=jt(K(t)),o=C(t,i=>{r.set(i)});return e.onDestroy(()=>o()),{canUndo:T(()=>r().canUndo),canRedo:T(()=>r().canRedo),historyIndex:T(()=>r().historyIndex),historySize:T(()=>r().historySize),undo:()=>t.feature.undo(),redo:()=>t.feature.redo()}}import{computed as U,DestroyRef as Ft,inject as Pt,signal as Tt}from"@angular/core";function ht(t){let e=d(),r=e.read.getScopeStatus(t),o=Tt(r),i=Z(e,t,y=>{o.set(y)});Pt(Ft).onDestroy(()=>i());let u=async()=>{let y=await e.feature.validate({scope:t}),n=e.read.getScopeErrors(t);return{valid:y,errors:n}},c=()=>e.read.getScopeErrors(t),p=U(()=>!o().hasErrors),l=U(()=>o().isDirty),S=U(()=>o().errors);return{scopeName:t,status:o,errors:S,validate:u,getErrors:c,isValid:p,isDirty:l}}import{computed as v,DestroyRef as xt,inject as Vt,signal as nt}from"@angular/core";function It(t){if(t.length===0)throw new Error("injectBitSteps: scopeNames must not be empty");let e=d(),r=nt(0),o=v(()=>t[r()]??""),i=()=>t[r()]??"",s=nt(e.read.getScopeStatus(i())),u=i(),c=e.observe.subscribeScopeStatus(u,a=>{i()===u&&(E(s(),a)||s.set(a))}),p=()=>{let a=i(),m=e.observe.subscribeScopeStatus(a,b=>{i()===a&&(E(s(),b)||s.set(b))}),F=c;c=m,u=a,F()};Vt(xt).onDestroy(()=>c());let S=async()=>{let a=i(),m=r(),F=await e.feature.validate({scope:a});if(r()!==m){let j=i();return{valid:await e.feature.validate({scope:j}),errors:e.read.getScopeErrors(j)}}let b=e.read.getScopeErrors(a);return{valid:F,errors:b}},y=()=>e.read.getScopeErrors(i()),n=async()=>{let a=r(),m=t[a]??"";if(!m)return!1;let F=e.read.getScopeFields(m);if(e.feature.hasValidationsInProgress(F))return!1;let b=await e.feature.validate({scope:m});if(r()!==a)return!1;if(b){let j=Math.min(a+1,t.length-1);r.set(j),s.set(e.read.getScopeStatus(t[j]??"")),p()}else{let j=e.read.getScopeErrors(m),I=Object.keys(j);I.length>0&&e.write.markFieldsTouched(I),s.set(e.read.getScopeStatus(m))}return b},B=()=>{let a=Math.max(r()-1,0);r.set(a),s.set(e.read.getScopeStatus(t[a]??"")),p()},h=a=>{let m=Math.max(0,Math.min(a-1,t.length-1));r.set(m),s.set(e.read.getScopeStatus(t[m]??"")),p()},P=v(()=>r()+1),x=v(()=>r()===0),V=v(()=>r()>=t.length-1),H=v(()=>!s().hasErrors),O=v(()=>s().isDirty),g=v(()=>s().errors);return{step:P,stepIndex:r,scope:o,next:n,prev:B,goTo:h,isFirst:x,isLast:V,status:s,errors:g,isValid:H,isDirty:O,validate:S,getErrors:y}}import{DestroyRef as Et,signal as Dt,inject as wt}from"@angular/core";function kt(t){let e=d(),r=wt(Et),o=Dt(q(e.read.getState().values,t),{equal:_}),i=e.observe.subscribePath(t,s=>{o.set(s)});return r.onDestroy(i),o.asReadonly()}import{computed as A,DestroyRef as Ut,inject as at,signal as At}from"@angular/core";function Mt(t,e,r){let o=at(R),i=k(t),s=null,u=At(!1),c={current:0},p={setLoading:n=>u.set(n),setError:(n,B)=>o.write.setError(n,B),setValue:n=>i.setValue(n),getUploadKey:()=>s,setUploadKey:n=>{s=n},onCallbackError:n=>o.read.config.onUnhandledError(n,"upload")},l=tt(t,e,p,c),S=et(t,r,p,c);return at(Ut).onDestroy(()=>{c.current++,s=null}),{value:A(()=>i.value()),setValue:i.setValue,error:A(()=>i.meta.error()),isValidating:A(()=>!!i.meta.isValidating()||u()),upload:l,remove:S}}import{computed as M,DestroyRef as Ht,inject as Ot,signal as _t}from"@angular/core";function qt(){let t=d(),e=_t(t.read.getPersistMetadata()),r=L(t,c=>{e.set(c)});return Ot(Ht).onDestroy(()=>r()),{restore:async()=>t.feature.restorePersisted(),save:async()=>{await t.feature.forceSave()},clear:async()=>{await t.feature.clearPersisted()},meta:{isSaving:M(()=>e().isSaving),isRestoring:M(()=>e().isRestoring),error:M(()=>e().error)}}}export{Bt as injectBitArray,k as injectBitField,mt as injectBitForm,vt as injectBitHistory,qt as injectBitPersist,ht as injectBitScope,It as injectBitSteps,Mt as injectBitUpload,kt as injectBitWatch,ut as provideBitStore,d 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 { DestroyRef, inject, InjectionToken, Provider } from \"@angular/core\";\nimport type { BitFrameworkStoreApi, BitStoreApi } from \"../core\";\nimport { createFrameworkStoreAdapter } from \"../core\";\n\nexport const BIT_STORE_TOKEN = new InjectionToken<BitFrameworkStoreApi<any>>(\n \"BIT_STORE\",\n);\n\nexport function provideBitStore<T extends object>(\n store: BitFrameworkStoreApi<T> | BitStoreApi<T>,\n): Provider {\n const adapted = createFrameworkStoreAdapter<T>(store);\n\n try {\n const destroyRef = inject(DestroyRef);\n destroyRef.onDestroy(() => {\n (adapted as any).feature?.cleanup?.();\n });\n } catch {\n // Called outside injection context (e.g., root module) — cleanup is\n // the caller's responsibility.\n }\n\n return {\n provide: BIT_STORE_TOKEN,\n useValue: adapted,\n };\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 BitFrameworkStoreApi<T>;\n}\n","import { signal, computed, inject, DestroyRef } from \"@angular/core\";\nimport { useBitStore } from \"./provider\";\nimport { createFrameworkFormBinding, observeFormMetaSnapshot } from \"../core\";\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: true,\n isDirty: false,\n isSubmitting: false,\n });\n const submitError = signal<Error | null>(null);\n const lastResponse = signal<unknown>(null);\n\n const sub = observeFormMetaSnapshot(store, (nextMeta) => {\n stateSignal.set(nextMeta);\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, actions } = createFrameworkFormBinding(\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 ...actions,\n };\n}\n","import { DestroyRef, computed, inject, signal } from \"@angular/core\";\nimport {\n BitPath,\n BitPathValue,\n cleanupRegisteredField,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n isBitFieldInputEventObject,\n} from \"../core\";\nimport { BIT_STORE_TOKEN } from \"./provider\";\nimport type { BitFieldInputEvent, InjectBitFieldResult } from \"./types\";\n\nexport function injectBitField<\n _TValue = any,\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): InjectBitFieldResult<TForm, P> {\n const store = inject(BIT_STORE_TOKEN);\n\n const stateSignal = signal(store.read.getFieldState(path));\n\n const unsubscribe = store.observe.subscribeFieldState(path, (nextState) => {\n stateSignal.set(nextState);\n });\n\n inject(DestroyRef).onDestroy(() => {\n unsubscribe();\n cleanupRegisteredField(store, path as string);\n });\n\n const value = computed(() => stateSignal().value as BitPathValue<TForm, P>);\n const metaState = computed(() => deriveFieldMeta(stateSignal()));\n const error = computed(() => metaState().error);\n const touched = computed(() => metaState().touched);\n const invalid = computed(() => metaState().invalid);\n const isDirty = computed(() => metaState().isDirty);\n const isValidating = computed(() => metaState().isValidating);\n const isHidden = computed(() => metaState().isHidden);\n const isRequired = computed(() => metaState().isRequired);\n\n const { fieldController } = createFrameworkMaskedFieldBinding(store, path);\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(() => metaState().hasError);\n\n const onBlur = () => fieldController.setBlur();\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 onBlur,\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 { computed, DestroyRef, inject, signal } from \"@angular/core\";\nimport {\n BitArrayItem,\n BitArrayPath,\n BitPathValue,\n cleanupRegisteredPrefix,\n createArrayBinding,\n} from \"../core\";\nimport { BIT_STORE_TOKEN } from \"./provider\";\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 const controller = createArrayBinding<TForm, P>(store, path);\n\n const valuesSig = signal<BitArrayItem<BitPathValue<TForm, P>>[]>(\n controller.readItems(),\n );\n\n const unsub = store.observe.subscribePath(path, () => {\n valuesSig.set(controller.readItems());\n });\n\n destroyRef.onDestroy(() => {\n unsub();\n cleanupRegisteredPrefix(store, `${path as string}.`);\n });\n\n return {\n fields: computed(() => controller.getFields(valuesSig())),\n length: computed(() => valuesSig().length),\n append: controller.append,\n prepend: controller.prepend,\n remove: controller.remove,\n insert: controller.insert,\n swap: controller.swap,\n move: controller.move,\n replace: controller.replace,\n clear: controller.clear,\n };\n}\n","import { computed, DestroyRef, inject, signal } from \"@angular/core\";\nimport { observeHistoryMetaSnapshot, readHistoryMetaSnapshot } from \"../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(readHistoryMetaSnapshot(store));\n\n const sub = observeHistoryMetaSnapshot(store, (nextMeta) => {\n meta.set(nextMeta);\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.feature.undo(),\n redo: () => store.feature.redo(),\n };\n}\n","import type { Signal } from \"@angular/core\";\nimport { computed, DestroyRef, inject, signal } from \"@angular/core\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { observeScopeStatusSnapshot } from \"../core\";\nimport { useBitStore } from \"./provider\";\n\nexport type { ScopeStatus, ValidateScopeResult };\n\ninterface InjectBitScopeResult {\n scopeName: string;\n status: Signal<ScopeStatus>;\n errors: Signal<Record<string, string>>;\n validate: () => Promise<ValidateScopeResult>;\n getErrors: () => Record<string, string>;\n isValid: Signal<boolean>;\n isDirty: Signal<boolean>;\n unsubscribe: () => void;\n}\n\nexport function injectBitScope(scopeName: string): InjectBitScopeResult {\n const store = useBitStore();\n const initialStatus = store.read.getScopeStatus(scopeName);\n\n const status = signal<ScopeStatus>(initialStatus);\n\n const unsubscribe = observeScopeStatusSnapshot(\n store,\n scopeName,\n (nextStatus) => {\n status.set(nextStatus);\n },\n );\n\n const destroyRef = inject(DestroyRef);\n destroyRef.onDestroy(() => unsubscribe());\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const valid = await store.feature.validate({ scope: scopeName });\n const errors = store.read.getScopeErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.read.getScopeErrors(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 { computed, DestroyRef, inject, signal } from \"@angular/core\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { isScopeStatusEqual } from \"../core\";\nimport { useBitStore } from \"./provider\";\nimport type { InjectBitStepsResult } from \"./types\";\n\nexport function injectBitSteps(scopeNames: string[]): InjectBitStepsResult {\n if (scopeNames.length === 0) {\n throw new Error(\"injectBitSteps: scopeNames must not be empty\");\n }\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>(\n store.read.getScopeStatus(getCurrentScope()),\n );\n\n const updateStatus = (scopeName: string) => {\n const newStatus = store.read.getScopeStatus(scopeName);\n const current = status();\n if (getCurrentScope() === scopeName && !isScopeStatusEqual(current, newStatus)) {\n status.set(newStatus);\n }\n };\n\n let unsubscribe = store.observe.subscribeScopeStatus(\n getCurrentScope(),\n () => updateStatus(getCurrentScope()),\n );\n\n const rebindScopeSubscription = () => {\n unsubscribe();\n unsubscribe = store.observe.subscribeScopeStatus(\n getCurrentScope(),\n () => updateStatus(getCurrentScope()),\n );\n };\n\n const destroyRef = inject(DestroyRef);\n destroyRef.onDestroy(() => unsubscribe());\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const scopeName = getCurrentScope();\n const valid = await store.feature.validate({ scope: scopeName });\n const errors = store.read.getScopeErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.read.getScopeErrors(getCurrentScope());\n\n const next = async (): Promise<boolean> => {\n const scopeName = getCurrentScope();\n\n const scopeFields = store.read.getScopeFields(scopeName);\n if (store.feature.hasValidationsInProgress(scopeFields)) {\n return false;\n }\n\n const valid = await store.feature.validate({ scope: scopeName });\n if (valid) {\n const newIndex = Math.min(stepIndex() + 1, scopeNames.length - 1);\n stepIndex.set(newIndex);\n status.set(store.read.getScopeStatus(scopeNames[newIndex] ?? \"\"));\n rebindScopeSubscription();\n } else {\n const errors = store.read.getScopeErrors(scopeName);\n const pathsWithErrors = Object.keys(errors);\n if (pathsWithErrors.length > 0) {\n store.write.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.read.getScopeStatus(scopeNames[newIndex] ?? \"\"));\n rebindScopeSubscription();\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.read.getScopeStatus(scopeNames[newIndex] ?? \"\"));\n rebindScopeSubscription();\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 { getDeepValue, valueEqual, BitPath, BitPathValue } 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.read.getState().values, path as string) as BitPathValue<\n TForm,\n P\n >,\n { equal: valueEqual },\n );\n\n const unsub = store.observe.subscribePath(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 type { BitDeleteUploadFn, BitUploadFn } from \"../core\";\nimport { createRemoveHandler, createUploadHandler } from \"../core/adapters\";\nimport { injectBitField } from \"./inject-bit-field\";\nimport { BIT_STORE_TOKEN } from \"./provider\";\nimport type { InjectBitUploadResult } from \"./types\";\n\nexport function injectBitUpload<\n TMetadata extends Record<string, unknown> = Record<string, unknown>,\n>(\n fieldPath: string,\n uploadFn: BitUploadFn<TMetadata>,\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 const sharedGen = { current: 0 };\n\n const kernelCallbacks = {\n setLoading: (val: boolean) => isUploading.set(val),\n setError: (path: string, msg: string | undefined) =>\n store.write.setError(path, msg),\n setValue: (val: string | null) => field.setValue(val),\n getUploadKey: () => uploadKey,\n setUploadKey: (key: string | null) => {\n uploadKey = key;\n },\n onCallbackError: (e: unknown) =>\n store.read.config.onUnhandledError(e, \"upload\"),\n };\n\n const upload = createUploadHandler(fieldPath, uploadFn, kernelCallbacks, sharedGen);\n const remove = createRemoveHandler(fieldPath, deleteFile, kernelCallbacks, sharedGen);\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, DestroyRef, inject, signal } from \"@angular/core\";\nimport { observePersistMetaSnapshot } from \"../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.read.getPersistMetadata());\n\n const unsubscribe = observePersistMetaSnapshot(store, (nextPersist) => {\n persist.set(nextPersist);\n });\n\n const destroyRef = inject(DestroyRef);\n destroyRef.onDestroy(() => unsubscribe());\n\n const restore = async (): Promise<boolean> => {\n return store.feature.restorePersisted();\n };\n\n const save = async (): Promise<void> => {\n await store.feature.forceSave();\n };\n\n const clear = async (): Promise<void> => {\n await store.feature.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":["DestroyRef","inject","InjectionToken","BIT_STORE_TOKEN","InjectionToken","provideBitStore","store","adapted","createFrameworkStoreAdapter","inject","DestroyRef","useBitStore","signal","computed","inject","DestroyRef","injectBitForm","store","useBitStore","destroyRef","inject","DestroyRef","stateSignal","signal","submitError","lastResponse","sub","observeFormMetaSnapshot","nextMeta","isValid","computed","isSubmitting","isDirty","controller","actions","createFrameworkFormBinding","result","error","DestroyRef","computed","inject","signal","injectBitField","path","store","inject","BIT_STORE_TOKEN","stateSignal","signal","unsubscribe","nextState","DestroyRef","cleanupRegisteredField","value","computed","metaState","deriveFieldMeta","error","touched","invalid","isDirty","isValidating","isHidden","isRequired","fieldController","createFrameworkMaskedFieldBinding","displayValue","setValue","val","setBlur","hasError","e","isBitFieldInputEventObject","computed","DestroyRef","inject","signal","injectBitArray","path","store","inject","BIT_STORE_TOKEN","destroyRef","DestroyRef","controller","createArrayBinding","valuesSig","signal","unsub","cleanupRegisteredPrefix","computed","computed","DestroyRef","inject","signal","injectBitHistory","store","useBitStore","destroyRef","inject","DestroyRef","meta","signal","readHistoryMetaSnapshot","sub","observeHistoryMetaSnapshot","nextMeta","computed","computed","DestroyRef","inject","signal","injectBitScope","scopeName","store","useBitStore","initialStatus","status","signal","unsubscribe","observeScopeStatusSnapshot","nextStatus","inject","DestroyRef","validate","valid","errors","getErrors","isValid","computed","isDirty","computed","DestroyRef","inject","signal","injectBitSteps","scopeNames","store","useBitStore","stepIndex","signal","scope","computed","getCurrentScope","status","updateStatus","scopeName","newStatus","current","isScopeStatusEqual","unsubscribe","rebindScopeSubscription","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","valueEqual","unsub","v","computed","inject","signal","injectBitUpload","fieldPath","uploadFn","deleteFile","store","inject","BIT_STORE_TOKEN","field","injectBitField","uploadKey","isUploading","signal","sharedGen","kernelCallbacks","val","path","msg","key","e","upload","createUploadHandler","remove","createRemoveHandler","computed","computed","DestroyRef","inject","signal","injectBitPersist","store","useBitStore","persist","signal","unsubscribe","observePersistMetaSnapshot","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 { DestroyRef, inject, InjectionToken, Provider } from \"@angular/core\";\nimport type { BitFrameworkStoreApi, BitStoreApi } from \"../core\";\nimport { createFrameworkStoreAdapter } from \"../core\";\n\nexport const BIT_STORE_TOKEN = new InjectionToken<BitFrameworkStoreApi<any>>(\n \"BIT_STORE\",\n);\n\nexport function provideBitStore<T extends object>(\n store: BitFrameworkStoreApi<T> | BitStoreApi<T>,\n): Provider {\n const adapted = createFrameworkStoreAdapter<T>(store);\n\n try {\n const destroyRef = inject(DestroyRef);\n destroyRef.onDestroy(() => {\n adapted.feature?.cleanup?.();\n });\n } catch (error: unknown) {\n if (error instanceof Error && error.message?.includes(\"inject\")) {\n // Called outside injection context (e.g., root module)\n } else {\n throw error;\n }\n }\n\n return {\n provide: BIT_STORE_TOKEN,\n useValue: adapted,\n };\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 BitFrameworkStoreApi<T>;\n}\n","import { signal, computed, inject, DestroyRef } from \"@angular/core\";\nimport { useBitStore } from \"./provider\";\nimport { createFrameworkFormBinding, observeFormMetaSnapshot } from \"../core\";\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: true,\n isDirty: false,\n isSubmitting: false,\n });\n const submitError = signal<Error | null>(null);\n const lastResponse = signal<unknown>(null);\n\n const sub = observeFormMetaSnapshot(store, (nextMeta) => {\n stateSignal.set(nextMeta);\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, actions } = createFrameworkFormBinding(\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 ...actions,\n };\n}\n","import { DestroyRef, computed, inject, signal } from \"@angular/core\";\nimport {\n BitPath,\n BitPathValue,\n cleanupRegisteredField,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n isBitFieldInputEventObject,\n} from \"../core\";\nimport { BIT_STORE_TOKEN } from \"./provider\";\nimport type { BitFieldInputEvent, InjectBitFieldResult } from \"./types\";\n\nexport function injectBitField<\n _TValue = any,\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): InjectBitFieldResult<TForm, P> {\n const store = inject(BIT_STORE_TOKEN);\n\n const stateSignal = signal(store.read.getFieldState(path));\n\n const unsubscribe = store.observe.subscribeFieldState(path, (nextState) => {\n stateSignal.set(nextState);\n });\n\n inject(DestroyRef).onDestroy(() => {\n unsubscribe();\n cleanupRegisteredField(store, path as string);\n });\n\n const value = computed(() => stateSignal().value as BitPathValue<TForm, P>);\n const metaState = computed(() => deriveFieldMeta(stateSignal()));\n const error = computed(() => metaState().error);\n const touched = computed(() => metaState().touched);\n const invalid = computed(() => metaState().invalid);\n const isDirty = computed(() => metaState().isDirty);\n const isValidating = computed(() => metaState().isValidating);\n const isHidden = computed(() => metaState().isHidden);\n const isRequired = computed(() => metaState().isRequired);\n\n const { fieldController } = createFrameworkMaskedFieldBinding(store, path);\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(() => metaState().hasError);\n\n const onBlur = () => fieldController.setBlur();\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 onBlur,\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 { computed, DestroyRef, inject, signal } from \"@angular/core\";\nimport {\n BitArrayItem,\n BitArrayPath,\n BitPathValue,\n cleanupRegisteredPrefix,\n createArrayBinding,\n} from \"../core\";\nimport { BIT_STORE_TOKEN } from \"./provider\";\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 const controller = createArrayBinding<TForm, P>(store, path);\n\n const valuesSig = signal<BitArrayItem<BitPathValue<TForm, P>>[]>(\n controller.readItems(),\n );\n\n const unsub = store.observe.subscribePath(path, () => {\n valuesSig.set(controller.readItems());\n });\n\n destroyRef.onDestroy(() => {\n unsub();\n cleanupRegisteredPrefix(store, `${path as string}.`);\n });\n\n return {\n fields: computed(() => controller.getFields(valuesSig())),\n length: computed(() => valuesSig().length),\n append: controller.append,\n prepend: controller.prepend,\n remove: controller.remove,\n insert: controller.insert,\n swap: controller.swap,\n move: controller.move,\n replace: controller.replace,\n clear: controller.clear,\n };\n}\n","import { computed, DestroyRef, inject, signal } from \"@angular/core\";\nimport { observeHistoryMetaSnapshot, readHistoryMetaSnapshot } from \"../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(readHistoryMetaSnapshot(store));\n\n const sub = observeHistoryMetaSnapshot(store, (nextMeta) => {\n meta.set(nextMeta);\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.feature.undo(),\n redo: () => store.feature.redo(),\n };\n}\n","import type { Signal } from \"@angular/core\";\nimport { computed, DestroyRef, inject, signal } from \"@angular/core\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { observeScopeStatusSnapshot } from \"../core\";\nimport { useBitStore } from \"./provider\";\n\nexport type { ScopeStatus, ValidateScopeResult };\n\ninterface InjectBitScopeResult {\n scopeName: string;\n status: Signal<ScopeStatus>;\n errors: Signal<Record<string, string>>;\n validate: () => Promise<ValidateScopeResult>;\n getErrors: () => Record<string, string>;\n isValid: Signal<boolean>;\n isDirty: Signal<boolean>;\n}\n\nexport function injectBitScope(scopeName: string): InjectBitScopeResult {\n const store = useBitStore();\n const initialStatus = store.read.getScopeStatus(scopeName);\n\n const status = signal<ScopeStatus>(initialStatus);\n\n const unsubscribe = observeScopeStatusSnapshot(\n store,\n scopeName,\n (nextStatus) => {\n status.set(nextStatus);\n },\n );\n\n const destroyRef = inject(DestroyRef);\n destroyRef.onDestroy(() => unsubscribe());\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const valid = await store.feature.validate({ scope: scopeName });\n const errors = store.read.getScopeErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.read.getScopeErrors(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 };\n}\n","import { computed, DestroyRef, inject, signal } from \"@angular/core\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { isScopeStatusEqual } from \"../core\";\nimport { useBitStore } from \"./provider\";\nimport type { InjectBitStepsResult } from \"./types\";\n\nexport function injectBitSteps(scopeNames: string[]): InjectBitStepsResult {\n if (scopeNames.length === 0) {\n throw new Error(\"injectBitSteps: scopeNames must not be empty\");\n }\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>(\n store.read.getScopeStatus(getCurrentScope()),\n );\n\n let currentSubscribedScope = getCurrentScope();\n let unsubscribe = store.observe.subscribeScopeStatus(\n currentSubscribedScope,\n (nextStatus) => {\n if (getCurrentScope() !== currentSubscribedScope) return;\n if (!isScopeStatusEqual(status(), nextStatus)) {\n status.set(nextStatus);\n }\n },\n );\n\n const rebindScopeSubscription = () => {\n const newScope = getCurrentScope();\n const newUnsub = store.observe.subscribeScopeStatus(\n newScope,\n (nextStatus) => {\n if (getCurrentScope() !== newScope) return;\n if (!isScopeStatusEqual(status(), nextStatus)) {\n status.set(nextStatus);\n }\n },\n );\n const oldUnsub = unsubscribe;\n unsubscribe = newUnsub;\n currentSubscribedScope = newScope;\n oldUnsub();\n };\n\n const destroyRef = inject(DestroyRef);\n destroyRef.onDestroy(() => unsubscribe());\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const scopeName = getCurrentScope();\n const startIndex = stepIndex();\n const valid = await store.feature.validate({ scope: scopeName });\n if (stepIndex() !== startIndex) {\n const current = getCurrentScope();\n const reValid = await store.feature.validate({ scope: current });\n return { valid: reValid, errors: store.read.getScopeErrors(current) };\n }\n const errors = store.read.getScopeErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.read.getScopeErrors(getCurrentScope());\n\n const next = async (): Promise<boolean> => {\n const startIndex = stepIndex();\n const scopeName = scopeNames[startIndex] ?? \"\";\n\n if (!scopeName) return false;\n\n const scopeFields = store.read.getScopeFields(scopeName);\n if (store.feature.hasValidationsInProgress(scopeFields)) {\n return false;\n }\n\n const valid = await store.feature.validate({ scope: scopeName });\n\n if (stepIndex() !== startIndex) return false;\n\n if (valid) {\n const newIndex = Math.min(startIndex + 1, scopeNames.length - 1);\n stepIndex.set(newIndex);\n status.set(store.read.getScopeStatus(scopeNames[newIndex] ?? \"\"));\n rebindScopeSubscription();\n } else {\n const errors = store.read.getScopeErrors(scopeName);\n const pathsWithErrors = Object.keys(errors);\n if (pathsWithErrors.length > 0) {\n store.write.markFieldsTouched(pathsWithErrors);\n }\n status.set(store.read.getScopeStatus(scopeName));\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.read.getScopeStatus(scopeNames[newIndex] ?? \"\"));\n rebindScopeSubscription();\n };\n\n const goTo = (stepNumber: number) => {\n const newIndex = Math.max(\n 0,\n Math.min(stepNumber - 1, scopeNames.length - 1),\n );\n stepIndex.set(newIndex);\n status.set(store.read.getScopeStatus(scopeNames[newIndex] ?? \"\"));\n rebindScopeSubscription();\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 { getDeepValue, valueEqual, BitPath, BitPathValue } 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.read.getState().values, path as string) as BitPathValue<\n TForm,\n P\n >,\n { equal: valueEqual },\n );\n\n const unsub = store.observe.subscribePath(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, DestroyRef, inject, signal } from \"@angular/core\";\nimport type { BitDeleteUploadFn, BitUploadFn } from \"../core\";\nimport { createRemoveHandler, createUploadHandler } from \"../core/adapters\";\nimport { injectBitField } from \"./inject-bit-field\";\nimport { BIT_STORE_TOKEN } from \"./provider\";\nimport type { InjectBitUploadResult } from \"./types\";\n\nexport function injectBitUpload<\n TMetadata extends Record<string, unknown> = Record<string, unknown>,\n>(\n fieldPath: string,\n uploadFn: BitUploadFn<TMetadata>,\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 const sharedGen = { current: 0 };\n\n const kernelCallbacks = {\n setLoading: (val: boolean) => isUploading.set(val),\n setError: (path: string, msg: string | undefined) =>\n store.write.setError(path, msg),\n setValue: (val: string | null) => field.setValue(val),\n getUploadKey: () => uploadKey,\n setUploadKey: (key: string | null) => {\n uploadKey = key;\n },\n onCallbackError: (e: unknown) =>\n store.read.config.onUnhandledError(e, \"upload\"),\n };\n\n const upload = createUploadHandler(fieldPath, uploadFn, kernelCallbacks, sharedGen);\n const remove = createRemoveHandler(fieldPath, deleteFile, kernelCallbacks, sharedGen);\n\n const destroyRef = inject(DestroyRef);\n destroyRef.onDestroy(() => {\n sharedGen.current++;\n uploadKey = null;\n });\n\n return {\n value: computed(() => field.value()),\n setValue: field.setValue,\n error: computed(() => field.meta.error()),\n isValidating: computed(() => !!field.meta.isValidating() || isUploading()),\n upload,\n remove,\n };\n}\n","import { computed, DestroyRef, inject, signal } from \"@angular/core\";\nimport { observePersistMetaSnapshot } from \"../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.read.getPersistMetadata());\n\n const unsubscribe = observePersistMetaSnapshot(store, (nextPersist) => {\n persist.set(nextPersist);\n });\n\n const destroyRef = inject(DestroyRef);\n destroyRef.onDestroy(() => unsubscribe());\n\n const restore = async (): Promise<boolean> => {\n return store.feature.restorePersisted();\n };\n\n const save = async (): Promise<void> => {\n await store.feature.forceSave();\n };\n\n const clear = async (): Promise<void> => {\n await store.feature.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":["DestroyRef","inject","InjectionToken","BIT_STORE_TOKEN","InjectionToken","provideBitStore","store","adapted","createFrameworkStoreAdapter","inject","DestroyRef","error","useBitStore","signal","computed","inject","DestroyRef","injectBitForm","store","useBitStore","destroyRef","inject","DestroyRef","stateSignal","signal","submitError","lastResponse","sub","observeFormMetaSnapshot","nextMeta","isValid","computed","isSubmitting","isDirty","controller","actions","createFrameworkFormBinding","result","error","DestroyRef","computed","inject","signal","injectBitField","path","store","inject","BIT_STORE_TOKEN","stateSignal","signal","unsubscribe","nextState","DestroyRef","cleanupRegisteredField","value","computed","metaState","deriveFieldMeta","error","touched","invalid","isDirty","isValidating","isHidden","isRequired","fieldController","createFrameworkMaskedFieldBinding","displayValue","setValue","val","setBlur","hasError","e","isBitFieldInputEventObject","computed","DestroyRef","inject","signal","injectBitArray","path","store","inject","BIT_STORE_TOKEN","destroyRef","DestroyRef","controller","createArrayBinding","valuesSig","signal","unsub","cleanupRegisteredPrefix","computed","computed","DestroyRef","inject","signal","injectBitHistory","store","useBitStore","destroyRef","inject","DestroyRef","meta","signal","readHistoryMetaSnapshot","sub","observeHistoryMetaSnapshot","nextMeta","computed","computed","DestroyRef","inject","signal","injectBitScope","scopeName","store","useBitStore","initialStatus","status","signal","unsubscribe","observeScopeStatusSnapshot","nextStatus","inject","DestroyRef","validate","valid","errors","getErrors","isValid","computed","isDirty","computed","DestroyRef","inject","signal","injectBitSteps","scopeNames","store","useBitStore","stepIndex","signal","scope","computed","getCurrentScope","status","currentSubscribedScope","unsubscribe","nextStatus","isScopeStatusEqual","rebindScopeSubscription","newScope","newUnsub","oldUnsub","inject","DestroyRef","validate","scopeName","startIndex","valid","current","errors","getErrors","next","scopeFields","newIndex","pathsWithErrors","prev","goTo","stepNumber","step","isFirst","isLast","isValid","isDirty","DestroyRef","signal","inject","injectBitWatch","path","store","useBitStore","destroyRef","inject","DestroyRef","valueSig","signal","getDeepValue","valueEqual","unsub","v","computed","DestroyRef","inject","signal","injectBitUpload","fieldPath","uploadFn","deleteFile","store","inject","BIT_STORE_TOKEN","field","injectBitField","uploadKey","isUploading","signal","sharedGen","kernelCallbacks","val","path","msg","key","e","upload","createUploadHandler","remove","createRemoveHandler","DestroyRef","computed","computed","DestroyRef","inject","signal","injectBitPersist","store","useBitStore","persist","signal","unsubscribe","observePersistMetaSnapshot","nextPersist","inject","DestroyRef","computed"]}
|