@react-navigation/core 7.8.4 → 7.9.0

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 (192) hide show
  1. package/lib/module/BaseNavigationContainer.js +3 -3
  2. package/lib/module/BaseNavigationContainer.js.map +1 -1
  3. package/lib/module/EnsureSingleNavigator.js +1 -1
  4. package/lib/module/EnsureSingleNavigator.js.map +1 -1
  5. package/lib/module/SceneView.js +1 -1
  6. package/lib/module/SceneView.js.map +1 -1
  7. package/lib/module/index.js.map +1 -1
  8. package/lib/module/types.js.map +1 -1
  9. package/lib/module/useDescriptors.js +1 -0
  10. package/lib/module/useDescriptors.js.map +1 -1
  11. package/lib/module/useFocusEvents.js +1 -1
  12. package/lib/module/useFocusEvents.js.map +1 -1
  13. package/lib/module/useLazyValue.js +1 -1
  14. package/lib/module/useLazyValue.js.map +1 -1
  15. package/lib/module/useNavigationBuilder.js +19 -7
  16. package/lib/module/useNavigationBuilder.js.map +1 -1
  17. package/lib/typescript/src/StaticNavigation.d.ts +4 -4
  18. package/lib/typescript/src/StaticNavigation.d.ts.map +1 -1
  19. package/lib/typescript/src/deepFreeze.d.ts.map +1 -1
  20. package/lib/typescript/src/index.d.ts +1 -1
  21. package/lib/typescript/src/index.d.ts.map +1 -1
  22. package/lib/typescript/src/types.d.ts +10 -18
  23. package/lib/typescript/src/types.d.ts.map +1 -1
  24. package/lib/typescript/src/useDescriptors.d.ts +16 -5
  25. package/lib/typescript/src/useDescriptors.d.ts.map +1 -1
  26. package/lib/typescript/src/useNavigationBuilder.d.ts +18 -3
  27. package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -1
  28. package/lib/typescript/src/useNavigationCache.d.ts +6 -1
  29. package/lib/typescript/src/useNavigationCache.d.ts.map +1 -1
  30. package/lib/typescript/src/useNavigationHelpers.d.ts +6 -1
  31. package/lib/typescript/src/useNavigationHelpers.d.ts.map +1 -1
  32. package/lib/typescript/src/useOnPreventRemove.d.ts.map +1 -1
  33. package/package.json +18 -17
  34. package/src/BaseNavigationContainer.tsx +3 -3
  35. package/src/EnsureSingleNavigator.tsx +1 -1
  36. package/src/SceneView.tsx +1 -1
  37. package/src/StaticNavigation.tsx +4 -4
  38. package/src/index.tsx +2 -0
  39. package/src/types.tsx +32 -18
  40. package/src/useDescriptors.tsx +5 -3
  41. package/src/useFocusEvents.tsx +1 -1
  42. package/src/useLazyValue.tsx +1 -1
  43. package/src/useNavigationBuilder.tsx +44 -13
  44. package/lib/commonjs/BaseNavigationContainer.js +0 -368
  45. package/lib/commonjs/BaseNavigationContainer.js.map +0 -1
  46. package/lib/commonjs/CurrentRenderContext.js +0 -15
  47. package/lib/commonjs/CurrentRenderContext.js.map +0 -1
  48. package/lib/commonjs/DeprecatedNavigationInChildContext.js +0 -14
  49. package/lib/commonjs/DeprecatedNavigationInChildContext.js.map +0 -1
  50. package/lib/commonjs/EnsureSingleNavigator.js +0 -43
  51. package/lib/commonjs/EnsureSingleNavigator.js.map +0 -1
  52. package/lib/commonjs/Group.js +0 -14
  53. package/lib/commonjs/Group.js.map +0 -1
  54. package/lib/commonjs/NavigationBuilderContext.js +0 -23
  55. package/lib/commonjs/NavigationBuilderContext.js.map +0 -1
  56. package/lib/commonjs/NavigationContainerRefContext.js +0 -14
  57. package/lib/commonjs/NavigationContainerRefContext.js.map +0 -1
  58. package/lib/commonjs/NavigationContext.js +0 -14
  59. package/lib/commonjs/NavigationContext.js.map +0 -1
  60. package/lib/commonjs/NavigationFocusedRouteStateContext.js +0 -14
  61. package/lib/commonjs/NavigationFocusedRouteStateContext.js.map +0 -1
  62. package/lib/commonjs/NavigationHelpersContext.js +0 -15
  63. package/lib/commonjs/NavigationHelpersContext.js.map +0 -1
  64. package/lib/commonjs/NavigationIndependentTree.js +0 -35
  65. package/lib/commonjs/NavigationIndependentTree.js.map +0 -1
  66. package/lib/commonjs/NavigationIndependentTreeContext.js +0 -14
  67. package/lib/commonjs/NavigationIndependentTreeContext.js.map +0 -1
  68. package/lib/commonjs/NavigationRouteContext.js +0 -14
  69. package/lib/commonjs/NavigationRouteContext.js.map +0 -1
  70. package/lib/commonjs/NavigationStateContext.js +0 -29
  71. package/lib/commonjs/NavigationStateContext.js.map +0 -1
  72. package/lib/commonjs/PreventRemoveContext.js +0 -16
  73. package/lib/commonjs/PreventRemoveContext.js.map +0 -1
  74. package/lib/commonjs/PreventRemoveProvider.js +0 -91
  75. package/lib/commonjs/PreventRemoveProvider.js.map +0 -1
  76. package/lib/commonjs/SceneView.js +0 -151
  77. package/lib/commonjs/SceneView.js.map +0 -1
  78. package/lib/commonjs/Screen.js +0 -14
  79. package/lib/commonjs/Screen.js.map +0 -1
  80. package/lib/commonjs/StaticContainer.js +0 -31
  81. package/lib/commonjs/StaticContainer.js.map +0 -1
  82. package/lib/commonjs/StaticNavigation.js +0 -258
  83. package/lib/commonjs/StaticNavigation.js.map +0 -1
  84. package/lib/commonjs/UnhandledActionContext.js +0 -11
  85. package/lib/commonjs/UnhandledActionContext.js.map +0 -1
  86. package/lib/commonjs/arrayStartsWith.js +0 -16
  87. package/lib/commonjs/arrayStartsWith.js.map +0 -1
  88. package/lib/commonjs/checkDuplicateRouteNames.js +0 -25
  89. package/lib/commonjs/checkDuplicateRouteNames.js.map +0 -1
  90. package/lib/commonjs/checkSerializable.js +0 -50
  91. package/lib/commonjs/checkSerializable.js.map +0 -1
  92. package/lib/commonjs/createNavigationContainerRef.js +0 -69
  93. package/lib/commonjs/createNavigationContainerRef.js.map +0 -1
  94. package/lib/commonjs/createNavigatorFactory.js +0 -34
  95. package/lib/commonjs/createNavigatorFactory.js.map +0 -1
  96. package/lib/commonjs/deepFreeze.js +0 -40
  97. package/lib/commonjs/deepFreeze.js.map +0 -1
  98. package/lib/commonjs/findFocusedRoute.js +0 -15
  99. package/lib/commonjs/findFocusedRoute.js.map +0 -1
  100. package/lib/commonjs/getActionFromState.js +0 -111
  101. package/lib/commonjs/getActionFromState.js.map +0 -1
  102. package/lib/commonjs/getFocusedRouteNameFromRoute.js +0 -22
  103. package/lib/commonjs/getFocusedRouteNameFromRoute.js.map +0 -1
  104. package/lib/commonjs/getPathFromState.js +0 -241
  105. package/lib/commonjs/getPathFromState.js.map +0 -1
  106. package/lib/commonjs/getPatternParts.js +0 -105
  107. package/lib/commonjs/getPatternParts.js.map +0 -1
  108. package/lib/commonjs/getStateFromPath.js +0 -521
  109. package/lib/commonjs/getStateFromPath.js.map +0 -1
  110. package/lib/commonjs/index.js +0 -295
  111. package/lib/commonjs/index.js.map +0 -1
  112. package/lib/commonjs/isArrayEqual.js +0 -20
  113. package/lib/commonjs/isArrayEqual.js.map +0 -1
  114. package/lib/commonjs/isRecordEqual.js +0 -21
  115. package/lib/commonjs/isRecordEqual.js.map +0 -1
  116. package/lib/commonjs/package.json +0 -1
  117. package/lib/commonjs/theming/ThemeContext.js +0 -12
  118. package/lib/commonjs/theming/ThemeContext.js.map +0 -1
  119. package/lib/commonjs/theming/ThemeProvider.js +0 -21
  120. package/lib/commonjs/theming/ThemeProvider.js.map +0 -1
  121. package/lib/commonjs/theming/useTheme.js +0 -18
  122. package/lib/commonjs/theming/useTheme.js.map +0 -1
  123. package/lib/commonjs/types.js +0 -9
  124. package/lib/commonjs/types.js.map +0 -1
  125. package/lib/commonjs/useChildListeners.js +0 -36
  126. package/lib/commonjs/useChildListeners.js.map +0 -1
  127. package/lib/commonjs/useComponent.js +0 -40
  128. package/lib/commonjs/useComponent.js.map +0 -1
  129. package/lib/commonjs/useCurrentRender.js +0 -25
  130. package/lib/commonjs/useCurrentRender.js.map +0 -1
  131. package/lib/commonjs/useDescriptors.js +0 -192
  132. package/lib/commonjs/useDescriptors.js.map +0 -1
  133. package/lib/commonjs/useEventEmitter.js +0 -105
  134. package/lib/commonjs/useEventEmitter.js.map +0 -1
  135. package/lib/commonjs/useFocusEffect.js +0 -80
  136. package/lib/commonjs/useFocusEffect.js.map +0 -1
  137. package/lib/commonjs/useFocusEvents.js +0 -70
  138. package/lib/commonjs/useFocusEvents.js.map +0 -1
  139. package/lib/commonjs/useFocusedListenersChildrenAdapter.js +0 -48
  140. package/lib/commonjs/useFocusedListenersChildrenAdapter.js.map +0 -1
  141. package/lib/commonjs/useIsFocused.js +0 -28
  142. package/lib/commonjs/useIsFocused.js.map +0 -1
  143. package/lib/commonjs/useIsomorphicLayoutEffect.js +0 -12
  144. package/lib/commonjs/useIsomorphicLayoutEffect.js.map +0 -1
  145. package/lib/commonjs/useIsomorphicLayoutEffect.native.js +0 -9
  146. package/lib/commonjs/useIsomorphicLayoutEffect.native.js.map +0 -1
  147. package/lib/commonjs/useKeyedChildListeners.js +0 -33
  148. package/lib/commonjs/useKeyedChildListeners.js.map +0 -1
  149. package/lib/commonjs/useLazyValue.js +0 -17
  150. package/lib/commonjs/useLazyValue.js.map +0 -1
  151. package/lib/commonjs/useNavigation.js +0 -27
  152. package/lib/commonjs/useNavigation.js.map +0 -1
  153. package/lib/commonjs/useNavigationBuilder.js +0 -495
  154. package/lib/commonjs/useNavigationBuilder.js.map +0 -1
  155. package/lib/commonjs/useNavigationCache.js +0 -162
  156. package/lib/commonjs/useNavigationCache.js.map +0 -1
  157. package/lib/commonjs/useNavigationContainerRef.js +0 -18
  158. package/lib/commonjs/useNavigationContainerRef.js.map +0 -1
  159. package/lib/commonjs/useNavigationHelpers.js +0 -88
  160. package/lib/commonjs/useNavigationHelpers.js.map +0 -1
  161. package/lib/commonjs/useNavigationIndependentTree.js +0 -14
  162. package/lib/commonjs/useNavigationIndependentTree.js.map +0 -1
  163. package/lib/commonjs/useNavigationState.js +0 -26
  164. package/lib/commonjs/useNavigationState.js.map +0 -1
  165. package/lib/commonjs/useOnAction.js +0 -106
  166. package/lib/commonjs/useOnAction.js.map +0 -1
  167. package/lib/commonjs/useOnGetState.js +0 -48
  168. package/lib/commonjs/useOnGetState.js.map +0 -1
  169. package/lib/commonjs/useOnPreventRemove.js +0 -72
  170. package/lib/commonjs/useOnPreventRemove.js.map +0 -1
  171. package/lib/commonjs/useOnRouteFocus.js +0 -36
  172. package/lib/commonjs/useOnRouteFocus.js.map +0 -1
  173. package/lib/commonjs/useOptionsGetters.js +0 -78
  174. package/lib/commonjs/useOptionsGetters.js.map +0 -1
  175. package/lib/commonjs/usePreventRemove.js +0 -48
  176. package/lib/commonjs/usePreventRemove.js.map +0 -1
  177. package/lib/commonjs/usePreventRemoveContext.js +0 -18
  178. package/lib/commonjs/usePreventRemoveContext.js.map +0 -1
  179. package/lib/commonjs/useRegisterNavigator.js +0 -32
  180. package/lib/commonjs/useRegisterNavigator.js.map +0 -1
  181. package/lib/commonjs/useRoute.js +0 -23
  182. package/lib/commonjs/useRoute.js.map +0 -1
  183. package/lib/commonjs/useRouteCache.js +0 -69
  184. package/lib/commonjs/useRouteCache.js.map +0 -1
  185. package/lib/commonjs/useScheduleUpdate.js +0 -30
  186. package/lib/commonjs/useScheduleUpdate.js.map +0 -1
  187. package/lib/commonjs/useStateForPath.js +0 -21
  188. package/lib/commonjs/useStateForPath.js.map +0 -1
  189. package/lib/commonjs/useSyncState.js +0 -87
  190. package/lib/commonjs/useSyncState.js.map +0 -1
  191. package/lib/commonjs/validatePathConfig.js +0 -56
  192. package/lib/commonjs/validatePathConfig.js.map +0 -1
@@ -1,521 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getStateFromPath = getStateFromPath;
7
- var _escapeStringRegexp = _interopRequireDefault(require("escape-string-regexp"));
8
- var queryString = _interopRequireWildcard(require("query-string"));
9
- var _arrayStartsWith = require("./arrayStartsWith.js");
10
- var _findFocusedRoute = require("./findFocusedRoute.js");
11
- var _getPatternParts = require("./getPatternParts.js");
12
- var _isArrayEqual = require("./isArrayEqual.js");
13
- var _validatePathConfig = require("./validatePathConfig.js");
14
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
15
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
- /**
18
- * Utility to parse a path string to initial state object accepted by the container.
19
- * This is useful for deep linking when we need to handle the incoming URL.
20
- *
21
- * @example
22
- * ```js
23
- * getStateFromPath(
24
- * '/chat/jane/42',
25
- * {
26
- * screens: {
27
- * Chat: {
28
- * path: 'chat/:author/:id',
29
- * parse: { id: Number }
30
- * }
31
- * }
32
- * }
33
- * )
34
- * ```
35
- * @param path Path string to parse and convert, e.g. /foo/bar?count=42.
36
- * @param options Extra options to fine-tune how to parse the path.
37
- */
38
- function getStateFromPath(path, options) {
39
- const {
40
- initialRoutes,
41
- configs
42
- } = getConfigResources(options);
43
- const screens = options?.screens;
44
- let remaining = path.replace(/\/+/g, '/') // Replace multiple slash (//) with single ones
45
- .replace(/^\//, '') // Remove extra leading slash
46
- .replace(/\?.*$/, ''); // Remove query params which we will handle later
47
-
48
- // Make sure there is a trailing slash
49
- remaining = remaining.endsWith('/') ? remaining : `${remaining}/`;
50
- const prefix = options?.path?.replace(/^\//, ''); // Remove extra leading slash
51
-
52
- if (prefix) {
53
- // Make sure there is a trailing slash
54
- const normalizedPrefix = prefix.endsWith('/') ? prefix : `${prefix}/`;
55
-
56
- // If the path doesn't start with the prefix, it's not a match
57
- if (!remaining.startsWith(normalizedPrefix)) {
58
- return undefined;
59
- }
60
-
61
- // Remove the prefix from the path
62
- remaining = remaining.replace(normalizedPrefix, '');
63
- }
64
- if (screens === undefined) {
65
- // When no config is specified, use the path segments as route names
66
- const routes = remaining.split('/').filter(Boolean).map(segment => {
67
- const name = decodeURIComponent(segment);
68
- return {
69
- name
70
- };
71
- });
72
- if (routes.length) {
73
- return createNestedStateObject(path, routes, initialRoutes);
74
- }
75
- return undefined;
76
- }
77
- if (remaining === '/') {
78
- // We need to add special handling of empty path so navigation to empty path also works
79
- // When handling empty path, we should only look at the root level config
80
- const match = configs.find(config => config.segments.join('/') === '');
81
- if (match) {
82
- return createNestedStateObject(path, match.routeNames.map(name => ({
83
- name
84
- })), initialRoutes, configs);
85
- }
86
- return undefined;
87
- }
88
- let result;
89
- let current;
90
-
91
- // We match the whole path against the regex instead of segments
92
- // This makes sure matches such as wildcard will catch any unmatched routes, even if nested
93
- const {
94
- routes,
95
- remainingPath
96
- } = matchAgainstConfigs(remaining, configs);
97
- if (routes !== undefined) {
98
- // This will always be empty if full path matched
99
- current = createNestedStateObject(path, routes, initialRoutes, configs);
100
- remaining = remainingPath;
101
- result = current;
102
- }
103
- if (current == null || result == null) {
104
- return undefined;
105
- }
106
- return result;
107
- }
108
-
109
- /**
110
- * Reference to the last used config resources. This is used to avoid recomputing the config resources when the options are the same.
111
- */
112
- const cachedConfigResources = new WeakMap();
113
- function getConfigResources(options) {
114
- if (!options) return prepareConfigResources();
115
- const cached = cachedConfigResources.get(options);
116
- if (cached) return cached;
117
- const resources = prepareConfigResources(options);
118
- cachedConfigResources.set(options, resources);
119
- return resources;
120
- }
121
- function prepareConfigResources(options) {
122
- if (options) {
123
- (0, _validatePathConfig.validatePathConfig)(options);
124
- }
125
- const initialRoutes = getInitialRoutes(options);
126
- const configs = getSortedNormalizedConfigs(initialRoutes, options?.screens);
127
- checkForDuplicatedConfigs(configs);
128
- const configWithRegexes = getConfigsWithRegexes(configs);
129
- return {
130
- initialRoutes,
131
- configs,
132
- configWithRegexes
133
- };
134
- }
135
- function getInitialRoutes(options) {
136
- const initialRoutes = [];
137
- if (options?.initialRouteName) {
138
- initialRoutes.push({
139
- initialRouteName: options.initialRouteName,
140
- parentScreens: []
141
- });
142
- }
143
- return initialRoutes;
144
- }
145
- function getSortedNormalizedConfigs(initialRoutes, screens = {}) {
146
- // Create a normalized configs array which will be easier to use
147
- return [].concat(...Object.keys(screens).map(key => createNormalizedConfigs(key, screens, initialRoutes, [], [], []))).sort((a, b) => {
148
- // Sort config from most specific to least specific:
149
- // - more segments
150
- // - static segments
151
- // - params with regex
152
- // - regular params
153
- // - wildcard
154
-
155
- // If 2 patterns are same, move the one with less route names up
156
- // This is an error state, so it's only useful for consistent error messages
157
- if ((0, _isArrayEqual.isArrayEqual)(a.segments, b.segments)) {
158
- return b.routeNames.join('>').localeCompare(a.routeNames.join('>'));
159
- }
160
-
161
- // If one of the patterns starts with the other, it's more exhaustive
162
- // So move it up
163
- if ((0, _arrayStartsWith.arrayStartsWith)(a.segments, b.segments)) {
164
- return -1;
165
- }
166
- if ((0, _arrayStartsWith.arrayStartsWith)(b.segments, a.segments)) {
167
- return 1;
168
- }
169
- for (let i = 0; i < Math.max(a.segments.length, b.segments.length); i++) {
170
- // if b is longer, b gets higher priority
171
- if (a.segments[i] == null) {
172
- return 1;
173
- }
174
-
175
- // if a is longer, a gets higher priority
176
- if (b.segments[i] == null) {
177
- return -1;
178
- }
179
- const aWildCard = a.segments[i] === '*';
180
- const bWildCard = b.segments[i] === '*';
181
- const aParam = a.segments[i].startsWith(':');
182
- const bParam = b.segments[i].startsWith(':');
183
- const aRegex = aParam && a.segments[i].includes('(');
184
- const bRegex = bParam && b.segments[i].includes('(');
185
-
186
- // if both are wildcard or regex, we compare next component
187
- if (aWildCard && bWildCard || aRegex && bRegex) {
188
- continue;
189
- }
190
-
191
- // if only a is wildcard, b gets higher priority
192
- if (aWildCard && !bWildCard) {
193
- return 1;
194
- }
195
-
196
- // if only b is wildcard, a gets higher priority
197
- if (bWildCard && !aWildCard) {
198
- return -1;
199
- }
200
-
201
- // If only a has a param, b gets higher priority
202
- if (aParam && !bParam) {
203
- return 1;
204
- }
205
-
206
- // If only b has a param, a gets higher priority
207
- if (bParam && !aParam) {
208
- return -1;
209
- }
210
-
211
- // if only a has regex, a gets higher priority
212
- if (aRegex && !bRegex) {
213
- return -1;
214
- }
215
-
216
- // if only b has regex, b gets higher priority
217
- if (bRegex && !aRegex) {
218
- return 1;
219
- }
220
- }
221
- return a.segments.length - b.segments.length;
222
- });
223
- }
224
- function checkForDuplicatedConfigs(configs) {
225
- // Check for duplicate patterns in the config
226
- configs.reduce((acc, config) => {
227
- const pattern = config.segments.join('/');
228
- if (acc[pattern]) {
229
- const a = acc[pattern].routeNames;
230
- const b = config.routeNames;
231
-
232
- // It's not a problem if the path string omitted from a inner most screen
233
- // For example, it's ok if a path resolves to `A > B > C` or `A > B`
234
- const intersects = a.length > b.length ? b.every((it, i) => a[i] === it) : a.every((it, i) => b[i] === it);
235
- if (!intersects) {
236
- throw new Error(`Found conflicting screens with the same pattern. The pattern '${pattern}' resolves to both '${a.join(' > ')}' and '${b.join(' > ')}'. Patterns must be unique and cannot resolve to more than one screen.`);
237
- }
238
- }
239
- return Object.assign(acc, {
240
- [pattern]: config
241
- });
242
- }, {});
243
- }
244
- function getConfigsWithRegexes(configs) {
245
- return configs.map(c => ({
246
- ...c,
247
- // Add `$` to the regex to make sure it matches till end of the path and not just beginning
248
- regex: c.regex ? new RegExp(c.regex.source + '$') : undefined
249
- }));
250
- }
251
- const matchAgainstConfigs = (remaining, configs) => {
252
- let routes;
253
- let remainingPath = remaining;
254
-
255
- // Go through all configs, and see if the next path segment matches our regex
256
- for (const config of configs) {
257
- if (!config.regex) {
258
- continue;
259
- }
260
- const match = remainingPath.match(config.regex);
261
-
262
- // If our regex matches, we need to extract params from the path
263
- if (match) {
264
- routes = config.routeNames.map(routeName => {
265
- const routeConfig = configs.find(c => {
266
- // Check matching name AND pattern in case same screen is used at different levels in config
267
- return c.screen === routeName && (0, _arrayStartsWith.arrayStartsWith)(config.segments, c.segments);
268
- });
269
- const params = routeConfig && match.groups ? Object.fromEntries(Object.entries(match.groups).map(([key, value]) => {
270
- const index = Number(key.replace('param_', ''));
271
- const param = routeConfig.params.find(it => it.index === index);
272
- if (param?.screen === routeName && param?.name) {
273
- return [param.name, value];
274
- }
275
- return null;
276
- }).filter(it => it != null).map(([key, value]) => {
277
- if (value == null) {
278
- return [key, undefined];
279
- }
280
- const decoded = decodeURIComponent(value);
281
- const parsed = routeConfig.parse?.[key] ? routeConfig.parse[key](decoded) : decoded;
282
- return [key, parsed];
283
- })) : undefined;
284
- if (params && Object.keys(params).length) {
285
- return {
286
- name: routeName,
287
- params
288
- };
289
- }
290
- return {
291
- name: routeName
292
- };
293
- });
294
- remainingPath = remainingPath.replace(match[0], '');
295
- break;
296
- }
297
- }
298
- return {
299
- routes,
300
- remainingPath
301
- };
302
- };
303
- const createNormalizedConfigs = (screen, routeConfig, initials, paths, parentScreens, routeNames) => {
304
- const configs = [];
305
- routeNames.push(screen);
306
- parentScreens.push(screen);
307
- const config = routeConfig[screen];
308
- if (typeof config === 'string') {
309
- paths.push({
310
- screen,
311
- path: config
312
- });
313
- configs.push(createConfigItem(screen, [...routeNames], [...paths]));
314
- } else if (typeof config === 'object') {
315
- // if an object is specified as the value (e.g. Foo: { ... }),
316
- // it can have `path` property and
317
- // it could have `screens` prop which has nested configs
318
- if (typeof config.path === 'string') {
319
- if (config.exact && config.path == null) {
320
- throw new Error(`Screen '${screen}' doesn't specify a 'path'. A 'path' needs to be specified when specifying 'exact: true'. If you don't want this screen in the URL, specify it as empty string, e.g. \`path: ''\`.`);
321
- }
322
-
323
- // We should add alias configs after the main config
324
- // So unless they are more specific, main config will be matched first
325
- const aliasConfigs = [];
326
- if (config.alias) {
327
- for (const alias of config.alias) {
328
- if (typeof alias === 'string') {
329
- aliasConfigs.push(createConfigItem(screen, [...routeNames], [...paths, {
330
- screen,
331
- path: alias
332
- }], config.parse));
333
- } else if (typeof alias === 'object') {
334
- aliasConfigs.push(createConfigItem(screen, [...routeNames], alias.exact ? [{
335
- screen,
336
- path: alias.path
337
- }] : [...paths, {
338
- screen,
339
- path: alias.path
340
- }], alias.parse));
341
- }
342
- }
343
- }
344
- if (config.exact) {
345
- // If it's an exact path, we don't need to keep track of the parent screens
346
- // So we can clear it
347
- paths.length = 0;
348
- }
349
- paths.push({
350
- screen,
351
- path: config.path
352
- });
353
- configs.push(createConfigItem(screen, [...routeNames], [...paths], config.parse));
354
- configs.push(...aliasConfigs);
355
- }
356
- if (typeof config !== 'string' && typeof config.path !== 'string' && config.alias?.length) {
357
- throw new Error(`Screen '${screen}' doesn't specify a 'path'. A 'path' needs to be specified in order to use 'alias'.`);
358
- }
359
- if (config.screens) {
360
- // property `initialRouteName` without `screens` has no purpose
361
- if (config.initialRouteName) {
362
- initials.push({
363
- initialRouteName: config.initialRouteName,
364
- parentScreens
365
- });
366
- }
367
- Object.keys(config.screens).forEach(nestedConfig => {
368
- const result = createNormalizedConfigs(nestedConfig, config.screens, initials, [...paths], [...parentScreens], routeNames);
369
- configs.push(...result);
370
- });
371
- }
372
- }
373
- routeNames.pop();
374
- return configs;
375
- };
376
- const createConfigItem = (screen, routeNames, paths, parse) => {
377
- const parts = [];
378
-
379
- // Parse the path string into parts for easier matching
380
- for (const {
381
- screen,
382
- path
383
- } of paths) {
384
- parts.push(...(0, _getPatternParts.getPatternParts)(path).map(part => ({
385
- ...part,
386
- screen
387
- })));
388
- }
389
- const regex = parts.length ? new RegExp(`^(${parts.map((it, i) => {
390
- if (it.param) {
391
- const reg = it.regex || '[^/]+';
392
- return `(((?<param_${i}>${reg})\\/)${it.optional ? '?' : ''})`;
393
- }
394
- return `${it.segment === '*' ? '.*' : (0, _escapeStringRegexp.default)(it.segment)}\\/`;
395
- }).join('')})$`) : undefined;
396
- const segments = parts.map(it => it.segment);
397
- const params = parts.map((it, i) => it.param ? {
398
- index: i,
399
- screen: it.screen,
400
- name: it.param
401
- } : null).filter(it => it != null);
402
- return {
403
- screen,
404
- regex,
405
- segments,
406
- params,
407
- routeNames,
408
- parse
409
- };
410
- };
411
- const findParseConfigForRoute = (routeName, flatConfig) => {
412
- for (const config of flatConfig) {
413
- if (routeName === config.routeNames[config.routeNames.length - 1]) {
414
- return config.parse;
415
- }
416
- }
417
- return undefined;
418
- };
419
-
420
- // Try to find an initial route connected with the one passed
421
- const findInitialRoute = (routeName, parentScreens, initialRoutes) => {
422
- for (const config of initialRoutes) {
423
- if (parentScreens.length === config.parentScreens.length) {
424
- let sameParents = true;
425
- for (let i = 0; i < parentScreens.length; i++) {
426
- if (parentScreens[i].localeCompare(config.parentScreens[i]) !== 0) {
427
- sameParents = false;
428
- break;
429
- }
430
- }
431
- if (sameParents) {
432
- return routeName !== config.initialRouteName ? config.initialRouteName : undefined;
433
- }
434
- }
435
- }
436
- return undefined;
437
- };
438
-
439
- // returns state object with values depending on whether
440
- // it is the end of state and if there is initialRoute for this level
441
- const createStateObject = (initialRoute, route, isEmpty) => {
442
- if (isEmpty) {
443
- if (initialRoute) {
444
- return {
445
- index: 1,
446
- routes: [{
447
- name: initialRoute
448
- }, route]
449
- };
450
- } else {
451
- return {
452
- routes: [route]
453
- };
454
- }
455
- } else {
456
- if (initialRoute) {
457
- return {
458
- index: 1,
459
- routes: [{
460
- name: initialRoute
461
- }, {
462
- ...route,
463
- state: {
464
- routes: []
465
- }
466
- }]
467
- };
468
- } else {
469
- return {
470
- routes: [{
471
- ...route,
472
- state: {
473
- routes: []
474
- }
475
- }]
476
- };
477
- }
478
- }
479
- };
480
- const createNestedStateObject = (path, routes, initialRoutes, flatConfig) => {
481
- let route = routes.shift();
482
- const parentScreens = [];
483
- let initialRoute = findInitialRoute(route.name, parentScreens, initialRoutes);
484
- parentScreens.push(route.name);
485
- const state = createStateObject(initialRoute, route, routes.length === 0);
486
- if (routes.length > 0) {
487
- let nestedState = state;
488
- while (route = routes.shift()) {
489
- initialRoute = findInitialRoute(route.name, parentScreens, initialRoutes);
490
- const nestedStateIndex = nestedState.index || nestedState.routes.length - 1;
491
- nestedState.routes[nestedStateIndex].state = createStateObject(initialRoute, route, routes.length === 0);
492
- if (routes.length > 0) {
493
- nestedState = nestedState.routes[nestedStateIndex].state;
494
- }
495
- parentScreens.push(route.name);
496
- }
497
- }
498
- route = (0, _findFocusedRoute.findFocusedRoute)(state);
499
- route.path = path.replace(/\/$/, '');
500
- const params = parseQueryParams(path, flatConfig ? findParseConfigForRoute(route.name, flatConfig) : undefined);
501
- if (params) {
502
- route.params = {
503
- ...route.params,
504
- ...params
505
- };
506
- }
507
- return state;
508
- };
509
- const parseQueryParams = (path, parseConfig) => {
510
- const query = path.split('?')[1];
511
- const params = queryString.parse(query);
512
- if (parseConfig) {
513
- Object.keys(params).forEach(name => {
514
- if (Object.hasOwnProperty.call(parseConfig, name) && typeof params[name] === 'string') {
515
- params[name] = parseConfig[name](params[name]);
516
- }
517
- });
518
- }
519
- return Object.keys(params).length ? params : undefined;
520
- };
521
- //# sourceMappingURL=getStateFromPath.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_escapeStringRegexp","_interopRequireDefault","require","queryString","_interopRequireWildcard","_arrayStartsWith","_findFocusedRoute","_getPatternParts","_isArrayEqual","_validatePathConfig","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","getStateFromPath","path","options","initialRoutes","configs","getConfigResources","screens","remaining","replace","endsWith","prefix","normalizedPrefix","startsWith","undefined","routes","split","filter","Boolean","map","segment","name","decodeURIComponent","length","createNestedStateObject","match","find","config","segments","join","routeNames","result","current","remainingPath","matchAgainstConfigs","cachedConfigResources","prepareConfigResources","cached","resources","validatePathConfig","getInitialRoutes","getSortedNormalizedConfigs","checkForDuplicatedConfigs","configWithRegexes","getConfigsWithRegexes","initialRouteName","push","parentScreens","concat","keys","key","createNormalizedConfigs","sort","b","isArrayEqual","localeCompare","arrayStartsWith","Math","max","aWildCard","bWildCard","aParam","bParam","aRegex","includes","bRegex","reduce","acc","pattern","intersects","every","it","Error","assign","c","regex","RegExp","source","routeName","routeConfig","screen","params","groups","fromEntries","entries","value","index","Number","param","decoded","parsed","parse","initials","paths","createConfigItem","exact","aliasConfigs","alias","forEach","nestedConfig","pop","parts","getPatternParts","part","reg","optional","escape","findParseConfigForRoute","flatConfig","findInitialRoute","sameParents","createStateObject","initialRoute","route","isEmpty","state","shift","nestedState","nestedStateIndex","findFocusedRoute","parseQueryParams","parseConfig","query"],"sourceRoot":"../../src","sources":["getStateFromPath.tsx"],"mappings":"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","ignoreList":[]}