@react-navigation/core 8.0.0-alpha.4 → 8.0.0-alpha.41

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 (323) hide show
  1. package/README.md +17 -14
  2. package/lib/module/BaseNavigationContainer.js +173 -90
  3. package/lib/module/BaseNavigationContainer.js.map +1 -1
  4. package/lib/module/ConsumedParamsContext.js +5 -0
  5. package/lib/module/ConsumedParamsContext.js.map +1 -0
  6. package/lib/module/DataLoading.js +129 -0
  7. package/lib/module/DataLoading.js.map +1 -0
  8. package/lib/module/NavigationBuilderContext.js +7 -10
  9. package/lib/module/NavigationBuilderContext.js.map +1 -1
  10. package/lib/module/NavigationIndependentTree.js +54 -9
  11. package/lib/module/NavigationIndependentTree.js.map +1 -1
  12. package/lib/module/NavigationProvider.js +37 -12
  13. package/lib/module/NavigationProvider.js.map +1 -1
  14. package/lib/module/NavigationRootContext.js +8 -0
  15. package/lib/module/NavigationRootContext.js.map +1 -0
  16. package/lib/module/NavigationStateContext.js +3 -0
  17. package/lib/module/NavigationStateContext.js.map +1 -1
  18. package/lib/module/PreventRemoveContext.js.map +1 -1
  19. package/lib/module/PreventRemoveProvider.js +40 -31
  20. package/lib/module/PreventRemoveProvider.js.map +1 -1
  21. package/lib/module/SceneView.js +29 -57
  22. package/lib/module/SceneView.js.map +1 -1
  23. package/lib/module/StaticNavigation.js +219 -67
  24. package/lib/module/StaticNavigation.js.map +1 -1
  25. package/lib/module/StaticTreeContext.js +5 -0
  26. package/lib/module/StaticTreeContext.js.map +1 -0
  27. package/lib/module/createNavigationContainerRef.js +7 -9
  28. package/lib/module/createNavigationContainerRef.js.map +1 -1
  29. package/lib/module/createNavigatorFactory.js +27 -5
  30. package/lib/module/createNavigatorFactory.js.map +1 -1
  31. package/lib/module/findFocusedRoute.js +7 -4
  32. package/lib/module/findFocusedRoute.js.map +1 -1
  33. package/lib/module/getActionFromState.js +45 -20
  34. package/lib/module/getActionFromState.js.map +1 -1
  35. package/lib/module/getPathFromState.js +204 -94
  36. package/lib/module/getPathFromState.js.map +1 -1
  37. package/lib/module/getPatternParts.js +61 -14
  38. package/lib/module/getPatternParts.js.map +1 -1
  39. package/lib/module/getStateFromPath.js +608 -272
  40. package/lib/module/getStateFromPath.js.map +1 -1
  41. package/lib/module/getStateFromRouteParams.js +23 -0
  42. package/lib/module/getStateFromRouteParams.js.map +1 -0
  43. package/lib/module/index.js +7 -6
  44. package/lib/module/index.js.map +1 -1
  45. package/lib/module/internal.js +2 -0
  46. package/lib/module/internal.js.map +1 -0
  47. package/lib/module/isRecordEqual.js +1 -1
  48. package/lib/module/isRecordEqual.js.map +1 -1
  49. package/lib/module/queryString.js +71 -0
  50. package/lib/module/queryString.js.map +1 -0
  51. package/lib/module/theming/useTheme.js +1 -1
  52. package/lib/module/theming/useTheme.js.map +1 -1
  53. package/lib/module/types.js +35 -1
  54. package/lib/module/types.js.map +1 -1
  55. package/lib/module/useDescriptors.js +65 -25
  56. package/lib/module/useDescriptors.js.map +1 -1
  57. package/lib/module/useEventEmitter.js +48 -33
  58. package/lib/module/useEventEmitter.js.map +1 -1
  59. package/lib/module/useFocusEffect.js +4 -2
  60. package/lib/module/useFocusEffect.js.map +1 -1
  61. package/lib/module/useFocusEvents.js +15 -5
  62. package/lib/module/useFocusEvents.js.map +1 -1
  63. package/lib/module/useFocusedListenersChildrenAdapter.js +3 -3
  64. package/lib/module/useFocusedListenersChildrenAdapter.js.map +1 -1
  65. package/lib/module/useIsFocused.js +8 -12
  66. package/lib/module/useIsFocused.js.map +1 -1
  67. package/lib/module/useKeyedChildListeners.js +5 -2
  68. package/lib/module/useKeyedChildListeners.js.map +1 -1
  69. package/lib/module/useLazyValue.js.map +1 -1
  70. package/lib/module/useNavigation.js +4 -17
  71. package/lib/module/useNavigation.js.map +1 -1
  72. package/lib/module/useNavigationBuilder.js +244 -147
  73. package/lib/module/useNavigationBuilder.js.map +1 -1
  74. package/lib/module/useNavigationCache.js +92 -89
  75. package/lib/module/useNavigationCache.js.map +1 -1
  76. package/lib/module/useNavigationHelpers.js +22 -29
  77. package/lib/module/useNavigationHelpers.js.map +1 -1
  78. package/lib/module/useNavigationIndependentTree.js +1 -1
  79. package/lib/module/useNavigationIndependentTree.js.map +1 -1
  80. package/lib/module/useNavigationState.js +158 -46
  81. package/lib/module/useNavigationState.js.map +1 -1
  82. package/lib/module/useOnAction.js +58 -11
  83. package/lib/module/useOnAction.js.map +1 -1
  84. package/lib/module/useOnGetNavigation.js +26 -0
  85. package/lib/module/useOnGetNavigation.js.map +1 -0
  86. package/lib/module/useOnGetState.js +7 -4
  87. package/lib/module/useOnGetState.js.map +1 -1
  88. package/lib/module/useOnPreventRemove.js +40 -31
  89. package/lib/module/useOnPreventRemove.js.map +1 -1
  90. package/lib/module/useOnRouteFocus.js +2 -2
  91. package/lib/module/useOnRouteFocus.js.map +1 -1
  92. package/lib/module/useOptionsGetters.js +35 -27
  93. package/lib/module/useOptionsGetters.js.map +1 -1
  94. package/lib/module/usePreventRemove.js +11 -5
  95. package/lib/module/usePreventRemove.js.map +1 -1
  96. package/lib/module/usePreventRemoveContext.js +2 -2
  97. package/lib/module/usePreventRemoveContext.js.map +1 -1
  98. package/lib/module/useRegisterNavigator.js +3 -4
  99. package/lib/module/useRegisterNavigator.js.map +1 -1
  100. package/lib/module/useRoute.js +2 -0
  101. package/lib/module/useRoute.js.map +1 -1
  102. package/lib/module/useRouteCache.js +51 -35
  103. package/lib/module/useRouteCache.js.map +1 -1
  104. package/lib/module/useScheduleUpdate.js +12 -10
  105. package/lib/module/useScheduleUpdate.js.map +1 -1
  106. package/lib/module/useStateForPath.js +1 -1
  107. package/lib/module/useStateForPath.js.map +1 -1
  108. package/lib/module/useSyncState.js +37 -15
  109. package/lib/module/useSyncState.js.map +1 -1
  110. package/lib/module/validatePathConfig.js +50 -36
  111. package/lib/module/validatePathConfig.js.map +1 -1
  112. package/lib/typescript/src/BaseNavigationContainer.d.ts +6 -3
  113. package/lib/typescript/src/BaseNavigationContainer.d.ts.map +1 -1
  114. package/lib/typescript/src/ConsumedParamsContext.d.ts +3 -0
  115. package/lib/typescript/src/ConsumedParamsContext.d.ts.map +1 -0
  116. package/lib/typescript/src/DataLoading.d.ts +21 -0
  117. package/lib/typescript/src/DataLoading.d.ts.map +1 -0
  118. package/lib/typescript/src/EnsureSingleNavigator.d.ts +1 -1
  119. package/lib/typescript/src/EnsureSingleNavigator.d.ts.map +1 -1
  120. package/lib/typescript/src/Group.d.ts +1 -1
  121. package/lib/typescript/src/Group.d.ts.map +1 -1
  122. package/lib/typescript/src/NavigationBuilderContext.d.ts +22 -14
  123. package/lib/typescript/src/NavigationBuilderContext.d.ts.map +1 -1
  124. package/lib/typescript/src/NavigationContainerRefContext.d.ts +1 -1
  125. package/lib/typescript/src/NavigationContainerRefContext.d.ts.map +1 -1
  126. package/lib/typescript/src/NavigationFocusedRouteStateContext.d.ts +4 -4
  127. package/lib/typescript/src/NavigationFocusedRouteStateContext.d.ts.map +1 -1
  128. package/lib/typescript/src/NavigationHelpersContext.d.ts +1 -1
  129. package/lib/typescript/src/NavigationHelpersContext.d.ts.map +1 -1
  130. package/lib/typescript/src/NavigationIndependentTree.d.ts +1 -1
  131. package/lib/typescript/src/NavigationIndependentTree.d.ts.map +1 -1
  132. package/lib/typescript/src/NavigationProvider.d.ts +21 -18
  133. package/lib/typescript/src/NavigationProvider.d.ts.map +1 -1
  134. package/lib/typescript/src/NavigationRootContext.d.ts +8 -0
  135. package/lib/typescript/src/NavigationRootContext.d.ts.map +1 -0
  136. package/lib/typescript/src/NavigationStateContext.d.ts +3 -3
  137. package/lib/typescript/src/NavigationStateContext.d.ts.map +1 -1
  138. package/lib/typescript/src/PreventRemoveContext.d.ts +1 -0
  139. package/lib/typescript/src/PreventRemoveContext.d.ts.map +1 -1
  140. package/lib/typescript/src/PreventRemoveProvider.d.ts +1 -1
  141. package/lib/typescript/src/PreventRemoveProvider.d.ts.map +1 -1
  142. package/lib/typescript/src/SceneView.d.ts +5 -2
  143. package/lib/typescript/src/SceneView.d.ts.map +1 -1
  144. package/lib/typescript/src/Screen.d.ts +1 -1
  145. package/lib/typescript/src/Screen.d.ts.map +1 -1
  146. package/lib/typescript/src/StaticContainer.d.ts +1 -1
  147. package/lib/typescript/src/StaticContainer.d.ts.map +1 -1
  148. package/lib/typescript/src/StaticNavigation.d.ts +189 -111
  149. package/lib/typescript/src/StaticNavigation.d.ts.map +1 -1
  150. package/lib/typescript/src/StaticTreeContext.d.ts +4 -0
  151. package/lib/typescript/src/StaticTreeContext.d.ts.map +1 -0
  152. package/lib/typescript/src/createNavigationContainerRef.d.ts +1 -1
  153. package/lib/typescript/src/createNavigationContainerRef.d.ts.map +1 -1
  154. package/lib/typescript/src/createNavigatorFactory.d.ts +23 -5
  155. package/lib/typescript/src/createNavigatorFactory.d.ts.map +1 -1
  156. package/lib/typescript/src/findFocusedRoute.d.ts +3 -8
  157. package/lib/typescript/src/findFocusedRoute.d.ts.map +1 -1
  158. package/lib/typescript/src/getActionFromState.d.ts +4 -4
  159. package/lib/typescript/src/getActionFromState.d.ts.map +1 -1
  160. package/lib/typescript/src/getPathFromState.d.ts +3 -3
  161. package/lib/typescript/src/getPathFromState.d.ts.map +1 -1
  162. package/lib/typescript/src/getPatternParts.d.ts +5 -2
  163. package/lib/typescript/src/getPatternParts.d.ts.map +1 -1
  164. package/lib/typescript/src/getStateFromPath.d.ts +4 -7
  165. package/lib/typescript/src/getStateFromPath.d.ts.map +1 -1
  166. package/lib/typescript/src/getStateFromRouteParams.d.ts +3 -0
  167. package/lib/typescript/src/getStateFromRouteParams.d.ts.map +1 -0
  168. package/lib/typescript/src/index.d.ts +36 -33
  169. package/lib/typescript/src/index.d.ts.map +1 -1
  170. package/lib/typescript/src/internal.d.ts +3 -0
  171. package/lib/typescript/src/internal.d.ts.map +1 -0
  172. package/lib/typescript/src/isRecordEqual.d.ts.map +1 -1
  173. package/lib/typescript/src/queryString.d.ts +5 -0
  174. package/lib/typescript/src/queryString.d.ts.map +1 -0
  175. package/lib/typescript/src/theming/ThemeContext.d.ts +1 -1
  176. package/lib/typescript/src/theming/ThemeContext.d.ts.map +1 -1
  177. package/lib/typescript/src/theming/ThemeProvider.d.ts +2 -2
  178. package/lib/typescript/src/theming/ThemeProvider.d.ts.map +1 -1
  179. package/lib/typescript/src/theming/useTheme.d.ts +1 -1
  180. package/lib/typescript/src/theming/useTheme.d.ts.map +1 -1
  181. package/lib/typescript/src/types.d.ts +265 -167
  182. package/lib/typescript/src/types.d.ts.map +1 -1
  183. package/lib/typescript/src/useChildListeners.d.ts +3 -3
  184. package/lib/typescript/src/useChildListeners.d.ts.map +1 -1
  185. package/lib/typescript/src/useDescriptors.d.ts +13 -11
  186. package/lib/typescript/src/useDescriptors.d.ts.map +1 -1
  187. package/lib/typescript/src/useEventEmitter.d.ts +2 -2
  188. package/lib/typescript/src/useEventEmitter.d.ts.map +1 -1
  189. package/lib/typescript/src/useFocusEffect.d.ts.map +1 -1
  190. package/lib/typescript/src/useFocusEvents.d.ts +2 -2
  191. package/lib/typescript/src/useFocusEvents.d.ts.map +1 -1
  192. package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts +2 -2
  193. package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts.map +1 -1
  194. package/lib/typescript/src/useIsFocused.d.ts +4 -0
  195. package/lib/typescript/src/useIsFocused.d.ts.map +1 -1
  196. package/lib/typescript/src/useKeyedChildListeners.d.ts +4 -3
  197. package/lib/typescript/src/useKeyedChildListeners.d.ts.map +1 -1
  198. package/lib/typescript/src/useLazyValue.d.ts.map +1 -1
  199. package/lib/typescript/src/useNavigation.d.ts +4 -2
  200. package/lib/typescript/src/useNavigation.d.ts.map +1 -1
  201. package/lib/typescript/src/useNavigationBuilder.d.ts +22 -63
  202. package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -1
  203. package/lib/typescript/src/useNavigationCache.d.ts +6 -5
  204. package/lib/typescript/src/useNavigationCache.d.ts.map +1 -1
  205. package/lib/typescript/src/useNavigationContainerRef.d.ts +1 -1
  206. package/lib/typescript/src/useNavigationContainerRef.d.ts.map +1 -1
  207. package/lib/typescript/src/useNavigationHelpers.d.ts +18 -58
  208. package/lib/typescript/src/useNavigationHelpers.d.ts.map +1 -1
  209. package/lib/typescript/src/useNavigationState.d.ts +19 -3
  210. package/lib/typescript/src/useNavigationState.d.ts.map +1 -1
  211. package/lib/typescript/src/useOnAction.d.ts +9 -9
  212. package/lib/typescript/src/useOnAction.d.ts.map +1 -1
  213. package/lib/typescript/src/useOnGetNavigation.d.ts +12 -0
  214. package/lib/typescript/src/useOnGetNavigation.d.ts.map +1 -0
  215. package/lib/typescript/src/useOnGetState.d.ts +1 -1
  216. package/lib/typescript/src/useOnGetState.d.ts.map +1 -1
  217. package/lib/typescript/src/useOnPreventRemove.d.ts +5 -9
  218. package/lib/typescript/src/useOnPreventRemove.d.ts.map +1 -1
  219. package/lib/typescript/src/useOnRouteFocus.d.ts +6 -6
  220. package/lib/typescript/src/useOnRouteFocus.d.ts.map +1 -1
  221. package/lib/typescript/src/useOptionsGetters.d.ts +4 -4
  222. package/lib/typescript/src/useOptionsGetters.d.ts.map +1 -1
  223. package/lib/typescript/src/usePreventRemove.d.ts.map +1 -1
  224. package/lib/typescript/src/usePreventRemoveContext.d.ts +2 -1
  225. package/lib/typescript/src/usePreventRemoveContext.d.ts.map +1 -1
  226. package/lib/typescript/src/useRegisterNavigator.d.ts.map +1 -1
  227. package/lib/typescript/src/useRoute.d.ts +7 -3
  228. package/lib/typescript/src/useRoute.d.ts.map +1 -1
  229. package/lib/typescript/src/useRouteCache.d.ts +7 -12
  230. package/lib/typescript/src/useRouteCache.d.ts.map +1 -1
  231. package/lib/typescript/src/useScheduleUpdate.d.ts +5 -4
  232. package/lib/typescript/src/useScheduleUpdate.d.ts.map +1 -1
  233. package/lib/typescript/src/useStateForPath.d.ts +1 -1
  234. package/lib/typescript/src/useStateForPath.d.ts.map +1 -1
  235. package/lib/typescript/src/useSyncState.d.ts +1 -0
  236. package/lib/typescript/src/useSyncState.d.ts.map +1 -1
  237. package/lib/typescript/src/utilities.d.ts +79 -39
  238. package/lib/typescript/src/utilities.d.ts.map +1 -1
  239. package/lib/typescript/src/validatePathConfig.d.ts.map +1 -1
  240. package/package.json +26 -22
  241. package/src/BaseNavigationContainer.tsx +459 -332
  242. package/src/ConsumedParamsContext.tsx +5 -0
  243. package/src/DataLoading.tsx +206 -0
  244. package/src/NavigationBuilderContext.tsx +44 -25
  245. package/src/NavigationFocusedRouteStateContext.tsx +4 -4
  246. package/src/NavigationIndependentTree.tsx +60 -12
  247. package/src/NavigationProvider.tsx +59 -21
  248. package/src/NavigationRootContext.tsx +11 -0
  249. package/src/NavigationStateContext.tsx +6 -6
  250. package/src/PreventRemoveContext.tsx +1 -0
  251. package/src/PreventRemoveProvider.tsx +55 -56
  252. package/src/SceneView.tsx +31 -57
  253. package/src/StaticNavigation.tsx +715 -328
  254. package/src/StaticTreeContext.tsx +7 -0
  255. package/src/createNavigationContainerRef.tsx +12 -11
  256. package/src/createNavigatorFactory.tsx +92 -8
  257. package/src/findFocusedRoute.tsx +16 -16
  258. package/src/getActionFromState.tsx +87 -51
  259. package/src/getPathFromState.tsx +310 -134
  260. package/src/getPatternParts.tsx +98 -16
  261. package/src/getStateFromPath.tsx +971 -344
  262. package/src/getStateFromRouteParams.tsx +59 -0
  263. package/src/index.tsx +57 -6
  264. package/src/internal.tsx +2 -0
  265. package/src/isRecordEqual.tsx +3 -1
  266. package/src/queryString.ts +109 -0
  267. package/src/theming/useTheme.tsx +1 -1
  268. package/src/types.tsx +799 -377
  269. package/src/useDescriptors.tsx +151 -43
  270. package/src/useEventEmitter.tsx +53 -39
  271. package/src/useFocusEffect.tsx +5 -2
  272. package/src/useFocusEvents.tsx +19 -8
  273. package/src/useFocusedListenersChildrenAdapter.tsx +3 -3
  274. package/src/useIsFocused.tsx +18 -21
  275. package/src/useKeyedChildListeners.tsx +5 -2
  276. package/src/useLazyValue.tsx +2 -2
  277. package/src/useNavigation.tsx +9 -26
  278. package/src/useNavigationBuilder.tsx +370 -201
  279. package/src/useNavigationCache.tsx +148 -123
  280. package/src/useNavigationHelpers.tsx +27 -37
  281. package/src/useNavigationIndependentTree.tsx +1 -1
  282. package/src/useNavigationState.tsx +207 -69
  283. package/src/useOnAction.tsx +92 -18
  284. package/src/useOnGetNavigation.tsx +30 -0
  285. package/src/useOnGetState.tsx +8 -4
  286. package/src/useOnPreventRemove.tsx +78 -43
  287. package/src/useOnRouteFocus.tsx +11 -15
  288. package/src/useOptionsGetters.tsx +44 -30
  289. package/src/usePreventRemove.tsx +13 -5
  290. package/src/usePreventRemoveContext.tsx +2 -2
  291. package/src/useRegisterNavigator.tsx +4 -4
  292. package/src/useRoute.tsx +20 -6
  293. package/src/useRouteCache.tsx +57 -35
  294. package/src/useScheduleUpdate.tsx +13 -11
  295. package/src/useStateForPath.tsx +1 -1
  296. package/src/useSyncState.tsx +39 -15
  297. package/src/utilities.tsx +151 -35
  298. package/src/validatePathConfig.tsx +86 -57
  299. package/lib/module/CurrentRenderContext.js +0 -10
  300. package/lib/module/CurrentRenderContext.js.map +0 -1
  301. package/lib/module/NavigationMetaContext.js +0 -15
  302. package/lib/module/NavigationMetaContext.js.map +0 -1
  303. package/lib/module/checkSerializable.js +0 -46
  304. package/lib/module/checkSerializable.js.map +0 -1
  305. package/lib/module/useComponent.js +0 -34
  306. package/lib/module/useComponent.js.map +0 -1
  307. package/lib/module/useCurrentRender.js +0 -19
  308. package/lib/module/useCurrentRender.js.map +0 -1
  309. package/lib/typescript/src/CurrentRenderContext.d.ts +0 -9
  310. package/lib/typescript/src/CurrentRenderContext.d.ts.map +0 -1
  311. package/lib/typescript/src/NavigationMetaContext.d.ts +0 -12
  312. package/lib/typescript/src/NavigationMetaContext.d.ts.map +0 -1
  313. package/lib/typescript/src/checkSerializable.d.ts +0 -10
  314. package/lib/typescript/src/checkSerializable.d.ts.map +0 -1
  315. package/lib/typescript/src/useComponent.d.ts +0 -7
  316. package/lib/typescript/src/useComponent.d.ts.map +0 -1
  317. package/lib/typescript/src/useCurrentRender.d.ts +0 -14
  318. package/lib/typescript/src/useCurrentRender.d.ts.map +0 -1
  319. package/src/CurrentRenderContext.tsx +0 -9
  320. package/src/NavigationMetaContext.tsx +0 -14
  321. package/src/checkSerializable.tsx +0 -74
  322. package/src/useComponent.tsx +0 -37
  323. package/src/useCurrentRender.tsx +0 -31
@@ -6,7 +6,7 @@ import { isArrayEqual } from "./isArrayEqual.js";
6
6
  import { NavigationFocusedRouteStateContext } from "./NavigationFocusedRouteStateContext.js";
7
7
  import { NavigationStateContext } from "./NavigationStateContext.js";
8
8
  import { StaticContainer } from "./StaticContainer.js";
9
- import { useOptionsGetters } from "./useOptionsGetters.js";
9
+ import { OptionsGetterContext, useOptionsGetters } from "./useOptionsGetters.js";
10
10
  import { jsx as _jsx } from "react/jsx-runtime";
11
11
  /**
12
12
  * Component which takes care of rendering the screen for a route.
@@ -17,8 +17,10 @@ export function SceneView({
17
17
  route,
18
18
  navigation,
19
19
  routeState,
20
+ getFocusedRouteKey,
20
21
  getState,
21
22
  setState,
23
+ subscribe,
22
24
  options,
23
25
  clearOptions
24
26
  }) {
@@ -29,7 +31,7 @@ export function SceneView({
29
31
  } = useOptionsGetters({
30
32
  key: route.key,
31
33
  options,
32
- navigation
34
+ getFocusedRouteKey
33
35
  });
34
36
  const setKey = React.useCallback(key => {
35
37
  navigatorKeyRef.current = key;
@@ -42,47 +44,14 @@ export function SceneView({
42
44
  const setCurrentState = React.useCallback(child => {
43
45
  const state = getState();
44
46
  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
- }
47
+ if (r.key === route.key && r.state !== child) {
48
+ return {
49
+ ...r,
50
+ state: child
51
+ };
79
52
  }
80
- return nextRoute;
53
+ return r;
81
54
  });
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
55
  if (!isArrayEqual(state.routes, routes)) {
87
56
  setState({
88
57
  ...state,
@@ -101,7 +70,7 @@ export function SceneView({
101
70
  // eslint-disable-next-line react-hooks/exhaustive-deps
102
71
  }, []);
103
72
  const getIsInitial = React.useCallback(() => isInitialRef.current, []);
104
- const parentFocusedRouteState = React.useContext(NavigationFocusedRouteStateContext);
73
+ const parentFocusedRouteState = React.use(NavigationFocusedRouteStateContext);
105
74
  const focusedRouteState = React.useMemo(() => {
106
75
  const state = {
107
76
  routes: [{
@@ -131,29 +100,32 @@ export function SceneView({
131
100
  state: routeState,
132
101
  getState: getCurrentState,
133
102
  setState: setCurrentState,
103
+ subscribe,
134
104
  getKey,
135
105
  setKey,
136
- getIsInitial,
137
- addOptionsGetter
138
- }), [routeState, getCurrentState, setCurrentState, getKey, setKey, getIsInitial, addOptionsGetter]);
106
+ getIsInitial
107
+ }), [routeState, getCurrentState, setCurrentState, subscribe, getKey, setKey, getIsInitial]);
139
108
  const ScreenComponent = screen.getComponent ? screen.getComponent() : screen.component;
140
109
  return /*#__PURE__*/_jsx(NavigationStateContext.Provider, {
141
110
  value: context,
142
111
  children: /*#__PURE__*/_jsx(NavigationFocusedRouteStateContext.Provider, {
143
112
  value: focusedRouteState,
144
- children: /*#__PURE__*/_jsx(EnsureSingleNavigator, {
145
- children: /*#__PURE__*/_jsx(StaticContainer, {
146
- name: screen.name,
147
- render: ScreenComponent || screen.children,
148
- navigation: navigation,
149
- route: route,
150
- children: ScreenComponent !== undefined ? /*#__PURE__*/_jsx(ScreenComponent, {
113
+ children: /*#__PURE__*/_jsx(OptionsGetterContext.Provider, {
114
+ value: addOptionsGetter,
115
+ children: /*#__PURE__*/_jsx(EnsureSingleNavigator, {
116
+ children: /*#__PURE__*/_jsx(StaticContainer, {
117
+ name: screen.name,
118
+ render: ScreenComponent || screen.children,
151
119
  navigation: navigation,
152
- route: route
153
- }) : screen.children !== undefined ? screen.children({
154
- navigation,
155
- route
156
- }) : null
120
+ route: route,
121
+ children: ScreenComponent !== undefined ? /*#__PURE__*/_jsx(ScreenComponent, {
122
+ navigation: navigation,
123
+ route: route
124
+ }) : screen.children !== undefined ? screen.children({
125
+ navigation,
126
+ route
127
+ }) : null
128
+ })
157
129
  })
158
130
  })
159
131
  })
@@ -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","OptionsGetterContext","useOptionsGetters","jsx","_jsx","SceneView","screen","route","navigation","routeState","getFocusedRouteKey","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
  }) => {
@@ -30,38 +68,73 @@ const MemoizedScreen = /*#__PURE__*/React.memo(({
30
68
  return children;
31
69
  });
32
70
  MemoizedScreen.displayName = 'Memo(Screen)';
71
+ const hasPropertyGetter = (object, property) => Object.getOwnPropertyDescriptor(object, property)?.get != null;
33
72
  const getItemsFromScreens = (Screen, screens) => {
34
73
  return Object.entries(screens).map(([name, item]) => {
35
74
  let component;
36
75
  let props = {};
37
76
  let useIf;
38
77
  let isNavigator = false;
78
+ let getComponent;
39
79
  if ('screen' in item) {
40
- const {
41
- screen,
42
- if: _if,
43
- ...rest
44
- } = item;
45
- useIf = _if;
46
- props = rest;
47
- if (isValidElementType(screen)) {
48
- component = screen;
49
- } else if ('config' in screen) {
50
- isNavigator = true;
51
- component = createComponentForStaticNavigation(screen, `${name}Navigator`);
80
+ if (hasPropertyGetter(item, 'screen')) {
81
+ const rest = {};
82
+
83
+ // Iterate over the keys to avoid triggering the getter for 'screen'
84
+ for (const key of Object.keys(item)) {
85
+ if (key === 'screen' || key === 'if') {
86
+ continue;
87
+ }
88
+ rest[key] = Reflect.get(item, key);
89
+ }
90
+ useIf = item.if;
91
+ props = rest;
92
+ getComponent = () => {
93
+ const screen = item.screen;
94
+ if (isValidElementType(screen)) {
95
+ return screen;
96
+ }
97
+ if (screen != null && typeof screen === 'object' && 'config' in screen) {
98
+ throw new Error(`Got a navigator object for the screen '${name}' instead of a component. A navigator cannot be specified when using a getter.`);
99
+ }
100
+ throw new Error(`Got an invalid screen component 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.`);
101
+ };
102
+ } else {
103
+ const {
104
+ screen,
105
+ if: _if,
106
+ ...rest
107
+ } = item;
108
+ useIf = _if;
109
+ props = rest;
110
+ if (isValidElementType(screen)) {
111
+ component = screen;
112
+ } else if ('config' in screen) {
113
+ isNavigator = true;
114
+ component = screen.getComponent();
115
+ }
52
116
  }
53
117
  } else if (isValidElementType(item)) {
54
118
  component = item;
55
119
  } else if ('config' in item) {
56
120
  isNavigator = true;
57
- component = createComponentForStaticNavigation(item, `${name}Navigator`);
121
+ component = item.getComponent();
122
+ }
123
+ let children;
124
+ if (getComponent != null) {
125
+ let element;
126
+ children = () => element ??= /*#__PURE__*/_jsx(MemoizedScreen, {
127
+ component: getComponent()
128
+ });
129
+ } else if (component != null) {
130
+ const element = isNavigator ? (/*#__PURE__*/React.createElement(component, {})) : /*#__PURE__*/_jsx(MemoizedScreen, {
131
+ component: component
132
+ });
133
+ children = () => element;
58
134
  }
59
- if (component == null) {
135
+ if (children == null) {
60
136
  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.`);
61
137
  }
62
- const element = isNavigator ? (/*#__PURE__*/React.createElement(component, {})) : /*#__PURE__*/_jsx(MemoizedScreen, {
63
- component: component
64
- });
65
138
  return () => {
66
139
  const shouldRender = useIf == null || useIf();
67
140
  if (!shouldRender) {
@@ -70,7 +143,7 @@ const getItemsFromScreens = (Screen, screens) => {
70
143
  return /*#__PURE__*/_jsx(Screen, {
71
144
  name: name,
72
145
  ...props,
73
- children: () => element
146
+ children: children
74
147
  }, name);
75
148
  };
76
149
  });
@@ -83,7 +156,7 @@ const getItemsFromScreens = (Screen, screens) => {
83
156
  * @param displayName Name of the component to be displayed in React DevTools.
84
157
  * @returns A component which renders the navigator.
85
158
  */
86
- export function createComponentForStaticNavigation(tree, displayName) {
159
+ export function createComponentForStaticConfig(tree, displayName) {
87
160
  const {
88
161
  Navigator,
89
162
  Group,
@@ -128,6 +201,9 @@ export function createComponentForStaticNavigation(tree, displayName) {
128
201
  }));
129
202
  }
130
203
  }
204
+ if (items.length === 0) {
205
+ 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.");
206
+ }
131
207
  const NavigatorComponent = ({
132
208
  children: _,
133
209
  ...props
@@ -140,16 +216,61 @@ export function createComponentForStaticNavigation(tree, displayName) {
140
216
  ...rest.screenOptions,
141
217
  ...props.screenOptions
142
218
  };
143
- return /*#__PURE__*/_jsx(Navigator, {
144
- ...rest,
145
- ...props,
146
- screenOptions: screenOptions,
147
- children: children
219
+ const screenListeners = typeof props.screenListeners === 'function' || typeof rest.screenListeners === 'function' ? options => ({
220
+ ...(typeof rest.screenListeners === 'function' ? rest.screenListeners(options) : rest.screenListeners),
221
+ ...(typeof props.screenListeners === 'function' ? props.screenListeners(options) : props.screenListeners)
222
+ }) : {
223
+ ...rest.screenListeners,
224
+ ...props.screenListeners
225
+ };
226
+ return /*#__PURE__*/_jsx(StaticTreeContext.Provider, {
227
+ value: tree,
228
+ children: /*#__PURE__*/_jsx(Navigator, {
229
+ ...rest,
230
+ ...props,
231
+ screenOptions: screenOptions,
232
+ screenListeners: screenListeners,
233
+ children: children
234
+ })
148
235
  });
149
236
  };
150
237
  NavigatorComponent.displayName = displayName;
151
238
  return NavigatorComponent;
152
239
  }
240
+ // Mark screens that resolve to the same pattern and same component or navigator
241
+ const markSharedPathConfigs = (screens, sources, blocked) => {
242
+ const candidates = new Map();
243
+ const collect = (screens, parentParts, disabled) => {
244
+ for (const config of Object.values(screens)) {
245
+ if (config == null || typeof config === 'string') {
246
+ continue;
247
+ }
248
+ const parts = typeof config.path === 'string' ? combinePatternParts(parentParts, getPatternParts(config.path), config.exact) : parentParts;
249
+ if (sources.has(config) && typeof config.path === 'string') {
250
+ if (disabled) {
251
+ blocked.add(config);
252
+ }
253
+ const pattern = parts.map(part => part.segment).join('/');
254
+ const entries = candidates.get(pattern) ?? [];
255
+ entries.push(config);
256
+ candidates.set(pattern, entries);
257
+ }
258
+ if (config.screens) {
259
+ collect(config.screens, parts, disabled || config.shared === false);
260
+ }
261
+ }
262
+ };
263
+ collect(screens, [], false);
264
+ for (const entries of candidates.values()) {
265
+ for (const entry of entries) {
266
+ const source = sources.get(entry);
267
+ if (entry.shared === undefined && !blocked.has(entry) && entries.some(candidate => candidate !== entry && !blocked.has(candidate) && sources.get(candidate) === source)) {
268
+ entry.shared = true;
269
+ }
270
+ }
271
+ }
272
+ };
273
+
153
274
  /**
154
275
  * Create a path config object from a static navigation config for deep linking.
155
276
  *
@@ -172,8 +293,21 @@ export function createComponentForStaticNavigation(tree, displayName) {
172
293
  export function createPathConfigForStaticNavigation(tree, options, auto) {
173
294
  let initialScreenHasPath = false;
174
295
  let initialScreenConfig;
175
- const createPathConfigForTree = (t, o, skipInitialDetection) => {
176
- const createPathConfigForScreens = (screens, groupLinking, initialRouteName) => {
296
+ let hasEmptyPath = false;
297
+ const blocked = new WeakSet();
298
+ const sources = new WeakMap();
299
+ const createPathConfigForTree = (t, o, skipInitialDetection, allowAutoEmptyPath) => {
300
+ const initialRouteName = o?.initialRouteName ?? t.config.initialRouteName;
301
+ if (initialRouteName != null) {
302
+ const routeNames = new Set(Object.keys(t.config.screens ?? {}));
303
+ for (const group of Object.values(t.config.groups ?? {})) {
304
+ Object.keys(group.screens).forEach(name => routeNames.add(name));
305
+ }
306
+ if (!routeNames.has(initialRouteName)) {
307
+ throw new Error(`Couldn't find a screen named '${initialRouteName}' to use as 'initialRouteName'.`);
308
+ }
309
+ }
310
+ const createPathConfigForScreens = (screens, initialRouteName) => {
177
311
  return Object.fromEntries(Object.entries(screens)
178
312
  // Re-order to move the initial route to the front
179
313
  // This way we can detect the initial route correctly
@@ -187,64 +321,78 @@ export function createPathConfigForStaticNavigation(tree, options, auto) {
187
321
  return 0;
188
322
  }).map(([key, item]) => {
189
323
  const screenConfig = {};
190
- const groupPath = typeof groupLinking === 'string' ? groupLinking : groupLinking?.path;
191
- const normalizePath = path => {
192
- return `${groupPath ?? ''}/${path}`.replace(/^\//, '') // Remove extra leading slash
193
- .replace(/\/$/, ''); // Remove extra trailing slash
194
- };
195
- if ('linking' in item) {
324
+ sources.set(screenConfig, typeof item === 'object' && 'screen' in item && !hasPropertyGetter(item, 'screen') ? item.screen : item);
325
+ const normalizePath = path => path.replace(/^\/+|\/+$/g, '');
326
+ if ('linking' in item && item.linking !== undefined) {
196
327
  if (typeof item.linking === 'string') {
197
328
  screenConfig.path = item.linking;
198
- } else {
199
- Object.assign(screenConfig, item.linking);
329
+ } else if (item.linking != null && typeof item.linking === 'object') {
330
+ Object.assign(screenConfig, {
331
+ ...item.linking
332
+ });
200
333
  }
201
334
  }
202
- if (typeof groupLinking !== 'string') {
203
- if (groupLinking?.parse != null) {
204
- screenConfig.parse = {
205
- ...groupLinking.parse,
206
- ...screenConfig.parse
207
- };
208
- }
209
- if (groupLinking?.stringify != null) {
210
- screenConfig.stringify = {
211
- ...groupLinking.stringify,
212
- ...screenConfig.stringify
213
- };
214
- }
335
+ if (screenConfig.exact && screenConfig.path == null) {
336
+ 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: ''`.");
215
337
  }
216
338
  if (typeof screenConfig.path === 'string') {
217
339
  screenConfig.path = normalizePath(screenConfig.path);
218
340
  }
341
+ if (screenConfig.alias != null) {
342
+ screenConfig.alias = screenConfig.alias.map(alias => {
343
+ if (typeof alias === 'string') {
344
+ return normalizePath(alias);
345
+ }
346
+ return {
347
+ ...alias,
348
+ path: normalizePath(alias.path)
349
+ };
350
+ });
351
+ }
219
352
  let screens;
353
+ const hasExplicitScreens = 'screens' in screenConfig && screenConfig.screens != null;
354
+ const hasDisabledLinking = 'linking' in item && item.linking === null;
355
+ const childOptions = 'initialRouteName' in screenConfig && typeof screenConfig.initialRouteName === 'string' ? {
356
+ initialRouteName: screenConfig.initialRouteName
357
+ } : undefined;
358
+ if (hasExplicitScreens && childOptions != null && !Object.keys(screenConfig.screens ?? {}).includes(childOptions.initialRouteName)) {
359
+ throw new Error(`Couldn't find a screen named '${childOptions.initialRouteName}' to use as 'initialRouteName'.`);
360
+ }
220
361
  const skipInitialDetectionInChild = skipInitialDetection || screenConfig.path != null && screenConfig.path !== '';
221
- if ('config' in item) {
222
- screens = createPathConfigForTree(item, undefined, skipInitialDetectionInChild);
223
- } else if ('screen' in item && 'config' in item.screen && (item.screen.config.screens || item.screen.config.groups)) {
224
- screens = createPathConfigForTree(item.screen, undefined, skipInitialDetectionInChild);
362
+ const allowAutoEmptyPathInChild = allowAutoEmptyPath && (initialRouteName == null || key === initialRouteName);
363
+ if (!hasExplicitScreens && !hasDisabledLinking && 'config' in item) {
364
+ screens = createPathConfigForTree(item, childOptions, skipInitialDetectionInChild, allowAutoEmptyPathInChild);
365
+ } else if (!hasExplicitScreens && !hasDisabledLinking && 'screen' in item && !hasPropertyGetter(item, 'screen') && 'config' in item.screen && (item.screen.config.screens || item.screen.config.groups)) {
366
+ screens = createPathConfigForTree(item.screen, childOptions, skipInitialDetectionInChild, allowAutoEmptyPathInChild);
225
367
  }
226
368
  if (screens) {
227
- // @ts-expect-error - we can't type this properly
228
369
  screenConfig.screens = screens;
229
370
  }
230
371
  if (auto && !('screens' in screenConfig && screenConfig.screens) &&
231
- // Skip generating path for screens that specify linking config as `undefined` or `null` explicitly
232
- !('linking' in item && item.linking == null)) {
372
+ // Skip generating path for screens that specify linking config as `null` explicitly
373
+ !hasDisabledLinking) {
233
374
  if (screenConfig.path != null) {
234
375
  if (!skipInitialDetection) {
235
- if (key === initialRouteName && screenConfig.path != null) {
236
- initialScreenHasPath = true;
237
- } else if (screenConfig.path === '') {
376
+ if (screenConfig.path === '') {
238
377
  // We encounter a leaf screen with empty path,
239
378
  // Clear the initial screen config as it's not needed anymore
240
379
  initialScreenConfig = undefined;
380
+ hasEmptyPath = true;
381
+ if (allowAutoEmptyPath && key === initialRouteName) {
382
+ initialScreenHasPath = true;
383
+ }
384
+ } else if (allowAutoEmptyPath && key === initialRouteName &&
385
+ // Keep an already discovered fallback unless the initial route
386
+ // explicitly uses an empty path.
387
+ initialScreenConfig == null) {
388
+ initialScreenHasPath = true;
241
389
  }
242
390
  }
243
391
  } else {
244
- if (!groupPath && !skipInitialDetection && initialScreenConfig == null) {
392
+ if (!skipInitialDetection && allowAutoEmptyPath && (initialRouteName == null || key === initialRouteName) && !hasEmptyPath && initialScreenConfig == null) {
245
393
  initialScreenConfig = screenConfig;
246
394
  }
247
- screenConfig.path = normalizePath(key.replace(/([A-Z]+)/g, '-$1').replace(/^-/, '').toLowerCase());
395
+ screenConfig.path = normalizePath(key.replace(/([a-z0-9])([A-Z])/g, '$1-$2').replace(/([A-Z]+)([A-Z][a-z])/g, '$1-$2').toLowerCase());
248
396
  }
249
397
  }
250
398
  return [key, screenConfig];
@@ -256,11 +404,11 @@ export function createPathConfigForStaticNavigation(tree, options, auto) {
256
404
  // So we add the screens and groups in the same order as they are defined
257
405
  for (const key in t.config) {
258
406
  if (key === 'screens' && t.config.screens) {
259
- Object.assign(screens, createPathConfigForScreens(t.config.screens, undefined, o?.initialRouteName ?? t.config.initialRouteName));
407
+ Object.assign(screens, createPathConfigForScreens(t.config.screens, o?.initialRouteName ?? t.config.initialRouteName));
260
408
  }
261
409
  if (key === 'groups' && t.config.groups) {
262
410
  Object.entries(t.config.groups).forEach(([, group]) => {
263
- Object.assign(screens, createPathConfigForScreens(group.screens, group.linking, o?.initialRouteName ?? t.config.initialRouteName));
411
+ Object.assign(screens, createPathConfigForScreens(group.screens, o?.initialRouteName ?? t.config.initialRouteName));
264
412
  });
265
413
  }
266
414
  }
@@ -269,10 +417,14 @@ export function createPathConfigForStaticNavigation(tree, options, auto) {
269
417
  }
270
418
  return screens;
271
419
  };
272
- const screens = createPathConfigForTree(tree, options, false);
420
+ const screens = createPathConfigForTree(tree, options, false, true);
273
421
  if (auto && initialScreenConfig && !initialScreenHasPath) {
274
422
  initialScreenConfig.path = '';
275
423
  }
424
+ if (!screens) {
425
+ return undefined;
426
+ }
427
+ markSharedPathConfigs(screens, sources, blocked);
276
428
  return screens;
277
429
  }
278
430
  //# 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","_","screenOptions","options","createPathConfigForStaticNavigation","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","hasPropertyGetter","object","property","Object","getOwnPropertyDescriptor","get","getItemsFromScreens","Screen","screens","entries","map","name","item","props","useIf","isNavigator","getComponent","rest","key","keys","Reflect","if","screen","Error","_if","element","shouldRender","createComponentForStaticConfig","tree","Navigator","Group","groups","items","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","set","shared","entry","source","undefined","some","candidate","createPathConfigForStaticNavigation","auto","initialScreenHasPath","initialScreenConfig","hasEmptyPath","WeakSet","WeakMap","createPathConfigForTree","t","o","skipInitialDetection","allowAutoEmptyPath","initialRouteName","routeNames","Set","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":[]}