@studiolambda/router 0.1.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/matcher-C4dv_pr6.cjs +2 -0
  2. package/dist/{matcher-CTRKcf7I.cjs.map → matcher-C4dv_pr6.cjs.map} +1 -1
  3. package/dist/{matcher-ehhvtyaT.js → matcher-CQObVRFk.js} +2 -1
  4. package/dist/{matcher-ehhvtyaT.js.map → matcher-CQObVRFk.js.map} +1 -1
  5. package/dist/router.cjs +1 -1
  6. package/dist/router.js +1 -1
  7. package/dist/router_react.cjs +2 -2
  8. package/dist/router_react.cjs.map +1 -1
  9. package/dist/router_react.js +233 -154
  10. package/dist/router_react.js.map +1 -1
  11. package/dist/src/react/components/NotFound.d.ts +5 -2
  12. package/dist/src/react/components/Router.d.ts +1 -1
  13. package/dist/src/react/context/NavigationContext.d.ts +1 -1
  14. package/dist/src/react/context/NavigationSignalContext.d.ts +6 -1
  15. package/dist/src/react/context/NavigationTypeContext.d.ts +6 -1
  16. package/dist/src/react/context/ParamsContext.d.ts +10 -0
  17. package/dist/src/react/context/PathnameContext.d.ts +5 -4
  18. package/dist/src/react/context/TransitionContext.d.ts +0 -6
  19. package/dist/src/react/context/UrlContext.d.ts +12 -0
  20. package/dist/src/react/createRouter.d.ts +5 -0
  21. package/dist/src/react/extractPathname.d.ts +1 -2
  22. package/dist/src/react/hooks/useBack.d.ts +7 -1
  23. package/dist/src/react/hooks/useForward.d.ts +8 -1
  24. package/dist/src/react/hooks/useNavigate.d.ts +15 -0
  25. package/dist/src/react/hooks/useNavigation.d.ts +10 -0
  26. package/dist/src/react/hooks/useNavigationEvents.d.ts +18 -0
  27. package/dist/src/react/hooks/useNavigationHandlers.d.ts +9 -0
  28. package/dist/src/react/hooks/useNavigationSignal.d.ts +15 -0
  29. package/dist/src/react/hooks/useNavigationType.d.ts +18 -0
  30. package/dist/src/react/hooks/useNextMatch.d.ts +11 -0
  31. package/dist/src/react/hooks/useParams.d.ts +1 -0
  32. package/dist/src/react/hooks/usePathname.d.ts +1 -0
  33. package/dist/src/react/hooks/usePrefetch.d.ts +57 -0
  34. package/dist/src/react/hooks/useSearchParams.d.ts +9 -5
  35. package/dist/src/react/index.d.ts +2 -1
  36. package/dist/src/react/navigation/createMemoryNavigation.d.ts +5 -1
  37. package/package.json +1 -1
  38. package/dist/matcher-CTRKcf7I.cjs +0 -2
  39. package/dist/src/react/context/PropsContext.d.ts +0 -10
@@ -1,4 +1,4 @@
1
- import { t as e } from "./matcher-ehhvtyaT.js";
1
+ import { t as e } from "./matcher-CQObVRFk.js";
2
2
  import { jsx as t } from "react/jsx-runtime";
3
3
  import { Suspense as n, createContext as r, use as i, useEffect as a, useEffectEvent as o, useRef as s, useState as c, useTransition as l } from "react";
4
4
  //#region \0rolldown/runtime.js
@@ -28,12 +28,12 @@ var p = /* @__PURE__ */ u(((e) => {
28
28
  })();
29
29
  })), h = (/* @__PURE__ */ u(((e, t) => {
30
30
  process.env.NODE_ENV === "production" ? t.exports = p() : t.exports = m();
31
- })))(), g = r({}), _ = r(null), v = r(null), y = r(null);
31
+ })))(), g = r(null), _ = r(null), v = r(void 0), y = r(void 0);
32
32
  //#endregion
33
33
  //#region src/react/components/NotFound.tsx
34
34
  function b() {
35
35
  let e = (0, h.c)(1), n;
36
- return e[0] === Symbol.for("react.memo_cache_sentinel") ? (n = /* @__PURE__ */ t("div", { children: "Not Found" }), e[0] = n) : n = e[0], n;
36
+ return e[0] === Symbol.for("react.memo_cache_sentinel") ? (n = /* @__PURE__ */ t("h1", { children: "Not Found" }), e[0] = n) : n = e[0], n;
37
37
  }
38
38
  //#endregion
39
39
  //#region src/react/context/TransitionContext.ts
@@ -106,33 +106,34 @@ function T(e, t) {
106
106
  }
107
107
  //#endregion
108
108
  //#region src/react/context/PathnameContext.ts
109
- var E = r("/");
109
+ var E = r(null), D = r(null);
110
110
  //#endregion
111
111
  //#region src/react/extractPathname.ts
112
- function D(e) {
113
- return e ? new URL(e, "http://localhost").pathname : "/";
112
+ function O(e) {
113
+ return e == null ? "/" : new URL(e, "http://localhost").pathname;
114
114
  }
115
115
  //#endregion
116
116
  //#region src/react/components/Router.tsx
117
- function O(e) {
118
- let r = (0, h.c)(44), a = i(_), s = e.navigation ?? a ?? (typeof window < "u" ? window.navigation : void 0);
117
+ function k(e) {
118
+ let r = (0, h.c)(47), a = i(_), s = e.navigation ?? a ?? (typeof window < "u" ? window.navigation : void 0);
119
119
  if (s == null) throw Error("Router requires a navigation prop, NavigationContext provider, or browser Navigation API support. Use createMemoryNavigation() for SSR or non-browser environments.");
120
120
  let u = e.matcher ?? i(C), d = l(), p = e.transition ?? d, m;
121
121
  r[0] === u ? m = r[1] : (m = { matcher: u }, r[0] = u, r[1] = m);
122
- let O = w(m), k = e.notFound ?? b, A;
123
- r[2] !== s.currentEntry?.url || r[3] !== O || r[4] !== k ? (A = function() {
122
+ let k = w(m), A = e.notFound ?? b, j;
123
+ r[2] !== s.currentEntry?.url || r[3] !== k || r[4] !== A ? (j = function() {
124
124
  let e = s.currentEntry?.url ?? null;
125
125
  return {
126
- match: O(e, k),
126
+ match: k(e, A),
127
127
  signal: null,
128
128
  navigationType: null,
129
- pathname: D(e)
129
+ pathname: O(e),
130
+ url: e
130
131
  };
131
- }, r[2] = s.currentEntry?.url, r[3] = O, r[4] = k, r[5] = A) : A = r[5];
132
- let [j, M] = c(A), { createPrecommitHandler: N, createHandler: P } = S(p), F;
133
- r[6] !== P || r[7] !== N || r[8] !== O || r[9] !== k ? (F = function(e) {
132
+ }, r[2] = s.currentEntry?.url, r[3] = k, r[4] = A, r[5] = j) : j = r[5];
133
+ let [M, N] = c(j), { createPrecommitHandler: P, createHandler: F } = S(p), I;
134
+ r[6] !== F || r[7] !== P || r[8] !== k || r[9] !== A ? (I = function(e) {
134
135
  if (!e.canIntercept || e.hashChange || e.downloadRequest !== null) return;
135
- let t = O(e.destination.url, k);
136
+ let t = k(e.destination.url, A);
136
137
  if (e.formData !== null && t.handler.formHandler !== void 0) {
137
138
  e.intercept({
138
139
  scroll: t.handler.scroll,
@@ -143,16 +144,17 @@ function O(e) {
143
144
  });
144
145
  return;
145
146
  }
146
- let n = N({
147
+ let n = P({
147
148
  prefetch: t.handler.prefetch,
148
149
  params: t.params,
149
150
  url: new URL(e.destination.url)
150
- }), r = P(function() {
151
- M({
151
+ }), r = F(function() {
152
+ N({
152
153
  match: t,
153
154
  signal: e.signal,
154
155
  navigationType: e.navigationType,
155
- pathname: D(e.destination.url)
156
+ pathname: O(e.destination.url),
157
+ url: e.destination.url
156
158
  });
157
159
  });
158
160
  e.intercept({
@@ -161,86 +163,106 @@ function O(e) {
161
163
  scroll: t.handler.scroll,
162
164
  focusReset: t.handler.focusReset
163
165
  });
164
- }, r[6] = P, r[7] = N, r[8] = O, r[9] = k, r[10] = F) : F = r[10];
165
- let I = o(F), L;
166
- r[11] !== I || r[12] !== e.onNavigateError || r[13] !== e.onNavigateSuccess ? (L = {
167
- onNavigate: I,
166
+ }, r[6] = F, r[7] = P, r[8] = k, r[9] = A, r[10] = I) : I = r[10];
167
+ let L = o(I), R;
168
+ r[11] !== L || r[12] !== e.onNavigateError || r[13] !== e.onNavigateSuccess ? (R = {
169
+ onNavigate: L,
168
170
  onNavigateSuccess: e.onNavigateSuccess,
169
171
  onNavigateError: e.onNavigateError
170
- }, r[11] = I, r[12] = e.onNavigateError, r[13] = e.onNavigateSuccess, r[14] = L) : L = r[14], T(s, L);
171
- let R = j.match.handler.component, z = j.match.handler.middlewares, B;
172
- r[15] === R ? B = r[16] : (B = /* @__PURE__ */ t(R, {}), r[15] = R, r[16] = B);
173
- let V;
174
- r[17] !== z || r[18] !== B ? (V = /* @__PURE__ */ t(f, {
175
- value: z,
176
- children: B
177
- }), r[17] = z, r[18] = B, r[19] = V) : V = r[19];
172
+ }, r[11] = L, r[12] = e.onNavigateError, r[13] = e.onNavigateSuccess, r[14] = R) : R = r[14], T(s, R);
173
+ let z = M.match.handler.component, B = M.match.handler.middlewares, V;
174
+ r[15] === z ? V = r[16] : (V = /* @__PURE__ */ t(z, {}), r[15] = z, r[16] = V);
178
175
  let H;
179
- r[20] !== e.fallback || r[21] !== V ? (H = /* @__PURE__ */ t(n, {
180
- fallback: e.fallback,
176
+ r[17] !== B || r[18] !== V ? (H = /* @__PURE__ */ t(f, {
177
+ value: B,
181
178
  children: V
182
- }), r[20] = e.fallback, r[21] = V, r[22] = H) : H = r[22];
179
+ }), r[17] = B, r[18] = V, r[19] = H) : H = r[19];
183
180
  let U;
184
- r[23] !== j.match.params || r[24] !== H ? (U = /* @__PURE__ */ t(g, {
185
- value: j.match.params,
181
+ r[20] !== e.fallback || r[21] !== H ? (U = /* @__PURE__ */ t(n, {
182
+ fallback: e.fallback,
186
183
  children: H
187
- }), r[23] = j.match.params, r[24] = H, r[25] = U) : U = r[25];
184
+ }), r[20] = e.fallback, r[21] = H, r[22] = U) : U = r[22];
188
185
  let W;
189
- r[26] !== j.pathname || r[27] !== U ? (W = /* @__PURE__ */ t(E, {
190
- value: j.pathname,
186
+ r[23] !== M.match.params || r[24] !== U ? (W = /* @__PURE__ */ t(g, {
187
+ value: M.match.params,
191
188
  children: U
192
- }), r[26] = j.pathname, r[27] = U, r[28] = W) : W = r[28];
189
+ }), r[23] = M.match.params, r[24] = U, r[25] = W) : W = r[25];
193
190
  let G;
194
- r[29] !== j.signal || r[30] !== W ? (G = /* @__PURE__ */ t(v, {
195
- value: j.signal,
191
+ r[26] !== M.url || r[27] !== W ? (G = /* @__PURE__ */ t(D, {
192
+ value: M.url,
196
193
  children: W
197
- }), r[29] = j.signal, r[30] = W, r[31] = G) : G = r[31];
194
+ }), r[26] = M.url, r[27] = W, r[28] = G) : G = r[28];
198
195
  let K;
199
- r[32] !== j.navigationType || r[33] !== G ? (K = /* @__PURE__ */ t(y, {
200
- value: j.navigationType,
196
+ r[29] !== M.pathname || r[30] !== G ? (K = /* @__PURE__ */ t(E, {
197
+ value: M.pathname,
201
198
  children: G
202
- }), r[32] = j.navigationType, r[33] = G, r[34] = K) : K = r[34];
199
+ }), r[29] = M.pathname, r[30] = G, r[31] = K) : K = r[31];
203
200
  let q;
204
- r[35] !== u || r[36] !== K ? (q = /* @__PURE__ */ t(C, {
205
- value: u,
201
+ r[32] !== M.signal || r[33] !== K ? (q = /* @__PURE__ */ t(v, {
202
+ value: M.signal,
206
203
  children: K
207
- }), r[35] = u, r[36] = K, r[37] = q) : q = r[37];
204
+ }), r[32] = M.signal, r[33] = K, r[34] = q) : q = r[34];
208
205
  let J;
209
- r[38] !== s || r[39] !== q ? (J = /* @__PURE__ */ t(_, {
210
- value: s,
206
+ r[35] !== M.navigationType || r[36] !== q ? (J = /* @__PURE__ */ t(y, {
207
+ value: M.navigationType,
211
208
  children: q
212
- }), r[38] = s, r[39] = q, r[40] = J) : J = r[40];
209
+ }), r[35] = M.navigationType, r[36] = q, r[37] = J) : J = r[37];
213
210
  let Y;
214
- return r[41] !== J || r[42] !== p ? (Y = /* @__PURE__ */ t(x, {
215
- value: p,
211
+ r[38] !== u || r[39] !== J ? (Y = /* @__PURE__ */ t(C, {
212
+ value: u,
216
213
  children: J
217
- }), r[41] = J, r[42] = p, r[43] = Y) : Y = r[43], Y;
214
+ }), r[38] = u, r[39] = J, r[40] = Y) : Y = r[40];
215
+ let X;
216
+ r[41] !== s || r[42] !== Y ? (X = /* @__PURE__ */ t(_, {
217
+ value: s,
218
+ children: Y
219
+ }), r[41] = s, r[42] = Y, r[43] = X) : X = r[43];
220
+ let Z;
221
+ return r[44] !== X || r[45] !== p ? (Z = /* @__PURE__ */ t(x, {
222
+ value: p,
223
+ children: X
224
+ }), r[44] = X, r[45] = p, r[46] = Z) : Z = r[46], Z;
218
225
  }
219
226
  //#endregion
220
227
  //#region src/react/hooks/useActiveLinkProps.ts
221
- function k(e, t) {
222
- let n = A(e, i(E), t?.exact ?? !0);
228
+ function A(e, t) {
229
+ let n = i(E);
230
+ if (n === null) return {
231
+ isActive: !1,
232
+ props: {
233
+ "data-active": void 0,
234
+ "aria-current": void 0
235
+ }
236
+ };
237
+ let r = j(e, n, t?.exact ?? !0);
223
238
  return {
224
- isActive: n,
239
+ isActive: r,
225
240
  props: {
226
- "data-active": n || void 0,
227
- "aria-current": n ? "page" : void 0
241
+ "data-active": r || void 0,
242
+ "aria-current": r ? "page" : void 0
228
243
  }
229
244
  };
230
245
  }
231
- function A(e, t, n) {
246
+ function j(e, t, n) {
232
247
  if (e === void 0) return !1;
233
- let r = D(e);
248
+ let r = O(e);
234
249
  return n ? r === t : t === r || t.startsWith(r + "/");
235
250
  }
236
251
  //#endregion
237
252
  //#region src/react/hooks/usePrefetch.ts
238
- function j(e) {
253
+ var M = /* @__PURE__ */ new WeakMap();
254
+ function N(e) {
255
+ M.delete(e);
256
+ }
257
+ function P(e) {
239
258
  let t = e?.matcher ?? i(C);
240
259
  return function(e) {
241
260
  let n = new URL(e, "http://localhost"), r = t.match(n.pathname);
242
261
  if (r?.handler.prefetch === void 0) return;
243
- let i = {
262
+ let i = M.get(t);
263
+ if (i === void 0 && (i = /* @__PURE__ */ new Set(), M.set(t, i)), i.has(n.pathname)) return;
264
+ i.add(n.pathname);
265
+ let a = {
244
266
  params: r.params,
245
267
  url: n,
246
268
  controller: {
@@ -248,13 +270,13 @@ function j(e) {
248
270
  addHandler() {}
249
271
  }
250
272
  };
251
- return r.handler.prefetch(i);
273
+ return r.handler.prefetch(a);
252
274
  };
253
275
  }
254
276
  //#endregion
255
277
  //#region src/react/hooks/usePrefetchEffect.ts
256
- function M(e, t) {
257
- let { href: n, on: r, once: i = !0, matcher: s } = t, c = j({ matcher: s }), l = o(function(e, t) {
278
+ function F(e, t) {
279
+ let { href: n, on: r, once: i = !0, matcher: s } = t, c = P({ matcher: s }), l = o(function(e, t) {
258
280
  for (let t of e) t.isIntersecting && n !== void 0 && c(n);
259
281
  i && t.disconnect();
260
282
  }), u = o(function() {
@@ -283,18 +305,18 @@ function M(e, t) {
283
305
  }
284
306
  //#endregion
285
307
  //#region src/react/components/Link.tsx
286
- function N(e) {
308
+ function I(e) {
287
309
  let n = (0, h.c)(23), r, i, a, o, c, l, u;
288
310
  n[0] === e ? (r = n[1], i = n[2], a = n[3], o = n[4], c = n[5], l = n[6], u = n[7]) : ({prefetch: o, once: l, href: i, matcher: a, className: r, activeExact: u, ...c} = e, n[0] = e, n[1] = r, n[2] = i, n[3] = a, n[4] = o, n[5] = c, n[6] = l, n[7] = u);
289
311
  let d = l === void 0 ? !0 : l, f = u === void 0 ? !0 : u, p = s(null), m;
290
312
  n[8] === f ? m = n[9] : (m = { exact: f }, n[8] = f, n[9] = m);
291
- let { isActive: g, props: _ } = k(i, m), v;
313
+ let { isActive: g, props: _ } = A(i, m), v;
292
314
  n[10] !== i || n[11] !== a || n[12] !== d || n[13] !== o ? (v = {
293
315
  href: i,
294
316
  on: o,
295
317
  once: d,
296
318
  matcher: a
297
- }, n[10] = i, n[11] = a, n[12] = d, n[13] = o, n[14] = v) : v = n[14], M(p, v);
319
+ }, n[10] = i, n[11] = a, n[12] = d, n[13] = o, n[14] = v) : v = n[14], F(p, v);
298
320
  let y;
299
321
  n[15] !== r || n[16] !== g ? (y = typeof r == "function" ? r({ isActive: g }) : r, n[15] = r, n[16] = g, n[17] = y) : y = n[17];
300
322
  let b = y, x;
@@ -308,198 +330,255 @@ function N(e) {
308
330
  }
309
331
  //#endregion
310
332
  //#region src/react/hooks/useNavigation.ts
311
- function P() {
333
+ function L() {
312
334
  let e = i(_);
313
335
  if (e === null) throw Error("useNavigation requires a <Router> or <NavigationContext> provider");
314
336
  return e;
315
337
  }
316
338
  //#endregion
317
339
  //#region src/react/hooks/useNavigate.ts
318
- function F() {
319
- let e = P();
340
+ function R() {
341
+ let e = L();
320
342
  return function(t, n) {
321
343
  return e.navigate(t, n);
322
344
  };
323
345
  }
324
346
  //#endregion
325
347
  //#region src/react/hooks/useNavigationSignal.ts
326
- function I() {
327
- return i(v);
348
+ function z() {
349
+ let e = i(v);
350
+ if (e === void 0) throw Error("useNavigationSignal requires a <Router> or <NavigationSignalContext> provider");
351
+ return e;
328
352
  }
329
353
  //#endregion
330
354
  //#region src/react/hooks/useNavigationType.ts
331
- function L() {
332
- return i(y);
355
+ function B() {
356
+ let e = i(y);
357
+ if (e === void 0) throw Error("useNavigationType requires a <Router> or <NavigationTypeContext> provider");
358
+ return e;
333
359
  }
334
360
  //#endregion
335
361
  //#region src/react/hooks/useParams.ts
336
- function R() {
337
- return i(g);
362
+ function V() {
363
+ let e = i(g);
364
+ if (e === null) throw Error("useParams requires a <Router> or <ParamsContext> provider");
365
+ return e;
338
366
  }
339
367
  //#endregion
340
368
  //#region src/react/hooks/useIsPending.ts
341
- function z() {
369
+ function H() {
342
370
  let e = i(x);
343
371
  if (e === null) throw Error("useIsPending requires a <Router> or <TransitionContext> provider");
344
372
  return e[0];
345
373
  }
346
374
  //#endregion
347
375
  //#region src/react/hooks/usePathname.ts
348
- function B() {
349
- return i(E);
376
+ function U() {
377
+ let e = i(E);
378
+ if (e === null) throw Error("usePathname requires a <Router> or <PathnameContext> provider");
379
+ return e;
350
380
  }
351
381
  //#endregion
352
382
  //#region src/react/hooks/useSearchParams.ts
353
- function V() {
354
- let e = P(), t = e.currentEntry?.url, n = t ? new URL(t).searchParams : new URLSearchParams();
355
- function r(t, n) {
356
- let r = e.currentEntry, i = new URL(r?.url ?? "/", "http://localhost"), a = typeof t == "function" ? t(i.searchParams) : t, o = (a instanceof URLSearchParams ? a : new URLSearchParams(a)).toString(), s = i.pathname + (o ? "?" + o : "");
357
- return e.navigate(s, { history: n?.history ?? "replace" });
383
+ function W() {
384
+ let e = L(), t = i(D), n = t ? new URL(t, "http://localhost").searchParams : new URLSearchParams();
385
+ function r(n, r) {
386
+ let i = new URL(t ?? "/", "http://localhost"), a = typeof n == "function" ? n(i.searchParams) : n, o = (a instanceof URLSearchParams ? a : new URLSearchParams(a)).toString(), s = i.pathname + (o ? "?" + o : "") + i.hash;
387
+ return e.navigate(s, { history: r?.history ?? "replace" });
358
388
  }
359
389
  return [n, r];
360
390
  }
361
391
  //#endregion
362
392
  //#region src/react/hooks/useBack.ts
363
- function H() {
364
- let e = P();
365
- function t(t) {
393
+ function G() {
394
+ let e = L(), [t, n] = c(e.canGoBack);
395
+ a(function() {
396
+ function t() {
397
+ n(e.canGoBack);
398
+ }
399
+ return e.addEventListener("currententrychange", t), function() {
400
+ e.removeEventListener("currententrychange", t);
401
+ };
402
+ }, [e]);
403
+ function r(t) {
366
404
  return e.back(t);
367
405
  }
368
406
  return {
369
- back: t,
370
- canGoBack: e.canGoBack
407
+ back: r,
408
+ canGoBack: t
371
409
  };
372
410
  }
373
411
  //#endregion
374
412
  //#region src/react/hooks/useForward.ts
375
- function U() {
376
- let e = P();
377
- function t(t) {
413
+ function K() {
414
+ let e = L(), [t, n] = c(e.canGoForward);
415
+ a(function() {
416
+ function t() {
417
+ n(e.canGoForward);
418
+ }
419
+ return e.addEventListener("currententrychange", t), function() {
420
+ e.removeEventListener("currententrychange", t);
421
+ };
422
+ }, [e]);
423
+ function r(t) {
378
424
  return e.forward(t);
379
425
  }
380
426
  return {
381
- forward: t,
382
- canGoForward: e.canGoForward
427
+ forward: r,
428
+ canGoForward: t
383
429
  };
384
430
  }
385
431
  //#endregion
386
432
  //#region src/react/navigation/createMemoryNavigation.ts
387
- function W(e) {
388
- let t = { url: e.url };
389
- function n() {}
390
- function r() {}
391
- function i() {
392
- return {
393
- committed: Promise.resolve(t),
394
- finished: Promise.resolve(t)
395
- };
433
+ function q(e) {
434
+ let t = { url: e.url }, n = t, r = {
435
+ committed: Promise.resolve(n),
436
+ finished: Promise.resolve(n)
437
+ };
438
+ function i() {}
439
+ function a() {}
440
+ function o() {
441
+ return r;
442
+ }
443
+ function s() {
444
+ return r;
396
445
  }
397
- function a() {
398
- return [t];
446
+ function c() {
447
+ return r;
448
+ }
449
+ function l() {
450
+ return r;
451
+ }
452
+ function u() {}
453
+ function d() {
454
+ return [n];
399
455
  }
400
456
  return {
401
457
  currentEntry: t,
402
458
  canGoBack: !1,
403
459
  canGoForward: !1,
404
460
  transition: null,
405
- addEventListener: n,
406
- removeEventListener: r,
407
- navigate: i,
408
- entries: a
461
+ addEventListener: i,
462
+ removeEventListener: a,
463
+ navigate: o,
464
+ back: s,
465
+ forward: c,
466
+ traverseTo: l,
467
+ updateCurrentEntry: u,
468
+ entries: d
409
469
  };
410
470
  }
411
471
  //#endregion
412
472
  //#region src/react/createRouter.ts
413
- function G(e, t) {
473
+ function J(e, t) {
414
474
  return e === "" && t === "" ? "" : e === "" ? t : t === "" || t === "/" ? e : (e.endsWith("/") ? e.slice(0, -1) : e) + (t.startsWith("/") ? t : "/" + t);
415
475
  }
416
- function K(e) {
476
+ function Y(e) {
417
477
  if (e.length !== 0) return e.length === 1 ? e[0] : async function(t) {
418
478
  for (let n of e) await n(t);
419
479
  };
420
480
  }
421
- function q() {
481
+ function X() {
422
482
  return null;
423
483
  }
424
- function J(e, t) {
425
- return function(n) {
426
- let r = {
427
- path: n,
484
+ function Z(e, t, n) {
485
+ return function(r) {
486
+ let i = {
487
+ path: r,
428
488
  middlewares: [],
429
489
  prefetches: [],
430
490
  scroll: void 0,
431
491
  focusReset: void 0,
432
492
  formHandler: void 0
433
- };
434
- function i() {
435
- let e = G(t.prefix, r.path ?? "");
493
+ }, a = !1;
494
+ function o(e) {
495
+ if (a) throw Error(`cannot call .${e}() on a route builder that has already been consumed by .render(), .redirect(), or .group()`);
496
+ }
497
+ function s() {
498
+ let e = J(t.prefix, i.path ?? "");
436
499
  if (e === "") throw Error("cannot register a route without a path or group prefix");
437
500
  return e;
438
501
  }
439
- function a() {
440
- let e = [...t.middlewares, ...r.middlewares];
502
+ function c() {
503
+ let e = [...t.middlewares, ...i.middlewares];
441
504
  return e.length > 0 ? e : void 0;
442
505
  }
443
- function o() {
444
- return K([...t.prefetches, ...r.prefetches]);
506
+ function l() {
507
+ return Y([...t.prefetches, ...i.prefetches]);
445
508
  }
446
- let s = {
509
+ let u = {
447
510
  middleware(e) {
448
- return r.middlewares.push(...e), s;
511
+ return o("middleware"), i.middlewares.push(...e), u;
449
512
  },
450
513
  prefetch(e) {
451
- return r.prefetches.push(e), s;
514
+ return o("prefetch"), i.prefetches.push(e), u;
452
515
  },
453
516
  scroll(e) {
454
- return r.scroll = e, s;
517
+ return o("scroll"), i.scroll = e, u;
455
518
  },
456
519
  focusReset(e) {
457
- return r.focusReset = e, s;
520
+ return o("focusReset"), i.focusReset = e, u;
458
521
  },
459
522
  formHandler(e) {
460
- return r.formHandler = e, s;
523
+ return o("formHandler"), i.formHandler = e, u;
461
524
  },
462
525
  render(t) {
463
- let n = i(), s = {
526
+ o("render"), a = !0;
527
+ let n = s(), r = {
464
528
  component: t,
465
- middlewares: a(),
466
- prefetch: o(),
467
- scroll: r.scroll,
468
- focusReset: r.focusReset,
469
- formHandler: r.formHandler
529
+ middlewares: c(),
530
+ prefetch: l(),
531
+ scroll: i.scroll,
532
+ focusReset: i.focusReset,
533
+ formHandler: i.formHandler
470
534
  };
471
- e.register(n, s);
535
+ e.register(n, r);
472
536
  },
473
537
  redirect(t) {
474
- let n = i(), r = {
475
- component: q,
538
+ o("redirect"), a = !0;
539
+ let r = s();
540
+ typeof t == "string" && n.set(r, t);
541
+ let i = {
542
+ component: X,
476
543
  prefetch: function(e) {
477
544
  let n = typeof t == "function" ? t(e) : t;
478
545
  e.controller.redirect(n);
479
546
  }
480
547
  };
481
- e.register(n, r);
548
+ e.register(r, i);
482
549
  },
483
550
  group() {
484
- return J(e, {
485
- prefix: G(t.prefix, r.path ?? ""),
486
- middlewares: [...t.middlewares, ...r.middlewares],
487
- prefetches: [...t.prefetches, ...r.prefetches]
488
- });
551
+ return o("group"), a = !0, Z(e, {
552
+ prefix: J(t.prefix, i.path ?? ""),
553
+ middlewares: [...t.middlewares, ...i.middlewares],
554
+ prefetches: [...t.prefetches, ...i.prefetches]
555
+ }, n);
489
556
  }
490
557
  };
491
- return s;
558
+ return u;
492
559
  };
493
560
  }
494
- function Y(t) {
495
- let n = e();
496
- return t(J(n, {
561
+ function Q(e) {
562
+ for (let [t] of e) {
563
+ let n = /* @__PURE__ */ new Set(), r = t;
564
+ for (; e.has(r);) {
565
+ if (n.has(r)) {
566
+ let e = [...n, r].join(" -> ");
567
+ throw Error(`redirect cycle detected: ${e}`);
568
+ }
569
+ n.add(r), r = e.get(r);
570
+ }
571
+ }
572
+ }
573
+ function $(t) {
574
+ let n = e(), r = /* @__PURE__ */ new Map();
575
+ return t(Z(n, {
497
576
  prefix: "",
498
577
  middlewares: [],
499
578
  prefetches: []
500
- })), n;
579
+ }, r)), Q(r), n;
501
580
  }
502
581
  //#endregion
503
- export { N as Link, C as MatcherContext, f as Middlewares, _ as NavigationContext, v as NavigationSignalContext, y as NavigationTypeContext, b as NotFound, g as ParamsContext, E as PathnameContext, O as Router, x as TransitionContext, W as createMemoryNavigation, Y as createRouter, D as extractPathname, k as useActiveLinkProps, H as useBack, U as useForward, z as useIsPending, F as useNavigate, P as useNavigation, T as useNavigationEvents, S as useNavigationHandlers, I as useNavigationSignal, L as useNavigationType, w as useNextMatch, R as useParams, B as usePathname, j as usePrefetch, M as usePrefetchEffect, V as useSearchParams };
582
+ export { I as Link, C as MatcherContext, f as Middlewares, _ as NavigationContext, v as NavigationSignalContext, y as NavigationTypeContext, b as NotFound, g as ParamsContext, E as PathnameContext, k as Router, x as TransitionContext, D as UrlContext, N as clearPrefetchCache, q as createMemoryNavigation, $ as createRouter, O as extractPathname, A as useActiveLinkProps, G as useBack, K as useForward, H as useIsPending, R as useNavigate, L as useNavigation, T as useNavigationEvents, S as useNavigationHandlers, z as useNavigationSignal, B as useNavigationType, w as useNextMatch, V as useParams, U as usePathname, P as usePrefetch, F as usePrefetchEffect, W as useSearchParams };
504
583
 
505
584
  //# sourceMappingURL=router_react.js.map