@rpcbase/form 0.92.0 → 0.93.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 +261 -266
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,281 +1,276 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export * from "react-hook-form";
|
|
1
|
+
import { appendErrors, get, set, useForm as useForm$1, useFormState } from "react-hook-form";
|
|
3
2
|
import { c } from "react/compiler-runtime";
|
|
4
3
|
import { useId } from "react";
|
|
5
4
|
import { useRegisterNavigationGuard } from "@rpcbase/router";
|
|
6
5
|
import env from "@rpcbase/env";
|
|
7
|
-
import * as n
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
import * as n from "zod/v4/core";
|
|
7
|
+
export * from "react-hook-form";
|
|
8
|
+
//#region src/navigationGuard.ts
|
|
9
|
+
var isFormNavigationGuardDisabledByEnv = () => {
|
|
10
|
+
const raw = env.RB_PUBLIC_DISABLE_FORM_GUARD;
|
|
11
|
+
if (typeof raw !== "string") return false;
|
|
12
|
+
const val = raw.trim().toLowerCase();
|
|
13
|
+
return val === "1" || val === "true" || val === "yes";
|
|
13
14
|
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
message: input?.message,
|
|
30
|
-
blockOnSearch: input?.blockOnSearch ?? false,
|
|
31
|
-
priority: input?.priority
|
|
32
|
-
};
|
|
15
|
+
var normalizeFormNavigationGuardOptions = (input) => {
|
|
16
|
+
if (isFormNavigationGuardDisabledByEnv()) return {
|
|
17
|
+
enabled: false,
|
|
18
|
+
blockOnSearch: false
|
|
19
|
+
};
|
|
20
|
+
if (input === false) return {
|
|
21
|
+
enabled: false,
|
|
22
|
+
blockOnSearch: false
|
|
23
|
+
};
|
|
24
|
+
return {
|
|
25
|
+
enabled: input?.enabled ?? true,
|
|
26
|
+
message: input?.message,
|
|
27
|
+
blockOnSearch: input?.blockOnSearch ?? false,
|
|
28
|
+
priority: input?.priority
|
|
29
|
+
};
|
|
33
30
|
};
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
if (!shouldBlockUnload) return false;
|
|
40
|
-
if (args.currentLocation.pathname !== args.nextLocation.pathname) return true;
|
|
41
|
-
if (blockOnSearch && args.currentLocation.search !== args.nextLocation.search) return true;
|
|
42
|
-
return false;
|
|
31
|
+
var shouldBlockFormNavigation = ({ args, shouldBlockUnload, blockOnSearch }) => {
|
|
32
|
+
if (!shouldBlockUnload) return false;
|
|
33
|
+
if (args.currentLocation.pathname !== args.nextLocation.pathname) return true;
|
|
34
|
+
if (blockOnSearch && args.currentLocation.search !== args.nextLocation.search) return true;
|
|
35
|
+
return false;
|
|
43
36
|
};
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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);
|
|
37
|
+
//#endregion
|
|
38
|
+
//#region src/useFormNavigationGuard.ts
|
|
39
|
+
var DEFAULT_FORM_NAVIGATION_GUARD_MESSAGE = "You have unsaved changes. Leave without saving?";
|
|
40
|
+
var useFormNavigationGuard = (form, opts) => {
|
|
41
|
+
const $ = c(15);
|
|
42
|
+
let t0;
|
|
43
|
+
if ($[0] !== form.control) {
|
|
44
|
+
t0 = { control: form.control };
|
|
45
|
+
$[0] = form.control;
|
|
46
|
+
$[1] = t0;
|
|
47
|
+
} else t0 = $[1];
|
|
48
|
+
const { isDirty, isSubmitting } = useFormState(t0);
|
|
49
|
+
let t1;
|
|
50
|
+
if ($[2] !== opts) {
|
|
51
|
+
t1 = normalizeFormNavigationGuardOptions(opts);
|
|
52
|
+
$[2] = opts;
|
|
53
|
+
$[3] = t1;
|
|
54
|
+
} else t1 = $[3];
|
|
55
|
+
const normalized = t1;
|
|
56
|
+
const id = `rpcbase:form:${useId()}`;
|
|
57
|
+
const shouldBlockUnload = normalized.enabled && isDirty && !isSubmitting;
|
|
58
|
+
let t2;
|
|
59
|
+
if ($[4] !== normalized.blockOnSearch || $[5] !== shouldBlockUnload) {
|
|
60
|
+
t2 = (args) => shouldBlockFormNavigation({
|
|
61
|
+
args,
|
|
62
|
+
shouldBlockUnload,
|
|
63
|
+
blockOnSearch: normalized.blockOnSearch
|
|
64
|
+
});
|
|
65
|
+
$[4] = normalized.blockOnSearch;
|
|
66
|
+
$[5] = shouldBlockUnload;
|
|
67
|
+
$[6] = t2;
|
|
68
|
+
} else t2 = $[6];
|
|
69
|
+
const shouldBlockNavigation = t2;
|
|
70
|
+
const t3 = normalized.message ?? "You have unsaved changes. Leave without saving?";
|
|
71
|
+
let t4;
|
|
72
|
+
if ($[7] !== id || $[8] !== normalized.blockOnSearch || $[9] !== normalized.enabled || $[10] !== normalized.priority || $[11] !== shouldBlockNavigation || $[12] !== shouldBlockUnload || $[13] !== t3) {
|
|
73
|
+
t4 = {
|
|
74
|
+
id,
|
|
75
|
+
enabled: normalized.enabled,
|
|
76
|
+
priority: normalized.priority,
|
|
77
|
+
message: t3,
|
|
78
|
+
blockOnSearch: normalized.blockOnSearch,
|
|
79
|
+
shouldBlockNavigation,
|
|
80
|
+
shouldBlockUnload
|
|
81
|
+
};
|
|
82
|
+
$[7] = id;
|
|
83
|
+
$[8] = normalized.blockOnSearch;
|
|
84
|
+
$[9] = normalized.enabled;
|
|
85
|
+
$[10] = normalized.priority;
|
|
86
|
+
$[11] = shouldBlockNavigation;
|
|
87
|
+
$[12] = shouldBlockUnload;
|
|
88
|
+
$[13] = t3;
|
|
89
|
+
$[14] = t4;
|
|
90
|
+
} else t4 = $[14];
|
|
91
|
+
useRegisterNavigationGuard(t4);
|
|
111
92
|
};
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
};
|
|
151
|
-
$[7] = navigationGuard;
|
|
152
|
-
$[8] = normalized.enabled;
|
|
153
|
-
$[9] = t2;
|
|
154
|
-
} else {
|
|
155
|
-
t2 = $[9];
|
|
156
|
-
}
|
|
157
|
-
useFormNavigationGuard(form, t2);
|
|
158
|
-
return form;
|
|
93
|
+
//#endregion
|
|
94
|
+
//#region src/useForm.ts
|
|
95
|
+
var useForm = (props) => {
|
|
96
|
+
const $ = c(10);
|
|
97
|
+
let t0;
|
|
98
|
+
if ($[0] !== props) {
|
|
99
|
+
t0 = props ?? {};
|
|
100
|
+
$[0] = props;
|
|
101
|
+
$[1] = t0;
|
|
102
|
+
} else t0 = $[1];
|
|
103
|
+
let navigationGuard;
|
|
104
|
+
let rhfProps;
|
|
105
|
+
if ($[2] !== t0) {
|
|
106
|
+
({navigationGuard, ...rhfProps} = t0);
|
|
107
|
+
$[2] = t0;
|
|
108
|
+
$[3] = navigationGuard;
|
|
109
|
+
$[4] = rhfProps;
|
|
110
|
+
} else {
|
|
111
|
+
navigationGuard = $[3];
|
|
112
|
+
rhfProps = $[4];
|
|
113
|
+
}
|
|
114
|
+
const form = useForm$1(rhfProps);
|
|
115
|
+
let t1;
|
|
116
|
+
if ($[5] !== navigationGuard) {
|
|
117
|
+
t1 = normalizeFormNavigationGuardOptions(navigationGuard);
|
|
118
|
+
$[5] = navigationGuard;
|
|
119
|
+
$[6] = t1;
|
|
120
|
+
} else t1 = $[6];
|
|
121
|
+
const normalized = t1;
|
|
122
|
+
let t2;
|
|
123
|
+
if ($[7] !== navigationGuard || $[8] !== normalized.enabled) {
|
|
124
|
+
t2 = normalized.enabled ? navigationGuard : { enabled: false };
|
|
125
|
+
$[7] = navigationGuard;
|
|
126
|
+
$[8] = normalized.enabled;
|
|
127
|
+
$[9] = t2;
|
|
128
|
+
} else t2 = $[9];
|
|
129
|
+
useFormNavigationGuard(form, t2);
|
|
130
|
+
return form;
|
|
159
131
|
};
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
|
|
132
|
+
//#endregion
|
|
133
|
+
//#region ../../node_modules/@hookform/resolvers/dist/resolvers.mjs
|
|
134
|
+
var r = (t, r, o) => {
|
|
135
|
+
if (t && "reportValidity" in t) {
|
|
136
|
+
const s = get(o, r);
|
|
137
|
+
t.setCustomValidity(s && s.message || ""), t.reportValidity();
|
|
138
|
+
}
|
|
139
|
+
}, o = (e, t) => {
|
|
140
|
+
for (const o in t.fields) {
|
|
141
|
+
const s = t.fields[o];
|
|
142
|
+
s && s.ref && "reportValidity" in s.ref ? r(s.ref, o, e) : s && s.refs && s.refs.forEach((t) => r(t, o, e));
|
|
143
|
+
}
|
|
144
|
+
}, s$1 = (r, s) => {
|
|
145
|
+
s.shouldUseNativeValidation && o(r, s);
|
|
146
|
+
const n = {};
|
|
147
|
+
for (const o in r) {
|
|
148
|
+
const f = get(s.fields, o), c = Object.assign(r[o] || {}, { ref: f && f.ref });
|
|
149
|
+
if (i$1(s.names || Object.keys(r), o)) {
|
|
150
|
+
const r = Object.assign({}, get(n, o));
|
|
151
|
+
set(r, "root", c), set(n, o, r);
|
|
152
|
+
} else set(n, o, c);
|
|
153
|
+
}
|
|
154
|
+
return n;
|
|
155
|
+
}, i$1 = (e, t) => {
|
|
156
|
+
const r = n$1(t);
|
|
157
|
+
return e.some((e) => n$1(e).match(`^${r}\\.\\d+`));
|
|
184
158
|
};
|
|
185
|
-
function n(e) {
|
|
186
|
-
|
|
159
|
+
function n$1(e) {
|
|
160
|
+
return e.replace(/\]|\[/g, "");
|
|
187
161
|
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
162
|
+
//#endregion
|
|
163
|
+
//#region ../../node_modules/@hookform/resolvers/zod/dist/zod.mjs
|
|
164
|
+
function t(r, e) {
|
|
165
|
+
try {
|
|
166
|
+
var o = r();
|
|
167
|
+
} catch (r) {
|
|
168
|
+
return e(r);
|
|
169
|
+
}
|
|
170
|
+
return o && o.then ? o.then(void 0, e) : o;
|
|
195
171
|
}
|
|
196
|
-
function s(
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
172
|
+
function s(r, e) {
|
|
173
|
+
for (var n = {}; r.length;) {
|
|
174
|
+
var t = r[0], s = t.code, i = t.message, a = t.path.join(".");
|
|
175
|
+
if (!n[a]) if ("unionErrors" in t) {
|
|
176
|
+
var u = t.unionErrors[0].errors[0];
|
|
177
|
+
n[a] = {
|
|
178
|
+
message: u.message,
|
|
179
|
+
type: u.code
|
|
180
|
+
};
|
|
181
|
+
} else n[a] = {
|
|
182
|
+
message: i,
|
|
183
|
+
type: s
|
|
184
|
+
};
|
|
185
|
+
if ("unionErrors" in t && t.unionErrors.forEach(function(e) {
|
|
186
|
+
return e.errors.forEach(function(e) {
|
|
187
|
+
return r.push(e);
|
|
188
|
+
});
|
|
189
|
+
}), e) {
|
|
190
|
+
var c = n[a].types, f = c && c[t.code];
|
|
191
|
+
n[a] = appendErrors(a, e, n, s, f ? [].concat(f, t.message) : t.message);
|
|
192
|
+
}
|
|
193
|
+
r.shift();
|
|
194
|
+
}
|
|
195
|
+
return n;
|
|
214
196
|
}
|
|
215
|
-
function i(
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
197
|
+
function i(r, e) {
|
|
198
|
+
for (var n = {}; r.length;) {
|
|
199
|
+
var t = r[0], s = t.code, i = t.message, a = t.path.join(".");
|
|
200
|
+
if (!n[a]) if ("invalid_union" === t.code && t.errors.length > 0) {
|
|
201
|
+
var u = t.errors[0][0];
|
|
202
|
+
n[a] = {
|
|
203
|
+
message: u.message,
|
|
204
|
+
type: u.code
|
|
205
|
+
};
|
|
206
|
+
} else n[a] = {
|
|
207
|
+
message: i,
|
|
208
|
+
type: s
|
|
209
|
+
};
|
|
210
|
+
if ("invalid_union" === t.code && t.errors.forEach(function(e) {
|
|
211
|
+
return e.forEach(function(e) {
|
|
212
|
+
return r.push(e);
|
|
213
|
+
});
|
|
214
|
+
}), e) {
|
|
215
|
+
var c = n[a].types, f = c && c[t.code];
|
|
216
|
+
n[a] = appendErrors(a, e, n, s, f ? [].concat(f, t.message) : t.message);
|
|
217
|
+
}
|
|
218
|
+
r.shift();
|
|
219
|
+
}
|
|
220
|
+
return n;
|
|
233
221
|
}
|
|
234
|
-
function a(o$1,
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
222
|
+
function a(o$1, a, u) {
|
|
223
|
+
if (void 0 === u && (u = {}), function(r) {
|
|
224
|
+
return "_def" in r && "object" == typeof r._def && "typeName" in r._def;
|
|
225
|
+
}(o$1)) return function(n, i, c) {
|
|
226
|
+
try {
|
|
227
|
+
return Promise.resolve(t(function() {
|
|
228
|
+
return Promise.resolve(o$1["sync" === u.mode ? "parse" : "parseAsync"](n, a)).then(function(e) {
|
|
229
|
+
return c.shouldUseNativeValidation && o({}, c), {
|
|
230
|
+
errors: {},
|
|
231
|
+
values: u.raw ? Object.assign({}, n) : e
|
|
232
|
+
};
|
|
233
|
+
});
|
|
234
|
+
}, function(r) {
|
|
235
|
+
if (function(r) {
|
|
236
|
+
return Array.isArray(null == r ? void 0 : r.issues);
|
|
237
|
+
}(r)) return {
|
|
238
|
+
values: {},
|
|
239
|
+
errors: s$1(s(r.errors, !c.shouldUseNativeValidation && "all" === c.criteriaMode), c)
|
|
240
|
+
};
|
|
241
|
+
throw r;
|
|
242
|
+
}));
|
|
243
|
+
} catch (r) {
|
|
244
|
+
return Promise.reject(r);
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
if (function(r) {
|
|
248
|
+
return "_zod" in r && "object" == typeof r._zod;
|
|
249
|
+
}(o$1)) return function(s, c, f) {
|
|
250
|
+
try {
|
|
251
|
+
return Promise.resolve(t(function() {
|
|
252
|
+
return Promise.resolve(("sync" === u.mode ? n.parse : n.parseAsync)(o$1, s, a)).then(function(e) {
|
|
253
|
+
return f.shouldUseNativeValidation && o({}, f), {
|
|
254
|
+
errors: {},
|
|
255
|
+
values: u.raw ? Object.assign({}, s) : e
|
|
256
|
+
};
|
|
257
|
+
});
|
|
258
|
+
}, function(r) {
|
|
259
|
+
if (function(r) {
|
|
260
|
+
return r instanceof n.$ZodError;
|
|
261
|
+
}(r)) return {
|
|
262
|
+
values: {},
|
|
263
|
+
errors: s$1(i(r.issues, !f.shouldUseNativeValidation && "all" === f.criteriaMode), f)
|
|
264
|
+
};
|
|
265
|
+
throw r;
|
|
266
|
+
}));
|
|
267
|
+
} catch (r) {
|
|
268
|
+
return Promise.reject(r);
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
throw new Error("Invalid input: not a Zod schema");
|
|
272
272
|
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
useForm,
|
|
278
|
-
useFormNavigationGuard,
|
|
279
|
-
a as zodResolver
|
|
280
|
-
};
|
|
281
|
-
//# sourceMappingURL=index.js.map
|
|
273
|
+
//#endregion
|
|
274
|
+
export { DEFAULT_FORM_NAVIGATION_GUARD_MESSAGE, normalizeFormNavigationGuardOptions, shouldBlockFormNavigation, useForm, useFormNavigationGuard, a as zodResolver };
|
|
275
|
+
|
|
276
|
+
//# sourceMappingURL=index.js.map
|
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":["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]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["BlockerFunction","env","isFormNavigationGuardDisabledByEnv","raw","RB_PUBLIC_DISABLE_FORM_GUARD","val","trim","toLowerCase","FormNavigationGuardOptions","enabled","message","blockOnSearch","priority","NormalizedFormNavigationGuardOptions","normalizeFormNavigationGuardOptions","input","shouldBlockFormNavigation","args","shouldBlockUnload","Parameters","currentLocation","pathname","nextLocation","search","useCallback","useId","useMemo","FieldValues","UseFormReturn","useFormState","useRegisterNavigationGuard","normalizeFormNavigationGuardOptions","shouldBlockFormNavigation","FormNavigationGuardOptions","DEFAULT_FORM_NAVIGATION_GUARD_MESSAGE","useFormNavigationGuard","form","opts","$","_c","t0","control","isDirty","isSubmitting","t1","normalized","reactId","id","shouldBlockUnload","enabled","t2","blockOnSearch","args","shouldBlockNavigation","t3","message","t4","priority","useForm","rhfUseForm","FieldValues","UseFormProps","UseFormReturn","useFormNavigationGuard","normalizeFormNavigationGuardOptions","FormNavigationGuardOptions","UseFormPropsWithNavigationGuard","TFieldValues","TContext","TTransformedValues","navigationGuard","props","$","_c","t0","rhfProps","form","t1","normalized","t2","enabled","e","s","i","t","n","o","r","e"],"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"],"x_google_ignoreList":[3,4],"mappings":"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"}
|