@lehnihon/bit-form 2.2.19 → 2.2.26
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 +10 -13
- package/dist/angular/index.cjs +1 -1
- package/dist/angular/index.cjs.map +1 -1
- package/dist/angular/index.d.cts +7 -7
- package/dist/angular/index.d.ts +7 -7
- package/dist/angular/index.js +1 -1
- package/dist/angular/index.js.map +1 -1
- package/dist/chunk-4WPLTOBT.cjs.map +1 -1
- package/dist/chunk-725CMNAV.cjs.map +1 -1
- package/dist/chunk-7T7L2TZX.js +2 -0
- package/dist/chunk-7T7L2TZX.js.map +1 -0
- package/dist/chunk-AV7YYSFI.cjs +2 -0
- package/dist/chunk-AV7YYSFI.cjs.map +1 -0
- package/dist/chunk-BSGJ3T5S.cjs.map +1 -1
- package/dist/chunk-CATA7YEV.js +2 -0
- package/dist/chunk-CATA7YEV.js.map +1 -0
- package/dist/chunk-EYCJKAK3.js +2 -0
- package/dist/chunk-EYCJKAK3.js.map +1 -0
- package/dist/chunk-GBHOCY7E.cjs +2 -0
- package/dist/chunk-GBHOCY7E.cjs.map +1 -0
- package/dist/{chunk-EPBSLPRL.cjs → chunk-H27ROY4F.cjs} +2 -2
- package/dist/chunk-H27ROY4F.cjs.map +1 -0
- package/dist/chunk-H3RTOA6X.cjs +2 -0
- package/dist/chunk-H3RTOA6X.cjs.map +1 -0
- package/dist/chunk-H6HGYVRV.cjs +2 -0
- package/dist/chunk-H6HGYVRV.cjs.map +1 -0
- package/dist/chunk-L42NQRVD.js +2 -0
- package/dist/{chunk-3WNZPBME.js.map → chunk-L42NQRVD.js.map} +1 -1
- package/dist/chunk-L57KMBXS.js +2 -0
- package/dist/chunk-L57KMBXS.js.map +1 -0
- package/dist/chunk-MBEQLBJB.js +2 -0
- package/dist/chunk-MBEQLBJB.js.map +1 -0
- package/dist/chunk-MFSDDSVG.cjs.map +1 -1
- package/dist/chunk-OWDDAM6C.cjs +2 -0
- package/dist/chunk-OWDDAM6C.cjs.map +1 -0
- package/dist/chunk-QKGTVKBU.cjs.map +1 -1
- package/dist/chunk-RHMJPKNV.cjs.map +1 -1
- package/dist/chunk-U6UFULNS.cjs +2 -0
- package/dist/chunk-U6UFULNS.cjs.map +1 -0
- package/dist/chunk-UBVVBVLS.js +2 -0
- package/dist/chunk-UBVVBVLS.js.map +1 -0
- package/dist/chunk-W5CLDRRE.cjs.map +1 -1
- package/dist/chunk-WKLCAC74.cjs +2 -0
- package/dist/chunk-WKLCAC74.cjs.map +1 -0
- package/dist/chunk-WYYVVM2C.js +2 -0
- package/dist/chunk-WYYVVM2C.js.map +1 -0
- package/dist/chunk-X3DGA5UC.cjs +2 -0
- package/dist/chunk-X3DGA5UC.cjs.map +1 -0
- package/dist/chunk-Y7TQTZY7.js +2 -0
- package/dist/chunk-Y7TQTZY7.js.map +1 -0
- package/dist/cli/index.cjs +21 -19
- package/dist/{config-types-bTt2lcw9.d.ts → config-types-DB6FaTiZ.d.ts} +3 -3
- package/dist/{config-types-Dbyt7t3D.d.cts → config-types-mZFlp2Bi.d.cts} +3 -3
- package/dist/core/bindings.cjs +1 -1
- package/dist/core/bindings.cjs.map +1 -1
- package/dist/core/bindings.d.cts +4 -4
- package/dist/core/bindings.d.ts +4 -4
- package/dist/core/bindings.js +1 -1
- package/dist/core/status.cjs.map +1 -1
- package/dist/core/status.d.cts +3 -3
- package/dist/core/status.d.ts +3 -3
- package/dist/core/store.cjs +1 -1
- package/dist/core/store.cjs.map +1 -1
- package/dist/core/store.d.cts +5 -5
- package/dist/core/store.d.ts +5 -5
- package/dist/core/store.js +1 -1
- package/dist/core/utils.cjs +1 -1
- package/dist/core/utils.cjs.map +1 -1
- package/dist/core/utils.js +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +4 -4
- package/dist/core.d.ts +4 -4
- package/dist/core.js +1 -1
- 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/index.cjs +17 -17
- package/dist/devtools/index.cjs.map +1 -1
- package/dist/devtools/index.d.cts +2 -2
- package/dist/devtools/index.d.ts +2 -2
- package/dist/devtools/index.js +17 -17
- package/dist/devtools/index.js.map +1 -1
- package/dist/devtools/protocol.cjs.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +1 -1
- package/dist/mask.cjs +1 -1
- package/dist/mask.cjs.map +1 -1
- package/dist/mask.d.cts +1 -1
- package/dist/mask.d.ts +1 -1
- package/dist/mask.js +1 -1
- package/dist/{meta-types-BC1VLABk.d.cts → meta-types-1Xcht8hj.d.cts} +1 -1
- package/dist/{meta-types-BC1VLABk.d.ts → meta-types-1Xcht8hj.d.ts} +1 -1
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +6 -6
- package/dist/react/index.d.ts +6 -6
- 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 -5
- package/dist/react-native/index.d.ts +5 -5
- package/dist/react-native/index.js +1 -1
- package/dist/resolvers/index.cjs +1 -1
- package/dist/resolvers/index.cjs.map +1 -1
- package/dist/resolvers/index.d.cts +0 -8
- package/dist/resolvers/index.d.ts +0 -8
- package/dist/resolvers/index.js +1 -1
- package/dist/resolvers/joi.cjs +1 -1
- package/dist/resolvers/joi.cjs.map +1 -1
- package/dist/resolvers/joi.js +1 -1
- package/dist/resolvers/joi.js.map +1 -1
- package/dist/resolvers/types.cjs.map +1 -1
- package/dist/resolvers/yup.cjs +1 -1
- package/dist/resolvers/yup.cjs.map +1 -1
- package/dist/resolvers/yup.js +1 -1
- package/dist/resolvers/yup.js.map +1 -1
- package/dist/resolvers/zod.cjs +1 -1
- package/dist/resolvers/zod.cjs.map +1 -1
- package/dist/resolvers/zod.js +1 -1
- package/dist/resolvers/zod.js.map +1 -1
- package/dist/{runtime-types-D1SRZr-n.d.cts → runtime-types-BLCkMgcy.d.cts} +1 -1
- package/dist/{runtime-types-D1SRZr-n.d.ts → runtime-types-BLCkMgcy.d.ts} +1 -1
- package/dist/{store-api-types-i-zmM25p.d.ts → store-api-types-CgRVo2DA.d.ts} +4 -4
- package/dist/{store-api-types-BPD27biP.d.cts → store-api-types-D7i0KWbr.d.cts} +4 -4
- package/dist/{use-bit-persist-BGH2Bazx.d.ts → use-bit-persist-CFcuAzwp.d.ts} +5 -5
- package/dist/{use-bit-persist-DiwICsEm.d.cts → use-bit-persist-Dsr69hme.d.cts} +5 -5
- package/dist/utils.cjs +1 -1
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.js +1 -1
- package/dist/vue/index.cjs +1 -1
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.d.cts +5 -5
- package/dist/vue/index.d.ts +5 -5
- package/dist/vue/index.js +1 -1
- package/dist/vue/index.js.map +1 -1
- package/package.json +84 -11
- package/dist/chunk-23DHXQOC.js +0 -2
- package/dist/chunk-23DHXQOC.js.map +0 -1
- package/dist/chunk-27LJCW56.cjs +0 -2
- package/dist/chunk-27LJCW56.cjs.map +0 -1
- package/dist/chunk-32RH5MSM.js +0 -2
- package/dist/chunk-32RH5MSM.js.map +0 -1
- package/dist/chunk-33TGLA5D.cjs +0 -2
- package/dist/chunk-33TGLA5D.cjs.map +0 -1
- package/dist/chunk-3CPIJF3Z.cjs +0 -2
- package/dist/chunk-3CPIJF3Z.cjs.map +0 -1
- package/dist/chunk-3KI3GEU3.cjs +0 -2
- package/dist/chunk-3KI3GEU3.cjs.map +0 -1
- package/dist/chunk-3WNZPBME.js +0 -2
- package/dist/chunk-5ILGCBKG.cjs +0 -2
- package/dist/chunk-5ILGCBKG.cjs.map +0 -1
- package/dist/chunk-7IO2KLSJ.cjs +0 -2
- package/dist/chunk-7IO2KLSJ.cjs.map +0 -1
- package/dist/chunk-AJUX7LYB.js +0 -2
- package/dist/chunk-AJUX7LYB.js.map +0 -1
- package/dist/chunk-B45EMB4Q.js +0 -2
- package/dist/chunk-B45EMB4Q.js.map +0 -1
- package/dist/chunk-CIS3YZSK.cjs +0 -2
- package/dist/chunk-CIS3YZSK.cjs.map +0 -1
- package/dist/chunk-EPBSLPRL.cjs.map +0 -1
- package/dist/chunk-ICYXODTQ.js +0 -2
- package/dist/chunk-ICYXODTQ.js.map +0 -1
- package/dist/chunk-JUDBIEZK.js +0 -2
- package/dist/chunk-JUDBIEZK.js.map +0 -1
- package/dist/chunk-K2JSAJAF.cjs +0 -2
- package/dist/chunk-K2JSAJAF.cjs.map +0 -1
- package/dist/chunk-K2KCQEER.js +0 -2
- package/dist/chunk-K2KCQEER.js.map +0 -1
- package/dist/chunk-K65TKDQ2.cjs +0 -2
- package/dist/chunk-K65TKDQ2.cjs.map +0 -1
- package/dist/chunk-S5A65JVL.cjs +0 -2
- package/dist/chunk-S5A65JVL.cjs.map +0 -1
- package/dist/chunk-SFVGMVIE.js +0 -2
- package/dist/chunk-SFVGMVIE.js.map +0 -1
- package/dist/chunk-T7TOEIOH.js +0 -2
- package/dist/chunk-T7TOEIOH.js.map +0 -1
- package/dist/chunk-TLUCO2ZN.cjs +0 -2
- package/dist/chunk-TLUCO2ZN.cjs.map +0 -1
- package/dist/chunk-WEZ5Q6YO.js +0 -2
- package/dist/chunk-WEZ5Q6YO.js.map +0 -1
- package/dist/chunk-Y34N5TWV.js +0 -2
- package/dist/chunk-Y34N5TWV.js.map +0 -1
package/dist/vue/index.d.cts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { b as BitFrameworkStoreApi,
|
|
1
|
+
import { b as BitFrameworkStoreApi, f as BitStoreApi } from '../store-api-types-D7i0KWbr.cjs';
|
|
2
2
|
import '../bus-DzTqgkZ4.cjs';
|
|
3
3
|
import { b as BitErrors, h as BitTouched, D as DeepPartial, d as BitPath, e as BitPathValue, a as BitArrayPath, B as BitArrayItem } from '../state-types-8bUndWfg.cjs';
|
|
4
|
-
import { S as ScopeStatus, V as ValidateScopeResult } from '../runtime-types-
|
|
5
|
-
import {
|
|
4
|
+
import { S as ScopeStatus, V as ValidateScopeResult } from '../runtime-types-BLCkMgcy.cjs';
|
|
5
|
+
import { c as BitValidationOptions, a as BitHistoryMetadata } from '../meta-types-1Xcht8hj.cjs';
|
|
6
6
|
import { c as BitHistoryAdapterResult, d as BitPersistAdapterResult, e as BitStepsAdapterResult, f as BitUploadAdapterResult, a as BitArrayBindingField, g as BitUploadFn, b as BitDeleteUploadFn } from '../upload-C4JqIaU2.cjs';
|
|
7
7
|
import * as vue from 'vue';
|
|
8
8
|
import { ComputedRef, Ref } from 'vue';
|
|
9
9
|
import * as _vue_shared from '@vue/shared';
|
|
10
10
|
import '../types-CUXh7PqD.cjs';
|
|
11
|
-
import '../config-types-
|
|
11
|
+
import '../config-types-mZFlp2Bi.cjs';
|
|
12
12
|
|
|
13
13
|
declare function provideBitStore<T extends object>(store: BitFrameworkStoreApi<T> | BitStoreApi<T>): void;
|
|
14
14
|
declare function useBitStore<T extends object>(): BitFrameworkStoreApi<T>;
|
|
@@ -140,4 +140,4 @@ declare function useBitUpload<TMetadata extends Record<string, unknown> = Record
|
|
|
140
140
|
|
|
141
141
|
declare function useBitPersist<T extends object = any>(): UseBitPersistResult;
|
|
142
142
|
|
|
143
|
-
export { ScopeStatus, type UseBitFieldVueMeta, type UseBitFieldVueResult, type UseBitHistoryResult, type UseBitPersistResult, type UseBitStepsResult, type UseBitUploadResult, ValidateScopeResult, provideBitStore, useBitArray, useBitField, useBitForm, useBitHistory, useBitPersist, useBitScope, useBitSteps, useBitStore, useBitUpload, useBitWatch };
|
|
143
|
+
export { ScopeStatus, type UseBitFieldVueMeta, type UseBitFieldVueResult, type UseBitFormResult, type UseBitHistoryResult, type UseBitPersistResult, type UseBitStepsResult, type UseBitUploadResult, ValidateScopeResult, provideBitStore, useBitArray, useBitField, useBitForm, useBitHistory, useBitPersist, useBitScope, useBitSteps, useBitStore, useBitUpload, useBitWatch };
|
package/dist/vue/index.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { b as BitFrameworkStoreApi,
|
|
1
|
+
import { b as BitFrameworkStoreApi, f as BitStoreApi } from '../store-api-types-CgRVo2DA.js';
|
|
2
2
|
import '../bus-BFOBGmd9.js';
|
|
3
3
|
import { b as BitErrors, h as BitTouched, D as DeepPartial, d as BitPath, e as BitPathValue, a as BitArrayPath, B as BitArrayItem } from '../state-types-8bUndWfg.js';
|
|
4
|
-
import { S as ScopeStatus, V as ValidateScopeResult } from '../runtime-types-
|
|
5
|
-
import {
|
|
4
|
+
import { S as ScopeStatus, V as ValidateScopeResult } from '../runtime-types-BLCkMgcy.js';
|
|
5
|
+
import { c as BitValidationOptions, a as BitHistoryMetadata } from '../meta-types-1Xcht8hj.js';
|
|
6
6
|
import { c as BitHistoryAdapterResult, d as BitPersistAdapterResult, e as BitStepsAdapterResult, f as BitUploadAdapterResult, a as BitArrayBindingField, g as BitUploadFn, b as BitDeleteUploadFn } from '../upload-ao6skK9K.js';
|
|
7
7
|
import * as vue from 'vue';
|
|
8
8
|
import { ComputedRef, Ref } from 'vue';
|
|
9
9
|
import * as _vue_shared from '@vue/shared';
|
|
10
10
|
import '../types-CUXh7PqD.js';
|
|
11
|
-
import '../config-types-
|
|
11
|
+
import '../config-types-DB6FaTiZ.js';
|
|
12
12
|
|
|
13
13
|
declare function provideBitStore<T extends object>(store: BitFrameworkStoreApi<T> | BitStoreApi<T>): void;
|
|
14
14
|
declare function useBitStore<T extends object>(): BitFrameworkStoreApi<T>;
|
|
@@ -140,4 +140,4 @@ declare function useBitUpload<TMetadata extends Record<string, unknown> = Record
|
|
|
140
140
|
|
|
141
141
|
declare function useBitPersist<T extends object = any>(): UseBitPersistResult;
|
|
142
142
|
|
|
143
|
-
export { ScopeStatus, type UseBitFieldVueMeta, type UseBitFieldVueResult, type UseBitHistoryResult, type UseBitPersistResult, type UseBitStepsResult, type UseBitUploadResult, ValidateScopeResult, provideBitStore, useBitArray, useBitField, useBitForm, useBitHistory, useBitPersist, useBitScope, useBitSteps, useBitStore, useBitUpload, useBitWatch };
|
|
143
|
+
export { ScopeStatus, type UseBitFieldVueMeta, type UseBitFieldVueResult, type UseBitFormResult, type UseBitHistoryResult, type UseBitPersistResult, type UseBitStepsResult, type UseBitUploadResult, ValidateScopeResult, provideBitStore, useBitArray, useBitField, useBitForm, useBitHistory, useBitPersist, useBitScope, useBitSteps, useBitStore, useBitUpload, useBitWatch };
|
package/dist/vue/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as
|
|
1
|
+
import{a as $,b as J}from"../chunk-CATA7YEV.js";import"../chunk-5NA2TFPG.js";import{d as K}from"../chunk-7T7L2TZX.js";import{c as C,f as q,g as O,h as W,i as _,j as z,k as L}from"../chunk-L42NQRVD.js";import{a as G}from"../chunk-W2E5UIXT.js";import{b as w,f as j,g as H}from"../chunk-UIKO6GGW.js";import{a as Y}from"../chunk-L57KMBXS.js";import"../chunk-Y7TQTZY7.js";import{c as M,f as A}from"../chunk-UBVVBVLS.js";import"../chunk-MBEQLBJB.js";import"../chunk-DGEGYNQL.js";import{inject as te,onUnmounted as re,provide as oe}from"vue";var Q=Symbol("BIT_STORE");function se(r){let e=K(r);oe(Q,e),re(()=>{e.feature?.cleanup?.()})}function i(){let r=te(Q);if(!r)throw new Error("BitForm Vue hooks devem ser usados sob um provideBitStore");return r}import{computed as E,onUnmounted as ae,shallowRef as ie,ref as X,reactive as ne}from"vue";function ue(){let r=i(),e=ie({isValid:!0,isDirty:!1,isSubmitting:!1}),t=X(null),o=X(null),s=C(r,B=>{e.value=B});ae(s);let{controller:a,actions:n}=_(r,{clearSubmissionState:()=>{t.value=null,o.value=null},setSubmissionResult:B=>{o.value=B},setSubmissionError:B=>{t.value=B}}),p=E(()=>e.value.isValid),u=E(()=>e.value.isSubmitting),v=E(()=>e.value.isDirty),S=a.onSubmit,l=a.reset;return{meta:ne({isValid:p,isDirty:v,isSubmitting:u,submitError:t,lastResponse:o}),getValues:a.getValues,getErrors:a.getErrors,getTouched:a.getTouched,getDirtyValues:a.getDirtyValues,submit:a.submit,onSubmit:S,reset:l,...n}}import{computed as m,onUnmounted as le,shallowRef as ce,reactive as pe}from"vue";function k(r){let e=i(),{fieldController:t}=W(e,r),o=ce(e.read.getFieldState(r)),s=e.observe.subscribeFieldState(r,d=>{o.value=d});le(()=>{s(),z(e,r)});let a=m(()=>o.value.value),n=m(()=>t.displayValue(a.value)),p=m({get:()=>n.value,set:d=>{t.setValue(d)}}),u=m(()=>Y(o.value)),v=m(()=>u.value.error),S=m(()=>u.value.touched),l=m(()=>u.value.invalid),y=m(()=>u.value.isValidating),B=m(()=>u.value.isDirty),V=m(()=>u.value.isHidden),R=m(()=>u.value.isRequired),x=m(()=>u.value.hasError),F=d=>{t.setValue(d)},h=()=>t.setBlur();return{value:a,displayValue:n,modelValue:p,setValue:F,setBlur:h,onInput:d=>{F(d)},onBlur:()=>{h()},meta:pe({error:v,touched:S,invalid:l,isValidating:y,isDirty:B,isHidden:V,isRequired:R,hasError:x})}}import{computed as Z,onUnmounted as de,shallowRef as me}from"vue";function ve(r){let e=i(),t=O(e,r),o=me(t.readItems()),s=e.observe.subscribePath(r,()=>{o.value=t.readItems()});de(()=>{s(),L(e,`${r}.`)});let a=Z(()=>t.getFields(o.value)),n=Z(()=>o.value.length);return{fields:a,length:n,append:t.append,prepend:t.prepend,insert:t.insert,remove:t.remove,move:t.move,swap:t.swap,replace:t.replace,clear:t.clear}}import{computed as U,onUnmounted as fe,shallowRef as Se}from"vue";function Be(){let r=i(),e=Se(j(r)),t=H(r,a=>{e.value=a});fe(t);let o=()=>{e.value.canUndo&&r.feature.undo()},s=()=>{e.value.canRedo&&r.feature.redo()};return{canUndo:U(()=>e.value.canUndo),canRedo:U(()=>e.value.canRedo),historyIndex:U(()=>e.value.historyIndex),historySize:U(()=>e.value.historySize),undo:o,redo:s}}import{computed as D,onUnmounted as ge,ref as be}from"vue";function ye(r){let e=i(),t=be(e.read.getScopeStatus(r)),o=G(e,r,v=>{t.value=v});ge(()=>{o()});let s=async()=>{let v=await e.feature.validate({scope:r}),S=e.read.getScopeErrors(r);return{valid:v,errors:S}},a=()=>e.read.getScopeErrors(r),n=D(()=>!t.value.hasErrors),p=D(()=>t.value.isDirty),u=D(()=>t.value.errors);return{scopeName:r,status:t,errors:u,validate:s,getErrors:a,isValid:n,isDirty:p}}import{computed as b,onUnmounted as Fe,ref as N}from"vue";function he(r){if(r.length===0)throw new Error("useBitSteps: scopeNames must not be empty");let e=i(),t=N(0),o=b(()=>r[t.value]??""),s=N(e.read.getScopeStatus(o.value)),a=o.value,n=e.observe.subscribeScopeStatus(a,c=>{o.value===a&&(w(s.value,c)||(s.value=c))}),p=()=>{let c=o.value,f=e.observe.subscribeScopeStatus(c,g=>{o.value===c&&(w(s.value,g)||(s.value=g))}),d=n;n=f,a=c,d()};Fe(()=>{n()});let u=async()=>{let c=o.value,f=t.value,d=await e.feature.validate({scope:c});if(t.value!==f){let P=o.value;return{valid:await e.feature.validate({scope:P}),errors:e.read.getScopeErrors(P)}}let g=e.read.getScopeErrors(c);return{valid:d,errors:g}},v=()=>e.read.getScopeErrors(o.value),S=async()=>{let c=t.value,f=r[c]??"";if(!f)return!1;let d=e.read.getScopeFields(f);if(e.feature.hasValidationsInProgress(d))return!1;let g=await e.feature.validate({scope:f});if(c!==t.value)return!1;if(g)t.value=Math.min(t.value+1,r.length-1),s.value=e.read.getScopeStatus(o.value),p();else{let P=e.read.getScopeErrors(f),T=Object.keys(P);T.length>0&&e.write.markFieldsTouched(T),s.value=e.read.getScopeStatus(f)}return g},l=()=>{t.value=Math.max(t.value-1,0),s.value=e.read.getScopeStatus(o.value),p()},y=c=>{t.value=Math.max(0,Math.min(c-1,r.length-1)),s.value=e.read.getScopeStatus(o.value),p()},B=b(()=>t.value+1),V=b(()=>t.value===0),R=b(()=>t.value>=r.length-1),x=b(()=>!s.value.hasErrors),F=b(()=>s.value.isDirty),h=b(()=>s.value.errors);return{step:B,stepIndex:t,scope:o,next:S,prev:l,goTo:y,isFirst:V,isLast:R,status:s,errors:h,isValid:x,isDirty:F,validate:u,getErrors:v}}import{ref as Pe,onUnmounted as Ue,readonly as Ve}from"vue";function Re(r){let e=i(),t=A(e.read.getState().values,r),o=Pe(t),s=e.observe.subscribePath(r,a=>{M(o.value,a)||(o.value=a)});return Ue(s),Ve(o)}import{computed as ee,onUnmounted as xe,ref as Te}from"vue";function we(r,e,t){let o=i(),s=k(r),a=null,n=Te(!1),p={current:0},u={setLoading:l=>{n.value=l},setError:(l,y)=>o.write.setError(l,y),setValue:l=>s.setValue(l),getUploadKey:()=>a,setUploadKey:l=>{a=l},onCallbackError:l=>o.read.config.onUnhandledError(l,"upload")},v=$(r,e,u,p),S=J(r,t,u,p);return xe(()=>{p.current++,a=null}),{value:s.value,setValue:s.setValue,error:ee(()=>s.meta.error),isValidating:ee(()=>!!s.meta.isValidating||n.value),upload:v,remove:S}}import{computed as I,onUnmounted as Ee,ref as ke,reactive as De}from"vue";function Ie(){let r=i(),e=ke(r.read.getPersistMetadata()),t=q(r,n=>{e.value=n});return Ee(()=>t()),{restore:async()=>r.feature.restorePersisted(),save:async()=>{await r.feature.forceSave()},clear:async()=>{await r.feature.clearPersisted()},meta:De({isSaving:I(()=>e.value.isSaving),isRestoring:I(()=>e.value.isRestoring),error:I(()=>e.value.error)})}}export{se as provideBitStore,ve as useBitArray,k as useBitField,ue as useBitForm,Be as useBitHistory,Ie as useBitPersist,ye as useBitScope,he as useBitSteps,i as useBitStore,we as useBitUpload,Re 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 { 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, reactive } 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 = reactive({\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, reactive } 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: reactive({\n error,\n touched,\n invalid,\n isValidating,\n isDirty,\n isHidden,\n isRequired,\n hasError,\n }),\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\nimport {\n BitArrayPath,\n cleanupRegisteredPrefix,\n createArrayBinding,\n} from \"../core\";\nimport { useBitStore } from \"./context\";\n\nexport function useBitArray<\n TForm extends object = any,\n P extends BitArrayPath<TForm> = BitArrayPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n const controller = createArrayBinding<TForm, P>(store, path);\n const values = shallowRef(controller.readItems());\n\n const unsubscribe = store.observe.subscribePath(path, () => {\n values.value = controller.readItems();\n });\n\n onUnmounted(() => {\n unsubscribe();\n cleanupRegisteredPrefix(store, `${path as string}.`);\n });\n\n const fields = computed(() => controller.getFields(values.value));\n\n const length = computed(() => values.value.length);\n\n return {\n fields,\n length,\n append: controller.append,\n prepend: controller.prepend,\n insert: controller.insert,\n remove: controller.remove,\n move: controller.move,\n swap: controller.swap,\n replace: controller.replace,\n clear: controller.clear,\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\nimport { observeHistoryMetaSnapshot, readHistoryMetaSnapshot } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitHistoryResult } from \"./types\";\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n\n const meta = shallowRef(readHistoryMetaSnapshot(store));\n\n const unsubscribe = observeHistoryMetaSnapshot(store, (nextMeta) => {\n meta.value = nextMeta;\n });\n\n onUnmounted(unsubscribe);\n\n const undo = () => store.feature.undo();\n const redo = () => store.feature.redo();\n\n return {\n canUndo: computed(() => meta.value.canUndo),\n canRedo: computed(() => meta.value.canRedo),\n historyIndex: computed(() => meta.value.historyIndex),\n historySize: computed(() => meta.value.historySize),\n undo,\n redo,\n };\n}\n","import { computed, onMounted, onUnmounted, ref } from \"vue\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { observeScopeStatusSnapshot } from \"../core\";\nimport { useBitStore } from \"./context\";\n\nexport type { ScopeStatus, ValidateScopeResult };\n\nexport function useBitScope(scopeName: string) {\n const store = useBitStore();\n const status = ref<ScopeStatus>(store.read.getScopeStatus(scopeName));\n let unsubscribe: () => void;\n\n onMounted(() => {\n unsubscribe = observeScopeStatusSnapshot(store, scopeName, (nextStatus) => {\n status.value = nextStatus;\n });\n });\n\n onUnmounted(() => {\n unsubscribe?.();\n });\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const valid = await store.feature.validate({ scope: scopeName });\n const errors = store.read.getScopeErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.read.getScopeErrors(scopeName);\n\n const isValid = computed(() => !status.value.hasErrors);\n const isDirty = computed(() => status.value.isDirty);\n const errors = computed(() => status.value.errors);\n\n return {\n scopeName,\n status,\n errors,\n validate,\n getErrors,\n isValid,\n isDirty,\n };\n}\n","import { computed, onUnmounted, ref } 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\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 let unsubscribe = store.observe.subscribeScopeStatus(scope.value, updateStatus);\n\n const rebindScopeSubscription = () => {\n unsubscribe();\n unsubscribe = store.observe.subscribeScopeStatus(scope.value, updateStatus);\n };\n\n onUnmounted(() => {\n unsubscribe();\n });\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const scopeName = scope.value;\n const valid = await store.feature.validate({ scope: scopeName });\n const errors = store.read.getScopeErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.read.getScopeErrors(scope.value);\n\n const next = async (): Promise<boolean> => {\n const scopeName = scope.value;\n\n const scopeFields = store.read.getScopeFields(scopeName);\n if (store.feature.hasValidationsInProgress(scopeFields)) {\n return false;\n }\n\n const valid = await store.feature.validate({ scope: scopeName });\n if (valid) {\n stepIndex.value = Math.min(stepIndex.value + 1, scopeNames.length - 1);\n status.value = store.read.getScopeStatus(scope.value);\n rebindScopeSubscription();\n } else {\n const errors = store.read.getScopeErrors(scopeName);\n const pathsWithErrors = Object.keys(errors);\n if (pathsWithErrors.length > 0) {\n store.write.markFieldsTouched(pathsWithErrors);\n }\n }\n return valid;\n };\n\n const prev = () => {\n stepIndex.value = Math.max(stepIndex.value - 1, 0);\n status.value = store.read.getScopeStatus(scope.value);\n rebindScopeSubscription();\n };\n\n const goTo = (targetStep: number) => {\n stepIndex.value = Math.max(\n 0,\n Math.min(targetStep - 1, scopeNames.length - 1),\n );\n status.value = store.read.getScopeStatus(scope.value);\n rebindScopeSubscription();\n };\n\n const step = computed(() => stepIndex.value + 1);\n const isFirst = computed(() => stepIndex.value === 0);\n const isLast = computed(() => stepIndex.value >= scopeNames.length - 1);\n const isValid = computed(() => !status.value.hasErrors);\n const isDirty = computed(() => status.value.isDirty);\n const errors = computed(() => status.value.errors);\n\n return {\n step,\n stepIndex,\n scope,\n next,\n prev,\n goTo,\n isFirst,\n isLast,\n status,\n errors,\n isValid,\n isDirty,\n validate,\n getErrors,\n };\n}\n","import { ref, onUnmounted, readonly } from \"vue\";\nimport { useBitStore } from \"./context\";\nimport { getDeepValue, valueEqual, BitPath, BitPathValue } from \"../core\";\n\nexport function useBitWatch<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n const initialValue = getDeepValue(\n store.read.getState().values,\n path as string,\n ) as BitPathValue<TForm, P>;\n const value = ref<BitPathValue<TForm, P>>(initialValue);\n\n const unsubscribe = store.observe.subscribePath(path, (newValue) => {\n if (!valueEqual(value.value, newValue)) {\n value.value = newValue as BitPathValue<TForm, P>;\n }\n });\n\n onUnmounted(unsubscribe);\n\n return readonly(value);\n}\n","/**\n * Vue Composition API for File Upload\n *\n * Minimal upload API integrated with global field validation lifecycle.\n */\n\nimport { computed, ComputedRef, ref } from \"vue\";\nimport type { BitDeleteUploadFn, BitUploadFn } from \"../core\";\nimport { createRemoveHandler, createUploadHandler } from \"../core/adapters\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitUploadResult } from \"./types\";\nimport { useBitField } from \"./use-bit-field\";\n\nexport function useBitUpload<\n TMetadata extends Record<string, unknown> = Record<string, unknown>,\n>(\n fieldPath: string,\n uploadFn: BitUploadFn<TMetadata>,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n let uploadKey: string | null = null;\n const isUploading = ref(false);\n\n const kernelCallbacks = {\n setLoading: (val: boolean) => {\n isUploading.value = val;\n },\n setError: (path: string, msg: string | undefined) =>\n store.write.setError(path, msg),\n setValue: (val: string | null) => field.setValue(val),\n getUploadKey: () => uploadKey,\n setUploadKey: (key: string | null) => {\n uploadKey = key;\n },\n onCallbackError: (e: unknown) =>\n store.read.config.onUnhandledError(e, \"upload\"),\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),\n isValidating: computed(\n () => !!field.meta.isValidating || isUploading.value,\n ),\n upload,\n remove,\n };\n}\n","import { computed, onUnmounted, ref, reactive } 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: reactive({\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","reactive","useBitForm","store","useBitStore","state","shallowRef","submitError","ref","lastResponse","unsubscribe","observeFormMetaSnapshot","nextMeta","onUnmounted","controller","actions","createFrameworkFormBinding","result","error","isValid","computed","isSubmitting","isDirty","onSubmit","reset","reactive","computed","onUnmounted","shallowRef","reactive","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","reactive","computed","onUnmounted","shallowRef","useBitArray","path","store","useBitStore","controller","createArrayBinding","values","shallowRef","unsubscribe","onUnmounted","cleanupRegisteredPrefix","fields","computed","length","computed","onUnmounted","shallowRef","useBitHistory","store","useBitStore","meta","shallowRef","readHistoryMetaSnapshot","unsubscribe","observeHistoryMetaSnapshot","nextMeta","onUnmounted","undo","redo","computed","computed","onMounted","onUnmounted","ref","useBitScope","scopeName","store","useBitStore","status","ref","unsubscribe","onMounted","observeScopeStatusSnapshot","nextStatus","onUnmounted","validate","valid","errors","getErrors","isValid","computed","isDirty","computed","onUnmounted","ref","useBitSteps","scopeNames","store","useBitStore","stepIndex","ref","scope","computed","status","updateStatus","scopeName","newStatus","isScopeStatusEqual","unsubscribe","rebindScopeSubscription","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","e","upload","createUploadHandler","remove","createRemoveHandler","computed","computed","onUnmounted","ref","reactive","useBitPersist","store","useBitStore","meta","ref","unsubscribe","observePersistMetaSnapshot","nextMeta","onUnmounted","reactive","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, onUnmounted, provide, InjectionKey } from \"vue\";\nimport type { BitFrameworkStoreApi, BitStoreApi } from \"../core\";\nimport { createFrameworkStoreAdapter } from \"../core\";\n\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 const adapted = createFrameworkStoreAdapter<T>(store);\n provide(BIT_STORE_KEY, adapted);\n\n onUnmounted(() => {\n adapted.feature?.cleanup?.();\n });\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, reactive } 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 = reactive({\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, reactive } 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 | number | null | undefined) => {\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 value: rawValue,\n displayValue,\n modelValue,\n setValue,\n setBlur,\n onInput,\n onBlur,\n meta: reactive({\n error,\n touched,\n invalid,\n isValidating,\n isDirty,\n isHidden,\n isRequired,\n hasError,\n }),\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\nimport {\n BitArrayPath,\n cleanupRegisteredPrefix,\n createArrayBinding,\n} from \"../core\";\nimport { useBitStore } from \"./context\";\n\nexport function useBitArray<\n TForm extends object = any,\n P extends BitArrayPath<TForm> = BitArrayPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n const controller = createArrayBinding<TForm, P>(store, path);\n const values = shallowRef(controller.readItems());\n\n const unsubscribe = store.observe.subscribePath(path, () => {\n values.value = controller.readItems();\n });\n\n onUnmounted(() => {\n unsubscribe();\n cleanupRegisteredPrefix(store, `${path as string}.`);\n });\n\n const fields = computed(() => controller.getFields(values.value));\n\n const length = computed(() => values.value.length);\n\n return {\n fields,\n length,\n append: controller.append,\n prepend: controller.prepend,\n insert: controller.insert,\n remove: controller.remove,\n move: controller.move,\n swap: controller.swap,\n replace: controller.replace,\n clear: controller.clear,\n };\n}\n","import { computed, onUnmounted, shallowRef } from \"vue\";\nimport { observeHistoryMetaSnapshot, readHistoryMetaSnapshot } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitHistoryResult } from \"./types\";\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n\n const meta = shallowRef(readHistoryMetaSnapshot(store));\n\n const unsubscribe = observeHistoryMetaSnapshot(store, (nextMeta) => {\n meta.value = nextMeta;\n });\n\n onUnmounted(unsubscribe);\n\n const undo = () => {\n if (meta.value.canUndo) store.feature.undo();\n };\n const redo = () => {\n if (meta.value.canRedo) store.feature.redo();\n };\n\n return {\n canUndo: computed(() => meta.value.canUndo),\n canRedo: computed(() => meta.value.canRedo),\n historyIndex: computed(() => meta.value.historyIndex),\n historySize: computed(() => meta.value.historySize),\n undo,\n redo,\n };\n}\n","import { computed, onUnmounted, ref } from \"vue\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { observeScopeStatusSnapshot } from \"../core\";\nimport { useBitStore } from \"./context\";\n\nexport type { ScopeStatus, ValidateScopeResult };\n\nexport function useBitScope(scopeName: string) {\n const store = useBitStore();\n const status = ref<ScopeStatus>(store.read.getScopeStatus(scopeName));\n\n const unsubscribe = observeScopeStatusSnapshot(store, scopeName, (nextStatus) => {\n status.value = nextStatus;\n });\n\n onUnmounted(() => {\n unsubscribe();\n });\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const valid = await store.feature.validate({ scope: scopeName });\n const errors = store.read.getScopeErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.read.getScopeErrors(scopeName);\n\n const isValid = computed(() => !status.value.hasErrors);\n const isDirty = computed(() => status.value.isDirty);\n const errors = computed(() => status.value.errors);\n\n return {\n scopeName,\n status,\n errors,\n validate,\n getErrors,\n isValid,\n isDirty,\n };\n}\n","import { computed, onUnmounted, ref } 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 if (scopeNames.length === 0) {\n throw new Error(\"useBitSteps: scopeNames must not be empty\");\n }\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\n let currentSubscribedScope = scope.value;\n let unsubscribe = store.observe.subscribeScopeStatus(\n currentSubscribedScope,\n (nextStatus: ScopeStatus) => {\n if (scope.value !== currentSubscribedScope) return;\n if (!isScopeStatusEqual(status.value, nextStatus)) {\n status.value = nextStatus;\n }\n },\n );\n\n const rebindScopeSubscription = () => {\n const newScope = scope.value;\n const newUnsub = store.observe.subscribeScopeStatus(\n newScope,\n (nextStatus: ScopeStatus) => {\n if (scope.value !== newScope) return;\n if (!isScopeStatusEqual(status.value, nextStatus)) {\n status.value = nextStatus;\n }\n },\n );\n const oldUnsub = unsubscribe;\n unsubscribe = newUnsub;\n currentSubscribedScope = newScope;\n oldUnsub();\n };\n\n onUnmounted(() => {\n unsubscribe();\n });\n\n const validate = async (): Promise<ValidateScopeResult> => {\n const scopeName = scope.value;\n const startIndex = stepIndex.value;\n const valid = await store.feature.validate({ scope: scopeName });\n if (stepIndex.value !== startIndex) {\n const current = scope.value;\n const reValid = await store.feature.validate({ scope: current });\n return { valid: reValid, errors: store.read.getScopeErrors(current) };\n }\n const errors = store.read.getScopeErrors(scopeName);\n return { valid, errors };\n };\n\n const getErrors = () => store.read.getScopeErrors(scope.value);\n\n const next = async (): Promise<boolean> => {\n const capturedStepIndex = stepIndex.value;\n const scopeName = scopeNames[capturedStepIndex] ?? \"\";\n\n if (!scopeName) return false;\n\n const scopeFields = store.read.getScopeFields(scopeName);\n if (store.feature.hasValidationsInProgress(scopeFields)) {\n return false;\n }\n\n const valid = await store.feature.validate({ scope: scopeName });\n\n if (capturedStepIndex !== stepIndex.value) return false;\n\n if (valid) {\n stepIndex.value = Math.min(stepIndex.value + 1, scopeNames.length - 1);\n status.value = store.read.getScopeStatus(scope.value);\n rebindScopeSubscription();\n } else {\n const errors = store.read.getScopeErrors(scopeName);\n const pathsWithErrors = Object.keys(errors);\n if (pathsWithErrors.length > 0) {\n store.write.markFieldsTouched(pathsWithErrors);\n }\n status.value = store.read.getScopeStatus(scopeName);\n }\n return valid;\n };\n\n const prev = () => {\n stepIndex.value = Math.max(stepIndex.value - 1, 0);\n status.value = store.read.getScopeStatus(scope.value);\n rebindScopeSubscription();\n };\n\n const goTo = (targetStep: number) => {\n stepIndex.value = Math.max(\n 0,\n Math.min(targetStep - 1, scopeNames.length - 1),\n );\n status.value = store.read.getScopeStatus(scope.value);\n rebindScopeSubscription();\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, onUnmounted, ref } from \"vue\";\nimport type { BitDeleteUploadFn, BitUploadFn } from \"../core\";\nimport { createRemoveHandler, createUploadHandler } from \"../core/adapters\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitUploadResult } from \"./types\";\nimport { useBitField } from \"./use-bit-field\";\n\nexport function useBitUpload<\n TMetadata extends Record<string, unknown> = Record<string, unknown>,\n>(\n fieldPath: string,\n uploadFn: BitUploadFn<TMetadata>,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n let uploadKey: string | null = null;\n const isUploading = ref(false);\n const sharedGen = { current: 0 };\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 onCallbackError: (e: unknown) =>\n store.read.config.onUnhandledError(e, \"upload\"),\n };\n\n const upload = createUploadHandler(fieldPath, uploadFn, kernelCallbacks, sharedGen);\n const remove = createRemoveHandler(fieldPath, deleteFile, kernelCallbacks, sharedGen);\n\n onUnmounted(() => {\n sharedGen.current++;\n uploadKey = null;\n });\n\n return {\n value: field.value as ComputedRef<string | File | null>,\n setValue: field.setValue,\n error: computed(() => field.meta.error),\n isValidating: computed(\n () => !!field.meta.isValidating || isUploading.value,\n ),\n upload,\n remove,\n };\n}\n","import { computed, onUnmounted, ref, reactive } 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: reactive({\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","onUnmounted","provide","BIT_STORE_KEY","provideBitStore","store","adapted","createFrameworkStoreAdapter","provide","onUnmounted","useBitStore","inject","computed","onUnmounted","shallowRef","ref","reactive","useBitForm","store","useBitStore","state","shallowRef","submitError","ref","lastResponse","unsubscribe","observeFormMetaSnapshot","nextMeta","onUnmounted","controller","actions","createFrameworkFormBinding","result","error","isValid","computed","isSubmitting","isDirty","onSubmit","reset","reactive","computed","onUnmounted","shallowRef","reactive","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","reactive","computed","onUnmounted","shallowRef","useBitArray","path","store","useBitStore","controller","createArrayBinding","values","shallowRef","unsubscribe","onUnmounted","cleanupRegisteredPrefix","fields","computed","length","computed","onUnmounted","shallowRef","useBitHistory","store","useBitStore","meta","shallowRef","readHistoryMetaSnapshot","unsubscribe","observeHistoryMetaSnapshot","nextMeta","onUnmounted","undo","redo","computed","computed","onUnmounted","ref","useBitScope","scopeName","store","useBitStore","status","ref","unsubscribe","observeScopeStatusSnapshot","nextStatus","onUnmounted","validate","valid","errors","getErrors","isValid","computed","isDirty","computed","onUnmounted","ref","useBitSteps","scopeNames","store","useBitStore","stepIndex","ref","scope","computed","status","currentSubscribedScope","unsubscribe","nextStatus","isScopeStatusEqual","rebindScopeSubscription","newScope","newUnsub","oldUnsub","onUnmounted","validate","scopeName","startIndex","valid","current","errors","getErrors","next","capturedStepIndex","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","onUnmounted","ref","useBitUpload","fieldPath","uploadFn","deleteFile","store","useBitStore","field","useBitField","uploadKey","isUploading","ref","sharedGen","kernelCallbacks","val","path","msg","key","e","upload","createUploadHandler","remove","createRemoveHandler","onUnmounted","computed","computed","onUnmounted","ref","reactive","useBitPersist","store","useBitStore","meta","ref","unsubscribe","observePersistMetaSnapshot","nextMeta","onUnmounted","reactive","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.26",
|
|
4
4
|
"description": "Gerenciamento de estado de formulários agnóstico e performático",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
"license": "MIT",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
11
|
-
"url": "https://
|
|
11
|
+
"url": "https://gitlab.com/kenji.ccp-group/bit-form.git"
|
|
12
12
|
},
|
|
13
|
-
"homepage": "https://
|
|
13
|
+
"homepage": "https://gitlab.com/kenji.ccp-group/bit-form#readme",
|
|
14
14
|
"bugs": {
|
|
15
|
-
"url": "https://
|
|
15
|
+
"url": "https://gitlab.com/kenji.ccp-group/bit-form/-/issues"
|
|
16
16
|
},
|
|
17
17
|
"keywords": [
|
|
18
18
|
"form",
|
|
@@ -95,16 +95,31 @@
|
|
|
95
95
|
"import": "./dist/mask.js",
|
|
96
96
|
"require": "./dist/mask.cjs"
|
|
97
97
|
},
|
|
98
|
-
"./resolvers/*": {
|
|
99
|
-
"types": "./dist/resolvers/*.d.ts",
|
|
100
|
-
"import": "./dist/resolvers/*.js",
|
|
101
|
-
"require": "./dist/resolvers/*.cjs"
|
|
102
|
-
},
|
|
103
98
|
"./resolvers": {
|
|
104
99
|
"types": "./dist/resolvers/index.d.ts",
|
|
105
100
|
"import": "./dist/resolvers/index.js",
|
|
106
101
|
"require": "./dist/resolvers/index.cjs"
|
|
107
102
|
},
|
|
103
|
+
"./resolvers/zod": {
|
|
104
|
+
"types": "./dist/resolvers/zod.d.ts",
|
|
105
|
+
"import": "./dist/resolvers/zod.js",
|
|
106
|
+
"require": "./dist/resolvers/zod.cjs"
|
|
107
|
+
},
|
|
108
|
+
"./resolvers/yup": {
|
|
109
|
+
"types": "./dist/resolvers/yup.d.ts",
|
|
110
|
+
"import": "./dist/resolvers/yup.js",
|
|
111
|
+
"require": "./dist/resolvers/yup.cjs"
|
|
112
|
+
},
|
|
113
|
+
"./resolvers/joi": {
|
|
114
|
+
"types": "./dist/resolvers/joi.d.ts",
|
|
115
|
+
"import": "./dist/resolvers/joi.js",
|
|
116
|
+
"require": "./dist/resolvers/joi.cjs"
|
|
117
|
+
},
|
|
118
|
+
"./resolvers/types": {
|
|
119
|
+
"types": "./dist/resolvers/types.d.ts",
|
|
120
|
+
"import": "./dist/resolvers/types.js",
|
|
121
|
+
"require": "./dist/resolvers/types.cjs"
|
|
122
|
+
},
|
|
108
123
|
"./devtools": {
|
|
109
124
|
"types": "./dist/devtools/index.d.ts",
|
|
110
125
|
"import": "./dist/devtools/index.js",
|
|
@@ -121,6 +136,64 @@
|
|
|
121
136
|
"require": "./dist/devtools/protocol.cjs"
|
|
122
137
|
}
|
|
123
138
|
},
|
|
139
|
+
"typesVersions": {
|
|
140
|
+
"*": {
|
|
141
|
+
"core": [
|
|
142
|
+
"./dist/core.d.ts"
|
|
143
|
+
],
|
|
144
|
+
"core/store": [
|
|
145
|
+
"./dist/core/store.d.ts"
|
|
146
|
+
],
|
|
147
|
+
"core/bindings": [
|
|
148
|
+
"./dist/core/bindings.d.ts"
|
|
149
|
+
],
|
|
150
|
+
"core/status": [
|
|
151
|
+
"./dist/core/status.d.ts"
|
|
152
|
+
],
|
|
153
|
+
"core/utils": [
|
|
154
|
+
"./dist/core/utils.d.ts"
|
|
155
|
+
],
|
|
156
|
+
"utils": [
|
|
157
|
+
"./dist/utils.d.ts"
|
|
158
|
+
],
|
|
159
|
+
"react": [
|
|
160
|
+
"./dist/react/index.d.ts"
|
|
161
|
+
],
|
|
162
|
+
"react-native": [
|
|
163
|
+
"./dist/react-native/index.d.ts"
|
|
164
|
+
],
|
|
165
|
+
"vue": [
|
|
166
|
+
"./dist/vue/index.d.ts"
|
|
167
|
+
],
|
|
168
|
+
"angular": [
|
|
169
|
+
"./dist/angular/index.d.ts"
|
|
170
|
+
],
|
|
171
|
+
"mask": [
|
|
172
|
+
"./dist/mask.d.ts"
|
|
173
|
+
],
|
|
174
|
+
"resolvers": [
|
|
175
|
+
"./dist/resolvers/index.d.ts"
|
|
176
|
+
],
|
|
177
|
+
"resolvers/zod": [
|
|
178
|
+
"./dist/resolvers/zod.d.ts"
|
|
179
|
+
],
|
|
180
|
+
"resolvers/yup": [
|
|
181
|
+
"./dist/resolvers/yup.d.ts"
|
|
182
|
+
],
|
|
183
|
+
"resolvers/joi": [
|
|
184
|
+
"./dist/resolvers/joi.d.ts"
|
|
185
|
+
],
|
|
186
|
+
"devtools": [
|
|
187
|
+
"./dist/devtools/index.d.ts"
|
|
188
|
+
],
|
|
189
|
+
"devtools/bridge": [
|
|
190
|
+
"./dist/devtools/bridge.d.ts"
|
|
191
|
+
],
|
|
192
|
+
"devtools/protocol": [
|
|
193
|
+
"./dist/devtools/protocol.d.ts"
|
|
194
|
+
]
|
|
195
|
+
}
|
|
196
|
+
},
|
|
124
197
|
"files": [
|
|
125
198
|
"dist",
|
|
126
199
|
"README.md",
|
|
@@ -142,11 +215,11 @@
|
|
|
142
215
|
"test:bench:memory": "vitest run -c quality/vitest.quality.config.ts quality/bench/memory.bench.ts",
|
|
143
216
|
"test:bench:compare": "vitest run -c quality/vitest.quality.config.ts quality/bench/rhf-compare.test.ts --maxWorkers=1 --minWorkers=1",
|
|
144
217
|
"test:bench:all": "npm run test:bench && npm run test:bench:memory && npm run test:bench:compare",
|
|
145
|
-
"test:quality:critical": "npm run test:
|
|
218
|
+
"test:quality:critical": "npm run test:release-gates",
|
|
146
219
|
"test:compat": "node quality/compat/run-compat.mjs",
|
|
147
220
|
"test:observability": "vitest run -c quality/vitest.quality.config.ts quality/release-gates/observability.test.ts",
|
|
148
221
|
"test:bundle-size": "vitest run -c quality/vitest.quality.config.ts quality/release-gates/bundle-size.test.ts",
|
|
149
|
-
"test:release-gates": "npm run build && npm run test:
|
|
222
|
+
"test:release-gates": "npm run build && 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",
|
|
150
223
|
"clean": "rm -rf dist && rm -f *.tsbuildinfo",
|
|
151
224
|
"lint": "npm run lint:eslint && npm run lint:types",
|
|
152
225
|
"lint:eslint": "eslint \"src/**/*.{ts,tsx}\"",
|
package/dist/chunk-23DHXQOC.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{d as C}from"./chunk-B45EMB4Q.js";import{a as D,b as j,d as U,e as I,g as q,i as L,j as W,k as O}from"./chunk-3WNZPBME.js";import{b as x}from"./chunk-UIKO6GGW.js";import{a as A}from"./chunk-AJUX7LYB.js";import{c as R,f as k}from"./chunk-T7TOEIOH.js";import{createContext as J,useContext as K,useMemo as Q}from"react";import{jsx as X}from"react/jsx-runtime";var _=J(null),gt=({store:t,children:e})=>{let r=Q(()=>C(t),[t]);return X(_.Provider,{value:r,children:e})},p=()=>{let t=K(_);if(!t)throw new Error("BitForm hooks devem ser usados dentro de um BitFormProvider");return t};import{useCallback as d,useMemo as V,useRef as Y,useState as $,useSyncExternalStore as Z}from"react";function xt(){let t=p(),[e,r]=$(null),[i,s]=$(null),o=Y(null),u=d(S=>j(t,S),[t]),a=d(()=>{let S=D(t);return o.current&&o.current.isValid===S.isValid&&o.current.isDirty===S.isDirty&&o.current.isSubmitting===S.isSubmitting?o.current:(o.current=S,S)},[t]),n=Z(u,a,a),c=V(()=>L(t,{clearSubmissionState:()=>{r(null),s(null)},setSubmissionResult:S=>{s(S)},setSubmissionError:S=>{r(S)}}),[t]),{controller:l,actions:b}=c,g=d(l.submit,[l]),F=d(l.onSubmit,[l]),y=d(l.reset,[l]),m=d(l.getValues,[l]),f=d(l.getErrors,[l]),P=d(l.getTouched,[l]),h=d(l.getDirtyValues,[l]),w=V(()=>({...n,submitError:e,lastResponse:i}),[n,e,i]);return V(()=>({meta:w,getValues:m,getErrors:f,getTouched:P,getDirtyValues:h,submit:g,onSubmit:F,reset:y,...b}),[w,m,f,P,h,g,F,y,b])}import{useCallback as z,useEffect as N,useMemo as M,useRef as tt,useSyncExternalStore as et}from"react";function kt(t){let e=p(),r=M(()=>q(e,t),[e,t]),i=tt(null),s=z(()=>{let n=r.readItems();return i.current&&R(i.current,n)?i.current:(i.current=n,n)},[r]),o=z(n=>e.observe.subscribePath(t,()=>n()),[e,t]),u=et(o,s,s),a=M(()=>r.getFields(u),[r,u]);return N(()=>()=>{O(e,`${t}.`)},[e,t]),M(()=>({fields:a,length:u.length,append:r.append,prepend:r.prepend,insert:r.insert,remove:r.remove,move:r.move,swap:r.swap,replace:r.replace,clear:r.clear}),[a,u.length,r])}import{useCallback as T,useMemo as rt,useRef as st,useSyncExternalStore as ot}from"react";function Ut(t){let e=p(),r=st(null),i=T(()=>{let n=e.read.getScopeStatus(t);return r.current&&x(r.current,n)?r.current:(r.current=n,n)},[e,t]),s=T(n=>e.observe.subscribeScopeStatus(t,()=>n()),[e,t]),o=ot(s,i,i),u=T(async()=>{let n=await e.feature.validate({scope:t}),c=e.read.getScopeErrors(t);return{valid:n,errors:c}},[e,t]),a=T(()=>e.read.getScopeErrors(t),[e,t]);return rt(()=>({scopeName:t,status:o,errors:o.errors,validate:u,getErrors:a,isValid:!o.hasErrors,isDirty:o.isDirty}),[t,o,u,a])}import{useCallback as B,useMemo as nt,useRef as it,useState as at,useSyncExternalStore as ut}from"react";function Ot(t){let e=p(),[r,i]=at(0),s=t[r]??"",o=it(null),u=B(()=>{let m=e.read.getScopeStatus(s);return o.current&&x(o.current,m)?o.current:(o.current=m,m)},[e,s]),a=ut(B(m=>e.observe.subscribeScopeStatus(s,()=>m()),[e,s]),u,u),n=B(async()=>{let m=await e.feature.validate({scope:s}),f=e.read.getScopeErrors(s);return{valid:m,errors:f}},[e,s]),c=B(()=>e.read.getScopeErrors(s),[e,s]),l=B(async()=>{let m=e.read.getScopeFields(s);if(e.feature.hasValidationsInProgress(m))return!1;let f=await e.feature.validate({scope:s});if(f)i(P=>Math.min(P+1,t.length-1));else{let P=e.read.getScopeErrors(s),h=Object.keys(P);h.length>0&&e.write.markFieldsTouched(h)}return f},[e,s,t.length]),b=B(()=>{i(m=>Math.max(m-1,0))},[]),g=B(m=>{i(Math.max(0,Math.min(m-1,t.length-1)))},[t.length]),F=r===0,y=r>=t.length-1;return nt(()=>({step:r+1,stepIndex:r,scope:s,next:l,prev:b,goTo:g,isFirst:F,isLast:y,status:a,errors:a.errors,isValid:!a.hasErrors,isDirty:a.isDirty,validate:n,getErrors:c}),[r,s,l,b,g,F,y,a,n,c])}import{useCallback as G,useSyncExternalStore as ct,useRef as lt}from"react";function Kt(t){let e=p(),r=lt(null),i=G(()=>{let o=k(e.read.getState().values,t);return r.current!==null&&R(r.current,o)?r.current:(r.current=o,o)},[e,t]),s=G(o=>e.observe.subscribePath(t,()=>o()),[e,t]);return ct(s,i,i)}import{useCallback as v,useMemo as H,useSyncExternalStore as mt,useRef as pt}from"react";function Nt(){let t=p(),e=v(c=>I(t,c),[t]),r=pt(null),i=v(()=>{let c=U(t);return r.current&&r.current.isSaving===c.isSaving&&r.current.isRestoring===c.isRestoring&&r.current.error===c.error?r.current:(r.current=c,c)},[t]),s=mt(e,i,i),o=v(async()=>t.feature.restorePersisted(),[t]),u=v(async()=>{await t.feature.forceSave()},[t]),a=v(async()=>{await t.feature.clearPersisted()},[t]),n=H(()=>({isSaving:s.isSaving,isRestoring:s.isRestoring,error:s.error}),[s]);return H(()=>({restore:o,save:u,clear:a,meta:n}),[o,u,a,n])}import{useCallback as E,useEffect as St,useRef as dt,useSyncExternalStore as ft}from"react";function ae(t){let e=p(),r=dt(null);St(()=>()=>W(e,t),[e,t]);let i=E(()=>{let n=e.read.getFieldState(t),c=A(n,r.current);return r.current=c,c},[e,t]),s=E(n=>e.observe.subscribeFieldState(t,()=>n()),[e,t]),o=ft(s,i,i),u=E(n=>e.write.setField(t,n),[e,t]),a=E(()=>e.write.blurField(t),[e,t]);return{fieldState:o,setValue:u,setBlur:a,store:e}}export{gt as a,p as b,xt as c,ae as d,kt as e,Ut as f,Ot as g,Kt as h,Nt as i};
|
|
2
|
-
//# sourceMappingURL=chunk-23DHXQOC.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/react/context.tsx","../src/react/use-bit-form.ts","../src/react/use-bit-array.ts","../src/react/use-bit-scope.ts","../src/react/use-bit-steps.ts","../src/react/use-bit-watch.ts","../src/react/use-bit-persist.ts","../src/react/use-bit-field-base.ts"],"sourcesContent":["import React, { createContext, useContext, useMemo } from \"react\";\nimport type { BitFrameworkStoreApi, BitStoreApi } from \"../core\";\nimport { createFrameworkStoreAdapter } from \"../core\";\n\nconst BitContext = createContext<BitFrameworkStoreApi<any> | null>(null);\n\ninterface BitFormProviderProps<T extends object> {\n store: BitFrameworkStoreApi<T> | BitStoreApi<T>;\n children: React.ReactNode;\n}\n\ninterface BitFormProviderRuntimeProps {\n store: unknown;\n children: React.ReactNode;\n}\n\ntype BitFormProviderComponent = {\n <T extends object>(props: BitFormProviderProps<T>): React.ReactElement;\n (props: BitFormProviderRuntimeProps): React.ReactElement;\n};\n\nexport const BitFormProvider: BitFormProviderComponent = ({\n store,\n children,\n}: BitFormProviderRuntimeProps) => {\n const adapted = useMemo(() => createFrameworkStoreAdapter(store), [store]);\n\n return (\n <BitContext.Provider value={adapted}>\n {children}\n </BitContext.Provider>\n );\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 BitFrameworkStoreApi<T>;\n};\n","import {\n useCallback,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n} from \"react\";\nimport {\n createFrameworkFormBinding,\n readFormMetaSnapshot,\n subscribeFormMetaSnapshot,\n} from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitFormResult } from \"./types\";\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<ReturnType<typeof readFormMetaSnapshot<T>> | null>(\n null,\n );\n\n const subscribeMeta = useCallback(\n (cb: () => void) => subscribeFormMetaSnapshot(store, cb),\n [store],\n );\n const getMetaSnapshot = useCallback(() => {\n const nextMeta = readFormMetaSnapshot(store);\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 metaState = useSyncExternalStore(\n subscribeMeta,\n getMetaSnapshot,\n getMetaSnapshot,\n );\n\n const binding = useMemo(\n () =>\n createFrameworkFormBinding(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 { controller, actions } = binding;\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 useMemo(\n () => ({\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 meta,\n getValues,\n getErrors,\n getTouched,\n getDirtyValues,\n submit,\n onSubmit,\n reset,\n actions,\n ],\n );\n}\n","import {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useSyncExternalStore,\n} from \"react\";\nimport {\n BitArrayPath,\n cleanupRegisteredPrefix,\n createArrayBinding,\n valueEqual,\n} from \"../core\";\nimport { useBitStore } from \"./context\";\n\nexport function useBitArray<\n TForm extends object = any,\n P extends BitArrayPath<TForm> = BitArrayPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n const controller = useMemo(\n () => createArrayBinding<TForm, P>(store, path),\n [store, path],\n );\n type ArraySnapshot = ReturnType<typeof controller.readItems>;\n const lastSnapshotRef = useRef<ArraySnapshot | null>(null);\n\n const getSnapshot = useCallback(() => {\n const next = controller.readItems();\n\n if (lastSnapshotRef.current && valueEqual(lastSnapshotRef.current, next)) {\n return lastSnapshotRef.current;\n }\n\n lastSnapshotRef.current = next;\n return next;\n }, [controller]);\n\n const subscribeArray = useCallback(\n (cb: () => void) => store.observe.subscribePath(path, () => cb()),\n [store, path],\n );\n\n const data = useSyncExternalStore(subscribeArray, getSnapshot, getSnapshot);\n\n const fields = useMemo(() => controller.getFields(data), [controller, data]);\n\n useEffect(() => {\n return () => {\n cleanupRegisteredPrefix(store, `${path as string}.`);\n };\n }, [store, path]);\n\n return useMemo(\n () => ({\n fields,\n length: data.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 [fields, data.length, controller],\n );\n}\n","import { useCallback, useMemo, useRef, useSyncExternalStore } from \"react\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { isScopeStatusEqual } from \"../core\";\nimport { useBitStore } from \"./context\";\n\nexport type { ScopeStatus, ValidateScopeResult };\n\nexport function useBitScope(scopeName: string) {\n const store = useBitStore();\n\n const lastStatus = useRef<ScopeStatus | null>(null);\n\n const getStatusSnapshot = useCallback(() => {\n const nextStatus = store.read.getScopeStatus(scopeName);\n\n if (\n lastStatus.current &&\n isScopeStatusEqual(lastStatus.current, nextStatus)\n ) {\n return lastStatus.current;\n }\n\n lastStatus.current = nextStatus;\n return nextStatus;\n }, [store, scopeName]);\n\n // Assina apenas os slices de estado relevantes para o escopo (errors e\n // isDirty), evitando execuções desnecessárias do getStatusSnapshot em\n // mudanças não relacionadas (isSubmitting, isValidating de outros campos…)\n const subscribe = useCallback(\n (cb: () => void) =>\n store.observe.subscribeScopeStatus(scopeName, () => cb()),\n [store, scopeName],\n );\n\n const status = useSyncExternalStore(\n subscribe,\n getStatusSnapshot,\n getStatusSnapshot,\n );\n\n const validate = useCallback(async (): Promise<ValidateScopeResult> => {\n const valid = await store.feature.validate({ scope: scopeName });\n const errors = store.read.getScopeErrors(scopeName);\n return { valid, errors };\n }, [store, scopeName]);\n\n const getErrors = useCallback(() => {\n return store.read.getScopeErrors(scopeName);\n }, [store, scopeName]);\n\n return useMemo(\n () => ({\n scopeName,\n status,\n errors: status.errors,\n validate,\n getErrors,\n isValid: !status.hasErrors,\n isDirty: status.isDirty,\n }),\n [scopeName, status, validate, getErrors],\n );\n}\n","import {\n useCallback,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n} from \"react\";\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, setStepIndex] = useState(0);\n\n const scope = scopeNames[stepIndex] ?? \"\";\n const lastStatus = useRef<ScopeStatus | null>(null);\n\n const getStatusSnapshot = useCallback(() => {\n const nextStatus = store.read.getScopeStatus(scope);\n\n if (\n lastStatus.current &&\n isScopeStatusEqual(lastStatus.current, nextStatus)\n ) {\n return lastStatus.current;\n }\n\n lastStatus.current = nextStatus;\n return nextStatus;\n }, [store, scope]);\n\n const status = useSyncExternalStore(\n useCallback(\n (cb: () => void) => store.observe.subscribeScopeStatus(scope, () => cb()),\n [store, scope],\n ),\n getStatusSnapshot,\n getStatusSnapshot,\n );\n\n const validate = useCallback(async (): Promise<ValidateScopeResult> => {\n const valid = await store.feature.validate({ scope });\n const errors = store.read.getScopeErrors(scope);\n return { valid, errors };\n }, [store, scope]);\n\n const getErrors = useCallback(() => {\n return store.read.getScopeErrors(scope);\n }, [store, scope]);\n\n const next = useCallback(async (): Promise<boolean> => {\n const scopeFields = store.read.getScopeFields(scope);\n\n if (store.feature.hasValidationsInProgress(scopeFields)) {\n return false;\n }\n\n const valid = await store.feature.validate({ scope });\n if (valid) {\n setStepIndex((s) => Math.min(s + 1, scopeNames.length - 1));\n } else {\n const errors = store.read.getScopeErrors(scope);\n const pathsWithErrors = Object.keys(errors);\n if (pathsWithErrors.length > 0) {\n store.write.markFieldsTouched(pathsWithErrors);\n }\n }\n return valid;\n }, [store, scope, scopeNames.length]);\n\n const prev = useCallback(() => {\n setStepIndex((s) => Math.max(s - 1, 0));\n }, []);\n\n const goTo = useCallback(\n (targetStep: number) => {\n setStepIndex(\n Math.max(0, Math.min(targetStep - 1, scopeNames.length - 1)),\n );\n },\n [scopeNames.length],\n );\n\n const isFirst = stepIndex === 0;\n const isLast = stepIndex >= scopeNames.length - 1;\n\n return useMemo(\n () => ({\n step: stepIndex + 1,\n stepIndex,\n scope,\n next,\n prev,\n goTo,\n isFirst,\n isLast,\n status,\n errors: status.errors,\n isValid: !status.hasErrors,\n isDirty: status.isDirty,\n validate,\n getErrors,\n }),\n [\n stepIndex,\n scope,\n next,\n prev,\n goTo,\n isFirst,\n isLast,\n status,\n validate,\n getErrors,\n ],\n );\n}\n","import { useCallback, useSyncExternalStore, useRef } from \"react\";\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): BitPathValue<TForm, P> {\n const store = useBitStore<TForm>();\n const lastValue = useRef<BitPathValue<TForm, P> | null>(null);\n\n const getSnapshot = useCallback(() => {\n const value = getDeepValue(\n store.read.getState().values,\n path as string,\n ) as BitPathValue<TForm, P>;\n\n if (lastValue.current !== null && valueEqual(lastValue.current, value)) {\n return lastValue.current;\n }\n\n lastValue.current = value;\n return value;\n }, [store, path]);\n\n // Assina apenas o path monitorado → evita executar getSnapshot em toda\n // mudança de estado do store (blur, validation, outros campos, etc.)\n const subscribe = useCallback(\n (cb: () => void) => store.observe.subscribePath(path, () => cb()),\n [store, path],\n );\n\n return useSyncExternalStore(\n subscribe,\n getSnapshot,\n getSnapshot,\n ) as BitPathValue<TForm, P>;\n}\n","import { useCallback, useMemo, useSyncExternalStore, useRef } from \"react\";\nimport { readPersistMetaSnapshot, subscribePersistMetaSnapshot } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitPersistResult } from \"./types\";\n\nexport function useBitPersist(): UseBitPersistResult {\n const store = useBitStore<any>();\n\n const subscribePersistMeta = useCallback(\n (cb: () => void) => subscribePersistMetaSnapshot(store, cb),\n [store],\n );\n\n const lastMeta = useRef<ReturnType<typeof readPersistMetaSnapshot> | null>(null);\n\n const getSnapshot = useCallback(() => {\n const nextMeta = readPersistMetaSnapshot(store);\n\n if (\n lastMeta.current &&\n lastMeta.current.isSaving === nextMeta.isSaving &&\n lastMeta.current.isRestoring === nextMeta.isRestoring &&\n lastMeta.current.error === nextMeta.error\n ) {\n return lastMeta.current;\n }\n\n lastMeta.current = nextMeta;\n return nextMeta;\n }, [store]);\n\n const persistMeta = useSyncExternalStore(\n subscribePersistMeta,\n getSnapshot,\n getSnapshot,\n );\n\n const restore = useCallback(async () => {\n return store.feature.restorePersisted();\n }, [store]);\n\n const save = useCallback(async () => {\n await store.feature.forceSave();\n }, [store]);\n\n const clear = useCallback(async () => {\n await store.feature.clearPersisted();\n }, [store]);\n\n const meta = useMemo(\n () => ({\n isSaving: persistMeta.isSaving,\n isRestoring: persistMeta.isRestoring,\n error: persistMeta.error,\n }),\n [persistMeta],\n );\n\n return useMemo(\n () => ({\n restore,\n save,\n clear,\n meta,\n }),\n [restore, save, clear, meta],\n );\n}\n","import { useCallback, useEffect, useRef, useSyncExternalStore } from \"react\";\nimport {\n BitFieldSnapshot,\n BitPath,\n BitPathValue,\n cleanupRegisteredField,\n createFieldStateSnapshot,\n} from \"../core\";\nimport { useBitStore } from \"./context\";\n\nexport function useBitFieldBase<\n _TValue = any,\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n const lastSnapshot = useRef<BitFieldSnapshot<BitPathValue<TForm, P>> | null>(\n null,\n );\n\n useEffect(() => {\n return () => cleanupRegisteredField(store, path as string);\n }, [store, path]);\n\n const getSnapshot = useCallback(() => {\n const nextState = store.read.getFieldState(path);\n const snapshot = createFieldStateSnapshot(nextState, lastSnapshot.current);\n lastSnapshot.current = snapshot;\n return snapshot;\n }, [store, path]);\n\n const subscribe = useCallback(\n (cb: () => void) => store.observe.subscribeFieldState(path, () => cb()),\n [store, path],\n );\n\n const fieldState = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n const setValue = useCallback(\n (val: BitPathValue<TForm, P>) => store.write.setField(path, val),\n [store, path],\n );\n\n const setBlur = useCallback(() => store.write.blurField(path), [store, path]);\n\n return { fieldState, setValue, setBlur, store };\n}\n"],"mappings":"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","names":["createContext","useContext","useMemo","jsx","BitContext","createContext","BitFormProvider","store","children","adapted","useMemo","createFrameworkStoreAdapter","useBitStore","useContext","useCallback","useMemo","useRef","useState","useSyncExternalStore","useBitForm","store","useBitStore","submitError","setSubmitError","useState","lastResponse","setLastResponse","lastMeta","useRef","subscribeMeta","useCallback","cb","subscribeFormMetaSnapshot","getMetaSnapshot","nextMeta","readFormMetaSnapshot","metaState","useSyncExternalStore","binding","useMemo","createFrameworkFormBinding","result","error","controller","actions","submit","onSubmit","reset","getValues","getErrors","getTouched","getDirtyValues","meta","useCallback","useEffect","useMemo","useRef","useSyncExternalStore","useBitArray","path","store","useBitStore","controller","useMemo","createArrayBinding","lastSnapshotRef","useRef","getSnapshot","useCallback","next","valueEqual","subscribeArray","cb","data","useSyncExternalStore","fields","useEffect","cleanupRegisteredPrefix","useCallback","useMemo","useRef","useSyncExternalStore","useBitScope","scopeName","store","useBitStore","lastStatus","useRef","getStatusSnapshot","useCallback","nextStatus","isScopeStatusEqual","subscribe","cb","status","useSyncExternalStore","validate","valid","errors","getErrors","useMemo","useCallback","useMemo","useRef","useState","useSyncExternalStore","useBitSteps","scopeNames","store","useBitStore","stepIndex","setStepIndex","useState","scope","lastStatus","useRef","getStatusSnapshot","useCallback","nextStatus","isScopeStatusEqual","status","useSyncExternalStore","cb","validate","valid","errors","getErrors","next","scopeFields","s","pathsWithErrors","prev","goTo","targetStep","isFirst","isLast","useMemo","useCallback","useSyncExternalStore","useRef","useBitWatch","path","store","useBitStore","lastValue","useRef","getSnapshot","useCallback","value","getDeepValue","valueEqual","subscribe","cb","useSyncExternalStore","useCallback","useMemo","useSyncExternalStore","useRef","useBitPersist","store","useBitStore","subscribePersistMeta","useCallback","cb","subscribePersistMetaSnapshot","lastMeta","useRef","getSnapshot","nextMeta","readPersistMetaSnapshot","persistMeta","useSyncExternalStore","restore","save","clear","meta","useMemo","useCallback","useEffect","useRef","useSyncExternalStore","useBitFieldBase","path","store","useBitStore","lastSnapshot","useRef","useEffect","cleanupRegisteredField","getSnapshot","useCallback","nextState","snapshot","createFieldStateSnapshot","subscribe","cb","fieldState","useSyncExternalStore","setValue","val","setBlur"]}
|
package/dist/chunk-27LJCW56.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 _chunk4WPLTOBTcjs = require('./chunk-4WPLTOBT.cjs');var f=(a,r)=>async(l,p)=>{let{error:o}=a.validate(l,{abortEarly:_nullishCoalesce(_optionalChain([r, 'optionalAccess', _ => _.abortEarly]), () => (!1)),allowUnknown:_nullishCoalesce(_optionalChain([r, 'optionalAccess', _2 => _2.allowUnknown]), () => (!1)),stripUnknown:_nullishCoalesce(_optionalChain([r, 'optionalAccess', _3 => _3.stripUnknown]), () => (!1))});if(!o)return{};let e={};return o.details.forEach(t=>{let c=_chunk4WPLTOBTcjs.a.call(void 0, t.path.join("."));_chunk4WPLTOBTcjs.b.call(void 0, e,c,t.message)}),_chunk4WPLTOBTcjs.c.call(void 0, e,_optionalChain([p, 'optionalAccess', _4 => _4.scopeFields]))};exports.a = f;
|
|
2
|
-
//# sourceMappingURL=chunk-27LJCW56.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/chunk-27LJCW56.cjs","../src/resolvers/joi.ts"],"names":["joiResolver","schema","config","values","options","error","errors","detail","path","normalizeErrorPath","setFirstError","filterErrorsByScope"],"mappings":"AAAA,yuBAAsD,ICKzCA,CAAAA,CAAc,CACzBC,CAAAA,CACAC,CAAAA,CAAAA,EAEO,KAAA,CACLC,CAAAA,CACAC,CAAAA,CAAAA,EAC0B,CAC1B,GAAM,CAAE,KAAA,CAAAC,CAAM,CAAA,CAAIJ,CAAAA,CAAO,QAAA,CAASE,CAAAA,CAAQ,CACxC,UAAA,kCAAYD,CAAAA,2BAAQ,YAAA,SAAc,CAAA,GAAA,CAClC,YAAA,kCAAcA,CAAAA,6BAAQ,cAAA,SAAgB,CAAA,GAAA,CACtC,YAAA,kCAAcA,CAAAA,6BAAQ,cAAA,SAAgB,CAAA,GACxC,CAAC,CAAA,CAED,EAAA,CAAI,CAACG,CAAAA,CAAO,MAAO,CAAC,CAAA,CAEpB,IAAMC,CAAAA,CAAuB,CAAC,CAAA,CAE9B,OAAAD,CAAAA,CAAM,OAAA,CAAQ,OAAA,CAASE,CAAAA,EAAW,CAChC,IAAMC,CAAAA,CAAOC,iCAAAA,CAAmBF,CAAO,IAAA,CAAK,IAAA,CAAK,GAAG,CAAC,CAAA,CAErDG,iCAAAA,CAAcJ,CAAQE,CAAAA,CAAMD,CAAAA,CAAO,OAAO,CAC5C,CAAC,CAAA,CAEMI,iCAAAA,CAAoBL,iBAAQF,CAAAA,6BAAS,aAAW,CACzD,CAAA,CAAA,cAAA","file":"/home/runner/work/bit-form/bit-form/dist/chunk-27LJCW56.cjs","sourcesContent":[null,"import { ObjectSchema } from \"joi\";\nimport { BitErrors } from \"../core\";\nimport { filterErrorsByScope, setFirstError, normalizeErrorPath } from \"./utils\";\nimport { BitJoiResolverConfig, BitResolverScopeOptions } from \"./types\";\n\nexport const joiResolver = <T extends object>(\n schema: ObjectSchema<T>,\n config?: BitJoiResolverConfig,\n) => {\n return async (\n values: T,\n options?: BitResolverScopeOptions,\n ): Promise<BitErrors<T>> => {\n const { error } = schema.validate(values, {\n abortEarly: config?.abortEarly ?? false,\n allowUnknown: config?.allowUnknown ?? false,\n stripUnknown: config?.stripUnknown ?? false,\n });\n\n if (!error) return {};\n\n const errors: BitErrors<T> = {};\n\n error.details.forEach((detail) => {\n const path = normalizeErrorPath(detail.path.join(\".\"));\n\n setFirstError(errors, path, detail.message);\n });\n\n return filterErrorsByScope(errors, options?.scopeFields);\n };\n};\n"]}
|
package/dist/chunk-32RH5MSM.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var X={"#":/\d/,A:/[a-zA-Z]/,X:/[a-zA-Z0-9]/,H:/[0-9a-fA-F]/,U:/[A-Z]/,L:/[a-z]/,"*":/./},h=(s,r)=>{if(s==null||s==="")return"";let e=String(s),i=e.startsWith("-"),a=r?r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"):"",p=new RegExp(`[^a-zA-Z0-9${a}]`,"g"),m=e.replace(p,"");return i&&m&&!m.startsWith("-")?`-${m}`:m},te=(s,r=2)=>{if(typeof s=="number")return s;if(!s)return 0;let e=String(s),i=e.includes("-"),a=e.replace(/\D/g,"");if(!a)return 0;let p=parseInt(a,10)/Math.pow(10,r);return i?-p:p},o=(s,r)=>{let e=n=>n.split("").filter(t=>X[t]).length,i=Array.isArray(s)?s:[s];if(i.length===0)return{format:n=>n==null||n===""?"":String(n),parse:n=>String(n??"")};let a=[...i].sort((n,t)=>e(n)-e(t)),p=n=>{let t=a[a.length-1];for(let c of a)if(n<=e(c)){t=c;break}return t},m=n=>{let t=h(n,r?.allowChars);if(!t&&!r?.guide)return"";let c=p(t.length),k=r?.guide||!1,H=r?.placeholderChar||"_",u="",d=0;for(let C=0;C<c.length;C++){let l=c[C],x=X[l];if(d<t.length){let f=t[d];if(x)if(l==="U"&&(f=f.toUpperCase()),l==="L"&&(f=f.toLowerCase()),x.test(f))u+=f,d++;else if(k)u+=H;else break;else u+=l,f===l&&d++}else if(k)u+=x?H:l;else break}return u};return{format:m,parse:n=>{if(r?.customParse)return r.customParse(n);let t=m(n);if(r?.saveRaw){if(r?.guide){let k=(r.placeholderChar||"_").replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),H=new RegExp(k,"g");return t.replace(H,"")}return t}return h(t,r?.allowChars)}}},g=({prefix:s="",suffix:r="",thousand:e,decimal:i,precision:a=2,allowNegative:p=!0,saveRaw:m=!1})=>{let n=t=>{if(t==null||t==="")return"";let c=typeof t=="number"?Math.abs(t).toFixed(a).replace(/\D/g,""):String(t).replace(/\D/g,"");if(!c&&String(t).includes("-")&&p)return"-";if(!c)return"";let k=20;c.length>k&&(c=c.slice(0,k)),c=c.padStart(a+1,"0");let H=a>0?c.slice(0,-a).replace(/^0+(?=\d)/,"")||"0":c.replace(/^0+(?=\d)/,"")||"0",u=a>0?c.slice(-a):"",d=H.replace(/\B(?=(\d{3})+(?!\d))/g,e),l=(typeof t=="number"?t<0:String(t).includes("-"))&&p?"-":"";return a===0?`${l}${s}${d}${r}`:`${l}${s}${d}${i}${u}${r}`};return{format:n,parse:t=>{let c=te(t,a),k=p?c:Math.abs(c);return m?n(k):k}}},$=s=>{let r=e=>/^3[47]/.test(e)?"#### ###### #####":/^3(?:0[0-5]|[68])/.test(e)?"#### ###### ####":"#### #### #### ####";return{format:e=>{let i=h(e,s?.allowChars),a=r(i);return o(a,s).format(e)},parse:e=>{let i=h(e,s?.allowChars),a=r(i);return o(a,s).parse(e)}}},M=s=>{let e=(s?.format||"DD/MM/YYYY")==="YYYY-MM-DD",i=o(e?"####-##-##":"##/##/####",s);return{format:a=>{let p=h(a);if(!p)return"";let m,n,t;if(e?(t=p.substring(0,4),n=p.substring(4,6),m=p.substring(6,8)):(m=p.substring(0,2),n=p.substring(2,4),t=p.substring(4,8)),m.length===2){let k=parseInt(m,10);k>31&&(m="31"),k===0&&(m="01")}if(n.length===2){let k=parseInt(n,10);k>12&&(n="12"),k===0&&(n="01")}let c=e?`${t}${n}${m}`:`${m}${n}${t}`;return i.format(c)},parse:a=>i.parse(a)}};var D=g({prefix:"R$ ",thousand:".",decimal:",",precision:2}),S=g({prefix:"$",thousand:",",decimal:".",precision:2}),b=g({suffix:" \u20AC",thousand:".",decimal:",",precision:2}),y=g({prefix:"\xA3",thousand:",",decimal:".",precision:2}),I=g({prefix:"\xA5",thousand:",",decimal:".",precision:0}),B=g({suffix:"%",thousand:".",decimal:",",precision:1}),Y=g({thousand:".",decimal:",",precision:2}),P=g({thousand:".",decimal:",",precision:0}),R=o("###.###.###-##"),A=o("##.###.###/####-##"),U=o(["(##) ####-####","(##) #####-####"]),N=o("(##) ####-####"),V=o("#####-###"),w=M({format:"DD/MM/YYYY",guide:!0,customParse:s=>{let r=s.replace(/_/g,""),e=r.split("/");return e.length===3&&e[2].length===4?`${e[2]}-${e[1]}-${e[0]}`:r.replace(/\D/g,"")}}),Z=o("##:##"),E=o("###########"),L=o("##.###.###-X"),z=o(["###.###.###-##","##.###.###/####-##"]),F={format(s){let r=String(s??"").replace(/[^a-zA-Z0-9]/g,"").toUpperCase().slice(0,7);if(r.length===0)return"";let e=r.slice(0,3),i=r.slice(3);return i.length===0?e:i.length>=2&&/[A-Z]/.test(i[1])?`${e}${i}`:`${e}-${i}`},parse(s){return String(s??"").replace(/[^a-zA-Z0-9]/g,"").toUpperCase().slice(0,7)}},O=o("(###) ###-####"),T=o("#####-####"),G=o("##/##/####"),J=o("###-##-####"),_=$(),j=o("####"),W=M({format:"YYYY-MM-DD",saveRaw:!0,guide:!0}),q=o("HH:HH:HH:HH:HH:HH"),K=o("#HHHHHH"),Q=o("###.###.###.###"),v=o("HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH"),ee=o("UU## XXXX XXXX XXXX XXXX XXXX XXXX XXXX XX",{allowChars:" "});var ae={brl:D,usd:S,eur:b,gbp:y,jpy:I,percent:B,decimal:Y,int:P,integer:P,cpf:R,cnpj:A,cpfCnpj:z,rg:L,cep:V,cnh:E,plate:F,phone:U,landline:N,date:w,time:Z,usPhone:O,zipCode:T,dateUS:G,ssn:J,cc:_,cvv:j,dateISO:W,ip:Q,ipv6:v,mac:q,color:K,iban:ee};export{h as a,te as b,o as c,g as d,$ as e,M as f,D as g,S as h,b as i,y as j,I as k,B as l,Y as m,P as n,R as o,A as p,U as q,N as r,V as s,w as t,Z as u,E as v,L as w,z as x,F as y,O as z,T as A,G as B,J as C,_ as D,j as E,W as F,q as G,K as H,Q as I,v as J,ee as K,ae as L};
|
|
2
|
-
//# sourceMappingURL=chunk-32RH5MSM.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/mask/creators.ts","../src/core/mask/presets.ts","../src/core/mask/built-ins.ts"],"sourcesContent":["import {\n BitMask,\n CurrencyMaskConfig,\n DateMaskConfig,\n PatternMaskOptions,\n} from \"./types\";\n\ntype TokenMap = Record<string, RegExp>;\n\nconst tokens: TokenMap = {\n \"#\": /\\d/,\n A: /[a-zA-Z]/,\n X: /[a-zA-Z0-9]/,\n H: /[0-9a-fA-F]/,\n U: /[A-Z]/,\n L: /[a-z]/,\n \"*\": /./,\n};\n\nexport const unmask = (\n value: string | number | null | undefined,\n allowChars?: string,\n): string => {\n if (value === null || value === undefined || value === \"\") return \"\";\n const stringValue = String(value);\n const isNegative = stringValue.startsWith(\"-\");\n\n const escapedChars = allowChars\n ? allowChars.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\n : \"\";\n const regex = new RegExp(`[^a-zA-Z0-9${escapedChars}]`, \"g\");\n\n const clean = stringValue.replace(regex, \"\");\n return isNegative && clean && !clean.startsWith(\"-\") ? `-${clean}` : clean;\n};\n\nexport const unmaskCurrency = (value: any, precision = 2): number => {\n if (typeof value === \"number\") return value;\n if (!value) return 0;\n\n const stringValue = String(value);\n const isNegative = stringValue.includes(\"-\");\n const digits = stringValue.replace(/\\D/g, \"\");\n\n if (!digits) return 0;\n\n const numberValue = parseInt(digits, 10) / Math.pow(10, precision);\n return isNegative ? -numberValue : numberValue;\n};\n\nexport const createPatternMask = (\n pattern: string | string[],\n options?: PatternMaskOptions,\n): BitMask => {\n const getRawLength = (p: string) =>\n p.split(\"\").filter((c) => tokens[c]).length;\n\n const patterns = Array.isArray(pattern) ? pattern : [pattern];\n\n if (patterns.length === 0) {\n return {\n format: (value: unknown) =>\n value === undefined || value === null || value === \"\"\n ? \"\"\n : String(value),\n parse: (value: unknown) => String(value ?? \"\"),\n };\n }\n\n const sortedPatterns = [...patterns].sort(\n (a, b) => getRawLength(a) - getRawLength(b),\n );\n\n const getActivePattern = (rawValueLength: number) => {\n let activePattern = sortedPatterns[sortedPatterns.length - 1];\n for (const candidate of sortedPatterns) {\n if (rawValueLength <= getRawLength(candidate)) {\n activePattern = candidate;\n break;\n }\n }\n return activePattern;\n };\n\n const formatValue = (value: string | number | null | undefined): string => {\n const stringVal = unmask(value, options?.allowChars);\n\n if (!stringVal && !options?.guide) {\n return \"\";\n }\n\n const activePattern = getActivePattern(stringVal.length);\n const showGuide = options?.guide || false;\n const placeholder = options?.placeholderChar || \"_\";\n\n let masked = \"\";\n let valueIndex = 0;\n\n for (let i = 0; i < activePattern.length; i++) {\n const patternChar = activePattern[i];\n const token = tokens[patternChar];\n\n if (valueIndex < stringVal.length) {\n let dataChar = stringVal[valueIndex];\n\n if (token) {\n if (patternChar === \"U\") dataChar = dataChar.toUpperCase();\n if (patternChar === \"L\") dataChar = dataChar.toLowerCase();\n\n if (token.test(dataChar)) {\n masked += dataChar;\n valueIndex++;\n } else if (showGuide) {\n masked += placeholder;\n } else {\n break;\n }\n } else {\n masked += patternChar;\n if (dataChar === patternChar) valueIndex++;\n }\n } else if (showGuide) {\n masked += token ? placeholder : patternChar;\n } else {\n break;\n }\n }\n\n return masked;\n };\n\n return {\n format: formatValue,\n parse: (value: string) => {\n if (options?.customParse) return options.customParse(value);\n\n const formatted = formatValue(value);\n\n if (options?.saveRaw) {\n if (options?.guide) {\n const placeholder = options.placeholderChar || \"_\";\n const escapedPlaceholder = placeholder.replace(\n /[.*+?^${}()|[\\]\\\\]/g,\n \"\\\\$&\",\n );\n const placeholderRegex = new RegExp(escapedPlaceholder, \"g\");\n\n return formatted.replace(placeholderRegex, \"\");\n }\n\n return formatted;\n }\n\n return unmask(formatted, options?.allowChars);\n },\n };\n};\n\nexport const createCurrencyMask = ({\n prefix = \"\",\n suffix = \"\",\n thousand,\n decimal,\n precision = 2,\n allowNegative = true,\n saveRaw = false,\n}: CurrencyMaskConfig): BitMask => {\n const formatFn = (value: any) => {\n if (value === undefined || value === null || value === \"\") return \"\";\n\n let stringValue =\n typeof value === \"number\"\n ? Math.abs(value).toFixed(precision).replace(/\\D/g, \"\")\n : String(value).replace(/\\D/g, \"\");\n\n if (!stringValue && String(value).includes(\"-\") && allowNegative)\n return \"-\";\n if (!stringValue) return \"\";\n\n // Truncate to prevent ReDoS on pathological input\n const MAX_CURRENCY_DIGITS = 20;\n if (stringValue.length > MAX_CURRENCY_DIGITS) {\n stringValue = stringValue.slice(0, MAX_CURRENCY_DIGITS);\n }\n\n stringValue = stringValue.padStart(precision + 1, \"0\");\n\n const integerPart =\n precision > 0\n ? stringValue.slice(0, -precision).replace(/^0+(?=\\d)/, \"\") || \"0\"\n : stringValue.replace(/^0+(?=\\d)/, \"\") || \"0\";\n const decimalPart = precision > 0 ? stringValue.slice(-precision) : \"\";\n\n const formattedInteger = integerPart.replace(\n /\\B(?=(\\d{3})+(?!\\d))/g,\n thousand,\n );\n\n const isNegative =\n typeof value === \"number\" ? value < 0 : String(value).includes(\"-\");\n const sign = isNegative && allowNegative ? \"-\" : \"\";\n\n if (precision === 0) {\n return `${sign}${prefix}${formattedInteger}${suffix}`;\n }\n\n return `${sign}${prefix}${formattedInteger}${decimal}${decimalPart}${suffix}`;\n };\n\n return {\n format: formatFn,\n parse: (value: string) => {\n const numericValue = unmaskCurrency(value, precision);\n const finalNumber = !allowNegative\n ? Math.abs(numericValue)\n : numericValue;\n if (saveRaw) return formatFn(finalNumber);\n return finalNumber;\n },\n };\n};\n\nexport const createCreditCardMask = (options?: PatternMaskOptions): BitMask => {\n // Função auxiliar para descobrir o padrão dinamicamente\n const getCardPattern = (rawValue: string) => {\n // Amex (American Express) começa com 34 ou 37 -> 15 dígitos\n if (/^3[47]/.test(rawValue)) {\n return \"#### ###### #####\";\n }\n // Diners Club começa com 300-305, 36 ou 38 -> 14 dígitos\n if (/^3(?:0[0-5]|[68])/.test(rawValue)) {\n return \"#### ###### ####\";\n }\n // Default: Visa, Mastercard, Discover, Elo, etc -> 16 dígitos\n return \"#### #### #### ####\";\n };\n\n return {\n format: (value: any) => {\n const stringVal = unmask(value, options?.allowChars);\n const pattern = getCardPattern(stringVal);\n const mask = createPatternMask(pattern, options);\n return mask.format(value);\n },\n parse: (value: string) => {\n const stringVal = unmask(value, options?.allowChars);\n const pattern = getCardPattern(stringVal);\n\n const mask = createPatternMask(pattern, options);\n return mask.parse(value);\n },\n };\n};\n\nexport const createDateMask = (config?: DateMaskConfig): BitMask => {\n const formatType = config?.format || \"DD/MM/YYYY\";\n const isISO = formatType === \"YYYY-MM-DD\";\n\n // Criamos a máscara base consoante o formato escolhido\n const baseMask = createPatternMask(\n isISO ? \"####-##-##\" : \"##/##/####\",\n config,\n );\n\n return {\n format: (value: any) => {\n let stringVal = unmask(value);\n if (!stringVal) return \"\";\n\n let day: string;\n let month: string;\n let year: string;\n\n // Separamos os componentes consoante o que o utilizador já digitou\n if (isISO) {\n year = stringVal.substring(0, 4);\n month = stringVal.substring(4, 6);\n day = stringVal.substring(6, 8);\n } else {\n day = stringVal.substring(0, 2);\n month = stringVal.substring(2, 4);\n year = stringVal.substring(4, 8);\n }\n\n // Validação do Dia (01 a 31)\n if (day.length === 2) {\n const d = parseInt(day, 10);\n if (d > 31) day = \"31\";\n if (d === 0) day = \"01\";\n }\n\n // Validação do Mês (01 a 12)\n if (month.length === 2) {\n const m = parseInt(month, 10);\n if (m > 12) month = \"12\";\n if (m === 0) month = \"01\";\n }\n\n // Reconstruímos a string limpa e passamos para o pattern normal\n const safeString = isISO\n ? `${year}${month}${day}`\n : `${day}${month}${year}`;\n\n return baseMask.format(safeString);\n },\n parse: (value: string) => {\n // Usamos a funcionalidade completa da máscara base (incluindo o saveRaw e o unmasking)\n return baseMask.parse(value);\n },\n };\n};\n","import type { BitMask } from \"./types\";\nimport {\n createCreditCardMask,\n createCurrencyMask,\n createDateMask,\n createPatternMask,\n} from \"./creators\";\n\n// ==========================================\n// 💲 MOEDAS (Currencies)\n// ==========================================\n\n/** BRL - Real Brasileiro (R$ 1.000,00) */\nexport const maskBRL = createCurrencyMask({\n prefix: \"R$ \",\n thousand: \".\",\n decimal: \",\",\n precision: 2,\n});\n\n/** USD - Dólar Americano ($1,000.00) */\nexport const maskUSD = createCurrencyMask({\n prefix: \"$\",\n thousand: \",\",\n decimal: \".\",\n precision: 2,\n});\n\n/** EUR - Euro Padrão (€ 1.000,00) - Sufixo comum na Europa */\nexport const maskEUR = createCurrencyMask({\n suffix: \" €\",\n thousand: \".\",\n decimal: \",\",\n precision: 2,\n});\n\n/** GBP - Libra Esterlina (£1,000.00) */\nexport const maskGBP = createCurrencyMask({\n prefix: \"£\",\n thousand: \",\",\n decimal: \".\",\n precision: 2,\n});\n\n/** JPY - Iene Japonês (¥1,000) - Geralmente sem decimais */\nexport const maskJPY = createCurrencyMask({\n prefix: \"¥\",\n thousand: \",\",\n decimal: \".\",\n precision: 0,\n});\n\n// ==========================================\n// 🔢 NÚMEROS E PERCENTUAIS\n// ==========================================\n\n/** Porcentagem PT-BR (10,5%) */\nexport const maskPercent = createCurrencyMask({\n suffix: \"%\",\n thousand: \".\",\n decimal: \",\",\n precision: 1, // Ex: 99,9%\n});\n\n/** Decimal Genérico PT-BR (1.000,00) - Sem símbolo */\nexport const maskDecimal = createCurrencyMask({\n thousand: \".\",\n decimal: \",\",\n precision: 2,\n});\n\n/** Inteiro (1.000) - Apenas separador de milhar */\nexport const maskInteger = createCurrencyMask({\n thousand: \".\",\n decimal: \",\",\n precision: 0,\n});\n\n// ==========================================\n// 🇧🇷 PADRÕES BRASILEIROS (Brazil)\n// ==========================================\n\n/** CPF (000.000.000-00) */\nexport const maskCPF = createPatternMask(\"###.###.###-##\");\n\n/** CNPJ (00.000.000/0000-00) */\nexport const maskCNPJ = createPatternMask(\"##.###.###/####-##\");\n\nexport const maskPhone = createPatternMask([\n \"(##) ####-####\", // Fixo (10 dígitos)\n \"(##) #####-####\", // Celular (11 dígitos)\n]);\n\n/** Telefone Fixo BR (11) 0000-0000 */\nexport const maskLandline = createPatternMask(\"(##) ####-####\");\n\n/** CEP (00000-000) */\nexport const maskCEP = createPatternMask(\"#####-###\");\n\n/** Data PT/BR com correção automática de dia/mês */\nexport const maskDate = createDateMask({\n format: \"DD/MM/YYYY\",\n guide: true,\n customParse: (val) => {\n const cleanVal = val.replace(/_/g, \"\");\n const parts = cleanVal.split(\"/\");\n if (parts.length === 3 && parts[2].length === 4) {\n return `${parts[2]}-${parts[1]}-${parts[0]}`;\n }\n return cleanVal.replace(/\\D/g, \"\");\n },\n});\n\n/** Hora Curta (HH:MM) */\nexport const maskTime = createPatternMask(\"##:##\");\n\n/** CNH (Carteira de Motorista - 11 dígitos) */\nexport const maskCNH = createPatternMask(\"###########\");\n\n/** RG (00.000.000-X) - Suporta o 'X' como dígito verificador */\nexport const maskRG = createPatternMask(\"##.###.###-X\");\n\n/**\n * CPF + CNPJ combinado — alterna automaticamente pelo número de dígitos:\n * - Até 11 dígitos → CPF (000.000.000-00)\n * - Mais de 11 → CNPJ (00.000.000/0000-00)\n */\nexport const maskCPFCNPJ = createPatternMask([\n \"###.###.###-##\",\n \"##.###.###/####-##\",\n]);\n\n/**\n * Placa de veículo BR — detecta o formato pelo 5.º caractere:\n * - Antigo → ABC-1234 (posição 5 é dígito)\n * - Mercosul → ABC1D23 (posição 5 é letra)\n */\nexport const maskPlate: BitMask = {\n format(value: any): string {\n const raw = String(value ?? \"\")\n .replace(/[^a-zA-Z0-9]/g, \"\")\n .toUpperCase()\n .slice(0, 7);\n\n if (raw.length === 0) return \"\";\n\n const prefix = raw.slice(0, 3);\n const rest = raw.slice(3);\n\n if (rest.length === 0) return prefix;\n\n // Posição 5 (rest[1]): letra → Mercosul; dígito → formato antigo\n const isMercosul = rest.length >= 2 && /[A-Z]/.test(rest[1]);\n\n return isMercosul ? `${prefix}${rest}` : `${prefix}-${rest}`;\n },\n parse(value: string): string {\n return String(value ?? \"\")\n .replace(/[^a-zA-Z0-9]/g, \"\")\n .toUpperCase()\n .slice(0, 7);\n },\n};\n\n// ==========================================\n// 🇺🇸 PADRÕES AMERICANOS (USA)\n// ==========================================\n\n/** US Phone ((000) 000-0000) */\nexport const maskUSPhone = createPatternMask(\"(###) ###-####\");\n\n/** ZIP Code (00000 or 00000-0000) */\nexport const maskZipCode = createPatternMask(\"#####-####\");\n\n/** Date US (MM/DD/YYYY) - Igual ao BR, mas semântica diferente */\nexport const maskDateUS = createPatternMask(\"##/##/####\");\n\n/** SSN (Social Security Number) */\nexport const maskSSN = createPatternMask(\"###-##-####\");\n\n// ==========================================\n// 🌐 PADRÕES GLOBAIS / TÉCNICOS\n// ==========================================\n\n/** Cartão de Crédito Inteligente (Detecta Visa/Master, Amex e Diners) */\nexport const maskCreditCard = createCreditCardMask();\n\n/** CVV (3 ou 4 dígitos) */\nexport const maskCVV = createPatternMask(\"####\");\n\n/** Data ISO (Ideal para base de dados: YYYY-MM-DD) */\nexport const maskDateISO = createDateMask({\n format: \"YYYY-MM-DD\",\n saveRaw: true,\n guide: true,\n});\n\n/** Endereço MAC (HH:HH:HH:HH:HH:HH) - Usa o token Hexadecimal */\nexport const maskMacAddress = createPatternMask(\"HH:HH:HH:HH:HH:HH\");\n\n/** Cor Hexadecimal (#HHHHHH) */\nexport const maskColorHex = createPatternMask(\"#HHHHHH\");\n\n/** IPv4 (000.000.000.000) - Formato de blocos fixos */\nexport const maskIPv4 = createPatternMask(\"###.###.###.###\");\n\n/** IPv6 (HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH) */\nexport const maskIPv6 = createPatternMask(\n \"HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH\",\n);\n\n/** * IBAN Internacional\n * Força as duas primeiras letras para maiúsculas e agrupa de 4 em 4.\n * O tamanho máximo cobre os 34 caracteres do padrão IBAN.\n */\nexport const maskIBAN = createPatternMask(\n \"UU## XXXX XXXX XXXX XXXX XXXX XXXX XXXX XX\",\n { allowChars: \" \" },\n);\n","import * as presets from \"./presets\";\nimport type { BitBuiltInMaskName, BitMask } from \"./types\";\n\nexport const bitMasks: Record<BitBuiltInMaskName, BitMask> = {\n brl: presets.maskBRL,\n usd: presets.maskUSD,\n eur: presets.maskEUR,\n gbp: presets.maskGBP,\n jpy: presets.maskJPY,\n percent: presets.maskPercent,\n decimal: presets.maskDecimal,\n int: presets.maskInteger,\n integer: presets.maskInteger,\n cpf: presets.maskCPF,\n cnpj: presets.maskCNPJ,\n cpfCnpj: presets.maskCPFCNPJ,\n rg: presets.maskRG,\n cep: presets.maskCEP,\n cnh: presets.maskCNH,\n plate: presets.maskPlate,\n phone: presets.maskPhone,\n landline: presets.maskLandline,\n date: presets.maskDate,\n time: presets.maskTime,\n usPhone: presets.maskUSPhone,\n zipCode: presets.maskZipCode,\n dateUS: presets.maskDateUS,\n ssn: presets.maskSSN,\n cc: presets.maskCreditCard,\n cvv: presets.maskCVV,\n dateISO: presets.maskDateISO,\n ip: presets.maskIPv4,\n ipv6: presets.maskIPv6,\n mac: presets.maskMacAddress,\n color: presets.maskColorHex,\n iban: presets.maskIBAN,\n};\n"],"mappings":"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","names":["tokens","unmask","value","allowChars","stringValue","isNegative","escapedChars","regex","clean","unmaskCurrency","precision","digits","numberValue","createPatternMask","pattern","options","getRawLength","p","c","patterns","sortedPatterns","a","b","getActivePattern","rawValueLength","activePattern","candidate","formatValue","stringVal","showGuide","placeholder","masked","valueIndex","i","patternChar","token","dataChar","formatted","escapedPlaceholder","placeholderRegex","createCurrencyMask","prefix","suffix","thousand","decimal","allowNegative","saveRaw","formatFn","MAX_CURRENCY_DIGITS","integerPart","decimalPart","formattedInteger","sign","numericValue","finalNumber","createCreditCardMask","getCardPattern","rawValue","createDateMask","config","isISO","baseMask","day","month","year","d","m","safeString","maskBRL","createCurrencyMask","maskUSD","maskEUR","maskGBP","maskJPY","maskPercent","maskDecimal","maskInteger","maskCPF","createPatternMask","maskCNPJ","maskPhone","maskLandline","maskCEP","maskDate","createDateMask","val","cleanVal","parts","maskTime","maskCNH","maskRG","maskCPFCNPJ","maskPlate","value","raw","prefix","rest","maskUSPhone","maskZipCode","maskDateUS","maskSSN","maskCreditCard","createCreditCardMask","maskCVV","maskDateISO","maskMacAddress","maskColorHex","maskIPv4","maskIPv6","maskIBAN","bitMasks","maskBRL","maskUSD","maskEUR","maskGBP","maskJPY","maskPercent","maskDecimal","maskInteger","maskCPF","maskCNPJ","maskCPFCNPJ","maskRG","maskCEP","maskCNH","maskPlate","maskPhone","maskLandline","maskDate","maskTime","maskUSPhone","maskZipCode","maskDateUS","maskSSN","maskCreditCard","maskCVV","maskDateISO","maskIPv4","maskIPv6","maskMacAddress","maskColorHex","maskIBAN"]}
|
package/dist/chunk-33TGLA5D.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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 _chunkQKGTVKBUcjs = require('./chunk-QKGTVKBU.cjs');var _chunkTLUCO2ZNcjs = require('./chunk-TLUCO2ZN.cjs');function R(e){return{values:e.values,errors:e.errors,touched:e.touched,isValid:e.isValid,isDirty:e.isDirty,isSubmitting:e.isSubmitting,isValidating:e.isValidating,persist:e.persist}}function k(e){let o=e.getHistoryMetadata();return{...R(e.getState()),_meta:{canUndo:o.canUndo,canRedo:o.canRedo,totalSteps:o.historySize,currentIndex:o.historyIndex}}}function b(e){let o={};for(let[t,i]of Object.entries(e))o[t]=k(i);return o}function w(e){if(!e||typeof e!="object")return!1;let o=e;return typeof o.getState=="function"&&typeof o.getHistoryMetadata=="function"}function I(e){if(!w(e))return!1;let o=e;return typeof o.undo=="function"&&typeof o.redo=="function"&&typeof o.reset=="function"}function B(e,o){let t=e[o];return I(t)?t:null}var S=null,O=50;function N(e,o=_chunkTLUCO2ZNcjs.a){S&&(console.warn("[bit-form] Reiniciando ponte do DevTools (Fast Refresh detectado)."),S());let t=null,i=null,f,n=null,a=new Set,T=!1,u=r=>{_optionalChain([t, 'optionalAccess', _ => _.readyState])===WebSocket.OPEN&&t.send(JSON.stringify(r))},h=()=>{if(a.size===0)return;let r=b(Array.from(a).reduce((s,l)=>{let d=o.stores[l];return d&&(s[l]=d),s},{}));a.clear(),n=null,Object.keys(r).length>0&&u({type:"STATE_UPDATE",protocolVersion:1,payload:r})},D=()=>{n||(n=setTimeout(()=>{h()},O))},y=()=>{T=!1,t=new WebSocket(e),t.onopen=()=>{console.log("[bit-form] \u{1F50C} Conectado ao CLI DevTools via WebSocket."),u({type:"HELLO",protocolVersion:1,payload:{role:"server",protocolVersion:1}});let r=b(o.stores);Object.keys(r).length>0&&u({type:"STATE_UPDATE",protocolVersion:1,payload:r}),i=o.subscribe((s,l)=>{a.add(s),D()}),f=setInterval(()=>{u({type:"PING",protocolVersion:1})},3e4)},t.onmessage=r=>{try{let s=JSON.parse(r.data);if(_chunkQKGTVKBUcjs.c.call(void 0, s)){let{storeId:l,action:d}=s.payload,p=B(o.stores,l);if(!p)return;switch(d){case"undo":p.undo();break;case"redo":p.redo();break;case"reset":p.reset();break}}}catch(s){console.warn("[bit-form] Erro ao processar comando do CLI:",s)}},t.onclose=()=>{i&&i(),clearInterval(f),n&&(clearTimeout(n),n=null),a.clear(),T?console.log("[bit-form] Ponte antiga encerrada com sucesso."):(console.log("[bit-form] Conex\xE3o perdida. Reconectando em 3s..."),setTimeout(y,3e3))}};y();let m=()=>{T=!0,i&&i(),clearInterval(f),n&&(clearTimeout(n),n=null),a.clear(),t&&(t.readyState===WebSocket.OPEN||t.readyState===WebSocket.CONNECTING)&&t.close(),S=null};return S=m,m}exports.a = b; exports.b = B; exports.c = N;
|
|
2
|
-
//# sourceMappingURL=chunk-33TGLA5D.cjs.map
|