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

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 (283) hide show
  1. package/lib/module/BaseNavigationContainer.js +34 -17
  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 +17 -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.map +1 -1
  14. package/lib/module/PreventRemoveContext.js.map +1 -1
  15. package/lib/module/PreventRemoveProvider.js +37 -27
  16. package/lib/module/PreventRemoveProvider.js.map +1 -1
  17. package/lib/module/SceneView.js +7 -40
  18. package/lib/module/SceneView.js.map +1 -1
  19. package/lib/module/StaticNavigation.js +179 -50
  20. package/lib/module/StaticNavigation.js.map +1 -1
  21. package/lib/module/StaticTreeContext.js +5 -0
  22. package/lib/module/StaticTreeContext.js.map +1 -0
  23. package/lib/module/checkSerializable.js +18 -13
  24. package/lib/module/checkSerializable.js.map +1 -1
  25. package/lib/module/createNavigationContainerRef.js +6 -8
  26. package/lib/module/createNavigationContainerRef.js.map +1 -1
  27. package/lib/module/createNavigatorFactory.js +27 -5
  28. package/lib/module/createNavigatorFactory.js.map +1 -1
  29. package/lib/module/findFocusedRoute.js +7 -4
  30. package/lib/module/findFocusedRoute.js.map +1 -1
  31. package/lib/module/getActionFromState.js +45 -20
  32. package/lib/module/getActionFromState.js.map +1 -1
  33. package/lib/module/getPathFromState.js +171 -90
  34. package/lib/module/getPathFromState.js.map +1 -1
  35. package/lib/module/getPatternParts.js +20 -4
  36. package/lib/module/getPatternParts.js.map +1 -1
  37. package/lib/module/getStateFromPath.js +485 -214
  38. package/lib/module/getStateFromPath.js.map +1 -1
  39. package/lib/module/getStateFromRouteParams.js +24 -0
  40. package/lib/module/getStateFromRouteParams.js.map +1 -0
  41. package/lib/module/index.js +5 -4
  42. package/lib/module/index.js.map +1 -1
  43. package/lib/module/theming/useTheme.js +1 -1
  44. package/lib/module/theming/useTheme.js.map +1 -1
  45. package/lib/module/types.js +35 -0
  46. package/lib/module/types.js.map +1 -1
  47. package/lib/module/useDescriptors.js +19 -11
  48. package/lib/module/useDescriptors.js.map +1 -1
  49. package/lib/module/useEventEmitter.js +48 -33
  50. package/lib/module/useEventEmitter.js.map +1 -1
  51. package/lib/module/useFocusEvents.js +12 -4
  52. package/lib/module/useFocusEvents.js.map +1 -1
  53. package/lib/module/useFocusedListenersChildrenAdapter.js +2 -2
  54. package/lib/module/useFocusedListenersChildrenAdapter.js.map +1 -1
  55. package/lib/module/useIsFocused.js +7 -12
  56. package/lib/module/useIsFocused.js.map +1 -1
  57. package/lib/module/useKeyedChildListeners.js +4 -2
  58. package/lib/module/useKeyedChildListeners.js.map +1 -1
  59. package/lib/module/useLazyValue.js.map +1 -1
  60. package/lib/module/useNavigation.js +2 -15
  61. package/lib/module/useNavigation.js.map +1 -1
  62. package/lib/module/useNavigationBuilder.js +201 -131
  63. package/lib/module/useNavigationBuilder.js.map +1 -1
  64. package/lib/module/useNavigationCache.js +22 -17
  65. package/lib/module/useNavigationCache.js.map +1 -1
  66. package/lib/module/useNavigationHelpers.js +28 -10
  67. package/lib/module/useNavigationHelpers.js.map +1 -1
  68. package/lib/module/useNavigationIndependentTree.js +1 -1
  69. package/lib/module/useNavigationIndependentTree.js.map +1 -1
  70. package/lib/module/useNavigationState.js +70 -35
  71. package/lib/module/useNavigationState.js.map +1 -1
  72. package/lib/module/useOnAction.js +37 -7
  73. package/lib/module/useOnAction.js.map +1 -1
  74. package/lib/module/useOnGetState.js +6 -3
  75. package/lib/module/useOnGetState.js.map +1 -1
  76. package/lib/module/useOnPreventRemove.js +39 -30
  77. package/lib/module/useOnPreventRemove.js.map +1 -1
  78. package/lib/module/useOnRouteFocus.js +1 -1
  79. package/lib/module/useOnRouteFocus.js.map +1 -1
  80. package/lib/module/useOptionsGetters.js +10 -5
  81. package/lib/module/useOptionsGetters.js.map +1 -1
  82. package/lib/module/usePreventRemove.js +10 -3
  83. package/lib/module/usePreventRemove.js.map +1 -1
  84. package/lib/module/usePreventRemoveContext.js +1 -1
  85. package/lib/module/usePreventRemoveContext.js.map +1 -1
  86. package/lib/module/useRegisterNavigator.js +2 -2
  87. package/lib/module/useRegisterNavigator.js.map +1 -1
  88. package/lib/module/useRoute.js +2 -0
  89. package/lib/module/useRoute.js.map +1 -1
  90. package/lib/module/useRouteCache.js +17 -11
  91. package/lib/module/useRouteCache.js.map +1 -1
  92. package/lib/module/useScheduleUpdate.js +9 -9
  93. package/lib/module/useScheduleUpdate.js.map +1 -1
  94. package/lib/module/useStateForPath.js +1 -1
  95. package/lib/module/useStateForPath.js.map +1 -1
  96. package/lib/module/useSyncState.js +7 -3
  97. package/lib/module/useSyncState.js.map +1 -1
  98. package/lib/module/validatePathConfig.js +50 -36
  99. package/lib/module/validatePathConfig.js.map +1 -1
  100. package/lib/typescript/src/BaseNavigationContainer.d.ts +6 -3
  101. package/lib/typescript/src/BaseNavigationContainer.d.ts.map +1 -1
  102. package/lib/typescript/src/ConsumedParamsContext.d.ts +3 -0
  103. package/lib/typescript/src/ConsumedParamsContext.d.ts.map +1 -0
  104. package/lib/typescript/src/DataLoading.d.ts +21 -0
  105. package/lib/typescript/src/DataLoading.d.ts.map +1 -0
  106. package/lib/typescript/src/EnsureSingleNavigator.d.ts +1 -1
  107. package/lib/typescript/src/EnsureSingleNavigator.d.ts.map +1 -1
  108. package/lib/typescript/src/Group.d.ts +1 -1
  109. package/lib/typescript/src/Group.d.ts.map +1 -1
  110. package/lib/typescript/src/NavigationBuilderContext.d.ts +9 -8
  111. package/lib/typescript/src/NavigationBuilderContext.d.ts.map +1 -1
  112. package/lib/typescript/src/NavigationContainerRefContext.d.ts +1 -1
  113. package/lib/typescript/src/NavigationContainerRefContext.d.ts.map +1 -1
  114. package/lib/typescript/src/NavigationFocusedRouteStateContext.d.ts +4 -4
  115. package/lib/typescript/src/NavigationFocusedRouteStateContext.d.ts.map +1 -1
  116. package/lib/typescript/src/NavigationHelpersContext.d.ts +1 -1
  117. package/lib/typescript/src/NavigationHelpersContext.d.ts.map +1 -1
  118. package/lib/typescript/src/NavigationIndependentTree.d.ts +1 -1
  119. package/lib/typescript/src/NavigationIndependentTree.d.ts.map +1 -1
  120. package/lib/typescript/src/NavigationProvider.d.ts +12 -13
  121. package/lib/typescript/src/NavigationProvider.d.ts.map +1 -1
  122. package/lib/typescript/src/NavigationStateContext.d.ts +3 -3
  123. package/lib/typescript/src/NavigationStateContext.d.ts.map +1 -1
  124. package/lib/typescript/src/PreventRemoveContext.d.ts +1 -0
  125. package/lib/typescript/src/PreventRemoveContext.d.ts.map +1 -1
  126. package/lib/typescript/src/PreventRemoveProvider.d.ts +1 -1
  127. package/lib/typescript/src/PreventRemoveProvider.d.ts.map +1 -1
  128. package/lib/typescript/src/SceneView.d.ts +3 -2
  129. package/lib/typescript/src/SceneView.d.ts.map +1 -1
  130. package/lib/typescript/src/Screen.d.ts +1 -1
  131. package/lib/typescript/src/Screen.d.ts.map +1 -1
  132. package/lib/typescript/src/StaticContainer.d.ts +1 -1
  133. package/lib/typescript/src/StaticContainer.d.ts.map +1 -1
  134. package/lib/typescript/src/StaticNavigation.d.ts +189 -109
  135. package/lib/typescript/src/StaticNavigation.d.ts.map +1 -1
  136. package/lib/typescript/src/StaticTreeContext.d.ts +4 -0
  137. package/lib/typescript/src/StaticTreeContext.d.ts.map +1 -0
  138. package/lib/typescript/src/checkSerializable.d.ts +8 -4
  139. package/lib/typescript/src/checkSerializable.d.ts.map +1 -1
  140. package/lib/typescript/src/createNavigationContainerRef.d.ts +1 -1
  141. package/lib/typescript/src/createNavigationContainerRef.d.ts.map +1 -1
  142. package/lib/typescript/src/createNavigatorFactory.d.ts +23 -5
  143. package/lib/typescript/src/createNavigatorFactory.d.ts.map +1 -1
  144. package/lib/typescript/src/findFocusedRoute.d.ts +3 -3
  145. package/lib/typescript/src/findFocusedRoute.d.ts.map +1 -1
  146. package/lib/typescript/src/getActionFromState.d.ts +4 -4
  147. package/lib/typescript/src/getActionFromState.d.ts.map +1 -1
  148. package/lib/typescript/src/getPathFromState.d.ts +3 -3
  149. package/lib/typescript/src/getPathFromState.d.ts.map +1 -1
  150. package/lib/typescript/src/getPatternParts.d.ts +1 -0
  151. package/lib/typescript/src/getPatternParts.d.ts.map +1 -1
  152. package/lib/typescript/src/getStateFromPath.d.ts +5 -5
  153. package/lib/typescript/src/getStateFromPath.d.ts.map +1 -1
  154. package/lib/typescript/src/getStateFromRouteParams.d.ts +3 -0
  155. package/lib/typescript/src/getStateFromRouteParams.d.ts.map +1 -0
  156. package/lib/typescript/src/index.d.ts +36 -33
  157. package/lib/typescript/src/index.d.ts.map +1 -1
  158. package/lib/typescript/src/theming/ThemeContext.d.ts +1 -1
  159. package/lib/typescript/src/theming/ThemeContext.d.ts.map +1 -1
  160. package/lib/typescript/src/theming/ThemeProvider.d.ts +2 -2
  161. package/lib/typescript/src/theming/ThemeProvider.d.ts.map +1 -1
  162. package/lib/typescript/src/theming/useTheme.d.ts +1 -1
  163. package/lib/typescript/src/theming/useTheme.d.ts.map +1 -1
  164. package/lib/typescript/src/types.d.ts +260 -159
  165. package/lib/typescript/src/types.d.ts.map +1 -1
  166. package/lib/typescript/src/useChildListeners.d.ts +3 -3
  167. package/lib/typescript/src/useChildListeners.d.ts.map +1 -1
  168. package/lib/typescript/src/useComponent.d.ts +1 -1
  169. package/lib/typescript/src/useComponent.d.ts.map +1 -1
  170. package/lib/typescript/src/useDescriptors.d.ts +8 -8
  171. package/lib/typescript/src/useDescriptors.d.ts.map +1 -1
  172. package/lib/typescript/src/useEventEmitter.d.ts +2 -2
  173. package/lib/typescript/src/useEventEmitter.d.ts.map +1 -1
  174. package/lib/typescript/src/useFocusEvents.d.ts +2 -2
  175. package/lib/typescript/src/useFocusEvents.d.ts.map +1 -1
  176. package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts +2 -2
  177. package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts.map +1 -1
  178. package/lib/typescript/src/useIsFocused.d.ts +3 -0
  179. package/lib/typescript/src/useIsFocused.d.ts.map +1 -1
  180. package/lib/typescript/src/useKeyedChildListeners.d.ts +3 -3
  181. package/lib/typescript/src/useKeyedChildListeners.d.ts.map +1 -1
  182. package/lib/typescript/src/useLazyValue.d.ts.map +1 -1
  183. package/lib/typescript/src/useNavigation.d.ts +4 -2
  184. package/lib/typescript/src/useNavigation.d.ts.map +1 -1
  185. package/lib/typescript/src/useNavigationBuilder.d.ts +23 -30
  186. package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -1
  187. package/lib/typescript/src/useNavigationCache.d.ts +3 -3
  188. package/lib/typescript/src/useNavigationCache.d.ts.map +1 -1
  189. package/lib/typescript/src/useNavigationContainerRef.d.ts +1 -1
  190. package/lib/typescript/src/useNavigationContainerRef.d.ts.map +1 -1
  191. package/lib/typescript/src/useNavigationHelpers.d.ts +19 -27
  192. package/lib/typescript/src/useNavigationHelpers.d.ts.map +1 -1
  193. package/lib/typescript/src/useNavigationState.d.ts +13 -3
  194. package/lib/typescript/src/useNavigationState.d.ts.map +1 -1
  195. package/lib/typescript/src/useOnAction.d.ts +9 -9
  196. package/lib/typescript/src/useOnAction.d.ts.map +1 -1
  197. package/lib/typescript/src/useOnGetState.d.ts +1 -1
  198. package/lib/typescript/src/useOnGetState.d.ts.map +1 -1
  199. package/lib/typescript/src/useOnPreventRemove.d.ts +5 -9
  200. package/lib/typescript/src/useOnPreventRemove.d.ts.map +1 -1
  201. package/lib/typescript/src/useOnRouteFocus.d.ts +6 -6
  202. package/lib/typescript/src/useOnRouteFocus.d.ts.map +1 -1
  203. package/lib/typescript/src/useOptionsGetters.d.ts +1 -1
  204. package/lib/typescript/src/useOptionsGetters.d.ts.map +1 -1
  205. package/lib/typescript/src/usePreventRemove.d.ts.map +1 -1
  206. package/lib/typescript/src/usePreventRemoveContext.d.ts +2 -1
  207. package/lib/typescript/src/usePreventRemoveContext.d.ts.map +1 -1
  208. package/lib/typescript/src/useRoute.d.ts +7 -3
  209. package/lib/typescript/src/useRoute.d.ts.map +1 -1
  210. package/lib/typescript/src/useRouteCache.d.ts +5 -5
  211. package/lib/typescript/src/useRouteCache.d.ts.map +1 -1
  212. package/lib/typescript/src/useScheduleUpdate.d.ts +5 -4
  213. package/lib/typescript/src/useScheduleUpdate.d.ts.map +1 -1
  214. package/lib/typescript/src/useStateForPath.d.ts +1 -1
  215. package/lib/typescript/src/useStateForPath.d.ts.map +1 -1
  216. package/lib/typescript/src/useSyncState.d.ts.map +1 -1
  217. package/lib/typescript/src/utilities.d.ts +74 -37
  218. package/lib/typescript/src/utilities.d.ts.map +1 -1
  219. package/lib/typescript/src/validatePathConfig.d.ts.map +1 -1
  220. package/package.json +23 -22
  221. package/src/BaseNavigationContainer.tsx +351 -333
  222. package/src/ConsumedParamsContext.tsx +5 -0
  223. package/src/DataLoading.tsx +203 -0
  224. package/src/NavigationBuilderContext.tsx +14 -9
  225. package/src/NavigationFocusedRouteStateContext.tsx +4 -4
  226. package/src/NavigationIndependentTree.tsx +18 -12
  227. package/src/NavigationProvider.tsx +26 -15
  228. package/src/NavigationStateContext.tsx +5 -6
  229. package/src/PreventRemoveContext.tsx +1 -0
  230. package/src/PreventRemoveProvider.tsx +51 -46
  231. package/src/SceneView.tsx +7 -39
  232. package/src/StaticNavigation.tsx +659 -307
  233. package/src/StaticTreeContext.tsx +7 -0
  234. package/src/checkSerializable.tsx +35 -19
  235. package/src/createNavigationContainerRef.tsx +12 -9
  236. package/src/createNavigatorFactory.tsx +92 -8
  237. package/src/findFocusedRoute.tsx +13 -8
  238. package/src/getActionFromState.tsx +86 -51
  239. package/src/getPathFromState.tsx +254 -128
  240. package/src/getPatternParts.tsx +25 -4
  241. package/src/getStateFromPath.tsx +811 -309
  242. package/src/getStateFromRouteParams.tsx +60 -0
  243. package/src/index.tsx +55 -5
  244. package/src/theming/useTheme.tsx +1 -1
  245. package/src/types.tsx +798 -373
  246. package/src/useDescriptors.tsx +28 -14
  247. package/src/useEventEmitter.tsx +52 -38
  248. package/src/useFocusEvents.tsx +15 -7
  249. package/src/useFocusedListenersChildrenAdapter.tsx +2 -2
  250. package/src/useIsFocused.tsx +14 -21
  251. package/src/useKeyedChildListeners.tsx +4 -2
  252. package/src/useLazyValue.tsx +2 -2
  253. package/src/useNavigation.tsx +7 -24
  254. package/src/useNavigationBuilder.tsx +311 -186
  255. package/src/useNavigationCache.tsx +32 -25
  256. package/src/useNavigationHelpers.tsx +27 -10
  257. package/src/useNavigationIndependentTree.tsx +1 -1
  258. package/src/useNavigationState.tsx +93 -59
  259. package/src/useOnAction.tsx +61 -13
  260. package/src/useOnGetState.tsx +5 -3
  261. package/src/useOnPreventRemove.tsx +75 -42
  262. package/src/useOnRouteFocus.tsx +10 -12
  263. package/src/useOptionsGetters.tsx +11 -5
  264. package/src/usePreventRemove.tsx +12 -3
  265. package/src/usePreventRemoveContext.tsx +1 -1
  266. package/src/useRegisterNavigator.tsx +2 -2
  267. package/src/useRoute.tsx +20 -6
  268. package/src/useRouteCache.tsx +22 -16
  269. package/src/useScheduleUpdate.tsx +9 -10
  270. package/src/useStateForPath.tsx +1 -1
  271. package/src/useSyncState.tsx +8 -3
  272. package/src/utilities.tsx +144 -31
  273. package/src/validatePathConfig.tsx +86 -57
  274. package/lib/module/CurrentRenderContext.js +0 -10
  275. package/lib/module/CurrentRenderContext.js.map +0 -1
  276. package/lib/module/useCurrentRender.js +0 -19
  277. package/lib/module/useCurrentRender.js.map +0 -1
  278. package/lib/typescript/src/CurrentRenderContext.d.ts +0 -9
  279. package/lib/typescript/src/CurrentRenderContext.d.ts.map +0 -1
  280. package/lib/typescript/src/useCurrentRender.d.ts +0 -14
  281. package/lib/typescript/src/useCurrentRender.d.ts.map +0 -1
  282. package/src/CurrentRenderContext.tsx +0 -9
  283. package/src/useCurrentRender.tsx +0 -31
@@ -5,6 +5,7 @@ import * as React from 'react';
5
5
  import useLatestCallback from 'use-latest-callback';
6
6
  import { checkDuplicateRouteNames } from "./checkDuplicateRouteNames.js";
7
7
  import { checkSerializable } from "./checkSerializable.js";
8
+ import { ConsumedParamsContext } from "./ConsumedParamsContext.js";
8
9
  import { NOT_INITIALIZED_ERROR } from "./createNavigationContainerRef.js";
9
10
  import { EnsureSingleNavigator } from "./EnsureSingleNavigator.js";
10
11
  import { findFocusedRoute } from "./findFocusedRoute.js";
@@ -17,13 +18,13 @@ import { UnhandledActionContext } from "./UnhandledActionContext.js";
17
18
  import { useChildListeners } from "./useChildListeners.js";
18
19
  import { useEventEmitter } from "./useEventEmitter.js";
19
20
  import { useKeyedChildListeners } from "./useKeyedChildListeners.js";
21
+ import { useLazyValue } from "./useLazyValue.js";
20
22
  import { useNavigationIndependentTree } from "./useNavigationIndependentTree.js";
21
23
  import { useOptionsGetters } from "./useOptionsGetters.js";
22
24
  import { useSyncState } from "./useSyncState.js";
23
25
  import { jsx as _jsx } from "react/jsx-runtime";
24
26
  const serializableWarnings = [];
25
27
  const duplicateNameWarnings = [];
26
-
27
28
  /**
28
29
  * Remove `key` and `routeNames` from the state objects recursively to get partial state.
29
30
  *
@@ -67,15 +68,16 @@ const getPartialState = state => {
67
68
  * @param props.children Child elements to render the content.
68
69
  * @param props.ref Ref object which refers to the navigation object containing helper methods.
69
70
  */
70
- export const BaseNavigationContainer = /*#__PURE__*/React.forwardRef(function BaseNavigationContainer({
71
+ export function BaseNavigationContainer({
71
72
  initialState,
72
73
  onStateChange,
73
74
  onReady,
74
75
  onUnhandledAction,
75
76
  theme,
76
- children
77
- }, ref) {
78
- const parent = React.useContext(NavigationStateContext);
77
+ children,
78
+ ref
79
+ }) {
80
+ const parent = React.use(NavigationStateContext);
79
81
  const independent = useNavigationIndependentTree();
80
82
  if (!parent.isDefault && !independent) {
81
83
  throw new Error("Looks like you have nested a 'NavigationContainer' inside another. Normally you need only one container at the root of the app, so this was probably an error. If this was intentional, wrap the container in 'NavigationIndependentTree' explicitly. Note that this will make the child navigators disconnected from the parent and you won't be able to navigate between them.");
@@ -87,6 +89,7 @@ export const BaseNavigationContainer = /*#__PURE__*/React.forwardRef(function Ba
87
89
  scheduleUpdate,
88
90
  flushUpdates
89
91
  } = useSyncState(() => getPartialState(initialState == null ? undefined : initialState));
92
+ const consumedParams = useLazyValue(() => new WeakMap());
90
93
  const isFirstMountRef = React.useRef(true);
91
94
  const navigatorKeyRef = React.useRef(undefined);
92
95
  const getKey = React.useCallback(() => navigatorKeyRef.current, []);
@@ -102,10 +105,13 @@ export const BaseNavigationContainer = /*#__PURE__*/React.forwardRef(function Ba
102
105
  addKeyedListener
103
106
  } = useKeyedChildListeners();
104
107
  const dispatch = useLatestCallback(action => {
105
- if (listeners.focus[0] == null) {
108
+ const listener = listeners.focus[0];
109
+ if (listener == null) {
106
110
  console.error(NOT_INITIALIZED_ERROR);
107
111
  } else {
108
- listeners.focus[0](navigation => navigation.dispatch(action));
112
+ listener(navigation => React.startTransition(() => {
113
+ navigation.dispatch(action);
114
+ }));
109
115
  }
110
116
  });
111
117
  const canGoBack = useLatestCallback(() => {
@@ -124,10 +130,11 @@ export const BaseNavigationContainer = /*#__PURE__*/React.forwardRef(function Ba
124
130
  });
125
131
  const resetRoot = useLatestCallback(state => {
126
132
  const target = state?.key ?? keyedListeners.getState.root?.().key;
127
- if (target == null) {
133
+ const listener = listeners.focus[0];
134
+ if (target == null || listener == null) {
128
135
  console.error(NOT_INITIALIZED_ERROR);
129
136
  } else {
130
- listeners.focus[0](navigation => navigation.dispatch({
137
+ listener(navigation => navigation.dispatch({
131
138
  ...CommonActions.reset(state),
132
139
  target
133
140
  }));
@@ -203,16 +210,19 @@ export const BaseNavigationContainer = /*#__PURE__*/React.forwardRef(function Ba
203
210
  });
204
211
  });
205
212
  const stackRef = React.useRef(undefined);
213
+ const lastEmittedStateRef = React.useRef(undefined);
214
+ const getIsStateEmitted = useLatestCallback(() => !isFirstMountRef.current && lastEmittedStateRef.current === getState());
206
215
  const builderContext = React.useMemo(() => ({
207
216
  addListener,
208
217
  addKeyedListener,
209
218
  onDispatchAction,
210
219
  onEmitEvent,
211
220
  onOptionsChange,
221
+ getIsStateEmitted,
212
222
  scheduleUpdate,
213
223
  flushUpdates,
214
224
  stackRef
215
- }), [addListener, addKeyedListener, onDispatchAction, onEmitEvent, onOptionsChange, scheduleUpdate, flushUpdates]);
225
+ }), [addListener, addKeyedListener, onDispatchAction, onEmitEvent, onOptionsChange, getIsStateEmitted, scheduleUpdate, flushUpdates]);
216
226
  const isInitialRef = React.useRef(true);
217
227
  const getIsInitial = React.useCallback(() => isInitialRef.current, []);
218
228
  const context = React.useMemo(() => ({
@@ -257,6 +267,9 @@ export const BaseNavigationContainer = /*#__PURE__*/React.forwardRef(function Ba
257
267
  for (let i = 0; i < location.length; i++) {
258
268
  const curr = location[i];
259
269
  const prev = location[i - 1];
270
+ if (curr == null) {
271
+ continue;
272
+ }
260
273
  pointer = pointer[curr];
261
274
  if (!params && curr === 'state') {
262
275
  continue;
@@ -295,6 +308,7 @@ export const BaseNavigationContainer = /*#__PURE__*/React.forwardRef(function Ba
295
308
  }
296
309
  }
297
310
  }
311
+ lastEmittedStateRef.current = state;
298
312
  emitter.emit({
299
313
  type: 'state',
300
314
  data: {
@@ -347,12 +361,15 @@ export const BaseNavigationContainer = /*#__PURE__*/React.forwardRef(function Ba
347
361
  value: builderContext,
348
362
  children: /*#__PURE__*/_jsx(NavigationStateContext.Provider, {
349
363
  value: context,
350
- children: /*#__PURE__*/_jsx(UnhandledActionContext.Provider, {
351
- value: onUnhandledAction ?? defaultOnUnhandledAction,
352
- children: /*#__PURE__*/_jsx(EnsureSingleNavigator, {
353
- children: /*#__PURE__*/_jsx(ThemeProvider, {
354
- value: theme,
355
- children: children
364
+ children: /*#__PURE__*/_jsx(ConsumedParamsContext.Provider, {
365
+ value: consumedParams,
366
+ children: /*#__PURE__*/_jsx(UnhandledActionContext.Provider, {
367
+ value: onUnhandledAction ?? defaultOnUnhandledAction,
368
+ children: /*#__PURE__*/_jsx(EnsureSingleNavigator, {
369
+ children: /*#__PURE__*/_jsx(ThemeProvider, {
370
+ value: theme,
371
+ children: children
372
+ })
356
373
  })
357
374
  })
358
375
  })
@@ -360,5 +377,5 @@ export const BaseNavigationContainer = /*#__PURE__*/React.forwardRef(function Ba
360
377
  })
361
378
  })
362
379
  });
363
- });
380
+ }
364
381
  //# sourceMappingURL=BaseNavigationContainer.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["CommonActions","React","useLatestCallback","checkDuplicateRouteNames","checkSerializable","NOT_INITIALIZED_ERROR","EnsureSingleNavigator","findFocusedRoute","NavigationBuilderContext","NavigationContainerRefContext","NavigationIndependentTreeContext","NavigationStateContext","ThemeProvider","UnhandledActionContext","useChildListeners","useEventEmitter","useKeyedChildListeners","useNavigationIndependentTree","useOptionsGetters","useSyncState","jsx","_jsx","serializableWarnings","duplicateNameWarnings","getPartialState","state","undefined","key","routeNames","partialState","stale","routes","map","route","BaseNavigationContainer","forwardRef","initialState","onStateChange","onReady","onUnhandledAction","theme","children","ref","parent","useContext","independent","isDefault","Error","getState","setState","scheduleUpdate","flushUpdates","isFirstMountRef","useRef","navigatorKeyRef","getKey","useCallback","current","setKey","listeners","addListener","keyedListeners","addKeyedListener","dispatch","action","focus","console","error","navigation","canGoBack","result","handled","resetRoot","target","root","reset","getRootState","getCurrentRoute","isReady","emitter","addOptionsGetter","getCurrentOptions","useMemo","Object","keys","reduce","acc","name","args","create","isFocused","getParent","setOptions","useImperativeHandle","onDispatchAction","noop","emit","type","data","stack","stackRef","onEmitEvent","event","lastEmittedOptionsRef","onOptionsChange","options","builderContext","isInitialRef","getIsInitial","context","onReadyRef","onStateChangeRef","useEffect","onReadyCalledRef","hydratedState","process","env","NODE_ENV","serializableResult","serializable","location","reason","path","pointer","params","i","length","curr","prev","test","JSON","stringify","message","includes","push","warn","duplicateRouteNamesResult","locations","join","defaultOnUnhandledAction","payload","Provider","value"],"sourceRoot":"../../src","sources":["BaseNavigationContainer.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["CommonActions","React","useLatestCallback","checkDuplicateRouteNames","checkSerializable","ConsumedParamsContext","NOT_INITIALIZED_ERROR","EnsureSingleNavigator","findFocusedRoute","NavigationBuilderContext","NavigationContainerRefContext","NavigationIndependentTreeContext","NavigationStateContext","ThemeProvider","UnhandledActionContext","useChildListeners","useEventEmitter","useKeyedChildListeners","useLazyValue","useNavigationIndependentTree","useOptionsGetters","useSyncState","jsx","_jsx","serializableWarnings","duplicateNameWarnings","getPartialState","state","undefined","key","routeNames","partialState","stale","routes","map","route","BaseNavigationContainer","initialState","onStateChange","onReady","onUnhandledAction","theme","children","ref","parent","use","independent","isDefault","Error","getState","setState","scheduleUpdate","flushUpdates","consumedParams","WeakMap","isFirstMountRef","useRef","navigatorKeyRef","getKey","useCallback","current","setKey","listeners","addListener","keyedListeners","addKeyedListener","dispatch","action","listener","focus","console","error","navigation","startTransition","canGoBack","result","handled","resetRoot","target","root","reset","getRootState","getCurrentRoute","isReady","emitter","addOptionsGetter","getCurrentOptions","useMemo","Object","keys","reduce","acc","name","args","create","isFocused","getParent","setOptions","useImperativeHandle","onDispatchAction","noop","emit","type","data","stack","stackRef","onEmitEvent","event","lastEmittedOptionsRef","onOptionsChange","options","lastEmittedStateRef","getIsStateEmitted","builderContext","isInitialRef","getIsInitial","context","onReadyRef","onStateChangeRef","useEffect","onReadyCalledRef","hydratedState","process","env","NODE_ENV","serializableResult","serializable","location","reason","path","pointer","params","i","length","curr","prev","test","JSON","stringify","message","includes","push","warn","duplicateRouteNamesResult","locations","join","defaultOnUnhandledAction","payload","Provider","value"],"sourceRoot":"../../src","sources":["BaseNavigationContainer.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ import * as React from 'react';
4
+ export const ConsumedParamsContext = /*#__PURE__*/React.createContext(undefined);
5
+ //# sourceMappingURL=ConsumedParamsContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","ConsumedParamsContext","createContext","undefined"],"sourceRoot":"../../src","sources":["ConsumedParamsContext.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAO,MAAMC,qBAAqB,gBAAGD,KAAK,CAACE,aAAa,CAEtDC,SAAS,CAAC","ignoreList":[]}
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+
3
+ import { getStateFromRouteParams } from "./getStateFromRouteParams.js";
4
+ function findScreenInConfig(config, name) {
5
+ const screens = config.screens;
6
+ if (screens?.[name] != null) {
7
+ return screens[name];
8
+ }
9
+ if (config.groups) {
10
+ for (const group of Object.values(config.groups)) {
11
+ if (group.screens[name] != null) {
12
+ return group.screens[name];
13
+ }
14
+ }
15
+ }
16
+ return undefined;
17
+ }
18
+ function findInitialRouteName(config) {
19
+ if (config.initialRouteName != null) {
20
+ return config.initialRouteName;
21
+ }
22
+ for (const key in config) {
23
+ if (key === 'screens' && config.screens) {
24
+ const name = Object.keys(config.screens)[0];
25
+ if (name != null) {
26
+ return name;
27
+ }
28
+ }
29
+ if (key === 'groups' && config.groups) {
30
+ for (const group of Object.values(config.groups)) {
31
+ const name = Object.keys(group.screens)[0];
32
+ if (name != null) {
33
+ return name;
34
+ }
35
+ }
36
+ }
37
+ }
38
+ return undefined;
39
+ }
40
+
41
+ /**
42
+ * Get loader for the focused route in a static config tree with given navigation state.
43
+ *
44
+ * @param tree The static navigation config.
45
+ * @param state The navigation state to extract the focused route path from.
46
+ * @returns A function that returns a `Promise<void>`, or `undefined` if no loaders are found.
47
+ *
48
+ * @example
49
+ * ```js
50
+ * const loader = getLoaderForState(RootStack, {
51
+ * index: 0,
52
+ * routes: [{ name: 'Home' }],
53
+ * });
54
+ * await loader?.();
55
+ * ```
56
+ */
57
+ export function getLoaderForState(tree, state) {
58
+ return getLoaderForStateChange(tree, state, undefined, undefined);
59
+ }
60
+ export function getLoaderForStateChange(tree, state, previousState, consumedParams) {
61
+ const focusedRoute = state?.routes[state.index ?? state.routes.length - 1];
62
+ const previousFocusedRoute = previousState?.routes[previousState.index ?? previousState.routes.length - 1];
63
+ if (!focusedRoute) {
64
+ return undefined;
65
+ }
66
+ const isNewlyFocused = previousState === undefined || previousFocusedRoute == null || focusedRoute.name !== previousFocusedRoute.name || focusedRoute.key != null && previousFocusedRoute.key != null && focusedRoute.key !== previousFocusedRoute.key;
67
+ const item = findScreenInConfig(tree.config, focusedRoute.name);
68
+ if (item == null) {
69
+ return undefined;
70
+ }
71
+ const initialParams = typeof item === 'object' && 'initialParams' in item ? item.initialParams : undefined;
72
+ const params = initialParams != null || focusedRoute.params != null ? {
73
+ ...initialParams,
74
+ ...focusedRoute.params
75
+ } : undefined;
76
+ const loaders = [];
77
+ if (isNewlyFocused && 'UNSTABLE_loader' in item && typeof item.UNSTABLE_loader === 'function') {
78
+ const loader = item.UNSTABLE_loader;
79
+ loaders.push(() => loader({
80
+ name: focusedRoute.name,
81
+ params
82
+ }));
83
+ }
84
+ const nested = 'config' in item ? item : 'screen' in item && 'config' in item.screen ? item.screen : undefined;
85
+ if (nested) {
86
+ const initialRouteName = findInitialRouteName(nested.config);
87
+ const stateFromParams = focusedRoute.params != null && consumedParams?.has(focusedRoute.params) ? undefined : getStateFromRouteParams(params);
88
+ let childState = previousState !== undefined && stateFromParams != null ? stateFromParams : focusedRoute.state ?? stateFromParams;
89
+ if (childState == null && initialRouteName != null) {
90
+ childState = {
91
+ routes: [{
92
+ name: initialRouteName
93
+ }]
94
+ };
95
+ }
96
+ let previousChildState;
97
+ if (!isNewlyFocused) {
98
+ const previousRouteParams = previousFocusedRoute?.params;
99
+ const previousParams = initialParams != null || previousRouteParams != null ? {
100
+ ...initialParams,
101
+ ...previousRouteParams
102
+ } : undefined;
103
+ const previousStateFromParams = previousRouteParams != null && consumedParams?.has(previousRouteParams) ? undefined : getStateFromRouteParams(previousParams);
104
+ previousChildState = previousFocusedRoute?.state ?? previousStateFromParams;
105
+ if (previousChildState == null && initialRouteName != null) {
106
+ previousChildState = {
107
+ routes: [{
108
+ name: initialRouteName
109
+ }]
110
+ };
111
+ }
112
+ }
113
+ const childLoader = getLoaderForStateChange(nested, childState, previousState === undefined ? undefined : previousChildState ?? {
114
+ routes: []
115
+ }, consumedParams);
116
+ if (childLoader) {
117
+ loaders.push(childLoader);
118
+ }
119
+ }
120
+ if (loaders.length === 0) {
121
+ return undefined;
122
+ }
123
+ return async () => {
124
+ await Promise.all(loaders.map(l => l()));
125
+ };
126
+ }
127
+ //# sourceMappingURL=DataLoading.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getStateFromRouteParams","findScreenInConfig","config","name","screens","groups","group","Object","values","undefined","findInitialRouteName","initialRouteName","key","keys","getLoaderForState","tree","state","getLoaderForStateChange","previousState","consumedParams","focusedRoute","routes","index","length","previousFocusedRoute","isNewlyFocused","item","initialParams","params","loaders","UNSTABLE_loader","loader","push","nested","screen","stateFromParams","has","childState","previousChildState","previousRouteParams","previousParams","previousStateFromParams","childLoader","Promise","all","map","l"],"sourceRoot":"../../src","sources":["DataLoading.tsx"],"mappings":"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","ignoreList":[]}
@@ -8,6 +8,7 @@ export const NavigationBuilderContext = /*#__PURE__*/React.createContext({
8
8
  onDispatchAction: () => undefined,
9
9
  onEmitEvent: () => undefined,
10
10
  onOptionsChange: () => undefined,
11
+ getIsStateEmitted: () => false,
11
12
  scheduleUpdate: () => {
12
13
  throw new Error("Couldn't find a context for scheduling updates.");
13
14
  },
@@ -1 +1 @@
1
- {"version":3,"names":["React","NavigationBuilderContext","createContext","onDispatchAction","undefined","onEmitEvent","onOptionsChange","scheduleUpdate","Error","flushUpdates"],"sourceRoot":"../../src","sources":["NavigationBuilderContext.tsx"],"mappings":";;AAKA,OAAO,KAAKA,KAAK,MAAM,OAAO;AA6C9B;AACA;AACA;AACA,OAAO,MAAMC,wBAAwB,gBAAGD,KAAK,CAACE,aAAa,CAmBxD;EACDC,gBAAgB,EAAEA,CAAA,KAAMC,SAAS;EACjCC,WAAW,EAAEA,CAAA,KAAMD,SAAS;EAC5BE,eAAe,EAAEA,CAAA,KAAMF,SAAS;EAChCG,cAAc,EAAEA,CAAA,KAAM;IACpB,MAAM,IAAIC,KAAK,CAAC,iDAAiD,CAAC;EACpE,CAAC;EACDC,YAAY,EAAEA,CAAA,KAAM;IAClB,MAAM,IAAID,KAAK,CAAC,+CAA+C,CAAC;EAClE;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","NavigationBuilderContext","createContext","onDispatchAction","undefined","onEmitEvent","onOptionsChange","getIsStateEmitted","scheduleUpdate","Error","flushUpdates"],"sourceRoot":"../../src","sources":["NavigationBuilderContext.tsx"],"mappings":";;AAMA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAgD9B;AACA;AACA;AACA,OAAO,MAAMC,wBAAwB,gBAAGD,KAAK,CAACE,aAAa,CAmBxD;EACDC,gBAAgB,EAAEA,CAAA,KAAMC,SAAS;EACjCC,WAAW,EAAEA,CAAA,KAAMD,SAAS;EAC5BE,eAAe,EAAEA,CAAA,KAAMF,SAAS;EAChCG,iBAAiB,EAAEA,CAAA,KAAM,KAAK;EAC9BC,cAAc,EAAEA,CAAA,KAAM;IACpB,MAAM,IAAIC,KAAK,CAAC,iDAAiD,CAAC;EACpE,CAAC;EACDC,YAAY,EAAEA,CAAA,KAAM;IAClB,MAAM,IAAID,KAAK,CAAC,+CAA+C,CAAC;EAClE;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,8 +1,11 @@
1
1
  "use strict";
2
2
 
3
3
  import * as React from 'react';
4
+ import { NavigationFocusedRouteStateContext } from "./NavigationFocusedRouteStateContext.js";
4
5
  import { NavigationIndependentTreeContext } from "./NavigationIndependentTreeContext.js";
5
- import { NamedRouteContextListContext, NavigationContext, NavigationRouteContext, NavigationRouteNameContext } from "./NavigationProvider.js";
6
+ import { NamedRouteContextListContext, NavigationContext, NavigationRouteContext } from "./NavigationProvider.js";
7
+ import { IsFocusedContext } from "./useIsFocused.js";
8
+ import { NamedNavigationStateListenerListContext } from "./useNavigationState.js";
6
9
 
7
10
  /**
8
11
  * Component to make the child navigation container independent of parent containers.
@@ -14,17 +17,23 @@ export function NavigationIndependentTree({
14
17
  return (
15
18
  /*#__PURE__*/
16
19
  // We need to clear any existing contexts for nested independent container to work correctly
17
- _jsx(NamedRouteContextListContext.Provider, {
20
+ _jsx(NamedNavigationStateListenerListContext.Provider, {
18
21
  value: undefined,
19
- children: /*#__PURE__*/_jsx(NavigationRouteContext.Provider, {
22
+ children: /*#__PURE__*/_jsx(NamedRouteContextListContext.Provider, {
20
23
  value: undefined,
21
- children: /*#__PURE__*/_jsx(NavigationContext.Provider, {
24
+ children: /*#__PURE__*/_jsx(NavigationRouteContext.Provider, {
22
25
  value: undefined,
23
- children: /*#__PURE__*/_jsx(NavigationRouteNameContext.Provider, {
26
+ children: /*#__PURE__*/_jsx(NavigationContext.Provider, {
24
27
  value: undefined,
25
- children: /*#__PURE__*/_jsx(NavigationIndependentTreeContext.Provider, {
26
- value: true,
27
- children: children
28
+ children: /*#__PURE__*/_jsx(NavigationFocusedRouteStateContext.Provider, {
29
+ value: undefined,
30
+ children: /*#__PURE__*/_jsx(IsFocusedContext.Provider, {
31
+ value: undefined,
32
+ children: /*#__PURE__*/_jsx(NavigationIndependentTreeContext.Provider, {
33
+ value: true,
34
+ children: children
35
+ })
36
+ })
28
37
  })
29
38
  })
30
39
  })
@@ -1 +1 @@
1
- {"version":3,"names":["React","NavigationIndependentTreeContext","NamedRouteContextListContext","NavigationContext","NavigationRouteContext","NavigationRouteNameContext","jsx","_jsx","NavigationIndependentTree","children","Provider","value","undefined"],"sourceRoot":"../../src","sources":["NavigationIndependentTree.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,gCAAgC,QAAQ,uCAAoC;AACrF,SACEC,4BAA4B,EAC5BC,iBAAiB,EACjBC,sBAAsB,EACtBC,0BAA0B,QACrB,yBAAsB;;AAE7B;AACA;AACA;AAFA,SAAAC,GAAA,IAAAC,IAAA;AAGA,OAAO,SAASC,yBAAyBA,CAAC;EACxCC;AAGF,CAAC,EAAE;EACD;IAAA;IACE;IACAF,IAAA,CAACL,4BAA4B,CAACQ,QAAQ;MAACC,KAAK,EAAEC,SAAU;MAAAH,QAAA,eACtDF,IAAA,CAACH,sBAAsB,CAACM,QAAQ;QAACC,KAAK,EAAEC,SAAU;QAAAH,QAAA,eAChDF,IAAA,CAACJ,iBAAiB,CAACO,QAAQ;UAACC,KAAK,EAAEC,SAAU;UAAAH,QAAA,eAC3CF,IAAA,CAACF,0BAA0B,CAACK,QAAQ;YAACC,KAAK,EAAEC,SAAU;YAAAH,QAAA,eACpDF,IAAA,CAACN,gCAAgC,CAACS,QAAQ;cAACC,KAAK,EAAE,IAAK;cAAAF,QAAA,EACpDA;YAAQ,CACgC;UAAC,CACT;QAAC,CACZ;MAAC,CACE;IAAC,CACG;EAAC;AAE5C","ignoreList":[]}
1
+ {"version":3,"names":["React","NavigationFocusedRouteStateContext","NavigationIndependentTreeContext","NamedRouteContextListContext","NavigationContext","NavigationRouteContext","IsFocusedContext","NamedNavigationStateListenerListContext","jsx","_jsx","NavigationIndependentTree","children","Provider","value","undefined"],"sourceRoot":"../../src","sources":["NavigationIndependentTree.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,kCAAkC,QAAQ,yCAAsC;AACzF,SAASC,gCAAgC,QAAQ,uCAAoC;AACrF,SACEC,4BAA4B,EAC5BC,iBAAiB,EACjBC,sBAAsB,QACjB,yBAAsB;AAC7B,SAASC,gBAAgB,QAAQ,mBAAgB;AACjD,SAASC,uCAAuC,QAAQ,yBAAsB;;AAE9E;AACA;AACA;AAFA,SAAAC,GAAA,IAAAC,IAAA;AAGA,OAAO,SAASC,yBAAyBA,CAAC;EACxCC;AAGF,CAAC,EAAE;EACD;IAAA;IACE;IACAF,IAAA,CAACF,uCAAuC,CAACK,QAAQ;MAACC,KAAK,EAAEC,SAAU;MAAAH,QAAA,eACjEF,IAAA,CAACN,4BAA4B,CAACS,QAAQ;QAACC,KAAK,EAAEC,SAAU;QAAAH,QAAA,eACtDF,IAAA,CAACJ,sBAAsB,CAACO,QAAQ;UAACC,KAAK,EAAEC,SAAU;UAAAH,QAAA,eAChDF,IAAA,CAACL,iBAAiB,CAACQ,QAAQ;YAACC,KAAK,EAAEC,SAAU;YAAAH,QAAA,eAC3CF,IAAA,CAACR,kCAAkC,CAACW,QAAQ;cAACC,KAAK,EAAEC,SAAU;cAAAH,QAAA,eAC5DF,IAAA,CAACH,gBAAgB,CAACM,QAAQ;gBAACC,KAAK,EAAEC,SAAU;gBAAAH,QAAA,eAC1CF,IAAA,CAACP,gCAAgC,CAACU,QAAQ;kBAACC,KAAK,EAAE,IAAK;kBAAAF,QAAA,EACpDA;gBAAQ,CACgC;cAAC,CACnB;YAAC,CACe;UAAC,CACpB;QAAC,CACE;MAAC,CACG;IAAC,CACQ;EAAC;AAEvD","ignoreList":[]}
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
 
3
3
  import * as React from 'react';
4
+ import { FocusedRouteKeyContext, IsFocusedContext } from "./useIsFocused.js";
4
5
  import { useLazyValue } from "./useLazyValue.js";
6
+ import { NamedNavigationStateListenerProvider } from "./useNavigationState.js";
5
7
 
6
8
  /**
7
9
  * Context which holds the route prop for a screen.
@@ -13,7 +15,6 @@ export const NavigationRouteContext = /*#__PURE__*/React.createContext(undefined
13
15
  * Context which holds the navigation prop for a screen.
14
16
  */
15
17
  export const NavigationContext = /*#__PURE__*/React.createContext(undefined);
16
- export const NavigationRouteNameContext = /*#__PURE__*/React.createContext(undefined);
17
18
  /**
18
19
  * Component to provide the navigation and route contexts to its children.
19
20
  */
@@ -29,17 +30,27 @@ export function NavigationProvider({
29
30
  ...parents,
30
31
  [route.name]: NamedRouteContext
31
32
  }), [NamedRouteContext, parents, route.name]);
32
- return /*#__PURE__*/_jsx(NamedRouteContextListContext.Provider, {
33
- value: NamedRouteContextList,
34
- children: /*#__PURE__*/_jsx(NamedRouteContext.Provider, {
35
- value: route,
36
- children: /*#__PURE__*/_jsx(NavigationRouteContext.Provider, {
33
+ const parentIsFocused = React.use(IsFocusedContext);
34
+ const focusedRouteKey = React.use(FocusedRouteKeyContext);
35
+
36
+ // Mark route as focused only if:
37
+ // - It doesn't have a parent navigator
38
+ // - Parent navigator is focused
39
+ const isFocused = parentIsFocused == null || parentIsFocused ? focusedRouteKey === route.key : false;
40
+ return /*#__PURE__*/_jsx(NamedNavigationStateListenerProvider, {
41
+ name: route.name,
42
+ children: /*#__PURE__*/_jsx(NamedRouteContextListContext.Provider, {
43
+ value: NamedRouteContextList,
44
+ children: /*#__PURE__*/_jsx(NamedRouteContext.Provider, {
37
45
  value: route,
38
- children: /*#__PURE__*/_jsx(NavigationContext.Provider, {
39
- value: navigation,
40
- children: /*#__PURE__*/_jsx(NavigationRouteNameContext.Provider, {
41
- value: route.name,
42
- children: children
46
+ children: /*#__PURE__*/_jsx(NavigationRouteContext.Provider, {
47
+ value: route,
48
+ children: /*#__PURE__*/_jsx(NavigationContext.Provider, {
49
+ value: navigation,
50
+ children: /*#__PURE__*/_jsx(IsFocusedContext.Provider, {
51
+ value: isFocused,
52
+ children: children
53
+ })
43
54
  })
44
55
  })
45
56
  })
@@ -1 +1 @@
1
- {"version":3,"names":["React","useLazyValue","jsx","_jsx","NavigationRouteContext","createContext","undefined","NavigationContext","NavigationRouteNameContext","NamedRouteContextListContext","NavigationProvider","route","navigation","children","NamedRouteContext","parents","use","NamedRouteContextList","useMemo","name","Provider","value"],"sourceRoot":"../../src","sources":["NavigationProvider.tsx"],"mappings":";;AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAG9B,SAASC,YAAY,QAAQ,mBAAgB;;AAE7C;AACA;AACA;AAFA,SAAAC,GAAA,IAAAC,IAAA;AAGA,OAAO,MAAMC,sBAAsB,gBAAGJ,KAAK,CAACK,aAAa,CAEvDC,SAAS,CAAC;;AAEZ;AACA;AACA;AACA,OAAO,MAAMC,iBAAiB,gBAAGP,KAAK,CAACK,aAAa,CAElDC,SAAS,CAAC;AAEZ,OAAO,MAAME,0BAA0B,gBAAGR,KAAK,CAACK,aAAa,CAE3DC,SAAS,CAAC;AAQZ;AACA;AACA;AACA,OAAO,MAAMG,4BAA4B,gBAAGT,KAAK,CAACK,aAAa,CAE7DC,SAAS,CAAC;AAEZ,OAAO,SAASI,kBAAkBA,CAAC;EAAEC,KAAK;EAAEC,UAAU;EAAEC;AAAgB,CAAC,EAAE;EACzE,MAAMC,iBAAiB,GAAGb,YAAY,CAAC,mBAAMD,KAAK,CAACK,aAAa,CAACM,KAAK,CAAC,CAAC;EAExE,MAAMI,OAAO,GAAGf,KAAK,CAACgB,GAAG,CAACP,4BAA4B,CAAC;EAEvD,MAAMQ,qBAAqB,GAAGjB,KAAK,CAACkB,OAAO,CACzC,OAAO;IACL,GAAGH,OAAO;IACV,CAACJ,KAAK,CAACQ,IAAI,GAAGL;EAChB,CAAC,CAAC,EACF,CAACA,iBAAiB,EAAEC,OAAO,EAAEJ,KAAK,CAACQ,IAAI,CACzC,CAAC;EAED,oBACEhB,IAAA,CAACM,4BAA4B,CAACW,QAAQ;IAACC,KAAK,EAAEJ,qBAAsB;IAAAJ,QAAA,eAClEV,IAAA,CAACW,iBAAiB,CAACM,QAAQ;MAACC,KAAK,EAAEV,KAAM;MAAAE,QAAA,eACvCV,IAAA,CAACC,sBAAsB,CAACgB,QAAQ;QAACC,KAAK,EAAEV,KAAM;QAAAE,QAAA,eAC5CV,IAAA,CAACI,iBAAiB,CAACa,QAAQ;UAACC,KAAK,EAAET,UAAW;UAAAC,QAAA,eAC5CV,IAAA,CAACK,0BAA0B,CAACY,QAAQ;YAACC,KAAK,EAAEV,KAAK,CAACQ,IAAK;YAAAN,QAAA,EACpDA;UAAQ,CAC0B;QAAC,CACZ;MAAC,CACE;IAAC,CACR;EAAC,CACQ,CAAC;AAE5C","ignoreList":[]}
1
+ {"version":3,"names":["React","FocusedRouteKeyContext","IsFocusedContext","useLazyValue","NamedNavigationStateListenerProvider","jsx","_jsx","NavigationRouteContext","createContext","undefined","NavigationContext","NamedRouteContextListContext","NavigationProvider","route","navigation","children","NamedRouteContext","parents","use","NamedRouteContextList","useMemo","name","parentIsFocused","focusedRouteKey","isFocused","key","Provider","value"],"sourceRoot":"../../src","sources":["NavigationProvider.tsx"],"mappings":";;AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAG9B,SAASC,sBAAsB,EAAEC,gBAAgB,QAAQ,mBAAgB;AACzE,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,oCAAoC,QAAQ,yBAAsB;;AAE3E;AACA;AACA;AAFA,SAAAC,GAAA,IAAAC,IAAA;AAGA,OAAO,MAAMC,sBAAsB,gBAAGP,KAAK,CAACQ,aAAa,CAEvDC,SAAS,CAAC;;AAEZ;AACA;AACA;AACA,OAAO,MAAMC,iBAAiB,gBAAGV,KAAK,CAACQ,aAAa,CAElDC,SAAS,CAAC;AAQZ;AACA;AACA;AACA,OAAO,MAAME,4BAA4B,gBAAGX,KAAK,CAACQ,aAAa,CAE7DC,SAAS,CAAC;AAEZ,OAAO,SAASG,kBAAkBA,CAAC;EAAEC,KAAK;EAAEC,UAAU;EAAEC;AAAgB,CAAC,EAAE;EACzE,MAAMC,iBAAiB,GAAGb,YAAY,CAAC,mBAAMH,KAAK,CAACQ,aAAa,CAACK,KAAK,CAAC,CAAC;EAExE,MAAMI,OAAO,GAAGjB,KAAK,CAACkB,GAAG,CAACP,4BAA4B,CAAC;EAEvD,MAAMQ,qBAAqB,GAAGnB,KAAK,CAACoB,OAAO,CACzC,OAAO;IACL,GAAGH,OAAO;IACV,CAACJ,KAAK,CAACQ,IAAI,GAAGL;EAChB,CAAC,CAAC,EACF,CAACA,iBAAiB,EAAEC,OAAO,EAAEJ,KAAK,CAACQ,IAAI,CACzC,CAAC;EAED,MAAMC,eAAe,GAAGtB,KAAK,CAACkB,GAAG,CAAChB,gBAAgB,CAAC;EACnD,MAAMqB,eAAe,GAAGvB,KAAK,CAACkB,GAAG,CAACjB,sBAAsB,CAAC;;EAEzD;EACA;EACA;EACA,MAAMuB,SAAS,GACbF,eAAe,IAAI,IAAI,IAAIA,eAAe,GACtCC,eAAe,KAAKV,KAAK,CAACY,GAAG,GAC7B,KAAK;EAEX,oBACEnB,IAAA,CAACF,oCAAoC;IAACiB,IAAI,EAAER,KAAK,CAACQ,IAAK;IAAAN,QAAA,eACrDT,IAAA,CAACK,4BAA4B,CAACe,QAAQ;MAACC,KAAK,EAAER,qBAAsB;MAAAJ,QAAA,eAClET,IAAA,CAACU,iBAAiB,CAACU,QAAQ;QAACC,KAAK,EAAEd,KAAM;QAAAE,QAAA,eACvCT,IAAA,CAACC,sBAAsB,CAACmB,QAAQ;UAACC,KAAK,EAAEd,KAAM;UAAAE,QAAA,eAC5CT,IAAA,CAACI,iBAAiB,CAACgB,QAAQ;YAACC,KAAK,EAAEb,UAAW;YAAAC,QAAA,eAC5CT,IAAA,CAACJ,gBAAgB,CAACwB,QAAQ;cAACC,KAAK,EAAEH,SAAU;cAAAT,QAAA,EACzCA;YAAQ,CACgB;UAAC,CACF;QAAC,CACE;MAAC,CACR;IAAC,CACQ;EAAC,CACJ,CAAC;AAE3C","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["React","MISSING_CONTEXT_ERROR","NavigationStateContext","createContext","isDefault","getKey","Error","setKey","getState","setState","getIsInitial"],"sourceRoot":"../../src","sources":["NavigationStateContext.tsx"],"mappings":";;AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,MAAMC,qBAAqB,GACzB,wKAAwK;AAE1K,OAAO,MAAMC,sBAAsB,gBAAGF,KAAK,CAACG,aAAa,CActD;EACDC,SAAS,EAAE,IAAI;EAEf,IAAIC,MAAMA,CAAA,EAAQ;IAChB,MAAM,IAAIC,KAAK,CAACL,qBAAqB,CAAC;EACxC,CAAC;EACD,IAAIM,MAAMA,CAAA,EAAQ;IAChB,MAAM,IAAID,KAAK,CAACL,qBAAqB,CAAC;EACxC,CAAC;EACD,IAAIO,QAAQA,CAAA,EAAQ;IAClB,MAAM,IAAIF,KAAK,CAACL,qBAAqB,CAAC;EACxC,CAAC;EACD,IAAIQ,QAAQA,CAAA,EAAQ;IAClB,MAAM,IAAIH,KAAK,CAACL,qBAAqB,CAAC;EACxC,CAAC;EACD,IAAIS,YAAYA,CAAA,EAAQ;IACtB,MAAM,IAAIJ,KAAK,CAACL,qBAAqB,CAAC;EACxC;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","MISSING_CONTEXT_ERROR","NavigationStateContext","createContext","isDefault","getKey","Error","setKey","getState","setState","getIsInitial"],"sourceRoot":"../../src","sources":["NavigationStateContext.tsx"],"mappings":";;AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,MAAMC,qBAAqB,GACzB,wKAAwK;AAE1K,OAAO,MAAMC,sBAAsB,gBAAGF,KAAK,CAACG,aAAa,CAatD;EACDC,SAAS,EAAE,IAAI;EAEf,IAAIC,MAAMA,CAAA,EAAQ;IAChB,MAAM,IAAIC,KAAK,CAACL,qBAAqB,CAAC;EACxC,CAAC;EACD,IAAIM,MAAMA,CAAA,EAAQ;IAChB,MAAM,IAAID,KAAK,CAACL,qBAAqB,CAAC;EACxC,CAAC;EACD,IAAIO,QAAQA,CAAA,EAAQ;IAClB,MAAM,IAAIF,KAAK,CAACL,qBAAqB,CAAC;EACxC,CAAC;EACD,IAAIQ,QAAQA,CAAA,EAAQ;IAClB,MAAM,IAAIH,KAAK,CAACL,qBAAqB,CAAC;EACxC,CAAC;EACD,IAAIS,YAAYA,CAAA,EAAQ;IACtB,MAAM,IAAIJ,KAAK,CAACL,qBAAqB,CAAC;EACxC;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["React","PreventRemoveContext","createContext","undefined"],"sourceRoot":"../../src","sources":["PreventRemoveContext.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;;AAE9B;AACA;AACA;AACA;;AAGA,OAAO,MAAMC,oBAAoB,gBAAGD,KAAK,CAACE,aAAa,CAUrDC,SAAS,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","PreventRemoveContext","createContext","undefined"],"sourceRoot":"../../src","sources":["PreventRemoveContext.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;;AAE9B;AACA;AACA;AACA;;AAGA,OAAO,MAAMC,oBAAoB,gBAAGD,KAAK,CAACE,aAAa,CAWrDC,SAAS,CAAC","ignoreList":[]}
@@ -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