@lehnihon/bit-form 2.1.2 → 2.2.0

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 (59) hide show
  1. package/README.md +6 -0
  2. package/dist/angular/index.cjs +1 -1
  3. package/dist/angular/index.d.cts +15 -3
  4. package/dist/angular/index.d.ts +15 -3
  5. package/dist/angular/index.js +1 -1
  6. package/dist/angular/index.js.map +1 -1
  7. package/dist/{bus-vCbulIYH.d.cts → bus-70e4jnBj.d.cts} +106 -1
  8. package/dist/{bus-vCbulIYH.d.ts → bus-70e4jnBj.d.ts} +106 -1
  9. package/dist/chunk-25Q2XJBV.cjs +133 -0
  10. package/dist/{chunk-2QNUW6ZN.cjs.map → chunk-25Q2XJBV.cjs.map} +1 -1
  11. package/dist/chunk-2HAQ3QEQ.js +133 -0
  12. package/dist/chunk-2HAQ3QEQ.js.map +1 -0
  13. package/dist/chunk-HTB6QIUQ.js +2 -0
  14. package/dist/chunk-HTB6QIUQ.js.map +1 -0
  15. package/dist/chunk-W22D7QVJ.cjs +2 -0
  16. package/dist/chunk-W22D7QVJ.cjs.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 +4 -4
  23. package/dist/index.d.ts +4 -4
  24. package/dist/index.js +1 -1
  25. package/dist/{public-types-ChP5j3xc.d.ts → public-types-BVZ16kgZ.d.ts} +6 -1
  26. package/dist/{public-types-Nv__uZTR.d.cts → public-types-r2aP68Gg.d.cts} +6 -1
  27. package/dist/react/index.cjs +1 -1
  28. package/dist/react/index.cjs.map +1 -1
  29. package/dist/react/index.d.cts +5 -5
  30. package/dist/react/index.d.ts +5 -5
  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 +10 -12
  36. package/dist/react-native/index.d.ts +10 -12
  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-hA0AqCkC.d.ts → use-bit-persist-COdNw_fv.d.ts} +15 -3
  46. package/dist/{use-bit-watch-BRekIj2W.d.cts → use-bit-persist-JshPvwwy.d.cts} +15 -3
  47. package/dist/vue/index.cjs +1 -1
  48. package/dist/vue/index.d.cts +16 -4
  49. package/dist/vue/index.d.ts +16 -4
  50. package/dist/vue/index.js +1 -1
  51. package/dist/vue/index.js.map +1 -1
  52. package/package.json +1 -1
  53. package/dist/chunk-2QNUW6ZN.cjs +0 -133
  54. package/dist/chunk-F6LJWWEW.js +0 -2
  55. package/dist/chunk-F6LJWWEW.js.map +0 -1
  56. package/dist/chunk-LPRLSFPT.cjs +0 -2
  57. package/dist/chunk-LPRLSFPT.cjs.map +0 -1
  58. package/dist/chunk-N6IA7HQL.js +0 -133
  59. package/dist/chunk-N6IA7HQL.js.map +0 -1
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk2QNUW6ZNcjs = require('./chunk-2QNUW6ZN.cjs');exports.bitBus = _chunk2QNUW6ZNcjs.a; exports.bitMasks = _chunk2QNUW6ZNcjs.S; exports.cleanPrefixedKeys = _chunk2QNUW6ZNcjs.g; exports.createBitStore = _chunk2QNUW6ZNcjs.V; exports.createCreditCardMask = _chunk2QNUW6ZNcjs.n; exports.createCurrencyMask = _chunk2QNUW6ZNcjs.m; exports.createDateMask = _chunk2QNUW6ZNcjs.o; exports.createPatternMask = _chunk2QNUW6ZNcjs.l; exports.deepClone = _chunk2QNUW6ZNcjs.b; exports.deepEqual = _chunk2QNUW6ZNcjs.d; exports.extractServerErrors = _chunk2QNUW6ZNcjs.i; exports.getDeepValue = _chunk2QNUW6ZNcjs.e; exports.isValidationErrorShape = _chunk2QNUW6ZNcjs.h; exports.maskBRL = _chunk2QNUW6ZNcjs.p; exports.maskCEP = _chunk2QNUW6ZNcjs.B; exports.maskCNH = _chunk2QNUW6ZNcjs.E; exports.maskCNPJ = _chunk2QNUW6ZNcjs.y; exports.maskCPF = _chunk2QNUW6ZNcjs.x; exports.maskCVV = _chunk2QNUW6ZNcjs.L; exports.maskColorHex = _chunk2QNUW6ZNcjs.O; exports.maskCreditCard = _chunk2QNUW6ZNcjs.K; exports.maskDate = _chunk2QNUW6ZNcjs.C; exports.maskDateISO = _chunk2QNUW6ZNcjs.M; exports.maskDateUS = _chunk2QNUW6ZNcjs.I; exports.maskDecimal = _chunk2QNUW6ZNcjs.v; exports.maskEUR = _chunk2QNUW6ZNcjs.r; exports.maskGBP = _chunk2QNUW6ZNcjs.s; exports.maskIBAN = _chunk2QNUW6ZNcjs.R; exports.maskIPv4 = _chunk2QNUW6ZNcjs.P; exports.maskIPv6 = _chunk2QNUW6ZNcjs.Q; exports.maskInteger = _chunk2QNUW6ZNcjs.w; exports.maskJPY = _chunk2QNUW6ZNcjs.t; exports.maskLandline = _chunk2QNUW6ZNcjs.A; exports.maskMacAddress = _chunk2QNUW6ZNcjs.N; exports.maskPercent = _chunk2QNUW6ZNcjs.u; exports.maskPhone = _chunk2QNUW6ZNcjs.z; exports.maskRG = _chunk2QNUW6ZNcjs.F; exports.maskSSN = _chunk2QNUW6ZNcjs.J; exports.maskTime = _chunk2QNUW6ZNcjs.D; exports.maskUSD = _chunk2QNUW6ZNcjs.q; exports.maskUSPhone = _chunk2QNUW6ZNcjs.G; exports.maskZipCode = _chunk2QNUW6ZNcjs.H; exports.setDeepValue = _chunk2QNUW6ZNcjs.f; exports.unmask = _chunk2QNUW6ZNcjs.j; exports.unmaskCurrency = _chunk2QNUW6ZNcjs.k; exports.valueEqual = _chunk2QNUW6ZNcjs.c;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk25Q2XJBVcjs = require('./chunk-25Q2XJBV.cjs');exports.bitBus = _chunk25Q2XJBVcjs.a; exports.bitMasks = _chunk25Q2XJBVcjs.S; exports.cleanPrefixedKeys = _chunk25Q2XJBVcjs.g; exports.createBitStore = _chunk25Q2XJBVcjs.V; exports.createCreditCardMask = _chunk25Q2XJBVcjs.n; exports.createCurrencyMask = _chunk25Q2XJBVcjs.m; exports.createDateMask = _chunk25Q2XJBVcjs.o; exports.createPatternMask = _chunk25Q2XJBVcjs.l; exports.deepClone = _chunk25Q2XJBVcjs.b; exports.deepEqual = _chunk25Q2XJBVcjs.d; exports.extractServerErrors = _chunk25Q2XJBVcjs.i; exports.getDeepValue = _chunk25Q2XJBVcjs.e; exports.isValidationErrorShape = _chunk25Q2XJBVcjs.h; exports.maskBRL = _chunk25Q2XJBVcjs.p; exports.maskCEP = _chunk25Q2XJBVcjs.B; exports.maskCNH = _chunk25Q2XJBVcjs.E; exports.maskCNPJ = _chunk25Q2XJBVcjs.y; exports.maskCPF = _chunk25Q2XJBVcjs.x; exports.maskCVV = _chunk25Q2XJBVcjs.L; exports.maskColorHex = _chunk25Q2XJBVcjs.O; exports.maskCreditCard = _chunk25Q2XJBVcjs.K; exports.maskDate = _chunk25Q2XJBVcjs.C; exports.maskDateISO = _chunk25Q2XJBVcjs.M; exports.maskDateUS = _chunk25Q2XJBVcjs.I; exports.maskDecimal = _chunk25Q2XJBVcjs.v; exports.maskEUR = _chunk25Q2XJBVcjs.r; exports.maskGBP = _chunk25Q2XJBVcjs.s; exports.maskIBAN = _chunk25Q2XJBVcjs.R; exports.maskIPv4 = _chunk25Q2XJBVcjs.P; exports.maskIPv6 = _chunk25Q2XJBVcjs.Q; exports.maskInteger = _chunk25Q2XJBVcjs.w; exports.maskJPY = _chunk25Q2XJBVcjs.t; exports.maskLandline = _chunk25Q2XJBVcjs.A; exports.maskMacAddress = _chunk25Q2XJBVcjs.N; exports.maskPercent = _chunk25Q2XJBVcjs.u; exports.maskPhone = _chunk25Q2XJBVcjs.z; exports.maskRG = _chunk25Q2XJBVcjs.F; exports.maskSSN = _chunk25Q2XJBVcjs.J; exports.maskTime = _chunk25Q2XJBVcjs.D; exports.maskUSD = _chunk25Q2XJBVcjs.q; exports.maskUSPhone = _chunk25Q2XJBVcjs.G; exports.maskZipCode = _chunk25Q2XJBVcjs.H; exports.setDeepValue = _chunk25Q2XJBVcjs.f; exports.unmask = _chunk25Q2XJBVcjs.j; exports.unmaskCurrency = _chunk25Q2XJBVcjs.k; exports.valueEqual = _chunk25Q2XJBVcjs.c;
2
2
  //# sourceMappingURL=index.cjs.map
package/dist/index.d.cts CHANGED
@@ -1,7 +1,7 @@
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';
1
+ import { B as BitConfig, P as PatternMaskOptions, a as BitMask, C as CurrencyMaskConfig, D as DateMaskConfig } from './bus-70e4jnBj.cjs';
2
+ export { b as BitAfterSubmitEvent, c as BitAfterValidateEvent, d as BitArrayItem, e as BitArrayPath, f as BitBeforeSubmitEvent, g as BitBeforeValidateEvent, h as BitComputedFn, i as BitErrors, j as BitFieldChangeEvent, k as BitFieldChangeMeta, l as BitFieldConditional, m as BitFieldDefinition, n as BitFieldValidation, o as BitHistoryConfig, p as BitPath, q as BitPathValue, r as BitPersistConfig, s as BitPersistMode, t as BitPersistStorageAdapter, u as BitPlugin, v as BitPluginContext, w as BitPluginErrorEvent, x as BitPluginHooks, y as BitState, z as BitTouched, A as BitTransformFn, E as BitValidationConfig, F as DeepPartial, S as ScopeStatus, V as ValidateScopeResult, G as ValidatorFn, H as bitBus } from './bus-70e4jnBj.cjs';
3
+ import { B as BitPublicStore } from './public-types-r2aP68Gg.cjs';
4
+ export { a as BitFrameworkConfig, b as BitFrameworkStore } from './public-types-r2aP68Gg.cjs';
5
5
  export { B as BitDeleteUploadFn, a as BitUploadFn, b as BitUploadResult } from './types-C2mpfhp1.cjs';
6
6
 
7
7
  declare function createBitStore<T extends object = any>(config?: BitConfig<T>): BitPublicStore<T>;
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
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';
1
+ import { B as BitConfig, P as PatternMaskOptions, a as BitMask, C as CurrencyMaskConfig, D as DateMaskConfig } from './bus-70e4jnBj.js';
2
+ export { b as BitAfterSubmitEvent, c as BitAfterValidateEvent, d as BitArrayItem, e as BitArrayPath, f as BitBeforeSubmitEvent, g as BitBeforeValidateEvent, h as BitComputedFn, i as BitErrors, j as BitFieldChangeEvent, k as BitFieldChangeMeta, l as BitFieldConditional, m as BitFieldDefinition, n as BitFieldValidation, o as BitHistoryConfig, p as BitPath, q as BitPathValue, r as BitPersistConfig, s as BitPersistMode, t as BitPersistStorageAdapter, u as BitPlugin, v as BitPluginContext, w as BitPluginErrorEvent, x as BitPluginHooks, y as BitState, z as BitTouched, A as BitTransformFn, E as BitValidationConfig, F as DeepPartial, S as ScopeStatus, V as ValidateScopeResult, G as ValidatorFn, H as bitBus } from './bus-70e4jnBj.js';
3
+ import { B as BitPublicStore } from './public-types-BVZ16kgZ.js';
4
+ export { a as BitFrameworkConfig, b as BitFrameworkStore } from './public-types-BVZ16kgZ.js';
5
5
  export { B as BitDeleteUploadFn, a as BitUploadFn, b as BitUploadResult } from './types-C2mpfhp1.js';
6
6
 
7
7
  declare function createBitStore<T extends object = any>(config?: BitConfig<T>): BitPublicStore<T>;
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-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};
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-2HAQ3QEQ.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
@@ -1,4 +1,4 @@
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';
1
+ import { B as BitConfig, G as ValidatorFn, a as BitMask, m as BitFieldDefinition, I as DevToolsOptions, J as BitPersistResolvedConfig, u as BitPlugin, y as BitState, p as BitPath, q as BitPathValue, i as BitErrors, S as ScopeStatus } from './bus-70e4jnBj.js';
2
2
 
3
3
  interface BitFrameworkConfig<T extends object = any> extends BitConfig<T> {
4
4
  initialValues: T;
@@ -9,6 +9,8 @@ interface BitFrameworkConfig<T extends object = any> extends BitConfig<T> {
9
9
  masks?: Record<string, BitMask>;
10
10
  fields?: Record<string, BitFieldDefinition<T>>;
11
11
  devTools?: boolean | DevToolsOptions;
12
+ persist: BitPersistResolvedConfig<T>;
13
+ plugins: BitPlugin<T>[];
12
14
  }
13
15
  interface BitPublicStore<T extends object = any> {
14
16
  getConfig(): Readonly<BitFrameworkConfig<T>>;
@@ -28,6 +30,9 @@ interface BitPublicStore<T extends object = any> {
28
30
  submit(onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>): Promise<void>;
29
31
  registerMask(name: string, mask: BitMask): void;
30
32
  getDirtyValues(): Partial<T>;
33
+ restorePersisted(): Promise<boolean>;
34
+ forceSave(): Promise<void>;
35
+ clearPersisted(): Promise<void>;
31
36
  cleanup(): void;
32
37
  }
33
38
  interface BitFrameworkStore<T extends object = any> extends BitPublicStore<T> {
@@ -1,4 +1,4 @@
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';
1
+ import { B as BitConfig, G as ValidatorFn, a as BitMask, m as BitFieldDefinition, I as DevToolsOptions, J as BitPersistResolvedConfig, u as BitPlugin, y as BitState, p as BitPath, q as BitPathValue, i as BitErrors, S as ScopeStatus } from './bus-70e4jnBj.cjs';
2
2
 
3
3
  interface BitFrameworkConfig<T extends object = any> extends BitConfig<T> {
4
4
  initialValues: T;
@@ -9,6 +9,8 @@ interface BitFrameworkConfig<T extends object = any> extends BitConfig<T> {
9
9
  masks?: Record<string, BitMask>;
10
10
  fields?: Record<string, BitFieldDefinition<T>>;
11
11
  devTools?: boolean | DevToolsOptions;
12
+ persist: BitPersistResolvedConfig<T>;
13
+ plugins: BitPlugin<T>[];
12
14
  }
13
15
  interface BitPublicStore<T extends object = any> {
14
16
  getConfig(): Readonly<BitFrameworkConfig<T>>;
@@ -28,6 +30,9 @@ interface BitPublicStore<T extends object = any> {
28
30
  submit(onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>): Promise<void>;
29
31
  registerMask(name: string, mask: BitMask): void;
30
32
  getDirtyValues(): Partial<T>;
33
+ restorePersisted(): Promise<boolean>;
34
+ forceSave(): Promise<void>;
35
+ clearPersisted(): Promise<void>;
31
36
  cleanup(): void;
32
37
  }
33
38
  interface BitFrameworkStore<T extends object = any> extends BitPublicStore<T> {
@@ -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 _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;
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 _chunkW22D7QVJcjs = require('../chunk-W22D7QVJ.cjs');require('../chunk-25Q2XJBV.cjs');var _react = require('react');function f(e){let{fieldState:r,setValue:a,setBlur:t,store:o}=_chunkW22D7QVJcjs.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,F=_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:F,onBlur:x,props:{value:s,onChange:F,onBlur:x},meta:{error:h,touched:y,invalid:v,isDirty:V,isValidating:b,isHidden:c,isRequired:l,hasError:!!p}}}function C(){let e=_chunkW22D7QVJcjs.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 j(e,r,a){let t=_chunkW22D7QVJcjs.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 = _chunkW22D7QVJcjs.a; exports.useBitArray = _chunkW22D7QVJcjs.e; exports.useBitField = f; exports.useBitForm = _chunkW22D7QVJcjs.c; exports.useBitHistory = C; exports.useBitPersist = _chunkW22D7QVJcjs.i; exports.useBitScope = _chunkW22D7QVJcjs.f; exports.useBitSteps = _chunkW22D7QVJcjs.g; exports.useBitStore = _chunkW22D7QVJcjs.b; exports.useBitUpload = j; exports.useBitWatch = _chunkW22D7QVJcjs.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","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
+ {"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,11 +1,11 @@
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';
1
+ import { U as UseBitFieldResult, a as UseBitHistoryResult, b as UseBitUploadResult } from '../use-bit-persist-JshPvwwy.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-JshPvwwy.cjs';
3
+ import { p as BitPath } from '../bus-70e4jnBj.cjs';
4
+ export { S as ScopeStatus, V as ValidateScopeResult } from '../bus-70e4jnBj.cjs';
5
5
  import { a as BitUploadFn, B as BitDeleteUploadFn } from '../types-C2mpfhp1.cjs';
6
6
  import 'react/jsx-runtime';
7
7
  import 'react';
8
- import '../public-types-Nv__uZTR.cjs';
8
+ import '../public-types-r2aP68Gg.cjs';
9
9
 
10
10
  declare function useBitField<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): UseBitFieldResult<TForm, P>;
11
11
 
@@ -1,11 +1,11 @@
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';
1
+ import { U as UseBitFieldResult, a as UseBitHistoryResult, b as UseBitUploadResult } from '../use-bit-persist-COdNw_fv.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-COdNw_fv.js';
3
+ import { p as BitPath } from '../bus-70e4jnBj.js';
4
+ export { S as ScopeStatus, V as ValidateScopeResult } from '../bus-70e4jnBj.js';
5
5
  import { a as BitUploadFn, B as BitDeleteUploadFn } from '../types-C2mpfhp1.js';
6
6
  import 'react/jsx-runtime';
7
7
  import 'react';
8
- import '../public-types-ChP5j3xc.js';
8
+ import '../public-types-BVZ16kgZ.js';
9
9
 
10
10
  declare function useBitField<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): UseBitFieldResult<TForm, P>;
11
11
 
@@ -1,2 +1,2 @@
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};
1
+ import{a as M,b as m,c as T,d as R,e as w,f as P,g as k,h as H,i as A}from"../chunk-HTB6QIUQ.js";import"../chunk-2HAQ3QEQ.js";import{useMemo as S,useCallback as B}from"react";function f(e){let{fieldState:r,setValue:a,setBlur:t,store:o}=R(e),i=S(()=>o.resolveMask(e),[o.config.masks,o.config.fields,e]),s=S(()=>{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,F=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:F,onBlur:x,props:{value:s,onChange:F,onBlur:x},meta:{error:h,touched:y,invalid:v,isDirty:V,isValidating:b,isHidden:c,isRequired:l,hasError:!!p}}}import{useCallback as U,useRef as z,useSyncExternalStore as I}from"react";function C(){let e=m(),r=z(null),a=U(()=>{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=I(e.subscribe.bind(e),a,a),o=U(()=>{e.undo()},[e]),i=U(()=>{e.redo()},[e]);return{...t,undo:o,redo:i}}import{useCallback as g,useRef as D}from"react";function j(e,r,a){let t=m(),o=f(e),i=D(null),s=g(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=g(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,C as useBitHistory,A as useBitPersist,P as useBitScope,k as useBitSteps,m as useBitStore,j as useBitUpload,H 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 { 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":"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","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
+ {"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":"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","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(); } }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;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunkW22D7QVJcjs = require('../chunk-W22D7QVJ.cjs');require('../chunk-25Q2XJBV.cjs');var _react = require('react');function M(o){let{fieldState:i,setValue:r,setBlur:s,store:a}=_chunkW22D7QVJcjs.d.call(void 0, o),t=_react.useMemo.call(void 0, ()=>a.resolveMask(o),[a.config.masks,a.config.fields,o]),m=_react.useMemo.call(void 0, ()=>{let e=i.value;return e==null||e===""?"":t?t.format(e):String(e)},[i.value,t]),p=_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:P,value:v,error:n,touched:u,isDirty:x,isValidating:y}=i,g=!!(u&&n),h=u?n:void 0,d=_react.useCallback.call(void 0, ()=>{s()},[s]);return{value:v,displayValue:m,setValue:c,setBlur:s,onChangeText:p,onBlur:d,meta:{error:h,touched:u,invalid:g,isValidating:y,isDirty:x,isHidden:F,isRequired:P,hasError:!!n},props:{value:m,onChangeText:p,onBlur:d}}}exports.BitFormProvider = _chunkW22D7QVJcjs.a; exports.useBitArray = _chunkW22D7QVJcjs.e; exports.useBitField = M; exports.useBitForm = _chunkW22D7QVJcjs.c; exports.useBitPersist = _chunkW22D7QVJcjs.i; exports.useBitScope = _chunkW22D7QVJcjs.f; exports.useBitSteps = _chunkW22D7QVJcjs.g; exports.useBitStore = _chunkW22D7QVJcjs.b; exports.useBitWatch = _chunkW22D7QVJcjs.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":["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"]}
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,sOAAiG,iCAA8B,8BCA1F,SAKrBA,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,CAAOa,CAAAA,CACP,YAAA,CAAAR,CAAAA,CACA,QAAA,CAAAK,CAAAA,CACA,OAAA,CAAAV,CAAAA,CACA,YAAA,CAAcO,CAAAA,CACd,MAAA,CAAAa,CAAAA,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,qXAAA","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 { UseBitFieldNativeResult } 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 value: value as BitPathValue<TForm, P>,\n displayValue,\n setValue,\n setBlur,\n onChangeText: handleChange,\n onBlur,\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,9 +1,9 @@
1
- export { B as BitFormProvider, u as useBitArray, f as useBitForm, g as useBitScope, h as useBitSteps, i as useBitStore, j as useBitWatch } from '../use-bit-watch-BRekIj2W.cjs';
2
- import { j as BitPath, k as BitPathValue } from '../bus-vCbulIYH.cjs';
3
- export { S as ScopeStatus, V as ValidateScopeResult } from '../bus-vCbulIYH.cjs';
1
+ export { B as BitFormProvider, e as UseBitPersistResult, 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-JshPvwwy.cjs';
2
+ import { p as BitPath, q as BitPathValue } from '../bus-70e4jnBj.cjs';
3
+ export { S as ScopeStatus, V as ValidateScopeResult } from '../bus-70e4jnBj.cjs';
4
4
  import 'react/jsx-runtime';
5
5
  import 'react';
6
- import '../public-types-Nv__uZTR.cjs';
6
+ import '../public-types-r2aP68Gg.cjs';
7
7
 
8
8
  /**
9
9
  * Metadata describing the current state of a form field (React Native).
@@ -31,14 +31,12 @@ interface UseBitFieldNativeBindProps {
31
31
  * Provides field state, value, handlers, and metadata for native mobile development.
32
32
  */
33
33
  interface UseBitFieldNativeResult<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>> {
34
- field: {
35
- value: BitPathValue<TForm, P>;
36
- displayValue: string;
37
- setValue: (val: any) => void;
38
- setBlur: () => void;
39
- onChangeText: (text: string) => void;
40
- onBlur: () => void;
41
- };
34
+ value: BitPathValue<TForm, P>;
35
+ displayValue: string;
36
+ setValue: (val: any) => void;
37
+ setBlur: () => void;
38
+ onChangeText: (text: string) => void;
39
+ onBlur: () => void;
42
40
  meta: UseBitFieldNativeMeta;
43
41
  props: UseBitFieldNativeBindProps;
44
42
  }
@@ -1,9 +1,9 @@
1
- export { B as BitFormProvider, u as useBitArray, f as useBitForm, g as useBitScope, h as useBitSteps, i as useBitStore, j as useBitWatch } from '../use-bit-watch-hA0AqCkC.js';
2
- import { j as BitPath, k as BitPathValue } from '../bus-vCbulIYH.js';
3
- export { S as ScopeStatus, V as ValidateScopeResult } from '../bus-vCbulIYH.js';
1
+ export { B as BitFormProvider, e as UseBitPersistResult, 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-COdNw_fv.js';
2
+ import { p as BitPath, q as BitPathValue } from '../bus-70e4jnBj.js';
3
+ export { S as ScopeStatus, V as ValidateScopeResult } from '../bus-70e4jnBj.js';
4
4
  import 'react/jsx-runtime';
5
5
  import 'react';
6
- import '../public-types-ChP5j3xc.js';
6
+ import '../public-types-BVZ16kgZ.js';
7
7
 
8
8
  /**
9
9
  * Metadata describing the current state of a form field (React Native).
@@ -31,14 +31,12 @@ interface UseBitFieldNativeBindProps {
31
31
  * Provides field state, value, handlers, and metadata for native mobile development.
32
32
  */
33
33
  interface UseBitFieldNativeResult<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>> {
34
- field: {
35
- value: BitPathValue<TForm, P>;
36
- displayValue: string;
37
- setValue: (val: any) => void;
38
- setBlur: () => void;
39
- onChangeText: (text: string) => void;
40
- onBlur: () => void;
41
- };
34
+ value: BitPathValue<TForm, P>;
35
+ displayValue: string;
36
+ setValue: (val: any) => void;
37
+ setBlur: () => void;
38
+ onChangeText: (text: string) => void;
39
+ onBlur: () => void;
42
40
  meta: UseBitFieldNativeMeta;
43
41
  props: UseBitFieldNativeBindProps;
44
42
  }
@@ -1,2 +1,2 @@
1
- import{a as S,b as T,c as V,d as B,e as N,f as U,g as M,h as R}from"../chunk-F6LJWWEW.js";import"../chunk-N6IA7HQL.js";import{useMemo as f,useCallback as u}from"react";function k(i){let{fieldState:o,setValue:r,setBlur:s,store:a}=B(i),t=f(()=>a.resolveMask(i),[a.config.masks,a.config.fields,i]),d=f(()=>{let e=o.value;return e==null||e===""?"":t?t.format(e):String(e)},[o.value,t]),m=u(e=>{if(!t){r(e);return}r(t.parse(String(e??"")))},[t,r]),c=u(e=>{if(!t){r(e);return}r(t.parse(String(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=u(()=>{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}}}export{S as BitFormProvider,N as useBitArray,k as useBitField,V as useBitForm,U as useBitScope,M as useBitSteps,T as useBitStore,R as useBitWatch};
1
+ import{a as S,b as T,c as V,d as B,e as R,f as U,g as N,h as k,i as C}from"../chunk-HTB6QIUQ.js";import"../chunk-2HAQ3QEQ.js";import{useMemo as f,useCallback as l}from"react";function M(o){let{fieldState:i,setValue:r,setBlur:s,store:a}=B(o),t=f(()=>a.resolveMask(o),[a.config.masks,a.config.fields,o]),m=f(()=>{let e=i.value;return e==null||e===""?"":t?t.format(e):String(e)},[i.value,t]),p=l(e=>{if(!t){r(e);return}r(t.parse(String(e??"")))},[t,r]),c=l(e=>{if(!t){r(e);return}r(t.parse(String(e??"")))},[t,r]),{isHidden:F,isRequired:P,value:v,error:n,touched:u,isDirty:x,isValidating:y}=i,g=!!(u&&n),h=u?n:void 0,d=l(()=>{s()},[s]);return{value:v,displayValue:m,setValue:c,setBlur:s,onChangeText:p,onBlur:d,meta:{error:h,touched:u,invalid:g,isValidating:y,isDirty:x,isHidden:F,isRequired:P,hasError:!!n},props:{value:m,onChangeText:p,onBlur:d}}}export{S as BitFormProvider,R as useBitArray,M as useBitField,V as useBitForm,C as useBitPersist,U as useBitScope,N as useBitSteps,T as useBitStore,k as useBitWatch};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/react-native/use-bit-field.ts"],"sourcesContent":["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"],"mappings":"uHAAA,OAAS,WAAAA,EAAS,eAAAC,MAAmB,QAS9B,SAASC,EAGdC,EAA4C,CAC5C,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,EAAeC,EAClBC,GAAiB,CAChB,GAAI,CAACN,EAAc,CACjBJ,EAAYU,CAAW,EACvB,MACF,CAEAV,EAAYI,EAAa,MAAM,OAAOM,GAAQ,EAAE,CAAC,CAAQ,CAC3D,EACA,CAACN,EAAcJ,CAAW,CAC5B,EAEMW,EAAWF,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,SAAAY,EAAU,WAAAC,EAAY,MAAAC,EAAO,MAAAC,EAAO,QAAAC,EAAS,QAAAC,EAAS,aAAAC,CAAa,EACzEnB,EACIoB,EAAU,CAAC,EAAEH,GAAWD,GACxBK,EAAeJ,EAAUD,EAAQ,OAEjCM,EAASZ,EAAY,IAAM,CAC/BR,EAAQ,CACV,EAAG,CAACA,CAAO,CAAC,EAEZ,MAAO,CACL,MAAO,CACL,MAAOa,EACP,aAAAR,EACA,SAAAK,EACA,QAAAV,EACA,aAAcO,EACd,OAAAa,CACF,EACA,KAAM,CACJ,MAAOD,EACP,QAAAJ,EACA,QAAAG,EACA,aAAAD,EACA,QAAAD,EACA,SAAAL,EACA,WAAAC,EACA,SAAU,CAAC,CAACE,CACd,EACA,MAAO,CACL,MAAOT,EACP,aAAcE,EACd,OAAAa,CACF,CACF,CACF","names":["useMemo","useCallback","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"]}
1
+ {"version":3,"sources":["../../src/react-native/use-bit-field.ts"],"sourcesContent":["import { useMemo, useCallback } from \"react\";\nimport { useBitFieldBase } from \"../react/use-bit-field-base\";\nimport { BitPath, BitPathValue } from \"../core\";\nimport type { UseBitFieldNativeResult } 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 value: value as BitPathValue<TForm, P>,\n displayValue,\n setValue,\n setBlur,\n onChangeText: handleChange,\n onBlur,\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"],"mappings":"8HAAA,OAAS,WAAAA,EAAS,eAAAC,MAAmB,QAK9B,SAASC,EAGdC,EAA4C,CAC5C,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,EAAeC,EAClBC,GAAiB,CAChB,GAAI,CAACN,EAAc,CACjBJ,EAAYU,CAAW,EACvB,MACF,CAEAV,EAAYI,EAAa,MAAM,OAAOM,GAAQ,EAAE,CAAC,CAAQ,CAC3D,EACA,CAACN,EAAcJ,CAAW,CAC5B,EAEMW,EAAWF,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,SAAAY,EAAU,WAAAC,EAAY,MAAAC,EAAO,MAAAC,EAAO,QAAAC,EAAS,QAAAC,EAAS,aAAAC,CAAa,EACzEnB,EACIoB,EAAU,CAAC,EAAEH,GAAWD,GACxBK,EAAeJ,EAAUD,EAAQ,OAEjCM,EAASZ,EAAY,IAAM,CAC/BR,EAAQ,CACV,EAAG,CAACA,CAAO,CAAC,EAEZ,MAAO,CACL,MAAOa,EACP,aAAAR,EACA,SAAAK,EACA,QAAAV,EACA,aAAcO,EACd,OAAAa,EACA,KAAM,CACJ,MAAOD,EACP,QAAAJ,EACA,QAAAG,EACA,aAAAD,EACA,QAAAD,EACA,SAAAL,EACA,WAAAC,EACA,SAAU,CAAC,CAACE,CACd,EACA,MAAO,CACL,MAAOT,EACP,aAAcE,EACd,OAAAa,CACF,CACF,CACF","names":["useMemo","useCallback","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"]}
@@ -1,5 +1,5 @@
1
1
  import { ObjectSchema } from 'joi';
2
- import { e as BitErrors } from '../bus-vCbulIYH.cjs';
2
+ import { i as BitErrors } from '../bus-70e4jnBj.cjs';
3
3
 
4
4
  declare const joiResolver: <T extends object>(schema: ObjectSchema<T>) => (values: T, options?: {
5
5
  scopeFields?: string[];
@@ -1,5 +1,5 @@
1
1
  import { ObjectSchema } from 'joi';
2
- import { e as BitErrors } from '../bus-vCbulIYH.js';
2
+ import { i as BitErrors } from '../bus-70e4jnBj.js';
3
3
 
4
4
  declare const joiResolver: <T extends object>(schema: ObjectSchema<T>) => (values: T, options?: {
5
5
  scopeFields?: string[];
@@ -1,5 +1,5 @@
1
1
  import { Schema } from 'yup';
2
- import { e as BitErrors } from '../bus-vCbulIYH.cjs';
2
+ import { i as BitErrors } from '../bus-70e4jnBj.cjs';
3
3
 
4
4
  declare const yupResolver: <T extends object>(schema: Schema<any>) => (values: T, options?: {
5
5
  scopeFields?: string[];
@@ -1,5 +1,5 @@
1
1
  import { Schema } from 'yup';
2
- import { e as BitErrors } from '../bus-vCbulIYH.js';
2
+ import { i as BitErrors } from '../bus-70e4jnBj.js';
3
3
 
4
4
  declare const yupResolver: <T extends object>(schema: Schema<any>) => (values: T, options?: {
5
5
  scopeFields?: string[];
@@ -1,5 +1,5 @@
1
1
  import { ZodSchema } from 'zod';
2
- import { e as BitErrors } from '../bus-vCbulIYH.cjs';
2
+ import { i as BitErrors } from '../bus-70e4jnBj.cjs';
3
3
 
4
4
  declare const zodResolver: <T extends object>(schema: ZodSchema<T>) => (values: T, options?: {
5
5
  scopeFields?: string[];
@@ -1,5 +1,5 @@
1
1
  import { ZodSchema } from 'zod';
2
- import { e as BitErrors } from '../bus-vCbulIYH.js';
2
+ import { i as BitErrors } from '../bus-70e4jnBj.js';
3
3
 
4
4
  declare const zodResolver: <T extends object>(schema: ZodSchema<T>) => (values: T, options?: {
5
5
  scopeFields?: string[];
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import React from 'react';
3
- import { b as BitFrameworkStore } from './public-types-ChP5j3xc.js';
4
- import { e as BitErrors, m as BitTouched, j as BitPath, k as BitPathValue, S as ScopeStatus, V as ValidateScopeResult, c as BitArrayPath, b as BitArrayItem } from './bus-vCbulIYH.js';
3
+ import { b as BitFrameworkStore } from './public-types-BVZ16kgZ.js';
4
+ import { i as BitErrors, z as BitTouched, p as BitPath, q as BitPathValue, S as ScopeStatus, V as ValidateScopeResult, e as BitArrayPath, d as BitArrayItem } from './bus-70e4jnBj.js';
5
5
 
6
6
  declare const BitFormProvider: ({ store, children, }: {
7
7
  store: BitFrameworkStore<any>;
@@ -127,6 +127,16 @@ interface UseBitHistoryResult {
127
127
  undo: () => void;
128
128
  redo: () => void;
129
129
  }
130
+ interface UseBitPersistResult {
131
+ restore: () => Promise<boolean>;
132
+ save: () => Promise<void>;
133
+ clear: () => Promise<void>;
134
+ meta: {
135
+ isSaving: boolean;
136
+ isRestoring: boolean;
137
+ error: Error | null;
138
+ };
139
+ }
130
140
 
131
141
  declare function useBitArray<TForm extends object = any, P extends BitArrayPath<TForm> = BitArrayPath<TForm>>(path: P): {
132
142
  append: (value: BitArrayItem<BitPathValue<TForm, P>>) => void;
@@ -159,4 +169,6 @@ declare function useBitSteps(scopeNames: string[]): UseBitStepsResult;
159
169
 
160
170
  declare function useBitWatch<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): BitPathValue<TForm, P>;
161
171
 
162
- export { BitFormProvider as B, type UseBitFieldResult as U, type UseBitHistoryResult as a, type UseBitUploadResult as b, type UseBitFieldBindProps as c, type UseBitFieldMeta as d, type UseBitStepsResult as e, useBitForm as f, useBitScope as g, useBitSteps as h, useBitStore as i, useBitWatch as j, useBitArray as u };
172
+ declare function useBitPersist(): UseBitPersistResult;
173
+
174
+ export { BitFormProvider as B, type UseBitFieldResult as U, type UseBitHistoryResult as a, type UseBitUploadResult as b, type UseBitFieldBindProps as c, type UseBitFieldMeta as d, type UseBitPersistResult as e, type UseBitStepsResult as f, useBitForm as g, useBitPersist as h, useBitScope as i, useBitSteps as j, useBitStore as k, useBitWatch as l, useBitArray as u };
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import React from 'react';
3
- import { b as BitFrameworkStore } from './public-types-Nv__uZTR.cjs';
4
- import { e as BitErrors, m as BitTouched, j as BitPath, k as BitPathValue, S as ScopeStatus, V as ValidateScopeResult, c as BitArrayPath, b as BitArrayItem } from './bus-vCbulIYH.cjs';
3
+ import { b as BitFrameworkStore } from './public-types-r2aP68Gg.cjs';
4
+ import { i as BitErrors, z as BitTouched, p as BitPath, q as BitPathValue, S as ScopeStatus, V as ValidateScopeResult, e as BitArrayPath, d as BitArrayItem } from './bus-70e4jnBj.cjs';
5
5
 
6
6
  declare const BitFormProvider: ({ store, children, }: {
7
7
  store: BitFrameworkStore<any>;
@@ -127,6 +127,16 @@ interface UseBitHistoryResult {
127
127
  undo: () => void;
128
128
  redo: () => void;
129
129
  }
130
+ interface UseBitPersistResult {
131
+ restore: () => Promise<boolean>;
132
+ save: () => Promise<void>;
133
+ clear: () => Promise<void>;
134
+ meta: {
135
+ isSaving: boolean;
136
+ isRestoring: boolean;
137
+ error: Error | null;
138
+ };
139
+ }
130
140
 
131
141
  declare function useBitArray<TForm extends object = any, P extends BitArrayPath<TForm> = BitArrayPath<TForm>>(path: P): {
132
142
  append: (value: BitArrayItem<BitPathValue<TForm, P>>) => void;
@@ -159,4 +169,6 @@ declare function useBitSteps(scopeNames: string[]): UseBitStepsResult;
159
169
 
160
170
  declare function useBitWatch<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): BitPathValue<TForm, P>;
161
171
 
162
- export { BitFormProvider as B, type UseBitFieldResult as U, type UseBitHistoryResult as a, type UseBitUploadResult as b, type UseBitFieldBindProps as c, type UseBitFieldMeta as d, type UseBitStepsResult as e, useBitForm as f, useBitScope as g, useBitSteps as h, useBitStore as i, useBitWatch as j, useBitArray as u };
172
+ declare function useBitPersist(): UseBitPersistResult;
173
+
174
+ export { BitFormProvider as B, type UseBitFieldResult as U, type UseBitHistoryResult as a, type UseBitUploadResult as b, type UseBitFieldBindProps as c, type UseBitFieldMeta as d, type UseBitPersistResult as e, type UseBitStepsResult as f, useBitForm as g, useBitPersist as h, useBitScope as i, useBitSteps as j, useBitStore as k, useBitWatch as l, useBitArray as u };