@react-navigation/routers 8.0.0-alpha.5 → 8.0.0-alpha.6

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.
@@ -45,8 +45,32 @@ export const StackActions = {
45
45
  merge: options?.merge
46
46
  }
47
47
  };
48
+ },
49
+ retain(enable) {
50
+ return {
51
+ type: 'RETAIN',
52
+ payload: {
53
+ enable
54
+ }
55
+ };
48
56
  }
49
57
  };
58
+ function retainRoutes(previousState, nextState) {
59
+ if (!nextState.retainedRouteKeys.length) {
60
+ return nextState;
61
+ }
62
+ const retainedRouteKeySet = new Set(nextState.retainedRouteKeys);
63
+ const nextRouteKeySet = new Set(nextState.routes.map(route => route.key));
64
+ const retainedRoutes = previousState.routes.filter(route => retainedRouteKeySet.has(route.key) && !nextRouteKeySet.has(route.key));
65
+ if (!retainedRoutes.length) {
66
+ return nextState;
67
+ }
68
+ const removedRetainedRouteKeys = new Set(retainedRoutes.map(route => route.key));
69
+ return {
70
+ ...nextState,
71
+ preloadedRoutes: retainedRoutes.concat(nextState.preloadedRoutes.filter(route => !removedRetainedRouteKeys.has(route.key)))
72
+ };
73
+ }
50
74
  export function StackRouter(options) {
51
75
  const router = {
52
76
  ...BaseRouter,
@@ -63,6 +87,7 @@ export function StackRouter(options) {
63
87
  index: 0,
64
88
  routeNames,
65
89
  preloadedRoutes: [],
90
+ retainedRouteKeys: [],
66
91
  routes: [{
67
92
  key: `${initialRouteName}-${nanoid()}`,
68
93
  name: initialRouteName,
@@ -94,6 +119,7 @@ export function StackRouter(options) {
94
119
  ...route.params
95
120
  } : route.params
96
121
  })) ?? [];
122
+ const retainedRouteKeys = state.retainedRouteKeys?.filter(key => [...routes, ...preloadedRoutes].some(route => route.key === key)) ?? [];
97
123
  if (routes.length === 0) {
98
124
  const initialRouteName = options.initialRouteName !== undefined ? options.initialRouteName : routeNames[0];
99
125
  routes.push({
@@ -109,7 +135,8 @@ export function StackRouter(options) {
109
135
  index: routes.length - 1,
110
136
  routeNames,
111
137
  routes,
112
- preloadedRoutes
138
+ preloadedRoutes,
139
+ retainedRouteKeys
113
140
  };
114
141
  },
115
142
  getStateForRouteNamesChange(state, {
@@ -118,6 +145,7 @@ export function StackRouter(options) {
118
145
  routeKeyChanges
119
146
  }) {
120
147
  const routes = state.routes.filter(route => routeNames.includes(route.name) && !routeKeyChanges.includes(route.name));
148
+ const preloadedRoutes = state.preloadedRoutes.filter(route => routeNames.includes(route.name) && !routeKeyChanges.includes(route.name));
121
149
  if (routes.length === 0) {
122
150
  const initialRouteName = options.initialRouteName !== undefined && routeNames.includes(options.initialRouteName) ? options.initialRouteName : routeNames[0];
123
151
  routes.push({
@@ -126,10 +154,14 @@ export function StackRouter(options) {
126
154
  params: routeParamList[initialRouteName]
127
155
  });
128
156
  }
157
+ const routeKeys = new Set([...routes, ...preloadedRoutes].map(route => route.key));
158
+ const retainedRouteKeys = state.retainedRouteKeys.filter(key => routeKeys.has(key));
129
159
  return {
130
160
  ...state,
131
161
  routeNames,
132
162
  routes,
163
+ preloadedRoutes,
164
+ retainedRouteKeys,
133
165
  index: Math.min(state.index, routes.length - 1)
134
166
  };
135
167
  },
@@ -138,11 +170,11 @@ export function StackRouter(options) {
138
170
  if (index === -1 || index === state.index) {
139
171
  return state;
140
172
  }
141
- return {
173
+ return retainRoutes(state, {
142
174
  ...state,
143
175
  index,
144
176
  routes: state.routes.slice(0, index + 1)
145
- };
177
+ });
146
178
  },
147
179
  getStateForAction(state, action, options) {
148
180
  const {
@@ -173,11 +205,11 @@ export function StackRouter(options) {
173
205
  routeParamList
174
206
  });
175
207
  }
176
- return {
208
+ return retainRoutes(state, {
177
209
  ...state,
178
210
  routes: state.routes.map((r, i) => i === currentIndex ? route : r),
179
211
  preloadedRoutes: state.preloadedRoutes.filter(r => r.key !== route.key)
180
- };
212
+ });
181
213
  }
182
214
  case 'PUSH':
183
215
  case 'NAVIGATE':
@@ -288,12 +320,12 @@ export function StackRouter(options) {
288
320
  params
289
321
  }];
290
322
  }
291
- return {
323
+ return retainRoutes(state, {
292
324
  ...state,
293
325
  index: routes.length - 1,
294
326
  preloadedRoutes: state.preloadedRoutes.filter(route => routes[routes.length - 1].key !== route.key),
295
327
  routes
296
- };
328
+ });
297
329
  }
298
330
  case 'POP':
299
331
  {
@@ -336,11 +368,11 @@ export function StackRouter(options) {
336
368
  route = routes[currentIndex];
337
369
  }
338
370
  }
339
- return {
371
+ return retainRoutes(state, {
340
372
  ...state,
341
373
  index: routes.length - 1,
342
374
  routes
343
- };
375
+ });
344
376
  }
345
377
  return null;
346
378
  }
@@ -354,11 +386,11 @@ export function StackRouter(options) {
354
386
  history: undefined
355
387
  };
356
388
  }
357
- return {
389
+ return retainRoutes(state, {
358
390
  ...state,
359
391
  index: 0,
360
392
  routes: [route]
361
- };
393
+ });
362
394
  }
363
395
  return null;
364
396
  }
@@ -430,12 +462,12 @@ export function StackRouter(options) {
430
462
  });
431
463
  }
432
464
  const routes = state.routes.slice(0, currentIndex).concat(route);
433
- return {
465
+ return retainRoutes(state, {
434
466
  ...state,
435
467
  index: routes.length - 1,
436
468
  routes,
437
469
  preloadedRoutes: state.preloadedRoutes.filter(r => r.key !== route.key)
438
- };
470
+ });
439
471
  }
440
472
  const route = state.routes[index];
441
473
  let baseParams = route.params;
@@ -457,7 +489,7 @@ export function StackRouter(options) {
457
489
  routeParamList
458
490
  });
459
491
  }
460
- return {
492
+ return retainRoutes(state, {
461
493
  ...state,
462
494
  index,
463
495
  routes: [...state.routes.slice(0, index), params !== baseParams || historyIndex !== undefined ? {
@@ -465,7 +497,7 @@ export function StackRouter(options) {
465
497
  params,
466
498
  history
467
499
  } : state.routes[index]]
468
- };
500
+ });
469
501
  }
470
502
  case 'GO_BACK':
471
503
  if (state.index > 0 || state.routes[state.index].history?.length) {
@@ -479,6 +511,30 @@ export function StackRouter(options) {
479
511
  }, options);
480
512
  }
481
513
  return null;
514
+ case 'RETAIN':
515
+ {
516
+ const routeKey = action.source ?? state.routes[state.index].key;
517
+ if (!state.routes.some(route => route.key === routeKey) && !state.preloadedRoutes.some(route => route.key === routeKey)) {
518
+ return null;
519
+ }
520
+ if (action.payload.enable) {
521
+ if (state.retainedRouteKeys.includes(routeKey)) {
522
+ return state;
523
+ }
524
+ return {
525
+ ...state,
526
+ retainedRouteKeys: [...state.retainedRouteKeys, routeKey]
527
+ };
528
+ }
529
+ if (!state.retainedRouteKeys.includes(routeKey)) {
530
+ return state;
531
+ }
532
+ return {
533
+ ...state,
534
+ preloadedRoutes: state.preloadedRoutes.filter(route => route.key !== routeKey),
535
+ retainedRouteKeys: state.retainedRouteKeys.filter(key => key !== routeKey)
536
+ };
537
+ }
482
538
  case 'PRELOAD':
483
539
  {
484
540
  const getId = options.routeGetIdList[action.payload.name];
@@ -1 +1 @@
1
- {"version":3,"names":["nanoid","BaseRouter","createParamsFromAction","createRouteFromAction","StackActions","replace","name","params","type","payload","push","pop","count","popToTop","popTo","options","merge","StackRouter","router","getInitialState","routeNames","routeParamList","initialRouteName","undefined","includes","stale","key","index","preloadedRoutes","routes","getRehydratedState","partialState","state","filter","route","map","length","getStateForRouteNamesChange","routeKeyChanges","Math","min","getStateForRouteFocus","findIndex","r","slice","getStateForAction","action","currentIndex","target","source","getId","routeGetIdList","id","find","i","currentRoute","history","j","findLast","path","end","last","at","removed","max","concat","findLastIndex","historyIndex","baseParams","reuse","getRoutesFromState","actionCreators"],"sourceRoot":"../../src","sources":["StackRouter.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["nanoid","BaseRouter","createParamsFromAction","createRouteFromAction","StackActions","replace","name","params","type","payload","push","pop","count","popToTop","popTo","options","merge","retain","enable","retainRoutes","previousState","nextState","retainedRouteKeys","length","retainedRouteKeySet","Set","nextRouteKeySet","routes","map","route","key","retainedRoutes","filter","has","removedRetainedRouteKeys","preloadedRoutes","concat","StackRouter","router","getInitialState","routeNames","routeParamList","initialRouteName","undefined","includes","stale","index","getRehydratedState","partialState","state","some","getStateForRouteNamesChange","routeKeyChanges","routeKeys","Math","min","getStateForRouteFocus","findIndex","r","slice","getStateForAction","action","currentIndex","target","source","getId","routeGetIdList","id","find","i","currentRoute","history","j","findLast","path","end","last","at","removed","max","findLastIndex","historyIndex","baseParams","routeKey","reuse","getRoutesFromState","actionCreators"],"sourceRoot":"../../src","sources":["StackRouter.tsx"],"mappings":"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","ignoreList":[]}
@@ -35,6 +35,13 @@ export type StackActionType = {
35
35
  };
36
36
  source?: string | undefined;
37
37
  target?: string | undefined;
38
+ } | {
39
+ type: 'RETAIN';
40
+ payload: {
41
+ enable: boolean;
42
+ };
43
+ source?: string | undefined;
44
+ target?: string | undefined;
38
45
  };
39
46
  export type StackRouterOptions = DefaultRouterOptions;
40
47
  export type StackNavigationState<ParamList extends ParamListBase> = NavigationState<ParamList> & {
@@ -46,6 +53,13 @@ export type StackNavigationState<ParamList extends ParamListBase> = NavigationSt
46
53
  * List of routes, which are supposed to be preloaded before navigating to.
47
54
  */
48
55
  preloadedRoutes: NavigationRoute<ParamList, keyof ParamList>[];
56
+ /**
57
+ * List of route keys to retain in the stack.
58
+ * When a retained route gets removed from the stack,
59
+ * it'll be treated as preloaded route and not completely removed
60
+ * So it preserves the route and can be navigated to again.
61
+ */
62
+ retainedRouteKeys: string[];
49
63
  };
50
64
  export type StackActionHelpers<ParamList extends ParamListBase> = {
51
65
  /**
@@ -91,6 +105,15 @@ export type StackActionHelpers<ParamList extends ParamListBase> = {
91
105
  merge?: boolean;
92
106
  }
93
107
  ] : never): void;
108
+ /**
109
+ * Enable or disable retaining the current route in the stack.
110
+ * When a retained route gets removed from the stack,
111
+ * it'll be treated as preloaded route and not completely removed
112
+ * So it preserves the route and can be navigated to again.
113
+ *
114
+ * @param enable Whether to retain the current route in the stack or not.
115
+ */
116
+ retain(enable: boolean): void;
94
117
  };
95
118
  export declare const StackActions: {
96
119
  replace(name: string, params?: object): {
@@ -126,6 +149,12 @@ export declare const StackActions: {
126
149
  readonly merge: boolean | undefined;
127
150
  };
128
151
  };
152
+ retain(enable: boolean): {
153
+ readonly type: "RETAIN";
154
+ readonly payload: {
155
+ readonly enable: boolean;
156
+ };
157
+ };
129
158
  };
130
159
  export declare function StackRouter(options: StackRouterOptions): Router<StackNavigationState<ParamListBase>, import("./CommonActions").Action | StackActionType>;
131
160
  //# sourceMappingURL=StackRouter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StackRouter.d.ts","sourceRoot":"","sources":["../../../src/StackRouter.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StackRouter.d.ts","sourceRoot":"","sources":["../../../src/StackRouter.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@react-navigation/routers",
3
3
  "description": "Routers to help build custom navigators",
4
- "version": "8.0.0-alpha.5",
4
+ "version": "8.0.0-alpha.6",
5
5
  "keywords": [
6
6
  "react",
7
7
  "react-native",
@@ -67,5 +67,5 @@
67
67
  ]
68
68
  ]
69
69
  },
70
- "gitHead": "18da535b07fc86a30700efc4d824ef58271d2b8f"
70
+ "gitHead": "d465f4e6b2996e5ed4648b23487e2027e83b263d"
71
71
  }
@@ -46,6 +46,12 @@ export type StackActionType =
46
46
  };
47
47
  source?: string | undefined;
48
48
  target?: string | undefined;
49
+ }
50
+ | {
51
+ type: 'RETAIN';
52
+ payload: { enable: boolean };
53
+ source?: string | undefined;
54
+ target?: string | undefined;
49
55
  };
50
56
 
51
57
  export type StackRouterOptions = DefaultRouterOptions;
@@ -60,6 +66,13 @@ export type StackNavigationState<ParamList extends ParamListBase> =
60
66
  * List of routes, which are supposed to be preloaded before navigating to.
61
67
  */
62
68
  preloadedRoutes: NavigationRoute<ParamList, keyof ParamList>[];
69
+ /**
70
+ * List of route keys to retain in the stack.
71
+ * When a retained route gets removed from the stack,
72
+ * it'll be treated as preloaded route and not completely removed
73
+ * So it preserves the route and can be navigated to again.
74
+ */
75
+ retainedRouteKeys: string[];
63
76
  };
64
77
 
65
78
  export type StackActionHelpers<ParamList extends ParamListBase> = {
@@ -124,6 +137,16 @@ export type StackActionHelpers<ParamList extends ParamListBase> = {
124
137
  ]
125
138
  : never
126
139
  ): void;
140
+
141
+ /**
142
+ * Enable or disable retaining the current route in the stack.
143
+ * When a retained route gets removed from the stack,
144
+ * it'll be treated as preloaded route and not completely removed
145
+ * So it preserves the route and can be navigated to again.
146
+ *
147
+ * @param enable Whether to retain the current route in the stack or not.
148
+ */
149
+ retain(enable: boolean): void;
127
150
  };
128
151
 
129
152
  export const StackActions = {
@@ -158,8 +181,47 @@ export const StackActions = {
158
181
  },
159
182
  } as const satisfies StackActionType;
160
183
  },
184
+ retain(enable: boolean) {
185
+ return {
186
+ type: 'RETAIN',
187
+ payload: { enable },
188
+ } as const satisfies StackActionType;
189
+ },
161
190
  };
162
191
 
192
+ function retainRoutes<ParamList extends ParamListBase>(
193
+ previousState: StackNavigationState<ParamList>,
194
+ nextState: StackNavigationState<ParamList>
195
+ ) {
196
+ if (!nextState.retainedRouteKeys.length) {
197
+ return nextState;
198
+ }
199
+
200
+ const retainedRouteKeySet = new Set(nextState.retainedRouteKeys);
201
+ const nextRouteKeySet = new Set(nextState.routes.map((route) => route.key));
202
+ const retainedRoutes = previousState.routes.filter(
203
+ (route) =>
204
+ retainedRouteKeySet.has(route.key) && !nextRouteKeySet.has(route.key)
205
+ );
206
+
207
+ if (!retainedRoutes.length) {
208
+ return nextState;
209
+ }
210
+
211
+ const removedRetainedRouteKeys = new Set(
212
+ retainedRoutes.map((route) => route.key)
213
+ );
214
+
215
+ return {
216
+ ...nextState,
217
+ preloadedRoutes: retainedRoutes.concat(
218
+ nextState.preloadedRoutes.filter(
219
+ (route) => !removedRetainedRouteKeys.has(route.key)
220
+ )
221
+ ),
222
+ };
223
+ }
224
+
163
225
  export function StackRouter(options: StackRouterOptions) {
164
226
  const router: Router<
165
227
  StackNavigationState<ParamListBase>,
@@ -183,6 +245,7 @@ export function StackRouter(options: StackRouterOptions) {
183
245
  index: 0,
184
246
  routeNames,
185
247
  preloadedRoutes: [],
248
+ retainedRouteKeys: [],
186
249
  routes: [
187
250
  {
188
251
  key: `${initialRouteName}-${nanoid()}`,
@@ -232,6 +295,11 @@ export function StackRouter(options: StackRouterOptions) {
232
295
  }) as Route<string>
233
296
  ) ?? [];
234
297
 
298
+ const retainedRouteKeys =
299
+ state.retainedRouteKeys?.filter((key) =>
300
+ [...routes, ...preloadedRoutes].some((route) => route.key === key)
301
+ ) ?? [];
302
+
235
303
  if (routes.length === 0) {
236
304
  const initialRouteName =
237
305
  options.initialRouteName !== undefined
@@ -253,6 +321,7 @@ export function StackRouter(options: StackRouterOptions) {
253
321
  routeNames,
254
322
  routes,
255
323
  preloadedRoutes,
324
+ retainedRouteKeys,
256
325
  };
257
326
  },
258
327
 
@@ -266,6 +335,12 @@ export function StackRouter(options: StackRouterOptions) {
266
335
  !routeKeyChanges.includes(route.name)
267
336
  );
268
337
 
338
+ const preloadedRoutes = state.preloadedRoutes.filter(
339
+ (route) =>
340
+ routeNames.includes(route.name) &&
341
+ !routeKeyChanges.includes(route.name)
342
+ );
343
+
269
344
  if (routes.length === 0) {
270
345
  const initialRouteName =
271
346
  options.initialRouteName !== undefined &&
@@ -280,10 +355,20 @@ export function StackRouter(options: StackRouterOptions) {
280
355
  });
281
356
  }
282
357
 
358
+ const routeKeys = new Set(
359
+ [...routes, ...preloadedRoutes].map((route) => route.key)
360
+ );
361
+
362
+ const retainedRouteKeys = state.retainedRouteKeys.filter((key) =>
363
+ routeKeys.has(key)
364
+ );
365
+
283
366
  return {
284
367
  ...state,
285
368
  routeNames,
286
369
  routes,
370
+ preloadedRoutes,
371
+ retainedRouteKeys,
287
372
  index: Math.min(state.index, routes.length - 1),
288
373
  };
289
374
  },
@@ -295,11 +380,11 @@ export function StackRouter(options: StackRouterOptions) {
295
380
  return state;
296
381
  }
297
382
 
298
- return {
383
+ return retainRoutes(state, {
299
384
  ...state,
300
385
  index,
301
386
  routes: state.routes.slice(0, index + 1),
302
- };
387
+ });
303
388
  },
304
389
 
305
390
  getStateForAction(state, action, options) {
@@ -334,7 +419,7 @@ export function StackRouter(options: StackRouterOptions) {
334
419
  route = createRouteFromAction({ action, routeParamList });
335
420
  }
336
421
 
337
- return {
422
+ return retainRoutes(state, {
338
423
  ...state,
339
424
  routes: state.routes.map((r, i) =>
340
425
  i === currentIndex ? route : r
@@ -342,7 +427,7 @@ export function StackRouter(options: StackRouterOptions) {
342
427
  preloadedRoutes: state.preloadedRoutes.filter(
343
428
  (r) => r.key !== route.key
344
429
  ),
345
- };
430
+ });
346
431
  }
347
432
 
348
433
  case 'PUSH':
@@ -482,14 +567,14 @@ export function StackRouter(options: StackRouterOptions) {
482
567
  ];
483
568
  }
484
569
 
485
- return {
570
+ return retainRoutes(state, {
486
571
  ...state,
487
572
  index: routes.length - 1,
488
573
  preloadedRoutes: state.preloadedRoutes.filter(
489
574
  (route) => routes[routes.length - 1].key !== route.key
490
575
  ),
491
576
  routes,
492
- };
577
+ });
493
578
  }
494
579
 
495
580
  case 'POP': {
@@ -547,11 +632,11 @@ export function StackRouter(options: StackRouterOptions) {
547
632
  }
548
633
  }
549
634
 
550
- return {
635
+ return retainRoutes(state, {
551
636
  ...state,
552
637
  index: routes.length - 1,
553
638
  routes,
554
- };
639
+ });
555
640
  }
556
641
 
557
642
  return null;
@@ -568,11 +653,11 @@ export function StackRouter(options: StackRouterOptions) {
568
653
  };
569
654
  }
570
655
 
571
- return {
656
+ return retainRoutes(state, {
572
657
  ...state,
573
658
  index: 0,
574
659
  routes: [route],
575
- };
660
+ });
576
661
  }
577
662
 
578
663
  return null;
@@ -655,14 +740,14 @@ export function StackRouter(options: StackRouterOptions) {
655
740
 
656
741
  const routes = state.routes.slice(0, currentIndex).concat(route);
657
742
 
658
- return {
743
+ return retainRoutes(state, {
659
744
  ...state,
660
745
  index: routes.length - 1,
661
746
  routes,
662
747
  preloadedRoutes: state.preloadedRoutes.filter(
663
748
  (r) => r.key !== route.key
664
749
  ),
665
- };
750
+ });
666
751
  }
667
752
 
668
753
  const route = state.routes[index];
@@ -691,7 +776,7 @@ export function StackRouter(options: StackRouterOptions) {
691
776
  params = createParamsFromAction({ action, routeParamList });
692
777
  }
693
778
 
694
- return {
779
+ return retainRoutes(state, {
695
780
  ...state,
696
781
  index,
697
782
  routes: [
@@ -700,7 +785,7 @@ export function StackRouter(options: StackRouterOptions) {
700
785
  ? { ...route, params, history }
701
786
  : state.routes[index],
702
787
  ],
703
- };
788
+ });
704
789
  }
705
790
 
706
791
  case 'GO_BACK':
@@ -719,6 +804,42 @@ export function StackRouter(options: StackRouterOptions) {
719
804
 
720
805
  return null;
721
806
 
807
+ case 'RETAIN': {
808
+ const routeKey = action.source ?? state.routes[state.index].key;
809
+
810
+ if (
811
+ !state.routes.some((route) => route.key === routeKey) &&
812
+ !state.preloadedRoutes.some((route) => route.key === routeKey)
813
+ ) {
814
+ return null;
815
+ }
816
+
817
+ if (action.payload.enable) {
818
+ if (state.retainedRouteKeys.includes(routeKey)) {
819
+ return state;
820
+ }
821
+
822
+ return {
823
+ ...state,
824
+ retainedRouteKeys: [...state.retainedRouteKeys, routeKey],
825
+ };
826
+ }
827
+
828
+ if (!state.retainedRouteKeys.includes(routeKey)) {
829
+ return state;
830
+ }
831
+
832
+ return {
833
+ ...state,
834
+ preloadedRoutes: state.preloadedRoutes.filter(
835
+ (route) => route.key !== routeKey
836
+ ),
837
+ retainedRouteKeys: state.retainedRouteKeys.filter(
838
+ (key) => key !== routeKey
839
+ ),
840
+ };
841
+ }
842
+
722
843
  case 'PRELOAD': {
723
844
  const getId = options.routeGetIdList[action.payload.name];
724
845
  const id = getId?.({ params: action.payload.params });