@react-navigation/core 7.0.0-alpha.0 → 7.0.0-alpha.10

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 (486) hide show
  1. package/lib/commonjs/BaseNavigationContainer.js +57 -63
  2. package/lib/commonjs/BaseNavigationContainer.js.map +1 -1
  3. package/lib/commonjs/CurrentRenderContext.js +4 -6
  4. package/lib/commonjs/CurrentRenderContext.js.map +1 -1
  5. package/lib/commonjs/DeprecatedNavigationInChildContext.js +4 -6
  6. package/lib/commonjs/DeprecatedNavigationInChildContext.js.map +1 -1
  7. package/lib/commonjs/EnsureSingleNavigator.js +4 -5
  8. package/lib/commonjs/EnsureSingleNavigator.js.map +1 -1
  9. package/lib/commonjs/Group.js +1 -1
  10. package/lib/commonjs/Group.js.map +1 -1
  11. package/lib/commonjs/NavigationBuilderContext.js +4 -6
  12. package/lib/commonjs/NavigationBuilderContext.js.map +1 -1
  13. package/lib/commonjs/NavigationContainerRefContext.js +4 -6
  14. package/lib/commonjs/NavigationContainerRefContext.js.map +1 -1
  15. package/lib/commonjs/NavigationContext.js +4 -6
  16. package/lib/commonjs/NavigationContext.js.map +1 -1
  17. package/lib/commonjs/NavigationHelpersContext.js +4 -6
  18. package/lib/commonjs/NavigationHelpersContext.js.map +1 -1
  19. package/lib/commonjs/NavigationIndependentTree.js +9 -10
  20. package/lib/commonjs/NavigationIndependentTree.js.map +1 -1
  21. package/lib/commonjs/NavigationIndependentTreeContext.js +4 -6
  22. package/lib/commonjs/NavigationIndependentTreeContext.js.map +1 -1
  23. package/lib/commonjs/NavigationRouteContext.js +4 -6
  24. package/lib/commonjs/NavigationRouteContext.js.map +1 -1
  25. package/lib/commonjs/NavigationStateContext.js +4 -5
  26. package/lib/commonjs/NavigationStateContext.js.map +1 -1
  27. package/lib/commonjs/PreventRemoveContext.js +9 -6
  28. package/lib/commonjs/PreventRemoveContext.js.map +1 -1
  29. package/lib/commonjs/PreventRemoveProvider.js +16 -18
  30. package/lib/commonjs/PreventRemoveProvider.js.map +1 -1
  31. package/lib/commonjs/SceneView.js +10 -11
  32. package/lib/commonjs/SceneView.js.map +1 -1
  33. package/lib/commonjs/Screen.js +1 -1
  34. package/lib/commonjs/Screen.js.map +1 -1
  35. package/lib/commonjs/StaticContainer.js +5 -7
  36. package/lib/commonjs/StaticContainer.js.map +1 -1
  37. package/lib/commonjs/StaticNavigation.js +36 -10
  38. package/lib/commonjs/StaticNavigation.js.map +1 -1
  39. package/lib/commonjs/UnhandledActionContext.js +4 -6
  40. package/lib/commonjs/UnhandledActionContext.js.map +1 -1
  41. package/lib/commonjs/checkDuplicateRouteNames.js +2 -3
  42. package/lib/commonjs/checkDuplicateRouteNames.js.map +1 -1
  43. package/lib/commonjs/checkSerializable.js +1 -1
  44. package/lib/commonjs/checkSerializable.js.map +1 -1
  45. package/lib/commonjs/createNavigationContainerRef.js +2 -3
  46. package/lib/commonjs/createNavigationContainerRef.js.map +1 -1
  47. package/lib/commonjs/createNavigatorFactory.js +7 -11
  48. package/lib/commonjs/createNavigatorFactory.js.map +1 -1
  49. package/lib/commonjs/findFocusedRoute.js +3 -5
  50. package/lib/commonjs/findFocusedRoute.js.map +1 -1
  51. package/lib/commonjs/getActionFromState.js +7 -9
  52. package/lib/commonjs/getActionFromState.js.map +1 -1
  53. package/lib/commonjs/getFocusedRouteNameFromRoute.js +2 -2
  54. package/lib/commonjs/getFocusedRouteNameFromRoute.js.map +1 -1
  55. package/lib/commonjs/getPathFromState.js +24 -25
  56. package/lib/commonjs/getPathFromState.js.map +1 -1
  57. package/lib/commonjs/getStateFromPath.js +29 -22
  58. package/lib/commonjs/getStateFromPath.js.map +1 -1
  59. package/lib/commonjs/index.js +78 -76
  60. package/lib/commonjs/index.js.map +1 -1
  61. package/lib/commonjs/isArrayEqual.js +1 -1
  62. package/lib/commonjs/isArrayEqual.js.map +1 -1
  63. package/lib/commonjs/isRecordEqual.js +1 -1
  64. package/lib/commonjs/isRecordEqual.js.map +1 -1
  65. package/lib/commonjs/theming/ThemeContext.js +12 -0
  66. package/lib/commonjs/theming/ThemeContext.js.map +1 -0
  67. package/lib/commonjs/theming/ThemeProvider.js +20 -0
  68. package/lib/commonjs/theming/ThemeProvider.js.map +1 -0
  69. package/lib/commonjs/theming/useTheme.js +18 -0
  70. package/lib/commonjs/theming/useTheme.js.map +1 -0
  71. package/lib/commonjs/types.js +1 -8
  72. package/lib/commonjs/types.js.map +1 -1
  73. package/lib/commonjs/useChildListeners.js +3 -3
  74. package/lib/commonjs/useChildListeners.js.map +1 -1
  75. package/lib/commonjs/useComponent.js +3 -3
  76. package/lib/commonjs/useComponent.js.map +1 -1
  77. package/lib/commonjs/useCurrentRender.js +5 -6
  78. package/lib/commonjs/useCurrentRender.js.map +1 -1
  79. package/lib/commonjs/useDescriptors.js +92 -41
  80. package/lib/commonjs/useDescriptors.js.map +1 -1
  81. package/lib/commonjs/useEventEmitter.js +6 -7
  82. package/lib/commonjs/useEventEmitter.js.map +1 -1
  83. package/lib/commonjs/useFocusEffect.js +7 -6
  84. package/lib/commonjs/useFocusEffect.js.map +1 -1
  85. package/lib/commonjs/useFocusEvents.js +7 -8
  86. package/lib/commonjs/useFocusEvents.js.map +1 -1
  87. package/lib/commonjs/useFocusedListenersChildrenAdapter.js +6 -7
  88. package/lib/commonjs/useFocusedListenersChildrenAdapter.js.map +1 -1
  89. package/lib/commonjs/useIsFocused.js +8 -8
  90. package/lib/commonjs/useIsFocused.js.map +1 -1
  91. package/lib/commonjs/useIsomorphicLayoutEffect.js +12 -0
  92. package/lib/commonjs/useIsomorphicLayoutEffect.js.map +1 -0
  93. package/lib/commonjs/useIsomorphicLayoutEffect.native.js +9 -0
  94. package/lib/commonjs/useIsomorphicLayoutEffect.native.js.map +1 -0
  95. package/lib/commonjs/useKeyedChildListeners.js +3 -3
  96. package/lib/commonjs/useKeyedChildListeners.js.map +1 -1
  97. package/lib/commonjs/useNavigation.js +7 -8
  98. package/lib/commonjs/useNavigation.js.map +1 -1
  99. package/lib/commonjs/useNavigationBuilder.js +115 -106
  100. package/lib/commonjs/useNavigationBuilder.js.map +1 -1
  101. package/lib/commonjs/useNavigationCache.js +60 -20
  102. package/lib/commonjs/useNavigationCache.js.map +1 -1
  103. package/lib/commonjs/useNavigationContainerRef.js +5 -6
  104. package/lib/commonjs/useNavigationContainerRef.js.map +1 -1
  105. package/lib/commonjs/useNavigationHelpers.js +9 -11
  106. package/lib/commonjs/useNavigationHelpers.js.map +1 -1
  107. package/lib/commonjs/useNavigationIndependentTree.js +5 -6
  108. package/lib/commonjs/useNavigationIndependentTree.js.map +1 -1
  109. package/lib/commonjs/useNavigationState.js +5 -6
  110. package/lib/commonjs/useNavigationState.js.map +1 -1
  111. package/lib/commonjs/useOnAction.js +13 -12
  112. package/lib/commonjs/useOnAction.js.map +1 -1
  113. package/lib/commonjs/useOnGetState.js +11 -13
  114. package/lib/commonjs/useOnGetState.js.map +1 -1
  115. package/lib/commonjs/useOnPreventRemove.js +10 -12
  116. package/lib/commonjs/useOnPreventRemove.js.map +1 -1
  117. package/lib/commonjs/useOnRouteFocus.js +5 -6
  118. package/lib/commonjs/useOnRouteFocus.js.map +1 -1
  119. package/lib/commonjs/useOptionsGetters.js +14 -16
  120. package/lib/commonjs/useOptionsGetters.js.map +1 -1
  121. package/lib/commonjs/usePreventRemove.js +10 -10
  122. package/lib/commonjs/usePreventRemove.js.map +1 -1
  123. package/lib/commonjs/usePreventRemoveContext.js +5 -6
  124. package/lib/commonjs/usePreventRemoveContext.js.map +1 -1
  125. package/lib/commonjs/useRegisterNavigator.js +3 -3
  126. package/lib/commonjs/useRegisterNavigator.js.map +1 -1
  127. package/lib/commonjs/useRoute.js +5 -6
  128. package/lib/commonjs/useRoute.js.map +1 -1
  129. package/lib/commonjs/useRouteCache.js +20 -17
  130. package/lib/commonjs/useRouteCache.js.map +1 -1
  131. package/lib/commonjs/useSyncState.js +28 -57
  132. package/lib/commonjs/useSyncState.js.map +1 -1
  133. package/lib/commonjs/validatePathConfig.js +38 -11
  134. package/lib/commonjs/validatePathConfig.js.map +1 -1
  135. package/lib/module/BaseNavigationContainer.js +39 -44
  136. package/lib/module/BaseNavigationContainer.js.map +1 -1
  137. package/lib/module/CurrentRenderContext.js +1 -2
  138. package/lib/module/CurrentRenderContext.js.map +1 -1
  139. package/lib/module/DeprecatedNavigationInChildContext.js +1 -2
  140. package/lib/module/DeprecatedNavigationInChildContext.js.map +1 -1
  141. package/lib/module/EnsureSingleNavigator.js +1 -1
  142. package/lib/module/EnsureSingleNavigator.js.map +1 -1
  143. package/lib/module/Group.js +1 -1
  144. package/lib/module/Group.js.map +1 -1
  145. package/lib/module/NavigationBuilderContext.js +1 -2
  146. package/lib/module/NavigationBuilderContext.js.map +1 -1
  147. package/lib/module/NavigationContainerRefContext.js +1 -2
  148. package/lib/module/NavigationContainerRefContext.js.map +1 -1
  149. package/lib/module/NavigationContext.js +1 -2
  150. package/lib/module/NavigationContext.js.map +1 -1
  151. package/lib/module/NavigationHelpersContext.js +1 -2
  152. package/lib/module/NavigationHelpersContext.js.map +1 -1
  153. package/lib/module/NavigationIndependentTree.js +4 -4
  154. package/lib/module/NavigationIndependentTree.js.map +1 -1
  155. package/lib/module/NavigationIndependentTreeContext.js +1 -2
  156. package/lib/module/NavigationIndependentTreeContext.js.map +1 -1
  157. package/lib/module/NavigationRouteContext.js +1 -2
  158. package/lib/module/NavigationRouteContext.js.map +1 -1
  159. package/lib/module/NavigationStateContext.js +1 -1
  160. package/lib/module/NavigationStateContext.js.map +1 -1
  161. package/lib/module/PreventRemoveContext.js +1 -2
  162. package/lib/module/PreventRemoveContext.js.map +1 -1
  163. package/lib/module/PreventRemoveProvider.js +10 -12
  164. package/lib/module/PreventRemoveProvider.js.map +1 -1
  165. package/lib/module/SceneView.js +5 -5
  166. package/lib/module/SceneView.js.map +1 -1
  167. package/lib/module/Screen.js +1 -1
  168. package/lib/module/Screen.js.map +1 -1
  169. package/lib/module/StaticContainer.js +2 -3
  170. package/lib/module/StaticContainer.js.map +1 -1
  171. package/lib/module/StaticNavigation.js +28 -6
  172. package/lib/module/StaticNavigation.js.map +1 -1
  173. package/lib/module/UnhandledActionContext.js +1 -2
  174. package/lib/module/UnhandledActionContext.js.map +1 -1
  175. package/lib/module/checkDuplicateRouteNames.js +2 -3
  176. package/lib/module/checkDuplicateRouteNames.js.map +1 -1
  177. package/lib/module/checkSerializable.js +1 -1
  178. package/lib/module/checkSerializable.js.map +1 -1
  179. package/lib/module/createNavigationContainerRef.js +1 -1
  180. package/lib/module/createNavigationContainerRef.js.map +1 -1
  181. package/lib/module/createNavigatorFactory.js +3 -6
  182. package/lib/module/createNavigatorFactory.js.map +1 -1
  183. package/lib/module/findFocusedRoute.js +3 -5
  184. package/lib/module/findFocusedRoute.js.map +1 -1
  185. package/lib/module/getActionFromState.js +7 -9
  186. package/lib/module/getActionFromState.js.map +1 -1
  187. package/lib/module/getFocusedRouteNameFromRoute.js +2 -2
  188. package/lib/module/getFocusedRouteNameFromRoute.js.map +1 -1
  189. package/lib/module/getPathFromState.js +21 -21
  190. package/lib/module/getPathFromState.js.map +1 -1
  191. package/lib/module/getStateFromPath.js +25 -18
  192. package/lib/module/getStateFromPath.js.map +1 -1
  193. package/lib/module/index.js +31 -28
  194. package/lib/module/index.js.map +1 -1
  195. package/lib/module/isArrayEqual.js +1 -1
  196. package/lib/module/isArrayEqual.js.map +1 -1
  197. package/lib/module/isRecordEqual.js +1 -1
  198. package/lib/module/isRecordEqual.js.map +1 -1
  199. package/lib/module/theming/ThemeContext.js +4 -0
  200. package/lib/module/theming/ThemeContext.js.map +1 -0
  201. package/lib/module/theming/ThemeProvider.js +12 -0
  202. package/lib/module/theming/ThemeProvider.js.map +1 -0
  203. package/lib/module/theming/useTheme.js +10 -0
  204. package/lib/module/theming/useTheme.js.map +1 -0
  205. package/lib/module/types.js +1 -8
  206. package/lib/module/types.js.map +1 -1
  207. package/lib/module/useChildListeners.js +1 -1
  208. package/lib/module/useChildListeners.js.map +1 -1
  209. package/lib/module/useComponent.js +1 -1
  210. package/lib/module/useComponent.js.map +1 -1
  211. package/lib/module/useCurrentRender.js +2 -2
  212. package/lib/module/useCurrentRender.js.map +1 -1
  213. package/lib/module/useDescriptors.js +88 -36
  214. package/lib/module/useDescriptors.js.map +1 -1
  215. package/lib/module/useEventEmitter.js +4 -5
  216. package/lib/module/useEventEmitter.js.map +1 -1
  217. package/lib/module/useFocusEffect.js +4 -2
  218. package/lib/module/useFocusEffect.js.map +1 -1
  219. package/lib/module/useFocusEvents.js +4 -4
  220. package/lib/module/useFocusEvents.js.map +1 -1
  221. package/lib/module/useFocusedListenersChildrenAdapter.js +3 -3
  222. package/lib/module/useFocusedListenersChildrenAdapter.js.map +1 -1
  223. package/lib/module/useIsFocused.js +2 -2
  224. package/lib/module/useIsFocused.js.map +1 -1
  225. package/lib/module/useIsomorphicLayoutEffect.js +7 -0
  226. package/lib/module/useIsomorphicLayoutEffect.js.map +1 -0
  227. package/lib/module/useIsomorphicLayoutEffect.native.js +3 -0
  228. package/lib/module/useIsomorphicLayoutEffect.native.js.map +1 -0
  229. package/lib/module/useKeyedChildListeners.js +1 -1
  230. package/lib/module/useKeyedChildListeners.js.map +1 -1
  231. package/lib/module/useNavigation.js +3 -3
  232. package/lib/module/useNavigation.js.map +1 -1
  233. package/lib/module/useNavigationBuilder.js +97 -88
  234. package/lib/module/useNavigationBuilder.js.map +1 -1
  235. package/lib/module/useNavigationCache.js +57 -16
  236. package/lib/module/useNavigationCache.js.map +1 -1
  237. package/lib/module/useNavigationContainerRef.js +2 -2
  238. package/lib/module/useNavigationContainerRef.js.map +1 -1
  239. package/lib/module/useNavigationHelpers.js +5 -6
  240. package/lib/module/useNavigationHelpers.js.map +1 -1
  241. package/lib/module/useNavigationIndependentTree.js +2 -2
  242. package/lib/module/useNavigationIndependentTree.js.map +1 -1
  243. package/lib/module/useNavigationState.js +2 -2
  244. package/lib/module/useNavigationState.js.map +1 -1
  245. package/lib/module/useOnAction.js +8 -6
  246. package/lib/module/useOnAction.js.map +1 -1
  247. package/lib/module/useOnGetState.js +6 -7
  248. package/lib/module/useOnGetState.js.map +1 -1
  249. package/lib/module/useOnPreventRemove.js +6 -7
  250. package/lib/module/useOnPreventRemove.js.map +1 -1
  251. package/lib/module/useOnRouteFocus.js +2 -2
  252. package/lib/module/useOnRouteFocus.js.map +1 -1
  253. package/lib/module/useOptionsGetters.js +10 -11
  254. package/lib/module/useOptionsGetters.js.map +1 -1
  255. package/lib/module/usePreventRemove.js +5 -5
  256. package/lib/module/usePreventRemove.js.map +1 -1
  257. package/lib/module/usePreventRemoveContext.js +2 -2
  258. package/lib/module/usePreventRemoveContext.js.map +1 -1
  259. package/lib/module/useRegisterNavigator.js +1 -1
  260. package/lib/module/useRegisterNavigator.js.map +1 -1
  261. package/lib/module/useRoute.js +2 -2
  262. package/lib/module/useRoute.js.map +1 -1
  263. package/lib/module/useRouteCache.js +17 -13
  264. package/lib/module/useRouteCache.js.map +1 -1
  265. package/lib/module/useSyncState.js +25 -54
  266. package/lib/module/useSyncState.js.map +1 -1
  267. package/lib/module/validatePathConfig.js +38 -11
  268. package/lib/module/validatePathConfig.js.map +1 -1
  269. package/lib/typescript/src/BaseNavigationContainer.d.ts +3 -3
  270. package/lib/typescript/src/BaseNavigationContainer.d.ts.map +1 -1
  271. package/lib/typescript/src/CurrentRenderContext.d.ts +1 -2
  272. package/lib/typescript/src/CurrentRenderContext.d.ts.map +1 -1
  273. package/lib/typescript/src/DeprecatedNavigationInChildContext.d.ts +1 -2
  274. package/lib/typescript/src/DeprecatedNavigationInChildContext.d.ts.map +1 -1
  275. package/lib/typescript/src/EnsureSingleNavigator.d.ts +1 -1
  276. package/lib/typescript/src/EnsureSingleNavigator.d.ts.map +1 -1
  277. package/lib/typescript/src/Group.d.ts +1 -1
  278. package/lib/typescript/src/Group.d.ts.map +1 -1
  279. package/lib/typescript/src/NavigationBuilderContext.d.ts +1 -2
  280. package/lib/typescript/src/NavigationBuilderContext.d.ts.map +1 -1
  281. package/lib/typescript/src/NavigationContainerRefContext.d.ts +1 -2
  282. package/lib/typescript/src/NavigationContainerRefContext.d.ts.map +1 -1
  283. package/lib/typescript/src/NavigationContext.d.ts +1 -18
  284. package/lib/typescript/src/NavigationContext.d.ts.map +1 -1
  285. package/lib/typescript/src/NavigationHelpersContext.d.ts +1 -2
  286. package/lib/typescript/src/NavigationHelpersContext.d.ts.map +1 -1
  287. package/lib/typescript/src/NavigationIndependentTree.d.ts +2 -2
  288. package/lib/typescript/src/NavigationIndependentTree.d.ts.map +1 -1
  289. package/lib/typescript/src/NavigationIndependentTreeContext.d.ts +1 -2
  290. package/lib/typescript/src/NavigationIndependentTreeContext.d.ts.map +1 -1
  291. package/lib/typescript/src/NavigationRouteContext.d.ts +1 -2
  292. package/lib/typescript/src/NavigationRouteContext.d.ts.map +1 -1
  293. package/lib/typescript/src/NavigationStateContext.d.ts +3 -20
  294. package/lib/typescript/src/NavigationStateContext.d.ts.map +1 -1
  295. package/lib/typescript/src/PreventRemoveContext.d.ts +1 -2
  296. package/lib/typescript/src/PreventRemoveContext.d.ts.map +1 -1
  297. package/lib/typescript/src/PreventRemoveProvider.d.ts +1 -1
  298. package/lib/typescript/src/PreventRemoveProvider.d.ts.map +1 -1
  299. package/lib/typescript/src/SceneView.d.ts +2 -2
  300. package/lib/typescript/src/SceneView.d.ts.map +1 -1
  301. package/lib/typescript/src/Screen.d.ts +1 -1
  302. package/lib/typescript/src/Screen.d.ts.map +1 -1
  303. package/lib/typescript/src/StaticContainer.d.ts +1 -3
  304. package/lib/typescript/src/StaticContainer.d.ts.map +1 -1
  305. package/lib/typescript/src/StaticNavigation.d.ts +12 -5
  306. package/lib/typescript/src/StaticNavigation.d.ts.map +1 -1
  307. package/lib/typescript/src/UnhandledActionContext.d.ts +1 -2
  308. package/lib/typescript/src/UnhandledActionContext.d.ts.map +1 -1
  309. package/lib/typescript/src/checkDuplicateRouteNames.d.ts +1 -1
  310. package/lib/typescript/src/checkDuplicateRouteNames.d.ts.map +1 -1
  311. package/lib/typescript/src/checkSerializable.d.ts +1 -1
  312. package/lib/typescript/src/checkSerializable.d.ts.map +1 -1
  313. package/lib/typescript/src/createNavigationContainerRef.d.ts +1 -1
  314. package/lib/typescript/src/createNavigationContainerRef.d.ts.map +1 -1
  315. package/lib/typescript/src/createNavigatorFactory.d.ts +1 -1
  316. package/lib/typescript/src/createNavigatorFactory.d.ts.map +1 -1
  317. package/lib/typescript/src/findFocusedRoute.d.ts +2 -10
  318. package/lib/typescript/src/findFocusedRoute.d.ts.map +1 -1
  319. package/lib/typescript/src/getActionFromState.d.ts +1 -1
  320. package/lib/typescript/src/getActionFromState.d.ts.map +1 -1
  321. package/lib/typescript/src/getFocusedRouteNameFromRoute.d.ts +1 -1
  322. package/lib/typescript/src/getFocusedRouteNameFromRoute.d.ts.map +1 -1
  323. package/lib/typescript/src/getPathFromState.d.ts +2 -1
  324. package/lib/typescript/src/getPathFromState.d.ts.map +1 -1
  325. package/lib/typescript/src/getStateFromPath.d.ts +2 -1
  326. package/lib/typescript/src/getStateFromPath.d.ts.map +1 -1
  327. package/lib/typescript/src/index.d.ts +31 -28
  328. package/lib/typescript/src/index.d.ts.map +1 -1
  329. package/lib/typescript/src/isArrayEqual.d.ts +1 -1
  330. package/lib/typescript/src/isArrayEqual.d.ts.map +1 -1
  331. package/lib/typescript/src/isRecordEqual.d.ts +1 -1
  332. package/lib/typescript/src/isRecordEqual.d.ts.map +1 -1
  333. package/lib/typescript/src/theming/ThemeContext.d.ts +3 -0
  334. package/lib/typescript/src/theming/ThemeContext.d.ts.map +1 -0
  335. package/lib/typescript/src/theming/ThemeProvider.d.ts +8 -0
  336. package/lib/typescript/src/theming/ThemeProvider.d.ts.map +1 -0
  337. package/lib/typescript/src/theming/useTheme.d.ts +2 -0
  338. package/lib/typescript/src/theming/useTheme.d.ts.map +1 -0
  339. package/lib/typescript/src/types.d.ts +80 -1
  340. package/lib/typescript/src/types.d.ts.map +1 -1
  341. package/lib/typescript/src/useChildListeners.d.ts +1 -1
  342. package/lib/typescript/src/useChildListeners.d.ts.map +1 -1
  343. package/lib/typescript/src/useComponent.d.ts +2 -2
  344. package/lib/typescript/src/useComponent.d.ts.map +1 -1
  345. package/lib/typescript/src/useCurrentRender.d.ts +1 -1
  346. package/lib/typescript/src/useCurrentRender.d.ts.map +1 -1
  347. package/lib/typescript/src/useDescriptors.d.ts +107 -59
  348. package/lib/typescript/src/useDescriptors.d.ts.map +1 -1
  349. package/lib/typescript/src/useEventEmitter.d.ts +1 -1
  350. package/lib/typescript/src/useEventEmitter.d.ts.map +1 -1
  351. package/lib/typescript/src/useFocusEffect.d.ts +1 -1
  352. package/lib/typescript/src/useFocusEffect.d.ts.map +1 -1
  353. package/lib/typescript/src/useFocusEvents.d.ts +1 -1
  354. package/lib/typescript/src/useFocusEvents.d.ts.map +1 -1
  355. package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts +2 -2
  356. package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts.map +1 -1
  357. package/lib/typescript/src/useIsFocused.d.ts +1 -1
  358. package/lib/typescript/src/useIsFocused.d.ts.map +1 -1
  359. package/lib/typescript/src/useIsomorphicLayoutEffect.d.ts +6 -0
  360. package/lib/typescript/src/useIsomorphicLayoutEffect.d.ts.map +1 -0
  361. package/lib/typescript/src/useIsomorphicLayoutEffect.native.d.ts +3 -0
  362. package/lib/typescript/src/useIsomorphicLayoutEffect.native.d.ts.map +1 -0
  363. package/lib/typescript/src/useKeyedChildListeners.d.ts +1 -1
  364. package/lib/typescript/src/useKeyedChildListeners.d.ts.map +1 -1
  365. package/lib/typescript/src/useNavigation.d.ts +4 -1
  366. package/lib/typescript/src/useNavigation.d.ts.map +1 -1
  367. package/lib/typescript/src/useNavigationBuilder.d.ts +99 -63
  368. package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -1
  369. package/lib/typescript/src/useNavigationCache.d.ts +53 -3
  370. package/lib/typescript/src/useNavigationCache.d.ts.map +1 -1
  371. package/lib/typescript/src/useNavigationContainerRef.d.ts +1 -1
  372. package/lib/typescript/src/useNavigationContainerRef.d.ts.map +1 -1
  373. package/lib/typescript/src/useNavigationHelpers.d.ts +26 -40
  374. package/lib/typescript/src/useNavigationHelpers.d.ts.map +1 -1
  375. package/lib/typescript/src/useNavigationIndependentTree.d.ts +1 -1
  376. package/lib/typescript/src/useNavigationIndependentTree.d.ts.map +1 -1
  377. package/lib/typescript/src/useNavigationState.d.ts +1 -1
  378. package/lib/typescript/src/useNavigationState.d.ts.map +1 -1
  379. package/lib/typescript/src/useOnAction.d.ts +2 -2
  380. package/lib/typescript/src/useOnAction.d.ts.map +1 -1
  381. package/lib/typescript/src/useOnGetState.d.ts +2 -2
  382. package/lib/typescript/src/useOnGetState.d.ts.map +1 -1
  383. package/lib/typescript/src/useOnPreventRemove.d.ts +2 -2
  384. package/lib/typescript/src/useOnPreventRemove.d.ts.map +1 -1
  385. package/lib/typescript/src/useOnRouteFocus.d.ts +1 -1
  386. package/lib/typescript/src/useOnRouteFocus.d.ts.map +1 -1
  387. package/lib/typescript/src/useOptionsGetters.d.ts +1 -1
  388. package/lib/typescript/src/useOptionsGetters.d.ts.map +1 -1
  389. package/lib/typescript/src/usePreventRemove.d.ts +1 -1
  390. package/lib/typescript/src/usePreventRemove.d.ts.map +1 -1
  391. package/lib/typescript/src/usePreventRemoveContext.d.ts +1 -1
  392. package/lib/typescript/src/usePreventRemoveContext.d.ts.map +1 -1
  393. package/lib/typescript/src/useRegisterNavigator.d.ts +1 -1
  394. package/lib/typescript/src/useRegisterNavigator.d.ts.map +1 -1
  395. package/lib/typescript/src/useRoute.d.ts +1 -1
  396. package/lib/typescript/src/useRoute.d.ts.map +1 -1
  397. package/lib/typescript/src/useRouteCache.d.ts +1 -1
  398. package/lib/typescript/src/useRouteCache.d.ts.map +1 -1
  399. package/lib/typescript/src/useSyncState.d.ts +1 -4
  400. package/lib/typescript/src/useSyncState.d.ts.map +1 -1
  401. package/lib/typescript/src/validatePathConfig.d.ts +1 -1
  402. package/lib/typescript/src/validatePathConfig.d.ts.map +1 -1
  403. package/lib/typescript/utils/usePrevious.d.ts +6 -0
  404. package/lib/typescript/utils/usePrevious.d.ts.map +1 -0
  405. package/package.json +14 -14
  406. package/src/BaseNavigationContainer.tsx +52 -55
  407. package/src/CurrentRenderContext.tsx +1 -3
  408. package/src/DeprecatedNavigationInChildContext.tsx +1 -3
  409. package/src/EnsureSingleNavigator.tsx +1 -1
  410. package/src/Group.tsx +2 -2
  411. package/src/NavigationBuilderContext.tsx +1 -3
  412. package/src/NavigationContainerRefContext.tsx +1 -3
  413. package/src/NavigationContext.tsx +1 -3
  414. package/src/NavigationHelpersContext.tsx +1 -3
  415. package/src/NavigationIndependentTree.tsx +4 -4
  416. package/src/NavigationIndependentTreeContext.tsx +1 -3
  417. package/src/NavigationRouteContext.tsx +3 -5
  418. package/src/NavigationStateContext.tsx +1 -1
  419. package/src/PreventRemoveContext.tsx +1 -3
  420. package/src/PreventRemoveProvider.tsx +7 -4
  421. package/src/SceneView.tsx +6 -6
  422. package/src/Screen.tsx +2 -2
  423. package/src/StaticContainer.tsx +19 -18
  424. package/src/StaticNavigation.tsx +35 -33
  425. package/src/UnhandledActionContext.tsx +1 -3
  426. package/src/checkDuplicateRouteNames.tsx +2 -2
  427. package/src/checkSerializable.tsx +1 -1
  428. package/src/createNavigationContainerRef.tsx +2 -2
  429. package/src/createNavigatorFactory.tsx +5 -7
  430. package/src/findFocusedRoute.tsx +1 -1
  431. package/src/getActionFromState.tsx +2 -2
  432. package/src/getFocusedRouteNameFromRoute.tsx +4 -4
  433. package/src/getPathFromState.tsx +16 -13
  434. package/src/getStateFromPath.tsx +25 -6
  435. package/src/index.tsx +33 -30
  436. package/src/isArrayEqual.tsx +1 -1
  437. package/src/isRecordEqual.tsx +1 -4
  438. package/src/theming/ThemeContext.tsx +7 -0
  439. package/src/theming/ThemeProvider.tsx +14 -0
  440. package/src/theming/useTheme.tsx +15 -0
  441. package/src/types.tsx +133 -17
  442. package/src/useChildListeners.tsx +1 -1
  443. package/src/useComponent.tsx +1 -1
  444. package/src/useCurrentRender.tsx +2 -6
  445. package/src/useDescriptors.tsx +161 -66
  446. package/src/useEventEmitter.tsx +1 -1
  447. package/src/useFocusEffect.tsx +3 -2
  448. package/src/useFocusEvents.tsx +2 -2
  449. package/src/useFocusedListenersChildrenAdapter.tsx +5 -4
  450. package/src/useIsFocused.tsx +2 -2
  451. package/src/useIsomorphicLayoutEffect.native.tsx +3 -0
  452. package/src/useIsomorphicLayoutEffect.tsx +7 -0
  453. package/src/useKeyedChildListeners.tsx +1 -1
  454. package/src/useNavigation.tsx +7 -4
  455. package/src/useNavigationBuilder.tsx +141 -122
  456. package/src/useNavigationCache.tsx +93 -32
  457. package/src/useNavigationContainerRef.tsx +3 -3
  458. package/src/useNavigationHelpers.tsx +9 -10
  459. package/src/useNavigationIndependentTree.tsx +2 -2
  460. package/src/useNavigationState.tsx +2 -2
  461. package/src/useOnAction.tsx +13 -7
  462. package/src/useOnGetState.tsx +6 -8
  463. package/src/useOnPreventRemove.tsx +5 -4
  464. package/src/useOnRouteFocus.tsx +2 -2
  465. package/src/useOptionsGetters.tsx +5 -9
  466. package/src/usePreventRemove.tsx +4 -4
  467. package/src/usePreventRemoveContext.tsx +2 -2
  468. package/src/useRegisterNavigator.tsx +1 -1
  469. package/src/useRoute.tsx +2 -2
  470. package/src/useRouteCache.tsx +18 -17
  471. package/src/useSyncState.tsx +31 -59
  472. package/src/validatePathConfig.tsx +58 -14
  473. package/lib/commonjs/fromEntries.js +0 -18
  474. package/lib/commonjs/fromEntries.js.map +0 -1
  475. package/lib/commonjs/useScheduleUpdate.js +0 -37
  476. package/lib/commonjs/useScheduleUpdate.js.map +0 -1
  477. package/lib/module/fromEntries.js +0 -12
  478. package/lib/module/fromEntries.js.map +0 -1
  479. package/lib/module/useScheduleUpdate.js +0 -27
  480. package/lib/module/useScheduleUpdate.js.map +0 -1
  481. package/lib/typescript/src/fromEntries.d.ts +0 -2
  482. package/lib/typescript/src/fromEntries.d.ts.map +0 -1
  483. package/lib/typescript/src/useScheduleUpdate.d.ts +0 -14
  484. package/lib/typescript/src/useScheduleUpdate.d.ts.map +0 -1
  485. package/src/fromEntries.tsx +0 -13
  486. package/src/useScheduleUpdate.tsx +0 -32
@@ -1,13 +1,13 @@
1
1
  import type { NavigationState, PartialState } from '@react-navigation/routers';
2
2
 
3
- export default function checkDuplicateRouteNames(state: NavigationState) {
3
+ export function checkDuplicateRouteNames(state: NavigationState) {
4
4
  const duplicates: string[][] = [];
5
5
 
6
6
  const getRouteNames = (
7
7
  location: string,
8
8
  state: NavigationState | PartialState<NavigationState>
9
9
  ) => {
10
- state.routes.forEach((route: typeof state.routes[0]) => {
10
+ state.routes.forEach((route: (typeof state.routes)[0]) => {
11
11
  const currentLocation = location
12
12
  ? `${location} > ${route.name}`
13
13
  : route.name;
@@ -69,6 +69,6 @@ const checkSerializableWithoutCircularReference = (
69
69
  return { serializable: true };
70
70
  };
71
71
 
72
- export default function checkSerializable(o: { [key: string]: any }) {
72
+ export function checkSerializable(o: { [key: string]: any }) {
73
73
  return checkSerializableWithoutCircularReference(o, new Set<any>(), []);
74
74
  }
@@ -9,8 +9,8 @@ import type {
9
9
  export const NOT_INITIALIZED_ERROR =
10
10
  "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.";
11
11
 
12
- export default function createNavigationContainerRef<
13
- ParamList extends {} = ReactNavigation.RootParamList
12
+ export function createNavigationContainerRef<
13
+ ParamList extends {} = ReactNavigation.RootParamList,
14
14
  >(): NavigationContainerRefWithCurrent<ParamList> {
15
15
  const methods = [
16
16
  ...Object.keys(CommonActions),
@@ -1,8 +1,8 @@
1
1
  import type { NavigationState, ParamListBase } from '@react-navigation/routers';
2
2
  import type * as React from 'react';
3
3
 
4
- import Group from './Group';
5
- import Screen from './Screen';
4
+ import { Group } from './Group';
5
+ import { Screen } from './Screen';
6
6
  import type { StaticConfig } from './StaticNavigation';
7
7
  import type { EventMapBase, TypedNavigator } from './types';
8
8
 
@@ -13,11 +13,11 @@ import type { EventMapBase, TypedNavigator } from './types';
13
13
  * @param Navigator The navigator component to wrap.
14
14
  * @returns Factory method to create a `Navigator` and `Screen` pair.
15
15
  */
16
- export default function createNavigatorFactory<
16
+ export function createNavigatorFactory<
17
17
  State extends NavigationState,
18
18
  ScreenOptions extends {},
19
19
  EventMap extends EventMapBase,
20
- NavigatorComponent extends React.ComponentType<any>
20
+ NavigatorComponent extends React.ComponentType<any>,
21
21
  >(Navigator: NavigatorComponent) {
22
22
  function createNavigator<ParamList extends ParamListBase>(): TypedNavigator<
23
23
  ParamList,
@@ -27,7 +27,6 @@ export default function createNavigatorFactory<
27
27
  typeof Navigator
28
28
  >;
29
29
 
30
- // eslint-disable-next-line no-redeclare
31
30
  function createNavigator<
32
31
  ParamList extends ParamListBase,
33
32
  Config extends StaticConfig<
@@ -36,7 +35,7 @@ export default function createNavigatorFactory<
36
35
  ScreenOptions,
37
36
  EventMap,
38
37
  typeof Navigator
39
- >
38
+ >,
40
39
  >(
41
40
  config: Config
42
41
  ): TypedNavigator<
@@ -47,7 +46,6 @@ export default function createNavigatorFactory<
47
46
  typeof Navigator
48
47
  > & { config: Config };
49
48
 
50
- // eslint-disable-next-line no-redeclare
51
49
  function createNavigator(config?: any): any {
52
50
  if (config != null) {
53
51
  return {
@@ -1,6 +1,6 @@
1
1
  import type { InitialState } from '@react-navigation/routers';
2
2
 
3
- export default function findFocusedRoute(state: InitialState) {
3
+ export function findFocusedRoute(state: InitialState) {
4
4
  let current: InitialState | undefined = state;
5
5
 
6
6
  while (current?.routes[current.index ?? 0].state != null) {
@@ -28,7 +28,7 @@ type NavigateAction<State extends NavigationState> = {
28
28
  };
29
29
  };
30
30
 
31
- export default function getActionFromState(
31
+ export function getActionFromState(
32
32
  state: PartialState<NavigationState>,
33
33
  options?: Options
34
34
  ): NavigateAction<NavigationState> | CommonActions.Action | undefined {
@@ -65,7 +65,7 @@ export default function getActionFromState(
65
65
  let config: ConfigItem | undefined = normalizedConfig?.screens?.[route?.name];
66
66
  let params = { ...route.params } as NavigatorScreenParams<ParamListBase>;
67
67
 
68
- let payload = route
68
+ const payload = route
69
69
  ? { name: route.name, path: route.path, params }
70
70
  : undefined;
71
71
 
@@ -2,7 +2,7 @@ import type { Route } from '@react-navigation/routers';
2
2
 
3
3
  import { CHILD_STATE } from './useRouteCache';
4
4
 
5
- export default function getFocusedRouteNameFromRoute(
5
+ export function getFocusedRouteNameFromRoute(
6
6
  route: Partial<Route<string>>
7
7
  ): string | undefined {
8
8
  // @ts-expect-error: this isn't in type definitions coz we want this private
@@ -20,9 +20,9 @@ export default function getFocusedRouteNameFromRoute(
20
20
  : state.routes.length - 1)
21
21
  ].name
22
22
  : // If state doesn't exist, we need to default to `screen` param if available
23
- typeof params?.screen === 'string'
24
- ? params.screen
25
- : undefined;
23
+ typeof params?.screen === 'string'
24
+ ? params.screen
25
+ : undefined;
26
26
 
27
27
  return routeName;
28
28
  }
@@ -5,11 +5,11 @@ import type {
5
5
  } from '@react-navigation/routers';
6
6
  import * as queryString from 'query-string';
7
7
 
8
- import fromEntries from './fromEntries';
9
8
  import type { PathConfig, PathConfigMap } from './types';
10
- import validatePathConfig from './validatePathConfig';
9
+ import { validatePathConfig } from './validatePathConfig';
11
10
 
12
11
  type Options<ParamList extends {}> = {
12
+ path?: string;
13
13
  initialRouteName?: string;
14
14
  screens: PathConfigMap<ParamList>;
15
15
  };
@@ -66,7 +66,7 @@ const getActiveRoute = (state: State): { name: string; params?: object } => {
66
66
  * @param options Extra options to fine-tune how to serialize the path.
67
67
  * @returns Path representing the state, e.g. /foo/bar?count=42.
68
68
  */
69
- export default function getPathFromState<ParamList extends {}>(
69
+ export function getPathFromState<ParamList extends {}>(
70
70
  state: State,
71
71
  options?: Options<ParamList>
72
72
  ): string {
@@ -99,11 +99,11 @@ export default function getPathFromState<ParamList extends {}>(
99
99
  let pattern: string | undefined;
100
100
 
101
101
  let focusedParams: Record<string, any> | undefined;
102
- let focusedRoute = getActiveRoute(state);
102
+ const focusedRoute = getActiveRoute(state);
103
103
  let currentOptions = configs;
104
104
 
105
105
  // Keep all the route names that appeared during going deeper in config in case the pattern is resolved to undefined
106
- let nestedRouteNames = [];
106
+ const nestedRouteNames = [];
107
107
 
108
108
  let hasNext = true;
109
109
 
@@ -115,7 +115,7 @@ export default function getPathFromState<ParamList extends {}>(
115
115
  if (route.params) {
116
116
  const stringify = currentOptions[route.name]?.stringify;
117
117
 
118
- const currentParams = fromEntries(
118
+ const currentParams = Object.fromEntries(
119
119
  Object.entries(route.params).map(([key, value]) => [
120
120
  key,
121
121
  stringify?.[key] ? stringify[key](value) : String(value),
@@ -213,7 +213,7 @@ export default function getPathFromState<ParamList extends {}>(
213
213
  if (route.state) {
214
214
  path += '/';
215
215
  } else if (focusedParams) {
216
- for (let param in focusedParams) {
216
+ for (const param in focusedParams) {
217
217
  if (focusedParams[param] === 'undefined') {
218
218
  // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
219
219
  delete focusedParams[param];
@@ -234,6 +234,11 @@ export default function getPathFromState<ParamList extends {}>(
234
234
  path = path.replace(/\/+/g, '/');
235
235
  path = path.length > 1 ? path.replace(/\/$/, '') : path;
236
236
 
237
+ // Include the root path if specified
238
+ if (options?.path) {
239
+ path = joinPaths(options.path, path);
240
+ }
241
+
237
242
  return path;
238
243
  }
239
244
 
@@ -257,17 +262,15 @@ const createConfigItem = (
257
262
  return { pattern };
258
263
  }
259
264
 
260
- // If an object is specified as the value (e.g. Foo: { ... }),
261
- // It can have `path` property and `screens` prop which has nested configs
262
- let pattern: string | undefined;
263
-
264
265
  if (config.exact && config.path === undefined) {
265
266
  throw new Error(
266
267
  "A 'path' needs to be specified when specifying 'exact: true'. If you don't want this screen in the URL, specify it as empty string, e.g. `path: ''`."
267
268
  );
268
269
  }
269
270
 
270
- pattern =
271
+ // If an object is specified as the value (e.g. Foo: { ... }),
272
+ // It can have `path` property and `screens` prop which has nested configs
273
+ const pattern =
271
274
  config.exact !== true
272
275
  ? joinPaths(parentPattern || '', config.path || '')
273
276
  : config.path || '';
@@ -288,7 +291,7 @@ const createNormalizedConfigs = (
288
291
  options: PathConfigMap<object>,
289
292
  pattern?: string
290
293
  ): Record<string, ConfigItem> =>
291
- fromEntries(
294
+ Object.fromEntries(
292
295
  Object.entries(options).map(([name, c]) => {
293
296
  const result = createConfigItem(c, pattern);
294
297
 
@@ -6,11 +6,12 @@ import type {
6
6
  import escape from 'escape-string-regexp';
7
7
  import * as queryString from 'query-string';
8
8
 
9
- import findFocusedRoute from './findFocusedRoute';
9
+ import { findFocusedRoute } from './findFocusedRoute';
10
10
  import type { PathConfigMap } from './types';
11
- import validatePathConfig from './validatePathConfig';
11
+ import { validatePathConfig } from './validatePathConfig';
12
12
 
13
13
  type Options<ParamList extends {}> = {
14
+ path?: string;
14
15
  initialRouteName?: string;
15
16
  screens: PathConfigMap<ParamList>;
16
17
  };
@@ -62,7 +63,7 @@ type ParsedRoute = {
62
63
  * @param path Path string to parse and convert, e.g. /foo/bar?count=42.
63
64
  * @param options Extra options to fine-tune how to parse the path.
64
65
  */
65
- export default function getStateFromPath<ParamList extends {}>(
66
+ export function getStateFromPath<ParamList extends {}>(
66
67
  path: string,
67
68
  options?: Options<ParamList>
68
69
  ): ResultState | undefined {
@@ -70,7 +71,7 @@ export default function getStateFromPath<ParamList extends {}>(
70
71
  validatePathConfig(options);
71
72
  }
72
73
 
73
- let initialRoutes: InitialRouteConfig[] = [];
74
+ const initialRoutes: InitialRouteConfig[] = [];
74
75
 
75
76
  if (options?.initialRouteName) {
76
77
  initialRoutes.push({
@@ -89,6 +90,21 @@ export default function getStateFromPath<ParamList extends {}>(
89
90
  // Make sure there is a trailing slash
90
91
  remaining = remaining.endsWith('/') ? remaining : `${remaining}/`;
91
92
 
93
+ const prefix = options?.path?.replace(/^\//, ''); // Remove extra leading slash
94
+
95
+ if (prefix) {
96
+ // Make sure there is a trailing slash
97
+ const normalizedPrefix = prefix.endsWith('/') ? prefix : `${prefix}/`;
98
+
99
+ // If the path doesn't start with the prefix, it's not a match
100
+ if (!remaining.startsWith(normalizedPrefix)) {
101
+ return undefined;
102
+ }
103
+
104
+ // Remove the prefix from the path
105
+ remaining = remaining.replace(normalizedPrefix, '');
106
+ }
107
+
92
108
  if (screens === undefined) {
93
109
  // When no config is specified, use the path segments as route names
94
110
  const routes = remaining
@@ -507,7 +523,6 @@ const createNestedStateObject = (
507
523
  initialRoutes: InitialRouteConfig[],
508
524
  flatConfig?: RouteConfig[]
509
525
  ) => {
510
- let state: InitialState;
511
526
  let route = routes.shift() as ParsedRoute;
512
527
  const parentScreens: string[] = [];
513
528
 
@@ -515,7 +530,11 @@ const createNestedStateObject = (
515
530
 
516
531
  parentScreens.push(route.name);
517
532
 
518
- state = createStateObject(initialRoute, route, routes.length === 0);
533
+ const state: InitialState = createStateObject(
534
+ initialRoute,
535
+ route,
536
+ routes.length === 0
537
+ );
519
538
 
520
539
  if (routes.length > 0) {
521
540
  let nestedState = state;
package/src/index.tsx CHANGED
@@ -1,36 +1,39 @@
1
- export { default as BaseNavigationContainer } from './BaseNavigationContainer';
2
- export { default as createNavigationContainerRef } from './createNavigationContainerRef';
3
- export { default as createNavigatorFactory } from './createNavigatorFactory';
4
- export { default as CurrentRenderContext } from './CurrentRenderContext';
5
- export { default as findFocusedRoute } from './findFocusedRoute';
6
- export { default as getActionFromState } from './getActionFromState';
7
- export { default as getFocusedRouteNameFromRoute } from './getFocusedRouteNameFromRoute';
8
- export { default as getPathFromState } from './getPathFromState';
9
- export { default as getStateFromPath } from './getStateFromPath';
10
- export { default as NavigationContainerRefContext } from './NavigationContainerRefContext';
11
- export { default as NavigationContext } from './NavigationContext';
12
- export { default as NavigationHelpersContext } from './NavigationHelpersContext';
13
- export { default as NavigationIndependentTree } from './NavigationIndependentTree';
14
- export { default as NavigationRouteContext } from './NavigationRouteContext';
15
- export { default as PreventRemoveContext } from './PreventRemoveContext';
16
- export { default as PreventRemoveProvider } from './PreventRemoveProvider';
1
+ export { BaseNavigationContainer } from './BaseNavigationContainer';
2
+ export { createNavigationContainerRef } from './createNavigationContainerRef';
3
+ export { createNavigatorFactory } from './createNavigatorFactory';
4
+ export { CurrentRenderContext } from './CurrentRenderContext';
5
+ export { findFocusedRoute } from './findFocusedRoute';
6
+ export { getActionFromState } from './getActionFromState';
7
+ export { getFocusedRouteNameFromRoute } from './getFocusedRouteNameFromRoute';
8
+ export { getPathFromState } from './getPathFromState';
9
+ export { getStateFromPath } from './getStateFromPath';
10
+ export { NavigationContainerRefContext } from './NavigationContainerRefContext';
11
+ export { NavigationContext } from './NavigationContext';
12
+ export { NavigationHelpersContext } from './NavigationHelpersContext';
13
+ export { NavigationIndependentTree } from './NavigationIndependentTree';
14
+ export { NavigationRouteContext } from './NavigationRouteContext';
15
+ export { PreventRemoveContext } from './PreventRemoveContext';
16
+ export { PreventRemoveProvider } from './PreventRemoveProvider';
17
17
  export {
18
18
  createComponentForStaticNavigation,
19
19
  createPathConfigForStaticNavigation,
20
- StaticNavigation,
21
- StaticParamList,
22
- StaticScreenProps,
20
+ type StaticNavigation,
21
+ type StaticParamList,
22
+ type StaticScreenProps,
23
23
  } from './StaticNavigation';
24
+ export { ThemeContext } from './theming/ThemeContext';
25
+ export { ThemeProvider } from './theming/ThemeProvider';
26
+ export { useTheme } from './theming/useTheme';
24
27
  export * from './types';
25
- export { default as useFocusEffect } from './useFocusEffect';
26
- export { default as useIsFocused } from './useIsFocused';
27
- export { default as useNavigation } from './useNavigation';
28
- export { default as useNavigationBuilder } from './useNavigationBuilder';
29
- export { default as useNavigationContainerRef } from './useNavigationContainerRef';
30
- export { default as useNavigationIndependentTree } from './useNavigationIndependentTree';
31
- export { default as useNavigationState } from './useNavigationState';
32
- export { default as UNSTABLE_usePreventRemove } from './usePreventRemove';
33
- export { default as usePreventRemoveContext } from './usePreventRemoveContext';
34
- export { default as useRoute } from './useRoute';
35
- export { default as validatePathConfig } from './validatePathConfig';
28
+ export { useFocusEffect } from './useFocusEffect';
29
+ export { useIsFocused } from './useIsFocused';
30
+ export { useNavigation } from './useNavigation';
31
+ export { useNavigationBuilder } from './useNavigationBuilder';
32
+ export { useNavigationContainerRef } from './useNavigationContainerRef';
33
+ export { useNavigationIndependentTree } from './useNavigationIndependentTree';
34
+ export { useNavigationState } from './useNavigationState';
35
+ export { usePreventRemove } from './usePreventRemove';
36
+ export { usePreventRemoveContext } from './usePreventRemoveContext';
37
+ export { useRoute } from './useRoute';
38
+ export { validatePathConfig } from './validatePathConfig';
36
39
  export * from '@react-navigation/routers';
@@ -2,7 +2,7 @@
2
2
  * Compare two arrays with primitive values as the content.
3
3
  * We need to make sure that both values and order match.
4
4
  */
5
- export default function isArrayEqual(a: any[], b: any[]) {
5
+ export function isArrayEqual(a: any[], b: any[]) {
6
6
  if (a === b) {
7
7
  return true;
8
8
  }
@@ -1,10 +1,7 @@
1
1
  /**
2
2
  * Compare two records with primitive values as the content.
3
3
  */
4
- export default function isRecordEqual(
5
- a: Record<string, any>,
6
- b: Record<string, any>
7
- ) {
4
+ export function isRecordEqual(a: Record<string, any>, b: Record<string, any>) {
8
5
  if (a === b) {
9
6
  return true;
10
7
  }
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+
3
+ export const ThemeContext = React.createContext<
4
+ ReactNavigation.Theme | undefined
5
+ >(undefined);
6
+
7
+ ThemeContext.displayName = 'ThemeContext';
@@ -0,0 +1,14 @@
1
+ import * as React from 'react';
2
+
3
+ import { ThemeContext } from './ThemeContext';
4
+
5
+ type Props = {
6
+ value: ReactNavigation.Theme | undefined;
7
+ children: React.ReactNode;
8
+ };
9
+
10
+ export function ThemeProvider({ value, children }: Props) {
11
+ return (
12
+ <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>
13
+ );
14
+ }
@@ -0,0 +1,15 @@
1
+ import * as React from 'react';
2
+
3
+ import { ThemeContext } from './ThemeContext';
4
+
5
+ export function useTheme() {
6
+ const theme = React.useContext(ThemeContext);
7
+
8
+ if (theme == null) {
9
+ throw new Error(
10
+ "Couldn't find a theme. Is your component inside NavigationContainer or does it have a theme?"
11
+ );
12
+ }
13
+
14
+ return theme;
15
+ }