@lehnihon/bit-form 2.0.0 → 2.1.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.
- package/README.md +1 -0
- package/dist/angular/index.cjs +1 -1
- package/dist/angular/index.cjs.map +1 -1
- package/dist/angular/index.d.cts +14 -3
- package/dist/angular/index.d.ts +14 -3
- package/dist/angular/index.js +1 -1
- package/dist/angular/index.js.map +1 -1
- package/dist/{bus-CnqfsZpc.d.cts → bus-uG4EmM-Z.d.cts} +9 -0
- package/dist/{bus-CnqfsZpc.d.ts → bus-uG4EmM-Z.d.ts} +9 -0
- package/dist/chunk-ET36BANJ.js +2 -0
- package/dist/chunk-ET36BANJ.js.map +1 -0
- package/dist/{chunk-4KRTZKIQ.js → chunk-NDFMZWBP.js} +5 -5
- package/dist/chunk-NDFMZWBP.js.map +1 -0
- package/dist/chunk-PCVPCFPX.cjs +2 -0
- package/dist/{chunk-P3XTUPHK.cjs.map → chunk-PCVPCFPX.cjs.map} +1 -1
- package/dist/{chunk-K3DCDRWB.cjs → chunk-VFLQH47Q.cjs} +5 -5
- package/dist/{chunk-K3DCDRWB.cjs.map → chunk-VFLQH47Q.cjs.map} +1 -1
- package/dist/devtools/bridge.cjs +1 -1
- package/dist/devtools/bridge.js +1 -1
- package/dist/devtools/index.cjs +1 -1
- package/dist/devtools/index.js +1 -1
- package/dist/{index-BAOM6INR.d.ts → index-1fP1eJH8.d.ts} +6 -1
- package/dist/{index-BdLuC0wS.d.cts → index-9vxGUNPP.d.cts} +6 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -5
- package/dist/index.d.ts +4 -5
- package/dist/index.js +1 -1
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +38 -5
- package/dist/react/index.d.ts +38 -5
- package/dist/react/index.js +1 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react-native/index.cjs +1 -1
- package/dist/react-native/index.d.cts +4 -4
- package/dist/react-native/index.d.ts +4 -4
- package/dist/react-native/index.js +1 -1
- package/dist/resolvers/joi.d.cts +1 -1
- package/dist/resolvers/joi.d.ts +1 -1
- package/dist/resolvers/yup.d.cts +1 -1
- package/dist/resolvers/yup.d.ts +1 -1
- package/dist/resolvers/zod.d.cts +1 -1
- package/dist/resolvers/zod.d.ts +1 -1
- package/dist/types-C2mpfhp1.d.cts +17 -0
- package/dist/types-C2mpfhp1.d.ts +17 -0
- package/dist/{use-bit-watch-CtdglHvd.d.cts → use-bit-watch-BLCTa7d4.d.cts} +2 -2
- package/dist/{use-bit-watch-B_ket_j5.d.ts → use-bit-watch-iCGj-kYp.d.ts} +2 -2
- package/dist/vue/index.cjs +1 -1
- package/dist/vue/index.d.cts +21 -3
- package/dist/vue/index.d.ts +21 -3
- package/dist/vue/index.js +1 -1
- package/dist/vue/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-4KRTZKIQ.js.map +0 -1
- package/dist/chunk-JEVGTLOM.js +0 -2
- package/dist/chunk-JEVGTLOM.js.map +0 -1
- package/dist/chunk-P3XTUPHK.cjs +0 -2
package/dist/react/index.cjs.map
CHANGED
|
@@ -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"],"names":["isMaskOnlyOptions","value","keys","useBitField","path","configOrOptions","maybeOptions","config","options","fieldState","rawSetValue","setBlur","store","useBitFieldBase","resolvedMask","useMemo","maskOption","displayValue","val","setValue","useCallback","isHidden","isRequired","error","touched","isDirty","isValidating","invalid","visibleError","onChange","onBlur","useBitHistory","useBitStore","lastMeta","useRef","getSnapshot","nextMeta","stableMeta","meta","useSyncExternalStore","undo","redo"],"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 {\n BitFieldDefinition,\n BitFieldOptions,\n BitPath,\n BitPathValue,\n} from \"../core\";\n\nexport interface UseBitFieldMeta {\n error: string | undefined;\n touched: boolean;\n invalid: boolean;\n isValidating: boolean;\n isDirty: boolean;\n isHidden: boolean;\n isRequired: boolean;\n hasError: boolean;\n}\n\nexport interface UseBitFieldBindProps {\n value: string;\n onChange: (e: any) => void;\n onBlur: () => void;\n}\n\nexport interface UseBitFieldResult<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n> {\n // Main handlers and values (flat)\n value: BitPathValue<TForm, P>;\n displayValue: string;\n setValue: (val: any) => void;\n setBlur: () => void;\n onChange: (e: any) => void;\n onBlur: () => void;\n // Props helper for native inputs\n props: UseBitFieldBindProps;\n // Readonly metadata (grouped)\n meta: UseBitFieldMeta;\n}\n\nfunction isMaskOnlyOptions(\n value: BitFieldDefinition<any> | BitFieldOptions | undefined,\n): value is BitFieldOptions {\n if (!value || typeof value !== \"object\") return false;\n const keys = Object.keys(value);\n return keys.length === 1 && keys[0] === \"mask\";\n}\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(\n path: P,\n configOrOptions?: BitFieldDefinition<TForm> | BitFieldOptions,\n maybeOptions?: BitFieldOptions,\n): UseBitFieldResult<TForm, P> {\n const config =\n maybeOptions !== undefined\n ? (configOrOptions as BitFieldDefinition<TForm> | undefined)\n : isMaskOnlyOptions(configOrOptions)\n ? undefined\n : (configOrOptions as BitFieldDefinition<TForm> | undefined);\n\n const options =\n maybeOptions !== undefined\n ? maybeOptions\n : isMaskOnlyOptions(configOrOptions)\n ? configOrOptions\n : undefined;\n\n const {\n fieldState,\n setValue: rawSetValue,\n setBlur,\n store,\n } = useBitFieldBase<BitPathValue<TForm, P>, TForm, P>(path, config);\n\n const resolvedMask = useMemo(() => {\n const maskOption =\n options?.mask ?? store.config.fields?.[path as string]?.mask;\n if (!maskOption) return undefined;\n return typeof maskOption === \"string\"\n ? store.config.masks![maskOption]\n : maskOption;\n }, [options?.mask, store.config.masks, store.config.fields, path]);\n\n const displayValue = useMemo(() => {\n const val = fieldState.value;\n if (val === undefined || val === null || val === \"\") return \"\";\n\n return resolvedMask ? resolvedMask.format(val) : String(val);\n }, [fieldState.value, resolvedMask]);\n\n const setValue = useCallback(\n (val: any) => {\n if (!resolvedMask) {\n rawSetValue(val);\n return;\n }\n\n rawSetValue(resolvedMask.parse(String(val ?? \"\")) as any);\n },\n [resolvedMask, rawSetValue],\n );\n\n const { isHidden, isRequired, value, error, touched, isDirty, isValidating } =\n fieldState;\n\n const invalid = !!(touched && error);\n const visibleError = touched ? error : undefined;\n\n const onChange = useCallback(\n (e: any) => {\n const val = e?.target ? e.target.value : e;\n setValue(val);\n },\n [setValue],\n );\n\n const onBlur = useCallback(() => {\n setBlur();\n }, [setBlur]);\n\n return {\n // Main handlers and values (flat)\n value: value as BitPathValue<TForm, P>,\n displayValue,\n setValue,\n setBlur,\n onChange,\n onBlur,\n // Props helper\n props: {\n value: displayValue,\n onChange,\n onBlur,\n },\n // Metadata (grouped)\n meta: {\n error: visibleError,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError: !!error,\n },\n };\n}\n","import { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { useBitStore } from \"./context\";\n\nexport interface UseBitHistoryResult {\n canUndo: boolean;\n canRedo: boolean;\n historyIndex: number;\n historySize: number;\n undo: () => void;\n redo: () => void;\n}\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n const lastMeta = useRef<{\n canUndo: boolean;\n canRedo: boolean;\n historyIndex: number;\n historySize: number;\n } | null>(null);\n\n const getSnapshot = useCallback(() => {\n const nextMeta = store.getHistoryMetadata();\n\n if (\n lastMeta.current &&\n lastMeta.current.canUndo === nextMeta.canUndo &&\n lastMeta.current.canRedo === nextMeta.canRedo &&\n lastMeta.current.historyIndex === nextMeta.historyIndex &&\n lastMeta.current.historySize === nextMeta.historySize\n ) {\n return lastMeta.current;\n }\n\n const stableMeta = {\n canUndo: nextMeta.canUndo,\n canRedo: nextMeta.canRedo,\n historyIndex: nextMeta.historyIndex,\n historySize: nextMeta.historySize,\n };\n\n lastMeta.current = stableMeta;\n return stableMeta;\n }, [store]);\n\n const meta = useSyncExternalStore(\n store.subscribe.bind(store),\n getSnapshot,\n getSnapshot,\n );\n\n const undo = useCallback(() => {\n store.undo();\n }, [store]);\n\n const redo = useCallback(() => {\n store.redo();\n }, [store]);\n\n return {\n ...meta,\n undo,\n redo,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/react/index.cjs","../../src/react/use-bit-field.ts","../../src/react/use-bit-history.ts","../../src/react/use-bit-upload.ts"],"names":["isMaskOnlyOptions","value","keys","useBitField","path","configOrOptions","maybeOptions","config","options","fieldState","rawSetValue","setBlur","store","useBitFieldBase","resolvedMask","useMemo","maskOption","displayValue","val","setValue","useCallback","isHidden","isRequired","error","touched","isDirty","isValidating","invalid","visibleError","onChange","e","onBlur","useBitHistory","useBitStore","lastMeta","useRef","getSnapshot","nextMeta","stableMeta","meta","useSyncExternalStore","undo","redo","useBitUpload","fieldPath","uploadFn","deleteFile","field","uploadKeyRef","upload","file","result","message","remove","uploadKey"],"mappings":"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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 {\n BitFieldDefinition,\n BitFieldOptions,\n BitPath,\n BitPathValue,\n} from \"../core\";\n\nexport interface UseBitFieldMeta {\n error: string | undefined;\n touched: boolean;\n invalid: boolean;\n isValidating: boolean;\n isDirty: boolean;\n isHidden: boolean;\n isRequired: boolean;\n hasError: boolean;\n}\n\nexport interface UseBitFieldBindProps {\n value: string;\n onChange: (e: any) => void;\n onBlur: () => void;\n}\n\nexport interface UseBitFieldResult<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n> {\n // Main handlers and values (flat)\n value: BitPathValue<TForm, P>;\n displayValue: string;\n setValue: (val: any) => void;\n setBlur: () => void;\n onChange: (e: any) => void;\n onBlur: () => void;\n // Props helper for native inputs\n props: UseBitFieldBindProps;\n // Readonly metadata (grouped)\n meta: UseBitFieldMeta;\n}\n\nfunction isMaskOnlyOptions(\n value: BitFieldDefinition<any> | BitFieldOptions | undefined,\n): value is BitFieldOptions {\n if (!value || typeof value !== \"object\") return false;\n const keys = Object.keys(value);\n return keys.length === 1 && keys[0] === \"mask\";\n}\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(\n path: P,\n configOrOptions?: BitFieldDefinition<TForm> | BitFieldOptions,\n maybeOptions?: BitFieldOptions,\n): UseBitFieldResult<TForm, P> {\n const config =\n maybeOptions !== undefined\n ? (configOrOptions as BitFieldDefinition<TForm> | undefined)\n : isMaskOnlyOptions(configOrOptions)\n ? undefined\n : (configOrOptions as BitFieldDefinition<TForm> | undefined);\n\n const options =\n maybeOptions !== undefined\n ? maybeOptions\n : isMaskOnlyOptions(configOrOptions)\n ? configOrOptions\n : undefined;\n\n const {\n fieldState,\n setValue: rawSetValue,\n setBlur,\n store,\n } = useBitFieldBase<BitPathValue<TForm, P>, TForm, P>(path, config);\n\n const resolvedMask = useMemo(() => {\n const maskOption =\n options?.mask ?? store.config.fields?.[path as string]?.mask;\n if (!maskOption) return undefined;\n return typeof maskOption === \"string\"\n ? store.config.masks![maskOption]\n : maskOption;\n }, [options?.mask, store.config.masks, store.config.fields, path]);\n\n const displayValue = useMemo(() => {\n const val = fieldState.value;\n if (val === undefined || val === null || val === \"\") return \"\";\n\n return resolvedMask ? resolvedMask.format(val) : String(val);\n }, [fieldState.value, resolvedMask]);\n\n const setValue = useCallback(\n (val: any) => {\n if (!resolvedMask) {\n rawSetValue(val);\n return;\n }\n\n rawSetValue(resolvedMask.parse(String(val ?? \"\")) as any);\n },\n [resolvedMask, rawSetValue],\n );\n\n const { isHidden, isRequired, value, error, touched, isDirty, isValidating } =\n fieldState;\n\n const invalid = !!(touched && error);\n const visibleError = touched ? error : undefined;\n\n const onChange = useCallback(\n (e: any) => {\n const val = e?.target ? e.target.value : e;\n setValue(val);\n },\n [setValue],\n );\n\n const onBlur = useCallback(() => {\n setBlur();\n }, [setBlur]);\n\n return {\n // Main handlers and values (flat)\n value: value as BitPathValue<TForm, P>,\n displayValue,\n setValue,\n setBlur,\n onChange,\n onBlur,\n // Props helper\n props: {\n value: displayValue,\n onChange,\n onBlur,\n },\n // Metadata (grouped)\n meta: {\n error: visibleError,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError: !!error,\n },\n };\n}\n","import { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { useBitStore } from \"./context\";\n\nexport interface UseBitHistoryResult {\n canUndo: boolean;\n canRedo: boolean;\n historyIndex: number;\n historySize: number;\n undo: () => void;\n redo: () => void;\n}\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n const lastMeta = useRef<{\n canUndo: boolean;\n canRedo: boolean;\n historyIndex: number;\n historySize: number;\n } | null>(null);\n\n const getSnapshot = useCallback(() => {\n const nextMeta = store.getHistoryMetadata();\n\n if (\n lastMeta.current &&\n lastMeta.current.canUndo === nextMeta.canUndo &&\n lastMeta.current.canRedo === nextMeta.canRedo &&\n lastMeta.current.historyIndex === nextMeta.historyIndex &&\n lastMeta.current.historySize === nextMeta.historySize\n ) {\n return lastMeta.current;\n }\n\n const stableMeta = {\n canUndo: nextMeta.canUndo,\n canRedo: nextMeta.canRedo,\n historyIndex: nextMeta.historyIndex,\n historySize: nextMeta.historySize,\n };\n\n lastMeta.current = stableMeta;\n return stableMeta;\n }, [store]);\n\n const meta = useSyncExternalStore(\n store.subscribe.bind(store),\n getSnapshot,\n getSnapshot,\n );\n\n const undo = useCallback(() => {\n store.undo();\n }, [store]);\n\n const redo = useCallback(() => {\n store.redo();\n }, [store]);\n\n return {\n ...meta,\n undo,\n redo,\n };\n}\n","/**\n * React Hook for File Upload Integration\n *\n * Minimal upload API integrated with global field validation lifecycle.\n *\n * @example\n * ```typescript\n * const avatar = useBitUpload(\"avatar\", uploadFn);\n *\n * return (\n * <>\n * <input\n * type=\"file\"\n * onChange={(e) => avatar.upload(e.target.files?.[0])}\n * disabled={avatar.isValidating}\n * />\n * {avatar.error && <Error>{avatar.error}</Error>}\n * </>\n * );\n * ```\n */\n\nimport { useCallback, useRef } from \"react\";\nimport { useBitField } from \"./use-bit-field\";\nimport { useBitStore } from \"./context\";\nimport { BitUploadFn, BitDeleteUploadFn } from \"../core/upload/types\";\n\nexport interface UseBitUploadResult {\n value: string | File | null;\n setValue: (value: string | File | null) => void;\n error?: string;\n isValidating: boolean;\n upload: (file: File | null | undefined) => Promise<void>;\n remove: () => Promise<void>;\n}\n\nexport function useBitUpload(\n fieldPath: string,\n uploadFn: BitUploadFn,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n const uploadKeyRef = useRef<string | null>(null);\n\n const upload = useCallback(\n async (file: File | null | undefined) => {\n if (!file) return;\n\n store.beginFieldValidation(fieldPath);\n await store.clearFieldAsyncError(fieldPath);\n\n try {\n const result = await uploadFn(file);\n\n field.setValue(result.url);\n uploadKeyRef.current = result.key;\n await store.clearFieldAsyncError(fieldPath);\n } catch (error) {\n const message =\n error instanceof Error ? error.message : \"Upload failed\";\n await store.setFieldAsyncError(fieldPath, message);\n } finally {\n store.endFieldValidation(fieldPath);\n }\n },\n [uploadFn, field, fieldPath, store],\n );\n\n const remove = useCallback(async () => {\n const uploadKey = uploadKeyRef.current;\n\n if (uploadKey && deleteFile) {\n try {\n await deleteFile(uploadKey);\n } catch (error) {\n const message =\n error instanceof Error ? error.message : \"Delete failed\";\n await store.setFieldAsyncError(fieldPath, message);\n return;\n }\n }\n\n field.setValue(null);\n uploadKeyRef.current = null;\n await store.clearFieldAsyncError(fieldPath);\n }, [deleteFile, field, fieldPath, store]);\n\n return {\n value: field.value,\n setValue: field.setValue,\n error: field.meta?.error,\n isValidating: field.meta?.isValidating || false,\n upload,\n remove,\n };\n}\n"]}
|
package/dist/react/index.d.cts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
export { B as BitFormProvider, U as UseBitStepsResult, u as useBitArray, a as useBitForm, b as useBitScope, c as useBitSteps, d as useBitStore, e as useBitWatch } from '../use-bit-watch-
|
|
2
|
-
import { b as BitPath, c as BitPathValue, k as BitFieldDefinition, l as BitFieldOptions } from '../bus-
|
|
3
|
-
export { S as ScopeStatus, V as ValidateScopeResult } from '../bus-
|
|
1
|
+
export { B as BitFormProvider, U as UseBitStepsResult, u as useBitArray, a as useBitForm, b as useBitScope, c as useBitSteps, d as useBitStore, e as useBitWatch } from '../use-bit-watch-BLCTa7d4.cjs';
|
|
2
|
+
import { b as BitPath, c as BitPathValue, k as BitFieldDefinition, l as BitFieldOptions } from '../bus-uG4EmM-Z.cjs';
|
|
3
|
+
export { S as ScopeStatus, V as ValidateScopeResult } from '../bus-uG4EmM-Z.cjs';
|
|
4
|
+
import { a as BitUploadFn, B as BitDeleteUploadFn } from '../types-C2mpfhp1.cjs';
|
|
4
5
|
import 'react/jsx-runtime';
|
|
5
6
|
import 'react';
|
|
6
|
-
import '../index-
|
|
7
|
+
import '../index-9vxGUNPP.cjs';
|
|
7
8
|
|
|
8
9
|
interface UseBitFieldMeta {
|
|
9
10
|
error: string | undefined;
|
|
@@ -42,4 +43,36 @@ interface UseBitHistoryResult {
|
|
|
42
43
|
}
|
|
43
44
|
declare function useBitHistory<T extends object = any>(): UseBitHistoryResult;
|
|
44
45
|
|
|
45
|
-
|
|
46
|
+
/**
|
|
47
|
+
* React Hook for File Upload Integration
|
|
48
|
+
*
|
|
49
|
+
* Minimal upload API integrated with global field validation lifecycle.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* const avatar = useBitUpload("avatar", uploadFn);
|
|
54
|
+
*
|
|
55
|
+
* return (
|
|
56
|
+
* <>
|
|
57
|
+
* <input
|
|
58
|
+
* type="file"
|
|
59
|
+
* onChange={(e) => avatar.upload(e.target.files?.[0])}
|
|
60
|
+
* disabled={avatar.isValidating}
|
|
61
|
+
* />
|
|
62
|
+
* {avatar.error && <Error>{avatar.error}</Error>}
|
|
63
|
+
* </>
|
|
64
|
+
* );
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
|
|
68
|
+
interface UseBitUploadResult {
|
|
69
|
+
value: string | File | null;
|
|
70
|
+
setValue: (value: string | File | null) => void;
|
|
71
|
+
error?: string;
|
|
72
|
+
isValidating: boolean;
|
|
73
|
+
upload: (file: File | null | undefined) => Promise<void>;
|
|
74
|
+
remove: () => Promise<void>;
|
|
75
|
+
}
|
|
76
|
+
declare function useBitUpload(fieldPath: string, uploadFn: BitUploadFn, deleteFile?: BitDeleteUploadFn): UseBitUploadResult;
|
|
77
|
+
|
|
78
|
+
export { type UseBitFieldBindProps, type UseBitFieldMeta, type UseBitFieldResult, type UseBitUploadResult, useBitField, useBitHistory, useBitUpload };
|
package/dist/react/index.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
export { B as BitFormProvider, U as UseBitStepsResult, u as useBitArray, a as useBitForm, b as useBitScope, c as useBitSteps, d as useBitStore, e as useBitWatch } from '../use-bit-watch-
|
|
2
|
-
import { b as BitPath, c as BitPathValue, k as BitFieldDefinition, l as BitFieldOptions } from '../bus-
|
|
3
|
-
export { S as ScopeStatus, V as ValidateScopeResult } from '../bus-
|
|
1
|
+
export { B as BitFormProvider, U as UseBitStepsResult, u as useBitArray, a as useBitForm, b as useBitScope, c as useBitSteps, d as useBitStore, e as useBitWatch } from '../use-bit-watch-iCGj-kYp.js';
|
|
2
|
+
import { b as BitPath, c as BitPathValue, k as BitFieldDefinition, l as BitFieldOptions } from '../bus-uG4EmM-Z.js';
|
|
3
|
+
export { S as ScopeStatus, V as ValidateScopeResult } from '../bus-uG4EmM-Z.js';
|
|
4
|
+
import { a as BitUploadFn, B as BitDeleteUploadFn } from '../types-C2mpfhp1.js';
|
|
4
5
|
import 'react/jsx-runtime';
|
|
5
6
|
import 'react';
|
|
6
|
-
import '../index-
|
|
7
|
+
import '../index-1fP1eJH8.js';
|
|
7
8
|
|
|
8
9
|
interface UseBitFieldMeta {
|
|
9
10
|
error: string | undefined;
|
|
@@ -42,4 +43,36 @@ interface UseBitHistoryResult {
|
|
|
42
43
|
}
|
|
43
44
|
declare function useBitHistory<T extends object = any>(): UseBitHistoryResult;
|
|
44
45
|
|
|
45
|
-
|
|
46
|
+
/**
|
|
47
|
+
* React Hook for File Upload Integration
|
|
48
|
+
*
|
|
49
|
+
* Minimal upload API integrated with global field validation lifecycle.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* const avatar = useBitUpload("avatar", uploadFn);
|
|
54
|
+
*
|
|
55
|
+
* return (
|
|
56
|
+
* <>
|
|
57
|
+
* <input
|
|
58
|
+
* type="file"
|
|
59
|
+
* onChange={(e) => avatar.upload(e.target.files?.[0])}
|
|
60
|
+
* disabled={avatar.isValidating}
|
|
61
|
+
* />
|
|
62
|
+
* {avatar.error && <Error>{avatar.error}</Error>}
|
|
63
|
+
* </>
|
|
64
|
+
* );
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
|
|
68
|
+
interface UseBitUploadResult {
|
|
69
|
+
value: string | File | null;
|
|
70
|
+
setValue: (value: string | File | null) => void;
|
|
71
|
+
error?: string;
|
|
72
|
+
isValidating: boolean;
|
|
73
|
+
upload: (file: File | null | undefined) => Promise<void>;
|
|
74
|
+
remove: () => Promise<void>;
|
|
75
|
+
}
|
|
76
|
+
declare function useBitUpload(fieldPath: string, uploadFn: BitUploadFn, deleteFile?: BitDeleteUploadFn): UseBitUploadResult;
|
|
77
|
+
|
|
78
|
+
export { type UseBitFieldBindProps, type UseBitFieldMeta, type UseBitFieldResult, type UseBitUploadResult, useBitField, useBitHistory, useBitUpload };
|
package/dist/react/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as
|
|
1
|
+
import{a as w,b as m,c as H,d as v,e as z,f as A,g as C,h as I}from"../chunk-ET36BANJ.js";import"../chunk-NDFMZWBP.js";import{useMemo as U,useCallback as y}from"react";function V(e){if(!e||typeof e!="object")return!1;let t=Object.keys(e);return t.length===1&&t[0]==="mask"}function F(e,t,a){let n=a!==void 0?t:V(t)?void 0:t,s=a!==void 0?a:V(t)?t:void 0,{fieldState:u,setValue:i,setBlur:d,store:l}=v(e,n),r=U(()=>{let o=s?.mask??l.config.fields?.[e]?.mask;if(o)return typeof o=="string"?l.config.masks[o]:o},[s?.mask,l.config.masks,l.config.fields,e]),c=U(()=>{let o=u.value;return o==null||o===""?"":r?r.format(o):String(o)},[u.value,r]),p=y(o=>{if(!r){i(o);return}i(r.parse(String(o??"")))},[r,i]),{isHidden:S,isRequired:R,value:T,error:f,touched:B,isDirty:k,isValidating:P}=u,E=!!(B&&f),D=B?f:void 0,b=y(o=>{let M=o?.target?o.target.value:o;p(M)},[p]),g=y(()=>{d()},[d]);return{value:T,displayValue:c,setValue:p,setBlur:d,onChange:b,onBlur:g,props:{value:c,onChange:b,onBlur:g},meta:{error:D,touched:B,invalid:E,isDirty:k,isValidating:P,isHidden:S,isRequired:R,hasError:!!f}}}import{useCallback as x,useRef as j,useSyncExternalStore as q}from"react";function K(){let e=m(),t=j(null),a=x(()=>{let i=e.getHistoryMetadata();if(t.current&&t.current.canUndo===i.canUndo&&t.current.canRedo===i.canRedo&&t.current.historyIndex===i.historyIndex&&t.current.historySize===i.historySize)return t.current;let d={canUndo:i.canUndo,canRedo:i.canRedo,historyIndex:i.historyIndex,historySize:i.historySize};return t.current=d,d},[e]),n=q(e.subscribe.bind(e),a,a),s=x(()=>{e.undo()},[e]),u=x(()=>{e.redo()},[e]);return{...n,undo:s,redo:u}}import{useCallback as h,useRef as W}from"react";function G(e,t,a){let n=m(),s=F(e),u=W(null),i=h(async l=>{if(l){n.beginFieldValidation(e),await n.clearFieldAsyncError(e);try{let r=await t(l);s.setValue(r.url),u.current=r.key,await n.clearFieldAsyncError(e)}catch(r){let c=r instanceof Error?r.message:"Upload failed";await n.setFieldAsyncError(e,c)}finally{n.endFieldValidation(e)}}},[t,s,e,n]),d=h(async()=>{let l=u.current;if(l&&a)try{await a(l)}catch(r){let c=r instanceof Error?r.message:"Delete failed";await n.setFieldAsyncError(e,c);return}s.setValue(null),u.current=null,await n.clearFieldAsyncError(e)},[a,s,e,n]);return{value:s.value,setValue:s.setValue,error:s.meta?.error,isValidating:s.meta?.isValidating||!1,upload:i,remove:d}}export{w as BitFormProvider,z as useBitArray,F as useBitField,H as useBitForm,K as useBitHistory,A as useBitScope,C as useBitSteps,m as useBitStore,G as useBitUpload,I as useBitWatch};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/react/use-bit-field.ts","../../src/react/use-bit-history.ts"],"sourcesContent":["import { useMemo, useCallback } from \"react\";\nimport { useBitFieldBase } from \"./use-bit-field-base\";\nimport {\n BitFieldDefinition,\n BitFieldOptions,\n BitPath,\n BitPathValue,\n} from \"../core\";\n\nexport interface UseBitFieldMeta {\n error: string | undefined;\n touched: boolean;\n invalid: boolean;\n isValidating: boolean;\n isDirty: boolean;\n isHidden: boolean;\n isRequired: boolean;\n hasError: boolean;\n}\n\nexport interface UseBitFieldBindProps {\n value: string;\n onChange: (e: any) => void;\n onBlur: () => void;\n}\n\nexport interface UseBitFieldResult<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n> {\n // Main handlers and values (flat)\n value: BitPathValue<TForm, P>;\n displayValue: string;\n setValue: (val: any) => void;\n setBlur: () => void;\n onChange: (e: any) => void;\n onBlur: () => void;\n // Props helper for native inputs\n props: UseBitFieldBindProps;\n // Readonly metadata (grouped)\n meta: UseBitFieldMeta;\n}\n\nfunction isMaskOnlyOptions(\n value: BitFieldDefinition<any> | BitFieldOptions | undefined,\n): value is BitFieldOptions {\n if (!value || typeof value !== \"object\") return false;\n const keys = Object.keys(value);\n return keys.length === 1 && keys[0] === \"mask\";\n}\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(\n path: P,\n configOrOptions?: BitFieldDefinition<TForm> | BitFieldOptions,\n maybeOptions?: BitFieldOptions,\n): UseBitFieldResult<TForm, P> {\n const config =\n maybeOptions !== undefined\n ? (configOrOptions as BitFieldDefinition<TForm> | undefined)\n : isMaskOnlyOptions(configOrOptions)\n ? undefined\n : (configOrOptions as BitFieldDefinition<TForm> | undefined);\n\n const options =\n maybeOptions !== undefined\n ? maybeOptions\n : isMaskOnlyOptions(configOrOptions)\n ? configOrOptions\n : undefined;\n\n const {\n fieldState,\n setValue: rawSetValue,\n setBlur,\n store,\n } = useBitFieldBase<BitPathValue<TForm, P>, TForm, P>(path, config);\n\n const resolvedMask = useMemo(() => {\n const maskOption =\n options?.mask ?? store.config.fields?.[path as string]?.mask;\n if (!maskOption) return undefined;\n return typeof maskOption === \"string\"\n ? store.config.masks![maskOption]\n : maskOption;\n }, [options?.mask, store.config.masks, store.config.fields, path]);\n\n const displayValue = useMemo(() => {\n const val = fieldState.value;\n if (val === undefined || val === null || val === \"\") return \"\";\n\n return resolvedMask ? resolvedMask.format(val) : String(val);\n }, [fieldState.value, resolvedMask]);\n\n const setValue = useCallback(\n (val: any) => {\n if (!resolvedMask) {\n rawSetValue(val);\n return;\n }\n\n rawSetValue(resolvedMask.parse(String(val ?? \"\")) as any);\n },\n [resolvedMask, rawSetValue],\n );\n\n const { isHidden, isRequired, value, error, touched, isDirty, isValidating } =\n fieldState;\n\n const invalid = !!(touched && error);\n const visibleError = touched ? error : undefined;\n\n const onChange = useCallback(\n (e: any) => {\n const val = e?.target ? e.target.value : e;\n setValue(val);\n },\n [setValue],\n );\n\n const onBlur = useCallback(() => {\n setBlur();\n }, [setBlur]);\n\n return {\n // Main handlers and values (flat)\n value: value as BitPathValue<TForm, P>,\n displayValue,\n setValue,\n setBlur,\n onChange,\n onBlur,\n // Props helper\n props: {\n value: displayValue,\n onChange,\n onBlur,\n },\n // Metadata (grouped)\n meta: {\n error: visibleError,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError: !!error,\n },\n };\n}\n","import { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { useBitStore } from \"./context\";\n\nexport interface UseBitHistoryResult {\n canUndo: boolean;\n canRedo: boolean;\n historyIndex: number;\n historySize: number;\n undo: () => void;\n redo: () => void;\n}\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n const lastMeta = useRef<{\n canUndo: boolean;\n canRedo: boolean;\n historyIndex: number;\n historySize: number;\n } | null>(null);\n\n const getSnapshot = useCallback(() => {\n const nextMeta = store.getHistoryMetadata();\n\n if (\n lastMeta.current &&\n lastMeta.current.canUndo === nextMeta.canUndo &&\n lastMeta.current.canRedo === nextMeta.canRedo &&\n lastMeta.current.historyIndex === nextMeta.historyIndex &&\n lastMeta.current.historySize === nextMeta.historySize\n ) {\n return lastMeta.current;\n }\n\n const stableMeta = {\n canUndo: nextMeta.canUndo,\n canRedo: nextMeta.canRedo,\n historyIndex: nextMeta.historyIndex,\n historySize: nextMeta.historySize,\n };\n\n lastMeta.current = stableMeta;\n return stableMeta;\n }, [store]);\n\n const meta = useSyncExternalStore(\n store.subscribe.bind(store),\n getSnapshot,\n getSnapshot,\n );\n\n const undo = useCallback(() => {\n store.undo();\n }, [store]);\n\n const redo = useCallback(() => {\n store.redo();\n }, [store]);\n\n return {\n ...meta,\n undo,\n redo,\n };\n}\n"],"mappings":"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","names":["useMemo","useCallback","isMaskOnlyOptions","value","keys","useBitField","path","configOrOptions","maybeOptions","config","options","fieldState","rawSetValue","setBlur","store","useBitFieldBase","resolvedMask","useMemo","maskOption","displayValue","val","setValue","useCallback","isHidden","isRequired","error","touched","isDirty","isValidating","invalid","visibleError","onChange","onBlur","useCallback","useRef","useSyncExternalStore","useBitHistory","store","useBitStore","lastMeta","useRef","getSnapshot","useCallback","nextMeta","stableMeta","meta","useSyncExternalStore","undo","redo"]}
|
|
1
|
+
{"version":3,"sources":["../../src/react/use-bit-field.ts","../../src/react/use-bit-history.ts","../../src/react/use-bit-upload.ts"],"sourcesContent":["import { useMemo, useCallback } from \"react\";\nimport { useBitFieldBase } from \"./use-bit-field-base\";\nimport {\n BitFieldDefinition,\n BitFieldOptions,\n BitPath,\n BitPathValue,\n} from \"../core\";\n\nexport interface UseBitFieldMeta {\n error: string | undefined;\n touched: boolean;\n invalid: boolean;\n isValidating: boolean;\n isDirty: boolean;\n isHidden: boolean;\n isRequired: boolean;\n hasError: boolean;\n}\n\nexport interface UseBitFieldBindProps {\n value: string;\n onChange: (e: any) => void;\n onBlur: () => void;\n}\n\nexport interface UseBitFieldResult<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n> {\n // Main handlers and values (flat)\n value: BitPathValue<TForm, P>;\n displayValue: string;\n setValue: (val: any) => void;\n setBlur: () => void;\n onChange: (e: any) => void;\n onBlur: () => void;\n // Props helper for native inputs\n props: UseBitFieldBindProps;\n // Readonly metadata (grouped)\n meta: UseBitFieldMeta;\n}\n\nfunction isMaskOnlyOptions(\n value: BitFieldDefinition<any> | BitFieldOptions | undefined,\n): value is BitFieldOptions {\n if (!value || typeof value !== \"object\") return false;\n const keys = Object.keys(value);\n return keys.length === 1 && keys[0] === \"mask\";\n}\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(\n path: P,\n configOrOptions?: BitFieldDefinition<TForm> | BitFieldOptions,\n maybeOptions?: BitFieldOptions,\n): UseBitFieldResult<TForm, P> {\n const config =\n maybeOptions !== undefined\n ? (configOrOptions as BitFieldDefinition<TForm> | undefined)\n : isMaskOnlyOptions(configOrOptions)\n ? undefined\n : (configOrOptions as BitFieldDefinition<TForm> | undefined);\n\n const options =\n maybeOptions !== undefined\n ? maybeOptions\n : isMaskOnlyOptions(configOrOptions)\n ? configOrOptions\n : undefined;\n\n const {\n fieldState,\n setValue: rawSetValue,\n setBlur,\n store,\n } = useBitFieldBase<BitPathValue<TForm, P>, TForm, P>(path, config);\n\n const resolvedMask = useMemo(() => {\n const maskOption =\n options?.mask ?? store.config.fields?.[path as string]?.mask;\n if (!maskOption) return undefined;\n return typeof maskOption === \"string\"\n ? store.config.masks![maskOption]\n : maskOption;\n }, [options?.mask, store.config.masks, store.config.fields, path]);\n\n const displayValue = useMemo(() => {\n const val = fieldState.value;\n if (val === undefined || val === null || val === \"\") return \"\";\n\n return resolvedMask ? resolvedMask.format(val) : String(val);\n }, [fieldState.value, resolvedMask]);\n\n const setValue = useCallback(\n (val: any) => {\n if (!resolvedMask) {\n rawSetValue(val);\n return;\n }\n\n rawSetValue(resolvedMask.parse(String(val ?? \"\")) as any);\n },\n [resolvedMask, rawSetValue],\n );\n\n const { isHidden, isRequired, value, error, touched, isDirty, isValidating } =\n fieldState;\n\n const invalid = !!(touched && error);\n const visibleError = touched ? error : undefined;\n\n const onChange = useCallback(\n (e: any) => {\n const val = e?.target ? e.target.value : e;\n setValue(val);\n },\n [setValue],\n );\n\n const onBlur = useCallback(() => {\n setBlur();\n }, [setBlur]);\n\n return {\n // Main handlers and values (flat)\n value: value as BitPathValue<TForm, P>,\n displayValue,\n setValue,\n setBlur,\n onChange,\n onBlur,\n // Props helper\n props: {\n value: displayValue,\n onChange,\n onBlur,\n },\n // Metadata (grouped)\n meta: {\n error: visibleError,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError: !!error,\n },\n };\n}\n","import { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { useBitStore } from \"./context\";\n\nexport interface UseBitHistoryResult {\n canUndo: boolean;\n canRedo: boolean;\n historyIndex: number;\n historySize: number;\n undo: () => void;\n redo: () => void;\n}\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n const lastMeta = useRef<{\n canUndo: boolean;\n canRedo: boolean;\n historyIndex: number;\n historySize: number;\n } | null>(null);\n\n const getSnapshot = useCallback(() => {\n const nextMeta = store.getHistoryMetadata();\n\n if (\n lastMeta.current &&\n lastMeta.current.canUndo === nextMeta.canUndo &&\n lastMeta.current.canRedo === nextMeta.canRedo &&\n lastMeta.current.historyIndex === nextMeta.historyIndex &&\n lastMeta.current.historySize === nextMeta.historySize\n ) {\n return lastMeta.current;\n }\n\n const stableMeta = {\n canUndo: nextMeta.canUndo,\n canRedo: nextMeta.canRedo,\n historyIndex: nextMeta.historyIndex,\n historySize: nextMeta.historySize,\n };\n\n lastMeta.current = stableMeta;\n return stableMeta;\n }, [store]);\n\n const meta = useSyncExternalStore(\n store.subscribe.bind(store),\n getSnapshot,\n getSnapshot,\n );\n\n const undo = useCallback(() => {\n store.undo();\n }, [store]);\n\n const redo = useCallback(() => {\n store.redo();\n }, [store]);\n\n return {\n ...meta,\n undo,\n redo,\n };\n}\n","/**\n * React Hook for File Upload Integration\n *\n * Minimal upload API integrated with global field validation lifecycle.\n *\n * @example\n * ```typescript\n * const avatar = useBitUpload(\"avatar\", uploadFn);\n *\n * return (\n * <>\n * <input\n * type=\"file\"\n * onChange={(e) => avatar.upload(e.target.files?.[0])}\n * disabled={avatar.isValidating}\n * />\n * {avatar.error && <Error>{avatar.error}</Error>}\n * </>\n * );\n * ```\n */\n\nimport { useCallback, useRef } from \"react\";\nimport { useBitField } from \"./use-bit-field\";\nimport { useBitStore } from \"./context\";\nimport { BitUploadFn, BitDeleteUploadFn } from \"../core/upload/types\";\n\nexport interface UseBitUploadResult {\n value: string | File | null;\n setValue: (value: string | File | null) => void;\n error?: string;\n isValidating: boolean;\n upload: (file: File | null | undefined) => Promise<void>;\n remove: () => Promise<void>;\n}\n\nexport function useBitUpload(\n fieldPath: string,\n uploadFn: BitUploadFn,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n const uploadKeyRef = useRef<string | null>(null);\n\n const upload = useCallback(\n async (file: File | null | undefined) => {\n if (!file) return;\n\n store.beginFieldValidation(fieldPath);\n await store.clearFieldAsyncError(fieldPath);\n\n try {\n const result = await uploadFn(file);\n\n field.setValue(result.url);\n uploadKeyRef.current = result.key;\n await store.clearFieldAsyncError(fieldPath);\n } catch (error) {\n const message =\n error instanceof Error ? error.message : \"Upload failed\";\n await store.setFieldAsyncError(fieldPath, message);\n } finally {\n store.endFieldValidation(fieldPath);\n }\n },\n [uploadFn, field, fieldPath, store],\n );\n\n const remove = useCallback(async () => {\n const uploadKey = uploadKeyRef.current;\n\n if (uploadKey && deleteFile) {\n try {\n await deleteFile(uploadKey);\n } catch (error) {\n const message =\n error instanceof Error ? error.message : \"Delete failed\";\n await store.setFieldAsyncError(fieldPath, message);\n return;\n }\n }\n\n field.setValue(null);\n uploadKeyRef.current = null;\n await store.clearFieldAsyncError(fieldPath);\n }, [deleteFile, field, fieldPath, store]);\n\n return {\n value: field.value,\n setValue: field.setValue,\n error: field.meta?.error,\n isValidating: field.meta?.isValidating || false,\n upload,\n remove,\n };\n}\n"],"mappings":"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","names":["useMemo","useCallback","isMaskOnlyOptions","value","keys","useBitField","path","configOrOptions","maybeOptions","config","options","fieldState","rawSetValue","setBlur","store","useBitFieldBase","resolvedMask","useMemo","maskOption","displayValue","val","setValue","useCallback","isHidden","isRequired","error","touched","isDirty","isValidating","invalid","visibleError","onChange","e","onBlur","useCallback","useRef","useSyncExternalStore","useBitHistory","store","useBitStore","lastMeta","useRef","getSnapshot","useCallback","nextMeta","stableMeta","meta","useSyncExternalStore","undo","redo","useCallback","useRef","useBitUpload","fieldPath","uploadFn","deleteFile","store","useBitStore","field","useBitField","uploadKeyRef","useRef","upload","useCallback","file","result","error","message","remove","uploadKey"]}
|
|
@@ -1,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
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkPCVPCFPXcjs = require('../chunk-PCVPCFPX.cjs');require('../chunk-VFLQH47Q.cjs');var _react = require('react');function x(o){if(!o||typeof o!="object")return!1;let t=Object.keys(o);return t.length===1&&t[0]==="mask"}function E(o,t,s){let P=s!==void 0?t:x(t)?void 0:t,B=s!==void 0?s:x(t)?t:void 0,{fieldState:a,setValue:n,setBlur:d,store:r}=_chunkPCVPCFPXcjs.d.call(void 0, o,P),i=_react.useMemo.call(void 0, ()=>{let e=_nullishCoalesce(_optionalChain([B, 'optionalAccess', _ => _.mask]), () => (_optionalChain([r, 'access', _2 => _2.config, 'access', _3 => _3.fields, 'optionalAccess', _4 => _4[o], 'optionalAccess', _5 => _5.mask])));if(e)return typeof e=="string"?r.config.masks[e]:e},[_optionalChain([B, 'optionalAccess', _6 => _6.mask]),r.config.masks,r.config.fields,o]),m=_react.useMemo.call(void 0, ()=>{let e=a.value;return e==null||e===""?"":i?i.format(e):String(e)},[a.value,i]),F=_react.useCallback.call(void 0, e=>{if(!i){n(e);return}n(i.parse(String(_nullishCoalesce(e, () => ("")))))},[i,n]),g=_react.useCallback.call(void 0, e=>{if(!i){n(e);return}n(i.parse(String(_nullishCoalesce(e, () => ("")))))},[i,n]),{isHidden:h,isRequired:y,value:T,error:l,touched:u,isDirty:V,isValidating:b}=a,k=!!(u&&l),S=u?l:void 0,p=_react.useCallback.call(void 0, ()=>{d()},[d]);return{field:{value:T,displayValue:m,setValue:g,setBlur:d,onChangeText:F,onBlur:p},meta:{error:S,touched:u,invalid:k,isValidating:b,isDirty:V,isHidden:h,isRequired:y,hasError:!!l},props:{value:m,onChangeText:F,onBlur:p}}}exports.BitFormProvider = _chunkPCVPCFPXcjs.a; exports.useBitArray = _chunkPCVPCFPXcjs.e; exports.useBitField = E; exports.useBitForm = _chunkPCVPCFPXcjs.c; exports.useBitScope = _chunkPCVPCFPXcjs.f; exports.useBitSteps = _chunkPCVPCFPXcjs.g; exports.useBitStore = _chunkPCVPCFPXcjs.b; exports.useBitWatch = _chunkPCVPCFPXcjs.h;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { B as BitFormProvider, u as useBitArray, a as useBitForm, b as useBitScope, c as useBitSteps, d as useBitStore, e as useBitWatch } from '../use-bit-watch-
|
|
2
|
-
import { b as BitPath, c as BitPathValue, k as BitFieldDefinition, l as BitFieldOptions } from '../bus-
|
|
3
|
-
export { S as ScopeStatus, V as ValidateScopeResult } from '../bus-
|
|
1
|
+
export { B as BitFormProvider, u as useBitArray, a as useBitForm, b as useBitScope, c as useBitSteps, d as useBitStore, e as useBitWatch } from '../use-bit-watch-BLCTa7d4.cjs';
|
|
2
|
+
import { b as BitPath, c as BitPathValue, k as BitFieldDefinition, l as BitFieldOptions } from '../bus-uG4EmM-Z.cjs';
|
|
3
|
+
export { S as ScopeStatus, V as ValidateScopeResult } from '../bus-uG4EmM-Z.cjs';
|
|
4
4
|
import 'react/jsx-runtime';
|
|
5
5
|
import 'react';
|
|
6
|
-
import '../index-
|
|
6
|
+
import '../index-9vxGUNPP.cjs';
|
|
7
7
|
|
|
8
8
|
interface UseBitFieldNativeMeta {
|
|
9
9
|
error: string | undefined;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { B as BitFormProvider, u as useBitArray, a as useBitForm, b as useBitScope, c as useBitSteps, d as useBitStore, e as useBitWatch } from '../use-bit-watch-
|
|
2
|
-
import { b as BitPath, c as BitPathValue, k as BitFieldDefinition, l as BitFieldOptions } from '../bus-
|
|
3
|
-
export { S as ScopeStatus, V as ValidateScopeResult } from '../bus-
|
|
1
|
+
export { B as BitFormProvider, u as useBitArray, a as useBitForm, b as useBitScope, c as useBitSteps, d as useBitStore, e as useBitWatch } from '../use-bit-watch-iCGj-kYp.js';
|
|
2
|
+
import { b as BitPath, c as BitPathValue, k as BitFieldDefinition, l as BitFieldOptions } from '../bus-uG4EmM-Z.js';
|
|
3
|
+
export { S as ScopeStatus, V as ValidateScopeResult } from '../bus-uG4EmM-Z.js';
|
|
4
4
|
import 'react/jsx-runtime';
|
|
5
5
|
import 'react';
|
|
6
|
-
import '../index-
|
|
6
|
+
import '../index-1fP1eJH8.js';
|
|
7
7
|
|
|
8
8
|
interface UseBitFieldNativeMeta {
|
|
9
9
|
error: string | undefined;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as N,b as U,c as D,d as c,e as C,f as M,g as R,h as j}from"../chunk-
|
|
1
|
+
import{a as N,b as U,c as D,d as c,e as C,f as M,g as R,h as j}from"../chunk-ET36BANJ.js";import"../chunk-NDFMZWBP.js";import{useMemo as v,useCallback as f}from"react";function x(o){if(!o||typeof o!="object")return!1;let t=Object.keys(o);return t.length===1&&t[0]==="mask"}function E(o,t,s){let P=s!==void 0?t:x(t)?void 0:t,B=s!==void 0?s:x(t)?t:void 0,{fieldState:a,setValue:n,setBlur:d,store:r}=c(o,P),i=v(()=>{let e=B?.mask??r.config.fields?.[o]?.mask;if(e)return typeof e=="string"?r.config.masks[e]:e},[B?.mask,r.config.masks,r.config.fields,o]),m=v(()=>{let e=a.value;return e==null||e===""?"":i?i.format(e):String(e)},[a.value,i]),F=f(e=>{if(!i){n(e);return}n(i.parse(String(e??"")))},[i,n]),g=f(e=>{if(!i){n(e);return}n(i.parse(String(e??"")))},[i,n]),{isHidden:h,isRequired:y,value:T,error:l,touched:u,isDirty:V,isValidating:b}=a,k=!!(u&&l),S=u?l:void 0,p=f(()=>{d()},[d]);return{field:{value:T,displayValue:m,setValue:g,setBlur:d,onChangeText:F,onBlur:p},meta:{error:S,touched:u,invalid:k,isValidating:b,isDirty:V,isHidden:h,isRequired:y,hasError:!!l},props:{value:m,onChangeText:F,onBlur:p}}}export{N as BitFormProvider,C as useBitArray,E as useBitField,D as useBitForm,M as useBitScope,R as useBitSteps,U as useBitStore,j as useBitWatch};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/resolvers/joi.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ObjectSchema } from 'joi';
|
|
2
|
-
import { d as BitErrors } from '../bus-
|
|
2
|
+
import { d as BitErrors } from '../bus-uG4EmM-Z.cjs';
|
|
3
3
|
|
|
4
4
|
declare const joiResolver: <T extends object>(schema: ObjectSchema<T>) => (values: T, options?: {
|
|
5
5
|
scopeFields?: string[];
|
package/dist/resolvers/joi.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ObjectSchema } from 'joi';
|
|
2
|
-
import { d as BitErrors } from '../bus-
|
|
2
|
+
import { d as BitErrors } from '../bus-uG4EmM-Z.js';
|
|
3
3
|
|
|
4
4
|
declare const joiResolver: <T extends object>(schema: ObjectSchema<T>) => (values: T, options?: {
|
|
5
5
|
scopeFields?: string[];
|
package/dist/resolvers/yup.d.cts
CHANGED
package/dist/resolvers/yup.d.ts
CHANGED
package/dist/resolvers/zod.d.cts
CHANGED
package/dist/resolvers/zod.d.ts
CHANGED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Upload Integration Types
|
|
3
|
+
*
|
|
4
|
+
* Core types for backend-first upload integration.
|
|
5
|
+
*/
|
|
6
|
+
/** Upload result with URL and key for reference/deletion. */
|
|
7
|
+
interface BitUploadResult {
|
|
8
|
+
url: string;
|
|
9
|
+
key: string;
|
|
10
|
+
metadata?: Record<string, any>;
|
|
11
|
+
}
|
|
12
|
+
/** Upload function contract (backend-first). All context is managed by the caller. */
|
|
13
|
+
type BitUploadFn = (file: File) => Promise<BitUploadResult>;
|
|
14
|
+
/** Optional delete function contract. */
|
|
15
|
+
type BitDeleteUploadFn = (key: string) => Promise<void>;
|
|
16
|
+
|
|
17
|
+
export type { BitDeleteUploadFn as B, BitUploadFn as a, BitUploadResult as b };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Upload Integration Types
|
|
3
|
+
*
|
|
4
|
+
* Core types for backend-first upload integration.
|
|
5
|
+
*/
|
|
6
|
+
/** Upload result with URL and key for reference/deletion. */
|
|
7
|
+
interface BitUploadResult {
|
|
8
|
+
url: string;
|
|
9
|
+
key: string;
|
|
10
|
+
metadata?: Record<string, any>;
|
|
11
|
+
}
|
|
12
|
+
/** Upload function contract (backend-first). All context is managed by the caller. */
|
|
13
|
+
type BitUploadFn = (file: File) => Promise<BitUploadResult>;
|
|
14
|
+
/** Optional delete function contract. */
|
|
15
|
+
type BitDeleteUploadFn = (key: string) => Promise<void>;
|
|
16
|
+
|
|
17
|
+
export type { BitDeleteUploadFn as B, BitUploadFn as a, BitUploadResult as b };
|
|
@@ -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 BitStore } from './index-
|
|
4
|
-
import { d as BitErrors, o as BitTouched, b as BitPath, c as BitPathValue, h as BitArrayPath, g as BitArrayItem, S as ScopeStatus, V as ValidateScopeResult } from './bus-
|
|
3
|
+
import { B as BitStore } from './index-9vxGUNPP.cjs';
|
|
4
|
+
import { d as BitErrors, o as BitTouched, b as BitPath, c as BitPathValue, h as BitArrayPath, g as BitArrayItem, S as ScopeStatus, V as ValidateScopeResult } from './bus-uG4EmM-Z.cjs';
|
|
5
5
|
|
|
6
6
|
declare const BitFormProvider: ({ store, children, }: {
|
|
7
7
|
store: BitStore<any>;
|
|
@@ -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 BitStore } from './index-
|
|
4
|
-
import { d as BitErrors, o as BitTouched, b as BitPath, c as BitPathValue, h as BitArrayPath, g as BitArrayItem, S as ScopeStatus, V as ValidateScopeResult } from './bus-
|
|
3
|
+
import { B as BitStore } from './index-1fP1eJH8.js';
|
|
4
|
+
import { d as BitErrors, o as BitTouched, b as BitPath, c as BitPathValue, h as BitArrayPath, g as BitArrayItem, S as ScopeStatus, V as ValidateScopeResult } from './bus-uG4EmM-Z.js';
|
|
5
5
|
|
|
6
6
|
declare const BitFormProvider: ({ store, children, }: {
|
|
7
7
|
store: BitStore<any>;
|
package/dist/vue/index.cjs
CHANGED
|
@@ -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
|
|
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 _chunkVFLQH47Qcjs = require('../chunk-VFLQH47Q.cjs');var _vue = require('vue');var j=Symbol("BIT_STORE");function _(e){_vue.provide.call(void 0, j,e)}function c(){let e=_vue.inject.call(void 0, j);if(!e)throw new Error("BitForm Vue hooks devem ser usados sob um provideBitStore");return e}function Y(){let e=c(),t=_vue.shallowRef.call(void 0, e.getState()),s=_vue.ref.call(void 0, null),o=_vue.ref.call(void 0, null),n=e.subscribe(()=>{t.value={...e.getState()}});_vue.onUnmounted.call(void 0, n);let i=()=>t.value.values,u=()=>t.value.errors,y=()=>t.value.touched,m=()=>e.getDirtyValues(),r=_vue.computed.call(void 0, ()=>t.value.isValid),a=_vue.computed.call(void 0, ()=>t.value.isSubmitting),d=_vue.computed.call(void 0, ()=>t.value.isDirty);return{meta:{isValid:r,isDirty:d,isSubmitting:a,submitError:s,lastResponse:o},getValues:i,getErrors:u,getTouched:y,getDirtyValues:m,submit:S=>b=>(_optionalChain([b, 'optionalAccess', _2 => _2.preventDefault, 'optionalCall', _3 => _3()]),e.submit(S)),onSubmit:S=>b=>(_optionalChain([b, 'optionalAccess', _4 => _4.preventDefault, 'optionalCall', _5 => _5()]),s.value=null,e.submit(async(E,p)=>{try{let l=await S(E,p);o.value=l,s.value=null}catch(l){_chunkVFLQH47Qcjs.h.call(void 0, l)?e.setServerErrors(_chunkVFLQH47Qcjs.i.call(void 0, l)):s.value=l instanceof Error?l:new Error(String(l))}})),reset:()=>{e.reset(),s.value=null,o.value=null},setValues:e.setValues.bind(e),setError:e.setError.bind(e),setErrors:e.setErrors.bind(e),setServerErrors:e.setServerErrors.bind(e),setField:e.setField.bind(e),blurField:e.blurField.bind(e),validate:e.validate.bind(e),mutations:{pushItem:e.pushItem.bind(e),prependItem:e.prependItem.bind(e),removeItem:e.removeItem.bind(e),insertItem:e.insertItem.bind(e),moveItem:e.moveItem.bind(e),swapItems:e.swapItems.bind(e)}}}function P(e,t,s){let o=c();t&&o.registerField(e,t);let n=_nullishCoalesce(_optionalChain([s, 'optionalAccess', _6 => _6.mask]), () => (_optionalChain([o, 'access', _7 => _7.config, 'access', _8 => _8.fields, 'optionalAccess', _9 => _9[e], 'optionalAccess', _10 => _10.mask]))),i=n?typeof n=="string"?_optionalChain([o, 'access', _11 => _11.config, 'access', _12 => _12.masks, 'optionalAccess', _13 => _13[n]]):n:void 0,u=_vue.shallowRef.call(void 0, o.getState()),y=o.subscribe(()=>{u.value=o.getState()});_vue.onUnmounted.call(void 0, ()=>{y(),o.unregisterField&&o.unregisterField(e)});let m=_vue.computed.call(void 0, ()=>_chunkVFLQH47Qcjs.e.call(void 0, u.value.values,e)),r=_vue.computed.call(void 0, ()=>{let v=m.value;return v==null||v===""?"":i?i.format(v):String(v)}),a=_vue.computed.call(void 0, {get:()=>r.value,set:v=>{if(!i){o.setField(e,v);return}o.setField(e,i.parse(String(_nullishCoalesce(v, () => ("")))))}}),d=_vue.computed.call(void 0, ()=>u.value.errors[e]),g=_vue.computed.call(void 0, ()=>u.value.touched[e]?u.value.errors[e]:void 0),h=_vue.computed.call(void 0, ()=>!!u.value.touched[e]),x=_vue.computed.call(void 0, ()=>!!(h.value&&g.value)),S=_vue.computed.call(void 0, ()=>(u.value,o.isFieldValidating(e))),b=_vue.computed.call(void 0, ()=>(u.value,o.isFieldDirty(e))),E=_vue.computed.call(void 0, ()=>(u.value,o.isHidden(e))),p=_vue.computed.call(void 0, ()=>(u.value,o.isRequired(e))),l=_vue.computed.call(void 0, ()=>!!d.value),B=v=>{a.value=v},I=()=>o.blurField(e);return{value:m,displayValue:r,modelValue:a,setValue:B,setBlur:I,onInput:v=>{B(v)},onBlur:()=>{I()},meta:{error:g,touched:h,invalid:x,isValidating:S,isDirty:b,isHidden:E,isRequired:p,hasError:l}}}var R=()=>Math.random().toString(36).substring(2,9);function X(e){let t=c(),s=()=>{let r=_chunkVFLQH47Qcjs.e.call(void 0, t.getState().values,e);return Array.isArray(r)?r:[]},o=s(),n=_vue.ref.call(void 0, o),i=_vue.ref.call(void 0, o.map(R)),u=t.subscribe(()=>{let r=s();if(n.value=[...r],r.length!==i.value.length){let a=[...i.value];if(r.length>a.length){let d=r.length-a.length,g=Array.from({length:d},R);i.value=[...a,...g]}else i.value=a.slice(0,r.length)}});_vue.onUnmounted.call(void 0, ()=>{u(),t.unregisterPrefix&&t.unregisterPrefix(`${e}.`)});let y=_vue.computed.call(void 0, ()=>n.value.map((r,a)=>({key:i.value[a]||`temp-${a}`,value:r,index:a}))),m=_vue.computed.call(void 0, ()=>n.value.length);return{fields:y,length:m,append:r=>{i.value.push(R()),t.pushItem(e,r)},prepend:r=>{i.value.unshift(R()),t.prependItem(e,r)},insert:(r,a)=>{i.value.splice(r,0,R()),t.insertItem(e,r,a)},remove:r=>{i.value.splice(r,1),t.removeItem(e,r)},move:(r,a)=>{let d=[...i.value],[g]=d.splice(r,1);d.splice(a,0,g),i.value=d,t.moveItem(e,r,a)},swap:(r,a)=>{let d=[...i.value];[d[r],d[a]]=[d[a],d[r]],i.value=d,t.swapItems(e,r,a)},replace:r=>{i.value=r.map(R),t.setField(e,r)},clear:()=>{i.value=[],t.setField(e,[])}}}function ee(){let e=c(),t=_vue.shallowRef.call(void 0, e.getHistoryMetadata()),s=e.subscribe(()=>{t.value=e.getHistoryMetadata()});_vue.onUnmounted.call(void 0, s);let o=()=>e.undo(),n=()=>e.redo();return{canUndo:_vue.computed.call(void 0, ()=>t.value.canUndo),canRedo:_vue.computed.call(void 0, ()=>t.value.canRedo),historyIndex:_vue.computed.call(void 0, ()=>t.value.historyIndex),historySize:_vue.computed.call(void 0, ()=>t.value.historySize),undo:o,redo:n}}function se(e,t){let s=Object.keys(e),o=Object.keys(t);return s.length!==o.length?!1:s.every(n=>e[n]===t[n])}function ne(e){let t=c(),s=_vue.ref.call(void 0, t.getStepStatus(e)),o;_vue.onMounted.call(void 0, ()=>{o=t.subscribe(()=>{let r=t.getStepStatus(e);(r.hasErrors!==s.value.hasErrors||r.isDirty!==s.value.isDirty||!se(r.errors,s.value.errors))&&(s.value=r)})}),_vue.onUnmounted.call(void 0, ()=>{_optionalChain([o, 'optionalCall', _14 => _14()])});let n=async()=>{let r=await t.validate({scope:e}),a=t.getStepErrors(e);return{valid:r,errors:a}},i=()=>t.getStepErrors(e),u=_vue.computed.call(void 0, ()=>!s.value.hasErrors),y=_vue.computed.call(void 0, ()=>s.value.isDirty),m=_vue.computed.call(void 0, ()=>s.value.errors);return{scopeName:e,status:s,errors:m,validate:n,getErrors:i,isValid:u,isDirty:y}}function le(e,t){let s=Object.keys(e),o=Object.keys(t);return s.length!==o.length?!1:s.every(n=>e[n]===t[n])}function de(e){let t=c(),s=_vue.ref.call(void 0, 0),o=_vue.computed.call(void 0, ()=>_nullishCoalesce(e[s.value], () => (""))),n=_vue.ref.call(void 0, t.getStepStatus(o.value)),i;_vue.watch.call(void 0, o,p=>{n.value=t.getStepStatus(p)});let u=()=>{let p=o.value,l=t.getStepStatus(p);(l.hasErrors!==n.value.hasErrors||l.isDirty!==n.value.isDirty||!le(l.errors,n.value.errors))&&(n.value=l)};_vue.onMounted.call(void 0, ()=>{i=t.subscribe(u)}),_vue.onUnmounted.call(void 0, ()=>{_optionalChain([i, 'optionalCall', _15 => _15()])});let y=async()=>{let p=o.value,l=await t.validate({scope:p}),B=t.getStepErrors(p);return{valid:l,errors:B}},m=()=>t.getStepErrors(o.value),r=async()=>{let p=o.value,l=_optionalChain([t, 'access', _16 => _16.getConfig, 'call', _17 => _17(), 'access', _18 => _18.scopes, 'optionalAccess', _19 => _19[p]]);if(t.hasValidationsInProgress(l))return!1;let B=await t.validate({scope:p});if(B)s.value=Math.min(s.value+1,e.length-1);else{let I=t.getStepErrors(p),U=Object.keys(I);U.length>0&&t.markFieldsTouched(U)}return B},a=()=>{s.value=Math.max(s.value-1,0)},d=p=>{s.value=Math.max(0,Math.min(p-1,e.length-1))},g=_vue.computed.call(void 0, ()=>s.value+1),h=_vue.computed.call(void 0, ()=>s.value===0),x=_vue.computed.call(void 0, ()=>s.value>=e.length-1),S=_vue.computed.call(void 0, ()=>!n.value.hasErrors),b=_vue.computed.call(void 0, ()=>n.value.isDirty),E=_vue.computed.call(void 0, ()=>n.value.errors);return{step:g,stepIndex:s,scope:o,next:r,prev:a,goTo:d,isFirst:h,isLast:x,status:n,errors:E,isValid:S,isDirty:b,validate:y,getErrors:m}}function ve(e){let t=c(),s=_chunkVFLQH47Qcjs.e.call(void 0, t.getState().values,e),o=_vue.ref.call(void 0, s),n=t.watch(e,i=>{_chunkVFLQH47Qcjs.d.call(void 0, o.value,i)||(o.value=i)});return _vue.onUnmounted.call(void 0, n),_vue.readonly.call(void 0, o)}function fe(e,t,s){let o=c(),n=P(e),i=null,u=async m=>{if(m){o.beginFieldValidation(e),await o.clearFieldAsyncError(e);try{let r=await t(m);n.setValue(r.url),i=r.key,await o.clearFieldAsyncError(e)}catch(r){let a=r instanceof Error?r.message:"Upload failed";await o.setFieldAsyncError(e,a)}finally{o.endFieldValidation(e)}}},y=async()=>{if(i&&s)try{await s(i)}catch(m){let r=m instanceof Error?m.message:"Delete failed";await o.setFieldAsyncError(e,r);return}n.setValue(null),i=null,await o.clearFieldAsyncError(e)};return{value:n.value,setValue:n.setValue,error:_vue.computed.call(void 0, ()=>n.meta.error.value),isValidating:_vue.computed.call(void 0, ()=>n.meta.isValidating.value||!1),upload:u,remove:y}}exports.provideBitStore = _; exports.useBitArray = X; exports.useBitField = P; exports.useBitForm = Y; exports.useBitHistory = ee; exports.useBitScope = ne; exports.useBitSteps = de; exports.useBitStore = c; exports.useBitUpload = fe; exports.useBitWatch = ve;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/vue/index.d.cts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { B as BitStore } from '../index-
|
|
2
|
-
import { d as BitErrors, o as BitTouched, b as BitPath, c as BitPathValue, h as BitArrayPath, g as BitArrayItem, k as BitFieldDefinition, l as BitFieldOptions, S as ScopeStatus, V as ValidateScopeResult } from '../bus-
|
|
1
|
+
import { B as BitStore } from '../index-9vxGUNPP.cjs';
|
|
2
|
+
import { d as BitErrors, o as BitTouched, b as BitPath, c as BitPathValue, h as BitArrayPath, g as BitArrayItem, k as BitFieldDefinition, l as BitFieldOptions, S as ScopeStatus, V as ValidateScopeResult } from '../bus-uG4EmM-Z.cjs';
|
|
3
3
|
import * as vue from 'vue';
|
|
4
|
+
import { ComputedRef } from 'vue';
|
|
4
5
|
import * as _vue_reactivity from '@vue/reactivity';
|
|
5
6
|
import * as _vue_shared from '@vue/shared';
|
|
7
|
+
import { a as BitUploadFn, B as BitDeleteUploadFn } from '../types-C2mpfhp1.cjs';
|
|
6
8
|
|
|
7
9
|
declare function provideBitStore(store: BitStore<any>): void;
|
|
8
10
|
declare function useBitStore<T extends object>(): BitStore<T>;
|
|
@@ -129,4 +131,20 @@ declare function useBitSteps(scopeNames: string[]): UseBitStepsResult;
|
|
|
129
131
|
|
|
130
132
|
declare function useBitWatch<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): vue.DeepReadonly<vue.UnwrapNestedRefs<[BitPathValue<TForm, P>] extends [vue.Ref<any, any>] ? _vue_shared.IfAny<vue.Ref<any, any> & BitPathValue<TForm, P>, vue.Ref<vue.Ref<any, any> & BitPathValue<TForm, P>, vue.Ref<any, any> & BitPathValue<TForm, P>>, vue.Ref<any, any> & BitPathValue<TForm, P>> : vue.Ref<vue.UnwrapRef<BitPathValue<TForm, P>>, BitPathValue<TForm, P> | vue.UnwrapRef<BitPathValue<TForm, P>>>>>;
|
|
131
133
|
|
|
132
|
-
|
|
134
|
+
/**
|
|
135
|
+
* Vue Composition API for File Upload
|
|
136
|
+
*
|
|
137
|
+
* Minimal upload API integrated with global field validation lifecycle.
|
|
138
|
+
*/
|
|
139
|
+
|
|
140
|
+
interface UseBitUploadResult {
|
|
141
|
+
value: ComputedRef<string | File | null>;
|
|
142
|
+
setValue: (value: string | File | null) => void;
|
|
143
|
+
error: ComputedRef<string | undefined>;
|
|
144
|
+
isValidating: ComputedRef<boolean>;
|
|
145
|
+
upload: (file: File | null | undefined) => Promise<void>;
|
|
146
|
+
remove: () => Promise<void>;
|
|
147
|
+
}
|
|
148
|
+
declare function useBitUpload(fieldPath: string, uploadFn: BitUploadFn, deleteFile?: BitDeleteUploadFn): UseBitUploadResult;
|
|
149
|
+
|
|
150
|
+
export { ScopeStatus, type UseBitFieldVueMeta, type UseBitFieldVueResult, type UseBitUploadResult, ValidateScopeResult, provideBitStore, useBitArray, useBitField, useBitForm, useBitHistory, useBitScope, useBitSteps, useBitStore, useBitUpload, useBitWatch };
|
package/dist/vue/index.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { B as BitStore } from '../index-
|
|
2
|
-
import { d as BitErrors, o as BitTouched, b as BitPath, c as BitPathValue, h as BitArrayPath, g as BitArrayItem, k as BitFieldDefinition, l as BitFieldOptions, S as ScopeStatus, V as ValidateScopeResult } from '../bus-
|
|
1
|
+
import { B as BitStore } from '../index-1fP1eJH8.js';
|
|
2
|
+
import { d as BitErrors, o as BitTouched, b as BitPath, c as BitPathValue, h as BitArrayPath, g as BitArrayItem, k as BitFieldDefinition, l as BitFieldOptions, S as ScopeStatus, V as ValidateScopeResult } from '../bus-uG4EmM-Z.js';
|
|
3
3
|
import * as vue from 'vue';
|
|
4
|
+
import { ComputedRef } from 'vue';
|
|
4
5
|
import * as _vue_reactivity from '@vue/reactivity';
|
|
5
6
|
import * as _vue_shared from '@vue/shared';
|
|
7
|
+
import { a as BitUploadFn, B as BitDeleteUploadFn } from '../types-C2mpfhp1.js';
|
|
6
8
|
|
|
7
9
|
declare function provideBitStore(store: BitStore<any>): void;
|
|
8
10
|
declare function useBitStore<T extends object>(): BitStore<T>;
|
|
@@ -129,4 +131,20 @@ declare function useBitSteps(scopeNames: string[]): UseBitStepsResult;
|
|
|
129
131
|
|
|
130
132
|
declare function useBitWatch<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): vue.DeepReadonly<vue.UnwrapNestedRefs<[BitPathValue<TForm, P>] extends [vue.Ref<any, any>] ? _vue_shared.IfAny<vue.Ref<any, any> & BitPathValue<TForm, P>, vue.Ref<vue.Ref<any, any> & BitPathValue<TForm, P>, vue.Ref<any, any> & BitPathValue<TForm, P>>, vue.Ref<any, any> & BitPathValue<TForm, P>> : vue.Ref<vue.UnwrapRef<BitPathValue<TForm, P>>, BitPathValue<TForm, P> | vue.UnwrapRef<BitPathValue<TForm, P>>>>>;
|
|
131
133
|
|
|
132
|
-
|
|
134
|
+
/**
|
|
135
|
+
* Vue Composition API for File Upload
|
|
136
|
+
*
|
|
137
|
+
* Minimal upload API integrated with global field validation lifecycle.
|
|
138
|
+
*/
|
|
139
|
+
|
|
140
|
+
interface UseBitUploadResult {
|
|
141
|
+
value: ComputedRef<string | File | null>;
|
|
142
|
+
setValue: (value: string | File | null) => void;
|
|
143
|
+
error: ComputedRef<string | undefined>;
|
|
144
|
+
isValidating: ComputedRef<boolean>;
|
|
145
|
+
upload: (file: File | null | undefined) => Promise<void>;
|
|
146
|
+
remove: () => Promise<void>;
|
|
147
|
+
}
|
|
148
|
+
declare function useBitUpload(fieldPath: string, uploadFn: BitUploadFn, deleteFile?: BitDeleteUploadFn): UseBitUploadResult;
|
|
149
|
+
|
|
150
|
+
export { ScopeStatus, type UseBitFieldVueMeta, type UseBitFieldVueResult, type UseBitUploadResult, ValidateScopeResult, provideBitStore, useBitArray, useBitField, useBitForm, useBitHistory, useBitScope, useBitSteps, useBitStore, useBitUpload, useBitWatch };
|
package/dist/vue/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{d as
|
|
1
|
+
import{d as k,e as V,h as A,i as C}from"../chunk-NDFMZWBP.js";import{inject as z,provide as W}from"vue";var j=Symbol("BIT_STORE");function _(e){W(j,e)}function c(){let e=z(j);if(!e)throw new Error("BitForm Vue hooks devem ser usados sob um provideBitStore");return e}import{computed as w,onUnmounted as L,shallowRef as $,ref as M}from"vue";function Y(){let e=c(),t=$(e.getState()),s=M(null),o=M(null),n=e.subscribe(()=>{t.value={...e.getState()}});L(n);let i=()=>t.value.values,u=()=>t.value.errors,y=()=>t.value.touched,m=()=>e.getDirtyValues(),r=w(()=>t.value.isValid),a=w(()=>t.value.isSubmitting),d=w(()=>t.value.isDirty);return{meta:{isValid:r,isDirty:d,isSubmitting:a,submitError:s,lastResponse:o},getValues:i,getErrors:u,getTouched:y,getDirtyValues:m,submit:S=>b=>(b?.preventDefault?.(),e.submit(S)),onSubmit:S=>b=>(b?.preventDefault?.(),s.value=null,e.submit(async(E,p)=>{try{let l=await S(E,p);o.value=l,s.value=null}catch(l){A(l)?e.setServerErrors(C(l)):s.value=l instanceof Error?l:new Error(String(l))}})),reset:()=>{e.reset(),s.value=null,o.value=null},setValues:e.setValues.bind(e),setError:e.setError.bind(e),setErrors:e.setErrors.bind(e),setServerErrors:e.setServerErrors.bind(e),setField:e.setField.bind(e),blurField:e.blurField.bind(e),validate:e.validate.bind(e),mutations:{pushItem:e.pushItem.bind(e),prependItem:e.prependItem.bind(e),removeItem:e.removeItem.bind(e),insertItem:e.insertItem.bind(e),moveItem:e.moveItem.bind(e),swapItems:e.swapItems.bind(e)}}}import{computed as f,onUnmounted as G,shallowRef as J}from"vue";function P(e,t,s){let o=c();t&&o.registerField(e,t);let n=s?.mask??o.config.fields?.[e]?.mask,i=n?typeof n=="string"?o.config.masks?.[n]:n:void 0,u=J(o.getState()),y=o.subscribe(()=>{u.value=o.getState()});G(()=>{y(),o.unregisterField&&o.unregisterField(e)});let m=f(()=>V(u.value.values,e)),r=f(()=>{let v=m.value;return v==null||v===""?"":i?i.format(v):String(v)}),a=f({get:()=>r.value,set:v=>{if(!i){o.setField(e,v);return}o.setField(e,i.parse(String(v??"")))}}),d=f(()=>u.value.errors[e]),g=f(()=>u.value.touched[e]?u.value.errors[e]:void 0),h=f(()=>!!u.value.touched[e]),x=f(()=>!!(h.value&&g.value)),S=f(()=>(u.value,o.isFieldValidating(e))),b=f(()=>(u.value,o.isFieldDirty(e))),E=f(()=>(u.value,o.isHidden(e))),p=f(()=>(u.value,o.isRequired(e))),l=f(()=>!!d.value),B=v=>{a.value=v},I=()=>o.blurField(e);return{value:m,displayValue:r,modelValue:a,setValue:B,setBlur:I,onInput:v=>{B(v)},onBlur:()=>{I()},meta:{error:g,touched:h,invalid:x,isValidating:S,isDirty:b,isHidden:E,isRequired:p,hasError:l}}}import{ref as O,computed as H,onUnmounted as Q}from"vue";var R=()=>Math.random().toString(36).substring(2,9);function X(e){let t=c(),s=()=>{let r=V(t.getState().values,e);return Array.isArray(r)?r:[]},o=s(),n=O(o),i=O(o.map(R)),u=t.subscribe(()=>{let r=s();if(n.value=[...r],r.length!==i.value.length){let a=[...i.value];if(r.length>a.length){let d=r.length-a.length,g=Array.from({length:d},R);i.value=[...a,...g]}else i.value=a.slice(0,r.length)}});Q(()=>{u(),t.unregisterPrefix&&t.unregisterPrefix(`${e}.`)});let y=H(()=>n.value.map((r,a)=>({key:i.value[a]||`temp-${a}`,value:r,index:a}))),m=H(()=>n.value.length);return{fields:y,length:m,append:r=>{i.value.push(R()),t.pushItem(e,r)},prepend:r=>{i.value.unshift(R()),t.prependItem(e,r)},insert:(r,a)=>{i.value.splice(r,0,R()),t.insertItem(e,r,a)},remove:r=>{i.value.splice(r,1),t.removeItem(e,r)},move:(r,a)=>{let d=[...i.value],[g]=d.splice(r,1);d.splice(a,0,g),i.value=d,t.moveItem(e,r,a)},swap:(r,a)=>{let d=[...i.value];[d[r],d[a]]=[d[a],d[r]],i.value=d,t.swapItems(e,r,a)},replace:r=>{i.value=r.map(R),t.setField(e,r)},clear:()=>{i.value=[],t.setField(e,[])}}}import{computed as T,onUnmounted as Z,shallowRef as N}from"vue";function ee(){let e=c(),t=N(e.getHistoryMetadata()),s=e.subscribe(()=>{t.value=e.getHistoryMetadata()});Z(s);let o=()=>e.undo(),n=()=>e.redo();return{canUndo:T(()=>t.value.canUndo),canRedo:T(()=>t.value.canRedo),historyIndex:T(()=>t.value.historyIndex),historySize:T(()=>t.value.historySize),undo:o,redo:n}}import{ref as te,computed as D,onMounted as re,onUnmounted as oe}from"vue";function se(e,t){let s=Object.keys(e),o=Object.keys(t);return s.length!==o.length?!1:s.every(n=>e[n]===t[n])}function ne(e){let t=c(),s=te(t.getStepStatus(e)),o;re(()=>{o=t.subscribe(()=>{let r=t.getStepStatus(e);(r.hasErrors!==s.value.hasErrors||r.isDirty!==s.value.isDirty||!se(r.errors,s.value.errors))&&(s.value=r)})}),oe(()=>{o?.()});let n=async()=>{let r=await t.validate({scope:e}),a=t.getStepErrors(e);return{valid:r,errors:a}},i=()=>t.getStepErrors(e),u=D(()=>!s.value.hasErrors),y=D(()=>s.value.isDirty),m=D(()=>s.value.errors);return{scopeName:e,status:s,errors:m,validate:n,getErrors:i,isValid:u,isDirty:y}}import{ref as q,computed as F,watch as ie,onMounted as ae,onUnmounted as ue}from"vue";function le(e,t){let s=Object.keys(e),o=Object.keys(t);return s.length!==o.length?!1:s.every(n=>e[n]===t[n])}function de(e){let t=c(),s=q(0),o=F(()=>e[s.value]??""),n=q(t.getStepStatus(o.value)),i;ie(o,p=>{n.value=t.getStepStatus(p)});let u=()=>{let p=o.value,l=t.getStepStatus(p);(l.hasErrors!==n.value.hasErrors||l.isDirty!==n.value.isDirty||!le(l.errors,n.value.errors))&&(n.value=l)};ae(()=>{i=t.subscribe(u)}),ue(()=>{i?.()});let y=async()=>{let p=o.value,l=await t.validate({scope:p}),B=t.getStepErrors(p);return{valid:l,errors:B}},m=()=>t.getStepErrors(o.value),r=async()=>{let p=o.value,l=t.getConfig().scopes?.[p];if(t.hasValidationsInProgress(l))return!1;let B=await t.validate({scope:p});if(B)s.value=Math.min(s.value+1,e.length-1);else{let I=t.getStepErrors(p),U=Object.keys(I);U.length>0&&t.markFieldsTouched(U)}return B},a=()=>{s.value=Math.max(s.value-1,0)},d=p=>{s.value=Math.max(0,Math.min(p-1,e.length-1))},g=F(()=>s.value+1),h=F(()=>s.value===0),x=F(()=>s.value>=e.length-1),S=F(()=>!n.value.hasErrors),b=F(()=>n.value.isDirty),E=F(()=>n.value.errors);return{step:g,stepIndex:s,scope:o,next:r,prev:a,goTo:d,isFirst:h,isLast:x,status:n,errors:E,isValid:S,isDirty:b,validate:y,getErrors:m}}import{ref as ce,onUnmounted as me,readonly as pe}from"vue";function ve(e){let t=c(),s=V(t.getState().values,e),o=ce(s),n=t.watch(e,i=>{k(o.value,i)||(o.value=i)});return me(n),pe(o)}import{computed as K}from"vue";function fe(e,t,s){let o=c(),n=P(e),i=null,u=async m=>{if(m){o.beginFieldValidation(e),await o.clearFieldAsyncError(e);try{let r=await t(m);n.setValue(r.url),i=r.key,await o.clearFieldAsyncError(e)}catch(r){let a=r instanceof Error?r.message:"Upload failed";await o.setFieldAsyncError(e,a)}finally{o.endFieldValidation(e)}}},y=async()=>{if(i&&s)try{await s(i)}catch(m){let r=m instanceof Error?m.message:"Delete failed";await o.setFieldAsyncError(e,r);return}n.setValue(null),i=null,await o.clearFieldAsyncError(e)};return{value:n.value,setValue:n.setValue,error:K(()=>n.meta.error.value),isValidating:K(()=>n.meta.isValidating.value||!1),upload:u,remove:y}}export{_ as provideBitStore,X as useBitArray,P as useBitField,Y as useBitForm,ee as useBitHistory,ne as useBitScope,de as useBitSteps,c as useBitStore,fe as useBitUpload,ve as useBitWatch};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|