@lehnihon/bit-form 2.2.3 → 2.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/dist/angular/index.cjs +1 -1
  2. package/dist/angular/index.cjs.map +1 -1
  3. package/dist/angular/index.d.cts +7 -5
  4. package/dist/angular/index.d.ts +7 -5
  5. package/dist/angular/index.js +1 -1
  6. package/dist/angular/index.js.map +1 -1
  7. package/dist/{bus-DHQHDwUp.d.ts → bus-B4zZmB9C.d.ts} +23 -10
  8. package/dist/{bus-CILR-ENq.d.cts → bus-BeAeZwWu.d.cts} +23 -10
  9. package/dist/chunk-2FDEJYA5.js +2 -0
  10. package/dist/chunk-2FDEJYA5.js.map +1 -0
  11. package/dist/chunk-3CARTBEN.cjs +2 -0
  12. package/dist/chunk-3CARTBEN.cjs.map +1 -0
  13. package/dist/chunk-3NUJVIAM.js +2 -0
  14. package/dist/chunk-3NUJVIAM.js.map +1 -0
  15. package/dist/chunk-64KSP4TP.js +2 -0
  16. package/dist/chunk-64KSP4TP.js.map +1 -0
  17. package/dist/chunk-77PK7U73.cjs +2 -0
  18. package/dist/chunk-77PK7U73.cjs.map +1 -0
  19. package/dist/chunk-CTURHI75.cjs +2 -0
  20. package/dist/chunk-CTURHI75.cjs.map +1 -0
  21. package/dist/chunk-DD6XWUMR.cjs +2 -0
  22. package/dist/chunk-DD6XWUMR.cjs.map +1 -0
  23. package/dist/chunk-FGJB4DHQ.js +2 -0
  24. package/dist/chunk-FGJB4DHQ.js.map +1 -0
  25. package/dist/chunk-FQLJOSF7.js +1 -0
  26. package/dist/chunk-FQLJOSF7.js.map +1 -0
  27. package/dist/chunk-GDRNKTHO.js +2 -0
  28. package/dist/chunk-GDRNKTHO.js.map +1 -0
  29. package/dist/chunk-GUU6EXFN.js +2 -0
  30. package/dist/chunk-GUU6EXFN.js.map +1 -0
  31. package/dist/chunk-JIWR4KSZ.cjs +2 -0
  32. package/dist/chunk-JIWR4KSZ.cjs.map +1 -0
  33. package/dist/chunk-M2XR4C7T.js +2 -0
  34. package/dist/chunk-M2XR4C7T.js.map +1 -0
  35. package/dist/chunk-MFSDDSVG.cjs +1 -0
  36. package/dist/chunk-MFSDDSVG.cjs.map +1 -0
  37. package/dist/chunk-OZKLQRO6.cjs +2 -0
  38. package/dist/chunk-OZKLQRO6.cjs.map +1 -0
  39. package/dist/chunk-PFPGASVZ.cjs +2 -0
  40. package/dist/chunk-PFPGASVZ.cjs.map +1 -0
  41. package/dist/chunk-QWH2NBVB.js +2 -0
  42. package/dist/chunk-QWH2NBVB.js.map +1 -0
  43. package/dist/chunk-UMKOKAPD.js +2 -0
  44. package/dist/chunk-UMKOKAPD.js.map +1 -0
  45. package/dist/chunk-UT63HKR6.cjs +2 -0
  46. package/dist/chunk-UT63HKR6.cjs.map +1 -0
  47. package/dist/chunk-VQ7MK5VB.cjs +2 -0
  48. package/dist/chunk-VQ7MK5VB.cjs.map +1 -0
  49. package/dist/devtools/bridge.cjs +1 -1
  50. package/dist/devtools/bridge.cjs.map +1 -1
  51. package/dist/devtools/bridge.js +1 -1
  52. package/dist/devtools/bridge.js.map +1 -1
  53. package/dist/devtools/index.cjs +2 -2
  54. package/dist/devtools/index.cjs.map +1 -1
  55. package/dist/devtools/index.js +1 -1
  56. package/dist/devtools/index.js.map +1 -1
  57. package/dist/field-binding-BXw0Ku2c.d.cts +12 -0
  58. package/dist/field-binding-BXw0Ku2c.d.ts +12 -0
  59. package/dist/index.cjs +1 -1
  60. package/dist/index.cjs.map +1 -1
  61. package/dist/index.d.cts +37 -58
  62. package/dist/index.d.ts +37 -58
  63. package/dist/index.js +1 -1
  64. package/dist/mask.cjs +1 -1
  65. package/dist/mask.cjs.map +1 -1
  66. package/dist/mask.js +1 -1
  67. package/dist/mask.js.map +1 -1
  68. package/dist/{public-types-SU17BarA.d.cts → public-types-BQXaxmAE.d.cts} +9 -9
  69. package/dist/{public-types-Bgws0aVJ.d.ts → public-types-CVgFf_qY.d.ts} +9 -9
  70. package/dist/react/index.cjs +1 -1
  71. package/dist/react/index.cjs.map +1 -1
  72. package/dist/react/index.d.cts +7 -6
  73. package/dist/react/index.d.ts +7 -6
  74. package/dist/react/index.js +1 -1
  75. package/dist/react/index.js.map +1 -1
  76. package/dist/react-native/index.cjs +1 -1
  77. package/dist/react-native/index.d.cts +5 -4
  78. package/dist/react-native/index.d.ts +5 -4
  79. package/dist/react-native/index.js +1 -1
  80. package/dist/resolvers/index.cjs +2 -0
  81. package/dist/resolvers/index.cjs.map +1 -0
  82. package/dist/resolvers/index.d.cts +9 -0
  83. package/dist/resolvers/index.d.ts +9 -0
  84. package/dist/resolvers/index.js +2 -0
  85. package/dist/resolvers/index.js.map +1 -0
  86. package/dist/resolvers/joi.cjs +1 -1
  87. package/dist/resolvers/joi.cjs.map +1 -1
  88. package/dist/resolvers/joi.d.cts +1 -1
  89. package/dist/resolvers/joi.d.ts +1 -1
  90. package/dist/resolvers/joi.js +1 -1
  91. package/dist/resolvers/joi.js.map +1 -1
  92. package/dist/resolvers/types.cjs +2 -1
  93. package/dist/resolvers/types.cjs.map +1 -1
  94. package/dist/resolvers/types.js +1 -0
  95. package/dist/resolvers/yup.cjs +1 -1
  96. package/dist/resolvers/yup.cjs.map +1 -1
  97. package/dist/resolvers/yup.d.cts +1 -1
  98. package/dist/resolvers/yup.d.ts +1 -1
  99. package/dist/resolvers/yup.js +1 -1
  100. package/dist/resolvers/yup.js.map +1 -1
  101. package/dist/resolvers/zod.cjs +1 -1
  102. package/dist/resolvers/zod.cjs.map +1 -1
  103. package/dist/resolvers/zod.d.cts +1 -1
  104. package/dist/resolvers/zod.d.ts +1 -1
  105. package/dist/resolvers/zod.js +1 -1
  106. package/dist/resolvers/zod.js.map +1 -1
  107. package/dist/{types-C2mpfhp1.d.cts → upload-EXnJLq8k.d.cts} +1 -1
  108. package/dist/{types-C2mpfhp1.d.ts → upload-EXnJLq8k.d.ts} +1 -1
  109. package/dist/{use-bit-persist-BlR-hHk6.d.ts → use-bit-persist-CIVN-oIi.d.cts} +8 -6
  110. package/dist/{use-bit-persist-DEWMhvit.d.cts → use-bit-persist-iPWLbD8l.d.ts} +8 -6
  111. package/dist/vue/index.cjs +1 -1
  112. package/dist/vue/index.cjs.map +1 -1
  113. package/dist/vue/index.d.cts +4 -3
  114. package/dist/vue/index.d.ts +4 -3
  115. package/dist/vue/index.js +1 -1
  116. package/dist/vue/index.js.map +1 -1
  117. package/package.json +25 -1
  118. package/dist/chunk-3MUULXXZ.js +0 -2
  119. package/dist/chunk-3MUULXXZ.js.map +0 -1
  120. package/dist/chunk-7MBRAKBL.js +0 -2
  121. package/dist/chunk-7MBRAKBL.js.map +0 -1
  122. package/dist/chunk-ER2DNS7T.cjs +0 -2
  123. package/dist/chunk-ER2DNS7T.cjs.map +0 -1
  124. package/dist/chunk-FEW3ABPD.js +0 -2
  125. package/dist/chunk-FEW3ABPD.js.map +0 -1
  126. package/dist/chunk-JO37BU2C.cjs +0 -2
  127. package/dist/chunk-JO37BU2C.cjs.map +0 -1
  128. package/dist/chunk-NNKZFXEK.cjs +0 -2
  129. package/dist/chunk-NNKZFXEK.cjs.map +0 -1
  130. package/dist/chunk-PA6T2CBR.cjs +0 -2
  131. package/dist/chunk-PA6T2CBR.cjs.map +0 -1
  132. package/dist/chunk-T3XN5O7V.cjs +0 -2
  133. package/dist/chunk-T3XN5O7V.cjs.map +0 -1
  134. package/dist/chunk-ULC4OPIQ.js +0 -2
  135. package/dist/chunk-ULC4OPIQ.js.map +0 -1
  136. package/dist/chunk-VDWCFNA6.js +0 -2
  137. package/dist/chunk-VDWCFNA6.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -1,53 +1,18 @@
1
1
  import { B as BitMask, a as BitMaskName } from './types-D8DgIUhJ.js';
2
- import { B as BitState, a as BitTransformFn, b as BitFieldChangeEvent, c as BitBeforeSubmitEvent, d as BitAfterSubmitEvent, e as BitFieldDefinition, f as BitErrors, g as BitBeforeValidateEvent, h as BitAfterValidateEvent, i as BitConfig, j as BitComputedFn, k as BitPath, l as BitFieldState, m as BitPathValue, n as BitFieldChangeMeta, D as DeepPartial, o as BitArrayPath, p as BitArrayItem } from './bus-DHQHDwUp.js';
3
- export { q as BitFieldConditional, r as BitFieldValidation, s as BitHistoryConfig, t as BitPersistConfig, u as BitPersistMode, v as BitPersistStorageAdapter, w as BitPlugin, x as BitPluginContext, y as BitPluginErrorEvent, z as BitPluginHooks, A as BitTouched, C as BitValidationConfig, S as ScopeStatus, V as ValidateScopeResult, E as ValidatorFn, F as bitBus } from './bus-DHQHDwUp.js';
4
- import { B as BitResolvedConfig, a as BitValidationOptions, b as BitSelector, c as BitSelectorSubscriptionOptions, d as BitHistoryMetadata, e as BitStoreApi, f as BitStoreHooksApi } from './public-types-Bgws0aVJ.js';
5
- export { g as BitEqualityFn, h as BitFrameworkConfig, i as BitPersistMetadata } from './public-types-Bgws0aVJ.js';
6
- export { B as BitDeleteUploadFn, a as BitUploadFn, b as BitUploadResult } from './types-C2mpfhp1.js';
2
+ import { o as BitComputedFn, B as BitConfig, a as BitFieldDefinition, p as BitTransformFn, e as BitState, f as BitPath, m as BitFieldState, g as BitPathValue, q as BitFieldChangeMeta, h as DeepPartial, i as BitErrors, j as BitPersistMetadata, k as BitArrayPath, l as BitArrayItem, r as BitBeforeValidateEvent, s as BitAfterValidateEvent, t as BitBeforeSubmitEvent, u as BitAfterSubmitEvent, v as BitFieldChangeEvent } from './bus-B4zZmB9C.js';
3
+ export { w as BitFieldConditional, x as BitFieldValidation, y as BitHistoryConfig, z as BitPersistConfig, A as BitPersistMode, C as BitPersistStorageAdapter, d as BitPlugin, E as BitPluginContext, F as BitPluginErrorEvent, G as BitPluginHooks, H as BitTouched, I as BitValidationConfig, S as ScopeStatus, n as ValidateScopeResult, V as ValidatorFn, J as bitBus } from './bus-B4zZmB9C.js';
4
+ import { B as BitFrameworkConfig, a as BitSelector, b as BitSelectorSubscriptionOptions, c as BitHistoryMetadata, d as BitValidationOptions, e as BitStoreApi, f as BitStoreHooksApi } from './public-types-CVgFf_qY.js';
5
+ export { g as BitEqualityFn } from './public-types-CVgFf_qY.js';
6
+ export { a as BitDeleteUploadFn, B as BitUploadFn, b as BitUploadResult } from './upload-EXnJLq8k.js';
7
7
 
8
- interface BitLifecycleStorePort<T extends object> {
9
- getState: () => BitState<T>;
10
- internalUpdateState: (partial: Partial<BitState<T>>, changedPaths?: string[]) => void;
11
- internalSaveSnapshot: () => void;
12
- getTransformEntries: () => [string, BitTransformFn<T>][];
13
- config: BitResolvedConfig<T>;
14
- updateDependencies: (changedPath: string, newValues: T) => string[];
15
- isFieldHidden: (path: string) => boolean;
16
- evaluateAllDependencies: (values: T) => void;
17
- getHiddenFields: () => string[];
18
- clearFieldValidation: (path: string) => void;
19
- triggerValidation: (scopeFields?: string[]) => void;
20
- handleFieldAsyncValidation: (path: string, value: any) => void;
21
- cancelAllValidations: () => void;
22
- validateNow: (options?: BitValidationOptions) => Promise<boolean>;
23
- hasValidationsInProgress: (scopeFields?: string[]) => boolean;
24
- updateDirtyForPath: (path: string, nextValues: T, baselineValues: T) => boolean;
25
- rebuildDirtyState: (nextValues: T, baselineValues: T) => boolean;
26
- clearDirtyState: () => void;
27
- buildDirtyValues: (values: T) => Partial<T>;
28
- resetHistory: (initialValues: T) => void;
29
- emitFieldChange: (event: BitFieldChangeEvent<T>) => void;
30
- emitBeforeSubmit: (event: BitBeforeSubmitEvent<T>) => Promise<void>;
31
- emitAfterSubmit: (event: BitAfterSubmitEvent<T>) => Promise<void>;
32
- emitOperationalError: (event: {
33
- source: "submit";
34
- error: unknown;
35
- payload?: unknown;
36
- }) => Promise<void>;
8
+ interface BitComputedEntry<T extends object> {
9
+ path: string;
10
+ compute: BitComputedFn<T>;
11
+ dependsOn?: readonly string[];
37
12
  }
38
13
 
39
- interface BitValidationStorePort<T extends object> {
40
- getState: () => BitState<T>;
41
- internalUpdateState: (partial: Partial<BitState<T>>) => void;
42
- setError: (path: string, message: string | undefined) => void;
43
- validate: (opts: BitValidationOptions) => Promise<boolean>;
44
- getFieldConfig: (path: string) => BitFieldDefinition<T> | undefined;
45
- getScopeFields: (scopeName: string) => string[];
46
- config: BitResolvedConfig<T>;
47
- getRequiredErrors: (values: T) => BitErrors<T>;
48
- getHiddenFields: () => string[];
49
- emitBeforeValidate: (event: BitBeforeValidateEvent<T>) => Promise<void>;
50
- emitAfterValidate: (event: BitAfterValidateEvent<T>) => Promise<void>;
14
+ interface BitValidationTriggerOptions {
15
+ forceDebounce?: boolean;
51
16
  }
52
17
 
53
18
  /**
@@ -60,16 +25,26 @@ interface BitValidationStorePort<T extends object> {
60
25
  * - Feature managers provide optional enhancements (history, arrays, scopes)
61
26
  * - Query/mutation managers organize domain-specific operations
62
27
  */
63
- declare class BitStore<T extends object = any> implements BitValidationStorePort<T>, BitLifecycleStorePort<T> {
28
+ declare class BitStore<T extends object = any> {
64
29
  private state;
65
30
  private readonly subscriptions;
66
31
  private readonly effects;
67
32
  private readonly capabilities;
68
- config: BitResolvedConfig<T>;
69
- storeId: string;
70
- private readonly depsMg;
71
- private readonly computedMg;
72
- private readonly dirtyMg;
33
+ config: BitFrameworkConfig<T>;
34
+ readonly storeId: string;
35
+ private readonly dependencyManager;
36
+ private readonly computedManager;
37
+ private readonly dirtyManager;
38
+ private scopeFieldsIndex;
39
+ private computedEntriesCache;
40
+ private transformEntriesCache;
41
+ private batchDepth;
42
+ private batchedState;
43
+ private batchedChangedPaths;
44
+ private batchedValuesChanged;
45
+ private invalidateFieldIndexes;
46
+ private registerCachedFieldIndexes;
47
+ private unregisterCachedFieldIndexes;
73
48
  private getCapability;
74
49
  private get validation();
75
50
  private get lifecycle();
@@ -79,10 +54,10 @@ declare class BitStore<T extends object = any> implements BitValidationStorePort
79
54
  private get query();
80
55
  private get error();
81
56
  constructor(config?: BitConfig<T>);
82
- getConfig(): BitResolvedConfig<T>;
57
+ getConfig(): BitFrameworkConfig<T>;
83
58
  getFieldConfig(path: string): BitFieldDefinition<T> | undefined;
84
59
  getScopeFields(scopeName: string): string[];
85
- getComputedEntries(): [string, BitComputedFn<T>][];
60
+ getComputedEntries(): BitComputedEntry<T>[];
86
61
  getTransformEntries(): [string, BitTransformFn<T>][];
87
62
  resolveMask(path: string): BitMask | undefined;
88
63
  getState(): BitState<T>;
@@ -91,7 +66,7 @@ declare class BitStore<T extends object = any> implements BitValidationStorePort
91
66
  get isSubmitting(): boolean;
92
67
  get isDirty(): boolean;
93
68
  registerField(path: string, config: BitFieldDefinition<T>): void;
94
- unregisterField<P extends BitPath<T>>(path: P): void;
69
+ unregisterField(path: string): void;
95
70
  unregisterPrefix(prefix: string): void;
96
71
  isHidden<P extends BitPath<T>>(path: P): boolean;
97
72
  isRequired<P extends BitPath<T>>(path: P): boolean;
@@ -112,9 +87,11 @@ declare class BitStore<T extends object = any> implements BitValidationStorePort
112
87
  setErrors(errors: BitErrors<T>): void;
113
88
  setServerErrors(serverErrors: Record<string, string[] | string>): void;
114
89
  reset(): void;
90
+ transaction<TResult>(callback: () => TResult): TResult;
115
91
  submit(onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>): Promise<void>;
116
92
  registerMask(name: BitMaskName, mask: BitMask): void;
117
93
  getDirtyValues(): Partial<T>;
94
+ getPersistMetadata(): BitPersistMetadata;
118
95
  restorePersisted(): Promise<boolean>;
119
96
  forceSave(): Promise<void>;
120
97
  clearPersisted(): Promise<void>;
@@ -141,7 +118,7 @@ declare class BitStore<T extends object = any> implements BitValidationStorePort
141
118
  payload?: unknown;
142
119
  }): Promise<void>;
143
120
  hasValidationsInProgress(scopeFields?: string[]): boolean;
144
- triggerValidation(scopeFields?: string[]): void;
121
+ triggerValidation(scopeFields?: string[], options?: BitValidationTriggerOptions): void;
145
122
  getStepStatus(scopeName: string): {
146
123
  hasErrors: boolean;
147
124
  isDirty: boolean;
@@ -151,7 +128,7 @@ declare class BitStore<T extends object = any> implements BitValidationStorePort
151
128
  updateDependencies(changedPath: string, newValues: T): string[];
152
129
  isFieldHidden(path: string): boolean;
153
130
  evaluateAllDependencies(values: T): void;
154
- getHiddenFields(): string[];
131
+ getHiddenFields(): ReadonlySet<string>;
155
132
  getRequiredErrors(values: T): BitErrors<T>;
156
133
  clearFieldValidation(path: string): void;
157
134
  handleFieldAsyncValidation(path: string, value: any): void;
@@ -161,11 +138,13 @@ declare class BitStore<T extends object = any> implements BitValidationStorePort
161
138
  rebuildDirtyState(nextValues: T, baselineValues: T): boolean;
162
139
  clearDirtyState(): void;
163
140
  buildDirtyValues(values: T): Partial<T>;
141
+ batchStateUpdates<TResult>(callback: () => TResult): TResult;
164
142
  resetHistory(initialValues: T): void;
165
143
  internalUpdateState(partialState: Partial<BitState<T>>, changedPaths?: string[]): void;
166
144
  internalSaveSnapshot(): void;
167
145
  private applyPersistedValues;
168
146
  cleanup(): void;
147
+ private flushBatchedStateUpdates;
169
148
  }
170
149
 
171
150
  declare function resolveBitStoreForHooks<T extends object>(store: BitStoreApi<T> | BitStore<T>): BitStoreHooksApi<T>;
@@ -192,4 +171,4 @@ declare function isValidationErrorShape(x: unknown): x is Record<string, string
192
171
  */
193
172
  declare function extractServerErrors(x: unknown): Record<string, string | string[]>;
194
173
 
195
- export { BitAfterSubmitEvent, BitAfterValidateEvent, BitArrayItem, BitArrayPath, BitBeforeSubmitEvent, BitBeforeValidateEvent, BitComputedFn, BitConfig, BitErrors, BitFieldChangeEvent, BitFieldChangeMeta, BitFieldDefinition, BitFieldState, BitHistoryMetadata, BitPath, BitPathValue, BitSelector, BitSelectorSubscriptionOptions, BitState, BitStore, BitStoreApi, BitStoreHooksApi, BitTransformFn, BitValidationOptions, DeepPartial, cleanPrefixedKeys, createBitStore, deepClone, deepEqual, deepMerge, extractServerErrors, getDeepValue, isValidationErrorShape, resolveBitStoreForHooks, setDeepValue, valueEqual };
174
+ export { BitAfterSubmitEvent, BitAfterValidateEvent, BitArrayItem, BitArrayPath, BitBeforeSubmitEvent, BitBeforeValidateEvent, BitComputedFn, BitConfig, BitErrors, BitFieldChangeEvent, BitFieldChangeMeta, BitFieldDefinition, BitFieldState, BitFrameworkConfig, BitHistoryMetadata, BitPath, BitPathValue, BitPersistMetadata, BitSelector, BitSelectorSubscriptionOptions, BitState, BitStoreApi, BitStoreHooksApi, BitTransformFn, BitValidationOptions, DeepPartial, cleanPrefixedKeys, createBitStore, deepClone, deepEqual, deepMerge, extractServerErrors, getDeepValue, isValidationErrorShape, resolveBitStoreForHooks, setDeepValue, valueEqual };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{a as o,b as r,c as e,d as f,e as m,f as p,g as t,h as x,i as a,j as b,k as c,l as d,m as g}from"./chunk-ULC4OPIQ.js";import"./chunk-VDWCFNA6.js";export{c as BitStore,b as bitBus,t as cleanPrefixedKeys,g as createBitStore,o as deepClone,f as deepEqual,r as deepMerge,a as extractServerErrors,m as getDeepValue,x as isValidationErrorShape,d as resolveBitStoreForHooks,p as setDeepValue,e as valueEqual};
1
+ import{a as o,b as r,c as e,d as f,e as m,f as p,g as t,h as x,i as a,j as b,k as c,l as d}from"./chunk-64KSP4TP.js";export{b as bitBus,t as cleanPrefixedKeys,d as createBitStore,o as deepClone,f as deepEqual,r as deepMerge,a as extractServerErrors,m as getDeepValue,x as isValidationErrorShape,c as resolveBitStoreForHooks,p as setDeepValue,e as valueEqual};
2
2
  //# sourceMappingURL=index.js.map
package/dist/mask.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkPA6T2CBRcjs = require('./chunk-PA6T2CBR.cjs');exports.bitMasks = _chunkPA6T2CBRcjs.N; exports.createCreditCardMask = _chunkPA6T2CBRcjs.e; exports.createCurrencyMask = _chunkPA6T2CBRcjs.d; exports.createDateMask = _chunkPA6T2CBRcjs.f; exports.createPatternMask = _chunkPA6T2CBRcjs.c; exports.maskBRL = _chunkPA6T2CBRcjs.g; exports.maskCEP = _chunkPA6T2CBRcjs.s; exports.maskCNH = _chunkPA6T2CBRcjs.v; exports.maskCNPJ = _chunkPA6T2CBRcjs.p; exports.maskCPF = _chunkPA6T2CBRcjs.o; exports.maskCPFCNPJ = _chunkPA6T2CBRcjs.x; exports.maskCVV = _chunkPA6T2CBRcjs.E; exports.maskColorHex = _chunkPA6T2CBRcjs.H; exports.maskCreditCard = _chunkPA6T2CBRcjs.D; exports.maskDate = _chunkPA6T2CBRcjs.t; exports.maskDateISO = _chunkPA6T2CBRcjs.F; exports.maskDateUS = _chunkPA6T2CBRcjs.B; exports.maskDecimal = _chunkPA6T2CBRcjs.m; exports.maskEUR = _chunkPA6T2CBRcjs.i; exports.maskGBP = _chunkPA6T2CBRcjs.j; exports.maskIBAN = _chunkPA6T2CBRcjs.K; exports.maskIPv4 = _chunkPA6T2CBRcjs.I; exports.maskIPv6 = _chunkPA6T2CBRcjs.J; exports.maskInteger = _chunkPA6T2CBRcjs.n; exports.maskJPY = _chunkPA6T2CBRcjs.k; exports.maskLandline = _chunkPA6T2CBRcjs.r; exports.maskMacAddress = _chunkPA6T2CBRcjs.G; exports.maskPercent = _chunkPA6T2CBRcjs.l; exports.maskPhone = _chunkPA6T2CBRcjs.q; exports.maskPlate = _chunkPA6T2CBRcjs.y; exports.maskRG = _chunkPA6T2CBRcjs.w; exports.maskSSN = _chunkPA6T2CBRcjs.C; exports.maskTime = _chunkPA6T2CBRcjs.u; exports.maskUSD = _chunkPA6T2CBRcjs.h; exports.maskUSPhone = _chunkPA6T2CBRcjs.z; exports.maskZipCode = _chunkPA6T2CBRcjs.A; exports.unmask = _chunkPA6T2CBRcjs.a; exports.unmaskCurrency = _chunkPA6T2CBRcjs.b;
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; }require('./chunk-PFPGASVZ.cjs');var ee={"#":/\d/,A:/[a-zA-Z]/,X:/[a-zA-Z0-9]/,H:/[0-9a-fA-F]/,U:/[A-Z]/,L:/[a-z]/,"*":/./},x= exports.unmask =(s,r)=>{if(s==null||s==="")return"";let e=String(s),m=e.startsWith("-"),a=r?r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"):"",i=new RegExp(`[^a-zA-Z0-9${a}]`,"g"),p=e.replace(i,"");return m&&p&&!p.startsWith("-")?`-${p}`:p},te= exports.unmaskCurrency =(s,r=2)=>{if(typeof s=="number")return s;if(!s)return 0;let e=String(s),m=e.includes("-"),a=e.replace(/\D/g,"");if(!a)return 0;let i=parseInt(a,10)/Math.pow(10,r);return m?-i:i},n= exports.createPatternMask =(s,r)=>{let e=o=>o.split("").filter(t=>ee[t]).length,a=[...Array.isArray(s)?s:[s]].sort((o,t)=>e(o)-e(t)),i=o=>{let t=a[a.length-1];for(let c of a)if(o<=e(c)){t=c;break}return t},p=o=>{let t=x(o,_optionalChain([r, 'optionalAccess', _2 => _2.allowChars]));if(!t&&!_optionalChain([r, 'optionalAccess', _3 => _3.guide]))return"";let c=i(t.length),k=_optionalChain([r, 'optionalAccess', _4 => _4.guide])||!1,f=_optionalChain([r, 'optionalAccess', _5 => _5.placeholderChar])||"_",d="",P=0;for(let g=0;g<c.length;g++){let C=c[g],h=ee[C];if(P<t.length){let u=t[P];if(h)if(C==="U"&&(u=u.toUpperCase()),C==="L"&&(u=u.toLowerCase()),h.test(u))d+=u,P++;else if(k)d+=f;else break;else d+=C,u===C&&P++}else if(k)d+=h?f:C;else break}return d};return{format:p,parse:o=>{if(_optionalChain([r, 'optionalAccess', _6 => _6.customParse]))return r.customParse(o);let t=p(o);if(_optionalChain([r, 'optionalAccess', _7 => _7.saveRaw])){if(_optionalChain([r, 'optionalAccess', _8 => _8.guide])){let k=(r.placeholderChar||"_").replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),f=new RegExp(k,"g");return t.replace(f,"")}return t}return x(t,_optionalChain([r, 'optionalAccess', _9 => _9.allowChars]))}}},l= exports.createCurrencyMask =({prefix:s="",suffix:r="",thousand:e,decimal:m,precision:a=2,allowNegative:i=!0,saveRaw:p=!1})=>{let o=t=>{if(t==null||t==="")return"";let c="";if(typeof t=="number"?c=Math.abs(t).toFixed(a).replace(/\D/g,""):c=String(t).replace(/\D/g,""),!c&&String(t).includes("-")&&i)return"-";if(!c)return"";c=c.padStart(a+1,"0");let k=a>0?c.slice(0,-a).replace(/^0+(?=\d)/,"")||"0":c.replace(/^0+(?=\d)/,"")||"0",f=a>0?c.slice(-a):"",d=k.replace(/\B(?=(\d{3})+(?!\d))/g,e),g=(typeof t=="number"?t<0:String(t).includes("-"))&&i?"-":"";return a===0?`${g}${s}${d}${r}`:`${g}${s}${d}${m}${f}${r}`};return{format:o,parse:t=>{let c=te(t,a),k=i?c:Math.abs(c);return p?o(k):k}}},D= exports.createCreditCardMask =s=>{let r=e=>/^3[47]/.test(e)?"#### ###### #####":/^3(?:0[0-5]|[68])/.test(e)?"#### ###### ####":"#### #### #### ####";return{format:e=>{let m=x(e,_optionalChain([s, 'optionalAccess', _10 => _10.allowChars])),a=r(m);return n(a,s).format(e)},parse:e=>{let m=x(e,_optionalChain([s, 'optionalAccess', _11 => _11.allowChars])),a=r(m);return n(a,s).parse(e)}}},H= exports.createDateMask =s=>{let e=(_optionalChain([s, 'optionalAccess', _12 => _12.format])||"DD/MM/YYYY")==="YYYY-MM-DD",m=n(e?"####-##-##":"##/##/####",s);return{format:a=>{let i=x(a);if(!i)return"";let p="",o="",t="";if(e?(t=i.substring(0,4),o=i.substring(4,6),p=i.substring(6,8)):(p=i.substring(0,2),o=i.substring(2,4),t=i.substring(4,8)),p.length===2){let k=parseInt(p,10);k>31&&(p="31"),k===0&&(p="01")}if(o.length===2){let k=parseInt(o,10);k>12&&(o="12"),k===0&&(o="01")}let c=e?`${t}${o}${p}`:`${p}${o}${t}`;return m.format(c)},parse:a=>m.parse(a)}};var X=l({prefix:"R$ ",thousand:".",decimal:",",precision:2}),$= exports.maskUSD =l({prefix:"$",thousand:",",decimal:".",precision:2}),y= exports.maskEUR =l({suffix:" \u20AC",thousand:".",decimal:",",precision:2}),S= exports.maskGBP =l({prefix:"\xA3",thousand:",",decimal:".",precision:2}),B= exports.maskJPY =l({prefix:"\xA5",thousand:",",decimal:".",precision:0}),b= exports.maskPercent =l({suffix:"%",thousand:".",decimal:",",precision:1}),I= exports.maskDecimal =l({thousand:".",decimal:",",precision:2}),M= exports.maskInteger =l({thousand:".",decimal:",",precision:0}),N= exports.maskCPF =n("###.###.###-##"),U= exports.maskCNPJ =n("##.###.###/####-##"),R= exports.maskPhone =n(["(##) ####-####","(##) #####-####"]),Y= exports.maskLandline =n("(##) ####-####"),A= exports.maskCEP =n("#####-###"),V= exports.maskDate =H({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,"")}}),w= exports.maskTime =n("##:##"),L= exports.maskCNH =n("###########"),Z= exports.maskRG =n("##.###.###-X"),E= exports.maskCPFCNPJ =n(["###.###.###-##","##.###.###/####-##"]),F= exports.maskPlate ={format(s){let r=String(_nullishCoalesce(s, () => (""))).replace(/[^a-zA-Z0-9]/g,"").toUpperCase().slice(0,7);if(r.length===0)return"";let e=r.slice(0,3),m=r.slice(3);return m.length===0?e:m.length>=2&&/[A-Z]/.test(m[1])?`${e}${m}`:`${e}-${m}`},parse(s){return String(_nullishCoalesce(s, () => (""))).replace(/[^a-zA-Z0-9]/g,"").toUpperCase().slice(0,7)}},J= exports.maskUSPhone =n("(###) ###-####"),O= exports.maskZipCode =n("#####-####"),z= exports.maskDateUS =n("##/##/####"),G= exports.maskSSN =n("###-##-####"),T= exports.maskCreditCard =D(),j= exports.maskCVV =n("####"),_= exports.maskDateISO =H({format:"YYYY-MM-DD",saveRaw:!0,guide:!0}),W= exports.maskMacAddress =n("HH:HH:HH:HH:HH:HH"),q= exports.maskColorHex =n("#HHHHHH"),K= exports.maskIPv4 =n("###.###.###.###"),Q= exports.maskIPv6 =n("HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH"),v= exports.maskIBAN =n("UU## XXXX XXXX XXXX XXXX XXXX XXXX XXXX XX",{allowChars:" "});var re={brl:X,usd:$,eur:y,gbp:S,jpy:B,percent:b,decimal:I,int:M,integer:M,cpf:N,cnpj:U,cpfCnpj:E,rg:Z,cep:A,cnh:L,plate:F,phone:R,landline:Y,date:V,time:w,usPhone:J,zipCode:O,dateUS:z,ssn:G,cc:T,cvv:j,dateISO:_,ip:K,ipv6:Q,mac:W,color:q,iban:v};exports.bitMasks = re; exports.createCreditCardMask = D; exports.createCurrencyMask = l; exports.createDateMask = H; exports.createPatternMask = n; exports.maskBRL = X; exports.maskCEP = A; exports.maskCNH = L; exports.maskCNPJ = U; exports.maskCPF = N; exports.maskCPFCNPJ = E; exports.maskCVV = j; exports.maskColorHex = q; exports.maskCreditCard = T; exports.maskDate = V; exports.maskDateISO = _; exports.maskDateUS = z; exports.maskDecimal = I; exports.maskEUR = y; exports.maskGBP = S; exports.maskIBAN = v; exports.maskIPv4 = K; exports.maskIPv6 = Q; exports.maskInteger = M; exports.maskJPY = B; exports.maskLandline = Y; exports.maskMacAddress = W; exports.maskPercent = b; exports.maskPhone = R; exports.maskPlate = F; exports.maskRG = Z; exports.maskSSN = G; exports.maskTime = w; exports.maskUSD = $; exports.maskUSPhone = J; exports.maskZipCode = O; exports.unmask = x; exports.unmaskCurrency = te;
2
2
  //# sourceMappingURL=mask.cjs.map
package/dist/mask.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/mask.cjs"],"names":[],"mappings":"AAAA,iIAA4R,yjDAAsmB","file":"/home/runner/work/bit-form/bit-form/dist/mask.cjs"}
1
+ {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/mask.cjs","../src/core/mask/creators.ts"],"names":["tokens","unmask","value","allowChars","stringValue","isNegative","escapedChars","regex","clean"],"mappings":"AAAA,itBAA4B,ICStBA,EAAAA,CAAmB,CACvB,GAAA,CAAK,IAAA,CACL,CAAA,CAAG,UAAA,CACH,CAAA,CAAG,aAAA,CACH,CAAA,CAAG,aAAA,CACH,CAAA,CAAG,OAAA,CACH,CAAA,CAAG,OAAA,CACH,GAAA,CAAK,GACP,CAAA,CAEaC,CAAAA,kBAAS,CACpBC,CAAAA,CACAC,CAAAA,CAAAA,EACW,CACX,EAAA,CAAID,CAAAA,EAAU,IAAA,EAA+BA,CAAAA,GAAU,EAAA,CAAI,MAAO,EAAA,CAClE,IAAME,CAAAA,CAAc,MAAA,CAAOF,CAAK,CAAA,CAC1BG,CAAAA,CAAaD,CAAAA,CAAY,UAAA,CAAW,GAAG,CAAA,CAEvCE,CAAAA,CAAeH,CAAAA,CACjBA,CAAAA,CAAW,OAAA,CAAQ,qBAAA,CAAuB,MAAM,CAAA,CAChD,EAAA,CACEI,CAAAA,CAAQ,IAAI,MAAA,CAAO,CAAA,WAAA,EAAcD,CAAY,CAAA,CAAA,CAAA,CAAK,GAAG,CAAA,CAErDE,CAAAA,CAAQJ,CAAAA,CAAY,OAAA,CAAQG,CAAAA,CAAO,EAAE,CAAA,CAC3C,OAAOF,CAAAA,EAAcG,CAAAA,EAAS,CAACA,CAAAA,CAAM,UAAA,CAAW,GAAG,CAAA,CAAI,CAAA,CAAA,EAAIA,CAAK,CAAA,CAAA","file":"/home/runner/work/bit-form/bit-form/dist/mask.cjs","sourcesContent":[null,"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 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\n if (typeof value === \"number\") {\n stringValue = Math.abs(value).toFixed(precision).replace(/\\D/g, \"\");\n } else {\n stringValue = String(value).replace(/\\D/g, \"\");\n }\n\n if (!stringValue && String(value).includes(\"-\") && allowNegative)\n return \"-\";\n if (!stringValue) return \"\";\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 = \"\";\n let month = \"\";\n let year = \"\";\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"]}
package/dist/mask.js CHANGED
@@ -1,2 +1,2 @@
1
- import{A as U,B as g,C as J,D as R,E as h,F as v,G as A,H as E,I as F,J as G,K as H,N as L,a,b as s,c as k,d as e,e as m,f as t,g as r,h as C,i as n,j as o,k as P,l as i,m as M,n as c,o as d,p,q as B,r as D,s as N,t as f,u,v as I,w as S,x as l,y as x,z as y}from"./chunk-VDWCFNA6.js";export{L as bitMasks,m as createCreditCardMask,e as createCurrencyMask,t as createDateMask,k as createPatternMask,r as maskBRL,N as maskCEP,I as maskCNH,p as maskCNPJ,d as maskCPF,l as maskCPFCNPJ,h as maskCVV,E as maskColorHex,R as maskCreditCard,f as maskDate,v as maskDateISO,g as maskDateUS,M as maskDecimal,n as maskEUR,o as maskGBP,H as maskIBAN,F as maskIPv4,G as maskIPv6,c as maskInteger,P as maskJPY,D as maskLandline,A as maskMacAddress,i as maskPercent,B as maskPhone,x as maskPlate,S as maskRG,J as maskSSN,u as maskTime,C as maskUSD,y as maskUSPhone,U as maskZipCode,a as unmask,s as unmaskCurrency};
1
+ import"./chunk-3NUJVIAM.js";var ee={"#":/\d/,A:/[a-zA-Z]/,X:/[a-zA-Z0-9]/,H:/[0-9a-fA-F]/,U:/[A-Z]/,L:/[a-z]/,"*":/./},x=(s,r)=>{if(s==null||s==="")return"";let e=String(s),m=e.startsWith("-"),a=r?r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"):"",i=new RegExp(`[^a-zA-Z0-9${a}]`,"g"),p=e.replace(i,"");return m&&p&&!p.startsWith("-")?`-${p}`:p},te=(s,r=2)=>{if(typeof s=="number")return s;if(!s)return 0;let e=String(s),m=e.includes("-"),a=e.replace(/\D/g,"");if(!a)return 0;let i=parseInt(a,10)/Math.pow(10,r);return m?-i:i},n=(s,r)=>{let e=o=>o.split("").filter(t=>ee[t]).length,a=[...Array.isArray(s)?s:[s]].sort((o,t)=>e(o)-e(t)),i=o=>{let t=a[a.length-1];for(let c of a)if(o<=e(c)){t=c;break}return t},p=o=>{let t=x(o,r?.allowChars);if(!t&&!r?.guide)return"";let c=i(t.length),k=r?.guide||!1,f=r?.placeholderChar||"_",d="",P=0;for(let g=0;g<c.length;g++){let C=c[g],h=ee[C];if(P<t.length){let u=t[P];if(h)if(C==="U"&&(u=u.toUpperCase()),C==="L"&&(u=u.toLowerCase()),h.test(u))d+=u,P++;else if(k)d+=f;else break;else d+=C,u===C&&P++}else if(k)d+=h?f:C;else break}return d};return{format:p,parse:o=>{if(r?.customParse)return r.customParse(o);let t=p(o);if(r?.saveRaw){if(r?.guide){let k=(r.placeholderChar||"_").replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),f=new RegExp(k,"g");return t.replace(f,"")}return t}return x(t,r?.allowChars)}}},l=({prefix:s="",suffix:r="",thousand:e,decimal:m,precision:a=2,allowNegative:i=!0,saveRaw:p=!1})=>{let o=t=>{if(t==null||t==="")return"";let c="";if(typeof t=="number"?c=Math.abs(t).toFixed(a).replace(/\D/g,""):c=String(t).replace(/\D/g,""),!c&&String(t).includes("-")&&i)return"-";if(!c)return"";c=c.padStart(a+1,"0");let k=a>0?c.slice(0,-a).replace(/^0+(?=\d)/,"")||"0":c.replace(/^0+(?=\d)/,"")||"0",f=a>0?c.slice(-a):"",d=k.replace(/\B(?=(\d{3})+(?!\d))/g,e),g=(typeof t=="number"?t<0:String(t).includes("-"))&&i?"-":"";return a===0?`${g}${s}${d}${r}`:`${g}${s}${d}${m}${f}${r}`};return{format:o,parse:t=>{let c=te(t,a),k=i?c:Math.abs(c);return p?o(k):k}}},D=s=>{let r=e=>/^3[47]/.test(e)?"#### ###### #####":/^3(?:0[0-5]|[68])/.test(e)?"#### ###### ####":"#### #### #### ####";return{format:e=>{let m=x(e,s?.allowChars),a=r(m);return n(a,s).format(e)},parse:e=>{let m=x(e,s?.allowChars),a=r(m);return n(a,s).parse(e)}}},H=s=>{let e=(s?.format||"DD/MM/YYYY")==="YYYY-MM-DD",m=n(e?"####-##-##":"##/##/####",s);return{format:a=>{let i=x(a);if(!i)return"";let p="",o="",t="";if(e?(t=i.substring(0,4),o=i.substring(4,6),p=i.substring(6,8)):(p=i.substring(0,2),o=i.substring(2,4),t=i.substring(4,8)),p.length===2){let k=parseInt(p,10);k>31&&(p="31"),k===0&&(p="01")}if(o.length===2){let k=parseInt(o,10);k>12&&(o="12"),k===0&&(o="01")}let c=e?`${t}${o}${p}`:`${p}${o}${t}`;return m.format(c)},parse:a=>m.parse(a)}};var X=l({prefix:"R$ ",thousand:".",decimal:",",precision:2}),$=l({prefix:"$",thousand:",",decimal:".",precision:2}),y=l({suffix:" \u20AC",thousand:".",decimal:",",precision:2}),S=l({prefix:"\xA3",thousand:",",decimal:".",precision:2}),B=l({prefix:"\xA5",thousand:",",decimal:".",precision:0}),b=l({suffix:"%",thousand:".",decimal:",",precision:1}),I=l({thousand:".",decimal:",",precision:2}),M=l({thousand:".",decimal:",",precision:0}),N=n("###.###.###-##"),U=n("##.###.###/####-##"),R=n(["(##) ####-####","(##) #####-####"]),Y=n("(##) ####-####"),A=n("#####-###"),V=H({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,"")}}),w=n("##:##"),L=n("###########"),Z=n("##.###.###-X"),E=n(["###.###.###-##","##.###.###/####-##"]),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),m=r.slice(3);return m.length===0?e:m.length>=2&&/[A-Z]/.test(m[1])?`${e}${m}`:`${e}-${m}`},parse(s){return String(s??"").replace(/[^a-zA-Z0-9]/g,"").toUpperCase().slice(0,7)}},J=n("(###) ###-####"),O=n("#####-####"),z=n("##/##/####"),G=n("###-##-####"),T=D(),j=n("####"),_=H({format:"YYYY-MM-DD",saveRaw:!0,guide:!0}),W=n("HH:HH:HH:HH:HH:HH"),q=n("#HHHHHH"),K=n("###.###.###.###"),Q=n("HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH"),v=n("UU## XXXX XXXX XXXX XXXX XXXX XXXX XXXX XX",{allowChars:" "});var re={brl:X,usd:$,eur:y,gbp:S,jpy:B,percent:b,decimal:I,int:M,integer:M,cpf:N,cnpj:U,cpfCnpj:E,rg:Z,cep:A,cnh:L,plate:F,phone:R,landline:Y,date:V,time:w,usPhone:J,zipCode:O,dateUS:z,ssn:G,cc:T,cvv:j,dateISO:_,ip:K,ipv6:Q,mac:W,color:q,iban:v};export{re as bitMasks,D as createCreditCardMask,l as createCurrencyMask,H as createDateMask,n as createPatternMask,X as maskBRL,A as maskCEP,L as maskCNH,U as maskCNPJ,N as maskCPF,E as maskCPFCNPJ,j as maskCVV,q as maskColorHex,T as maskCreditCard,V as maskDate,_ as maskDateISO,z as maskDateUS,I as maskDecimal,y as maskEUR,S as maskGBP,v as maskIBAN,K as maskIPv4,Q as maskIPv6,M as maskInteger,B as maskJPY,Y as maskLandline,W as maskMacAddress,b as maskPercent,R as maskPhone,F as maskPlate,Z as maskRG,G as maskSSN,w as maskTime,$ as maskUSD,J as maskUSPhone,O as maskZipCode,x as unmask,te as unmaskCurrency};
2
2
  //# sourceMappingURL=mask.js.map
package/dist/mask.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
1
+ {"version":3,"sources":["../src/core/mask/creators.ts","../src/core/mask/presets.ts","../src/core/mask/index.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 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\n if (typeof value === \"number\") {\n stringValue = Math.abs(value).toFixed(precision).replace(/\\D/g, \"\");\n } else {\n stringValue = String(value).replace(/\\D/g, \"\");\n }\n\n if (!stringValue && String(value).includes(\"-\") && allowNegative)\n return \"-\";\n if (!stringValue) return \"\";\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 = \"\";\n let month = \"\";\n let year = \"\";\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","export * from \"./types\";\nexport * from \"./creators\";\nexport * from \"./presets\";\nexport * from \"./field-binding\";\n\nimport * as presets from \"./presets\";\nimport type { BitMask, BitBuiltInMaskName } from \"./types\";\n\nexport const bitMasks: Record<BitBuiltInMaskName, BitMask> = {\n // Moedas\n brl: presets.maskBRL,\n usd: presets.maskUSD,\n eur: presets.maskEUR,\n gbp: presets.maskGBP,\n jpy: presets.maskJPY,\n // Números\n percent: presets.maskPercent,\n decimal: presets.maskDecimal,\n int: presets.maskInteger,\n integer: presets.maskInteger,\n // Documentos BR\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 // Comunicação/Data\n phone: presets.maskPhone,\n landline: presets.maskLandline,\n date: presets.maskDate,\n time: presets.maskTime,\n // USA\n usPhone: presets.maskUSPhone,\n zipCode: presets.maskZipCode,\n dateUS: presets.maskDateUS,\n ssn: presets.maskSSN,\n // Tech/Global\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","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","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"]}
@@ -1,4 +1,4 @@
1
- import { i as BitConfig, E as ValidatorFn, e as BitFieldDefinition, G as DevToolsOptions, H as BitPersistResolvedConfig, w as BitPlugin, B as BitState, k as BitPath, m as BitPathValue, D as DeepPartial, f as BitErrors, o as BitArrayPath, p as BitArrayItem, S as ScopeStatus, l as BitFieldState } from './bus-CILR-ENq.cjs';
1
+ import { B as BitConfig, V as ValidatorFn, a as BitFieldDefinition, D as DevToolsOptions, b as BitPersistResolvedConfig, c as BitIdFactory, d as BitPlugin, e as BitState, f as BitPath, g as BitPathValue, h as DeepPartial, i as BitErrors, j as BitPersistMetadata, k as BitArrayPath, l as BitArrayItem, S as ScopeStatus, m as BitFieldState } from './bus-BeAeZwWu.cjs';
2
2
  import { B as BitMask, a as BitMaskName } from './types-D8DgIUhJ.cjs';
3
3
 
4
4
  type BitSelector<T extends object, TSlice> = (state: Readonly<BitState<T>>) => TSlice;
@@ -7,6 +7,10 @@ interface BitSelectorSubscriptionOptions<TValue> {
7
7
  equalityFn?: BitEqualityFn<TValue>;
8
8
  emitImmediately?: boolean;
9
9
  paths?: string[];
10
+ /**
11
+ * Quando `true`, o store tenta inferir paths acessados pelo selector via Proxy.
12
+ * Mantido como opt-in para reduzir custo de inscrição e complexidade implícita.
13
+ */
10
14
  autoTrackPaths?: boolean;
11
15
  }
12
16
  interface BitValidationOptions {
@@ -20,11 +24,6 @@ interface BitHistoryMetadata {
20
24
  historyIndex: number;
21
25
  historySize: number;
22
26
  }
23
- interface BitPersistMetadata {
24
- isSaving: boolean;
25
- isRestoring: boolean;
26
- error: Error | null;
27
- }
28
27
  interface BitFrameworkConfig<T extends object = any> extends BitConfig<T> {
29
28
  initialValues: T;
30
29
  resolver?: ValidatorFn<T>;
@@ -35,10 +34,9 @@ interface BitFrameworkConfig<T extends object = any> extends BitConfig<T> {
35
34
  fields?: Record<string, BitFieldDefinition<T>>;
36
35
  devTools?: boolean | DevToolsOptions;
37
36
  persist: BitPersistResolvedConfig<T>;
37
+ idFactory: BitIdFactory;
38
38
  plugins: BitPlugin<T>[];
39
39
  }
40
- interface BitResolvedConfig<T extends object = any> extends BitFrameworkConfig<T> {
41
- }
42
40
  interface BitStoreApi<T extends object = any> {
43
41
  readonly config: Readonly<BitFrameworkConfig<T>>;
44
42
  getConfig(): Readonly<BitFrameworkConfig<T>>;
@@ -54,9 +52,11 @@ interface BitStoreApi<T extends object = any> {
54
52
  setServerErrors(serverErrors: Record<string, string[] | string>): void;
55
53
  validate(options?: BitValidationOptions): Promise<boolean>;
56
54
  reset(): void;
55
+ transaction<TResult>(callback: () => TResult): TResult;
57
56
  submit(onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>): Promise<void>;
58
57
  registerMask(name: BitMaskName, mask: BitMask): void;
59
58
  getDirtyValues(): Partial<T>;
59
+ getPersistMetadata(): BitPersistMetadata;
60
60
  restorePersisted(): Promise<boolean>;
61
61
  forceSave(): Promise<void>;
62
62
  clearPersisted(): Promise<void>;
@@ -91,4 +91,4 @@ interface BitStoreHooksApi<T extends object = any> extends BitStoreApi<T> {
91
91
  getScopeFields(scopeName: string): string[];
92
92
  }
93
93
 
94
- export type { BitResolvedConfig as B, BitValidationOptions as a, BitSelector as b, BitSelectorSubscriptionOptions as c, BitHistoryMetadata as d, BitStoreApi as e, BitStoreHooksApi as f, BitEqualityFn as g, BitFrameworkConfig as h, BitPersistMetadata as i };
94
+ export type { BitFrameworkConfig as B, BitSelector as a, BitSelectorSubscriptionOptions as b, BitHistoryMetadata as c, BitValidationOptions as d, BitStoreApi as e, BitStoreHooksApi as f, BitEqualityFn as g };
@@ -1,4 +1,4 @@
1
- import { i as BitConfig, E as ValidatorFn, e as BitFieldDefinition, G as DevToolsOptions, H as BitPersistResolvedConfig, w as BitPlugin, B as BitState, k as BitPath, m as BitPathValue, D as DeepPartial, f as BitErrors, o as BitArrayPath, p as BitArrayItem, S as ScopeStatus, l as BitFieldState } from './bus-DHQHDwUp.js';
1
+ import { B as BitConfig, V as ValidatorFn, a as BitFieldDefinition, D as DevToolsOptions, b as BitPersistResolvedConfig, c as BitIdFactory, d as BitPlugin, e as BitState, f as BitPath, g as BitPathValue, h as DeepPartial, i as BitErrors, j as BitPersistMetadata, k as BitArrayPath, l as BitArrayItem, S as ScopeStatus, m as BitFieldState } from './bus-B4zZmB9C.js';
2
2
  import { B as BitMask, a as BitMaskName } from './types-D8DgIUhJ.js';
3
3
 
4
4
  type BitSelector<T extends object, TSlice> = (state: Readonly<BitState<T>>) => TSlice;
@@ -7,6 +7,10 @@ interface BitSelectorSubscriptionOptions<TValue> {
7
7
  equalityFn?: BitEqualityFn<TValue>;
8
8
  emitImmediately?: boolean;
9
9
  paths?: string[];
10
+ /**
11
+ * Quando `true`, o store tenta inferir paths acessados pelo selector via Proxy.
12
+ * Mantido como opt-in para reduzir custo de inscrição e complexidade implícita.
13
+ */
10
14
  autoTrackPaths?: boolean;
11
15
  }
12
16
  interface BitValidationOptions {
@@ -20,11 +24,6 @@ interface BitHistoryMetadata {
20
24
  historyIndex: number;
21
25
  historySize: number;
22
26
  }
23
- interface BitPersistMetadata {
24
- isSaving: boolean;
25
- isRestoring: boolean;
26
- error: Error | null;
27
- }
28
27
  interface BitFrameworkConfig<T extends object = any> extends BitConfig<T> {
29
28
  initialValues: T;
30
29
  resolver?: ValidatorFn<T>;
@@ -35,10 +34,9 @@ interface BitFrameworkConfig<T extends object = any> extends BitConfig<T> {
35
34
  fields?: Record<string, BitFieldDefinition<T>>;
36
35
  devTools?: boolean | DevToolsOptions;
37
36
  persist: BitPersistResolvedConfig<T>;
37
+ idFactory: BitIdFactory;
38
38
  plugins: BitPlugin<T>[];
39
39
  }
40
- interface BitResolvedConfig<T extends object = any> extends BitFrameworkConfig<T> {
41
- }
42
40
  interface BitStoreApi<T extends object = any> {
43
41
  readonly config: Readonly<BitFrameworkConfig<T>>;
44
42
  getConfig(): Readonly<BitFrameworkConfig<T>>;
@@ -54,9 +52,11 @@ interface BitStoreApi<T extends object = any> {
54
52
  setServerErrors(serverErrors: Record<string, string[] | string>): void;
55
53
  validate(options?: BitValidationOptions): Promise<boolean>;
56
54
  reset(): void;
55
+ transaction<TResult>(callback: () => TResult): TResult;
57
56
  submit(onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>): Promise<void>;
58
57
  registerMask(name: BitMaskName, mask: BitMask): void;
59
58
  getDirtyValues(): Partial<T>;
59
+ getPersistMetadata(): BitPersistMetadata;
60
60
  restorePersisted(): Promise<boolean>;
61
61
  forceSave(): Promise<void>;
62
62
  clearPersisted(): Promise<void>;
@@ -91,4 +91,4 @@ interface BitStoreHooksApi<T extends object = any> extends BitStoreApi<T> {
91
91
  getScopeFields(scopeName: string): string[];
92
92
  }
93
93
 
94
- export type { BitResolvedConfig as B, BitValidationOptions as a, BitSelector as b, BitSelectorSubscriptionOptions as c, BitHistoryMetadata as d, BitStoreApi as e, BitStoreHooksApi as f, BitEqualityFn as g, BitFrameworkConfig as h, BitPersistMetadata as i };
94
+ export type { BitFrameworkConfig as B, BitSelector as a, BitSelectorSubscriptionOptions as b, BitHistoryMetadata as c, BitValidationOptions as d, BitStoreApi as e, BitStoreHooksApi as f, BitEqualityFn as g };
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkT3XN5O7Vcjs = require('../chunk-T3XN5O7V.cjs');require('../chunk-NNKZFXEK.cjs');require('../chunk-JO37BU2C.cjs');var _chunkPA6T2CBRcjs = require('../chunk-PA6T2CBR.cjs');var _react = require('react');function y(e){let{fieldState:t,setValue:a,setBlur:o,store:r}=_chunkT3XN5O7Vcjs.d.call(void 0, e),i=_react.useMemo.call(void 0, ()=>r.resolveMask(e),[r.config.masks,r.config.fields,e]),s=_react.useMemo.call(void 0, ()=>_chunkPA6T2CBRcjs.L.call(void 0, t.value,_nullishCoalesce(i, () => (void 0))),[t.value,i]),u=_react.useCallback.call(void 0, c=>a(_chunkPA6T2CBRcjs.M.call(void 0, c,_nullishCoalesce(i, () => (void 0)))),[i,a]),{isHidden:m,isRequired:B,value:l,error:n,touched:d,isDirty:b,isValidating:h}=t,M=!!(d&&n),E=d?n:void 0,x=_react.useCallback.call(void 0, c=>{let P=_optionalChain([c, 'optionalAccess', _ => _.target])?c.target.value:c;u(P)},[u]),F=_react.useCallback.call(void 0, ()=>{o()},[o]);return{value:l,displayValue:s,setValue:u,setBlur:o,onChange:x,onBlur:F,props:{value:s,onChange:x,onBlur:F},meta:{error:E,touched:d,invalid:M,isDirty:b,isValidating:h,isHidden:m,isRequired:B,hasError:!!n}}}function K(){let e=_chunkT3XN5O7Vcjs.b.call(void 0, ),t=_react.useRef.call(void 0, null),a=_react.useCallback.call(void 0, ()=>{let s=e.getHistoryMetadata();if(t.current&&t.current.canUndo===s.canUndo&&t.current.canRedo===s.canRedo&&t.current.historyIndex===s.historyIndex&&t.current.historySize===s.historySize)return t.current;let u={canUndo:s.canUndo,canRedo:s.canRedo,historyIndex:s.historyIndex,historySize:s.historySize};return t.current=u,u},[e]),o=_react.useSyncExternalStore.call(void 0, e.subscribe.bind(e),a,a),r=_react.useCallback.call(void 0, ()=>{e.undo()},[e]),i=_react.useCallback.call(void 0, ()=>{e.redo()},[e]);return{...o,undo:r,redo:i}}function W(e,t,a){let o=_chunkT3XN5O7Vcjs.b.call(void 0, ),r=y(e),i=_react.useRef.call(void 0, null),[s,u]=_react.useState.call(void 0, !1),m=_react.useCallback.call(void 0, async l=>{if(l){u(!0),o.setError(e,void 0);try{let n=await t(l);r.setValue(n.url),i.current=n.key,o.setError(e,void 0)}catch(n){let d=n instanceof Error?n.message:"Upload failed";o.setError(e,d)}finally{u(!1)}}},[t,r,e,o]),B=_react.useCallback.call(void 0, async()=>{let l=i.current;if(l&&a)try{await a(l)}catch(n){let d=n instanceof Error?n.message:"Delete failed";o.setError(e,d);return}r.setValue(null),i.current=null,o.setError(e,void 0)},[a,r,e,o]);return{value:r.value,setValue:r.setValue,error:_optionalChain([r, 'access', _2 => _2.meta, 'optionalAccess', _3 => _3.error]),isValidating:!!_optionalChain([r, 'access', _4 => _4.meta, 'optionalAccess', _5 => _5.isValidating])||s,upload:m,remove:B}}exports.BitFormProvider = _chunkT3XN5O7Vcjs.a; exports.useBitArray = _chunkT3XN5O7Vcjs.e; exports.useBitField = y; exports.useBitForm = _chunkT3XN5O7Vcjs.c; exports.useBitHistory = K; exports.useBitPersist = _chunkT3XN5O7Vcjs.i; exports.useBitScope = _chunkT3XN5O7Vcjs.f; exports.useBitSteps = _chunkT3XN5O7Vcjs.g; exports.useBitStore = _chunkT3XN5O7Vcjs.b; exports.useBitUpload = W; exports.useBitWatch = _chunkT3XN5O7Vcjs.h;
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 _chunk3CARTBENcjs = require('../chunk-3CARTBEN.cjs');var _chunkVQ7MK5VBcjs = require('../chunk-VQ7MK5VB.cjs');require('../chunk-JIWR4KSZ.cjs');require('../chunk-OZKLQRO6.cjs');var _chunkPFPGASVZcjs = require('../chunk-PFPGASVZ.cjs');var _react = require('react');function U(e){let{fieldState:o,setValue:a,setBlur:s,store:t}=_chunk3CARTBENcjs.d.call(void 0, e),i=_react.useMemo.call(void 0, ()=>t.resolveMask(e),[t.config.masks,t.config.fields,e]),u=_react.useMemo.call(void 0, ()=>_chunkPFPGASVZcjs.b.call(void 0, o.value,_nullishCoalesce(i, () => (void 0))),[o.value,i]),r=_react.useCallback.call(void 0, p=>a(_chunkPFPGASVZcjs.c.call(void 0, p,_nullishCoalesce(i, () => (void 0)))),[i,a]),{isHidden:l,isRequired:B,value:f,error:n,touched:d,isDirty:h,isValidating:T}=o,k=!!(d&&n),E=d?n:void 0,F=_react.useCallback.call(void 0, p=>{let I=_chunkPFPGASVZcjs.a.call(void 0, p)?_optionalChain([p, 'access', _ => _.target, 'optionalAccess', _2 => _2.value]):p;r(I)},[r]),x=_react.useCallback.call(void 0, ()=>{s()},[s]);return{value:f,displayValue:u,setValue:r,setBlur:s,onChange:F,onBlur:x,props:{value:u,onChange:F,onBlur:x},meta:{error:E,touched:d,invalid:k,isDirty:h,isValidating:T,isHidden:l,isRequired:B,hasError:!!n}}}function O(){let e=_chunk3CARTBENcjs.b.call(void 0, ),o=_react.useRef.call(void 0, null),a=_react.useCallback.call(void 0, ()=>{let r=e.getHistoryMetadata();if(o.current&&_chunkVQ7MK5VBcjs.a.call(void 0, o.current,r))return o.current;let l={canUndo:r.canUndo,canRedo:r.canRedo,historyIndex:r.historyIndex,historySize:r.historySize};return o.current=l,l},[e]),s=_react.useCallback.call(void 0, r=>e.subscribe(r),[e]),t=_react.useSyncExternalStore.call(void 0, s,a,a),i=_react.useCallback.call(void 0, ()=>{e.undo()},[e]),u=_react.useCallback.call(void 0, ()=>{e.redo()},[e]);return{...t,undo:i,redo:u}}function J(e,o,a){let s=_chunk3CARTBENcjs.b.call(void 0, ),t=U(e),i=_react.useRef.call(void 0, null),[u,r]=_react.useState.call(void 0, !1),l={setLoading:r,setError:(n,d)=>s.setError(n,d),setValue:n=>t.setValue(n),getUploadKey:()=>i.current,setUploadKey:n=>{i.current=n}},B=_react.useCallback.call(void 0, _chunkVQ7MK5VBcjs.b.call(void 0, e,o,l),[o,t,e,s]),f=_react.useCallback.call(void 0, _chunkVQ7MK5VBcjs.c.call(void 0, e,a,l),[a,t,e,s]);return{value:t.value,setValue:t.setValue,error:_optionalChain([t, 'access', _3 => _3.meta, 'optionalAccess', _4 => _4.error]),isValidating:!!_optionalChain([t, 'access', _5 => _5.meta, 'optionalAccess', _6 => _6.isValidating])||u,upload:B,remove:f}}exports.BitFormProvider = _chunk3CARTBENcjs.a; exports.useBitArray = _chunk3CARTBENcjs.e; exports.useBitField = U; exports.useBitForm = _chunk3CARTBENcjs.c; exports.useBitHistory = O; exports.useBitPersist = _chunk3CARTBENcjs.i; exports.useBitScope = _chunk3CARTBENcjs.f; exports.useBitSteps = _chunk3CARTBENcjs.g; exports.useBitStore = _chunk3CARTBENcjs.b; exports.useBitUpload = J; exports.useBitWatch = _chunk3CARTBENcjs.h;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/react/index.cjs","../../src/react/use-bit-field.ts","../../src/react/use-bit-history.ts","../../src/react/use-bit-upload.ts"],"names":["useBitField","path","fieldState","rawSetValue","setBlur","store","useBitFieldBase","resolvedMask","useMemo","displayValue","formatMaskedValue","setValue","useCallback","val","parseMaskedInput","isHidden","isRequired","value","error","touched","isDirty","isValidating","invalid","visibleError","onChange","e","onBlur","useBitHistory","useBitStore","lastMeta","useRef","getSnapshot","nextMeta","stableMeta","meta","useSyncExternalStore","undo","redo","useBitUpload","fieldPath","uploadFn","deleteFile","field","uploadKeyRef","isUploading","setIsUploading","useState","upload","file","result","message","remove","uploadKey"],"mappings":"AAAA,0uBAAiG,iCAA8B,iCAA8B,yDAAiD,8BCAzK,SAarBA,CAAAA,CAGdC,CAAAA,CAAsC,CACtC,GAAM,CACJ,UAAA,CAAAC,CAAAA,CACA,QAAA,CAAUC,CAAAA,CACV,OAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CACF,CAAA,CAAIC,iCAAAA,CAAsD,CAAA,CAEpDC,CAAAA,CAAeC,4BAAAA,CAAQ,CAAA,EACpBH,CAAAA,CAAM,WAAA,CAAYJ,CAAc,CAAA,CACtC,CAACI,CAAAA,CAAM,MAAA,CAAO,KAAA,CAAOA,CAAAA,CAAM,MAAA,CAAO,MAAA,CAAQJ,CAAI,CAAC,CAAA,CAE5CQ,CAAAA,CAAeD,4BAAAA,CACnB,CAAA,EAAME,iCAAAA,CAAkBR,CAAW,KAAA,kBAAOK,CAAAA,SAAgB,KAAA,GAAS,CAAA,CACnE,CAACL,CAAAA,CAAW,KAAA,CAAOK,CAAY,CACjC,CAAA,CAEMI,CAAAA,CAAWC,gCAAAA,CACdC,EACCV,CAAAA,CAAYW,iCAAAA,CAAiBD,kBAAKN,CAAAA,SAAgB,KAAA,GAAS,CAAQ,CAAA,CACrE,CAACA,CAAAA,CAAcJ,CAAW,CAC5B,CAAA,CAEM,CAAE,QAAA,CAAAY,CAAAA,CAAU,UAAA,CAAAC,CAAAA,CAAY,KAAA,CAAAC,CAAAA,CAAO,KAAA,CAAAC,CAAAA,CAAO,OAAA,CAAAC,CAAAA,CAAS,OAAA,CAAAC,CAAAA,CAAS,YAAA,CAAAC,CAAa,CAAA,CACzEnB,CAAAA,CAEIoB,CAAAA,CAAU,CAAC,CAAA,CAAEH,CAAAA,EAAWD,CAAAA,CAAAA,CACxBK,CAAAA,CAAeJ,CAAAA,CAAUD,CAAAA,CAAQ,KAAA,CAAA,CAEjCM,CAAAA,CAAWZ,gCAAAA,CACda,EAAW,CACV,IAAMZ,CAAAA,iBAAMY,CAAAA,2BAAG,QAAA,CAASA,CAAAA,CAAE,MAAA,CAAO,KAAA,CAAQA,CAAAA,CACzCd,CAAAA,CAASE,CAAG,CACd,CAAA,CACA,CAACF,CAAQ,CACX,CAAA,CAEMe,CAAAA,CAASd,gCAAAA,CAAY,CAAA,EAAM,CAC/BR,CAAAA,CAAQ,CACV,CAAA,CAAG,CAACA,CAAO,CAAC,CAAA,CAEZ,MAAO,CAEL,KAAA,CAAOa,CAAAA,CACP,YAAA,CAAAR,CAAAA,CACA,QAAA,CAAAE,CAAAA,CACA,OAAA,CAAAP,CAAAA,CACA,QAAA,CAAAoB,CAAAA,CACA,MAAA,CAAAE,CAAAA,CAEA,KAAA,CAAO,CACL,KAAA,CAAOjB,CAAAA,CACP,QAAA,CAAAe,CAAAA,CACA,MAAA,CAAAE,CACF,CAAA,CAEA,IAAA,CAAM,CACJ,KAAA,CAAOH,CAAAA,CACP,OAAA,CAAAJ,CAAAA,CACA,OAAA,CAAAG,CAAAA,CACA,OAAA,CAAAF,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,QAAA,CAAAN,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,QAAA,CAAU,CAAC,CAACE,CACd,CACF,CACF,CCnFA,SAIgBS,CAAAA,CAAAA,CAA6D,CAC3E,IAAMtB,CAAAA,CAAQuB,iCAAAA,CAAe,CACvBC,CAAAA,CAAWC,2BAAAA,IAKH,CAAA,CAERC,CAAAA,CAAcnB,gCAAAA,CAAY,CAAA,EAAM,CACpC,IAAMoB,CAAAA,CAAW3B,CAAAA,CAAM,kBAAA,CAAmB,CAAA,CAE1C,EAAA,CACEwB,CAAAA,CAAS,OAAA,EACTA,CAAAA,CAAS,OAAA,CAAQ,OAAA,GAAYG,CAAAA,CAAS,OAAA,EACtCH,CAAAA,CAAS,OAAA,CAAQ,OAAA,GAAYG,CAAAA,CAAS,OAAA,EACtCH,CAAAA,CAAS,OAAA,CAAQ,YAAA,GAAiBG,CAAAA,CAAS,YAAA,EAC3CH,CAAAA,CAAS,OAAA,CAAQ,WAAA,GAAgBG,CAAAA,CAAS,WAAA,CAE1C,OAAOH,CAAAA,CAAS,OAAA,CAGlB,IAAMI,CAAAA,CAAa,CACjB,OAAA,CAASD,CAAAA,CAAS,OAAA,CAClB,OAAA,CAASA,CAAAA,CAAS,OAAA,CAClB,YAAA,CAAcA,CAAAA,CAAS,YAAA,CACvB,WAAA,CAAaA,CAAAA,CAAS,WACxB,CAAA,CAEA,OAAAH,CAAAA,CAAS,OAAA,CAAUI,CAAAA,CACZA,CACT,CAAA,CAAG,CAAC5B,CAAK,CAAC,CAAA,CAEJ6B,CAAAA,CAAOC,yCAAAA,CACX9B,CAAM,SAAA,CAAU,IAAA,CAAKA,CAAK,CAAA,CAC1B0B,CAAAA,CACAA,CACF,CAAA,CAEMK,CAAAA,CAAOxB,gCAAAA,CAAY,CAAA,EAAM,CAC7BP,CAAAA,CAAM,IAAA,CAAK,CACb,CAAA,CAAG,CAACA,CAAK,CAAC,CAAA,CAEJgC,CAAAA,CAAOzB,gCAAAA,CAAY,CAAA,EAAM,CAC7BP,CAAAA,CAAM,IAAA,CAAK,CACb,CAAA,CAAG,CAACA,CAAK,CAAC,CAAA,CAEV,MAAO,CACL,GAAG6B,CAAAA,CACH,IAAA,CAAAE,CAAAA,CACA,IAAA,CAAAC,CACF,CACF,CClCA,SAMgBC,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACoB,CACpB,IAAMpC,CAAAA,CAAQuB,iCAAAA,CAAiB,CACzBc,CAAAA,CAAQ1C,CAAAA,CAAYuC,CAAS,CAAA,CAC7BI,CAAAA,CAAeb,2BAAAA,IAA0B,CAAA,CACzC,CAACc,CAAAA,CAAaC,CAAc,CAAA,CAAIC,6BAAAA,CAAS,CAAK,CAAA,CAE9CC,CAAAA,CAASnC,gCAAAA,MACNoC,CAAAA,EAAkC,CACvC,EAAA,CAAKA,CAAAA,CAEL,CAAAH,CAAAA,CAAe,CAAA,CAAI,CAAA,CACnBxC,CAAAA,CAAM,QAAA,CAASkC,CAAAA,CAAW,KAAA,CAAS,CAAA,CAEnC,GAAI,CACF,IAAMU,CAAAA,CAAS,MAAMT,CAAAA,CAASQ,CAAI,CAAA,CAElCN,CAAAA,CAAM,QAAA,CAASO,CAAAA,CAAO,GAAG,CAAA,CACzBN,CAAAA,CAAa,OAAA,CAAUM,CAAAA,CAAO,GAAA,CAC9B5C,CAAAA,CAAM,QAAA,CAASkC,CAAAA,CAAW,KAAA,CAAS,CACrC,CAAA,KAAA,CAASrB,CAAAA,CAAO,CACd,IAAMgC,CAAAA,CACJhC,EAAAA,WAAiB,KAAA,CAAQA,CAAAA,CAAM,OAAA,CAAU,eAAA,CAC3Cb,CAAAA,CAAM,QAAA,CAASkC,CAAAA,CAAWW,CAAO,CACnC,CAAA,OAAE,CACAL,CAAAA,CAAe,CAAA,CAAK,CACtB,CAAA,CACF,CAAA,CACA,CAACL,CAAAA,CAAUE,CAAAA,CAAOH,CAAAA,CAAWlC,CAAK,CACpC,CAAA,CAEM8C,CAAAA,CAASvC,gCAAAA,KAAY,CAAA,CAAA,EAAY,CACrC,IAAMwC,CAAAA,CAAYT,CAAAA,CAAa,OAAA,CAE/B,EAAA,CAAIS,CAAAA,EAAaX,CAAAA,CACf,GAAI,CACF,MAAMA,CAAAA,CAAWW,CAAS,CAC5B,CAAA,KAAA,CAASlC,CAAAA,CAAO,CACd,IAAMgC,CAAAA,CACJhC,EAAAA,WAAiB,KAAA,CAAQA,CAAAA,CAAM,OAAA,CAAU,eAAA,CAC3Cb,CAAAA,CAAM,QAAA,CAASkC,CAAAA,CAAWW,CAAO,CAAA,CACjC,MACF,CAGFR,CAAAA,CAAM,QAAA,CAAS,IAAI,CAAA,CACnBC,CAAAA,CAAa,OAAA,CAAU,IAAA,CACvBtC,CAAAA,CAAM,QAAA,CAASkC,CAAAA,CAAW,KAAA,CAAS,CACrC,CAAA,CAAG,CAACE,CAAAA,CAAYC,CAAAA,CAAOH,CAAAA,CAAWlC,CAAK,CAAC,CAAA,CAExC,MAAO,CACL,KAAA,CAAOqC,CAAAA,CAAM,KAAA,CACb,QAAA,CAAUA,CAAAA,CAAM,QAAA,CAChB,KAAA,iBAAOA,CAAAA,qBAAM,IAAA,6BAAM,OAAA,CACnB,YAAA,CAAc,CAAC,iBAACA,CAAAA,qBAAM,IAAA,6BAAM,cAAA,EAAgBE,CAAAA,CAC5C,MAAA,CAAAG,CAAAA,CACA,MAAA,CAAAI,CACF,CACF,CAAA,0aAAA","file":"/home/runner/work/bit-form/bit-form/dist/react/index.cjs","sourcesContent":[null,"import { useMemo, useCallback } from \"react\";\nimport { useBitFieldBase } from \"./use-bit-field-base\";\nimport { BitPath, BitPathValue } from \"../core\";\nimport {\n formatMaskedValue,\n parseMaskedInput,\n} from \"../core/mask/field-binding\";\nimport type {\n UseBitFieldMeta,\n UseBitFieldBindProps,\n UseBitFieldResult,\n} from \"./types\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldResult<TForm, P> {\n const {\n fieldState,\n setValue: rawSetValue,\n setBlur,\n store,\n } = useBitFieldBase<BitPathValue<TForm, P>, TForm, P>(path);\n\n const resolvedMask = useMemo(() => {\n return store.resolveMask(path as string);\n }, [store.config.masks, store.config.fields, path]);\n\n const displayValue = useMemo(\n () => formatMaskedValue(fieldState.value, resolvedMask ?? undefined),\n [fieldState.value, resolvedMask],\n );\n\n const setValue = useCallback(\n (val: any) =>\n rawSetValue(parseMaskedInput(val, resolvedMask ?? undefined) as any),\n [resolvedMask, rawSetValue],\n );\n\n const { isHidden, isRequired, value, error, touched, isDirty, isValidating } =\n fieldState;\n\n const invalid = !!(touched && error);\n const visibleError = touched ? error : undefined;\n\n const onChange = useCallback(\n (e: any) => {\n const val = e?.target ? e.target.value : e;\n setValue(val);\n },\n [setValue],\n );\n\n const onBlur = useCallback(() => {\n setBlur();\n }, [setBlur]);\n\n return {\n // Main handlers and values (flat)\n value: value as BitPathValue<TForm, P>,\n displayValue,\n setValue,\n setBlur,\n onChange,\n onBlur,\n // Props helper\n props: {\n value: displayValue,\n onChange,\n onBlur,\n },\n // Metadata (grouped)\n meta: {\n error: visibleError,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError: !!error,\n },\n };\n}\n","import { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitHistoryResult } from \"./types\";\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n const lastMeta = useRef<{\n canUndo: boolean;\n canRedo: boolean;\n historyIndex: number;\n historySize: number;\n } | null>(null);\n\n const getSnapshot = useCallback(() => {\n const nextMeta = store.getHistoryMetadata();\n\n if (\n lastMeta.current &&\n lastMeta.current.canUndo === nextMeta.canUndo &&\n lastMeta.current.canRedo === nextMeta.canRedo &&\n lastMeta.current.historyIndex === nextMeta.historyIndex &&\n lastMeta.current.historySize === nextMeta.historySize\n ) {\n return lastMeta.current;\n }\n\n const stableMeta = {\n canUndo: nextMeta.canUndo,\n canRedo: nextMeta.canRedo,\n historyIndex: nextMeta.historyIndex,\n historySize: nextMeta.historySize,\n };\n\n lastMeta.current = stableMeta;\n return stableMeta;\n }, [store]);\n\n const meta = useSyncExternalStore(\n store.subscribe.bind(store),\n getSnapshot,\n getSnapshot,\n );\n\n const undo = useCallback(() => {\n store.undo();\n }, [store]);\n\n const redo = useCallback(() => {\n store.redo();\n }, [store]);\n\n return {\n ...meta,\n undo,\n redo,\n };\n}\n","/**\n * React Hook for File Upload Integration\n *\n * Minimal upload API integrated with global field validation lifecycle.\n *\n * @example\n * ```typescript\n * const avatar = useBitUpload(\"avatar\", uploadFn);\n *\n * return (\n * <>\n * <input\n * type=\"file\"\n * onChange={(e) => avatar.upload(e.target.files?.[0])}\n * disabled={avatar.isValidating}\n * />\n * {avatar.error && <Error>{avatar.error}</Error>}\n * </>\n * );\n * ```\n */\n\nimport { useCallback, useRef, useState } from \"react\";\nimport { useBitField } from \"./use-bit-field\";\nimport { useBitStore } from \"./context\";\nimport { BitUploadFn, BitDeleteUploadFn } from \"../core\";\nimport type { UseBitUploadResult } from \"./types\";\n\nexport function useBitUpload(\n fieldPath: string,\n uploadFn: BitUploadFn,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n const uploadKeyRef = useRef<string | null>(null);\n const [isUploading, setIsUploading] = useState(false);\n\n const upload = useCallback(\n async (file: File | null | undefined) => {\n if (!file) return;\n\n setIsUploading(true);\n store.setError(fieldPath, undefined);\n\n try {\n const result = await uploadFn(file);\n\n field.setValue(result.url);\n uploadKeyRef.current = result.key;\n store.setError(fieldPath, undefined);\n } catch (error) {\n const message =\n error instanceof Error ? error.message : \"Upload failed\";\n store.setError(fieldPath, message);\n } finally {\n setIsUploading(false);\n }\n },\n [uploadFn, field, fieldPath, store],\n );\n\n const remove = useCallback(async () => {\n const uploadKey = uploadKeyRef.current;\n\n if (uploadKey && deleteFile) {\n try {\n await deleteFile(uploadKey);\n } catch (error) {\n const message =\n error instanceof Error ? error.message : \"Delete failed\";\n store.setError(fieldPath, message);\n return;\n }\n }\n\n field.setValue(null);\n uploadKeyRef.current = null;\n store.setError(fieldPath, undefined);\n }, [deleteFile, field, fieldPath, store]);\n\n return {\n value: field.value,\n setValue: field.setValue,\n error: field.meta?.error,\n isValidating: !!field.meta?.isValidating || isUploading,\n upload,\n remove,\n };\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/react/index.cjs","../../src/react/use-bit-field.ts","../../src/react/use-bit-history.ts","../../src/react/use-bit-upload.ts"],"names":["useBitField","path","fieldState","rawSetValue","setBlur","store","useBitFieldBase","resolvedMask","useMemo","displayValue","formatMaskedValue","setValue","useCallback","val","parseMaskedInput","isHidden","isRequired","value","error","touched","isDirty","isValidating","invalid","visibleError","onChange","e","isBitFieldInputEventObject","onBlur","useBitHistory","useBitStore","lastMeta","useRef","getSnapshot","nextMeta","isHistoryMetaEqual","stableMeta","subscribe","cb","meta","useSyncExternalStore","undo","redo","useBitUpload","fieldPath","uploadFn","deleteFile","field","uploadKeyRef","isUploading","setIsUploading","useState","kernelCallbacks","msg","key","upload","createUploadHandler","remove","createRemoveHandler"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/react/index.cjs","sourcesContent":[null,"import { useMemo, useCallback } from \"react\";\nimport { useBitFieldBase } from \"./use-bit-field-base\";\nimport { BitPath, BitPathValue } from \"../core\";\nimport {\n formatMaskedValue,\n parseMaskedInput,\n isBitFieldInputEventObject,\n} from \"../core/mask/field-binding\";\nimport type {\n BitFieldInputEvent,\n UseBitFieldMeta,\n UseBitFieldBindProps,\n UseBitFieldResult,\n} from \"./types\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldResult<TForm, P> {\n const {\n fieldState,\n setValue: rawSetValue,\n setBlur,\n store,\n } = useBitFieldBase<BitPathValue<TForm, P>, TForm, P>(path);\n\n const resolvedMask = useMemo(() => {\n return store.resolveMask(path as string);\n }, [store.config.masks, store.config.fields, path]);\n\n const displayValue = useMemo(\n () => formatMaskedValue(fieldState.value, resolvedMask ?? undefined),\n [fieldState.value, resolvedMask],\n );\n\n const setValue = useCallback(\n (val: BitPathValue<TForm, P> | string | number | null | undefined) =>\n rawSetValue(\n parseMaskedInput(val, resolvedMask ?? undefined) as BitPathValue<\n TForm,\n P\n >,\n ),\n [resolvedMask, rawSetValue],\n );\n\n const { isHidden, isRequired, value, error, touched, isDirty, isValidating } =\n fieldState;\n\n const invalid = !!(touched && error);\n const visibleError = touched ? error : undefined;\n\n const onChange = useCallback(\n (e: BitFieldInputEvent) => {\n const val = isBitFieldInputEventObject(e) ? e.target?.value : e;\n setValue(val);\n },\n [setValue],\n );\n\n const onBlur = useCallback(() => {\n setBlur();\n }, [setBlur]);\n\n return {\n // Main handlers and values (flat)\n value: value as BitPathValue<TForm, P>,\n displayValue,\n setValue,\n setBlur,\n onChange,\n onBlur,\n // Props helper\n props: {\n value: displayValue,\n onChange,\n onBlur,\n },\n // Metadata (grouped)\n meta: {\n error: visibleError,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError: !!error,\n },\n };\n}\n","import { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { isHistoryMetaEqual, type HistoryMeta } from \"../core/history-status\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitHistoryResult } from \"./types\";\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n const lastMeta = useRef<HistoryMeta | null>(null);\n\n const getSnapshot = useCallback(() => {\n const nextMeta = store.getHistoryMetadata();\n\n if (lastMeta.current && isHistoryMetaEqual(lastMeta.current, nextMeta)) {\n return lastMeta.current;\n }\n\n const stableMeta = {\n canUndo: nextMeta.canUndo,\n canRedo: nextMeta.canRedo,\n historyIndex: nextMeta.historyIndex,\n historySize: nextMeta.historySize,\n };\n\n lastMeta.current = stableMeta;\n return stableMeta;\n }, [store]);\n\n const subscribe = useCallback(\n (cb: () => void) => store.subscribe(cb),\n [store],\n );\n\n const meta = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n const undo = useCallback(() => {\n store.undo();\n }, [store]);\n\n const redo = useCallback(() => {\n store.redo();\n }, [store]);\n\n return {\n ...meta,\n undo,\n redo,\n };\n}\n","/**\n * React Hook for File Upload Integration\n *\n * Minimal upload API integrated with global field validation lifecycle.\n *\n * @example\n * ```typescript\n * const avatar = useBitUpload(\"avatar\", uploadFn);\n *\n * return (\n * <>\n * <input\n * type=\"file\"\n * onChange={(e) => avatar.upload(e.target.files?.[0])}\n * disabled={avatar.isValidating}\n * />\n * {avatar.error && <Error>{avatar.error}</Error>}\n * </>\n * );\n * ```\n */\n\nimport { useCallback, useRef, useState } from \"react\";\nimport { useBitField } from \"./use-bit-field\";\nimport { useBitStore } from \"./context\";\nimport { BitUploadFn, BitDeleteUploadFn } from \"../core\";\nimport { createUploadHandler, createRemoveHandler } from \"../core/adapters\";\nimport type { UseBitUploadResult } from \"./types\";\n\nexport function useBitUpload(\n fieldPath: string,\n uploadFn: BitUploadFn,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n const uploadKeyRef = useRef<string | null>(null);\n const [isUploading, setIsUploading] = useState(false);\n\n const kernelCallbacks = {\n setLoading: setIsUploading,\n setError: (path: string, msg: string | undefined) =>\n store.setError(path, msg),\n setValue: (val: string | null) => field.setValue(val as any),\n getUploadKey: () => uploadKeyRef.current,\n setUploadKey: (key: string | null) => {\n uploadKeyRef.current = key;\n },\n };\n\n const upload = useCallback(\n createUploadHandler(fieldPath, uploadFn, kernelCallbacks),\n [uploadFn, field, fieldPath, store],\n );\n\n const remove = useCallback(\n createRemoveHandler(fieldPath, deleteFile, kernelCallbacks),\n [deleteFile, field, fieldPath, store],\n );\n\n return {\n value: field.value,\n setValue: field.setValue,\n error: field.meta?.error,\n isValidating: !!field.meta?.isValidating || isUploading,\n upload,\n remove,\n };\n}\n"]}
@@ -1,12 +1,13 @@
1
- import { U as UseBitFieldResult, a as UseBitHistoryResult, b as UseBitUploadResult } from '../use-bit-persist-DEWMhvit.cjs';
2
- export { B as BitFormProvider, c as UseBitFieldBindProps, d as UseBitFieldMeta, e as UseBitPersistResult, f as UseBitStepsResult, u as useBitArray, g as useBitForm, h as useBitPersist, i as useBitScope, j as useBitSteps, k as useBitStore, l as useBitWatch } from '../use-bit-persist-DEWMhvit.cjs';
3
- import { k as BitPath } from '../bus-CILR-ENq.cjs';
4
- export { S as ScopeStatus, V as ValidateScopeResult } from '../bus-CILR-ENq.cjs';
5
- import { a as BitUploadFn, B as BitDeleteUploadFn } from '../types-C2mpfhp1.cjs';
1
+ import { g as UseBitFieldResult, h as UseBitHistoryResult, i as UseBitUploadResult } from '../use-bit-persist-CIVN-oIi.cjs';
2
+ export { B as BitFormProvider, j as UseBitFieldBindProps, k as UseBitFieldMeta, U as UseBitPersistResult, l as UseBitStepsResult, u as useBitArray, a as useBitForm, b as useBitPersist, c as useBitScope, d as useBitSteps, e as useBitStore, f as useBitWatch } from '../use-bit-persist-CIVN-oIi.cjs';
3
+ import { f as BitPath } from '../bus-BeAeZwWu.cjs';
4
+ export { S as ScopeStatus, n as ValidateScopeResult } from '../bus-BeAeZwWu.cjs';
5
+ import { B as BitUploadFn, a as BitDeleteUploadFn } from '../upload-EXnJLq8k.cjs';
6
6
  import 'react/jsx-runtime';
7
7
  import 'react';
8
- import '../public-types-SU17BarA.cjs';
8
+ import '../public-types-BQXaxmAE.cjs';
9
9
  import '../types-D8DgIUhJ.cjs';
10
+ import '../field-binding-BXw0Ku2c.cjs';
10
11
 
11
12
  declare function useBitField<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): UseBitFieldResult<TForm, P>;
12
13
 
@@ -1,12 +1,13 @@
1
- import { U as UseBitFieldResult, a as UseBitHistoryResult, b as UseBitUploadResult } from '../use-bit-persist-BlR-hHk6.js';
2
- export { B as BitFormProvider, c as UseBitFieldBindProps, d as UseBitFieldMeta, e as UseBitPersistResult, f as UseBitStepsResult, u as useBitArray, g as useBitForm, h as useBitPersist, i as useBitScope, j as useBitSteps, k as useBitStore, l as useBitWatch } from '../use-bit-persist-BlR-hHk6.js';
3
- import { k as BitPath } from '../bus-DHQHDwUp.js';
4
- export { S as ScopeStatus, V as ValidateScopeResult } from '../bus-DHQHDwUp.js';
5
- import { a as BitUploadFn, B as BitDeleteUploadFn } from '../types-C2mpfhp1.js';
1
+ import { g as UseBitFieldResult, h as UseBitHistoryResult, i as UseBitUploadResult } from '../use-bit-persist-iPWLbD8l.js';
2
+ export { B as BitFormProvider, j as UseBitFieldBindProps, k as UseBitFieldMeta, U as UseBitPersistResult, l as UseBitStepsResult, u as useBitArray, a as useBitForm, b as useBitPersist, c as useBitScope, d as useBitSteps, e as useBitStore, f as useBitWatch } from '../use-bit-persist-iPWLbD8l.js';
3
+ import { f as BitPath } from '../bus-B4zZmB9C.js';
4
+ export { S as ScopeStatus, n as ValidateScopeResult } from '../bus-B4zZmB9C.js';
5
+ import { B as BitUploadFn, a as BitDeleteUploadFn } from '../upload-EXnJLq8k.js';
6
6
  import 'react/jsx-runtime';
7
7
  import 'react';
8
- import '../public-types-Bgws0aVJ.js';
8
+ import '../public-types-CVgFf_qY.js';
9
9
  import '../types-D8DgIUhJ.js';
10
+ import '../field-binding-BXw0Ku2c.js';
10
11
 
11
12
  declare function useBitField<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): UseBitFieldResult<TForm, P>;
12
13