@lehnihon/bit-form 2.2.9 → 2.2.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/dist/angular/index.cjs +1 -1
  2. package/dist/angular/index.d.cts +19 -52
  3. package/dist/angular/index.d.ts +19 -52
  4. package/dist/angular/index.js +1 -1
  5. package/dist/angular/index.js.map +1 -1
  6. package/dist/bus-BFOBGmd9.d.ts +41 -0
  7. package/dist/bus-DzTqgkZ4.d.cts +41 -0
  8. package/dist/chunk-2AFWJAQG.js +2 -0
  9. package/dist/chunk-2AFWJAQG.js.map +1 -0
  10. package/dist/chunk-4RQFECC7.cjs +2 -0
  11. package/dist/{chunk-J5ALITQW.cjs.map → chunk-4RQFECC7.cjs.map} +1 -1
  12. package/dist/chunk-FLFIOW75.js +2 -0
  13. package/dist/chunk-FLFIOW75.js.map +1 -0
  14. package/dist/chunk-G2FQQDRK.js +2 -0
  15. package/dist/chunk-G2FQQDRK.js.map +1 -0
  16. package/dist/{chunk-X5UCRGYJ.cjs → chunk-GPMAT4PT.cjs} +2 -2
  17. package/dist/{chunk-X5UCRGYJ.cjs.map → chunk-GPMAT4PT.cjs.map} +1 -1
  18. package/dist/{chunk-J5GQLEVA.js → chunk-GQ2QJCBF.js} +2 -2
  19. package/dist/{chunk-GGZPA7AO.cjs → chunk-IVPCXKYW.cjs} +2 -2
  20. package/dist/{chunk-GGZPA7AO.cjs.map → chunk-IVPCXKYW.cjs.map} +1 -1
  21. package/dist/{chunk-N4HCGMMM.js → chunk-LX4GSDUV.js} +2 -2
  22. package/dist/chunk-NVFZ22A7.cjs +2 -0
  23. package/dist/chunk-NVFZ22A7.cjs.map +1 -0
  24. package/dist/{chunk-2QLQPMCZ.js → chunk-OPC7HFNN.js} +2 -2
  25. package/dist/chunk-PA43XYOW.cjs +2 -0
  26. package/dist/{chunk-IV32WXCF.cjs.map → chunk-PA43XYOW.cjs.map} +1 -1
  27. package/dist/chunk-PG7ZH32Z.js +2 -0
  28. package/dist/chunk-PG7ZH32Z.js.map +1 -0
  29. package/dist/chunk-VBX5I5XG.cjs +2 -0
  30. package/dist/chunk-VBX5I5XG.cjs.map +1 -0
  31. package/dist/{chunk-OLQVH24Z.cjs → chunk-ZKAFHJPU.cjs} +2 -2
  32. package/dist/{chunk-OLQVH24Z.cjs.map → chunk-ZKAFHJPU.cjs.map} +1 -1
  33. package/dist/cli/index.cjs +5 -5
  34. package/dist/{types-SOg9xEce.d.cts → config-types-5eR82k2V.d.cts} +40 -169
  35. package/dist/{types-CRCP4Pgq.d.ts → config-types-D9n-rQLk.d.ts} +40 -169
  36. package/dist/core/bindings.cjs +1 -1
  37. package/dist/core/bindings.d.cts +15 -11
  38. package/dist/core/bindings.d.ts +15 -11
  39. package/dist/core/bindings.js +1 -1
  40. package/dist/core/status.d.cts +3 -4
  41. package/dist/core/status.d.ts +3 -4
  42. package/dist/core/store.cjs +1 -1
  43. package/dist/core/store.d.cts +8 -6
  44. package/dist/core/store.d.ts +8 -6
  45. package/dist/core/store.js +1 -1
  46. package/dist/core/utils.cjs +1 -1
  47. package/dist/core/utils.d.cts +1 -2
  48. package/dist/core/utils.d.ts +1 -2
  49. package/dist/core/utils.js +1 -1
  50. package/dist/core.cjs +1 -1
  51. package/dist/core.d.cts +10 -9
  52. package/dist/core.d.ts +10 -9
  53. package/dist/core.js +1 -1
  54. package/dist/devtools/bridge.cjs +1 -1
  55. package/dist/devtools/bridge.d.cts +2 -3
  56. package/dist/devtools/bridge.d.ts +2 -3
  57. package/dist/devtools/bridge.js +1 -1
  58. package/dist/devtools/index.cjs +2 -2
  59. package/dist/devtools/index.d.cts +5 -3
  60. package/dist/devtools/index.d.ts +5 -3
  61. package/dist/devtools/index.js +1 -1
  62. package/dist/{field-binding-MX6jVQbT.d.ts → field-binding-Bi1g-D8X.d.ts} +1 -1
  63. package/dist/{field-binding-B_OX3bjp.d.cts → field-binding-X5TkvfUt.d.cts} +1 -1
  64. package/dist/index.cjs +1 -1
  65. package/dist/index.d.cts +7 -5
  66. package/dist/index.d.ts +7 -5
  67. package/dist/index.js +1 -1
  68. package/dist/mask.d.cts +2 -2
  69. package/dist/mask.d.ts +2 -2
  70. package/dist/meta-types-BC1VLABk.d.cts +28 -0
  71. package/dist/meta-types-BC1VLABk.d.ts +28 -0
  72. package/dist/react/index.cjs +1 -1
  73. package/dist/react/index.cjs.map +1 -1
  74. package/dist/react/index.d.cts +12 -12
  75. package/dist/react/index.d.ts +12 -12
  76. package/dist/react/index.js +1 -1
  77. package/dist/react/index.js.map +1 -1
  78. package/dist/react-native/index.cjs +1 -1
  79. package/dist/react-native/index.d.cts +10 -9
  80. package/dist/react-native/index.d.ts +10 -9
  81. package/dist/react-native/index.js +1 -1
  82. package/dist/resolvers/index.d.cts +2 -3
  83. package/dist/resolvers/index.d.ts +2 -3
  84. package/dist/resolvers/joi.d.cts +2 -3
  85. package/dist/resolvers/joi.d.ts +2 -3
  86. package/dist/resolvers/yup.d.cts +2 -3
  87. package/dist/resolvers/yup.d.ts +2 -3
  88. package/dist/resolvers/zod.d.cts +2 -3
  89. package/dist/resolvers/zod.d.ts +2 -3
  90. package/dist/runtime-types-D1SRZr-n.d.cts +43 -0
  91. package/dist/runtime-types-D1SRZr-n.d.ts +43 -0
  92. package/dist/state-types-8bUndWfg.d.cts +42 -0
  93. package/dist/state-types-8bUndWfg.d.ts +42 -0
  94. package/dist/{store-api-types-Bm3EAqR_.d.cts → store-api-types-Bozwlwyb.d.ts} +9 -5
  95. package/dist/{store-api-types-DfTFy2h4.d.ts → store-api-types-DSgYwMS3.d.cts} +9 -5
  96. package/dist/{types-D8DgIUhJ.d.cts → types-CUXh7PqD.d.cts} +1 -1
  97. package/dist/{types-D8DgIUhJ.d.ts → types-CUXh7PqD.d.ts} +1 -1
  98. package/dist/upload-C4JqIaU2.d.cts +89 -0
  99. package/dist/upload-ao6skK9K.d.ts +89 -0
  100. package/dist/{use-bit-persist-BDMZmxBh.d.ts → use-bit-persist-Bd1H2fge.d.ts} +12 -45
  101. package/dist/{use-bit-persist-CBTZIMc5.d.cts → use-bit-persist-DDxV21AN.d.cts} +12 -45
  102. package/dist/utils.cjs +1 -1
  103. package/dist/utils.js +1 -1
  104. package/dist/vue/index.cjs +1 -1
  105. package/dist/vue/index.d.cts +18 -51
  106. package/dist/vue/index.d.ts +18 -51
  107. package/dist/vue/index.js +1 -1
  108. package/dist/vue/index.js.map +1 -1
  109. package/package.json +2 -2
  110. package/dist/array-controller-C61ByyG6.d.ts +0 -23
  111. package/dist/array-controller-CtlqjA0e.d.cts +0 -23
  112. package/dist/bus-BKuMV3E7.d.ts +0 -19
  113. package/dist/bus-WOHGxuVy.d.cts +0 -19
  114. package/dist/chunk-6LNXTSZ6.cjs +0 -2
  115. package/dist/chunk-6LNXTSZ6.cjs.map +0 -1
  116. package/dist/chunk-IV32WXCF.cjs +0 -2
  117. package/dist/chunk-J5ALITQW.cjs +0 -2
  118. package/dist/chunk-KDHPLXZF.cjs +0 -2
  119. package/dist/chunk-KDHPLXZF.cjs.map +0 -1
  120. package/dist/chunk-O5UPA33R.js +0 -2
  121. package/dist/chunk-O5UPA33R.js.map +0 -1
  122. package/dist/chunk-QX2IVNMK.js +0 -2
  123. package/dist/chunk-QX2IVNMK.js.map +0 -1
  124. package/dist/chunk-UARLAXZX.js +0 -2
  125. package/dist/chunk-UARLAXZX.js.map +0 -1
  126. package/dist/chunk-Y3XVQGCU.js +0 -2
  127. package/dist/chunk-Y3XVQGCU.js.map +0 -1
  128. package/dist/meta-types-Bzmm21TP.d.cts +0 -18
  129. package/dist/meta-types-Bzmm21TP.d.ts +0 -18
  130. package/dist/upload-C2mpfhp1.d.cts +0 -17
  131. package/dist/upload-C2mpfhp1.d.ts +0 -17
  132. /package/dist/{chunk-J5GQLEVA.js.map → chunk-GQ2QJCBF.js.map} +0 -0
  133. /package/dist/{chunk-N4HCGMMM.js.map → chunk-LX4GSDUV.js.map} +0 -0
  134. /package/dist/{chunk-2QLQPMCZ.js.map → chunk-OPC7HFNN.js.map} +0 -0
@@ -1,11 +1,12 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import React from 'react';
3
- import { b as BitFrameworkStoreApi, e as BitStoreApi } from './store-api-types-Bm3EAqR_.cjs';
4
- import './bus-WOHGxuVy.cjs';
5
- import { u as BitPath, v as BitPathValue, x as BitPersistMetadata, S as ScopeStatus, V as ValidateScopeResult, k as BitErrors, I as BitTouched, L as DeepPartial, c as BitArrayPath, b as BitArrayItem } from './types-SOg9xEce.cjs';
6
- import { a as BitArrayBindingField } from './array-controller-CtlqjA0e.cjs';
7
- import { a as BitHistoryMetadata, b as BitValidationOptions } from './meta-types-Bzmm21TP.cjs';
8
- import { B as BitFieldInputEvent } from './field-binding-B_OX3bjp.cjs';
3
+ import { b as BitFrameworkStoreApi, e as BitStoreApi } from './store-api-types-DSgYwMS3.cjs';
4
+ import './bus-DzTqgkZ4.cjs';
5
+ import { d as BitPath, e as BitPathValue, f as BitPersistMetadata, b as BitErrors, h as BitTouched, D as DeepPartial, a as BitArrayPath, B as BitArrayItem } from './state-types-8bUndWfg.cjs';
6
+ import { c as BitHistoryAdapterResult, d as BitPersistAdapterResult, e as BitStepsAdapterResult, f as BitUploadAdapterResult, a as BitArrayBindingField } from './upload-C4JqIaU2.cjs';
7
+ import { S as ScopeStatus, V as ValidateScopeResult } from './runtime-types-D1SRZr-n.cjs';
8
+ import { a as BitHistoryMetadata, b as BitValidationOptions } from './meta-types-BC1VLABk.cjs';
9
+ import { B as BitFieldInputEvent } from './field-binding-X5TkvfUt.cjs';
9
10
 
10
11
  declare const BitFormProvider: ({ store, children, }: {
11
12
  store: BitFrameworkStoreApi<any> | BitStoreApi<any>;
@@ -52,52 +53,18 @@ interface UseBitFieldResult<TForm extends object = any, P extends BitPath<TForm>
52
53
  * Result from useBitSteps hook.
53
54
  * Provides multi-step form navigation and validation.
54
55
  */
55
- interface UseBitStepsResult {
56
- step: number;
57
- stepIndex: number;
58
- scope: string;
59
- next: () => Promise<boolean>;
60
- prev: () => void;
61
- goTo: (step: number) => void;
62
- isFirst: boolean;
63
- isLast: boolean;
64
- status: ScopeStatus;
65
- errors: Record<string, string>;
66
- isValid: boolean;
67
- isDirty: boolean;
68
- validate: () => Promise<ValidateScopeResult>;
69
- getErrors: () => Record<string, string>;
70
- }
56
+ type UseBitStepsResult = BitStepsAdapterResult<number, number, string, boolean, ScopeStatus, Record<string, string>, ValidateScopeResult>;
71
57
  /**
72
58
  * Result from useBitUpload hook.
73
59
  * Provides file upload functionality with integrated validation.
74
60
  */
75
- interface UseBitUploadResult {
76
- value: string | File | null;
77
- setValue: (value: string | File | null) => void;
78
- error?: string;
79
- isValidating: boolean;
80
- upload: (file: File | null | undefined) => Promise<void>;
81
- remove: () => Promise<void>;
82
- }
61
+ type UseBitUploadResult = BitUploadAdapterResult<string | File | null, string | undefined, boolean>;
83
62
  /**
84
63
  * Result from useBitHistory hook.
85
64
  * Provides form history undo/redo capabilities.
86
65
  */
87
- interface UseBitHistoryResult {
88
- canUndo: BitHistoryMetadata["canUndo"];
89
- canRedo: BitHistoryMetadata["canRedo"];
90
- historyIndex: BitHistoryMetadata["historyIndex"];
91
- historySize: BitHistoryMetadata["historySize"];
92
- undo: () => void;
93
- redo: () => void;
94
- }
95
- interface UseBitPersistResult {
96
- restore: () => Promise<boolean>;
97
- save: () => Promise<void>;
98
- clear: () => Promise<void>;
99
- meta: BitPersistMetadata;
100
- }
66
+ type UseBitHistoryResult = BitHistoryAdapterResult<BitHistoryMetadata["canUndo"], BitHistoryMetadata["canRedo"], BitHistoryMetadata["historyIndex"], BitHistoryMetadata["historySize"]>;
67
+ type UseBitPersistResult = BitPersistAdapterResult<BitPersistMetadata>;
101
68
  interface UseBitFormMeta {
102
69
  isValid: boolean;
103
70
  isDirty: boolean;
@@ -111,7 +78,7 @@ interface UseBitFormResult<T extends object = any> {
111
78
  getErrors: () => BitErrors<T>;
112
79
  getTouched: () => BitTouched<T>;
113
80
  getDirtyValues: () => Partial<T>;
114
- submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>) => (e?: {
81
+ submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => unknown | Promise<unknown>) => (e?: {
115
82
  preventDefault: () => void;
116
83
  }) => Promise<void>;
117
84
  onSubmit: (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => (e?: {
package/dist/utils.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk6LNXTSZ6cjs = require('./chunk-6LNXTSZ6.cjs');exports.cleanPrefixedKeys = _chunk6LNXTSZ6cjs.j; exports.extractServerErrors = _chunk6LNXTSZ6cjs.m; exports.isValidationErrorShape = _chunk6LNXTSZ6cjs.l;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkVBX5I5XGcjs = require('./chunk-VBX5I5XG.cjs');exports.cleanPrefixedKeys = _chunkVBX5I5XGcjs.j; exports.extractServerErrors = _chunkVBX5I5XGcjs.m; exports.isValidationErrorShape = _chunkVBX5I5XGcjs.l;
2
2
  //# sourceMappingURL=utils.cjs.map
package/dist/utils.js CHANGED
@@ -1,2 +1,2 @@
1
- import{j as r,l as e,m as a}from"./chunk-QX2IVNMK.js";export{r as cleanPrefixedKeys,a as extractServerErrors,e as isValidationErrorShape};
1
+ import{j as r,l as e,m as a}from"./chunk-FLFIOW75.js";export{r as cleanPrefixedKeys,a as extractServerErrors,e as isValidationErrorShape};
2
2
  //# sourceMappingURL=utils.js.map
@@ -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 _chunkIV32WXCFcjs = require('../chunk-IV32WXCF.cjs');require('../chunk-W5CLDRRE.cjs');var _chunkJ5ALITQWcjs = require('../chunk-J5ALITQW.cjs');var _chunkKDHPLXZFcjs = require('../chunk-KDHPLXZF.cjs');var _chunkBSGJ3T5Scjs = require('../chunk-BSGJ3T5S.cjs');var _chunkRHMJPKNVcjs = require('../chunk-RHMJPKNV.cjs');var _chunk3KI3GEU3cjs = require('../chunk-3KI3GEU3.cjs');require('../chunk-OLQVH24Z.cjs');var _chunk6LNXTSZ6cjs = require('../chunk-6LNXTSZ6.cjs');require('../chunk-PFPGASVZ.cjs');var _vue = require('vue');var G=Symbol("BIT_STORE");function te(t){_vue.provide.call(void 0, G,_chunkJ5ALITQWcjs.d.call(void 0, t))}function a(){let t=_vue.inject.call(void 0, G);if(!t)throw new Error("BitForm Vue hooks devem ser usados sob um provideBitStore");return t}function se(){let t=a(),e=_vue.shallowRef.call(void 0, {isValid:!0,isDirty:!1,isSubmitting:!1}),o=_vue.ref.call(void 0, null),r=_vue.ref.call(void 0, null),i=_chunkKDHPLXZFcjs.c.call(void 0, t,v=>{e.value=v});_vue.onUnmounted.call(void 0, i);let{controller:s,actions:n}=_chunkKDHPLXZFcjs.i.call(void 0, t,{clearSubmissionState:()=>{o.value=null,r.value=null},setSubmissionResult:v=>{r.value=v},setSubmissionError:v=>{o.value=v}}),d=_vue.computed.call(void 0, ()=>e.value.isValid),u=_vue.computed.call(void 0, ()=>e.value.isSubmitting),p=_vue.computed.call(void 0, ()=>e.value.isDirty),c=s.onSubmit,S=s.reset;return{meta:{isValid:d,isDirty:p,isSubmitting:u,submitError:o,lastResponse:r},getValues:s.getValues,getErrors:s.getErrors,getTouched:s.getTouched,getDirtyValues:s.getDirtyValues,submit:s.submit,onSubmit:c,reset:S,...n}}function T(t){let e=a(),{fieldController:o}=_chunkKDHPLXZFcjs.h.call(void 0, e,t),r=_vue.shallowRef.call(void 0, e.read.getFieldState(t)),i=e.observe.subscribeFieldState(t,f=>{r.value=f});_vue.onUnmounted.call(void 0, ()=>{i(),_chunkKDHPLXZFcjs.j.call(void 0, e,t)});let s=_vue.computed.call(void 0, ()=>r.value.value),n=_vue.computed.call(void 0, ()=>o.displayValue(s.value)),d=_vue.computed.call(void 0, {get:()=>n.value,set:f=>{o.setValue(f)}}),u=_vue.computed.call(void 0, ()=>_chunk3KI3GEU3cjs.a.call(void 0, r.value)),p=_vue.computed.call(void 0, ()=>u.value.error),c=_vue.computed.call(void 0, ()=>u.value.touched),S=_vue.computed.call(void 0, ()=>u.value.invalid),b=_vue.computed.call(void 0, ()=>u.value.isValidating),v=_vue.computed.call(void 0, ()=>u.value.isDirty),P=_vue.computed.call(void 0, ()=>u.value.isHidden),V=_vue.computed.call(void 0, ()=>u.value.isRequired),x=_vue.computed.call(void 0, ()=>u.value.hasError),F=f=>{o.setValue(f)},l=()=>o.setBlur();return{value:s,displayValue:n,modelValue:d,setValue:F,setBlur:l,onInput:f=>{F(f)},onBlur:()=>{l()},meta:{error:p,touched:c,invalid:S,isValidating:b,isDirty:v,isHidden:P,isRequired:V,hasError:x}}}function le(t){let e=a(),o=_chunkKDHPLXZFcjs.g.call(void 0, e,t),r=_vue.shallowRef.call(void 0, o.readItems()),i=e.observe.subscribePath(t,()=>{r.value=o.readItems()});_vue.onUnmounted.call(void 0, ()=>{i(),_chunkKDHPLXZFcjs.k.call(void 0, e,`${t}.`)});let s=_vue.computed.call(void 0, ()=>o.getFields(r.value)),n=_vue.computed.call(void 0, ()=>r.value.length);return{fields:s,length:n,append:o.append,prepend:o.prepend,insert:o.insert,remove:o.remove,move:o.move,swap:o.swap,replace:o.replace,clear:o.clear}}function pe(){let t=a(),e=_vue.shallowRef.call(void 0, _chunkRHMJPKNVcjs.f.call(void 0, t)),o=_chunkRHMJPKNVcjs.g.call(void 0, t,s=>{e.value=s});_vue.onUnmounted.call(void 0, o);let r=()=>t.feature.undo(),i=()=>t.feature.redo();return{canUndo:_vue.computed.call(void 0, ()=>e.value.canUndo),canRedo:_vue.computed.call(void 0, ()=>e.value.canRedo),historyIndex:_vue.computed.call(void 0, ()=>e.value.historyIndex),historySize:_vue.computed.call(void 0, ()=>e.value.historySize),undo:r,redo:i}}function Se(t){let e=a(),o=_vue.ref.call(void 0, e.read.getScopeStatus(t)),r;_vue.onMounted.call(void 0, ()=>{r=_chunkBSGJ3T5Scjs.a.call(void 0, e,t,p=>{o.value=p})}),_vue.onUnmounted.call(void 0, ()=>{_optionalChain([r, 'optionalCall', _2 => _2()])});let i=async()=>{let p=await e.feature.validate({scope:t}),c=e.read.getScopeErrors(t);return{valid:p,errors:c}},s=()=>e.read.getScopeErrors(t),n=_vue.computed.call(void 0, ()=>!o.value.hasErrors),d=_vue.computed.call(void 0, ()=>o.value.isDirty),u=_vue.computed.call(void 0, ()=>o.value.errors);return{scopeName:t,status:o,errors:u,validate:i,getErrors:s,isValid:n,isDirty:d}}function be(t){let e=a(),o=_vue.ref.call(void 0, 0),r=_vue.computed.call(void 0, ()=>_nullishCoalesce(t[o.value], () => (""))),i=_vue.ref.call(void 0, e.read.getScopeStatus(r.value)),s;_vue.watch.call(void 0, r,l=>{i.value=e.read.getScopeStatus(l),_optionalChain([s, 'optionalCall', _3 => _3()]),s=e.observe.subscribeScopeStatus(l,n)});let n=()=>{let l=r.value,B=e.read.getScopeStatus(l);_chunkRHMJPKNVcjs.b.call(void 0, i.value,B)||(i.value=B)};_vue.onMounted.call(void 0, ()=>{s=e.observe.subscribeScopeStatus(r.value,n)}),_vue.onUnmounted.call(void 0, ()=>{_optionalChain([s, 'optionalCall', _4 => _4()])});let d=async()=>{let l=r.value,B=await e.feature.validate({scope:l}),g=e.read.getScopeErrors(l);return{valid:B,errors:g}},u=()=>e.read.getScopeErrors(r.value),p=async()=>{let l=r.value,B=e.read.getScopeFields(l);if(e.feature.hasValidationsInProgress(B))return!1;let g=await e.feature.validate({scope:l});if(g)o.value=Math.min(o.value+1,t.length-1);else{let f=e.read.getScopeErrors(l),w=Object.keys(f);w.length>0&&e.write.markFieldsTouched(w)}return g},c=()=>{o.value=Math.max(o.value-1,0)},S=l=>{o.value=Math.max(0,Math.min(l-1,t.length-1))},b=_vue.computed.call(void 0, ()=>o.value+1),v=_vue.computed.call(void 0, ()=>o.value===0),P=_vue.computed.call(void 0, ()=>o.value>=t.length-1),V=_vue.computed.call(void 0, ()=>!i.value.hasErrors),x=_vue.computed.call(void 0, ()=>i.value.isDirty),F=_vue.computed.call(void 0, ()=>i.value.errors);return{step:b,stepIndex:o,scope:r,next:p,prev:c,goTo:S,isFirst:v,isLast:P,status:i,errors:F,isValid:V,isDirty:x,validate:d,getErrors:u}}function Ve(t){let e=a(),o=_chunk6LNXTSZ6cjs.f.call(void 0, e.read.getState().values,t),r=_vue.ref.call(void 0, o),i=e.observe.subscribePath(t,s=>{_chunk6LNXTSZ6cjs.c.call(void 0, r.value,s)||(r.value=s)});return _vue.onUnmounted.call(void 0, i),_vue.readonly.call(void 0, r)}function Re(t,e,o){let r=a(),i=T(t),s=null,n=_vue.ref.call(void 0, !1),d={setLoading:c=>{n.value=c},setError:(c,S)=>r.write.setError(c,S),setValue:c=>i.setValue(c),getUploadKey:()=>s,setUploadKey:c=>{s=c}},u=_chunkIV32WXCFcjs.a.call(void 0, t,e,d),p=_chunkIV32WXCFcjs.b.call(void 0, t,o,d);return{value:i.value,setValue:i.setValue,error:_vue.computed.call(void 0, ()=>i.meta.error.value),isValidating:_vue.computed.call(void 0, ()=>!!i.meta.isValidating.value||n.value),upload:u,remove:p}}function Ee(){let t=a(),e=_vue.ref.call(void 0, t.read.getPersistMetadata()),o=_chunkKDHPLXZFcjs.f.call(void 0, t,n=>{e.value=n});return _vue.onUnmounted.call(void 0, ()=>o()),{restore:async()=>t.feature.restorePersisted(),save:async()=>{await t.feature.forceSave()},clear:async()=>{await t.feature.clearPersisted()},meta:{isSaving:_vue.computed.call(void 0, ()=>e.value.isSaving),isRestoring:_vue.computed.call(void 0, ()=>e.value.isRestoring),error:_vue.computed.call(void 0, ()=>e.value.error)}}}exports.provideBitStore = te; exports.useBitArray = le; exports.useBitField = T; exports.useBitForm = se; exports.useBitHistory = pe; exports.useBitPersist = Ee; exports.useBitScope = Se; exports.useBitSteps = be; exports.useBitStore = a; exports.useBitUpload = Re; exports.useBitWatch = Ve;
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 _chunkPA43XYOWcjs = require('../chunk-PA43XYOW.cjs');require('../chunk-W5CLDRRE.cjs');var _chunk4RQFECC7cjs = require('../chunk-4RQFECC7.cjs');var _chunkNVFZ22A7cjs = require('../chunk-NVFZ22A7.cjs');var _chunkBSGJ3T5Scjs = require('../chunk-BSGJ3T5S.cjs');var _chunkRHMJPKNVcjs = require('../chunk-RHMJPKNV.cjs');var _chunk3KI3GEU3cjs = require('../chunk-3KI3GEU3.cjs');require('../chunk-ZKAFHJPU.cjs');var _chunkVBX5I5XGcjs = require('../chunk-VBX5I5XG.cjs');require('../chunk-PFPGASVZ.cjs');var _vue = require('vue');var G=Symbol("BIT_STORE");function te(t){_vue.provide.call(void 0, G,_chunk4RQFECC7cjs.d.call(void 0, t))}function a(){let t=_vue.inject.call(void 0, G);if(!t)throw new Error("BitForm Vue hooks devem ser usados sob um provideBitStore");return t}function se(){let t=a(),e=_vue.shallowRef.call(void 0, {isValid:!0,isDirty:!1,isSubmitting:!1}),o=_vue.ref.call(void 0, null),r=_vue.ref.call(void 0, null),i=_chunkNVFZ22A7cjs.c.call(void 0, t,v=>{e.value=v});_vue.onUnmounted.call(void 0, i);let{controller:s,actions:n}=_chunkNVFZ22A7cjs.i.call(void 0, t,{clearSubmissionState:()=>{o.value=null,r.value=null},setSubmissionResult:v=>{r.value=v},setSubmissionError:v=>{o.value=v}}),d=_vue.computed.call(void 0, ()=>e.value.isValid),u=_vue.computed.call(void 0, ()=>e.value.isSubmitting),p=_vue.computed.call(void 0, ()=>e.value.isDirty),c=s.onSubmit,S=s.reset;return{meta:{isValid:d,isDirty:p,isSubmitting:u,submitError:o,lastResponse:r},getValues:s.getValues,getErrors:s.getErrors,getTouched:s.getTouched,getDirtyValues:s.getDirtyValues,submit:s.submit,onSubmit:c,reset:S,...n}}function T(t){let e=a(),{fieldController:o}=_chunkNVFZ22A7cjs.h.call(void 0, e,t),r=_vue.shallowRef.call(void 0, e.read.getFieldState(t)),i=e.observe.subscribeFieldState(t,f=>{r.value=f});_vue.onUnmounted.call(void 0, ()=>{i(),_chunkNVFZ22A7cjs.j.call(void 0, e,t)});let s=_vue.computed.call(void 0, ()=>r.value.value),n=_vue.computed.call(void 0, ()=>o.displayValue(s.value)),d=_vue.computed.call(void 0, {get:()=>n.value,set:f=>{o.setValue(f)}}),u=_vue.computed.call(void 0, ()=>_chunk3KI3GEU3cjs.a.call(void 0, r.value)),p=_vue.computed.call(void 0, ()=>u.value.error),c=_vue.computed.call(void 0, ()=>u.value.touched),S=_vue.computed.call(void 0, ()=>u.value.invalid),b=_vue.computed.call(void 0, ()=>u.value.isValidating),v=_vue.computed.call(void 0, ()=>u.value.isDirty),P=_vue.computed.call(void 0, ()=>u.value.isHidden),V=_vue.computed.call(void 0, ()=>u.value.isRequired),x=_vue.computed.call(void 0, ()=>u.value.hasError),F=f=>{o.setValue(f)},l=()=>o.setBlur();return{value:s,displayValue:n,modelValue:d,setValue:F,setBlur:l,onInput:f=>{F(f)},onBlur:()=>{l()},meta:{error:p,touched:c,invalid:S,isValidating:b,isDirty:v,isHidden:P,isRequired:V,hasError:x}}}function le(t){let e=a(),o=_chunkNVFZ22A7cjs.g.call(void 0, e,t),r=_vue.shallowRef.call(void 0, o.readItems()),i=e.observe.subscribePath(t,()=>{r.value=o.readItems()});_vue.onUnmounted.call(void 0, ()=>{i(),_chunkNVFZ22A7cjs.k.call(void 0, e,`${t}.`)});let s=_vue.computed.call(void 0, ()=>o.getFields(r.value)),n=_vue.computed.call(void 0, ()=>r.value.length);return{fields:s,length:n,append:o.append,prepend:o.prepend,insert:o.insert,remove:o.remove,move:o.move,swap:o.swap,replace:o.replace,clear:o.clear}}function pe(){let t=a(),e=_vue.shallowRef.call(void 0, _chunkRHMJPKNVcjs.f.call(void 0, t)),o=_chunkRHMJPKNVcjs.g.call(void 0, t,s=>{e.value=s});_vue.onUnmounted.call(void 0, o);let r=()=>t.feature.undo(),i=()=>t.feature.redo();return{canUndo:_vue.computed.call(void 0, ()=>e.value.canUndo),canRedo:_vue.computed.call(void 0, ()=>e.value.canRedo),historyIndex:_vue.computed.call(void 0, ()=>e.value.historyIndex),historySize:_vue.computed.call(void 0, ()=>e.value.historySize),undo:r,redo:i}}function Se(t){let e=a(),o=_vue.ref.call(void 0, e.read.getScopeStatus(t)),r;_vue.onMounted.call(void 0, ()=>{r=_chunkBSGJ3T5Scjs.a.call(void 0, e,t,p=>{o.value=p})}),_vue.onUnmounted.call(void 0, ()=>{_optionalChain([r, 'optionalCall', _2 => _2()])});let i=async()=>{let p=await e.feature.validate({scope:t}),c=e.read.getScopeErrors(t);return{valid:p,errors:c}},s=()=>e.read.getScopeErrors(t),n=_vue.computed.call(void 0, ()=>!o.value.hasErrors),d=_vue.computed.call(void 0, ()=>o.value.isDirty),u=_vue.computed.call(void 0, ()=>o.value.errors);return{scopeName:t,status:o,errors:u,validate:i,getErrors:s,isValid:n,isDirty:d}}function be(t){let e=a(),o=_vue.ref.call(void 0, 0),r=_vue.computed.call(void 0, ()=>_nullishCoalesce(t[o.value], () => (""))),i=_vue.ref.call(void 0, e.read.getScopeStatus(r.value)),s;_vue.watch.call(void 0, r,l=>{i.value=e.read.getScopeStatus(l),_optionalChain([s, 'optionalCall', _3 => _3()]),s=e.observe.subscribeScopeStatus(l,n)});let n=()=>{let l=r.value,B=e.read.getScopeStatus(l);_chunkRHMJPKNVcjs.b.call(void 0, i.value,B)||(i.value=B)};_vue.onMounted.call(void 0, ()=>{s=e.observe.subscribeScopeStatus(r.value,n)}),_vue.onUnmounted.call(void 0, ()=>{_optionalChain([s, 'optionalCall', _4 => _4()])});let d=async()=>{let l=r.value,B=await e.feature.validate({scope:l}),g=e.read.getScopeErrors(l);return{valid:B,errors:g}},u=()=>e.read.getScopeErrors(r.value),p=async()=>{let l=r.value,B=e.read.getScopeFields(l);if(e.feature.hasValidationsInProgress(B))return!1;let g=await e.feature.validate({scope:l});if(g)o.value=Math.min(o.value+1,t.length-1);else{let f=e.read.getScopeErrors(l),E=Object.keys(f);E.length>0&&e.write.markFieldsTouched(E)}return g},c=()=>{o.value=Math.max(o.value-1,0)},S=l=>{o.value=Math.max(0,Math.min(l-1,t.length-1))},b=_vue.computed.call(void 0, ()=>o.value+1),v=_vue.computed.call(void 0, ()=>o.value===0),P=_vue.computed.call(void 0, ()=>o.value>=t.length-1),V=_vue.computed.call(void 0, ()=>!i.value.hasErrors),x=_vue.computed.call(void 0, ()=>i.value.isDirty),F=_vue.computed.call(void 0, ()=>i.value.errors);return{step:b,stepIndex:o,scope:r,next:p,prev:c,goTo:S,isFirst:v,isLast:P,status:i,errors:F,isValid:V,isDirty:x,validate:d,getErrors:u}}function Ve(t){let e=a(),o=_chunkVBX5I5XGcjs.f.call(void 0, e.read.getState().values,t),r=_vue.ref.call(void 0, o),i=e.observe.subscribePath(t,s=>{_chunkVBX5I5XGcjs.c.call(void 0, r.value,s)||(r.value=s)});return _vue.onUnmounted.call(void 0, i),_vue.readonly.call(void 0, r)}function Re(t,e,o){let r=a(),i=T(t),s=null,n=_vue.ref.call(void 0, !1),d={setLoading:c=>{n.value=c},setError:(c,S)=>r.write.setError(c,S),setValue:c=>i.setValue(c),getUploadKey:()=>s,setUploadKey:c=>{s=c}},u=_chunkPA43XYOWcjs.a.call(void 0, t,e,d),p=_chunkPA43XYOWcjs.b.call(void 0, t,o,d);return{value:i.value,setValue:i.setValue,error:_vue.computed.call(void 0, ()=>i.meta.error.value),isValidating:_vue.computed.call(void 0, ()=>!!i.meta.isValidating.value||n.value),upload:u,remove:p}}function we(){let t=a(),e=_vue.ref.call(void 0, t.read.getPersistMetadata()),o=_chunkNVFZ22A7cjs.f.call(void 0, t,n=>{e.value=n});return _vue.onUnmounted.call(void 0, ()=>o()),{restore:async()=>t.feature.restorePersisted(),save:async()=>{await t.feature.forceSave()},clear:async()=>{await t.feature.clearPersisted()},meta:{isSaving:_vue.computed.call(void 0, ()=>e.value.isSaving),isRestoring:_vue.computed.call(void 0, ()=>e.value.isRestoring),error:_vue.computed.call(void 0, ()=>e.value.error)}}}exports.provideBitStore = te; exports.useBitArray = le; exports.useBitField = T; exports.useBitForm = se; exports.useBitHistory = pe; exports.useBitPersist = we; exports.useBitScope = Se; exports.useBitSteps = be; exports.useBitStore = a; exports.useBitUpload = Re; exports.useBitWatch = Ve;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,13 +1,14 @@
1
- import { b as BitFrameworkStoreApi, e as BitStoreApi } from '../store-api-types-Bm3EAqR_.cjs';
2
- import '../bus-WOHGxuVy.cjs';
3
- import { x as BitPersistMetadata, S as ScopeStatus, V as ValidateScopeResult, k as BitErrors, I as BitTouched, L as DeepPartial, u as BitPath, v as BitPathValue, c as BitArrayPath, b as BitArrayItem } from '../types-SOg9xEce.cjs';
4
- import { a as BitHistoryMetadata, b as BitValidationOptions } from '../meta-types-Bzmm21TP.cjs';
1
+ import { b as BitFrameworkStoreApi, e as BitStoreApi } from '../store-api-types-DSgYwMS3.cjs';
2
+ import '../bus-DzTqgkZ4.cjs';
3
+ import { f as BitPersistMetadata, b as BitErrors, h as BitTouched, D as DeepPartial, d as BitPath, e as BitPathValue, a as BitArrayPath, B as BitArrayItem } from '../state-types-8bUndWfg.cjs';
4
+ import { S as ScopeStatus, V as ValidateScopeResult } from '../runtime-types-D1SRZr-n.cjs';
5
+ import { a as BitHistoryMetadata, b as BitValidationOptions } from '../meta-types-BC1VLABk.cjs';
6
+ import { c as BitHistoryAdapterResult, d as BitPersistAdapterResult, e as BitStepsAdapterResult, f as BitUploadAdapterResult, a as BitArrayBindingField, g as BitUploadFn, b as BitDeleteUploadFn } from '../upload-C4JqIaU2.cjs';
5
7
  import * as vue from 'vue';
6
8
  import { ComputedRef, Ref } from 'vue';
7
- import { a as BitArrayBindingField } from '../array-controller-CtlqjA0e.cjs';
8
9
  import * as _vue_shared from '@vue/shared';
9
- import { a as BitUploadFn, B as BitDeleteUploadFn } from '../upload-C2mpfhp1.cjs';
10
- import '../types-D8DgIUhJ.cjs';
10
+ import '../types-CUXh7PqD.cjs';
11
+ import '../config-types-5eR82k2V.cjs';
11
12
 
12
13
  declare function provideBitStore<T extends object>(store: BitFrameworkStoreApi<T> | BitStoreApi<T>): void;
13
14
  declare function useBitStore<T extends object>(): BitFrameworkStoreApi<T>;
@@ -43,56 +44,22 @@ interface UseBitFieldVueResult<TValue = any> {
43
44
  * Result from useBitSteps hook in Vue.
44
45
  * Provides multi-step form navigation and validation with Vue reactivity.
45
46
  */
46
- interface UseBitStepsResult {
47
- step: ComputedRef<number>;
48
- stepIndex: Ref<number>;
49
- scope: ComputedRef<string>;
50
- next: () => Promise<boolean>;
51
- prev: () => void;
52
- goTo: (step: number) => void;
53
- isFirst: ComputedRef<boolean>;
54
- isLast: ComputedRef<boolean>;
55
- status: Ref<ScopeStatus>;
56
- errors: ComputedRef<Record<string, string>>;
57
- isValid: ComputedRef<boolean>;
58
- isDirty: ComputedRef<boolean>;
59
- validate: () => Promise<ValidateScopeResult>;
60
- getErrors: () => Record<string, string>;
61
- }
47
+ type UseBitStepsResult = BitStepsAdapterResult<ComputedRef<number>, Ref<number>, ComputedRef<string>, ComputedRef<boolean>, Ref<ScopeStatus>, ComputedRef<Record<string, string>>, ValidateScopeResult>;
62
48
  /**
63
49
  * Result from useBitUpload hook in Vue.
64
50
  * Provides file upload functionality with integrated validation (Vue reactive).
65
51
  */
66
- interface UseBitUploadResult {
67
- value: ComputedRef<string | File | null>;
68
- setValue: (value: string | File | null) => void;
69
- error: ComputedRef<string | undefined>;
70
- isValidating: ComputedRef<boolean>;
71
- upload: (file: File | null | undefined) => Promise<void>;
72
- remove: () => Promise<void>;
73
- }
52
+ type UseBitUploadResult = BitUploadAdapterResult<ComputedRef<string | File | null>, ComputedRef<string | undefined>, ComputedRef<boolean>>;
74
53
  /**
75
54
  * Result from useBitHistory hook in Vue.
76
55
  * Provides form history undo/redo capabilities (Vue reactive).
77
56
  */
78
- interface UseBitHistoryResult {
79
- canUndo: ComputedRef<BitHistoryMetadata["canUndo"]>;
80
- canRedo: ComputedRef<BitHistoryMetadata["canRedo"]>;
81
- historyIndex: ComputedRef<BitHistoryMetadata["historyIndex"]>;
82
- historySize: ComputedRef<BitHistoryMetadata["historySize"]>;
83
- undo: () => void;
84
- redo: () => void;
85
- }
86
- interface UseBitPersistResult {
87
- restore: () => Promise<boolean>;
88
- save: () => Promise<void>;
89
- clear: () => Promise<void>;
90
- meta: {
91
- isSaving: Ref<BitPersistMetadata["isSaving"]>;
92
- isRestoring: Ref<BitPersistMetadata["isRestoring"]>;
93
- error: Ref<BitPersistMetadata["error"]>;
94
- };
95
- }
57
+ type UseBitHistoryResult = BitHistoryAdapterResult<ComputedRef<BitHistoryMetadata["canUndo"]>, ComputedRef<BitHistoryMetadata["canRedo"]>, ComputedRef<BitHistoryMetadata["historyIndex"]>, ComputedRef<BitHistoryMetadata["historySize"]>>;
58
+ type UseBitPersistResult = BitPersistAdapterResult<{
59
+ isSaving: Ref<BitPersistMetadata["isSaving"]>;
60
+ isRestoring: Ref<BitPersistMetadata["isRestoring"]>;
61
+ error: Ref<BitPersistMetadata["error"]>;
62
+ }>;
96
63
  interface UseBitFormResult<T extends object = any> {
97
64
  meta: {
98
65
  isValid: ComputedRef<boolean>;
@@ -105,7 +72,7 @@ interface UseBitFormResult<T extends object = any> {
105
72
  getErrors: () => BitErrors<T>;
106
73
  getTouched: () => BitTouched<T>;
107
74
  getDirtyValues: () => Partial<T>;
108
- submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>) => (e?: Event) => Promise<void>;
75
+ submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => unknown | Promise<unknown>) => (e?: Event) => Promise<void>;
109
76
  onSubmit: (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => (e?: Event) => Promise<void>;
110
77
  reset: () => void;
111
78
  transaction: <TResult>(callback: () => TResult) => TResult;
@@ -168,7 +135,7 @@ declare function useBitWatch<TForm extends object = any, P extends BitPath<TForm
168
135
  * Minimal upload API integrated with global field validation lifecycle.
169
136
  */
170
137
 
171
- declare function useBitUpload(fieldPath: string, uploadFn: BitUploadFn, deleteFile?: BitDeleteUploadFn): UseBitUploadResult;
138
+ declare function useBitUpload<TMetadata extends Record<string, unknown> = Record<string, unknown>>(fieldPath: string, uploadFn: BitUploadFn<TMetadata>, deleteFile?: BitDeleteUploadFn): UseBitUploadResult;
172
139
 
173
140
  declare function useBitPersist<T extends object = any>(): UseBitPersistResult;
174
141
 
@@ -1,13 +1,14 @@
1
- import { b as BitFrameworkStoreApi, e as BitStoreApi } from '../store-api-types-DfTFy2h4.js';
2
- import '../bus-BKuMV3E7.js';
3
- import { x as BitPersistMetadata, S as ScopeStatus, V as ValidateScopeResult, k as BitErrors, I as BitTouched, L as DeepPartial, u as BitPath, v as BitPathValue, c as BitArrayPath, b as BitArrayItem } from '../types-CRCP4Pgq.js';
4
- import { a as BitHistoryMetadata, b as BitValidationOptions } from '../meta-types-Bzmm21TP.js';
1
+ import { b as BitFrameworkStoreApi, e as BitStoreApi } from '../store-api-types-Bozwlwyb.js';
2
+ import '../bus-BFOBGmd9.js';
3
+ import { f as BitPersistMetadata, b as BitErrors, h as BitTouched, D as DeepPartial, d as BitPath, e as BitPathValue, a as BitArrayPath, B as BitArrayItem } from '../state-types-8bUndWfg.js';
4
+ import { S as ScopeStatus, V as ValidateScopeResult } from '../runtime-types-D1SRZr-n.js';
5
+ import { a as BitHistoryMetadata, b as BitValidationOptions } from '../meta-types-BC1VLABk.js';
6
+ import { c as BitHistoryAdapterResult, d as BitPersistAdapterResult, e as BitStepsAdapterResult, f as BitUploadAdapterResult, a as BitArrayBindingField, g as BitUploadFn, b as BitDeleteUploadFn } from '../upload-ao6skK9K.js';
5
7
  import * as vue from 'vue';
6
8
  import { ComputedRef, Ref } from 'vue';
7
- import { a as BitArrayBindingField } from '../array-controller-C61ByyG6.js';
8
9
  import * as _vue_shared from '@vue/shared';
9
- import { a as BitUploadFn, B as BitDeleteUploadFn } from '../upload-C2mpfhp1.js';
10
- import '../types-D8DgIUhJ.js';
10
+ import '../types-CUXh7PqD.js';
11
+ import '../config-types-D9n-rQLk.js';
11
12
 
12
13
  declare function provideBitStore<T extends object>(store: BitFrameworkStoreApi<T> | BitStoreApi<T>): void;
13
14
  declare function useBitStore<T extends object>(): BitFrameworkStoreApi<T>;
@@ -43,56 +44,22 @@ interface UseBitFieldVueResult<TValue = any> {
43
44
  * Result from useBitSteps hook in Vue.
44
45
  * Provides multi-step form navigation and validation with Vue reactivity.
45
46
  */
46
- interface UseBitStepsResult {
47
- step: ComputedRef<number>;
48
- stepIndex: Ref<number>;
49
- scope: ComputedRef<string>;
50
- next: () => Promise<boolean>;
51
- prev: () => void;
52
- goTo: (step: number) => void;
53
- isFirst: ComputedRef<boolean>;
54
- isLast: ComputedRef<boolean>;
55
- status: Ref<ScopeStatus>;
56
- errors: ComputedRef<Record<string, string>>;
57
- isValid: ComputedRef<boolean>;
58
- isDirty: ComputedRef<boolean>;
59
- validate: () => Promise<ValidateScopeResult>;
60
- getErrors: () => Record<string, string>;
61
- }
47
+ type UseBitStepsResult = BitStepsAdapterResult<ComputedRef<number>, Ref<number>, ComputedRef<string>, ComputedRef<boolean>, Ref<ScopeStatus>, ComputedRef<Record<string, string>>, ValidateScopeResult>;
62
48
  /**
63
49
  * Result from useBitUpload hook in Vue.
64
50
  * Provides file upload functionality with integrated validation (Vue reactive).
65
51
  */
66
- interface UseBitUploadResult {
67
- value: ComputedRef<string | File | null>;
68
- setValue: (value: string | File | null) => void;
69
- error: ComputedRef<string | undefined>;
70
- isValidating: ComputedRef<boolean>;
71
- upload: (file: File | null | undefined) => Promise<void>;
72
- remove: () => Promise<void>;
73
- }
52
+ type UseBitUploadResult = BitUploadAdapterResult<ComputedRef<string | File | null>, ComputedRef<string | undefined>, ComputedRef<boolean>>;
74
53
  /**
75
54
  * Result from useBitHistory hook in Vue.
76
55
  * Provides form history undo/redo capabilities (Vue reactive).
77
56
  */
78
- interface UseBitHistoryResult {
79
- canUndo: ComputedRef<BitHistoryMetadata["canUndo"]>;
80
- canRedo: ComputedRef<BitHistoryMetadata["canRedo"]>;
81
- historyIndex: ComputedRef<BitHistoryMetadata["historyIndex"]>;
82
- historySize: ComputedRef<BitHistoryMetadata["historySize"]>;
83
- undo: () => void;
84
- redo: () => void;
85
- }
86
- interface UseBitPersistResult {
87
- restore: () => Promise<boolean>;
88
- save: () => Promise<void>;
89
- clear: () => Promise<void>;
90
- meta: {
91
- isSaving: Ref<BitPersistMetadata["isSaving"]>;
92
- isRestoring: Ref<BitPersistMetadata["isRestoring"]>;
93
- error: Ref<BitPersistMetadata["error"]>;
94
- };
95
- }
57
+ type UseBitHistoryResult = BitHistoryAdapterResult<ComputedRef<BitHistoryMetadata["canUndo"]>, ComputedRef<BitHistoryMetadata["canRedo"]>, ComputedRef<BitHistoryMetadata["historyIndex"]>, ComputedRef<BitHistoryMetadata["historySize"]>>;
58
+ type UseBitPersistResult = BitPersistAdapterResult<{
59
+ isSaving: Ref<BitPersistMetadata["isSaving"]>;
60
+ isRestoring: Ref<BitPersistMetadata["isRestoring"]>;
61
+ error: Ref<BitPersistMetadata["error"]>;
62
+ }>;
96
63
  interface UseBitFormResult<T extends object = any> {
97
64
  meta: {
98
65
  isValid: ComputedRef<boolean>;
@@ -105,7 +72,7 @@ interface UseBitFormResult<T extends object = any> {
105
72
  getErrors: () => BitErrors<T>;
106
73
  getTouched: () => BitTouched<T>;
107
74
  getDirtyValues: () => Partial<T>;
108
- submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>) => (e?: Event) => Promise<void>;
75
+ submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => unknown | Promise<unknown>) => (e?: Event) => Promise<void>;
109
76
  onSubmit: (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => (e?: Event) => Promise<void>;
110
77
  reset: () => void;
111
78
  transaction: <TResult>(callback: () => TResult) => TResult;
@@ -168,7 +135,7 @@ declare function useBitWatch<TForm extends object = any, P extends BitPath<TForm
168
135
  * Minimal upload API integrated with global field validation lifecycle.
169
136
  */
170
137
 
171
- declare function useBitUpload(fieldPath: string, uploadFn: BitUploadFn, deleteFile?: BitDeleteUploadFn): UseBitUploadResult;
138
+ declare function useBitUpload<TMetadata extends Record<string, unknown> = Record<string, unknown>>(fieldPath: string, uploadFn: BitUploadFn<TMetadata>, deleteFile?: BitDeleteUploadFn): UseBitUploadResult;
172
139
 
173
140
  declare function useBitPersist<T extends object = any>(): UseBitPersistResult;
174
141
 
package/dist/vue/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{a as Y,b as $}from"../chunk-O5UPA33R.js";import"../chunk-5NA2TFPG.js";import{d as I}from"../chunk-UARLAXZX.js";import{c as H,f as K,g as q,h as C,i as O,j as W,k as _}from"../chunk-Y3XVQGCU.js";import{a as z}from"../chunk-W2E5UIXT.js";import{b as M,f as A,g as j}from"../chunk-UIKO6GGW.js";import{a as L}from"../chunk-ICYXODTQ.js";import"../chunk-2QLQPMCZ.js";import{c as k,f as D}from"../chunk-QX2IVNMK.js";import"../chunk-3NUJVIAM.js";import{inject as N,provide as ee}from"vue";var G=Symbol("BIT_STORE");function te(t){ee(G,I(t))}function a(){let t=N(G);if(!t)throw new Error("BitForm Vue hooks devem ser usados sob um provideBitStore");return t}import{computed as R,onUnmounted as oe,shallowRef as re,ref as J}from"vue";function se(){let t=a(),e=re({isValid:!0,isDirty:!1,isSubmitting:!1}),o=J(null),r=J(null),i=H(t,v=>{e.value=v});oe(i);let{controller:s,actions:n}=O(t,{clearSubmissionState:()=>{o.value=null,r.value=null},setSubmissionResult:v=>{r.value=v},setSubmissionError:v=>{o.value=v}}),d=R(()=>e.value.isValid),u=R(()=>e.value.isSubmitting),p=R(()=>e.value.isDirty),c=s.onSubmit,S=s.reset;return{meta:{isValid:d,isDirty:p,isSubmitting:u,submitError:o,lastResponse:r},getValues:s.getValues,getErrors:s.getErrors,getTouched:s.getTouched,getDirtyValues:s.getDirtyValues,submit:s.submit,onSubmit:c,reset:S,...n}}import{computed as m,onUnmounted as ie,shallowRef as ae}from"vue";function T(t){let e=a(),{fieldController:o}=C(e,t),r=ae(e.read.getFieldState(t)),i=e.observe.subscribeFieldState(t,f=>{r.value=f});ie(()=>{i(),W(e,t)});let s=m(()=>r.value.value),n=m(()=>o.displayValue(s.value)),d=m({get:()=>n.value,set:f=>{o.setValue(f)}}),u=m(()=>L(r.value)),p=m(()=>u.value.error),c=m(()=>u.value.touched),S=m(()=>u.value.invalid),b=m(()=>u.value.isValidating),v=m(()=>u.value.isDirty),P=m(()=>u.value.isHidden),V=m(()=>u.value.isRequired),x=m(()=>u.value.hasError),F=f=>{o.setValue(f)},l=()=>o.setBlur();return{value:s,displayValue:n,modelValue:d,setValue:F,setBlur:l,onInput:f=>{F(f)},onBlur:()=>{l()},meta:{error:p,touched:c,invalid:S,isValidating:b,isDirty:v,isHidden:P,isRequired:V,hasError:x}}}import{computed as Q,onUnmounted as ne,shallowRef as ue}from"vue";function le(t){let e=a(),o=q(e,t),r=ue(o.readItems()),i=e.observe.subscribePath(t,()=>{r.value=o.readItems()});ne(()=>{i(),_(e,`${t}.`)});let s=Q(()=>o.getFields(r.value)),n=Q(()=>r.value.length);return{fields:s,length:n,append:o.append,prepend:o.prepend,insert:o.insert,remove:o.remove,move:o.move,swap:o.swap,replace:o.replace,clear:o.clear}}import{computed as h,onUnmounted as ce,shallowRef as me}from"vue";function pe(){let t=a(),e=me(A(t)),o=j(t,s=>{e.value=s});ce(o);let r=()=>t.feature.undo(),i=()=>t.feature.redo();return{canUndo:h(()=>e.value.canUndo),canRedo:h(()=>e.value.canRedo),historyIndex:h(()=>e.value.historyIndex),historySize:h(()=>e.value.historySize),undo:r,redo:i}}import{computed as U,onMounted as de,onUnmounted as ve,ref as fe}from"vue";function Se(t){let e=a(),o=fe(e.read.getScopeStatus(t)),r;de(()=>{r=z(e,t,p=>{o.value=p})}),ve(()=>{r?.()});let i=async()=>{let p=await e.feature.validate({scope:t}),c=e.read.getScopeErrors(t);return{valid:p,errors:c}},s=()=>e.read.getScopeErrors(t),n=U(()=>!o.value.hasErrors),d=U(()=>o.value.isDirty),u=U(()=>o.value.errors);return{scopeName:t,status:o,errors:u,validate:i,getErrors:s,isValid:n,isDirty:d}}import{computed as y,onMounted as Be,onUnmounted as ye,ref as X,watch as ge}from"vue";function be(t){let e=a(),o=X(0),r=y(()=>t[o.value]??""),i=X(e.read.getScopeStatus(r.value)),s;ge(r,l=>{i.value=e.read.getScopeStatus(l),s?.(),s=e.observe.subscribeScopeStatus(l,n)});let n=()=>{let l=r.value,B=e.read.getScopeStatus(l);M(i.value,B)||(i.value=B)};Be(()=>{s=e.observe.subscribeScopeStatus(r.value,n)}),ye(()=>{s?.()});let d=async()=>{let l=r.value,B=await e.feature.validate({scope:l}),g=e.read.getScopeErrors(l);return{valid:B,errors:g}},u=()=>e.read.getScopeErrors(r.value),p=async()=>{let l=r.value,B=e.read.getScopeFields(l);if(e.feature.hasValidationsInProgress(B))return!1;let g=await e.feature.validate({scope:l});if(g)o.value=Math.min(o.value+1,t.length-1);else{let f=e.read.getScopeErrors(l),w=Object.keys(f);w.length>0&&e.write.markFieldsTouched(w)}return g},c=()=>{o.value=Math.max(o.value-1,0)},S=l=>{o.value=Math.max(0,Math.min(l-1,t.length-1))},b=y(()=>o.value+1),v=y(()=>o.value===0),P=y(()=>o.value>=t.length-1),V=y(()=>!i.value.hasErrors),x=y(()=>i.value.isDirty),F=y(()=>i.value.errors);return{step:b,stepIndex:o,scope:r,next:p,prev:c,goTo:S,isFirst:v,isLast:P,status:i,errors:F,isValid:V,isDirty:x,validate:d,getErrors:u}}import{ref as Fe,onUnmounted as he,readonly as Pe}from"vue";function Ve(t){let e=a(),o=D(e.read.getState().values,t),r=Fe(o),i=e.observe.subscribePath(t,s=>{k(r.value,s)||(r.value=s)});return he(i),Pe(r)}import{computed as Z,ref as xe}from"vue";function Re(t,e,o){let r=a(),i=T(t),s=null,n=xe(!1),d={setLoading:c=>{n.value=c},setError:(c,S)=>r.write.setError(c,S),setValue:c=>i.setValue(c),getUploadKey:()=>s,setUploadKey:c=>{s=c}},u=Y(t,e,d),p=$(t,o,d);return{value:i.value,setValue:i.setValue,error:Z(()=>i.meta.error.value),isValidating:Z(()=>!!i.meta.isValidating.value||n.value),upload:u,remove:p}}import{computed as E,onUnmounted as Te,ref as Ue}from"vue";function Ee(){let t=a(),e=Ue(t.read.getPersistMetadata()),o=K(t,n=>{e.value=n});return Te(()=>o()),{restore:async()=>t.feature.restorePersisted(),save:async()=>{await t.feature.forceSave()},clear:async()=>{await t.feature.clearPersisted()},meta:{isSaving:E(()=>e.value.isSaving),isRestoring:E(()=>e.value.isRestoring),error:E(()=>e.value.error)}}}export{te as provideBitStore,le as useBitArray,T as useBitField,se as useBitForm,pe as useBitHistory,Ee as useBitPersist,Se as useBitScope,be as useBitSteps,a as useBitStore,Re as useBitUpload,Ve as useBitWatch};
1
+ import{a as Y,b as $}from"../chunk-PG7ZH32Z.js";import"../chunk-5NA2TFPG.js";import{d as I}from"../chunk-G2FQQDRK.js";import{c as H,f as K,g as q,h as C,i as O,j as W,k as _}from"../chunk-2AFWJAQG.js";import{a as z}from"../chunk-W2E5UIXT.js";import{b as D,f as A,g as j}from"../chunk-UIKO6GGW.js";import{a as L}from"../chunk-ICYXODTQ.js";import"../chunk-OPC7HFNN.js";import{c as k,f as M}from"../chunk-FLFIOW75.js";import"../chunk-3NUJVIAM.js";import{inject as N,provide as ee}from"vue";var G=Symbol("BIT_STORE");function te(t){ee(G,I(t))}function a(){let t=N(G);if(!t)throw new Error("BitForm Vue hooks devem ser usados sob um provideBitStore");return t}import{computed as R,onUnmounted as oe,shallowRef as re,ref as J}from"vue";function se(){let t=a(),e=re({isValid:!0,isDirty:!1,isSubmitting:!1}),o=J(null),r=J(null),i=H(t,v=>{e.value=v});oe(i);let{controller:s,actions:n}=O(t,{clearSubmissionState:()=>{o.value=null,r.value=null},setSubmissionResult:v=>{r.value=v},setSubmissionError:v=>{o.value=v}}),d=R(()=>e.value.isValid),u=R(()=>e.value.isSubmitting),p=R(()=>e.value.isDirty),c=s.onSubmit,S=s.reset;return{meta:{isValid:d,isDirty:p,isSubmitting:u,submitError:o,lastResponse:r},getValues:s.getValues,getErrors:s.getErrors,getTouched:s.getTouched,getDirtyValues:s.getDirtyValues,submit:s.submit,onSubmit:c,reset:S,...n}}import{computed as m,onUnmounted as ie,shallowRef as ae}from"vue";function T(t){let e=a(),{fieldController:o}=C(e,t),r=ae(e.read.getFieldState(t)),i=e.observe.subscribeFieldState(t,f=>{r.value=f});ie(()=>{i(),W(e,t)});let s=m(()=>r.value.value),n=m(()=>o.displayValue(s.value)),d=m({get:()=>n.value,set:f=>{o.setValue(f)}}),u=m(()=>L(r.value)),p=m(()=>u.value.error),c=m(()=>u.value.touched),S=m(()=>u.value.invalid),b=m(()=>u.value.isValidating),v=m(()=>u.value.isDirty),P=m(()=>u.value.isHidden),V=m(()=>u.value.isRequired),x=m(()=>u.value.hasError),F=f=>{o.setValue(f)},l=()=>o.setBlur();return{value:s,displayValue:n,modelValue:d,setValue:F,setBlur:l,onInput:f=>{F(f)},onBlur:()=>{l()},meta:{error:p,touched:c,invalid:S,isValidating:b,isDirty:v,isHidden:P,isRequired:V,hasError:x}}}import{computed as Q,onUnmounted as ne,shallowRef as ue}from"vue";function le(t){let e=a(),o=q(e,t),r=ue(o.readItems()),i=e.observe.subscribePath(t,()=>{r.value=o.readItems()});ne(()=>{i(),_(e,`${t}.`)});let s=Q(()=>o.getFields(r.value)),n=Q(()=>r.value.length);return{fields:s,length:n,append:o.append,prepend:o.prepend,insert:o.insert,remove:o.remove,move:o.move,swap:o.swap,replace:o.replace,clear:o.clear}}import{computed as h,onUnmounted as ce,shallowRef as me}from"vue";function pe(){let t=a(),e=me(A(t)),o=j(t,s=>{e.value=s});ce(o);let r=()=>t.feature.undo(),i=()=>t.feature.redo();return{canUndo:h(()=>e.value.canUndo),canRedo:h(()=>e.value.canRedo),historyIndex:h(()=>e.value.historyIndex),historySize:h(()=>e.value.historySize),undo:r,redo:i}}import{computed as U,onMounted as de,onUnmounted as ve,ref as fe}from"vue";function Se(t){let e=a(),o=fe(e.read.getScopeStatus(t)),r;de(()=>{r=z(e,t,p=>{o.value=p})}),ve(()=>{r?.()});let i=async()=>{let p=await e.feature.validate({scope:t}),c=e.read.getScopeErrors(t);return{valid:p,errors:c}},s=()=>e.read.getScopeErrors(t),n=U(()=>!o.value.hasErrors),d=U(()=>o.value.isDirty),u=U(()=>o.value.errors);return{scopeName:t,status:o,errors:u,validate:i,getErrors:s,isValid:n,isDirty:d}}import{computed as y,onMounted as Be,onUnmounted as ye,ref as X,watch as ge}from"vue";function be(t){let e=a(),o=X(0),r=y(()=>t[o.value]??""),i=X(e.read.getScopeStatus(r.value)),s;ge(r,l=>{i.value=e.read.getScopeStatus(l),s?.(),s=e.observe.subscribeScopeStatus(l,n)});let n=()=>{let l=r.value,B=e.read.getScopeStatus(l);D(i.value,B)||(i.value=B)};Be(()=>{s=e.observe.subscribeScopeStatus(r.value,n)}),ye(()=>{s?.()});let d=async()=>{let l=r.value,B=await e.feature.validate({scope:l}),g=e.read.getScopeErrors(l);return{valid:B,errors:g}},u=()=>e.read.getScopeErrors(r.value),p=async()=>{let l=r.value,B=e.read.getScopeFields(l);if(e.feature.hasValidationsInProgress(B))return!1;let g=await e.feature.validate({scope:l});if(g)o.value=Math.min(o.value+1,t.length-1);else{let f=e.read.getScopeErrors(l),E=Object.keys(f);E.length>0&&e.write.markFieldsTouched(E)}return g},c=()=>{o.value=Math.max(o.value-1,0)},S=l=>{o.value=Math.max(0,Math.min(l-1,t.length-1))},b=y(()=>o.value+1),v=y(()=>o.value===0),P=y(()=>o.value>=t.length-1),V=y(()=>!i.value.hasErrors),x=y(()=>i.value.isDirty),F=y(()=>i.value.errors);return{step:b,stepIndex:o,scope:r,next:p,prev:c,goTo:S,isFirst:v,isLast:P,status:i,errors:F,isValid:V,isDirty:x,validate:d,getErrors:u}}import{ref as Fe,onUnmounted as he,readonly as Pe}from"vue";function Ve(t){let e=a(),o=M(e.read.getState().values,t),r=Fe(o),i=e.observe.subscribePath(t,s=>{k(r.value,s)||(r.value=s)});return he(i),Pe(r)}import{computed as Z,ref as xe}from"vue";function Re(t,e,o){let r=a(),i=T(t),s=null,n=xe(!1),d={setLoading:c=>{n.value=c},setError:(c,S)=>r.write.setError(c,S),setValue:c=>i.setValue(c),getUploadKey:()=>s,setUploadKey:c=>{s=c}},u=Y(t,e,d),p=$(t,o,d);return{value:i.value,setValue:i.setValue,error:Z(()=>i.meta.error.value),isValidating:Z(()=>!!i.meta.isValidating.value||n.value),upload:u,remove:p}}import{computed as w,onUnmounted as Te,ref as Ue}from"vue";function we(){let t=a(),e=Ue(t.read.getPersistMetadata()),o=K(t,n=>{e.value=n});return Te(()=>o()),{restore:async()=>t.feature.restorePersisted(),save:async()=>{await t.feature.forceSave()},clear:async()=>{await t.feature.clearPersisted()},meta:{isSaving:w(()=>e.value.isSaving),isRestoring:w(()=>e.value.isRestoring),error:w(()=>e.value.error)}}}export{te as provideBitStore,le as useBitArray,T as useBitField,se as useBitForm,pe as useBitHistory,we as useBitPersist,Se as useBitScope,be as useBitSteps,a as useBitStore,Re as useBitUpload,Ve as useBitWatch};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/vue/context.ts","../../src/vue/use-bit-form.ts","../../src/vue/use-bit-field.ts","../../src/vue/use-bit-array.ts","../../src/vue/use-bit-history.ts","../../src/vue/use-bit-scope.ts","../../src/vue/use-bit-steps.ts","../../src/vue/use-bit-watch.ts","../../src/vue/use-bit-upload.ts","../../src/vue/use-bit-persist.ts"],"sourcesContent":["import { inject, provide, InjectionKey } from \"vue\";\nimport type { BitFrameworkStoreApi, BitStoreApi } from \"../core\";\nimport { createFrameworkStoreAdapter } from \"../core\";\n\n// Chave única para evitar colisões\nexport const BIT_STORE_KEY: InjectionKey<BitFrameworkStoreApi<any>> =\n Symbol(\"BIT_STORE\");\n\nexport function provideBitStore<T extends object>(\n store: BitFrameworkStoreApi<T> | BitStoreApi<T>,\n) {\n provide(BIT_STORE_KEY, createFrameworkStoreAdapter<T>(store));\n}\n\nexport function useBitStore<T extends object>() {\n const store = inject(BIT_STORE_KEY);\n if (!store)\n throw new Error(\n \"BitForm Vue hooks devem ser usados sob um provideBitStore\",\n );\n return store as BitFrameworkStoreApi<T>;\n}\n","import { computed, onUnmounted, shallowRef, ref } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport { createFrameworkFormBinding, observeFormMetaSnapshot } from \"../core\";\nimport type { UseBitFormResult } from \"./types\";\n\nexport function useBitForm<T extends object>(): UseBitFormResult<T> {\n const store = useBitStore<T>();\n const state = shallowRef({\n isValid: true,\n isDirty: false,\n isSubmitting: false,\n });\n const submitError = ref<Error | null>(null);\n const lastResponse = ref<unknown>(null);\n\n const unsubscribe = observeFormMetaSnapshot(store, (nextMeta) => {\n state.value = nextMeta;\n });\n\n onUnmounted(unsubscribe);\n\n const { controller, actions } = createFrameworkFormBinding(store, {\n clearSubmissionState: () => {\n submitError.value = null;\n lastResponse.value = null;\n },\n setSubmissionResult: (result) => {\n lastResponse.value = result;\n },\n setSubmissionError: (error) => {\n submitError.value = error;\n },\n });\n\n const isValid = computed(() => state.value.isValid);\n const isSubmitting = computed(() => state.value.isSubmitting);\n const isDirty = computed(() => state.value.isDirty);\n\n const onSubmit = controller.onSubmit;\n const reset = controller.reset;\n\n const meta = {\n isValid,\n isDirty,\n isSubmitting,\n submitError,\n lastResponse,\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,\n reset,\n ...actions,\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitFieldVueResult } from \"./types\";\nimport type { BitPath, BitPathValue } from \"../core\";\nimport {\n cleanupRegisteredField,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n} from \"../core\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldVueResult<BitPathValue<TForm, P>> {\n const store = useBitStore<TForm>();\n\n const { fieldController } = createFrameworkMaskedFieldBinding(store, path);\n\n const state = shallowRef(store.read.getFieldState(path));\n\n const unsubscribe = store.observe.subscribeFieldState(path, (nextState) => {\n state.value = nextState;\n });\n\n onUnmounted(() => {\n unsubscribe();\n cleanupRegisteredField(store, path as string);\n });\n\n const rawValue = computed(() => state.value.value as BitPathValue<TForm, P>);\n\n const displayValue = computed(() =>\n fieldController.displayValue(rawValue.value),\n );\n\n const modelValue = computed({\n get: () => displayValue.value,\n set: (val: string) => {\n fieldController.setValue(val);\n },\n });\n\n const metaState = computed(() => deriveFieldMeta(state.value));\n const error = computed(() => metaState.value.error);\n const touched = computed(() => metaState.value.touched);\n const invalid = computed(() => metaState.value.invalid);\n const isValidating = computed(() => metaState.value.isValidating);\n const isDirty = computed(() => metaState.value.isDirty);\n const isHidden = computed(() => metaState.value.isHidden);\n const isRequired = computed(() => metaState.value.isRequired);\n const hasError = computed(() => metaState.value.hasError);\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 onInput = (\n val: BitPathValue<TForm, P> | string | number | null | undefined,\n ) => {\n setValue(val);\n };\n\n const onBlur = () => {\n setBlur();\n };\n\n return {\n // Main handlers and values (flat)\n value: rawValue,\n displayValue,\n modelValue,\n setValue,\n setBlur,\n onInput,\n onBlur,\n // Metadata (grouped)\n meta: {\n error,\n touched,\n invalid,\n isValidating,\n isDirty,\n isHidden,\n isRequired,\n hasError,\n },\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\nimport {\n BitArrayPath,\n cleanupRegisteredPrefix,\n createArrayBinding,\n} from \"../core\";\nimport { useBitStore } from \"./context\";\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 controller = createArrayBinding<TForm, P>(store, path);\n const values = shallowRef(controller.readItems());\n\n const unsubscribe = store.observe.subscribePath(path, () => {\n values.value = controller.readItems();\n });\n\n onUnmounted(() => {\n unsubscribe();\n cleanupRegisteredPrefix(store, `${path as string}.`);\n });\n\n const fields = computed(() => controller.getFields(values.value));\n\n const length = computed(() => values.value.length);\n\n return {\n fields,\n length,\n append: controller.append,\n prepend: controller.prepend,\n insert: controller.insert,\n remove: controller.remove,\n move: controller.move,\n swap: controller.swap,\n replace: controller.replace,\n clear: controller.clear,\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\nimport { observeHistoryMetaSnapshot, readHistoryMetaSnapshot } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitHistoryResult } from \"./types\";\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n\n const meta = shallowRef(readHistoryMetaSnapshot(store));\n\n const unsubscribe = observeHistoryMetaSnapshot(store, (nextMeta) => {\n meta.value = nextMeta;\n });\n\n onUnmounted(unsubscribe);\n\n const undo = () => store.feature.undo();\n const redo = () => store.feature.redo();\n\n return {\n canUndo: computed(() => meta.value.canUndo),\n canRedo: computed(() => meta.value.canRedo),\n historyIndex: computed(() => meta.value.historyIndex),\n historySize: computed(() => meta.value.historySize),\n undo,\n redo,\n };\n}\n","import { computed, onMounted, onUnmounted, ref } from \"vue\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { observeScopeStatusSnapshot } from \"../core\";\nimport { useBitStore } from \"./context\";\n\nexport type { ScopeStatus, ValidateScopeResult };\n\nexport function useBitScope(scopeName: string) {\n const store = useBitStore();\n const status = ref<ScopeStatus>(store.read.getScopeStatus(scopeName));\n let unsubscribe: () => void;\n\n onMounted(() => {\n unsubscribe = observeScopeStatusSnapshot(store, scopeName, (nextStatus) => {\n status.value = nextStatus;\n });\n });\n\n onUnmounted(() => {\n unsubscribe?.();\n });\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.value.hasErrors);\n const isDirty = computed(() => status.value.isDirty);\n const errors = computed(() => status.value.errors);\n\n return {\n scopeName,\n status,\n errors,\n validate,\n getErrors,\n isValid,\n isDirty,\n };\n}\n","import { computed, onMounted, onUnmounted, ref, watch } from \"vue\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { isScopeStatusEqual } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitStepsResult } from \"./types\";\n\nexport function useBitSteps(scopeNames: string[]): UseBitStepsResult {\n const store = useBitStore();\n const stepIndex = ref(0);\n\n const scope = computed(() => scopeNames[stepIndex.value] ?? \"\");\n const status = ref<ScopeStatus>(store.read.getScopeStatus(scope.value));\n let unsubscribe: (() => void) | undefined;\n\n watch(scope, (newScope) => {\n status.value = store.read.getScopeStatus(newScope);\n unsubscribe?.();\n unsubscribe = store.observe.subscribeScopeStatus(newScope, updateStatus);\n });\n\n const updateStatus = () => {\n const scopeName = scope.value;\n const newStatus = store.read.getScopeStatus(scopeName);\n if (!isScopeStatusEqual(status.value, newStatus)) {\n status.value = newStatus;\n }\n };\n\n onMounted(() => {\n unsubscribe = store.observe.subscribeScopeStatus(scope.value, updateStatus);\n });\n\n onUnmounted(() => {\n unsubscribe?.();\n });\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const scopeName = scope.value;\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(scope.value);\n\n const next = async (): Promise<boolean> => {\n const scopeName = scope.value;\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 stepIndex.value = Math.min(stepIndex.value + 1, scopeNames.length - 1);\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 stepIndex.value = Math.max(stepIndex.value - 1, 0);\n };\n\n const goTo = (targetStep: number) => {\n stepIndex.value = Math.max(\n 0,\n Math.min(targetStep - 1, scopeNames.length - 1),\n );\n };\n\n const step = computed(() => stepIndex.value + 1);\n const isFirst = computed(() => stepIndex.value === 0);\n const isLast = computed(() => stepIndex.value >= scopeNames.length - 1);\n const isValid = computed(() => !status.value.hasErrors);\n const isDirty = computed(() => status.value.isDirty);\n const errors = computed(() => status.value.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 { ref, onUnmounted, readonly } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport { getDeepValue, valueEqual, BitPath, BitPathValue } from \"../core\";\n\nexport function useBitWatch<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n const initialValue = getDeepValue(\n store.read.getState().values,\n path as string,\n ) as BitPathValue<TForm, P>;\n const value = ref<BitPathValue<TForm, P>>(initialValue);\n\n const unsubscribe = store.observe.subscribePath(path, (newValue) => {\n if (!valueEqual(value.value, newValue)) {\n value.value = newValue as BitPathValue<TForm, P>;\n }\n });\n\n onUnmounted(unsubscribe);\n\n return readonly(value);\n}\n","/**\n * Vue Composition API for File Upload\n *\n * Minimal upload API integrated with global field validation lifecycle.\n */\n\nimport { computed, ComputedRef, ref } from \"vue\";\nimport { useBitField } from \"./use-bit-field\";\nimport { useBitStore } from \"./context\";\nimport { BitUploadFn, BitDeleteUploadFn } from \"../core\";\nimport { createUploadHandler, createRemoveHandler } from \"../core/adapters\";\nimport type { UseBitUploadResult } from \"./types\";\n\nexport function useBitUpload(\n fieldPath: string,\n uploadFn: BitUploadFn,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n let uploadKey: string | null = null;\n const isUploading = ref(false);\n\n const kernelCallbacks = {\n setLoading: (val: boolean) => {\n isUploading.value = val;\n },\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 };\n\n const upload = createUploadHandler(fieldPath, uploadFn, kernelCallbacks);\n const remove = createRemoveHandler(fieldPath, deleteFile, kernelCallbacks);\n\n return {\n value: field.value as ComputedRef<string | File | null>,\n setValue: field.setValue,\n error: computed(() => field.meta.error.value),\n isValidating: computed(\n () => !!field.meta.isValidating.value || isUploading.value,\n ),\n upload,\n remove,\n };\n}\n","import { computed, onUnmounted, ref } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport { observePersistMetaSnapshot } from \"../core\";\nimport type { UseBitPersistResult } from \"./types\";\n\nexport function useBitPersist<T extends object = any>(): UseBitPersistResult {\n const store = useBitStore<T>();\n const meta = ref(store.read.getPersistMetadata());\n\n const unsubscribe = observePersistMetaSnapshot(store, (nextMeta) => {\n meta.value = nextMeta;\n });\n\n onUnmounted(() => 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(() => meta.value.isSaving),\n isRestoring: computed(() => meta.value.isRestoring),\n error: computed(() => meta.value.error),\n },\n };\n}\n"],"mappings":"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","names":["inject","provide","BIT_STORE_KEY","provideBitStore","store","provide","createFrameworkStoreAdapter","useBitStore","inject","computed","onUnmounted","shallowRef","ref","useBitForm","store","useBitStore","state","shallowRef","submitError","ref","lastResponse","unsubscribe","observeFormMetaSnapshot","nextMeta","onUnmounted","controller","actions","createFrameworkFormBinding","result","error","isValid","computed","isSubmitting","isDirty","onSubmit","reset","computed","onUnmounted","shallowRef","useBitField","path","store","useBitStore","fieldController","createFrameworkMaskedFieldBinding","state","shallowRef","unsubscribe","nextState","onUnmounted","cleanupRegisteredField","rawValue","computed","displayValue","modelValue","val","metaState","deriveFieldMeta","error","touched","invalid","isValidating","isDirty","isHidden","isRequired","hasError","setValue","setBlur","computed","onUnmounted","shallowRef","useBitArray","path","store","useBitStore","controller","createArrayBinding","values","shallowRef","unsubscribe","onUnmounted","cleanupRegisteredPrefix","fields","computed","length","computed","onUnmounted","shallowRef","useBitHistory","store","useBitStore","meta","shallowRef","readHistoryMetaSnapshot","unsubscribe","observeHistoryMetaSnapshot","nextMeta","onUnmounted","undo","redo","computed","computed","onMounted","onUnmounted","ref","useBitScope","scopeName","store","useBitStore","status","ref","unsubscribe","onMounted","observeScopeStatusSnapshot","nextStatus","onUnmounted","validate","valid","errors","getErrors","isValid","computed","isDirty","computed","onMounted","onUnmounted","ref","watch","useBitSteps","scopeNames","store","useBitStore","stepIndex","ref","scope","computed","status","unsubscribe","watch","newScope","updateStatus","scopeName","newStatus","isScopeStatusEqual","onMounted","onUnmounted","validate","valid","errors","getErrors","next","scopeFields","pathsWithErrors","prev","goTo","targetStep","step","isFirst","isLast","isValid","isDirty","ref","onUnmounted","readonly","useBitWatch","path","store","useBitStore","initialValue","getDeepValue","value","ref","unsubscribe","newValue","valueEqual","onUnmounted","readonly","computed","ref","useBitUpload","fieldPath","uploadFn","deleteFile","store","useBitStore","field","useBitField","uploadKey","isUploading","ref","kernelCallbacks","val","path","msg","key","upload","createUploadHandler","remove","createRemoveHandler","computed","computed","onUnmounted","ref","useBitPersist","store","useBitStore","meta","ref","unsubscribe","observePersistMetaSnapshot","nextMeta","onUnmounted","computed"]}
1
+ {"version":3,"sources":["../../src/vue/context.ts","../../src/vue/use-bit-form.ts","../../src/vue/use-bit-field.ts","../../src/vue/use-bit-array.ts","../../src/vue/use-bit-history.ts","../../src/vue/use-bit-scope.ts","../../src/vue/use-bit-steps.ts","../../src/vue/use-bit-watch.ts","../../src/vue/use-bit-upload.ts","../../src/vue/use-bit-persist.ts"],"sourcesContent":["import { inject, provide, InjectionKey } from \"vue\";\nimport type { BitFrameworkStoreApi, BitStoreApi } from \"../core\";\nimport { createFrameworkStoreAdapter } from \"../core\";\n\n// Chave única para evitar colisões\nexport const BIT_STORE_KEY: InjectionKey<BitFrameworkStoreApi<any>> =\n Symbol(\"BIT_STORE\");\n\nexport function provideBitStore<T extends object>(\n store: BitFrameworkStoreApi<T> | BitStoreApi<T>,\n) {\n provide(BIT_STORE_KEY, createFrameworkStoreAdapter<T>(store));\n}\n\nexport function useBitStore<T extends object>() {\n const store = inject(BIT_STORE_KEY);\n if (!store)\n throw new Error(\n \"BitForm Vue hooks devem ser usados sob um provideBitStore\",\n );\n return store as BitFrameworkStoreApi<T>;\n}\n","import { computed, onUnmounted, shallowRef, ref } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport { createFrameworkFormBinding, observeFormMetaSnapshot } from \"../core\";\nimport type { UseBitFormResult } from \"./types\";\n\nexport function useBitForm<T extends object>(): UseBitFormResult<T> {\n const store = useBitStore<T>();\n const state = shallowRef({\n isValid: true,\n isDirty: false,\n isSubmitting: false,\n });\n const submitError = ref<Error | null>(null);\n const lastResponse = ref<unknown>(null);\n\n const unsubscribe = observeFormMetaSnapshot(store, (nextMeta) => {\n state.value = nextMeta;\n });\n\n onUnmounted(unsubscribe);\n\n const { controller, actions } = createFrameworkFormBinding(store, {\n clearSubmissionState: () => {\n submitError.value = null;\n lastResponse.value = null;\n },\n setSubmissionResult: (result) => {\n lastResponse.value = result;\n },\n setSubmissionError: (error) => {\n submitError.value = error;\n },\n });\n\n const isValid = computed(() => state.value.isValid);\n const isSubmitting = computed(() => state.value.isSubmitting);\n const isDirty = computed(() => state.value.isDirty);\n\n const onSubmit = controller.onSubmit;\n const reset = controller.reset;\n\n const meta = {\n isValid,\n isDirty,\n isSubmitting,\n submitError,\n lastResponse,\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,\n reset,\n ...actions,\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitFieldVueResult } from \"./types\";\nimport type { BitPath, BitPathValue } from \"../core\";\nimport {\n cleanupRegisteredField,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n} from \"../core\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldVueResult<BitPathValue<TForm, P>> {\n const store = useBitStore<TForm>();\n\n const { fieldController } = createFrameworkMaskedFieldBinding(store, path);\n\n const state = shallowRef(store.read.getFieldState(path));\n\n const unsubscribe = store.observe.subscribeFieldState(path, (nextState) => {\n state.value = nextState;\n });\n\n onUnmounted(() => {\n unsubscribe();\n cleanupRegisteredField(store, path as string);\n });\n\n const rawValue = computed(() => state.value.value as BitPathValue<TForm, P>);\n\n const displayValue = computed(() =>\n fieldController.displayValue(rawValue.value),\n );\n\n const modelValue = computed({\n get: () => displayValue.value,\n set: (val: string) => {\n fieldController.setValue(val);\n },\n });\n\n const metaState = computed(() => deriveFieldMeta(state.value));\n const error = computed(() => metaState.value.error);\n const touched = computed(() => metaState.value.touched);\n const invalid = computed(() => metaState.value.invalid);\n const isValidating = computed(() => metaState.value.isValidating);\n const isDirty = computed(() => metaState.value.isDirty);\n const isHidden = computed(() => metaState.value.isHidden);\n const isRequired = computed(() => metaState.value.isRequired);\n const hasError = computed(() => metaState.value.hasError);\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 onInput = (\n val: BitPathValue<TForm, P> | string | number | null | undefined,\n ) => {\n setValue(val);\n };\n\n const onBlur = () => {\n setBlur();\n };\n\n return {\n // Main handlers and values (flat)\n value: rawValue,\n displayValue,\n modelValue,\n setValue,\n setBlur,\n onInput,\n onBlur,\n // Metadata (grouped)\n meta: {\n error,\n touched,\n invalid,\n isValidating,\n isDirty,\n isHidden,\n isRequired,\n hasError,\n },\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\nimport {\n BitArrayPath,\n cleanupRegisteredPrefix,\n createArrayBinding,\n} from \"../core\";\nimport { useBitStore } from \"./context\";\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 controller = createArrayBinding<TForm, P>(store, path);\n const values = shallowRef(controller.readItems());\n\n const unsubscribe = store.observe.subscribePath(path, () => {\n values.value = controller.readItems();\n });\n\n onUnmounted(() => {\n unsubscribe();\n cleanupRegisteredPrefix(store, `${path as string}.`);\n });\n\n const fields = computed(() => controller.getFields(values.value));\n\n const length = computed(() => values.value.length);\n\n return {\n fields,\n length,\n append: controller.append,\n prepend: controller.prepend,\n insert: controller.insert,\n remove: controller.remove,\n move: controller.move,\n swap: controller.swap,\n replace: controller.replace,\n clear: controller.clear,\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\nimport { observeHistoryMetaSnapshot, readHistoryMetaSnapshot } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitHistoryResult } from \"./types\";\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n\n const meta = shallowRef(readHistoryMetaSnapshot(store));\n\n const unsubscribe = observeHistoryMetaSnapshot(store, (nextMeta) => {\n meta.value = nextMeta;\n });\n\n onUnmounted(unsubscribe);\n\n const undo = () => store.feature.undo();\n const redo = () => store.feature.redo();\n\n return {\n canUndo: computed(() => meta.value.canUndo),\n canRedo: computed(() => meta.value.canRedo),\n historyIndex: computed(() => meta.value.historyIndex),\n historySize: computed(() => meta.value.historySize),\n undo,\n redo,\n };\n}\n","import { computed, onMounted, onUnmounted, ref } from \"vue\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { observeScopeStatusSnapshot } from \"../core\";\nimport { useBitStore } from \"./context\";\n\nexport type { ScopeStatus, ValidateScopeResult };\n\nexport function useBitScope(scopeName: string) {\n const store = useBitStore();\n const status = ref<ScopeStatus>(store.read.getScopeStatus(scopeName));\n let unsubscribe: () => void;\n\n onMounted(() => {\n unsubscribe = observeScopeStatusSnapshot(store, scopeName, (nextStatus) => {\n status.value = nextStatus;\n });\n });\n\n onUnmounted(() => {\n unsubscribe?.();\n });\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.value.hasErrors);\n const isDirty = computed(() => status.value.isDirty);\n const errors = computed(() => status.value.errors);\n\n return {\n scopeName,\n status,\n errors,\n validate,\n getErrors,\n isValid,\n isDirty,\n };\n}\n","import { computed, onMounted, onUnmounted, ref, watch } from \"vue\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { isScopeStatusEqual } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitStepsResult } from \"./types\";\n\nexport function useBitSteps(scopeNames: string[]): UseBitStepsResult {\n const store = useBitStore();\n const stepIndex = ref(0);\n\n const scope = computed(() => scopeNames[stepIndex.value] ?? \"\");\n const status = ref<ScopeStatus>(store.read.getScopeStatus(scope.value));\n let unsubscribe: (() => void) | undefined;\n\n watch(scope, (newScope) => {\n status.value = store.read.getScopeStatus(newScope);\n unsubscribe?.();\n unsubscribe = store.observe.subscribeScopeStatus(newScope, updateStatus);\n });\n\n const updateStatus = () => {\n const scopeName = scope.value;\n const newStatus = store.read.getScopeStatus(scopeName);\n if (!isScopeStatusEqual(status.value, newStatus)) {\n status.value = newStatus;\n }\n };\n\n onMounted(() => {\n unsubscribe = store.observe.subscribeScopeStatus(scope.value, updateStatus);\n });\n\n onUnmounted(() => {\n unsubscribe?.();\n });\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const scopeName = scope.value;\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(scope.value);\n\n const next = async (): Promise<boolean> => {\n const scopeName = scope.value;\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 stepIndex.value = Math.min(stepIndex.value + 1, scopeNames.length - 1);\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 stepIndex.value = Math.max(stepIndex.value - 1, 0);\n };\n\n const goTo = (targetStep: number) => {\n stepIndex.value = Math.max(\n 0,\n Math.min(targetStep - 1, scopeNames.length - 1),\n );\n };\n\n const step = computed(() => stepIndex.value + 1);\n const isFirst = computed(() => stepIndex.value === 0);\n const isLast = computed(() => stepIndex.value >= scopeNames.length - 1);\n const isValid = computed(() => !status.value.hasErrors);\n const isDirty = computed(() => status.value.isDirty);\n const errors = computed(() => status.value.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 { ref, onUnmounted, readonly } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport { getDeepValue, valueEqual, BitPath, BitPathValue } from \"../core\";\n\nexport function useBitWatch<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n const initialValue = getDeepValue(\n store.read.getState().values,\n path as string,\n ) as BitPathValue<TForm, P>;\n const value = ref<BitPathValue<TForm, P>>(initialValue);\n\n const unsubscribe = store.observe.subscribePath(path, (newValue) => {\n if (!valueEqual(value.value, newValue)) {\n value.value = newValue as BitPathValue<TForm, P>;\n }\n });\n\n onUnmounted(unsubscribe);\n\n return readonly(value);\n}\n","/**\n * Vue Composition API for File Upload\n *\n * Minimal upload API integrated with global field validation lifecycle.\n */\n\nimport { computed, ComputedRef, ref } from \"vue\";\nimport type { BitDeleteUploadFn, BitUploadFn } from \"../core\";\nimport { createRemoveHandler, createUploadHandler } from \"../core/adapters\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitUploadResult } from \"./types\";\nimport { useBitField } from \"./use-bit-field\";\n\nexport function useBitUpload<\n TMetadata extends Record<string, unknown> = Record<string, unknown>,\n>(\n fieldPath: string,\n uploadFn: BitUploadFn<TMetadata>,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n let uploadKey: string | null = null;\n const isUploading = ref(false);\n\n const kernelCallbacks = {\n setLoading: (val: boolean) => {\n isUploading.value = val;\n },\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 };\n\n const upload = createUploadHandler(fieldPath, uploadFn, kernelCallbacks);\n const remove = createRemoveHandler(fieldPath, deleteFile, kernelCallbacks);\n\n return {\n value: field.value as ComputedRef<string | File | null>,\n setValue: field.setValue,\n error: computed(() => field.meta.error.value),\n isValidating: computed(\n () => !!field.meta.isValidating.value || isUploading.value,\n ),\n upload,\n remove,\n };\n}\n","import { computed, onUnmounted, ref } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport { observePersistMetaSnapshot } from \"../core\";\nimport type { UseBitPersistResult } from \"./types\";\n\nexport function useBitPersist<T extends object = any>(): UseBitPersistResult {\n const store = useBitStore<T>();\n const meta = ref(store.read.getPersistMetadata());\n\n const unsubscribe = observePersistMetaSnapshot(store, (nextMeta) => {\n meta.value = nextMeta;\n });\n\n onUnmounted(() => 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(() => meta.value.isSaving),\n isRestoring: computed(() => meta.value.isRestoring),\n error: computed(() => meta.value.error),\n },\n };\n}\n"],"mappings":"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","names":["inject","provide","BIT_STORE_KEY","provideBitStore","store","provide","createFrameworkStoreAdapter","useBitStore","inject","computed","onUnmounted","shallowRef","ref","useBitForm","store","useBitStore","state","shallowRef","submitError","ref","lastResponse","unsubscribe","observeFormMetaSnapshot","nextMeta","onUnmounted","controller","actions","createFrameworkFormBinding","result","error","isValid","computed","isSubmitting","isDirty","onSubmit","reset","computed","onUnmounted","shallowRef","useBitField","path","store","useBitStore","fieldController","createFrameworkMaskedFieldBinding","state","shallowRef","unsubscribe","nextState","onUnmounted","cleanupRegisteredField","rawValue","computed","displayValue","modelValue","val","metaState","deriveFieldMeta","error","touched","invalid","isValidating","isDirty","isHidden","isRequired","hasError","setValue","setBlur","computed","onUnmounted","shallowRef","useBitArray","path","store","useBitStore","controller","createArrayBinding","values","shallowRef","unsubscribe","onUnmounted","cleanupRegisteredPrefix","fields","computed","length","computed","onUnmounted","shallowRef","useBitHistory","store","useBitStore","meta","shallowRef","readHistoryMetaSnapshot","unsubscribe","observeHistoryMetaSnapshot","nextMeta","onUnmounted","undo","redo","computed","computed","onMounted","onUnmounted","ref","useBitScope","scopeName","store","useBitStore","status","ref","unsubscribe","onMounted","observeScopeStatusSnapshot","nextStatus","onUnmounted","validate","valid","errors","getErrors","isValid","computed","isDirty","computed","onMounted","onUnmounted","ref","watch","useBitSteps","scopeNames","store","useBitStore","stepIndex","ref","scope","computed","status","unsubscribe","watch","newScope","updateStatus","scopeName","newStatus","isScopeStatusEqual","onMounted","onUnmounted","validate","valid","errors","getErrors","next","scopeFields","pathsWithErrors","prev","goTo","targetStep","step","isFirst","isLast","isValid","isDirty","ref","onUnmounted","readonly","useBitWatch","path","store","useBitStore","initialValue","getDeepValue","value","ref","unsubscribe","newValue","valueEqual","onUnmounted","readonly","computed","ref","useBitUpload","fieldPath","uploadFn","deleteFile","store","useBitStore","field","useBitField","uploadKey","isUploading","ref","kernelCallbacks","val","path","msg","key","upload","createUploadHandler","remove","createRemoveHandler","computed","computed","onUnmounted","ref","useBitPersist","store","useBitStore","meta","ref","unsubscribe","observePersistMetaSnapshot","nextMeta","onUnmounted","computed"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lehnihon/bit-form",
3
- "version": "2.2.9",
3
+ "version": "2.2.10",
4
4
  "description": "Gerenciamento de estado de formulários agnóstico e performático",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -218,7 +218,7 @@
218
218
  "repomix": "^1.11.1",
219
219
  "rxjs": "^7.8.1",
220
220
  "tsup": "^8.3.6",
221
- "typescript": "^5.7.3",
221
+ "typescript": "^5.9.3",
222
222
  "vite": "^5.4.19",
223
223
  "vitest": "^3.0.5",
224
224
  "vue": "^3.5.13",
@@ -1,23 +0,0 @@
1
- import { e as BitStoreApi } from './store-api-types-DfTFy2h4.js';
2
- import { c as BitArrayPath, b as BitArrayItem, v as BitPathValue } from './types-CRCP4Pgq.js';
3
-
4
- interface BitArrayBindingField<TItem> {
5
- key: string;
6
- value: TItem;
7
- index: number;
8
- }
9
- interface BitArrayBinding<TForm extends object, P extends BitArrayPath<TForm>> {
10
- readItems(): BitArrayItem<BitPathValue<TForm, P>>[];
11
- getFields(items: BitArrayItem<BitPathValue<TForm, P>>[]): BitArrayBindingField<BitArrayItem<BitPathValue<TForm, P>>>[];
12
- append(value: BitArrayItem<BitPathValue<TForm, P>>): void;
13
- prepend(value: BitArrayItem<BitPathValue<TForm, P>>): void;
14
- insert(index: number, value: BitArrayItem<BitPathValue<TForm, P>>): void;
15
- remove(index: number): void;
16
- move(from: number, to: number): void;
17
- swap(indexA: number, indexB: number): void;
18
- replace(items: BitArrayItem<BitPathValue<TForm, P>>[]): void;
19
- clear(): void;
20
- }
21
- declare function createArrayBinding<TForm extends object, P extends BitArrayPath<TForm>>(store: BitStoreApi<TForm>, path: P): BitArrayBinding<TForm, P>;
22
-
23
- export { type BitArrayBinding as B, type BitArrayBindingField as a, createArrayBinding as c };
@@ -1,23 +0,0 @@
1
- import { e as BitStoreApi } from './store-api-types-Bm3EAqR_.cjs';
2
- import { c as BitArrayPath, b as BitArrayItem, v as BitPathValue } from './types-SOg9xEce.cjs';
3
-
4
- interface BitArrayBindingField<TItem> {
5
- key: string;
6
- value: TItem;
7
- index: number;
8
- }
9
- interface BitArrayBinding<TForm extends object, P extends BitArrayPath<TForm>> {
10
- readItems(): BitArrayItem<BitPathValue<TForm, P>>[];
11
- getFields(items: BitArrayItem<BitPathValue<TForm, P>>[]): BitArrayBindingField<BitArrayItem<BitPathValue<TForm, P>>>[];
12
- append(value: BitArrayItem<BitPathValue<TForm, P>>): void;
13
- prepend(value: BitArrayItem<BitPathValue<TForm, P>>): void;
14
- insert(index: number, value: BitArrayItem<BitPathValue<TForm, P>>): void;
15
- remove(index: number): void;
16
- move(from: number, to: number): void;
17
- swap(indexA: number, indexB: number): void;
18
- replace(items: BitArrayItem<BitPathValue<TForm, P>>[]): void;
19
- clear(): void;
20
- }
21
- declare function createArrayBinding<TForm extends object, P extends BitArrayPath<TForm>>(store: BitStoreApi<TForm>, path: P): BitArrayBinding<TForm, P>;
22
-
23
- export { type BitArrayBinding as B, type BitArrayBindingField as a, createArrayBinding as c };
@@ -1,19 +0,0 @@
1
- import { r as BitFormGlobal } from './types-CRCP4Pgq.js';
2
-
3
- declare global {
4
- var __BIT_FORM__: BitFormGlobal | undefined;
5
- }
6
- declare const bitBus: BitFormGlobal;
7
- /**
8
- * Creates an isolated bus instance — not connected to the browser global.
9
- * Use this in SSR / Edge Runtime environments (e.g. Next.js Edge) where a
10
- * shared `globalThis` singleton is unsafe across request contexts.
11
- *
12
- * @example
13
- * // _app.tsx (SSR-safe)
14
- * const bus = createBitBus();
15
- * const store = createBitStore({ bus, initialValues: { ... } });
16
- */
17
- declare function createBitBus(): BitFormGlobal;
18
-
19
- export { bitBus as b, createBitBus as c };