@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
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.arrayStartsWith = arrayStartsWith;
7
+ /**
8
+ * Compare two arrays to check if the first array starts with the second array.
9
+ */
10
+ function arrayStartsWith(array, start) {
11
+ if (start.length > array.length) {
12
+ return false;
13
+ }
14
+ return start.every((it, index) => it === array[index]);
15
+ }
16
+ //# 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;AACO,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":[]}
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getPathFromState = getPathFromState;
7
7
  var queryString = _interopRequireWildcard(require("query-string"));
8
+ var _getPatternParts = require("./getPatternParts.js");
8
9
  var _validatePathConfig = require("./validatePathConfig.js");
9
10
  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); }
10
11
  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; }
@@ -56,7 +57,7 @@ const getNormalizedConfigs = options => {
56
57
  */
57
58
  function getPathFromState(state, options) {
58
59
  if (state == null) {
59
- throw Error("Got 'undefined' for the navigation state. You must pass a valid state object.");
60
+ throw Error(`Got '${String(state)}' for the navigation state. You must pass a valid state object.`);
60
61
  }
61
62
  if (options) {
62
63
  (0, _validatePathConfig.validatePathConfig)(options);
@@ -68,21 +69,21 @@ function getPathFromState(state, options) {
68
69
  while (current) {
69
70
  let index = typeof current.index === 'number' ? current.index : 0;
70
71
  let route = current.routes[index];
71
- let pattern;
72
+ let parts;
72
73
  let focusedParams;
73
- const focusedRoute = getActiveRoute(state);
74
74
  let currentOptions = configs;
75
+ const focusedRoute = getActiveRoute(state);
75
76
 
76
77
  // Keep all the route names that appeared during going deeper in config in case the pattern is resolved to undefined
77
78
  const nestedRouteNames = [];
78
79
  let hasNext = true;
79
80
  while (route.name in currentOptions && hasNext) {
80
- pattern = currentOptions[route.name].pattern;
81
+ parts = currentOptions[route.name].parts;
81
82
  nestedRouteNames.push(route.name);
82
83
  if (route.params) {
83
84
  const stringify = currentOptions[route.name]?.stringify;
84
85
  const currentParams = Object.fromEntries(Object.entries(route.params).map(([key, value]) => [key, stringify?.[key] ? stringify[key](value) : String(value)]));
85
- if (pattern) {
86
+ if (parts?.length) {
86
87
  Object.assign(allParams, currentParams);
87
88
  }
88
89
  if (focusedRoute === route) {
@@ -91,15 +92,17 @@ function getPathFromState(state, options) {
91
92
  focusedParams = {
92
93
  ...currentParams
93
94
  };
94
- pattern?.split('/').filter(p => p.startsWith(':'))
95
+ parts
95
96
  // eslint-disable-next-line no-loop-func
96
- .forEach(p => {
97
- const name = getParamName(p);
98
-
99
- // Remove the params present in the pattern since we'll only use the rest for query string
100
- if (focusedParams) {
101
- // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
102
- delete focusedParams[name];
97
+ ?.forEach(({
98
+ param
99
+ }) => {
100
+ if (param) {
101
+ // Remove the params present in the pattern since we'll only use the rest for query string
102
+ if (focusedParams) {
103
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
104
+ delete focusedParams[param];
105
+ }
103
106
  }
104
107
  });
105
108
  }
@@ -123,24 +126,23 @@ function getPathFromState(state, options) {
123
126
  }
124
127
  }
125
128
  }
126
- if (pattern === undefined) {
127
- pattern = nestedRouteNames.join('/');
128
- }
129
129
  if (currentOptions[route.name] !== undefined) {
130
- path += pattern.split('/').map(p => {
131
- const name = getParamName(p);
132
-
130
+ path += parts?.map(({
131
+ segment,
132
+ param,
133
+ optional
134
+ }) => {
133
135
  // We don't know what to show for wildcard patterns
134
136
  // Showing the route name seems ok, though whatever we show here will be incorrect
135
137
  // Since the page doesn't actually exist
136
- if (p === '*') {
138
+ if (segment === '*') {
137
139
  return route.name;
138
140
  }
139
141
 
140
142
  // If the path has a pattern for a param, put the param in the path
141
- if (p.startsWith(':')) {
142
- const value = allParams[name];
143
- if (value === undefined && p.endsWith('?')) {
143
+ if (param) {
144
+ const value = allParams[param];
145
+ if (value === undefined && optional) {
144
146
  // Optional params without value assigned in route.params should be ignored
145
147
  return '';
146
148
  }
@@ -149,13 +151,13 @@ function getPathFromState(state, options) {
149
151
  // https://datatracker.ietf.org/doc/html/rfc3986#section-3.3 (see pchar definition)
150
152
  return String(value).replace(/[^A-Za-z0-9\-._~!$&'()*+,;=:@]/g, char => encodeURIComponent(char));
151
153
  }
152
- return encodeURIComponent(p);
154
+ return encodeURIComponent(segment);
153
155
  }).join('/');
154
156
  } else {
155
157
  path += encodeURIComponent(route.name);
156
158
  }
157
- if (!focusedParams) {
158
- focusedParams = focusedRoute.params;
159
+ if (!focusedParams && focusedRoute.params) {
160
+ focusedParams = Object.fromEntries(Object.entries(focusedRoute.params).map(([key, value]) => [key, String(value)]));
159
161
  }
160
162
  if (route.state) {
161
163
  path += '/';
@@ -176,24 +178,33 @@ function getPathFromState(state, options) {
176
178
  current = route.state;
177
179
  }
178
180
 
181
+ // Include the root path if specified
182
+ if (options?.path) {
183
+ path = `${options.path}/${path}`;
184
+ }
185
+
179
186
  // Remove multiple as well as trailing slashes
180
187
  path = path.replace(/\/+/g, '/');
181
188
  path = path.length > 1 ? path.replace(/\/$/, '') : path;
182
189
 
183
- // Include the root path if specified
184
- if (options?.path) {
185
- path = joinPaths(options.path, path);
190
+ // If path doesn't start with a slash, add it
191
+ // This makes sure that history.pushState will update the path correctly instead of appending
192
+ if (!path.startsWith('/')) {
193
+ path = `/${path}`;
186
194
  }
187
195
  return path;
188
196
  }
189
- const getParamName = pattern => pattern.replace(/^:/, '').replace(/\?$/, '');
190
- const joinPaths = (...paths) => [].concat(...paths.map(p => p.split('/'))).filter(Boolean).join('/');
191
- const createConfigItem = (config, parentPattern) => {
197
+ const createConfigItem = (config, parentParts) => {
192
198
  if (typeof config === 'string') {
193
199
  // If a string is specified as the value of the key(e.g. Foo: '/path'), use it as the pattern
194
- const pattern = parentPattern ? joinPaths(parentPattern, config) : config;
200
+ const parts = (0, _getPatternParts.getPatternParts)(config);
201
+ if (parentParts) {
202
+ return {
203
+ parts: [...parentParts, ...parts]
204
+ };
205
+ }
195
206
  return {
196
- pattern
207
+ parts
197
208
  };
198
209
  }
199
210
  if (config.exact && config.path === undefined) {
@@ -202,17 +213,16 @@ const createConfigItem = (config, parentPattern) => {
202
213
 
203
214
  // If an object is specified as the value (e.g. Foo: { ... }),
204
215
  // It can have `path` property and `screens` prop which has nested configs
205
- const pattern = config.exact !== true ? joinPaths(parentPattern || '', config.path || '') : config.path || '';
206
- const screens = config.screens ? createNormalizedConfigs(config.screens, pattern) : undefined;
216
+ const parts = config.exact !== true ? [...(parentParts || []), ...(config.path ? (0, _getPatternParts.getPatternParts)(config.path) : [])] : config.path ? (0, _getPatternParts.getPatternParts)(config.path) : undefined;
217
+ const screens = config.screens ? createNormalizedConfigs(config.screens, parts) : undefined;
207
218
  return {
208
- // Normalize pattern to remove any leading, trailing slashes, duplicate slashes etc.
209
- pattern: pattern?.split('/').filter(Boolean).join('/'),
219
+ parts,
210
220
  stringify: config.stringify,
211
221
  screens
212
222
  };
213
223
  };
214
- const createNormalizedConfigs = (options, pattern) => Object.fromEntries(Object.entries(options).map(([name, c]) => {
215
- const result = createConfigItem(c, pattern);
224
+ const createNormalizedConfigs = (options, parts) => Object.fromEntries(Object.entries(options).map(([name, c]) => {
225
+ const result = createConfigItem(c, parts);
216
226
  return [name, result];
217
227
  }));
218
228
  //# sourceMappingURL=getPathFromState.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["queryString","_interopRequireWildcard","require","_validatePathConfig","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","getActiveRoute","state","route","index","routes","length","cachedNormalizedConfigs","getNormalizedConfigs","options","screens","cached","normalizedConfigs","createNormalizedConfigs","getPathFromState","Error","validatePathConfig","configs","path","current","allParams","pattern","focusedParams","focusedRoute","currentOptions","nestedRouteNames","hasNext","name","push","params","stringify","currentParams","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","_interopRequireWildcard","require","_getPatternParts","_validatePathConfig","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","getActiveRoute","state","route","index","routes","length","cachedNormalizedConfigs","getNormalizedConfigs","options","screens","cached","normalizedConfigs","createNormalizedConfigs","getPathFromState","Error","String","validatePathConfig","configs","path","current","allParams","parts","focusedParams","currentOptions","focusedRoute","nestedRouteNames","hasNext","name","push","params","stringify","currentParams","fromEntries","entries","map","key","value","assign","forEach","param","undefined","nextRoute","nestedConfig","segment","optional","replace","char","encodeURIComponent","join","query","sort","startsWith","createConfigItem","config","parentParts","getPatternParts","exact","c","result"],"sourceRoot":"../../src","sources":["getPathFromState.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getPatternParts = getPatternParts;
7
+ /**
8
+ * Parse a path into an array of parts with information about each segment.
9
+ */
10
+ function getPatternParts(path) {
11
+ const parts = [];
12
+ let current = {
13
+ segment: ''
14
+ };
15
+ let isRegex = false;
16
+ let isParam = false;
17
+ let regexInnerParens = 0;
18
+
19
+ // One extra iteration to add the last character
20
+ for (let i = 0; i <= path.length; i++) {
21
+ const char = path[i];
22
+ if (char != null) {
23
+ current.segment += char;
24
+ }
25
+ if (char === ':') {
26
+ // The segment must start with a colon if it's a param
27
+ if (current.segment === ':') {
28
+ isParam = true;
29
+ } else {
30
+ throw new Error(`Encountered ':' in the middle of a segment in path: ${path}`);
31
+ }
32
+ } else if (char === '(') {
33
+ if (isParam) {
34
+ if (isRegex) {
35
+ // The '(' is part of the regex if we're already inside one
36
+ regexInnerParens++;
37
+ } else {
38
+ isRegex = true;
39
+ }
40
+ } else {
41
+ throw new Error(`Encountered '(' without preceding ':' in path: ${path}`);
42
+ }
43
+ } else if (char === ')') {
44
+ if (isParam && isRegex) {
45
+ if (regexInnerParens) {
46
+ // The ')' is part of the regex if we're already inside one
47
+ regexInnerParens--;
48
+ current.regex += char;
49
+ } else {
50
+ isRegex = false;
51
+ isParam = false;
52
+ }
53
+ } else {
54
+ throw new Error(`Encountered ')' without preceding '(' in path: ${path}`);
55
+ }
56
+ } else if (char === '?') {
57
+ if (current.param) {
58
+ isParam = false;
59
+ current.optional = true;
60
+ } else {
61
+ throw new Error(`Encountered '?' without preceding ':' in path: ${path}`);
62
+ }
63
+ } else if (char == null || char === '/' && !isRegex) {
64
+ isParam = false;
65
+
66
+ // Remove trailing slash from segment
67
+ current.segment = current.segment.replace(/\/$/, '');
68
+ if (current.segment === '') {
69
+ continue;
70
+ }
71
+ if (current.param) {
72
+ current.param = current.param.replace(/^:/, '');
73
+ }
74
+ if (current.regex) {
75
+ current.regex = current.regex.replace(/^\(/, '').replace(/\)$/, '');
76
+ }
77
+ parts.push(current);
78
+ if (char == null) {
79
+ break;
80
+ }
81
+ current = {
82
+ segment: ''
83
+ };
84
+ }
85
+ if (isRegex) {
86
+ current.regex = current.regex || '';
87
+ current.regex += char;
88
+ }
89
+ if (isParam && !isRegex) {
90
+ current.param = current.param || '';
91
+ current.param += char;
92
+ }
93
+ }
94
+ if (isRegex) {
95
+ throw new Error(`Could not find closing ')' in path: ${path}`);
96
+ }
97
+ const params = parts.map(part => part.param).filter(Boolean);
98
+ for (const [index, param] of params.entries()) {
99
+ if (params.indexOf(param) !== index) {
100
+ throw new Error(`Duplicate param name '${param}' found in path: ${path}`);
101
+ }
102
+ }
103
+ return parts;
104
+ }
105
+ //# 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":[]}