@rpcbase/form 0.85.0 → 0.86.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +124 -35
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { useFormState, useForm as useForm$1, get, set, appendErrors } from "react-hook-form";
|
|
2
2
|
export * from "react-hook-form";
|
|
3
|
-
import {
|
|
3
|
+
import { c } from "react/compiler-runtime";
|
|
4
|
+
import { useId } from "react";
|
|
4
5
|
import { useRegisterNavigationGuard } from "@rpcbase/router";
|
|
5
6
|
import env from "@rpcbase/env";
|
|
6
7
|
import * as n$1 from "zod/v4/core";
|
|
@@ -12,10 +13,16 @@ const isFormNavigationGuardDisabledByEnv = () => {
|
|
|
12
13
|
};
|
|
13
14
|
const normalizeFormNavigationGuardOptions = (input) => {
|
|
14
15
|
if (isFormNavigationGuardDisabledByEnv()) {
|
|
15
|
-
return {
|
|
16
|
+
return {
|
|
17
|
+
enabled: false,
|
|
18
|
+
blockOnSearch: false
|
|
19
|
+
};
|
|
16
20
|
}
|
|
17
21
|
if (input === false) {
|
|
18
|
-
return {
|
|
22
|
+
return {
|
|
23
|
+
enabled: false,
|
|
24
|
+
blockOnSearch: false
|
|
25
|
+
};
|
|
19
26
|
}
|
|
20
27
|
return {
|
|
21
28
|
enabled: input?.enabled ?? true,
|
|
@@ -36,36 +43,118 @@ const shouldBlockFormNavigation = ({
|
|
|
36
43
|
};
|
|
37
44
|
const DEFAULT_FORM_NAVIGATION_GUARD_MESSAGE = "You have unsaved changes. Leave without saving?";
|
|
38
45
|
const useFormNavigationGuard = (form, opts) => {
|
|
39
|
-
const
|
|
40
|
-
|
|
46
|
+
const $ = c(15);
|
|
47
|
+
let t0;
|
|
48
|
+
if ($[0] !== form.control) {
|
|
49
|
+
t0 = {
|
|
50
|
+
control: form.control
|
|
51
|
+
};
|
|
52
|
+
$[0] = form.control;
|
|
53
|
+
$[1] = t0;
|
|
54
|
+
} else {
|
|
55
|
+
t0 = $[1];
|
|
56
|
+
}
|
|
57
|
+
const {
|
|
58
|
+
isDirty,
|
|
59
|
+
isSubmitting
|
|
60
|
+
} = useFormState(t0);
|
|
61
|
+
let t1;
|
|
62
|
+
if ($[2] !== opts) {
|
|
63
|
+
t1 = normalizeFormNavigationGuardOptions(opts);
|
|
64
|
+
$[2] = opts;
|
|
65
|
+
$[3] = t1;
|
|
66
|
+
} else {
|
|
67
|
+
t1 = $[3];
|
|
68
|
+
}
|
|
69
|
+
const normalized = t1;
|
|
41
70
|
const reactId = useId();
|
|
42
|
-
const id =
|
|
71
|
+
const id = `rpcbase:form:${reactId}`;
|
|
43
72
|
const shouldBlockUnload = normalized.enabled && isDirty && !isSubmitting;
|
|
44
|
-
|
|
45
|
-
|
|
73
|
+
let t2;
|
|
74
|
+
if ($[4] !== normalized.blockOnSearch || $[5] !== shouldBlockUnload) {
|
|
75
|
+
t2 = (args) => shouldBlockFormNavigation({
|
|
46
76
|
args,
|
|
47
77
|
shouldBlockUnload,
|
|
48
78
|
blockOnSearch: normalized.blockOnSearch
|
|
49
|
-
})
|
|
50
|
-
[normalized.blockOnSearch
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
79
|
+
});
|
|
80
|
+
$[4] = normalized.blockOnSearch;
|
|
81
|
+
$[5] = shouldBlockUnload;
|
|
82
|
+
$[6] = t2;
|
|
83
|
+
} else {
|
|
84
|
+
t2 = $[6];
|
|
85
|
+
}
|
|
86
|
+
const shouldBlockNavigation = t2;
|
|
87
|
+
const t3 = normalized.message ?? DEFAULT_FORM_NAVIGATION_GUARD_MESSAGE;
|
|
88
|
+
let t4;
|
|
89
|
+
if ($[7] !== id || $[8] !== normalized.blockOnSearch || $[9] !== normalized.enabled || $[10] !== normalized.priority || $[11] !== shouldBlockNavigation || $[12] !== shouldBlockUnload || $[13] !== t3) {
|
|
90
|
+
t4 = {
|
|
91
|
+
id,
|
|
92
|
+
enabled: normalized.enabled,
|
|
93
|
+
priority: normalized.priority,
|
|
94
|
+
message: t3,
|
|
95
|
+
blockOnSearch: normalized.blockOnSearch,
|
|
96
|
+
shouldBlockNavigation,
|
|
97
|
+
shouldBlockUnload
|
|
98
|
+
};
|
|
99
|
+
$[7] = id;
|
|
100
|
+
$[8] = normalized.blockOnSearch;
|
|
101
|
+
$[9] = normalized.enabled;
|
|
102
|
+
$[10] = normalized.priority;
|
|
103
|
+
$[11] = shouldBlockNavigation;
|
|
104
|
+
$[12] = shouldBlockUnload;
|
|
105
|
+
$[13] = t3;
|
|
106
|
+
$[14] = t4;
|
|
107
|
+
} else {
|
|
108
|
+
t4 = $[14];
|
|
109
|
+
}
|
|
110
|
+
useRegisterNavigationGuard(t4);
|
|
61
111
|
};
|
|
62
112
|
const useForm = (props) => {
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
113
|
+
const $ = c(10);
|
|
114
|
+
let t0;
|
|
115
|
+
if ($[0] !== props) {
|
|
116
|
+
t0 = props ?? {};
|
|
117
|
+
$[0] = props;
|
|
118
|
+
$[1] = t0;
|
|
119
|
+
} else {
|
|
120
|
+
t0 = $[1];
|
|
121
|
+
}
|
|
122
|
+
let navigationGuard;
|
|
123
|
+
let rhfProps;
|
|
124
|
+
if ($[2] !== t0) {
|
|
125
|
+
({
|
|
126
|
+
navigationGuard,
|
|
127
|
+
...rhfProps
|
|
128
|
+
} = t0);
|
|
129
|
+
$[2] = t0;
|
|
130
|
+
$[3] = navigationGuard;
|
|
131
|
+
$[4] = rhfProps;
|
|
132
|
+
} else {
|
|
133
|
+
navigationGuard = $[3];
|
|
134
|
+
rhfProps = $[4];
|
|
135
|
+
}
|
|
136
|
+
const form = useForm$1(rhfProps);
|
|
137
|
+
let t1;
|
|
138
|
+
if ($[5] !== navigationGuard) {
|
|
139
|
+
t1 = normalizeFormNavigationGuardOptions(navigationGuard);
|
|
140
|
+
$[5] = navigationGuard;
|
|
141
|
+
$[6] = t1;
|
|
142
|
+
} else {
|
|
143
|
+
t1 = $[6];
|
|
144
|
+
}
|
|
145
|
+
const normalized = t1;
|
|
146
|
+
let t2;
|
|
147
|
+
if ($[7] !== navigationGuard || $[8] !== normalized.enabled) {
|
|
148
|
+
t2 = normalized.enabled ? navigationGuard : {
|
|
149
|
+
enabled: false
|
|
150
|
+
};
|
|
151
|
+
$[7] = navigationGuard;
|
|
152
|
+
$[8] = normalized.enabled;
|
|
153
|
+
$[9] = t2;
|
|
154
|
+
} else {
|
|
155
|
+
t2 = $[9];
|
|
156
|
+
}
|
|
157
|
+
useFormNavigationGuard(form, t2);
|
|
69
158
|
return form;
|
|
70
159
|
};
|
|
71
160
|
const r = (t2, r2, o2) => {
|
|
@@ -82,11 +171,11 @@ const r = (t2, r2, o2) => {
|
|
|
82
171
|
s2.shouldUseNativeValidation && o(r2, s2);
|
|
83
172
|
const n2 = {};
|
|
84
173
|
for (const o2 in r2) {
|
|
85
|
-
const f = get(s2.fields, o2),
|
|
174
|
+
const f = get(s2.fields, o2), c2 = Object.assign(r2[o2] || {}, { ref: f && f.ref });
|
|
86
175
|
if (i$1(s2.names || Object.keys(r2), o2)) {
|
|
87
176
|
const r3 = Object.assign({}, get(n2, o2));
|
|
88
|
-
set(r3, "root",
|
|
89
|
-
} else set(n2, o2,
|
|
177
|
+
set(r3, "root", c2), set(n2, o2, r3);
|
|
178
|
+
} else set(n2, o2, c2);
|
|
90
179
|
}
|
|
91
180
|
return n2;
|
|
92
181
|
}, i$1 = (e, t2) => {
|
|
@@ -116,7 +205,7 @@ function s(r2, e) {
|
|
|
116
205
|
return r2.push(e3);
|
|
117
206
|
});
|
|
118
207
|
}), e) {
|
|
119
|
-
var
|
|
208
|
+
var c2 = n2[a2].types, f = c2 && c2[t2.code];
|
|
120
209
|
n2[a2] = appendErrors(a2, e, n2, s2, f ? [].concat(f, t2.message) : t2.message);
|
|
121
210
|
}
|
|
122
211
|
r2.shift();
|
|
@@ -135,7 +224,7 @@ function i(r2, e) {
|
|
|
135
224
|
return r2.push(e3);
|
|
136
225
|
});
|
|
137
226
|
}), e) {
|
|
138
|
-
var
|
|
227
|
+
var c2 = n2[a2].types, f = c2 && c2[t2.code];
|
|
139
228
|
n2[a2] = appendErrors(a2, e, n2, s2, f ? [].concat(f, t2.message) : t2.message);
|
|
140
229
|
}
|
|
141
230
|
r2.shift();
|
|
@@ -145,16 +234,16 @@ function i(r2, e) {
|
|
|
145
234
|
function a(o$1, a2, u) {
|
|
146
235
|
if (void 0 === u && (u = {}), (function(r2) {
|
|
147
236
|
return "_def" in r2 && "object" == typeof r2._def && "typeName" in r2._def;
|
|
148
|
-
})(o$1)) return function(n2, i2,
|
|
237
|
+
})(o$1)) return function(n2, i2, c2) {
|
|
149
238
|
try {
|
|
150
239
|
return Promise.resolve(t(function() {
|
|
151
240
|
return Promise.resolve(o$1["sync" === u.mode ? "parse" : "parseAsync"](n2, a2)).then(function(e) {
|
|
152
|
-
return
|
|
241
|
+
return c2.shouldUseNativeValidation && o({}, c2), { errors: {}, values: u.raw ? Object.assign({}, n2) : e };
|
|
153
242
|
});
|
|
154
243
|
}, function(r2) {
|
|
155
244
|
if ((function(r3) {
|
|
156
245
|
return Array.isArray(null == r3 ? void 0 : r3.issues);
|
|
157
|
-
})(r2)) return { values: {}, errors: s$1(s(r2.errors, !
|
|
246
|
+
})(r2)) return { values: {}, errors: s$1(s(r2.errors, !c2.shouldUseNativeValidation && "all" === c2.criteriaMode), c2) };
|
|
158
247
|
throw r2;
|
|
159
248
|
}));
|
|
160
249
|
} catch (r2) {
|
|
@@ -163,7 +252,7 @@ function a(o$1, a2, u) {
|
|
|
163
252
|
};
|
|
164
253
|
if ((function(r2) {
|
|
165
254
|
return "_zod" in r2 && "object" == typeof r2._zod;
|
|
166
|
-
})(o$1)) return function(s2,
|
|
255
|
+
})(o$1)) return function(s2, c2, f) {
|
|
167
256
|
try {
|
|
168
257
|
return Promise.resolve(t(function() {
|
|
169
258
|
return Promise.resolve(("sync" === u.mode ? n$1.parse : n$1.parseAsync)(o$1, s2, a2)).then(function(e) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/navigationGuard.ts","../src/useFormNavigationGuard.ts","../src/useForm.ts","../../../node_modules/@hookform/resolvers/dist/resolvers.mjs","../../../node_modules/@hookform/resolvers/zod/dist/zod.mjs"],"sourcesContent":["import type { BlockerFunction } from \"@rpcbase/router\"\nimport env from \"@rpcbase/env\"\n\n\nconst isFormNavigationGuardDisabledByEnv = (): boolean => {\n const raw = env.RB_PUBLIC_DISABLE_FORM_GUARD\n\n if (typeof raw !== \"string\") return false\n\n const val = raw.trim().toLowerCase()\n return val === \"1\" || val === \"true\" || val === \"yes\"\n}\n\n\nexport type FormNavigationGuardOptions =\n | false\n | {\n enabled?: boolean\n message?: string\n blockOnSearch?: boolean\n priority?: number\n }\n\nexport type NormalizedFormNavigationGuardOptions = {\n enabled: boolean\n message?: string\n blockOnSearch: boolean\n priority?: number\n}\n\nexport const normalizeFormNavigationGuardOptions = (\n input: FormNavigationGuardOptions | undefined,\n): NormalizedFormNavigationGuardOptions => {\n if (isFormNavigationGuardDisabledByEnv()) {\n return { enabled: false, blockOnSearch: false }\n }\n\n if (input === false) {\n return { enabled: false, blockOnSearch: false }\n }\n\n return {\n enabled: input?.enabled ?? true,\n message: input?.message,\n blockOnSearch: input?.blockOnSearch ?? false,\n priority: input?.priority,\n }\n}\n\nexport const shouldBlockFormNavigation = ({\n args,\n shouldBlockUnload,\n blockOnSearch,\n}: {\n args: Parameters<BlockerFunction>[0]\n shouldBlockUnload: boolean\n blockOnSearch: boolean\n}): boolean => {\n if (!shouldBlockUnload) return false\n if (args.currentLocation.pathname !== args.nextLocation.pathname) return true\n if (blockOnSearch && args.currentLocation.search !== args.nextLocation.search) return true\n return false\n}\n","import { useCallback, useId, useMemo } from \"react\"\nimport type { FieldValues, UseFormReturn } from \"react-hook-form\"\nimport { useFormState } from \"react-hook-form\"\nimport { useRegisterNavigationGuard } from \"@rpcbase/router\"\n\nimport {\n normalizeFormNavigationGuardOptions,\n shouldBlockFormNavigation,\n type FormNavigationGuardOptions,\n} from \"./navigationGuard\"\n\n\nexport const DEFAULT_FORM_NAVIGATION_GUARD_MESSAGE =\n \"You have unsaved changes. Leave without saving?\"\n\nexport const useFormNavigationGuard = <\n TFieldValues extends FieldValues,\n TContext = any,\n TTransformedValues = TFieldValues,\n>(\n form: UseFormReturn<TFieldValues, TContext, TTransformedValues>,\n opts?: FormNavigationGuardOptions,\n): void => {\n const { isDirty, isSubmitting } = useFormState({ control: form.control })\n\n const normalized = normalizeFormNavigationGuardOptions(opts)\n\n const reactId = useId()\n const id = useMemo(() => `rpcbase:form:${reactId}`, [reactId])\n\n const shouldBlockUnload = normalized.enabled && isDirty && !isSubmitting\n\n const shouldBlockNavigation = useCallback(\n (args: Parameters<typeof shouldBlockFormNavigation>[0][\"args\"]) =>\n shouldBlockFormNavigation({\n args,\n shouldBlockUnload,\n blockOnSearch: normalized.blockOnSearch,\n }),\n [normalized.blockOnSearch, shouldBlockUnload],\n )\n\n useRegisterNavigationGuard({\n id,\n enabled: normalized.enabled,\n priority: normalized.priority,\n message: normalized.message ?? DEFAULT_FORM_NAVIGATION_GUARD_MESSAGE,\n blockOnSearch: normalized.blockOnSearch,\n shouldBlockNavigation,\n shouldBlockUnload,\n })\n}\n","import { useForm as rhfUseForm } from \"react-hook-form\"\nimport type { FieldValues, UseFormProps, UseFormReturn } from \"react-hook-form\"\n\nimport { useFormNavigationGuard } from \"./useFormNavigationGuard\"\nimport {\n normalizeFormNavigationGuardOptions,\n type FormNavigationGuardOptions,\n} from \"./navigationGuard\"\n\n\nexport type UseFormPropsWithNavigationGuard<\n TFieldValues extends FieldValues = FieldValues,\n TContext = any,\n TTransformedValues = TFieldValues,\n> = UseFormProps<TFieldValues, TContext, TTransformedValues> & {\n navigationGuard?: FormNavigationGuardOptions\n}\n\nexport const useForm = <\n TFieldValues extends FieldValues = FieldValues,\n TContext = any,\n TTransformedValues = TFieldValues,\n>(\n props?: UseFormPropsWithNavigationGuard<TFieldValues, TContext, TTransformedValues>,\n): UseFormReturn<TFieldValues, TContext, TTransformedValues> => {\n const { navigationGuard, ...rhfProps } = props ?? {}\n\n const form = rhfUseForm<TFieldValues, TContext, TTransformedValues>(\n rhfProps as UseFormProps<TFieldValues, TContext, TTransformedValues>,\n )\n\n const normalized = normalizeFormNavigationGuardOptions(navigationGuard)\n useFormNavigationGuard(form, normalized.enabled ? navigationGuard : { enabled: false })\n\n return form\n}\n","import{get as e,set as t}from\"react-hook-form\";const r=(t,r,o)=>{if(t&&\"reportValidity\"in t){const s=e(o,r);t.setCustomValidity(s&&s.message||\"\"),t.reportValidity()}},o=(e,t)=>{for(const o in t.fields){const s=t.fields[o];s&&s.ref&&\"reportValidity\"in s.ref?r(s.ref,o,e):s&&s.refs&&s.refs.forEach(t=>r(t,o,e))}},s=(r,s)=>{s.shouldUseNativeValidation&&o(r,s);const n={};for(const o in r){const f=e(s.fields,o),c=Object.assign(r[o]||{},{ref:f&&f.ref});if(i(s.names||Object.keys(r),o)){const r=Object.assign({},e(n,o));t(r,\"root\",c),t(n,o,r)}else t(n,o,c)}return n},i=(e,t)=>{const r=n(t);return e.some(e=>n(e).match(`^${r}\\\\.\\\\d+`))};function n(e){return e.replace(/\\]|\\[/g,\"\")}export{s as toNestErrors,o as validateFieldsNatively};\n//# sourceMappingURL=resolvers.mjs.map\n","import{validateFieldsNatively as r,toNestErrors as e}from\"@hookform/resolvers\";import{appendErrors as o}from\"react-hook-form\";import*as n from\"zod/v4/core\";function t(r,e){try{var o=r()}catch(r){return e(r)}return o&&o.then?o.then(void 0,e):o}function s(r,e){for(var n={};r.length;){var t=r[0],s=t.code,i=t.message,a=t.path.join(\".\");if(!n[a])if(\"unionErrors\"in t){var u=t.unionErrors[0].errors[0];n[a]={message:u.message,type:u.code}}else n[a]={message:i,type:s};if(\"unionErrors\"in t&&t.unionErrors.forEach(function(e){return e.errors.forEach(function(e){return r.push(e)})}),e){var c=n[a].types,f=c&&c[t.code];n[a]=o(a,e,n,s,f?[].concat(f,t.message):t.message)}r.shift()}return n}function i(r,e){for(var n={};r.length;){var t=r[0],s=t.code,i=t.message,a=t.path.join(\".\");if(!n[a])if(\"invalid_union\"===t.code&&t.errors.length>0){var u=t.errors[0][0];n[a]={message:u.message,type:u.code}}else n[a]={message:i,type:s};if(\"invalid_union\"===t.code&&t.errors.forEach(function(e){return e.forEach(function(e){return r.push(e)})}),e){var c=n[a].types,f=c&&c[t.code];n[a]=o(a,e,n,s,f?[].concat(f,t.message):t.message)}r.shift()}return n}function a(o,a,u){if(void 0===u&&(u={}),function(r){return\"_def\"in r&&\"object\"==typeof r._def&&\"typeName\"in r._def}(o))return function(n,i,c){try{return Promise.resolve(t(function(){return Promise.resolve(o[\"sync\"===u.mode?\"parse\":\"parseAsync\"](n,a)).then(function(e){return c.shouldUseNativeValidation&&r({},c),{errors:{},values:u.raw?Object.assign({},n):e}})},function(r){if(function(r){return Array.isArray(null==r?void 0:r.issues)}(r))return{values:{},errors:e(s(r.errors,!c.shouldUseNativeValidation&&\"all\"===c.criteriaMode),c)};throw r}))}catch(r){return Promise.reject(r)}};if(function(r){return\"_zod\"in r&&\"object\"==typeof r._zod}(o))return function(s,c,f){try{return Promise.resolve(t(function(){return Promise.resolve((\"sync\"===u.mode?n.parse:n.parseAsync)(o,s,a)).then(function(e){return f.shouldUseNativeValidation&&r({},f),{errors:{},values:u.raw?Object.assign({},s):e}})},function(r){if(function(r){return r instanceof n.$ZodError}(r))return{values:{},errors:e(i(r.issues,!f.shouldUseNativeValidation&&\"all\"===f.criteriaMode),f)};throw r}))}catch(r){return Promise.reject(r)}};throw new Error(\"Invalid input: not a Zod schema\")}export{a as zodResolver};\n//# sourceMappingURL=zod.module.js.map\n"],"names":["rhfUseForm","t","r","o","s","e","n","i","a"],"mappings":"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","x_google_ignoreList":[3,4]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/navigationGuard.ts","../src/useFormNavigationGuard.ts","../src/useForm.ts","../../../node_modules/@hookform/resolvers/dist/resolvers.mjs","../../../node_modules/@hookform/resolvers/zod/dist/zod.mjs"],"sourcesContent":["import type { BlockerFunction } from \"@rpcbase/router\"\nimport env from \"@rpcbase/env\"\n\n\nconst isFormNavigationGuardDisabledByEnv = (): boolean => {\n const raw = env.RB_PUBLIC_DISABLE_FORM_GUARD\n\n if (typeof raw !== \"string\") return false\n\n const val = raw.trim().toLowerCase()\n return val === \"1\" || val === \"true\" || val === \"yes\"\n}\n\n\nexport type FormNavigationGuardOptions =\n | false\n | {\n enabled?: boolean\n message?: string\n blockOnSearch?: boolean\n priority?: number\n }\n\nexport type NormalizedFormNavigationGuardOptions = {\n enabled: boolean\n message?: string\n blockOnSearch: boolean\n priority?: number\n}\n\nexport const normalizeFormNavigationGuardOptions = (\n input: FormNavigationGuardOptions | undefined,\n): NormalizedFormNavigationGuardOptions => {\n if (isFormNavigationGuardDisabledByEnv()) {\n return { enabled: false, blockOnSearch: false }\n }\n\n if (input === false) {\n return { enabled: false, blockOnSearch: false }\n }\n\n return {\n enabled: input?.enabled ?? true,\n message: input?.message,\n blockOnSearch: input?.blockOnSearch ?? false,\n priority: input?.priority,\n }\n}\n\nexport const shouldBlockFormNavigation = ({\n args,\n shouldBlockUnload,\n blockOnSearch,\n}: {\n args: Parameters<BlockerFunction>[0]\n shouldBlockUnload: boolean\n blockOnSearch: boolean\n}): boolean => {\n if (!shouldBlockUnload) return false\n if (args.currentLocation.pathname !== args.nextLocation.pathname) return true\n if (blockOnSearch && args.currentLocation.search !== args.nextLocation.search) return true\n return false\n}\n","import { useCallback, useId, useMemo } from \"react\"\nimport type { FieldValues, UseFormReturn } from \"react-hook-form\"\nimport { useFormState } from \"react-hook-form\"\nimport { useRegisterNavigationGuard } from \"@rpcbase/router\"\n\nimport {\n normalizeFormNavigationGuardOptions,\n shouldBlockFormNavigation,\n type FormNavigationGuardOptions,\n} from \"./navigationGuard\"\n\n\nexport const DEFAULT_FORM_NAVIGATION_GUARD_MESSAGE =\n \"You have unsaved changes. Leave without saving?\"\n\nexport const useFormNavigationGuard = <\n TFieldValues extends FieldValues,\n TContext = any,\n TTransformedValues = TFieldValues,\n>(\n form: UseFormReturn<TFieldValues, TContext, TTransformedValues>,\n opts?: FormNavigationGuardOptions,\n): void => {\n const { isDirty, isSubmitting } = useFormState({ control: form.control })\n\n const normalized = normalizeFormNavigationGuardOptions(opts)\n\n const reactId = useId()\n const id = useMemo(() => `rpcbase:form:${reactId}`, [reactId])\n\n const shouldBlockUnload = normalized.enabled && isDirty && !isSubmitting\n\n const shouldBlockNavigation = useCallback(\n (args: Parameters<typeof shouldBlockFormNavigation>[0][\"args\"]) =>\n shouldBlockFormNavigation({\n args,\n shouldBlockUnload,\n blockOnSearch: normalized.blockOnSearch,\n }),\n [normalized.blockOnSearch, shouldBlockUnload],\n )\n\n useRegisterNavigationGuard({\n id,\n enabled: normalized.enabled,\n priority: normalized.priority,\n message: normalized.message ?? DEFAULT_FORM_NAVIGATION_GUARD_MESSAGE,\n blockOnSearch: normalized.blockOnSearch,\n shouldBlockNavigation,\n shouldBlockUnload,\n })\n}\n","import { useForm as rhfUseForm } from \"react-hook-form\"\nimport type { FieldValues, UseFormProps, UseFormReturn } from \"react-hook-form\"\n\nimport { useFormNavigationGuard } from \"./useFormNavigationGuard\"\nimport {\n normalizeFormNavigationGuardOptions,\n type FormNavigationGuardOptions,\n} from \"./navigationGuard\"\n\n\nexport type UseFormPropsWithNavigationGuard<\n TFieldValues extends FieldValues = FieldValues,\n TContext = any,\n TTransformedValues = TFieldValues,\n> = UseFormProps<TFieldValues, TContext, TTransformedValues> & {\n navigationGuard?: FormNavigationGuardOptions\n}\n\nexport const useForm = <\n TFieldValues extends FieldValues = FieldValues,\n TContext = any,\n TTransformedValues = TFieldValues,\n>(\n props?: UseFormPropsWithNavigationGuard<TFieldValues, TContext, TTransformedValues>,\n): UseFormReturn<TFieldValues, TContext, TTransformedValues> => {\n const { navigationGuard, ...rhfProps } = props ?? {}\n\n const form = rhfUseForm<TFieldValues, TContext, TTransformedValues>(\n rhfProps as UseFormProps<TFieldValues, TContext, TTransformedValues>,\n )\n\n const normalized = normalizeFormNavigationGuardOptions(navigationGuard)\n useFormNavigationGuard(form, normalized.enabled ? navigationGuard : { enabled: false })\n\n return form\n}\n","import{get as e,set as t}from\"react-hook-form\";const r=(t,r,o)=>{if(t&&\"reportValidity\"in t){const s=e(o,r);t.setCustomValidity(s&&s.message||\"\"),t.reportValidity()}},o=(e,t)=>{for(const o in t.fields){const s=t.fields[o];s&&s.ref&&\"reportValidity\"in s.ref?r(s.ref,o,e):s&&s.refs&&s.refs.forEach(t=>r(t,o,e))}},s=(r,s)=>{s.shouldUseNativeValidation&&o(r,s);const n={};for(const o in r){const f=e(s.fields,o),c=Object.assign(r[o]||{},{ref:f&&f.ref});if(i(s.names||Object.keys(r),o)){const r=Object.assign({},e(n,o));t(r,\"root\",c),t(n,o,r)}else t(n,o,c)}return n},i=(e,t)=>{const r=n(t);return e.some(e=>n(e).match(`^${r}\\\\.\\\\d+`))};function n(e){return e.replace(/\\]|\\[/g,\"\")}export{s as toNestErrors,o as validateFieldsNatively};\n//# sourceMappingURL=resolvers.mjs.map\n","import{validateFieldsNatively as r,toNestErrors as e}from\"@hookform/resolvers\";import{appendErrors as o}from\"react-hook-form\";import*as n from\"zod/v4/core\";function t(r,e){try{var o=r()}catch(r){return e(r)}return o&&o.then?o.then(void 0,e):o}function s(r,e){for(var n={};r.length;){var t=r[0],s=t.code,i=t.message,a=t.path.join(\".\");if(!n[a])if(\"unionErrors\"in t){var u=t.unionErrors[0].errors[0];n[a]={message:u.message,type:u.code}}else n[a]={message:i,type:s};if(\"unionErrors\"in t&&t.unionErrors.forEach(function(e){return e.errors.forEach(function(e){return r.push(e)})}),e){var c=n[a].types,f=c&&c[t.code];n[a]=o(a,e,n,s,f?[].concat(f,t.message):t.message)}r.shift()}return n}function i(r,e){for(var n={};r.length;){var t=r[0],s=t.code,i=t.message,a=t.path.join(\".\");if(!n[a])if(\"invalid_union\"===t.code&&t.errors.length>0){var u=t.errors[0][0];n[a]={message:u.message,type:u.code}}else n[a]={message:i,type:s};if(\"invalid_union\"===t.code&&t.errors.forEach(function(e){return e.forEach(function(e){return r.push(e)})}),e){var c=n[a].types,f=c&&c[t.code];n[a]=o(a,e,n,s,f?[].concat(f,t.message):t.message)}r.shift()}return n}function a(o,a,u){if(void 0===u&&(u={}),function(r){return\"_def\"in r&&\"object\"==typeof r._def&&\"typeName\"in r._def}(o))return function(n,i,c){try{return Promise.resolve(t(function(){return Promise.resolve(o[\"sync\"===u.mode?\"parse\":\"parseAsync\"](n,a)).then(function(e){return c.shouldUseNativeValidation&&r({},c),{errors:{},values:u.raw?Object.assign({},n):e}})},function(r){if(function(r){return Array.isArray(null==r?void 0:r.issues)}(r))return{values:{},errors:e(s(r.errors,!c.shouldUseNativeValidation&&\"all\"===c.criteriaMode),c)};throw r}))}catch(r){return Promise.reject(r)}};if(function(r){return\"_zod\"in r&&\"object\"==typeof r._zod}(o))return function(s,c,f){try{return Promise.resolve(t(function(){return Promise.resolve((\"sync\"===u.mode?n.parse:n.parseAsync)(o,s,a)).then(function(e){return f.shouldUseNativeValidation&&r({},f),{errors:{},values:u.raw?Object.assign({},s):e}})},function(r){if(function(r){return r instanceof n.$ZodError}(r))return{values:{},errors:e(i(r.issues,!f.shouldUseNativeValidation&&\"all\"===f.criteriaMode),f)};throw r}))}catch(r){return Promise.reject(r)}};throw new Error(\"Invalid input: not a Zod schema\")}export{a as zodResolver};\n//# sourceMappingURL=zod.module.js.map\n"],"names":["isFormNavigationGuardDisabledByEnv","raw","env","RB_PUBLIC_DISABLE_FORM_GUARD","val","trim","toLowerCase","normalizeFormNavigationGuardOptions","input","enabled","blockOnSearch","message","priority","shouldBlockFormNavigation","args","shouldBlockUnload","currentLocation","pathname","nextLocation","search","DEFAULT_FORM_NAVIGATION_GUARD_MESSAGE","useFormNavigationGuard","form","opts","$","_c","t0","control","isDirty","isSubmitting","useFormState","t1","normalized","reactId","useId","id","t2","shouldBlockNavigation","t3","t4","useRegisterNavigationGuard","useForm","props","navigationGuard","rhfProps","rhfUseForm","t","r","o","s","e","n","c","i","a"],"mappings":"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","x_google_ignoreList":[3,4]}
|