@react-navigation/core 6.0.2

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 (327) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +38 -0
  3. package/lib/commonjs/BaseNavigationContainer.js +393 -0
  4. package/lib/commonjs/BaseNavigationContainer.js.map +1 -0
  5. package/lib/commonjs/CurrentRenderContext.js +21 -0
  6. package/lib/commonjs/CurrentRenderContext.js.map +1 -0
  7. package/lib/commonjs/EnsureSingleNavigator.js +53 -0
  8. package/lib/commonjs/EnsureSingleNavigator.js.map +1 -0
  9. package/lib/commonjs/Group.js +15 -0
  10. package/lib/commonjs/Group.js.map +1 -0
  11. package/lib/commonjs/NavigationBuilderContext.js +23 -0
  12. package/lib/commonjs/NavigationBuilderContext.js.map +1 -0
  13. package/lib/commonjs/NavigationContainerRefContext.js +20 -0
  14. package/lib/commonjs/NavigationContainerRefContext.js.map +1 -0
  15. package/lib/commonjs/NavigationContext.js +20 -0
  16. package/lib/commonjs/NavigationContext.js.map +1 -0
  17. package/lib/commonjs/NavigationHelpersContext.js +21 -0
  18. package/lib/commonjs/NavigationHelpersContext.js.map +1 -0
  19. package/lib/commonjs/NavigationRouteContext.js +20 -0
  20. package/lib/commonjs/NavigationRouteContext.js.map +1 -0
  21. package/lib/commonjs/NavigationStateContext.js +42 -0
  22. package/lib/commonjs/NavigationStateContext.js.map +1 -0
  23. package/lib/commonjs/SceneView.js +97 -0
  24. package/lib/commonjs/SceneView.js.map +1 -0
  25. package/lib/commonjs/Screen.js +15 -0
  26. package/lib/commonjs/Screen.js.map +1 -0
  27. package/lib/commonjs/StaticContainer.js +43 -0
  28. package/lib/commonjs/StaticContainer.js.map +1 -0
  29. package/lib/commonjs/UnhandledActionContext.js +17 -0
  30. package/lib/commonjs/UnhandledActionContext.js.map +1 -0
  31. package/lib/commonjs/checkDuplicateRouteNames.js +31 -0
  32. package/lib/commonjs/checkDuplicateRouteNames.js.map +1 -0
  33. package/lib/commonjs/checkSerializable.js +59 -0
  34. package/lib/commonjs/checkSerializable.js.map +1 -0
  35. package/lib/commonjs/createNavigationContainerRef.js +82 -0
  36. package/lib/commonjs/createNavigationContainerRef.js.map +1 -0
  37. package/lib/commonjs/createNavigatorFactory.js +34 -0
  38. package/lib/commonjs/createNavigatorFactory.js.map +1 -0
  39. package/lib/commonjs/findFocusedRoute.js +22 -0
  40. package/lib/commonjs/findFocusedRoute.js.map +1 -0
  41. package/lib/commonjs/fromEntries.js +19 -0
  42. package/lib/commonjs/fromEntries.js.map +1 -0
  43. package/lib/commonjs/getActionFromState.js +99 -0
  44. package/lib/commonjs/getActionFromState.js.map +1 -0
  45. package/lib/commonjs/getFocusedRouteNameFromRoute.js +23 -0
  46. package/lib/commonjs/getFocusedRouteNameFromRoute.js.map +1 -0
  47. package/lib/commonjs/getPathFromState.js +238 -0
  48. package/lib/commonjs/getPathFromState.js.map +1 -0
  49. package/lib/commonjs/getStateFromPath.js +450 -0
  50. package/lib/commonjs/getStateFromPath.js.map +1 -0
  51. package/lib/commonjs/index.js +227 -0
  52. package/lib/commonjs/index.js.map +1 -0
  53. package/lib/commonjs/isArrayEqual.js +15 -0
  54. package/lib/commonjs/isArrayEqual.js.map +1 -0
  55. package/lib/commonjs/types.js +18 -0
  56. package/lib/commonjs/types.js.map +1 -0
  57. package/lib/commonjs/useChildListeners.js +38 -0
  58. package/lib/commonjs/useChildListeners.js.map +1 -0
  59. package/lib/commonjs/useComponent.js +36 -0
  60. package/lib/commonjs/useComponent.js.map +1 -0
  61. package/lib/commonjs/useCurrentRender.js +33 -0
  62. package/lib/commonjs/useCurrentRender.js.map +1 -0
  63. package/lib/commonjs/useDescriptors.js +141 -0
  64. package/lib/commonjs/useDescriptors.js.map +1 -0
  65. package/lib/commonjs/useEventEmitter.js +118 -0
  66. package/lib/commonjs/useEventEmitter.js.map +1 -0
  67. package/lib/commonjs/useFocusEffect.js +97 -0
  68. package/lib/commonjs/useFocusEffect.js.map +1 -0
  69. package/lib/commonjs/useFocusEvents.js +77 -0
  70. package/lib/commonjs/useFocusEvents.js.map +1 -0
  71. package/lib/commonjs/useFocusedListenersChildrenAdapter.js +57 -0
  72. package/lib/commonjs/useFocusedListenersChildrenAdapter.js.map +1 -0
  73. package/lib/commonjs/useIsFocused.js +47 -0
  74. package/lib/commonjs/useIsFocused.js.map +1 -0
  75. package/lib/commonjs/useKeyedChildListeners.js +35 -0
  76. package/lib/commonjs/useKeyedChildListeners.js.map +1 -0
  77. package/lib/commonjs/useNavigation.js +36 -0
  78. package/lib/commonjs/useNavigation.js.map +1 -0
  79. package/lib/commonjs/useNavigationBuilder.js +480 -0
  80. package/lib/commonjs/useNavigationBuilder.js.map +1 -0
  81. package/lib/commonjs/useNavigationCache.js +122 -0
  82. package/lib/commonjs/useNavigationCache.js.map +1 -0
  83. package/lib/commonjs/useNavigationContainerRef.js +27 -0
  84. package/lib/commonjs/useNavigationContainerRef.js.map +1 -0
  85. package/lib/commonjs/useNavigationHelpers.js +77 -0
  86. package/lib/commonjs/useNavigationHelpers.js.map +1 -0
  87. package/lib/commonjs/useNavigationState.js +41 -0
  88. package/lib/commonjs/useNavigationState.js.map +1 -0
  89. package/lib/commonjs/useOnAction.js +118 -0
  90. package/lib/commonjs/useOnAction.js.map +1 -0
  91. package/lib/commonjs/useOnGetState.js +60 -0
  92. package/lib/commonjs/useOnGetState.js.map +1 -0
  93. package/lib/commonjs/useOnPreventRemove.js +89 -0
  94. package/lib/commonjs/useOnPreventRemove.js.map +1 -0
  95. package/lib/commonjs/useOnRouteFocus.js +45 -0
  96. package/lib/commonjs/useOnRouteFocus.js.map +1 -0
  97. package/lib/commonjs/useOptionsGetters.js +99 -0
  98. package/lib/commonjs/useOptionsGetters.js.map +1 -0
  99. package/lib/commonjs/useRegisterNavigator.js +40 -0
  100. package/lib/commonjs/useRegisterNavigator.js.map +1 -0
  101. package/lib/commonjs/useRoute.js +32 -0
  102. package/lib/commonjs/useRoute.js.map +1 -0
  103. package/lib/commonjs/useRouteCache.js +61 -0
  104. package/lib/commonjs/useRouteCache.js.map +1 -0
  105. package/lib/commonjs/useScheduleUpdate.js +44 -0
  106. package/lib/commonjs/useScheduleUpdate.js.map +1 -0
  107. package/lib/commonjs/useSyncState.js +76 -0
  108. package/lib/commonjs/useSyncState.js.map +1 -0
  109. package/lib/commonjs/validatePathConfig.js +31 -0
  110. package/lib/commonjs/validatePathConfig.js.map +1 -0
  111. package/lib/module/BaseNavigationContainer.js +360 -0
  112. package/lib/module/BaseNavigationContainer.js.map +1 -0
  113. package/lib/module/CurrentRenderContext.js +9 -0
  114. package/lib/module/CurrentRenderContext.js.map +1 -0
  115. package/lib/module/EnsureSingleNavigator.js +38 -0
  116. package/lib/module/EnsureSingleNavigator.js.map +1 -0
  117. package/lib/module/Group.js +8 -0
  118. package/lib/module/Group.js.map +1 -0
  119. package/lib/module/NavigationBuilderContext.js +11 -0
  120. package/lib/module/NavigationBuilderContext.js.map +1 -0
  121. package/lib/module/NavigationContainerRefContext.js +8 -0
  122. package/lib/module/NavigationContainerRefContext.js.map +1 -0
  123. package/lib/module/NavigationContext.js +8 -0
  124. package/lib/module/NavigationContext.js.map +1 -0
  125. package/lib/module/NavigationHelpersContext.js +9 -0
  126. package/lib/module/NavigationHelpersContext.js.map +1 -0
  127. package/lib/module/NavigationRouteContext.js +8 -0
  128. package/lib/module/NavigationRouteContext.js.map +1 -0
  129. package/lib/module/NavigationStateContext.js +27 -0
  130. package/lib/module/NavigationStateContext.js.map +1 -0
  131. package/lib/module/SceneView.js +80 -0
  132. package/lib/module/SceneView.js.map +1 -0
  133. package/lib/module/Screen.js +8 -0
  134. package/lib/module/Screen.js.map +1 -0
  135. package/lib/module/StaticContainer.js +30 -0
  136. package/lib/module/StaticContainer.js.map +1 -0
  137. package/lib/module/UnhandledActionContext.js +4 -0
  138. package/lib/module/UnhandledActionContext.js.map +1 -0
  139. package/lib/module/checkDuplicateRouteNames.js +24 -0
  140. package/lib/module/checkDuplicateRouteNames.js.map +1 -0
  141. package/lib/module/checkSerializable.js +52 -0
  142. package/lib/module/checkSerializable.js.map +1 -0
  143. package/lib/module/createNavigationContainerRef.js +71 -0
  144. package/lib/module/createNavigationContainerRef.js.map +1 -0
  145. package/lib/module/createNavigatorFactory.js +24 -0
  146. package/lib/module/createNavigatorFactory.js.map +1 -0
  147. package/lib/module/findFocusedRoute.js +15 -0
  148. package/lib/module/findFocusedRoute.js.map +1 -0
  149. package/lib/module/fromEntries.js +12 -0
  150. package/lib/module/fromEntries.js.map +1 -0
  151. package/lib/module/getActionFromState.js +92 -0
  152. package/lib/module/getActionFromState.js.map +1 -0
  153. package/lib/module/getFocusedRouteNameFromRoute.js +15 -0
  154. package/lib/module/getFocusedRouteNameFromRoute.js.map +1 -0
  155. package/lib/module/getPathFromState.js +223 -0
  156. package/lib/module/getPathFromState.js.map +1 -0
  157. package/lib/module/getStateFromPath.js +434 -0
  158. package/lib/module/getStateFromPath.js.map +1 -0
  159. package/lib/module/index.js +24 -0
  160. package/lib/module/index.js.map +1 -0
  161. package/lib/module/isArrayEqual.js +8 -0
  162. package/lib/module/isArrayEqual.js.map +1 -0
  163. package/lib/module/types.js +9 -0
  164. package/lib/module/types.js.map +1 -0
  165. package/lib/module/useChildListeners.js +27 -0
  166. package/lib/module/useChildListeners.js.map +1 -0
  167. package/lib/module/useComponent.js +24 -0
  168. package/lib/module/useComponent.js.map +1 -0
  169. package/lib/module/useCurrentRender.js +19 -0
  170. package/lib/module/useCurrentRender.js.map +1 -0
  171. package/lib/module/useDescriptors.js +122 -0
  172. package/lib/module/useDescriptors.js.map +1 -0
  173. package/lib/module/useEventEmitter.js +107 -0
  174. package/lib/module/useEventEmitter.js.map +1 -0
  175. package/lib/module/useFocusEffect.js +83 -0
  176. package/lib/module/useFocusEffect.js.map +1 -0
  177. package/lib/module/useFocusEvents.js +63 -0
  178. package/lib/module/useFocusEvents.js.map +1 -0
  179. package/lib/module/useFocusedListenersChildrenAdapter.js +43 -0
  180. package/lib/module/useFocusedListenersChildrenAdapter.js.map +1 -0
  181. package/lib/module/useIsFocused.js +34 -0
  182. package/lib/module/useIsFocused.js.map +1 -0
  183. package/lib/module/useKeyedChildListeners.js +24 -0
  184. package/lib/module/useKeyedChildListeners.js.map +1 -0
  185. package/lib/module/useNavigation.js +21 -0
  186. package/lib/module/useNavigation.js.map +1 -0
  187. package/lib/module/useNavigationBuilder.js +443 -0
  188. package/lib/module/useNavigationBuilder.js.map +1 -0
  189. package/lib/module/useNavigationCache.js +107 -0
  190. package/lib/module/useNavigationCache.js.map +1 -0
  191. package/lib/module/useNavigationContainerRef.js +12 -0
  192. package/lib/module/useNavigationContainerRef.js.map +1 -0
  193. package/lib/module/useNavigationHelpers.js +59 -0
  194. package/lib/module/useNavigationHelpers.js.map +1 -0
  195. package/lib/module/useNavigationState.js +27 -0
  196. package/lib/module/useNavigationState.js.map +1 -0
  197. package/lib/module/useOnAction.js +103 -0
  198. package/lib/module/useOnAction.js.map +1 -0
  199. package/lib/module/useOnGetState.js +43 -0
  200. package/lib/module/useOnGetState.js.map +1 -0
  201. package/lib/module/useOnPreventRemove.js +68 -0
  202. package/lib/module/useOnPreventRemove.js.map +1 -0
  203. package/lib/module/useOnRouteFocus.js +31 -0
  204. package/lib/module/useOnRouteFocus.js.map +1 -0
  205. package/lib/module/useOptionsGetters.js +83 -0
  206. package/lib/module/useOptionsGetters.js.map +1 -0
  207. package/lib/module/useRegisterNavigator.js +27 -0
  208. package/lib/module/useRegisterNavigator.js.map +1 -0
  209. package/lib/module/useRoute.js +18 -0
  210. package/lib/module/useRoute.js.map +1 -0
  211. package/lib/module/useRouteCache.js +47 -0
  212. package/lib/module/useRouteCache.js.map +1 -0
  213. package/lib/module/useScheduleUpdate.js +29 -0
  214. package/lib/module/useScheduleUpdate.js.map +1 -0
  215. package/lib/module/useSyncState.js +64 -0
  216. package/lib/module/useSyncState.js.map +1 -0
  217. package/lib/module/validatePathConfig.js +24 -0
  218. package/lib/module/validatePathConfig.js.map +1 -0
  219. package/lib/typescript/src/BaseNavigationContainer.d.ts +14 -0
  220. package/lib/typescript/src/CurrentRenderContext.d.ts +9 -0
  221. package/lib/typescript/src/EnsureSingleNavigator.d.ts +13 -0
  222. package/lib/typescript/src/Group.d.ts +6 -0
  223. package/lib/typescript/src/NavigationBuilderContext.d.ts +34 -0
  224. package/lib/typescript/src/NavigationContainerRefContext.d.ts +8 -0
  225. package/lib/typescript/src/NavigationContext.d.ts +24 -0
  226. package/lib/typescript/src/NavigationHelpersContext.d.ts +9 -0
  227. package/lib/typescript/src/NavigationRouteContext.d.ts +7 -0
  228. package/lib/typescript/src/NavigationStateContext.d.ts +45 -0
  229. package/lib/typescript/src/SceneView.d.ts +21 -0
  230. package/lib/typescript/src/Screen.d.ts +6 -0
  231. package/lib/typescript/src/StaticContainer.d.ts +7 -0
  232. package/lib/typescript/src/UnhandledActionContext.d.ts +4 -0
  233. package/lib/typescript/src/checkDuplicateRouteNames.d.ts +2 -0
  234. package/lib/typescript/src/checkSerializable.d.ts +9 -0
  235. package/lib/typescript/src/createNavigationContainerRef.d.ts +3 -0
  236. package/lib/typescript/src/createNavigatorFactory.d.ts +11 -0
  237. package/lib/typescript/src/findFocusedRoute.d.ts +22 -0
  238. package/lib/typescript/src/fromEntries.d.ts +1 -0
  239. package/lib/typescript/src/getActionFromState.d.ts +16 -0
  240. package/lib/typescript/src/getFocusedRouteNameFromRoute.d.ts +2 -0
  241. package/lib/typescript/src/getPathFromState.d.ts +38 -0
  242. package/lib/typescript/src/getStateFromPath.d.ts +32 -0
  243. package/lib/typescript/src/index.d.ts +23 -0
  244. package/lib/typescript/src/isArrayEqual.d.ts +5 -0
  245. package/lib/typescript/src/types.d.ts +485 -0
  246. package/lib/typescript/src/useChildListeners.d.ts +11 -0
  247. package/lib/typescript/src/useComponent.d.ts +2 -0
  248. package/lib/typescript/src/useCurrentRender.d.ts +13 -0
  249. package/lib/typescript/src/useDescriptors.d.ts +89 -0
  250. package/lib/typescript/src/useEventEmitter.d.ts +8 -0
  251. package/lib/typescript/src/useFocusEffect.d.ts +10 -0
  252. package/lib/typescript/src/useFocusEvents.d.ts +12 -0
  253. package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts +12 -0
  254. package/lib/typescript/src/useIsFocused.d.ts +5 -0
  255. package/lib/typescript/src/useKeyedChildListeners.d.ts +11 -0
  256. package/lib/typescript/src/useNavigation.d.ts +7 -0
  257. package/lib/typescript/src/useNavigationBuilder.d.ts +223 -0
  258. package/lib/typescript/src/useNavigationCache.d.ts +19 -0
  259. package/lib/typescript/src/useNavigationContainerRef.d.ts +2 -0
  260. package/lib/typescript/src/useNavigationHelpers.d.ts +174 -0
  261. package/lib/typescript/src/useNavigationState.d.ts +9 -0
  262. package/lib/typescript/src/useOnAction.d.ts +25 -0
  263. package/lib/typescript/src/useOnGetState.d.ts +8 -0
  264. package/lib/typescript/src/useOnPreventRemove.d.ts +16 -0
  265. package/lib/typescript/src/useOnRouteFocus.d.ts +14 -0
  266. package/lib/typescript/src/useOptionsGetters.d.ts +12 -0
  267. package/lib/typescript/src/useRegisterNavigator.d.ts +5 -0
  268. package/lib/typescript/src/useRoute.d.ts +8 -0
  269. package/lib/typescript/src/useRouteCache.d.ts +13 -0
  270. package/lib/typescript/src/useScheduleUpdate.d.ts +13 -0
  271. package/lib/typescript/src/useSyncState.d.ts +4 -0
  272. package/lib/typescript/src/validatePathConfig.d.ts +1 -0
  273. package/package.json +73 -0
  274. package/src/BaseNavigationContainer.tsx +453 -0
  275. package/src/CurrentRenderContext.tsx +10 -0
  276. package/src/EnsureSingleNavigator.tsx +53 -0
  277. package/src/Group.tsx +14 -0
  278. package/src/NavigationBuilderContext.tsx +70 -0
  279. package/src/NavigationContainerRefContext.tsx +14 -0
  280. package/src/NavigationContext.tsx +12 -0
  281. package/src/NavigationHelpersContext.tsx +13 -0
  282. package/src/NavigationRouteContext.tsx +10 -0
  283. package/src/NavigationStateContext.tsx +39 -0
  284. package/src/SceneView.tsx +134 -0
  285. package/src/Screen.tsx +17 -0
  286. package/src/StaticContainer.tsx +29 -0
  287. package/src/UnhandledActionContext.tsx +9 -0
  288. package/src/checkDuplicateRouteNames.tsx +33 -0
  289. package/src/checkSerializable.tsx +74 -0
  290. package/src/createNavigationContainerRef.tsx +97 -0
  291. package/src/createNavigatorFactory.tsx +40 -0
  292. package/src/findFocusedRoute.tsx +13 -0
  293. package/src/fromEntries.tsx +13 -0
  294. package/src/getActionFromState.tsx +154 -0
  295. package/src/getFocusedRouteNameFromRoute.tsx +28 -0
  296. package/src/getPathFromState.tsx +297 -0
  297. package/src/getStateFromPath.tsx +575 -0
  298. package/src/index.tsx +23 -0
  299. package/src/isArrayEqual.tsx +7 -0
  300. package/src/types.tsx +645 -0
  301. package/src/useChildListeners.tsx +37 -0
  302. package/src/useComponent.tsx +30 -0
  303. package/src/useCurrentRender.tsx +35 -0
  304. package/src/useDescriptors.tsx +229 -0
  305. package/src/useEventEmitter.tsx +130 -0
  306. package/src/useFocusEffect.tsx +112 -0
  307. package/src/useFocusEvents.tsx +73 -0
  308. package/src/useFocusedListenersChildrenAdapter.tsx +47 -0
  309. package/src/useIsFocused.tsx +43 -0
  310. package/src/useKeyedChildListeners.tsx +40 -0
  311. package/src/useNavigation.tsx +26 -0
  312. package/src/useNavigationBuilder.tsx +640 -0
  313. package/src/useNavigationCache.tsx +159 -0
  314. package/src/useNavigationContainerRef.tsx +17 -0
  315. package/src/useNavigationHelpers.tsx +98 -0
  316. package/src/useNavigationState.tsx +41 -0
  317. package/src/useOnAction.tsx +166 -0
  318. package/src/useOnGetState.tsx +47 -0
  319. package/src/useOnPreventRemove.tsx +99 -0
  320. package/src/useOnRouteFocus.tsx +47 -0
  321. package/src/useOptionsGetters.tsx +98 -0
  322. package/src/useRegisterNavigator.tsx +29 -0
  323. package/src/useRoute.tsx +22 -0
  324. package/src/useRouteCache.tsx +55 -0
  325. package/src/useScheduleUpdate.tsx +32 -0
  326. package/src/useSyncState.tsx +74 -0
  327. package/src/validatePathConfig.tsx +32 -0
@@ -0,0 +1,80 @@
1
+ import * as React from 'react';
2
+ import EnsureSingleNavigator from './EnsureSingleNavigator';
3
+ import NavigationStateContext from './NavigationStateContext';
4
+ import StaticContainer from './StaticContainer';
5
+ import useOptionsGetters from './useOptionsGetters';
6
+
7
+ /**
8
+ * Component which takes care of rendering the screen for a route.
9
+ * It provides all required contexts and applies optimizations when applicable.
10
+ */
11
+ export default function SceneView({
12
+ screen,
13
+ route,
14
+ navigation,
15
+ routeState,
16
+ getState,
17
+ setState,
18
+ options,
19
+ clearOptions
20
+ }) {
21
+ const navigatorKeyRef = React.useRef();
22
+ const getKey = React.useCallback(() => navigatorKeyRef.current, []);
23
+ const {
24
+ addOptionsGetter
25
+ } = useOptionsGetters({
26
+ key: route.key,
27
+ options,
28
+ navigation
29
+ });
30
+ const setKey = React.useCallback(key => {
31
+ navigatorKeyRef.current = key;
32
+ }, []);
33
+ const getCurrentState = React.useCallback(() => {
34
+ const state = getState();
35
+ const currentRoute = state.routes.find(r => r.key === route.key);
36
+ return currentRoute ? currentRoute.state : undefined;
37
+ }, [getState, route.key]);
38
+ const setCurrentState = React.useCallback(child => {
39
+ const state = getState();
40
+ setState({ ...state,
41
+ routes: state.routes.map(r => r.key === route.key ? { ...r,
42
+ state: child
43
+ } : r)
44
+ });
45
+ }, [getState, route.key, setState]);
46
+ const isInitialRef = React.useRef(true);
47
+ React.useEffect(() => {
48
+ isInitialRef.current = false;
49
+ }); // Clear options set by this screen when it is unmounted
50
+
51
+ React.useEffect(() => {
52
+ return clearOptions; // eslint-disable-next-line react-hooks/exhaustive-deps
53
+ }, []);
54
+ const getIsInitial = React.useCallback(() => isInitialRef.current, []);
55
+ const context = React.useMemo(() => ({
56
+ state: routeState,
57
+ getState: getCurrentState,
58
+ setState: setCurrentState,
59
+ getKey,
60
+ setKey,
61
+ getIsInitial,
62
+ addOptionsGetter
63
+ }), [routeState, getCurrentState, setCurrentState, getKey, setKey, getIsInitial, addOptionsGetter]);
64
+ const ScreenComponent = screen.getComponent ? screen.getComponent() : screen.component;
65
+ return /*#__PURE__*/React.createElement(NavigationStateContext.Provider, {
66
+ value: context
67
+ }, /*#__PURE__*/React.createElement(EnsureSingleNavigator, null, /*#__PURE__*/React.createElement(StaticContainer, {
68
+ name: screen.name,
69
+ render: ScreenComponent || screen.children,
70
+ navigation: navigation,
71
+ route: route
72
+ }, ScreenComponent !== undefined ? /*#__PURE__*/React.createElement(ScreenComponent, {
73
+ navigation: navigation,
74
+ route: route
75
+ }) : screen.children !== undefined ? screen.children({
76
+ navigation,
77
+ route
78
+ }) : null)));
79
+ }
80
+ //# sourceMappingURL=SceneView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["SceneView.tsx"],"names":["React","EnsureSingleNavigator","NavigationStateContext","StaticContainer","useOptionsGetters","SceneView","screen","route","navigation","routeState","getState","setState","options","clearOptions","navigatorKeyRef","useRef","getKey","useCallback","current","addOptionsGetter","key","setKey","getCurrentState","state","currentRoute","routes","find","r","undefined","setCurrentState","child","map","isInitialRef","useEffect","getIsInitial","context","useMemo","ScreenComponent","getComponent","component","name","children"],"mappings":"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","sourcesContent":["import type {\n NavigationState,\n ParamListBase,\n PartialState,\n Route,\n} from '@react-navigation/routers';\nimport * as React from 'react';\n\nimport EnsureSingleNavigator from './EnsureSingleNavigator';\nimport NavigationStateContext from './NavigationStateContext';\nimport StaticContainer from './StaticContainer';\nimport type { NavigationProp, RouteConfigComponent } from './types';\nimport useOptionsGetters from './useOptionsGetters';\n\ntype Props<State extends NavigationState, ScreenOptions extends {}> = {\n screen: RouteConfigComponent<ParamListBase, string> & { name: string };\n navigation: NavigationProp<ParamListBase, string, State, ScreenOptions>;\n route: Route<string>;\n routeState: NavigationState | PartialState<NavigationState> | undefined;\n getState: () => State;\n setState: (state: State) => void;\n options: object;\n clearOptions: () => void;\n};\n\n/**\n * Component which takes care of rendering the screen for a route.\n * It provides all required contexts and applies optimizations when applicable.\n */\nexport default function SceneView<\n State extends NavigationState,\n ScreenOptions extends {}\n>({\n screen,\n route,\n navigation,\n routeState,\n getState,\n setState,\n options,\n clearOptions,\n}: Props<State, ScreenOptions>) {\n const navigatorKeyRef = React.useRef<string | undefined>();\n const getKey = React.useCallback(() => navigatorKeyRef.current, []);\n\n const { addOptionsGetter } = useOptionsGetters({\n key: route.key,\n options,\n navigation,\n });\n\n const setKey = React.useCallback((key: string) => {\n navigatorKeyRef.current = key;\n }, []);\n\n const getCurrentState = React.useCallback(() => {\n const state = getState();\n const currentRoute = state.routes.find((r) => r.key === route.key);\n\n return currentRoute ? currentRoute.state : undefined;\n }, [getState, route.key]);\n\n const setCurrentState = React.useCallback(\n (child: NavigationState | PartialState<NavigationState> | undefined) => {\n const state = getState();\n\n setState({\n ...state,\n routes: state.routes.map((r) =>\n r.key === route.key ? { ...r, state: child } : r\n ),\n });\n },\n [getState, route.key, setState]\n );\n\n const isInitialRef = React.useRef(true);\n\n React.useEffect(() => {\n isInitialRef.current = false;\n });\n\n // Clear options set by this screen when it is unmounted\n React.useEffect(() => {\n return clearOptions;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const getIsInitial = React.useCallback(() => isInitialRef.current, []);\n\n const context = React.useMemo(\n () => ({\n state: routeState,\n getState: getCurrentState,\n setState: setCurrentState,\n getKey,\n setKey,\n getIsInitial,\n addOptionsGetter,\n }),\n [\n routeState,\n getCurrentState,\n setCurrentState,\n getKey,\n setKey,\n getIsInitial,\n addOptionsGetter,\n ]\n );\n\n const ScreenComponent = screen.getComponent\n ? screen.getComponent()\n : screen.component;\n\n return (\n <NavigationStateContext.Provider value={context}>\n <EnsureSingleNavigator>\n <StaticContainer\n name={screen.name}\n render={ScreenComponent || screen.children}\n navigation={navigation}\n route={route}\n >\n {ScreenComponent !== undefined ? (\n <ScreenComponent navigation={navigation} route={route} />\n ) : screen.children !== undefined ? (\n screen.children({ navigation, route })\n ) : null}\n </StaticContainer>\n </EnsureSingleNavigator>\n </NavigationStateContext.Provider>\n );\n}\n"]}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Empty component used for specifying route configuration.
3
+ */
4
+ export default function Screen(_) {
5
+ /* istanbul ignore next */
6
+ return null;
7
+ }
8
+ //# sourceMappingURL=Screen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["Screen.tsx"],"names":["Screen","_"],"mappings":"AAIA;AACA;AACA;AACA,eAAe,SAASA,MAAT,CAMbC,CANa,EAMyD;AACtE;AACA,SAAO,IAAP;AACD","sourcesContent":["import type { NavigationState, ParamListBase } from '@react-navigation/routers';\n\nimport type { EventMapBase, RouteConfig } from './types';\n\n/**\n * Empty component used for specifying route configuration.\n */\nexport default function Screen<\n ParamList extends ParamListBase,\n RouteName extends keyof ParamList,\n State extends NavigationState,\n ScreenOptions extends {},\n EventMap extends EventMapBase\n>(_: RouteConfig<ParamList, RouteName, State, ScreenOptions, EventMap>) {\n /* istanbul ignore next */\n return null;\n}\n"]}
@@ -0,0 +1,30 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * Component which prevents updates for children if no props changed
4
+ */
5
+
6
+ function StaticContainer(props) {
7
+ return props.children;
8
+ }
9
+
10
+ export default /*#__PURE__*/React.memo(StaticContainer, (prevProps, nextProps) => {
11
+ const prevPropKeys = Object.keys(prevProps);
12
+ const nextPropKeys = Object.keys(nextProps);
13
+
14
+ if (prevPropKeys.length !== nextPropKeys.length) {
15
+ return false;
16
+ }
17
+
18
+ for (const key of prevPropKeys) {
19
+ if (key === 'children') {
20
+ continue;
21
+ }
22
+
23
+ if (prevProps[key] !== nextProps[key]) {
24
+ return false;
25
+ }
26
+ }
27
+
28
+ return true;
29
+ });
30
+ //# sourceMappingURL=StaticContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["StaticContainer.tsx"],"names":["React","StaticContainer","props","children","memo","prevProps","nextProps","prevPropKeys","Object","keys","nextPropKeys","length","key"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA;AACA;AACA;;AACA,SAASC,eAAT,CAAyBC,KAAzB,EAAqC;AACnC,SAAOA,KAAK,CAACC,QAAb;AACD;;AAED,4BAAeH,KAAK,CAACI,IAAN,CAAWH,eAAX,EAA4B,CAACI,SAAD,EAAiBC,SAAjB,KAAoC;AAC7E,QAAMC,YAAY,GAAGC,MAAM,CAACC,IAAP,CAAYJ,SAAZ,CAArB;AACA,QAAMK,YAAY,GAAGF,MAAM,CAACC,IAAP,CAAYH,SAAZ,CAArB;;AAEA,MAAIC,YAAY,CAACI,MAAb,KAAwBD,YAAY,CAACC,MAAzC,EAAiD;AAC/C,WAAO,KAAP;AACD;;AAED,OAAK,MAAMC,GAAX,IAAkBL,YAAlB,EAAgC;AAC9B,QAAIK,GAAG,KAAK,UAAZ,EAAwB;AACtB;AACD;;AAED,QAAIP,SAAS,CAACO,GAAD,CAAT,KAAmBN,SAAS,CAACM,GAAD,CAAhC,EAAuC;AACrC,aAAO,KAAP;AACD;AACF;;AAED,SAAO,IAAP;AACD,CAnBc,CAAf","sourcesContent":["import * as React from 'react';\n\n/**\n * Component which prevents updates for children if no props changed\n */\nfunction StaticContainer(props: any) {\n return props.children;\n}\n\nexport default React.memo(StaticContainer, (prevProps: any, nextProps: any) => {\n const prevPropKeys = Object.keys(prevProps);\n const nextPropKeys = Object.keys(nextProps);\n\n if (prevPropKeys.length !== nextPropKeys.length) {\n return false;\n }\n\n for (const key of prevPropKeys) {\n if (key === 'children') {\n continue;\n }\n\n if (prevProps[key] !== nextProps[key]) {\n return false;\n }\n }\n\n return true;\n});\n"]}
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ const UnhandledActionContext = /*#__PURE__*/React.createContext(undefined);
3
+ export default UnhandledActionContext;
4
+ //# sourceMappingURL=UnhandledActionContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["UnhandledActionContext.tsx"],"names":["React","UnhandledActionContext","createContext","undefined"],"mappings":"AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,MAAMC,sBAAsB,gBAC1BD,KAAK,CAACE,aAAN,CACEC,SADF,CADF;AAKA,eAAeF,sBAAf","sourcesContent":["import type { NavigationAction } from '@react-navigation/routers';\nimport * as React from 'react';\n\nconst UnhandledActionContext =\n React.createContext<((action: NavigationAction) => void) | undefined>(\n undefined\n );\n\nexport default UnhandledActionContext;\n"]}
@@ -0,0 +1,24 @@
1
+ export default function checkDuplicateRouteNames(state) {
2
+ const duplicates = [];
3
+
4
+ const getRouteNames = (location, state) => {
5
+ state.routes.forEach(route => {
6
+ var _route$state, _route$state$routeNam;
7
+
8
+ const currentLocation = location ? `${location} > ${route.name}` : route.name;
9
+ (_route$state = route.state) === null || _route$state === void 0 ? void 0 : (_route$state$routeNam = _route$state.routeNames) === null || _route$state$routeNam === void 0 ? void 0 : _route$state$routeNam.forEach(routeName => {
10
+ if (routeName === route.name) {
11
+ duplicates.push([currentLocation, `${currentLocation} > ${route.name}`]);
12
+ }
13
+ });
14
+
15
+ if (route.state) {
16
+ getRouteNames(currentLocation, route.state);
17
+ }
18
+ });
19
+ };
20
+
21
+ getRouteNames('', state);
22
+ return duplicates;
23
+ }
24
+ //# sourceMappingURL=checkDuplicateRouteNames.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["checkDuplicateRouteNames.tsx"],"names":["checkDuplicateRouteNames","state","duplicates","getRouteNames","location","routes","forEach","route","currentLocation","name","routeNames","routeName","push"],"mappings":"AAEA,eAAe,SAASA,wBAAT,CAAkCC,KAAlC,EAA0D;AACvE,QAAMC,UAAsB,GAAG,EAA/B;;AAEA,QAAMC,aAAa,GAAG,CACpBC,QADoB,EAEpBH,KAFoB,KAGjB;AACHA,IAAAA,KAAK,CAACI,MAAN,CAAaC,OAAb,CAAsBC,KAAD,IAAmC;AAAA;;AACtD,YAAMC,eAAe,GAAGJ,QAAQ,GAC3B,GAAEA,QAAS,MAAKG,KAAK,CAACE,IAAK,EADA,GAE5BF,KAAK,CAACE,IAFV;AAIA,sBAAAF,KAAK,CAACN,KAAN,uFAAaS,UAAb,gFAAyBJ,OAAzB,CAAkCK,SAAD,IAAe;AAC9C,YAAIA,SAAS,KAAKJ,KAAK,CAACE,IAAxB,EAA8B;AAC5BP,UAAAA,UAAU,CAACU,IAAX,CAAgB,CACdJ,eADc,EAEb,GAAEA,eAAgB,MAAKD,KAAK,CAACE,IAAK,EAFrB,CAAhB;AAID;AACF,OAPD;;AASA,UAAIF,KAAK,CAACN,KAAV,EAAiB;AACfE,QAAAA,aAAa,CAACK,eAAD,EAAkBD,KAAK,CAACN,KAAxB,CAAb;AACD;AACF,KAjBD;AAkBD,GAtBD;;AAwBAE,EAAAA,aAAa,CAAC,EAAD,EAAKF,KAAL,CAAb;AAEA,SAAOC,UAAP;AACD","sourcesContent":["import type { NavigationState, PartialState } from '@react-navigation/routers';\n\nexport default function checkDuplicateRouteNames(state: NavigationState) {\n const duplicates: string[][] = [];\n\n const getRouteNames = (\n location: string,\n state: NavigationState | PartialState<NavigationState>\n ) => {\n state.routes.forEach((route: typeof state.routes[0]) => {\n const currentLocation = location\n ? `${location} > ${route.name}`\n : route.name;\n\n route.state?.routeNames?.forEach((routeName) => {\n if (routeName === route.name) {\n duplicates.push([\n currentLocation,\n `${currentLocation} > ${route.name}`,\n ]);\n }\n });\n\n if (route.state) {\n getRouteNames(currentLocation, route.state);\n }\n });\n };\n\n getRouteNames('', state);\n\n return duplicates;\n}\n"]}
@@ -0,0 +1,52 @@
1
+ const checkSerializableWithoutCircularReference = (o, seen, location) => {
2
+ if (o === undefined || o === null || typeof o === 'boolean' || typeof o === 'number' || typeof o === 'string') {
3
+ return {
4
+ serializable: true
5
+ };
6
+ }
7
+
8
+ if (Object.prototype.toString.call(o) !== '[object Object]' && !Array.isArray(o)) {
9
+ return {
10
+ serializable: false,
11
+ location,
12
+ reason: typeof o === 'function' ? 'Function' : String(o)
13
+ };
14
+ }
15
+
16
+ if (seen.has(o)) {
17
+ return {
18
+ serializable: false,
19
+ reason: 'Circular reference',
20
+ location
21
+ };
22
+ }
23
+
24
+ seen.add(o);
25
+
26
+ if (Array.isArray(o)) {
27
+ for (let i = 0; i < o.length; i++) {
28
+ const childResult = checkSerializableWithoutCircularReference(o[i], new Set(seen), [...location, i]);
29
+
30
+ if (!childResult.serializable) {
31
+ return childResult;
32
+ }
33
+ }
34
+ } else {
35
+ for (const key in o) {
36
+ const childResult = checkSerializableWithoutCircularReference(o[key], new Set(seen), [...location, key]);
37
+
38
+ if (!childResult.serializable) {
39
+ return childResult;
40
+ }
41
+ }
42
+ }
43
+
44
+ return {
45
+ serializable: true
46
+ };
47
+ };
48
+
49
+ export default function checkSerializable(o) {
50
+ return checkSerializableWithoutCircularReference(o, new Set(), []);
51
+ }
52
+ //# sourceMappingURL=checkSerializable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["checkSerializable.tsx"],"names":["checkSerializableWithoutCircularReference","o","seen","location","undefined","serializable","Object","prototype","toString","call","Array","isArray","reason","String","has","add","i","length","childResult","Set","key","checkSerializable"],"mappings":"AAAA,MAAMA,yCAAyC,GAAG,CAChDC,CADgD,EAEhDC,IAFgD,EAGhDC,QAHgD,KAUzC;AACP,MACEF,CAAC,KAAKG,SAAN,IACAH,CAAC,KAAK,IADN,IAEA,OAAOA,CAAP,KAAa,SAFb,IAGA,OAAOA,CAAP,KAAa,QAHb,IAIA,OAAOA,CAAP,KAAa,QALf,EAME;AACA,WAAO;AAAEI,MAAAA,YAAY,EAAE;AAAhB,KAAP;AACD;;AAED,MACEC,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BR,CAA/B,MAAsC,iBAAtC,IACA,CAACS,KAAK,CAACC,OAAN,CAAcV,CAAd,CAFH,EAGE;AACA,WAAO;AACLI,MAAAA,YAAY,EAAE,KADT;AAELF,MAAAA,QAFK;AAGLS,MAAAA,MAAM,EAAE,OAAOX,CAAP,KAAa,UAAb,GAA0B,UAA1B,GAAuCY,MAAM,CAACZ,CAAD;AAHhD,KAAP;AAKD;;AAED,MAAIC,IAAI,CAACY,GAAL,CAASb,CAAT,CAAJ,EAAiB;AACf,WAAO;AACLI,MAAAA,YAAY,EAAE,KADT;AAELO,MAAAA,MAAM,EAAE,oBAFH;AAGLT,MAAAA;AAHK,KAAP;AAKD;;AAEDD,EAAAA,IAAI,CAACa,GAAL,CAASd,CAAT;;AAEA,MAAIS,KAAK,CAACC,OAAN,CAAcV,CAAd,CAAJ,EAAsB;AACpB,SAAK,IAAIe,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGf,CAAC,CAACgB,MAAtB,EAA8BD,CAAC,EAA/B,EAAmC;AACjC,YAAME,WAAW,GAAGlB,yCAAyC,CAC3DC,CAAC,CAACe,CAAD,CAD0D,EAE3D,IAAIG,GAAJ,CAAajB,IAAb,CAF2D,EAG3D,CAAC,GAAGC,QAAJ,EAAca,CAAd,CAH2D,CAA7D;;AAMA,UAAI,CAACE,WAAW,CAACb,YAAjB,EAA+B;AAC7B,eAAOa,WAAP;AACD;AACF;AACF,GAZD,MAYO;AACL,SAAK,MAAME,GAAX,IAAkBnB,CAAlB,EAAqB;AACnB,YAAMiB,WAAW,GAAGlB,yCAAyC,CAC3DC,CAAC,CAACmB,GAAD,CAD0D,EAE3D,IAAID,GAAJ,CAAajB,IAAb,CAF2D,EAG3D,CAAC,GAAGC,QAAJ,EAAciB,GAAd,CAH2D,CAA7D;;AAMA,UAAI,CAACF,WAAW,CAACb,YAAjB,EAA+B;AAC7B,eAAOa,WAAP;AACD;AACF;AACF;;AAED,SAAO;AAAEb,IAAAA,YAAY,EAAE;AAAhB,GAAP;AACD,CArED;;AAuEA,eAAe,SAASgB,iBAAT,CAA2BpB,CAA3B,EAAsD;AACnE,SAAOD,yCAAyC,CAACC,CAAD,EAAI,IAAIkB,GAAJ,EAAJ,EAAoB,EAApB,CAAhD;AACD","sourcesContent":["const checkSerializableWithoutCircularReference = (\n o: { [key: string]: any },\n seen: Set<any>,\n location: (string | number)[]\n):\n | { serializable: true }\n | {\n serializable: false;\n location: (string | number)[];\n reason: string;\n } => {\n if (\n o === undefined ||\n o === null ||\n typeof o === 'boolean' ||\n typeof o === 'number' ||\n typeof o === 'string'\n ) {\n return { serializable: true };\n }\n\n if (\n Object.prototype.toString.call(o) !== '[object Object]' &&\n !Array.isArray(o)\n ) {\n return {\n serializable: false,\n location,\n reason: typeof o === 'function' ? 'Function' : String(o),\n };\n }\n\n if (seen.has(o)) {\n return {\n serializable: false,\n reason: 'Circular reference',\n location,\n };\n }\n\n seen.add(o);\n\n if (Array.isArray(o)) {\n for (let i = 0; i < o.length; i++) {\n const childResult = checkSerializableWithoutCircularReference(\n o[i],\n new Set<any>(seen),\n [...location, i]\n );\n\n if (!childResult.serializable) {\n return childResult;\n }\n }\n } else {\n for (const key in o) {\n const childResult = checkSerializableWithoutCircularReference(\n o[key],\n new Set<any>(seen),\n [...location, key]\n );\n\n if (!childResult.serializable) {\n return childResult;\n }\n }\n }\n\n return { serializable: true };\n};\n\nexport default function checkSerializable(o: { [key: string]: any }) {\n return checkSerializableWithoutCircularReference(o, new Set<any>(), []);\n}\n"]}
@@ -0,0 +1,71 @@
1
+ import { CommonActions } from '@react-navigation/routers';
2
+ export const NOT_INITIALIZED_ERROR = "The 'navigation' object hasn't been initialized yet. This might happen if you don't have a navigator mounted, or if the navigator hasn't finished mounting. See https://reactnavigation.org/docs/navigating-without-navigation-prop#handling-initialization for more details.";
3
+ export default function createNavigationContainerRef() {
4
+ const methods = [...Object.keys(CommonActions), 'addListener', 'removeListener', 'resetRoot', 'dispatch', 'isFocused', 'canGoBack', 'getRootState', 'getState', 'getParent', 'getCurrentRoute', 'getCurrentOptions'];
5
+ const listeners = {};
6
+
7
+ const removeListener = (event, callback) => {
8
+ var _listeners$event;
9
+
10
+ listeners[event] = (_listeners$event = listeners[event]) === null || _listeners$event === void 0 ? void 0 : _listeners$event.filter(cb => cb !== callback);
11
+ };
12
+
13
+ let current = null;
14
+ const ref = {
15
+ get current() {
16
+ return current;
17
+ },
18
+
19
+ set current(value) {
20
+ current = value;
21
+
22
+ if (value != null) {
23
+ Object.entries(listeners).forEach(([event, callbacks]) => {
24
+ callbacks.forEach(callback => {
25
+ value.addListener(event, callback);
26
+ });
27
+ });
28
+ }
29
+ },
30
+
31
+ isReady: () => {
32
+ if (current == null) {
33
+ return false;
34
+ }
35
+
36
+ return current.isReady();
37
+ },
38
+ ...methods.reduce((acc, name) => {
39
+ acc[name] = (...args) => {
40
+ if (current == null) {
41
+ switch (name) {
42
+ case 'addListener':
43
+ {
44
+ const [event, callback] = args;
45
+ listeners[event] = listeners[event] || [];
46
+ listeners[event].push(callback);
47
+ return () => removeListener(event, callback);
48
+ }
49
+
50
+ case 'removeListener':
51
+ {
52
+ const [event, callback] = args;
53
+ removeListener(event, callback);
54
+ break;
55
+ }
56
+
57
+ default:
58
+ console.error(NOT_INITIALIZED_ERROR);
59
+ }
60
+ } else {
61
+ // @ts-expect-error: this is ok
62
+ return current[name](...args);
63
+ }
64
+ };
65
+
66
+ return acc;
67
+ }, {})
68
+ };
69
+ return ref;
70
+ }
71
+ //# sourceMappingURL=createNavigationContainerRef.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["createNavigationContainerRef.tsx"],"names":["CommonActions","NOT_INITIALIZED_ERROR","createNavigationContainerRef","methods","Object","keys","listeners","removeListener","event","callback","filter","cb","current","ref","value","entries","forEach","callbacks","addListener","isReady","reduce","acc","name","args","push","console","error"],"mappings":"AAAA,SAASA,aAAT,QAA8B,2BAA9B;AAQA,OAAO,MAAMC,qBAAqB,GAChC,+QADK;AAGP,eAAe,SAASC,4BAAT,GAEmC;AAChD,QAAMC,OAAO,GAAG,CACd,GAAGC,MAAM,CAACC,IAAP,CAAYL,aAAZ,CADW,EAEd,aAFc,EAGd,gBAHc,EAId,WAJc,EAKd,UALc,EAMd,WANc,EAOd,WAPc,EAQd,cARc,EASd,UATc,EAUd,WAVc,EAWd,iBAXc,EAYd,mBAZc,CAAhB;AAeA,QAAMM,SAAuD,GAAG,EAAhE;;AAEA,QAAMC,cAAc,GAAG,CACrBC,KADqB,EAErBC,QAFqB,KAGlB;AAAA;;AACHH,IAAAA,SAAS,CAACE,KAAD,CAAT,uBAAmBF,SAAS,CAACE,KAAD,CAA5B,qDAAmB,iBAAkBE,MAAlB,CAA0BC,EAAD,IAAQA,EAAE,KAAKF,QAAxC,CAAnB;AACD,GALD;;AAOA,MAAIG,OAAiD,GAAG,IAAxD;AAEA,QAAMC,GAAiD,GAAG;AACxD,QAAID,OAAJ,GAAc;AACZ,aAAOA,OAAP;AACD,KAHuD;;AAIxD,QAAIA,OAAJ,CAAYE,KAAZ,EAA6D;AAC3DF,MAAAA,OAAO,GAAGE,KAAV;;AAEA,UAAIA,KAAK,IAAI,IAAb,EAAmB;AACjBV,QAAAA,MAAM,CAACW,OAAP,CAAeT,SAAf,EAA0BU,OAA1B,CAAkC,CAAC,CAACR,KAAD,EAAQS,SAAR,CAAD,KAAwB;AACxDA,UAAAA,SAAS,CAACD,OAAV,CAAmBP,QAAD,IAAc;AAC9BK,YAAAA,KAAK,CAACI,WAAN,CACEV,KADF,EAEEC,QAFF;AAID,WALD;AAMD,SAPD;AAQD;AACF,KAjBuD;;AAkBxDU,IAAAA,OAAO,EAAE,MAAM;AACb,UAAIP,OAAO,IAAI,IAAf,EAAqB;AACnB,eAAO,KAAP;AACD;;AAED,aAAOA,OAAO,CAACO,OAAR,EAAP;AACD,KAxBuD;AAyBxD,OAAGhB,OAAO,CAACiB,MAAR,CAAoB,CAACC,GAAD,EAAMC,IAAN,KAAe;AACpCD,MAAAA,GAAG,CAACC,IAAD,CAAH,GAAY,CAAC,GAAGC,IAAJ,KAAoB;AAC9B,YAAIX,OAAO,IAAI,IAAf,EAAqB;AACnB,kBAAQU,IAAR;AACE,iBAAK,aAAL;AAAoB;AAClB,sBAAM,CAACd,KAAD,EAAQC,QAAR,IAAoBc,IAA1B;AAEAjB,gBAAAA,SAAS,CAACE,KAAD,CAAT,GAAmBF,SAAS,CAACE,KAAD,CAAT,IAAoB,EAAvC;AACAF,gBAAAA,SAAS,CAACE,KAAD,CAAT,CAAiBgB,IAAjB,CAAsBf,QAAtB;AAEA,uBAAO,MAAMF,cAAc,CAACC,KAAD,EAAQC,QAAR,CAA3B;AACD;;AACD,iBAAK,gBAAL;AAAuB;AACrB,sBAAM,CAACD,KAAD,EAAQC,QAAR,IAAoBc,IAA1B;AAEAhB,gBAAAA,cAAc,CAACC,KAAD,EAAQC,QAAR,CAAd;AACA;AACD;;AACD;AACEgB,cAAAA,OAAO,CAACC,KAAR,CAAczB,qBAAd;AAhBJ;AAkBD,SAnBD,MAmBO;AACL;AACA,iBAAOW,OAAO,CAACU,IAAD,CAAP,CAAc,GAAGC,IAAjB,CAAP;AACD;AACF,OAxBD;;AAyBA,aAAOF,GAAP;AACD,KA3BE,EA2BA,EA3BA;AAzBqD,GAA1D;AAuDA,SAAOR,GAAP;AACD","sourcesContent":["import { CommonActions } from '@react-navigation/routers';\n\nimport type {\n NavigationContainerEventMap,\n NavigationContainerRef,\n NavigationContainerRefWithCurrent,\n} from './types';\n\nexport const NOT_INITIALIZED_ERROR =\n \"The 'navigation' object hasn't been initialized yet. This might happen if you don't have a navigator mounted, or if the navigator hasn't finished mounting. See https://reactnavigation.org/docs/navigating-without-navigation-prop#handling-initialization for more details.\";\n\nexport default function createNavigationContainerRef<\n ParamList extends {} = ReactNavigation.RootParamList\n>(): NavigationContainerRefWithCurrent<ParamList> {\n const methods = [\n ...Object.keys(CommonActions),\n 'addListener',\n 'removeListener',\n 'resetRoot',\n 'dispatch',\n 'isFocused',\n 'canGoBack',\n 'getRootState',\n 'getState',\n 'getParent',\n 'getCurrentRoute',\n 'getCurrentOptions',\n ] as const;\n\n const listeners: Record<string, ((...args: any[]) => void)[]> = {};\n\n const removeListener = (\n event: string,\n callback: (...args: any[]) => void\n ) => {\n listeners[event] = listeners[event]?.filter((cb) => cb !== callback);\n };\n\n let current: NavigationContainerRef<ParamList> | null = null;\n\n const ref: NavigationContainerRefWithCurrent<ParamList> = {\n get current() {\n return current;\n },\n set current(value: NavigationContainerRef<ParamList> | null) {\n current = value;\n\n if (value != null) {\n Object.entries(listeners).forEach(([event, callbacks]) => {\n callbacks.forEach((callback) => {\n value.addListener(\n event as keyof NavigationContainerEventMap,\n callback\n );\n });\n });\n }\n },\n isReady: () => {\n if (current == null) {\n return false;\n }\n\n return current.isReady();\n },\n ...methods.reduce<any>((acc, name) => {\n acc[name] = (...args: any[]) => {\n if (current == null) {\n switch (name) {\n case 'addListener': {\n const [event, callback] = args;\n\n listeners[event] = listeners[event] || [];\n listeners[event].push(callback);\n\n return () => removeListener(event, callback);\n }\n case 'removeListener': {\n const [event, callback] = args;\n\n removeListener(event, callback);\n break;\n }\n default:\n console.error(NOT_INITIALIZED_ERROR);\n }\n } else {\n // @ts-expect-error: this is ok\n return current[name](...args);\n }\n };\n return acc;\n }, {}),\n };\n\n return ref;\n}\n"]}
@@ -0,0 +1,24 @@
1
+ import Group from './Group';
2
+ import Screen from './Screen';
3
+
4
+ /**
5
+ * Higher order component to create a `Navigator` and `Screen` pair.
6
+ * Custom navigators should wrap the navigator component in `createNavigator` before exporting.
7
+ *
8
+ * @param Navigator The navigtor component to wrap.
9
+ * @returns Factory method to create a `Navigator` and `Screen` pair.
10
+ */
11
+ export default function createNavigatorFactory(Navigator) {
12
+ return function () {
13
+ if (arguments[0] !== undefined) {
14
+ throw new Error("Creating a navigator doesn't take an argument. Maybe you are trying to use React Navigation 4 API? See https://reactnavigation.org/docs/hello-react-navigation for the latest API and guides.");
15
+ }
16
+
17
+ return {
18
+ Navigator,
19
+ Group,
20
+ Screen
21
+ };
22
+ };
23
+ }
24
+ //# sourceMappingURL=createNavigatorFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["createNavigatorFactory.tsx"],"names":["Group","Screen","createNavigatorFactory","Navigator","arguments","undefined","Error"],"mappings":"AAGA,OAAOA,KAAP,MAAkB,SAAlB;AACA,OAAOC,MAAP,MAAmB,UAAnB;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,sBAAT,CAKbC,SALa,EAKkB;AAC/B,SAAO,YAML;AACA,QAAIC,SAAS,CAAC,CAAD,CAAT,KAAiBC,SAArB,EAAgC;AAC9B,YAAM,IAAIC,KAAJ,CACJ,+LADI,CAAN;AAGD;;AAED,WAAO;AACLH,MAAAA,SADK;AAELH,MAAAA,KAFK;AAGLC,MAAAA;AAHK,KAAP;AAKD,GAlBD;AAmBD","sourcesContent":["import type { NavigationState, ParamListBase } from '@react-navigation/routers';\nimport type * as React from 'react';\n\nimport Group from './Group';\nimport Screen from './Screen';\nimport type { EventMapBase, TypedNavigator } from './types';\n\n/**\n * Higher order component to create a `Navigator` and `Screen` pair.\n * Custom navigators should wrap the navigator component in `createNavigator` before exporting.\n *\n * @param Navigator The navigtor component to wrap.\n * @returns Factory method to create a `Navigator` and `Screen` pair.\n */\nexport default function createNavigatorFactory<\n State extends NavigationState,\n ScreenOptions extends {},\n EventMap extends EventMapBase,\n NavigatorComponent extends React.ComponentType<any>\n>(Navigator: NavigatorComponent) {\n return function <ParamList extends ParamListBase>(): TypedNavigator<\n ParamList,\n State,\n ScreenOptions,\n EventMap,\n typeof Navigator\n > {\n if (arguments[0] !== undefined) {\n throw new Error(\n \"Creating a navigator doesn't take an argument. Maybe you are trying to use React Navigation 4 API? See https://reactnavigation.org/docs/hello-react-navigation for the latest API and guides.\"\n );\n }\n\n return {\n Navigator,\n Group,\n Screen,\n };\n };\n}\n"]}
@@ -0,0 +1,15 @@
1
+ export default function findFocusedRoute(state) {
2
+ var _current2, _current$index3, _current3;
3
+
4
+ let current = state;
5
+
6
+ while (((_current = current) === null || _current === void 0 ? void 0 : _current.routes[(_current$index = current.index) !== null && _current$index !== void 0 ? _current$index : 0].state) != null) {
7
+ var _current, _current$index, _current$index2;
8
+
9
+ current = current.routes[(_current$index2 = current.index) !== null && _current$index2 !== void 0 ? _current$index2 : 0].state;
10
+ }
11
+
12
+ const route = (_current2 = current) === null || _current2 === void 0 ? void 0 : _current2.routes[(_current$index3 = (_current3 = current) === null || _current3 === void 0 ? void 0 : _current3.index) !== null && _current$index3 !== void 0 ? _current$index3 : 0];
13
+ return route;
14
+ }
15
+ //# sourceMappingURL=findFocusedRoute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["findFocusedRoute.tsx"],"names":["findFocusedRoute","state","current","routes","index","route"],"mappings":"AAEA,eAAe,SAASA,gBAAT,CAA0BC,KAA1B,EAA+C;AAAA;;AAC5D,MAAIC,OAAiC,GAAGD,KAAxC;;AAEA,SAAO,aAAAC,OAAO,UAAP,4CAASC,MAAT,mBAAgBD,OAAO,CAACE,KAAxB,2DAAiC,CAAjC,EAAoCH,KAApC,KAA6C,IAApD,EAA0D;AAAA;;AACxDC,IAAAA,OAAO,GAAGA,OAAO,CAACC,MAAR,oBAAeD,OAAO,CAACE,KAAvB,6DAAgC,CAAhC,EAAmCH,KAA7C;AACD;;AAED,QAAMI,KAAK,gBAAGH,OAAH,8CAAG,UAASC,MAAT,iCAAgBD,OAAhB,8CAAgB,UAASE,KAAzB,6DAAkC,CAAlC,CAAd;AAEA,SAAOC,KAAP;AACD","sourcesContent":["import type { InitialState } from '@react-navigation/routers';\n\nexport default function findFocusedRoute(state: InitialState) {\n let current: InitialState | undefined = state;\n\n while (current?.routes[current.index ?? 0].state != null) {\n current = current.routes[current.index ?? 0].state;\n }\n\n const route = current?.routes[current?.index ?? 0];\n\n return route;\n}\n"]}
@@ -0,0 +1,12 @@
1
+ // Object.fromEntries is not available in older iOS versions
2
+ export default function fromEntries(entries) {
3
+ return entries.reduce((acc, [k, v]) => {
4
+ if (acc.hasOwnProperty(k)) {
5
+ throw new Error(`A value for key '${k}' already exists in the object.`);
6
+ }
7
+
8
+ acc[k] = v;
9
+ return acc;
10
+ }, {});
11
+ }
12
+ //# sourceMappingURL=fromEntries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["fromEntries.tsx"],"names":["fromEntries","entries","reduce","acc","k","v","hasOwnProperty","Error"],"mappings":"AAAA;AACA,eAAe,SAASA,WAAT,CACbC,OADa,EAEb;AACA,SAAOA,OAAO,CAACC,MAAR,CAAe,CAACC,GAAD,EAAM,CAACC,CAAD,EAAIC,CAAJ,CAAN,KAAiB;AACrC,QAAIF,GAAG,CAACG,cAAJ,CAAmBF,CAAnB,CAAJ,EAA2B;AACzB,YAAM,IAAIG,KAAJ,CAAW,oBAAmBH,CAAE,iCAAhC,CAAN;AACD;;AAEDD,IAAAA,GAAG,CAACC,CAAD,CAAH,GAASC,CAAT;AACA,WAAOF,GAAP;AACD,GAPM,EAOJ,EAPI,CAAP;AAQD","sourcesContent":["// Object.fromEntries is not available in older iOS versions\nexport default function fromEntries<K extends string, V>(\n entries: (readonly [K, V])[]\n) {\n return entries.reduce((acc, [k, v]) => {\n if (acc.hasOwnProperty(k)) {\n throw new Error(`A value for key '${k}' already exists in the object.`);\n }\n\n acc[k] = v;\n return acc;\n }, {} as Record<K, V>);\n}\n"]}
@@ -0,0 +1,92 @@
1
+ export default function getActionFromState(state, options) {
2
+ var _state$index, _normalizedConfig$scr;
3
+
4
+ // Create a normalized configs object which will be easier to use
5
+ const normalizedConfig = options ? createNormalizedConfigItem(options) : {};
6
+ const routes = state.index != null ? state.routes.slice(0, state.index + 1) : state.routes;
7
+
8
+ if (routes.length === 0) {
9
+ return undefined;
10
+ }
11
+
12
+ if (!(routes.length === 1 && routes[0].key === undefined || routes.length === 2 && routes[0].key === undefined && routes[0].name === (normalizedConfig === null || normalizedConfig === void 0 ? void 0 : normalizedConfig.initialRouteName) && routes[1].key === undefined)) {
13
+ return {
14
+ type: 'RESET',
15
+ payload: state
16
+ };
17
+ }
18
+
19
+ const route = state.routes[(_state$index = state.index) !== null && _state$index !== void 0 ? _state$index : state.routes.length - 1];
20
+ let current = route === null || route === void 0 ? void 0 : route.state;
21
+ let config = normalizedConfig === null || normalizedConfig === void 0 ? void 0 : (_normalizedConfig$scr = normalizedConfig.screens) === null || _normalizedConfig$scr === void 0 ? void 0 : _normalizedConfig$scr[route === null || route === void 0 ? void 0 : route.name];
22
+ let params = { ...route.params
23
+ };
24
+ let payload = route ? {
25
+ name: route.name,
26
+ path: route.path,
27
+ params
28
+ } : undefined;
29
+
30
+ while (current) {
31
+ var _config, _config2, _config2$screens;
32
+
33
+ if (current.routes.length === 0) {
34
+ return undefined;
35
+ }
36
+
37
+ const routes = current.index != null ? current.routes.slice(0, current.index + 1) : current.routes;
38
+ const route = routes[routes.length - 1]; // Explicitly set to override existing value when merging params
39
+
40
+ Object.assign(params, {
41
+ initial: undefined,
42
+ screen: undefined,
43
+ params: undefined,
44
+ state: undefined
45
+ });
46
+
47
+ if (routes.length === 1 && routes[0].key === undefined) {
48
+ params.initial = true;
49
+ params.screen = route.name;
50
+ } else if (routes.length === 2 && routes[0].key === undefined && routes[0].name === ((_config = config) === null || _config === void 0 ? void 0 : _config.initialRouteName) && routes[1].key === undefined) {
51
+ params.initial = false;
52
+ params.screen = route.name;
53
+ } else {
54
+ params.state = current;
55
+ break;
56
+ }
57
+
58
+ if (route.state) {
59
+ params.params = { ...route.params
60
+ };
61
+ params = params.params;
62
+ } else {
63
+ params.path = route.path;
64
+ params.params = route.params;
65
+ }
66
+
67
+ current = route.state;
68
+ config = (_config2 = config) === null || _config2 === void 0 ? void 0 : (_config2$screens = _config2.screens) === null || _config2$screens === void 0 ? void 0 : _config2$screens[route.name];
69
+ }
70
+
71
+ if (!payload) {
72
+ return;
73
+ } // Try to construct payload for a `NAVIGATE` action from the state
74
+ // This lets us preserve the navigation state and not lose it
75
+
76
+
77
+ return {
78
+ type: 'NAVIGATE',
79
+ payload
80
+ };
81
+ }
82
+
83
+ const createNormalizedConfigItem = config => typeof config === 'object' && config != null ? {
84
+ initialRouteName: config.initialRouteName,
85
+ screens: config.screens != null ? createNormalizedConfigs(config.screens) : undefined
86
+ } : {};
87
+
88
+ const createNormalizedConfigs = options => Object.entries(options).reduce((acc, [k, v]) => {
89
+ acc[k] = createNormalizedConfigItem(v);
90
+ return acc;
91
+ }, {});
92
+ //# sourceMappingURL=getActionFromState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["getActionFromState.tsx"],"names":["getActionFromState","state","options","normalizedConfig","createNormalizedConfigItem","routes","index","slice","length","undefined","key","name","initialRouteName","type","payload","route","current","config","screens","params","path","Object","assign","initial","screen","createNormalizedConfigs","entries","reduce","acc","k","v"],"mappings":"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","sourcesContent":["import type {\n CommonActions,\n NavigationState,\n ParamListBase,\n PartialRoute,\n PartialState,\n Route,\n} from '@react-navigation/routers';\n\nimport type { NavigatorScreenParams, PathConfig, PathConfigMap } from './types';\n\ntype ConfigItem = {\n initialRouteName?: string;\n screens?: Record<string, ConfigItem>;\n};\n\ntype Options = {\n initialRouteName?: string;\n screens: PathConfigMap<object>;\n};\n\ntype NavigateAction<State extends NavigationState> = {\n type: 'NAVIGATE';\n payload: {\n name: string;\n params?: NavigatorScreenParams<State>;\n path?: string;\n };\n};\n\nexport default function getActionFromState(\n state: PartialState<NavigationState>,\n options?: Options\n): NavigateAction<NavigationState> | CommonActions.Action | undefined {\n // Create a normalized configs object which will be easier to use\n const normalizedConfig = options\n ? createNormalizedConfigItem(options as PathConfig<object> | string)\n : {};\n\n const routes =\n state.index != null ? state.routes.slice(0, state.index + 1) : state.routes;\n\n if (routes.length === 0) {\n return undefined;\n }\n\n if (\n !(\n (routes.length === 1 && routes[0].key === undefined) ||\n (routes.length === 2 &&\n routes[0].key === undefined &&\n routes[0].name === normalizedConfig?.initialRouteName &&\n routes[1].key === undefined)\n )\n ) {\n return {\n type: 'RESET',\n payload: state,\n };\n }\n\n const route = state.routes[state.index ?? state.routes.length - 1];\n\n let current: PartialState<NavigationState> | undefined = route?.state;\n let config: ConfigItem | undefined = normalizedConfig?.screens?.[route?.name];\n let params = { ...route.params } as NavigatorScreenParams<\n ParamListBase,\n NavigationState\n >;\n\n let payload = route\n ? { name: route.name, path: route.path, params }\n : undefined;\n\n while (current) {\n if (current.routes.length === 0) {\n return undefined;\n }\n\n const routes =\n current.index != null\n ? current.routes.slice(0, current.index + 1)\n : current.routes;\n\n const route: Route<string> | PartialRoute<Route<string>> =\n routes[routes.length - 1];\n\n // Explicitly set to override existing value when merging params\n Object.assign(params, {\n initial: undefined,\n screen: undefined,\n params: undefined,\n state: undefined,\n });\n\n if (routes.length === 1 && routes[0].key === undefined) {\n params.initial = true;\n params.screen = route.name;\n } else if (\n routes.length === 2 &&\n routes[0].key === undefined &&\n routes[0].name === config?.initialRouteName &&\n routes[1].key === undefined\n ) {\n params.initial = false;\n params.screen = route.name;\n } else {\n params.state = current;\n break;\n }\n\n if (route.state) {\n params.params = { ...route.params };\n params = params.params as NavigatorScreenParams<\n ParamListBase,\n NavigationState\n >;\n } else {\n params.path = route.path;\n params.params = route.params;\n }\n\n current = route.state;\n config = config?.screens?.[route.name];\n }\n\n if (!payload) {\n return;\n }\n\n // Try to construct payload for a `NAVIGATE` action from the state\n // This lets us preserve the navigation state and not lose it\n return {\n type: 'NAVIGATE',\n payload,\n };\n}\n\nconst createNormalizedConfigItem = (config: PathConfig<object> | string) =>\n typeof config === 'object' && config != null\n ? {\n initialRouteName: config.initialRouteName,\n screens:\n config.screens != null\n ? createNormalizedConfigs(config.screens)\n : undefined,\n }\n : {};\n\nconst createNormalizedConfigs = (options: PathConfigMap<object>) =>\n Object.entries(options).reduce<Record<string, ConfigItem>>((acc, [k, v]) => {\n acc[k] = createNormalizedConfigItem(v);\n return acc;\n }, {});\n"]}
@@ -0,0 +1,15 @@
1
+ import { CHILD_STATE } from './useRouteCache';
2
+ export default function getFocusedRouteNameFromRoute(route) {
3
+ var _route$CHILD_STATE, _state$index;
4
+
5
+ // @ts-expect-error: this isn't in type definitions coz we want this private
6
+ const state = (_route$CHILD_STATE = route[CHILD_STATE]) !== null && _route$CHILD_STATE !== void 0 ? _route$CHILD_STATE : route.state;
7
+ const params = route.params;
8
+ const routeName = state ? // Get the currently active route name in the nested navigator
9
+ state.routes[// If we have a partial state without index, for tab/drawer, first screen will be focused one, and last for stack
10
+ // The type property will only exist for rehydrated state and not for state from deep link
11
+ (_state$index = state.index) !== null && _state$index !== void 0 ? _state$index : typeof state.type === 'string' && state.type !== 'stack' ? 0 : state.routes.length - 1].name : // If state doesn't exist, we need to default to `screen` param if available
12
+ typeof (params === null || params === void 0 ? void 0 : params.screen) === 'string' ? params.screen : undefined;
13
+ return routeName;
14
+ }
15
+ //# sourceMappingURL=getFocusedRouteNameFromRoute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["getFocusedRouteNameFromRoute.tsx"],"names":["CHILD_STATE","getFocusedRouteNameFromRoute","route","state","params","routeName","routes","index","type","length","name","screen","undefined"],"mappings":"AAEA,SAASA,WAAT,QAA4B,iBAA5B;AAEA,eAAe,SAASC,4BAAT,CACbC,KADa,EAEO;AAAA;;AACpB;AACA,QAAMC,KAAK,yBAAGD,KAAK,CAACF,WAAD,CAAR,mEAAyBE,KAAK,CAACC,KAA1C;AACA,QAAMC,MAAM,GAAGF,KAAK,CAACE,MAArB;AAEA,QAAMC,SAAS,GAAGF,KAAK,GACnB;AACAA,EAAAA,KAAK,CAACG,MAAN,CACE;AACA;AAFF,kBAGEH,KAAK,CAACI,KAHR,uDAIK,OAAOJ,KAAK,CAACK,IAAb,KAAsB,QAAtB,IAAkCL,KAAK,CAACK,IAAN,KAAe,OAAjD,GACG,CADH,GAEGL,KAAK,CAACG,MAAN,CAAaG,MAAb,GAAsB,CAN9B,EAOEC,IATiB,GAUnB;AACF,UAAON,MAAP,aAAOA,MAAP,uBAAOA,MAAM,CAAEO,MAAf,MAA0B,QAA1B,GACEP,MAAM,CAACO,MADT,GAEEC,SAbJ;AAeA,SAAOP,SAAP;AACD","sourcesContent":["import type { Route } from '@react-navigation/routers';\n\nimport { CHILD_STATE } from './useRouteCache';\n\nexport default function getFocusedRouteNameFromRoute(\n route: Partial<Route<string>>\n): string | undefined {\n // @ts-expect-error: this isn't in type definitions coz we want this private\n const state = route[CHILD_STATE] ?? route.state;\n const params = route.params as { screen?: unknown } | undefined;\n\n const routeName = state\n ? // Get the currently active route name in the nested navigator\n state.routes[\n // If we have a partial state without index, for tab/drawer, first screen will be focused one, and last for stack\n // The type property will only exist for rehydrated state and not for state from deep link\n state.index ??\n (typeof state.type === 'string' && state.type !== 'stack'\n ? 0\n : state.routes.length - 1)\n ].name\n : // If state doesn't exist, we need to default to `screen` param if available\n typeof params?.screen === 'string'\n ? params.screen\n : undefined;\n\n return routeName;\n}\n"]}