@sigmela/router 0.6.0 → 0.7.1

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/CHANGELOG.md CHANGED
@@ -4,6 +4,34 @@ All notable changes to this package are documented here. The format follows
4
4
  [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project uses
5
5
  [semantic versioning](https://semver.org/).
6
6
 
7
+ ## 0.7.1
8
+
9
+ ### Fixed
10
+
11
+ - A pending guard no longer replaces a container's chrome. `Router.Protected`
12
+ with `when="pending"` stripped `layout`/`component`/`elementType` off the
13
+ matched route; for a `Drawer` or `TabBar` container that swapped the app's
14
+ own shell for `DefaultDrawerLayout`, and the pending node never appeared at
15
+ all because `DrawerRouteContent` renders from `layout`, not `element`. An
16
+ app whose drawer chrome differs from the default — a custom sidebar, say —
17
+ showed the built-in chrome for as long as the guard stayed undecided.
18
+ Container routes now keep their chrome and swap only the content pane.
19
+ Overlay flow entries carry no `container`, so modal and sheet presentations
20
+ are unaffected.
21
+
22
+ ### Added
23
+
24
+ - `flowParent` on route props: the route id that must sit immediately below a
25
+ screen when a modal flow is entered straight at a deeper step, restoring the
26
+ history a visitor would have built by walking the flow normally. Shipped
27
+ here rather than in 0.7.0 — 0.7.0 was published before these commits landed,
28
+ so consumers were carrying it as a local patch.
29
+
30
+ ### Notes
31
+
32
+ - 0.7.0 has no entry of its own; everything above covers the gap between the
33
+ published 0.7.0 tarball and this release.
34
+
7
35
  ## 0.6.0
8
36
 
9
37
  ### Added
package/dist/Router.d.ts CHANGED
@@ -87,6 +87,12 @@ type RouterRouteElement = ReactNode | ElementType;
87
87
  export interface RouterRouteProps {
88
88
  id?: string;
89
89
  path?: string;
90
+ /**
91
+ * Route id that must sit immediately below this screen when a modal flow is
92
+ * entered straight at a deeper step. This restores the same spatial history
93
+ * a visitor would have built by walking the flow normally.
94
+ */
95
+ flowParent?: string;
90
96
  stackKey?: string | ((props: RouterRouteRenderProps) => string);
91
97
  fallback?: ReactNode;
92
98
  animation?: RouterScreenAnimation;
@@ -1 +1 @@
1
- {"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../src/Router.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../src/Router.tsx"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1192,6 +1192,7 @@ function compiledRouteFromProps(props, path, routeId, presentation, animation, r
1192
1192
  return {
1193
1193
  id: routeId,
1194
1194
  path,
1195
+ flowParent: props.flowParent,
1195
1196
  presentation,
1196
1197
  animation,
1197
1198
  overlayLayout: props.overlayLayout,
@@ -1221,6 +1222,7 @@ function compileStackRoutes(children, parentPath, parentId = "root", inheritedGu
1221
1222
  routes.push({
1222
1223
  id: routeId,
1223
1224
  path,
1225
+ flowParent: props.flowParent,
1224
1226
  presentation,
1225
1227
  animation,
1226
1228
  overlayLayout: props.overlayLayout,
@@ -1280,10 +1282,11 @@ function compileStackRoutes(children, parentPath, parentId = "root", inheritedGu
1280
1282
  const overlayFlow = {
1281
1283
  id: `${routeId}/overlay-flow`,
1282
1284
  kind: presentation,
1283
- routes: flowRoutes
1285
+ routes: flowRoutes,
1286
+ entries: []
1284
1287
  };
1285
1288
  for (const flowRoute of flowRoutes) {
1286
- routes.push({
1289
+ const entryRoute = {
1287
1290
  id: `${overlayFlow.id}:${flowRoute.id}`,
1288
1291
  path: flowRoute.path,
1289
1292
  presentation,
@@ -1295,7 +1298,9 @@ function compileStackRoutes(children, parentPath, parentId = "root", inheritedGu
1295
1298
  fallback: flowRoute.fallback ?? props.fallback,
1296
1299
  childRoute: flowRoute,
1297
1300
  overlayFlow
1298
- });
1301
+ };
1302
+ overlayFlow.entries.push(entryRoute);
1303
+ routes.push(entryRoute);
1299
1304
  }
1300
1305
  return;
1301
1306
  }
@@ -1554,6 +1559,7 @@ function compileStackRoutes(children, parentPath, parentId = "root", inheritedGu
1554
1559
  routes.push({
1555
1560
  id: routeId,
1556
1561
  path,
1562
+ flowParent: props.flowParent,
1557
1563
  presentation,
1558
1564
  animation,
1559
1565
  overlayLayout: props.overlayLayout,
@@ -3030,6 +3036,65 @@ function modalFlowScreenFromMatch(match, pathname, search, state, historyIndex,
3030
3036
  )
3031
3037
  };
3032
3038
  }
3039
+ function overlayFlowRootPathname(rootPath, pathname) {
3040
+ const depth = rootPath.split("/").filter(Boolean).length;
3041
+ const segments = pathname.split("/").filter(Boolean);
3042
+ if (segments.length <= depth) return pathname;
3043
+ return `/${segments.slice(0, depth).join("/")}`;
3044
+ }
3045
+ function seedModalFlowScreens(match, pathname, search, state) {
3046
+ const flow = match.route.overlayFlow;
3047
+ const rootEntry = flow?.entries[0];
3048
+ const rootRoute = flow?.routes[0];
3049
+ const targetRoute = match.route.childRoute;
3050
+ if (!flow || !rootEntry || !rootRoute || !targetRoute) {
3051
+ const target = modalFlowScreenFromMatch(
3052
+ match,
3053
+ pathname,
3054
+ search,
3055
+ state,
3056
+ 0,
3057
+ "push"
3058
+ );
3059
+ return target ? [target] : void 0;
3060
+ }
3061
+ const routeChain = [targetRoute];
3062
+ const visitedRouteIds = /* @__PURE__ */ new Set([targetRoute.id]);
3063
+ let currentRoute = targetRoute;
3064
+ while (currentRoute.flowParent) {
3065
+ const parentRoute = flow.routes.find(
3066
+ (route) => route.id === currentRoute.flowParent
3067
+ );
3068
+ if (!parentRoute || visitedRouteIds.has(parentRoute.id)) break;
3069
+ routeChain.unshift(parentRoute);
3070
+ visitedRouteIds.add(parentRoute.id);
3071
+ currentRoute = parentRoute;
3072
+ }
3073
+ if (!visitedRouteIds.has(rootRoute.id)) {
3074
+ routeChain.unshift(rootRoute);
3075
+ }
3076
+ return routeChain.flatMap((route, historyIndex) => {
3077
+ const routeIndex = flow.routes.indexOf(route);
3078
+ const overlayRoute = flow.entries[routeIndex];
3079
+ if (!overlayRoute) return [];
3080
+ const resolvedPathname = route === targetRoute ? pathname : pathForRoutePattern(route.path, match.params) ?? (route === rootRoute && route.path ? overlayFlowRootPathname(route.path, pathname) : pathname);
3081
+ return [
3082
+ {
3083
+ overlayRoute,
3084
+ route,
3085
+ params: match.params,
3086
+ pathname: resolvedPathname,
3087
+ search,
3088
+ historyState: stateWithHistoryIndex(
3089
+ state,
3090
+ historyIndex,
3091
+ createRouterId(),
3092
+ "push"
3093
+ )
3094
+ }
3095
+ ];
3096
+ });
3097
+ }
3033
3098
  function RouterRuntime({
3034
3099
  children,
3035
3100
  fallback,
@@ -3077,10 +3142,32 @@ function RouterRuntime({
3077
3142
  const match = useMemo(() => {
3078
3143
  if (!matchedRoute) return null;
3079
3144
  if (guardOutcome?.status !== "pending") return matchedRoute;
3145
+ const route = matchedRoute.route;
3146
+ if (route.container && route.childRoute) {
3147
+ return {
3148
+ ...matchedRoute,
3149
+ route: {
3150
+ ...route,
3151
+ childRoute: {
3152
+ ...route.childRoute,
3153
+ element: guardOutcome.element,
3154
+ elementType: void 0,
3155
+ component: void 0,
3156
+ layout: void 0,
3157
+ overlayLayout: void 0,
3158
+ render: void 0,
3159
+ childrenNode: void 0,
3160
+ container: void 0,
3161
+ childRoute: void 0,
3162
+ splitView: void 0
3163
+ }
3164
+ }
3165
+ };
3166
+ }
3080
3167
  return {
3081
3168
  ...matchedRoute,
3082
3169
  route: {
3083
- ...matchedRoute.route,
3170
+ ...route,
3084
3171
  element: guardOutcome.element,
3085
3172
  elementType: void 0,
3086
3173
  component: void 0,
@@ -3343,6 +3430,42 @@ function RouterRuntime({
3343
3430
  setModalEntries(
3344
3431
  (current) => current.map((candidate) => {
3345
3432
  if (candidate.id !== entry.id || !candidate.flowScreens) return candidate;
3433
+ if (operation === "push") {
3434
+ let existingIndex = -1;
3435
+ for (let index = candidate.flowScreens.length - 1; index >= 0; index -= 1) {
3436
+ const existing = candidate.flowScreens[index];
3437
+ if (existing.route.id === screen.route.id && normalizedPath(existing.pathname) === normalizedPath(screen.pathname) && existing.search === screen.search) {
3438
+ existingIndex = index;
3439
+ break;
3440
+ }
3441
+ }
3442
+ if (existingIndex !== -1) {
3443
+ const existing = candidate.flowScreens[existingIndex];
3444
+ const navigationKey = historyNavigationKeyFromState(existing.historyState) ?? createRouterId();
3445
+ const revealedScreen = {
3446
+ ...screen,
3447
+ historyState: stateWithHistoryIndex(
3448
+ state,
3449
+ existingIndex,
3450
+ navigationKey,
3451
+ "sync"
3452
+ )
3453
+ };
3454
+ const flowScreens2 = [
3455
+ ...candidate.flowScreens.slice(0, existingIndex),
3456
+ revealedScreen
3457
+ ];
3458
+ return {
3459
+ ...candidate,
3460
+ route: revealedScreen.overlayRoute,
3461
+ params: revealedScreen.params,
3462
+ pathname: revealedScreen.pathname,
3463
+ search: revealedScreen.search,
3464
+ historyState: revealedScreen.historyState,
3465
+ flowScreens: flowScreens2
3466
+ };
3467
+ }
3468
+ }
3346
3469
  const flowScreens = operation === "replace" ? [...candidate.flowScreens.slice(0, -1), screen] : [...candidate.flowScreens, screen];
3347
3470
  return {
3348
3471
  ...candidate,
@@ -3407,22 +3530,21 @@ function RouterRuntime({
3407
3530
  if (updateActiveModalFlow(overlayMatch, target, overlayState, "push")) {
3408
3531
  return;
3409
3532
  }
3410
- const initialFlowScreen = modalFlowScreenFromMatch(
3533
+ const initialFlowScreens = seedModalFlowScreens(
3411
3534
  overlayMatch,
3412
3535
  target.pathname,
3413
3536
  target.search,
3414
- overlayState,
3415
- 0,
3416
- "push"
3537
+ overlayState
3417
3538
  );
3539
+ const activeFlowScreen = initialFlowScreens?.[initialFlowScreens.length - 1];
3418
3540
  pushModalEntry({
3419
3541
  kind: overlayMatch.route.presentation,
3420
3542
  route: overlayMatch.route,
3421
3543
  params: overlayMatch.params,
3422
3544
  pathname: target.pathname,
3423
3545
  search: target.search,
3424
- historyState: initialFlowScreen?.historyState ?? overlayState,
3425
- flowScreens: initialFlowScreen ? [initialFlowScreen] : void 0
3546
+ historyState: activeFlowScreen?.historyState ?? overlayState,
3547
+ flowScreens: initialFlowScreens
3426
3548
  });
3427
3549
  return;
3428
3550
  }
@@ -3477,14 +3599,13 @@ function RouterRuntime({
3477
3599
  if (updateActiveModalFlow(overlayMatch, target, overlayState, "replace")) {
3478
3600
  return;
3479
3601
  }
3480
- const initialFlowScreen = modalFlowScreenFromMatch(
3602
+ const initialFlowScreens = seedModalFlowScreens(
3481
3603
  overlayMatch,
3482
3604
  target.pathname,
3483
3605
  target.search,
3484
- overlayState,
3485
- 0,
3486
- "replace"
3606
+ overlayState
3487
3607
  );
3608
+ const activeFlowScreen = initialFlowScreens?.[initialFlowScreens.length - 1];
3488
3609
  pushModalEntry(
3489
3610
  {
3490
3611
  kind: overlayMatch.route.presentation,
@@ -3492,8 +3613,8 @@ function RouterRuntime({
3492
3613
  params: overlayMatch.params,
3493
3614
  pathname: target.pathname,
3494
3615
  search: target.search,
3495
- historyState: initialFlowScreen?.historyState ?? overlayState,
3496
- flowScreens: initialFlowScreen ? [initialFlowScreen] : void 0
3616
+ historyState: activeFlowScreen?.historyState ?? overlayState,
3617
+ flowScreens: initialFlowScreens
3497
3618
  },
3498
3619
  true
3499
3620
  );