@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
@@ -196,12 +196,17 @@ function createPathConfigForStaticNavigation(tree, options, auto) {
196
196
  } else {
197
197
  Object.assign(screenConfig, item.linking);
198
198
  }
199
+ if (typeof screenConfig.path === 'string') {
200
+ // Normalize the path to remove leading and trailing slashes
201
+ screenConfig.path = screenConfig.path.split('/').filter(Boolean).join('/');
202
+ }
199
203
  }
200
204
  let screens;
205
+ const skipInitialDetectionInChild = skipInitialDetection || screenConfig.path != null && screenConfig.path !== '';
201
206
  if ('config' in item) {
202
- screens = createPathConfigForTree(item, undefined, skipInitialDetection || screenConfig.path != null);
207
+ screens = createPathConfigForTree(item, undefined, skipInitialDetectionInChild);
203
208
  } else if ('screen' in item && 'config' in item.screen && (item.screen.config.screens || item.screen.config.groups)) {
204
- screens = createPathConfigForTree(item.screen, undefined, skipInitialDetection || screenConfig.path != null);
209
+ screens = createPathConfigForTree(item.screen, undefined, skipInitialDetectionInChild);
205
210
  }
206
211
  if (screens) {
207
212
  screenConfig.screens = screens;
@@ -210,15 +215,10 @@ function createPathConfigForStaticNavigation(tree, options, auto) {
210
215
  // Skip generating path for screens that specify linking config as `undefined` or `null` explicitly
211
216
  !('linking' in item && item.linking == null)) {
212
217
  if (screenConfig.path != null) {
213
- if (!skipInitialDetection) {
214
- // Normalize the path to remove leading and trailing slashes
215
- const path = screenConfig.path?.split('/').filter(Boolean).join('/');
216
-
218
+ if (!skipInitialDetection && screenConfig.path === '') {
217
219
  // We encounter a leaf screen with empty path,
218
220
  // Clear the initial screen config as it's not needed anymore
219
- if (!skipInitialDetection && path === '') {
220
- initialScreenConfig = undefined;
221
- }
221
+ initialScreenConfig = undefined;
222
222
  }
223
223
  } else {
224
224
  if (!skipInitialDetection && initialScreenConfig == null) {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","React","_reactIs","_useRoute","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","MemoizedScreen","memo","component","route","useRoute","children","createElement","displayName","getItemsFromScreens","Screen","screens","entries","map","name","item","props","useIf","isNavigator","screen","if","_if","rest","isValidElementType","createComponentForStaticNavigation","Error","element","jsx","shouldRender","tree","Navigator","Group","config","groups","items","key","push","group","groupItems","navigationKey","NavigatorComponent","createPathConfigForStaticNavigation","options","auto","initialScreenConfig","createPathConfigForTree","o","skipInitialDetection","createPathConfigForScreens","initialRouteName","fromEntries","sort","b","screenConfig","linking","path","assign","undefined","split","filter","Boolean","join","replace","toLowerCase","keys","length","forEach"],"sourceRoot":"../../src","sources":["StaticNavigation.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","React","_reactIs","_useRoute","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","MemoizedScreen","memo","component","route","useRoute","children","createElement","displayName","getItemsFromScreens","Screen","screens","entries","map","name","item","props","useIf","isNavigator","screen","if","_if","rest","isValidElementType","createComponentForStaticNavigation","Error","element","jsx","shouldRender","tree","Navigator","Group","config","groups","items","key","push","group","groupItems","navigationKey","NavigatorComponent","createPathConfigForStaticNavigation","options","auto","initialScreenConfig","createPathConfigForTree","o","skipInitialDetection","createPathConfigForScreens","initialRouteName","fromEntries","sort","b","screenConfig","linking","path","assign","split","filter","Boolean","join","skipInitialDetectionInChild","undefined","replace","toLowerCase","keys","length","forEach"],"sourceRoot":"../../src","sources":["StaticNavigation.tsx"],"mappings":"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","ignoreList":[]}
@@ -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":[]}