@react-navigation/routers 6.1.3 → 6.1.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.
Files changed (40) hide show
  1. package/lib/commonjs/BaseRouter.js +10 -17
  2. package/lib/commonjs/BaseRouter.js.map +1 -1
  3. package/lib/commonjs/CommonActions.js +0 -6
  4. package/lib/commonjs/CommonActions.js.map +1 -1
  5. package/lib/commonjs/DrawerRouter.js +12 -45
  6. package/lib/commonjs/DrawerRouter.js.map +1 -1
  7. package/lib/commonjs/StackRouter.js +40 -73
  8. package/lib/commonjs/StackRouter.js.map +1 -1
  9. package/lib/commonjs/TabRouter.js +25 -59
  10. package/lib/commonjs/TabRouter.js.map +1 -1
  11. package/lib/commonjs/index.js +0 -11
  12. package/lib/commonjs/index.js.map +1 -1
  13. package/lib/commonjs/types.js.map +1 -1
  14. package/lib/module/BaseRouter.js +10 -16
  15. package/lib/module/BaseRouter.js.map +1 -1
  16. package/lib/module/CommonActions.js +0 -2
  17. package/lib/module/CommonActions.js.map +1 -1
  18. package/lib/module/DrawerRouter.js +12 -39
  19. package/lib/module/DrawerRouter.js.map +1 -1
  20. package/lib/module/StackRouter.js +40 -68
  21. package/lib/module/StackRouter.js.map +1 -1
  22. package/lib/module/TabRouter.js +25 -55
  23. package/lib/module/TabRouter.js.map +1 -1
  24. package/lib/module/index.js.map +1 -1
  25. package/lib/module/types.js.map +1 -1
  26. package/lib/typescript/src/BaseRouter.d.ts +1 -0
  27. package/lib/typescript/src/BaseRouter.d.ts.map +1 -0
  28. package/lib/typescript/src/CommonActions.d.ts +1 -0
  29. package/lib/typescript/src/CommonActions.d.ts.map +1 -0
  30. package/lib/typescript/src/DrawerRouter.d.ts +1 -0
  31. package/lib/typescript/src/DrawerRouter.d.ts.map +1 -0
  32. package/lib/typescript/src/StackRouter.d.ts +1 -0
  33. package/lib/typescript/src/StackRouter.d.ts.map +1 -0
  34. package/lib/typescript/src/TabRouter.d.ts +1 -0
  35. package/lib/typescript/src/TabRouter.d.ts.map +1 -0
  36. package/lib/typescript/src/index.d.ts +1 -0
  37. package/lib/typescript/src/index.d.ts.map +1 -0
  38. package/lib/typescript/src/types.d.ts +1 -0
  39. package/lib/typescript/src/types.d.ts.map +1 -0
  40. package/package.json +3 -3
@@ -1,25 +1,22 @@
1
1
  import { nanoid } from 'nanoid/non-secure';
2
2
  import TabRouter, { TabActions } from './TabRouter';
3
- export const DrawerActions = { ...TabActions,
4
-
3
+ export const DrawerActions = {
4
+ ...TabActions,
5
5
  openDrawer() {
6
6
  return {
7
7
  type: 'OPEN_DRAWER'
8
8
  };
9
9
  },
10
-
11
10
  closeDrawer() {
12
11
  return {
13
12
  type: 'CLOSE_DRAWER'
14
13
  };
15
14
  },
16
-
17
15
  toggleDrawer() {
18
16
  return {
19
17
  type: 'TOGGLE_DRAWER'
20
18
  };
21
19
  }
22
-
23
20
  };
24
21
  export default function DrawerRouter(_ref) {
25
22
  let {
@@ -27,55 +24,46 @@ export default function DrawerRouter(_ref) {
27
24
  ...rest
28
25
  } = _ref;
29
26
  const router = TabRouter(rest);
30
-
31
27
  const isDrawerInHistory = state => {
32
28
  var _state$history;
33
-
34
29
  return Boolean((_state$history = state.history) === null || _state$history === void 0 ? void 0 : _state$history.some(it => it.type === 'drawer'));
35
30
  };
36
-
37
31
  const addDrawerToHistory = state => {
38
32
  if (isDrawerInHistory(state)) {
39
33
  return state;
40
34
  }
41
-
42
- return { ...state,
35
+ return {
36
+ ...state,
43
37
  history: [...state.history, {
44
38
  type: 'drawer',
45
39
  status: defaultStatus === 'open' ? 'closed' : 'open'
46
40
  }]
47
41
  };
48
42
  };
49
-
50
43
  const removeDrawerFromHistory = state => {
51
44
  if (!isDrawerInHistory(state)) {
52
45
  return state;
53
46
  }
54
-
55
- return { ...state,
47
+ return {
48
+ ...state,
56
49
  history: state.history.filter(it => it.type !== 'drawer')
57
50
  };
58
51
  };
59
-
60
52
  const openDrawer = state => {
61
53
  if (defaultStatus === 'open') {
62
54
  return removeDrawerFromHistory(state);
63
55
  }
64
-
65
56
  return addDrawerToHistory(state);
66
57
  };
67
-
68
58
  const closeDrawer = state => {
69
59
  if (defaultStatus === 'open') {
70
60
  return addDrawerToHistory(state);
71
61
  }
72
-
73
62
  return removeDrawerFromHistory(state);
74
63
  };
75
-
76
- return { ...router,
64
+ return {
65
+ ...router,
77
66
  type: 'drawer',
78
-
79
67
  getInitialState(_ref2) {
80
68
  let {
81
69
  routeNames,
@@ -87,88 +75,73 @@ export default function DrawerRouter(_ref) {
87
75
  routeParamList,
88
76
  routeGetIdList
89
77
  });
90
- return { ...state,
78
+ return {
79
+ ...state,
91
80
  default: defaultStatus,
92
81
  stale: false,
93
82
  type: 'drawer',
94
83
  key: `drawer-${nanoid()}`
95
84
  };
96
85
  },
97
-
98
86
  getRehydratedState(partialState, _ref3) {
99
87
  let {
100
88
  routeNames,
101
89
  routeParamList,
102
90
  routeGetIdList
103
91
  } = _ref3;
104
-
105
92
  if (partialState.stale === false) {
106
93
  return partialState;
107
94
  }
108
-
109
95
  let state = router.getRehydratedState(partialState, {
110
96
  routeNames,
111
97
  routeParamList,
112
98
  routeGetIdList
113
99
  });
114
-
115
100
  if (isDrawerInHistory(partialState)) {
116
101
  // Re-sync the drawer entry in history to correct it if it was wrong
117
102
  state = removeDrawerFromHistory(state);
118
103
  state = addDrawerToHistory(state);
119
104
  }
120
-
121
- return { ...state,
105
+ return {
106
+ ...state,
122
107
  default: defaultStatus,
123
108
  type: 'drawer',
124
109
  key: `drawer-${nanoid()}`
125
110
  };
126
111
  },
127
-
128
112
  getStateForRouteFocus(state, key) {
129
113
  const result = router.getStateForRouteFocus(state, key);
130
114
  return closeDrawer(result);
131
115
  },
132
-
133
116
  getStateForAction(state, action, options) {
134
117
  switch (action.type) {
135
118
  case 'OPEN_DRAWER':
136
119
  return openDrawer(state);
137
-
138
120
  case 'CLOSE_DRAWER':
139
121
  return closeDrawer(state);
140
-
141
122
  case 'TOGGLE_DRAWER':
142
123
  if (isDrawerInHistory(state)) {
143
124
  return removeDrawerFromHistory(state);
144
125
  }
145
-
146
126
  return addDrawerToHistory(state);
147
-
148
127
  case 'JUMP_TO':
149
128
  case 'NAVIGATE':
150
129
  {
151
130
  const result = router.getStateForAction(state, action, options);
152
-
153
131
  if (result != null && result.index !== state.index) {
154
132
  return closeDrawer(result);
155
133
  }
156
-
157
134
  return result;
158
135
  }
159
-
160
136
  case 'GO_BACK':
161
137
  if (isDrawerInHistory(state)) {
162
138
  return removeDrawerFromHistory(state);
163
139
  }
164
-
165
140
  return router.getStateForAction(state, action, options);
166
-
167
141
  default:
168
142
  return router.getStateForAction(state, action, options);
169
143
  }
170
144
  },
171
-
172
145
  actionCreators: DrawerActions
173
146
  };
174
147
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["DrawerRouter.tsx"],"names":["nanoid","TabRouter","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"],"mappings":"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","sourcesContent":["import { nanoid } from 'nanoid/non-secure';\n\nimport TabRouter, {\n TabActionHelpers,\n TabActions,\n TabActionType,\n TabNavigationState,\n TabRouterOptions,\n} from './TabRouter';\nimport type {\n CommonNavigationAction,\n ParamListBase,\n PartialState,\n Router,\n} from './types';\nexport type DrawerStatus = 'open' | 'closed';\n\nexport type DrawerActionType =\n | TabActionType\n | {\n type: 'OPEN_DRAWER' | 'CLOSE_DRAWER' | 'TOGGLE_DRAWER';\n source?: string;\n target?: string;\n };\n\nexport type DrawerRouterOptions = TabRouterOptions & {\n defaultStatus?: DrawerStatus;\n};\n\nexport type DrawerNavigationState<ParamList extends ParamListBase> = Omit<\n TabNavigationState<ParamList>,\n 'type' | 'history'\n> & {\n /**\n * Type of the router, in this case, it's drawer.\n */\n type: 'drawer';\n /**\n * Default status of the drawer.\n */\n default: DrawerStatus;\n /**\n * List of previously visited route keys and drawer open status.\n */\n history: (\n | { type: 'route'; key: string }\n | { type: 'drawer'; status: DrawerStatus }\n )[];\n};\n\nexport type DrawerActionHelpers<ParamList extends ParamListBase> =\n TabActionHelpers<ParamList> & {\n /**\n * Open the drawer sidebar.\n */\n openDrawer(): void;\n\n /**\n * Close the drawer sidebar.\n */\n closeDrawer(): void;\n\n /**\n * Open the drawer sidebar if closed, or close if opened.\n */\n toggleDrawer(): void;\n };\n\nexport const DrawerActions = {\n ...TabActions,\n openDrawer(): DrawerActionType {\n return { type: 'OPEN_DRAWER' };\n },\n closeDrawer(): DrawerActionType {\n return { type: 'CLOSE_DRAWER' };\n },\n toggleDrawer(): DrawerActionType {\n return { type: 'TOGGLE_DRAWER' };\n },\n};\n\nexport default function DrawerRouter({\n defaultStatus = 'closed',\n ...rest\n}: DrawerRouterOptions): Router<\n DrawerNavigationState<ParamListBase>,\n DrawerActionType | CommonNavigationAction\n> {\n const router = TabRouter(rest) as unknown as Router<\n DrawerNavigationState<ParamListBase>,\n TabActionType | CommonNavigationAction\n >;\n\n const isDrawerInHistory = (\n state:\n | DrawerNavigationState<ParamListBase>\n | PartialState<DrawerNavigationState<ParamListBase>>\n ) => Boolean(state.history?.some((it) => it.type === 'drawer'));\n\n const addDrawerToHistory = (\n state: DrawerNavigationState<ParamListBase>\n ): DrawerNavigationState<ParamListBase> => {\n if (isDrawerInHistory(state)) {\n return state;\n }\n\n return {\n ...state,\n history: [\n ...state.history,\n {\n type: 'drawer',\n status: defaultStatus === 'open' ? 'closed' : 'open',\n },\n ],\n };\n };\n\n const removeDrawerFromHistory = (\n state: DrawerNavigationState<ParamListBase>\n ): DrawerNavigationState<ParamListBase> => {\n if (!isDrawerInHistory(state)) {\n return state;\n }\n\n return {\n ...state,\n history: state.history.filter((it) => it.type !== 'drawer'),\n };\n };\n\n const openDrawer = (\n state: DrawerNavigationState<ParamListBase>\n ): DrawerNavigationState<ParamListBase> => {\n if (defaultStatus === 'open') {\n return removeDrawerFromHistory(state);\n }\n\n return addDrawerToHistory(state);\n };\n\n const closeDrawer = (\n state: DrawerNavigationState<ParamListBase>\n ): DrawerNavigationState<ParamListBase> => {\n if (defaultStatus === 'open') {\n return addDrawerToHistory(state);\n }\n\n return removeDrawerFromHistory(state);\n };\n\n return {\n ...router,\n\n type: 'drawer',\n\n getInitialState({ routeNames, routeParamList, routeGetIdList }) {\n const state = router.getInitialState({\n routeNames,\n routeParamList,\n routeGetIdList,\n });\n\n return {\n ...state,\n default: defaultStatus,\n stale: false,\n type: 'drawer',\n key: `drawer-${nanoid()}`,\n };\n },\n\n getRehydratedState(\n partialState,\n { routeNames, routeParamList, routeGetIdList }\n ) {\n if (partialState.stale === false) {\n return partialState;\n }\n\n let state = router.getRehydratedState(partialState, {\n routeNames,\n routeParamList,\n routeGetIdList,\n });\n\n if (isDrawerInHistory(partialState)) {\n // Re-sync the drawer entry in history to correct it if it was wrong\n state = removeDrawerFromHistory(state);\n state = addDrawerToHistory(state);\n }\n\n return {\n ...state,\n default: defaultStatus,\n type: 'drawer',\n key: `drawer-${nanoid()}`,\n };\n },\n\n getStateForRouteFocus(state, key) {\n const result = router.getStateForRouteFocus(state, key);\n\n return closeDrawer(result);\n },\n\n getStateForAction(state, action, options) {\n switch (action.type) {\n case 'OPEN_DRAWER':\n return openDrawer(state);\n\n case 'CLOSE_DRAWER':\n return closeDrawer(state);\n\n case 'TOGGLE_DRAWER':\n if (isDrawerInHistory(state)) {\n return removeDrawerFromHistory(state);\n }\n\n return addDrawerToHistory(state);\n\n case 'JUMP_TO':\n case 'NAVIGATE': {\n const result = router.getStateForAction(state, action, options);\n\n if (result != null && result.index !== state.index) {\n return closeDrawer(result as DrawerNavigationState<ParamListBase>);\n }\n\n return result;\n }\n\n case 'GO_BACK':\n if (isDrawerInHistory(state)) {\n return removeDrawerFromHistory(state);\n }\n\n return router.getStateForAction(state, action, options);\n\n default:\n return router.getStateForAction(state, action, options);\n }\n },\n\n actionCreators: DrawerActions,\n };\n}\n"]}
1
+ {"version":3,"names":["nanoid","TabRouter","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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"}
@@ -10,7 +10,6 @@ export const StackActions = {
10
10
  }
11
11
  };
12
12
  },
13
-
14
13
  push(name, params) {
15
14
  return {
16
15
  type: 'PUSH',
@@ -20,7 +19,6 @@ export const StackActions = {
20
19
  }
21
20
  };
22
21
  },
23
-
24
22
  pop() {
25
23
  let count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
26
24
  return {
@@ -30,18 +28,16 @@ export const StackActions = {
30
28
  }
31
29
  };
32
30
  },
33
-
34
31
  popToTop() {
35
32
  return {
36
33
  type: 'POP_TO_TOP'
37
34
  };
38
35
  }
39
-
40
36
  };
41
37
  export default function StackRouter(options) {
42
- const router = { ...BaseRouter,
38
+ const router = {
39
+ ...BaseRouter,
43
40
  type: 'stack',
44
-
45
41
  getInitialState(_ref) {
46
42
  let {
47
43
  routeNames,
@@ -61,25 +57,23 @@ export default function StackRouter(options) {
61
57
  }]
62
58
  };
63
59
  },
64
-
65
60
  getRehydratedState(partialState, _ref2) {
66
61
  let {
67
62
  routeNames,
68
63
  routeParamList
69
64
  } = _ref2;
70
65
  let state = partialState;
71
-
72
66
  if (state.stale === false) {
73
67
  return state;
74
68
  }
75
-
76
- const routes = state.routes.filter(route => routeNames.includes(route.name)).map(route => ({ ...route,
69
+ const routes = state.routes.filter(route => routeNames.includes(route.name)).map(route => ({
70
+ ...route,
77
71
  key: route.key || `${route.name}-${nanoid()}`,
78
- params: routeParamList[route.name] !== undefined ? { ...routeParamList[route.name],
72
+ params: routeParamList[route.name] !== undefined ? {
73
+ ...routeParamList[route.name],
79
74
  ...route.params
80
75
  } : route.params
81
76
  }));
82
-
83
77
  if (routes.length === 0) {
84
78
  const initialRouteName = options.initialRouteName !== undefined ? options.initialRouteName : routeNames[0];
85
79
  routes.push({
@@ -88,7 +82,6 @@ export default function StackRouter(options) {
88
82
  params: routeParamList[initialRouteName]
89
83
  });
90
84
  }
91
-
92
85
  return {
93
86
  stale: false,
94
87
  type: 'stack',
@@ -98,7 +91,6 @@ export default function StackRouter(options) {
98
91
  routes
99
92
  };
100
93
  },
101
-
102
94
  getStateForRouteNamesChange(state, _ref3) {
103
95
  let {
104
96
  routeNames,
@@ -106,7 +98,6 @@ export default function StackRouter(options) {
106
98
  routeKeyChanges
107
99
  } = _ref3;
108
100
  const routes = state.routes.filter(route => routeNames.includes(route.name) && !routeKeyChanges.includes(route.name));
109
-
110
101
  if (routes.length === 0) {
111
102
  const initialRouteName = options.initialRouteName !== undefined && routeNames.includes(options.initialRouteName) ? options.initialRouteName : routeNames[0];
112
103
  routes.push({
@@ -115,62 +106,55 @@ export default function StackRouter(options) {
115
106
  params: routeParamList[initialRouteName]
116
107
  });
117
108
  }
118
-
119
- return { ...state,
109
+ return {
110
+ ...state,
120
111
  routeNames,
121
112
  routes,
122
113
  index: Math.min(state.index, routes.length - 1)
123
114
  };
124
115
  },
125
-
126
116
  getStateForRouteFocus(state, key) {
127
117
  const index = state.routes.findIndex(r => r.key === key);
128
-
129
118
  if (index === -1 || index === state.index) {
130
119
  return state;
131
120
  }
132
-
133
- return { ...state,
121
+ return {
122
+ ...state,
134
123
  index,
135
124
  routes: state.routes.slice(0, index + 1)
136
125
  };
137
126
  },
138
-
139
127
  getStateForAction(state, action, options) {
140
128
  const {
141
129
  routeParamList
142
130
  } = options;
143
-
144
131
  switch (action.type) {
145
132
  case 'REPLACE':
146
133
  {
147
134
  const index = action.target === state.key && action.source ? state.routes.findIndex(r => r.key === action.source) : state.index;
148
-
149
135
  if (index === -1) {
150
136
  return null;
151
137
  }
152
-
153
138
  const {
154
139
  name,
155
140
  key,
156
141
  params
157
142
  } = action.payload;
158
-
159
143
  if (!state.routeNames.includes(name)) {
160
144
  return null;
161
145
  }
162
-
163
- return { ...state,
146
+ return {
147
+ ...state,
164
148
  routes: state.routes.map((route, i) => i === index ? {
165
149
  key: key !== undefined ? key : `${name}-${nanoid()}`,
166
150
  name,
167
- params: routeParamList[name] !== undefined ? { ...routeParamList[name],
151
+ params: routeParamList[name] !== undefined ? {
152
+ ...routeParamList[name],
168
153
  ...params
169
154
  } : params
170
155
  } : route)
171
156
  };
172
157
  }
173
-
174
158
  case 'PUSH':
175
159
  if (state.routeNames.includes(action.payload.name)) {
176
160
  const getId = options.routeGetIdList[action.payload.name];
@@ -181,11 +165,12 @@ export default function StackRouter(options) {
181
165
  params: route.params
182
166
  }))) : undefined;
183
167
  let routes;
184
-
185
168
  if (route) {
186
169
  routes = state.routes.filter(r => r.key !== route.key);
187
- routes.push({ ...route,
188
- params: routeParamList[action.payload.name] !== undefined ? { ...routeParamList[action.payload.name],
170
+ routes.push({
171
+ ...route,
172
+ params: routeParamList[action.payload.name] !== undefined ? {
173
+ ...routeParamList[action.payload.name],
189
174
  ...action.payload.params
190
175
  } : action.payload.params
191
176
  });
@@ -193,36 +178,33 @@ export default function StackRouter(options) {
193
178
  routes = [...state.routes, {
194
179
  key: `${action.payload.name}-${nanoid()}`,
195
180
  name: action.payload.name,
196
- params: routeParamList[action.payload.name] !== undefined ? { ...routeParamList[action.payload.name],
181
+ params: routeParamList[action.payload.name] !== undefined ? {
182
+ ...routeParamList[action.payload.name],
197
183
  ...action.payload.params
198
184
  } : action.payload.params
199
185
  }];
200
186
  }
201
-
202
- return { ...state,
187
+ return {
188
+ ...state,
203
189
  index: routes.length - 1,
204
190
  routes
205
191
  };
206
192
  }
207
-
208
193
  return null;
209
-
210
194
  case 'POP':
211
195
  {
212
196
  const index = action.target === state.key && action.source ? state.routes.findIndex(r => r.key === action.source) : state.index;
213
-
214
197
  if (index > 0) {
215
198
  const count = Math.max(index - action.payload.count + 1, 1);
216
199
  const routes = state.routes.slice(0, count).concat(state.routes.slice(index + 1));
217
- return { ...state,
200
+ return {
201
+ ...state,
218
202
  index: routes.length - 1,
219
203
  routes
220
204
  };
221
205
  }
222
-
223
206
  return null;
224
207
  }
225
-
226
208
  case 'POP_TO_TOP':
227
209
  return router.getStateForAction(state, {
228
210
  type: 'POP',
@@ -230,23 +212,19 @@ export default function StackRouter(options) {
230
212
  count: state.routes.length - 1
231
213
  }
232
214
  }, options);
233
-
234
215
  case 'NAVIGATE':
235
216
  if (action.payload.name !== undefined && !state.routeNames.includes(action.payload.name)) {
236
217
  return null;
237
218
  }
238
-
239
219
  if (action.payload.key || action.payload.name) {
240
- var _action$payload$path;
241
-
242
220
  // If the route already exists, navigate to that
243
221
  let index = -1;
244
- const getId = // `getId` and `key` can't be used together
222
+ const getId =
223
+ // `getId` and `key` can't be used together
245
224
  action.payload.key === undefined && action.payload.name !== undefined ? options.routeGetIdList[action.payload.name] : undefined;
246
225
  const id = getId === null || getId === void 0 ? void 0 : getId({
247
226
  params: action.payload.params
248
227
  });
249
-
250
228
  if (id) {
251
229
  index = state.routes.findIndex(route => route.name === action.payload.name && id === (getId === null || getId === void 0 ? void 0 : getId({
252
230
  params: route.params
@@ -261,53 +239,50 @@ export default function StackRouter(options) {
261
239
  }
262
240
  }
263
241
  }
264
-
265
242
  if (index === -1 && action.payload.key && action.payload.name === undefined) {
266
243
  return null;
267
244
  }
268
-
269
245
  if (index === -1 && action.payload.name !== undefined) {
270
- var _action$payload$key;
271
-
272
246
  const routes = [...state.routes, {
273
- key: (_action$payload$key = action.payload.key) !== null && _action$payload$key !== void 0 ? _action$payload$key : `${action.payload.name}-${nanoid()}`,
247
+ key: action.payload.key ?? `${action.payload.name}-${nanoid()}`,
274
248
  name: action.payload.name,
275
249
  path: action.payload.path,
276
- params: routeParamList[action.payload.name] !== undefined ? { ...routeParamList[action.payload.name],
250
+ params: routeParamList[action.payload.name] !== undefined ? {
251
+ ...routeParamList[action.payload.name],
277
252
  ...action.payload.params
278
253
  } : action.payload.params
279
254
  }];
280
- return { ...state,
255
+ return {
256
+ ...state,
281
257
  routes,
282
258
  index: routes.length - 1
283
259
  };
284
260
  }
285
-
286
261
  const route = state.routes[index];
287
262
  let params;
288
-
289
263
  if (action.payload.merge) {
290
- params = action.payload.params !== undefined || routeParamList[route.name] !== undefined ? { ...routeParamList[route.name],
264
+ params = action.payload.params !== undefined || routeParamList[route.name] !== undefined ? {
265
+ ...routeParamList[route.name],
291
266
  ...route.params,
292
267
  ...action.payload.params
293
268
  } : route.params;
294
269
  } else {
295
- params = routeParamList[route.name] !== undefined ? { ...routeParamList[route.name],
270
+ params = routeParamList[route.name] !== undefined ? {
271
+ ...routeParamList[route.name],
296
272
  ...action.payload.params
297
273
  } : action.payload.params;
298
274
  }
299
-
300
- return { ...state,
275
+ return {
276
+ ...state,
301
277
  index,
302
- routes: [...state.routes.slice(0, index), params !== route.params || action.payload.path && action.payload.path !== route.path ? { ...route,
303
- path: (_action$payload$path = action.payload.path) !== null && _action$payload$path !== void 0 ? _action$payload$path : route.path,
278
+ routes: [...state.routes.slice(0, index), params !== route.params || action.payload.path && action.payload.path !== route.path ? {
279
+ ...route,
280
+ path: action.payload.path ?? route.path,
304
281
  params
305
282
  } : state.routes[index]]
306
283
  };
307
284
  }
308
-
309
285
  return null;
310
-
311
286
  case 'GO_BACK':
312
287
  if (state.index > 0) {
313
288
  return router.getStateForAction(state, {
@@ -319,14 +294,11 @@ export default function StackRouter(options) {
319
294
  source: action.source
320
295
  }, options);
321
296
  }
322
-
323
297
  return null;
324
-
325
298
  default:
326
299
  return BaseRouter.getStateForAction(state, action);
327
300
  }
328
301
  },
329
-
330
302
  actionCreators: StackActions
331
303
  };
332
304
  return router;
@@ -1 +1 @@
1
- {"version":3,"sources":["StackRouter.tsx"],"names":["nanoid","BaseRouter","StackActions","replace","name","params","type","payload","push","pop","count","popToTop","StackRouter","options","router","getInitialState","routeNames","routeParamList","initialRouteName","undefined","includes","stale","key","index","routes","getRehydratedState","partialState","state","filter","route","map","length","getStateForRouteNamesChange","routeKeyChanges","Math","min","getStateForRouteFocus","findIndex","r","slice","getStateForAction","action","target","source","i","getId","routeGetIdList","id","find","max","concat","path","merge","actionCreators"],"mappings":"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","sourcesContent":["import { nanoid } from 'nanoid/non-secure';\n\nimport BaseRouter from './BaseRouter';\nimport type {\n CommonNavigationAction,\n DefaultRouterOptions,\n NavigationState,\n ParamListBase,\n Route,\n Router,\n} from './types';\n\nexport type StackActionType =\n | {\n type: 'REPLACE';\n payload: { name: string; key?: string | undefined; params?: object };\n source?: string;\n target?: string;\n }\n | {\n type: 'PUSH';\n payload: { name: string; params?: object };\n source?: string;\n target?: string;\n }\n | {\n type: 'POP';\n payload: { count: number };\n source?: string;\n target?: string;\n }\n | {\n type: 'POP_TO_TOP';\n source?: string;\n target?: string;\n };\n\nexport type StackRouterOptions = DefaultRouterOptions;\n\nexport type StackNavigationState<ParamList extends ParamListBase> =\n NavigationState<ParamList> & {\n /**\n * Type of the router, in this case, it's stack.\n */\n type: 'stack';\n };\n\nexport type StackActionHelpers<ParamList extends ParamListBase> = {\n /**\n * Replace the current route with a new one.\n *\n * @param name Route name of the new route.\n * @param [params] Params object for the new route.\n */\n replace<RouteName extends keyof ParamList>(\n ...args: undefined extends ParamList[RouteName]\n ? [screen: RouteName] | [screen: RouteName, params: ParamList[RouteName]]\n : [screen: RouteName, params: ParamList[RouteName]]\n ): void;\n\n /**\n * Push a new screen onto the stack.\n *\n * @param name Name of the route for the tab.\n * @param [params] Params object for the route.\n */\n push<RouteName extends keyof ParamList>(\n ...args: undefined extends ParamList[RouteName]\n ? [screen: RouteName] | [screen: RouteName, params: ParamList[RouteName]]\n : [screen: RouteName, params: ParamList[RouteName]]\n ): void;\n\n /**\n * Pop a screen from the stack.\n */\n pop(count?: number): void;\n\n /**\n * Pop to the first route in the stack, dismissing all other screens.\n */\n popToTop(): void;\n};\n\nexport const StackActions = {\n replace(name: string, params?: object): StackActionType {\n return { type: 'REPLACE', payload: { name, params } };\n },\n push(name: string, params?: object): StackActionType {\n return { type: 'PUSH', payload: { name, params } };\n },\n pop(count: number = 1): StackActionType {\n return { type: 'POP', payload: { count } };\n },\n popToTop(): StackActionType {\n return { type: 'POP_TO_TOP' };\n },\n};\n\nexport default function StackRouter(options: StackRouterOptions) {\n const router: Router<\n StackNavigationState<ParamListBase>,\n CommonNavigationAction | StackActionType\n > = {\n ...BaseRouter,\n\n type: 'stack',\n\n getInitialState({ routeNames, routeParamList }) {\n const initialRouteName =\n options.initialRouteName !== undefined &&\n routeNames.includes(options.initialRouteName)\n ? options.initialRouteName\n : routeNames[0];\n\n return {\n stale: false,\n type: 'stack',\n key: `stack-${nanoid()}`,\n index: 0,\n routeNames,\n routes: [\n {\n key: `${initialRouteName}-${nanoid()}`,\n name: initialRouteName,\n params: routeParamList[initialRouteName],\n },\n ],\n };\n },\n\n getRehydratedState(partialState, { routeNames, routeParamList }) {\n let state = partialState;\n\n if (state.stale === false) {\n return state;\n }\n\n const routes = state.routes\n .filter((route) => routeNames.includes(route.name))\n .map(\n (route) =>\n ({\n ...route,\n key: route.key || `${route.name}-${nanoid()}`,\n params:\n routeParamList[route.name] !== undefined\n ? {\n ...routeParamList[route.name],\n ...route.params,\n }\n : route.params,\n } as Route<string>)\n );\n\n if (routes.length === 0) {\n const initialRouteName =\n options.initialRouteName !== undefined\n ? options.initialRouteName\n : routeNames[0];\n\n routes.push({\n key: `${initialRouteName}-${nanoid()}`,\n name: initialRouteName,\n params: routeParamList[initialRouteName],\n });\n }\n\n return {\n stale: false,\n type: 'stack',\n key: `stack-${nanoid()}`,\n index: routes.length - 1,\n routeNames,\n routes,\n };\n },\n\n getStateForRouteNamesChange(\n state,\n { routeNames, routeParamList, routeKeyChanges }\n ) {\n const routes = state.routes.filter(\n (route) =>\n routeNames.includes(route.name) &&\n !routeKeyChanges.includes(route.name)\n );\n\n if (routes.length === 0) {\n const initialRouteName =\n options.initialRouteName !== undefined &&\n routeNames.includes(options.initialRouteName)\n ? options.initialRouteName\n : routeNames[0];\n\n routes.push({\n key: `${initialRouteName}-${nanoid()}`,\n name: initialRouteName,\n params: routeParamList[initialRouteName],\n });\n }\n\n return {\n ...state,\n routeNames,\n routes,\n index: Math.min(state.index, routes.length - 1),\n };\n },\n\n getStateForRouteFocus(state, key) {\n const index = state.routes.findIndex((r) => r.key === key);\n\n if (index === -1 || index === state.index) {\n return state;\n }\n\n return {\n ...state,\n index,\n routes: state.routes.slice(0, index + 1),\n };\n },\n\n getStateForAction(state, action, options) {\n const { routeParamList } = options;\n\n switch (action.type) {\n case 'REPLACE': {\n const index =\n action.target === state.key && action.source\n ? state.routes.findIndex((r) => r.key === action.source)\n : state.index;\n\n if (index === -1) {\n return null;\n }\n\n const { name, key, params } = action.payload;\n\n if (!state.routeNames.includes(name)) {\n return null;\n }\n\n return {\n ...state,\n routes: state.routes.map((route, i) =>\n i === index\n ? {\n key: key !== undefined ? key : `${name}-${nanoid()}`,\n name,\n params:\n routeParamList[name] !== undefined\n ? {\n ...routeParamList[name],\n ...params,\n }\n : params,\n }\n : route\n ),\n };\n }\n\n case 'PUSH':\n if (state.routeNames.includes(action.payload.name)) {\n const getId = options.routeGetIdList[action.payload.name];\n const id = getId?.({ params: action.payload.params });\n\n const route = id\n ? state.routes.find(\n (route) =>\n route.name === action.payload.name &&\n id === getId?.({ params: route.params })\n )\n : undefined;\n\n let routes: Route<string>[];\n\n if (route) {\n routes = state.routes.filter((r) => r.key !== route.key);\n routes.push({\n ...route,\n params:\n routeParamList[action.payload.name] !== undefined\n ? {\n ...routeParamList[action.payload.name],\n ...action.payload.params,\n }\n : action.payload.params,\n });\n } else {\n routes = [\n ...state.routes,\n {\n key: `${action.payload.name}-${nanoid()}`,\n name: action.payload.name,\n params:\n routeParamList[action.payload.name] !== undefined\n ? {\n ...routeParamList[action.payload.name],\n ...action.payload.params,\n }\n : action.payload.params,\n },\n ];\n }\n\n return {\n ...state,\n index: routes.length - 1,\n routes,\n };\n }\n\n return null;\n\n case 'POP': {\n const index =\n action.target === state.key && action.source\n ? state.routes.findIndex((r) => r.key === action.source)\n : state.index;\n\n if (index > 0) {\n const count = Math.max(index - action.payload.count + 1, 1);\n const routes = state.routes\n .slice(0, count)\n .concat(state.routes.slice(index + 1));\n\n return {\n ...state,\n index: routes.length - 1,\n routes,\n };\n }\n\n return null;\n }\n\n case 'POP_TO_TOP':\n return router.getStateForAction(\n state,\n {\n type: 'POP',\n payload: { count: state.routes.length - 1 },\n },\n options\n );\n\n case 'NAVIGATE':\n if (\n action.payload.name !== undefined &&\n !state.routeNames.includes(action.payload.name)\n ) {\n return null;\n }\n\n if (action.payload.key || action.payload.name) {\n // If the route already exists, navigate to that\n let index = -1;\n\n const getId =\n // `getId` and `key` can't be used together\n action.payload.key === undefined &&\n action.payload.name !== undefined\n ? options.routeGetIdList[action.payload.name]\n : undefined;\n const id = getId?.({ params: action.payload.params });\n\n if (id) {\n index = state.routes.findIndex(\n (route) =>\n route.name === action.payload.name &&\n id === getId?.({ params: route.params })\n );\n } else if (\n (state.routes[state.index].name === action.payload.name &&\n action.payload.key === undefined) ||\n state.routes[state.index].key === action.payload.key\n ) {\n index = state.index;\n } else {\n for (let i = state.routes.length - 1; i >= 0; i--) {\n if (\n (state.routes[i].name === action.payload.name &&\n action.payload.key === undefined) ||\n state.routes[i].key === action.payload.key\n ) {\n index = i;\n break;\n }\n }\n }\n\n if (\n index === -1 &&\n action.payload.key &&\n action.payload.name === undefined\n ) {\n return null;\n }\n\n if (index === -1 && action.payload.name !== undefined) {\n const routes = [\n ...state.routes,\n {\n key:\n action.payload.key ?? `${action.payload.name}-${nanoid()}`,\n name: action.payload.name,\n path: action.payload.path,\n params:\n routeParamList[action.payload.name] !== undefined\n ? {\n ...routeParamList[action.payload.name],\n ...action.payload.params,\n }\n : action.payload.params,\n },\n ];\n\n return {\n ...state,\n routes,\n index: routes.length - 1,\n };\n }\n\n const route = state.routes[index];\n\n let params;\n\n if (action.payload.merge) {\n params =\n action.payload.params !== undefined ||\n routeParamList[route.name] !== undefined\n ? {\n ...routeParamList[route.name],\n ...route.params,\n ...action.payload.params,\n }\n : route.params;\n } else {\n params =\n routeParamList[route.name] !== undefined\n ? {\n ...routeParamList[route.name],\n ...action.payload.params,\n }\n : action.payload.params;\n }\n\n return {\n ...state,\n index,\n routes: [\n ...state.routes.slice(0, index),\n params !== route.params ||\n (action.payload.path && action.payload.path !== route.path)\n ? {\n ...route,\n path: action.payload.path ?? route.path,\n params,\n }\n : state.routes[index],\n ],\n };\n }\n\n return null;\n\n case 'GO_BACK':\n if (state.index > 0) {\n return router.getStateForAction(\n state,\n {\n type: 'POP',\n payload: { count: 1 },\n target: action.target,\n source: action.source,\n },\n options\n );\n }\n\n return null;\n\n default:\n return BaseRouter.getStateForAction(state, action);\n }\n },\n\n actionCreators: StackActions,\n };\n\n return router;\n}\n"]}
1
+ {"version":3,"names":["nanoid","BaseRouter","StackActions","replace","name","params","type","payload","push","pop","count","popToTop","StackRouter","options","router","getInitialState","routeNames","routeParamList","initialRouteName","undefined","includes","stale","key","index","routes","getRehydratedState","partialState","state","filter","route","map","length","getStateForRouteNamesChange","routeKeyChanges","Math","min","getStateForRouteFocus","findIndex","r","slice","getStateForAction","action","target","source","i","getId","routeGetIdList","id","find","max","concat","path","merge","actionCreators"],"sourceRoot":"../../src","sources":["StackRouter.tsx"],"mappings":"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"}