@react-navigation/core 7.1.1 → 7.2.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 (46) hide show
  1. package/lib/commonjs/StaticNavigation.js +9 -9
  2. package/lib/commonjs/StaticNavigation.js.map +1 -1
  3. package/lib/commonjs/arrayStartsWith.js +16 -0
  4. package/lib/commonjs/arrayStartsWith.js.map +1 -0
  5. package/lib/commonjs/getPathFromState.js +50 -40
  6. package/lib/commonjs/getPathFromState.js.map +1 -1
  7. package/lib/commonjs/getPatternParts.js +105 -0
  8. package/lib/commonjs/getPatternParts.js.map +1 -0
  9. package/lib/commonjs/getStateFromPath.js +106 -98
  10. package/lib/commonjs/getStateFromPath.js.map +1 -1
  11. package/lib/commonjs/types.js +2 -20
  12. package/lib/commonjs/types.js.map +1 -1
  13. package/lib/module/StaticNavigation.js +9 -9
  14. package/lib/module/StaticNavigation.js.map +1 -1
  15. package/lib/module/arrayStartsWith.js +12 -0
  16. package/lib/module/arrayStartsWith.js.map +1 -0
  17. package/lib/module/getPathFromState.js +50 -40
  18. package/lib/module/getPathFromState.js.map +1 -1
  19. package/lib/module/getPatternParts.js +101 -0
  20. package/lib/module/getPatternParts.js.map +1 -0
  21. package/lib/module/getStateFromPath.js +106 -98
  22. package/lib/module/getStateFromPath.js.map +1 -1
  23. package/lib/module/types.js +1 -20
  24. package/lib/module/types.js.map +1 -1
  25. package/lib/typescript/commonjs/src/StaticNavigation.d.ts.map +1 -1
  26. package/lib/typescript/commonjs/src/arrayStartsWith.d.ts +5 -0
  27. package/lib/typescript/commonjs/src/arrayStartsWith.d.ts.map +1 -0
  28. package/lib/typescript/commonjs/src/getPathFromState.d.ts.map +1 -1
  29. package/lib/typescript/commonjs/src/getPatternParts.d.ts +11 -0
  30. package/lib/typescript/commonjs/src/getPatternParts.d.ts.map +1 -0
  31. package/lib/typescript/commonjs/src/getStateFromPath.d.ts.map +1 -1
  32. package/lib/typescript/module/src/StaticNavigation.d.ts.map +1 -1
  33. package/lib/typescript/module/src/arrayStartsWith.d.ts +5 -0
  34. package/lib/typescript/module/src/arrayStartsWith.d.ts.map +1 -0
  35. package/lib/typescript/module/src/getPathFromState.d.ts.map +1 -1
  36. package/lib/typescript/module/src/getPatternParts.d.ts +11 -0
  37. package/lib/typescript/module/src/getPatternParts.d.ts.map +1 -0
  38. package/lib/typescript/module/src/getStateFromPath.d.ts.map +1 -1
  39. package/package.json +4 -4
  40. package/src/StaticNavigation.tsx +16 -12
  41. package/src/arrayStartsWith.tsx +10 -0
  42. package/src/getPathFromState.tsx +61 -58
  43. package/src/getPatternParts.tsx +126 -0
  44. package/src/getStateFromPath.tsx +142 -153
  45. package/lib/commonjs/package.json +0 -1
  46. package/lib/module/package.json +0 -1
@@ -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
@@ -1 +1 @@
1
- {"version":3,"names":["queryString","validatePathConfig","getActiveRoute","state","route","index","routes","length","cachedNormalizedConfigs","WeakMap","getNormalizedConfigs","options","screens","cached","get","normalizedConfigs","createNormalizedConfigs","set","getPathFromState","Error","configs","path","current","allParams","pattern","focusedParams","focusedRoute","currentOptions","nestedRouteNames","hasNext","name","push","params","stringify","currentParams","Object","fromEntries","entries","map","key","value","String","assign","split","filter","p","startsWith","forEach","getParamName","undefined","nextRoute","nestedConfig","join","endsWith","replace","char","encodeURIComponent","param","query","sort","joinPaths","paths","concat","Boolean","createConfigItem","config","parentPattern","exact","c","result"],"sourceRoot":"../../src","sources":["getPathFromState.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["queryString","getPatternParts","validatePathConfig","getActiveRoute","state","route","index","routes","length","cachedNormalizedConfigs","WeakMap","getNormalizedConfigs","options","screens","cached","get","normalizedConfigs","createNormalizedConfigs","set","getPathFromState","Error","String","configs","path","current","allParams","parts","focusedParams","currentOptions","focusedRoute","nestedRouteNames","hasNext","name","push","params","stringify","currentParams","Object","fromEntries","entries","map","key","value","assign","forEach","param","undefined","nextRoute","nestedConfig","segment","optional","replace","char","encodeURIComponent","join","query","sort","startsWith","createConfigItem","config","parentParts","exact","c","result"],"sourceRoot":"../../src","sources":["getPathFromState.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Parse a path into an array of parts with information about each segment.
5
+ */
6
+ export function getPatternParts(path) {
7
+ const parts = [];
8
+ let current = {
9
+ segment: ''
10
+ };
11
+ let isRegex = false;
12
+ let isParam = false;
13
+ let regexInnerParens = 0;
14
+
15
+ // One extra iteration to add the last character
16
+ for (let i = 0; i <= path.length; i++) {
17
+ const char = path[i];
18
+ if (char != null) {
19
+ current.segment += char;
20
+ }
21
+ if (char === ':') {
22
+ // The segment must start with a colon if it's a param
23
+ if (current.segment === ':') {
24
+ isParam = true;
25
+ } else {
26
+ throw new Error(`Encountered ':' in the middle of a segment in path: ${path}`);
27
+ }
28
+ } else if (char === '(') {
29
+ if (isParam) {
30
+ if (isRegex) {
31
+ // The '(' is part of the regex if we're already inside one
32
+ regexInnerParens++;
33
+ } else {
34
+ isRegex = true;
35
+ }
36
+ } else {
37
+ throw new Error(`Encountered '(' without preceding ':' in path: ${path}`);
38
+ }
39
+ } else if (char === ')') {
40
+ if (isParam && isRegex) {
41
+ if (regexInnerParens) {
42
+ // The ')' is part of the regex if we're already inside one
43
+ regexInnerParens--;
44
+ current.regex += char;
45
+ } else {
46
+ isRegex = false;
47
+ isParam = false;
48
+ }
49
+ } else {
50
+ throw new Error(`Encountered ')' without preceding '(' in path: ${path}`);
51
+ }
52
+ } else if (char === '?') {
53
+ if (current.param) {
54
+ isParam = false;
55
+ current.optional = true;
56
+ } else {
57
+ throw new Error(`Encountered '?' without preceding ':' in path: ${path}`);
58
+ }
59
+ } else if (char == null || char === '/' && !isRegex) {
60
+ isParam = false;
61
+
62
+ // Remove trailing slash from segment
63
+ current.segment = current.segment.replace(/\/$/, '');
64
+ if (current.segment === '') {
65
+ continue;
66
+ }
67
+ if (current.param) {
68
+ current.param = current.param.replace(/^:/, '');
69
+ }
70
+ if (current.regex) {
71
+ current.regex = current.regex.replace(/^\(/, '').replace(/\)$/, '');
72
+ }
73
+ parts.push(current);
74
+ if (char == null) {
75
+ break;
76
+ }
77
+ current = {
78
+ segment: ''
79
+ };
80
+ }
81
+ if (isRegex) {
82
+ current.regex = current.regex || '';
83
+ current.regex += char;
84
+ }
85
+ if (isParam && !isRegex) {
86
+ current.param = current.param || '';
87
+ current.param += char;
88
+ }
89
+ }
90
+ if (isRegex) {
91
+ throw new Error(`Could not find closing ')' in path: ${path}`);
92
+ }
93
+ const params = parts.map(part => part.param).filter(Boolean);
94
+ for (const [index, param] of params.entries()) {
95
+ if (params.indexOf(param) !== index) {
96
+ throw new Error(`Duplicate param name '${param}' found in path: ${path}`);
97
+ }
98
+ }
99
+ return parts;
100
+ }
101
+ //# sourceMappingURL=getPatternParts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getPatternParts","path","parts","current","segment","isRegex","isParam","regexInnerParens","i","length","char","Error","regex","param","optional","replace","push","params","map","part","filter","Boolean","index","entries","indexOf"],"sourceRoot":"../../src","sources":["getPatternParts.tsx"],"mappings":"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","ignoreList":[]}