@react-navigation/core 8.0.0-alpha.3 → 8.0.0-alpha.31

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 (285) hide show
  1. package/lib/module/BaseNavigationContainer.js +38 -19
  2. package/lib/module/BaseNavigationContainer.js.map +1 -1
  3. package/lib/module/ConsumedParamsContext.js +5 -0
  4. package/lib/module/ConsumedParamsContext.js.map +1 -0
  5. package/lib/module/DataLoading.js +127 -0
  6. package/lib/module/DataLoading.js.map +1 -0
  7. package/lib/module/NavigationBuilderContext.js +1 -0
  8. package/lib/module/NavigationBuilderContext.js.map +1 -1
  9. package/lib/module/NavigationIndependentTree.js +20 -8
  10. package/lib/module/NavigationIndependentTree.js.map +1 -1
  11. package/lib/module/NavigationProvider.js +22 -11
  12. package/lib/module/NavigationProvider.js.map +1 -1
  13. package/lib/module/NavigationStateContext.js +3 -0
  14. package/lib/module/NavigationStateContext.js.map +1 -1
  15. package/lib/module/PreventRemoveContext.js.map +1 -1
  16. package/lib/module/PreventRemoveProvider.js +37 -27
  17. package/lib/module/PreventRemoveProvider.js.map +1 -1
  18. package/lib/module/SceneView.js +10 -41
  19. package/lib/module/SceneView.js.map +1 -1
  20. package/lib/module/StaticNavigation.js +179 -50
  21. package/lib/module/StaticNavigation.js.map +1 -1
  22. package/lib/module/StaticTreeContext.js +5 -0
  23. package/lib/module/StaticTreeContext.js.map +1 -0
  24. package/lib/module/checkSerializable.js +18 -13
  25. package/lib/module/checkSerializable.js.map +1 -1
  26. package/lib/module/createNavigationContainerRef.js +6 -8
  27. package/lib/module/createNavigationContainerRef.js.map +1 -1
  28. package/lib/module/createNavigatorFactory.js +27 -5
  29. package/lib/module/createNavigatorFactory.js.map +1 -1
  30. package/lib/module/findFocusedRoute.js +7 -4
  31. package/lib/module/findFocusedRoute.js.map +1 -1
  32. package/lib/module/getActionFromState.js +45 -20
  33. package/lib/module/getActionFromState.js.map +1 -1
  34. package/lib/module/getPathFromState.js +171 -90
  35. package/lib/module/getPathFromState.js.map +1 -1
  36. package/lib/module/getPatternParts.js +20 -4
  37. package/lib/module/getPatternParts.js.map +1 -1
  38. package/lib/module/getStateFromPath.js +487 -217
  39. package/lib/module/getStateFromPath.js.map +1 -1
  40. package/lib/module/getStateFromRouteParams.js +23 -0
  41. package/lib/module/getStateFromRouteParams.js.map +1 -0
  42. package/lib/module/index.js +5 -4
  43. package/lib/module/index.js.map +1 -1
  44. package/lib/module/theming/useTheme.js +1 -1
  45. package/lib/module/theming/useTheme.js.map +1 -1
  46. package/lib/module/types.js +35 -0
  47. package/lib/module/types.js.map +1 -1
  48. package/lib/module/useDescriptors.js +21 -11
  49. package/lib/module/useDescriptors.js.map +1 -1
  50. package/lib/module/useEventEmitter.js +48 -33
  51. package/lib/module/useEventEmitter.js.map +1 -1
  52. package/lib/module/useFocusEvents.js +12 -4
  53. package/lib/module/useFocusEvents.js.map +1 -1
  54. package/lib/module/useFocusedListenersChildrenAdapter.js +2 -2
  55. package/lib/module/useFocusedListenersChildrenAdapter.js.map +1 -1
  56. package/lib/module/useIsFocused.js +7 -12
  57. package/lib/module/useIsFocused.js.map +1 -1
  58. package/lib/module/useKeyedChildListeners.js +4 -2
  59. package/lib/module/useKeyedChildListeners.js.map +1 -1
  60. package/lib/module/useLazyValue.js.map +1 -1
  61. package/lib/module/useNavigation.js +2 -15
  62. package/lib/module/useNavigation.js.map +1 -1
  63. package/lib/module/useNavigationBuilder.js +204 -131
  64. package/lib/module/useNavigationBuilder.js.map +1 -1
  65. package/lib/module/useNavigationCache.js +22 -17
  66. package/lib/module/useNavigationCache.js.map +1 -1
  67. package/lib/module/useNavigationHelpers.js +28 -10
  68. package/lib/module/useNavigationHelpers.js.map +1 -1
  69. package/lib/module/useNavigationIndependentTree.js +1 -1
  70. package/lib/module/useNavigationIndependentTree.js.map +1 -1
  71. package/lib/module/useNavigationState.js +125 -45
  72. package/lib/module/useNavigationState.js.map +1 -1
  73. package/lib/module/useOnAction.js +37 -7
  74. package/lib/module/useOnAction.js.map +1 -1
  75. package/lib/module/useOnGetState.js +6 -3
  76. package/lib/module/useOnGetState.js.map +1 -1
  77. package/lib/module/useOnPreventRemove.js +39 -30
  78. package/lib/module/useOnPreventRemove.js.map +1 -1
  79. package/lib/module/useOnRouteFocus.js +1 -1
  80. package/lib/module/useOnRouteFocus.js.map +1 -1
  81. package/lib/module/useOptionsGetters.js +10 -5
  82. package/lib/module/useOptionsGetters.js.map +1 -1
  83. package/lib/module/usePreventRemove.js +10 -3
  84. package/lib/module/usePreventRemove.js.map +1 -1
  85. package/lib/module/usePreventRemoveContext.js +1 -1
  86. package/lib/module/usePreventRemoveContext.js.map +1 -1
  87. package/lib/module/useRegisterNavigator.js +2 -2
  88. package/lib/module/useRegisterNavigator.js.map +1 -1
  89. package/lib/module/useRoute.js +2 -0
  90. package/lib/module/useRoute.js.map +1 -1
  91. package/lib/module/useRouteCache.js +17 -11
  92. package/lib/module/useRouteCache.js.map +1 -1
  93. package/lib/module/useScheduleUpdate.js +9 -9
  94. package/lib/module/useScheduleUpdate.js.map +1 -1
  95. package/lib/module/useStateForPath.js +1 -1
  96. package/lib/module/useStateForPath.js.map +1 -1
  97. package/lib/module/useSyncState.js +32 -9
  98. package/lib/module/useSyncState.js.map +1 -1
  99. package/lib/module/validatePathConfig.js +50 -36
  100. package/lib/module/validatePathConfig.js.map +1 -1
  101. package/lib/typescript/src/BaseNavigationContainer.d.ts +6 -3
  102. package/lib/typescript/src/BaseNavigationContainer.d.ts.map +1 -1
  103. package/lib/typescript/src/ConsumedParamsContext.d.ts +3 -0
  104. package/lib/typescript/src/ConsumedParamsContext.d.ts.map +1 -0
  105. package/lib/typescript/src/DataLoading.d.ts +21 -0
  106. package/lib/typescript/src/DataLoading.d.ts.map +1 -0
  107. package/lib/typescript/src/EnsureSingleNavigator.d.ts +1 -1
  108. package/lib/typescript/src/EnsureSingleNavigator.d.ts.map +1 -1
  109. package/lib/typescript/src/Group.d.ts +1 -1
  110. package/lib/typescript/src/Group.d.ts.map +1 -1
  111. package/lib/typescript/src/NavigationBuilderContext.d.ts +9 -8
  112. package/lib/typescript/src/NavigationBuilderContext.d.ts.map +1 -1
  113. package/lib/typescript/src/NavigationContainerRefContext.d.ts +1 -1
  114. package/lib/typescript/src/NavigationContainerRefContext.d.ts.map +1 -1
  115. package/lib/typescript/src/NavigationFocusedRouteStateContext.d.ts +4 -4
  116. package/lib/typescript/src/NavigationFocusedRouteStateContext.d.ts.map +1 -1
  117. package/lib/typescript/src/NavigationHelpersContext.d.ts +1 -1
  118. package/lib/typescript/src/NavigationHelpersContext.d.ts.map +1 -1
  119. package/lib/typescript/src/NavigationIndependentTree.d.ts +1 -1
  120. package/lib/typescript/src/NavigationIndependentTree.d.ts.map +1 -1
  121. package/lib/typescript/src/NavigationProvider.d.ts +12 -13
  122. package/lib/typescript/src/NavigationProvider.d.ts.map +1 -1
  123. package/lib/typescript/src/NavigationStateContext.d.ts +4 -3
  124. package/lib/typescript/src/NavigationStateContext.d.ts.map +1 -1
  125. package/lib/typescript/src/PreventRemoveContext.d.ts +1 -0
  126. package/lib/typescript/src/PreventRemoveContext.d.ts.map +1 -1
  127. package/lib/typescript/src/PreventRemoveProvider.d.ts +1 -1
  128. package/lib/typescript/src/PreventRemoveProvider.d.ts.map +1 -1
  129. package/lib/typescript/src/SceneView.d.ts +4 -2
  130. package/lib/typescript/src/SceneView.d.ts.map +1 -1
  131. package/lib/typescript/src/Screen.d.ts +1 -1
  132. package/lib/typescript/src/Screen.d.ts.map +1 -1
  133. package/lib/typescript/src/StaticContainer.d.ts +1 -1
  134. package/lib/typescript/src/StaticContainer.d.ts.map +1 -1
  135. package/lib/typescript/src/StaticNavigation.d.ts +189 -109
  136. package/lib/typescript/src/StaticNavigation.d.ts.map +1 -1
  137. package/lib/typescript/src/StaticTreeContext.d.ts +4 -0
  138. package/lib/typescript/src/StaticTreeContext.d.ts.map +1 -0
  139. package/lib/typescript/src/checkSerializable.d.ts +8 -4
  140. package/lib/typescript/src/checkSerializable.d.ts.map +1 -1
  141. package/lib/typescript/src/createNavigationContainerRef.d.ts +1 -1
  142. package/lib/typescript/src/createNavigationContainerRef.d.ts.map +1 -1
  143. package/lib/typescript/src/createNavigatorFactory.d.ts +23 -5
  144. package/lib/typescript/src/createNavigatorFactory.d.ts.map +1 -1
  145. package/lib/typescript/src/findFocusedRoute.d.ts +3 -8
  146. package/lib/typescript/src/findFocusedRoute.d.ts.map +1 -1
  147. package/lib/typescript/src/getActionFromState.d.ts +4 -4
  148. package/lib/typescript/src/getActionFromState.d.ts.map +1 -1
  149. package/lib/typescript/src/getPathFromState.d.ts +3 -3
  150. package/lib/typescript/src/getPathFromState.d.ts.map +1 -1
  151. package/lib/typescript/src/getPatternParts.d.ts +1 -0
  152. package/lib/typescript/src/getPatternParts.d.ts.map +1 -1
  153. package/lib/typescript/src/getStateFromPath.d.ts +4 -7
  154. package/lib/typescript/src/getStateFromPath.d.ts.map +1 -1
  155. package/lib/typescript/src/getStateFromRouteParams.d.ts +3 -0
  156. package/lib/typescript/src/getStateFromRouteParams.d.ts.map +1 -0
  157. package/lib/typescript/src/index.d.ts +36 -33
  158. package/lib/typescript/src/index.d.ts.map +1 -1
  159. package/lib/typescript/src/theming/ThemeContext.d.ts +1 -1
  160. package/lib/typescript/src/theming/ThemeContext.d.ts.map +1 -1
  161. package/lib/typescript/src/theming/ThemeProvider.d.ts +2 -2
  162. package/lib/typescript/src/theming/ThemeProvider.d.ts.map +1 -1
  163. package/lib/typescript/src/theming/useTheme.d.ts +1 -1
  164. package/lib/typescript/src/theming/useTheme.d.ts.map +1 -1
  165. package/lib/typescript/src/types.d.ts +260 -159
  166. package/lib/typescript/src/types.d.ts.map +1 -1
  167. package/lib/typescript/src/useChildListeners.d.ts +3 -3
  168. package/lib/typescript/src/useChildListeners.d.ts.map +1 -1
  169. package/lib/typescript/src/useComponent.d.ts +1 -1
  170. package/lib/typescript/src/useComponent.d.ts.map +1 -1
  171. package/lib/typescript/src/useDescriptors.d.ts +10 -9
  172. package/lib/typescript/src/useDescriptors.d.ts.map +1 -1
  173. package/lib/typescript/src/useEventEmitter.d.ts +2 -2
  174. package/lib/typescript/src/useEventEmitter.d.ts.map +1 -1
  175. package/lib/typescript/src/useFocusEvents.d.ts +2 -2
  176. package/lib/typescript/src/useFocusEvents.d.ts.map +1 -1
  177. package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts +2 -2
  178. package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts.map +1 -1
  179. package/lib/typescript/src/useIsFocused.d.ts +3 -0
  180. package/lib/typescript/src/useIsFocused.d.ts.map +1 -1
  181. package/lib/typescript/src/useKeyedChildListeners.d.ts +3 -3
  182. package/lib/typescript/src/useKeyedChildListeners.d.ts.map +1 -1
  183. package/lib/typescript/src/useLazyValue.d.ts.map +1 -1
  184. package/lib/typescript/src/useNavigation.d.ts +4 -2
  185. package/lib/typescript/src/useNavigation.d.ts.map +1 -1
  186. package/lib/typescript/src/useNavigationBuilder.d.ts +23 -30
  187. package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -1
  188. package/lib/typescript/src/useNavigationCache.d.ts +3 -3
  189. package/lib/typescript/src/useNavigationCache.d.ts.map +1 -1
  190. package/lib/typescript/src/useNavigationContainerRef.d.ts +1 -1
  191. package/lib/typescript/src/useNavigationContainerRef.d.ts.map +1 -1
  192. package/lib/typescript/src/useNavigationHelpers.d.ts +19 -27
  193. package/lib/typescript/src/useNavigationHelpers.d.ts.map +1 -1
  194. package/lib/typescript/src/useNavigationState.d.ts +17 -3
  195. package/lib/typescript/src/useNavigationState.d.ts.map +1 -1
  196. package/lib/typescript/src/useOnAction.d.ts +9 -9
  197. package/lib/typescript/src/useOnAction.d.ts.map +1 -1
  198. package/lib/typescript/src/useOnGetState.d.ts +1 -1
  199. package/lib/typescript/src/useOnGetState.d.ts.map +1 -1
  200. package/lib/typescript/src/useOnPreventRemove.d.ts +5 -9
  201. package/lib/typescript/src/useOnPreventRemove.d.ts.map +1 -1
  202. package/lib/typescript/src/useOnRouteFocus.d.ts +6 -6
  203. package/lib/typescript/src/useOnRouteFocus.d.ts.map +1 -1
  204. package/lib/typescript/src/useOptionsGetters.d.ts +1 -1
  205. package/lib/typescript/src/useOptionsGetters.d.ts.map +1 -1
  206. package/lib/typescript/src/usePreventRemove.d.ts.map +1 -1
  207. package/lib/typescript/src/usePreventRemoveContext.d.ts +2 -1
  208. package/lib/typescript/src/usePreventRemoveContext.d.ts.map +1 -1
  209. package/lib/typescript/src/useRoute.d.ts +7 -3
  210. package/lib/typescript/src/useRoute.d.ts.map +1 -1
  211. package/lib/typescript/src/useRouteCache.d.ts +5 -5
  212. package/lib/typescript/src/useRouteCache.d.ts.map +1 -1
  213. package/lib/typescript/src/useScheduleUpdate.d.ts +5 -4
  214. package/lib/typescript/src/useScheduleUpdate.d.ts.map +1 -1
  215. package/lib/typescript/src/useStateForPath.d.ts +1 -1
  216. package/lib/typescript/src/useStateForPath.d.ts.map +1 -1
  217. package/lib/typescript/src/useSyncState.d.ts +1 -0
  218. package/lib/typescript/src/useSyncState.d.ts.map +1 -1
  219. package/lib/typescript/src/utilities.d.ts +74 -37
  220. package/lib/typescript/src/utilities.d.ts.map +1 -1
  221. package/lib/typescript/src/validatePathConfig.d.ts.map +1 -1
  222. package/package.json +23 -22
  223. package/src/BaseNavigationContainer.tsx +362 -334
  224. package/src/ConsumedParamsContext.tsx +5 -0
  225. package/src/DataLoading.tsx +203 -0
  226. package/src/NavigationBuilderContext.tsx +14 -9
  227. package/src/NavigationFocusedRouteStateContext.tsx +4 -4
  228. package/src/NavigationIndependentTree.tsx +23 -12
  229. package/src/NavigationProvider.tsx +26 -15
  230. package/src/NavigationStateContext.tsx +9 -6
  231. package/src/PreventRemoveContext.tsx +1 -0
  232. package/src/PreventRemoveProvider.tsx +51 -46
  233. package/src/SceneView.tsx +11 -39
  234. package/src/StaticNavigation.tsx +659 -307
  235. package/src/StaticTreeContext.tsx +7 -0
  236. package/src/checkSerializable.tsx +35 -19
  237. package/src/createNavigationContainerRef.tsx +12 -9
  238. package/src/createNavigatorFactory.tsx +92 -8
  239. package/src/findFocusedRoute.tsx +16 -16
  240. package/src/getActionFromState.tsx +87 -51
  241. package/src/getPathFromState.tsx +254 -128
  242. package/src/getPatternParts.tsx +25 -4
  243. package/src/getStateFromPath.tsx +821 -331
  244. package/src/getStateFromRouteParams.tsx +59 -0
  245. package/src/index.tsx +55 -5
  246. package/src/theming/useTheme.tsx +1 -1
  247. package/src/types.tsx +798 -373
  248. package/src/useDescriptors.tsx +31 -14
  249. package/src/useEventEmitter.tsx +52 -38
  250. package/src/useFocusEvents.tsx +15 -7
  251. package/src/useFocusedListenersChildrenAdapter.tsx +2 -2
  252. package/src/useIsFocused.tsx +14 -21
  253. package/src/useKeyedChildListeners.tsx +4 -2
  254. package/src/useLazyValue.tsx +2 -2
  255. package/src/useNavigation.tsx +7 -24
  256. package/src/useNavigationBuilder.tsx +314 -186
  257. package/src/useNavigationCache.tsx +32 -25
  258. package/src/useNavigationHelpers.tsx +27 -10
  259. package/src/useNavigationIndependentTree.tsx +1 -1
  260. package/src/useNavigationState.tsx +168 -69
  261. package/src/useOnAction.tsx +61 -13
  262. package/src/useOnGetState.tsx +5 -3
  263. package/src/useOnPreventRemove.tsx +75 -42
  264. package/src/useOnRouteFocus.tsx +10 -12
  265. package/src/useOptionsGetters.tsx +11 -5
  266. package/src/usePreventRemove.tsx +12 -3
  267. package/src/usePreventRemoveContext.tsx +1 -1
  268. package/src/useRegisterNavigator.tsx +2 -2
  269. package/src/useRoute.tsx +20 -6
  270. package/src/useRouteCache.tsx +22 -16
  271. package/src/useScheduleUpdate.tsx +9 -10
  272. package/src/useStateForPath.tsx +1 -1
  273. package/src/useSyncState.tsx +35 -9
  274. package/src/utilities.tsx +144 -31
  275. package/src/validatePathConfig.tsx +86 -57
  276. package/lib/module/CurrentRenderContext.js +0 -10
  277. package/lib/module/CurrentRenderContext.js.map +0 -1
  278. package/lib/module/useCurrentRender.js +0 -19
  279. package/lib/module/useCurrentRender.js.map +0 -1
  280. package/lib/typescript/src/CurrentRenderContext.d.ts +0 -9
  281. package/lib/typescript/src/CurrentRenderContext.d.ts.map +0 -1
  282. package/lib/typescript/src/useCurrentRender.d.ts +0 -14
  283. package/lib/typescript/src/useCurrentRender.d.ts.map +0 -1
  284. package/src/CurrentRenderContext.tsx +0 -9
  285. package/src/useCurrentRender.tsx +0 -31
@@ -11,16 +11,12 @@ import { jsx as _jsx } from "react/jsx-runtime";
11
11
  * Util function to transform map of prevented routes to a simpler object.
12
12
  */
13
13
  const transformPreventedRoutes = preventedRoutesMap => {
14
- const preventedRoutesToTransform = [...preventedRoutesMap.values()];
15
- const preventedRoutes = preventedRoutesToTransform.reduce((acc, {
16
- routeKey,
17
- preventRemove
18
- }) => {
19
- acc[routeKey] = {
20
- preventRemove: acc[routeKey]?.preventRemove || preventRemove
14
+ const preventedRoutes = {};
15
+ for (const routeKey of preventedRoutesMap.values()) {
16
+ preventedRoutes[routeKey] = {
17
+ preventRemove: true
21
18
  };
22
- return acc;
23
- }, {});
19
+ }
24
20
  return preventedRoutes;
25
21
  };
26
22
 
@@ -32,36 +28,49 @@ export function PreventRemoveProvider({
32
28
  }) {
33
29
  const [parentId] = React.useState(() => nanoid());
34
30
  const [preventedRoutesMap, setPreventedRoutesMap] = React.useState(() => new Map());
35
- const navigation = React.useContext(NavigationHelpersContext);
36
- const route = React.useContext(NavigationRouteContext);
37
- const preventRemoveContextValue = React.useContext(PreventRemoveContext);
31
+ const registry = React.useRef(new Map());
32
+ const navigation = React.use(NavigationHelpersContext);
33
+ const route = React.use(NavigationRouteContext);
34
+ const preventRemoveContextValue = React.use(PreventRemoveContext);
38
35
  // take `setPreventRemove` from parent context - if exist it means we're in a nested context
39
36
  const setParentPrevented = preventRemoveContextValue?.setPreventRemove;
37
+ const notifyParentPrevented = preventRemoveContextValue?.notifyPreventRemove;
40
38
  const setPreventRemove = useLatestCallback((id, routeKey, preventRemove) => {
41
39
  if (preventRemove && (navigation == null || navigation?.getState().routes.every(route => route.key !== routeKey))) {
42
40
  throw new Error(`Couldn't find a route with the key ${routeKey}. Is your component inside NavigationContent?`);
43
41
  }
42
+ if (preventRemove) {
43
+ registry.current.set(id, routeKey);
44
+ } else {
45
+ registry.current.delete(id);
46
+ }
47
+ });
48
+ const notifyPreventRemove = useLatestCallback(() => {
49
+ // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect
44
50
  setPreventedRoutesMap(prevPrevented => {
51
+ const nextPrevented = registry.current;
52
+ const hasChanged = prevPrevented.size !== nextPrevented.size || [...nextPrevented].some(([id, routeKey]) => prevPrevented.get(id) !== routeKey);
53
+
45
54
  // values haven't changed - do nothing
46
- if (routeKey === prevPrevented.get(id)?.routeKey && preventRemove === prevPrevented.get(id)?.preventRemove) {
55
+ if (!hasChanged) {
47
56
  return prevPrevented;
48
57
  }
49
- const nextPrevented = new Map(prevPrevented);
50
- if (preventRemove) {
51
- nextPrevented.set(id, {
52
- routeKey,
53
- preventRemove
54
- });
55
- } else {
56
- nextPrevented.delete(id);
57
- }
58
- return nextPrevented;
58
+ return new Map(nextPrevented);
59
59
  });
60
60
  });
61
- const isPrevented = [...preventedRoutesMap.values()].some(({
62
- preventRemove
63
- }) => preventRemove);
61
+
62
+ // Sync the state on every commit in case the registry was changed by a screen
63
+ // unmounting while hidden with `<Activity>`, where no passive effects run
64
+ // Also notify the parent so nested prevention propagates upwards
64
65
  React.useEffect(() => {
66
+ notifyPreventRemove();
67
+ notifyParentPrevented?.();
68
+ return () => {
69
+ notifyParentPrevented?.();
70
+ };
71
+ });
72
+ const isPrevented = preventedRoutesMap.size > 0;
73
+ React.useInsertionEffect(() => {
65
74
  if (route?.key !== undefined && setParentPrevented !== undefined) {
66
75
  // when route is defined (and setParentPrevented) it means we're in a nested stack
67
76
  // route.key then will be the route key of parent
@@ -74,8 +83,9 @@ export function PreventRemoveProvider({
74
83
  }, [parentId, isPrevented, route?.key, setParentPrevented]);
75
84
  const value = React.useMemo(() => ({
76
85
  setPreventRemove,
86
+ notifyPreventRemove,
77
87
  preventedRoutes: transformPreventedRoutes(preventedRoutesMap)
78
- }), [setPreventRemove, preventedRoutesMap]);
88
+ }), [setPreventRemove, notifyPreventRemove, preventedRoutesMap]);
79
89
  return /*#__PURE__*/_jsx(PreventRemoveContext.Provider, {
80
90
  value: value,
81
91
  children: children
@@ -1 +1 @@
1
- {"version":3,"names":["nanoid","React","useLatestCallback","NavigationHelpersContext","NavigationRouteContext","PreventRemoveContext","jsx","_jsx","transformPreventedRoutes","preventedRoutesMap","preventedRoutesToTransform","values","preventedRoutes","reduce","acc","routeKey","preventRemove","PreventRemoveProvider","children","parentId","useState","setPreventedRoutesMap","Map","navigation","useContext","route","preventRemoveContextValue","setParentPrevented","setPreventRemove","id","getState","routes","every","key","Error","prevPrevented","get","nextPrevented","set","delete","isPrevented","some","useEffect","undefined","value","useMemo","Provider"],"sourceRoot":"../../src","sources":["PreventRemoveProvider.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["nanoid","React","useLatestCallback","NavigationHelpersContext","NavigationRouteContext","PreventRemoveContext","jsx","_jsx","transformPreventedRoutes","preventedRoutesMap","preventedRoutes","routeKey","values","preventRemove","PreventRemoveProvider","children","parentId","useState","setPreventedRoutesMap","Map","registry","useRef","navigation","use","route","preventRemoveContextValue","setParentPrevented","setPreventRemove","notifyParentPrevented","notifyPreventRemove","id","getState","routes","every","key","Error","current","set","delete","prevPrevented","nextPrevented","hasChanged","size","some","get","useEffect","isPrevented","useInsertionEffect","undefined","value","useMemo","Provider"],"sourceRoot":"../../src","sources":["PreventRemoveProvider.tsx"],"mappings":"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","ignoreList":[]}
@@ -19,6 +19,7 @@ export function SceneView({
19
19
  routeState,
20
20
  getState,
21
21
  setState,
22
+ subscribe,
22
23
  options,
23
24
  clearOptions
24
25
  }) {
@@ -42,47 +43,14 @@ export function SceneView({
42
43
  const setCurrentState = React.useCallback(child => {
43
44
  const state = getState();
44
45
  const routes = state.routes.map(r => {
45
- if (r.key !== route.key) {
46
- return r;
47
- }
48
- const nextRoute = r.state !== child ? {
49
- ...r,
50
- state: child
51
- } : r;
52
-
53
- // Before updating the state, cleanup any nested screen and state
54
- // This will avoid the navigator trying to handle them again
55
- if (nextRoute.params && ('state' in nextRoute.params && typeof nextRoute.params.state === 'object' && nextRoute.params.state !== null || 'screen' in nextRoute.params && typeof nextRoute.params.screen === 'string')) {
56
- // @ts-expect-error: we don't have correct type for params
57
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
58
- const {
59
- state,
60
- screen,
61
- params,
62
- initial,
63
- ...rest
64
- } = nextRoute.params;
65
- if (Object.keys(rest).length) {
66
- return {
67
- ...nextRoute,
68
- params: rest
69
- };
70
- } else {
71
- const {
72
- // We destructure the params to omit them
73
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
74
- params,
75
- ...restRoute
76
- } = nextRoute;
77
- return restRoute;
78
- }
46
+ if (r.key === route.key && r.state !== child) {
47
+ return {
48
+ ...r,
49
+ state: child
50
+ };
79
51
  }
80
- return nextRoute;
52
+ return r;
81
53
  });
82
-
83
- // Make sure not to update state if routes haven't changed
84
- // Otherwise this will result in params cleanup as well
85
- // We only want to cleanup params when state changes - after they are used
86
54
  if (!isArrayEqual(state.routes, routes)) {
87
55
  setState({
88
56
  ...state,
@@ -101,7 +69,7 @@ export function SceneView({
101
69
  // eslint-disable-next-line react-hooks/exhaustive-deps
102
70
  }, []);
103
71
  const getIsInitial = React.useCallback(() => isInitialRef.current, []);
104
- const parentFocusedRouteState = React.useContext(NavigationFocusedRouteStateContext);
72
+ const parentFocusedRouteState = React.use(NavigationFocusedRouteStateContext);
105
73
  const focusedRouteState = React.useMemo(() => {
106
74
  const state = {
107
75
  routes: [{
@@ -131,11 +99,12 @@ export function SceneView({
131
99
  state: routeState,
132
100
  getState: getCurrentState,
133
101
  setState: setCurrentState,
102
+ subscribe,
134
103
  getKey,
135
104
  setKey,
136
105
  getIsInitial,
137
106
  addOptionsGetter
138
- }), [routeState, getCurrentState, setCurrentState, getKey, setKey, getIsInitial, addOptionsGetter]);
107
+ }), [routeState, getCurrentState, setCurrentState, subscribe, getKey, setKey, getIsInitial, addOptionsGetter]);
139
108
  const ScreenComponent = screen.getComponent ? screen.getComponent() : screen.component;
140
109
  return /*#__PURE__*/_jsx(NavigationStateContext.Provider, {
141
110
  value: context,
@@ -1 +1 @@
1
- {"version":3,"names":["React","EnsureSingleNavigator","isArrayEqual","NavigationFocusedRouteStateContext","NavigationStateContext","StaticContainer","useOptionsGetters","jsx","_jsx","SceneView","screen","route","navigation","routeState","getState","setState","options","clearOptions","navigatorKeyRef","useRef","undefined","getKey","useCallback","current","addOptionsGetter","key","setKey","getCurrentState","state","currentRoute","routes","find","r","setCurrentState","child","map","nextRoute","params","initial","rest","Object","keys","length","restRoute","isInitialRef","useEffect","getIsInitial","parentFocusedRouteState","useContext","focusedRouteState","useMemo","name","path","addState","parent","parentRoute","context","ScreenComponent","getComponent","component","Provider","value","children","render"],"sourceRoot":"../../src","sources":["SceneView.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","EnsureSingleNavigator","isArrayEqual","NavigationFocusedRouteStateContext","NavigationStateContext","StaticContainer","useOptionsGetters","jsx","_jsx","SceneView","screen","route","navigation","routeState","getState","setState","subscribe","options","clearOptions","navigatorKeyRef","useRef","undefined","getKey","useCallback","current","addOptionsGetter","key","setKey","getCurrentState","state","currentRoute","routes","find","r","setCurrentState","child","map","isInitialRef","useEffect","getIsInitial","parentFocusedRouteState","use","focusedRouteState","useMemo","name","params","path","addState","parent","parentRoute","context","ScreenComponent","getComponent","component","Provider","value","children","render"],"sourceRoot":"../../src","sources":["SceneView.tsx"],"mappings":"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","ignoreList":[]}
@@ -2,14 +2,52 @@
2
2
 
3
3
  import * as React from 'react';
4
4
  import { isValidElementType } from 'react-is';
5
+ import { combinePatternParts, getPatternParts } from "./getPatternParts.js";
6
+ import { StaticTreeContext } from "./StaticTreeContext.js";
5
7
  import { useRoute } from "./useRoute.js";
6
8
 
9
+ // If the initial route's params include `undefined`, the nested navigator itself can be optional.
10
+ // If no initial route is specified, check if every nested route's params include `undefined`.
11
+ // Otherwise the nested navigator needs to be required.
12
+
13
+ // If the screens were constructed from a `Record<K, V>`,
14
+ // the screen value (`T`) may be a union.
15
+ // A naked `T extends ...` conditional would distribute over every screen in the union,
16
+ // creating a large params union per route.
17
+ // Wrapping `T` in a tuple checks the union as a whole instead of distributing,
18
+ // https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#distributive-conditional-types
19
+
20
+ // Unlike `ParamsForScreen`, we want to distribute for `Record<string, Component | StaticNavigation>`
21
+ // This creates union like:
22
+ // `C extends C ? ParamsForScreen<C> : never) | (S extends S ? ParamsForScreen<S> : never)`
23
+ // `= ParamsForScreen<C> | ParamsForScreen<S>`
24
+
25
+ // Only infer params from linking if it's a pattern (i.e., contains ':')
26
+ // or if parse is present, which can also define query params.
27
+ // This avoids inferring non-literals like 'string' without parse.
28
+
7
29
  /**
8
- * Inferred params type based on both linking config and screen.
9
- * - When linking is undefined: infers params from screen
10
- * - When screen is a nested navigator: merges path params with navigator screen params
11
- * - Otherwise: merges path params with screen component params
30
+ * Params type derived from both linking and screen.
31
+ *
32
+ * - Linking has no extractable params (no ':' in path, no `parse`): returns
33
+ * screen params alone.
34
+ * - Linking has params + screen is a nested navigator: intersects path params
35
+ * with the navigator's screen params.
36
+ * - Linking has params + screen is a component without route params: returns
37
+ * path params alone (avoids `LP & undefined = never`).
38
+ * - Linking has params + screen has route params: intersects them.
12
39
  */
40
+ import { jsx as _jsx } from "react/jsx-runtime";
41
+ /**
42
+ * Helper to create a typed `createXScreen` for static configuration.
43
+ */
44
+ export function createScreenFactory() {
45
+ return config => config;
46
+ }
47
+
48
+ // Each property is probed with `Config extends { key: infer X }` and the results are intersected.
49
+ // These conditionals stay deferred while the config is inferred, so they don't interfere with the inference.
50
+ // Indexed access (`Config['screens']`) or a mapped type over the whole config breaks the param list inference.
13
51
 
14
52
  /**
15
53
  * Props for a screen component which is rendered by a static navigator.
@@ -19,7 +57,7 @@ import { useRoute } from "./useRoute.js";
19
57
  /**
20
58
  * Infer the param list from the static navigation config.
21
59
  */
22
- import { jsx as _jsx } from "react/jsx-runtime";
60
+
23
61
  const MemoizedScreen = /*#__PURE__*/React.memo(({
24
62
  component
25
63
  }) => {
@@ -48,13 +86,13 @@ const getItemsFromScreens = (Screen, screens) => {
48
86
  component = screen;
49
87
  } else if ('config' in screen) {
50
88
  isNavigator = true;
51
- component = createComponentForStaticNavigation(screen, `${name}Navigator`);
89
+ component = screen.getComponent();
52
90
  }
53
91
  } else if (isValidElementType(item)) {
54
92
  component = item;
55
93
  } else if ('config' in item) {
56
94
  isNavigator = true;
57
- component = createComponentForStaticNavigation(item, `${name}Navigator`);
95
+ component = item.getComponent();
58
96
  }
59
97
  if (component == null) {
60
98
  throw new Error(`Couldn't find a 'screen' property for the screen '${name}'. This can happen if you passed 'undefined'. You likely forgot to export your component from the file it's defined in, or mixed up default import and named import when importing.`);
@@ -83,7 +121,7 @@ const getItemsFromScreens = (Screen, screens) => {
83
121
  * @param displayName Name of the component to be displayed in React DevTools.
84
122
  * @returns A component which renders the navigator.
85
123
  */
86
- export function createComponentForStaticNavigation(tree, displayName) {
124
+ export function createComponentForStaticConfig(tree, displayName) {
87
125
  const {
88
126
  Navigator,
89
127
  Group,
@@ -128,16 +166,76 @@ export function createComponentForStaticNavigation(tree, displayName) {
128
166
  }));
129
167
  }
130
168
  }
131
- const NavigatorComponent = () => {
169
+ if (items.length === 0) {
170
+ throw new Error("Couldn't find any screens in the 'screens' or 'groups' property. Make sure to define at least one screen in the configuration.");
171
+ }
172
+ const NavigatorComponent = ({
173
+ children: _,
174
+ ...props
175
+ }) => {
132
176
  const children = items.map(item => item());
133
- return /*#__PURE__*/_jsx(Navigator, {
134
- ...rest,
135
- children: children
177
+ const screenOptions = typeof props.screenOptions === 'function' || typeof rest.screenOptions === 'function' ? options => ({
178
+ ...(typeof rest.screenOptions === 'function' ? rest.screenOptions(options) : rest.screenOptions),
179
+ ...(typeof props.screenOptions === 'function' ? props.screenOptions(options) : props.screenOptions)
180
+ }) : {
181
+ ...rest.screenOptions,
182
+ ...props.screenOptions
183
+ };
184
+ const screenListeners = typeof props.screenListeners === 'function' || typeof rest.screenListeners === 'function' ? options => ({
185
+ ...(typeof rest.screenListeners === 'function' ? rest.screenListeners(options) : rest.screenListeners),
186
+ ...(typeof props.screenListeners === 'function' ? props.screenListeners(options) : props.screenListeners)
187
+ }) : {
188
+ ...rest.screenListeners,
189
+ ...props.screenListeners
190
+ };
191
+ return /*#__PURE__*/_jsx(StaticTreeContext.Provider, {
192
+ value: tree,
193
+ children: /*#__PURE__*/_jsx(Navigator, {
194
+ ...rest,
195
+ ...props,
196
+ screenOptions: screenOptions,
197
+ screenListeners: screenListeners,
198
+ children: children
199
+ })
136
200
  });
137
201
  };
138
202
  NavigatorComponent.displayName = displayName;
139
203
  return NavigatorComponent;
140
204
  }
205
+ // Mark screens that resolve to the same pattern and same component or navigator
206
+ const markSharedPathConfigs = (screens, sources, blocked) => {
207
+ const candidates = new Map();
208
+ const collect = (screens, parentParts, disabled) => {
209
+ for (const config of Object.values(screens)) {
210
+ if (config == null || typeof config === 'string') {
211
+ continue;
212
+ }
213
+ const parts = typeof config.path === 'string' ? combinePatternParts(parentParts, getPatternParts(config.path), config.exact) : parentParts;
214
+ if (sources.has(config) && typeof config.path === 'string') {
215
+ if (disabled) {
216
+ blocked.add(config);
217
+ }
218
+ const pattern = parts.map(part => part.segment).join('/');
219
+ const entries = candidates.get(pattern) ?? [];
220
+ entries.push(config);
221
+ candidates.set(pattern, entries);
222
+ }
223
+ if (config.screens) {
224
+ collect(config.screens, parts, disabled || config.shared === false);
225
+ }
226
+ }
227
+ };
228
+ collect(screens, [], false);
229
+ for (const entries of candidates.values()) {
230
+ for (const entry of entries) {
231
+ const source = sources.get(entry);
232
+ if (entry.shared === undefined && !blocked.has(entry) && entries.some(candidate => candidate !== entry && !blocked.has(candidate) && sources.get(candidate) === source)) {
233
+ entry.shared = true;
234
+ }
235
+ }
236
+ }
237
+ };
238
+
141
239
  /**
142
240
  * Create a path config object from a static navigation config for deep linking.
143
241
  *
@@ -160,8 +258,21 @@ export function createComponentForStaticNavigation(tree, displayName) {
160
258
  export function createPathConfigForStaticNavigation(tree, options, auto) {
161
259
  let initialScreenHasPath = false;
162
260
  let initialScreenConfig;
163
- const createPathConfigForTree = (t, o, skipInitialDetection) => {
164
- const createPathConfigForScreens = (screens, groupLinking, initialRouteName) => {
261
+ let hasEmptyPath = false;
262
+ const blocked = new WeakSet();
263
+ const sources = new WeakMap();
264
+ const createPathConfigForTree = (t, o, skipInitialDetection, allowAutoEmptyPath) => {
265
+ const initialRouteName = o?.initialRouteName ?? t.config.initialRouteName;
266
+ if (initialRouteName != null) {
267
+ const routeNames = new Set(Object.keys(t.config.screens ?? {}));
268
+ for (const group of Object.values(t.config.groups ?? {})) {
269
+ Object.keys(group.screens).forEach(name => routeNames.add(name));
270
+ }
271
+ if (!routeNames.has(initialRouteName)) {
272
+ throw new Error(`Couldn't find a screen named '${initialRouteName}' to use as 'initialRouteName'.`);
273
+ }
274
+ }
275
+ const createPathConfigForScreens = (screens, initialRouteName) => {
165
276
  return Object.fromEntries(Object.entries(screens)
166
277
  // Re-order to move the initial route to the front
167
278
  // This way we can detect the initial route correctly
@@ -175,64 +286,78 @@ export function createPathConfigForStaticNavigation(tree, options, auto) {
175
286
  return 0;
176
287
  }).map(([key, item]) => {
177
288
  const screenConfig = {};
178
- const groupPath = typeof groupLinking === 'string' ? groupLinking : groupLinking?.path;
179
- const normalizePath = path => {
180
- return `${groupPath ?? ''}/${path}`.replace(/^\//, '') // Remove extra leading slash
181
- .replace(/\/$/, ''); // Remove extra trailing slash
182
- };
183
- if ('linking' in item) {
289
+ sources.set(screenConfig, typeof item === 'object' && 'screen' in item ? item.screen : item);
290
+ const normalizePath = path => path.replace(/^\/+|\/+$/g, '');
291
+ if ('linking' in item && item.linking !== undefined) {
184
292
  if (typeof item.linking === 'string') {
185
293
  screenConfig.path = item.linking;
186
- } else {
187
- Object.assign(screenConfig, item.linking);
294
+ } else if (item.linking != null && typeof item.linking === 'object') {
295
+ Object.assign(screenConfig, {
296
+ ...item.linking
297
+ });
188
298
  }
189
299
  }
190
- if (typeof groupLinking !== 'string') {
191
- if (groupLinking?.parse != null) {
192
- screenConfig.parse = {
193
- ...groupLinking.parse,
194
- ...screenConfig.parse
195
- };
196
- }
197
- if (groupLinking?.stringify != null) {
198
- screenConfig.stringify = {
199
- ...groupLinking.stringify,
200
- ...screenConfig.stringify
201
- };
202
- }
300
+ if (screenConfig.exact && screenConfig.path == null) {
301
+ 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: ''`.");
203
302
  }
204
303
  if (typeof screenConfig.path === 'string') {
205
304
  screenConfig.path = normalizePath(screenConfig.path);
206
305
  }
306
+ if (screenConfig.alias != null) {
307
+ screenConfig.alias = screenConfig.alias.map(alias => {
308
+ if (typeof alias === 'string') {
309
+ return normalizePath(alias);
310
+ }
311
+ return {
312
+ ...alias,
313
+ path: normalizePath(alias.path)
314
+ };
315
+ });
316
+ }
207
317
  let screens;
318
+ const hasExplicitScreens = 'screens' in screenConfig && screenConfig.screens != null;
319
+ const hasDisabledLinking = 'linking' in item && item.linking === null;
320
+ const childOptions = 'initialRouteName' in screenConfig && typeof screenConfig.initialRouteName === 'string' ? {
321
+ initialRouteName: screenConfig.initialRouteName
322
+ } : undefined;
323
+ if (hasExplicitScreens && childOptions != null && !Object.keys(screenConfig.screens ?? {}).includes(childOptions.initialRouteName)) {
324
+ throw new Error(`Couldn't find a screen named '${childOptions.initialRouteName}' to use as 'initialRouteName'.`);
325
+ }
208
326
  const skipInitialDetectionInChild = skipInitialDetection || screenConfig.path != null && screenConfig.path !== '';
209
- if ('config' in item) {
210
- screens = createPathConfigForTree(item, undefined, skipInitialDetectionInChild);
211
- } else if ('screen' in item && 'config' in item.screen && (item.screen.config.screens || item.screen.config.groups)) {
212
- screens = createPathConfigForTree(item.screen, undefined, skipInitialDetectionInChild);
327
+ const allowAutoEmptyPathInChild = allowAutoEmptyPath && (initialRouteName == null || key === initialRouteName);
328
+ if (!hasExplicitScreens && !hasDisabledLinking && 'config' in item) {
329
+ screens = createPathConfigForTree(item, childOptions, skipInitialDetectionInChild, allowAutoEmptyPathInChild);
330
+ } else if (!hasExplicitScreens && !hasDisabledLinking && 'screen' in item && 'config' in item.screen && (item.screen.config.screens || item.screen.config.groups)) {
331
+ screens = createPathConfigForTree(item.screen, childOptions, skipInitialDetectionInChild, allowAutoEmptyPathInChild);
213
332
  }
214
333
  if (screens) {
215
- // @ts-expect-error - we can't type this properly
216
334
  screenConfig.screens = screens;
217
335
  }
218
336
  if (auto && !('screens' in screenConfig && screenConfig.screens) &&
219
- // Skip generating path for screens that specify linking config as `undefined` or `null` explicitly
220
- !('linking' in item && item.linking == null)) {
337
+ // Skip generating path for screens that specify linking config as `null` explicitly
338
+ !hasDisabledLinking) {
221
339
  if (screenConfig.path != null) {
222
340
  if (!skipInitialDetection) {
223
- if (key === initialRouteName && screenConfig.path != null) {
224
- initialScreenHasPath = true;
225
- } else if (screenConfig.path === '') {
341
+ if (screenConfig.path === '') {
226
342
  // We encounter a leaf screen with empty path,
227
343
  // Clear the initial screen config as it's not needed anymore
228
344
  initialScreenConfig = undefined;
345
+ hasEmptyPath = true;
346
+ if (allowAutoEmptyPath && key === initialRouteName) {
347
+ initialScreenHasPath = true;
348
+ }
349
+ } else if (allowAutoEmptyPath && key === initialRouteName &&
350
+ // Keep an already discovered fallback unless the initial route
351
+ // explicitly uses an empty path.
352
+ initialScreenConfig == null) {
353
+ initialScreenHasPath = true;
229
354
  }
230
355
  }
231
356
  } else {
232
- if (!groupPath && !skipInitialDetection && initialScreenConfig == null) {
357
+ if (!skipInitialDetection && allowAutoEmptyPath && (initialRouteName == null || key === initialRouteName) && !hasEmptyPath && initialScreenConfig == null) {
233
358
  initialScreenConfig = screenConfig;
234
359
  }
235
- screenConfig.path = normalizePath(key.replace(/([A-Z]+)/g, '-$1').replace(/^-/, '').toLowerCase());
360
+ screenConfig.path = normalizePath(key.replace(/([a-z0-9])([A-Z])/g, '$1-$2').replace(/([A-Z]+)([A-Z][a-z])/g, '$1-$2').toLowerCase());
236
361
  }
237
362
  }
238
363
  return [key, screenConfig];
@@ -244,11 +369,11 @@ export function createPathConfigForStaticNavigation(tree, options, auto) {
244
369
  // So we add the screens and groups in the same order as they are defined
245
370
  for (const key in t.config) {
246
371
  if (key === 'screens' && t.config.screens) {
247
- Object.assign(screens, createPathConfigForScreens(t.config.screens, undefined, o?.initialRouteName ?? t.config.initialRouteName));
372
+ Object.assign(screens, createPathConfigForScreens(t.config.screens, o?.initialRouteName ?? t.config.initialRouteName));
248
373
  }
249
374
  if (key === 'groups' && t.config.groups) {
250
375
  Object.entries(t.config.groups).forEach(([, group]) => {
251
- Object.assign(screens, createPathConfigForScreens(group.screens, group.linking, o?.initialRouteName ?? t.config.initialRouteName));
376
+ Object.assign(screens, createPathConfigForScreens(group.screens, o?.initialRouteName ?? t.config.initialRouteName));
252
377
  });
253
378
  }
254
379
  }
@@ -257,10 +382,14 @@ export function createPathConfigForStaticNavigation(tree, options, auto) {
257
382
  }
258
383
  return screens;
259
384
  };
260
- const screens = createPathConfigForTree(tree, options, false);
385
+ const screens = createPathConfigForTree(tree, options, false, true);
261
386
  if (auto && initialScreenConfig && !initialScreenHasPath) {
262
387
  initialScreenConfig.path = '';
263
388
  }
389
+ if (!screens) {
390
+ return undefined;
391
+ }
392
+ markSharedPathConfigs(screens, sources, blocked);
264
393
  return screens;
265
394
  }
266
395
  //# sourceMappingURL=StaticNavigation.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","isValidElementType","useRoute","jsx","_jsx","MemoizedScreen","memo","component","route","children","createElement","displayName","getItemsFromScreens","Screen","screens","Object","entries","map","name","item","props","useIf","isNavigator","screen","if","_if","rest","createComponentForStaticNavigation","Error","element","shouldRender","tree","Navigator","Group","config","groups","items","key","push","group","groupItems","navigationKey","NavigatorComponent","createPathConfigForStaticNavigation","options","auto","initialScreenHasPath","initialScreenConfig","createPathConfigForTree","t","o","skipInitialDetection","createPathConfigForScreens","groupLinking","initialRouteName","fromEntries","sort","a","b","screenConfig","groupPath","path","normalizePath","replace","linking","assign","parse","stringify","skipInitialDetectionInChild","undefined","toLowerCase","filter","keys","length","forEach"],"sourceRoot":"../../src","sources":["StaticNavigation.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","isValidElementType","combinePatternParts","getPatternParts","StaticTreeContext","useRoute","jsx","_jsx","createScreenFactory","config","MemoizedScreen","memo","component","route","children","createElement","displayName","getItemsFromScreens","Screen","screens","Object","entries","map","name","item","props","useIf","isNavigator","screen","if","_if","rest","getComponent","Error","element","shouldRender","createComponentForStaticConfig","tree","Navigator","Group","groups","items","key","push","group","groupItems","navigationKey","length","NavigatorComponent","_","screenOptions","options","screenListeners","Provider","value","markSharedPathConfigs","sources","blocked","candidates","Map","collect","parentParts","disabled","values","parts","path","exact","has","add","pattern","part","segment","join","get","set","shared","entry","source","undefined","some","candidate","createPathConfigForStaticNavigation","auto","initialScreenHasPath","initialScreenConfig","hasEmptyPath","WeakSet","WeakMap","createPathConfigForTree","t","o","skipInitialDetection","allowAutoEmptyPath","initialRouteName","routeNames","Set","keys","forEach","createPathConfigForScreens","fromEntries","sort","a","b","screenConfig","normalizePath","replace","linking","assign","alias","hasExplicitScreens","hasDisabledLinking","childOptions","includes","skipInitialDetectionInChild","allowAutoEmptyPathInChild","toLowerCase","filter"],"sourceRoot":"../../src","sources":["StaticNavigation.tsx"],"mappings":"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","ignoreList":[]}