@paragrav/rhf-utils 0.64.0 → 0.66.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 (144) hide show
  1. package/README.md +3 -2
  2. package/package.json +31 -44
  3. package/dist/dts/Register.d.ts +0 -16
  4. package/dist/dts/_exports/config.d.ts +0 -2
  5. package/dist/dts/_exports/errors.d.ts +0 -3
  6. package/dist/dts/_exports/form.d.ts +0 -7
  7. package/dist/dts/_exports/index.d.ts +0 -14
  8. package/dist/dts/_exports/relay.d.ts +0 -7
  9. package/dist/dts/_exports/submit.d.ts +0 -4
  10. package/dist/dts/_exports/trpc.d.ts +0 -2
  11. package/dist/dts/_exports/types.d.ts +0 -7
  12. package/dist/dts/_exports/zod.d.ts +0 -6
  13. package/dist/dts/client/config/RhfUtilsClientConfigType.d.ts +0 -71
  14. package/dist/dts/client/config/context/RhfUtilsClientConfigContext.d.ts +0 -3
  15. package/dist/dts/client/config/context/RhfUtilsClientConfigProvider.d.ts +0 -7
  16. package/dist/dts/client/config/context/useRhfUtilsClientConfig.d.ts +0 -1
  17. package/dist/dts/devtool/LazyDevTool.d.ts +0 -10
  18. package/dist/dts/devtool/LazyDevToolViaProviders.d.ts +0 -1
  19. package/dist/dts/errors/flat/FlatFieldErrorsList.d.ts +0 -6
  20. package/dist/dts/errors/flat/context/FlatFieldErrorsContextProvider.d.ts +0 -10
  21. package/dist/dts/errors/flat/context/FlatFieldErrorsOutputConfig.d.ts +0 -19
  22. package/dist/dts/errors/flat/context/useFlatFieldErrorsContext.d.ts +0 -11
  23. package/dist/dts/errors/flat/context/useFlatFieldErrorsContextHasOnlyOrphans.d.ts +0 -6
  24. package/dist/dts/errors/flat/context/useFlatFieldErrorsContextOutput.d.ts +0 -5
  25. package/dist/dts/errors/flat/filterFlatFieldErrors.d.ts +0 -7
  26. package/dist/dts/errors/flat/flattenFieldErrors.d.ts +0 -14
  27. package/dist/dts/errors/flat/getFlatFieldErrors.d.ts +0 -35
  28. package/dist/dts/errors/flat/types.d.ts +0 -16
  29. package/dist/dts/errors/getRefdFromFlatFieldErrors.d.ts +0 -1
  30. package/dist/dts/errors/isFieldErrorRefd.d.ts +0 -5
  31. package/dist/dts/errors/isFlatFieldErrorEntryRefd.d.ts +0 -5
  32. package/dist/dts/errors/message/FormErrorMessage.d.ts +0 -7
  33. package/dist/dts/errors/message/RhfUtilsFieldErrorMessage.d.ts +0 -10
  34. package/dist/dts/errors/nonfield/RhfUtilsNonFieldErrorMarker.d.ts +0 -13
  35. package/dist/dts/errors/nonfield/RhfUtilsNonFieldErrorMarker.spec.d.ts +0 -1
  36. package/dist/dts/errors/nonfield/RhfUtilsNonFieldErrorMarker.utils.d.ts +0 -18
  37. package/dist/dts/errors/nonfield/RhfUtilsNonFieldErrorMarkerHtmlAttribute.d.ts +0 -4
  38. package/dist/dts/errors/nonfield/isNonFieldError.d.ts +0 -17
  39. package/dist/dts/errors/nonfield/isNonFieldErrorMarkerInDOM.d.ts +0 -5
  40. package/dist/dts/errors/orphan/getIsOrphanFormErrorWithParentElement.d.ts +0 -5
  41. package/dist/dts/errors/orphan/getOrphansFromFlatFieldErrors.d.ts +0 -2
  42. package/dist/dts/errors/orphan/isOrphanFormError.d.ts +0 -2
  43. package/dist/dts/errors/output/consoleErrors.d.ts +0 -5
  44. package/dist/dts/errors/output/types.d.ts +0 -7
  45. package/dist/dts/errors/root/RootErrorsListFromFlatFieldErrorsContext.d.ts +0 -1
  46. package/dist/dts/errors/root/consts.d.ts +0 -1
  47. package/dist/dts/errors/root/getRootsFromFlatFieldErrors.d.ts +0 -1
  48. package/dist/dts/errors/root/isFlatFieldErrorEntryPathRoot.d.ts +0 -5
  49. package/dist/dts/errors/root/isFormErrorPathRoot.d.ts +0 -6
  50. package/dist/dts/errors/trpc/makeOnSubmitTrpcClientErrorHandler.d.ts +0 -9
  51. package/dist/dts/errors/trpc/trpcClientErrorMessageSchema.d.ts +0 -19
  52. package/dist/dts/errors/trpc/trpcClientErrorToFormSubmitFieldErrorsSchemaTransformer.d.ts +0 -23
  53. package/dist/dts/form/RHF_UseFormReturnWithoutProxiesType.d.ts +0 -15
  54. package/dist/dts/form/RhfUtilsFormInjectorProps.d.ts +0 -17
  55. package/dist/dts/form/UseRhfUtilsFormChildrenPropsType.d.ts +0 -25
  56. package/dist/dts/form/_Controller.d.ts +0 -4
  57. package/dist/dts/form/context/utils/LastSubmitStateType.d.ts +0 -1
  58. package/dist/dts/form/context/utils/RhfUtilsContextProvider.d.ts +0 -9
  59. package/dist/dts/form/context/utils/RhfUtilsContextType.d.ts +0 -12
  60. package/dist/dts/form/context/utils/useRhfUtilsContext.d.ts +0 -5
  61. package/dist/dts/form/context/utils/useRhfUtilsContextRequestSubmit.d.ts +0 -4
  62. package/dist/dts/form/defaults/UseRhfUtilsFormGlobalDefaults.d.ts +0 -24
  63. package/dist/dts/form/defaults/UseRhfUtilsFormInstanceDefaults.d.ts +0 -18
  64. package/dist/dts/form/defaults/UseRhfUtilsFormResolvedDefaultsType.d.ts +0 -12
  65. package/dist/dts/form/defaults/form/UseRhfUtilsFormInstanceFormProps.d.ts +0 -6
  66. package/dist/dts/form/defaults/form/getRhfUtilsFormResolvedFormProps.d.ts +0 -2
  67. package/dist/dts/form/defaults/form/useRhfUtilsFormResolvedFormProps.d.ts +0 -293
  68. package/dist/dts/form/options/RhfUtilsFormOptionsType.d.ts +0 -27
  69. package/dist/dts/form/options/getRhfUtilsFormResolvedOptions.d.ts +0 -2
  70. package/dist/dts/form/options/useRhfUtilsFormResolvedOptions.d.ts +0 -8
  71. package/dist/dts/form/providers/RhfUtilsFormProviders.d.ts +0 -6
  72. package/dist/dts/form/providers/RhfUtilsFormProvidersPropsType.d.ts +0 -17
  73. package/dist/dts/form/relay/FormRelayOptions.d.ts +0 -16
  74. package/dist/dts/form/relay/context/FormRelayContextProvider.d.ts +0 -4
  75. package/dist/dts/form/relay/context/useFormRelayContext.d.ts +0 -12
  76. package/dist/dts/form/relay/context/utils.d.ts +0 -4
  77. package/dist/dts/form/relay/get/FormRelayGroupType.d.ts +0 -16
  78. package/dist/dts/form/relay/get/grouper/context/hooks.d.ts +0 -8
  79. package/dist/dts/form/relay/get/grouper/context/index.d.ts +0 -5
  80. package/dist/dts/form/relay/get/grouper/context/provider.d.ts +0 -9
  81. package/dist/dts/form/relay/get/grouper/useFirstFormStateGroup.d.ts +0 -9
  82. package/dist/dts/form/relay/get/useFormRelay.d.ts +0 -13
  83. package/dist/dts/form/relay/set/FormRelaySetter.d.ts +0 -6
  84. package/dist/dts/form/relay/set/useFormRelaySet.d.ts +0 -2
  85. package/dist/dts/form/relay/types.d.ts +0 -12
  86. package/dist/dts/form/rhf/SafeFieldValuesType.d.ts +0 -4
  87. package/dist/dts/form/rhf/UseFormPropsType.d.ts +0 -4
  88. package/dist/dts/form/rhf/getRhfUtilsFormResolvedRhfProps.d.ts +0 -4
  89. package/dist/dts/form/rhf/useRhfFormWithResolvedProps.d.ts +0 -5
  90. package/dist/dts/form/utils/getSubmitterButtonData.d.ts +0 -6
  91. package/dist/dts/form/utils/useFormRequestSubmit.d.ts +0 -9
  92. package/dist/dts/form/utils/useHandleCancelWithCheckIfCanBe.d.ts +0 -4
  93. package/dist/dts/form/utils/useHandleCancelWithCheckIfCanBeViaProviders.d.ts +0 -2
  94. package/dist/dts/form/utils/useShouldFormBlockNavigation.d.ts +0 -24
  95. package/dist/dts/form/with-handlers-and-children/RhfUtilsForm.d.ts +0 -3
  96. package/dist/dts/form/with-handlers-and-children/RhfUtilsFormProps.d.ts +0 -42
  97. package/dist/dts/form/with-handlers-and-children/RhfUtilsFormPropsOnBeforeSubmitInvariants.d.ts +0 -12
  98. package/dist/dts/form/with-handlers-and-children/_ChildrenViaProviders.d.ts +0 -3
  99. package/dist/dts/form/with-handlers-and-children/_FormWithSubmitHandler.d.ts +0 -4
  100. package/dist/dts/form/with-handlers-and-children/_useHandleSubmit.d.ts +0 -11
  101. package/dist/dts/form/with-providers/RhfUtilsFormWithProviders.d.ts +0 -8
  102. package/dist/dts/form/with-providers/RhfUtilsFormWithProvidersProps.d.ts +0 -8
  103. package/dist/dts/main.d.ts +0 -1
  104. package/dist/dts/resolvers/ObjectSchema.d.ts +0 -7
  105. package/dist/dts/resolvers/zod/RhfUtilsUseZodFormChildrenFCType.d.ts +0 -7
  106. package/dist/dts/resolvers/zod/RhfUtilsUseZodFormChildrenPropsType.d.ts +0 -4
  107. package/dist/dts/resolvers/zod/ZodTypeSafeFieldValuesType.d.ts +0 -5
  108. package/dist/dts/resolvers/zod/consts.d.ts +0 -4
  109. package/dist/dts/resolvers/zod/form/RhfUtilsZodForm.d.ts +0 -7
  110. package/dist/dts/resolvers/zod/getZodResolver.d.ts +0 -4
  111. package/dist/dts/resolvers/zod/providers/RhfUtilsZodFormProviders.d.ts +0 -8
  112. package/dist/dts/resolvers/zod/with-providers/RhfUtilsZodFormWithProviders.d.ts +0 -10
  113. package/dist/dts/submit/UseRhfUtilsFormOnSubmitContextType.d.ts +0 -23
  114. package/dist/dts/submit/error/FormSubmitError.d.ts +0 -6
  115. package/dist/dts/submit/error/FormSubmitFieldErrors.d.ts +0 -14
  116. package/dist/dts/submit/error/setCtxErrorsByFormSubmitFieldErrors.d.ts +0 -8
  117. package/dist/dts/submit/last-error/LastSubmitErrorContextProvider.d.ts +0 -4
  118. package/dist/dts/submit/last-error/LastSubmitErrorContextType.d.ts +0 -8
  119. package/dist/dts/submit/last-error/useLastSubmitError.d.ts +0 -4
  120. package/dist/dts/submit/last-error/useLastSubmitErrorContext.d.ts +0 -3
  121. package/dist/dts/submit/last-error/useLastSubmitErrorContextWith.d.ts +0 -2
  122. package/dist/dts/submit/useFormOnSubmitSuccessfulAndReset.d.ts +0 -13
  123. package/dist/dts/submit/useFormOnSubmitted.d.ts +0 -4
  124. package/dist/dts/submit/useResetFormOnSubmitted.d.ts +0 -35
  125. package/dist/dts/submit/useRhfUtilsFormOnSubmitContext.d.ts +0 -3
  126. package/dist/dts/submit/useSubmitFormOnChange.d.ts +0 -15
  127. package/dist/dts/submit/useSubmitFormOnEvent.d.ts +0 -9
  128. package/dist/dts/submit/useSubmitFormOnWatch.d.ts +0 -14
  129. package/dist/dts/utils/PassthroughChildren.d.ts +0 -7
  130. package/dist/dts/utils/createContext.d.ts +0 -10
  131. package/dist/dts/utils/fixedForwardRef.d.ts +0 -5
  132. package/dist/dts/utils/isEmptyObject.d.ts +0 -1
  133. package/dist/dts/utils/timeoutAsync.d.ts +0 -6
  134. package/dist/dts/utils/types.d.ts +0 -3
  135. package/dist/dts/utils/useDebouncedOnChangeValue.d.ts +0 -14
  136. package/dist/dts/utils/useImperativeForwardedRef.d.ts +0 -9
  137. package/dist/dts/utils/useIsFirstRender.d.ts +0 -7
  138. package/dist/dts/utils/useRefIfValueWasTrue.d.ts +0 -2
  139. package/dist/dts/utils/useToggle.d.ts +0 -2
  140. package/dist/dts/vite-env.d.ts +0 -1
  141. package/dist/esm/FormRelaySetter.mjs +0 -89
  142. package/dist/esm/index.mjs +0 -350
  143. package/dist/esm/relay.mjs +0 -49
  144. package/dist/esm/trpc.mjs +0 -24
@@ -1,14 +0,0 @@
1
- import { default as React } from 'react';
2
- export type UseSubmitFormOnWatchOptions = {
3
- /** Milliseconds to debounce form submission. (Default is none.) */
4
- debounce: number;
5
- };
6
- /**
7
- * Watches for changes in form values.
8
- *
9
- * Caveats:
10
- * - uses RHF's useWatch
11
- * - triggers change immediately as user types, so use sensible debounce time
12
- * - does not cover uncontrolled inputs
13
- */
14
- export declare const useSubmitFormOnWatch: (formRef: React.RefObject<HTMLFormElement | null>, options?: UseSubmitFormOnWatchOptions) => void;
@@ -1,7 +0,0 @@
1
- /**
2
- * Component for passing-through children and ignoring props.
3
- *
4
- * Useful for conditional wrapping of children where conditional wrapper has props.
5
- * (`React.Fragment` only allows `key` and `children`.)
6
- */
7
- export declare const PassthroughChildren: React.FC<React.PropsWithChildren>;
@@ -1,10 +0,0 @@
1
- import { default as React } from 'react';
2
- /**
3
- * Create a strictly-typed context that throws error if no provider is found.
4
- * @returns A tuple with a function to get the context and the context provider.
5
- */
6
- export declare function createContext<T = unknown>(): {
7
- readonly Provider: React.Provider<T | undefined>;
8
- readonly useMaybe: () => T | undefined;
9
- readonly useRequired: () => T & ({} | null);
10
- };
@@ -1,5 +0,0 @@
1
- import { default as React } from 'react';
2
- /**
3
- * @see https://www.totaltypescript.com/forwardref-with-generic-components
4
- */
5
- export declare function fixedForwardRef<T, P = object>(render: React.ForwardRefRenderFunction<T, React.PropsWithoutRef<P>>): (props: P & React.RefAttributes<T>) => React.ReactNode;
@@ -1 +0,0 @@
1
- export declare const isEmptyObject: (obj: Record<string, unknown>) => boolean;
@@ -1,6 +0,0 @@
1
- /**
2
- * Awaitable `setTimeout`.
3
- * @param timeout milliseconds
4
- * @returns `Promise<void>`
5
- */
6
- export declare const timeoutAsync: (timeout: number) => Promise<void>;
@@ -1,3 +0,0 @@
1
- export type MaybePromise<T> = T | Promise<T>;
2
- /** Merge {@link C} into {@link B} into {@link A} (last taking highest precedence). */
3
- export type Merge<A, B, C = unknown, D = unknown> = D & Omit<C, keyof D> & Omit<Omit<B, keyof C>, keyof D> & Omit<Omit<Omit<A, keyof B>, keyof C>, keyof D>;
@@ -1,14 +0,0 @@
1
- /**
2
- * React hook to debounce onChange event callback.
3
- *
4
- * Returns debounced state setter (uses ref internally).
5
- *
6
- * When debounce delay has elapsed after setting value,
7
- * onChange callback is called with latest value.
8
- *
9
- * @returns `[setValueDebounced]`
10
- */
11
- export declare const useDebouncedOnChangeValue: <TValue>({ onChange, delay, }: {
12
- onChange: (value: TValue) => void;
13
- delay: number;
14
- }) => readonly [(value: TValue) => void];
@@ -1,9 +0,0 @@
1
- import { default as React } from 'react';
2
- /**
3
- * Create a ref and point forwarded ref to it.
4
- *
5
- * Use case: forwarded refs are optional, but sometimes you need the ref.
6
- *
7
- * @param forwardedRef Forwarded `ref` prop.
8
- */
9
- export declare const useImperativeForwardedRef: <TRef>(forwardedRef?: React.ForwardedRef<TRef>) => React.RefObject<TRef | null>;
@@ -1,7 +0,0 @@
1
- import { default as React } from 'react';
2
- /**
3
- * Use to determine if first render has run.
4
- *
5
- * (Supports strict mode.)
6
- */
7
- export declare const useIsFirstRender: () => React.RefObject<boolean>;
@@ -1,2 +0,0 @@
1
- import { default as React } from 'react';
2
- export declare const useRefIfValueWasTrue: (value: boolean) => readonly [React.RefObject<boolean>, () => void];
@@ -1,2 +0,0 @@
1
- import { default as React } from 'react';
2
- export declare const useToggle: (defaultValue?: boolean) => [boolean, React.DispatchWithoutAction];
@@ -1 +0,0 @@
1
- /// <reference types="vite/client" />
@@ -1,89 +0,0 @@
1
- import e from "react";
2
- import { jsx as t } from "react/jsx-runtime";
3
- import { get as n, useFormState as r } from "react-hook-form";
4
- import { flatten as i } from "flat";
5
- //#region src/utils/createContext.ts
6
- function a() {
7
- let t = e.createContext(void 0), n = () => e.useContext(t);
8
- return {
9
- Provider: t.Provider,
10
- useMaybe: n,
11
- useRequired: () => {
12
- let e = n();
13
- if (e === void 0) throw Error();
14
- return e;
15
- }
16
- };
17
- }
18
- //#endregion
19
- //#region src/form/relay/context/useFormRelayContext.ts
20
- var { Provider: o, useRequired: s } = a(), c = ({ children: n }) => {
21
- let [r, i] = e.useState({});
22
- return /* @__PURE__ */ t(o, {
23
- value: {
24
- add: e.useCallback((e, t, n) => {
25
- if (r[t.formId]) throw Error("Form id already exists.");
26
- i((r) => ({
27
- ...r,
28
- [t.formId]: {
29
- state: e,
30
- utils: t,
31
- options: n
32
- }
33
- }));
34
- }, [r]),
35
- update: e.useCallback((e, t) => {
36
- i((n) => {
37
- let r = n[e];
38
- if (!r) throw Error("Form id doesn't exist");
39
- return {
40
- ...n,
41
- [e]: {
42
- ...r,
43
- state: t
44
- }
45
- };
46
- });
47
- }, []),
48
- remove: e.useCallback((e) => {
49
- i((t) => Object.fromEntries(Object.entries(t).filter(([t]) => t !== e)));
50
- }, []),
51
- state: r
52
- },
53
- children: n
54
- });
55
- }, { Provider: l, useRequired: u, useMaybe: d } = a(), f = (e) => Object.keys(e).length === 0, p = (e) => i(e), m = (e) => {
56
- let t = p(e);
57
- return Object.fromEntries(Object.keys(t).reduce((t, r) => {
58
- let i = r.replace(h, "");
59
- if (i === r) return t;
60
- let a = n(e, i, void 0);
61
- return a && t.push([i, a]), t;
62
- }, []));
63
- }, h = /\.(?:type|message)\b$/, g = (e) => Object.fromEntries(Object.entries(m(e)).map(([e, t]) => [e, {
64
- type: t.type,
65
- message: t.message,
66
- hasRef: !!t.ref
67
- }])), _ = (t) => {
68
- if (!t) return;
69
- let [n] = e.useState(t);
70
- v(n), y(n);
71
- }, v = (t) => {
72
- let n = u(), r = s(), i = b(t);
73
- e.useEffect(() => (r.add(i, n, t), () => {
74
- r.remove(n.formId);
75
- }), []);
76
- }, y = (t) => {
77
- let n = u(), r = s(), i = b(t);
78
- e.useEffect(() => {
79
- r.update(n.formId, i);
80
- }, [i]);
81
- }, b = (t) => {
82
- let n = r(), i = t.select(n), a = JSON.stringify({
83
- ...i,
84
- errors: i.errors && g(i.errors)
85
- });
86
- return e.useMemo(() => i, [a]);
87
- }, x = ({ options: e }) => (_(e), null);
88
- //#endregion
89
- export { l as a, c, f as i, s as l, _ as n, u as o, m as r, d as s, x as t, a as u };
@@ -1,350 +0,0 @@
1
- import { a as e, c as t, i as n, o as r, r as i, t as a, u as o } from "./FormRelaySetter.mjs";
2
- import s from "react";
3
- import { jsx as c, jsxs as l } from "react/jsx-runtime";
4
- import { Controller as u, FormProvider as d, useForm as f, useFormContext as p, useFormState as m, useWatch as h } from "react-hook-form";
5
- import { zodResolver as g } from "@hookform/resolvers/zod";
6
- //#region src/client/config/context/RhfUtilsClientConfigContext.tsx
7
- var _ = s.createContext(void 0), v = ({ config: e, children: n }) => {
8
- let [r] = s.useState(e ?? {});
9
- return /* @__PURE__ */ c(_.Provider, {
10
- value: r,
11
- children: /* @__PURE__ */ c(t, { children: n })
12
- });
13
- }, { Provider: y, useRequired: b } = o(), x = () => {
14
- let e = b();
15
- return s.useMemo(() => !e.hasErrors || !e.hasOrphans ? !1 : Object.keys(e.orphans).length === Object.keys(e.all).length, [e]);
16
- }, S = "data-rhfutils-nonfield-error-marker-path", C = ({ path: e }) => /* @__PURE__ */ c("div", {
17
- role: "alert",
18
- "aria-hidden": "true",
19
- style: { display: "none" },
20
- [S]: e
21
- }), w = (e) => s.useCallback((t) => {
22
- if (!e.current) throw Error();
23
- ee(e.current, t);
24
- }, [e]), ee = (e, t) => {
25
- e.requestSubmit(t);
26
- }, T = class extends Error {
27
- constructor(e, t) {
28
- super(t), this.errors = e;
29
- }
30
- }, { Provider: te, useRequired: E } = o(), D = () => E().current, O = s.lazy(() => import("@hookform/devtools").then((e) => ({ default: e.DevTool }))), k = ({ config: e }) => {
31
- let [t] = s.useState(e);
32
- if (!t) return null;
33
- let n = typeof t == "object" ? t : void 0;
34
- return /* @__PURE__ */ c(s.Suspense, { children: /* @__PURE__ */ c(O, { ...n }) });
35
- }, A = () => /* @__PURE__ */ c(k, { config: r().options.devTool }), j = (e) => /* @__PURE__ */ c(u, { ...e }), M = () => {
36
- let e = s.useContext(_);
37
- if (e === void 0) throw Error();
38
- return e;
39
- }, ne = () => ({
40
- utils: r(),
41
- rhf: p(),
42
- FormSubmitError: T
43
- }), re = (e, t, n) => {
44
- let r = t?.();
45
- return async () => {
46
- if (e && await Promise.resolve(r?.(n)) !== !1) return Promise.resolve(e());
47
- };
48
- }, ie = (e) => {
49
- let { useCanFormBeCancelled: t } = M();
50
- return re(e, t, ne());
51
- }, ae = ({ onCancel: e, Children: t }) => {
52
- let n = p(), i = r(), a = ie(e);
53
- return /* @__PURE__ */ c(t, {
54
- ...i,
55
- rhf: n,
56
- onCancel: a,
57
- Controller: j,
58
- FormSubmitError: T
59
- });
60
- }, N = (e, t) => {
61
- Object.entries(t).forEach(([t, n]) => {
62
- e.setError(t, {
63
- type: "FormSubmitFieldError",
64
- ...n
65
- });
66
- });
67
- }, P = (e, t, n) => ({
68
- ...e,
69
- ...t,
70
- className: [
71
- e?.className,
72
- t?.className,
73
- n?.className
74
- ].filter(Boolean).join(" ").trim() || void 0
75
- }), F = (e, t, n) => ({
76
- id: t,
77
- ...P(M().defaults?.form, e, n)
78
- }), I = (e) => {
79
- let t = E();
80
- return async function(n) {
81
- try {
82
- return t.reset(), await e(n);
83
- } catch (e) {
84
- throw t.set(e, n), e;
85
- }
86
- };
87
- }, L = ({ onValid: e, onInvalid: t, onError: n, onFinally: i }) => {
88
- let a = p(), { options: o, lastSubmitStateRef: s } = r(), c = I(a.handleSubmit(e, t));
89
- return (e) => {
90
- s.current = "submitting", o.stopSubmitPropagation && e.stopPropagation(), Promise.resolve(c(e)).then(() => {
91
- s.current = "success";
92
- }).catch((t) => {
93
- s.current = "error", n(t, e);
94
- }).finally(() => {
95
- i?.();
96
- });
97
- };
98
- }, R = ({ getApiData: e, onSubmitInvalid: t, onBeforeSubmitInvariants: n, onBeforeSubmit: i, onSubmit: a, onSubmitSuccess: o, onSubmitError: l, onSubmitFinally: u, form: d, className: f, children: m }) => {
99
- let h = p(), g = r(), _ = M(), v = F(d, g.formId, { className: f }), y = async (t, r) => {
100
- let s = {
101
- input: h.getValues(),
102
- output: t,
103
- api: e?.(t)
104
- }, c = {
105
- utils: g,
106
- rhf: h,
107
- FormSubmitError: T
108
- }, l = r;
109
- n && await z(n, s, c, l), await Promise.resolve(i?.(s, c, l));
110
- let u = await Promise.resolve(a?.(s, c, l));
111
- g.lastSubmitStateRef.current = "success", await Promise.resolve(o?.(u, s, c, l));
112
- };
113
- function b(e, t) {
114
- let n = e instanceof T ? e.errors : _.onSubmitErrorUnknown?.(e);
115
- n && N(h, n), l?.(e, {
116
- utils: g,
117
- errors: n,
118
- rhf: h
119
- }, t);
120
- }
121
- let x = L({
122
- onValid: y,
123
- onInvalid: t,
124
- onError: b,
125
- onFinally: u
126
- }), S = s.useCallback(() => m, []), C = {
127
- ...g,
128
- rhf: h,
129
- Controller: j,
130
- FormSubmitError: T,
131
- Outlet: S
132
- };
133
- return /* @__PURE__ */ c(_.FormComponent ?? "form", {
134
- ...v,
135
- id: g.formId,
136
- ref: g.formRef,
137
- onSubmit: x,
138
- children: _.FormInjector ? /* @__PURE__ */ c(_.FormInjector, { ...C }) : m
139
- });
140
- }, z = async (e, t, n, r) => {
141
- let i = (await Promise.resolve(e(t, n, r))).filter(({ validate: e }) => !e).map(({ field: e, message: t }) => [e, { message: t }]);
142
- if (i.length) throw new n.FormSubmitError(Object.fromEntries(i));
143
- }, B = ({ getApiData: e, onCancel: t, onSubmitInvalid: n, onBeforeSubmitInvariants: r, onBeforeSubmit: i, onSubmit: a, onSubmitSuccess: o, onSubmitError: s, onSubmitFinally: u, Children: d, form: f, className: p }) => /* @__PURE__ */ l(R, {
144
- getApiData: e,
145
- onSubmitInvalid: n,
146
- onBeforeSubmitInvariants: r,
147
- onBeforeSubmit: i,
148
- onSubmit: a,
149
- onSubmitSuccess: o,
150
- onSubmitError: s,
151
- onSubmitFinally: u,
152
- form: f,
153
- className: p,
154
- children: [/* @__PURE__ */ c(A, {}), /* @__PURE__ */ c(ae, {
155
- onCancel: t,
156
- Children: d
157
- })]
158
- }), V = (e) => /* @__PURE__ */ c(B, { ...e }), H = (e) => (t) => Object.fromEntries(Object.entries(t).filter(e)), U = (e) => !!e.ref, W = H(([, e]) => U(e)), G = (e, t) => [["", ""], ...t?.excludeNested ? [] : [["^", "."]]].map(([t, n]) => K(S + t, e + n)).join(", "), K = (e, t) => `[role="alert"][${e}="${t}"]`, q = (e, t) => !!t.querySelector(G(e)), J = (e) => e === "root" || e.startsWith("root."), oe = (e, t, n) => !U(t) && !J(e) && !q(e, n), se = (e) => ([t, n]) => oe(t, n, e), ce = (e, t) => H(se(t))(e), le = H(([e]) => J(e)), ue = ({ formRef: e, children: t }) => {
159
- let { errors: r } = m(), a = i(r), o = e.current ? ce(a, e.current) : {};
160
- return /* @__PURE__ */ c(y, {
161
- value: {
162
- all: a,
163
- fields: W(a),
164
- roots: le(a),
165
- orphans: o,
166
- hasErrors: !n(r),
167
- hasOrphans: !n(o)
168
- },
169
- children: t
170
- });
171
- }, de = ({ children: e }) => {
172
- let [t, n] = s.useState(void 0);
173
- return /* @__PURE__ */ c(te, {
174
- value: {
175
- current: t,
176
- reset: () => {
177
- n(void 0);
178
- },
179
- set: (e, t) => {
180
- n({
181
- error: e,
182
- event: t
183
- });
184
- }
185
- },
186
- children: e
187
- });
188
- }, fe = (e, t, n, r = "debug") => {
189
- console[r](e, {
190
- values: t,
191
- errors: n
192
- });
193
- }, pe = (e) => {
194
- let t = p(), n = b();
195
- s.useEffect(() => {
196
- if (!n.hasErrors) return;
197
- let r = e?.console?.(n);
198
- r && fe(r.message ?? Y, t.getValues(), n, r.type);
199
- let i = e?.throw?.(n);
200
- if (i) throw Error(typeof i == "string" ? i : Y);
201
- }, [n]);
202
- }, Y = "Form errors", me = (e) => {
203
- let t = s.useRef(!1);
204
- return s.useEffect(() => {
205
- e && (t.current = !0);
206
- }, [e]), [t, () => {
207
- t.current = !1;
208
- }];
209
- }, he = (e, t) => {
210
- let { isSubmitSuccessful: n, isSubmitting: r } = m(), [i, a] = me(r);
211
- s.useEffect(() => {
212
- e && (r || i.current && (a(), (t?.successful === void 0 || n === t.successful) && e(n)));
213
- }, [r]);
214
- }, ge = (e) => {
215
- let { getValues: t, reset: n } = p();
216
- he((r) => {
217
- if (!e) return;
218
- let i = e[r ? "success" : "error"]?.values;
219
- if (!i) return;
220
- let a = i === "current";
221
- n(a ? t() : void 0, {
222
- keepIsSubmitSuccessful: !0,
223
- keepIsSubmitted: !0,
224
- keepSubmitCount: !0,
225
- keepValues: a,
226
- keepErrors: !0
227
- });
228
- });
229
- }, _e = () => {
230
- let e = s.useRef(X);
231
- return s.useEffect(() => (e.current &&= !X, () => {
232
- e.current = X;
233
- }), []), e;
234
- }, X = !0, ve = ({ onChange: e, delay: t }) => {
235
- let n = s.useRef(null), r = () => {
236
- n.current &&= (e(n.current.value), null);
237
- }, i = () => {
238
- n.current && clearTimeout(n.current.timer);
239
- };
240
- return s.useEffect(() => i, []), [(e) => {
241
- i(), n.current = {
242
- value: e,
243
- timer: setTimeout(r, t)
244
- };
245
- }];
246
- }, ye = (e, t) => {
247
- let n = w(e), [r] = ve({
248
- delay: t?.debounce ?? 0,
249
- onChange: () => {
250
- n();
251
- }
252
- });
253
- return r;
254
- }, be = (e, t) => {
255
- let n = ye(e, { debounce: t?.debounce }), r = h(), { isValid: i, isDirty: a, isValidating: o, isSubmitting: c } = m(), l = s.useMemo(() => JSON.stringify(r), [r]), u = _e();
256
- s.useEffect(() => {
257
- u.current || o || c || i && a && n(r);
258
- }, [
259
- i,
260
- a,
261
- l,
262
- o
263
- ]);
264
- }, xe = ({ formId: t, formRef: n, options: r, children: i }) => {
265
- let [a] = s.useState(r);
266
- return pe(M().fieldErrors?.output), (a.submitOnWatch ? be : void 0)?.(n, a.submitOnWatch), ge(a.resetOnSubmitted), /* @__PURE__ */ c(e, {
267
- value: {
268
- formId: t,
269
- formRef: n,
270
- options: r,
271
- lastSubmitStateRef: s.useRef(null)
272
- },
273
- children: i
274
- });
275
- }, Se = (e, t) => ({
276
- ...e,
277
- ...t,
278
- ...(e?.resetOnSubmitted || t?.resetOnSubmitted) && { resetOnSubmitted: {
279
- ...e?.resetOnSubmitted,
280
- ...t?.resetOnSubmitted
281
- } }
282
- }), Z = (e, t) => s.useMemo(() => Se(e.defaults?.options, t), [JSON.stringify(t)]), Ce = (e, t) => ({
283
- ...e,
284
- ...t
285
- }), we = (e, t, n, r) => f({
286
- ...Ce(t.defaults?.rhf, e),
287
- resolver: r,
288
- defaultValues: n
289
- });
290
- //#endregion
291
- //#region src/form/providers/RhfUtilsFormProviders.tsx
292
- function Q({ formId: e, rhf: t, resolver: n, defaultValues: r, options: i, relay: o, children: u }) {
293
- let f = M(), p = s.useId(), m = e || p, h = s.useRef(null), g = we(t, f, r, n), _ = Z(f, i);
294
- return /* @__PURE__ */ c(d, {
295
- ...g,
296
- children: /* @__PURE__ */ c(ue, {
297
- formRef: h,
298
- children: /* @__PURE__ */ l(xe, {
299
- formId: m,
300
- formRef: h,
301
- options: _,
302
- children: [/* @__PURE__ */ c(a, { options: o }), /* @__PURE__ */ c(de, { children: u })]
303
- })
304
- })
305
- });
306
- }
307
- //#endregion
308
- //#region src/resolvers/zod/getZodResolver.ts
309
- var $ = (e) => g(e), Te = ({ schema: e, children: t, ...n }) => /* @__PURE__ */ c(Q, {
310
- ...n,
311
- resolver: $(e),
312
- children: t
313
- });
314
- //#endregion
315
- //#region src/form/with-providers/RhfUtilsFormWithProviders.tsx
316
- function Ee({ getApiData: e, resolver: t, rhf: n, defaultValues: r, options: i, relay: a, onCancel: o, onSubmitInvalid: s, onBeforeSubmitInvariants: l, onBeforeSubmit: u, onSubmit: d, onSubmitSuccess: f, onSubmitError: p, onSubmitFinally: m, Children: h, form: g, formId: _, className: v }) {
317
- let y = {
318
- formId: _,
319
- resolver: t,
320
- rhf: n,
321
- defaultValues: r,
322
- options: i,
323
- relay: a
324
- }, b = {
325
- getApiData: e,
326
- onCancel: o,
327
- onSubmitInvalid: s,
328
- onBeforeSubmitInvariants: l,
329
- onBeforeSubmit: u,
330
- onSubmit: d,
331
- onSubmitSuccess: f,
332
- onSubmitError: p,
333
- onSubmitFinally: m,
334
- Children: h,
335
- form: g,
336
- className: v
337
- };
338
- return /* @__PURE__ */ c(Q, {
339
- ...y,
340
- children: /* @__PURE__ */ c(B, { ...b })
341
- });
342
- }
343
- //#endregion
344
- //#region src/resolvers/zod/with-providers/RhfUtilsZodFormWithProviders.tsx
345
- var De = ({ schema: e, ...t }) => /* @__PURE__ */ c(Ee, {
346
- ...t,
347
- resolver: $(e)
348
- });
349
- //#endregion
350
- export { T as FormSubmitError, v as RhfUtilsClientConfigProvider, C as RhfUtilsNonFieldErrorMarker, V as RhfUtilsZodForm, Te as RhfUtilsZodFormProviders, De as RhfUtilsZodFormWithProviders, b as useFlatFieldErrorsContext, x as useFlatFieldErrorsContextHasOnlyOrphans, w as useFormRequestSubmit, D as useLastSubmitError, r as useRhfUtilsContext };
@@ -1,49 +0,0 @@
1
- import { c as e, i as t, l as n, n as r, s as i, t as a, u as o } from "./FormRelaySetter.mjs";
2
- import s from "react";
3
- import { useFormState as c } from "react-hook-form";
4
- //#region src/form/relay/context/utils.ts
5
- var l = (e) => e.reduce((e, n) => ({
6
- isDirty: e.isDirty || n.isDirty,
7
- isSubmitting: e.isSubmitting || n.isSubmitting,
8
- isLoading: e.isLoading || n.isLoading,
9
- isSubmitted: e.isSubmitted || n.isSubmitted,
10
- isSubmitSuccessful: e.isSubmitSuccessful || n.isSubmitSuccessful,
11
- isValidating: e.isValidating || n.isValidating,
12
- isValid: e.isValid || n.isValid,
13
- isReady: e.isReady || n.isReady,
14
- disabled: e.disabled || n.disabled,
15
- hasErrors: e.hasErrors || n.errors && !t(n.errors),
16
- hasDirtyFields: e.hasDirtyFields || n.dirtyFields && !t(n.dirtyFields),
17
- hasTouchedFields: e.hasTouchedFields || n.touchedFields && !t(n.touchedFields),
18
- hasValidatingFields: e.hasValidatingFields || n.validatingFields && !t(n.validatingFields),
19
- submitCount: (e.submitCount ?? 0) + (n.submitCount ?? 0),
20
- isMounted: e.isMounted || n.isMounted
21
- }), {
22
- isDirty: void 0,
23
- isSubmitting: void 0,
24
- isLoading: void 0,
25
- isSubmitted: void 0,
26
- isSubmitSuccessful: void 0,
27
- isValidating: void 0,
28
- isReady: void 0,
29
- isValid: void 0,
30
- disabled: void 0,
31
- hasErrors: void 0,
32
- hasDirtyFields: void 0,
33
- hasTouchedFields: void 0,
34
- hasValidatingFields: void 0,
35
- submitCount: void 0,
36
- isMounted: void 0
37
- }), u = (e) => n().state[e], d = (e) => {
38
- let t = n().state, r = l(f(t, e).map(({ state: e }) => e)), i = JSON.stringify(r);
39
- return s.useMemo(() => r, [i]);
40
- }, f = (e, t) => Object.values(e).filter(({ options: e, utils: n }) => !t || "groups" in t && t.groups.filter((t) => e.groups?.includes(t)).length || "predicate" in t && t.predicate({
41
- groups: e.groups,
42
- options: n.options
43
- })), { Provider: p, useRequired: m, useMaybe: h } = o(), g = () => {
44
- if (i()) return l([c()]);
45
- let e = h();
46
- return e ? e.state : d();
47
- };
48
- //#endregion
49
- export { e as FormRelayContextProvider, a as FormRelaySetter, g as useFirstFormStateGroup, d as useFormRelayGroup, u as useFormRelayId, r as useFormRelaySet };
package/dist/esm/trpc.mjs DELETED
@@ -1,24 +0,0 @@
1
- import { TRPCClientError as e } from "@trpc/client";
2
- import { z as t } from "zod";
3
- //#region src/errors/trpc/trpcClientErrorMessageSchema.ts
4
- var n = t.object({
5
- code: t.string(),
6
- message: t.string(),
7
- path: t.array(t.string())
8
- }).passthrough(), r = t.custom((t) => t instanceof e).transform((e) => e.message).transform((e) => {
9
- try {
10
- return JSON.parse(e);
11
- } catch {
12
- return [{
13
- validation: "root",
14
- code: "server",
15
- message: e,
16
- path: ["root"]
17
- }];
18
- }
19
- }).pipe(t.array(n)).transform((e) => e.map((e) => [e.path.join("."), {
20
- type: e.code,
21
- message: e.message
22
- }])).transform((e) => Object.fromEntries(e)), i = (t) => (n) => n instanceof e ? r.parse(n) : t(n);
23
- //#endregion
24
- export { i as makeOnSubmitTrpcClientErrorHandler, r as trpcClientErrorToFormSubmitFieldErrorsSchemaTransformer };