@lehnihon/bit-form 2.2.6 → 2.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +80 -24
- package/dist/angular/index.cjs +1 -1
- package/dist/angular/index.cjs.map +1 -1
- package/dist/angular/index.d.cts +20 -20
- package/dist/angular/index.d.ts +20 -20
- package/dist/angular/index.js +1 -1
- package/dist/angular/index.js.map +1 -1
- package/dist/array-controller-B5bfXV1W.d.cts +23 -0
- package/dist/array-controller-Cx-DMH7Y.d.ts +23 -0
- package/dist/bus-B2VEKrPI.d.ts +19 -0
- package/dist/bus-ZLQeq4Vr.d.cts +19 -0
- package/dist/chunk-5NA2TFPG.js +1 -0
- package/dist/chunk-5NA2TFPG.js.map +1 -0
- package/dist/chunk-63OJBMKK.js +2 -0
- package/dist/chunk-63OJBMKK.js.map +1 -0
- package/dist/chunk-BSGJ3T5S.cjs +2 -0
- package/dist/chunk-BSGJ3T5S.cjs.map +1 -0
- package/dist/chunk-CPP7ELA5.js +2 -0
- package/dist/chunk-CPP7ELA5.js.map +1 -0
- package/dist/chunk-D7JQWF6V.cjs +2 -0
- package/dist/chunk-D7JQWF6V.cjs.map +1 -0
- package/dist/chunk-E2NZR44P.js +2 -0
- package/dist/chunk-E2NZR44P.js.map +1 -0
- package/dist/chunk-EQ55DKX2.js +2 -0
- package/dist/chunk-EQ55DKX2.js.map +1 -0
- package/dist/chunk-IV32WXCF.cjs +2 -0
- package/dist/chunk-IV32WXCF.cjs.map +1 -0
- package/dist/chunk-JC4R5WCC.js +2 -0
- package/dist/chunk-JC4R5WCC.js.map +1 -0
- package/dist/chunk-K5X37E3U.js +2 -0
- package/dist/chunk-K5X37E3U.js.map +1 -0
- package/dist/chunk-M6WBNHIT.cjs +2 -0
- package/dist/chunk-M6WBNHIT.cjs.map +1 -0
- package/dist/chunk-MFSQATNZ.cjs +2 -0
- package/dist/chunk-MFSQATNZ.cjs.map +1 -0
- package/dist/chunk-MFTWAFMG.cjs +2 -0
- package/dist/chunk-MFTWAFMG.cjs.map +1 -0
- package/dist/chunk-O5UPA33R.js +2 -0
- package/dist/chunk-O5UPA33R.js.map +1 -0
- package/dist/chunk-P2YWYBWG.cjs +2 -0
- package/dist/chunk-P2YWYBWG.cjs.map +1 -0
- package/dist/chunk-QKGTVKBU.cjs +2 -0
- package/dist/chunk-QKGTVKBU.cjs.map +1 -0
- package/dist/chunk-RD73EBSN.js +2 -0
- package/dist/chunk-RD73EBSN.js.map +1 -0
- package/dist/chunk-T2JRSWQU.cjs +2 -0
- package/dist/chunk-T2JRSWQU.cjs.map +1 -0
- package/dist/chunk-UQ3DSUWC.js +2 -0
- package/dist/chunk-UQ3DSUWC.js.map +1 -0
- package/dist/chunk-VZHG372Q.cjs +2 -0
- package/dist/chunk-VZHG372Q.cjs.map +1 -0
- package/dist/chunk-W2E5UIXT.js +2 -0
- package/dist/chunk-W2E5UIXT.js.map +1 -0
- package/dist/chunk-W5CLDRRE.cjs +1 -0
- package/dist/chunk-W5CLDRRE.cjs.map +1 -0
- package/dist/cli/index.cjs +22 -22
- package/dist/core/bindings.cjs +2 -0
- package/dist/core/bindings.cjs.map +1 -0
- package/dist/core/bindings.d.cts +81 -0
- package/dist/core/bindings.d.ts +81 -0
- package/dist/core/bindings.js +2 -0
- package/dist/core/bindings.js.map +1 -0
- package/dist/core/status.cjs +2 -0
- package/dist/core/status.cjs.map +1 -0
- package/dist/core/status.d.cts +44 -0
- package/dist/core/status.d.ts +44 -0
- package/dist/core/status.js +2 -0
- package/dist/core/status.js.map +1 -0
- package/dist/core/store.cjs +2 -0
- package/dist/core/store.cjs.map +1 -0
- package/dist/core/store.d.cts +84 -0
- package/dist/core/store.d.ts +84 -0
- package/dist/core/store.js +2 -0
- package/dist/core/store.js.map +1 -0
- package/dist/core/utils.cjs +2 -0
- package/dist/core/utils.cjs.map +1 -0
- package/dist/core/utils.d.cts +81 -0
- package/dist/core/utils.d.ts +81 -0
- package/dist/core/utils.js +2 -0
- package/dist/core/utils.js.map +1 -0
- package/dist/core.cjs +2 -0
- package/dist/core.cjs.map +1 -0
- package/dist/core.d.cts +14 -0
- package/dist/core.d.ts +14 -0
- package/dist/core.js +2 -0
- package/dist/core.js.map +1 -0
- package/dist/devtools/bridge.cjs +1 -1
- package/dist/devtools/bridge.cjs.map +1 -1
- package/dist/devtools/bridge.d.cts +5 -1
- package/dist/devtools/bridge.d.ts +5 -1
- package/dist/devtools/bridge.js +1 -1
- package/dist/devtools/bridge.js.map +1 -1
- package/dist/devtools/index.cjs +18 -18
- package/dist/devtools/index.cjs.map +1 -1
- package/dist/devtools/index.d.cts +27 -2
- package/dist/devtools/index.d.ts +27 -2
- package/dist/devtools/index.js +18 -18
- package/dist/devtools/index.js.map +1 -1
- package/dist/devtools/protocol.cjs +2 -0
- package/dist/devtools/protocol.cjs.map +1 -0
- package/dist/devtools/protocol.d.cts +54 -0
- package/dist/devtools/protocol.d.ts +54 -0
- package/dist/devtools/protocol.js +2 -0
- package/dist/devtools/protocol.js.map +1 -0
- package/dist/field-binding-B_OX3bjp.d.cts +25 -0
- package/dist/field-binding-MX6jVQbT.d.ts +25 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +9 -193
- package/dist/index.d.ts +9 -193
- package/dist/index.js +1 -1
- package/dist/meta-types-Bzmm21TP.d.cts +18 -0
- package/dist/meta-types-Bzmm21TP.d.ts +18 -0
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +10 -7
- package/dist/react/index.d.ts +10 -7
- 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 +8 -5
- package/dist/react-native/index.d.ts +8 -5
- package/dist/react-native/index.js +1 -1
- package/dist/react-native/index.js.map +1 -1
- package/dist/resolvers/index.cjs +1 -1
- package/dist/resolvers/index.cjs.map +1 -1
- package/dist/resolvers/index.d.cts +2 -1
- package/dist/resolvers/index.d.ts +2 -1
- package/dist/resolvers/index.js +1 -1
- package/dist/resolvers/joi.d.cts +2 -1
- package/dist/resolvers/joi.d.ts +2 -1
- package/dist/resolvers/yup.d.cts +2 -1
- package/dist/resolvers/yup.d.ts +2 -1
- package/dist/resolvers/zod.d.cts +2 -1
- package/dist/resolvers/zod.d.ts +2 -1
- package/dist/store-api-types-D-ZHxzRy.d.cts +161 -0
- package/dist/store-api-types-DPi30jQF.d.ts +161 -0
- package/dist/{bus-B4zZmB9C.d.ts → types-CG5nYeRk.d.ts} +140 -41
- package/dist/{bus-BeAeZwWu.d.cts → types-D6LhF5GC.d.cts} +140 -41
- package/dist/{upload-EXnJLq8k.d.cts → upload-C2mpfhp1.d.cts} +1 -1
- package/dist/{upload-EXnJLq8k.d.ts → upload-C2mpfhp1.d.ts} +1 -1
- package/dist/{use-bit-persist-Dk3fUrds.d.ts → use-bit-persist-BTwy8kvA.d.ts} +14 -14
- package/dist/{use-bit-persist-D_gimC9A.d.cts → use-bit-persist-C2LHNTVv.d.cts} +14 -14
- package/dist/utils.cjs +2 -0
- package/dist/utils.cjs.map +1 -0
- package/dist/utils.d.cts +6 -0
- package/dist/utils.d.ts +6 -0
- package/dist/utils.js +2 -0
- package/dist/utils.js.map +1 -0
- package/dist/vue/index.cjs +1 -1
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.d.cts +17 -18
- package/dist/vue/index.d.ts +17 -18
- package/dist/vue/index.js +1 -1
- package/dist/vue/index.js.map +1 -1
- package/package.json +48 -17
- package/dist/chunk-2CVKNPWX.js +0 -2
- package/dist/chunk-2CVKNPWX.js.map +0 -1
- package/dist/chunk-3EDD3V43.cjs +0 -2
- package/dist/chunk-3EDD3V43.cjs.map +0 -1
- package/dist/chunk-PX6WKENM.js +0 -2
- package/dist/chunk-PX6WKENM.js.map +0 -1
- package/dist/chunk-QWH2NBVB.js +0 -2
- package/dist/chunk-QWH2NBVB.js.map +0 -1
- package/dist/chunk-T3FR7D5V.js +0 -2
- package/dist/chunk-T3FR7D5V.js.map +0 -1
- package/dist/chunk-VQ7MK5VB.cjs +0 -2
- package/dist/chunk-VQ7MK5VB.cjs.map +0 -1
- package/dist/chunk-Y2ONHDRE.cjs +0 -2
- package/dist/chunk-Y2ONHDRE.cjs.map +0 -1
- package/dist/chunk-YCSWULEN.cjs +0 -2
- package/dist/chunk-YCSWULEN.cjs.map +0 -1
- package/dist/field-binding-BXw0Ku2c.d.cts +0 -12
- package/dist/field-binding-BXw0Ku2c.d.ts +0 -12
- package/dist/public-types-Cd9ai20P.d.cts +0 -97
- package/dist/public-types-DdZxD6Op.d.ts +0 -97
package/dist/vue/index.d.cts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { b as BitFrameworkStoreApi, e as BitStoreApi } from '../store-api-types-D-ZHxzRy.cjs';
|
|
2
|
+
import '../bus-ZLQeq4Vr.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-D6LhF5GC.cjs';
|
|
4
|
+
import { a as BitHistoryMetadata, b as BitValidationOptions } from '../meta-types-Bzmm21TP.cjs';
|
|
3
5
|
import * as vue from 'vue';
|
|
4
6
|
import { ComputedRef, Ref } from 'vue';
|
|
5
|
-
import
|
|
7
|
+
import { a as BitArrayBindingField } from '../array-controller-B5bfXV1W.cjs';
|
|
6
8
|
import * as _vue_shared from '@vue/shared';
|
|
7
|
-
import {
|
|
9
|
+
import { a as BitUploadFn, B as BitDeleteUploadFn } from '../upload-C2mpfhp1.cjs';
|
|
8
10
|
import '../types-D8DgIUhJ.cjs';
|
|
9
11
|
|
|
10
|
-
declare function provideBitStore<T extends object>(store: BitStoreApi<T>): void;
|
|
11
|
-
declare function useBitStore<T extends object>():
|
|
12
|
+
declare function provideBitStore<T extends object>(store: BitFrameworkStoreApi<T> | BitStoreApi<T>): void;
|
|
13
|
+
declare function useBitStore<T extends object>(): BitFrameworkStoreApi<T>;
|
|
12
14
|
|
|
13
15
|
/**
|
|
14
16
|
* Metadata describing the current state of a form field (Vue reactive).
|
|
@@ -107,9 +109,10 @@ interface UseBitFormResult<T extends object = any> {
|
|
|
107
109
|
onSubmit: (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => (e?: Event) => Promise<void>;
|
|
108
110
|
reset: () => void;
|
|
109
111
|
transaction: <TResult>(callback: () => TResult) => TResult;
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
112
|
+
setValues: (values: T | DeepPartial<T>, options?: {
|
|
113
|
+
partial?: boolean;
|
|
114
|
+
rebase?: boolean;
|
|
115
|
+
}) => void;
|
|
113
116
|
setError: (path: string, message: string | undefined) => void;
|
|
114
117
|
setErrors: (errors: BitErrors<T>) => void;
|
|
115
118
|
setServerErrors: (serverErrors: Record<string, string[] | string>) => void;
|
|
@@ -123,18 +126,14 @@ declare function useBitForm<T extends object>(): UseBitFormResult<T>;
|
|
|
123
126
|
declare function useBitField<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): UseBitFieldVueResult<BitPathValue<TForm, P>>;
|
|
124
127
|
|
|
125
128
|
declare function useBitArray<TForm extends object = any, P extends BitArrayPath<TForm> = BitArrayPath<TForm>>(path: P): {
|
|
126
|
-
fields: vue.ComputedRef<
|
|
127
|
-
key: string;
|
|
128
|
-
value: _vue_reactivity.UnwrapRefSimple<BitArrayItem<BitPathValue<TForm, P>>>;
|
|
129
|
-
index: number;
|
|
130
|
-
}[]>;
|
|
129
|
+
fields: vue.ComputedRef<BitArrayBindingField<BitArrayItem<BitPathValue<TForm, P>>>[]>;
|
|
131
130
|
length: vue.ComputedRef<number>;
|
|
132
|
-
append: (
|
|
133
|
-
prepend: (
|
|
134
|
-
insert: (index: number,
|
|
131
|
+
append: (value: BitArrayItem<BitPathValue<TForm, P>>) => void;
|
|
132
|
+
prepend: (value: BitArrayItem<BitPathValue<TForm, P>>) => void;
|
|
133
|
+
insert: (index: number, value: BitArrayItem<BitPathValue<TForm, P>>) => void;
|
|
135
134
|
remove: (index: number) => void;
|
|
136
135
|
move: (from: number, to: number) => void;
|
|
137
|
-
swap: (
|
|
136
|
+
swap: (indexA: number, indexB: number) => void;
|
|
138
137
|
replace: (items: BitArrayItem<BitPathValue<TForm, P>>[]) => void;
|
|
139
138
|
clear: () => void;
|
|
140
139
|
};
|
package/dist/vue/index.d.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { b as BitFrameworkStoreApi, e as BitStoreApi } from '../store-api-types-DPi30jQF.js';
|
|
2
|
+
import '../bus-B2VEKrPI.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-CG5nYeRk.js';
|
|
4
|
+
import { a as BitHistoryMetadata, b as BitValidationOptions } from '../meta-types-Bzmm21TP.js';
|
|
3
5
|
import * as vue from 'vue';
|
|
4
6
|
import { ComputedRef, Ref } from 'vue';
|
|
5
|
-
import
|
|
7
|
+
import { a as BitArrayBindingField } from '../array-controller-Cx-DMH7Y.js';
|
|
6
8
|
import * as _vue_shared from '@vue/shared';
|
|
7
|
-
import {
|
|
9
|
+
import { a as BitUploadFn, B as BitDeleteUploadFn } from '../upload-C2mpfhp1.js';
|
|
8
10
|
import '../types-D8DgIUhJ.js';
|
|
9
11
|
|
|
10
|
-
declare function provideBitStore<T extends object>(store: BitStoreApi<T>): void;
|
|
11
|
-
declare function useBitStore<T extends object>():
|
|
12
|
+
declare function provideBitStore<T extends object>(store: BitFrameworkStoreApi<T> | BitStoreApi<T>): void;
|
|
13
|
+
declare function useBitStore<T extends object>(): BitFrameworkStoreApi<T>;
|
|
12
14
|
|
|
13
15
|
/**
|
|
14
16
|
* Metadata describing the current state of a form field (Vue reactive).
|
|
@@ -107,9 +109,10 @@ interface UseBitFormResult<T extends object = any> {
|
|
|
107
109
|
onSubmit: (handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>) => (e?: Event) => Promise<void>;
|
|
108
110
|
reset: () => void;
|
|
109
111
|
transaction: <TResult>(callback: () => TResult) => TResult;
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
112
|
+
setValues: (values: T | DeepPartial<T>, options?: {
|
|
113
|
+
partial?: boolean;
|
|
114
|
+
rebase?: boolean;
|
|
115
|
+
}) => void;
|
|
113
116
|
setError: (path: string, message: string | undefined) => void;
|
|
114
117
|
setErrors: (errors: BitErrors<T>) => void;
|
|
115
118
|
setServerErrors: (serverErrors: Record<string, string[] | string>) => void;
|
|
@@ -123,18 +126,14 @@ declare function useBitForm<T extends object>(): UseBitFormResult<T>;
|
|
|
123
126
|
declare function useBitField<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): UseBitFieldVueResult<BitPathValue<TForm, P>>;
|
|
124
127
|
|
|
125
128
|
declare function useBitArray<TForm extends object = any, P extends BitArrayPath<TForm> = BitArrayPath<TForm>>(path: P): {
|
|
126
|
-
fields: vue.ComputedRef<
|
|
127
|
-
key: string;
|
|
128
|
-
value: _vue_reactivity.UnwrapRefSimple<BitArrayItem<BitPathValue<TForm, P>>>;
|
|
129
|
-
index: number;
|
|
130
|
-
}[]>;
|
|
129
|
+
fields: vue.ComputedRef<BitArrayBindingField<BitArrayItem<BitPathValue<TForm, P>>>[]>;
|
|
131
130
|
length: vue.ComputedRef<number>;
|
|
132
|
-
append: (
|
|
133
|
-
prepend: (
|
|
134
|
-
insert: (index: number,
|
|
131
|
+
append: (value: BitArrayItem<BitPathValue<TForm, P>>) => void;
|
|
132
|
+
prepend: (value: BitArrayItem<BitPathValue<TForm, P>>) => void;
|
|
133
|
+
insert: (index: number, value: BitArrayItem<BitPathValue<TForm, P>>) => void;
|
|
135
134
|
remove: (index: number) => void;
|
|
136
135
|
move: (from: number, to: number) => void;
|
|
137
|
-
swap: (
|
|
136
|
+
swap: (indexA: number, indexB: number) => void;
|
|
138
137
|
replace: (items: BitArrayItem<BitPathValue<TForm, P>>[]) => void;
|
|
139
138
|
clear: () => void;
|
|
140
139
|
};
|
package/dist/vue/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as
|
|
1
|
+
import{a as Y,b as $}from"../chunk-O5UPA33R.js";import"../chunk-5NA2TFPG.js";import{d as I}from"../chunk-UQ3DSUWC.js";import{c as H,f as K,g as C,h as q,i as O,j as W,k as _}from"../chunk-E2NZR44P.js";import{a as z}from"../chunk-W2E5UIXT.js";import{b as M,f as A,g as j}from"../chunk-EQ55DKX2.js";import{c as L}from"../chunk-63OJBMKK.js";import{c as k,f as D}from"../chunk-RD73EBSN.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}=C(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}=q(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{shallowRef as ne,computed as Q,onUnmounted as ue}from"vue";function le(t){let e=a(),o=O(e,t),r=ne(o.readItems()),i=e.observe.subscribePath(t,()=>{r.value=o.readItems()});ue(()=>{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{ref as de,computed as U,onMounted as ve,onUnmounted as fe}from"vue";function Se(t){let e=a(),o=de(e.read.getScopeStatus(t)),r;ve(()=>{r=z(e,t,p=>{o.value=p})}),fe(()=>{r?.()});let i=async()=>{let p=await e.write.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{ref as X,computed as y,watch as Be,onMounted as ye,onUnmounted 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;Be(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)};ye(()=>{s=e.observe.subscribeScopeStatus(r.value,n)}),ge(()=>{s?.()});let d=async()=>{let l=r.value,B=await e.write.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.write.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=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 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
|
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, BitStoreHooksApi } from \"../core\";\nimport { resolveBitStoreForHooks } from \"../core\";\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 {\n createFormController,\n createStoreFormActions,\n} 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 { paths: [\"isValid\", \"isSubmitting\", \"isDirty\"] },\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 const actions = createStoreFormActions(store);\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 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\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 const createId = (index?: number) =>\n store.config.idFactory({\n scope: \"array\",\n path: path as string,\n index,\n });\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((_, index) => createId(index)));\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 }, (_, i) =>\n createId(currentIds.length + i),\n );\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(createId(ids.value.length));\n store.pushItem(path, val);\n },\n prepend: (val: Item) => {\n ids.value.unshift(createId(0));\n store.prependItem(path, val);\n },\n insert: (index: number, val: Item) => {\n ids.value.splice(index, 0, createId(index));\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((_, index) => createId(index));\n store.setField(\n path as unknown as BitPath<TForm>,\n items as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n clear: () => {\n 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 { isHistoryMetaEqual } from \"../core/history-status\";\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 const nextMeta = store.getHistoryMetadata();\n if (!isHistoryMetaEqual(meta.value, nextMeta)) {\n meta.value = nextMeta;\n }\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 {\n getScopeSubscriptionPaths,\n isScopeStatusEqual,\n} from \"../core/scope-status\";\nimport { useBitStore } from \"./context\";\n\nexport type { ScopeStatus, ValidateScopeResult };\n\nexport function useBitScope(scopeName: string) {\n const store = useBitStore();\n const scopeFields = store.getScopeFields(scopeName);\n const status = ref<ScopeStatus>(store.getStepStatus(scopeName));\n let unsubscribe: () => void;\n\n onMounted(() => {\n unsubscribe = store.subscribeSelector(\n (state) => ({ errors: state.errors, isDirty: state.isDirty }),\n () => {\n const newStatus = store.getStepStatus(scopeName);\n if (!isScopeStatusEqual(status.value, newStatus)) {\n status.value = newStatus;\n }\n },\n { paths: getScopeSubscriptionPaths(scopeFields) },\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 {\n getScopeSubscriptionPaths,\n isScopeStatusEqual,\n} from \"../core/scope-status\";\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.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 (!isScopeStatusEqual(status.value, newStatus)) {\n status.value = newStatus;\n }\n };\n\n onMounted(() => {\n unsubscribe = store.subscribeSelector(\n (state) => ({ errors: state.errors, isDirty: state.isDirty }),\n updateStatus,\n { paths: getScopeSubscriptionPaths(store.getScopeFields(scope.value)) },\n );\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 { 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.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 type { UseBitPersistResult } from \"./types\";\n\nexport function useBitPersist<T extends object = any>(): UseBitPersistResult {\n const store = useBitStore<T>();\n const meta = ref(store.getPersistMetadata());\n\n const unsubscribe = store.subscribeSelector(\n (state) => state.persist,\n (nextMeta) => {\n meta.value = nextMeta;\n },\n { paths: [\"persist\"] },\n );\n\n onUnmounted(() => unsubscribe());\n\n const restore = async (): Promise<boolean> => {\n return store.restorePersisted();\n };\n\n const save = async (): Promise<void> => {\n await store.forceSave();\n };\n\n const clear = async (): Promise<void> => {\n await store.clearPersisted();\n };\n\n return {\n restore,\n save,\n clear,\n meta: {\n isSaving: computed(() => 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","resolveBitStoreForHooks","useBitStore","inject","computed","onUnmounted","shallowRef","ref","useBitForm","store","useBitStore","state","shallowRef","submitError","ref","lastResponse","unsubscribe","snapshot","nextState","onUnmounted","controller","createFormController","result","error","actions","createStoreFormActions","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","useBitArray","path","store","useBitStore","createId","index","initialValues","val","getDeepValue","values","ref","ids","_","unsubscribe","newValues","nextValues","currentIds","diff","newIds","i","onUnmounted","fields","computed","v","length","from","to","id","a","b","items","computed","onUnmounted","shallowRef","useBitHistory","store","useBitStore","meta","shallowRef","unsubscribe","nextMeta","isHistoryMetaEqual","onUnmounted","undo","redo","computed","ref","computed","onMounted","onUnmounted","useBitScope","scopeName","store","useBitStore","scopeFields","status","ref","unsubscribe","onMounted","state","newStatus","isScopeStatusEqual","getScopeSubscriptionPaths","onUnmounted","validate","valid","errors","getErrors","isValid","computed","isDirty","ref","computed","watch","onMounted","onUnmounted","useBitSteps","scopeNames","store","useBitStore","stepIndex","ref","scope","computed","status","unsubscribe","watch","newScope","updateStatus","scopeName","newStatus","isScopeStatusEqual","onMounted","state","getScopeSubscriptionPaths","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","kernelCallbacks","val","path","msg","key","upload","createUploadHandler","remove","createRemoveHandler","computed","computed","onUnmounted","ref","useBitPersist","store","useBitStore","meta","ref","unsubscribe","state","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 { shallowRef, computed, onUnmounted } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport { createArrayBindingController, BitArrayPath } from \"../core\";\nimport { cleanupRegisteredPrefix } from \"../core\";\n\nexport function useBitArray<\n TForm extends object = any,\n P extends BitArrayPath<TForm> = BitArrayPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n const controller = createArrayBindingController<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 { ref, computed, onMounted, onUnmounted } 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.write.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 { ref, computed, watch, onMounted, onUnmounted } 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.write.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.write.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","shallowRef","computed","onUnmounted","useBitArray","path","store","useBitStore","controller","createArrayBindingController","values","shallowRef","unsubscribe","onUnmounted","cleanupRegisteredPrefix","fields","computed","length","computed","onUnmounted","shallowRef","useBitHistory","store","useBitStore","meta","shallowRef","readHistoryMetaSnapshot","unsubscribe","observeHistoryMetaSnapshot","nextMeta","onUnmounted","undo","redo","computed","ref","computed","onMounted","onUnmounted","useBitScope","scopeName","store","useBitStore","status","ref","unsubscribe","onMounted","observeScopeStatusSnapshot","nextStatus","onUnmounted","validate","valid","errors","getErrors","isValid","computed","isDirty","ref","computed","watch","onMounted","onUnmounted","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.
|
|
3
|
+
"version": "2.2.8",
|
|
4
4
|
"description": "Gerenciamento de estado de formulários agnóstico e performático",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -40,6 +40,36 @@
|
|
|
40
40
|
"import": "./dist/index.js",
|
|
41
41
|
"require": "./dist/index.cjs"
|
|
42
42
|
},
|
|
43
|
+
"./core": {
|
|
44
|
+
"types": "./dist/core.d.ts",
|
|
45
|
+
"import": "./dist/core.js",
|
|
46
|
+
"require": "./dist/core.cjs"
|
|
47
|
+
},
|
|
48
|
+
"./core/store": {
|
|
49
|
+
"types": "./dist/core/store.d.ts",
|
|
50
|
+
"import": "./dist/core/store.js",
|
|
51
|
+
"require": "./dist/core/store.cjs"
|
|
52
|
+
},
|
|
53
|
+
"./core/bindings": {
|
|
54
|
+
"types": "./dist/core/bindings.d.ts",
|
|
55
|
+
"import": "./dist/core/bindings.js",
|
|
56
|
+
"require": "./dist/core/bindings.cjs"
|
|
57
|
+
},
|
|
58
|
+
"./core/status": {
|
|
59
|
+
"types": "./dist/core/status.d.ts",
|
|
60
|
+
"import": "./dist/core/status.js",
|
|
61
|
+
"require": "./dist/core/status.cjs"
|
|
62
|
+
},
|
|
63
|
+
"./core/utils": {
|
|
64
|
+
"types": "./dist/core/utils.d.ts",
|
|
65
|
+
"import": "./dist/core/utils.js",
|
|
66
|
+
"require": "./dist/core/utils.cjs"
|
|
67
|
+
},
|
|
68
|
+
"./utils": {
|
|
69
|
+
"types": "./dist/utils.d.ts",
|
|
70
|
+
"import": "./dist/utils.js",
|
|
71
|
+
"require": "./dist/utils.cjs"
|
|
72
|
+
},
|
|
43
73
|
"./react": {
|
|
44
74
|
"types": "./dist/react/index.d.ts",
|
|
45
75
|
"import": "./dist/react/index.js",
|
|
@@ -84,6 +114,11 @@
|
|
|
84
114
|
"types": "./dist/devtools/bridge.d.ts",
|
|
85
115
|
"import": "./dist/devtools/bridge.js",
|
|
86
116
|
"require": "./dist/devtools/bridge.cjs"
|
|
117
|
+
},
|
|
118
|
+
"./devtools/protocol": {
|
|
119
|
+
"types": "./dist/devtools/protocol.d.ts",
|
|
120
|
+
"import": "./dist/devtools/protocol.js",
|
|
121
|
+
"require": "./dist/devtools/protocol.cjs"
|
|
87
122
|
}
|
|
88
123
|
},
|
|
89
124
|
"files": [
|
|
@@ -103,23 +138,18 @@
|
|
|
103
138
|
"test:cli": "vitest run src/tests/cli",
|
|
104
139
|
"test:watch": "vitest",
|
|
105
140
|
"test:coverage": "vitest run --coverage",
|
|
106
|
-
"test:e2e": "playwright test -c quality/e2e/playwright.config.ts",
|
|
107
|
-
"test:e2e:ui": "playwright test -c quality/e2e/playwright.config.ts --ui --ui-host=127.0.0.1 --ui-port=35000",
|
|
108
|
-
"test:e2e:headed": "playwright test -c quality/e2e/playwright.config.ts --headed",
|
|
109
|
-
"test:e2e:debug": "playwright test -c quality/e2e/playwright.config.ts --debug",
|
|
110
|
-
"quality:e2e:serve": "vite --config quality/e2e/fixtures/react-pilot/vite.config.ts",
|
|
111
141
|
"test:bench": "vitest run -c quality/vitest.quality.config.ts quality/bench/perf.test.ts",
|
|
142
|
+
"test:bench:memory": "vitest run -c quality/vitest.quality.config.ts quality/bench/memory.bench.ts",
|
|
112
143
|
"test:bench:compare": "vitest run -c quality/vitest.quality.config.ts quality/bench/rhf-compare.test.ts --maxWorkers=1 --minWorkers=1",
|
|
113
|
-
"test:bench:all": "npm run test:bench && npm run test:bench:compare",
|
|
144
|
+
"test:bench:all": "npm run test:bench && npm run test:bench:memory && npm run test:bench:compare",
|
|
145
|
+
"test:quality:critical": "npm run test:bench && npm run test:bench:memory && npm run test:release-gates",
|
|
114
146
|
"test:compat": "node quality/compat/run-compat.mjs",
|
|
115
147
|
"test:observability": "vitest run -c quality/vitest.quality.config.ts quality/release-gates/observability.test.ts",
|
|
116
148
|
"test:bundle-size": "vitest run -c quality/vitest.quality.config.ts quality/release-gates/bundle-size.test.ts",
|
|
117
|
-
"
|
|
118
|
-
"changeset": "changeset",
|
|
119
|
-
"changeset:status": "changeset status",
|
|
120
|
-
"changeset:version": "changeset version",
|
|
149
|
+
"test:release-gates": "npm run build && npm run test:bench && npm run test:bench:memory && npm run test:bundle-size && vitest run -c quality/vitest.quality.config.ts quality/release-gates/bundle-size-gate.test.ts && npm run test:observability",
|
|
121
150
|
"clean": "rm -rf dist && rm -f *.tsbuildinfo",
|
|
122
151
|
"lint": "npm run clean && tsc --build && tsc -p tsconfig.test.json",
|
|
152
|
+
"lint:imports": "eslint src/ --fix",
|
|
123
153
|
"prepublishOnly": "npm run build && npm run test",
|
|
124
154
|
"release": "npm publish",
|
|
125
155
|
"dry-run": "npm publish --dry-run",
|
|
@@ -129,7 +159,6 @@
|
|
|
129
159
|
"@angular/core": ">=16.0.0",
|
|
130
160
|
"joi": "^17.0.0",
|
|
131
161
|
"react": ">=16.8.0",
|
|
132
|
-
"rxjs": "^7.0.0",
|
|
133
162
|
"vue": ">=3.0.0",
|
|
134
163
|
"yup": "^1.0.0",
|
|
135
164
|
"zod": "^3.0.0"
|
|
@@ -152,19 +181,16 @@
|
|
|
152
181
|
},
|
|
153
182
|
"joi": {
|
|
154
183
|
"optional": true
|
|
155
|
-
},
|
|
156
|
-
"rxjs": {
|
|
157
|
-
"optional": true
|
|
158
184
|
}
|
|
159
185
|
},
|
|
160
186
|
"devDependencies": {
|
|
161
|
-
"@changesets/cli": "^2.29.7",
|
|
162
187
|
"@angular/common": "^21.1.3",
|
|
163
188
|
"@angular/compiler": "^21.1.3",
|
|
164
189
|
"@angular/core": "^21.1.3",
|
|
165
190
|
"@angular/platform-browser": "^21.1.3",
|
|
166
191
|
"@angular/platform-browser-dynamic": "^21.1.3",
|
|
167
|
-
"@
|
|
192
|
+
"@eslint/js": "^10.0.1",
|
|
193
|
+
"@tanstack/react-form": "^1.28.5",
|
|
168
194
|
"@testing-library/jest-dom": "^6.6.3",
|
|
169
195
|
"@testing-library/react": "^16.2.0",
|
|
170
196
|
"@types/node": "^22.19.11",
|
|
@@ -172,10 +198,15 @@
|
|
|
172
198
|
"@types/react-dom": "^19.0.3",
|
|
173
199
|
"@types/react-native": "^0.72.8",
|
|
174
200
|
"@types/ws": "^8.18.1",
|
|
201
|
+
"@typescript-eslint/eslint-plugin": "^8.57.2",
|
|
202
|
+
"@typescript-eslint/parser": "^8.57.2",
|
|
175
203
|
"@vitejs/plugin-react": "^4.3.4",
|
|
176
204
|
"@vitejs/plugin-vue": "^5.2.1",
|
|
177
205
|
"@vitest/coverage-v8": "^3.0.5",
|
|
178
206
|
"@vue/test-utils": "^2.4.6",
|
|
207
|
+
"eslint": "^10.1.0",
|
|
208
|
+
"eslint-plugin-unused-imports": "^4.4.1",
|
|
209
|
+
"formik": "^2.4.9",
|
|
179
210
|
"joi": "^17.13.3",
|
|
180
211
|
"jsdom": "^26.0.0",
|
|
181
212
|
"react": "^19.0.0",
|
package/dist/chunk-2CVKNPWX.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{h as l,i as u}from"./chunk-PX6WKENM.js";import{b as d,c}from"./chunk-3NUJVIAM.js";async function m(e,r,o,i){try{let t=await e(r,o);i.onSuccess(t)}catch(t){if(l(t)){i.onServerErrors(u(t));return}i.onUnhandledError(t instanceof Error?t:new Error(String(t)))}}function E(e){return{setField:(r,o)=>e.setField(r,o),blurField:r=>e.blurField(r),replaceValues:r=>e.replaceValues(r),hydrate:r=>e.hydrate(r),rebase:r=>e.rebase(r),setError:(r,o)=>e.setError(r,o),setErrors:r=>e.setErrors(r),setServerErrors:r=>e.setServerErrors(r),validate:r=>e.validate(r),transaction:r=>e.transaction(r)}}function p(e,r){e?.preventDefault?.(),r?.stopPropagation&&e?.stopPropagation?.()}function f(e,r,o){return{submit:s=>a=>(p(a,o),e.submit(s)),onSubmit:s=>a=>(p(a,o),r.setSubmissionError(null),e.submit(async(b,F)=>{await m(s,b,F,{onSuccess:n=>{r.setSubmissionResult(n),r.setSubmissionError(null)},onServerErrors:n=>{e.setServerErrors(n)},onUnhandledError:n=>{r.setSubmissionError(n)}})})),reset:()=>{e.reset(),r.clearSubmissionState()},getValues:()=>e.getState().values,getErrors:()=>e.getState().errors,getTouched:()=>e.getState().touched,getDirtyValues:()=>e.getDirtyValues()}}function k(e,r,o){return e.subscribeSelector(()=>e.getFieldState(r),o,{paths:[r],autoTrackPaths:!1,equalityFn:(i,t)=>i.value===t.value&&i.error===t.error&&i.touched===t.touched&&i.isHidden===t.isHidden&&i.isRequired===t.isRequired&&i.isDirty===t.isDirty&&i.isValidating===t.isValidating})}function h(e,r,o){return{setValue:s=>{e.setField(r,c(s,o))},setBlur:()=>e.blurField(r),displayValue:s=>d(s,o)}}function P(e,r){let o=Object.keys(e),i=Object.keys(r);return o.length!==i.length?!1:o.every(t=>e[t]===r[t])}function x(e,r){return e.hasErrors===r.hasErrors&&e.isDirty===r.isDirty&&P(e.errors,r.errors)}function H(e){return[...e,"isDirty"]}export{E as a,f as b,k as c,h as d,x as e,H as f};
|
|
2
|
-
//# sourceMappingURL=chunk-2CVKNPWX.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/submit-handler.ts","../src/core/form-controller.ts","../src/core/field-controller.ts","../src/core/scope-status.ts"],"sourcesContent":["import { extractServerErrors, isValidationErrorShape } from \"./utils\";\n\nexport interface BitSubmitExecutionHandlers {\n onServerErrors: (errors: Record<string, string[] | string>) => void;\n onUnhandledError: (error: Error) => void;\n onSuccess: (result: unknown) => void;\n}\n\nexport async function executeSubmitHandler<T extends object>(\n handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>,\n values: T,\n dirtyValues: Partial<T> | undefined,\n handlers: BitSubmitExecutionHandlers,\n): Promise<void> {\n try {\n const result = await handler(values, dirtyValues);\n handlers.onSuccess(result);\n } catch (error) {\n if (isValidationErrorShape(error)) {\n handlers.onServerErrors(extractServerErrors(error));\n return;\n }\n\n handlers.onUnhandledError(\n error instanceof Error ? error : new Error(String(error)),\n );\n }\n}\n","import { executeSubmitHandler } from \"./submit-handler\";\nimport type { BitStoreHooksApi } from \"./store/contracts/public-types\";\n\nexport type BitFormDomEvent = {\n preventDefault?: () => void;\n stopPropagation?: () => void;\n};\n\nexport interface BitFormControllerRuntime {\n clearSubmissionState: () => void;\n setSubmissionResult: (result: unknown) => void;\n setSubmissionError: (error: Error | null) => void;\n}\n\nexport interface BitFormControllerOptions {\n stopPropagation?: boolean;\n}\n\nexport function createStoreFormActions<T extends object>(\n store: BitStoreHooksApi<T>,\n) {\n return {\n setField: <P extends Parameters<BitStoreHooksApi<T>[\"setField\"]>[0]>(\n path: P,\n value: Parameters<BitStoreHooksApi<T>[\"setField\"]>[1],\n ) => store.setField(path, value),\n blurField: <P extends Parameters<BitStoreHooksApi<T>[\"blurField\"]>[0]>(\n path: P,\n ) => store.blurField(path),\n replaceValues: (values: T) => store.replaceValues(values),\n hydrate: (values: Parameters<BitStoreHooksApi<T>[\"hydrate\"]>[0]) =>\n store.hydrate(values),\n rebase: (values: T) => store.rebase(values),\n setError: (path: string, message: string | undefined) =>\n store.setError(path, message),\n setErrors: (errors: Parameters<BitStoreHooksApi<T>[\"setErrors\"]>[0]) =>\n store.setErrors(errors),\n setServerErrors: (\n serverErrors: Parameters<BitStoreHooksApi<T>[\"setServerErrors\"]>[0],\n ) => store.setServerErrors(serverErrors),\n validate: (options?: Parameters<BitStoreHooksApi<T>[\"validate\"]>[0]) =>\n store.validate(options),\n transaction: <TResult>(callback: () => TResult) =>\n store.transaction(callback),\n };\n}\n\nexport function preventFormEvent(\n event?: BitFormDomEvent,\n options?: BitFormControllerOptions,\n) {\n event?.preventDefault?.();\n if (options?.stopPropagation) {\n event?.stopPropagation?.();\n }\n}\n\nexport function createFormController<T extends object>(\n store: BitStoreHooksApi<T>,\n runtime: BitFormControllerRuntime,\n options?: BitFormControllerOptions,\n) {\n const submit = (\n onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>,\n ) => {\n return (event?: BitFormDomEvent) => {\n preventFormEvent(event, options);\n return store.submit(onSuccess);\n };\n };\n\n const onSubmit = (\n handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>,\n ) => {\n return (event?: BitFormDomEvent) => {\n preventFormEvent(event, options);\n runtime.setSubmissionError(null);\n\n return store.submit(async (values, dirtyValues) => {\n await executeSubmitHandler(handler, values, dirtyValues, {\n onSuccess: (result) => {\n runtime.setSubmissionResult(result);\n runtime.setSubmissionError(null);\n },\n onServerErrors: (serverErrors) => {\n store.setServerErrors(serverErrors);\n },\n onUnhandledError: (error) => {\n runtime.setSubmissionError(error);\n },\n });\n });\n };\n };\n\n const reset = () => {\n store.reset();\n runtime.clearSubmissionState();\n };\n\n return {\n submit,\n onSubmit,\n reset,\n getValues: () => store.getState().values,\n getErrors: () => store.getState().errors,\n getTouched: () => store.getState().touched,\n getDirtyValues: () => store.getDirtyValues(),\n };\n}\n","import { formatMaskedValue, parseMaskedInput } from \"./mask/field-binding\";\nimport type { BitMask } from \"./mask/types\";\nimport type { BitStoreHooksApi } from \"./store/contracts/public-types\";\nimport type {\n BitFieldState,\n BitPath,\n BitPathValue,\n} from \"./store/contracts/types\";\n\nexport function subscribeFieldState<\n TForm extends object,\n P extends BitPath<TForm>,\n>(\n store: BitStoreHooksApi<TForm>,\n path: P,\n listener: (\n value: Readonly<BitFieldState<TForm, BitPathValue<TForm, P>>>,\n ) => void,\n) {\n return store.subscribeSelector(\n () =>\n store.getFieldState(path) as Readonly<\n BitFieldState<TForm, BitPathValue<TForm, P>>\n >,\n listener,\n {\n paths: [path as string],\n autoTrackPaths: false,\n equalityFn: (prev, next) =>\n prev.value === next.value &&\n prev.error === next.error &&\n prev.touched === next.touched &&\n prev.isHidden === next.isHidden &&\n prev.isRequired === next.isRequired &&\n prev.isDirty === next.isDirty &&\n prev.isValidating === next.isValidating,\n },\n );\n}\n\nexport function createMaskedFieldController<\n TForm extends object,\n P extends BitPath<TForm>,\n>(store: BitStoreHooksApi<TForm>, path: P, mask: BitMask | undefined) {\n const setValue = (value: unknown) => {\n store.setField(\n path,\n parseMaskedInput(value, mask) as BitPathValue<TForm, P>,\n );\n };\n\n const setBlur = () => store.blurField(path);\n\n const displayValue = (value: unknown) => formatMaskedValue(value, mask);\n\n return {\n setValue,\n setBlur,\n displayValue,\n };\n}\n","import type { ScopeStatus } from \"./store/contracts/types\";\n\nexport function areScopeErrorsEqual(\n currentErrors: Record<string, string>,\n nextErrors: Record<string, string>,\n): boolean {\n const currentKeys = Object.keys(currentErrors);\n const nextKeys = Object.keys(nextErrors);\n\n if (currentKeys.length !== nextKeys.length) {\n return false;\n }\n\n return currentKeys.every((key) => currentErrors[key] === nextErrors[key]);\n}\n\nexport function isScopeStatusEqual(\n currentStatus: ScopeStatus,\n nextStatus: ScopeStatus,\n): boolean {\n return (\n currentStatus.hasErrors === nextStatus.hasErrors &&\n currentStatus.isDirty === nextStatus.isDirty &&\n areScopeErrorsEqual(currentStatus.errors, nextStatus.errors)\n );\n}\n\nexport function getScopeSubscriptionPaths(scopeFields: readonly string[]) {\n return [...scopeFields, \"isDirty\"];\n}\n"],"mappings":"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","names":["executeSubmitHandler","handler","values","dirtyValues","handlers","result","error","isValidationErrorShape","extractServerErrors","createStoreFormActions","store","path","value","values","message","errors","serverErrors","options","callback","preventFormEvent","event","createFormController","runtime","onSuccess","handler","dirtyValues","executeSubmitHandler","result","error","subscribeFieldState","store","path","listener","prev","next","createMaskedFieldController","mask","value","parseMaskedInput","formatMaskedValue","areScopeErrorsEqual","currentErrors","nextErrors","currentKeys","nextKeys","key","isScopeStatusEqual","currentStatus","nextStatus","getScopeSubscriptionPaths","scopeFields"]}
|
package/dist/chunk-3EDD3V43.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(); } }var _chunkY2ONHDREcjs = require('./chunk-Y2ONHDRE.cjs');var _chunkYCSWULENcjs = require('./chunk-YCSWULEN.cjs');var _react = require('react');var _jsxruntime = require('react/jsx-runtime');var q=_react.createContext.call(void 0, null),lt= exports.a =({store:t,children:e})=>_jsxruntime.jsx.call(void 0, q.Provider,{value:_chunkYCSWULENcjs.k.call(void 0, t),children:e}),S= exports.b =()=>{let t=_react.useContext.call(void 0, q);if(!t)throw new Error("BitForm hooks devem ser usados dentro de um BitFormProvider");return t};var G=t=>({isValid:t.isValid,isDirty:t.isDirty,isSubmitting:t.isSubmitting});function bt(){let t=S(),[e,o]=_react.useState.call(void 0, null),[s,n]=_react.useState.call(void 0, null),c=_react.useRef.call(void 0, null),l=_react.useCallback.call(void 0, ()=>{let p=t.getState(),P={isValid:p.isValid,isDirty:p.isDirty,isSubmitting:p.isSubmitting};return c.current&&c.current.isValid===P.isValid&&c.current.isDirty===P.isDirty&&c.current.isSubmitting===P.isSubmitting?c.current:(c.current=P,P)},[t]),d=_react.useCallback.call(void 0, p=>t.subscribeSelector(G,()=>p(),{paths:["isValid","isDirty","isSubmitting"]}),[t]),i=_react.useSyncExternalStore.call(void 0, d,l,l),r=_react.useMemo.call(void 0, ()=>_chunkY2ONHDREcjs.b.call(void 0, t,{clearSubmissionState:()=>{o(null),n(null)},setSubmissionResult:p=>{n(p)},setSubmissionError:p=>{o(p)}}),[t]),u=_react.useMemo.call(void 0, ()=>_chunkY2ONHDREcjs.a.call(void 0, t),[t]),a=_react.useCallback.call(void 0, r.submit,[r]),y=_react.useCallback.call(void 0, r.onSubmit,[r]),h=_react.useCallback.call(void 0, r.reset,[r]),B=_react.useCallback.call(void 0, r.getValues,[r]),E=_react.useCallback.call(void 0, r.getErrors,[r]),m=_react.useCallback.call(void 0, r.getTouched,[r]),g=_react.useCallback.call(void 0, r.getDirtyValues,[r]);return{meta:_react.useMemo.call(void 0, ()=>({...i,submitError:e,lastResponse:s}),[i,e,s]),getValues:B,getErrors:E,getTouched:m,getDirtyValues:g,submit:a,onSubmit:y,reset:h,...u}}function Tt(t){let e=S(),o=_react.useCallback.call(void 0, r=>e.config.idFactory({scope:"array",path:t,index:r}),[e,t]),s=_react.useRef.call(void 0, []),n=_react.useCallback.call(void 0, ()=>{let r=e.getState(),u=_chunkYCSWULENcjs.e.call(void 0, r.values,t),a=Array.isArray(u)?u:[];if(a.length!==s.current.length)if(a.length>s.current.length){let y=a.length-s.current.length;s.current=[...s.current,...Array(y).fill(null).map((h,B)=>o(s.current.length+B))]}else s.current=s.current.slice(0,a.length);return a},[e,t,o]),c=_react.useCallback.call(void 0, r=>e.subscribePath(t,()=>r()),[e,t]),l=_react.useSyncExternalStore.call(void 0, c,n,n),d=_react.useMemo.call(void 0, ()=>({append:r=>{s.current=[...s.current,o(s.current.length)],e.pushItem(t,r)},prepend:r=>{s.current=[o(0),...s.current],e.prependItem(t,r)},insert:(r,u)=>{let a=[...s.current];a.splice(r,0,o(r)),s.current=a,e.insertItem(t,r,u)},remove:r=>{s.current=s.current.filter((u,a)=>a!==r),e.removeItem(t,r)},move:(r,u)=>{let a=[...s.current],[y]=a.splice(r,1);a.splice(u,0,y),s.current=a,e.moveItem(t,r,u)},swap:(r,u)=>{let a=[...s.current];[a[r],a[u]]=[a[u],a[r]],s.current=a,e.swapItems(t,r,u)},replace:r=>{s.current=r.map((u,a)=>o(a)),e.setField(t,r)},clear:()=>{s.current=[],e.setField(t,[])}}),[e,t,o]);return{fields:_react.useMemo.call(void 0, ()=>l.map((r,u)=>({key:s.current[u]||`temp-${u}`,value:r,index:u})),[l]),length:l.length,...d}}function It(t){let e=S(),o=e.getScopeFields(t),s=_react.useRef.call(void 0, null),n=_react.useCallback.call(void 0, ()=>{let r=e.getStepStatus(t);return s.current&&_chunkY2ONHDREcjs.e.call(void 0, s.current,r)?s.current:(s.current=r,r)},[e,t]),c=_react.useCallback.call(void 0, r=>e.subscribeSelector(u=>({errors:u.errors,isDirty:u.isDirty}),()=>r(),{paths:_chunkY2ONHDREcjs.f.call(void 0, o)}),[e,o]),l=_react.useSyncExternalStore.call(void 0, c,n,n),d=_react.useCallback.call(void 0, async()=>{let r=await e.validate({scope:t}),u=e.getStepErrors(t);return{valid:r,errors:u}},[e,t]),i=_react.useCallback.call(void 0, ()=>e.getStepErrors(t),[e,t]);return{scopeName:t,status:l,errors:l.errors,validate:d,getErrors:i,isValid:!l.hasErrors,isDirty:l.isDirty}}function Ct(t){let e=S(),[o,s]=_react.useState.call(void 0, 0),n=_nullishCoalesce(t[o], () => ("")),c=e.getScopeFields(n),l=_react.useRef.call(void 0, null),d=_react.useCallback.call(void 0, ()=>{let m=e.getStepStatus(n);return l.current&&_chunkY2ONHDREcjs.e.call(void 0, l.current,m)?l.current:(l.current=m,m)},[e,n]),i=_react.useSyncExternalStore.call(void 0, _react.useCallback.call(void 0, m=>e.subscribeSelector(g=>({errors:g.errors,isDirty:g.isDirty}),()=>m(),{paths:_chunkY2ONHDREcjs.f.call(void 0, c)}),[e,c]),d,d),r=_react.useCallback.call(void 0, async()=>{let m=await e.validate({scope:n}),g=e.getStepErrors(n);return{valid:m,errors:g}},[e,n]),u=_react.useCallback.call(void 0, ()=>e.getStepErrors(n),[e,n]),a=_react.useCallback.call(void 0, async()=>{let m=e.getScopeFields(n);if(e.hasValidationsInProgress(m))return!1;let g=await e.validate({scope:n});if(g)s(F=>Math.min(F+1,t.length-1));else{let F=e.getStepErrors(n),p=Object.keys(F);p.length>0&&e.markFieldsTouched(p)}return g},[e,n,t.length]),y=_react.useCallback.call(void 0, ()=>{s(m=>Math.max(m-1,0))},[]),h=_react.useCallback.call(void 0, m=>{s(Math.max(0,Math.min(m-1,t.length-1)))},[t.length]),B=o===0,E=o>=t.length-1;return{step:o+1,stepIndex:o,scope:n,next:a,prev:y,goTo:h,isFirst:B,isLast:E,status:i,errors:i.errors,isValid:!i.hasErrors,isDirty:i.isDirty,validate:r,getErrors:u}}function Wt(t){let e=S(),o=_react.useRef.call(void 0, null),s=_react.useCallback.call(void 0, ()=>{let c=_chunkYCSWULENcjs.e.call(void 0, e.getState().values,t);return o.current!==null&&_chunkYCSWULENcjs.c.call(void 0, o.current,c)?o.current:(o.current=c,c)},[e,t]),n=_react.useCallback.call(void 0, c=>e.subscribePath(t,()=>c()),[e,t]);return _react.useSyncExternalStore.call(void 0, n,s,s)}function Gt(){let t=S(),e=_react.useSyncExternalStore.call(void 0, l=>t.subscribeSelector(d=>d.persist,()=>l(),{paths:["persist"]}),()=>t.getPersistMetadata(),()=>t.getPersistMetadata()),o=_react.useCallback.call(void 0, async()=>t.restorePersisted(),[t]),s=_react.useCallback.call(void 0, async()=>{await t.forceSave()},[t]),n=_react.useCallback.call(void 0, async()=>{await t.clearPersisted()},[t]),c=_react.useMemo.call(void 0, ()=>({isSaving:e.isSaving,isRestoring:e.isRestoring,error:e.error}),[e]);return{restore:o,save:s,clear:n,meta:c}}function Yt(t){let e=S(),o=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>()=>{e.unregisterField&&e.unregisterField(t)},[e,t]);let s=_react.useCallback.call(void 0, ()=>{let i=e.getFieldState(t);if(o.current&&o.current.value===i.value&&o.current.error===i.error&&o.current.touched===i.touched&&o.current.isHidden===i.isHidden&&o.current.isRequired===i.isRequired&&o.current.isDirty===i.isDirty&&o.current.isValidating===i.isValidating)return o.current;let r={value:i.value,error:i.error,touched:i.touched,isHidden:i.isHidden,isRequired:i.isRequired,isDirty:i.isDirty,isValidating:i.isValidating};return o.current=r,r},[e,t]),n=_react.useCallback.call(void 0, i=>_chunkY2ONHDREcjs.c.call(void 0, e,t,()=>i()),[e,t]),c=_react.useSyncExternalStore.call(void 0, n,s,s),l=_react.useCallback.call(void 0, i=>e.setField(t,i),[e,t]),d=_react.useCallback.call(void 0, ()=>e.blurField(t),[e,t]);return{fieldState:c,setValue:l,setBlur:d,store:e}}exports.a = lt; exports.b = S; exports.c = bt; exports.d = Yt; exports.e = Tt; exports.f = It; exports.g = Ct; exports.h = Wt; exports.i = Gt;
|
|
2
|
-
//# sourceMappingURL=chunk-3EDD3V43.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/chunk-3EDD3V43.cjs","../src/react/context.tsx","../src/react/use-bit-form.ts","../src/react/use-bit-array.ts"],"names":["BitContext","createContext","BitFormProvider","store","children","jsx","resolveBitStoreForHooks","useBitStore","useContext","selectFormMeta","state","useBitForm","submitError","setSubmitError","useState","lastResponse","setLastResponse","lastMeta","useRef","getMetaSnapshot","useCallback","nextMeta","subscribeMeta","cb","metaState","useSyncExternalStore","controller","useMemo","createFormController","result","error","actions","createStoreFormActions","submit","onSubmit","reset","getValues","getErrors","getTouched","getDirtyValues","useBitArray","path","createId","index","idsRef","getSnapshot","value","getDeepValue","arrayValue","diff","_","i","subscribeArray","data","methods","newIds","from","to","item","indexA","indexB","items"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/chunk-3EDD3V43.cjs","sourcesContent":[null,"import React, { createContext, useContext } from \"react\";\nimport type { BitStoreApi, BitStoreHooksApi } from \"../core\";\nimport { resolveBitStoreForHooks } from \"../core\";\n\nconst BitContext = createContext<BitStoreHooksApi<any> | null>(null);\n\nexport const BitFormProvider = ({\n store,\n children,\n}: {\n store: BitStoreApi<any>;\n children: React.ReactNode;\n}) => (\n <BitContext.Provider value={resolveBitStoreForHooks(store)}>\n {children}\n </BitContext.Provider>\n);\n\nexport const useBitStore = <T extends object>() => {\n const store = useContext(BitContext);\n if (!store)\n throw new Error(\n \"BitForm hooks devem ser usados dentro de um BitFormProvider\",\n );\n return store as BitStoreHooksApi<T>;\n};\n","import {\n useCallback,\n useSyncExternalStore,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useBitStore } from \"./context\";\nimport {\n createFormController,\n createStoreFormActions,\n} from \"../core/form-controller\";\nimport type { UseBitFormResult } from \"./types\";\n\nconst selectFormMeta = <T extends object>(state: {\n isValid: boolean;\n isDirty: boolean;\n isSubmitting: boolean;\n}) => ({\n isValid: state.isValid,\n isDirty: state.isDirty,\n isSubmitting: state.isSubmitting,\n});\n\nexport function useBitForm<T extends object>(): UseBitFormResult<T> {\n const store = useBitStore<T>();\n\n const [submitError, setSubmitError] = useState<Error | null>(null);\n const [lastResponse, setLastResponse] = useState<unknown>(null);\n const lastMeta = useRef<{\n isValid: boolean;\n isDirty: boolean;\n isSubmitting: boolean;\n } | null>(null);\n\n const getMetaSnapshot = useCallback(() => {\n const state = store.getState();\n const nextMeta = {\n isValid: state.isValid,\n isDirty: state.isDirty,\n isSubmitting: state.isSubmitting,\n };\n\n if (\n lastMeta.current &&\n lastMeta.current.isValid === nextMeta.isValid &&\n lastMeta.current.isDirty === nextMeta.isDirty &&\n lastMeta.current.isSubmitting === nextMeta.isSubmitting\n ) {\n return lastMeta.current;\n }\n\n lastMeta.current = nextMeta;\n return nextMeta;\n }, [store]);\n\n const subscribeMeta = useCallback(\n (cb: () => void) =>\n store.subscribeSelector(selectFormMeta, () => cb(), {\n paths: [\"isValid\", \"isDirty\", \"isSubmitting\"],\n }),\n [store],\n );\n\n const metaState = useSyncExternalStore(\n subscribeMeta,\n getMetaSnapshot,\n getMetaSnapshot,\n );\n\n const controller = useMemo(\n () =>\n createFormController(store, {\n clearSubmissionState: () => {\n setSubmitError(null);\n setLastResponse(null);\n },\n setSubmissionResult: (result) => {\n setLastResponse(result);\n },\n setSubmissionError: (error) => {\n setSubmitError(error);\n },\n }),\n [store],\n );\n\n const actions = useMemo(() => createStoreFormActions(store), [store]);\n\n const submit = useCallback(controller.submit, [controller]);\n const onSubmit = useCallback(controller.onSubmit, [controller]);\n const reset = useCallback(controller.reset, [controller]);\n\n const getValues = useCallback(controller.getValues, [controller]);\n const getErrors = useCallback(controller.getErrors, [controller]);\n const getTouched = useCallback(controller.getTouched, [controller]);\n const getDirtyValues = useCallback(controller.getDirtyValues, [controller]);\n\n const meta = useMemo(\n () => ({\n ...metaState,\n submitError,\n lastResponse,\n }),\n [metaState, submitError, lastResponse],\n );\n\n return {\n // Metadata (grouped)\n meta,\n // Getters\n getValues,\n getErrors,\n getTouched,\n getDirtyValues,\n // Main actions (frequent use - flat)\n submit,\n onSubmit,\n reset,\n ...actions,\n };\n}\n","import { useCallback, useSyncExternalStore, useRef, useMemo } from \"react\";\nimport { useBitStore } from \"./context\";\nimport {\n getDeepValue,\n BitArrayPath,\n BitPathValue,\n BitArrayItem,\n BitPath,\n} from \"../core\";\n\nexport function useBitArray<\n TForm extends object = any,\n P extends BitArrayPath<TForm> = BitArrayPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n const createId = useCallback(\n (index?: number) =>\n store.config.idFactory({\n scope: \"array\",\n path: path as string,\n index,\n }),\n [store, path],\n );\n const idsRef = useRef<string[]>([]);\n\n type Item = BitArrayItem<BitPathValue<TForm, P>>;\n\n const getSnapshot = useCallback(() => {\n const state = store.getState();\n const value = getDeepValue(state.values, path as string) as\n | BitPathValue<TForm, P>\n | undefined;\n const arrayValue = Array.isArray(value) ? (value as Item[]) : [];\n\n if (arrayValue.length !== idsRef.current.length) {\n if (arrayValue.length > idsRef.current.length) {\n const diff = arrayValue.length - idsRef.current.length;\n idsRef.current = [\n ...idsRef.current,\n ...Array(diff)\n .fill(null)\n .map((_, i) => createId(idsRef.current.length + i)),\n ];\n } else {\n idsRef.current = idsRef.current.slice(0, arrayValue.length);\n }\n }\n\n return arrayValue;\n }, [store, path, createId]);\n\n const subscribeArray = useCallback(\n (cb: () => void) => store.subscribePath(path, () => cb()),\n [store, path],\n );\n\n const data = useSyncExternalStore(subscribeArray, getSnapshot, getSnapshot);\n\n const methods = useMemo(\n () => ({\n append: (value: Item) => {\n idsRef.current = [...idsRef.current, createId(idsRef.current.length)];\n store.pushItem(path, value);\n },\n prepend: (value: Item) => {\n idsRef.current = [createId(0), ...idsRef.current];\n store.prependItem(path, value);\n },\n insert: (index: number, value: Item) => {\n const newIds = [...idsRef.current];\n newIds.splice(index, 0, createId(index));\n idsRef.current = newIds;\n store.insertItem(path, index, value);\n },\n remove: (index: number) => {\n idsRef.current = idsRef.current.filter((_, i) => i !== index);\n store.removeItem(path, index);\n },\n move: (from: number, to: number) => {\n const newIds = [...idsRef.current];\n const [item] = newIds.splice(from, 1);\n newIds.splice(to, 0, item);\n idsRef.current = newIds;\n store.moveItem(path, from, to);\n },\n swap: (indexA: number, indexB: number) => {\n const newIds = [...idsRef.current];\n [newIds[indexA], newIds[indexB]] = [newIds[indexB], newIds[indexA]];\n idsRef.current = newIds;\n store.swapItems(path, indexA, indexB);\n },\n replace: (items: Item[]) => {\n idsRef.current = items.map((_, index) => createId(index));\n store.setField(\n path as unknown as BitPath<TForm>,\n items as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n clear: () => {\n idsRef.current = [];\n store.setField(\n path as unknown as BitPath<TForm>,\n [] as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n }),\n [store, path, createId],\n );\n\n const fields = useMemo(\n () =>\n (data as Item[]).map((item: Item, index: number) => ({\n key: idsRef.current[index] || `temp-${index}`,\n value: item,\n index,\n })),\n [data],\n );\n\n return {\n fields,\n length: data.length,\n ...methods,\n };\n}\n"]}
|