@lehnihon/bit-form 2.2.1 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/angular/index.cjs +1 -1
- package/dist/angular/index.cjs.map +1 -1
- package/dist/angular/index.d.cts +31 -38
- package/dist/angular/index.d.ts +31 -38
- package/dist/angular/index.js +1 -1
- package/dist/angular/index.js.map +1 -1
- package/dist/bus-B1my-s_o.d.ts +16 -0
- package/dist/bus-BI29cKpD.d.cts +16 -0
- package/dist/chunk-2UVV7SU4.js +2 -0
- package/dist/chunk-2UVV7SU4.js.map +1 -0
- package/dist/chunk-676WXU4S.cjs +2 -0
- package/dist/chunk-676WXU4S.cjs.map +1 -0
- package/dist/chunk-7MBRAKBL.js +2 -0
- package/dist/chunk-7MBRAKBL.js.map +1 -0
- package/dist/chunk-AD7T42HJ.js +1 -0
- package/dist/chunk-AD7T42HJ.js.map +1 -0
- package/dist/chunk-C4BYXZGB.cjs +1 -0
- package/dist/chunk-C4BYXZGB.cjs.map +1 -0
- package/dist/chunk-ER2DNS7T.cjs +2 -0
- package/dist/chunk-ER2DNS7T.cjs.map +1 -0
- package/dist/chunk-NWPA4F3B.cjs +2 -0
- package/dist/chunk-NWPA4F3B.cjs.map +1 -0
- package/dist/chunk-O5RRLZR7.js +2 -0
- package/dist/chunk-O5RRLZR7.js.map +1 -0
- package/dist/chunk-TRPMTJ35.js +2 -0
- package/dist/chunk-TRPMTJ35.js.map +1 -0
- package/dist/chunk-VSWCUQAF.cjs +2 -0
- package/dist/chunk-VSWCUQAF.cjs.map +1 -0
- package/dist/cli/index.cjs +3 -3
- package/dist/core/light.cjs +2 -0
- package/dist/core/light.cjs.map +1 -0
- package/dist/core/light.d.cts +29 -0
- package/dist/core/light.d.ts +29 -0
- package/dist/core/light.js +2 -0
- package/dist/core/light.js.map +1 -0
- package/dist/devtools/bridge.cjs +1 -1
- package/dist/devtools/bridge.cjs.map +1 -1
- package/dist/devtools/bridge.js +1 -1
- package/dist/devtools/bridge.js.map +1 -1
- package/dist/devtools/index.cjs +132 -1
- package/dist/devtools/index.cjs.map +1 -1
- package/dist/devtools/index.js +132 -1
- package/dist/devtools/index.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +19 -53
- package/dist/index.d.ts +19 -53
- package/dist/index.js +1 -1
- package/dist/{public-types-Lq3eLstW.d.ts → public-types-Bl94ECPb.d.ts} +11 -19
- package/dist/{public-types-CtYuIAMP.d.cts → public-types-CLIDR8aC.d.cts} +11 -19
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +6 -5
- package/dist/react/index.d.ts +6 -5
- package/dist/react/index.js +1 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react-native/index.cjs +1 -1
- package/dist/react-native/index.cjs.map +1 -1
- package/dist/react-native/index.d.cts +5 -4
- package/dist/react-native/index.d.ts +5 -4
- package/dist/react-native/index.js +1 -1
- package/dist/react-native/index.js.map +1 -1
- package/dist/resolvers/joi.cjs +1 -1
- package/dist/resolvers/joi.cjs.map +1 -1
- package/dist/resolvers/joi.d.cts +4 -4
- package/dist/resolvers/joi.d.ts +4 -4
- package/dist/resolvers/joi.js +1 -1
- package/dist/resolvers/joi.js.map +1 -1
- package/dist/resolvers/types.cjs +1 -0
- package/dist/resolvers/types.cjs.map +1 -0
- package/dist/resolvers/types.d.cts +16 -0
- package/dist/resolvers/types.d.ts +16 -0
- package/dist/resolvers/types.js +1 -0
- package/dist/resolvers/types.js.map +1 -0
- package/dist/resolvers/yup.cjs +1 -1
- package/dist/resolvers/yup.cjs.map +1 -1
- package/dist/resolvers/yup.d.cts +4 -4
- package/dist/resolvers/yup.d.ts +4 -4
- 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.d.cts +4 -4
- package/dist/resolvers/zod.d.ts +4 -4
- package/dist/resolvers/zod.js +1 -1
- package/dist/resolvers/zod.js.map +1 -1
- package/dist/{bus-B3pGaiFZ.d.cts → types-DqeN9Kq_.d.cts} +6 -16
- package/dist/{bus-B3pGaiFZ.d.ts → types-DqeN9Kq_.d.ts} +6 -16
- package/dist/{use-bit-persist-hxJaKG2S.d.ts → use-bit-persist-BgFBg8lQ.d.cts} +37 -43
- package/dist/{use-bit-persist-CWzGfovL.d.cts → use-bit-persist-JtinX6Vy.d.ts} +37 -43
- package/dist/vue/index.cjs +1 -1
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.d.cts +31 -38
- package/dist/vue/index.d.ts +31 -38
- package/dist/vue/index.js +1 -1
- package/dist/vue/index.js.map +1 -1
- package/package.json +7 -1
- package/dist/chunk-442A4FTZ.cjs +0 -2
- package/dist/chunk-442A4FTZ.cjs.map +0 -1
- package/dist/chunk-6FJEE6O3.js +0 -133
- package/dist/chunk-6FJEE6O3.js.map +0 -1
- package/dist/chunk-FOV24ACZ.js +0 -2
- package/dist/chunk-FOV24ACZ.js.map +0 -1
- package/dist/chunk-YWXX6XRV.cjs +0 -133
- package/dist/chunk-YWXX6XRV.cjs.map +0 -1
package/dist/vue/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { f as BitStoreApi, g as BitStoreHooksApi, b as BitHistoryMetadata, c as BitPersistMetadata, h as BitValidationOptions } from '../public-types-Bl94ECPb.js';
|
|
2
|
+
import '../bus-B1my-s_o.js';
|
|
3
|
+
import { S as ScopeStatus, n as ValidateScopeResult, i as BitErrors, J as BitTouched, h as DeepPartial, f as BitPath, g as BitPathValue, k as BitArrayPath, l as BitArrayItem } from '../types-DqeN9Kq_.js';
|
|
3
4
|
import * as vue from 'vue';
|
|
4
5
|
import { ComputedRef, Ref } from 'vue';
|
|
5
6
|
import * as _vue_reactivity from '@vue/reactivity';
|
|
@@ -7,42 +8,7 @@ import * as _vue_shared from '@vue/shared';
|
|
|
7
8
|
import { a as BitUploadFn, B as BitDeleteUploadFn } from '../types-C2mpfhp1.js';
|
|
8
9
|
|
|
9
10
|
declare function provideBitStore<T extends object>(store: BitStoreApi<T>): void;
|
|
10
|
-
declare function useBitStore<T extends object>():
|
|
11
|
-
|
|
12
|
-
declare function useBitForm<T extends object>(): {
|
|
13
|
-
meta: {
|
|
14
|
-
isValid: vue.ComputedRef<boolean>;
|
|
15
|
-
isDirty: vue.ComputedRef<boolean>;
|
|
16
|
-
isSubmitting: vue.ComputedRef<boolean>;
|
|
17
|
-
submitError: vue.Ref<Error | null, Error | null>;
|
|
18
|
-
lastResponse: vue.Ref<unknown, unknown>;
|
|
19
|
-
};
|
|
20
|
-
getValues: () => T;
|
|
21
|
-
getErrors: () => BitErrors<T>;
|
|
22
|
-
getTouched: () => BitTouched<T>;
|
|
23
|
-
getDirtyValues: () => Partial<T>;
|
|
24
|
-
submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>) => (e?: Event) => Promise<void>;
|
|
25
|
-
onSubmit: (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => (e?: Event) => Promise<void>;
|
|
26
|
-
reset: () => void;
|
|
27
|
-
replaceValues: (values: T) => void;
|
|
28
|
-
hydrate: (values: DeepPartial<T>) => void;
|
|
29
|
-
rebase: (values: T) => void;
|
|
30
|
-
setValues: (values: T) => void;
|
|
31
|
-
setError: (path: string, message: string | undefined) => void;
|
|
32
|
-
setErrors: (errors: BitErrors<T>) => void;
|
|
33
|
-
setServerErrors: (serverErrors: Record<string, string[] | string>) => void;
|
|
34
|
-
setField: <P extends BitPath<T, "">>(path: P, value: BitPathValue<T, P>) => void;
|
|
35
|
-
blurField: <P extends BitPath<T, "">>(path: P) => void;
|
|
36
|
-
validate: (options?: BitValidationOptions) => Promise<boolean>;
|
|
37
|
-
mutations: {
|
|
38
|
-
pushItem: <P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>) => void;
|
|
39
|
-
prependItem: <P extends BitArrayPath<T>>(path: P, value: BitArrayItem<BitPathValue<T, P>>) => void;
|
|
40
|
-
removeItem: <P extends BitArrayPath<T>>(path: P, index: number) => void;
|
|
41
|
-
insertItem: <P extends BitArrayPath<T>>(path: P, index: number, value: BitArrayItem<BitPathValue<T, P>>) => void;
|
|
42
|
-
moveItem: <P extends BitArrayPath<T>>(path: P, from: number, to: number) => void;
|
|
43
|
-
swapItems: <P extends BitArrayPath<T>>(path: P, indexA: number, indexB: number) => void;
|
|
44
|
-
};
|
|
45
|
-
};
|
|
11
|
+
declare function useBitStore<T extends object>(): BitStoreHooksApi<T>;
|
|
46
12
|
|
|
47
13
|
/**
|
|
48
14
|
* Metadata describing the current state of a form field (Vue reactive).
|
|
@@ -125,6 +91,33 @@ interface UseBitPersistResult {
|
|
|
125
91
|
error: Ref<BitPersistMetadata["error"]>;
|
|
126
92
|
};
|
|
127
93
|
}
|
|
94
|
+
interface UseBitFormResult<T extends object = any> {
|
|
95
|
+
meta: {
|
|
96
|
+
isValid: ComputedRef<boolean>;
|
|
97
|
+
isDirty: ComputedRef<boolean>;
|
|
98
|
+
isSubmitting: ComputedRef<boolean>;
|
|
99
|
+
submitError: Ref<Error | null>;
|
|
100
|
+
lastResponse: Ref<unknown>;
|
|
101
|
+
};
|
|
102
|
+
getValues: () => T;
|
|
103
|
+
getErrors: () => BitErrors<T>;
|
|
104
|
+
getTouched: () => BitTouched<T>;
|
|
105
|
+
getDirtyValues: () => Partial<T>;
|
|
106
|
+
submit: (onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>) => (e?: Event) => Promise<void>;
|
|
107
|
+
onSubmit: (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => (e?: Event) => Promise<void>;
|
|
108
|
+
reset: () => void;
|
|
109
|
+
replaceValues: (values: T) => void;
|
|
110
|
+
hydrate: (values: DeepPartial<T>) => void;
|
|
111
|
+
rebase: (values: T) => void;
|
|
112
|
+
setError: (path: string, message: string | undefined) => void;
|
|
113
|
+
setErrors: (errors: BitErrors<T>) => void;
|
|
114
|
+
setServerErrors: (serverErrors: Record<string, string[] | string>) => void;
|
|
115
|
+
setField: <P extends BitPath<T>>(path: P, value: BitPathValue<T, P>) => void;
|
|
116
|
+
blurField: <P extends BitPath<T>>(path: P) => void;
|
|
117
|
+
validate: (options?: BitValidationOptions) => Promise<boolean>;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
declare function useBitForm<T extends object>(): UseBitFormResult<T>;
|
|
128
121
|
|
|
129
122
|
declare function useBitField<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): UseBitFieldVueResult<BitPathValue<TForm, P>>;
|
|
130
123
|
|
package/dist/vue/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{a as H,b as M,c as O}from"../chunk-O5RRLZR7.js";import"../chunk-AD7T42HJ.js";import{Y as j,e as A,f as F}from"../chunk-2UVV7SU4.js";import{inject as $,provide as L}from"vue";var q=Symbol("BIT_STORE");function Y(e){L(q,j(e))}function c(){let e=$(q);if(!e)throw new Error("BitForm Vue hooks devem ser usados sob um provideBitStore");return e}import{computed as R,onUnmounted as G,shallowRef as J,ref as C}from"vue";function Q(){let e=c(),t=J({isValid:e.getState().isValid,isSubmitting:e.getState().isSubmitting,isDirty:e.getState().isDirty}),i=C(null),r=C(null),s=e.subscribeSelector(m=>({isValid:m.isValid,isSubmitting:m.isSubmitting,isDirty:m.isDirty}),m=>{t.value=m});G(s);let n=H(e,{clearSubmissionState:()=>{i.value=null,r.value=null},setSubmissionResult:m=>{r.value=m},setSubmissionError:m=>{i.value=m}}),d=R(()=>t.value.isValid),u=R(()=>t.value.isSubmitting),f=R(()=>t.value.isDirty),o=n.onSubmit,a=n.reset;return{meta:{isValid:d,isDirty:f,isSubmitting:u,submitError:i,lastResponse:r},getValues:n.getValues,getErrors:n.getErrors,getTouched:n.getTouched,getDirtyValues:n.getDirtyValues,submit:n.submit,onSubmit:o,reset:a,replaceValues:e.replaceValues.bind(e),hydrate:e.hydrate.bind(e),rebase:e.rebase.bind(e),setError:e.setError.bind(e),setErrors:e.setErrors.bind(e),setServerErrors:e.setServerErrors.bind(e),setField:e.setField.bind(e),blurField:e.blurField.bind(e),validate:e.validate.bind(e)}}import{computed as v,onUnmounted as X,shallowRef as Z}from"vue";function U(e){let t=c(),i=t.resolveMask(e),r=O(t,e,i),s=Z(t.getFieldState(e)),n=M(t,e,g=>{s.value=g});X(()=>{n(),t.unregisterField&&t.unregisterField(e)});let d=v(()=>s.value.value),u=v(()=>r.displayValue(d.value)),f=v({get:()=>u.value,set:g=>{r.setValue(g)}}),o=v(()=>s.value.error),a=v(()=>s.value.touched?s.value.error:void 0),l=v(()=>s.value.touched),m=v(()=>!!(l.value&&a.value)),b=v(()=>s.value.isValidating),P=v(()=>s.value.isDirty),E=v(()=>s.value.isHidden),T=v(()=>s.value.isRequired),x=v(()=>!!o.value),p=g=>{r.setValue(g)},y=()=>r.setBlur();return{value:d,displayValue:u,modelValue:f,setValue:p,setBlur:y,onInput:g=>{p(g)},onBlur:()=>{y()},meta:{error:a,touched:l,invalid:m,isValidating:b,isDirty:P,isHidden:E,isRequired:T,hasError:x}}}import{ref as K,computed as W,onUnmounted as N}from"vue";var S=()=>Math.random().toString(36).substring(2,9);function ee(e){let t=c(),r=(()=>{let o=F(t.getState().values,e);return Array.isArray(o)?o:[]})(),s=K(r),n=K(r.map(S)),d=t.subscribePath(e,o=>{let a=Array.isArray(o)?o:[];if(s.value=[...a],a.length!==n.value.length){let l=[...n.value];if(a.length>l.length){let m=a.length-l.length,b=Array.from({length:m},S);n.value=[...l,...b]}else n.value=l.slice(0,a.length)}});N(()=>{d(),t.unregisterPrefix&&t.unregisterPrefix(`${e}.`)});let u=W(()=>s.value.map((o,a)=>({key:n.value[a]||`temp-${a}`,value:o,index:a}))),f=W(()=>s.value.length);return{fields:u,length:f,append:o=>{n.value.push(S()),t.pushItem(e,o)},prepend:o=>{n.value.unshift(S()),t.prependItem(e,o)},insert:(o,a)=>{n.value.splice(o,0,S()),t.insertItem(e,o,a)},remove:o=>{n.value.splice(o,1),t.removeItem(e,o)},move:(o,a)=>{let l=[...n.value],[m]=l.splice(o,1);l.splice(a,0,m),n.value=l,t.moveItem(e,o,a)},swap:(o,a)=>{let l=[...n.value];[l[o],l[a]]=[l[a],l[o]],n.value=l,t.swapItems(e,o,a)},replace:o=>{n.value=o.map(S),t.setField(e,o)},clear:()=>{n.value=[],t.setField(e,[])}}}import{computed as V,onUnmounted as te,shallowRef as re}from"vue";function se(){let e=c(),t=re(e.getHistoryMetadata()),i=e.subscribe(()=>{t.value=e.getHistoryMetadata()});te(i);let r=()=>e.undo(),s=()=>e.redo();return{canUndo:V(()=>t.value.canUndo),canRedo:V(()=>t.value.canRedo),historyIndex:V(()=>t.value.historyIndex),historySize:V(()=>t.value.historySize),undo:r,redo:s}}import{ref as oe,computed as I,onMounted as ie,onUnmounted as ne}from"vue";function ae(e,t){let i=Object.keys(e),r=Object.keys(t);return i.length!==r.length?!1:i.every(s=>e[s]===t[s])}function ue(e){let t=c(),i=oe(t.getStepStatus(e)),r;ie(()=>{r=t.subscribe(()=>{let o=t.getStepStatus(e);(o.hasErrors!==i.value.hasErrors||o.isDirty!==i.value.isDirty||!ae(o.errors,i.value.errors))&&(i.value=o)})}),ne(()=>{r?.()});let s=async()=>{let o=await t.validate({scope:e}),a=t.getStepErrors(e);return{valid:o,errors:a}},n=()=>t.getStepErrors(e),d=I(()=>!i.value.hasErrors),u=I(()=>i.value.isDirty),f=I(()=>i.value.errors);return{scopeName:e,status:i,errors:f,validate:s,getErrors:n,isValid:d,isDirty:u}}import{ref as _,computed as B,watch as le,onMounted as ce,onUnmounted as me}from"vue";function de(e,t){let i=Object.keys(e),r=Object.keys(t);return i.length!==r.length?!1:i.every(s=>e[s]===t[s])}function pe(e){let t=c(),i=_(0),r=B(()=>e[i.value]??""),s=_(t.getStepStatus(r.value)),n;le(r,p=>{s.value=t.getStepStatus(p)});let d=()=>{let p=r.value,y=t.getStepStatus(p);(y.hasErrors!==s.value.hasErrors||y.isDirty!==s.value.isDirty||!de(y.errors,s.value.errors))&&(s.value=y)};ce(()=>{n=t.subscribe(d)}),me(()=>{n?.()});let u=async()=>{let p=r.value,y=await t.validate({scope:p}),h=t.getStepErrors(p);return{valid:y,errors:h}},f=()=>t.getStepErrors(r.value),o=async()=>{let p=r.value,y=t.getScopeFields(p);if(t.hasValidationsInProgress(y))return!1;let h=await t.validate({scope:p});if(h)i.value=Math.min(i.value+1,e.length-1);else{let D=t.getStepErrors(p),g=Object.keys(D);g.length>0&&t.markFieldsTouched(g)}return h},a=()=>{i.value=Math.max(i.value-1,0)},l=p=>{i.value=Math.max(0,Math.min(p-1,e.length-1))},m=B(()=>i.value+1),b=B(()=>i.value===0),P=B(()=>i.value>=e.length-1),E=B(()=>!s.value.hasErrors),T=B(()=>s.value.isDirty),x=B(()=>s.value.errors);return{step:m,stepIndex:i,scope:r,next:o,prev:a,goTo:l,isFirst:b,isLast:P,status:s,errors:x,isValid:E,isDirty:T,validate:u,getErrors:f}}import{ref as ve,onUnmounted as fe,readonly as ye}from"vue";function ge(e){let t=c(),i=F(t.getState().values,e),r=ve(i),s=t.watch(e,n=>{A(r.value,n)||(r.value=n)});return fe(s),ye(r)}import{computed as z,ref as Be}from"vue";function Se(e,t,i){let r=c(),s=U(e),n=null,d=Be(!1),u=async o=>{if(o){d.value=!0,r.setError(e,void 0);try{let a=await t(o);s.setValue(a.url),n=a.key,r.setError(e,void 0)}catch(a){let l=a instanceof Error?a.message:"Upload failed";r.setError(e,l)}finally{d.value=!1}}},f=async()=>{if(n&&i)try{await i(n)}catch(o){let a=o instanceof Error?o.message:"Delete failed";r.setError(e,a);return}s.setValue(null),n=null,r.setError(e,void 0)};return{value:s.value,setValue:s.setValue,error:z(()=>s.meta.error.value),isValidating:z(()=>!!s.meta.isValidating.value||d.value),upload:u,remove:f}}import{ref as w,readonly as k}from"vue";function be(){let e=c(),t=w(!1),i=w(!1),r=w(null);return{restore:async()=>{i.value=!0,r.value=null;try{return await e.restorePersisted()}catch(u){return r.value=u instanceof Error?u:new Error(String(u)),!1}finally{i.value=!1}},save:async()=>{t.value=!0,r.value=null;try{await e.forceSave()}catch(u){r.value=u instanceof Error?u:new Error(String(u))}finally{t.value=!1}},clear:async()=>{r.value=null;try{await e.clearPersisted()}catch(u){r.value=u instanceof Error?u:new Error(String(u))}},meta:{isSaving:k(t),isRestoring:k(i),error:k(r)}}}export{Y as provideBitStore,ee as useBitArray,U as useBitField,Q as useBitForm,se as useBitHistory,be as useBitPersist,ue as useBitScope,pe as useBitSteps,c as useBitStore,Se as useBitUpload,ge as useBitWatch};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/vue/index.js.map
CHANGED
|
@@ -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 { BitStoreApi } from \"../core\";\n\n// Chave única para evitar colisões\nexport const BIT_STORE_KEY: InjectionKey<BitStoreApi<any>> =\n Symbol(\"BIT_STORE\");\n\nexport function provideBitStore<T extends object>(store: BitStoreApi<T>) {\n provide(BIT_STORE_KEY, 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 BitStoreApi<T>;\n}\n","import { computed, onUnmounted, shallowRef, ref } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport { isValidationErrorShape, extractServerErrors } from \"../core/utils\";\n\nexport function useBitForm<T extends object>() {\n const store = useBitStore<T>();\n const state = shallowRef({\n isValid: store.getState().isValid,\n isSubmitting: store.getState().isSubmitting,\n isDirty: store.getState().isDirty,\n });\n const submitError = ref<Error | null>(null);\n const lastResponse = ref<unknown>(null);\n\n const unsubscribe = store.subscribeSelector(\n (snapshot) => ({\n isValid: snapshot.isValid,\n isSubmitting: snapshot.isSubmitting,\n isDirty: snapshot.isDirty,\n }),\n (nextState) => {\n state.value = nextState;\n },\n );\n\n onUnmounted(unsubscribe);\n\n const getValues = () => store.getState().values;\n const getErrors = () => store.getState().errors;\n const getTouched = () => store.getState().touched;\n const getDirtyValues = () => store.getDirtyValues();\n\n const isValid = computed(() => state.value.isValid);\n const isSubmitting = computed(() => state.value.isSubmitting);\n const isDirty = computed(() => state.value.isDirty);\n\n const onSubmit = (\n handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>,\n ) => {\n return (e?: Event) => {\n e?.preventDefault?.();\n submitError.value = null;\n return store.submit(async (values, dirtyValues) => {\n try {\n const result = await handler(values, dirtyValues);\n lastResponse.value = result;\n submitError.value = null;\n } catch (err) {\n if (isValidationErrorShape(err)) {\n store.setServerErrors(extractServerErrors(err));\n } else {\n submitError.value =\n err instanceof Error ? err : new Error(String(err));\n }\n }\n });\n };\n };\n\n const reset = () => {\n store.reset();\n submitError.value = null;\n lastResponse.value = null;\n };\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,\n getErrors,\n getTouched,\n getDirtyValues,\n // Main actions (frequent use - flat)\n submit: (\n onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>,\n ) => {\n return (e?: Event) => {\n e?.preventDefault?.();\n return store.submit(onSuccess);\n };\n },\n onSubmit,\n reset,\n replaceValues: store.replaceValues.bind(store),\n hydrate: store.hydrate.bind(store),\n rebase: store.rebase.bind(store),\n setValues: store.setValues.bind(store),\n setError: store.setError.bind(store),\n setErrors: store.setErrors.bind(store),\n setServerErrors: store.setServerErrors.bind(store),\n setField: store.setField.bind(store),\n blurField: store.blurField.bind(store),\n validate: store.validate.bind(store),\n // Array mutations (grouped)\n mutations: {\n pushItem: store.pushItem.bind(store),\n prependItem: store.prependItem.bind(store),\n removeItem: store.removeItem.bind(store),\n insertItem: store.insertItem.bind(store),\n moveItem: store.moveItem.bind(store),\n swapItems: store.swapItems.bind(store),\n },\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitFieldVueResult } from \"./types\";\nimport type { BitPath, BitPathValue } 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 resolvedMask = store.resolveMask(path);\n\n const state = shallowRef(store.getFieldState(path));\n\n const unsubscribe = store.subscribeSelector(\n () => store.getFieldState(path),\n (nextState) => {\n state.value = nextState;\n },\n );\n\n onUnmounted(() => {\n unsubscribe();\n if (store.unregisterField) {\n store.unregisterField(path);\n }\n });\n\n const rawValue = computed(() => state.value.value as BitPathValue<TForm, P>);\n\n const displayValue = computed(() => {\n const val = rawValue.value;\n if (val === undefined || val === null || val === \"\") return \"\";\n\n return resolvedMask ? resolvedMask.format(val) : String(val);\n });\n\n const modelValue = computed({\n get: () => displayValue.value,\n set: (val: string) => {\n if (!resolvedMask) {\n store.setField(path, val as BitPathValue<TForm, P>);\n return;\n }\n\n store.setField(path, resolvedMask.parse(String(val ?? \"\")));\n },\n });\n\n const rawError = computed(() => state.value.error);\n const error = computed(() =>\n state.value.touched ? state.value.error : undefined,\n );\n const touched = computed(() => state.value.touched);\n const invalid = computed(() => !!(touched.value && error.value));\n\n const isValidating = computed(() => state.value.isValidating);\n\n const isDirty = computed(() => state.value.isDirty);\n\n const isHidden = computed(() => state.value.isHidden);\n\n const isRequired = computed(() => state.value.isRequired);\n\n const hasError = computed(() => !!rawError.value);\n\n const setValue = (\n val: BitPathValue<TForm, P> | string | number | null | undefined,\n ) => {\n if (!resolvedMask) {\n store.setField(path, val as BitPathValue<TForm, P>);\n return;\n }\n\n modelValue.value = String(val ?? \"\");\n };\n\n const setBlur = () => store.blurField(path);\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 { ref, computed, onUnmounted } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport {\n getDeepValue,\n BitArrayPath,\n BitPathValue,\n BitArrayItem,\n BitPath,\n} from \"../core\";\n\nconst generateId = () => Math.random().toString(36).substring(2, 9);\n\nexport function useBitArray<\n TForm extends object = any,\n P extends BitArrayPath<TForm> = BitArrayPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n\n type Item = BitArrayItem<BitPathValue<TForm, P>>;\n\n const getSnapshot = (): Item[] => {\n const val = getDeepValue(store.getState().values, path as string) as\n | BitPathValue<TForm, P>\n | undefined;\n return Array.isArray(val) ? (val as Item[]) : [];\n };\n\n const initialValues = getSnapshot();\n const values = ref<Item[]>(initialValues);\n const ids = ref<string[]>(initialValues.map(generateId));\n\n const unsubscribe = store.subscribePath(path, (newValues) => {\n const nextValues = (Array.isArray(newValues) ? newValues : []) as Item[];\n\n values.value = [...nextValues];\n\n if (nextValues.length !== ids.value.length) {\n const currentIds = [...ids.value];\n if (nextValues.length > currentIds.length) {\n const diff = nextValues.length - currentIds.length;\n const newIds = Array.from({ length: diff }, generateId);\n ids.value = [...currentIds, ...newIds];\n } else {\n ids.value = currentIds.slice(0, nextValues.length);\n }\n }\n });\n\n onUnmounted(() => {\n unsubscribe();\n if (store.unregisterPrefix) {\n store.unregisterPrefix(`${path as string}.`);\n }\n });\n\n const fields = computed(() =>\n values.value.map((v, i) => ({\n key: ids.value[i] || `temp-${i}`,\n value: v,\n index: i,\n })),\n );\n\n const length = computed(() => values.value.length);\n\n return {\n fields,\n length,\n append: (val: Item) => {\n ids.value.push(generateId());\n store.pushItem(path, val);\n },\n prepend: (val: Item) => {\n ids.value.unshift(generateId());\n store.prependItem(path, val);\n },\n insert: (index: number, val: Item) => {\n ids.value.splice(index, 0, generateId());\n store.insertItem(path, index, val);\n },\n remove: (index: number) => {\n ids.value.splice(index, 1);\n store.removeItem(path, index);\n },\n move: (from: number, to: number) => {\n const currentIds = [...ids.value];\n const [id] = currentIds.splice(from, 1);\n currentIds.splice(to, 0, id);\n ids.value = currentIds;\n store.moveItem(path, from, to);\n },\n swap: (a: number, b: number) => {\n const currentIds = [...ids.value];\n [currentIds[a], currentIds[b]] = [currentIds[b], currentIds[a]];\n ids.value = currentIds;\n store.swapItems(path, a, b);\n },\n replace: (items: Item[]) => {\n ids.value = items.map(generateId);\n store.setField(\n path as unknown as BitPath<TForm>,\n items as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n clear: () => {\n ids.value = [];\n store.setField(\n path as unknown as BitPath<TForm>,\n [] as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\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(store.getHistoryMetadata());\n\n const unsubscribe = store.subscribe(() => {\n meta.value = store.getHistoryMetadata();\n });\n\n onUnmounted(unsubscribe);\n\n const undo = () => store.undo();\n const redo = () => store.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 { ref, computed, onMounted, onUnmounted } from \"vue\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { useBitStore } from \"./context\";\n\nexport type { ScopeStatus, ValidateScopeResult };\n\nfunction errorsEqual(\n a: Record<string, string>,\n b: Record<string, string>,\n): boolean {\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n return keysA.every((k) => a[k] === b[k]);\n}\n\nexport function useBitScope(scopeName: string) {\n const store = useBitStore();\n const status = ref<ScopeStatus>(store.getStepStatus(scopeName));\n let unsubscribe: () => void;\n\n onMounted(() => {\n unsubscribe = store.subscribe(() => {\n const newStatus = store.getStepStatus(scopeName);\n if (\n newStatus.hasErrors !== status.value.hasErrors ||\n newStatus.isDirty !== status.value.isDirty ||\n !errorsEqual(newStatus.errors, status.value.errors)\n ) {\n status.value = newStatus;\n }\n });\n });\n\n onUnmounted(() => {\n unsubscribe?.();\n });\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const valid = await store.validate({ scope: scopeName });\n const errors = store.getStepErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.getStepErrors(scopeName);\n\n const isValid = computed(() => !status.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 { ref, computed, watch, onMounted, onUnmounted } from \"vue\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitStepsResult } from \"./types\";\n\nfunction errorsEqual(\n a: Record<string, string>,\n b: Record<string, string>,\n): boolean {\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n return keysA.every((k) => a[k] === b[k]);\n}\n\nexport function 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.getStepStatus(scope.value));\n let unsubscribe: () => void;\n\n watch(scope, (newScope) => {\n status.value = store.getStepStatus(newScope);\n });\n\n const updateStatus = () => {\n const scopeName = scope.value;\n const newStatus = store.getStepStatus(scopeName);\n if (\n newStatus.hasErrors !== status.value.hasErrors ||\n newStatus.isDirty !== status.value.isDirty ||\n !errorsEqual(newStatus.errors, status.value.errors)\n ) {\n status.value = newStatus;\n }\n };\n\n onMounted(() => {\n unsubscribe = store.subscribe(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.validate({ scope: scopeName });\n const errors = store.getStepErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.getStepErrors(scope.value);\n\n const next = async (): Promise<boolean> => {\n const scopeName = scope.value;\n\n const scopeFields = store.getScopeFields(scopeName);\n if (store.hasValidationsInProgress(scopeFields)) {\n return false;\n }\n\n const valid = await store.validate({ scope: scopeName });\n if (valid) {\n stepIndex.value = Math.min(stepIndex.value + 1, scopeNames.length - 1);\n } else {\n const errors = store.getStepErrors(scopeName);\n const pathsWithErrors = Object.keys(errors);\n if (pathsWithErrors.length > 0) {\n store.markFieldsTouched(pathsWithErrors);\n }\n }\n return valid;\n };\n\n const prev = () => {\n 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 {\n getDeepValue,\n deepEqual,\n BitPath,\n BitPathValue,\n} 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.getState().values,\n path as string,\n ) as BitPathValue<TForm, P>;\n const value = ref<BitPathValue<TForm, P>>(initialValue);\n\n const unsubscribe = store.watch(path, (newValue) => {\n if (!deepEqual(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 } from \"vue\";\nimport { useBitField } from \"./use-bit-field\";\nimport { useBitStore } from \"./context\";\nimport { BitUploadFn, BitDeleteUploadFn } from \"../core\";\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\n const upload = async (file: File | null | undefined) => {\n if (!file) return;\n\n store.beginFieldValidation(fieldPath);\n await store.clearFieldAsyncError(fieldPath);\n\n try {\n const result = await uploadFn(file);\n\n field.setValue(result.url);\n uploadKey = result.key;\n await store.clearFieldAsyncError(fieldPath);\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Upload failed\";\n await store.setFieldAsyncError(fieldPath, message);\n } finally {\n store.endFieldValidation(fieldPath);\n }\n };\n\n const remove = async () => {\n if (uploadKey && deleteFile) {\n try {\n await deleteFile(uploadKey);\n } catch (error) {\n const message =\n error instanceof Error ? error.message : \"Delete failed\";\n await store.setFieldAsyncError(fieldPath, message);\n return;\n }\n }\n\n field.setValue(null);\n uploadKey = null;\n await store.clearFieldAsyncError(fieldPath);\n };\n\n return {\n value: field.value as ComputedRef<string | File | null>,\n setValue: field.setValue,\n error: computed(() => field.meta.error.value),\n isValidating: computed(() => field.meta.isValidating.value || false),\n upload,\n remove,\n };\n}\n","import { ref, readonly } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitPersistResult } from \"./types\";\n\nexport function useBitPersist<T extends object = any>(): UseBitPersistResult {\n const store = useBitStore<T>();\n const isSaving = ref(false);\n const isRestoring = ref(false);\n const error = ref<Error | null>(null);\n\n const restore = async (): Promise<boolean> => {\n isRestoring.value = true;\n error.value = null;\n\n try {\n return await store.restorePersisted();\n } catch (err) {\n error.value = err instanceof Error ? err : new Error(String(err));\n return false;\n } finally {\n isRestoring.value = false;\n }\n };\n\n const save = async (): Promise<void> => {\n isSaving.value = true;\n error.value = null;\n\n try {\n await store.forceSave();\n } catch (err) {\n error.value = err instanceof Error ? err : new Error(String(err));\n } finally {\n isSaving.value = false;\n }\n };\n\n const clear = async (): Promise<void> => {\n error.value = null;\n\n try {\n await store.clearPersisted();\n } catch (err) {\n error.value = err instanceof Error ? err : new Error(String(err));\n }\n };\n\n return {\n restore,\n save,\n clear,\n meta: {\n isSaving: readonly(isSaving),\n isRestoring: readonly(isRestoring),\n error: readonly(error),\n },\n };\n}\n"],"mappings":"8DAAA,OAAS,UAAAA,EAAQ,WAAAC,MAA6B,MAIvC,IAAMC,EACX,OAAO,WAAW,EAEb,SAASC,EAAkCC,EAAuB,CACvEH,EAAQC,EAAeE,CAAK,CAC9B,CAEO,SAASC,GAAgC,CAC9C,IAAMD,EAAQJ,EAAOE,CAAa,EAClC,GAAI,CAACE,EACH,MAAM,IAAI,MACR,2DACF,EACF,OAAOA,CACT,CClBA,OAAS,YAAAE,EAAU,eAAAC,EAAa,cAAAC,EAAY,OAAAC,MAAW,MAIhD,SAASC,GAA+B,CAC7C,IAAMC,EAAQC,EAAe,EACvBC,EAAQC,EAAW,CACvB,QAASH,EAAM,SAAS,EAAE,QAC1B,aAAcA,EAAM,SAAS,EAAE,aAC/B,QAASA,EAAM,SAAS,EAAE,OAC5B,CAAC,EACKI,EAAcC,EAAkB,IAAI,EACpCC,EAAeD,EAAa,IAAI,EAEhCE,EAAcP,EAAM,kBACvBQ,IAAc,CACb,QAASA,EAAS,QAClB,aAAcA,EAAS,aACvB,QAASA,EAAS,OACpB,GACCC,GAAc,CACbP,EAAM,MAAQO,CAChB,CACF,EAEAC,EAAYH,CAAW,EAEvB,IAAMI,EAAY,IAAMX,EAAM,SAAS,EAAE,OACnCY,EAAY,IAAMZ,EAAM,SAAS,EAAE,OACnCa,EAAa,IAAMb,EAAM,SAAS,EAAE,QACpCc,EAAiB,IAAMd,EAAM,eAAe,EAE5Ce,EAAUC,EAAS,IAAMd,EAAM,MAAM,OAAO,EAC5Ce,EAAeD,EAAS,IAAMd,EAAM,MAAM,YAAY,EACtDgB,EAAUF,EAAS,IAAMd,EAAM,MAAM,OAAO,EAuClD,MAAO,CAEL,KAVW,CACX,QAAAa,EACA,QAAAG,EACA,aAAAD,EACA,YAAAb,EACA,aAAAE,CACF,EAME,UAAAK,EACA,UAAAC,EACA,WAAAC,EACA,eAAAC,EAEA,OACEK,GAEQC,IACNA,GAAG,iBAAiB,EACbpB,EAAM,OAAOmB,CAAS,GAGjC,SArDAE,GAEQD,IACNA,GAAG,iBAAiB,EACpBhB,EAAY,MAAQ,KACbJ,EAAM,OAAO,MAAOsB,EAAQC,IAAgB,CACjD,GAAI,CACF,IAAMC,EAAS,MAAMH,EAAQC,EAAQC,CAAW,EAChDjB,EAAa,MAAQkB,EACrBpB,EAAY,MAAQ,IACtB,OAASqB,EAAK,CACRC,EAAuBD,CAAG,EAC5BzB,EAAM,gBAAgB2B,EAAoBF,CAAG,CAAC,EAE9CrB,EAAY,MACVqB,aAAe,MAAQA,EAAM,IAAI,MAAM,OAAOA,CAAG,CAAC,CAExD,CACF,CAAC,GAoCH,MAhCY,IAAM,CAClBzB,EAAM,MAAM,EACZI,EAAY,MAAQ,KACpBE,EAAa,MAAQ,IACvB,EA6BE,cAAeN,EAAM,cAAc,KAAKA,CAAK,EAC7C,QAASA,EAAM,QAAQ,KAAKA,CAAK,EACjC,OAAQA,EAAM,OAAO,KAAKA,CAAK,EAC/B,UAAWA,EAAM,UAAU,KAAKA,CAAK,EACrC,SAAUA,EAAM,SAAS,KAAKA,CAAK,EACnC,UAAWA,EAAM,UAAU,KAAKA,CAAK,EACrC,gBAAiBA,EAAM,gBAAgB,KAAKA,CAAK,EACjD,SAAUA,EAAM,SAAS,KAAKA,CAAK,EACnC,UAAWA,EAAM,UAAU,KAAKA,CAAK,EACrC,SAAUA,EAAM,SAAS,KAAKA,CAAK,EAEnC,UAAW,CACT,SAAUA,EAAM,SAAS,KAAKA,CAAK,EACnC,YAAaA,EAAM,YAAY,KAAKA,CAAK,EACzC,WAAYA,EAAM,WAAW,KAAKA,CAAK,EACvC,WAAYA,EAAM,WAAW,KAAKA,CAAK,EACvC,SAAUA,EAAM,SAAS,KAAKA,CAAK,EACnC,UAAWA,EAAM,UAAU,KAAKA,CAAK,CACvC,CACF,CACF,CChHA,OAAS,YAAA4B,EAAU,eAAAC,EAAa,cAAAC,MAAkB,MAK3C,SAASC,EAGdC,EAAuD,CACvD,IAAMC,EAAQC,EAAmB,EAE3BC,EAAeF,EAAM,YAAYD,CAAI,EAErCI,EAAQC,EAAWJ,EAAM,cAAcD,CAAI,CAAC,EAE5CM,EAAcL,EAAM,kBACxB,IAAMA,EAAM,cAAcD,CAAI,EAC7BO,GAAc,CACbH,EAAM,MAAQG,CAChB,CACF,EAEAC,EAAY,IAAM,CAChBF,EAAY,EACRL,EAAM,iBACRA,EAAM,gBAAgBD,CAAI,CAE9B,CAAC,EAED,IAAMS,EAAWC,EAAS,IAAMN,EAAM,MAAM,KAA+B,EAErEO,EAAeD,EAAS,IAAM,CAClC,IAAME,EAAMH,EAAS,MACrB,OAAyBG,GAAQ,MAAQA,IAAQ,GAAW,GAErDT,EAAeA,EAAa,OAAOS,CAAG,EAAI,OAAOA,CAAG,CAC7D,CAAC,EAEKC,EAAaH,EAAS,CAC1B,IAAK,IAAMC,EAAa,MACxB,IAAMC,GAAgB,CACpB,GAAI,CAACT,EAAc,CACjBF,EAAM,SAASD,EAAMY,CAA6B,EAClD,MACF,CAEAX,EAAM,SAASD,EAAMG,EAAa,MAAM,OAAOS,GAAO,EAAE,CAAC,CAAC,CAC5D,CACF,CAAC,EAEKE,EAAWJ,EAAS,IAAMN,EAAM,MAAM,KAAK,EAC3CW,EAAQL,EAAS,IACrBN,EAAM,MAAM,QAAUA,EAAM,MAAM,MAAQ,MAC5C,EACMY,EAAUN,EAAS,IAAMN,EAAM,MAAM,OAAO,EAC5Ca,EAAUP,EAAS,IAAM,CAAC,EAAEM,EAAQ,OAASD,EAAM,MAAM,EAEzDG,EAAeR,EAAS,IAAMN,EAAM,MAAM,YAAY,EAEtDe,EAAUT,EAAS,IAAMN,EAAM,MAAM,OAAO,EAE5CgB,EAAWV,EAAS,IAAMN,EAAM,MAAM,QAAQ,EAE9CiB,EAAaX,EAAS,IAAMN,EAAM,MAAM,UAAU,EAElDkB,EAAWZ,EAAS,IAAM,CAAC,CAACI,EAAS,KAAK,EAE1CS,EACJX,GACG,CACH,GAAI,CAACT,EAAc,CACjBF,EAAM,SAASD,EAAMY,CAA6B,EAClD,MACF,CAEAC,EAAW,MAAQ,OAAOD,GAAO,EAAE,CACrC,EAEMY,EAAU,IAAMvB,EAAM,UAAUD,CAAI,EAY1C,MAAO,CAEL,MAAOS,EACP,aAAAE,EACA,WAAAE,EACA,SAAAU,EACA,QAAAC,EACA,QAhBAZ,GACG,CACHW,EAASX,CAAG,CACd,EAcE,OAZa,IAAM,CACnBY,EAAQ,CACV,EAYE,KAAM,CACJ,MAAAT,EACA,QAAAC,EACA,QAAAC,EACA,aAAAC,EACA,QAAAC,EACA,SAAAC,EACA,WAAAC,EACA,SAAAC,CACF,CACF,CACF,CC/GA,OAAS,OAAAG,EAAK,YAAAC,EAAU,eAAAC,MAAmB,MAU3C,IAAMC,EAAa,IAAM,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,EAAG,CAAC,EAE3D,SAASC,EAGdC,EAAS,CACT,IAAMC,EAAQC,EAAmB,EAW3BC,GAPc,IAAc,CAChC,IAAMC,EAAMC,EAAaJ,EAAM,SAAS,EAAE,OAAQD,CAAc,EAGhE,OAAO,MAAM,QAAQI,CAAG,EAAKA,EAAiB,CAAC,CACjD,GAEkC,EAC5BE,EAASC,EAAYJ,CAAa,EAClCK,EAAMD,EAAcJ,EAAc,IAAIL,CAAU,CAAC,EAEjDW,EAAcR,EAAM,cAAcD,EAAOU,GAAc,CAC3D,IAAMC,EAAc,MAAM,QAAQD,CAAS,EAAIA,EAAY,CAAC,EAI5D,GAFAJ,EAAO,MAAQ,CAAC,GAAGK,CAAU,EAEzBA,EAAW,SAAWH,EAAI,MAAM,OAAQ,CAC1C,IAAMI,EAAa,CAAC,GAAGJ,EAAI,KAAK,EAChC,GAAIG,EAAW,OAASC,EAAW,OAAQ,CACzC,IAAMC,EAAOF,EAAW,OAASC,EAAW,OACtCE,EAAS,MAAM,KAAK,CAAE,OAAQD,CAAK,EAAGf,CAAU,EACtDU,EAAI,MAAQ,CAAC,GAAGI,EAAY,GAAGE,CAAM,CACvC,MACEN,EAAI,MAAQI,EAAW,MAAM,EAAGD,EAAW,MAAM,CAErD,CACF,CAAC,EAEDI,EAAY,IAAM,CAChBN,EAAY,EACRR,EAAM,kBACRA,EAAM,iBAAiB,GAAGD,CAAc,GAAG,CAE/C,CAAC,EAED,IAAMgB,EAASC,EAAS,IACtBX,EAAO,MAAM,IAAI,CAACY,EAAGC,KAAO,CAC1B,IAAKX,EAAI,MAAMW,CAAC,GAAK,QAAQA,CAAC,GAC9B,MAAOD,EACP,MAAOC,CACT,EAAE,CACJ,EAEMC,EAASH,EAAS,IAAMX,EAAO,MAAM,MAAM,EAEjD,MAAO,CACL,OAAAU,EACA,OAAAI,EACA,OAAShB,GAAc,CACrBI,EAAI,MAAM,KAAKV,EAAW,CAAC,EAC3BG,EAAM,SAASD,EAAMI,CAAG,CAC1B,EACA,QAAUA,GAAc,CACtBI,EAAI,MAAM,QAAQV,EAAW,CAAC,EAC9BG,EAAM,YAAYD,EAAMI,CAAG,CAC7B,EACA,OAAQ,CAACiB,EAAejB,IAAc,CACpCI,EAAI,MAAM,OAAOa,EAAO,EAAGvB,EAAW,CAAC,EACvCG,EAAM,WAAWD,EAAMqB,EAAOjB,CAAG,CACnC,EACA,OAASiB,GAAkB,CACzBb,EAAI,MAAM,OAAOa,EAAO,CAAC,EACzBpB,EAAM,WAAWD,EAAMqB,CAAK,CAC9B,EACA,KAAM,CAACC,EAAcC,IAAe,CAClC,IAAMX,EAAa,CAAC,GAAGJ,EAAI,KAAK,EAC1B,CAACgB,CAAE,EAAIZ,EAAW,OAAOU,EAAM,CAAC,EACtCV,EAAW,OAAOW,EAAI,EAAGC,CAAE,EAC3BhB,EAAI,MAAQI,EACZX,EAAM,SAASD,EAAMsB,EAAMC,CAAE,CAC/B,EACA,KAAM,CAACE,EAAWC,IAAc,CAC9B,IAAMd,EAAa,CAAC,GAAGJ,EAAI,KAAK,EAChC,CAACI,EAAWa,CAAC,EAAGb,EAAWc,CAAC,CAAC,EAAI,CAACd,EAAWc,CAAC,EAAGd,EAAWa,CAAC,CAAC,EAC9DjB,EAAI,MAAQI,EACZX,EAAM,UAAUD,EAAMyB,EAAGC,CAAC,CAC5B,EACA,QAAUC,GAAkB,CAC1BnB,EAAI,MAAQmB,EAAM,IAAI7B,CAAU,EAChCG,EAAM,SACJD,EACA2B,CACF,CACF,EACA,MAAO,IAAM,CACXnB,EAAI,MAAQ,CAAC,EACbP,EAAM,SACJD,EACA,CAAC,CACH,CACF,CACF,CACF,CChHA,OAAS,YAAA4B,EAAU,eAAAC,EAAa,cAAAC,OAAkB,MAI3C,SAASC,IAA6D,CAC3E,IAAMC,EAAQC,EAAe,EAEvBC,EAAOC,GAAWH,EAAM,mBAAmB,CAAC,EAE5CI,EAAcJ,EAAM,UAAU,IAAM,CACxCE,EAAK,MAAQF,EAAM,mBAAmB,CACxC,CAAC,EAEDK,EAAYD,CAAW,EAEvB,IAAME,EAAO,IAAMN,EAAM,KAAK,EACxBO,EAAO,IAAMP,EAAM,KAAK,EAE9B,MAAO,CACL,QAASQ,EAAS,IAAMN,EAAK,MAAM,OAAO,EAC1C,QAASM,EAAS,IAAMN,EAAK,MAAM,OAAO,EAC1C,aAAcM,EAAS,IAAMN,EAAK,MAAM,YAAY,EACpD,YAAaM,EAAS,IAAMN,EAAK,MAAM,WAAW,EAClD,KAAAI,EACA,KAAAC,CACF,CACF,CC1BA,OAAS,OAAAE,GAAK,YAAAC,EAAU,aAAAC,GAAW,eAAAC,OAAmB,MAMtD,SAASC,GACPC,EACAC,EACS,CACT,IAAMC,EAAQ,OAAO,KAAKF,CAAC,EACrBG,EAAQ,OAAO,KAAKF,CAAC,EAC3B,OAAIC,EAAM,SAAWC,EAAM,OAAe,GACnCD,EAAM,MAAOE,GAAMJ,EAAEI,CAAC,IAAMH,EAAEG,CAAC,CAAC,CACzC,CAEO,SAASC,GAAYC,EAAmB,CAC7C,IAAMC,EAAQC,EAAY,EACpBC,EAASC,GAAiBH,EAAM,cAAcD,CAAS,CAAC,EAC1DK,EAEJC,GAAU,IAAM,CACdD,EAAcJ,EAAM,UAAU,IAAM,CAClC,IAAMM,EAAYN,EAAM,cAAcD,CAAS,GAE7CO,EAAU,YAAcJ,EAAO,MAAM,WACrCI,EAAU,UAAYJ,EAAO,MAAM,SACnC,CAACV,GAAYc,EAAU,OAAQJ,EAAO,MAAM,MAAM,KAElDA,EAAO,MAAQI,EAEnB,CAAC,CACH,CAAC,EAEDC,GAAY,IAAM,CAChBH,IAAc,CAChB,CAAC,EAED,IAAMI,EAAW,SAA0C,CACzD,IAAMC,EAAQ,MAAMT,EAAM,SAAS,CAAE,MAAOD,CAAU,CAAC,EACjDW,EAASV,EAAM,cAAcD,CAAS,EAC5C,MAAO,CAAE,MAAAU,EAAO,OAAAC,CAAO,CACzB,EAEMC,EAAY,IAAMX,EAAM,cAAcD,CAAS,EAE/Ca,EAAUC,EAAS,IAAM,CAACX,EAAO,MAAM,SAAS,EAChDY,EAAUD,EAAS,IAAMX,EAAO,MAAM,OAAO,EAC7CQ,EAASG,EAAS,IAAMX,EAAO,MAAM,MAAM,EAEjD,MAAO,CACL,UAAAH,EACA,OAAAG,EACA,OAAAQ,EACA,SAAAF,EACA,UAAAG,EACA,QAAAC,EACA,QAAAE,CACF,CACF,CC3DA,OAAS,OAAAC,EAAK,YAAAC,EAAU,SAAAC,GAAO,aAAAC,GAAW,eAAAC,OAAmB,MAK7D,SAASC,GACPC,EACAC,EACS,CACT,IAAMC,EAAQ,OAAO,KAAKF,CAAC,EACrBG,EAAQ,OAAO,KAAKF,CAAC,EAC3B,OAAIC,EAAM,SAAWC,EAAM,OAAe,GACnCD,EAAM,MAAOE,GAAMJ,EAAEI,CAAC,IAAMH,EAAEG,CAAC,CAAC,CACzC,CAEO,SAASC,GAAYC,EAAyC,CACnE,IAAMC,EAAQC,EAAY,EACpBC,EAAYC,EAAI,CAAC,EAEjBC,EAAQC,EAAS,IAAMN,EAAWG,EAAU,KAAK,GAAK,EAAE,EACxDI,EAASH,EAAiBH,EAAM,cAAcI,EAAM,KAAK,CAAC,EAC5DG,EAEJC,GAAMJ,EAAQK,GAAa,CACzBH,EAAO,MAAQN,EAAM,cAAcS,CAAQ,CAC7C,CAAC,EAED,IAAMC,EAAe,IAAM,CACzB,IAAMC,EAAYP,EAAM,MAClBQ,EAAYZ,EAAM,cAAcW,CAAS,GAE7CC,EAAU,YAAcN,EAAO,MAAM,WACrCM,EAAU,UAAYN,EAAO,MAAM,SACnC,CAACd,GAAYoB,EAAU,OAAQN,EAAO,MAAM,MAAM,KAElDA,EAAO,MAAQM,EAEnB,EAEAC,GAAU,IAAM,CACdN,EAAcP,EAAM,UAAUU,CAAY,CAC5C,CAAC,EAEDI,GAAY,IAAM,CAChBP,IAAc,CAChB,CAAC,EAED,IAAMQ,EAAW,SAA0C,CACzD,IAAMJ,EAAYP,EAAM,MAClBY,EAAQ,MAAMhB,EAAM,SAAS,CAAE,MAAOW,CAAU,CAAC,EACjDM,EAASjB,EAAM,cAAcW,CAAS,EAC5C,MAAO,CAAE,MAAAK,EAAO,OAAAC,CAAO,CACzB,EAEMC,EAAY,IAAMlB,EAAM,cAAcI,EAAM,KAAK,EAEjDe,EAAO,SAA8B,CACzC,IAAMR,EAAYP,EAAM,MAElBgB,EAAcpB,EAAM,eAAeW,CAAS,EAClD,GAAIX,EAAM,yBAAyBoB,CAAW,EAC5C,MAAO,GAGT,IAAMJ,EAAQ,MAAMhB,EAAM,SAAS,CAAE,MAAOW,CAAU,CAAC,EACvD,GAAIK,EACFd,EAAU,MAAQ,KAAK,IAAIA,EAAU,MAAQ,EAAGH,EAAW,OAAS,CAAC,MAChE,CACL,IAAMkB,EAASjB,EAAM,cAAcW,CAAS,EACtCU,EAAkB,OAAO,KAAKJ,CAAM,EACtCI,EAAgB,OAAS,GAC3BrB,EAAM,kBAAkBqB,CAAe,CAE3C,CACA,OAAOL,CACT,EAEMM,EAAO,IAAM,CACjBpB,EAAU,MAAQ,KAAK,IAAIA,EAAU,MAAQ,EAAG,CAAC,CACnD,EAEMqB,EAAQC,GAAuB,CACnCtB,EAAU,MAAQ,KAAK,IACrB,EACA,KAAK,IAAIsB,EAAa,EAAGzB,EAAW,OAAS,CAAC,CAChD,CACF,EAEM0B,EAAOpB,EAAS,IAAMH,EAAU,MAAQ,CAAC,EACzCwB,EAAUrB,EAAS,IAAMH,EAAU,QAAU,CAAC,EAC9CyB,EAAStB,EAAS,IAAMH,EAAU,OAASH,EAAW,OAAS,CAAC,EAChE6B,EAAUvB,EAAS,IAAM,CAACC,EAAO,MAAM,SAAS,EAChDuB,EAAUxB,EAAS,IAAMC,EAAO,MAAM,OAAO,EAC7CW,EAASZ,EAAS,IAAMC,EAAO,MAAM,MAAM,EAEjD,MAAO,CACL,KAAAmB,EACA,UAAAvB,EACA,MAAAE,EACA,KAAAe,EACA,KAAAG,EACA,KAAAC,EACA,QAAAG,EACA,OAAAC,EACA,OAAArB,EACA,OAAAW,EACA,QAAAW,EACA,QAAAC,EACA,SAAAd,EACA,UAAAG,CACF,CACF,CC/GA,OAAS,OAAAY,GAAK,eAAAC,GAAa,YAAAC,OAAgB,MASpC,SAASC,GAGdC,EAAS,CACT,IAAMC,EAAQC,EAAmB,EAC3BC,EAAeC,EACnBH,EAAM,SAAS,EAAE,OACjBD,CACF,EACMK,EAAQC,GAA4BH,CAAY,EAEhDI,EAAcN,EAAM,MAAMD,EAAOQ,GAAa,CAC7CC,EAAUJ,EAAM,MAAOG,CAAQ,IAClCH,EAAM,MAAQG,EAElB,CAAC,EAED,OAAAE,GAAYH,CAAW,EAEhBI,GAASN,CAAK,CACvB,CCvBA,OAAS,YAAAO,MAA6B,MAM/B,SAASC,GACdC,EACAC,EACAC,EACoB,CACpB,IAAMC,EAAQC,EAAiB,EACzBC,EAAQC,EAAYN,CAAS,EAC/BO,EAA2B,KAEzBC,EAAS,MAAOC,GAAkC,CACtD,GAAKA,EAEL,CAAAN,EAAM,qBAAqBH,CAAS,EACpC,MAAMG,EAAM,qBAAqBH,CAAS,EAE1C,GAAI,CACF,IAAMU,EAAS,MAAMT,EAASQ,CAAI,EAElCJ,EAAM,SAASK,EAAO,GAAG,EACzBH,EAAYG,EAAO,IACnB,MAAMP,EAAM,qBAAqBH,CAAS,CAC5C,OAASW,EAAO,CACd,IAAMC,EAAUD,aAAiB,MAAQA,EAAM,QAAU,gBACzD,MAAMR,EAAM,mBAAmBH,EAAWY,CAAO,CACnD,QAAE,CACAT,EAAM,mBAAmBH,CAAS,CACpC,EACF,EAEMa,EAAS,SAAY,CACzB,GAAIN,GAAaL,EACf,GAAI,CACF,MAAMA,EAAWK,CAAS,CAC5B,OAASI,EAAO,CACd,IAAMC,EACJD,aAAiB,MAAQA,EAAM,QAAU,gBAC3C,MAAMR,EAAM,mBAAmBH,EAAWY,CAAO,EACjD,MACF,CAGFP,EAAM,SAAS,IAAI,EACnBE,EAAY,KACZ,MAAMJ,EAAM,qBAAqBH,CAAS,CAC5C,EAEA,MAAO,CACL,MAAOK,EAAM,MACb,SAAUA,EAAM,SAChB,MAAOS,EAAS,IAAMT,EAAM,KAAK,MAAM,KAAK,EAC5C,aAAcS,EAAS,IAAMT,EAAM,KAAK,aAAa,OAAS,EAAK,EACnE,OAAAG,EACA,OAAAK,CACF,CACF,CClEA,OAAS,OAAAE,EAAK,YAAAC,MAAgB,MAIvB,SAASC,IAA6D,CAC3E,IAAMC,EAAQC,EAAe,EACvBC,EAAWC,EAAI,EAAK,EACpBC,EAAcD,EAAI,EAAK,EACvBE,EAAQF,EAAkB,IAAI,EAuCpC,MAAO,CACL,QAtCc,SAA8B,CAC5CC,EAAY,MAAQ,GACpBC,EAAM,MAAQ,KAEd,GAAI,CACF,OAAO,MAAML,EAAM,iBAAiB,CACtC,OAASM,EAAK,CACZ,OAAAD,EAAM,MAAQC,aAAe,MAAQA,EAAM,IAAI,MAAM,OAAOA,CAAG,CAAC,EACzD,EACT,QAAE,CACAF,EAAY,MAAQ,EACtB,CACF,EA2BE,KAzBW,SAA2B,CACtCF,EAAS,MAAQ,GACjBG,EAAM,MAAQ,KAEd,GAAI,CACF,MAAML,EAAM,UAAU,CACxB,OAASM,EAAK,CACZD,EAAM,MAAQC,aAAe,MAAQA,EAAM,IAAI,MAAM,OAAOA,CAAG,CAAC,CAClE,QAAE,CACAJ,EAAS,MAAQ,EACnB,CACF,EAeE,MAbY,SAA2B,CACvCG,EAAM,MAAQ,KAEd,GAAI,CACF,MAAML,EAAM,eAAe,CAC7B,OAASM,EAAK,CACZD,EAAM,MAAQC,aAAe,MAAQA,EAAM,IAAI,MAAM,OAAOA,CAAG,CAAC,CAClE,CACF,EAME,KAAM,CACJ,SAAUC,EAASL,CAAQ,EAC3B,YAAaK,EAASH,CAAW,EACjC,MAAOG,EAASF,CAAK,CACvB,CACF,CACF","names":["inject","provide","BIT_STORE_KEY","provideBitStore","store","useBitStore","computed","onUnmounted","shallowRef","ref","useBitForm","store","useBitStore","state","shallowRef","submitError","ref","lastResponse","unsubscribe","snapshot","nextState","onUnmounted","getValues","getErrors","getTouched","getDirtyValues","isValid","computed","isSubmitting","isDirty","onSuccess","e","handler","values","dirtyValues","result","err","isValidationErrorShape","extractServerErrors","computed","onUnmounted","shallowRef","useBitField","path","store","useBitStore","resolvedMask","state","shallowRef","unsubscribe","nextState","onUnmounted","rawValue","computed","displayValue","val","modelValue","rawError","error","touched","invalid","isValidating","isDirty","isHidden","isRequired","hasError","setValue","setBlur","ref","computed","onUnmounted","generateId","useBitArray","path","store","useBitStore","initialValues","val","getDeepValue","values","ref","ids","unsubscribe","newValues","nextValues","currentIds","diff","newIds","onUnmounted","fields","computed","v","i","length","index","from","to","id","a","b","items","computed","onUnmounted","shallowRef","useBitHistory","store","useBitStore","meta","shallowRef","unsubscribe","onUnmounted","undo","redo","computed","ref","computed","onMounted","onUnmounted","errorsEqual","a","b","keysA","keysB","k","useBitScope","scopeName","store","useBitStore","status","ref","unsubscribe","onMounted","newStatus","onUnmounted","validate","valid","errors","getErrors","isValid","computed","isDirty","ref","computed","watch","onMounted","onUnmounted","errorsEqual","a","b","keysA","keysB","k","useBitSteps","scopeNames","store","useBitStore","stepIndex","ref","scope","computed","status","unsubscribe","watch","newScope","updateStatus","scopeName","newStatus","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","deepEqual","onUnmounted","readonly","computed","useBitUpload","fieldPath","uploadFn","deleteFile","store","useBitStore","field","useBitField","uploadKey","upload","file","result","error","message","remove","computed","ref","readonly","useBitPersist","store","useBitStore","isSaving","ref","isRestoring","error","err","readonly"]}
|
|
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 { BitStoreApi } from \"../core\";\nimport type { BitStoreHooksApi } from \"../core/store/public-types\";\nimport { resolveBitStoreForHooks } from \"../core/store/create-store\";\n\n// Chave única para evitar colisões\nexport const BIT_STORE_KEY: InjectionKey<BitStoreHooksApi<any>> =\n Symbol(\"BIT_STORE\");\n\nexport function provideBitStore<T extends object>(store: BitStoreApi<T>) {\n provide(BIT_STORE_KEY, resolveBitStoreForHooks(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 BitStoreHooksApi<T>;\n}\n","import { computed, onUnmounted, shallowRef, ref } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport { createFormController } from \"../core/form-controller\";\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: store.getState().isValid,\n isSubmitting: store.getState().isSubmitting,\n isDirty: store.getState().isDirty,\n });\n const submitError = ref<Error | null>(null);\n const lastResponse = ref<unknown>(null);\n\n const unsubscribe = store.subscribeSelector(\n (snapshot) => ({\n isValid: snapshot.isValid,\n isSubmitting: snapshot.isSubmitting,\n isDirty: snapshot.isDirty,\n }),\n (nextState) => {\n state.value = nextState;\n },\n );\n\n onUnmounted(unsubscribe);\n\n const controller = createFormController(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 replaceValues: store.replaceValues.bind(store),\n hydrate: store.hydrate.bind(store),\n rebase: store.rebase.bind(store),\n setError: store.setError.bind(store),\n setErrors: store.setErrors.bind(store),\n setServerErrors: store.setServerErrors.bind(store),\n setField: store.setField.bind(store),\n blurField: store.blurField.bind(store),\n validate: store.validate.bind(store),\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitFieldVueResult } from \"./types\";\nimport type { BitPath, BitPathValue } from \"../core\";\nimport {\n createMaskedFieldController,\n subscribeFieldState,\n} from \"../core/field-controller\";\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 resolvedMask = store.resolveMask(path);\n const fieldController = createMaskedFieldController(\n store,\n path,\n resolvedMask,\n );\n\n const state = shallowRef(store.getFieldState(path));\n\n const unsubscribe = subscribeFieldState(store, path, (nextState) => {\n state.value = nextState;\n });\n\n onUnmounted(() => {\n unsubscribe();\n if (store.unregisterField) {\n store.unregisterField(path);\n }\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 rawError = computed(() => state.value.error);\n const error = computed(() =>\n state.value.touched ? state.value.error : undefined,\n );\n const touched = computed(() => state.value.touched);\n const invalid = computed(() => !!(touched.value && error.value));\n\n const isValidating = computed(() => state.value.isValidating);\n\n const isDirty = computed(() => state.value.isDirty);\n\n const isHidden = computed(() => state.value.isHidden);\n\n const isRequired = computed(() => state.value.isRequired);\n\n const hasError = computed(() => !!rawError.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 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 { ref, computed, onUnmounted } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport {\n getDeepValue,\n BitArrayPath,\n BitPathValue,\n BitArrayItem,\n BitPath,\n} from \"../core\";\n\nconst generateId = () => Math.random().toString(36).substring(2, 9);\n\nexport function useBitArray<\n TForm extends object = any,\n P extends BitArrayPath<TForm> = BitArrayPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n\n type Item = BitArrayItem<BitPathValue<TForm, P>>;\n\n const getSnapshot = (): Item[] => {\n const val = getDeepValue(store.getState().values, path as string) as\n | BitPathValue<TForm, P>\n | undefined;\n return Array.isArray(val) ? (val as Item[]) : [];\n };\n\n const initialValues = getSnapshot();\n const values = ref<Item[]>(initialValues);\n const ids = ref<string[]>(initialValues.map(generateId));\n\n const unsubscribe = store.subscribePath(path, (newValues) => {\n const nextValues = (Array.isArray(newValues) ? newValues : []) as Item[];\n\n values.value = [...nextValues];\n\n if (nextValues.length !== ids.value.length) {\n const currentIds = [...ids.value];\n if (nextValues.length > currentIds.length) {\n const diff = nextValues.length - currentIds.length;\n const newIds = Array.from({ length: diff }, generateId);\n ids.value = [...currentIds, ...newIds];\n } else {\n ids.value = currentIds.slice(0, nextValues.length);\n }\n }\n });\n\n onUnmounted(() => {\n unsubscribe();\n if (store.unregisterPrefix) {\n store.unregisterPrefix(`${path as string}.`);\n }\n });\n\n const fields = computed(() =>\n values.value.map((v, i) => ({\n key: ids.value[i] || `temp-${i}`,\n value: v,\n index: i,\n })),\n );\n\n const length = computed(() => values.value.length);\n\n return {\n fields,\n length,\n append: (val: Item) => {\n ids.value.push(generateId());\n store.pushItem(path, val);\n },\n prepend: (val: Item) => {\n ids.value.unshift(generateId());\n store.prependItem(path, val);\n },\n insert: (index: number, val: Item) => {\n ids.value.splice(index, 0, generateId());\n store.insertItem(path, index, val);\n },\n remove: (index: number) => {\n ids.value.splice(index, 1);\n store.removeItem(path, index);\n },\n move: (from: number, to: number) => {\n const currentIds = [...ids.value];\n const [id] = currentIds.splice(from, 1);\n currentIds.splice(to, 0, id);\n ids.value = currentIds;\n store.moveItem(path, from, to);\n },\n swap: (a: number, b: number) => {\n const currentIds = [...ids.value];\n [currentIds[a], currentIds[b]] = [currentIds[b], currentIds[a]];\n ids.value = currentIds;\n store.swapItems(path, a, b);\n },\n replace: (items: Item[]) => {\n ids.value = items.map(generateId);\n store.setField(\n path as unknown as BitPath<TForm>,\n items as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n clear: () => {\n ids.value = [];\n store.setField(\n path as unknown as BitPath<TForm>,\n [] as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\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(store.getHistoryMetadata());\n\n const unsubscribe = store.subscribe(() => {\n meta.value = store.getHistoryMetadata();\n });\n\n onUnmounted(unsubscribe);\n\n const undo = () => store.undo();\n const redo = () => store.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 { ref, computed, onMounted, onUnmounted } from \"vue\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { useBitStore } from \"./context\";\n\nexport type { ScopeStatus, ValidateScopeResult };\n\nfunction errorsEqual(\n a: Record<string, string>,\n b: Record<string, string>,\n): boolean {\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n return keysA.every((k) => a[k] === b[k]);\n}\n\nexport function useBitScope(scopeName: string) {\n const store = useBitStore();\n const status = ref<ScopeStatus>(store.getStepStatus(scopeName));\n let unsubscribe: () => void;\n\n onMounted(() => {\n unsubscribe = store.subscribe(() => {\n const newStatus = store.getStepStatus(scopeName);\n if (\n newStatus.hasErrors !== status.value.hasErrors ||\n newStatus.isDirty !== status.value.isDirty ||\n !errorsEqual(newStatus.errors, status.value.errors)\n ) {\n status.value = newStatus;\n }\n });\n });\n\n onUnmounted(() => {\n unsubscribe?.();\n });\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const valid = await store.validate({ scope: scopeName });\n const errors = store.getStepErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.getStepErrors(scopeName);\n\n const isValid = computed(() => !status.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 { ref, computed, watch, onMounted, onUnmounted } from \"vue\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitStepsResult } from \"./types\";\n\nfunction errorsEqual(\n a: Record<string, string>,\n b: Record<string, string>,\n): boolean {\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n return keysA.every((k) => a[k] === b[k]);\n}\n\nexport function 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.getStepStatus(scope.value));\n let unsubscribe: () => void;\n\n watch(scope, (newScope) => {\n status.value = store.getStepStatus(newScope);\n });\n\n const updateStatus = () => {\n const scopeName = scope.value;\n const newStatus = store.getStepStatus(scopeName);\n if (\n newStatus.hasErrors !== status.value.hasErrors ||\n newStatus.isDirty !== status.value.isDirty ||\n !errorsEqual(newStatus.errors, status.value.errors)\n ) {\n status.value = newStatus;\n }\n };\n\n onMounted(() => {\n unsubscribe = store.subscribe(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.validate({ scope: scopeName });\n const errors = store.getStepErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.getStepErrors(scope.value);\n\n const next = async (): Promise<boolean> => {\n const scopeName = scope.value;\n\n const scopeFields = store.getScopeFields(scopeName);\n if (store.hasValidationsInProgress(scopeFields)) {\n return false;\n }\n\n const valid = await store.validate({ scope: scopeName });\n if (valid) {\n stepIndex.value = Math.min(stepIndex.value + 1, scopeNames.length - 1);\n } else {\n const errors = store.getStepErrors(scopeName);\n const pathsWithErrors = Object.keys(errors);\n if (pathsWithErrors.length > 0) {\n store.markFieldsTouched(pathsWithErrors);\n }\n }\n return valid;\n };\n\n const prev = () => {\n 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 {\n getDeepValue,\n deepEqual,\n BitPath,\n BitPathValue,\n} 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.getState().values,\n path as string,\n ) as BitPathValue<TForm, P>;\n const value = ref<BitPathValue<TForm, P>>(initialValue);\n\n const unsubscribe = store.watch(path, (newValue) => {\n if (!deepEqual(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 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 upload = async (file: File | null | undefined) => {\n if (!file) return;\n\n isUploading.value = true;\n store.setError(fieldPath, undefined);\n\n try {\n const result = await uploadFn(file);\n\n field.setValue(result.url);\n uploadKey = result.key;\n store.setError(fieldPath, undefined);\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Upload failed\";\n store.setError(fieldPath, message);\n } finally {\n isUploading.value = false;\n }\n };\n\n const remove = async () => {\n if (uploadKey && deleteFile) {\n try {\n await deleteFile(uploadKey);\n } catch (error) {\n const message =\n error instanceof Error ? error.message : \"Delete failed\";\n store.setError(fieldPath, message);\n return;\n }\n }\n\n field.setValue(null);\n uploadKey = null;\n store.setError(fieldPath, undefined);\n };\n\n return {\n value: 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 { ref, readonly } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitPersistResult } from \"./types\";\n\nexport function useBitPersist<T extends object = any>(): UseBitPersistResult {\n const store = useBitStore<T>();\n const isSaving = ref(false);\n const isRestoring = ref(false);\n const error = ref<Error | null>(null);\n\n const restore = async (): Promise<boolean> => {\n isRestoring.value = true;\n error.value = null;\n\n try {\n return await store.restorePersisted();\n } catch (err) {\n error.value = err instanceof Error ? err : new Error(String(err));\n return false;\n } finally {\n isRestoring.value = false;\n }\n };\n\n const save = async (): Promise<void> => {\n isSaving.value = true;\n error.value = null;\n\n try {\n await store.forceSave();\n } catch (err) {\n error.value = err instanceof Error ? err : new Error(String(err));\n } finally {\n isSaving.value = false;\n }\n };\n\n const clear = async (): Promise<void> => {\n error.value = null;\n\n try {\n await store.clearPersisted();\n } catch (err) {\n error.value = err instanceof Error ? err : new Error(String(err));\n }\n };\n\n return {\n restore,\n save,\n clear,\n meta: {\n isSaving: readonly(isSaving),\n isRestoring: readonly(isRestoring),\n error: readonly(error),\n },\n };\n}\n"],"mappings":"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","names":["inject","provide","BIT_STORE_KEY","provideBitStore","store","provide","resolveBitStoreForHooks","useBitStore","inject","computed","onUnmounted","shallowRef","ref","useBitForm","store","useBitStore","state","shallowRef","submitError","ref","lastResponse","unsubscribe","snapshot","nextState","onUnmounted","controller","createFormController","result","error","isValid","computed","isSubmitting","isDirty","onSubmit","reset","computed","onUnmounted","shallowRef","useBitField","path","store","useBitStore","resolvedMask","fieldController","createMaskedFieldController","state","shallowRef","unsubscribe","subscribeFieldState","nextState","onUnmounted","rawValue","computed","displayValue","modelValue","val","rawError","error","touched","invalid","isValidating","isDirty","isHidden","isRequired","hasError","setValue","setBlur","ref","computed","onUnmounted","generateId","useBitArray","path","store","useBitStore","initialValues","val","getDeepValue","values","ref","ids","unsubscribe","newValues","nextValues","currentIds","diff","newIds","onUnmounted","fields","computed","v","i","length","index","from","to","id","a","b","items","computed","onUnmounted","shallowRef","useBitHistory","store","useBitStore","meta","shallowRef","unsubscribe","onUnmounted","undo","redo","computed","ref","computed","onMounted","onUnmounted","errorsEqual","a","b","keysA","keysB","k","useBitScope","scopeName","store","useBitStore","status","ref","unsubscribe","onMounted","newStatus","onUnmounted","validate","valid","errors","getErrors","isValid","computed","isDirty","ref","computed","watch","onMounted","onUnmounted","errorsEqual","a","b","keysA","keysB","k","useBitSteps","scopeNames","store","useBitStore","stepIndex","ref","scope","computed","status","unsubscribe","watch","newScope","updateStatus","scopeName","newStatus","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","deepEqual","onUnmounted","readonly","computed","ref","useBitUpload","fieldPath","uploadFn","deleteFile","store","useBitStore","field","useBitField","uploadKey","isUploading","ref","upload","file","result","error","message","remove","computed","ref","readonly","useBitPersist","store","useBitStore","isSaving","ref","isRestoring","error","err","readonly"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lehnihon/bit-form",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.2",
|
|
4
4
|
"description": "Gerenciamento de estado de formulários agnóstico e performático",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
"framework-agnostic"
|
|
28
28
|
],
|
|
29
29
|
"type": "module",
|
|
30
|
+
"sideEffects": false,
|
|
30
31
|
"main": "./dist/index.cjs",
|
|
31
32
|
"module": "./dist/index.js",
|
|
32
33
|
"types": "./dist/index.d.ts",
|
|
@@ -59,6 +60,11 @@
|
|
|
59
60
|
"import": "./dist/angular/index.js",
|
|
60
61
|
"require": "./dist/angular/index.cjs"
|
|
61
62
|
},
|
|
63
|
+
"./core/light": {
|
|
64
|
+
"types": "./dist/core/light.d.ts",
|
|
65
|
+
"import": "./dist/core/light.js",
|
|
66
|
+
"require": "./dist/core/light.cjs"
|
|
67
|
+
},
|
|
62
68
|
"./resolvers/*": {
|
|
63
69
|
"types": "./dist/resolvers/*.d.ts",
|
|
64
70
|
"import": "./dist/resolvers/*.js",
|
package/dist/chunk-442A4FTZ.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkYWXX6XRVcjs = require('./chunk-YWXX6XRV.cjs');var _react = require('react');var _jsxruntime = require('react/jsx-runtime');var k=_react.createContext.call(void 0, null),at= exports.a =({store:t,children:e})=>_jsxruntime.jsx.call(void 0, k.Provider,{value:t,children:e}),g= exports.b =()=>{let t=_react.useContext.call(void 0, k);if(!t)throw new Error("BitForm hooks devem ser usados dentro de um BitFormProvider");return t};function St(){let t=g(),[e,s]=_react.useState.call(void 0, null),[m,n]=_react.useState.call(void 0, null),o=_react.useRef.call(void 0, null),u=_react.useCallback.call(void 0, ()=>{let p=t.getState(),b={isValid:p.isValid,isDirty:p.isDirty,isSubmitting:p.isSubmitting};return o.current&&o.current.isValid===b.isValid&&o.current.isDirty===b.isDirty&&o.current.isSubmitting===b.isSubmitting?o.current:(o.current=b,b)},[t]),c=_react.useCallback.call(void 0, p=>t.subscribeSelector(b=>({isValid:b.isValid,isDirty:b.isDirty,isSubmitting:b.isSubmitting}),()=>p()),[t]),i=_react.useSyncExternalStore.call(void 0, c,u,u),r=_react.useCallback.call(void 0, p=>b=>(_optionalChain([b, 'optionalAccess', _2 => _2.preventDefault, 'optionalCall', _3 => _3()]),t.submit(p)),[t]),a=_react.useCallback.call(void 0, p=>b=>(_optionalChain([b, 'optionalAccess', _4 => _4.preventDefault, 'optionalCall', _5 => _5()]),s(null),t.submit(async(O,q)=>{try{let h=await p(O,q);n(h),s(null)}catch(h){_chunkYWXX6XRVcjs.i.call(void 0, h)?t.setServerErrors(_chunkYWXX6XRVcjs.j.call(void 0, h)):s(h instanceof Error?h:new Error(String(h)))}})),[t]),l=_react.useCallback.call(void 0, ()=>{t.reset(),s(null),n(null)},[t]),d=_react.useCallback.call(void 0, ()=>t.getState().values,[t]),B=_react.useCallback.call(void 0, ()=>t.getState().errors,[t]),F=_react.useCallback.call(void 0, ()=>t.getState().touched,[t]),S=_react.useCallback.call(void 0, ()=>t.getDirtyValues(),[t]);return{meta:_react.useMemo.call(void 0, ()=>({...i,submitError:e,lastResponse:m}),[i,e,m]),getValues:d,getErrors:B,getTouched:F,getDirtyValues:S,submit:r,onSubmit:a,reset:l,setField:t.setField.bind(t),blurField:t.blurField.bind(t),replaceValues:t.replaceValues.bind(t),hydrate:t.hydrate.bind(t),rebase:t.rebase.bind(t),setValues:t.setValues.bind(t),setError:t.setError.bind(t),setErrors:t.setErrors.bind(t),setServerErrors:t.setServerErrors.bind(t),validate:t.validate.bind(t),mutations:{pushItem:t.pushItem.bind(t),removeItem:t.removeItem.bind(t),prependItem:t.prependItem.bind(t),insertItem:t.insertItem.bind(t),moveItem:t.moveItem.bind(t),swapItems:t.swapItems.bind(t)}}}var P=()=>Math.random().toString(36).substring(2,9);function Bt(t){let e=g(),s=_react.useCallback.call(void 0, ()=>{let r=e.getState(),a=_chunkYWXX6XRVcjs.f.call(void 0, r.values,t);return Array.isArray(a)?a:[]},[e,t]),m=_react.useCallback.call(void 0, r=>e.subscribePath(t,()=>r()),[e,t]),n=_react.useSyncExternalStore.call(void 0, m,s,s),[o,u]=_react.useState.call(void 0, ()=>n.map(P));_react.useEffect.call(void 0, ()=>{n.length!==o.length&&u(r=>{if(n.length>r.length){let a=n.length-r.length;return[...r,...Array(a).fill(null).map(P)]}return r.slice(0,n.length)})},[n.length]);let c=_react.useMemo.call(void 0, ()=>({append:r=>{u(a=>[...a,P()]),e.pushItem(t,r)},prepend:r=>{u(a=>[P(),...a]),e.prependItem(t,r)},insert:(r,a)=>{u(l=>{let d=[...l];return d.splice(r,0,P()),d}),e.insertItem(t,r,a)},remove:r=>{u(a=>a.filter((l,d)=>d!==r)),e.removeItem(t,r)},move:(r,a)=>{u(l=>{let d=[...l],[B]=d.splice(r,1);return d.splice(a,0,B),d}),e.moveItem(t,r,a)},swap:(r,a)=>{u(l=>{let d=[...l];return[d[r],d[a]]=[d[a],d[r]],d}),e.swapItems(t,r,a)},replace:r=>{u(r.map(P)),e.setField(t,r)},clear:()=>{u([]),e.setField(t,[])}}),[e,t]);return{fields:_react.useMemo.call(void 0, ()=>n.map((r,a)=>({key:o[a]||`temp-${a}`,value:r,index:a})),[n,o]),length:n.length,...c}}function Tt(t){let e=g(),s=_react.useRef.call(void 0, null),m=_react.useCallback.call(void 0, ()=>{let c=e.getStepStatus(t);return s.current&&s.current.hasErrors===c.hasErrors&&s.current.isDirty===c.isDirty&&Object.keys(s.current.errors).length===Object.keys(c.errors).length&&Object.entries(c.errors).every(([i,r])=>s.current.errors[i]===r)?s.current:(s.current=c,c)},[e,t]),n=_react.useSyncExternalStore.call(void 0, e.subscribe.bind(e),m,m),o=_react.useCallback.call(void 0, async()=>{let c=await e.validate({scope:t}),i=e.getStepErrors(t);return{valid:c,errors:i}},[e,t]),u=_react.useCallback.call(void 0, ()=>e.getStepErrors(t),[e,t]);return{scopeName:t,status:n,errors:n.errors,validate:o,getErrors:u,isValid:!n.hasErrors,isDirty:n.isDirty}}function wt(t){let e=g(),[s,m]=_react.useState.call(void 0, 0),n=_nullishCoalesce(t[s], () => ("")),o=_react.useRef.call(void 0, null),u=_react.useCallback.call(void 0, ()=>{let S=e.getStepStatus(n);return o.current&&o.current.hasErrors===S.hasErrors&&o.current.isDirty===S.isDirty&&Object.keys(o.current.errors).length===Object.keys(S.errors).length&&Object.entries(S.errors).every(([f,p])=>o.current.errors[f]===p)?o.current:(o.current=S,S)},[e,n]),c=_react.useSyncExternalStore.call(void 0, e.subscribe.bind(e),u,u),i=_react.useCallback.call(void 0, async()=>{let S=await e.validate({scope:n}),f=e.getStepErrors(n);return{valid:S,errors:f}},[e,n]),r=_react.useCallback.call(void 0, ()=>e.getStepErrors(n),[e,n]),a=_react.useCallback.call(void 0, async()=>{let S=e.getScopeFields(n);if(e.hasValidationsInProgress(S))return!1;let f=await e.validate({scope:n});if(f)m(p=>Math.min(p+1,t.length-1));else{let p=e.getStepErrors(n),b=Object.keys(p);b.length>0&&e.markFieldsTouched(b)}return f},[e,n,t.length]),l=_react.useCallback.call(void 0, ()=>{m(S=>Math.max(S-1,0))},[]),d=_react.useCallback.call(void 0, S=>{m(Math.max(0,Math.min(S-1,t.length-1)))},[t.length]),B=s===0,F=s>=t.length-1;return{step:s+1,stepIndex:s,scope:n,next:a,prev:l,goTo:d,isFirst:B,isLast:F,status:c,errors:c.errors,isValid:!c.hasErrors,isDirty:c.isDirty,validate:i,getErrors:r}}function Ot(t){let e=g(),s=_react.useRef.call(void 0, null),m=_react.useCallback.call(void 0, ()=>{let o=_chunkYWXX6XRVcjs.f.call(void 0, e.getState().values,t);return s.current!==null&&_chunkYWXX6XRVcjs.e.call(void 0, s.current,o)?s.current:(s.current=o,o)},[e,t]),n=_react.useCallback.call(void 0, o=>e.subscribe(o),[e]);return _react.useSyncExternalStore.call(void 0, n,m,m)}function Lt(){let t=g(),[e,s]=_react.useState.call(void 0, !1),[m,n]=_react.useState.call(void 0, !1),[o,u]=_react.useState.call(void 0, null),c=_react.useCallback.call(void 0, async()=>{n(!0),u(null);try{return await t.restorePersisted()}catch(l){return u(l instanceof Error?l:new Error(String(l))),!1}finally{n(!1)}},[t]),i=_react.useCallback.call(void 0, async()=>{s(!0),u(null);try{await t.forceSave()}catch(l){u(l instanceof Error?l:new Error(String(l)))}finally{s(!1)}},[t]),r=_react.useCallback.call(void 0, async()=>{u(null);try{await t.clearPersisted()}catch(l){u(l instanceof Error?l:new Error(String(l)))}},[t]),a=_react.useMemo.call(void 0, ()=>({isSaving:e,isRestoring:m,error:o}),[e,m,o]);return{restore:c,save:i,clear:r,meta:a}}function zt(t){let e=g(),s=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>()=>{e.unregisterField&&e.unregisterField(t)},[e,t]);let m=_react.useCallback.call(void 0, ()=>{let i=e.getFieldState(t);if(s.current&&s.current.value===i.value&&s.current.error===i.error&&s.current.touched===i.touched&&s.current.isHidden===i.isHidden&&s.current.isRequired===i.isRequired&&s.current.isDirty===i.isDirty&&s.current.isValidating===i.isValidating)return s.current;let r={value:i.value,error:i.error,touched:i.touched,isHidden:i.isHidden,isRequired:i.isRequired,isDirty:i.isDirty,isValidating:i.isValidating};return s.current=r,r},[e,t]),n=_react.useCallback.call(void 0, i=>e.subscribeSelector(()=>e.getFieldState(t),()=>i()),[e,t]),o=_react.useSyncExternalStore.call(void 0, n,m,m),u=_react.useCallback.call(void 0, i=>e.setField(t,i),[e,t]),c=_react.useCallback.call(void 0, ()=>e.blurField(t),[e,t]);return{fieldState:o,setValue:u,setBlur:c,store:e}}exports.a = at; exports.b = g; exports.c = St; exports.d = zt; exports.e = Bt; exports.f = Tt; exports.g = wt; exports.h = Ot; exports.i = Lt;
|
|
2
|
-
//# sourceMappingURL=chunk-442A4FTZ.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/chunk-442A4FTZ.cjs","../src/react/context.tsx","../src/react/use-bit-form.ts","../src/react/use-bit-array.ts"],"names":["BitContext","createContext","BitFormProvider","store","children","jsx","useBitStore","useContext","useBitForm","submitError","setSubmitError","useState","lastResponse","setLastResponse","lastMeta","useRef","getMetaSnapshot","useCallback","state","nextMeta","subscribeMeta","cb","metaState","useSyncExternalStore","submit","onSuccess","e","onSubmit","handler","values","dirtyValues","result","err","isValidationErrorShape","extractServerErrors","reset","getValues","getErrors","getTouched","getDirtyValues","useMemo","generateId","useBitArray","path","getSnapshot","value","getDeepValue","subscribeArray","data","ids","setIds","useEffect","prevIds","diff","methods","prev","index","newIds","_","i","from","to","item","indexA","indexB","items"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/chunk-442A4FTZ.cjs","sourcesContent":[null,"import React, { createContext, useContext } from \"react\";\nimport type { BitStoreApi } from \"../core\";\n\nconst BitContext = createContext<BitStoreApi<any> | null>(null);\n\nexport const BitFormProvider = ({\n store,\n children,\n}: {\n store: BitStoreApi<any>;\n children: React.ReactNode;\n}) => <BitContext.Provider value={store}>{children}</BitContext.Provider>;\n\nexport const useBitStore = <T extends object>() => {\n const store = useContext(BitContext);\n if (!store)\n throw new Error(\n \"BitForm hooks devem ser usados dentro de um BitFormProvider\",\n );\n return store as BitStoreApi<T>;\n};\n","import {\n useCallback,\n useSyncExternalStore,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useBitStore } from \"./context\";\nimport { isValidationErrorShape, extractServerErrors } from \"../core/utils\";\n\nexport function useBitForm<T extends object>() {\n const store = useBitStore<T>();\n\n const [submitError, setSubmitError] = useState<Error | null>(null);\n const [lastResponse, setLastResponse] = useState<unknown>(null);\n const lastMeta = useRef<{\n isValid: boolean;\n isDirty: boolean;\n isSubmitting: boolean;\n } | null>(null);\n\n const getMetaSnapshot = useCallback(() => {\n const state = store.getState();\n const nextMeta = {\n isValid: state.isValid,\n isDirty: state.isDirty,\n isSubmitting: state.isSubmitting,\n };\n\n if (\n lastMeta.current &&\n lastMeta.current.isValid === nextMeta.isValid &&\n lastMeta.current.isDirty === nextMeta.isDirty &&\n lastMeta.current.isSubmitting === nextMeta.isSubmitting\n ) {\n return lastMeta.current;\n }\n\n lastMeta.current = nextMeta;\n return nextMeta;\n }, [store]);\n\n const subscribeMeta = useCallback(\n (cb: () => void) =>\n store.subscribeSelector(\n (state) => ({\n isValid: state.isValid,\n isDirty: state.isDirty,\n isSubmitting: state.isSubmitting,\n }),\n () => cb(),\n ),\n [store],\n );\n\n const metaState = useSyncExternalStore(\n subscribeMeta,\n getMetaSnapshot,\n getMetaSnapshot,\n );\n\n const submit = useCallback(\n (\n onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>,\n ) => {\n return (e?: { preventDefault: () => void }) => {\n e?.preventDefault?.();\n return store.submit(onSuccess);\n };\n },\n [store],\n );\n\n const onSubmit = useCallback(\n (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => {\n return (e?: { preventDefault: () => void }) => {\n e?.preventDefault?.();\n setSubmitError(null);\n\n return store.submit(async (values, dirtyValues) => {\n try {\n const result = await handler(values, dirtyValues);\n setLastResponse(result);\n setSubmitError(null);\n } catch (err) {\n if (isValidationErrorShape(err)) {\n store.setServerErrors(extractServerErrors(err));\n } else {\n setSubmitError(\n err instanceof Error ? err : new Error(String(err)),\n );\n }\n }\n });\n };\n },\n [store],\n );\n\n const reset = useCallback(() => {\n store.reset();\n setSubmitError(null);\n setLastResponse(null);\n }, [store]);\n\n const getValues = useCallback(() => store.getState().values, [store]);\n const getErrors = useCallback(() => store.getState().errors, [store]);\n const getTouched = useCallback(() => store.getState().touched, [store]);\n const getDirtyValues = useCallback(() => store.getDirtyValues(), [store]);\n\n const meta = useMemo(\n () => ({\n ...metaState,\n submitError,\n lastResponse,\n }),\n [metaState, submitError, lastResponse],\n );\n\n return {\n // Metadata (grouped)\n meta,\n // Getters\n getValues,\n getErrors,\n getTouched,\n getDirtyValues,\n // Main actions (frequent use - flat)\n submit,\n onSubmit,\n reset,\n setField: store.setField.bind(store),\n blurField: store.blurField.bind(store),\n replaceValues: store.replaceValues.bind(store),\n hydrate: store.hydrate.bind(store),\n rebase: store.rebase.bind(store),\n setValues: store.setValues.bind(store),\n setError: store.setError.bind(store),\n setErrors: store.setErrors.bind(store),\n setServerErrors: store.setServerErrors.bind(store),\n validate: store.validate.bind(store),\n // Array mutations (grouped)\n mutations: {\n pushItem: store.pushItem.bind(store),\n removeItem: store.removeItem.bind(store),\n prependItem: store.prependItem.bind(store),\n insertItem: store.insertItem.bind(store),\n moveItem: store.moveItem.bind(store),\n swapItems: store.swapItems.bind(store),\n },\n };\n}\n","import {\n useCallback,\n useSyncExternalStore,\n useState,\n useMemo,\n useEffect,\n} from \"react\";\nimport { useBitStore } from \"./context\";\nimport {\n getDeepValue,\n BitArrayPath,\n BitPathValue,\n BitArrayItem,\n BitPath,\n} from \"../core\";\n\nconst generateId = () => Math.random().toString(36).substring(2, 9);\n\nexport function useBitArray<\n TForm extends object = any,\n P extends BitArrayPath<TForm> = BitArrayPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n\n type Item = BitArrayItem<BitPathValue<TForm, P>>;\n\n const getSnapshot = useCallback(() => {\n const state = store.getState();\n const value = getDeepValue(state.values, path as string) as\n | BitPathValue<TForm, P>\n | undefined;\n return Array.isArray(value) ? (value as Item[]) : [];\n }, [store, path]);\n\n const subscribeArray = useCallback(\n (cb: () => void) => store.subscribePath(path, () => cb()),\n [store, path],\n );\n\n const data = useSyncExternalStore(subscribeArray, getSnapshot, getSnapshot);\n\n const [ids, setIds] = useState<string[]>(() =>\n (data as Item[]).map(generateId),\n );\n\n useEffect(() => {\n if (data.length !== ids.length) {\n setIds((prevIds) => {\n if (data.length > prevIds.length) {\n const diff = data.length - prevIds.length;\n return [...prevIds, ...Array(diff).fill(null).map(generateId)];\n }\n return prevIds.slice(0, data.length);\n });\n }\n }, [data.length]);\n\n const methods = useMemo(\n () => ({\n append: (value: Item) => {\n setIds((prev) => [...prev, generateId()]);\n store.pushItem(path, value);\n },\n prepend: (value: Item) => {\n setIds((prev) => [generateId(), ...prev]);\n store.prependItem(path, value);\n },\n insert: (index: number, value: Item) => {\n setIds((prev) => {\n const newIds = [...prev];\n newIds.splice(index, 0, generateId());\n return newIds;\n });\n store.insertItem(path, index, value);\n },\n remove: (index: number) => {\n setIds((prev) => prev.filter((_, i) => i !== index));\n store.removeItem(path, index);\n },\n move: (from: number, to: number) => {\n setIds((prev) => {\n const newIds = [...prev];\n const [item] = newIds.splice(from, 1);\n newIds.splice(to, 0, item);\n return newIds;\n });\n store.moveItem(path, from, to);\n },\n swap: (indexA: number, indexB: number) => {\n setIds((prev) => {\n const newIds = [...prev];\n [newIds[indexA], newIds[indexB]] = [newIds[indexB], newIds[indexA]];\n return newIds;\n });\n store.swapItems(path, indexA, indexB);\n },\n replace: (items: Item[]) => {\n setIds(items.map(generateId));\n store.setField(\n path as unknown as BitPath<TForm>,\n items as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n clear: () => {\n setIds([]);\n store.setField(\n path as unknown as BitPath<TForm>,\n [] as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n }),\n [store, path],\n );\n\n const fields = useMemo(\n () =>\n (data as Item[]).map((item: Item, index: number) => ({\n key: ids[index] || `temp-${index}`,\n value: item,\n index,\n })),\n [data, ids],\n );\n\n return {\n fields,\n length: data.length,\n ...methods,\n };\n}\n"]}
|