@inl0re/blnk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +148 -0
  3. package/README.ru.md +476 -0
  4. package/dist/core/createFormControl.d.ts +3 -0
  5. package/dist/core/createFormControl.d.ts.map +1 -0
  6. package/dist/core/fieldArrayState.d.ts +23 -0
  7. package/dist/core/fieldArrayState.d.ts.map +1 -0
  8. package/dist/core/fieldRegistry.d.ts +9 -0
  9. package/dist/core/fieldRegistry.d.ts.map +1 -0
  10. package/dist/core/formState.d.ts +13 -0
  11. package/dist/core/formState.d.ts.map +1 -0
  12. package/dist/core/store.d.ts +4 -0
  13. package/dist/core/store.d.ts.map +1 -0
  14. package/dist/core/subscriptionManager.d.ts +8 -0
  15. package/dist/core/subscriptionManager.d.ts.map +1 -0
  16. package/dist/core/transactionManager.d.ts +11 -0
  17. package/dist/core/transactionManager.d.ts.map +1 -0
  18. package/dist/core/validationEngine.d.ts +5 -0
  19. package/dist/core/validationEngine.d.ts.map +1 -0
  20. package/dist/hooks/Controller.d.ts +8 -0
  21. package/dist/hooks/Controller.d.ts.map +1 -0
  22. package/dist/hooks/useController.d.ts +23 -0
  23. package/dist/hooks/useController.d.ts.map +1 -0
  24. package/dist/hooks/useField.d.ts +4 -0
  25. package/dist/hooks/useField.d.ts.map +1 -0
  26. package/dist/hooks/useFieldArray.d.ts +23 -0
  27. package/dist/hooks/useFieldArray.d.ts.map +1 -0
  28. package/dist/hooks/useForm.d.ts +3 -0
  29. package/dist/hooks/useForm.d.ts.map +1 -0
  30. package/dist/hooks/useFormState.d.ts +9 -0
  31. package/dist/hooks/useFormState.d.ts.map +1 -0
  32. package/dist/hooks/useWatch.d.ts +22 -0
  33. package/dist/hooks/useWatch.d.ts.map +1 -0
  34. package/dist/index.cjs +2 -0
  35. package/dist/index.cjs.map +1 -0
  36. package/dist/index.d.ts +23 -0
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/index.mjs +669 -0
  39. package/dist/index.mjs.map +1 -0
  40. package/dist/resolvers/yupResolver.d.ts +4 -0
  41. package/dist/resolvers/yupResolver.d.ts.map +1 -0
  42. package/dist/resolvers/zodResolver.d.ts +4 -0
  43. package/dist/resolvers/zodResolver.d.ts.map +1 -0
  44. package/dist/types/form.d.ts +94 -0
  45. package/dist/types/form.d.ts.map +1 -0
  46. package/dist/types/path.d.ts +9 -0
  47. package/dist/types/path.d.ts.map +1 -0
  48. package/dist/types/resolver.d.ts +7 -0
  49. package/dist/types/resolver.d.ts.map +1 -0
  50. package/dist/utils/clone.d.ts +2 -0
  51. package/dist/utils/clone.d.ts.map +1 -0
  52. package/dist/utils/get.d.ts +2 -0
  53. package/dist/utils/get.d.ts.map +1 -0
  54. package/dist/utils/getInputValue.d.ts +7 -0
  55. package/dist/utils/getInputValue.d.ts.map +1 -0
  56. package/dist/utils/isEqual.d.ts +2 -0
  57. package/dist/utils/isEqual.d.ts.map +1 -0
  58. package/dist/utils/path.d.ts +3 -0
  59. package/dist/utils/path.d.ts.map +1 -0
  60. package/dist/utils/set.d.ts +2 -0
  61. package/dist/utils/set.d.ts.map +1 -0
  62. package/dist/utils/unset.d.ts +2 -0
  63. package/dist/utils/unset.d.ts.map +1 -0
  64. package/package.json +86 -0
@@ -0,0 +1,13 @@
1
+ import type { FieldValues, FormErrors, FormState } from "../types/form";
2
+ export type FormStateSource<T extends FieldValues> = {
3
+ errors: FormErrors<T>;
4
+ touchedFields: Record<string, unknown>;
5
+ dirtyFields: Record<string, unknown>;
6
+ validatingFields: Record<string, unknown>;
7
+ isSubmitting: boolean;
8
+ isSubmitted: boolean;
9
+ submitCount: number;
10
+ };
11
+ export declare function hasStateTreeValue(value: unknown): boolean;
12
+ export declare function createFormStateSnapshot<T extends FieldValues>(source: FormStateSource<T>): FormState<T>;
13
+ //# sourceMappingURL=formState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formState.d.ts","sourceRoot":"","sources":["../../src/core/formState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAExE,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,WAAW,IAAI;IACnD,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAoBzD;AAED,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,WAAW,EAC3D,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,GACzB,SAAS,CAAC,CAAC,CAAC,CAad"}
@@ -0,0 +1,4 @@
1
+ import type { DeepPartial, FieldValues } from "../types/form";
2
+ export declare function cloneFormValues<T extends FieldValues>(value?: DeepPartial<T> | T): T;
3
+ export declare function updateDirtyField(dirtyFields: Record<string, unknown>, values: unknown, defaultValues: unknown, name: string): void;
4
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/core/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAO9D,wBAAgB,eAAe,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAEpF;AAED,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,MAAM,EAAE,OAAO,EACf,aAAa,EAAE,OAAO,EACtB,IAAI,EAAE,MAAM,GACX,IAAI,CAQN"}
@@ -0,0 +1,8 @@
1
+ export type FieldSubscriber<TValue = unknown> = (value: TValue, name: string) => void;
2
+ export declare class SubscriptionManager {
3
+ private readonly fieldSubscribers;
4
+ subscribe<TValue>(name: string, callback: FieldSubscriber<TValue>): () => void;
5
+ notify<TValue>(name: string, value: TValue): void;
6
+ clear(): void;
7
+ }
8
+ //# sourceMappingURL=subscriptionManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriptionManager.d.ts","sourceRoot":"","sources":["../../src/core/subscriptionManager.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,CAAC,MAAM,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAEtF,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA2C;IAE5E,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI;IAa9E,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAWjD,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,11 @@
1
+ export type TransactionCommitPayload = {
2
+ notifications: Set<string>;
3
+ validations: Set<string>;
4
+ };
5
+ export declare function createTransactionManager(): {
6
+ begin(): void;
7
+ commit(): TransactionCommitPayload | undefined;
8
+ queueNotification(name: string): boolean;
9
+ queueValidation(name: string): boolean;
10
+ };
11
+ //# sourceMappingURL=transactionManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactionManager.d.ts","sourceRoot":"","sources":["../../src/core/transactionManager.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,wBAAwB,GAAG;IACrC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC1B,CAAC;AAEF,wBAAgB,wBAAwB;;cAS1B,wBAAwB,GAAG,SAAS;4BAiBtB,MAAM,GAAG,OAAO;0BAOlB,MAAM,GAAG,OAAO;EAQzC"}
@@ -0,0 +1,5 @@
1
+ import type { FieldError, FieldValues, ValidateResult } from "../types/form";
2
+ import type { Resolver } from "../types/resolver";
3
+ export declare function toFieldError(result: Exclude<ValidateResult, true | undefined | null>): FieldError;
4
+ export declare function resolverFromSchema<T extends FieldValues>(schema: unknown): Resolver<T> | undefined;
5
+ //# sourceMappingURL=validationEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validationEngine.d.ts","sourceRoot":"","sources":["../../src/core/validationEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAIlD,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,UAAU,CAMjG;AAED,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,WAAW,EACtD,MAAM,EAAE,OAAO,GACd,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAezB"}
@@ -0,0 +1,8 @@
1
+ import type { FieldValues } from "../types/form";
2
+ import type { Path } from "../types/path";
3
+ import { type UseControllerOptions, type UseControllerReturn } from "./useController";
4
+ export type ControllerProps<T extends FieldValues, P extends Path<T>> = UseControllerOptions<T, P> & {
5
+ render: (props: UseControllerReturn<T, P>) => React.ReactElement | null;
6
+ };
7
+ export declare function Controller<T extends FieldValues, P extends Path<T>>({ render, ...options }: ControllerProps<T, P>): React.ReactElement | null;
8
+ //# sourceMappingURL=Controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Controller.d.ts","sourceRoot":"","sources":["../../src/hooks/Controller.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EAEzB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,IAAI,oBAAoB,CAC1F,CAAC,EACD,CAAC,CACF,GAAG;IACF,MAAM,EAAE,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;CACzE,CAAC;AAEF,wBAAgB,UAAU,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE,EACnE,MAAM,EACN,GAAG,OAAO,EACX,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAEnD"}
@@ -0,0 +1,23 @@
1
+ import type { FieldValues, FormControl, RegisterOptions, RegisterReturn } from "../types/form";
2
+ import type { Path, PathValue } from "../types/path";
3
+ export type ControllerField<T extends FieldValues, P extends Path<T>> = RegisterReturn & {
4
+ value: PathValue<T, P>;
5
+ };
6
+ export type ControllerFieldState = {
7
+ error: unknown;
8
+ isDirty: boolean;
9
+ isTouched: boolean;
10
+ isValidating: boolean;
11
+ };
12
+ export type UseControllerOptions<T extends FieldValues, P extends Path<T>> = {
13
+ control: FormControl<T>;
14
+ name: P;
15
+ rules?: RegisterOptions<T, P>;
16
+ defaultValue?: PathValue<T, P>;
17
+ };
18
+ export type UseControllerReturn<T extends FieldValues, P extends Path<T>> = {
19
+ field: ControllerField<T, P>;
20
+ fieldState: ControllerFieldState;
21
+ };
22
+ export declare function useController<T extends FieldValues, P extends Path<T>>({ control, name, rules, defaultValue, }: UseControllerOptions<T, P>): UseControllerReturn<T, P>;
23
+ //# sourceMappingURL=useController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useController.d.ts","sourceRoot":"","sources":["../../src/hooks/useController.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,WAAW,EACX,WAAW,EACX,eAAe,EACf,cAAc,EACf,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAIrD,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,IAAI,cAAc,GAAG;IACvF,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,IAAI;IAC3E,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,IAAI;IAC1E,KAAK,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,UAAU,EAAE,oBAAoB,CAAC;CAClC,CAAC;AAEF,wBAAgB,aAAa,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE,EACtE,OAAO,EACP,IAAI,EACJ,KAAK,EACL,YAAY,GACb,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAiBxD"}
@@ -0,0 +1,4 @@
1
+ import type { FieldSnapshot, FieldValues, FormControl } from "../types/form";
2
+ import type { Path } from "../types/path";
3
+ export declare function useField<T extends FieldValues, P extends Path<T>>(control: FormControl<T>, name: P): FieldSnapshot<T, P>;
4
+ //# sourceMappingURL=useField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useField.d.ts","sourceRoot":"","sources":["../../src/hooks/useField.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAgB1C,wBAAgB,QAAQ,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,EAC/D,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EACvB,IAAI,EAAE,CAAC,GACN,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CA+BrB"}
@@ -0,0 +1,23 @@
1
+ import type { FieldValues, FormControl } from "../types/form";
2
+ import type { Path, PathValue } from "../types/path";
3
+ type ArrayItem<T extends FieldValues, P extends Path<T>> = PathValue<T, P> extends Array<infer Item> ? Item : never;
4
+ export type FieldArrayItem<T extends FieldValues, P extends Path<T>> = ArrayItem<T, P> & {
5
+ id: string;
6
+ };
7
+ export type FieldArrayReturn<T extends FieldValues, P extends Path<T>> = {
8
+ readonly fields: FieldArrayItem<T, P>[];
9
+ append(value: ArrayItem<T, P>): void;
10
+ remove(index: number): void;
11
+ insert(index: number, value: ArrayItem<T, P>): void;
12
+ move(from: number, to: number): void;
13
+ swap(left: number, right: number): void;
14
+ replace(values: ArrayItem<T, P>[]): void;
15
+ };
16
+ export type UseFieldArrayOptions<T extends FieldValues, P extends Path<T>> = {
17
+ control: FormControl<T>;
18
+ name: P;
19
+ };
20
+ export declare function createFieldArray<T extends FieldValues, P extends Path<T>>({ control, name, }: UseFieldArrayOptions<T, P>): FieldArrayReturn<T, P>;
21
+ export declare function useFieldArray<T extends FieldValues, P extends Path<T>>(options: UseFieldArrayOptions<T, P>): FieldArrayReturn<T, P>;
22
+ export {};
23
+ //# sourceMappingURL=useFieldArray.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFieldArray.d.ts","sourceRoot":"","sources":["../../src/hooks/useFieldArray.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AASrD,KAAK,SAAS,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,IACrD,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAE3D,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;IACvF,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,IAAI;IACvE,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACxC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IACrC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IACpD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,IAAI;IAC3E,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,EAAE,CAAC,CAAC;CACT,CAAC;AAUF,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE,EACzE,OAAO,EACP,IAAI,GACL,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CA+ErD;AAED,wBAAgB,aAAa,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,EACpE,OAAO,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,GAClC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAYxB"}
@@ -0,0 +1,3 @@
1
+ import type { FieldValues, UseFormOptions, UseFormReturn } from "../types/form";
2
+ export declare function useForm<T extends FieldValues = FieldValues>(options?: UseFormOptions<T>): UseFormReturn<T>;
3
+ //# sourceMappingURL=useForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useForm.d.ts","sourceRoot":"","sources":["../../src/hooks/useForm.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEhF,wBAAgB,OAAO,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EACzD,OAAO,GAAE,cAAc,CAAC,CAAC,CAAM,GAC9B,aAAa,CAAC,CAAC,CAAC,CAOlB"}
@@ -0,0 +1,9 @@
1
+ import type { FieldValues, FormControl, FormState } from "../types/form";
2
+ import type { Path } from "../types/path";
3
+ export type UseFormStateOptions<T extends FieldValues, S> = {
4
+ control: FormControl<T>;
5
+ name?: Path<T>;
6
+ selector: (state: FormState<T>) => S;
7
+ };
8
+ export declare function useFormState<T extends FieldValues, S = FormState<T>>({ control, selector, }: UseFormStateOptions<T, S>): S;
9
+ //# sourceMappingURL=useFormState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormState.d.ts","sourceRoot":"","sources":["../../src/hooks/useFormState.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,IAAI;IAC1D,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;CACtC,CAAC;AAEF,wBAAgB,YAAY,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,EACpE,OAAO,EACP,QAAQ,GACT,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAe/B"}
@@ -0,0 +1,22 @@
1
+ import type { FieldValues, FormControl } from "../types/form";
2
+ import type { Path, PathValue } from "../types/path";
3
+ type UseWatchBaseOptions<T extends FieldValues> = {
4
+ control: FormControl<T>;
5
+ };
6
+ export type UseWatchOptions<T extends FieldValues, P extends Path<T>> = UseWatchBaseOptions<T> & {
7
+ name: P;
8
+ defaultValue?: PathValue<T, P>;
9
+ };
10
+ export type UseWatchManyOptions<T extends FieldValues, P extends Path<T>> = UseWatchBaseOptions<T> & {
11
+ name: readonly P[];
12
+ defaultValue?: PathValue<T, P>[];
13
+ };
14
+ export type UseWatchAllOptions<T extends FieldValues> = UseWatchBaseOptions<T> & {
15
+ name?: undefined;
16
+ defaultValue?: T;
17
+ };
18
+ export declare function useWatch<T extends FieldValues, P extends Path<T>>(options: UseWatchOptions<T, P>): PathValue<T, P>;
19
+ export declare function useWatch<T extends FieldValues, P extends Path<T>>(options: UseWatchManyOptions<T, P>): PathValue<T, P>[];
20
+ export declare function useWatch<T extends FieldValues>(options: UseWatchAllOptions<T>): T;
21
+ export {};
22
+ //# sourceMappingURL=useWatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWatch.d.ts","sourceRoot":"","sources":["../../src/hooks/useWatch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAIrD,KAAK,mBAAmB,CAAC,CAAC,SAAS,WAAW,IAAI;IAChD,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC,GAAG;IAC/F,IAAI,EAAE,CAAC,CAAC;IACR,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAC7B,CAAC,SAAS,WAAW,EACrB,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,IACf,mBAAmB,CAAC,CAAC,CAAC,GAAG;IAC3B,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;IACnB,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,WAAW,IAAI,mBAAmB,CAAC,CAAC,CAAC,GAAG;IAC/E,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,YAAY,CAAC,EAAE,CAAC,CAAC;CAClB,CAAC;AAoCF,wBAAgB,QAAQ,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,EAC/D,OAAO,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC7B,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnB,wBAAgB,QAAQ,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,EAC/D,OAAO,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,GACjC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACrB,wBAAgB,QAAQ,CAAC,CAAC,SAAS,WAAW,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC"}
package/dist/index.cjs ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("react");function j(e){return e.split(".").filter(Boolean)}function te(e){return/^(0|[1-9]\d*)$/.test(e)}function y(e,t,r){if(!t)return e;let s=e;for(const i of j(t)){if(s==null)return r;s=s[i]}return s===void 0?r:s}function re(e,t){return{value:e.getValue(t),error:y(e.formState.errors,t),isDirty:!!y(e.formState.dirtyFields,t),isTouched:!!y(e.formState.touchedFields,t),isValidating:!!y(e.formState.validatingFields,t)}}function z(e,t){const r=g.useRef(0),s=g.useCallback(()=>r.current,[]),i=g.useCallback(u=>{const l=()=>{r.current+=1,u()},d=e.subscribe(t,l),f=e.subscribeFormState(a=>({error:y(a.errors,t),dirty:y(a.dirtyFields,t),touched:y(a.touchedFields,t),validating:y(a.validatingFields,t)}),l);return()=>{d(),f()}},[e,t]);return g.useSyncExternalStore(i,s,s),re(e,t)}function se(e){return Array.isArray(e)}function ie(e){return se(e)?Array.from(e):e}function B(e,t,r){if(Array.isArray(t))return t.map((u,l)=>{const d=e.getValue(u);return d===void 0&&Array.isArray(r)?r[l]:d});if(t){const i=e.getValue(t);return i===void 0?r:i}const s=e.getValues();return Object.keys(s).length===0&&r!==void 0?r:s}function I({control:e,name:t,defaultValue:r}){const s=g.useMemo(()=>ie(t),[t]),i=Array.isArray(s)?s.join("\0"):s??"",[u,l]=g.useState(()=>B(e,s,r));return g.useEffect(()=>{const d=()=>{l(B(e,s,r))};if(Array.isArray(s)){const a=s.map(V=>e.subscribe(V,d));return()=>{for(const V of a)V()}}return s?e.subscribe(s,d):e.subscribeFormState(()=>e.getValues(),()=>{d()})},[e,r,s,i]),u}function W({control:e,name:t,rules:r,defaultValue:s}){const i=g.useMemo(()=>e.register(t,r),[e,t,r]),u=I({control:e,name:t,defaultValue:s}),l=z(e,t);return{field:{...i,value:u},fieldState:{error:l.error,isDirty:l.isDirty,isTouched:l.isTouched,isValidating:l.isValidating}}}function ne({render:e,...t}){return e(W(t))}const P=new WeakMap;let x=0;function K(){return x+=1,`field-array-${x}`}function _(e){let t=P.get(e);return t||(t=new Map,P.set(e,t)),t}function C(e,t,r){const s=_(e),i=s.get(t)??[];for(;i.length<r;)i.push(K());return i.length>r&&(i.length=r),s.set(t,i),i}function ue(e,t,r){_(e).set(t,r)}function T(){return K()}function F(e){if(e==null||typeof e!="object")return e;if(e instanceof Date)return new Date(e.getTime());if(Array.isArray(e))return e.map(r=>F(r));const t={};for(const r of Object.keys(e))t[r]=F(e[r]);return t}function k(e,t){const r=e.getValue(t);return Array.isArray(r)?F(r):[]}function $({control:e,name:t}){const r=t;function s(i,u,l){var f;ue(e,r,u);const d=e;(f=d._updateFieldArrayMetadata)==null||f.call(d,r,l),e.setValue(t,i,{shouldDirty:!0,shouldValidate:!0})}return{get fields(){const i=k(e,t),u=C(e,r,i.length);return i.map((l,d)=>Object.assign({},l,{id:u[d]}))},append(i){const u=k(e,t),l=C(e,r,u.length);s([...u,i],[...l,T()],{type:"append"})},remove(i){const u=k(e,t),l=C(e,r,u.length);i<0||i>=u.length||(u.splice(i,1),l.splice(i,1),s(u,l,{type:"remove",index:i}))},insert(i,u){const l=k(e,t),d=C(e,r,l.length);l.splice(i,0,u),d.splice(i,0,T()),s(l,d,{type:"insert",index:i})},move(i,u){const l=k(e,t),d=C(e,r,l.length),[f]=l.splice(i,1),[a]=d.splice(i,1);l.splice(u,0,f),d.splice(u,0,a),s(l,d,{type:"move",from:i,to:u})},swap(i,u){const l=k(e,t),d=C(e,r,l.length);[l[i],l[u]]=[l[u],l[i]],[d[i],d[u]]=[d[u],d[i]],s(l,d,{type:"swap",left:i,right:u})},replace(i){s(F(i),i.map(()=>T()),{type:"replace"})}}}function ae(e){const{control:t,name:r}=e,[,s]=g.useReducer(u=>u+1,0),i=g.useMemo(()=>$({control:t,name:r}),[t,r]);return g.useEffect(()=>t.subscribe(r,()=>{s()}),[t,r]),i}function N(e,t){if(Object.is(e,t))return!0;if(typeof e!=typeof t||e==null||t==null||typeof e!="object"||Array.isArray(e)!==Array.isArray(t))return!1;const r=e,s=t,i=Object.keys(r),u=Object.keys(s);return i.length!==u.length?!1:i.every(l=>N(r[l],s[l]))}function oe(e){return typeof e=="boolean"?{valueAsNumber:e}:e??{}}function U(e,t){const r=oe(t),s=e,i=s==null?void 0:s.target;if(!i)return r.setValueAs?r.setValueAs(e):e;let u;if(i.type==="checkbox")u=!!i.checked;else if(i.type==="file")u=i.files;else if(i.type==="select-multiple"||i.multiple)u=Array.from(i.selectedOptions??[]).map(l=>l.value);else if(r.valueAsDate)u=i.value?new Date(String(i.value)):void 0;else if(r.valueAsNumber||i.type==="number"||i.type==="range")if(i.value===""||i.value==null)u=void 0;else{const l=Number(i.value);u=Number.isNaN(l)?void 0:l}else u=i.value;return r.setValueAs?r.setValueAs(u):u}function p(e,t,r){const s=j(t);if(s.length===0)return;let i=e;for(let u=0;u<s.length-1;u+=1){const l=s[u],d=s[u+1],f=i;(f[l]==null||typeof f[l]!="object")&&(f[l]=te(d)?[]:{}),i=f[l]}i[s[s.length-1]]=r}function h(e,t){const r=j(t);if(r.length===0)return;let s=e;for(const u of r.slice(0,-1))if(s=s==null?void 0:s[u],s==null)return;const i=r[r.length-1];if(Array.isArray(s)){s.splice(Number(i),1);return}s==null||delete s[i]}class G{constructor(){this.fieldSubscribers=new Map}subscribe(t,r){const s=this.fieldSubscribers.get(t)??new Set;return s.add(r),this.fieldSubscribers.set(t,s),()=>{s.delete(r),s.size===0&&this.fieldSubscribers.delete(t)}}notify(t,r){const s=this.fieldSubscribers.get(t);if(s)for(const i of Array.from(s))i(r,t)}clear(){this.fieldSubscribers.clear()}}function S(e){return e==null?!1:typeof e!="object"||"type"in e?!0:Array.isArray(e)?e.some(t=>S(t)):Object.keys(e).some(t=>S(e[t]))}function le(e){return{errors:e.errors,touchedFields:e.touchedFields,dirtyFields:e.dirtyFields,isDirty:S(e.dirtyFields),isValid:!S(e.errors),isValidating:S(e.validatingFields),isSubmitting:e.isSubmitting,isSubmitted:e.isSubmitted,submitCount:e.submitCount,validatingFields:e.validatingFields}}function ce(){let e=0,t=new Set,r=new Set;return{begin(){e+=1},commit(){if(e===0||(e-=1,e>0))return;const s={notifications:t,validations:r};return t=new Set,r=new Set,s},queueNotification(s){return e===0?!1:(t.add(s),!0)},queueValidation(s){return e===0?!1:(r.add(s),!0)}}}function de(e,t,r,s,i){const u=r;t.set(u,s),e.set(u,{ref:s,options:i})}function fe(e,t,r){const s=r;t.delete(s),e.delete(s)}function D(e){return F(e??{})}function ye(e,t,r,s){const i=y(t,s),u=y(r,s);N(i,u)?h(e,s):p(e,s,!0)}function H(e){const t=e;return async r=>{var s;try{return{values:await t.validate(r,{abortEarly:!1}),errors:{}}}catch(i){const u=i,l={},d=(s=u.inner)!=null&&s.length?u.inner:[u];for(const f of d)f.path&&p(l,f.path,{type:f.type??"yup",message:f.message});return{values:{},errors:l}}}}function J(e){const t=e;return async r=>{var u,l;const s=t.safeParseAsync?await t.safeParseAsync(r):(u=t.safeParse)==null?void 0:u.call(t,r);if(!s)return{values:r,errors:{}};if(s.success)return{values:s.data,errors:{}};const i={};for(const d of((l=s.error)==null?void 0:l.issues)??[])p(i,d.path.join("."),{type:d.code??"zod",message:d.message});return{values:{},errors:i}}}function E(e){return typeof e=="string"?{type:"validate",message:e}:e}function be(e){const t=e;if(t){if(typeof t.safeParseAsync=="function"||typeof t.safeParse=="function")return J(e);if(typeof t.validate=="function")return H(e)}}function ge(e){var r;const t=e;(r=t==null?void 0:t.preventDefault)==null||r.call(t)}function ve(e,t){const r=[...e];if(t.type==="remove")r.splice(t.index,1);else if(t.type==="insert")r.splice(t.index,0,void 0);else if(t.type==="move"){const[s]=r.splice(t.from,1);r.splice(t.to,0,s)}else if(t.type==="swap")[r[t.left],r[t.right]]=[r[t.right],r[t.left]];else if(t.type==="replace")return[];for(;r.length>0&&r[r.length-1]===void 0;)r.pop();return r}function L(e={}){const t=e.resolver??be(e.schema),r=e.mode??"onSubmit",s=e.reValidateMode??"onChange",i=new G,u=new Set,l=new Map,d=new Map,f=ce(),a={values:D(e.defaultValues),defaultValues:D(e.defaultValues),errors:{},touchedFields:{},dirtyFields:{},validatingFields:{},registeredFields:new Map,refs:new Map,isSubmitting:!1,isSubmitted:!1,submitCount:0};function V(){return le(a)}function w(){const n=V();for(const o of Array.from(u)){const c=o.selector(n);N(c,o.last)||(o.last=F(c),o.callback(c))}}function A(n){f.queueNotification(n)||(i.notify(n,y(a.values,n)),w())}function Q(n){ye(a.dirtyFields,a.values,a.defaultValues,n)}function R(n,o){o?p(a.validatingFields,n,!0):h(a.validatingFields,n),w()}async function X(n,o){if(o<=0)return;const c=d.get(n);c&&clearTimeout(c),await new Promise(b=>{const M=setTimeout(()=>{d.delete(n),b()},o);d.set(n,M)})}async function Y(n){var q;const o=a.registeredFields.get(n),c=o==null?void 0:o.options,b=y(a.values,n);if(c!=null&&c.disabled)return;if(c!=null&&c.required&&(b==null||b===""||Array.isArray(b)&&b.length===0||b===!1))return{type:"required",message:typeof c.required=="string"?c.required:"This field is required"};if(c!=null&&c.validate){const m=await c.validate(b,a.values);if(m!==!0&&m!=null)return E(m)}const M=(q=e.asyncValidators)==null?void 0:q[n];if(M){await X(n,(c==null?void 0:c.debounceMs)??e.asyncValidatorDebounceMs??0);const m=await M(b,a.values);if(m!==!0&&m!=null)return E(m)}}function Z(n){return r==="onChange"||!!y(a.errors,n)&&s==="onChange"}function O(n){return r==="onBlur"||!!y(a.errors,n)&&s==="onBlur"}function ee(n,o){for(const c of[a.errors,a.touchedFields,a.dirtyFields]){const b=y(c,n);if(Array.isArray(b)){const M=ve(b,o);M.length===0?h(c,n):p(c,n,M)}}}const v={get formState(){return V()},getValue(n){return y(a.values,n)},getValues(){return F(a.values)},setValue(n,o,c={}){p(a.values,n,o),(c.shouldDirty??!0)&&Q(n),c.shouldTouch&&p(a.touchedFields,n,!0),c.shouldValidate&&(f.queueValidation(n)||v.validateField(n)),A(n)},setError(n,o){p(a.errors,n,o),A(n)},clearError(n){h(a.errors,n),A(n)},register(n,o){return a.registeredFields.set(n,{ref:a.refs.get(n),options:o}),{name:n,ref:c=>{v.registerField(n,c,o)},onChange:c=>{if(o!=null&&o.disabled)return;const b=U(c,o);v.setValue(n,b,{shouldDirty:!0,shouldValidate:Z(n)})},onBlur:()=>{o!=null&&o.disabled||(p(a.touchedFields,n,!0),O(n)&&(f.queueValidation(n)||v.validateField(n)),A(n))}}},registerField(n,o,c){de(a.registeredFields,a.refs,n,o,c)},unregisterField(n){fe(a.registeredFields,a.refs,n),e.shouldUnregister&&(h(a.values,n),h(a.errors,n),h(a.touchedFields,n),h(a.dirtyFields,n),A(n))},subscribe(n,o){return i.subscribe(n,o)},subscribeFormState(n,o){const c={selector:n,callback:o,last:F(n(V()))};return u.add(c),()=>{u.delete(c)}},notify(n){A(n)},reset(n){a.defaultValues=D(n??e.defaultValues),a.values=D(n??e.defaultValues),a.errors={},a.touchedFields={},a.dirtyFields={},a.validatingFields={},a.isSubmitting=!1,a.isSubmitted=!1,a.submitCount=0;const o=new Set(a.registeredFields.keys());for(const c of o)A(c);w()},async validateField(n){const o=n,c=(l.get(o)??0)+1;l.set(o,c),R(o,!0);try{const b=await Y(o);return l.get(o)!==c?!S(y(a.errors,o)):(b?p(a.errors,o,b):h(a.errors,o),A(o),!b)}finally{l.get(o)===c&&R(o,!1)}},async validateForm(){let n=!0;if(t){const o=await t(F(a.values));a.errors=F(o.errors),!S(o.errors)&&Object.keys(o.values).length>0&&(a.values=F(o.values)),n=!S(a.errors)}for(const o of Array.from(a.registeredFields.keys()))n=await v.validateField(o)&&n;return w(),n&&!S(a.errors)},handleSubmit(n,o){return async c=>{ge(c),a.isSubmitting=!0,w();try{await v.validateForm()?await n(v.getValues(),c):await(o==null?void 0:o(a.errors,c)),a.isSubmitted=!0,a.submitCount+=1}finally{a.isSubmitting=!1,w()}}},watch:(n,o)=>typeof n=="string"&&o?i.subscribe(n,o):typeof n=="string"?y(a.values,n):v.getValues(),beginTransaction(){f.begin()},commitTransaction(){const n=f.commit();if(n){for(const o of n.validations)v.validateField(o);for(const o of n.notifications)i.notify(o,y(a.values,o));w()}},transaction(n){v.beginTransaction();try{n()}finally{v.commitTransaction()}},_updateFieldArrayMetadata:ee};return v}function pe(e={}){const[t]=g.useState(()=>{const r=L(e);return Object.assign(r,{control:r})});return t}function Fe({control:e,selector:t}){const r=g.useRef(0),s=g.useCallback(()=>r.current,[]),i=g.useCallback(u=>e.subscribeFormState(t,()=>{r.current+=1,u()}),[e,t]);return g.useSyncExternalStore(i,s,s),t(e.formState)}exports.Controller=ne;exports.SubscriptionManager=G;exports.createFieldArray=$;exports.createFormControl=L;exports.get=y;exports.getInputValue=U;exports.isEqual=N;exports.set=p;exports.unset=h;exports.useController=W;exports.useField=z;exports.useFieldArray=ae;exports.useForm=pe;exports.useFormState=Fe;exports.useWatch=I;exports.yupResolver=H;exports.zodResolver=J;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../src/utils/path.ts","../src/utils/get.ts","../src/hooks/useField.ts","../src/hooks/useWatch.ts","../src/hooks/useController.ts","../src/hooks/Controller.tsx","../src/core/fieldArrayState.ts","../src/utils/clone.ts","../src/hooks/useFieldArray.ts","../src/utils/isEqual.ts","../src/utils/getInputValue.ts","../src/utils/set.ts","../src/utils/unset.ts","../src/core/subscriptionManager.ts","../src/core/formState.ts","../src/core/transactionManager.ts","../src/core/fieldRegistry.ts","../src/core/store.ts","../src/resolvers/yupResolver.ts","../src/resolvers/zodResolver.ts","../src/core/validationEngine.ts","../src/core/createFormControl.ts","../src/hooks/useForm.ts","../src/hooks/useFormState.ts"],"sourcesContent":["export function splitPath(path: string): string[] {\n return path.split(\".\").filter(Boolean);\n}\n\nexport function isIndex(segment: string): boolean {\n return /^(0|[1-9]\\d*)$/.test(segment);\n}\n","import { splitPath } from \"./path\";\n\nexport function get<T = unknown>(source: unknown, path: string, fallback?: T): T {\n if (!path) {\n return source as T;\n }\n\n let current = source as Record<string, unknown> | unknown[] | null | undefined;\n\n for (const segment of splitPath(path)) {\n if (current == null) {\n return fallback as T;\n }\n\n current = (current as Record<string, unknown>)[segment] as\n Record<string, unknown> | unknown[] | null | undefined;\n }\n\n return current === undefined ? (fallback as T) : (current as T);\n}\n","import { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport type { FieldSnapshot, FieldValues, FormControl } from \"../types/form\";\nimport type { Path } from \"../types/path\";\nimport { get } from \"../utils/get\";\n\nfunction getSnapshot<T extends FieldValues, P extends Path<T>>(\n control: FormControl<T>,\n name: P,\n): FieldSnapshot<T, P> {\n return {\n value: control.getValue(name),\n error: get(control.formState.errors, name as string),\n isDirty: Boolean(get(control.formState.dirtyFields, name as string)),\n isTouched: Boolean(get(control.formState.touchedFields, name as string)),\n isValidating: Boolean(get(control.formState.validatingFields, name as string)),\n };\n}\n\nexport function useField<T extends FieldValues, P extends Path<T>>(\n control: FormControl<T>,\n name: P,\n): FieldSnapshot<T, P> {\n const versionRef = useRef(0);\n const getVersion = useCallback(() => versionRef.current, []);\n const subscribe = useCallback(\n (onStoreChange: () => void) => {\n const update = () => {\n versionRef.current += 1;\n onStoreChange();\n };\n const unsubscribeField = control.subscribe(name, update);\n const unsubscribeState = control.subscribeFormState(\n (state) => ({\n error: get(state.errors, name as string),\n dirty: get(state.dirtyFields, name as string),\n touched: get(state.touchedFields, name as string),\n validating: get(state.validatingFields, name as string),\n }),\n update,\n );\n\n return () => {\n unsubscribeField();\n unsubscribeState();\n };\n },\n [control, name],\n );\n\n useSyncExternalStore(subscribe, getVersion, getVersion);\n\n return getSnapshot(control, name);\n}\n","import { useEffect, useMemo, useState } from \"react\";\nimport type { FieldValues, FormControl } from \"../types/form\";\nimport type { Path, PathValue } from \"../types/path\";\n\ntype WatchName<T extends FieldValues> = Path<T> | readonly Path<T>[];\n\ntype UseWatchBaseOptions<T extends FieldValues> = {\n control: FormControl<T>;\n};\n\nexport type UseWatchOptions<T extends FieldValues, P extends Path<T>> = UseWatchBaseOptions<T> & {\n name: P;\n defaultValue?: PathValue<T, P>;\n};\n\nexport type UseWatchManyOptions<\n T extends FieldValues,\n P extends Path<T>,\n> = UseWatchBaseOptions<T> & {\n name: readonly P[];\n defaultValue?: PathValue<T, P>[];\n};\n\nexport type UseWatchAllOptions<T extends FieldValues> = UseWatchBaseOptions<T> & {\n name?: undefined;\n defaultValue?: T;\n};\n\nfunction isPathArray<T extends FieldValues>(\n name: WatchName<T> | undefined,\n): name is readonly Path<T>[] {\n return Array.isArray(name);\n}\n\nfunction normalizeName<T extends FieldValues>(\n name: WatchName<T> | undefined,\n): Path<T> | Path<T>[] | undefined {\n return isPathArray(name) ? (Array.from(name) as Path<T>[]) : name;\n}\n\nfunction readWatchValue<T extends FieldValues>(\n control: FormControl<T>,\n name: Path<T> | Path<T>[] | undefined,\n defaultValue: unknown,\n): unknown {\n if (Array.isArray(name)) {\n const fieldNames = name as Path<T>[];\n return fieldNames.map((fieldName: Path<T>, index: number) => {\n const value = control.getValue(fieldName);\n return value === undefined && Array.isArray(defaultValue) ? defaultValue[index] : value;\n });\n }\n\n if (name) {\n const value = control.getValue(name);\n return value === undefined ? defaultValue : value;\n }\n\n const values = control.getValues();\n return Object.keys(values).length === 0 && defaultValue !== undefined ? defaultValue : values;\n}\n\nexport function useWatch<T extends FieldValues, P extends Path<T>>(\n options: UseWatchOptions<T, P>,\n): PathValue<T, P>;\nexport function useWatch<T extends FieldValues, P extends Path<T>>(\n options: UseWatchManyOptions<T, P>,\n): PathValue<T, P>[];\nexport function useWatch<T extends FieldValues>(options: UseWatchAllOptions<T>): T;\nexport function useWatch<T extends FieldValues>({\n control,\n name,\n defaultValue,\n}: UseWatchBaseOptions<T> & {\n name?: WatchName<T>;\n defaultValue?: unknown;\n}): unknown {\n const names = useMemo(() => normalizeName(name), [name]);\n const namesKey = Array.isArray(names) ? (names as Path<T>[]).join(\"\\u0000\") : (names ?? \"\");\n const [value, setValue] = useState(() => readWatchValue(control, names, defaultValue));\n\n useEffect(() => {\n const update = () => {\n setValue(readWatchValue(control, names, defaultValue));\n };\n\n if (Array.isArray(names)) {\n const fieldNames = names as Path<T>[];\n const unsubscribers = fieldNames.map((fieldName: Path<T>) =>\n control.subscribe(fieldName, update),\n );\n return () => {\n for (const unsubscribe of unsubscribers) {\n unsubscribe();\n }\n };\n }\n\n if (names) {\n return control.subscribe(names, update);\n }\n\n return control.subscribeFormState(\n () => control.getValues(),\n () => {\n update();\n },\n );\n }, [control, defaultValue, names, namesKey]);\n\n return value;\n}\n","import { useMemo } from \"react\";\nimport type {\n FieldError,\n FieldValues,\n FormControl,\n RegisterOptions,\n RegisterReturn,\n} from \"../types/form\";\nimport type { Path, PathValue } from \"../types/path\";\nimport { useField } from \"./useField\";\nimport { useWatch } from \"./useWatch\";\n\nexport type ControllerField<T extends FieldValues, P extends Path<T>> = RegisterReturn & {\n value: PathValue<T, P>;\n};\n\nexport type ControllerFieldState = {\n error: unknown;\n isDirty: boolean;\n isTouched: boolean;\n isValidating: boolean;\n};\n\nexport type UseControllerOptions<T extends FieldValues, P extends Path<T>> = {\n control: FormControl<T>;\n name: P;\n rules?: RegisterOptions<T, P>;\n defaultValue?: PathValue<T, P>;\n};\n\nexport type UseControllerReturn<T extends FieldValues, P extends Path<T>> = {\n field: ControllerField<T, P>;\n fieldState: ControllerFieldState;\n};\n\nexport function useController<T extends FieldValues, P extends Path<T>>({\n control,\n name,\n rules,\n defaultValue,\n}: UseControllerOptions<T, P>): UseControllerReturn<T, P> {\n const registered = useMemo(() => control.register(name, rules), [control, name, rules]);\n const value = useWatch({ control, name, defaultValue });\n const fieldState = useField(control, name);\n\n return {\n field: {\n ...registered,\n value,\n },\n fieldState: {\n error: fieldState.error as FieldError | undefined,\n isDirty: fieldState.isDirty,\n isTouched: fieldState.isTouched,\n isValidating: fieldState.isValidating,\n },\n };\n}\n","import type { FieldValues } from \"../types/form\";\nimport type { Path } from \"../types/path\";\nimport {\n type UseControllerOptions,\n type UseControllerReturn,\n useController,\n} from \"./useController\";\n\nexport type ControllerProps<T extends FieldValues, P extends Path<T>> = UseControllerOptions<\n T,\n P\n> & {\n render: (props: UseControllerReturn<T, P>) => React.ReactElement | null;\n};\n\nexport function Controller<T extends FieldValues, P extends Path<T>>({\n render,\n ...options\n}: ControllerProps<T, P>): React.ReactElement | null {\n return render(useController(options));\n}\n","const idsByControl = new WeakMap<object, Map<string, string[]>>();\nlet nextId = 0;\n\nfunction createId(): string {\n nextId += 1;\n return `field-array-${nextId}`;\n}\n\nfunction getControlMap(control: object): Map<string, string[]> {\n let controlMap = idsByControl.get(control);\n if (!controlMap) {\n controlMap = new Map();\n idsByControl.set(control, controlMap);\n }\n return controlMap;\n}\n\nexport function getFieldArrayIds(control: object, name: string, length: number): string[] {\n const controlMap = getControlMap(control);\n const ids = controlMap.get(name) ?? [];\n while (ids.length < length) {\n ids.push(createId());\n }\n if (ids.length > length) {\n ids.length = length;\n }\n controlMap.set(name, ids);\n return ids;\n}\n\nexport function setFieldArrayIds(control: object, name: string, ids: string[]): void {\n getControlMap(control).set(name, ids);\n}\n\nexport function createFieldArrayId(): string {\n return createId();\n}\n\nexport type FieldArrayMetadataOperation =\n | { type: \"append\" }\n | { type: \"remove\"; index: number }\n | { type: \"insert\"; index: number }\n | { type: \"move\"; from: number; to: number }\n | { type: \"swap\"; left: number; right: number }\n | { type: \"replace\" };\n","export function clone<T>(value: T): T {\n if (value == null || typeof value !== \"object\") {\n return value;\n }\n\n if (value instanceof Date) {\n return new Date(value.getTime()) as T;\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => clone(item)) as T;\n }\n\n const result: Record<string, unknown> = {};\n for (const key of Object.keys(value as Record<string, unknown>)) {\n result[key] = clone((value as Record<string, unknown>)[key]);\n }\n\n return result as T;\n}\n","import { useEffect, useMemo, useReducer } from \"react\";\nimport type { FieldValues, FormControl } from \"../types/form\";\nimport type { Path, PathValue } from \"../types/path\";\nimport {\n createFieldArrayId,\n type FieldArrayMetadataOperation,\n getFieldArrayIds,\n setFieldArrayIds,\n} from \"../core/fieldArrayState\";\nimport { clone } from \"../utils/clone\";\n\ntype ArrayItem<T extends FieldValues, P extends Path<T>> =\n PathValue<T, P> extends Array<infer Item> ? Item : never;\n\nexport type FieldArrayItem<T extends FieldValues, P extends Path<T>> = ArrayItem<T, P> & {\n id: string;\n};\n\nexport type FieldArrayReturn<T extends FieldValues, P extends Path<T>> = {\n readonly fields: FieldArrayItem<T, P>[];\n append(value: ArrayItem<T, P>): void;\n remove(index: number): void;\n insert(index: number, value: ArrayItem<T, P>): void;\n move(from: number, to: number): void;\n swap(left: number, right: number): void;\n replace(values: ArrayItem<T, P>[]): void;\n};\n\nexport type UseFieldArrayOptions<T extends FieldValues, P extends Path<T>> = {\n control: FormControl<T>;\n name: P;\n};\n\nfunction currentArray<T extends FieldValues, P extends Path<T>>(\n control: FormControl<T>,\n name: P,\n): ArrayItem<T, P>[] {\n const value = control.getValue(name);\n return Array.isArray(value) ? clone(value as ArrayItem<T, P>[]) : [];\n}\n\nexport function createFieldArray<T extends FieldValues, P extends Path<T>>({\n control,\n name,\n}: UseFieldArrayOptions<T, P>): FieldArrayReturn<T, P> {\n const arrayName = name as string;\n\n function update(\n values: ArrayItem<T, P>[],\n ids: string[],\n operation: FieldArrayMetadataOperation,\n ): void {\n setFieldArrayIds(control, arrayName, ids);\n const metadataControl = control as FormControl<T> & {\n _updateFieldArrayMetadata?: (name: string, operation: FieldArrayMetadataOperation) => void;\n };\n metadataControl._updateFieldArrayMetadata?.(arrayName, operation);\n control.setValue(name, values as PathValue<T, P>, {\n shouldDirty: true,\n shouldValidate: true,\n });\n }\n\n return {\n get fields() {\n const values = currentArray(control, name);\n const ids = getFieldArrayIds(control, arrayName, values.length);\n return values.map((value, index) =>\n Object.assign({}, value, { id: ids[index] }),\n ) as FieldArrayItem<T, P>[];\n },\n\n append(value) {\n const values = currentArray(control, name);\n const ids = getFieldArrayIds(control, arrayName, values.length);\n update([...values, value], [...ids, createFieldArrayId()], { type: \"append\" });\n },\n\n remove(index) {\n const values = currentArray(control, name);\n const ids = getFieldArrayIds(control, arrayName, values.length);\n if (index < 0 || index >= values.length) {\n return;\n }\n values.splice(index, 1);\n ids.splice(index, 1);\n update(values, ids, { type: \"remove\", index });\n },\n\n insert(index, value) {\n const values = currentArray(control, name);\n const ids = getFieldArrayIds(control, arrayName, values.length);\n values.splice(index, 0, value);\n ids.splice(index, 0, createFieldArrayId());\n update(values, ids, { type: \"insert\", index });\n },\n\n move(from, to) {\n const values = currentArray(control, name);\n const ids = getFieldArrayIds(control, arrayName, values.length);\n const [value] = values.splice(from, 1);\n const [id] = ids.splice(from, 1);\n values.splice(to, 0, value);\n ids.splice(to, 0, id);\n update(values, ids, { type: \"move\", from, to });\n },\n\n swap(left, right) {\n const values = currentArray(control, name);\n const ids = getFieldArrayIds(control, arrayName, values.length);\n [values[left], values[right]] = [values[right], values[left]];\n [ids[left], ids[right]] = [ids[right], ids[left]];\n update(values, ids, { type: \"swap\", left, right });\n },\n\n replace(values) {\n update(\n clone(values),\n values.map(() => createFieldArrayId()),\n { type: \"replace\" },\n );\n },\n };\n}\n\nexport function useFieldArray<T extends FieldValues, P extends Path<T>>(\n options: UseFieldArrayOptions<T, P>,\n): FieldArrayReturn<T, P> {\n const { control, name } = options;\n const [, forceRender] = useReducer((value: number) => value + 1, 0);\n const array = useMemo(() => createFieldArray({ control, name }), [control, name]);\n\n useEffect(() => {\n return control.subscribe(name, () => {\n forceRender();\n });\n }, [control, name]);\n\n return array;\n}\n","export function isEqual(left: unknown, right: unknown): boolean {\n if (Object.is(left, right)) {\n return true;\n }\n\n if (typeof left !== typeof right) {\n return false;\n }\n\n if (left == null || right == null || typeof left !== \"object\") {\n return false;\n }\n\n if (Array.isArray(left) !== Array.isArray(right)) {\n return false;\n }\n\n const leftRecord = left as Record<string, unknown>;\n const rightRecord = right as Record<string, unknown>;\n const leftKeys = Object.keys(leftRecord);\n const rightKeys = Object.keys(rightRecord);\n\n if (leftKeys.length !== rightKeys.length) {\n return false;\n }\n\n return leftKeys.every((key) => isEqual(leftRecord[key], rightRecord[key]));\n}\n","type InputLike = {\n type?: string;\n value?: unknown;\n checked?: boolean;\n files?: FileList | null;\n multiple?: boolean;\n selectedOptions?: ArrayLike<{ value: string }>;\n};\n\nexport type GetInputValueOptions = {\n valueAsNumber?: boolean;\n valueAsDate?: boolean;\n setValueAs?: (value: unknown) => unknown;\n};\n\nfunction normalizeOptions(options?: boolean | GetInputValueOptions): GetInputValueOptions {\n return typeof options === \"boolean\" ? { valueAsNumber: options } : (options ?? {});\n}\n\nexport function getInputValue(\n eventOrValue: unknown,\n options?: boolean | GetInputValueOptions,\n): unknown {\n const valueOptions = normalizeOptions(options);\n const maybeEvent = eventOrValue as { target?: InputLike };\n const target = maybeEvent?.target;\n\n if (!target) {\n return valueOptions.setValueAs ? valueOptions.setValueAs(eventOrValue) : eventOrValue;\n }\n\n let value: unknown;\n\n if (target.type === \"checkbox\") {\n value = Boolean(target.checked);\n } else if (target.type === \"file\") {\n value = target.files;\n } else if (target.type === \"select-multiple\" || target.multiple) {\n value = Array.from(target.selectedOptions ?? []).map((option) => option.value);\n } else if (valueOptions.valueAsDate) {\n value = target.value ? new Date(String(target.value)) : undefined;\n } else if (valueOptions.valueAsNumber || target.type === \"number\" || target.type === \"range\") {\n if (target.value === \"\" || target.value == null) {\n value = undefined;\n } else {\n const parsed = Number(target.value);\n value = Number.isNaN(parsed) ? undefined : parsed;\n }\n } else {\n value = target.value;\n }\n\n return valueOptions.setValueAs ? valueOptions.setValueAs(value) : value;\n}\n","import { isIndex, splitPath } from \"./path\";\n\nexport function set(target: unknown, path: string, value: unknown): void {\n const segments = splitPath(path);\n if (segments.length === 0) {\n return;\n }\n\n let current = target as Record<string, unknown> | unknown[];\n\n for (let index = 0; index < segments.length - 1; index += 1) {\n const segment = segments[index];\n const nextSegment = segments[index + 1];\n const record = current as Record<string, unknown>;\n\n if (record[segment] == null || typeof record[segment] !== \"object\") {\n record[segment] = isIndex(nextSegment) ? [] : {};\n }\n\n current = record[segment] as Record<string, unknown> | unknown[];\n }\n\n (current as Record<string, unknown>)[segments[segments.length - 1]] = value;\n}\n","import { splitPath } from \"./path\";\n\nexport function unset(target: unknown, path: string): void {\n const segments = splitPath(path);\n if (segments.length === 0) {\n return;\n }\n\n let current = target as Record<string, unknown> | null | undefined;\n for (const segment of segments.slice(0, -1)) {\n current = current?.[segment] as Record<string, unknown> | null | undefined;\n if (current == null) {\n return;\n }\n }\n\n const last = segments[segments.length - 1];\n if (Array.isArray(current)) {\n current.splice(Number(last), 1);\n return;\n }\n\n delete current?.[last];\n}\n","export type FieldSubscriber<TValue = unknown> = (value: TValue, name: string) => void;\n\nexport class SubscriptionManager {\n private readonly fieldSubscribers = new Map<string, Set<FieldSubscriber>>();\n\n subscribe<TValue>(name: string, callback: FieldSubscriber<TValue>): () => void {\n const subscribers = this.fieldSubscribers.get(name) ?? new Set<FieldSubscriber>();\n subscribers.add(callback as FieldSubscriber);\n this.fieldSubscribers.set(name, subscribers);\n\n return () => {\n subscribers.delete(callback as FieldSubscriber);\n if (subscribers.size === 0) {\n this.fieldSubscribers.delete(name);\n }\n };\n }\n\n notify<TValue>(name: string, value: TValue): void {\n const subscribers = this.fieldSubscribers.get(name);\n if (!subscribers) {\n return;\n }\n\n for (const subscriber of Array.from(subscribers)) {\n subscriber(value, name);\n }\n }\n\n clear(): void {\n this.fieldSubscribers.clear();\n }\n}\n","import type { FieldValues, FormErrors, FormState } from \"../types/form\";\n\nexport type FormStateSource<T extends FieldValues> = {\n errors: FormErrors<T>;\n touchedFields: Record<string, unknown>;\n dirtyFields: Record<string, unknown>;\n validatingFields: Record<string, unknown>;\n isSubmitting: boolean;\n isSubmitted: boolean;\n submitCount: number;\n};\n\nexport function hasStateTreeValue(value: unknown): boolean {\n if (value == null) {\n return false;\n }\n\n if (typeof value !== \"object\") {\n return true;\n }\n\n if (\"type\" in (value as Record<string, unknown>)) {\n return true;\n }\n\n if (Array.isArray(value)) {\n return value.some((item) => hasStateTreeValue(item));\n }\n\n return Object.keys(value as Record<string, unknown>).some((key) =>\n hasStateTreeValue((value as Record<string, unknown>)[key]),\n );\n}\n\nexport function createFormStateSnapshot<T extends FieldValues>(\n source: FormStateSource<T>,\n): FormState<T> {\n return {\n errors: source.errors,\n touchedFields: source.touchedFields as FormState<T>[\"touchedFields\"],\n dirtyFields: source.dirtyFields as FormState<T>[\"dirtyFields\"],\n isDirty: hasStateTreeValue(source.dirtyFields),\n isValid: !hasStateTreeValue(source.errors),\n isValidating: hasStateTreeValue(source.validatingFields),\n isSubmitting: source.isSubmitting,\n isSubmitted: source.isSubmitted,\n submitCount: source.submitCount,\n validatingFields: source.validatingFields as FormState<T>[\"validatingFields\"],\n };\n}\n","export type TransactionCommitPayload = {\n notifications: Set<string>;\n validations: Set<string>;\n};\n\nexport function createTransactionManager() {\n let depth = 0;\n let pendingNotifications = new Set<string>();\n let pendingValidations = new Set<string>();\n\n return {\n begin() {\n depth += 1;\n },\n commit(): TransactionCommitPayload | undefined {\n if (depth === 0) {\n return undefined;\n }\n depth -= 1;\n if (depth > 0) {\n return undefined;\n }\n\n const payload = {\n notifications: pendingNotifications,\n validations: pendingValidations,\n };\n pendingNotifications = new Set();\n pendingValidations = new Set();\n return payload;\n },\n queueNotification(name: string): boolean {\n if (depth === 0) {\n return false;\n }\n pendingNotifications.add(name);\n return true;\n },\n queueValidation(name: string): boolean {\n if (depth === 0) {\n return false;\n }\n pendingValidations.add(name);\n return true;\n },\n };\n}\n","import type { FieldValues, RegisterOptions } from \"../types/form\";\nimport type { Path } from \"../types/path\";\n\nexport type RegisteredField<T extends FieldValues> = {\n ref: unknown;\n options?: RegisterOptions<T, any>;\n};\n\nexport function setRegisteredField<T extends FieldValues>(\n fields: Map<string, RegisteredField<T>>,\n refs: Map<string, unknown>,\n name: Path<T>,\n ref: unknown,\n options?: RegisterOptions<T, any>,\n): void {\n const key = name as string;\n refs.set(key, ref);\n fields.set(key, { ref, options });\n}\n\nexport function unsetRegisteredField<T extends FieldValues>(\n fields: Map<string, RegisteredField<T>>,\n refs: Map<string, unknown>,\n name: Path<T>,\n): void {\n const key = name as string;\n refs.delete(key);\n fields.delete(key);\n}\n","import type { DeepPartial, FieldValues } from \"../types/form\";\nimport { clone } from \"../utils/clone\";\nimport { get } from \"../utils/get\";\nimport { isEqual } from \"../utils/isEqual\";\nimport { set } from \"../utils/set\";\nimport { unset } from \"../utils/unset\";\n\nexport function cloneFormValues<T extends FieldValues>(value?: DeepPartial<T> | T): T {\n return clone((value ?? {}) as T);\n}\n\nexport function updateDirtyField(\n dirtyFields: Record<string, unknown>,\n values: unknown,\n defaultValues: unknown,\n name: string,\n): void {\n const current = get(values, name);\n const original = get(defaultValues, name);\n if (isEqual(current, original)) {\n unset(dirtyFields, name);\n } else {\n set(dirtyFields, name, true);\n }\n}\n","import type { FieldValues, FormErrors } from \"../types/form\";\nimport type { Resolver } from \"../types/resolver\";\nimport { set } from \"../utils/set\";\n\ntype YupError = {\n path?: string;\n message: string;\n type?: string;\n inner?: YupError[];\n};\n\ntype YupLikeSchema = {\n validate: (values: unknown, options: { abortEarly: boolean }) => Promise<unknown>;\n};\n\nexport function yupResolver<T extends FieldValues>(schema: unknown): Resolver<T> {\n const yupSchema = schema as YupLikeSchema;\n\n return async (values: T) => {\n try {\n const parsed = await yupSchema.validate(values, { abortEarly: false });\n return { values: parsed as T, errors: {} as FormErrors<T> };\n } catch (error) {\n const yupError = error as YupError;\n const errors = {} as FormErrors<T>;\n const items = yupError.inner?.length ? yupError.inner : [yupError];\n\n for (const item of items) {\n if (!item.path) {\n continue;\n }\n set(errors, item.path, {\n type: item.type ?? \"yup\",\n message: item.message,\n });\n }\n\n return { values: {}, errors };\n }\n };\n}\n","import type { FieldValues, FormErrors } from \"../types/form\";\nimport type { Resolver } from \"../types/resolver\";\nimport { set } from \"../utils/set\";\n\ntype ZodIssue = {\n path: Array<string | number>;\n message: string;\n code?: string;\n};\n\ntype ZodLikeSchema = {\n safeParseAsync?: (\n values: unknown,\n ) => Promise<{ success: boolean; data?: unknown; error?: { issues: ZodIssue[] } }>;\n safeParse?: (values: unknown) => {\n success: boolean;\n data?: unknown;\n error?: { issues: ZodIssue[] };\n };\n};\n\nexport function zodResolver<T extends FieldValues>(schema: unknown): Resolver<T> {\n const zodSchema = schema as ZodLikeSchema;\n\n return async (values: T) => {\n const result = zodSchema.safeParseAsync\n ? await zodSchema.safeParseAsync(values)\n : zodSchema.safeParse?.(values);\n\n if (!result) {\n return { values, errors: {} as FormErrors<T> };\n }\n\n if (result.success) {\n return { values: result.data as T, errors: {} as FormErrors<T> };\n }\n\n const errors = {} as FormErrors<T>;\n for (const issue of result.error?.issues ?? []) {\n set(errors, issue.path.join(\".\"), {\n type: issue.code ?? \"zod\",\n message: issue.message,\n });\n }\n\n return { values: {}, errors };\n };\n}\n","import type { FieldError, FieldValues, ValidateResult } from \"../types/form\";\nimport type { Resolver } from \"../types/resolver\";\nimport { yupResolver } from \"../resolvers/yupResolver\";\nimport { zodResolver } from \"../resolvers/zodResolver\";\n\nexport function toFieldError(result: Exclude<ValidateResult, true | undefined | null>): FieldError {\n if (typeof result === \"string\") {\n return { type: \"validate\", message: result };\n }\n\n return result;\n}\n\nexport function resolverFromSchema<T extends FieldValues>(\n schema: unknown,\n): Resolver<T> | undefined {\n const record = schema as Record<string, unknown> | undefined;\n if (!record) {\n return undefined;\n }\n\n if (typeof record.safeParseAsync === \"function\" || typeof record.safeParse === \"function\") {\n return zodResolver(schema);\n }\n\n if (typeof record.validate === \"function\") {\n return yupResolver(schema);\n }\n\n return undefined;\n}\n","import type {\n FieldError,\n FieldValues,\n FormControl,\n FormErrors,\n FormState,\n RegisterOptions,\n UseFormOptions,\n ValidateResult,\n ValidationMode,\n} from \"../types/form\";\nimport { isEqual } from \"../utils/isEqual\";\nimport type { Path, PathValue } from \"../types/path\";\nimport { clone } from \"../utils/clone\";\nimport { get } from \"../utils/get\";\nimport { getInputValue } from \"../utils/getInputValue\";\nimport { set } from \"../utils/set\";\nimport { unset } from \"../utils/unset\";\nimport { SubscriptionManager } from \"./subscriptionManager\";\nimport type { FieldArrayMetadataOperation } from \"./fieldArrayState\";\nimport { createFormStateSnapshot, hasStateTreeValue } from \"./formState\";\nimport { createTransactionManager } from \"./transactionManager\";\nimport { setRegisteredField, unsetRegisteredField, type RegisteredField } from \"./fieldRegistry\";\nimport { cloneFormValues, updateDirtyField } from \"./store\";\nimport { resolverFromSchema, toFieldError } from \"./validationEngine\";\n\ntype AnyPath = string;\ntype FormStateSubscriber<T extends FieldValues, S> = {\n selector: (state: FormState<T>) => S;\n callback: (selected: S) => void;\n last: S;\n};\n\ntype InternalState<T extends FieldValues> = {\n values: T;\n defaultValues: T;\n errors: FormErrors<T>;\n touchedFields: Record<string, unknown>;\n dirtyFields: Record<string, unknown>;\n validatingFields: Record<string, unknown>;\n registeredFields: Map<AnyPath, RegisteredField<T>>;\n refs: Map<AnyPath, unknown>;\n isSubmitting: boolean;\n isSubmitted: boolean;\n submitCount: number;\n};\n\nfunction eventPreventDefault(event: unknown): void {\n const maybeEvent = event as { preventDefault?: () => void };\n maybeEvent?.preventDefault?.();\n}\n\nfunction applyArrayOperation(array: unknown[], operation: FieldArrayMetadataOperation): unknown[] {\n const next = [...array];\n if (operation.type === \"remove\") {\n next.splice(operation.index, 1);\n } else if (operation.type === \"insert\") {\n next.splice(operation.index, 0, undefined);\n } else if (operation.type === \"move\") {\n const [item] = next.splice(operation.from, 1);\n next.splice(operation.to, 0, item);\n } else if (operation.type === \"swap\") {\n [next[operation.left], next[operation.right]] = [next[operation.right], next[operation.left]];\n } else if (operation.type === \"replace\") {\n return [];\n }\n while (next.length > 0 && next[next.length - 1] === undefined) {\n next.pop();\n }\n return next;\n}\n\nexport function createFormControl<T extends FieldValues>(\n options: UseFormOptions<T> = {},\n): FormControl<T> {\n const resolver = options.resolver ?? resolverFromSchema<T>(options.schema);\n const mode: ValidationMode = options.mode ?? \"onSubmit\";\n const reValidateMode: ValidationMode = options.reValidateMode ?? \"onChange\";\n const subscriptions = new SubscriptionManager();\n const formStateSubscribers = new Set<FormStateSubscriber<T, unknown>>();\n const asyncValidationTokens = new Map<AnyPath, number>();\n const debounceTimers = new Map<AnyPath, ReturnType<typeof setTimeout>>();\n const transactions = createTransactionManager();\n\n const state: InternalState<T> = {\n values: cloneFormValues(options.defaultValues),\n defaultValues: cloneFormValues(options.defaultValues),\n errors: {} as FormErrors<T>,\n touchedFields: {},\n dirtyFields: {},\n validatingFields: {},\n registeredFields: new Map(),\n refs: new Map(),\n isSubmitting: false,\n isSubmitted: false,\n submitCount: 0,\n };\n\n function formStateSnapshot(): FormState<T> {\n return createFormStateSnapshot(state);\n }\n\n function notifyFormState(): void {\n const snapshot = formStateSnapshot();\n for (const subscriber of Array.from(formStateSubscribers)) {\n const next = subscriber.selector(snapshot);\n if (!isEqual(next, subscriber.last)) {\n subscriber.last = clone(next);\n subscriber.callback(next);\n }\n }\n }\n\n function notify(name: string): void {\n if (transactions.queueNotification(name)) {\n return;\n }\n\n subscriptions.notify(name, get(state.values, name));\n notifyFormState();\n }\n\n function markDirty(name: string): void {\n updateDirtyField(state.dirtyFields, state.values, state.defaultValues, name);\n }\n\n function setValidationInFlight(name: string, inFlight: boolean): void {\n if (inFlight) {\n set(state.validatingFields, name, true);\n } else {\n unset(state.validatingFields, name);\n }\n notifyFormState();\n }\n\n async function maybeDebounce(name: string, delay: number): Promise<void> {\n if (delay <= 0) {\n return;\n }\n\n const existing = debounceTimers.get(name);\n if (existing) {\n clearTimeout(existing);\n }\n\n await new Promise<void>((resolve) => {\n const timer = setTimeout(() => {\n debounceTimers.delete(name);\n resolve();\n }, delay);\n debounceTimers.set(name, timer);\n });\n }\n\n async function runFieldValidator(name: string): Promise<FieldError | undefined> {\n const registered = state.registeredFields.get(name);\n const fieldOptions = registered?.options;\n const value = get(state.values, name);\n\n if (fieldOptions?.disabled) {\n return undefined;\n }\n\n if (fieldOptions?.required) {\n const empty =\n value == null ||\n value === \"\" ||\n (Array.isArray(value) && value.length === 0) ||\n value === false;\n if (empty) {\n return {\n type: \"required\",\n message:\n typeof fieldOptions.required === \"string\"\n ? fieldOptions.required\n : \"This field is required\",\n };\n }\n }\n\n if (fieldOptions?.validate) {\n const result = await fieldOptions.validate(value as PathValue<T, Path<T>>, state.values);\n if (result !== true && result != null) {\n return toFieldError(result);\n }\n }\n\n const asyncValidator = (options.asyncValidators as Record<string, unknown> | undefined)?.[\n name\n ] as ((value: unknown, values: T) => ValidateResult | Promise<ValidateResult>) | undefined;\n if (asyncValidator) {\n await maybeDebounce(name, fieldOptions?.debounceMs ?? options.asyncValidatorDebounceMs ?? 0);\n const result = await asyncValidator(value as never, state.values);\n if (result !== true && result != null) {\n return toFieldError(result);\n }\n }\n\n return undefined;\n }\n\n function shouldValidateOnChange(name: string): boolean {\n return (\n mode === \"onChange\" || (Boolean(get(state.errors, name)) && reValidateMode === \"onChange\")\n );\n }\n\n function shouldValidateOnBlur(name: string): boolean {\n return mode === \"onBlur\" || (Boolean(get(state.errors, name)) && reValidateMode === \"onBlur\");\n }\n\n function updateFieldArrayMetadata(name: string, operation: FieldArrayMetadataOperation): void {\n for (const metadata of [state.errors, state.touchedFields, state.dirtyFields]) {\n const current = get(metadata, name);\n if (Array.isArray(current)) {\n const next = applyArrayOperation(current, operation);\n if (next.length === 0) {\n unset(metadata, name);\n } else {\n set(metadata, name, next);\n }\n }\n }\n }\n\n const control: FormControl<T> & {\n _updateFieldArrayMetadata: (name: string, operation: FieldArrayMetadataOperation) => void;\n } = {\n get formState() {\n return formStateSnapshot();\n },\n\n getValue(name) {\n return get(state.values, name as string);\n },\n\n getValues() {\n return clone(state.values);\n },\n\n setValue(name, value, setOptions = {}) {\n set(state.values, name as string, value);\n if (setOptions.shouldDirty ?? true) {\n markDirty(name as string);\n }\n if (setOptions.shouldTouch) {\n set(state.touchedFields, name as string, true);\n }\n if (setOptions.shouldValidate) {\n if (!transactions.queueValidation(name as string)) {\n void control.validateField(name);\n }\n }\n notify(name as string);\n },\n\n setError(name, error) {\n set(state.errors, name as string, error);\n notify(name as string);\n },\n\n clearError(name) {\n unset(state.errors, name as string);\n notify(name as string);\n },\n\n register(name, registerOptions) {\n state.registeredFields.set(name as string, {\n ref: state.refs.get(name as string),\n options: registerOptions as RegisterOptions<T, any> | undefined,\n });\n return {\n name: name as string,\n ref: (instance: unknown) => {\n control.registerField(name, instance, registerOptions);\n },\n onChange: (event: unknown) => {\n if (registerOptions?.disabled) {\n return;\n }\n const value = getInputValue(event, registerOptions);\n control.setValue(name, value as PathValue<T, typeof name>, {\n shouldDirty: true,\n shouldValidate: shouldValidateOnChange(name as string),\n });\n },\n onBlur: () => {\n if (registerOptions?.disabled) {\n return;\n }\n set(state.touchedFields, name as string, true);\n if (shouldValidateOnBlur(name as string)) {\n if (!transactions.queueValidation(name as string)) {\n void control.validateField(name);\n }\n }\n notify(name as string);\n },\n };\n },\n\n registerField(name, ref, registerOptions) {\n setRegisteredField(state.registeredFields, state.refs, name, ref, registerOptions);\n },\n\n unregisterField(name) {\n unsetRegisteredField(state.registeredFields, state.refs, name);\n if (options.shouldUnregister) {\n unset(state.values, name as string);\n unset(state.errors, name as string);\n unset(state.touchedFields, name as string);\n unset(state.dirtyFields, name as string);\n notify(name as string);\n }\n },\n\n subscribe(name, callback) {\n return subscriptions.subscribe(name as string, callback as never);\n },\n\n subscribeFormState(selector, callback) {\n const subscriber: FormStateSubscriber<T, unknown> = {\n selector: selector as (state: FormState<T>) => unknown,\n callback: callback as (selected: unknown) => void,\n last: clone(selector(formStateSnapshot())),\n };\n formStateSubscribers.add(subscriber);\n return () => {\n formStateSubscribers.delete(subscriber);\n };\n },\n\n notify(name) {\n notify(name as string);\n },\n\n reset(values) {\n state.defaultValues = cloneFormValues(values ?? options.defaultValues);\n state.values = cloneFormValues(values ?? options.defaultValues);\n state.errors = {} as FormErrors<T>;\n state.touchedFields = {};\n state.dirtyFields = {};\n state.validatingFields = {};\n state.isSubmitting = false;\n state.isSubmitted = false;\n state.submitCount = 0;\n const names = new Set<string>(state.registeredFields.keys());\n for (const name of names) {\n notify(name);\n }\n notifyFormState();\n },\n\n async validateField(name) {\n const fieldName = name as string;\n const token = (asyncValidationTokens.get(fieldName) ?? 0) + 1;\n asyncValidationTokens.set(fieldName, token);\n setValidationInFlight(fieldName, true);\n\n try {\n const error = await runFieldValidator(fieldName);\n if (asyncValidationTokens.get(fieldName) !== token) {\n return !hasStateTreeValue(get(state.errors, fieldName));\n }\n\n if (error) {\n set(state.errors, fieldName, error);\n } else {\n unset(state.errors, fieldName);\n }\n notify(fieldName);\n return !error;\n } finally {\n if (asyncValidationTokens.get(fieldName) === token) {\n setValidationInFlight(fieldName, false);\n }\n }\n },\n\n async validateForm() {\n let isValid = true;\n if (resolver) {\n const result = await resolver(clone(state.values));\n state.errors = clone(result.errors) as FormErrors<T>;\n if (!hasStateTreeValue(result.errors) && Object.keys(result.values).length > 0) {\n state.values = clone(result.values as T);\n }\n isValid = !hasStateTreeValue(state.errors);\n }\n\n for (const name of Array.from(state.registeredFields.keys())) {\n const valid = await control.validateField(name as Path<T>);\n isValid = valid && isValid;\n }\n\n notifyFormState();\n return isValid && !hasStateTreeValue(state.errors);\n },\n\n handleSubmit(onValid, onInvalid) {\n return async (event?: unknown) => {\n eventPreventDefault(event);\n state.isSubmitting = true;\n notifyFormState();\n\n try {\n const valid = await control.validateForm();\n if (valid) {\n await onValid(control.getValues(), event);\n } else {\n await onInvalid?.(state.errors, event);\n }\n state.isSubmitted = true;\n state.submitCount += 1;\n } finally {\n state.isSubmitting = false;\n notifyFormState();\n }\n };\n },\n\n watch: ((name?: string, callback?: (value: unknown, name: string) => void) => {\n if (typeof name === \"string\" && callback) {\n return subscriptions.subscribe(name, callback);\n }\n\n if (typeof name === \"string\") {\n return get(state.values, name);\n }\n\n return control.getValues();\n }) as FormControl<T>[\"watch\"],\n\n beginTransaction() {\n transactions.begin();\n },\n\n commitTransaction() {\n const payload = transactions.commit();\n if (!payload) {\n return;\n }\n\n for (const name of payload.validations) {\n void control.validateField(name as Path<T>);\n }\n\n for (const name of payload.notifications) {\n subscriptions.notify(name, get(state.values, name));\n }\n notifyFormState();\n },\n\n transaction(callback) {\n control.beginTransaction();\n try {\n callback();\n } finally {\n control.commitTransaction();\n }\n },\n\n _updateFieldArrayMetadata: updateFieldArrayMetadata,\n };\n\n return control;\n}\n","import { useState } from \"react\";\nimport { createFormControl } from \"../core/createFormControl\";\nimport type { FieldValues, UseFormOptions, UseFormReturn } from \"../types/form\";\n\nexport function useForm<T extends FieldValues = FieldValues>(\n options: UseFormOptions<T> = {},\n): UseFormReturn<T> {\n const [form] = useState<UseFormReturn<T>>(() => {\n const control = createFormControl<T>(options);\n return Object.assign(control, { control });\n });\n\n return form;\n}\n","import { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport type { FieldValues, FormControl, FormState } from \"../types/form\";\nimport type { Path } from \"../types/path\";\n\nexport type UseFormStateOptions<T extends FieldValues, S> = {\n control: FormControl<T>;\n name?: Path<T>;\n selector: (state: FormState<T>) => S;\n};\n\nexport function useFormState<T extends FieldValues, S = FormState<T>>({\n control,\n selector,\n}: UseFormStateOptions<T, S>): S {\n const versionRef = useRef(0);\n const getVersion = useCallback(() => versionRef.current, []);\n const subscribe = useCallback(\n (onStoreChange: () => void) =>\n control.subscribeFormState(selector, () => {\n versionRef.current += 1;\n onStoreChange();\n }),\n [control, selector],\n );\n\n useSyncExternalStore(subscribe, getVersion, getVersion);\n\n return selector(control.formState);\n}\n"],"names":["splitPath","path","isIndex","segment","get","source","fallback","current","getSnapshot","control","name","useField","versionRef","useRef","getVersion","useCallback","subscribe","onStoreChange","update","unsubscribeField","unsubscribeState","state","useSyncExternalStore","isPathArray","normalizeName","readWatchValue","defaultValue","fieldName","index","value","values","useWatch","names","useMemo","namesKey","setValue","useState","useEffect","unsubscribers","unsubscribe","useController","rules","registered","fieldState","Controller","render","options","idsByControl","nextId","createId","getControlMap","controlMap","getFieldArrayIds","length","ids","setFieldArrayIds","createFieldArrayId","clone","item","result","key","currentArray","createFieldArray","arrayName","operation","metadataControl","_a","from","to","id","left","right","useFieldArray","forceRender","useReducer","array","isEqual","leftRecord","rightRecord","leftKeys","rightKeys","normalizeOptions","getInputValue","eventOrValue","valueOptions","maybeEvent","target","option","parsed","set","segments","nextSegment","record","unset","last","SubscriptionManager","callback","subscribers","subscriber","hasStateTreeValue","createFormStateSnapshot","createTransactionManager","depth","pendingNotifications","pendingValidations","payload","setRegisteredField","fields","refs","ref","unsetRegisteredField","cloneFormValues","updateDirtyField","dirtyFields","defaultValues","original","yupResolver","schema","yupSchema","error","yupError","errors","items","zodResolver","zodSchema","issue","_b","toFieldError","resolverFromSchema","eventPreventDefault","event","applyArrayOperation","next","createFormControl","resolver","mode","reValidateMode","subscriptions","formStateSubscribers","asyncValidationTokens","debounceTimers","transactions","formStateSnapshot","notifyFormState","snapshot","notify","markDirty","setValidationInFlight","inFlight","maybeDebounce","delay","existing","resolve","timer","runFieldValidator","fieldOptions","asyncValidator","shouldValidateOnChange","shouldValidateOnBlur","updateFieldArrayMetadata","metadata","setOptions","registerOptions","instance","selector","token","isValid","onValid","onInvalid","useForm","form","useFormState"],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export { Controller } from "./hooks/Controller";
2
+ export { useController } from "./hooks/useController";
3
+ export { useField } from "./hooks/useField";
4
+ export { createFieldArray, useFieldArray } from "./hooks/useFieldArray";
5
+ export { useForm } from "./hooks/useForm";
6
+ export { useFormState } from "./hooks/useFormState";
7
+ export { useWatch } from "./hooks/useWatch";
8
+ export { createFormControl } from "./core/createFormControl";
9
+ export { SubscriptionManager } from "./core/subscriptionManager";
10
+ export { zodResolver } from "./resolvers/zodResolver";
11
+ export { yupResolver } from "./resolvers/yupResolver";
12
+ export { get } from "./utils/get";
13
+ export { getInputValue } from "./utils/getInputValue";
14
+ export { isEqual } from "./utils/isEqual";
15
+ export { set } from "./utils/set";
16
+ export { unset } from "./utils/unset";
17
+ export type { AsyncValidator, DeepPartial, FieldError, FieldSnapshot, FieldValues, FormControl, FormErrors, FormState, RegisterOptions, RegisterReturn, SubmitErrorHandler, SubmitHandler, UseFormOptions, UseFormReturn, ValidateResult, ValidationMode, } from "./types/form";
18
+ export type { ControllerProps } from "./hooks/Controller";
19
+ export type { ControllerField, ControllerFieldState, UseControllerOptions, UseControllerReturn, } from "./hooks/useController";
20
+ export type { Path, PathValue } from "./types/path";
21
+ export type { Resolver, ValidationResult } from "./types/resolver";
22
+ export type { UseWatchAllOptions, UseWatchManyOptions, UseWatchOptions } from "./hooks/useWatch";
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,YAAY,EACV,cAAc,EACd,WAAW,EACX,UAAU,EACV,aAAa,EACb,WAAW,EACX,WAAW,EACX,UAAU,EACV,SAAS,EACT,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,aAAa,EACb,cAAc,EACd,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,YAAY,EACV,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpD,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEnE,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}