@react-navigation/stack 7.6.16 → 7.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.
@@ -19,27 +19,46 @@ const GestureHandlerWrapper = GestureHandlerRootView ?? View;
19
19
  const isArrayEqual = (a, b) => a.length === b.length && a.every((it, index) => Object.is(it, b[index]));
20
20
  export class StackView extends React.Component {
21
21
  static getDerivedStateFromProps(props, state) {
22
+ const allRoutes = [...props.state.routes, ...props.state.preloadedRoutes];
23
+
22
24
  // If there was no change in routes, we don't need to compute anything
23
- if ((props.state.routes === state.previousRoutes || isArrayEqual(props.state.routes.map(r => r.key), state.previousRoutes.map(r => r.key))) && state.routes.length) {
24
- let routes = state.routes;
25
+ if (isArrayEqual(allRoutes.map(r => r.key), state.previousRoutes.map(r => r.key)) && state.routes.length) {
26
+ // If there were any routes being closed or replaced,
27
+ // We need to make sure they are preserved in the new state from props.state
28
+ // So first we get all such routes from the previous state (that included the animating routes)
29
+ // Then we add them back to the new state if they don't already exist
30
+
31
+ const closingRoutes = state.routes.filter(r => state.closingRouteKeys.includes(r.key) && !props.state.routes.some(pr => pr.key === r.key));
32
+ const replacingRoutes = state.routes.filter(r => state.replacingRouteKeys.includes(r.key) && !props.state.routes.some(pr => pr.key === r.key));
33
+ let routes = props.state.routes.slice();
34
+
35
+ // Replacing routes go before the focused route (they're being covered)
36
+ if (replacingRoutes.length) {
37
+ routes.splice(routes.length - 1, 0, ...replacingRoutes);
38
+ }
39
+
40
+ // Closing routes go at the end (they're animating out on top)
41
+ if (closingRoutes.length) {
42
+ routes.push(...closingRoutes);
43
+ }
25
44
  let previousRoutes = state.previousRoutes;
26
45
  let descriptors = props.descriptors;
27
46
  let previousDescriptors = state.previousDescriptors;
28
47
  if (props.descriptors !== state.previousDescriptors) {
29
- descriptors = state.routes.reduce((acc, route) => {
48
+ descriptors = routes.reduce((acc, route) => {
30
49
  acc[route.key] = props.descriptors[route.key] || state.descriptors[route.key];
31
50
  return acc;
32
51
  }, {});
33
52
  previousDescriptors = props.descriptors;
34
53
  }
35
- if (props.state.routes !== state.previousRoutes) {
54
+ if (!isArrayEqual(allRoutes, state.previousRoutes)) {
36
55
  // if any route objects have changed, we should update them
37
- const map = props.state.routes.reduce((acc, route) => {
56
+ const map = allRoutes.reduce((acc, route) => {
38
57
  acc[route.key] = route;
39
58
  return acc;
40
59
  }, {});
41
- routes = state.routes.map(route => map[route.key] || route);
42
- previousRoutes = props.state.routes;
60
+ routes = routes.map(route => map[route.key] || route);
61
+ previousRoutes = allRoutes;
43
62
  }
44
63
  return {
45
64
  routes,
@@ -129,6 +148,13 @@ export class StackView extends React.Component {
129
148
  // After the push animation is completed, routes being replaced will be removed completely
130
149
  routes = routes.slice();
131
150
  routes.splice(routes.length - 1, 0, previousFocusedRoute);
151
+
152
+ // Preserve any other routes still being replaced from previous transitions
153
+ const previousReplacingRoutes = state.routes.filter(r => replacingRouteKeys.includes(r.key) && !routes.some(existing => existing.key === r.key));
154
+ if (previousReplacingRoutes.length) {
155
+ // Insert before the route we just added (previousFocusedRoute)
156
+ routes.splice(routes.length - 2, 0, ...previousReplacingRoutes);
157
+ }
132
158
  }
133
159
  }
134
160
  }
@@ -143,13 +169,13 @@ export class StackView extends React.Component {
143
169
  if (!routes.length) {
144
170
  throw new Error('There should always be at least one route in the navigation state.');
145
171
  }
146
- const descriptors = routes.reduce((acc, route) => {
172
+ const descriptors = allRoutes.reduce((acc, route) => {
147
173
  acc[route.key] = props.descriptors[route.key] || state.descriptors[route.key];
148
174
  return acc;
149
175
  }, {});
150
176
  return {
151
177
  routes,
152
- previousRoutes: props.state.routes,
178
+ previousRoutes: [...props.state.routes, ...props.state.preloadedRoutes],
153
179
  previousDescriptors: props.descriptors,
154
180
  openingRouteKeys,
155
181
  closingRouteKeys,
@@ -205,12 +231,20 @@ export class StackView extends React.Component {
205
231
  });
206
232
  });
207
233
  } else {
208
- this.setState(state => ({
209
- routes: state.replacingRouteKeys.length ? state.routes.filter(r => !state.replacingRouteKeys.includes(r.key)) : state.routes,
210
- openingRouteKeys: state.openingRouteKeys.filter(key => key !== route.key),
211
- closingRouteKeys: state.closingRouteKeys.filter(key => key !== route.key),
212
- replacingRouteKeys: []
213
- }));
234
+ this.setState(state => {
235
+ const routeIndex = state.routes.findIndex(r => r.key === route.key);
236
+
237
+ // Remove replacing routes that were before the route that just opened
238
+ // Those were replaced by this or earlier routes and should be cleaned up
239
+ const replacingRoutesToRemove = new Set(state.routes.slice(0, routeIndex).filter(r => state.replacingRouteKeys.includes(r.key)).map(r => r.key));
240
+ const newRoutes = state.routes.filter(r => !replacingRoutesToRemove.has(r.key));
241
+ return {
242
+ routes: newRoutes,
243
+ openingRouteKeys: state.openingRouteKeys.filter(key => key !== route.key),
244
+ closingRouteKeys: state.closingRouteKeys.filter(key => key !== route.key),
245
+ replacingRouteKeys: state.replacingRouteKeys.filter(key => !replacingRoutesToRemove.has(key))
246
+ };
247
+ });
214
248
  }
215
249
  };
216
250
  handleCloseRoute = ({
@@ -1 +1 @@
1
- {"version":3,"names":["HeaderShownContext","SafeAreaProviderCompat","CommonActions","StackActions","React","StyleSheet","View","SafeAreaInsetsContext","ModalPresentationContext","GestureHandlerRootView","HeaderContainer","CardStack","getAnimationEnabled","jsx","_jsx","GestureHandlerWrapper","isArrayEqual","a","b","length","every","it","index","Object","is","StackView","Component","getDerivedStateFromProps","props","state","routes","previousRoutes","map","r","key","descriptors","previousDescriptors","reduce","acc","route","slice","openingRouteKeys","closingRouteKeys","replacingRouteKeys","previousFocusedRoute","nextFocusedRoute","isAnimationEnabled","descriptor","options","animation","getAnimationTypeForReplace","animationTypeForReplace","some","includes","filter","splice","Error","getPreviousRoute","findIndex","renderHeader","handleOpenRoute","navigation","routeNames","name","dispatch","reset","setState","handleCloseRoute","pop","source","target","handleTransitionStart","closing","emit","type","data","handleTransitionEnd","handleGestureStart","handleGestureEnd","handleGestureCancel","render","_","rest","preloadedDescriptors","preloadedRoutes","describe","style","styles","container","children","Consumer","insets","isParentModal","isParentHeaderShown","onOpenRoute","onCloseRoute","onTransitionStart","onTransitionEnd","onGestureStart","onGestureEnd","onGestureCancel","create","flex"],"sourceRoot":"../../../../src","sources":["views/Stack/StackView.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["HeaderShownContext","SafeAreaProviderCompat","CommonActions","StackActions","React","StyleSheet","View","SafeAreaInsetsContext","ModalPresentationContext","GestureHandlerRootView","HeaderContainer","CardStack","getAnimationEnabled","jsx","_jsx","GestureHandlerWrapper","isArrayEqual","a","b","length","every","it","index","Object","is","StackView","Component","getDerivedStateFromProps","props","state","allRoutes","routes","preloadedRoutes","map","r","key","previousRoutes","closingRoutes","filter","closingRouteKeys","includes","some","pr","replacingRoutes","replacingRouteKeys","slice","splice","push","descriptors","previousDescriptors","reduce","acc","route","openingRouteKeys","previousFocusedRoute","nextFocusedRoute","isAnimationEnabled","descriptor","options","animation","getAnimationTypeForReplace","animationTypeForReplace","previousReplacingRoutes","existing","Error","getPreviousRoute","findIndex","renderHeader","handleOpenRoute","navigation","routeNames","name","dispatch","reset","setState","routeIndex","replacingRoutesToRemove","Set","newRoutes","has","handleCloseRoute","pop","source","target","handleTransitionStart","closing","emit","type","data","handleTransitionEnd","handleGestureStart","handleGestureEnd","handleGestureCancel","render","_","rest","preloadedDescriptors","describe","style","styles","container","children","Consumer","insets","isParentModal","isParentHeaderShown","onOpenRoute","onCloseRoute","onTransitionStart","onTransitionEnd","onGestureStart","onGestureEnd","onGestureCancel","create","flex"],"sourceRoot":"../../../../src","sources":["views/Stack/StackView.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"StackView.d.ts","sourceRoot":"","sources":["../../../../../src/views/Stack/StackView.tsx"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,KAAK,EACV,KAAK,SAAS,EAEd,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,aAAa,CAAC;AASrB,KAAK,KAAK,GAAG,qBAAqB,GAAG;IACnC,SAAS,EAAE,eAAe,CAAC;IAC3B,KAAK,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAC3C,UAAU,EAAE,sBAAsB,CAAC;IACnC,WAAW,EAAE,kBAAkB,CAAC;IAChC,QAAQ,EAAE,CACR,KAAK,EAAE,SAAS,CAAC,aAAa,CAAC,EAC/B,WAAW,EAAE,OAAO,KACjB,eAAe,CAAC;CACtB,CAAC;AAEF,KAAK,KAAK,GAAG;IAEX,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;IAExB,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;IAEhC,mBAAmB,EAAE,kBAAkB,CAAC;IAExC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAE3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAE3B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAG7B,WAAW,EAAE,kBAAkB,CAAC;CACjC,CAAC;AAWF,qBAAa,SAAU,SAAQ,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;IAC1D,MAAM,CAAC,wBAAwB,CAC7B,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,EACtB,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;IAoNxB,KAAK,EAAE,KAAK,CAQV;IAEF,OAAO,CAAC,gBAAgB,CAYtB;IAEF,OAAO,CAAC,YAAY,CAElB;IAEF,OAAO,CAAC,eAAe,CAwCrB;IAEF,OAAO,CAAC,gBAAgB,CAwBtB;IAEF,OAAO,CAAC,qBAAqB,CAQxB;IAEL,OAAO,CAAC,mBAAmB,CAQtB;IAEL,OAAO,CAAC,kBAAkB,CAKxB;IAEF,OAAO,CAAC,gBAAgB,CAKtB;IAEF,OAAO,CAAC,mBAAmB,CAKzB;IAEF,MAAM;CAyDP"}
1
+ {"version":3,"file":"StackView.d.ts","sourceRoot":"","sources":["../../../../../src/views/Stack/StackView.tsx"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,KAAK,EACV,KAAK,SAAS,EAEd,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,aAAa,CAAC;AASrB,KAAK,KAAK,GAAG,qBAAqB,GAAG;IACnC,SAAS,EAAE,eAAe,CAAC;IAC3B,KAAK,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAC3C,UAAU,EAAE,sBAAsB,CAAC;IACnC,WAAW,EAAE,kBAAkB,CAAC;IAChC,QAAQ,EAAE,CACR,KAAK,EAAE,SAAS,CAAC,aAAa,CAAC,EAC/B,WAAW,EAAE,OAAO,KACjB,eAAe,CAAC;CACtB,CAAC;AAEF,KAAK,KAAK,GAAG;IAEX,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;IAExB,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;IAEhC,mBAAmB,EAAE,kBAAkB,CAAC;IAExC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAE3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAE3B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAG7B,WAAW,EAAE,kBAAkB,CAAC;CACjC,CAAC;AAWF,qBAAa,SAAU,SAAQ,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;IAC1D,MAAM,CAAC,wBAAwB,CAC7B,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,EACtB,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;IA6PxB,KAAK,EAAE,KAAK,CAQV;IAEF,OAAO,CAAC,gBAAgB,CAYtB;IAEF,OAAO,CAAC,YAAY,CAElB;IAEF,OAAO,CAAC,eAAe,CAuDrB;IAEF,OAAO,CAAC,gBAAgB,CAwBtB;IAEF,OAAO,CAAC,qBAAqB,CAQxB;IAEL,OAAO,CAAC,mBAAmB,CAQtB;IAEL,OAAO,CAAC,kBAAkB,CAKxB;IAEF,OAAO,CAAC,gBAAgB,CAKtB;IAEF,OAAO,CAAC,mBAAmB,CAKzB;IAEF,MAAM;CAyDP"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@react-navigation/stack",
3
3
  "description": "Stack navigator component for iOS and Android with animated transitions and gestures",
4
- "version": "7.6.16",
4
+ "version": "7.7.1",
5
5
  "keywords": [
6
6
  "react-native-component",
7
7
  "react-component",
@@ -61,7 +61,7 @@
61
61
  "react-native-builder-bob": "^0.40.17",
62
62
  "react-native-gesture-handler": "~2.28.0",
63
63
  "react-native-safe-area-context": "~5.6.0",
64
- "react-native-screens": "^4.20.0",
64
+ "react-native-screens": "^4.21.0",
65
65
  "react-test-renderer": "19.1.0",
66
66
  "typescript": "^5.9.2"
67
67
  },
@@ -91,5 +91,5 @@
91
91
  ]
92
92
  ]
93
93
  },
94
- "gitHead": "eaf17f7e6bbb38bf3cf8fc95946ba46b05d94331"
94
+ "gitHead": "25cf8cf0dfdf2cf1991191a04d18681530e659cb"
95
95
  }
@@ -72,22 +72,51 @@ export class StackView extends React.Component<Props, State> {
72
72
  props: Readonly<Props>,
73
73
  state: Readonly<State>
74
74
  ) {
75
+ const allRoutes = [...props.state.routes, ...props.state.preloadedRoutes];
76
+
75
77
  // If there was no change in routes, we don't need to compute anything
76
78
  if (
77
- (props.state.routes === state.previousRoutes ||
78
- isArrayEqual(
79
- props.state.routes.map((r) => r.key),
80
- state.previousRoutes.map((r) => r.key)
81
- )) &&
79
+ isArrayEqual(
80
+ allRoutes.map((r) => r.key),
81
+ state.previousRoutes.map((r) => r.key)
82
+ ) &&
82
83
  state.routes.length
83
84
  ) {
84
- let routes = state.routes;
85
+ // If there were any routes being closed or replaced,
86
+ // We need to make sure they are preserved in the new state from props.state
87
+ // So first we get all such routes from the previous state (that included the animating routes)
88
+ // Then we add them back to the new state if they don't already exist
89
+
90
+ const closingRoutes = state.routes.filter(
91
+ (r) =>
92
+ state.closingRouteKeys.includes(r.key) &&
93
+ !props.state.routes.some((pr) => pr.key === r.key)
94
+ );
95
+
96
+ const replacingRoutes = state.routes.filter(
97
+ (r) =>
98
+ state.replacingRouteKeys.includes(r.key) &&
99
+ !props.state.routes.some((pr) => pr.key === r.key)
100
+ );
101
+
102
+ let routes: Route<string>[] = props.state.routes.slice();
103
+
104
+ // Replacing routes go before the focused route (they're being covered)
105
+ if (replacingRoutes.length) {
106
+ routes.splice(routes.length - 1, 0, ...replacingRoutes);
107
+ }
108
+
109
+ // Closing routes go at the end (they're animating out on top)
110
+ if (closingRoutes.length) {
111
+ routes.push(...closingRoutes);
112
+ }
113
+
85
114
  let previousRoutes = state.previousRoutes;
86
115
  let descriptors = props.descriptors;
87
116
  let previousDescriptors = state.previousDescriptors;
88
117
 
89
118
  if (props.descriptors !== state.previousDescriptors) {
90
- descriptors = state.routes.reduce<StackDescriptorMap>((acc, route) => {
119
+ descriptors = routes.reduce<StackDescriptorMap>((acc, route) => {
91
120
  acc[route.key] =
92
121
  props.descriptors[route.key] || state.descriptors[route.key];
93
122
 
@@ -97,9 +126,9 @@ export class StackView extends React.Component<Props, State> {
97
126
  previousDescriptors = props.descriptors;
98
127
  }
99
128
 
100
- if (props.state.routes !== state.previousRoutes) {
129
+ if (!isArrayEqual(allRoutes, state.previousRoutes)) {
101
130
  // if any route objects have changed, we should update them
102
- const map = props.state.routes.reduce<Record<string, Route<string>>>(
131
+ const map = allRoutes.reduce<Record<string, Route<string>>>(
103
132
  (acc, route) => {
104
133
  acc[route.key] = route;
105
134
  return acc;
@@ -107,8 +136,8 @@ export class StackView extends React.Component<Props, State> {
107
136
  {}
108
137
  );
109
138
 
110
- routes = state.routes.map((route) => map[route.key] || route);
111
- previousRoutes = props.state.routes;
139
+ routes = routes.map((route) => map[route.key] || route);
140
+ previousRoutes = allRoutes;
112
141
  }
113
142
 
114
143
  return {
@@ -240,6 +269,18 @@ export class StackView extends React.Component<Props, State> {
240
269
  // After the push animation is completed, routes being replaced will be removed completely
241
270
  routes = routes.slice();
242
271
  routes.splice(routes.length - 1, 0, previousFocusedRoute);
272
+
273
+ // Preserve any other routes still being replaced from previous transitions
274
+ const previousReplacingRoutes = state.routes.filter(
275
+ (r) =>
276
+ replacingRouteKeys.includes(r.key) &&
277
+ !routes.some((existing) => existing.key === r.key)
278
+ );
279
+
280
+ if (previousReplacingRoutes.length) {
281
+ // Insert before the route we just added (previousFocusedRoute)
282
+ routes.splice(routes.length - 2, 0, ...previousReplacingRoutes);
283
+ }
243
284
  }
244
285
  }
245
286
  }
@@ -264,7 +305,7 @@ export class StackView extends React.Component<Props, State> {
264
305
  );
265
306
  }
266
307
 
267
- const descriptors = routes.reduce<StackDescriptorMap>((acc, route) => {
308
+ const descriptors = allRoutes.reduce<StackDescriptorMap>((acc, route) => {
268
309
  acc[route.key] =
269
310
  props.descriptors[route.key] || state.descriptors[route.key];
270
311
 
@@ -273,7 +314,7 @@ export class StackView extends React.Component<Props, State> {
273
314
 
274
315
  return {
275
316
  routes,
276
- previousRoutes: props.state.routes,
317
+ previousRoutes: [...props.state.routes, ...props.state.preloadedRoutes],
277
318
  previousDescriptors: props.descriptors,
278
319
  openingRouteKeys,
279
320
  closingRouteKeys,
@@ -335,20 +376,35 @@ export class StackView extends React.Component<Props, State> {
335
376
  });
336
377
  });
337
378
  } else {
338
- this.setState((state) => ({
339
- routes: state.replacingRouteKeys.length
340
- ? state.routes.filter(
341
- (r) => !state.replacingRouteKeys.includes(r.key)
342
- )
343
- : state.routes,
344
- openingRouteKeys: state.openingRouteKeys.filter(
345
- (key) => key !== route.key
346
- ),
347
- closingRouteKeys: state.closingRouteKeys.filter(
348
- (key) => key !== route.key
349
- ),
350
- replacingRouteKeys: [],
351
- }));
379
+ this.setState((state) => {
380
+ const routeIndex = state.routes.findIndex((r) => r.key === route.key);
381
+
382
+ // Remove replacing routes that were before the route that just opened
383
+ // Those were replaced by this or earlier routes and should be cleaned up
384
+ const replacingRoutesToRemove = new Set(
385
+ state.routes
386
+ .slice(0, routeIndex)
387
+ .filter((r) => state.replacingRouteKeys.includes(r.key))
388
+ .map((r) => r.key)
389
+ );
390
+
391
+ const newRoutes = state.routes.filter(
392
+ (r) => !replacingRoutesToRemove.has(r.key)
393
+ );
394
+
395
+ return {
396
+ routes: newRoutes,
397
+ openingRouteKeys: state.openingRouteKeys.filter(
398
+ (key) => key !== route.key
399
+ ),
400
+ closingRouteKeys: state.closingRouteKeys.filter(
401
+ (key) => key !== route.key
402
+ ),
403
+ replacingRouteKeys: state.replacingRouteKeys.filter(
404
+ (key) => !replacingRoutesToRemove.has(key)
405
+ ),
406
+ };
407
+ });
352
408
  }
353
409
  };
354
410