@react-navigation/core 7.1.2 → 7.2.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.
Files changed (33) hide show
  1. package/lib/commonjs/arrayStartsWith.js +16 -0
  2. package/lib/commonjs/arrayStartsWith.js.map +1 -0
  3. package/lib/commonjs/getPathFromState.js +50 -40
  4. package/lib/commonjs/getPathFromState.js.map +1 -1
  5. package/lib/commonjs/getPatternParts.js +105 -0
  6. package/lib/commonjs/getPatternParts.js.map +1 -0
  7. package/lib/commonjs/getStateFromPath.js +124 -101
  8. package/lib/commonjs/getStateFromPath.js.map +1 -1
  9. package/lib/module/arrayStartsWith.js +12 -0
  10. package/lib/module/arrayStartsWith.js.map +1 -0
  11. package/lib/module/getPathFromState.js +50 -40
  12. package/lib/module/getPathFromState.js.map +1 -1
  13. package/lib/module/getPatternParts.js +101 -0
  14. package/lib/module/getPatternParts.js.map +1 -0
  15. package/lib/module/getStateFromPath.js +124 -101
  16. package/lib/module/getStateFromPath.js.map +1 -1
  17. package/lib/typescript/commonjs/src/arrayStartsWith.d.ts +5 -0
  18. package/lib/typescript/commonjs/src/arrayStartsWith.d.ts.map +1 -0
  19. package/lib/typescript/commonjs/src/getPathFromState.d.ts.map +1 -1
  20. package/lib/typescript/commonjs/src/getPatternParts.d.ts +11 -0
  21. package/lib/typescript/commonjs/src/getPatternParts.d.ts.map +1 -0
  22. package/lib/typescript/commonjs/src/getStateFromPath.d.ts.map +1 -1
  23. package/lib/typescript/module/src/arrayStartsWith.d.ts +5 -0
  24. package/lib/typescript/module/src/arrayStartsWith.d.ts.map +1 -0
  25. package/lib/typescript/module/src/getPathFromState.d.ts.map +1 -1
  26. package/lib/typescript/module/src/getPatternParts.d.ts +11 -0
  27. package/lib/typescript/module/src/getPatternParts.d.ts.map +1 -0
  28. package/lib/typescript/module/src/getStateFromPath.d.ts.map +1 -1
  29. package/package.json +2 -2
  30. package/src/arrayStartsWith.tsx +10 -0
  31. package/src/getPathFromState.tsx +61 -58
  32. package/src/getPatternParts.tsx +126 -0
  33. package/src/getStateFromPath.tsx +156 -156
@@ -6,7 +6,10 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.getStateFromPath = getStateFromPath;
7
7
  var _escapeStringRegexp = _interopRequireDefault(require("escape-string-regexp"));
8
8
  var queryString = _interopRequireWildcard(require("query-string"));
9
+ var _arrayStartsWith = require("./arrayStartsWith.js");
9
10
  var _findFocusedRoute = require("./findFocusedRoute.js");
11
+ var _getPatternParts = require("./getPatternParts.js");
12
+ var _isArrayEqual = require("./isArrayEqual.js");
10
13
  var _validatePathConfig = require("./validatePathConfig.js");
11
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); }
12
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; }
@@ -75,9 +78,7 @@ function getStateFromPath(path, options) {
75
78
  if (remaining === '/') {
76
79
  // We need to add special handling of empty path so navigation to empty path also works
77
80
  // When handling empty path, we should only look at the root level config
78
- const match = configs.find(config => config.path === '' && config.routeNames.every(
79
- // Make sure that none of the parent configs have a non-empty path defined
80
- name => !configs.find(c => c.screen === name)?.path));
81
+ const match = configs.find(config => config.segments.join('/') === '');
81
82
  if (match) {
82
83
  return createNestedStateObject(path, match.routeNames.map(name => ({
83
84
  name
@@ -144,70 +145,100 @@ function getInitialRoutes(options) {
144
145
  }
145
146
  function getNormalizedConfigs(initialRoutes, screens = {}) {
146
147
  // 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 so that:
149
- // - the most exhaustive ones are always at the beginning
150
- // - patterns with wildcard are always at the end
148
+ return [].concat(...Object.keys(screens).map(key => createNormalizedConfigs(key, screens, initialRoutes, [], [], []))).sort((a, b) => {
149
+ // Sort config from most specific to least specific:
150
+ // - more segments
151
+ // - static segments
152
+ // - params with regex
153
+ // - regular params
154
+ // - wildcard
151
155
 
152
156
  // If 2 patterns are same, move the one with less route names up
153
157
  // This is an error state, so it's only useful for consistent error messages
154
- if (a.pattern === b.pattern) {
158
+ if ((0, _isArrayEqual.isArrayEqual)(a.segments, b.segments)) {
155
159
  return b.routeNames.join('>').localeCompare(a.routeNames.join('>'));
156
160
  }
157
161
 
158
162
  // If one of the patterns starts with the other, it's more exhaustive
159
163
  // So move it up
160
- if (a.pattern.startsWith(b.pattern)) {
164
+ if ((0, _arrayStartsWith.arrayStartsWith)(a.segments, b.segments)) {
161
165
  return -1;
162
166
  }
163
- if (b.pattern.startsWith(a.pattern)) {
167
+ if ((0, _arrayStartsWith.arrayStartsWith)(b.segments, a.segments)) {
164
168
  return 1;
165
169
  }
166
- const aParts = a.pattern.split('/');
167
- const bParts = b.pattern.split('/');
168
- for (let i = 0; i < Math.max(aParts.length, bParts.length); i++) {
169
- // if b is longer, b get higher priority
170
- if (aParts[i] == null) {
170
+ for (let i = 0; i < Math.max(a.segments.length, b.segments.length); i++) {
171
+ // if b is longer, b gets higher priority
172
+ if (a.segments[i] == null) {
171
173
  return 1;
172
174
  }
173
- // if a is longer, a get higher priority
174
- if (bParts[i] == null) {
175
+
176
+ // if a is longer, a gets higher priority
177
+ if (b.segments[i] == null) {
175
178
  return -1;
176
179
  }
177
- const aWildCard = aParts[i] === '*' || aParts[i].startsWith(':');
178
- const bWildCard = bParts[i] === '*' || bParts[i].startsWith(':');
179
- // if both are wildcard we compare next component
180
- if (aWildCard && bWildCard) {
180
+ const aWildCard = a.segments[i] === '*';
181
+ const bWildCard = b.segments[i] === '*';
182
+ const aParam = a.segments[i].startsWith(':');
183
+ const bParam = b.segments[i].startsWith(':');
184
+ const aRegex = aParam && a.segments[i].includes('(');
185
+ const bRegex = bParam && b.segments[i].includes('(');
186
+
187
+ // if both are wildcard or regex, we compare next component
188
+ if (aWildCard && bWildCard || aRegex && bRegex) {
181
189
  continue;
182
190
  }
183
- // if only a is wild card, b get higher priority
184
- if (aWildCard) {
191
+
192
+ // If only a has a param, b gets higher priority
193
+ if (aParam && !bParam) {
194
+ return 1;
195
+ }
196
+
197
+ // If only b has a param, a gets higher priority
198
+ if (bParam && !aParam) {
199
+ return -1;
200
+ }
201
+
202
+ // if only a has regex, a gets higher priority
203
+ if (aRegex && !bRegex) {
204
+ return -1;
205
+ }
206
+
207
+ // if only b has regex, b gets higher priority
208
+ if (bRegex && !aRegex) {
209
+ return 1;
210
+ }
211
+
212
+ // if only a is wildcard, b gets higher priority
213
+ if (aWildCard && !bWildCard) {
185
214
  return 1;
186
215
  }
187
- // if only b is wild card, a get higher priority
188
- if (bWildCard) {
216
+
217
+ // if only b is wildcard, a gets higher priority
218
+ if (bWildCard && !aWildCard) {
189
219
  return -1;
190
220
  }
191
221
  }
192
- return bParts.length - aParts.length;
222
+ return a.segments.length - b.segments.length;
193
223
  });
194
224
  }
195
225
  function checkForDuplicatedConfigs(configs) {
196
226
  // Check for duplicate patterns in the config
197
227
  configs.reduce((acc, config) => {
198
- if (acc[config.pattern]) {
199
- const a = acc[config.pattern].routeNames;
228
+ const pattern = config.segments.join('/');
229
+ if (acc[pattern]) {
230
+ const a = acc[pattern].routeNames;
200
231
  const b = config.routeNames;
201
232
 
202
233
  // It's not a problem if the path string omitted from a inner most screen
203
234
  // For example, it's ok if a path resolves to `A > B > C` or `A > B`
204
235
  const intersects = a.length > b.length ? b.every((it, i) => a[i] === it) : a.every((it, i) => b[i] === it);
205
236
  if (!intersects) {
206
- throw new Error(`Found conflicting screens with the same pattern. The pattern '${config.pattern}' resolves to both '${a.join(' > ')}' and '${b.join(' > ')}'. Patterns must be unique and cannot resolve to more than one screen.`);
237
+ 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.`);
207
238
  }
208
239
  }
209
240
  return Object.assign(acc, {
210
- [config.pattern]: config
241
+ [pattern]: config
211
242
  });
212
243
  }, {});
213
244
  }
@@ -218,7 +249,6 @@ function getConfigsWithRegexes(configs) {
218
249
  regex: c.regex ? new RegExp(c.regex.source + '$') : undefined
219
250
  }));
220
251
  }
221
- const joinPaths = (...paths) => [].concat(...paths.map(p => p.split('/'))).filter(Boolean).join('/');
222
252
  const matchAgainstConfigs = (remaining, configs) => {
223
253
  let routes;
224
254
  let remainingPath = remaining;
@@ -232,68 +262,37 @@ const matchAgainstConfigs = (remaining, configs) => {
232
262
 
233
263
  // If our regex matches, we need to extract params from the path
234
264
  if (match) {
235
- const matchResult = config.pattern?.split('/').reduce((acc, p, index) => {
236
- if (!p.startsWith(':')) {
237
- return acc;
238
- }
239
-
240
- // Path parameter so increment position for the segment
241
- acc.pos += 1;
242
- const decodedParamSegment = decodeURIComponent(
243
- // The param segments appear every second item starting from 2 in the regex match result
244
- match[(acc.pos + 1) * 2]
245
- // Remove trailing slash
246
- .replace(/\/$/, ''));
247
- Object.assign(acc.matchedParams, {
248
- [p]: Object.assign(acc.matchedParams[p] || {}, {
249
- [index]: decodedParamSegment
250
- })
251
- });
252
- return acc;
253
- }, {
254
- pos: -1,
255
- matchedParams: {}
256
- });
257
- const matchedParams = matchResult.matchedParams || {};
258
- routes = config.routeNames.map(name => {
265
+ routes = config.routeNames.map(routeName => {
259
266
  const routeConfig = configs.find(c => {
260
267
  // Check matching name AND pattern in case same screen is used at different levels in config
261
- return c.screen === name && config.pattern.startsWith(c.pattern);
268
+ return c.screen === routeName && (0, _arrayStartsWith.arrayStartsWith)(config.segments, c.segments);
262
269
  });
263
-
264
- // Normalize pattern to remove any leading, trailing slashes, duplicate slashes etc.
265
- const normalizedPath = routeConfig?.path.split('/').filter(Boolean).join('/');
266
-
267
- // Get the number of segments in the initial pattern
268
- const numInitialSegments = routeConfig?.pattern
269
- // Extract the prefix from the pattern by removing the ending path pattern (e.g pattern=`a/b/c/d` and normalizedPath=`c/d` becomes `a/b`)
270
- .replace(new RegExp(`${(0, _escapeStringRegexp.default)(normalizedPath)}$`), '')?.split('/').length;
271
- const params = normalizedPath?.split('/').reduce((acc, p, index) => {
272
- if (!p.startsWith(':')) {
273
- return acc;
270
+ const params = routeConfig && match.groups ? Object.fromEntries(Object.entries(match.groups).map(([key, value]) => {
271
+ const index = Number(key.replace('param_', ''));
272
+ const param = routeConfig.params.find(it => it.index === index);
273
+ if (param?.screen === routeName && param?.name) {
274
+ return [param.name, value];
274
275
  }
275
-
276
- // Get the real index of the path parameter in the matched path
277
- // by offsetting by the number of segments in the initial pattern
278
- const offset = numInitialSegments ? numInitialSegments - 1 : 0;
279
- const value = matchedParams[p]?.[index + offset];
280
- if (value) {
281
- const key = p.replace(/^:/, '').replace(/\?$/, '');
282
- acc[key] = routeConfig?.parse?.[key] ? routeConfig.parse[key](value) : value;
276
+ return null;
277
+ }).filter(it => it != null).map(([key, value]) => {
278
+ if (value == null) {
279
+ return [key, undefined];
283
280
  }
284
- return acc;
285
- }, {});
281
+ const decoded = decodeURIComponent(value);
282
+ const parsed = routeConfig.parse?.[key] ? routeConfig.parse[key](decoded) : decoded;
283
+ return [key, parsed];
284
+ })) : undefined;
286
285
  if (params && Object.keys(params).length) {
287
286
  return {
288
- name,
287
+ name: routeName,
289
288
  params
290
289
  };
291
290
  }
292
291
  return {
293
- name
292
+ name: routeName
294
293
  };
295
294
  });
296
- remainingPath = remainingPath.replace(match[1], '');
295
+ remainingPath = remainingPath.replace(match[0], '');
297
296
  break;
298
297
  }
299
298
  }
@@ -302,7 +301,7 @@ const matchAgainstConfigs = (remaining, configs) => {
302
301
  remainingPath
303
302
  };
304
303
  };
305
- const createNormalizedConfigs = (screen, routeConfig, routeNames = [], initials, parentScreens, parentPattern) => {
304
+ const createNormalizedConfigs = (screen, routeConfig, initials, paths, parentScreens, routeNames) => {
306
305
  const configs = [];
307
306
  routeNames.push(screen);
308
307
  parentScreens.push(screen);
@@ -310,12 +309,12 @@ const createNormalizedConfigs = (screen, routeConfig, routeNames = [], initials,
310
309
  // @ts-expect-error: we can't strongly typecheck this for now
311
310
  const config = routeConfig[screen];
312
311
  if (typeof config === 'string') {
313
- // If a string is specified as the value of the key(e.g. Foo: '/path'), use it as the pattern
314
- const pattern = parentPattern ? joinPaths(parentPattern, config) : config;
315
- configs.push(createConfigItem(screen, routeNames, pattern, config));
312
+ paths.push({
313
+ screen,
314
+ path: config
315
+ });
316
+ configs.push(createConfigItem(screen, [...routeNames], [...paths]));
316
317
  } else if (typeof config === 'object') {
317
- let pattern;
318
-
319
318
  // if an object is specified as the value (e.g. Foo: { ... }),
320
319
  // it can have `path` property and
321
320
  // it could have `screens` prop which has nested configs
@@ -323,8 +322,16 @@ const createNormalizedConfigs = (screen, routeConfig, routeNames = [], initials,
323
322
  if (config.exact && config.path === undefined) {
324
323
  throw new Error("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: ''`.");
325
324
  }
326
- pattern = config.exact !== true ? joinPaths(parentPattern || '', config.path || '') : config.path || '';
327
- configs.push(createConfigItem(screen, routeNames, pattern, config.path, config.parse));
325
+ if (config.exact) {
326
+ // If it's an exact path, we don't need to keep track of the parent screens
327
+ // So we can clear it
328
+ paths.length = 0;
329
+ }
330
+ paths.push({
331
+ screen,
332
+ path: config.path
333
+ });
334
+ configs.push(createConfigItem(screen, [...routeNames], [...paths], config.parse));
328
335
  }
329
336
  if (config.screens) {
330
337
  // property `initialRouteName` without `screens` has no purpose
@@ -335,7 +342,7 @@ const createNormalizedConfigs = (screen, routeConfig, routeNames = [], initials,
335
342
  });
336
343
  }
337
344
  Object.keys(config.screens).forEach(nestedConfig => {
338
- const result = createNormalizedConfigs(nestedConfig, config.screens, routeNames, initials, [...parentScreens], pattern ?? parentPattern);
345
+ const result = createNormalizedConfigs(nestedConfig, config.screens, initials, [...paths], [...parentScreens], routeNames);
339
346
  configs.push(...result);
340
347
  });
341
348
  }
@@ -343,22 +350,38 @@ const createNormalizedConfigs = (screen, routeConfig, routeNames = [], initials,
343
350
  routeNames.pop();
344
351
  return configs;
345
352
  };
346
- const createConfigItem = (screen, routeNames, pattern, path, parse) => {
347
- // Normalize pattern to remove any leading, trailing slashes, duplicate slashes etc.
348
- pattern = pattern.split('/').filter(Boolean).join('/');
349
- const regex = pattern ? new RegExp(`^(${pattern.split('/').map(it => {
350
- if (it.startsWith(':')) {
351
- return `(([^/]+\\/)${it.endsWith('?') ? '?' : ''})`;
353
+ const createConfigItem = (screen, routeNames, paths, parse) => {
354
+ const parts = [];
355
+
356
+ // Parse the path string into parts for easier matching
357
+ for (const {
358
+ screen,
359
+ path
360
+ } of paths) {
361
+ parts.push(...(0, _getPatternParts.getPatternParts)(path).map(part => ({
362
+ ...part,
363
+ screen
364
+ })));
365
+ }
366
+ const regex = parts.length ? new RegExp(`^(${parts.map((it, i) => {
367
+ if (it.param) {
368
+ const reg = it.regex || '[^/]+';
369
+ return `(((?<param_${i}>${reg})\\/)${it.optional ? '?' : ''})`;
352
370
  }
353
- return `${it === '*' ? '.*' : (0, _escapeStringRegexp.default)(it)}\\/`;
371
+ return `${it.segment === '*' ? '.*' : (0, _escapeStringRegexp.default)(it.segment)}\\/`;
354
372
  }).join('')})`) : undefined;
373
+ const segments = parts.map(it => it.segment);
374
+ const params = parts.map((it, i) => it.param ? {
375
+ index: i,
376
+ screen: it.screen,
377
+ name: it.param
378
+ } : null).filter(it => it != null);
355
379
  return {
356
380
  screen,
357
381
  regex,
358
- pattern,
359
- path,
360
- // The routeNames array is mutated, so copy it to keep the current state
361
- routeNames: [...routeNames],
382
+ segments,
383
+ params,
384
+ routeNames,
362
385
  parse
363
386
  };
364
387
  };
@@ -450,7 +473,7 @@ const createNestedStateObject = (path, routes, initialRoutes, flatConfig) => {
450
473
  }
451
474
  }
452
475
  route = (0, _findFocusedRoute.findFocusedRoute)(state);
453
- route.path = path;
476
+ route.path = path.replace(/\/$/, '');
454
477
  const params = parseQueryParams(path, flatConfig ? findParseConfigForRoute(route.name, flatConfig) : undefined);
455
478
  if (params) {
456
479
  route.params = {
@@ -1 +1 @@
1
- {"version":3,"names":["_escapeStringRegexp","_interopRequireDefault","require","queryString","_interopRequireWildcard","_findFocusedRoute","_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","configWithRegexes","getConfigResources","screens","remaining","replace","endsWith","prefix","normalizedPrefix","startsWith","undefined","routes","split","filter","Boolean","map","segment","name","decodeURIComponent","length","createNestedStateObject","match","find","config","routeNames","every","c","screen","result","current","remainingPath","matchAgainstConfigs","cachedConfigResources","prepareConfigResources","cached","resources","validatePathConfig","getInitialRoutes","getNormalizedConfigs","checkForDuplicatedConfigs","getConfigsWithRegexes","initialRouteName","push","parentScreens","concat","keys","key","createNormalizedConfigs","sort","b","pattern","join","localeCompare","aParts","bParts","Math","max","aWildCard","bWildCard","reduce","acc","intersects","it","Error","assign","regex","RegExp","source","joinPaths","paths","p","matchResult","index","pos","decodedParamSegment","matchedParams","routeConfig","normalizedPath","numInitialSegments","escape","params","offset","value","parse","initials","parentPattern","createConfigItem","exact","forEach","nestedConfig","pop","findParseConfigForRoute","routeName","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":[]}
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","configWithRegexes","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","getNormalizedConfigs","checkForDuplicatedConfigs","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","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":[]}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Compare two arrays to check if the first array starts with the second array.
5
+ */
6
+ export function arrayStartsWith(array, start) {
7
+ if (start.length > array.length) {
8
+ return false;
9
+ }
10
+ return start.every((it, index) => it === array[index]);
11
+ }
12
+ //# sourceMappingURL=arrayStartsWith.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["arrayStartsWith","array","start","length","every","it","index"],"sourceRoot":"../../src","sources":["arrayStartsWith.tsx"],"mappings":";;AAAA;AACA;AACA;AACA,OAAO,SAASA,eAAeA,CAAIC,KAAU,EAAEC,KAAU,EAAE;EACzD,IAAIA,KAAK,CAACC,MAAM,GAAGF,KAAK,CAACE,MAAM,EAAE;IAC/B,OAAO,KAAK;EACd;EAEA,OAAOD,KAAK,CAACE,KAAK,CAAC,CAACC,EAAE,EAAEC,KAAK,KAAKD,EAAE,KAAKJ,KAAK,CAACK,KAAK,CAAC,CAAC;AACxD","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import * as queryString from 'query-string';
4
+ import { getPatternParts } from "./getPatternParts.js";
4
5
  import { validatePathConfig } from "./validatePathConfig.js";
5
6
  const getActiveRoute = state => {
6
7
  const route = typeof state.index === 'number' ? state.routes[state.index] : state.routes[state.routes.length - 1];
@@ -50,7 +51,7 @@ const getNormalizedConfigs = options => {
50
51
  */
51
52
  export function getPathFromState(state, options) {
52
53
  if (state == null) {
53
- throw Error("Got 'undefined' for the navigation state. You must pass a valid state object.");
54
+ throw Error(`Got '${String(state)}' for the navigation state. You must pass a valid state object.`);
54
55
  }
55
56
  if (options) {
56
57
  validatePathConfig(options);
@@ -62,21 +63,21 @@ export function getPathFromState(state, options) {
62
63
  while (current) {
63
64
  let index = typeof current.index === 'number' ? current.index : 0;
64
65
  let route = current.routes[index];
65
- let pattern;
66
+ let parts;
66
67
  let focusedParams;
67
- const focusedRoute = getActiveRoute(state);
68
68
  let currentOptions = configs;
69
+ const focusedRoute = getActiveRoute(state);
69
70
 
70
71
  // Keep all the route names that appeared during going deeper in config in case the pattern is resolved to undefined
71
72
  const nestedRouteNames = [];
72
73
  let hasNext = true;
73
74
  while (route.name in currentOptions && hasNext) {
74
- pattern = currentOptions[route.name].pattern;
75
+ parts = currentOptions[route.name].parts;
75
76
  nestedRouteNames.push(route.name);
76
77
  if (route.params) {
77
78
  const stringify = currentOptions[route.name]?.stringify;
78
79
  const currentParams = Object.fromEntries(Object.entries(route.params).map(([key, value]) => [key, stringify?.[key] ? stringify[key](value) : String(value)]));
79
- if (pattern) {
80
+ if (parts?.length) {
80
81
  Object.assign(allParams, currentParams);
81
82
  }
82
83
  if (focusedRoute === route) {
@@ -85,15 +86,17 @@ export function getPathFromState(state, options) {
85
86
  focusedParams = {
86
87
  ...currentParams
87
88
  };
88
- pattern?.split('/').filter(p => p.startsWith(':'))
89
+ parts
89
90
  // eslint-disable-next-line no-loop-func
90
- .forEach(p => {
91
- const name = getParamName(p);
92
-
93
- // Remove the params present in the pattern since we'll only use the rest for query string
94
- if (focusedParams) {
95
- // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
96
- delete focusedParams[name];
91
+ ?.forEach(({
92
+ param
93
+ }) => {
94
+ if (param) {
95
+ // Remove the params present in the pattern since we'll only use the rest for query string
96
+ if (focusedParams) {
97
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
98
+ delete focusedParams[param];
99
+ }
97
100
  }
98
101
  });
99
102
  }
@@ -117,24 +120,23 @@ export function getPathFromState(state, options) {
117
120
  }
118
121
  }
119
122
  }
120
- if (pattern === undefined) {
121
- pattern = nestedRouteNames.join('/');
122
- }
123
123
  if (currentOptions[route.name] !== undefined) {
124
- path += pattern.split('/').map(p => {
125
- const name = getParamName(p);
126
-
124
+ path += parts?.map(({
125
+ segment,
126
+ param,
127
+ optional
128
+ }) => {
127
129
  // We don't know what to show for wildcard patterns
128
130
  // Showing the route name seems ok, though whatever we show here will be incorrect
129
131
  // Since the page doesn't actually exist
130
- if (p === '*') {
132
+ if (segment === '*') {
131
133
  return route.name;
132
134
  }
133
135
 
134
136
  // If the path has a pattern for a param, put the param in the path
135
- if (p.startsWith(':')) {
136
- const value = allParams[name];
137
- if (value === undefined && p.endsWith('?')) {
137
+ if (param) {
138
+ const value = allParams[param];
139
+ if (value === undefined && optional) {
138
140
  // Optional params without value assigned in route.params should be ignored
139
141
  return '';
140
142
  }
@@ -143,13 +145,13 @@ export function getPathFromState(state, options) {
143
145
  // https://datatracker.ietf.org/doc/html/rfc3986#section-3.3 (see pchar definition)
144
146
  return String(value).replace(/[^A-Za-z0-9\-._~!$&'()*+,;=:@]/g, char => encodeURIComponent(char));
145
147
  }
146
- return encodeURIComponent(p);
148
+ return encodeURIComponent(segment);
147
149
  }).join('/');
148
150
  } else {
149
151
  path += encodeURIComponent(route.name);
150
152
  }
151
- if (!focusedParams) {
152
- focusedParams = focusedRoute.params;
153
+ if (!focusedParams && focusedRoute.params) {
154
+ focusedParams = Object.fromEntries(Object.entries(focusedRoute.params).map(([key, value]) => [key, String(value)]));
153
155
  }
154
156
  if (route.state) {
155
157
  path += '/';
@@ -170,24 +172,33 @@ export function getPathFromState(state, options) {
170
172
  current = route.state;
171
173
  }
172
174
 
175
+ // Include the root path if specified
176
+ if (options?.path) {
177
+ path = `${options.path}/${path}`;
178
+ }
179
+
173
180
  // Remove multiple as well as trailing slashes
174
181
  path = path.replace(/\/+/g, '/');
175
182
  path = path.length > 1 ? path.replace(/\/$/, '') : path;
176
183
 
177
- // Include the root path if specified
178
- if (options?.path) {
179
- path = joinPaths(options.path, path);
184
+ // If path doesn't start with a slash, add it
185
+ // This makes sure that history.pushState will update the path correctly instead of appending
186
+ if (!path.startsWith('/')) {
187
+ path = `/${path}`;
180
188
  }
181
189
  return path;
182
190
  }
183
- const getParamName = pattern => pattern.replace(/^:/, '').replace(/\?$/, '');
184
- const joinPaths = (...paths) => [].concat(...paths.map(p => p.split('/'))).filter(Boolean).join('/');
185
- const createConfigItem = (config, parentPattern) => {
191
+ const createConfigItem = (config, parentParts) => {
186
192
  if (typeof config === 'string') {
187
193
  // If a string is specified as the value of the key(e.g. Foo: '/path'), use it as the pattern
188
- const pattern = parentPattern ? joinPaths(parentPattern, config) : config;
194
+ const parts = getPatternParts(config);
195
+ if (parentParts) {
196
+ return {
197
+ parts: [...parentParts, ...parts]
198
+ };
199
+ }
189
200
  return {
190
- pattern
201
+ parts
191
202
  };
192
203
  }
193
204
  if (config.exact && config.path === undefined) {
@@ -196,17 +207,16 @@ const createConfigItem = (config, parentPattern) => {
196
207
 
197
208
  // If an object is specified as the value (e.g. Foo: { ... }),
198
209
  // It can have `path` property and `screens` prop which has nested configs
199
- const pattern = config.exact !== true ? joinPaths(parentPattern || '', config.path || '') : config.path || '';
200
- const screens = config.screens ? createNormalizedConfigs(config.screens, pattern) : undefined;
210
+ const parts = config.exact !== true ? [...(parentParts || []), ...(config.path ? getPatternParts(config.path) : [])] : config.path ? getPatternParts(config.path) : undefined;
211
+ const screens = config.screens ? createNormalizedConfigs(config.screens, parts) : undefined;
201
212
  return {
202
- // Normalize pattern to remove any leading, trailing slashes, duplicate slashes etc.
203
- pattern: pattern?.split('/').filter(Boolean).join('/'),
213
+ parts,
204
214
  stringify: config.stringify,
205
215
  screens
206
216
  };
207
217
  };
208
- const createNormalizedConfigs = (options, pattern) => Object.fromEntries(Object.entries(options).map(([name, c]) => {
209
- const result = createConfigItem(c, pattern);
218
+ const createNormalizedConfigs = (options, parts) => Object.fromEntries(Object.entries(options).map(([name, c]) => {
219
+ const result = createConfigItem(c, parts);
210
220
  return [name, result];
211
221
  }));
212
222
  //# sourceMappingURL=getPathFromState.js.map