@lehnihon/bit-form 2.1.0 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) 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 +72 -46
  4. package/dist/angular/index.d.ts +72 -46
  5. package/dist/angular/index.js +1 -1
  6. package/dist/angular/index.js.map +1 -1
  7. package/dist/bus-vCbulIYH.d.cts +141 -0
  8. package/dist/bus-vCbulIYH.d.ts +141 -0
  9. package/dist/chunk-2QNUW6ZN.cjs +133 -0
  10. package/dist/chunk-2QNUW6ZN.cjs.map +1 -0
  11. package/dist/chunk-F6LJWWEW.js +2 -0
  12. package/dist/chunk-F6LJWWEW.js.map +1 -0
  13. package/dist/chunk-LPRLSFPT.cjs +2 -0
  14. package/dist/chunk-LPRLSFPT.cjs.map +1 -0
  15. package/dist/chunk-N6IA7HQL.js +133 -0
  16. package/dist/chunk-N6IA7HQL.js.map +1 -0
  17. package/dist/devtools/bridge.cjs +1 -1
  18. package/dist/devtools/bridge.js +1 -1
  19. package/dist/devtools/index.cjs +1 -1
  20. package/dist/devtools/index.js +1 -1
  21. package/dist/index.cjs +1 -1
  22. package/dist/index.d.cts +5 -24
  23. package/dist/index.d.ts +5 -24
  24. package/dist/index.js +1 -1
  25. package/dist/public-types-ChP5j3xc.d.ts +69 -0
  26. package/dist/public-types-Nv__uZTR.d.cts +69 -0
  27. package/dist/react/index.cjs +1 -1
  28. package/dist/react/index.cjs.map +1 -1
  29. package/dist/react/index.d.cts +7 -47
  30. package/dist/react/index.d.ts +7 -47
  31. package/dist/react/index.js +1 -1
  32. package/dist/react/index.js.map +1 -1
  33. package/dist/react-native/index.cjs +1 -1
  34. package/dist/react-native/index.cjs.map +1 -1
  35. package/dist/react-native/index.d.cts +16 -5
  36. package/dist/react-native/index.d.ts +16 -5
  37. package/dist/react-native/index.js +1 -1
  38. package/dist/react-native/index.js.map +1 -1
  39. package/dist/resolvers/joi.d.cts +1 -1
  40. package/dist/resolvers/joi.d.ts +1 -1
  41. package/dist/resolvers/yup.d.cts +1 -1
  42. package/dist/resolvers/yup.d.ts +1 -1
  43. package/dist/resolvers/zod.d.cts +1 -1
  44. package/dist/resolvers/zod.d.ts +1 -1
  45. package/dist/{use-bit-watch-iCGj-kYp.d.ts → use-bit-watch-BRekIj2W.d.cts} +92 -28
  46. package/dist/{use-bit-watch-BLCTa7d4.d.cts → use-bit-watch-hA0AqCkC.d.ts} +92 -28
  47. package/dist/vue/index.cjs +1 -1
  48. package/dist/vue/index.cjs.map +1 -1
  49. package/dist/vue/index.d.cts +66 -46
  50. package/dist/vue/index.d.ts +66 -46
  51. package/dist/vue/index.js +1 -1
  52. package/dist/vue/index.js.map +1 -1
  53. package/package.json +7 -2
  54. package/dist/bus-uG4EmM-Z.d.cts +0 -295
  55. package/dist/bus-uG4EmM-Z.d.ts +0 -295
  56. package/dist/chunk-ET36BANJ.js +0 -2
  57. package/dist/chunk-ET36BANJ.js.map +0 -1
  58. package/dist/chunk-NDFMZWBP.js +0 -133
  59. package/dist/chunk-NDFMZWBP.js.map +0 -1
  60. package/dist/chunk-PCVPCFPX.cjs +0 -2
  61. package/dist/chunk-PCVPCFPX.cjs.map +0 -1
  62. package/dist/chunk-VFLQH47Q.cjs +0 -133
  63. package/dist/chunk-VFLQH47Q.cjs.map +0 -1
  64. package/dist/index-1fP1eJH8.d.ts +0 -211
  65. package/dist/index-9vxGUNPP.d.cts +0 -211
package/dist/index.d.cts CHANGED
@@ -1,28 +1,9 @@
1
- import { B as BitResolvedConfig, a as BitState, b as BitPath, c as BitPathValue, d as BitErrors, e as BitMask, f as BitConfig, P as PatternMaskOptions, C as CurrencyMaskConfig, D as DateMaskConfig } from './bus-uG4EmM-Z.cjs';
2
- export { g as BitArrayItem, h as BitArrayPath, i as BitComputedFn, j as BitFieldConditional, k as BitFieldDefinition, l as BitFieldOptions, m as BitFieldValidation, n as BitHistoryConfig, o as BitTouched, p as BitTransformFn, q as BitValidationConfig, r as DeepPartial, S as ScopeStatus, V as ValidateScopeResult, s as ValidatorFn, t as bitBus } from './bus-uG4EmM-Z.cjs';
1
+ import { B as BitConfig, P as PatternMaskOptions, a as BitMask, C as CurrencyMaskConfig, D as DateMaskConfig } from './bus-vCbulIYH.cjs';
2
+ export { b as BitArrayItem, c as BitArrayPath, d as BitComputedFn, e as BitErrors, f as BitFieldConditional, g as BitFieldDefinition, h as BitFieldValidation, i as BitHistoryConfig, j as BitPath, k as BitPathValue, l as BitState, m as BitTouched, n as BitTransformFn, o as BitValidationConfig, p as DeepPartial, S as ScopeStatus, V as ValidateScopeResult, q as ValidatorFn, r as bitBus } from './bus-vCbulIYH.cjs';
3
+ import { B as BitPublicStore } from './public-types-Nv__uZTR.cjs';
4
+ export { a as BitFrameworkConfig, b as BitFrameworkStore } from './public-types-Nv__uZTR.cjs';
3
5
  export { B as BitDeleteUploadFn, a as BitUploadFn, b as BitUploadResult } from './types-C2mpfhp1.cjs';
4
6
 
5
- interface BitPublicStore<T extends object = any> {
6
- getConfig(): Readonly<BitResolvedConfig<T>>;
7
- getState(): Readonly<BitState<T>>;
8
- subscribe(listener: () => void): () => void;
9
- setField<P extends BitPath<T>>(path: P, value: BitPathValue<T, P>): void;
10
- blurField<P extends BitPath<T>>(path: P): void;
11
- setValues(values: T): void;
12
- setError(path: string, message: string | undefined): void;
13
- setErrors(errors: BitErrors<T>): void;
14
- setServerErrors(serverErrors: Record<string, string[] | string>): void;
15
- validate(options?: {
16
- scope?: string;
17
- scopeFields?: string[];
18
- }): Promise<boolean>;
19
- reset(): void;
20
- submit(onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>): Promise<void>;
21
- registerMask(name: string, mask: BitMask): void;
22
- getDirtyValues(): Partial<T>;
23
- cleanup(): void;
24
- }
25
-
26
7
  declare function createBitStore<T extends object = any>(config?: BitConfig<T>): BitPublicStore<T>;
27
8
 
28
9
  declare function deepClone<T>(obj: T): T;
@@ -139,4 +120,4 @@ declare const bitMasks: {
139
120
  int: BitMask;
140
121
  };
141
122
 
142
- export { BitConfig, BitErrors, BitMask, BitPath, BitPathValue, type BitPublicStore, BitState, CurrencyMaskConfig, DateMaskConfig, PatternMaskOptions, bitMasks, cleanPrefixedKeys, createBitStore, createCreditCardMask, createCurrencyMask, createDateMask, createPatternMask, deepClone, deepEqual, extractServerErrors, getDeepValue, isValidationErrorShape, maskBRL, maskCEP, maskCNH, maskCNPJ, maskCPF, maskCVV, maskColorHex, maskCreditCard, maskDate, maskDateISO, maskDateUS, maskDecimal, maskEUR, maskGBP, maskIBAN, maskIPv4, maskIPv6, maskInteger, maskJPY, maskLandline, maskMacAddress, maskPercent, maskPhone, maskRG, maskSSN, maskTime, maskUSD, maskUSPhone, maskZipCode, setDeepValue, unmask, unmaskCurrency, valueEqual };
123
+ export { BitConfig, BitMask, BitPublicStore, CurrencyMaskConfig, DateMaskConfig, PatternMaskOptions, bitMasks, cleanPrefixedKeys, createBitStore, createCreditCardMask, createCurrencyMask, createDateMask, createPatternMask, deepClone, deepEqual, extractServerErrors, getDeepValue, isValidationErrorShape, maskBRL, maskCEP, maskCNH, maskCNPJ, maskCPF, maskCVV, maskColorHex, maskCreditCard, maskDate, maskDateISO, maskDateUS, maskDecimal, maskEUR, maskGBP, maskIBAN, maskIPv4, maskIPv6, maskInteger, maskJPY, maskLandline, maskMacAddress, maskPercent, maskPhone, maskRG, maskSSN, maskTime, maskUSD, maskUSPhone, maskZipCode, setDeepValue, unmask, unmaskCurrency, valueEqual };
package/dist/index.d.ts CHANGED
@@ -1,28 +1,9 @@
1
- import { B as BitResolvedConfig, a as BitState, b as BitPath, c as BitPathValue, d as BitErrors, e as BitMask, f as BitConfig, P as PatternMaskOptions, C as CurrencyMaskConfig, D as DateMaskConfig } from './bus-uG4EmM-Z.js';
2
- export { g as BitArrayItem, h as BitArrayPath, i as BitComputedFn, j as BitFieldConditional, k as BitFieldDefinition, l as BitFieldOptions, m as BitFieldValidation, n as BitHistoryConfig, o as BitTouched, p as BitTransformFn, q as BitValidationConfig, r as DeepPartial, S as ScopeStatus, V as ValidateScopeResult, s as ValidatorFn, t as bitBus } from './bus-uG4EmM-Z.js';
1
+ import { B as BitConfig, P as PatternMaskOptions, a as BitMask, C as CurrencyMaskConfig, D as DateMaskConfig } from './bus-vCbulIYH.js';
2
+ export { b as BitArrayItem, c as BitArrayPath, d as BitComputedFn, e as BitErrors, f as BitFieldConditional, g as BitFieldDefinition, h as BitFieldValidation, i as BitHistoryConfig, j as BitPath, k as BitPathValue, l as BitState, m as BitTouched, n as BitTransformFn, o as BitValidationConfig, p as DeepPartial, S as ScopeStatus, V as ValidateScopeResult, q as ValidatorFn, r as bitBus } from './bus-vCbulIYH.js';
3
+ import { B as BitPublicStore } from './public-types-ChP5j3xc.js';
4
+ export { a as BitFrameworkConfig, b as BitFrameworkStore } from './public-types-ChP5j3xc.js';
3
5
  export { B as BitDeleteUploadFn, a as BitUploadFn, b as BitUploadResult } from './types-C2mpfhp1.js';
4
6
 
5
- interface BitPublicStore<T extends object = any> {
6
- getConfig(): Readonly<BitResolvedConfig<T>>;
7
- getState(): Readonly<BitState<T>>;
8
- subscribe(listener: () => void): () => void;
9
- setField<P extends BitPath<T>>(path: P, value: BitPathValue<T, P>): void;
10
- blurField<P extends BitPath<T>>(path: P): void;
11
- setValues(values: T): void;
12
- setError(path: string, message: string | undefined): void;
13
- setErrors(errors: BitErrors<T>): void;
14
- setServerErrors(serverErrors: Record<string, string[] | string>): void;
15
- validate(options?: {
16
- scope?: string;
17
- scopeFields?: string[];
18
- }): Promise<boolean>;
19
- reset(): void;
20
- submit(onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>): Promise<void>;
21
- registerMask(name: string, mask: BitMask): void;
22
- getDirtyValues(): Partial<T>;
23
- cleanup(): void;
24
- }
25
-
26
7
  declare function createBitStore<T extends object = any>(config?: BitConfig<T>): BitPublicStore<T>;
27
8
 
28
9
  declare function deepClone<T>(obj: T): T;
@@ -139,4 +120,4 @@ declare const bitMasks: {
139
120
  int: BitMask;
140
121
  };
141
122
 
142
- export { BitConfig, BitErrors, BitMask, BitPath, BitPathValue, type BitPublicStore, BitState, CurrencyMaskConfig, DateMaskConfig, PatternMaskOptions, bitMasks, cleanPrefixedKeys, createBitStore, createCreditCardMask, createCurrencyMask, createDateMask, createPatternMask, deepClone, deepEqual, extractServerErrors, getDeepValue, isValidationErrorShape, maskBRL, maskCEP, maskCNH, maskCNPJ, maskCPF, maskCVV, maskColorHex, maskCreditCard, maskDate, maskDateISO, maskDateUS, maskDecimal, maskEUR, maskGBP, maskIBAN, maskIPv4, maskIPv6, maskInteger, maskJPY, maskLandline, maskMacAddress, maskPercent, maskPhone, maskRG, maskSSN, maskTime, maskUSD, maskUSPhone, maskZipCode, setDeepValue, unmask, unmaskCurrency, valueEqual };
123
+ export { BitConfig, BitMask, BitPublicStore, CurrencyMaskConfig, DateMaskConfig, PatternMaskOptions, bitMasks, cleanPrefixedKeys, createBitStore, createCreditCardMask, createCurrencyMask, createDateMask, createPatternMask, deepClone, deepEqual, extractServerErrors, getDeepValue, isValidationErrorShape, maskBRL, maskCEP, maskCNH, maskCNPJ, maskCPF, maskCVV, maskColorHex, maskCreditCard, maskDate, maskDateISO, maskDateUS, maskDecimal, maskEUR, maskGBP, maskIBAN, maskIPv4, maskIPv6, maskInteger, maskJPY, maskLandline, maskMacAddress, maskPercent, maskPhone, maskRG, maskSSN, maskTime, maskUSD, maskUSPhone, maskZipCode, setDeepValue, unmask, unmaskCurrency, valueEqual };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,V as T,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,n as h,o as i,p as j,q as k,r as l,s as n,t as q,u as s,v as u,w as v,x as w,y,z}from"./chunk-NDFMZWBP.js";export{o as bitBus,S as bitMasks,t as cleanPrefixedKeys,T as createBitStore,h as createCreditCardMask,g as createCurrencyMask,i as createDateMask,d as createPatternMask,r as deepClone,f as deepEqual,a as extractServerErrors,m as getDeepValue,x as isValidationErrorShape,j as maskBRL,B as maskCEP,E as maskCNH,y as maskCNPJ,w as maskCPF,L as maskCVV,O as maskColorHex,K as maskCreditCard,C as maskDate,M as maskDateISO,I as maskDateUS,u as maskDecimal,l as maskEUR,n as maskGBP,R as maskIBAN,P as maskIPv4,Q as maskIPv6,v as maskInteger,q as maskJPY,A as maskLandline,N as maskMacAddress,s as maskPercent,z as maskPhone,F as maskRG,J as maskSSN,D as maskTime,k as maskUSD,G as maskUSPhone,H as maskZipCode,p as setDeepValue,b as unmask,c as unmaskCurrency,e as valueEqual};
1
+ import{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,V as T,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,n as h,o as i,p as j,q as k,r as l,s as n,t as q,u as s,v as u,w as v,x as w,y,z}from"./chunk-N6IA7HQL.js";export{o as bitBus,S as bitMasks,t as cleanPrefixedKeys,T as createBitStore,h as createCreditCardMask,g as createCurrencyMask,i as createDateMask,d as createPatternMask,r as deepClone,f as deepEqual,a as extractServerErrors,m as getDeepValue,x as isValidationErrorShape,j as maskBRL,B as maskCEP,E as maskCNH,y as maskCNPJ,w as maskCPF,L as maskCVV,O as maskColorHex,K as maskCreditCard,C as maskDate,M as maskDateISO,I as maskDateUS,u as maskDecimal,l as maskEUR,n as maskGBP,R as maskIBAN,P as maskIPv4,Q as maskIPv6,v as maskInteger,q as maskJPY,A as maskLandline,N as maskMacAddress,s as maskPercent,z as maskPhone,F as maskRG,J as maskSSN,D as maskTime,k as maskUSD,G as maskUSPhone,H as maskZipCode,p as setDeepValue,b as unmask,c as unmaskCurrency,e as valueEqual};
2
2
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,69 @@
1
+ import { B as BitConfig, q as ValidatorFn, a as BitMask, g as BitFieldDefinition, s as DevToolsOptions, l as BitState, j as BitPath, k as BitPathValue, e as BitErrors, S as ScopeStatus } from './bus-vCbulIYH.js';
2
+
3
+ interface BitFrameworkConfig<T extends object = any> extends BitConfig<T> {
4
+ initialValues: T;
5
+ resolver?: ValidatorFn<T>;
6
+ validationDelay: number;
7
+ enableHistory: boolean;
8
+ historyLimit: number;
9
+ masks?: Record<string, BitMask>;
10
+ fields?: Record<string, BitFieldDefinition<T>>;
11
+ devTools?: boolean | DevToolsOptions;
12
+ }
13
+ interface BitPublicStore<T extends object = any> {
14
+ getConfig(): Readonly<BitFrameworkConfig<T>>;
15
+ getState(): Readonly<BitState<T>>;
16
+ subscribe(listener: () => void): () => void;
17
+ setField<P extends BitPath<T>>(path: P, value: BitPathValue<T, P>): void;
18
+ blurField<P extends BitPath<T>>(path: P): void;
19
+ setValues(values: T): void;
20
+ setError(path: string, message: string | undefined): void;
21
+ setErrors(errors: BitErrors<T>): void;
22
+ setServerErrors(serverErrors: Record<string, string[] | string>): void;
23
+ validate(options?: {
24
+ scope?: string;
25
+ scopeFields?: string[];
26
+ }): Promise<boolean>;
27
+ reset(): void;
28
+ submit(onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>): Promise<void>;
29
+ registerMask(name: string, mask: BitMask): void;
30
+ getDirtyValues(): Partial<T>;
31
+ cleanup(): void;
32
+ }
33
+ interface BitFrameworkStore<T extends object = any> extends BitPublicStore<T> {
34
+ config: BitFrameworkConfig<T>;
35
+ registerField(path: string, config: BitFieldDefinition<T>): void;
36
+ unregisterField(path: string): void;
37
+ unregisterPrefix?(prefix: string): void;
38
+ isHidden(path: any): boolean;
39
+ isRequired(path: any): boolean;
40
+ isFieldDirty(path: string): boolean;
41
+ isFieldValidating(path: string): boolean;
42
+ watch(path: any, callback: (value: any) => void): () => void;
43
+ pushItem(path: any, value: any): void;
44
+ prependItem(path: any, value: any): void;
45
+ insertItem(path: any, index: number, value: any): void;
46
+ removeItem(path: any, index: number): void;
47
+ moveItem(path: any, from: number, to: number): void;
48
+ swapItems(path: any, indexA: number, indexB: number): void;
49
+ getHistoryMetadata(): {
50
+ canUndo: boolean;
51
+ canRedo: boolean;
52
+ historyIndex: number;
53
+ historySize: number;
54
+ };
55
+ undo(): void;
56
+ redo(): void;
57
+ getStepStatus(scopeName: string): ScopeStatus;
58
+ getStepErrors(scopeName: string): Record<string, string>;
59
+ markFieldsTouched(paths: string[]): void;
60
+ hasValidationsInProgress(scopeFields?: string[]): boolean;
61
+ beginFieldValidation(path: string): void;
62
+ endFieldValidation(path: string): void;
63
+ setFieldAsyncError(path: string, message: string): Promise<void>;
64
+ clearFieldAsyncError(path: string): Promise<void>;
65
+ resolveMask(path: string): BitMask | undefined;
66
+ getScopeFields(scopeName: string): string[];
67
+ }
68
+
69
+ export type { BitPublicStore as B, BitFrameworkConfig as a, BitFrameworkStore as b };
@@ -0,0 +1,69 @@
1
+ import { B as BitConfig, q as ValidatorFn, a as BitMask, g as BitFieldDefinition, s as DevToolsOptions, l as BitState, j as BitPath, k as BitPathValue, e as BitErrors, S as ScopeStatus } from './bus-vCbulIYH.cjs';
2
+
3
+ interface BitFrameworkConfig<T extends object = any> extends BitConfig<T> {
4
+ initialValues: T;
5
+ resolver?: ValidatorFn<T>;
6
+ validationDelay: number;
7
+ enableHistory: boolean;
8
+ historyLimit: number;
9
+ masks?: Record<string, BitMask>;
10
+ fields?: Record<string, BitFieldDefinition<T>>;
11
+ devTools?: boolean | DevToolsOptions;
12
+ }
13
+ interface BitPublicStore<T extends object = any> {
14
+ getConfig(): Readonly<BitFrameworkConfig<T>>;
15
+ getState(): Readonly<BitState<T>>;
16
+ subscribe(listener: () => void): () => void;
17
+ setField<P extends BitPath<T>>(path: P, value: BitPathValue<T, P>): void;
18
+ blurField<P extends BitPath<T>>(path: P): void;
19
+ setValues(values: T): void;
20
+ setError(path: string, message: string | undefined): void;
21
+ setErrors(errors: BitErrors<T>): void;
22
+ setServerErrors(serverErrors: Record<string, string[] | string>): void;
23
+ validate(options?: {
24
+ scope?: string;
25
+ scopeFields?: string[];
26
+ }): Promise<boolean>;
27
+ reset(): void;
28
+ submit(onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>): Promise<void>;
29
+ registerMask(name: string, mask: BitMask): void;
30
+ getDirtyValues(): Partial<T>;
31
+ cleanup(): void;
32
+ }
33
+ interface BitFrameworkStore<T extends object = any> extends BitPublicStore<T> {
34
+ config: BitFrameworkConfig<T>;
35
+ registerField(path: string, config: BitFieldDefinition<T>): void;
36
+ unregisterField(path: string): void;
37
+ unregisterPrefix?(prefix: string): void;
38
+ isHidden(path: any): boolean;
39
+ isRequired(path: any): boolean;
40
+ isFieldDirty(path: string): boolean;
41
+ isFieldValidating(path: string): boolean;
42
+ watch(path: any, callback: (value: any) => void): () => void;
43
+ pushItem(path: any, value: any): void;
44
+ prependItem(path: any, value: any): void;
45
+ insertItem(path: any, index: number, value: any): void;
46
+ removeItem(path: any, index: number): void;
47
+ moveItem(path: any, from: number, to: number): void;
48
+ swapItems(path: any, indexA: number, indexB: number): void;
49
+ getHistoryMetadata(): {
50
+ canUndo: boolean;
51
+ canRedo: boolean;
52
+ historyIndex: number;
53
+ historySize: number;
54
+ };
55
+ undo(): void;
56
+ redo(): void;
57
+ getStepStatus(scopeName: string): ScopeStatus;
58
+ getStepErrors(scopeName: string): Record<string, string>;
59
+ markFieldsTouched(paths: string[]): void;
60
+ hasValidationsInProgress(scopeFields?: string[]): boolean;
61
+ beginFieldValidation(path: string): void;
62
+ endFieldValidation(path: string): void;
63
+ setFieldAsyncError(path: string, message: string): Promise<void>;
64
+ clearFieldAsyncError(path: string): Promise<void>;
65
+ resolveMask(path: string): BitMask | undefined;
66
+ getScopeFields(scopeName: string): string[];
67
+ }
68
+
69
+ export type { BitPublicStore as B, BitFrameworkConfig as a, BitFrameworkStore as b };
@@ -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 _chunkPCVPCFPXcjs = require('../chunk-PCVPCFPX.cjs');require('../chunk-VFLQH47Q.cjs');var _react = require('react');function V(e){if(!e||typeof e!="object")return!1;let t=Object.keys(e);return t.length===1&&t[0]==="mask"}function F(e,t,a){let n=a!==void 0?t:V(t)?void 0:t,s=a!==void 0?a:V(t)?t:void 0,{fieldState:u,setValue:i,setBlur:d,store:l}=_chunkPCVPCFPXcjs.d.call(void 0, e,n),r=_react.useMemo.call(void 0, ()=>{let o=_nullishCoalesce(_optionalChain([s, 'optionalAccess', _ => _.mask]), () => (_optionalChain([l, 'access', _2 => _2.config, 'access', _3 => _3.fields, 'optionalAccess', _4 => _4[e], 'optionalAccess', _5 => _5.mask])));if(o)return typeof o=="string"?l.config.masks[o]:o},[_optionalChain([s, 'optionalAccess', _6 => _6.mask]),l.config.masks,l.config.fields,e]),c=_react.useMemo.call(void 0, ()=>{let o=u.value;return o==null||o===""?"":r?r.format(o):String(o)},[u.value,r]),p=_react.useCallback.call(void 0, o=>{if(!r){i(o);return}i(r.parse(String(_nullishCoalesce(o, () => ("")))))},[r,i]),{isHidden:S,isRequired:R,value:T,error:f,touched:B,isDirty:k,isValidating:P}=u,E=!!(B&&f),D=B?f:void 0,b=_react.useCallback.call(void 0, o=>{let M=_optionalChain([o, 'optionalAccess', _7 => _7.target])?o.target.value:o;p(M)},[p]),g=_react.useCallback.call(void 0, ()=>{d()},[d]);return{value:T,displayValue:c,setValue:p,setBlur:d,onChange:b,onBlur:g,props:{value:c,onChange:b,onBlur:g},meta:{error:D,touched:B,invalid:E,isDirty:k,isValidating:P,isHidden:S,isRequired:R,hasError:!!f}}}function K(){let e=_chunkPCVPCFPXcjs.b.call(void 0, ),t=_react.useRef.call(void 0, null),a=_react.useCallback.call(void 0, ()=>{let i=e.getHistoryMetadata();if(t.current&&t.current.canUndo===i.canUndo&&t.current.canRedo===i.canRedo&&t.current.historyIndex===i.historyIndex&&t.current.historySize===i.historySize)return t.current;let d={canUndo:i.canUndo,canRedo:i.canRedo,historyIndex:i.historyIndex,historySize:i.historySize};return t.current=d,d},[e]),n=_react.useSyncExternalStore.call(void 0, e.subscribe.bind(e),a,a),s=_react.useCallback.call(void 0, ()=>{e.undo()},[e]),u=_react.useCallback.call(void 0, ()=>{e.redo()},[e]);return{...n,undo:s,redo:u}}function G(e,t,a){let n=_chunkPCVPCFPXcjs.b.call(void 0, ),s=F(e),u=_react.useRef.call(void 0, null),i=_react.useCallback.call(void 0, async l=>{if(l){n.beginFieldValidation(e),await n.clearFieldAsyncError(e);try{let r=await t(l);s.setValue(r.url),u.current=r.key,await n.clearFieldAsyncError(e)}catch(r){let c=r instanceof Error?r.message:"Upload failed";await n.setFieldAsyncError(e,c)}finally{n.endFieldValidation(e)}}},[t,s,e,n]),d=_react.useCallback.call(void 0, async()=>{let l=u.current;if(l&&a)try{await a(l)}catch(r){let c=r instanceof Error?r.message:"Delete failed";await n.setFieldAsyncError(e,c);return}s.setValue(null),u.current=null,await n.clearFieldAsyncError(e)},[a,s,e,n]);return{value:s.value,setValue:s.setValue,error:_optionalChain([s, 'access', _8 => _8.meta, 'optionalAccess', _9 => _9.error]),isValidating:_optionalChain([s, 'access', _10 => _10.meta, 'optionalAccess', _11 => _11.isValidating])||!1,upload:i,remove:d}}exports.BitFormProvider = _chunkPCVPCFPXcjs.a; exports.useBitArray = _chunkPCVPCFPXcjs.e; exports.useBitField = F; exports.useBitForm = _chunkPCVPCFPXcjs.c; exports.useBitHistory = K; exports.useBitScope = _chunkPCVPCFPXcjs.f; exports.useBitSteps = _chunkPCVPCFPXcjs.g; exports.useBitStore = _chunkPCVPCFPXcjs.b; exports.useBitUpload = G; exports.useBitWatch = _chunkPCVPCFPXcjs.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 _chunkLPRLSFPTcjs = require('../chunk-LPRLSFPT.cjs');require('../chunk-2QNUW6ZN.cjs');var _react = require('react');function f(e){let{fieldState:r,setValue:a,setBlur:t,store:o}=_chunkLPRLSFPTcjs.d.call(void 0, e),i=_react.useMemo.call(void 0, ()=>o.resolveMask(e),[o.config.masks,o.config.fields,e]),s=_react.useMemo.call(void 0, ()=>{let n=r.value;return n==null||n===""?"":i?i.format(n):String(n)},[r.value,i]),u=_react.useCallback.call(void 0, n=>{if(!i){a(n);return}a(i.parse(String(_nullishCoalesce(n, () => ("")))))},[i,a]),{isHidden:c,isRequired:l,value:d,error:p,touched:y,isDirty:V,isValidating:b}=r,v=!!(y&&p),h=y?p:void 0,U=_react.useCallback.call(void 0, n=>{let E=_optionalChain([n, 'optionalAccess', _ => _.target])?n.target.value:n;u(E)},[u]),x=_react.useCallback.call(void 0, ()=>{t()},[t]);return{value:d,displayValue:s,setValue:u,setBlur:t,onChange:U,onBlur:x,props:{value:s,onChange:U,onBlur:x},meta:{error:h,touched:y,invalid:v,isDirty:V,isValidating:b,isHidden:c,isRequired:l,hasError:!!p}}}function I(){let e=_chunkLPRLSFPTcjs.b.call(void 0, ),r=_react.useRef.call(void 0, null),a=_react.useCallback.call(void 0, ()=>{let s=e.getHistoryMetadata();if(r.current&&r.current.canUndo===s.canUndo&&r.current.canRedo===s.canRedo&&r.current.historyIndex===s.historyIndex&&r.current.historySize===s.historySize)return r.current;let u={canUndo:s.canUndo,canRedo:s.canRedo,historyIndex:s.historyIndex,historySize:s.historySize};return r.current=u,u},[e]),t=_react.useSyncExternalStore.call(void 0, e.subscribe.bind(e),a,a),o=_react.useCallback.call(void 0, ()=>{e.undo()},[e]),i=_react.useCallback.call(void 0, ()=>{e.redo()},[e]);return{...t,undo:o,redo:i}}function D(e,r,a){let t=_chunkLPRLSFPTcjs.b.call(void 0, ),o=f(e),i=_react.useRef.call(void 0, null),s=_react.useCallback.call(void 0, async c=>{if(c){t.beginFieldValidation(e),await t.clearFieldAsyncError(e);try{let l=await r(c);o.setValue(l.url),i.current=l.key,await t.clearFieldAsyncError(e)}catch(l){let d=l instanceof Error?l.message:"Upload failed";await t.setFieldAsyncError(e,d)}finally{t.endFieldValidation(e)}}},[r,o,e,t]),u=_react.useCallback.call(void 0, async()=>{let c=i.current;if(c&&a)try{await a(c)}catch(l){let d=l instanceof Error?l.message:"Delete failed";await t.setFieldAsyncError(e,d);return}o.setValue(null),i.current=null,await t.clearFieldAsyncError(e)},[a,o,e,t]);return{value:o.value,setValue:o.setValue,error:_optionalChain([o, 'access', _2 => _2.meta, 'optionalAccess', _3 => _3.error]),isValidating:_optionalChain([o, 'access', _4 => _4.meta, 'optionalAccess', _5 => _5.isValidating])||!1,upload:s,remove:u}}exports.BitFormProvider = _chunkLPRLSFPTcjs.a; exports.useBitArray = _chunkLPRLSFPTcjs.e; exports.useBitField = f; exports.useBitForm = _chunkLPRLSFPTcjs.c; exports.useBitHistory = I; exports.useBitScope = _chunkLPRLSFPTcjs.f; exports.useBitSteps = _chunkLPRLSFPTcjs.g; exports.useBitStore = _chunkLPRLSFPTcjs.b; exports.useBitUpload = D; exports.useBitWatch = _chunkLPRLSFPTcjs.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":["isMaskOnlyOptions","value","keys","useBitField","path","configOrOptions","maybeOptions","config","options","fieldState","rawSetValue","setBlur","store","useBitFieldBase","resolvedMask","useMemo","maskOption","displayValue","val","setValue","useCallback","isHidden","isRequired","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","upload","file","result","message","remove","uploadKey"],"mappings":"AAAA,0uBAA0F,iCAA8B,8BCAnF,SA2C5BA,CAAAA,CACPC,CAAAA,CAC0B,CAC1B,EAAA,CAAI,CAACA,CAAAA,EAAS,OAAOA,CAAAA,EAAU,QAAA,CAAU,MAAO,CAAA,CAAA,CAChD,IAAMC,CAAAA,CAAO,MAAA,CAAO,IAAA,CAAKD,CAAK,CAAA,CAC9B,OAAOC,CAAAA,CAAK,MAAA,GAAW,CAAA,EAAKA,CAAAA,CAAK,CAAC,CAAA,GAAM,MAC1C,CAEO,SAASC,CAAAA,CAIdC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CAC6B,CAC7B,IAAMC,CAAAA,CACJD,CAAAA,GAAiB,KAAA,CAAA,CACZD,CAAAA,CACDL,CAAAA,CAAkBK,CAAe,CAAA,CAC/B,KAAA,CAAA,CACCA,CAAAA,CAEHG,CAAAA,CACJF,CAAAA,GAAiB,KAAA,CAAA,CACbA,CAAAA,CACAN,CAAAA,CAAkBK,CAAe,CAAA,CAC/BA,CAAAA,CACA,KAAA,CAAA,CAEF,CACJ,UAAA,CAAAI,CAAAA,CACA,QAAA,CAAUC,CAAAA,CACV,OAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CACF,CAAA,CAAIC,iCAAAA,CAAkDT,CAAMG,CAAM,CAAA,CAE5DO,CAAAA,CAAeC,4BAAAA,CAAQ,CAAA,EAAM,CACjC,IAAMC,CAAAA,kCACJR,CAAAA,2BAAS,MAAA,yBAAQI,CAAAA,qBAAM,MAAA,qBAAO,MAAA,4BAAA,CAASR,CAAc,CAAA,6BAAG,QAAA,CAC1D,EAAA,CAAKY,CAAAA,CACL,OAAO,OAAOA,CAAAA,EAAe,QAAA,CACzBJ,CAAAA,CAAM,MAAA,CAAO,KAAA,CAAOI,CAAU,CAAA,CAC9BA,CACN,CAAA,CAAG,iBAACR,CAAAA,6BAAS,MAAA,CAAMI,CAAAA,CAAM,MAAA,CAAO,KAAA,CAAOA,CAAAA,CAAM,MAAA,CAAO,MAAA,CAAQR,CAAI,CAAC,CAAA,CAE3Da,CAAAA,CAAeF,4BAAAA,CAAQ,CAAA,EAAM,CACjC,IAAMG,CAAAA,CAAMT,CAAAA,CAAW,KAAA,CACvB,OAAyBS,CAAAA,EAAQ,IAAA,EAAQA,CAAAA,GAAQ,EAAA,CAAW,EAAA,CAErDJ,CAAAA,CAAeA,CAAAA,CAAa,MAAA,CAAOI,CAAG,CAAA,CAAI,MAAA,CAAOA,CAAG,CAC7D,CAAA,CAAG,CAACT,CAAAA,CAAW,KAAA,CAAOK,CAAY,CAAC,CAAA,CAE7BK,CAAAA,CAAWC,gCAAAA,CACdF,EAAa,CACZ,EAAA,CAAI,CAACJ,CAAAA,CAAc,CACjBJ,CAAAA,CAAYQ,CAAG,CAAA,CACf,MACF,CAEAR,CAAAA,CAAYI,CAAAA,CAAa,KAAA,CAAM,MAAA,kBAAOI,CAAAA,SAAO,IAAE,CAAC,CAAQ,CAC1D,CAAA,CACA,CAACJ,CAAAA,CAAcJ,CAAW,CAC5B,CAAA,CAEM,CAAE,QAAA,CAAAW,CAAAA,CAAU,UAAA,CAAAC,CAAAA,CAAY,KAAA,CAAArB,CAAAA,CAAO,KAAA,CAAAsB,CAAAA,CAAO,OAAA,CAAAC,CAAAA,CAAS,OAAA,CAAAC,CAAAA,CAAS,YAAA,CAAAC,CAAa,CAAA,CACzEjB,CAAAA,CAEIkB,CAAAA,CAAU,CAAC,CAAA,CAAEH,CAAAA,EAAWD,CAAAA,CAAAA,CACxBK,CAAAA,CAAeJ,CAAAA,CAAUD,CAAAA,CAAQ,KAAA,CAAA,CAEjCM,CAAAA,CAAWT,gCAAAA,CACdU,EAAW,CACV,IAAMZ,CAAAA,iBAAMY,CAAAA,6BAAG,QAAA,CAASA,CAAAA,CAAE,MAAA,CAAO,KAAA,CAAQA,CAAAA,CACzCX,CAAAA,CAASD,CAAG,CACd,CAAA,CACA,CAACC,CAAQ,CACX,CAAA,CAEMY,CAAAA,CAASX,gCAAAA,CAAY,CAAA,EAAM,CAC/BT,CAAAA,CAAQ,CACV,CAAA,CAAG,CAACA,CAAO,CAAC,CAAA,CAEZ,MAAO,CAEL,KAAA,CAAOV,CAAAA,CACP,YAAA,CAAAgB,CAAAA,CACA,QAAA,CAAAE,CAAAA,CACA,OAAA,CAAAR,CAAAA,CACA,QAAA,CAAAkB,CAAAA,CACA,MAAA,CAAAE,CAAAA,CAEA,KAAA,CAAO,CACL,KAAA,CAAOd,CAAAA,CACP,QAAA,CAAAY,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,CAAAL,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,QAAA,CAAU,CAAC,CAACC,CACd,CACF,CACF,CCxJA,SAYgBS,CAAAA,CAAAA,CAA6D,CAC3E,IAAMpB,CAAAA,CAAQqB,iCAAAA,CAAe,CACvBC,CAAAA,CAAWC,2BAAAA,IAKH,CAAA,CAERC,CAAAA,CAAchB,gCAAAA,CAAY,CAAA,EAAM,CACpC,IAAMiB,CAAAA,CAAWzB,CAAAA,CAAM,kBAAA,CAAmB,CAAA,CAE1C,EAAA,CACEsB,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,CAAC1B,CAAK,CAAC,CAAA,CAEJ2B,CAAAA,CAAOC,yCAAAA,CACX5B,CAAM,SAAA,CAAU,IAAA,CAAKA,CAAK,CAAA,CAC1BwB,CAAAA,CACAA,CACF,CAAA,CAEMK,CAAAA,CAAOrB,gCAAAA,CAAY,CAAA,EAAM,CAC7BR,CAAAA,CAAM,IAAA,CAAK,CACb,CAAA,CAAG,CAACA,CAAK,CAAC,CAAA,CAEJ8B,CAAAA,CAAOtB,gCAAAA,CAAY,CAAA,EAAM,CAC7BR,CAAAA,CAAM,IAAA,CAAK,CACb,CAAA,CAAG,CAACA,CAAK,CAAC,CAAA,CAEV,MAAO,CACL,GAAG2B,CAAAA,CACH,IAAA,CAAAE,CAAAA,CACA,IAAA,CAAAC,CACF,CACF,CC1CA,SAcgBC,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACoB,CACpB,IAAMlC,CAAAA,CAAQqB,iCAAAA,CAAiB,CACzBc,CAAAA,CAAQ5C,CAAAA,CAAYyC,CAAS,CAAA,CAC7BI,CAAAA,CAAeb,2BAAAA,IAA0B,CAAA,CAEzCc,CAAAA,CAAS7B,gCAAAA,MACN8B,CAAAA,EAAkC,CACvC,EAAA,CAAKA,CAAAA,CAEL,CAAAtC,CAAAA,CAAM,oBAAA,CAAqBgC,CAAS,CAAA,CACpC,MAAMhC,CAAAA,CAAM,oBAAA,CAAqBgC,CAAS,CAAA,CAE1C,GAAI,CACF,IAAMO,CAAAA,CAAS,MAAMN,CAAAA,CAASK,CAAI,CAAA,CAElCH,CAAAA,CAAM,QAAA,CAASI,CAAAA,CAAO,GAAG,CAAA,CACzBH,CAAAA,CAAa,OAAA,CAAUG,CAAAA,CAAO,GAAA,CAC9B,MAAMvC,CAAAA,CAAM,oBAAA,CAAqBgC,CAAS,CAC5C,CAAA,KAAA,CAASrB,CAAAA,CAAO,CACd,IAAM6B,CAAAA,CACJ7B,EAAAA,WAAiB,KAAA,CAAQA,CAAAA,CAAM,OAAA,CAAU,eAAA,CAC3C,MAAMX,CAAAA,CAAM,kBAAA,CAAmBgC,CAAAA,CAAWQ,CAAO,CACnD,CAAA,OAAE,CACAxC,CAAAA,CAAM,kBAAA,CAAmBgC,CAAS,CACpC,CAAA,CACF,CAAA,CACA,CAACC,CAAAA,CAAUE,CAAAA,CAAOH,CAAAA,CAAWhC,CAAK,CACpC,CAAA,CAEMyC,CAAAA,CAASjC,gCAAAA,KAAY,CAAA,CAAA,EAAY,CACrC,IAAMkC,CAAAA,CAAYN,CAAAA,CAAa,OAAA,CAE/B,EAAA,CAAIM,CAAAA,EAAaR,CAAAA,CACf,GAAI,CACF,MAAMA,CAAAA,CAAWQ,CAAS,CAC5B,CAAA,KAAA,CAAS/B,CAAAA,CAAO,CACd,IAAM6B,CAAAA,CACJ7B,EAAAA,WAAiB,KAAA,CAAQA,CAAAA,CAAM,OAAA,CAAU,eAAA,CAC3C,MAAMX,CAAAA,CAAM,kBAAA,CAAmBgC,CAAAA,CAAWQ,CAAO,CAAA,CACjD,MACF,CAGFL,CAAAA,CAAM,QAAA,CAAS,IAAI,CAAA,CACnBC,CAAAA,CAAa,OAAA,CAAU,IAAA,CACvB,MAAMpC,CAAAA,CAAM,oBAAA,CAAqBgC,CAAS,CAC5C,CAAA,CAAG,CAACE,CAAAA,CAAYC,CAAAA,CAAOH,CAAAA,CAAWhC,CAAK,CAAC,CAAA,CAExC,MAAO,CACL,KAAA,CAAOmC,CAAAA,CAAM,KAAA,CACb,QAAA,CAAUA,CAAAA,CAAM,QAAA,CAChB,KAAA,iBAAOA,CAAAA,qBAAM,IAAA,6BAAM,OAAA,CACnB,YAAA,iBAAcA,CAAAA,uBAAM,IAAA,+BAAM,cAAA,EAAgB,CAAA,CAAA,CAC1C,MAAA,CAAAE,CAAAA,CACA,MAAA,CAAAI,CACF,CACF,CAAA,6XAAA","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 {\n BitFieldDefinition,\n BitFieldOptions,\n BitPath,\n BitPathValue,\n} from \"../core\";\n\nexport interface UseBitFieldMeta {\n error: string | undefined;\n touched: boolean;\n invalid: boolean;\n isValidating: boolean;\n isDirty: boolean;\n isHidden: boolean;\n isRequired: boolean;\n hasError: boolean;\n}\n\nexport interface UseBitFieldBindProps {\n value: string;\n onChange: (e: any) => void;\n onBlur: () => void;\n}\n\nexport interface UseBitFieldResult<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n> {\n // Main handlers and values (flat)\n value: BitPathValue<TForm, P>;\n displayValue: string;\n setValue: (val: any) => void;\n setBlur: () => void;\n onChange: (e: any) => void;\n onBlur: () => void;\n // Props helper for native inputs\n props: UseBitFieldBindProps;\n // Readonly metadata (grouped)\n meta: UseBitFieldMeta;\n}\n\nfunction isMaskOnlyOptions(\n value: BitFieldDefinition<any> | BitFieldOptions | undefined,\n): value is BitFieldOptions {\n if (!value || typeof value !== \"object\") return false;\n const keys = Object.keys(value);\n return keys.length === 1 && keys[0] === \"mask\";\n}\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(\n path: P,\n configOrOptions?: BitFieldDefinition<TForm> | BitFieldOptions,\n maybeOptions?: BitFieldOptions,\n): UseBitFieldResult<TForm, P> {\n const config =\n maybeOptions !== undefined\n ? (configOrOptions as BitFieldDefinition<TForm> | undefined)\n : isMaskOnlyOptions(configOrOptions)\n ? undefined\n : (configOrOptions as BitFieldDefinition<TForm> | undefined);\n\n const options =\n maybeOptions !== undefined\n ? maybeOptions\n : isMaskOnlyOptions(configOrOptions)\n ? configOrOptions\n : undefined;\n\n const {\n fieldState,\n setValue: rawSetValue,\n setBlur,\n store,\n } = useBitFieldBase<BitPathValue<TForm, P>, TForm, P>(path, config);\n\n const resolvedMask = useMemo(() => {\n const maskOption =\n options?.mask ?? store.config.fields?.[path as string]?.mask;\n if (!maskOption) return undefined;\n return typeof maskOption === \"string\"\n ? store.config.masks![maskOption]\n : maskOption;\n }, [options?.mask, store.config.masks, store.config.fields, path]);\n\n const displayValue = useMemo(() => {\n const val = fieldState.value;\n if (val === undefined || val === null || val === \"\") return \"\";\n\n return resolvedMask ? resolvedMask.format(val) : String(val);\n }, [fieldState.value, resolvedMask]);\n\n const setValue = useCallback(\n (val: any) => {\n if (!resolvedMask) {\n rawSetValue(val);\n return;\n }\n\n rawSetValue(resolvedMask.parse(String(val ?? \"\")) as any);\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: 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\";\n\nexport interface UseBitHistoryResult {\n canUndo: boolean;\n canRedo: boolean;\n historyIndex: number;\n historySize: number;\n undo: () => void;\n redo: () => void;\n}\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 } from \"react\";\nimport { useBitField } from \"./use-bit-field\";\nimport { useBitStore } from \"./context\";\nimport { BitUploadFn, BitDeleteUploadFn } from \"../core/upload/types\";\n\nexport interface UseBitUploadResult {\n value: string | File | null;\n setValue: (value: string | File | null) => void;\n error?: string;\n isValidating: boolean;\n upload: (file: File | null | undefined) => Promise<void>;\n remove: () => Promise<void>;\n}\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\n const upload = useCallback(\n async (file: File | null | undefined) => {\n if (!file) return;\n\n store.beginFieldValidation(fieldPath);\n await store.clearFieldAsyncError(fieldPath);\n\n try {\n const result = await uploadFn(file);\n\n field.setValue(result.url);\n uploadKeyRef.current = result.key;\n await store.clearFieldAsyncError(fieldPath);\n } catch (error) {\n const message =\n error instanceof Error ? error.message : \"Upload failed\";\n await store.setFieldAsyncError(fieldPath, message);\n } finally {\n store.endFieldValidation(fieldPath);\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 await store.setFieldAsyncError(fieldPath, message);\n return;\n }\n }\n\n field.setValue(null);\n uploadKeyRef.current = null;\n await store.clearFieldAsyncError(fieldPath);\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 || false,\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","val","setValue","useCallback","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","upload","file","result","message","remove","uploadKey"],"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 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 const val = fieldState.value;\n if (val === undefined || val === null || val === \"\") return \"\";\n\n return resolvedMask ? resolvedMask.format(val) : String(val);\n }, [fieldState.value, resolvedMask]);\n\n const setValue = useCallback(\n (val: any) => {\n if (!resolvedMask) {\n rawSetValue(val);\n return;\n }\n\n rawSetValue(resolvedMask.parse(String(val ?? \"\")) as any);\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: 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 } 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\n const upload = useCallback(\n async (file: File | null | undefined) => {\n if (!file) return;\n\n store.beginFieldValidation(fieldPath);\n await store.clearFieldAsyncError(fieldPath);\n\n try {\n const result = await uploadFn(file);\n\n field.setValue(result.url);\n uploadKeyRef.current = result.key;\n await store.clearFieldAsyncError(fieldPath);\n } catch (error) {\n const message =\n error instanceof Error ? error.message : \"Upload failed\";\n await store.setFieldAsyncError(fieldPath, message);\n } finally {\n store.endFieldValidation(fieldPath);\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 await store.setFieldAsyncError(fieldPath, message);\n return;\n }\n }\n\n field.setValue(null);\n uploadKeyRef.current = null;\n await store.clearFieldAsyncError(fieldPath);\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 || false,\n upload,\n remove,\n };\n}\n"]}
@@ -1,46 +1,14 @@
1
- export { B as BitFormProvider, U as UseBitStepsResult, u as useBitArray, a as useBitForm, b as useBitScope, c as useBitSteps, d as useBitStore, e as useBitWatch } from '../use-bit-watch-BLCTa7d4.cjs';
2
- import { b as BitPath, c as BitPathValue, k as BitFieldDefinition, l as BitFieldOptions } from '../bus-uG4EmM-Z.cjs';
3
- export { S as ScopeStatus, V as ValidateScopeResult } from '../bus-uG4EmM-Z.cjs';
1
+ import { U as UseBitFieldResult, a as UseBitHistoryResult, b as UseBitUploadResult } from '../use-bit-watch-BRekIj2W.cjs';
2
+ export { B as BitFormProvider, c as UseBitFieldBindProps, d as UseBitFieldMeta, e as UseBitStepsResult, u as useBitArray, f as useBitForm, g as useBitScope, h as useBitSteps, i as useBitStore, j as useBitWatch } from '../use-bit-watch-BRekIj2W.cjs';
3
+ import { j as BitPath } from '../bus-vCbulIYH.cjs';
4
+ export { S as ScopeStatus, V as ValidateScopeResult } from '../bus-vCbulIYH.cjs';
4
5
  import { a as BitUploadFn, B as BitDeleteUploadFn } from '../types-C2mpfhp1.cjs';
5
6
  import 'react/jsx-runtime';
6
7
  import 'react';
7
- import '../index-9vxGUNPP.cjs';
8
+ import '../public-types-Nv__uZTR.cjs';
8
9
 
9
- interface UseBitFieldMeta {
10
- error: string | undefined;
11
- touched: boolean;
12
- invalid: boolean;
13
- isValidating: boolean;
14
- isDirty: boolean;
15
- isHidden: boolean;
16
- isRequired: boolean;
17
- hasError: boolean;
18
- }
19
- interface UseBitFieldBindProps {
20
- value: string;
21
- onChange: (e: any) => void;
22
- onBlur: () => void;
23
- }
24
- interface UseBitFieldResult<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>> {
25
- value: BitPathValue<TForm, P>;
26
- displayValue: string;
27
- setValue: (val: any) => void;
28
- setBlur: () => void;
29
- onChange: (e: any) => void;
30
- onBlur: () => void;
31
- props: UseBitFieldBindProps;
32
- meta: UseBitFieldMeta;
33
- }
34
- declare function useBitField<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P, configOrOptions?: BitFieldDefinition<TForm> | BitFieldOptions, maybeOptions?: BitFieldOptions): UseBitFieldResult<TForm, P>;
10
+ declare function useBitField<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): UseBitFieldResult<TForm, P>;
35
11
 
36
- interface UseBitHistoryResult {
37
- canUndo: boolean;
38
- canRedo: boolean;
39
- historyIndex: number;
40
- historySize: number;
41
- undo: () => void;
42
- redo: () => void;
43
- }
44
12
  declare function useBitHistory<T extends object = any>(): UseBitHistoryResult;
45
13
 
46
14
  /**
@@ -65,14 +33,6 @@ declare function useBitHistory<T extends object = any>(): UseBitHistoryResult;
65
33
  * ```
66
34
  */
67
35
 
68
- interface UseBitUploadResult {
69
- value: string | File | null;
70
- setValue: (value: string | File | null) => void;
71
- error?: string;
72
- isValidating: boolean;
73
- upload: (file: File | null | undefined) => Promise<void>;
74
- remove: () => Promise<void>;
75
- }
76
36
  declare function useBitUpload(fieldPath: string, uploadFn: BitUploadFn, deleteFile?: BitDeleteUploadFn): UseBitUploadResult;
77
37
 
78
- export { type UseBitFieldBindProps, type UseBitFieldMeta, type UseBitFieldResult, type UseBitUploadResult, useBitField, useBitHistory, useBitUpload };
38
+ export { UseBitFieldResult, UseBitHistoryResult, UseBitUploadResult, useBitField, useBitHistory, useBitUpload };
@@ -1,46 +1,14 @@
1
- export { B as BitFormProvider, U as UseBitStepsResult, u as useBitArray, a as useBitForm, b as useBitScope, c as useBitSteps, d as useBitStore, e as useBitWatch } from '../use-bit-watch-iCGj-kYp.js';
2
- import { b as BitPath, c as BitPathValue, k as BitFieldDefinition, l as BitFieldOptions } from '../bus-uG4EmM-Z.js';
3
- export { S as ScopeStatus, V as ValidateScopeResult } from '../bus-uG4EmM-Z.js';
1
+ import { U as UseBitFieldResult, a as UseBitHistoryResult, b as UseBitUploadResult } from '../use-bit-watch-hA0AqCkC.js';
2
+ export { B as BitFormProvider, c as UseBitFieldBindProps, d as UseBitFieldMeta, e as UseBitStepsResult, u as useBitArray, f as useBitForm, g as useBitScope, h as useBitSteps, i as useBitStore, j as useBitWatch } from '../use-bit-watch-hA0AqCkC.js';
3
+ import { j as BitPath } from '../bus-vCbulIYH.js';
4
+ export { S as ScopeStatus, V as ValidateScopeResult } from '../bus-vCbulIYH.js';
4
5
  import { a as BitUploadFn, B as BitDeleteUploadFn } from '../types-C2mpfhp1.js';
5
6
  import 'react/jsx-runtime';
6
7
  import 'react';
7
- import '../index-1fP1eJH8.js';
8
+ import '../public-types-ChP5j3xc.js';
8
9
 
9
- interface UseBitFieldMeta {
10
- error: string | undefined;
11
- touched: boolean;
12
- invalid: boolean;
13
- isValidating: boolean;
14
- isDirty: boolean;
15
- isHidden: boolean;
16
- isRequired: boolean;
17
- hasError: boolean;
18
- }
19
- interface UseBitFieldBindProps {
20
- value: string;
21
- onChange: (e: any) => void;
22
- onBlur: () => void;
23
- }
24
- interface UseBitFieldResult<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>> {
25
- value: BitPathValue<TForm, P>;
26
- displayValue: string;
27
- setValue: (val: any) => void;
28
- setBlur: () => void;
29
- onChange: (e: any) => void;
30
- onBlur: () => void;
31
- props: UseBitFieldBindProps;
32
- meta: UseBitFieldMeta;
33
- }
34
- declare function useBitField<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P, configOrOptions?: BitFieldDefinition<TForm> | BitFieldOptions, maybeOptions?: BitFieldOptions): UseBitFieldResult<TForm, P>;
10
+ declare function useBitField<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): UseBitFieldResult<TForm, P>;
35
11
 
36
- interface UseBitHistoryResult {
37
- canUndo: boolean;
38
- canRedo: boolean;
39
- historyIndex: number;
40
- historySize: number;
41
- undo: () => void;
42
- redo: () => void;
43
- }
44
12
  declare function useBitHistory<T extends object = any>(): UseBitHistoryResult;
45
13
 
46
14
  /**
@@ -65,14 +33,6 @@ declare function useBitHistory<T extends object = any>(): UseBitHistoryResult;
65
33
  * ```
66
34
  */
67
35
 
68
- interface UseBitUploadResult {
69
- value: string | File | null;
70
- setValue: (value: string | File | null) => void;
71
- error?: string;
72
- isValidating: boolean;
73
- upload: (file: File | null | undefined) => Promise<void>;
74
- remove: () => Promise<void>;
75
- }
76
36
  declare function useBitUpload(fieldPath: string, uploadFn: BitUploadFn, deleteFile?: BitDeleteUploadFn): UseBitUploadResult;
77
37
 
78
- export { type UseBitFieldBindProps, type UseBitFieldMeta, type UseBitFieldResult, type UseBitUploadResult, useBitField, useBitHistory, useBitUpload };
38
+ export { UseBitFieldResult, UseBitHistoryResult, UseBitUploadResult, useBitField, useBitHistory, useBitUpload };
@@ -1,2 +1,2 @@
1
- import{a as w,b as m,c as H,d as v,e as z,f as A,g as C,h as I}from"../chunk-ET36BANJ.js";import"../chunk-NDFMZWBP.js";import{useMemo as U,useCallback as y}from"react";function V(e){if(!e||typeof e!="object")return!1;let t=Object.keys(e);return t.length===1&&t[0]==="mask"}function F(e,t,a){let n=a!==void 0?t:V(t)?void 0:t,s=a!==void 0?a:V(t)?t:void 0,{fieldState:u,setValue:i,setBlur:d,store:l}=v(e,n),r=U(()=>{let o=s?.mask??l.config.fields?.[e]?.mask;if(o)return typeof o=="string"?l.config.masks[o]:o},[s?.mask,l.config.masks,l.config.fields,e]),c=U(()=>{let o=u.value;return o==null||o===""?"":r?r.format(o):String(o)},[u.value,r]),p=y(o=>{if(!r){i(o);return}i(r.parse(String(o??"")))},[r,i]),{isHidden:S,isRequired:R,value:T,error:f,touched:B,isDirty:k,isValidating:P}=u,E=!!(B&&f),D=B?f:void 0,b=y(o=>{let M=o?.target?o.target.value:o;p(M)},[p]),g=y(()=>{d()},[d]);return{value:T,displayValue:c,setValue:p,setBlur:d,onChange:b,onBlur:g,props:{value:c,onChange:b,onBlur:g},meta:{error:D,touched:B,invalid:E,isDirty:k,isValidating:P,isHidden:S,isRequired:R,hasError:!!f}}}import{useCallback as x,useRef as j,useSyncExternalStore as q}from"react";function K(){let e=m(),t=j(null),a=x(()=>{let i=e.getHistoryMetadata();if(t.current&&t.current.canUndo===i.canUndo&&t.current.canRedo===i.canRedo&&t.current.historyIndex===i.historyIndex&&t.current.historySize===i.historySize)return t.current;let d={canUndo:i.canUndo,canRedo:i.canRedo,historyIndex:i.historyIndex,historySize:i.historySize};return t.current=d,d},[e]),n=q(e.subscribe.bind(e),a,a),s=x(()=>{e.undo()},[e]),u=x(()=>{e.redo()},[e]);return{...n,undo:s,redo:u}}import{useCallback as h,useRef as W}from"react";function G(e,t,a){let n=m(),s=F(e),u=W(null),i=h(async l=>{if(l){n.beginFieldValidation(e),await n.clearFieldAsyncError(e);try{let r=await t(l);s.setValue(r.url),u.current=r.key,await n.clearFieldAsyncError(e)}catch(r){let c=r instanceof Error?r.message:"Upload failed";await n.setFieldAsyncError(e,c)}finally{n.endFieldValidation(e)}}},[t,s,e,n]),d=h(async()=>{let l=u.current;if(l&&a)try{await a(l)}catch(r){let c=r instanceof Error?r.message:"Delete failed";await n.setFieldAsyncError(e,c);return}s.setValue(null),u.current=null,await n.clearFieldAsyncError(e)},[a,s,e,n]);return{value:s.value,setValue:s.setValue,error:s.meta?.error,isValidating:s.meta?.isValidating||!1,upload:i,remove:d}}export{w as BitFormProvider,z as useBitArray,F as useBitField,H as useBitForm,K as useBitHistory,A as useBitScope,C as useBitSteps,m as useBitStore,G as useBitUpload,I as useBitWatch};
1
+ import{a as M,b as m,c as T,d as S,e as w,f as k,g as H,h as A}from"../chunk-F6LJWWEW.js";import"../chunk-N6IA7HQL.js";import{useMemo as g,useCallback as B}from"react";function f(e){let{fieldState:r,setValue:a,setBlur:t,store:o}=S(e),i=g(()=>o.resolveMask(e),[o.config.masks,o.config.fields,e]),s=g(()=>{let n=r.value;return n==null||n===""?"":i?i.format(n):String(n)},[r.value,i]),u=B(n=>{if(!i){a(n);return}a(i.parse(String(n??"")))},[i,a]),{isHidden:c,isRequired:l,value:d,error:p,touched:y,isDirty:V,isValidating:b}=r,v=!!(y&&p),h=y?p:void 0,U=B(n=>{let E=n?.target?n.target.value:n;u(E)},[u]),x=B(()=>{t()},[t]);return{value:d,displayValue:s,setValue:u,setBlur:t,onChange:U,onBlur:x,props:{value:s,onChange:U,onBlur:x},meta:{error:h,touched:y,invalid:v,isDirty:V,isValidating:b,isHidden:c,isRequired:l,hasError:!!p}}}import{useCallback as F,useRef as P,useSyncExternalStore as z}from"react";function I(){let e=m(),r=P(null),a=F(()=>{let s=e.getHistoryMetadata();if(r.current&&r.current.canUndo===s.canUndo&&r.current.canRedo===s.canRedo&&r.current.historyIndex===s.historyIndex&&r.current.historySize===s.historySize)return r.current;let u={canUndo:s.canUndo,canRedo:s.canRedo,historyIndex:s.historyIndex,historySize:s.historySize};return r.current=u,u},[e]),t=z(e.subscribe.bind(e),a,a),o=F(()=>{e.undo()},[e]),i=F(()=>{e.redo()},[e]);return{...t,undo:o,redo:i}}import{useCallback as R,useRef as C}from"react";function D(e,r,a){let t=m(),o=f(e),i=C(null),s=R(async c=>{if(c){t.beginFieldValidation(e),await t.clearFieldAsyncError(e);try{let l=await r(c);o.setValue(l.url),i.current=l.key,await t.clearFieldAsyncError(e)}catch(l){let d=l instanceof Error?l.message:"Upload failed";await t.setFieldAsyncError(e,d)}finally{t.endFieldValidation(e)}}},[r,o,e,t]),u=R(async()=>{let c=i.current;if(c&&a)try{await a(c)}catch(l){let d=l instanceof Error?l.message:"Delete failed";await t.setFieldAsyncError(e,d);return}o.setValue(null),i.current=null,await t.clearFieldAsyncError(e)},[a,o,e,t]);return{value:o.value,setValue:o.setValue,error:o.meta?.error,isValidating:o.meta?.isValidating||!1,upload:s,remove:u}}export{M as BitFormProvider,w as useBitArray,f as useBitField,T as useBitForm,I as useBitHistory,k as useBitScope,H as useBitSteps,m as useBitStore,D as useBitUpload,A as useBitWatch};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/react/use-bit-field.ts","../../src/react/use-bit-history.ts","../../src/react/use-bit-upload.ts"],"sourcesContent":["import { useMemo, useCallback } from \"react\";\nimport { useBitFieldBase } from \"./use-bit-field-base\";\nimport {\n BitFieldDefinition,\n BitFieldOptions,\n BitPath,\n BitPathValue,\n} from \"../core\";\n\nexport interface UseBitFieldMeta {\n error: string | undefined;\n touched: boolean;\n invalid: boolean;\n isValidating: boolean;\n isDirty: boolean;\n isHidden: boolean;\n isRequired: boolean;\n hasError: boolean;\n}\n\nexport interface UseBitFieldBindProps {\n value: string;\n onChange: (e: any) => void;\n onBlur: () => void;\n}\n\nexport interface UseBitFieldResult<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n> {\n // Main handlers and values (flat)\n value: BitPathValue<TForm, P>;\n displayValue: string;\n setValue: (val: any) => void;\n setBlur: () => void;\n onChange: (e: any) => void;\n onBlur: () => void;\n // Props helper for native inputs\n props: UseBitFieldBindProps;\n // Readonly metadata (grouped)\n meta: UseBitFieldMeta;\n}\n\nfunction isMaskOnlyOptions(\n value: BitFieldDefinition<any> | BitFieldOptions | undefined,\n): value is BitFieldOptions {\n if (!value || typeof value !== \"object\") return false;\n const keys = Object.keys(value);\n return keys.length === 1 && keys[0] === \"mask\";\n}\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(\n path: P,\n configOrOptions?: BitFieldDefinition<TForm> | BitFieldOptions,\n maybeOptions?: BitFieldOptions,\n): UseBitFieldResult<TForm, P> {\n const config =\n maybeOptions !== undefined\n ? (configOrOptions as BitFieldDefinition<TForm> | undefined)\n : isMaskOnlyOptions(configOrOptions)\n ? undefined\n : (configOrOptions as BitFieldDefinition<TForm> | undefined);\n\n const options =\n maybeOptions !== undefined\n ? maybeOptions\n : isMaskOnlyOptions(configOrOptions)\n ? configOrOptions\n : undefined;\n\n const {\n fieldState,\n setValue: rawSetValue,\n setBlur,\n store,\n } = useBitFieldBase<BitPathValue<TForm, P>, TForm, P>(path, config);\n\n const resolvedMask = useMemo(() => {\n const maskOption =\n options?.mask ?? store.config.fields?.[path as string]?.mask;\n if (!maskOption) return undefined;\n return typeof maskOption === \"string\"\n ? store.config.masks![maskOption]\n : maskOption;\n }, [options?.mask, store.config.masks, store.config.fields, path]);\n\n const displayValue = useMemo(() => {\n const val = fieldState.value;\n if (val === undefined || val === null || val === \"\") return \"\";\n\n return resolvedMask ? resolvedMask.format(val) : String(val);\n }, [fieldState.value, resolvedMask]);\n\n const setValue = useCallback(\n (val: any) => {\n if (!resolvedMask) {\n rawSetValue(val);\n return;\n }\n\n rawSetValue(resolvedMask.parse(String(val ?? \"\")) as any);\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: 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\";\n\nexport interface UseBitHistoryResult {\n canUndo: boolean;\n canRedo: boolean;\n historyIndex: number;\n historySize: number;\n undo: () => void;\n redo: () => void;\n}\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 } from \"react\";\nimport { useBitField } from \"./use-bit-field\";\nimport { useBitStore } from \"./context\";\nimport { BitUploadFn, BitDeleteUploadFn } from \"../core/upload/types\";\n\nexport interface UseBitUploadResult {\n value: string | File | null;\n setValue: (value: string | File | null) => void;\n error?: string;\n isValidating: boolean;\n upload: (file: File | null | undefined) => Promise<void>;\n remove: () => Promise<void>;\n}\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\n const upload = useCallback(\n async (file: File | null | undefined) => {\n if (!file) return;\n\n store.beginFieldValidation(fieldPath);\n await store.clearFieldAsyncError(fieldPath);\n\n try {\n const result = await uploadFn(file);\n\n field.setValue(result.url);\n uploadKeyRef.current = result.key;\n await store.clearFieldAsyncError(fieldPath);\n } catch (error) {\n const message =\n error instanceof Error ? error.message : \"Upload failed\";\n await store.setFieldAsyncError(fieldPath, message);\n } finally {\n store.endFieldValidation(fieldPath);\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 await store.setFieldAsyncError(fieldPath, message);\n return;\n }\n }\n\n field.setValue(null);\n uploadKeyRef.current = null;\n await store.clearFieldAsyncError(fieldPath);\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 || false,\n upload,\n remove,\n };\n}\n"],"mappings":"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","names":["useMemo","useCallback","isMaskOnlyOptions","value","keys","useBitField","path","configOrOptions","maybeOptions","config","options","fieldState","rawSetValue","setBlur","store","useBitFieldBase","resolvedMask","useMemo","maskOption","displayValue","val","setValue","useCallback","isHidden","isRequired","error","touched","isDirty","isValidating","invalid","visibleError","onChange","e","onBlur","useCallback","useRef","useSyncExternalStore","useBitHistory","store","useBitStore","lastMeta","useRef","getSnapshot","useCallback","nextMeta","stableMeta","meta","useSyncExternalStore","undo","redo","useCallback","useRef","useBitUpload","fieldPath","uploadFn","deleteFile","store","useBitStore","field","useBitField","uploadKeyRef","useRef","upload","useCallback","file","result","error","message","remove","uploadKey"]}
1
+ {"version":3,"sources":["../../src/react/use-bit-field.ts","../../src/react/use-bit-history.ts","../../src/react/use-bit-upload.ts"],"sourcesContent":["import { useMemo, useCallback } from \"react\";\nimport { useBitFieldBase } from \"./use-bit-field-base\";\nimport { BitPath, BitPathValue } from \"../core\";\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 const val = fieldState.value;\n if (val === undefined || val === null || val === \"\") return \"\";\n\n return resolvedMask ? resolvedMask.format(val) : String(val);\n }, [fieldState.value, resolvedMask]);\n\n const setValue = useCallback(\n (val: any) => {\n if (!resolvedMask) {\n rawSetValue(val);\n return;\n }\n\n rawSetValue(resolvedMask.parse(String(val ?? \"\")) as any);\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: 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 } 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\n const upload = useCallback(\n async (file: File | null | undefined) => {\n if (!file) return;\n\n store.beginFieldValidation(fieldPath);\n await store.clearFieldAsyncError(fieldPath);\n\n try {\n const result = await uploadFn(file);\n\n field.setValue(result.url);\n uploadKeyRef.current = result.key;\n await store.clearFieldAsyncError(fieldPath);\n } catch (error) {\n const message =\n error instanceof Error ? error.message : \"Upload failed\";\n await store.setFieldAsyncError(fieldPath, message);\n } finally {\n store.endFieldValidation(fieldPath);\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 await store.setFieldAsyncError(fieldPath, message);\n return;\n }\n }\n\n field.setValue(null);\n uploadKeyRef.current = null;\n await store.clearFieldAsyncError(fieldPath);\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 || false,\n upload,\n remove,\n };\n}\n"],"mappings":"uHAAA,OAAS,WAAAA,EAAS,eAAAC,MAAmB,QAS9B,SAASC,EAGdC,EAAsC,CACtC,GAAM,CACJ,WAAAC,EACA,SAAUC,EACV,QAAAC,EACA,MAAAC,CACF,EAAIC,EAAkDL,CAAI,EAEpDM,EAAeC,EAAQ,IACpBH,EAAM,YAAYJ,CAAc,EACtC,CAACI,EAAM,OAAO,MAAOA,EAAM,OAAO,OAAQJ,CAAI,CAAC,EAE5CQ,EAAeD,EAAQ,IAAM,CACjC,IAAME,EAAMR,EAAW,MACvB,OAAyBQ,GAAQ,MAAQA,IAAQ,GAAW,GAErDH,EAAeA,EAAa,OAAOG,CAAG,EAAI,OAAOA,CAAG,CAC7D,EAAG,CAACR,EAAW,MAAOK,CAAY,CAAC,EAE7BI,EAAWC,EACdF,GAAa,CACZ,GAAI,CAACH,EAAc,CACjBJ,EAAYO,CAAG,EACf,MACF,CAEAP,EAAYI,EAAa,MAAM,OAAOG,GAAO,EAAE,CAAC,CAAQ,CAC1D,EACA,CAACH,EAAcJ,CAAW,CAC5B,EAEM,CAAE,SAAAU,EAAU,WAAAC,EAAY,MAAAC,EAAO,MAAAC,EAAO,QAAAC,EAAS,QAAAC,EAAS,aAAAC,CAAa,EACzEjB,EAEIkB,EAAU,CAAC,EAAEH,GAAWD,GACxBK,EAAeJ,EAAUD,EAAQ,OAEjCM,EAAWV,EACdW,GAAW,CACV,IAAMb,EAAMa,GAAG,OAASA,EAAE,OAAO,MAAQA,EACzCZ,EAASD,CAAG,CACd,EACA,CAACC,CAAQ,CACX,EAEMa,EAASZ,EAAY,IAAM,CAC/BR,EAAQ,CACV,EAAG,CAACA,CAAO,CAAC,EAEZ,MAAO,CAEL,MAAOW,EACP,aAAAN,EACA,SAAAE,EACA,QAAAP,EACA,SAAAkB,EACA,OAAAE,EAEA,MAAO,CACL,MAAOf,EACP,SAAAa,EACA,OAAAE,CACF,EAEA,KAAM,CACJ,MAAOH,EACP,QAAAJ,EACA,QAAAG,EACA,QAAAF,EACA,aAAAC,EACA,SAAAN,EACA,WAAAC,EACA,SAAU,CAAC,CAACE,CACd,CACF,CACF,CCvFA,OAAS,eAAAS,EAAa,UAAAC,EAAQ,wBAAAC,MAA4B,QAInD,SAASC,GAA6D,CAC3E,IAAMC,EAAQC,EAAe,EACvBC,EAAWC,EAKP,IAAI,EAERC,EAAcC,EAAY,IAAM,CACpC,IAAMC,EAAWN,EAAM,mBAAmB,EAE1C,GACEE,EAAS,SACTA,EAAS,QAAQ,UAAYI,EAAS,SACtCJ,EAAS,QAAQ,UAAYI,EAAS,SACtCJ,EAAS,QAAQ,eAAiBI,EAAS,cAC3CJ,EAAS,QAAQ,cAAgBI,EAAS,YAE1C,OAAOJ,EAAS,QAGlB,IAAMK,EAAa,CACjB,QAASD,EAAS,QAClB,QAASA,EAAS,QAClB,aAAcA,EAAS,aACvB,YAAaA,EAAS,WACxB,EAEA,OAAAJ,EAAS,QAAUK,EACZA,CACT,EAAG,CAACP,CAAK,CAAC,EAEJQ,EAAOC,EACXT,EAAM,UAAU,KAAKA,CAAK,EAC1BI,EACAA,CACF,EAEMM,EAAOL,EAAY,IAAM,CAC7BL,EAAM,KAAK,CACb,EAAG,CAACA,CAAK,CAAC,EAEJW,EAAON,EAAY,IAAM,CAC7BL,EAAM,KAAK,CACb,EAAG,CAACA,CAAK,CAAC,EAEV,MAAO,CACL,GAAGQ,EACH,KAAAE,EACA,KAAAC,CACF,CACF,CClCA,OAAS,eAAAC,EAAa,UAAAC,MAAc,QAM7B,SAASC,EACdC,EACAC,EACAC,EACoB,CACpB,IAAMC,EAAQC,EAAiB,EACzBC,EAAQC,EAAYN,CAAS,EAC7BO,EAAeC,EAAsB,IAAI,EAEzCC,EAASC,EACb,MAAOC,GAAkC,CACvC,GAAKA,EAEL,CAAAR,EAAM,qBAAqBH,CAAS,EACpC,MAAMG,EAAM,qBAAqBH,CAAS,EAE1C,GAAI,CACF,IAAMY,EAAS,MAAMX,EAASU,CAAI,EAElCN,EAAM,SAASO,EAAO,GAAG,EACzBL,EAAa,QAAUK,EAAO,IAC9B,MAAMT,EAAM,qBAAqBH,CAAS,CAC5C,OAASa,EAAO,CACd,IAAMC,EACJD,aAAiB,MAAQA,EAAM,QAAU,gBAC3C,MAAMV,EAAM,mBAAmBH,EAAWc,CAAO,CACnD,QAAE,CACAX,EAAM,mBAAmBH,CAAS,CACpC,EACF,EACA,CAACC,EAAUI,EAAOL,EAAWG,CAAK,CACpC,EAEMY,EAASL,EAAY,SAAY,CACrC,IAAMM,EAAYT,EAAa,QAE/B,GAAIS,GAAad,EACf,GAAI,CACF,MAAMA,EAAWc,CAAS,CAC5B,OAASH,EAAO,CACd,IAAMC,EACJD,aAAiB,MAAQA,EAAM,QAAU,gBAC3C,MAAMV,EAAM,mBAAmBH,EAAWc,CAAO,EACjD,MACF,CAGFT,EAAM,SAAS,IAAI,EACnBE,EAAa,QAAU,KACvB,MAAMJ,EAAM,qBAAqBH,CAAS,CAC5C,EAAG,CAACE,EAAYG,EAAOL,EAAWG,CAAK,CAAC,EAExC,MAAO,CACL,MAAOE,EAAM,MACb,SAAUA,EAAM,SAChB,MAAOA,EAAM,MAAM,MACnB,aAAcA,EAAM,MAAM,cAAgB,GAC1C,OAAAI,EACA,OAAAM,CACF,CACF","names":["useMemo","useCallback","useBitField","path","fieldState","rawSetValue","setBlur","store","useBitFieldBase","resolvedMask","useMemo","displayValue","val","setValue","useCallback","isHidden","isRequired","value","error","touched","isDirty","isValidating","invalid","visibleError","onChange","e","onBlur","useCallback","useRef","useSyncExternalStore","useBitHistory","store","useBitStore","lastMeta","useRef","getSnapshot","useCallback","nextMeta","stableMeta","meta","useSyncExternalStore","undo","redo","useCallback","useRef","useBitUpload","fieldPath","uploadFn","deleteFile","store","useBitStore","field","useBitField","uploadKeyRef","useRef","upload","useCallback","file","result","error","message","remove","uploadKey"]}
@@ -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 _chunkPCVPCFPXcjs = require('../chunk-PCVPCFPX.cjs');require('../chunk-VFLQH47Q.cjs');var _react = require('react');function x(o){if(!o||typeof o!="object")return!1;let t=Object.keys(o);return t.length===1&&t[0]==="mask"}function E(o,t,s){let P=s!==void 0?t:x(t)?void 0:t,B=s!==void 0?s:x(t)?t:void 0,{fieldState:a,setValue:n,setBlur:d,store:r}=_chunkPCVPCFPXcjs.d.call(void 0, o,P),i=_react.useMemo.call(void 0, ()=>{let e=_nullishCoalesce(_optionalChain([B, 'optionalAccess', _ => _.mask]), () => (_optionalChain([r, 'access', _2 => _2.config, 'access', _3 => _3.fields, 'optionalAccess', _4 => _4[o], 'optionalAccess', _5 => _5.mask])));if(e)return typeof e=="string"?r.config.masks[e]:e},[_optionalChain([B, 'optionalAccess', _6 => _6.mask]),r.config.masks,r.config.fields,o]),m=_react.useMemo.call(void 0, ()=>{let e=a.value;return e==null||e===""?"":i?i.format(e):String(e)},[a.value,i]),F=_react.useCallback.call(void 0, e=>{if(!i){n(e);return}n(i.parse(String(_nullishCoalesce(e, () => ("")))))},[i,n]),g=_react.useCallback.call(void 0, e=>{if(!i){n(e);return}n(i.parse(String(_nullishCoalesce(e, () => ("")))))},[i,n]),{isHidden:h,isRequired:y,value:T,error:l,touched:u,isDirty:V,isValidating:b}=a,k=!!(u&&l),S=u?l:void 0,p=_react.useCallback.call(void 0, ()=>{d()},[d]);return{field:{value:T,displayValue:m,setValue:g,setBlur:d,onChangeText:F,onBlur:p},meta:{error:S,touched:u,invalid:k,isValidating:b,isDirty:V,isHidden:h,isRequired:y,hasError:!!l},props:{value:m,onChangeText:F,onBlur:p}}}exports.BitFormProvider = _chunkPCVPCFPXcjs.a; exports.useBitArray = _chunkPCVPCFPXcjs.e; exports.useBitField = E; exports.useBitForm = _chunkPCVPCFPXcjs.c; exports.useBitScope = _chunkPCVPCFPXcjs.f; exports.useBitSteps = _chunkPCVPCFPXcjs.g; exports.useBitStore = _chunkPCVPCFPXcjs.b; exports.useBitWatch = _chunkPCVPCFPXcjs.h;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunkLPRLSFPTcjs = require('../chunk-LPRLSFPT.cjs');require('../chunk-2QNUW6ZN.cjs');var _react = require('react');function k(i){let{fieldState:o,setValue:r,setBlur:s,store:a}=_chunkLPRLSFPTcjs.d.call(void 0, i),t=_react.useMemo.call(void 0, ()=>a.resolveMask(i),[a.config.masks,a.config.fields,i]),d=_react.useMemo.call(void 0, ()=>{let e=o.value;return e==null||e===""?"":t?t.format(e):String(e)},[o.value,t]),m=_react.useCallback.call(void 0, e=>{if(!t){r(e);return}r(t.parse(String(_nullishCoalesce(e, () => ("")))))},[t,r]),c=_react.useCallback.call(void 0, e=>{if(!t){r(e);return}r(t.parse(String(_nullishCoalesce(e, () => ("")))))},[t,r]),{isHidden:F,isRequired:v,value:P,error:n,touched:l,isDirty:x,isValidating:y}=o,g=!!(l&&n),h=l?n:void 0,p=_react.useCallback.call(void 0, ()=>{s()},[s]);return{field:{value:P,displayValue:d,setValue:c,setBlur:s,onChangeText:m,onBlur:p},meta:{error:h,touched:l,invalid:g,isValidating:y,isDirty:x,isHidden:F,isRequired:v,hasError:!!n},props:{value:d,onChangeText:m,onBlur:p}}}exports.BitFormProvider = _chunkLPRLSFPTcjs.a; exports.useBitArray = _chunkLPRLSFPTcjs.e; exports.useBitField = k; exports.useBitForm = _chunkLPRLSFPTcjs.c; exports.useBitScope = _chunkLPRLSFPTcjs.f; exports.useBitSteps = _chunkLPRLSFPTcjs.g; exports.useBitStore = _chunkLPRLSFPTcjs.b; exports.useBitWatch = _chunkLPRLSFPTcjs.h;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/react-native/index.cjs","../../src/react-native/use-bit-field.ts"],"names":["isMaskOnlyOptions","value","keys","useBitField","path","configOrOptions","maybeOptions","config","options","fieldState","rawSetValue","setBlur","store","useBitFieldBase","resolvedMask","useMemo","maskOption","displayValue","val","handleChange","useCallback","text","setValue","isHidden","isRequired","error","touched","isDirty","isValidating","invalid","visibleError","onBlur"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/react-native/index.cjs","sourcesContent":[null,"import { useMemo, useCallback } from \"react\";\nimport { useBitFieldBase } from \"../react/use-bit-field-base\";\nimport {\n BitFieldDefinition,\n BitFieldOptions,\n BitPath,\n BitPathValue,\n} from \"../core\";\n\nexport interface UseBitFieldNativeMeta {\n error: string | undefined;\n touched: boolean;\n invalid: boolean;\n isValidating: boolean;\n isDirty: boolean;\n isHidden: boolean;\n isRequired: boolean;\n hasError: boolean;\n}\n\nexport interface UseBitFieldNativeBindProps {\n value: string;\n onChangeText: (value: string) => void;\n onBlur: () => void;\n}\n\nexport interface UseBitFieldNativeResult<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n> {\n field: {\n value: BitPathValue<TForm, P>;\n displayValue: string;\n setValue: (val: any) => void;\n setBlur: () => void;\n onChangeText: (text: string) => void;\n onBlur: () => void;\n };\n meta: UseBitFieldNativeMeta;\n props: UseBitFieldNativeBindProps;\n}\n\nfunction isMaskOnlyOptions(\n value: BitFieldDefinition<any> | BitFieldOptions | undefined,\n): value is BitFieldOptions {\n if (!value || typeof value !== \"object\") return false;\n const keys = Object.keys(value);\n return keys.length === 1 && keys[0] === \"mask\";\n}\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(\n path: P,\n configOrOptions?: BitFieldDefinition<TForm> | BitFieldOptions,\n maybeOptions?: BitFieldOptions,\n): UseBitFieldNativeResult<TForm, P> {\n const config =\n maybeOptions !== undefined\n ? (configOrOptions as BitFieldDefinition<TForm> | undefined)\n : isMaskOnlyOptions(configOrOptions)\n ? undefined\n : (configOrOptions as BitFieldDefinition<TForm> | undefined);\n\n const options =\n maybeOptions !== undefined\n ? maybeOptions\n : isMaskOnlyOptions(configOrOptions)\n ? configOrOptions\n : undefined;\n\n const {\n fieldState,\n setValue: rawSetValue,\n setBlur,\n store,\n } = useBitFieldBase<BitPathValue<TForm, P>, TForm, P>(path, config);\n\n const resolvedMask = useMemo(() => {\n const maskOption =\n options?.mask ?? store.config.fields?.[path as string]?.mask;\n if (!maskOption) return undefined;\n return typeof maskOption === \"string\"\n ? store.config.masks![maskOption]\n : maskOption;\n }, [options?.mask, store.config.masks, store.config.fields, path]);\n\n const displayValue = useMemo(() => {\n const val = fieldState.value;\n if (val === undefined || val === null || val === \"\") return \"\";\n\n return resolvedMask ? resolvedMask.format(val) : String(val);\n }, [fieldState.value, resolvedMask]);\n\n const handleChange = useCallback(\n (text: string) => {\n if (!resolvedMask) {\n rawSetValue(text as any);\n return;\n }\n\n rawSetValue(resolvedMask.parse(String(text ?? \"\")) as any);\n },\n [resolvedMask, rawSetValue],\n );\n\n const setValue = useCallback(\n (val: any) => {\n if (!resolvedMask) {\n rawSetValue(val);\n return;\n }\n\n rawSetValue(resolvedMask.parse(String(val ?? \"\")) as any);\n },\n [resolvedMask, rawSetValue],\n );\n\n const { isHidden, isRequired, value, error, touched, isDirty, isValidating } =\n fieldState;\n const invalid = !!(touched && error);\n const visibleError = touched ? error : undefined;\n\n const onBlur = useCallback(() => {\n setBlur();\n }, [setBlur]);\n\n return {\n field: {\n value: value as BitPathValue<TForm, P>,\n displayValue,\n setValue,\n setBlur,\n onChangeText: handleChange,\n onBlur,\n },\n meta: {\n error: visibleError,\n touched,\n invalid,\n isValidating,\n isDirty,\n isHidden,\n isRequired,\n hasError: !!error,\n },\n props: {\n value: displayValue,\n onChangeText: handleChange,\n onBlur,\n },\n };\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/react-native/index.cjs","../../src/react-native/use-bit-field.ts"],"names":["useBitField","path","fieldState","rawSetValue","setBlur","store","useBitFieldBase","resolvedMask","useMemo","displayValue","val","handleChange","useCallback","text","setValue","isHidden","isRequired","value","error","touched","isDirty","isValidating","invalid","visibleError","onBlur"],"mappings":"AAAA,sOAA0F,iCAA8B,8BCAnF,SASrBA,CAAAA,CAGdC,CAAAA,CAA4C,CAC5C,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,CAAQ,CAAA,EAAM,CACjC,IAAME,CAAAA,CAAMR,CAAAA,CAAW,KAAA,CACvB,OAAyBQ,CAAAA,EAAQ,IAAA,EAAQA,CAAAA,GAAQ,EAAA,CAAW,EAAA,CAErDH,CAAAA,CAAeA,CAAAA,CAAa,MAAA,CAAOG,CAAG,CAAA,CAAI,MAAA,CAAOA,CAAG,CAC7D,CAAA,CAAG,CAACR,CAAAA,CAAW,KAAA,CAAOK,CAAY,CAAC,CAAA,CAE7BI,CAAAA,CAAeC,gCAAAA,CAClBC,EAAiB,CAChB,EAAA,CAAI,CAACN,CAAAA,CAAc,CACjBJ,CAAAA,CAAYU,CAAW,CAAA,CACvB,MACF,CAEAV,CAAAA,CAAYI,CAAAA,CAAa,KAAA,CAAM,MAAA,kBAAOM,CAAAA,SAAQ,IAAE,CAAC,CAAQ,CAC3D,CAAA,CACA,CAACN,CAAAA,CAAcJ,CAAW,CAC5B,CAAA,CAEMW,CAAAA,CAAWF,gCAAAA,CACdF,EAAa,CACZ,EAAA,CAAI,CAACH,CAAAA,CAAc,CACjBJ,CAAAA,CAAYO,CAAG,CAAA,CACf,MACF,CAEAP,CAAAA,CAAYI,CAAAA,CAAa,KAAA,CAAM,MAAA,kBAAOG,CAAAA,SAAO,IAAE,CAAC,CAAQ,CAC1D,CAAA,CACA,CAACH,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,CACIoB,CAAAA,CAAU,CAAC,CAAA,CAAEH,CAAAA,EAAWD,CAAAA,CAAAA,CACxBK,CAAAA,CAAeJ,CAAAA,CAAUD,CAAAA,CAAQ,KAAA,CAAA,CAEjCM,CAAAA,CAASZ,gCAAAA,CAAY,CAAA,EAAM,CAC/BR,CAAAA,CAAQ,CACV,CAAA,CAAG,CAACA,CAAO,CAAC,CAAA,CAEZ,MAAO,CACL,KAAA,CAAO,CACL,KAAA,CAAOa,CAAAA,CACP,YAAA,CAAAR,CAAAA,CACA,QAAA,CAAAK,CAAAA,CACA,OAAA,CAAAV,CAAAA,CACA,YAAA,CAAcO,CAAAA,CACd,MAAA,CAAAa,CACF,CAAA,CACA,IAAA,CAAM,CACJ,KAAA,CAAOD,CAAAA,CACP,OAAA,CAAAJ,CAAAA,CACA,OAAA,CAAAG,CAAAA,CACA,YAAA,CAAAD,CAAAA,CACA,OAAA,CAAAD,CAAAA,CACA,QAAA,CAAAL,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,QAAA,CAAU,CAAC,CAACE,CACd,CAAA,CACA,KAAA,CAAO,CACL,KAAA,CAAOT,CAAAA,CACP,YAAA,CAAcE,CAAAA,CACd,MAAA,CAAAa,CACF,CACF,CACF,CAAA,wUAAA","file":"/home/runner/work/bit-form/bit-form/dist/react-native/index.cjs","sourcesContent":[null,"import { useMemo, useCallback } from \"react\";\nimport { useBitFieldBase } from \"../react/use-bit-field-base\";\nimport { BitPath, BitPathValue } from \"../core\";\nimport type {\n UseBitFieldNativeMeta,\n UseBitFieldNativeBindProps,\n UseBitFieldNativeResult,\n} from \"./types\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldNativeResult<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 const val = fieldState.value;\n if (val === undefined || val === null || val === \"\") return \"\";\n\n return resolvedMask ? resolvedMask.format(val) : String(val);\n }, [fieldState.value, resolvedMask]);\n\n const handleChange = useCallback(\n (text: string) => {\n if (!resolvedMask) {\n rawSetValue(text as any);\n return;\n }\n\n rawSetValue(resolvedMask.parse(String(text ?? \"\")) as any);\n },\n [resolvedMask, rawSetValue],\n );\n\n const setValue = useCallback(\n (val: any) => {\n if (!resolvedMask) {\n rawSetValue(val);\n return;\n }\n\n rawSetValue(resolvedMask.parse(String(val ?? \"\")) as any);\n },\n [resolvedMask, rawSetValue],\n );\n\n const { isHidden, isRequired, value, error, touched, isDirty, isValidating } =\n fieldState;\n const invalid = !!(touched && error);\n const visibleError = touched ? error : undefined;\n\n const onBlur = useCallback(() => {\n setBlur();\n }, [setBlur]);\n\n return {\n field: {\n value: value as BitPathValue<TForm, P>,\n displayValue,\n setValue,\n setBlur,\n onChangeText: handleChange,\n onBlur,\n },\n meta: {\n error: visibleError,\n touched,\n invalid,\n isValidating,\n isDirty,\n isHidden,\n isRequired,\n hasError: !!error,\n },\n props: {\n value: displayValue,\n onChangeText: handleChange,\n onBlur,\n },\n };\n}\n"]}