@react-navigation/core 7.0.0-alpha.1 → 7.0.0-alpha.11

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 (350) hide show
  1. package/lib/commonjs/BaseNavigationContainer.js +25 -30
  2. package/lib/commonjs/BaseNavigationContainer.js.map +1 -1
  3. package/lib/commonjs/CurrentRenderContext.js +3 -4
  4. package/lib/commonjs/CurrentRenderContext.js.map +1 -1
  5. package/lib/commonjs/DeprecatedNavigationInChildContext.js +3 -4
  6. package/lib/commonjs/DeprecatedNavigationInChildContext.js.map +1 -1
  7. package/lib/commonjs/EnsureSingleNavigator.js +3 -4
  8. package/lib/commonjs/EnsureSingleNavigator.js.map +1 -1
  9. package/lib/commonjs/Group.js.map +1 -1
  10. package/lib/commonjs/NavigationBuilderContext.js +3 -4
  11. package/lib/commonjs/NavigationBuilderContext.js.map +1 -1
  12. package/lib/commonjs/NavigationContainerRefContext.js +3 -4
  13. package/lib/commonjs/NavigationContainerRefContext.js.map +1 -1
  14. package/lib/commonjs/NavigationContext.js +3 -4
  15. package/lib/commonjs/NavigationContext.js.map +1 -1
  16. package/lib/commonjs/NavigationHelpersContext.js +3 -4
  17. package/lib/commonjs/NavigationHelpersContext.js.map +1 -1
  18. package/lib/commonjs/NavigationIndependentTree.js +2 -2
  19. package/lib/commonjs/NavigationIndependentTree.js.map +1 -1
  20. package/lib/commonjs/NavigationIndependentTreeContext.js +3 -4
  21. package/lib/commonjs/NavigationIndependentTreeContext.js.map +1 -1
  22. package/lib/commonjs/NavigationRouteContext.js +3 -4
  23. package/lib/commonjs/NavigationRouteContext.js.map +1 -1
  24. package/lib/commonjs/NavigationStateContext.js +3 -4
  25. package/lib/commonjs/NavigationStateContext.js.map +1 -1
  26. package/lib/commonjs/PreventRemoveContext.js +8 -4
  27. package/lib/commonjs/PreventRemoveContext.js.map +1 -1
  28. package/lib/commonjs/PreventRemoveProvider.js +8 -10
  29. package/lib/commonjs/PreventRemoveProvider.js.map +1 -1
  30. package/lib/commonjs/SceneView.js +2 -2
  31. package/lib/commonjs/SceneView.js.map +1 -1
  32. package/lib/commonjs/Screen.js.map +1 -1
  33. package/lib/commonjs/StaticContainer.js +3 -4
  34. package/lib/commonjs/StaticContainer.js.map +1 -1
  35. package/lib/commonjs/StaticNavigation.js +34 -7
  36. package/lib/commonjs/StaticNavigation.js.map +1 -1
  37. package/lib/commonjs/UnhandledActionContext.js +3 -4
  38. package/lib/commonjs/UnhandledActionContext.js.map +1 -1
  39. package/lib/commonjs/checkDuplicateRouteNames.js +1 -2
  40. package/lib/commonjs/checkDuplicateRouteNames.js.map +1 -1
  41. package/lib/commonjs/checkSerializable.js.map +1 -1
  42. package/lib/commonjs/createNavigationContainerRef.js +1 -2
  43. package/lib/commonjs/createNavigationContainerRef.js.map +1 -1
  44. package/lib/commonjs/createNavigatorFactory.js +0 -3
  45. package/lib/commonjs/createNavigatorFactory.js.map +1 -1
  46. package/lib/commonjs/findFocusedRoute.js +2 -4
  47. package/lib/commonjs/findFocusedRoute.js.map +1 -1
  48. package/lib/commonjs/getActionFromState.js +6 -8
  49. package/lib/commonjs/getActionFromState.js.map +1 -1
  50. package/lib/commonjs/getFocusedRouteNameFromRoute.js +1 -1
  51. package/lib/commonjs/getFocusedRouteNameFromRoute.js.map +1 -1
  52. package/lib/commonjs/getPathFromState.js +25 -22
  53. package/lib/commonjs/getPathFromState.js.map +1 -1
  54. package/lib/commonjs/getStateFromPath.js +63 -21
  55. package/lib/commonjs/getStateFromPath.js.map +1 -1
  56. package/lib/commonjs/index.js +27 -3
  57. package/lib/commonjs/index.js.map +1 -1
  58. package/lib/commonjs/isArrayEqual.js.map +1 -1
  59. package/lib/commonjs/isRecordEqual.js.map +1 -1
  60. package/lib/commonjs/theming/ThemeContext.js +12 -0
  61. package/lib/commonjs/theming/ThemeContext.js.map +1 -0
  62. package/lib/commonjs/theming/ThemeProvider.js +20 -0
  63. package/lib/commonjs/theming/ThemeProvider.js.map +1 -0
  64. package/lib/commonjs/theming/useTheme.js +18 -0
  65. package/lib/commonjs/theming/useTheme.js.map +1 -0
  66. package/lib/commonjs/types.js.map +1 -1
  67. package/lib/commonjs/useChildListeners.js +2 -2
  68. package/lib/commonjs/useChildListeners.js.map +1 -1
  69. package/lib/commonjs/useComponent.js +2 -2
  70. package/lib/commonjs/useComponent.js.map +1 -1
  71. package/lib/commonjs/useCurrentRender.js +2 -2
  72. package/lib/commonjs/useCurrentRender.js.map +1 -1
  73. package/lib/commonjs/useDescriptors.js +83 -31
  74. package/lib/commonjs/useDescriptors.js.map +1 -1
  75. package/lib/commonjs/useEventEmitter.js +5 -6
  76. package/lib/commonjs/useEventEmitter.js.map +1 -1
  77. package/lib/commonjs/useFocusEffect.js +4 -2
  78. package/lib/commonjs/useFocusEffect.js.map +1 -1
  79. package/lib/commonjs/useFocusEvents.js +4 -4
  80. package/lib/commonjs/useFocusEvents.js.map +1 -1
  81. package/lib/commonjs/useFocusedListenersChildrenAdapter.js +3 -3
  82. package/lib/commonjs/useFocusedListenersChildrenAdapter.js.map +1 -1
  83. package/lib/commonjs/useIsFocused.js +5 -4
  84. package/lib/commonjs/useIsFocused.js.map +1 -1
  85. package/lib/commonjs/useIsomorphicLayoutEffect.js +12 -0
  86. package/lib/commonjs/useIsomorphicLayoutEffect.js.map +1 -0
  87. package/lib/commonjs/useIsomorphicLayoutEffect.native.js +9 -0
  88. package/lib/commonjs/useIsomorphicLayoutEffect.native.js.map +1 -0
  89. package/lib/commonjs/useKeyedChildListeners.js +2 -2
  90. package/lib/commonjs/useKeyedChildListeners.js.map +1 -1
  91. package/lib/commonjs/useNavigation.js +2 -2
  92. package/lib/commonjs/useNavigation.js.map +1 -1
  93. package/lib/commonjs/useNavigationBuilder.js +81 -68
  94. package/lib/commonjs/useNavigationBuilder.js.map +1 -1
  95. package/lib/commonjs/useNavigationCache.js +57 -16
  96. package/lib/commonjs/useNavigationCache.js.map +1 -1
  97. package/lib/commonjs/useNavigationContainerRef.js +2 -2
  98. package/lib/commonjs/useNavigationContainerRef.js.map +1 -1
  99. package/lib/commonjs/useNavigationHelpers.js +4 -5
  100. package/lib/commonjs/useNavigationHelpers.js.map +1 -1
  101. package/lib/commonjs/useNavigationIndependentTree.js +2 -2
  102. package/lib/commonjs/useNavigationIndependentTree.js.map +1 -1
  103. package/lib/commonjs/useNavigationState.js +2 -2
  104. package/lib/commonjs/useNavigationState.js.map +1 -1
  105. package/lib/commonjs/useOnAction.js +6 -4
  106. package/lib/commonjs/useOnAction.js.map +1 -1
  107. package/lib/commonjs/useOnGetState.js +4 -5
  108. package/lib/commonjs/useOnGetState.js.map +1 -1
  109. package/lib/commonjs/useOnPreventRemove.js +5 -6
  110. package/lib/commonjs/useOnPreventRemove.js.map +1 -1
  111. package/lib/commonjs/useOnRouteFocus.js +2 -2
  112. package/lib/commonjs/useOnRouteFocus.js.map +1 -1
  113. package/lib/commonjs/useOptionsGetters.js +9 -10
  114. package/lib/commonjs/useOptionsGetters.js.map +1 -1
  115. package/lib/commonjs/usePreventRemove.js +5 -5
  116. package/lib/commonjs/usePreventRemove.js.map +1 -1
  117. package/lib/commonjs/usePreventRemoveContext.js +2 -2
  118. package/lib/commonjs/usePreventRemoveContext.js.map +1 -1
  119. package/lib/commonjs/useRegisterNavigator.js +2 -2
  120. package/lib/commonjs/useRegisterNavigator.js.map +1 -1
  121. package/lib/commonjs/useRoute.js +2 -2
  122. package/lib/commonjs/useRoute.js.map +1 -1
  123. package/lib/commonjs/useRouteCache.js +19 -16
  124. package/lib/commonjs/useRouteCache.js.map +1 -1
  125. package/lib/commonjs/useSyncState.js +27 -56
  126. package/lib/commonjs/useSyncState.js.map +1 -1
  127. package/lib/commonjs/validatePathConfig.js +37 -10
  128. package/lib/commonjs/validatePathConfig.js.map +1 -1
  129. package/lib/module/BaseNavigationContainer.js +22 -26
  130. package/lib/module/BaseNavigationContainer.js.map +1 -1
  131. package/lib/module/CurrentRenderContext.js.map +1 -1
  132. package/lib/module/DeprecatedNavigationInChildContext.js.map +1 -1
  133. package/lib/module/EnsureSingleNavigator.js.map +1 -1
  134. package/lib/module/Group.js.map +1 -1
  135. package/lib/module/NavigationBuilderContext.js.map +1 -1
  136. package/lib/module/NavigationContainerRefContext.js.map +1 -1
  137. package/lib/module/NavigationContext.js.map +1 -1
  138. package/lib/module/NavigationHelpersContext.js.map +1 -1
  139. package/lib/module/NavigationIndependentTree.js.map +1 -1
  140. package/lib/module/NavigationIndependentTreeContext.js.map +1 -1
  141. package/lib/module/NavigationRouteContext.js.map +1 -1
  142. package/lib/module/NavigationStateContext.js.map +1 -1
  143. package/lib/module/PreventRemoveContext.js.map +1 -1
  144. package/lib/module/PreventRemoveProvider.js +6 -8
  145. package/lib/module/PreventRemoveProvider.js.map +1 -1
  146. package/lib/module/SceneView.js.map +1 -1
  147. package/lib/module/Screen.js.map +1 -1
  148. package/lib/module/StaticContainer.js.map +1 -1
  149. package/lib/module/StaticNavigation.js +27 -5
  150. package/lib/module/StaticNavigation.js.map +1 -1
  151. package/lib/module/UnhandledActionContext.js.map +1 -1
  152. package/lib/module/checkDuplicateRouteNames.js +1 -2
  153. package/lib/module/checkDuplicateRouteNames.js.map +1 -1
  154. package/lib/module/checkSerializable.js.map +1 -1
  155. package/lib/module/createNavigationContainerRef.js.map +1 -1
  156. package/lib/module/createNavigatorFactory.js +0 -3
  157. package/lib/module/createNavigatorFactory.js.map +1 -1
  158. package/lib/module/findFocusedRoute.js +2 -4
  159. package/lib/module/findFocusedRoute.js.map +1 -1
  160. package/lib/module/getActionFromState.js +6 -8
  161. package/lib/module/getActionFromState.js.map +1 -1
  162. package/lib/module/getFocusedRouteNameFromRoute.js +1 -1
  163. package/lib/module/getFocusedRouteNameFromRoute.js.map +1 -1
  164. package/lib/module/getPathFromState.js +23 -20
  165. package/lib/module/getPathFromState.js.map +1 -1
  166. package/lib/module/getStateFromPath.js +61 -19
  167. package/lib/module/getStateFromPath.js.map +1 -1
  168. package/lib/module/index.js +4 -1
  169. package/lib/module/index.js.map +1 -1
  170. package/lib/module/isArrayEqual.js.map +1 -1
  171. package/lib/module/isRecordEqual.js.map +1 -1
  172. package/lib/module/theming/ThemeContext.js +4 -0
  173. package/lib/module/theming/ThemeContext.js.map +1 -0
  174. package/lib/module/theming/ThemeProvider.js +12 -0
  175. package/lib/module/theming/ThemeProvider.js.map +1 -0
  176. package/lib/module/theming/useTheme.js +10 -0
  177. package/lib/module/theming/useTheme.js.map +1 -0
  178. package/lib/module/types.js.map +1 -1
  179. package/lib/module/useChildListeners.js.map +1 -1
  180. package/lib/module/useComponent.js.map +1 -1
  181. package/lib/module/useCurrentRender.js.map +1 -1
  182. package/lib/module/useDescriptors.js +81 -29
  183. package/lib/module/useDescriptors.js.map +1 -1
  184. package/lib/module/useEventEmitter.js +3 -4
  185. package/lib/module/useEventEmitter.js.map +1 -1
  186. package/lib/module/useFocusEffect.js +2 -0
  187. package/lib/module/useFocusEffect.js.map +1 -1
  188. package/lib/module/useFocusEvents.js +2 -2
  189. package/lib/module/useFocusEvents.js.map +1 -1
  190. package/lib/module/useFocusedListenersChildrenAdapter.js +1 -1
  191. package/lib/module/useFocusedListenersChildrenAdapter.js.map +1 -1
  192. package/lib/module/useIsFocused.js.map +1 -1
  193. package/lib/module/useIsomorphicLayoutEffect.js +7 -0
  194. package/lib/module/useIsomorphicLayoutEffect.js.map +1 -0
  195. package/lib/module/useIsomorphicLayoutEffect.native.js +3 -0
  196. package/lib/module/useIsomorphicLayoutEffect.native.js.map +1 -0
  197. package/lib/module/useKeyedChildListeners.js.map +1 -1
  198. package/lib/module/useNavigation.js.map +1 -1
  199. package/lib/module/useNavigationBuilder.js +78 -66
  200. package/lib/module/useNavigationBuilder.js.map +1 -1
  201. package/lib/module/useNavigationCache.js +55 -14
  202. package/lib/module/useNavigationCache.js.map +1 -1
  203. package/lib/module/useNavigationContainerRef.js.map +1 -1
  204. package/lib/module/useNavigationHelpers.js +2 -3
  205. package/lib/module/useNavigationHelpers.js.map +1 -1
  206. package/lib/module/useNavigationIndependentTree.js.map +1 -1
  207. package/lib/module/useNavigationState.js.map +1 -1
  208. package/lib/module/useOnAction.js +4 -2
  209. package/lib/module/useOnAction.js.map +1 -1
  210. package/lib/module/useOnGetState.js +2 -3
  211. package/lib/module/useOnGetState.js.map +1 -1
  212. package/lib/module/useOnPreventRemove.js +3 -4
  213. package/lib/module/useOnPreventRemove.js.map +1 -1
  214. package/lib/module/useOnRouteFocus.js.map +1 -1
  215. package/lib/module/useOptionsGetters.js +7 -8
  216. package/lib/module/useOptionsGetters.js.map +1 -1
  217. package/lib/module/usePreventRemove.js +2 -2
  218. package/lib/module/usePreventRemove.js.map +1 -1
  219. package/lib/module/usePreventRemoveContext.js.map +1 -1
  220. package/lib/module/useRegisterNavigator.js.map +1 -1
  221. package/lib/module/useRoute.js.map +1 -1
  222. package/lib/module/useRouteCache.js +16 -12
  223. package/lib/module/useRouteCache.js.map +1 -1
  224. package/lib/module/useSyncState.js +25 -54
  225. package/lib/module/useSyncState.js.map +1 -1
  226. package/lib/module/validatePathConfig.js +37 -10
  227. package/lib/module/validatePathConfig.js.map +1 -1
  228. package/lib/typescript/src/BaseNavigationContainer.d.ts +2 -1
  229. package/lib/typescript/src/BaseNavigationContainer.d.ts.map +1 -1
  230. package/lib/typescript/src/EnsureSingleNavigator.d.ts +1 -1
  231. package/lib/typescript/src/EnsureSingleNavigator.d.ts.map +1 -1
  232. package/lib/typescript/src/NavigationContext.d.ts +1 -17
  233. package/lib/typescript/src/NavigationContext.d.ts.map +1 -1
  234. package/lib/typescript/src/NavigationHelpersContext.d.ts +1 -1
  235. package/lib/typescript/src/NavigationHelpersContext.d.ts.map +1 -1
  236. package/lib/typescript/src/NavigationIndependentTree.d.ts +1 -1
  237. package/lib/typescript/src/NavigationIndependentTree.d.ts.map +1 -1
  238. package/lib/typescript/src/NavigationRouteContext.d.ts +1 -1
  239. package/lib/typescript/src/NavigationRouteContext.d.ts.map +1 -1
  240. package/lib/typescript/src/NavigationStateContext.d.ts +2 -18
  241. package/lib/typescript/src/NavigationStateContext.d.ts.map +1 -1
  242. package/lib/typescript/src/PreventRemoveProvider.d.ts +1 -1
  243. package/lib/typescript/src/PreventRemoveProvider.d.ts.map +1 -1
  244. package/lib/typescript/src/SceneView.d.ts +2 -2
  245. package/lib/typescript/src/SceneView.d.ts.map +1 -1
  246. package/lib/typescript/src/StaticNavigation.d.ts +12 -5
  247. package/lib/typescript/src/StaticNavigation.d.ts.map +1 -1
  248. package/lib/typescript/src/createNavigatorFactory.d.ts.map +1 -1
  249. package/lib/typescript/src/findFocusedRoute.d.ts +1 -9
  250. package/lib/typescript/src/findFocusedRoute.d.ts.map +1 -1
  251. package/lib/typescript/src/getPathFromState.d.ts +1 -0
  252. package/lib/typescript/src/getPathFromState.d.ts.map +1 -1
  253. package/lib/typescript/src/getStateFromPath.d.ts +1 -0
  254. package/lib/typescript/src/getStateFromPath.d.ts.map +1 -1
  255. package/lib/typescript/src/index.d.ts +5 -2
  256. package/lib/typescript/src/index.d.ts.map +1 -1
  257. package/lib/typescript/src/theming/ThemeContext.d.ts +3 -0
  258. package/lib/typescript/src/theming/ThemeContext.d.ts.map +1 -0
  259. package/lib/typescript/src/theming/ThemeProvider.d.ts +8 -0
  260. package/lib/typescript/src/theming/ThemeProvider.d.ts.map +1 -0
  261. package/lib/typescript/src/theming/useTheme.d.ts +2 -0
  262. package/lib/typescript/src/theming/useTheme.d.ts.map +1 -0
  263. package/lib/typescript/src/types.d.ts +80 -1
  264. package/lib/typescript/src/types.d.ts.map +1 -1
  265. package/lib/typescript/src/useComponent.d.ts +1 -1
  266. package/lib/typescript/src/useComponent.d.ts.map +1 -1
  267. package/lib/typescript/src/useDescriptors.d.ts +107 -59
  268. package/lib/typescript/src/useDescriptors.d.ts.map +1 -1
  269. package/lib/typescript/src/useFocusEffect.d.ts.map +1 -1
  270. package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts +1 -1
  271. package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts.map +1 -1
  272. package/lib/typescript/src/useIsomorphicLayoutEffect.d.ts +6 -0
  273. package/lib/typescript/src/useIsomorphicLayoutEffect.d.ts.map +1 -0
  274. package/lib/typescript/src/useIsomorphicLayoutEffect.native.d.ts +3 -0
  275. package/lib/typescript/src/useIsomorphicLayoutEffect.native.d.ts.map +1 -0
  276. package/lib/typescript/src/useNavigation.d.ts +4 -1
  277. package/lib/typescript/src/useNavigation.d.ts.map +1 -1
  278. package/lib/typescript/src/useNavigationBuilder.d.ts +99 -63
  279. package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -1
  280. package/lib/typescript/src/useNavigationCache.d.ts +53 -3
  281. package/lib/typescript/src/useNavigationCache.d.ts.map +1 -1
  282. package/lib/typescript/src/useNavigationHelpers.d.ts +25 -55
  283. package/lib/typescript/src/useNavigationHelpers.d.ts.map +1 -1
  284. package/lib/typescript/src/useOnAction.d.ts +1 -1
  285. package/lib/typescript/src/useOnAction.d.ts.map +1 -1
  286. package/lib/typescript/src/useOnGetState.d.ts +1 -1
  287. package/lib/typescript/src/useOnGetState.d.ts.map +1 -1
  288. package/lib/typescript/src/useOnPreventRemove.d.ts +1 -1
  289. package/lib/typescript/src/useOnPreventRemove.d.ts.map +1 -1
  290. package/lib/typescript/src/usePreventRemove.d.ts +1 -1
  291. package/lib/typescript/src/usePreventRemove.d.ts.map +1 -1
  292. package/lib/typescript/src/useRouteCache.d.ts +1 -1
  293. package/lib/typescript/src/useRouteCache.d.ts.map +1 -1
  294. package/lib/typescript/src/useSyncState.d.ts +1 -4
  295. package/lib/typescript/src/useSyncState.d.ts.map +1 -1
  296. package/lib/typescript/src/validatePathConfig.d.ts +1 -1
  297. package/lib/typescript/src/validatePathConfig.d.ts.map +1 -1
  298. package/lib/typescript/utils/usePrevious.d.ts +6 -0
  299. package/lib/typescript/utils/usePrevious.d.ts.map +1 -0
  300. package/package.json +14 -14
  301. package/src/BaseNavigationContainer.tsx +35 -36
  302. package/src/Group.tsx +1 -1
  303. package/src/PreventRemoveProvider.tsx +4 -1
  304. package/src/SceneView.tsx +1 -1
  305. package/src/Screen.tsx +1 -1
  306. package/src/StaticNavigation.tsx +34 -32
  307. package/src/checkDuplicateRouteNames.tsx +1 -1
  308. package/src/createNavigationContainerRef.tsx +1 -1
  309. package/src/createNavigatorFactory.tsx +2 -4
  310. package/src/getActionFromState.tsx +1 -1
  311. package/src/getFocusedRouteNameFromRoute.tsx +3 -3
  312. package/src/getPathFromState.tsx +20 -12
  313. package/src/getStateFromPath.tsx +80 -19
  314. package/src/index.tsx +6 -3
  315. package/src/theming/ThemeContext.tsx +7 -0
  316. package/src/theming/ThemeProvider.tsx +14 -0
  317. package/src/theming/useTheme.tsx +15 -0
  318. package/src/types.tsx +133 -17
  319. package/src/useDescriptors.tsx +153 -59
  320. package/src/useFocusEffect.tsx +1 -0
  321. package/src/useFocusedListenersChildrenAdapter.tsx +2 -2
  322. package/src/useIsomorphicLayoutEffect.native.tsx +3 -0
  323. package/src/useIsomorphicLayoutEffect.tsx +7 -0
  324. package/src/useNavigation.tsx +4 -1
  325. package/src/useNavigationBuilder.tsx +123 -100
  326. package/src/useNavigationCache.tsx +91 -30
  327. package/src/useNavigationContainerRef.tsx +1 -1
  328. package/src/useNavigationHelpers.tsx +6 -7
  329. package/src/useOnAction.tsx +8 -3
  330. package/src/useOnGetState.tsx +1 -1
  331. package/src/useOnPreventRemove.tsx +1 -1
  332. package/src/useOptionsGetters.tsx +2 -2
  333. package/src/usePreventRemove.tsx +1 -1
  334. package/src/useRouteCache.tsx +17 -16
  335. package/src/useSyncState.tsx +31 -59
  336. package/src/validatePathConfig.tsx +58 -14
  337. package/lib/commonjs/fromEntries.js +0 -18
  338. package/lib/commonjs/fromEntries.js.map +0 -1
  339. package/lib/commonjs/useScheduleUpdate.js +0 -37
  340. package/lib/commonjs/useScheduleUpdate.js.map +0 -1
  341. package/lib/module/fromEntries.js +0 -12
  342. package/lib/module/fromEntries.js.map +0 -1
  343. package/lib/module/useScheduleUpdate.js +0 -27
  344. package/lib/module/useScheduleUpdate.js.map +0 -1
  345. package/lib/typescript/src/fromEntries.d.ts +0 -2
  346. package/lib/typescript/src/fromEntries.d.ts.map +0 -1
  347. package/lib/typescript/src/useScheduleUpdate.d.ts +0 -14
  348. package/lib/typescript/src/useScheduleUpdate.d.ts.map +0 -1
  349. package/src/fromEntries.tsx +0 -11
  350. package/src/useScheduleUpdate.tsx +0 -32
@@ -1,17 +1,18 @@
1
1
  import {
2
2
  CommonActions,
3
- DefaultRouterOptions,
4
- NavigationAction,
5
- NavigationState,
6
- ParamListBase,
7
- PartialState,
8
- Route,
9
- Router,
10
- RouterConfigOptions,
11
- RouterFactory,
3
+ type DefaultRouterOptions,
4
+ type NavigationAction,
5
+ type NavigationState,
6
+ type ParamListBase,
7
+ type PartialState,
8
+ type Route,
9
+ type Router,
10
+ type RouterConfigOptions,
11
+ type RouterFactory,
12
12
  } from '@react-navigation/routers';
13
13
  import * as React from 'react';
14
14
  import { isValidElementType } from 'react-is';
15
+ import useLatestCallback from 'use-latest-callback';
15
16
 
16
17
  import { Group } from './Group';
17
18
  import { isArrayEqual } from './isArrayEqual';
@@ -22,47 +23,31 @@ import { NavigationStateContext } from './NavigationStateContext';
22
23
  import { PreventRemoveProvider } from './PreventRemoveProvider';
23
24
  import { Screen } from './Screen';
24
25
  import {
25
- DefaultNavigatorOptions,
26
- EventMapBase,
27
- EventMapCore,
28
- NavigatorScreenParams,
26
+ type DefaultNavigatorOptions,
27
+ type EventMapBase,
28
+ type EventMapCore,
29
+ type NavigatorScreenParams,
29
30
  PrivateValueStore,
30
- RouteConfig,
31
- RouteProp,
31
+ type RouteConfig,
32
32
  } from './types';
33
33
  import { useChildListeners } from './useChildListeners';
34
34
  import { useComponent } from './useComponent';
35
35
  import { useCurrentRender } from './useCurrentRender';
36
- import { ScreenConfigWithParent, useDescriptors } from './useDescriptors';
36
+ import { type ScreenConfigWithParent, useDescriptors } from './useDescriptors';
37
37
  import { useEventEmitter } from './useEventEmitter';
38
38
  import { useFocusedListenersChildrenAdapter } from './useFocusedListenersChildrenAdapter';
39
39
  import { useFocusEvents } from './useFocusEvents';
40
+ import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';
40
41
  import { useKeyedChildListeners } from './useKeyedChildListeners';
41
42
  import { useNavigationHelpers } from './useNavigationHelpers';
42
43
  import { useOnAction } from './useOnAction';
43
44
  import { useOnGetState } from './useOnGetState';
44
45
  import { useOnRouteFocus } from './useOnRouteFocus';
45
46
  import { useRegisterNavigator } from './useRegisterNavigator';
46
- import { useScheduleUpdate } from './useScheduleUpdate';
47
47
 
48
48
  // This is to make TypeScript compiler happy
49
- // eslint-disable-next-line babel/no-unused-expressions
50
49
  PrivateValueStore;
51
50
 
52
- type NavigationBuilderOptions<ScreenOptions extends {}> = {
53
- /**
54
- * Default options specified by the navigator.
55
- * It receives the custom options in the arguments if a function is specified.
56
- */
57
- defaultScreenOptions?:
58
- | ScreenOptions
59
- | ((props: {
60
- route: RouteProp<ParamListBase>;
61
- navigation: any;
62
- options: ScreenOptions;
63
- }) => ScreenOptions);
64
- };
65
-
66
51
  type NavigatorRoute = {
67
52
  key: string;
68
53
  params?: NavigatorScreenParams<ParamListBase>;
@@ -79,7 +64,7 @@ const isValidKey = (key: unknown) =>
79
64
  const getRouteConfigsFromChildren = <
80
65
  State extends NavigationState,
81
66
  ScreenOptions extends {},
82
- EventMap extends EventMapBase
67
+ EventMap extends EventMapBase,
83
68
  >(
84
69
  children: React.ReactNode,
85
70
  groupKey?: string,
@@ -87,7 +72,8 @@ const getRouteConfigsFromChildren = <
87
72
  State,
88
73
  ScreenOptions,
89
74
  EventMap
90
- >['options']
75
+ >['options'],
76
+ groupLayout?: ScreenConfigWithParent<State, ScreenOptions, EventMap>['layout']
91
77
  ) => {
92
78
  const configs = React.Children.toArray(children).reduce<
93
79
  ScreenConfigWithParent<State, ScreenOptions, EventMap>[]
@@ -110,6 +96,7 @@ const getRouteConfigsFromChildren = <
110
96
  acc.push({
111
97
  keys: [groupKey, child.props.navigationKey],
112
98
  options: groupOptions,
99
+ layout: groupLayout,
113
100
  props: child.props as RouteConfig<
114
101
  ParamListBase,
115
102
  string,
@@ -118,6 +105,7 @@ const getRouteConfigsFromChildren = <
118
105
  EventMap
119
106
  >,
120
107
  });
108
+
121
109
  return acc;
122
110
  }
123
111
 
@@ -139,8 +127,9 @@ const getRouteConfigsFromChildren = <
139
127
  child.type !== Group
140
128
  ? groupOptions
141
129
  : groupOptions != null
142
- ? [...groupOptions, child.props.screenOptions]
143
- : [child.props.screenOptions]
130
+ ? [...groupOptions, child.props.screenOptions]
131
+ : [child.props.screenOptions],
132
+ child.props.screenLayout ?? groupLayout
144
133
  )
145
134
  );
146
135
  return acc;
@@ -161,8 +150,8 @@ const getRouteConfigsFromChildren = <
161
150
  : ''
162
151
  }`
163
152
  : typeof child === 'object'
164
- ? JSON.stringify(child)
165
- : `'${String(child)}'`
153
+ ? JSON.stringify(child)
154
+ : `'${String(child)}'`
166
155
  }). To render this component in the navigator, pass it in the 'component' prop to 'Screen'.`
167
156
  );
168
157
  }, []);
@@ -257,7 +246,7 @@ export function useNavigationBuilder<
257
246
  RouterOptions extends DefaultRouterOptions,
258
247
  ActionHelpers extends Record<string, () => void>,
259
248
  ScreenOptions extends {},
260
- EventMap extends Record<string, any>
249
+ EventMap extends Record<string, any>,
261
250
  >(
262
251
  createRouter: RouterFactory<State, any, RouterOptions>,
263
252
  options: DefaultNavigatorOptions<
@@ -266,7 +255,6 @@ export function useNavigationBuilder<
266
255
  ScreenOptions,
267
256
  EventMap
268
257
  > &
269
- NavigationBuilderOptions<ScreenOptions> &
270
258
  RouterOptions
271
259
  ) {
272
260
  const navigatorKey = useRegisterNavigator();
@@ -275,17 +263,17 @@ export function useNavigationBuilder<
275
263
  | NavigatorRoute
276
264
  | undefined;
277
265
 
278
- const { children, screenListeners, ...rest } = options;
266
+ const {
267
+ children,
268
+ layout,
269
+ screenOptions,
270
+ screenLayout,
271
+ screenListeners,
272
+ ...rest
273
+ } = options;
274
+
279
275
  const { current: router } = React.useRef<Router<State, any>>(
280
- createRouter({
281
- ...(rest as unknown as RouterOptions),
282
- ...(route?.params &&
283
- route.params.state == null &&
284
- route.params.initial !== false &&
285
- typeof route.params.screen === 'string'
286
- ? { initialRouteName: route.params.screen }
287
- : null),
288
- })
276
+ createRouter(rest as unknown as RouterOptions)
289
277
  );
290
278
 
291
279
  const routeConfigs = getRouteConfigsFromChildren<
@@ -362,12 +350,7 @@ export function useNavigationBuilder<
362
350
 
363
351
  const stateCleanedUp = React.useRef(false);
364
352
 
365
- const cleanUpState = React.useCallback(() => {
366
- setCurrentState(undefined);
367
- stateCleanedUp.current = true;
368
- }, [setCurrentState]);
369
-
370
- const setState = React.useCallback(
353
+ const setState = useLatestCallback(
371
354
  (state: NavigationState | PartialState<NavigationState> | undefined) => {
372
355
  if (stateCleanedUp.current) {
373
356
  // State might have been already cleaned up due to unmount
@@ -375,9 +358,9 @@ export function useNavigationBuilder<
375
358
  // This would lead to old data preservation on main navigator unmount
376
359
  return;
377
360
  }
361
+
378
362
  setCurrentState(state);
379
- },
380
- [setCurrentState]
363
+ }
381
364
  );
382
365
 
383
366
  const [initializedState, isFirstStateInitialization] = React.useMemo(() => {
@@ -409,7 +392,11 @@ export function useNavigationBuilder<
409
392
  // So we need to rehydrate it to make it usable
410
393
  if (
411
394
  (currentState === undefined || !isStateValid(currentState)) &&
412
- route?.params?.state == null
395
+ route?.params?.state == null &&
396
+ !(
397
+ typeof route?.params?.screen === 'string' &&
398
+ route?.params?.initial !== false
399
+ )
413
400
  ) {
414
401
  return [
415
402
  router.getInitialState({
@@ -420,9 +407,29 @@ export function useNavigationBuilder<
420
407
  true,
421
408
  ];
422
409
  } else {
410
+ let stateFromParams;
411
+
412
+ if (route?.params?.state != null) {
413
+ stateFromParams = route.params.state;
414
+ } else if (
415
+ typeof route?.params?.screen === 'string' &&
416
+ route?.params?.initial !== false
417
+ ) {
418
+ stateFromParams = {
419
+ index: 0,
420
+ routes: [
421
+ {
422
+ name: route.params.screen,
423
+ params: route.params.params,
424
+ path: route.params.path,
425
+ },
426
+ ],
427
+ };
428
+ }
429
+
423
430
  return [
424
431
  router.getRehydratedState(
425
- (route?.params?.state ?? currentState) as PartialState<State>,
432
+ (stateFromParams ?? currentState) as PartialState<State>,
426
433
  {
427
434
  routeNames,
428
435
  routeParamList: initialRouteParamList,
@@ -462,17 +469,26 @@ export function useNavigationBuilder<
462
469
  !isArrayEqual(state.routeNames, routeNames) ||
463
470
  !isRecordEqual(routeKeyList, previousRouteKeyList)
464
471
  ) {
472
+ const navigatorStateForNextRouteNamesChange =
473
+ options.getStateForRouteNamesChange?.(state);
465
474
  // When the list of route names change, the router should handle it to remove invalid routes
466
- nextState = router.getStateForRouteNamesChange(state, {
467
- routeNames,
468
- routeParamList,
469
- routeGetIdList,
470
- routeKeyChanges: Object.keys(routeKeyList).filter(
471
- (name) =>
472
- previousRouteKeyList.hasOwnProperty(name) &&
473
- routeKeyList[name] !== previousRouteKeyList[name]
474
- ),
475
- });
475
+ nextState = navigatorStateForNextRouteNamesChange
476
+ ? // @ts-expect-error this is ok
477
+ router.getRehydratedState(navigatorStateForNextRouteNamesChange, {
478
+ routeNames,
479
+ routeParamList,
480
+ routeGetIdList,
481
+ })
482
+ : router.getStateForRouteNamesChange(state, {
483
+ routeNames,
484
+ routeParamList,
485
+ routeGetIdList,
486
+ routeKeyChanges: Object.keys(routeKeyList).filter(
487
+ (name) =>
488
+ name in previousRouteKeyList &&
489
+ routeKeyList[name] !== previousRouteKeyList[name]
490
+ ),
491
+ });
476
492
  }
477
493
 
478
494
  const previousNestedParamsRef = React.useRef(route?.params);
@@ -527,7 +543,7 @@ export function useNavigationBuilder<
527
543
 
528
544
  const shouldUpdate = state !== nextState;
529
545
 
530
- useScheduleUpdate(() => {
546
+ useIsomorphicLayoutEffect(() => {
531
547
  if (shouldUpdate) {
532
548
  // If the state needs to be updated, we'll schedule an update
533
549
  setState(nextState);
@@ -540,6 +556,10 @@ export function useNavigationBuilder<
540
556
  state = nextState;
541
557
 
542
558
  React.useEffect(() => {
559
+ // In strict mode, React will double-invoke effects.
560
+ // So we need to reset the flag if component was not unmounted
561
+ stateCleanedUp.current = false;
562
+
543
563
  setKey(navigatorKey);
544
564
 
545
565
  if (!getIsInitial()) {
@@ -551,34 +571,24 @@ export function useNavigationBuilder<
551
571
 
552
572
  return () => {
553
573
  // We need to clean up state for this navigator on unmount
554
- // We do it in a timeout because we need to detect if another navigator mounted in the meantime
555
- // For example, if another navigator has started rendering, we should skip cleanup
556
- // Otherwise, our cleanup step will cleanup state for the other navigator and re-initialize it
557
- setTimeout(() => {
558
- if (getCurrentState() !== undefined && getKey() === navigatorKey) {
559
- cleanUpState();
560
- }
561
- }, 0);
574
+ if (getCurrentState() !== undefined && getKey() === navigatorKey) {
575
+ setCurrentState(undefined);
576
+ stateCleanedUp.current = true;
577
+ }
562
578
  };
563
579
  // eslint-disable-next-line react-hooks/exhaustive-deps
564
580
  }, []);
565
581
 
566
- // We initialize this ref here to avoid a new getState getting initialized
567
- // whenever initializedState changes. We want getState to have access to the
568
- // latest initializedState, but don't need it to change when that happens
569
- const initializedStateRef = React.useRef<State>();
570
- initializedStateRef.current = initializedState;
571
-
572
- const getState = React.useCallback((): State => {
573
- const currentState = getCurrentState();
582
+ const getState = useLatestCallback((): State => {
583
+ const currentState = shouldUpdate ? nextState : getCurrentState();
574
584
 
575
- return isStateInitialized(currentState)
576
- ? (currentState as State)
577
- : (initializedStateRef.current as State);
578
- }, [getCurrentState, isStateInitialized]);
585
+ return (
586
+ isStateInitialized(currentState) ? currentState : initializedState
587
+ ) as State;
588
+ });
579
589
 
580
590
  const emitter = useEventEmitter<EventMapCore<State>>((e) => {
581
- let routeNames = [];
591
+ const routeNames = [];
582
592
 
583
593
  let route: Route<string> | undefined;
584
594
 
@@ -685,7 +695,7 @@ export function useNavigationBuilder<
685
695
  getStateListeners: keyedListeners.getState,
686
696
  });
687
697
 
688
- const descriptors = useDescriptors<
698
+ const { describe, descriptors } = useDescriptors<
689
699
  State,
690
700
  ActionHelpers,
691
701
  ScreenOptions,
@@ -694,8 +704,8 @@ export function useNavigationBuilder<
694
704
  state,
695
705
  screens,
696
706
  navigation,
697
- screenOptions: options.screenOptions,
698
- defaultScreenOptions: options.defaultScreenOptions,
707
+ screenOptions,
708
+ screenLayout,
699
709
  onAction,
700
710
  getState,
701
711
  setState,
@@ -713,15 +723,28 @@ export function useNavigationBuilder<
713
723
  descriptors,
714
724
  });
715
725
 
716
- const NavigationContent = useComponent((children: React.ReactNode) => (
717
- <NavigationHelpersContext.Provider value={navigation}>
718
- <PreventRemoveProvider>{children}</PreventRemoveProvider>
719
- </NavigationHelpersContext.Provider>
720
- ));
726
+ const NavigationContent = useComponent((children: React.ReactNode) => {
727
+ const element =
728
+ layout != null
729
+ ? layout({
730
+ state,
731
+ descriptors,
732
+ navigation,
733
+ children,
734
+ })
735
+ : children;
736
+
737
+ return (
738
+ <NavigationHelpersContext.Provider value={navigation}>
739
+ <PreventRemoveProvider>{element}</PreventRemoveProvider>
740
+ </NavigationHelpersContext.Provider>
741
+ );
742
+ });
721
743
 
722
744
  return {
723
745
  state,
724
746
  navigation,
747
+ describe,
725
748
  descriptors,
726
749
  NavigationContent,
727
750
  };
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  CommonActions,
3
- NavigationAction,
4
- NavigationState,
5
- ParamListBase,
6
- Router,
3
+ type NavigationAction,
4
+ type NavigationState,
5
+ type ParamListBase,
6
+ type Router,
7
7
  } from '@react-navigation/routers';
8
8
  import * as React from 'react';
9
9
 
@@ -14,7 +14,7 @@ import type { NavigationEventEmitter } from './useEventEmitter';
14
14
  type Options<
15
15
  State extends NavigationState,
16
16
  ScreenOptions extends {},
17
- EventMap extends Record<string, any>
17
+ EventMap extends Record<string, any>,
18
18
  > = {
19
19
  state: State;
20
20
  getState: () => State;
@@ -29,22 +29,25 @@ type Options<
29
29
  emitter: NavigationEventEmitter<EventMap>;
30
30
  };
31
31
 
32
- type NavigationCache<
32
+ type NavigationItem<
33
33
  State extends NavigationState,
34
34
  ScreenOptions extends {},
35
- EventMap extends Record<string, any>
36
- > = Record<
35
+ EventMap extends Record<string, any>,
36
+ > = NavigationProp<
37
+ ParamListBase,
37
38
  string,
38
- NavigationProp<
39
- ParamListBase,
40
- string,
41
- string | undefined,
42
- State,
43
- ScreenOptions,
44
- EventMap
45
- >
39
+ string | undefined,
40
+ State,
41
+ ScreenOptions,
42
+ EventMap
46
43
  >;
47
44
 
45
+ type NavigationCache<
46
+ State extends NavigationState,
47
+ ScreenOptions extends {},
48
+ EventMap extends Record<string, any>,
49
+ > = Record<string, NavigationItem<State, ScreenOptions, EventMap>>;
50
+
48
51
  /**
49
52
  * Hook to cache navigation objects for each screen in the navigator.
50
53
  * It's important to cache them to make sure navigation objects don't change between renders.
@@ -53,7 +56,8 @@ type NavigationCache<
53
56
  export function useNavigationCache<
54
57
  State extends NavigationState,
55
58
  ScreenOptions extends {},
56
- EventMap extends Record<string, any>
59
+ EventMap extends Record<string, any>,
60
+ ActionHelpers extends Record<string, () => void>,
57
61
  >({
58
62
  state,
59
63
  getState,
@@ -64,20 +68,72 @@ export function useNavigationCache<
64
68
  }: Options<State, ScreenOptions, EventMap>) {
65
69
  const { stackRef } = React.useContext(NavigationBuilderContext);
66
70
 
71
+ const base = React.useMemo((): NavigationItem<
72
+ State,
73
+ ScreenOptions,
74
+ EventMap
75
+ > &
76
+ ActionHelpers => {
77
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
78
+ const { emit, ...rest } = navigation;
79
+
80
+ const actions = {
81
+ ...router.actionCreators,
82
+ ...CommonActions,
83
+ };
84
+
85
+ const dispatch = () => {
86
+ throw new Error(
87
+ 'Actions cannot be dispatched from a placeholder screen.'
88
+ );
89
+ };
90
+
91
+ const helpers = Object.keys(actions).reduce<Record<string, () => void>>(
92
+ (acc, name) => {
93
+ acc[name] = dispatch;
94
+
95
+ return acc;
96
+ },
97
+ {}
98
+ ) as ActionHelpers;
99
+
100
+ return {
101
+ ...rest,
102
+ ...helpers,
103
+ addListener: () => {
104
+ // Event listeners are not supported for placeholder screens
105
+
106
+ return () => {
107
+ // Empty function
108
+ };
109
+ },
110
+ removeListener: () => {
111
+ // Event listeners are not supported for placeholder screens
112
+ },
113
+ dispatch,
114
+ getParent: (id?: string) => {
115
+ if (id !== undefined && id === rest.getId()) {
116
+ return base;
117
+ }
118
+
119
+ return rest.getParent(id);
120
+ },
121
+ setOptions: () => {
122
+ throw new Error('Options cannot be set from a placeholder screen.');
123
+ },
124
+ isFocused: () => false,
125
+ };
126
+ }, [navigation, router.actionCreators]);
127
+
67
128
  // Cache object which holds navigation objects for each screen
68
129
  // We use `React.useMemo` instead of `React.useRef` coz we want to invalidate it when deps change
69
130
  // In reality, these deps will rarely change, if ever
70
131
  const cache = React.useMemo(
71
132
  () => ({ current: {} as NavigationCache<State, ScreenOptions, EventMap> }),
72
133
  // eslint-disable-next-line react-hooks/exhaustive-deps
73
- [getState, navigation, setOptions, router, emitter]
134
+ [base, getState, navigation, setOptions, emitter]
74
135
  );
75
136
 
76
- const actions = {
77
- ...router.actionCreators,
78
- ...CommonActions,
79
- };
80
-
81
137
  cache.current = state.routes.reduce<
82
138
  NavigationCache<State, ScreenOptions, EventMap>
83
139
  >((acc, route) => {
@@ -91,9 +147,6 @@ export function useNavigationCache<
91
147
  // If a cached navigation object already exists, reuse it
92
148
  acc[route.key] = previous;
93
149
  } else {
94
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
95
- const { emit, ...rest } = navigation;
96
-
97
150
  const dispatch = (thunk: Thunk) => {
98
151
  const action = typeof thunk === 'function' ? thunk(getState()) : thunk;
99
152
 
@@ -124,6 +177,11 @@ export function useNavigationCache<
124
177
  }
125
178
  };
126
179
 
180
+ const actions = {
181
+ ...router.actionCreators,
182
+ ...CommonActions,
183
+ };
184
+
127
185
  const helpers = Object.keys(actions).reduce<Record<string, () => void>>(
128
186
  (acc, name) => {
129
187
  acc[name] = (...args: any) =>
@@ -138,19 +196,19 @@ export function useNavigationCache<
138
196
  );
139
197
 
140
198
  acc[route.key] = {
141
- ...rest,
199
+ ...base,
142
200
  ...helpers,
143
201
  // FIXME: too much work to fix the types for now
144
202
  ...(emitter.create(route.key) as any),
145
203
  dispatch: (thunk: Thunk) => withStack(() => dispatch(thunk)),
146
204
  getParent: (id?: string) => {
147
- if (id !== undefined && id === rest.getId()) {
205
+ if (id !== undefined && id === base.getId()) {
148
206
  // If the passed id is the same as the current navigation id,
149
207
  // we return the cached navigation object for the relevant route
150
208
  return acc[route.key];
151
209
  }
152
210
 
153
- return rest.getParent(id);
211
+ return base.getParent(id);
154
212
  },
155
213
  setOptions: (options: object) => {
156
214
  setOptions((o) => ({
@@ -175,5 +233,8 @@ export function useNavigationCache<
175
233
  return acc;
176
234
  }, {});
177
235
 
178
- return cache.current;
236
+ return {
237
+ base,
238
+ navigations: cache.current,
239
+ };
179
240
  }
@@ -4,7 +4,7 @@ import { createNavigationContainerRef } from './createNavigationContainerRef';
4
4
  import type { NavigationContainerRefWithCurrent } from './types';
5
5
 
6
6
  export function useNavigationContainerRef<
7
- ParamList extends {} = ReactNavigation.RootParamList
7
+ ParamList extends {} = ReactNavigation.RootParamList,
8
8
  >(): NavigationContainerRefWithCurrent<ParamList> {
9
9
  const navigation =
10
10
  React.useRef<NavigationContainerRefWithCurrent<ParamList> | null>(null);
@@ -1,19 +1,18 @@
1
1
  import {
2
2
  CommonActions,
3
- NavigationAction,
4
- NavigationState,
5
- ParamListBase,
6
- Router,
3
+ type NavigationAction,
4
+ type NavigationState,
5
+ type ParamListBase,
6
+ type Router,
7
7
  } from '@react-navigation/routers';
8
8
  import * as React from 'react';
9
9
 
10
10
  import { NavigationContext } from './NavigationContext';
11
- import { NavigationHelpers, PrivateValueStore } from './types';
11
+ import { type NavigationHelpers, PrivateValueStore } from './types';
12
12
  import { UnhandledActionContext } from './UnhandledActionContext';
13
13
  import type { NavigationEventEmitter } from './useEventEmitter';
14
14
 
15
15
  // This is to make TypeScript compiler happy
16
- // eslint-disable-next-line babel/no-unused-expressions
17
16
  PrivateValueStore;
18
17
 
19
18
  type Options<State extends NavigationState, Action extends NavigationAction> = {
@@ -32,7 +31,7 @@ export function useNavigationHelpers<
32
31
  State extends NavigationState,
33
32
  ActionHelpers extends Record<string, () => void>,
34
33
  Action extends NavigationAction,
35
- EventMap extends Record<string, any>
34
+ EventMap extends Record<string, any>,
36
35
  >({
37
36
  id: navigatorId,
38
37
  onAction,
@@ -9,8 +9,8 @@ import * as React from 'react';
9
9
 
10
10
  import { DeprecatedNavigationInChildContext } from './DeprecatedNavigationInChildContext';
11
11
  import {
12
- ChildActionListener,
13
- ChildBeforeRemoveListener,
12
+ type ChildActionListener,
13
+ type ChildBeforeRemoveListener,
14
14
  NavigationBuilderContext,
15
15
  } from './NavigationBuilderContext';
16
16
  import type { EventMapCore } from './types';
@@ -131,7 +131,12 @@ export function useOnAction({
131
131
  }
132
132
  }
133
133
 
134
- if (typeof action.target === 'string' || navigationInChildEnabled) {
134
+ if (
135
+ typeof action.target === 'string' ||
136
+ // For backward compatibility
137
+ action.type === 'NAVIGATE_DEPRECATED' ||
138
+ navigationInChildEnabled
139
+ ) {
135
140
  // If the action wasn't handled by current navigator or a parent navigator, let children handle it
136
141
  // Handling this when target isn't specified is deprecated and will be removed in the future
137
142
  for (let i = actionListeners.length - 1; i >= 0; i--) {
@@ -3,7 +3,7 @@ import * as React from 'react';
3
3
 
4
4
  import { isArrayEqual } from './isArrayEqual';
5
5
  import {
6
- GetStateListener,
6
+ type GetStateListener,
7
7
  NavigationBuilderContext,
8
8
  } from './NavigationBuilderContext';
9
9
  import { NavigationRouteContext } from './NavigationRouteContext';