@paragrav/rhf-utils 0.61.0 → 0.63.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 (45) hide show
  1. package/README.md +49 -89
  2. package/dist/dts/_exports/relay.d.ts +7 -8
  3. package/dist/dts/errors/flat/getFlatFieldErrors.d.ts +5 -1
  4. package/dist/dts/form/RhfUtilsFormComponentPropsType.d.ts +2 -2
  5. package/dist/dts/form/UseRhfUtilsFormChildrenPropsType.d.ts +2 -2
  6. package/dist/dts/form/context/utils/LastSubmitStateType.d.ts +1 -0
  7. package/dist/dts/form/context/utils/{RhfUtilsContextPropsType.d.ts → RhfUtilsContextType.d.ts} +3 -2
  8. package/dist/dts/form/context/utils/useRhfUtilsContext.d.ts +4 -4
  9. package/dist/dts/form/defaults/form/useRhfUtilsFormResolvedFormProps.d.ts +10 -10
  10. package/dist/dts/form/providers/RhfUtilsFormProviders.d.ts +1 -1
  11. package/dist/dts/form/providers/RhfUtilsFormProvidersPropsType.d.ts +2 -0
  12. package/dist/dts/form/relay/FormRelayOptions.d.ts +16 -0
  13. package/dist/dts/form/{state/relay/FormStateRelayContextProvider.d.ts → relay/context/FormRelayContextProvider.d.ts} +1 -1
  14. package/dist/dts/form/relay/context/useFormRelayContext.d.ts +12 -0
  15. package/dist/dts/form/relay/context/utils.d.ts +4 -0
  16. package/dist/dts/form/relay/get/FormRelayGroupType.d.ts +16 -0
  17. package/dist/dts/form/relay/get/grouper/context/hooks.d.ts +8 -0
  18. package/dist/dts/form/relay/get/grouper/context/index.d.ts +5 -0
  19. package/dist/dts/form/relay/get/grouper/context/provider.d.ts +9 -0
  20. package/dist/dts/form/relay/get/grouper/useFirstFormStateGroup.d.ts +9 -0
  21. package/dist/dts/form/relay/get/useFormRelay.d.ts +13 -0
  22. package/dist/dts/form/relay/set/FormRelaySetter.d.ts +6 -0
  23. package/dist/dts/form/relay/set/useFormRelaySet.d.ts +2 -0
  24. package/dist/dts/form/relay/types.d.ts +12 -0
  25. package/dist/dts/form/with-handlers-and-children/RhfUtilsFormProps.d.ts +5 -1
  26. package/dist/dts/form/with-handlers-and-children/_useHandleSubmit.d.ts +1 -1
  27. package/dist/dts/form/with-providers/RhfUtilsFormWithProviders.d.ts +1 -1
  28. package/dist/dts/submit/UseRhfUtilsFormOnSubmitContextType.d.ts +3 -3
  29. package/dist/dts/submit/last-error/useLastSubmitErrorContextWith.d.ts +1 -1
  30. package/dist/esm/FormRelaySetter.mjs +89 -0
  31. package/dist/esm/index.mjs +352 -596
  32. package/dist/esm/relay.mjs +48 -221
  33. package/dist/esm/trpc.mjs +24 -40
  34. package/package.json +28 -29
  35. package/dist/dts/form/RhfUtilsFormStateWithUtilsType.d.ts +0 -7
  36. package/dist/dts/form/state/relay/FormStateRelayedAggregatedType.d.ts +0 -10
  37. package/dist/dts/form/state/relay/FormStateRelayedItemType.d.ts +0 -11
  38. package/dist/dts/form/state/relay/FormStateRelayedOptionsType.d.ts +0 -20
  39. package/dist/dts/form/state/relay/FormStateRelayedType.d.ts +0 -3
  40. package/dist/dts/form/state/relay/pull/hooks.d.ts +0 -31
  41. package/dist/dts/form/state/relay/push/FormStateRelayPusher.d.ts +0 -4
  42. package/dist/dts/form/state/relay/push/useFormStateRelayPusher.d.ts +0 -3
  43. package/dist/dts/form/state/relay/useFormStateRelayContext.d.ts +0 -20
  44. package/dist/dts/form/state/relay/utils.d.ts +0 -4
  45. package/dist/esm/getFlatFieldErrors.mjs +0 -55
@@ -0,0 +1,89 @@
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 };