@lehnihon/bit-form 2.2.8 → 2.2.10

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 (170) 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 +27 -59
  4. package/dist/angular/index.d.ts +27 -59
  5. package/dist/angular/index.js +1 -1
  6. package/dist/angular/index.js.map +1 -1
  7. package/dist/bus-BFOBGmd9.d.ts +41 -0
  8. package/dist/bus-DzTqgkZ4.d.cts +41 -0
  9. package/dist/chunk-2AFWJAQG.js +2 -0
  10. package/dist/chunk-2AFWJAQG.js.map +1 -0
  11. package/dist/chunk-3KI3GEU3.cjs +2 -0
  12. package/dist/chunk-3KI3GEU3.cjs.map +1 -0
  13. package/dist/chunk-4RQFECC7.cjs +2 -0
  14. package/dist/chunk-4RQFECC7.cjs.map +1 -0
  15. package/dist/chunk-FLFIOW75.js +2 -0
  16. package/dist/chunk-FLFIOW75.js.map +1 -0
  17. package/dist/chunk-G2FQQDRK.js +2 -0
  18. package/dist/chunk-G2FQQDRK.js.map +1 -0
  19. package/dist/chunk-GPMAT4PT.cjs +2 -0
  20. package/dist/chunk-GPMAT4PT.cjs.map +1 -0
  21. package/dist/chunk-GQ2QJCBF.js +2 -0
  22. package/dist/chunk-GQ2QJCBF.js.map +1 -0
  23. package/dist/chunk-ICYXODTQ.js +2 -0
  24. package/dist/chunk-ICYXODTQ.js.map +1 -0
  25. package/dist/{chunk-P2YWYBWG.cjs → chunk-IVPCXKYW.cjs} +2 -2
  26. package/dist/{chunk-P2YWYBWG.cjs.map → chunk-IVPCXKYW.cjs.map} +1 -1
  27. package/dist/{chunk-JC4R5WCC.js → chunk-LX4GSDUV.js} +2 -2
  28. package/dist/chunk-NVFZ22A7.cjs +2 -0
  29. package/dist/chunk-NVFZ22A7.cjs.map +1 -0
  30. package/dist/chunk-OPC7HFNN.js +2 -0
  31. package/dist/chunk-OPC7HFNN.js.map +1 -0
  32. package/dist/chunk-PA43XYOW.cjs +2 -0
  33. package/dist/{chunk-IV32WXCF.cjs.map → chunk-PA43XYOW.cjs.map} +1 -1
  34. package/dist/chunk-PG7ZH32Z.js +2 -0
  35. package/dist/chunk-PG7ZH32Z.js.map +1 -0
  36. package/dist/{chunk-D7JQWF6V.cjs → chunk-RHMJPKNV.cjs} +1 -1
  37. package/dist/{chunk-D7JQWF6V.cjs.map → chunk-RHMJPKNV.cjs.map} +1 -1
  38. package/dist/{chunk-EQ55DKX2.js → chunk-UIKO6GGW.js} +1 -1
  39. package/dist/chunk-UIKO6GGW.js.map +1 -0
  40. package/dist/chunk-VBX5I5XG.cjs +2 -0
  41. package/dist/chunk-VBX5I5XG.cjs.map +1 -0
  42. package/dist/chunk-ZKAFHJPU.cjs +2 -0
  43. package/dist/chunk-ZKAFHJPU.cjs.map +1 -0
  44. package/dist/cli/index.cjs +5 -5
  45. package/dist/{types-D6LhF5GC.d.cts → config-types-5eR82k2V.d.cts} +45 -168
  46. package/dist/{types-CG5nYeRk.d.ts → config-types-D9n-rQLk.d.ts} +45 -168
  47. package/dist/core/bindings.cjs +1 -1
  48. package/dist/core/bindings.cjs.map +1 -1
  49. package/dist/core/bindings.d.cts +33 -21
  50. package/dist/core/bindings.d.ts +33 -21
  51. package/dist/core/bindings.js +1 -1
  52. package/dist/core/status.cjs +1 -1
  53. package/dist/core/status.d.cts +5 -6
  54. package/dist/core/status.d.ts +5 -6
  55. package/dist/core/status.js +1 -1
  56. package/dist/core/store.cjs +1 -1
  57. package/dist/core/store.cjs.map +1 -1
  58. package/dist/core/store.d.cts +8 -6
  59. package/dist/core/store.d.ts +8 -6
  60. package/dist/core/store.js +1 -1
  61. package/dist/core/utils.cjs +1 -1
  62. package/dist/core/utils.cjs.map +1 -1
  63. package/dist/core/utils.d.cts +4 -12
  64. package/dist/core/utils.d.ts +4 -12
  65. package/dist/core/utils.js +1 -1
  66. package/dist/core.cjs +1 -1
  67. package/dist/core.cjs.map +1 -1
  68. package/dist/core.d.cts +10 -9
  69. package/dist/core.d.ts +10 -9
  70. package/dist/core.js +1 -1
  71. package/dist/devtools/bridge.cjs +1 -1
  72. package/dist/devtools/bridge.cjs.map +1 -1
  73. package/dist/devtools/bridge.d.cts +2 -3
  74. package/dist/devtools/bridge.d.ts +2 -3
  75. package/dist/devtools/bridge.js +1 -1
  76. package/dist/devtools/index.cjs +2 -2
  77. package/dist/devtools/index.cjs.map +1 -1
  78. package/dist/devtools/index.d.cts +5 -3
  79. package/dist/devtools/index.d.ts +5 -3
  80. package/dist/devtools/index.js +1 -1
  81. package/dist/devtools/index.js.map +1 -1
  82. package/dist/{field-binding-MX6jVQbT.d.ts → field-binding-Bi1g-D8X.d.ts} +1 -1
  83. package/dist/{field-binding-B_OX3bjp.d.cts → field-binding-X5TkvfUt.d.cts} +1 -1
  84. package/dist/index.cjs +1 -1
  85. package/dist/index.cjs.map +1 -1
  86. package/dist/index.d.cts +7 -5
  87. package/dist/index.d.ts +7 -5
  88. package/dist/index.js +1 -1
  89. package/dist/mask.cjs +1 -1
  90. package/dist/mask.cjs.map +1 -1
  91. package/dist/mask.d.cts +2 -2
  92. package/dist/mask.d.ts +2 -2
  93. package/dist/mask.js +1 -1
  94. package/dist/mask.js.map +1 -1
  95. package/dist/meta-types-BC1VLABk.d.cts +28 -0
  96. package/dist/meta-types-BC1VLABk.d.ts +28 -0
  97. package/dist/react/index.cjs +1 -1
  98. package/dist/react/index.cjs.map +1 -1
  99. package/dist/react/index.d.cts +12 -12
  100. package/dist/react/index.d.ts +12 -12
  101. package/dist/react/index.js +1 -1
  102. package/dist/react/index.js.map +1 -1
  103. package/dist/react-native/index.cjs +1 -1
  104. package/dist/react-native/index.cjs.map +1 -1
  105. package/dist/react-native/index.d.cts +10 -9
  106. package/dist/react-native/index.d.ts +10 -9
  107. package/dist/react-native/index.js +1 -1
  108. package/dist/react-native/index.js.map +1 -1
  109. package/dist/resolvers/index.d.cts +2 -3
  110. package/dist/resolvers/index.d.ts +2 -3
  111. package/dist/resolvers/joi.d.cts +2 -3
  112. package/dist/resolvers/joi.d.ts +2 -3
  113. package/dist/resolvers/yup.d.cts +2 -3
  114. package/dist/resolvers/yup.d.ts +2 -3
  115. package/dist/resolvers/zod.d.cts +2 -3
  116. package/dist/resolvers/zod.d.ts +2 -3
  117. package/dist/runtime-types-D1SRZr-n.d.cts +43 -0
  118. package/dist/runtime-types-D1SRZr-n.d.ts +43 -0
  119. package/dist/state-types-8bUndWfg.d.cts +42 -0
  120. package/dist/state-types-8bUndWfg.d.ts +42 -0
  121. package/dist/{store-api-types-DPi30jQF.d.ts → store-api-types-Bozwlwyb.d.ts} +18 -14
  122. package/dist/{store-api-types-D-ZHxzRy.d.cts → store-api-types-DSgYwMS3.d.cts} +18 -14
  123. package/dist/{types-D8DgIUhJ.d.cts → types-CUXh7PqD.d.cts} +1 -1
  124. package/dist/{types-D8DgIUhJ.d.ts → types-CUXh7PqD.d.ts} +1 -1
  125. package/dist/upload-C4JqIaU2.d.cts +89 -0
  126. package/dist/upload-ao6skK9K.d.ts +89 -0
  127. package/dist/{use-bit-persist-BTwy8kvA.d.ts → use-bit-persist-Bd1H2fge.d.ts} +12 -45
  128. package/dist/{use-bit-persist-C2LHNTVv.d.cts → use-bit-persist-DDxV21AN.d.cts} +12 -45
  129. package/dist/utils.cjs +1 -1
  130. package/dist/utils.js +1 -1
  131. package/dist/vue/index.cjs +1 -1
  132. package/dist/vue/index.cjs.map +1 -1
  133. package/dist/vue/index.d.cts +18 -51
  134. package/dist/vue/index.d.ts +18 -51
  135. package/dist/vue/index.js +1 -1
  136. package/dist/vue/index.js.map +1 -1
  137. package/package.json +10 -7
  138. package/dist/array-controller-B5bfXV1W.d.cts +0 -23
  139. package/dist/array-controller-Cx-DMH7Y.d.ts +0 -23
  140. package/dist/bus-B2VEKrPI.d.ts +0 -19
  141. package/dist/bus-ZLQeq4Vr.d.cts +0 -19
  142. package/dist/chunk-63OJBMKK.js +0 -2
  143. package/dist/chunk-63OJBMKK.js.map +0 -1
  144. package/dist/chunk-CPP7ELA5.js +0 -2
  145. package/dist/chunk-CPP7ELA5.js.map +0 -1
  146. package/dist/chunk-E2NZR44P.js +0 -2
  147. package/dist/chunk-E2NZR44P.js.map +0 -1
  148. package/dist/chunk-EQ55DKX2.js.map +0 -1
  149. package/dist/chunk-IV32WXCF.cjs +0 -2
  150. package/dist/chunk-M6WBNHIT.cjs +0 -2
  151. package/dist/chunk-M6WBNHIT.cjs.map +0 -1
  152. package/dist/chunk-MFSQATNZ.cjs +0 -2
  153. package/dist/chunk-MFSQATNZ.cjs.map +0 -1
  154. package/dist/chunk-MFTWAFMG.cjs +0 -2
  155. package/dist/chunk-MFTWAFMG.cjs.map +0 -1
  156. package/dist/chunk-O5UPA33R.js +0 -2
  157. package/dist/chunk-O5UPA33R.js.map +0 -1
  158. package/dist/chunk-RD73EBSN.js +0 -2
  159. package/dist/chunk-RD73EBSN.js.map +0 -1
  160. package/dist/chunk-T2JRSWQU.cjs +0 -2
  161. package/dist/chunk-T2JRSWQU.cjs.map +0 -1
  162. package/dist/chunk-UQ3DSUWC.js +0 -2
  163. package/dist/chunk-UQ3DSUWC.js.map +0 -1
  164. package/dist/chunk-VZHG372Q.cjs +0 -2
  165. package/dist/chunk-VZHG372Q.cjs.map +0 -1
  166. package/dist/meta-types-Bzmm21TP.d.cts +0 -18
  167. package/dist/meta-types-Bzmm21TP.d.ts +0 -18
  168. package/dist/upload-C2mpfhp1.d.cts +0 -17
  169. package/dist/upload-C2mpfhp1.d.ts +0 -17
  170. /package/dist/{chunk-JC4R5WCC.js.map → chunk-LX4GSDUV.js.map} +0 -0
@@ -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 BitPath,\n BitPathValue,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n isBitFieldInputEventObject,\n} from \"../core\";\nimport type {\n BitFieldInputEvent,\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 { fieldState, setBlur, store } = useBitFieldBase<\n BitPathValue<TForm, P>,\n TForm,\n P\n >(path);\n\n const { fieldController } = useMemo(() => {\n return createFrameworkMaskedFieldBinding(store, path);\n }, [store, path]);\n\n const displayValue = useMemo(\n () => fieldController.displayValue(fieldState.value),\n [fieldState.value, fieldController],\n );\n\n const setValue = useCallback(\n (val: BitPathValue<TForm, P> | string | number | null | undefined) => {\n fieldController.setValue(val);\n },\n [fieldController],\n );\n\n const { value } = fieldState;\n const metaState = deriveFieldMeta(fieldState);\n\n const onChange = useCallback(\n (e: BitFieldInputEvent) => {\n const val = isBitFieldInputEventObject(e) ? e.target?.value : e;\n setValue(val);\n },\n [setValue],\n );\n\n const onBlur = useCallback(() => {\n setBlur();\n }, [setBlur]);\n\n return {\n // Main handlers and values (flat)\n value: value as BitPathValue<TForm, P>,\n displayValue,\n setValue,\n setBlur,\n onChange,\n onBlur,\n // Props helper\n props: {\n value: displayValue,\n onChange,\n onBlur,\n },\n // Metadata (grouped)\n meta: {\n error: metaState.error,\n touched: metaState.touched,\n invalid: metaState.invalid,\n isDirty: metaState.isDirty,\n isValidating: metaState.isValidating,\n isHidden: metaState.isHidden,\n isRequired: metaState.isRequired,\n hasError: metaState.hasError,\n },\n };\n}\n","import { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { readHistoryMetaSnapshot, type HistoryMeta } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitHistoryResult } from \"./types\";\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n const lastMeta = useRef<HistoryMeta | null>(null);\n\n const getSnapshot = useCallback(() => {\n const nextMeta = readHistoryMetaSnapshot(store);\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 lastMeta.current = nextMeta;\n return nextMeta;\n }, [store]);\n\n const subscribe = useCallback(\n (cb: () => void) => store.observe.subscribeHistoryMeta(() => cb()),\n [store],\n );\n\n const meta = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n const undo = useCallback(() => {\n store.feature.undo();\n }, [store]);\n\n const redo = useCallback(() => {\n store.feature.redo();\n }, [store]);\n\n return {\n ...meta,\n undo,\n redo,\n };\n}\n","/**\n * React Hook for File Upload Integration\n *\n * Minimal upload API integrated with global field validation lifecycle.\n *\n * @example\n * ```typescript\n * const avatar = useBitUpload(\"avatar\", uploadFn);\n *\n * return (\n * <>\n * <input\n * type=\"file\"\n * onChange={(e) => avatar.upload(e.target.files?.[0])}\n * disabled={avatar.isValidating}\n * />\n * {avatar.error && <Error>{avatar.error}</Error>}\n * </>\n * );\n * ```\n */\n\nimport { useCallback, useRef, useState } from \"react\";\nimport { useBitField } from \"./use-bit-field\";\nimport { useBitStore } from \"./context\";\nimport { BitUploadFn, BitDeleteUploadFn } from \"../core\";\nimport { createUploadHandler, createRemoveHandler } from \"../core/adapters\";\nimport type { UseBitUploadResult } from \"./types\";\n\nexport function useBitUpload(\n fieldPath: string,\n uploadFn: BitUploadFn,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n const uploadKeyRef = useRef<string | null>(null);\n const [isUploading, setIsUploading] = useState(false);\n\n const kernelCallbacks = {\n setLoading: setIsUploading,\n setError: (path: string, msg: string | undefined) =>\n store.write.setError(path, msg),\n setValue: (val: string | null) => field.setValue(val as any),\n getUploadKey: () => uploadKeyRef.current,\n setUploadKey: (key: string | null) => {\n uploadKeyRef.current = key;\n },\n };\n\n const upload = useCallback(\n createUploadHandler(fieldPath, uploadFn, kernelCallbacks),\n [uploadFn, field, fieldPath, store],\n );\n\n const remove = useCallback(\n createRemoveHandler(fieldPath, deleteFile, kernelCallbacks),\n [deleteFile, field, fieldPath, store],\n );\n\n return {\n value: field.value,\n setValue: field.setValue,\n error: field.meta?.error,\n isValidating: !!field.meta?.isValidating || isUploading,\n upload,\n remove,\n };\n}\n"],"mappings":"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","names":["useMemo","useCallback","useBitField","path","fieldState","setBlur","store","useBitFieldBase","fieldController","useMemo","createFrameworkMaskedFieldBinding","displayValue","setValue","useCallback","val","value","metaState","deriveFieldMeta","onChange","e","isBitFieldInputEventObject","onBlur","useCallback","useRef","useSyncExternalStore","useBitHistory","store","useBitStore","lastMeta","useRef","getSnapshot","useCallback","nextMeta","readHistoryMetaSnapshot","subscribe","cb","meta","useSyncExternalStore","undo","redo","useCallback","useRef","useState","useBitUpload","fieldPath","uploadFn","deleteFile","store","useBitStore","field","useBitField","uploadKeyRef","useRef","isUploading","setIsUploading","useState","kernelCallbacks","path","msg","val","key","upload","useCallback","createUploadHandler","remove","createRemoveHandler"]}
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 BitPath,\n BitPathValue,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n isBitFieldInputEventObject,\n} from \"../core\";\nimport type {\n BitFieldInputEvent,\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 { fieldState, setBlur, store } = useBitFieldBase<\n BitPathValue<TForm, P>,\n TForm,\n P\n >(path);\n\n const { fieldController } = useMemo(() => {\n return createFrameworkMaskedFieldBinding(store, path);\n }, [store, path]);\n\n const displayValue = useMemo(\n () => fieldController.displayValue(fieldState.value),\n [fieldState.value, fieldController],\n );\n\n const setValue = useCallback(\n (val: BitPathValue<TForm, P> | string | number | null | undefined) => {\n fieldController.setValue(val);\n },\n [fieldController],\n );\n\n const { value } = fieldState;\n const metaState = deriveFieldMeta(fieldState);\n\n const onChange = useCallback(\n (e: BitFieldInputEvent) => {\n const val = isBitFieldInputEventObject(e) ? e.target?.value : e;\n setValue(val);\n },\n [setValue],\n );\n\n const onBlur = useCallback(() => {\n setBlur();\n }, [setBlur]);\n\n return {\n // Main handlers and values (flat)\n value: value as BitPathValue<TForm, P>,\n displayValue,\n setValue,\n setBlur,\n onChange,\n onBlur,\n // Props helper\n props: {\n value: displayValue,\n onChange,\n onBlur,\n },\n // Metadata (grouped)\n meta: {\n error: metaState.error,\n touched: metaState.touched,\n invalid: metaState.invalid,\n isDirty: metaState.isDirty,\n isValidating: metaState.isValidating,\n isHidden: metaState.isHidden,\n isRequired: metaState.isRequired,\n hasError: metaState.hasError,\n },\n };\n}\n","import { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { readHistoryMetaSnapshot, type HistoryMeta } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitHistoryResult } from \"./types\";\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n const lastMeta = useRef<HistoryMeta | null>(null);\n\n const getSnapshot = useCallback(() => {\n const nextMeta = readHistoryMetaSnapshot(store);\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 lastMeta.current = nextMeta;\n return nextMeta;\n }, [store]);\n\n const subscribe = useCallback(\n (cb: () => void) => store.observe.subscribeHistoryMeta(() => cb()),\n [store],\n );\n\n const meta = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n const undo = useCallback(() => {\n store.feature.undo();\n }, [store]);\n\n const redo = useCallback(() => {\n store.feature.redo();\n }, [store]);\n\n return {\n ...meta,\n undo,\n redo,\n };\n}\n","/**\n * React Hook for File Upload Integration\n *\n * Minimal upload API integrated with global field validation lifecycle.\n *\n * @example\n * ```typescript\n * const avatar = useBitUpload(\"avatar\", uploadFn);\n *\n * return (\n * <>\n * <input\n * type=\"file\"\n * onChange={(e) => avatar.upload(e.target.files?.[0])}\n * disabled={avatar.isValidating}\n * />\n * {avatar.error && <Error>{avatar.error}</Error>}\n * </>\n * );\n * ```\n */\n\nimport { useCallback, useRef, useState } from \"react\";\nimport type { BitDeleteUploadFn, BitUploadFn } from \"../core\";\nimport { createRemoveHandler, createUploadHandler } from \"../core/adapters\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitUploadResult } from \"./types\";\nimport { useBitField } from \"./use-bit-field\";\n\nexport function useBitUpload<\n TMetadata extends Record<string, unknown> = Record<string, unknown>,\n>(\n fieldPath: string,\n uploadFn: BitUploadFn<TMetadata>,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n const uploadKeyRef = useRef<string | null>(null);\n const [isUploading, setIsUploading] = useState(false);\n\n const kernelCallbacks = {\n setLoading: setIsUploading,\n setError: (path: string, msg: string | undefined) =>\n store.write.setError(path, msg),\n setValue: (val: string | null) => field.setValue(val as any),\n getUploadKey: () => uploadKeyRef.current,\n setUploadKey: (key: string | null) => {\n uploadKeyRef.current = key;\n },\n };\n\n const upload = useCallback(\n createUploadHandler(fieldPath, uploadFn, kernelCallbacks),\n [uploadFn, field, fieldPath, store],\n );\n\n const remove = useCallback(\n createRemoveHandler(fieldPath, deleteFile, kernelCallbacks),\n [deleteFile, field, fieldPath, store],\n );\n\n return {\n value: field.value,\n setValue: field.setValue,\n error: field.meta?.error,\n isValidating: !!field.meta?.isValidating || isUploading,\n upload,\n remove,\n };\n}\n"],"mappings":"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","names":["useMemo","useCallback","useBitField","path","fieldState","setBlur","store","useBitFieldBase","fieldController","useMemo","createFrameworkMaskedFieldBinding","displayValue","setValue","useCallback","val","value","metaState","deriveFieldMeta","onChange","e","isBitFieldInputEventObject","onBlur","useCallback","useRef","useSyncExternalStore","useBitHistory","store","useBitStore","lastMeta","useRef","getSnapshot","useCallback","nextMeta","readHistoryMetaSnapshot","subscribe","cb","meta","useSyncExternalStore","undo","redo","useCallback","useRef","useState","useBitUpload","fieldPath","uploadFn","deleteFile","store","useBitStore","field","useBitField","uploadKeyRef","useRef","isUploading","setIsUploading","useState","kernelCallbacks","path","msg","val","key","upload","useCallback","createUploadHandler","remove","createRemoveHandler"]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkMFSQATNZcjs = require('../chunk-MFSQATNZ.cjs');require('../chunk-W5CLDRRE.cjs');require('../chunk-VZHG372Q.cjs');var _chunkMFTWAFMGcjs = require('../chunk-MFTWAFMG.cjs');require('../chunk-BSGJ3T5S.cjs');require('../chunk-D7JQWF6V.cjs');var _chunkM6WBNHITcjs = require('../chunk-M6WBNHIT.cjs');require('../chunk-T2JRSWQU.cjs');require('../chunk-PFPGASVZ.cjs');var _react = require('react');function g(i){let{fieldState:r,setBlur:o,store:l}=_chunkMFSQATNZcjs.d.call(void 0, i),{fieldController:t}=_react.useMemo.call(void 0, ()=>_chunkMFTWAFMGcjs.h.call(void 0, l,i),[l,i]),u=_react.useMemo.call(void 0, ()=>t.displayValue(r.value),[r.value,t]),d=_react.useCallback.call(void 0, s=>t.setValue(s),[t]),F=_react.useCallback.call(void 0, s=>t.setValue(s),[t]),{value:f}=r,e=_chunkM6WBNHITcjs.c.call(void 0, r),n=_react.useCallback.call(void 0, ()=>{o()},[o]);return{value:f,displayValue:u,setValue:F,setBlur:o,onChangeText:d,onBlur:n,meta:{error:e.error,touched:e.touched,invalid:e.invalid,isValidating:e.isValidating,isDirty:e.isDirty,isHidden:e.isHidden,isRequired:e.isRequired,hasError:e.hasError},props:{value:u,onChangeText:d,onBlur:n}}}exports.BitFormProvider = _chunkMFSQATNZcjs.a; exports.useBitArray = _chunkMFSQATNZcjs.e; exports.useBitField = g; exports.useBitForm = _chunkMFSQATNZcjs.c; exports.useBitPersist = _chunkMFSQATNZcjs.i; exports.useBitScope = _chunkMFSQATNZcjs.f; exports.useBitSteps = _chunkMFSQATNZcjs.g; exports.useBitStore = _chunkMFSQATNZcjs.b; exports.useBitWatch = _chunkMFSQATNZcjs.h;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkGPMAT4PTcjs = require('../chunk-GPMAT4PT.cjs');require('../chunk-W5CLDRRE.cjs');require('../chunk-4RQFECC7.cjs');var _chunkNVFZ22A7cjs = require('../chunk-NVFZ22A7.cjs');require('../chunk-BSGJ3T5S.cjs');require('../chunk-RHMJPKNV.cjs');var _chunk3KI3GEU3cjs = require('../chunk-3KI3GEU3.cjs');require('../chunk-ZKAFHJPU.cjs');require('../chunk-VBX5I5XG.cjs');require('../chunk-PFPGASVZ.cjs');var _react = require('react');function g(i){let{fieldState:r,setBlur:o,store:l}=_chunkGPMAT4PTcjs.d.call(void 0, i),{fieldController:t}=_react.useMemo.call(void 0, ()=>_chunkNVFZ22A7cjs.h.call(void 0, l,i),[l,i]),u=_react.useMemo.call(void 0, ()=>t.displayValue(r.value),[r.value,t]),d=_react.useCallback.call(void 0, s=>t.setValue(s),[t]),F=_react.useCallback.call(void 0, s=>t.setValue(s),[t]),{value:f}=r,e=_chunk3KI3GEU3cjs.a.call(void 0, r),n=_react.useCallback.call(void 0, ()=>{o()},[o]);return{value:f,displayValue:u,setValue:F,setBlur:o,onChangeText:d,onBlur:n,meta:{error:e.error,touched:e.touched,invalid:e.invalid,isValidating:e.isValidating,isDirty:e.isDirty,isHidden:e.isHidden,isRequired:e.isRequired,hasError:e.hasError},props:{value:u,onChangeText:d,onBlur:n}}}exports.BitFormProvider = _chunkGPMAT4PTcjs.a; exports.useBitArray = _chunkGPMAT4PTcjs.e; exports.useBitField = g; exports.useBitForm = _chunkGPMAT4PTcjs.c; exports.useBitPersist = _chunkGPMAT4PTcjs.i; exports.useBitScope = _chunkGPMAT4PTcjs.f; exports.useBitSteps = _chunkGPMAT4PTcjs.g; exports.useBitStore = _chunkGPMAT4PTcjs.b; exports.useBitWatch = _chunkGPMAT4PTcjs.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","setBlur","store","useBitFieldBase","fieldController","useMemo","createFrameworkMaskedFieldBinding","displayValue","handleChange","useCallback","text","setValue","val","value","metaState","deriveFieldMeta","onBlur"],"mappings":"AAAA,kIAAiG,iCAA8B,iCAA8B,yDAA0C,iCAA8B,iCAA8B,yDAA0C,iCAA8B,iCAA8B,8BCApU,SAUrBA,CAAAA,CAGdC,CAAAA,CAA4C,CAC5C,GAAM,CAAE,UAAA,CAAAC,CAAAA,CAAY,OAAA,CAAAC,CAAAA,CAAS,KAAA,CAAAC,CAAM,CAAA,CAAIC,iCAAAA,CAIjC,CAAA,CAEA,CAAE,eAAA,CAAAC,CAAgB,CAAA,CAAIC,4BAAAA,CAAQ,CAAA,EAC3BC,iCAAAA,CAAkCJ,CAAOH,CAAI,CAAA,CACnD,CAACG,CAAAA,CAAOH,CAAI,CAAC,CAAA,CAEVQ,CAAAA,CAAeF,4BAAAA,CACnB,CAAA,EAAMD,CAAAA,CAAgB,YAAA,CAAaJ,CAAAA,CAAW,KAAK,CAAA,CACnD,CAACA,CAAAA,CAAW,KAAA,CAAOI,CAAe,CACpC,CAAA,CAEMI,CAAAA,CAAeC,gCAAAA,CAClBC,EAAiBN,CAAAA,CAAgB,QAAA,CAASM,CAAI,CAAA,CAC/C,CAACN,CAAe,CAClB,CAAA,CAEMO,CAAAA,CAAWF,gCAAAA,CACdG,EAAaR,CAAAA,CAAgB,QAAA,CAASQ,CAAG,CAAA,CAC1C,CAACR,CAAe,CAClB,CAAA,CAEM,CAAE,KAAA,CAAAS,CAAM,CAAA,CAAIb,CAAAA,CACZc,CAAAA,CAAYC,iCAAAA,CAA0B,CAAA,CAEtCC,CAAAA,CAASP,gCAAAA,CAAY,CAAA,EAAM,CAC/BR,CAAAA,CAAQ,CACV,CAAA,CAAG,CAACA,CAAO,CAAC,CAAA,CAEZ,MAAO,CACL,KAAA,CAAOY,CAAAA,CACP,YAAA,CAAAN,CAAAA,CACA,QAAA,CAAAI,CAAAA,CACA,OAAA,CAAAV,CAAAA,CACA,YAAA,CAAcO,CAAAA,CACd,MAAA,CAAAQ,CAAAA,CACA,IAAA,CAAM,CACJ,KAAA,CAAOF,CAAAA,CAAU,KAAA,CACjB,OAAA,CAASA,CAAAA,CAAU,OAAA,CACnB,OAAA,CAASA,CAAAA,CAAU,OAAA,CACnB,YAAA,CAAcA,CAAAA,CAAU,YAAA,CACxB,OAAA,CAASA,CAAAA,CAAU,OAAA,CACnB,QAAA,CAAUA,CAAAA,CAAU,QAAA,CACpB,UAAA,CAAYA,CAAAA,CAAU,UAAA,CACtB,QAAA,CAAUA,CAAAA,CAAU,QACtB,CAAA,CACA,KAAA,CAAO,CACL,KAAA,CAAOP,CAAAA,CACP,YAAA,CAAcC,CAAAA,CACd,MAAA,CAAAQ,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 {\n BitPath,\n BitPathValue,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n} 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 { fieldState, setBlur, store } = useBitFieldBase<\n BitPathValue<TForm, P>,\n TForm,\n P\n >(path);\n\n const { fieldController } = useMemo(() => {\n return createFrameworkMaskedFieldBinding(store, path);\n }, [store, path]);\n\n const displayValue = useMemo(\n () => fieldController.displayValue(fieldState.value),\n [fieldState.value, fieldController],\n );\n\n const handleChange = useCallback(\n (text: string) => fieldController.setValue(text),\n [fieldController],\n );\n\n const setValue = useCallback(\n (val: any) => fieldController.setValue(val),\n [fieldController],\n );\n\n const { value } = fieldState;\n const metaState = deriveFieldMeta(fieldState);\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: metaState.error,\n touched: metaState.touched,\n invalid: metaState.invalid,\n isValidating: metaState.isValidating,\n isDirty: metaState.isDirty,\n isHidden: metaState.isHidden,\n isRequired: metaState.isRequired,\n hasError: metaState.hasError,\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","setBlur","store","useBitFieldBase","fieldController","useMemo","createFrameworkMaskedFieldBinding","displayValue","handleChange","useCallback","text","setValue","val","value","metaState","deriveFieldMeta","onBlur"],"mappings":"AAAA,kIAAiG,iCAA8B,iCAA8B,yDAA0C,iCAA8B,iCAA8B,yDAA0C,iCAA8B,iCAA8B,iCAA8B,8BCAlW,SAUrBA,CAAAA,CAGdC,CAAAA,CAA4C,CAC5C,GAAM,CAAE,UAAA,CAAAC,CAAAA,CAAY,OAAA,CAAAC,CAAAA,CAAS,KAAA,CAAAC,CAAM,CAAA,CAAIC,iCAAAA,CAIjC,CAAA,CAEA,CAAE,eAAA,CAAAC,CAAgB,CAAA,CAAIC,4BAAAA,CAAQ,CAAA,EAC3BC,iCAAAA,CAAkCJ,CAAOH,CAAI,CAAA,CACnD,CAACG,CAAAA,CAAOH,CAAI,CAAC,CAAA,CAEVQ,CAAAA,CAAeF,4BAAAA,CACnB,CAAA,EAAMD,CAAAA,CAAgB,YAAA,CAAaJ,CAAAA,CAAW,KAAK,CAAA,CACnD,CAACA,CAAAA,CAAW,KAAA,CAAOI,CAAe,CACpC,CAAA,CAEMI,CAAAA,CAAeC,gCAAAA,CAClBC,EAAiBN,CAAAA,CAAgB,QAAA,CAASM,CAAI,CAAA,CAC/C,CAACN,CAAe,CAClB,CAAA,CAEMO,CAAAA,CAAWF,gCAAAA,CACdG,EAAaR,CAAAA,CAAgB,QAAA,CAASQ,CAAG,CAAA,CAC1C,CAACR,CAAe,CAClB,CAAA,CAEM,CAAE,KAAA,CAAAS,CAAM,CAAA,CAAIb,CAAAA,CACZc,CAAAA,CAAYC,iCAAAA,CAA0B,CAAA,CAEtCC,CAAAA,CAASP,gCAAAA,CAAY,CAAA,EAAM,CAC/BR,CAAAA,CAAQ,CACV,CAAA,CAAG,CAACA,CAAO,CAAC,CAAA,CAEZ,MAAO,CACL,KAAA,CAAOY,CAAAA,CACP,YAAA,CAAAN,CAAAA,CACA,QAAA,CAAAI,CAAAA,CACA,OAAA,CAAAV,CAAAA,CACA,YAAA,CAAcO,CAAAA,CACd,MAAA,CAAAQ,CAAAA,CACA,IAAA,CAAM,CACJ,KAAA,CAAOF,CAAAA,CAAU,KAAA,CACjB,OAAA,CAASA,CAAAA,CAAU,OAAA,CACnB,OAAA,CAASA,CAAAA,CAAU,OAAA,CACnB,YAAA,CAAcA,CAAAA,CAAU,YAAA,CACxB,OAAA,CAASA,CAAAA,CAAU,OAAA,CACnB,QAAA,CAAUA,CAAAA,CAAU,QAAA,CACpB,UAAA,CAAYA,CAAAA,CAAU,UAAA,CACtB,QAAA,CAAUA,CAAAA,CAAU,QACtB,CAAA,CACA,KAAA,CAAO,CACL,KAAA,CAAOP,CAAAA,CACP,YAAA,CAAcC,CAAAA,CACd,MAAA,CAAAQ,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 {\n BitPath,\n BitPathValue,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n} 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 { fieldState, setBlur, store } = useBitFieldBase<\n BitPathValue<TForm, P>,\n TForm,\n P\n >(path);\n\n const { fieldController } = useMemo(() => {\n return createFrameworkMaskedFieldBinding(store, path);\n }, [store, path]);\n\n const displayValue = useMemo(\n () => fieldController.displayValue(fieldState.value),\n [fieldState.value, fieldController],\n );\n\n const handleChange = useCallback(\n (text: string) => fieldController.setValue(text),\n [fieldController],\n );\n\n const setValue = useCallback(\n (val: any) => fieldController.setValue(val),\n [fieldController],\n );\n\n const { value } = fieldState;\n const metaState = deriveFieldMeta(fieldState);\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: metaState.error,\n touched: metaState.touched,\n invalid: metaState.invalid,\n isValidating: metaState.isValidating,\n isDirty: metaState.isDirty,\n isHidden: metaState.isHidden,\n isRequired: metaState.isRequired,\n hasError: metaState.hasError,\n },\n props: {\n value: displayValue,\n onChangeText: handleChange,\n onBlur,\n },\n };\n}\n"]}
@@ -1,14 +1,15 @@
1
- export { B as BitFormProvider, U as UseBitPersistResult, u as useBitArray, a as useBitForm, b as useBitPersist, c as useBitScope, d as useBitSteps, e as useBitStore, f as useBitWatch } from '../use-bit-persist-C2LHNTVv.cjs';
2
- import { u as BitPath, v as BitPathValue } from '../types-D6LhF5GC.cjs';
3
- export { S as ScopeStatus, V as ValidateScopeResult } from '../types-D6LhF5GC.cjs';
4
- import '../bus-ZLQeq4Vr.cjs';
1
+ export { B as BitFormProvider, U as UseBitPersistResult, u as useBitArray, a as useBitForm, b as useBitPersist, c as useBitScope, d as useBitSteps, e as useBitStore, f as useBitWatch } from '../use-bit-persist-DDxV21AN.cjs';
2
+ import { d as BitPath, e as BitPathValue } from '../state-types-8bUndWfg.cjs';
3
+ import '../bus-DzTqgkZ4.cjs';
4
+ export { S as ScopeStatus, V as ValidateScopeResult } from '../runtime-types-D1SRZr-n.cjs';
5
5
  import 'react/jsx-runtime';
6
6
  import 'react';
7
- import '../store-api-types-D-ZHxzRy.cjs';
8
- import '../types-D8DgIUhJ.cjs';
9
- import '../meta-types-Bzmm21TP.cjs';
10
- import '../array-controller-B5bfXV1W.cjs';
11
- import '../field-binding-B_OX3bjp.cjs';
7
+ import '../store-api-types-DSgYwMS3.cjs';
8
+ import '../types-CUXh7PqD.cjs';
9
+ import '../config-types-5eR82k2V.cjs';
10
+ import '../meta-types-BC1VLABk.cjs';
11
+ import '../upload-C4JqIaU2.cjs';
12
+ import '../field-binding-X5TkvfUt.cjs';
12
13
 
13
14
  /**
14
15
  * Metadata describing the current state of a form field (React Native).
@@ -1,14 +1,15 @@
1
- export { B as BitFormProvider, U as UseBitPersistResult, u as useBitArray, a as useBitForm, b as useBitPersist, c as useBitScope, d as useBitSteps, e as useBitStore, f as useBitWatch } from '../use-bit-persist-BTwy8kvA.js';
2
- import { u as BitPath, v as BitPathValue } from '../types-CG5nYeRk.js';
3
- export { S as ScopeStatus, V as ValidateScopeResult } from '../types-CG5nYeRk.js';
4
- import '../bus-B2VEKrPI.js';
1
+ export { B as BitFormProvider, U as UseBitPersistResult, u as useBitArray, a as useBitForm, b as useBitPersist, c as useBitScope, d as useBitSteps, e as useBitStore, f as useBitWatch } from '../use-bit-persist-Bd1H2fge.js';
2
+ import { d as BitPath, e as BitPathValue } from '../state-types-8bUndWfg.js';
3
+ import '../bus-BFOBGmd9.js';
4
+ export { S as ScopeStatus, V as ValidateScopeResult } from '../runtime-types-D1SRZr-n.js';
5
5
  import 'react/jsx-runtime';
6
6
  import 'react';
7
- import '../store-api-types-DPi30jQF.js';
8
- import '../types-D8DgIUhJ.js';
9
- import '../meta-types-Bzmm21TP.js';
10
- import '../array-controller-Cx-DMH7Y.js';
11
- import '../field-binding-MX6jVQbT.js';
7
+ import '../store-api-types-Bozwlwyb.js';
8
+ import '../types-CUXh7PqD.js';
9
+ import '../config-types-D9n-rQLk.js';
10
+ import '../meta-types-BC1VLABk.js';
11
+ import '../upload-ao6skK9K.js';
12
+ import '../field-binding-Bi1g-D8X.js';
12
13
 
13
14
  /**
14
15
  * Metadata describing the current state of a form field (React Native).
@@ -1,2 +1,2 @@
1
- import{a as x,b as P,c as v,d as B,e as y,f as h,g as V,h as T,i as S}from"../chunk-CPP7ELA5.js";import"../chunk-5NA2TFPG.js";import"../chunk-UQ3DSUWC.js";import{h as m}from"../chunk-E2NZR44P.js";import"../chunk-W2E5UIXT.js";import"../chunk-EQ55DKX2.js";import{c as p}from"../chunk-63OJBMKK.js";import"../chunk-RD73EBSN.js";import"../chunk-3NUJVIAM.js";import{useMemo as c,useCallback as a}from"react";function g(i){let{fieldState:r,setBlur:o,store:l}=B(i),{fieldController:t}=c(()=>m(l,i),[l,i]),u=c(()=>t.displayValue(r.value),[r.value,t]),d=a(s=>t.setValue(s),[t]),F=a(s=>t.setValue(s),[t]),{value:f}=r,e=p(r),n=a(()=>{o()},[o]);return{value:f,displayValue:u,setValue:F,setBlur:o,onChangeText:d,onBlur:n,meta:{error:e.error,touched:e.touched,invalid:e.invalid,isValidating:e.isValidating,isDirty:e.isDirty,isHidden:e.isHidden,isRequired:e.isRequired,hasError:e.hasError},props:{value:u,onChangeText:d,onBlur:n}}}export{x as BitFormProvider,y as useBitArray,g as useBitField,v as useBitForm,S as useBitPersist,h as useBitScope,V as useBitSteps,P as useBitStore,T as useBitWatch};
1
+ import{a as x,b as P,c as v,d as B,e as y,f as h,g as V,h as T,i as S}from"../chunk-GQ2QJCBF.js";import"../chunk-5NA2TFPG.js";import"../chunk-G2FQQDRK.js";import{h as m}from"../chunk-2AFWJAQG.js";import"../chunk-W2E5UIXT.js";import"../chunk-UIKO6GGW.js";import{a as p}from"../chunk-ICYXODTQ.js";import"../chunk-OPC7HFNN.js";import"../chunk-FLFIOW75.js";import"../chunk-3NUJVIAM.js";import{useMemo as c,useCallback as a}from"react";function g(i){let{fieldState:r,setBlur:o,store:l}=B(i),{fieldController:t}=c(()=>m(l,i),[l,i]),u=c(()=>t.displayValue(r.value),[r.value,t]),d=a(s=>t.setValue(s),[t]),F=a(s=>t.setValue(s),[t]),{value:f}=r,e=p(r),n=a(()=>{o()},[o]);return{value:f,displayValue:u,setValue:F,setBlur:o,onChangeText:d,onBlur:n,meta:{error:e.error,touched:e.touched,invalid:e.invalid,isValidating:e.isValidating,isDirty:e.isDirty,isHidden:e.isHidden,isRequired:e.isRequired,hasError:e.hasError},props:{value:u,onChangeText:d,onBlur:n}}}export{x as BitFormProvider,y as useBitArray,g as useBitField,v as useBitForm,S as useBitPersist,h as useBitScope,V as useBitSteps,P as useBitStore,T 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 {\n BitPath,\n BitPathValue,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n} 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 { fieldState, setBlur, store } = useBitFieldBase<\n BitPathValue<TForm, P>,\n TForm,\n P\n >(path);\n\n const { fieldController } = useMemo(() => {\n return createFrameworkMaskedFieldBinding(store, path);\n }, [store, path]);\n\n const displayValue = useMemo(\n () => fieldController.displayValue(fieldState.value),\n [fieldState.value, fieldController],\n );\n\n const handleChange = useCallback(\n (text: string) => fieldController.setValue(text),\n [fieldController],\n );\n\n const setValue = useCallback(\n (val: any) => fieldController.setValue(val),\n [fieldController],\n );\n\n const { value } = fieldState;\n const metaState = deriveFieldMeta(fieldState);\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: metaState.error,\n touched: metaState.touched,\n invalid: metaState.invalid,\n isValidating: metaState.isValidating,\n isDirty: metaState.isDirty,\n isHidden: metaState.isHidden,\n isRequired: metaState.isRequired,\n hasError: metaState.hasError,\n },\n props: {\n value: displayValue,\n onChangeText: handleChange,\n onBlur,\n },\n };\n}\n"],"mappings":"iWAAA,OAAS,WAAAA,EAAS,eAAAC,MAAmB,QAU9B,SAASC,EAGdC,EAA4C,CAC5C,GAAM,CAAE,WAAAC,EAAY,QAAAC,EAAS,MAAAC,CAAM,EAAIC,EAIrCJ,CAAI,EAEA,CAAE,gBAAAK,CAAgB,EAAIC,EAAQ,IAC3BC,EAAkCJ,EAAOH,CAAI,EACnD,CAACG,EAAOH,CAAI,CAAC,EAEVQ,EAAeF,EACnB,IAAMD,EAAgB,aAAaJ,EAAW,KAAK,EACnD,CAACA,EAAW,MAAOI,CAAe,CACpC,EAEMI,EAAeC,EAClBC,GAAiBN,EAAgB,SAASM,CAAI,EAC/C,CAACN,CAAe,CAClB,EAEMO,EAAWF,EACdG,GAAaR,EAAgB,SAASQ,CAAG,EAC1C,CAACR,CAAe,CAClB,EAEM,CAAE,MAAAS,CAAM,EAAIb,EACZc,EAAYC,EAAgBf,CAAU,EAEtCgB,EAASP,EAAY,IAAM,CAC/BR,EAAQ,CACV,EAAG,CAACA,CAAO,CAAC,EAEZ,MAAO,CACL,MAAOY,EACP,aAAAN,EACA,SAAAI,EACA,QAAAV,EACA,aAAcO,EACd,OAAAQ,EACA,KAAM,CACJ,MAAOF,EAAU,MACjB,QAASA,EAAU,QACnB,QAASA,EAAU,QACnB,aAAcA,EAAU,aACxB,QAASA,EAAU,QACnB,SAAUA,EAAU,SACpB,WAAYA,EAAU,WACtB,SAAUA,EAAU,QACtB,EACA,MAAO,CACL,MAAOP,EACP,aAAcC,EACd,OAAAQ,CACF,CACF,CACF","names":["useMemo","useCallback","useBitField","path","fieldState","setBlur","store","useBitFieldBase","fieldController","useMemo","createFrameworkMaskedFieldBinding","displayValue","handleChange","useCallback","text","setValue","val","value","metaState","deriveFieldMeta","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 {\n BitPath,\n BitPathValue,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n} 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 { fieldState, setBlur, store } = useBitFieldBase<\n BitPathValue<TForm, P>,\n TForm,\n P\n >(path);\n\n const { fieldController } = useMemo(() => {\n return createFrameworkMaskedFieldBinding(store, path);\n }, [store, path]);\n\n const displayValue = useMemo(\n () => fieldController.displayValue(fieldState.value),\n [fieldState.value, fieldController],\n );\n\n const handleChange = useCallback(\n (text: string) => fieldController.setValue(text),\n [fieldController],\n );\n\n const setValue = useCallback(\n (val: any) => fieldController.setValue(val),\n [fieldController],\n );\n\n const { value } = fieldState;\n const metaState = deriveFieldMeta(fieldState);\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: metaState.error,\n touched: metaState.touched,\n invalid: metaState.invalid,\n isValidating: metaState.isValidating,\n isDirty: metaState.isDirty,\n isHidden: metaState.isHidden,\n isRequired: metaState.isRequired,\n hasError: metaState.hasError,\n },\n props: {\n value: displayValue,\n onChangeText: handleChange,\n onBlur,\n },\n };\n}\n"],"mappings":"8XAAA,OAAS,WAAAA,EAAS,eAAAC,MAAmB,QAU9B,SAASC,EAGdC,EAA4C,CAC5C,GAAM,CAAE,WAAAC,EAAY,QAAAC,EAAS,MAAAC,CAAM,EAAIC,EAIrCJ,CAAI,EAEA,CAAE,gBAAAK,CAAgB,EAAIC,EAAQ,IAC3BC,EAAkCJ,EAAOH,CAAI,EACnD,CAACG,EAAOH,CAAI,CAAC,EAEVQ,EAAeF,EACnB,IAAMD,EAAgB,aAAaJ,EAAW,KAAK,EACnD,CAACA,EAAW,MAAOI,CAAe,CACpC,EAEMI,EAAeC,EAClBC,GAAiBN,EAAgB,SAASM,CAAI,EAC/C,CAACN,CAAe,CAClB,EAEMO,EAAWF,EACdG,GAAaR,EAAgB,SAASQ,CAAG,EAC1C,CAACR,CAAe,CAClB,EAEM,CAAE,MAAAS,CAAM,EAAIb,EACZc,EAAYC,EAAgBf,CAAU,EAEtCgB,EAASP,EAAY,IAAM,CAC/BR,EAAQ,CACV,EAAG,CAACA,CAAO,CAAC,EAEZ,MAAO,CACL,MAAOY,EACP,aAAAN,EACA,SAAAI,EACA,QAAAV,EACA,aAAcO,EACd,OAAAQ,EACA,KAAM,CACJ,MAAOF,EAAU,MACjB,QAASA,EAAU,QACnB,QAASA,EAAU,QACnB,aAAcA,EAAU,aACxB,QAASA,EAAU,QACnB,SAAUA,EAAU,SACpB,WAAYA,EAAU,WACtB,SAAUA,EAAU,QACtB,EACA,MAAO,CACL,MAAOP,EACP,aAAcC,EACd,OAAAQ,CACF,CACF,CACF","names":["useMemo","useCallback","useBitField","path","fieldState","setBlur","store","useBitFieldBase","fieldController","useMemo","createFrameworkMaskedFieldBinding","displayValue","handleChange","useCallback","text","setValue","val","value","metaState","deriveFieldMeta","onBlur"]}
@@ -3,8 +3,7 @@ export { zodResolver } from './zod.cjs';
3
3
  export { yupResolver } from './yup.cjs';
4
4
  export { BitJoiResolverConfig, BitResolverScopeOptions, BitYupResolverConfig, BitZodResolverConfig } from './types.cjs';
5
5
  import 'joi';
6
- import '../types-D6LhF5GC.cjs';
7
- import '../types-D8DgIUhJ.cjs';
8
- import '../bus-ZLQeq4Vr.cjs';
6
+ import '../state-types-8bUndWfg.cjs';
7
+ import '../bus-DzTqgkZ4.cjs';
9
8
  import 'zod';
10
9
  import 'yup';
@@ -3,8 +3,7 @@ export { zodResolver } from './zod.js';
3
3
  export { yupResolver } from './yup.js';
4
4
  export { BitJoiResolverConfig, BitResolverScopeOptions, BitYupResolverConfig, BitZodResolverConfig } from './types.js';
5
5
  import 'joi';
6
- import '../types-CG5nYeRk.js';
7
- import '../types-D8DgIUhJ.js';
8
- import '../bus-B2VEKrPI.js';
6
+ import '../state-types-8bUndWfg.js';
7
+ import '../bus-BFOBGmd9.js';
9
8
  import 'zod';
10
9
  import 'yup';
@@ -1,8 +1,7 @@
1
1
  import { ObjectSchema } from 'joi';
2
- import { k as BitErrors } from '../types-D6LhF5GC.cjs';
3
- import '../bus-ZLQeq4Vr.cjs';
2
+ import { b as BitErrors } from '../state-types-8bUndWfg.cjs';
3
+ import '../bus-DzTqgkZ4.cjs';
4
4
  import { BitJoiResolverConfig, BitResolverScopeOptions } from './types.cjs';
5
- import '../types-D8DgIUhJ.cjs';
6
5
 
7
6
  declare const joiResolver: <T extends object>(schema: ObjectSchema<T>, config?: BitJoiResolverConfig) => (values: T, options?: BitResolverScopeOptions) => Promise<BitErrors<T>>;
8
7
 
@@ -1,8 +1,7 @@
1
1
  import { ObjectSchema } from 'joi';
2
- import { k as BitErrors } from '../types-CG5nYeRk.js';
3
- import '../bus-B2VEKrPI.js';
2
+ import { b as BitErrors } from '../state-types-8bUndWfg.js';
3
+ import '../bus-BFOBGmd9.js';
4
4
  import { BitJoiResolverConfig, BitResolverScopeOptions } from './types.js';
5
- import '../types-D8DgIUhJ.js';
6
5
 
7
6
  declare const joiResolver: <T extends object>(schema: ObjectSchema<T>, config?: BitJoiResolverConfig) => (values: T, options?: BitResolverScopeOptions) => Promise<BitErrors<T>>;
8
7
 
@@ -1,8 +1,7 @@
1
1
  import { Schema } from 'yup';
2
- import { k as BitErrors } from '../types-D6LhF5GC.cjs';
3
- import '../bus-ZLQeq4Vr.cjs';
2
+ import { b as BitErrors } from '../state-types-8bUndWfg.cjs';
3
+ import '../bus-DzTqgkZ4.cjs';
4
4
  import { BitYupResolverConfig, BitResolverScopeOptions } from './types.cjs';
5
- import '../types-D8DgIUhJ.cjs';
6
5
 
7
6
  declare const yupResolver: <T extends object>(schema: Schema<T>, config?: BitYupResolverConfig) => (values: T, options?: BitResolverScopeOptions) => Promise<BitErrors<T>>;
8
7
 
@@ -1,8 +1,7 @@
1
1
  import { Schema } from 'yup';
2
- import { k as BitErrors } from '../types-CG5nYeRk.js';
3
- import '../bus-B2VEKrPI.js';
2
+ import { b as BitErrors } from '../state-types-8bUndWfg.js';
3
+ import '../bus-BFOBGmd9.js';
4
4
  import { BitYupResolverConfig, BitResolverScopeOptions } from './types.js';
5
- import '../types-D8DgIUhJ.js';
6
5
 
7
6
  declare const yupResolver: <T extends object>(schema: Schema<T>, config?: BitYupResolverConfig) => (values: T, options?: BitResolverScopeOptions) => Promise<BitErrors<T>>;
8
7
 
@@ -1,8 +1,7 @@
1
1
  import { ZodSchema } from 'zod';
2
- import { k as BitErrors } from '../types-D6LhF5GC.cjs';
3
- import '../bus-ZLQeq4Vr.cjs';
2
+ import { b as BitErrors } from '../state-types-8bUndWfg.cjs';
3
+ import '../bus-DzTqgkZ4.cjs';
4
4
  import { BitZodResolverConfig, BitResolverScopeOptions } from './types.cjs';
5
- import '../types-D8DgIUhJ.cjs';
6
5
 
7
6
  declare const zodResolver: <T extends object>(schema: ZodSchema<T>, _config?: BitZodResolverConfig) => (values: T, options?: BitResolverScopeOptions) => Promise<BitErrors<T>>;
8
7
 
@@ -1,8 +1,7 @@
1
1
  import { ZodSchema } from 'zod';
2
- import { k as BitErrors } from '../types-CG5nYeRk.js';
3
- import '../bus-B2VEKrPI.js';
2
+ import { b as BitErrors } from '../state-types-8bUndWfg.js';
3
+ import '../bus-BFOBGmd9.js';
4
4
  import { BitZodResolverConfig, BitResolverScopeOptions } from './types.js';
5
- import '../types-D8DgIUhJ.js';
6
5
 
7
6
  declare const zodResolver: <T extends object>(schema: ZodSchema<T>, _config?: BitZodResolverConfig) => (values: T, options?: BitResolverScopeOptions) => Promise<BitErrors<T>>;
8
7
 
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Pluggable scheduler used for validation debounce.
3
+ * Replace the default (setTimeout-based) with a framework-aware scheduler.
4
+ */
5
+ interface BitScheduler {
6
+ schedule(fn: () => void, delayMs: number): () => void;
7
+ }
8
+ interface BitIdFactoryContext {
9
+ scope: "store" | "array";
10
+ path?: string;
11
+ index?: number;
12
+ storeName?: string;
13
+ }
14
+ type BitIdFactory = (context: BitIdFactoryContext) => string;
15
+ type BitSubmitResult = {
16
+ status: "submitted";
17
+ } | {
18
+ status: "invalid";
19
+ } | {
20
+ status: "failed";
21
+ error: unknown;
22
+ } | {
23
+ status: "blocked";
24
+ reason: "isSubmitting" | "validating";
25
+ };
26
+ /** Return type of BitStore.getScopeStatus, used by useBitScope/injectBitScope. */
27
+ interface ScopeStatus {
28
+ hasErrors: boolean;
29
+ isDirty: boolean;
30
+ errors: Record<string, string>;
31
+ }
32
+ /** Return type of scope validation helpers, used by useBitScope/injectBitScope. */
33
+ interface ValidateScopeResult {
34
+ valid: boolean;
35
+ errors: Record<string, string>;
36
+ }
37
+ interface DevToolsOptions {
38
+ enabled?: boolean;
39
+ mode?: "local" | "remote";
40
+ url?: string;
41
+ }
42
+
43
+ export type { BitScheduler as B, DevToolsOptions as D, ScopeStatus as S, ValidateScopeResult as V, BitSubmitResult as a, BitIdFactory as b };
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Pluggable scheduler used for validation debounce.
3
+ * Replace the default (setTimeout-based) with a framework-aware scheduler.
4
+ */
5
+ interface BitScheduler {
6
+ schedule(fn: () => void, delayMs: number): () => void;
7
+ }
8
+ interface BitIdFactoryContext {
9
+ scope: "store" | "array";
10
+ path?: string;
11
+ index?: number;
12
+ storeName?: string;
13
+ }
14
+ type BitIdFactory = (context: BitIdFactoryContext) => string;
15
+ type BitSubmitResult = {
16
+ status: "submitted";
17
+ } | {
18
+ status: "invalid";
19
+ } | {
20
+ status: "failed";
21
+ error: unknown;
22
+ } | {
23
+ status: "blocked";
24
+ reason: "isSubmitting" | "validating";
25
+ };
26
+ /** Return type of BitStore.getScopeStatus, used by useBitScope/injectBitScope. */
27
+ interface ScopeStatus {
28
+ hasErrors: boolean;
29
+ isDirty: boolean;
30
+ errors: Record<string, string>;
31
+ }
32
+ /** Return type of scope validation helpers, used by useBitScope/injectBitScope. */
33
+ interface ValidateScopeResult {
34
+ valid: boolean;
35
+ errors: Record<string, string>;
36
+ }
37
+ interface DevToolsOptions {
38
+ enabled?: boolean;
39
+ mode?: "local" | "remote";
40
+ url?: string;
41
+ }
42
+
43
+ export type { BitScheduler as B, DevToolsOptions as D, ScopeStatus as S, ValidateScopeResult as V, BitSubmitResult as a, BitIdFactory as b };
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Type-safe path utilities for form structures.
3
+ */
4
+ type Primitive = string | number | boolean | bigint | symbol | null | undefined;
5
+ type BitPath<T, Prefix extends string = ""> = T extends Primitive ? never : T extends readonly (infer U)[] ? Prefix extends "" ? `${number}` | `${number}.${BitPath<U>}` : `${Prefix}.${number}` | `${Prefix}.${number}.${BitPath<U>}` : {
6
+ [K in keyof T & (string | number)]: T[K] extends Primitive ? Prefix extends "" ? `${K & (string | number)}` : `${Prefix}.${K & (string | number)}` : Prefix extends "" ? `${K & (string | number)}` | `${K & (string | number)}.${BitPath<T[K]>}` : `${Prefix}.${K & (string | number)}` | `${Prefix}.${K & (string | number)}.${BitPath<T[K]>}`;
7
+ }[keyof T & (string | number)];
8
+ type BitPathValue<T, P extends string> = P extends `${infer K}.${infer Rest}` ? K extends `${number}` ? T extends readonly (infer U)[] ? BitPathValue<U, Rest> : never : K extends keyof T ? BitPathValue<T[K], Rest> : never : P extends `${number}` ? T extends readonly (infer U)[] ? U : never : P extends keyof T ? T[P] : never;
9
+ type BitArrayPath<T> = BitPath<T> extends infer P ? P extends string ? BitPathValue<T, P> extends readonly unknown[] ? P : never : never : never;
10
+ type BitArrayItem<A> = A extends readonly (infer U)[] ? U : A extends (infer U)[] ? U : never;
11
+
12
+ type DeepPartial<T> = T extends object ? {
13
+ [P in keyof T]?: DeepPartial<T[P]>;
14
+ } : T;
15
+ type BitErrors<T extends object> = Partial<Record<BitPath<T>, string | undefined>>;
16
+ type BitTouched<T extends object> = Partial<Record<BitPath<T>, boolean | undefined>>;
17
+ interface BitPersistMetadata {
18
+ isSaving: boolean;
19
+ isRestoring: boolean;
20
+ error: Error | null;
21
+ }
22
+ interface BitState<T extends object> {
23
+ values: T;
24
+ errors: BitErrors<T>;
25
+ touched: BitTouched<T>;
26
+ isValidating: Record<string, boolean>;
27
+ persist: BitPersistMetadata;
28
+ isValid: boolean;
29
+ isSubmitting: boolean;
30
+ isDirty: boolean;
31
+ }
32
+ interface BitFieldState<_T extends object = Record<string, unknown>, TValue = unknown> {
33
+ value: TValue;
34
+ error: string | undefined;
35
+ touched: boolean;
36
+ isHidden: boolean;
37
+ isRequired: boolean;
38
+ isDirty: boolean;
39
+ isValidating: boolean;
40
+ }
41
+
42
+ export type { BitArrayItem as B, DeepPartial as D, BitArrayPath as a, BitErrors as b, BitFieldState as c, BitPath as d, BitPathValue as e, BitPersistMetadata as f, BitState as g, BitTouched as h };
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Type-safe path utilities for form structures.
3
+ */
4
+ type Primitive = string | number | boolean | bigint | symbol | null | undefined;
5
+ type BitPath<T, Prefix extends string = ""> = T extends Primitive ? never : T extends readonly (infer U)[] ? Prefix extends "" ? `${number}` | `${number}.${BitPath<U>}` : `${Prefix}.${number}` | `${Prefix}.${number}.${BitPath<U>}` : {
6
+ [K in keyof T & (string | number)]: T[K] extends Primitive ? Prefix extends "" ? `${K & (string | number)}` : `${Prefix}.${K & (string | number)}` : Prefix extends "" ? `${K & (string | number)}` | `${K & (string | number)}.${BitPath<T[K]>}` : `${Prefix}.${K & (string | number)}` | `${Prefix}.${K & (string | number)}.${BitPath<T[K]>}`;
7
+ }[keyof T & (string | number)];
8
+ type BitPathValue<T, P extends string> = P extends `${infer K}.${infer Rest}` ? K extends `${number}` ? T extends readonly (infer U)[] ? BitPathValue<U, Rest> : never : K extends keyof T ? BitPathValue<T[K], Rest> : never : P extends `${number}` ? T extends readonly (infer U)[] ? U : never : P extends keyof T ? T[P] : never;
9
+ type BitArrayPath<T> = BitPath<T> extends infer P ? P extends string ? BitPathValue<T, P> extends readonly unknown[] ? P : never : never : never;
10
+ type BitArrayItem<A> = A extends readonly (infer U)[] ? U : A extends (infer U)[] ? U : never;
11
+
12
+ type DeepPartial<T> = T extends object ? {
13
+ [P in keyof T]?: DeepPartial<T[P]>;
14
+ } : T;
15
+ type BitErrors<T extends object> = Partial<Record<BitPath<T>, string | undefined>>;
16
+ type BitTouched<T extends object> = Partial<Record<BitPath<T>, boolean | undefined>>;
17
+ interface BitPersistMetadata {
18
+ isSaving: boolean;
19
+ isRestoring: boolean;
20
+ error: Error | null;
21
+ }
22
+ interface BitState<T extends object> {
23
+ values: T;
24
+ errors: BitErrors<T>;
25
+ touched: BitTouched<T>;
26
+ isValidating: Record<string, boolean>;
27
+ persist: BitPersistMetadata;
28
+ isValid: boolean;
29
+ isSubmitting: boolean;
30
+ isDirty: boolean;
31
+ }
32
+ interface BitFieldState<_T extends object = Record<string, unknown>, TValue = unknown> {
33
+ value: TValue;
34
+ error: string | undefined;
35
+ touched: boolean;
36
+ isHidden: boolean;
37
+ isRequired: boolean;
38
+ isDirty: boolean;
39
+ isValidating: boolean;
40
+ }
41
+
42
+ export type { BitArrayItem as B, DeepPartial as D, BitArrayPath as a, BitErrors as b, BitFieldState as c, BitPath as d, BitPathValue as e, BitPersistMetadata as f, BitState as g, BitTouched as h };
@@ -1,6 +1,13 @@
1
- import { G as BitState, j as BitConfig, N as ValidatorFn, o as BitFieldDefinition, M as DevToolsOptions, O as BitPersistResolvedConfig, P as BitIdFactory, A as BitPlugin, F as BitScheduler, r as BitFormGlobal, u as BitPath, p as BitFieldState, v as BitPathValue, x as BitPersistMetadata, S as ScopeStatus, L as DeepPartial, k as BitErrors, H as BitSubmitResult, c as BitArrayPath, b as BitArrayItem } from './types-CG5nYeRk.js';
2
- import { B as BitMask } from './types-D8DgIUhJ.js';
3
- import { a as BitHistoryMetadata, B as BitFormMeta, b as BitValidationOptions } from './meta-types-Bzmm21TP.js';
1
+ import { B as BitMask } from './types-CUXh7PqD.js';
2
+ import { c as BitFormGlobal } from './bus-BFOBGmd9.js';
3
+ import { e as BitConfig, V as ValidatorFn, i as BitFieldDefinition, v as BitPersistResolvedConfig, p as BitPlugin, w as BitOperationalErrorSource } from './config-types-D9n-rQLk.js';
4
+ import { g as BitState, d as BitPath, c as BitFieldState, e as BitPathValue, f as BitPersistMetadata, D as DeepPartial, b as BitErrors, a as BitArrayPath, B as BitArrayItem } from './state-types-8bUndWfg.js';
5
+ import { D as DevToolsOptions, b as BitIdFactory, B as BitScheduler, S as ScopeStatus, a as BitSubmitResult } from './runtime-types-D1SRZr-n.js';
6
+ import { a as BitHistoryMetadata, B as BitFormMeta, c as BitServerErrorOptions, b as BitValidationOptions } from './meta-types-BC1VLABk.js';
7
+
8
+ interface BitValidationTriggerOptions {
9
+ forceDebounce?: boolean;
10
+ }
4
11
 
5
12
  type BitSelector<T extends object, TSlice> = (state: Readonly<BitState<T>>) => TSlice;
6
13
  type BitEqualityFn<TValue> = (previous: TValue, next: TValue) => boolean;
@@ -17,10 +24,6 @@ interface BitTrackedSelectorSubscriptionOptions<TValue> {
17
24
  }
18
25
  type BitSelectorSubscriptionOptions<TValue> = BitScopedSelectorSubscriptionOptions<TValue> | BitTrackedSelectorSubscriptionOptions<TValue>;
19
26
 
20
- interface BitValidationTriggerOptions {
21
- forceDebounce?: boolean;
22
- }
23
-
24
27
  interface BitStoreIdentityApi<T extends object = Record<string, unknown>> {
25
28
  readonly storeId: string;
26
29
  readonly config: Readonly<BitFrameworkConfig<T>>;
@@ -41,8 +44,9 @@ interface BitFrameworkConfig<T extends object = Record<string, unknown>> extends
41
44
  plugins: BitPlugin<T>[];
42
45
  scheduler?: BitScheduler;
43
46
  subscriptionCacheSize?: number;
47
+ trackedSubscriptions?: boolean;
44
48
  bus?: BitFormGlobal;
45
- onUnhandledError: (error: unknown, source: "submit" | "validation" | "persist") => void;
49
+ onUnhandledError: (error: unknown, source: BitOperationalErrorSource) => void;
46
50
  }
47
51
  interface BitFormReadApi<T extends object = Record<string, unknown>> {
48
52
  getState(): Readonly<BitState<T>>;
@@ -59,7 +63,7 @@ interface BitFormReadApi<T extends object = Record<string, unknown>> {
59
63
  getScopeErrors(scopeName: string): Record<string, string>;
60
64
  getScopeFields(scopeName: string): string[];
61
65
  }
62
- interface BitFormObserveApi<T extends object = Record<string, unknown>> {
66
+ interface BitFormObserveApi<_T extends object = Record<string, unknown>> {
63
67
  subscribe(listener: () => void): () => void;
64
68
  subscribePersistMeta(listener: (meta: BitPersistMetadata) => void): () => void;
65
69
  subscribeHistoryMeta(listener: (meta: BitHistoryMetadata) => void): () => void;
@@ -75,18 +79,15 @@ interface BitFormWriteApi<T extends object = Record<string, unknown>> {
75
79
  }): void;
76
80
  setError(path: string, message: string | undefined): void;
77
81
  setErrors(errors: BitErrors<T>): void;
78
- setServerErrors(serverErrors: Record<string, string[] | string>): void;
79
- validate(options?: BitValidationOptions): Promise<boolean>;
80
- triggerValidation(scopeFields?: string[], options?: BitValidationTriggerOptions): void;
82
+ setServerErrors(serverErrors: Record<string, string[] | string>, options?: BitServerErrorOptions): void;
81
83
  reset(): void;
82
84
  transaction<TResult>(callback: () => TResult): TResult;
83
- submit(onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>): Promise<BitSubmitResult>;
85
+ submit(onSuccess: (values: T, dirtyValues?: Partial<T>) => unknown | Promise<unknown>): Promise<BitSubmitResult>;
84
86
  }
85
87
  interface BitStoreLifecycleApi {
86
88
  cleanup(): void;
87
89
  }
88
90
  interface BitStorePersistFeatureApi {
89
- getPersistMetadata(): BitPersistMetadata;
90
91
  restorePersisted(): Promise<boolean>;
91
92
  forceSave(): Promise<void>;
92
93
  clearPersisted(): Promise<void>;
@@ -105,6 +106,7 @@ interface BitStoreArrayFeatureApi<T extends object = Record<string, unknown>> {
105
106
  swapItems<P extends BitArrayPath<T>>(path: P, indexA: number, indexB: number): void;
106
107
  replaceItems<P extends BitArrayPath<T>>(path: P, items: BitArrayItem<BitPathValue<T, P>>[]): void;
107
108
  clearItems<P extends BitArrayPath<T>>(path: P): void;
109
+ getArrayItemIds<P extends BitArrayPath<T>>(path: P, length?: number): string[];
108
110
  }
109
111
  interface BitStoreHistoryFeatureApi {
110
112
  readonly canUndo: boolean;
@@ -135,6 +137,8 @@ interface BitFieldBindingApi<T extends object = Record<string, unknown>> {
135
137
  unregisterField(path: string): void;
136
138
  }
137
139
  interface BitStoreFeatureApi<T extends object = Record<string, unknown>> extends BitStoreLifecycleApi, BitStorePersistFeatureApi, BitStoreRegistrationFeatureApi<T>, BitStoreArrayFeatureApi<T>, BitStoreHistoryFeatureApi {
140
+ validate(options?: BitValidationOptions): Promise<boolean>;
141
+ triggerValidation(scopeFields?: string[], options?: BitValidationTriggerOptions): void;
138
142
  hasValidationsInProgress(scopeFields?: string[]): boolean;
139
143
  resolveMask(path: string): BitMask | undefined;
140
144
  createArrayItemId(path: string, index?: number): string;
@@ -1,6 +1,13 @@
1
- import { G as BitState, j as BitConfig, N as ValidatorFn, o as BitFieldDefinition, M as DevToolsOptions, O as BitPersistResolvedConfig, P as BitIdFactory, A as BitPlugin, F as BitScheduler, r as BitFormGlobal, u as BitPath, p as BitFieldState, v as BitPathValue, x as BitPersistMetadata, S as ScopeStatus, L as DeepPartial, k as BitErrors, H as BitSubmitResult, c as BitArrayPath, b as BitArrayItem } from './types-D6LhF5GC.cjs';
2
- import { B as BitMask } from './types-D8DgIUhJ.cjs';
3
- import { a as BitHistoryMetadata, B as BitFormMeta, b as BitValidationOptions } from './meta-types-Bzmm21TP.cjs';
1
+ import { B as BitMask } from './types-CUXh7PqD.cjs';
2
+ import { c as BitFormGlobal } from './bus-DzTqgkZ4.cjs';
3
+ import { e as BitConfig, V as ValidatorFn, i as BitFieldDefinition, v as BitPersistResolvedConfig, p as BitPlugin, w as BitOperationalErrorSource } from './config-types-5eR82k2V.cjs';
4
+ import { g as BitState, d as BitPath, c as BitFieldState, e as BitPathValue, f as BitPersistMetadata, D as DeepPartial, b as BitErrors, a as BitArrayPath, B as BitArrayItem } from './state-types-8bUndWfg.cjs';
5
+ import { D as DevToolsOptions, b as BitIdFactory, B as BitScheduler, S as ScopeStatus, a as BitSubmitResult } from './runtime-types-D1SRZr-n.cjs';
6
+ import { a as BitHistoryMetadata, B as BitFormMeta, c as BitServerErrorOptions, b as BitValidationOptions } from './meta-types-BC1VLABk.cjs';
7
+
8
+ interface BitValidationTriggerOptions {
9
+ forceDebounce?: boolean;
10
+ }
4
11
 
5
12
  type BitSelector<T extends object, TSlice> = (state: Readonly<BitState<T>>) => TSlice;
6
13
  type BitEqualityFn<TValue> = (previous: TValue, next: TValue) => boolean;
@@ -17,10 +24,6 @@ interface BitTrackedSelectorSubscriptionOptions<TValue> {
17
24
  }
18
25
  type BitSelectorSubscriptionOptions<TValue> = BitScopedSelectorSubscriptionOptions<TValue> | BitTrackedSelectorSubscriptionOptions<TValue>;
19
26
 
20
- interface BitValidationTriggerOptions {
21
- forceDebounce?: boolean;
22
- }
23
-
24
27
  interface BitStoreIdentityApi<T extends object = Record<string, unknown>> {
25
28
  readonly storeId: string;
26
29
  readonly config: Readonly<BitFrameworkConfig<T>>;
@@ -41,8 +44,9 @@ interface BitFrameworkConfig<T extends object = Record<string, unknown>> extends
41
44
  plugins: BitPlugin<T>[];
42
45
  scheduler?: BitScheduler;
43
46
  subscriptionCacheSize?: number;
47
+ trackedSubscriptions?: boolean;
44
48
  bus?: BitFormGlobal;
45
- onUnhandledError: (error: unknown, source: "submit" | "validation" | "persist") => void;
49
+ onUnhandledError: (error: unknown, source: BitOperationalErrorSource) => void;
46
50
  }
47
51
  interface BitFormReadApi<T extends object = Record<string, unknown>> {
48
52
  getState(): Readonly<BitState<T>>;
@@ -59,7 +63,7 @@ interface BitFormReadApi<T extends object = Record<string, unknown>> {
59
63
  getScopeErrors(scopeName: string): Record<string, string>;
60
64
  getScopeFields(scopeName: string): string[];
61
65
  }
62
- interface BitFormObserveApi<T extends object = Record<string, unknown>> {
66
+ interface BitFormObserveApi<_T extends object = Record<string, unknown>> {
63
67
  subscribe(listener: () => void): () => void;
64
68
  subscribePersistMeta(listener: (meta: BitPersistMetadata) => void): () => void;
65
69
  subscribeHistoryMeta(listener: (meta: BitHistoryMetadata) => void): () => void;
@@ -75,18 +79,15 @@ interface BitFormWriteApi<T extends object = Record<string, unknown>> {
75
79
  }): void;
76
80
  setError(path: string, message: string | undefined): void;
77
81
  setErrors(errors: BitErrors<T>): void;
78
- setServerErrors(serverErrors: Record<string, string[] | string>): void;
79
- validate(options?: BitValidationOptions): Promise<boolean>;
80
- triggerValidation(scopeFields?: string[], options?: BitValidationTriggerOptions): void;
82
+ setServerErrors(serverErrors: Record<string, string[] | string>, options?: BitServerErrorOptions): void;
81
83
  reset(): void;
82
84
  transaction<TResult>(callback: () => TResult): TResult;
83
- submit(onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>): Promise<BitSubmitResult>;
85
+ submit(onSuccess: (values: T, dirtyValues?: Partial<T>) => unknown | Promise<unknown>): Promise<BitSubmitResult>;
84
86
  }
85
87
  interface BitStoreLifecycleApi {
86
88
  cleanup(): void;
87
89
  }
88
90
  interface BitStorePersistFeatureApi {
89
- getPersistMetadata(): BitPersistMetadata;
90
91
  restorePersisted(): Promise<boolean>;
91
92
  forceSave(): Promise<void>;
92
93
  clearPersisted(): Promise<void>;
@@ -105,6 +106,7 @@ interface BitStoreArrayFeatureApi<T extends object = Record<string, unknown>> {
105
106
  swapItems<P extends BitArrayPath<T>>(path: P, indexA: number, indexB: number): void;
106
107
  replaceItems<P extends BitArrayPath<T>>(path: P, items: BitArrayItem<BitPathValue<T, P>>[]): void;
107
108
  clearItems<P extends BitArrayPath<T>>(path: P): void;
109
+ getArrayItemIds<P extends BitArrayPath<T>>(path: P, length?: number): string[];
108
110
  }
109
111
  interface BitStoreHistoryFeatureApi {
110
112
  readonly canUndo: boolean;
@@ -135,6 +137,8 @@ interface BitFieldBindingApi<T extends object = Record<string, unknown>> {
135
137
  unregisterField(path: string): void;
136
138
  }
137
139
  interface BitStoreFeatureApi<T extends object = Record<string, unknown>> extends BitStoreLifecycleApi, BitStorePersistFeatureApi, BitStoreRegistrationFeatureApi<T>, BitStoreArrayFeatureApi<T>, BitStoreHistoryFeatureApi {
140
+ validate(options?: BitValidationOptions): Promise<boolean>;
141
+ triggerValidation(scopeFields?: string[], options?: BitValidationTriggerOptions): void;
138
142
  hasValidationsInProgress(scopeFields?: string[]): boolean;
139
143
  resolveMask(path: string): BitMask | undefined;
140
144
  createArrayItemId(path: string, index?: number): string;
@@ -24,4 +24,4 @@ interface DateMaskConfig extends PatternMaskOptions {
24
24
  format?: "DD/MM/YYYY" | "YYYY-MM-DD";
25
25
  }
26
26
 
27
- export type { BitMask as B, CurrencyMaskConfig as C, DateMaskConfig as D, PatternMaskOptions as P, BitMaskName as a, BitBuiltInMaskName as b };
27
+ export type { BitMask as B, CurrencyMaskConfig as C, DateMaskConfig as D, PatternMaskOptions as P, BitBuiltInMaskName as a, BitMaskName as b };