@sigmela/router 0.7.0 → 0.7.2
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 +28 -0
- package/dist/Router.d.ts +6 -0
- package/dist/Router.d.ts.map +1 -1
- package/dist/index.js +136 -43
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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;
|
package/dist/Router.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../src/Router.tsx"],"names":[],"mappings":"AAAA,OAAO,EAeL,KAAK,aAAa,EAElB,KAAK,WAAW,EAChB,KAAK,GAAG,EAER,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,EAOL,KAAK,aAAa,EAEnB,MAAM,QAAQ,CAAC;AAShB,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,cAAc,CAAC;AAGtB,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAC3D,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,mBAAmB,CAAC;AAgBjE,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AASD,MAAM,MAAM,sBAAsB,GAAG,CACnC,EAAE,EAAE,MAAM,GAAG,MAAM,EACnB,OAAO,CAAC,EAAE,qBAAqB,KAC5B,IAAI,CAAC;AACV,MAAM,MAAM,qBAAqB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;AAC1F,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,sBAAsB,KAAK,CAAC,CAAC,CAAC;AACtE;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,SAAS,CAAC;AACnD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,WAAW,CAAC;AA6BtD,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,iBAAiB,CAAC;IAChC,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAwB,SAAQ,sBAAsB;IACrE,YAAY,EAAE,eAAe,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,SAAS,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,gBAAgB,GACxB,gBAAgB,GAChB,iBAAiB,GACjB,mBAAmB,CAAC;AAExB,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,eAAe,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,KAAK,mBAAmB,GAAG,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,sBAAsB,KAAK,SAAS,CAAC,CAAC;AAEtF,KAAK,kBAAkB,GAAG,SAAS,GAAG,WAAW,CAAC;AAElD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,sBAAsB,KAAK,MAAM,CAAC,CAAC;IAChE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC,sBAAsB,CAAC,CAAC;IAC7C,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAChC;AAED,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,2EAA2E;IAC3E,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,wBAAyB,SAAQ,gBAAgB;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;AAExD,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC5D,IAAI,EAAE,gBAAgB,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;IACrD,UAAU,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACrC,iEAAiE;IACjE,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,EAAE,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,sBAAsB,CAAC;IACjC,mFAAmF;IACnF,OAAO,EAAE,qBAAqB,CAAC;IAC/B,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,6EAA6E;IAC7E,MAAM,EAAE,MAAM,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAUD,UAAU,eAAe;IACvB,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;
|
|
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,
|
|
@@ -1557,6 +1559,7 @@ function compileStackRoutes(children, parentPath, parentId = "root", inheritedGu
|
|
|
1557
1559
|
routes.push({
|
|
1558
1560
|
id: routeId,
|
|
1559
1561
|
path,
|
|
1562
|
+
flowParent: props.flowParent,
|
|
1560
1563
|
presentation,
|
|
1561
1564
|
animation,
|
|
1562
1565
|
overlayLayout: props.overlayLayout,
|
|
@@ -3040,26 +3043,57 @@ function overlayFlowRootPathname(rootPath, pathname) {
|
|
|
3040
3043
|
return `/${segments.slice(0, depth).join("/")}`;
|
|
3041
3044
|
}
|
|
3042
3045
|
function seedModalFlowScreens(match, pathname, search, state) {
|
|
3043
|
-
const target = modalFlowScreenFromMatch(match, pathname, search, state, 0, "push");
|
|
3044
|
-
if (!target) return void 0;
|
|
3045
3046
|
const flow = match.route.overlayFlow;
|
|
3046
3047
|
const rootEntry = flow?.entries[0];
|
|
3047
3048
|
const rootRoute = flow?.routes[0];
|
|
3048
|
-
|
|
3049
|
-
|
|
3050
|
-
|
|
3051
|
-
|
|
3052
|
-
|
|
3053
|
-
|
|
3054
|
-
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
|
|
3060
|
-
|
|
3061
|
-
|
|
3062
|
-
|
|
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
|
+
});
|
|
3063
3097
|
}
|
|
3064
3098
|
function RouterRuntime({
|
|
3065
3099
|
children,
|
|
@@ -3089,6 +3123,16 @@ function RouterRuntime({
|
|
|
3089
3123
|
const modalEntriesRef = useRef(modalEntries);
|
|
3090
3124
|
const modalSeqRef = useRef(0);
|
|
3091
3125
|
modalEntriesRef.current = modalEntries;
|
|
3126
|
+
const navigationScopeRef = useRef({
|
|
3127
|
+
compiledRoutes,
|
|
3128
|
+
pathname,
|
|
3129
|
+
parser: wouterRouter.parser
|
|
3130
|
+
});
|
|
3131
|
+
navigationScopeRef.current = {
|
|
3132
|
+
compiledRoutes,
|
|
3133
|
+
pathname,
|
|
3134
|
+
parser: wouterRouter.parser
|
|
3135
|
+
};
|
|
3092
3136
|
useLayoutEffect(() => {
|
|
3093
3137
|
ensureInitialHistoryIndex();
|
|
3094
3138
|
}, []);
|
|
@@ -3108,10 +3152,32 @@ function RouterRuntime({
|
|
|
3108
3152
|
const match = useMemo(() => {
|
|
3109
3153
|
if (!matchedRoute) return null;
|
|
3110
3154
|
if (guardOutcome?.status !== "pending") return matchedRoute;
|
|
3155
|
+
const route = matchedRoute.route;
|
|
3156
|
+
if (route.container && route.childRoute) {
|
|
3157
|
+
return {
|
|
3158
|
+
...matchedRoute,
|
|
3159
|
+
route: {
|
|
3160
|
+
...route,
|
|
3161
|
+
childRoute: {
|
|
3162
|
+
...route.childRoute,
|
|
3163
|
+
element: guardOutcome.element,
|
|
3164
|
+
elementType: void 0,
|
|
3165
|
+
component: void 0,
|
|
3166
|
+
layout: void 0,
|
|
3167
|
+
overlayLayout: void 0,
|
|
3168
|
+
render: void 0,
|
|
3169
|
+
childrenNode: void 0,
|
|
3170
|
+
container: void 0,
|
|
3171
|
+
childRoute: void 0,
|
|
3172
|
+
splitView: void 0
|
|
3173
|
+
}
|
|
3174
|
+
}
|
|
3175
|
+
};
|
|
3176
|
+
}
|
|
3111
3177
|
return {
|
|
3112
3178
|
...matchedRoute,
|
|
3113
3179
|
route: {
|
|
3114
|
-
...
|
|
3180
|
+
...route,
|
|
3115
3181
|
element: guardOutcome.element,
|
|
3116
3182
|
elementType: void 0,
|
|
3117
3183
|
component: void 0,
|
|
@@ -3374,6 +3440,42 @@ function RouterRuntime({
|
|
|
3374
3440
|
setModalEntries(
|
|
3375
3441
|
(current) => current.map((candidate) => {
|
|
3376
3442
|
if (candidate.id !== entry.id || !candidate.flowScreens) return candidate;
|
|
3443
|
+
if (operation === "push") {
|
|
3444
|
+
let existingIndex = -1;
|
|
3445
|
+
for (let index = candidate.flowScreens.length - 1; index >= 0; index -= 1) {
|
|
3446
|
+
const existing = candidate.flowScreens[index];
|
|
3447
|
+
if (existing.route.id === screen.route.id && normalizedPath(existing.pathname) === normalizedPath(screen.pathname) && existing.search === screen.search) {
|
|
3448
|
+
existingIndex = index;
|
|
3449
|
+
break;
|
|
3450
|
+
}
|
|
3451
|
+
}
|
|
3452
|
+
if (existingIndex !== -1) {
|
|
3453
|
+
const existing = candidate.flowScreens[existingIndex];
|
|
3454
|
+
const navigationKey = historyNavigationKeyFromState(existing.historyState) ?? createRouterId();
|
|
3455
|
+
const revealedScreen = {
|
|
3456
|
+
...screen,
|
|
3457
|
+
historyState: stateWithHistoryIndex(
|
|
3458
|
+
state,
|
|
3459
|
+
existingIndex,
|
|
3460
|
+
navigationKey,
|
|
3461
|
+
"sync"
|
|
3462
|
+
)
|
|
3463
|
+
};
|
|
3464
|
+
const flowScreens2 = [
|
|
3465
|
+
...candidate.flowScreens.slice(0, existingIndex),
|
|
3466
|
+
revealedScreen
|
|
3467
|
+
];
|
|
3468
|
+
return {
|
|
3469
|
+
...candidate,
|
|
3470
|
+
route: revealedScreen.overlayRoute,
|
|
3471
|
+
params: revealedScreen.params,
|
|
3472
|
+
pathname: revealedScreen.pathname,
|
|
3473
|
+
search: revealedScreen.search,
|
|
3474
|
+
historyState: revealedScreen.historyState,
|
|
3475
|
+
flowScreens: flowScreens2
|
|
3476
|
+
};
|
|
3477
|
+
}
|
|
3478
|
+
}
|
|
3377
3479
|
const flowScreens = operation === "replace" ? [...candidate.flowScreens.slice(0, -1), screen] : [...candidate.flowScreens, screen];
|
|
3378
3480
|
return {
|
|
3379
3481
|
...candidate,
|
|
@@ -3412,10 +3514,11 @@ function RouterRuntime({
|
|
|
3412
3514
|
window.history.go(to);
|
|
3413
3515
|
return;
|
|
3414
3516
|
}
|
|
3415
|
-
const
|
|
3517
|
+
const { compiledRoutes: compiledRoutes2, pathname: pathname2, parser } = navigationScopeRef.current;
|
|
3518
|
+
const target = parseNavigationTarget(to, pathname2);
|
|
3416
3519
|
const overlayMatch = matchStackRouteByPresentation(
|
|
3417
|
-
|
|
3418
|
-
|
|
3520
|
+
compiledRoutes2,
|
|
3521
|
+
parser,
|
|
3419
3522
|
target.pathname,
|
|
3420
3523
|
OVERLAY_PRESENTATIONS
|
|
3421
3524
|
);
|
|
@@ -3457,8 +3560,8 @@ function RouterRuntime({
|
|
|
3457
3560
|
return;
|
|
3458
3561
|
}
|
|
3459
3562
|
const pushMatch = matchStackRouteByPresentation(
|
|
3460
|
-
|
|
3461
|
-
|
|
3563
|
+
compiledRoutes2,
|
|
3564
|
+
parser,
|
|
3462
3565
|
target.pathname,
|
|
3463
3566
|
PUSH_PRESENTATIONS
|
|
3464
3567
|
);
|
|
@@ -3467,21 +3570,17 @@ function RouterRuntime({
|
|
|
3467
3570
|
state: stateForSplitNavigationTarget(options.state, pushMatch, "navigate")
|
|
3468
3571
|
});
|
|
3469
3572
|
},
|
|
3470
|
-
|
|
3471
|
-
|
|
3472
|
-
|
|
3473
|
-
pathname,
|
|
3474
|
-
pushModalEntry,
|
|
3475
|
-
updateActiveModalFlow,
|
|
3476
|
-
wouterRouter.parser
|
|
3477
|
-
]
|
|
3573
|
+
// Every value this reads travels through navigationScopeRef, and the three
|
|
3574
|
+
// callbacks below are themselves identity-stable, so this keeps one identity.
|
|
3575
|
+
[goBackTopModal, pushModalEntry, updateActiveModalFlow]
|
|
3478
3576
|
);
|
|
3479
3577
|
const replace = useCallback(
|
|
3480
3578
|
(to, options = {}) => {
|
|
3481
|
-
const
|
|
3579
|
+
const { compiledRoutes: compiledRoutes2, pathname: pathname2, parser } = navigationScopeRef.current;
|
|
3580
|
+
const target = parseNavigationTarget(to, pathname2);
|
|
3482
3581
|
const overlayMatch = matchStackRouteByPresentation(
|
|
3483
|
-
|
|
3484
|
-
|
|
3582
|
+
compiledRoutes2,
|
|
3583
|
+
parser,
|
|
3485
3584
|
target.pathname,
|
|
3486
3585
|
OVERLAY_PRESENTATIONS
|
|
3487
3586
|
);
|
|
@@ -3529,8 +3628,8 @@ function RouterRuntime({
|
|
|
3529
3628
|
return;
|
|
3530
3629
|
}
|
|
3531
3630
|
const pushMatch = matchStackRouteByPresentation(
|
|
3532
|
-
|
|
3533
|
-
|
|
3631
|
+
compiledRoutes2,
|
|
3632
|
+
parser,
|
|
3534
3633
|
target.pathname,
|
|
3535
3634
|
PUSH_PRESENTATIONS
|
|
3536
3635
|
);
|
|
@@ -3539,13 +3638,7 @@ function RouterRuntime({
|
|
|
3539
3638
|
state: stateForSplitNavigationTarget(options.state, pushMatch, "replace")
|
|
3540
3639
|
});
|
|
3541
3640
|
},
|
|
3542
|
-
[
|
|
3543
|
-
compiledRoutes,
|
|
3544
|
-
pathname,
|
|
3545
|
-
pushModalEntry,
|
|
3546
|
-
updateActiveModalFlow,
|
|
3547
|
-
wouterRouter.parser
|
|
3548
|
-
]
|
|
3641
|
+
[pushModalEntry, updateActiveModalFlow]
|
|
3549
3642
|
);
|
|
3550
3643
|
const goBack = useCallback(() => {
|
|
3551
3644
|
if (goBackTopModal()) return true;
|