@react-navigation/routers 7.6.0 → 7.6.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.
@@ -1,56 +1,61 @@
1
1
  "use strict";
2
2
 
3
3
  import { nanoid } from 'nanoid/non-secure';
4
- /**
5
- * Base router object that can be used when writing custom routers.
6
- * This provides few helper methods to handle common actions such as `RESET`.
7
- */
8
- export const BaseRouter = {
9
- getStateForAction(state, action) {
10
- switch (action.type) {
11
- case 'SET_PARAMS':
12
- case 'REPLACE_PARAMS':
13
- {
14
- const index = action.source ? state.routes.findIndex(r => r.key === action.source) : state.index;
15
- if (index === -1) {
4
+ function getStateForAction(state, action) {
5
+ switch (action.type) {
6
+ case 'SET_PARAMS':
7
+ case 'REPLACE_PARAMS':
8
+ {
9
+ const index = action.source ? state.routes.findIndex(r => r.key === action.source) : state.index;
10
+ if (index === -1) {
11
+ return null;
12
+ }
13
+ return {
14
+ ...state,
15
+ routes: state.routes.map((r, i) => i === index ? {
16
+ ...r,
17
+ params: action.type === 'REPLACE_PARAMS' ? action.payload.params : {
18
+ ...r.params,
19
+ ...action.payload.params
20
+ }
21
+ } : r)
22
+ };
23
+ }
24
+ case 'RESET':
25
+ {
26
+ const nextState = action.payload;
27
+ if (nextState == null) {
28
+ return null;
29
+ }
30
+ const routeNamesSet = new Set(state.routeNames);
31
+ if (nextState.routes.length === 0 || nextState.routes.some(route => !routeNamesSet.has(route.name))) {
32
+ return null;
33
+ }
34
+ if (nextState.stale === false) {
35
+ if (state.routeNames.length !== nextState.routeNames.length || nextState.routeNames.some(name => !routeNamesSet.has(name)) || !Number.isInteger(nextState.index) || nextState.index < 0 || nextState.index >= nextState.routes.length) {
16
36
  return null;
17
37
  }
18
38
  return {
19
- ...state,
20
- routes: state.routes.map((r, i) => i === index ? {
21
- ...r,
22
- params: action.type === 'REPLACE_PARAMS' ? action.payload.params : {
23
- ...r.params,
24
- ...action.payload.params
25
- }
26
- } : r)
39
+ ...nextState,
40
+ routes: nextState.routes.map(route => 'key' in route && route.key ? route : {
41
+ ...route,
42
+ key: `${route.name}-${nanoid()}`
43
+ })
27
44
  };
28
45
  }
29
- case 'RESET':
30
- {
31
- const nextState = action.payload;
32
- const routeNamesSet = new Set(state.routeNames);
33
- if (nextState.routes.length === 0 || nextState.routes.some(route => !routeNamesSet.has(route.name))) {
34
- return null;
35
- }
36
- if (nextState.stale === false) {
37
- if (state.routeNames.length !== nextState.routeNames.length || nextState.routeNames.some(name => !routeNamesSet.has(name))) {
38
- return null;
39
- }
40
- return {
41
- ...nextState,
42
- routes: nextState.routes.map(route => route.key ? route : {
43
- ...route,
44
- key: `${route.name}-${nanoid()}`
45
- })
46
- };
47
- }
48
- return nextState;
49
- }
50
- default:
51
- return null;
52
- }
53
- },
46
+ return nextState;
47
+ }
48
+ default:
49
+ return null;
50
+ }
51
+ }
52
+
53
+ /**
54
+ * Base router object that can be used when writing custom routers.
55
+ * This provides few helper methods to handle common actions such as `RESET`.
56
+ */
57
+ export const BaseRouter = {
58
+ getStateForAction,
54
59
  shouldActionChangeFocus(action) {
55
60
  return action.type === 'NAVIGATE' || action.type === 'NAVIGATE_DEPRECATED';
56
61
  }
@@ -1 +1 @@
1
- {"version":3,"names":["nanoid","BaseRouter","getStateForAction","state","action","type","index","source","routes","findIndex","r","key","map","i","params","payload","nextState","routeNamesSet","Set","routeNames","length","some","route","has","name","stale","shouldActionChangeFocus"],"sourceRoot":"../../src","sources":["BaseRouter.tsx"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,mBAAmB;AAQ1C;AACA;AACA;AACA;AACA,OAAO,MAAMC,UAAU,GAAG;EACxBC,iBAAiBA,CACfC,KAAY,EACZC,MAA8B,EACM;IACpC,QAAQA,MAAM,CAACC,IAAI;MACjB,KAAK,YAAY;MACjB,KAAK,gBAAgB;QAAE;UACrB,MAAMC,KAAK,GAAGF,MAAM,CAACG,MAAM,GACvBJ,KAAK,CAACK,MAAM,CAACC,SAAS,CAAEC,CAAC,IAAKA,CAAC,CAACC,GAAG,KAAKP,MAAM,CAACG,MAAM,CAAC,GACtDJ,KAAK,CAACG,KAAK;UAEf,IAAIA,KAAK,KAAK,CAAC,CAAC,EAAE;YAChB,OAAO,IAAI;UACb;UAEA,OAAO;YACL,GAAGH,KAAK;YACRK,MAAM,EAAEL,KAAK,CAACK,MAAM,CAACI,GAAG,CAAC,CAACF,CAAC,EAAEG,CAAC,KAC5BA,CAAC,KAAKP,KAAK,GACP;cACE,GAAGI,CAAC;cACJI,MAAM,EACJV,MAAM,CAACC,IAAI,KAAK,gBAAgB,GAC5BD,MAAM,CAACW,OAAO,CAACD,MAAM,GACrB;gBAAE,GAAGJ,CAAC,CAACI,MAAM;gBAAE,GAAGV,MAAM,CAACW,OAAO,CAACD;cAAO;YAChD,CAAC,GACDJ,CACN;UACF,CAAC;QACH;MAEA,KAAK,OAAO;QAAE;UACZ,MAAMM,SAAS,GAAGZ,MAAM,CAACW,OAAsC;UAE/D,MAAME,aAAa,GAAG,IAAIC,GAAG,CAACf,KAAK,CAACgB,UAAU,CAAC;UAE/C,IACEH,SAAS,CAACR,MAAM,CAACY,MAAM,KAAK,CAAC,IAC7BJ,SAAS,CAACR,MAAM,CAACa,IAAI,CAClBC,KAAuB,IAAK,CAACL,aAAa,CAACM,GAAG,CAACD,KAAK,CAACE,IAAI,CAC5D,CAAC,EACD;YACA,OAAO,IAAI;UACb;UAEA,IAAIR,SAAS,CAACS,KAAK,KAAK,KAAK,EAAE;YAC7B,IACEtB,KAAK,CAACgB,UAAU,CAACC,MAAM,KAAKJ,SAAS,CAACG,UAAU,CAACC,MAAM,IACvDJ,SAAS,CAACG,UAAU,CAACE,IAAI,CAAEG,IAAI,IAAK,CAACP,aAAa,CAACM,GAAG,CAACC,IAAI,CAAC,CAAC,EAC7D;cACA,OAAO,IAAI;YACb;YAEA,OAAO;cACL,GAAGR,SAAS;cACZR,MAAM,EAAEQ,SAAS,CAACR,MAAM,CAACI,GAAG,CAAEU,KAAK,IACjCA,KAAK,CAACX,GAAG,GAAGW,KAAK,GAAG;gBAAE,GAAGA,KAAK;gBAAEX,GAAG,EAAE,GAAGW,KAAK,CAACE,IAAI,IAAIxB,MAAM,CAAC,CAAC;cAAG,CACnE;YACF,CAAC;UACH;UAEA,OAAOgB,SAAS;QAClB;MAEA;QACE,OAAO,IAAI;IACf;EACF,CAAC;EAEDU,uBAAuBA,CAACtB,MAA8B,EAAE;IACtD,OAAOA,MAAM,CAACC,IAAI,KAAK,UAAU,IAAID,MAAM,CAACC,IAAI,KAAK,qBAAqB;EAC5E;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["nanoid","getStateForAction","state","action","type","index","source","routes","findIndex","r","key","map","i","params","payload","nextState","routeNamesSet","Set","routeNames","length","some","route","has","name","stale","Number","isInteger","BaseRouter","shouldActionChangeFocus"],"sourceRoot":"../../src","sources":["BaseRouter.tsx"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,mBAAmB;AAY1C,SAASC,iBAAiBA,CACxBC,KAAsB,EACtBC,MAA8B,EAC9B;EACA,QAAQA,MAAM,CAACC,IAAI;IACjB,KAAK,YAAY;IACjB,KAAK,gBAAgB;MAAE;QACrB,MAAMC,KAAK,GAAGF,MAAM,CAACG,MAAM,GACvBJ,KAAK,CAACK,MAAM,CAACC,SAAS,CAAEC,CAAC,IAAKA,CAAC,CAACC,GAAG,KAAKP,MAAM,CAACG,MAAM,CAAC,GACtDJ,KAAK,CAACG,KAAK;QAEf,IAAIA,KAAK,KAAK,CAAC,CAAC,EAAE;UAChB,OAAO,IAAI;QACb;QAEA,OAAO;UACL,GAAGH,KAAK;UACRK,MAAM,EAAEL,KAAK,CAACK,MAAM,CAACI,GAAG,CAAC,CAACF,CAAC,EAAEG,CAAC,KAC5BA,CAAC,KAAKP,KAAK,GACP;YACE,GAAGI,CAAC;YACJI,MAAM,EACJV,MAAM,CAACC,IAAI,KAAK,gBAAgB,GAC5BD,MAAM,CAACW,OAAO,CAACD,MAAM,GACrB;cAAE,GAAGJ,CAAC,CAACI,MAAM;cAAE,GAAGV,MAAM,CAACW,OAAO,CAACD;YAAO;UAChD,CAAC,GACDJ,CACN;QACF,CAAC;MACH;IAEA,KAAK,OAAO;MAAE;QACZ,MAAMM,SAAS,GAAGZ,MAAM,CAACW,OAAO;QAEhC,IAAIC,SAAS,IAAI,IAAI,EAAE;UACrB,OAAO,IAAI;QACb;QAEA,MAAMC,aAAa,GAAG,IAAIC,GAAG,CAACf,KAAK,CAACgB,UAAU,CAAC;QAE/C,IACEH,SAAS,CAACR,MAAM,CAACY,MAAM,KAAK,CAAC,IAC7BJ,SAAS,CAACR,MAAM,CAACa,IAAI,CAClBC,KAAuB,IAAK,CAACL,aAAa,CAACM,GAAG,CAACD,KAAK,CAACE,IAAI,CAC5D,CAAC,EACD;UACA,OAAO,IAAI;QACb;QAEA,IAAIR,SAAS,CAACS,KAAK,KAAK,KAAK,EAAE;UAC7B,IACEtB,KAAK,CAACgB,UAAU,CAACC,MAAM,KAAKJ,SAAS,CAACG,UAAU,CAACC,MAAM,IACvDJ,SAAS,CAACG,UAAU,CAACE,IAAI,CAAEG,IAAI,IAAK,CAACP,aAAa,CAACM,GAAG,CAACC,IAAI,CAAC,CAAC,IAC7D,CAACE,MAAM,CAACC,SAAS,CAACX,SAAS,CAACV,KAAK,CAAC,IAClCU,SAAS,CAACV,KAAK,GAAG,CAAC,IACnBU,SAAS,CAACV,KAAK,IAAIU,SAAS,CAACR,MAAM,CAACY,MAAM,EAC1C;YACA,OAAO,IAAI;UACb;UAEA,OAAO;YACL,GAAGJ,SAAS;YACZR,MAAM,EAAEQ,SAAS,CAACR,MAAM,CAACI,GAAG,CAAEU,KAAK,IACjC,KAAK,IAAIA,KAAK,IAAIA,KAAK,CAACX,GAAG,GACvBW,KAAK,GACL;cAAE,GAAGA,KAAK;cAAEX,GAAG,EAAE,GAAGW,KAAK,CAACE,IAAI,IAAIvB,MAAM,CAAC,CAAC;YAAG,CACnD;UACF,CAAC;QACH;QAEA,OAAOe,SAAS;MAClB;IAEA;MACE,OAAO,IAAI;EACf;AACF;;AAEA;AACA;AACA;AACA;AACA,OAAO,MAAMY,UAAU,GAAG;EACxB1B,iBAAiB;EAEjB2B,uBAAuBA,CAACzB,MAA8B,EAAE;IACtD,OAAOA,MAAM,CAACC,IAAI,KAAK,UAAU,IAAID,MAAM,CAACC,IAAI,KAAK,qBAAqB;EAC5E;AACF,CAAC","ignoreList":[]}
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
 
3
3
  import { nanoid } from 'nanoid/non-secure';
4
- import { TabActions, TabRouter } from "./TabRouter.js";
4
+ import { SwitchRouter } from "./SwitchRouter.js";
5
+ import { TabActions } from "./TabRouter.js";
5
6
  export const DrawerActions = {
6
7
  ...TabActions,
7
8
  openDrawer() {
@@ -24,7 +25,7 @@ export function DrawerRouter({
24
25
  defaultStatus = 'closed',
25
26
  ...rest
26
27
  }) {
27
- const router = TabRouter(rest);
28
+ const router = SwitchRouter(rest);
28
29
  const isDrawerInHistory = state => Boolean(state.history?.some(it => it.type === 'drawer'));
29
30
  const addDrawerToHistory = state => {
30
31
  if (isDrawerInHistory(state)) {
@@ -88,22 +89,22 @@ export function DrawerRouter({
88
89
  if (partialState.stale === false) {
89
90
  return partialState;
90
91
  }
91
- let state = router.getRehydratedState(partialState, {
92
- routeNames,
93
- routeParamList,
94
- routeGetIdList
95
- });
92
+ let state = {
93
+ ...router.getRehydratedState(partialState, {
94
+ routeNames,
95
+ routeParamList,
96
+ routeGetIdList
97
+ }),
98
+ default: defaultStatus,
99
+ type: 'drawer',
100
+ key: `drawer-${nanoid()}`
101
+ };
96
102
  if (isDrawerInHistory(partialState)) {
97
103
  // Re-sync the drawer entry in history to correct it if it was wrong
98
104
  state = removeDrawerFromHistory(state);
99
105
  state = addDrawerToHistory(state);
100
106
  }
101
- return {
102
- ...state,
103
- default: defaultStatus,
104
- type: 'drawer',
105
- key: `drawer-${nanoid()}`
106
- };
107
+ return state;
107
108
  },
108
109
  getStateForRouteFocus(state, key) {
109
110
  const result = router.getStateForRouteFocus(state, key);
@@ -125,7 +126,7 @@ export function DrawerRouter({
125
126
  case 'NAVIGATE_DEPRECATED':
126
127
  {
127
128
  const result = router.getStateForAction(state, action, options);
128
- if (result != null && result.index !== state.index) {
129
+ if (result != null && result.stale === false && result.index !== state.index) {
129
130
  return closeDrawer(result);
130
131
  }
131
132
  return result;
@@ -1 +1 @@
1
- {"version":3,"names":["nanoid","TabActions","TabRouter","DrawerActions","openDrawer","type","closeDrawer","toggleDrawer","DrawerRouter","defaultStatus","rest","router","isDrawerInHistory","state","Boolean","history","some","it","addDrawerToHistory","status","removeDrawerFromHistory","filter","getInitialState","routeNames","routeParamList","routeGetIdList","default","stale","key","getRehydratedState","partialState","getStateForRouteFocus","result","getStateForAction","action","options","index","actionCreators"],"sourceRoot":"../../src","sources":["DrawerRouter.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["nanoid","SwitchRouter","TabActions","DrawerActions","openDrawer","type","closeDrawer","toggleDrawer","DrawerRouter","defaultStatus","rest","router","isDrawerInHistory","state","Boolean","history","some","it","addDrawerToHistory","status","removeDrawerFromHistory","filter","getInitialState","routeNames","routeParamList","routeGetIdList","default","stale","key","getRehydratedState","partialState","getStateForRouteFocus","result","getStateForAction","action","options","index","actionCreators"],"sourceRoot":"../../src","sources":["DrawerRouter.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,352 @@
1
+ "use strict";
2
+
3
+ import { nanoid } from 'nanoid/non-secure';
4
+ import { BaseRouter } from "./BaseRouter.js";
5
+ import { createParamsFromAction } from "./createParamsFromAction.js";
6
+ const TYPE_ROUTE = 'route';
7
+ const getRouteHistory = (routes, index, backBehavior, initialRouteName) => {
8
+ const history = [{
9
+ type: TYPE_ROUTE,
10
+ key: routes[index].key,
11
+ params: backBehavior === 'fullHistory' ? routes[index].params : undefined
12
+ }];
13
+ let initialRouteIndex;
14
+ switch (backBehavior) {
15
+ case 'order':
16
+ for (let i = index; i > 0; i--) {
17
+ history.unshift({
18
+ type: TYPE_ROUTE,
19
+ key: routes[i - 1].key
20
+ });
21
+ }
22
+ break;
23
+ case 'firstRoute':
24
+ if (index !== 0) {
25
+ history.unshift({
26
+ type: TYPE_ROUTE,
27
+ key: routes[0].key
28
+ });
29
+ }
30
+ break;
31
+ case 'initialRoute':
32
+ initialRouteIndex = routes.findIndex(route => route.name === initialRouteName);
33
+ initialRouteIndex = initialRouteIndex === -1 ? 0 : initialRouteIndex;
34
+ if (index !== initialRouteIndex) {
35
+ history.unshift({
36
+ type: TYPE_ROUTE,
37
+ key: routes[initialRouteIndex].key
38
+ });
39
+ }
40
+ break;
41
+ case 'history':
42
+ case 'fullHistory':
43
+ // The history will fill up on navigation
44
+ break;
45
+ }
46
+ return history;
47
+ };
48
+ const changeIndex = (state, index, backBehavior, initialRouteName) => {
49
+ let history = state.history;
50
+ if (backBehavior === 'history' || backBehavior === 'fullHistory') {
51
+ const currentRoute = state.routes[index];
52
+ if (backBehavior === 'history') {
53
+ // Remove the existing key from the history to de-duplicate it
54
+ history = history.filter(it => it.type === 'route' ? it.key !== currentRoute.key : true);
55
+ } else if (backBehavior === 'fullHistory') {
56
+ const lastHistoryRouteItemIndex = history.findLastIndex(item => item.type === 'route');
57
+ const lastHistoryRouteItem = history[lastHistoryRouteItemIndex];
58
+ if (lastHistoryRouteItem?.type === 'route' && currentRoute.key === lastHistoryRouteItem.key) {
59
+ // For full-history, only remove if it matches the last route
60
+ // Useful for drawer, if current route was in history, then drawer state changed
61
+ // Then we only need to move the route to the front
62
+ history = [...history.slice(0, lastHistoryRouteItemIndex), ...history.slice(lastHistoryRouteItemIndex + 1)];
63
+ }
64
+ }
65
+ history = history.concat({
66
+ type: TYPE_ROUTE,
67
+ key: currentRoute.key,
68
+ params: backBehavior === 'fullHistory' ? currentRoute.params : undefined
69
+ });
70
+ } else {
71
+ // Preserve non-route entries (e.g. drawer status) when rebuilding the history
72
+ history = [...state.history.filter(it => it.type !== 'route'), ...getRouteHistory(state.routes, index, backBehavior, initialRouteName)];
73
+ }
74
+ return {
75
+ index,
76
+ history
77
+ };
78
+ };
79
+ export function SwitchRouter({
80
+ initialRouteName,
81
+ backBehavior = 'firstRoute'
82
+ }) {
83
+ const router = {
84
+ ...BaseRouter,
85
+ getInitialState({
86
+ routeNames,
87
+ routeParamList
88
+ }) {
89
+ const index = initialRouteName !== undefined && routeNames.includes(initialRouteName) ? routeNames.indexOf(initialRouteName) : 0;
90
+ const routes = routeNames.map(name => ({
91
+ name,
92
+ key: `${name}-${nanoid()}`,
93
+ params: routeParamList[name]
94
+ }));
95
+ return {
96
+ stale: false,
97
+ key: nanoid(),
98
+ index,
99
+ routeNames,
100
+ history: getRouteHistory(routes, index, backBehavior, initialRouteName),
101
+ routes,
102
+ preloadedRouteKeys: []
103
+ };
104
+ },
105
+ getRehydratedState(state, {
106
+ routeNames,
107
+ routeParamList
108
+ }) {
109
+ const routes = routeNames.map(name => {
110
+ const route = state.routes.find(r => r.name === name);
111
+ return {
112
+ ...route,
113
+ name,
114
+ key: route && route.name === name && route.key ? route.key : `${name}-${nanoid()}`,
115
+ params: routeParamList[name] !== undefined ? {
116
+ ...routeParamList[name],
117
+ ...(route ? route.params : undefined)
118
+ } : route ? route.params : undefined
119
+ };
120
+ });
121
+ const index = Math.min(Math.max(routeNames.indexOf(state.routes[state.index ?? 0]?.name), 0), routes.length - 1);
122
+ const routeKeys = routes.map(route => route.key);
123
+ const history = [];
124
+ for (const item of state.history ?? []) {
125
+ if (item.type === 'route' && routeKeys.includes(item.key)) {
126
+ history.push(item);
127
+ }
128
+ }
129
+ const stateData = {
130
+ stale: false,
131
+ key: nanoid(),
132
+ index,
133
+ routeNames,
134
+ history,
135
+ routes,
136
+ preloadedRouteKeys: state.preloadedRouteKeys?.filter(key => routeKeys.includes(key)) ?? []
137
+ };
138
+ return {
139
+ ...stateData,
140
+ ...changeIndex(stateData, index, backBehavior, initialRouteName)
141
+ };
142
+ },
143
+ getStateForRouteNamesChange(state, {
144
+ routeNames,
145
+ routeParamList,
146
+ routeKeyChanges
147
+ }) {
148
+ const routes = routeNames.map(name => state.routes.find(r => r.name === name && !routeKeyChanges.includes(r.name)) ?? {
149
+ name,
150
+ key: `${name}-${nanoid()}`,
151
+ params: routeParamList[name]
152
+ });
153
+ const routeKeys = new Set(routes.map(route => route.key));
154
+ const currentRoute = state.routes[state.index];
155
+ if (currentRoute == null) {
156
+ throw new Error(`Couldn't find a route at index ${state.index}.`);
157
+ }
158
+ const history = state.history.filter(
159
+ // Type will always be 'route' for tabs, but could be different in a router extending this (e.g. drawer)
160
+ item => item.type !== 'route' || routeKeys.has(item.key));
161
+ let index = routeNames.indexOf(currentRoute.name);
162
+ if (index === -1) {
163
+ // The focused route was removed, so focus the most recently visited surviving route
164
+ const previousRouteItem = history.findLast(item => item.type === 'route');
165
+ index = Math.max(0, routes.findIndex(route => route.key === previousRouteItem?.key));
166
+ }
167
+ return {
168
+ ...state,
169
+ routeNames,
170
+ routes,
171
+ ...changeIndex({
172
+ routes,
173
+ history
174
+ }, index, backBehavior, initialRouteName),
175
+ preloadedRouteKeys: state.preloadedRouteKeys.filter(key => routeKeys.has(key))
176
+ };
177
+ },
178
+ getStateForRouteFocus(state, key) {
179
+ const index = state.routes.findIndex(r => r.key === key);
180
+ if (index === -1 || index === state.index) {
181
+ return state;
182
+ }
183
+ return {
184
+ ...state,
185
+ ...changeIndex(state, index, backBehavior, initialRouteName)
186
+ };
187
+ },
188
+ getStateForAction(state, action, {
189
+ routeParamList,
190
+ routeGetIdList
191
+ }) {
192
+ switch (action.type) {
193
+ case 'JUMP_TO':
194
+ case 'NAVIGATE':
195
+ case 'NAVIGATE_DEPRECATED':
196
+ {
197
+ const index = state.routes.findIndex(route => route.name === action.payload.name);
198
+ if (index === -1) {
199
+ return null;
200
+ }
201
+ const route = state.routes[index];
202
+ if (route == null) {
203
+ throw new Error(`Couldn't find a route at index ${index}.`);
204
+ }
205
+ const getId = routeGetIdList[route.name];
206
+ const currentId = getId?.({
207
+ params: route.params
208
+ });
209
+ const nextId = getId?.({
210
+ params: action.payload.params
211
+ });
212
+ const key = currentId === nextId ? route.key : `${route.name}-${nanoid()}`;
213
+ let params;
214
+ if ((action.type === 'NAVIGATE' || action.type === 'NAVIGATE_DEPRECATED') && action.payload.merge && currentId === nextId) {
215
+ params = action.payload.params !== undefined || routeParamList[route.name] !== undefined ? {
216
+ ...routeParamList[route.name],
217
+ ...route.params,
218
+ ...action.payload.params
219
+ } : route.params;
220
+ } else {
221
+ params = createParamsFromAction({
222
+ action,
223
+ routeParamList
224
+ });
225
+ }
226
+ const path = action.type === 'NAVIGATE' && action.payload.path != null ? action.payload.path : route.path;
227
+ const nextRoute = params !== route.params || path !== route.path || key !== route.key ? {
228
+ ...route,
229
+ key,
230
+ path,
231
+ params
232
+ } : route;
233
+ const routes = state.routes.map((item, routeIndex) => routeIndex === index ? nextRoute : item);
234
+ const updatedState = {
235
+ ...state,
236
+ routes,
237
+ history: key === route.key ? state.history : state.history.filter(it => it.type !== 'route' || it.key !== route.key)
238
+ };
239
+ return {
240
+ ...updatedState,
241
+ ...changeIndex(updatedState, index, backBehavior, initialRouteName),
242
+ preloadedRouteKeys: updatedState.preloadedRouteKeys.filter(key => key !== route.key && key !== nextRoute.key)
243
+ };
244
+ }
245
+ case 'SET_PARAMS':
246
+ case 'REPLACE_PARAMS':
247
+ {
248
+ const nextState = BaseRouter.getStateForAction(state, action);
249
+ if (nextState !== null) {
250
+ const index = nextState.index;
251
+ if (index != null) {
252
+ const focusedRoute = nextState.routes[index];
253
+ const historyItemIndex = state.history.findLastIndex(item => item.type === 'route' && item.key === focusedRoute.key);
254
+ let updatedHistory = state.history;
255
+ if (historyItemIndex !== -1) {
256
+ updatedHistory = [...state.history];
257
+ const item = updatedHistory[historyItemIndex];
258
+ if (item.type === 'route') {
259
+ updatedHistory[historyItemIndex] = {
260
+ ...item,
261
+ params: focusedRoute.params
262
+ };
263
+ }
264
+ }
265
+ return {
266
+ ...nextState,
267
+ history: updatedHistory
268
+ };
269
+ }
270
+ }
271
+ return nextState;
272
+ }
273
+ case 'GO_BACK':
274
+ {
275
+ if (state.history.length === 1) {
276
+ return null;
277
+ }
278
+ const previousHistoryItem = state.history[state.history.length - 2];
279
+ if (previousHistoryItem?.type !== 'route') {
280
+ return null;
281
+ }
282
+ const previousKey = previousHistoryItem.key;
283
+ const index = state.routes.findLastIndex(route => route.key === previousKey);
284
+ if (index === -1) {
285
+ return null;
286
+ }
287
+ let routes = state.routes;
288
+ if (backBehavior === 'fullHistory' && routes[index].params !== previousHistoryItem.params) {
289
+ routes = [...state.routes];
290
+ routes[index] = {
291
+ ...routes[index],
292
+ params: previousHistoryItem.params
293
+ };
294
+ }
295
+ return {
296
+ ...state,
297
+ routes,
298
+ preloadedRouteKeys: state.preloadedRouteKeys.filter(key => key !== state.routes[index].key),
299
+ history: state.history.slice(0, -1),
300
+ index
301
+ };
302
+ }
303
+ case 'PRELOAD':
304
+ {
305
+ const routeIndex = state.routes.findIndex(route => route.name === action.payload.name);
306
+ if (routeIndex === -1) {
307
+ return null;
308
+ }
309
+ const route = state.routes[routeIndex];
310
+ const getId = routeGetIdList[route.name];
311
+ const currentId = getId?.({
312
+ params: route.params
313
+ });
314
+ const nextId = getId?.({
315
+ params: action.payload.params
316
+ });
317
+ const key = currentId === nextId ? route.key : `${route.name}-${nanoid()}`;
318
+ const params = createParamsFromAction({
319
+ action,
320
+ routeParamList
321
+ });
322
+ const newRoute = params !== route.params ? {
323
+ ...route,
324
+ key,
325
+ params
326
+ } : route;
327
+ let history = state.history;
328
+ if (key !== route.key) {
329
+ history = history.filter(record => record.type !== 'route' || record.key !== route.key);
330
+ if (routeIndex === state.index) {
331
+ history = history.concat({
332
+ type: TYPE_ROUTE,
333
+ key: newRoute.key,
334
+ params: backBehavior === 'fullHistory' ? newRoute.params : undefined
335
+ });
336
+ }
337
+ }
338
+ return {
339
+ ...state,
340
+ preloadedRouteKeys: state.preloadedRouteKeys.filter(key => key !== route.key).concat(newRoute.key),
341
+ routes: state.routes.map((route, index) => index === routeIndex ? newRoute : route),
342
+ history
343
+ };
344
+ }
345
+ default:
346
+ return BaseRouter.getStateForAction(state, action);
347
+ }
348
+ }
349
+ };
350
+ return router;
351
+ }
352
+ //# sourceMappingURL=SwitchRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["nanoid","BaseRouter","createParamsFromAction","TYPE_ROUTE","getRouteHistory","routes","index","backBehavior","initialRouteName","history","type","key","params","undefined","initialRouteIndex","i","unshift","findIndex","route","name","changeIndex","state","currentRoute","filter","it","lastHistoryRouteItemIndex","findLastIndex","item","lastHistoryRouteItem","slice","concat","SwitchRouter","router","getInitialState","routeNames","routeParamList","includes","indexOf","map","stale","preloadedRouteKeys","getRehydratedState","find","r","Math","min","max","length","routeKeys","push","stateData","getStateForRouteNamesChange","routeKeyChanges","Set","Error","has","previousRouteItem","findLast","getStateForRouteFocus","getStateForAction","action","routeGetIdList","payload","getId","currentId","nextId","merge","path","nextRoute","routeIndex","updatedState","nextState","focusedRoute","historyItemIndex","updatedHistory","previousHistoryItem","previousKey","newRoute","record"],"sourceRoot":"../../src","sources":["SwitchRouter.tsx"],"mappings":"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","ignoreList":[]}