@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
@@ -2,18 +2,20 @@ import type {
2
2
  NavigationAction,
3
3
  NavigationState,
4
4
  ParamListBase,
5
+ PartialState,
5
6
  Router,
6
7
  } from '@react-navigation/routers';
7
8
  import * as React from 'react';
8
9
 
9
10
  import {
10
- AddKeyedListener,
11
- AddListener,
11
+ type AddKeyedListener,
12
+ type AddListener,
12
13
  NavigationBuilderContext,
13
14
  } from './NavigationBuilderContext';
14
15
  import { NavigationContext } from './NavigationContext';
15
16
  import { NavigationRouteContext } from './NavigationRouteContext';
16
17
  import { SceneView } from './SceneView';
18
+ import { ThemeContext } from './theming/ThemeContext';
17
19
  import type {
18
20
  Descriptor,
19
21
  EventMapBase,
@@ -29,24 +31,33 @@ import { useRouteCache } from './useRouteCache';
29
31
  export type ScreenConfigWithParent<
30
32
  State extends NavigationState,
31
33
  ScreenOptions extends {},
32
- EventMap extends EventMapBase
34
+ EventMap extends EventMapBase,
33
35
  > = {
34
36
  keys: (string | undefined)[];
35
37
  options: (ScreenOptionsOrCallback<ScreenOptions> | undefined)[] | undefined;
38
+ layout: ScreenLayout | undefined;
36
39
  props: RouteConfig<ParamListBase, string, State, ScreenOptions, EventMap>;
37
40
  };
38
41
 
42
+ type ScreenLayout = (props: {
43
+ route: RouteProp<ParamListBase, string>;
44
+ navigation: any;
45
+ theme: ReactNavigation.Theme;
46
+ children: React.ReactElement;
47
+ }) => React.ReactElement;
48
+
39
49
  type ScreenOptionsOrCallback<ScreenOptions extends {}> =
40
50
  | ScreenOptions
41
51
  | ((props: {
42
52
  route: RouteProp<ParamListBase, string>;
43
53
  navigation: any;
54
+ theme: ReactNavigation.Theme;
44
55
  }) => ScreenOptions);
45
56
 
46
57
  type Options<
47
58
  State extends NavigationState,
48
59
  ScreenOptions extends {},
49
- EventMap extends EventMapBase
60
+ EventMap extends EventMapBase,
50
61
  > = {
51
62
  state: State;
52
63
  screens: Record<
@@ -54,14 +65,8 @@ type Options<
54
65
  ScreenConfigWithParent<State, ScreenOptions, EventMap>
55
66
  >;
56
67
  navigation: NavigationHelpers<ParamListBase>;
57
- screenOptions?: ScreenOptionsOrCallback<ScreenOptions>;
58
- defaultScreenOptions?:
59
- | ScreenOptions
60
- | ((props: {
61
- route: RouteProp<ParamListBase>;
62
- navigation: any;
63
- options: ScreenOptions;
64
- }) => ScreenOptions);
68
+ screenOptions: ScreenOptionsOrCallback<ScreenOptions> | undefined;
69
+ screenLayout: ScreenLayout | undefined;
65
70
  onAction: (action: NavigationAction) => boolean;
66
71
  getState: () => State;
67
72
  setState: (state: State) => void;
@@ -84,13 +89,13 @@ export function useDescriptors<
84
89
  State extends NavigationState,
85
90
  ActionHelpers extends Record<string, () => void>,
86
91
  ScreenOptions extends {},
87
- EventMap extends EventMapBase
92
+ EventMap extends EventMapBase,
88
93
  >({
89
94
  state,
90
95
  screens,
91
96
  navigation,
92
97
  screenOptions,
93
- defaultScreenOptions,
98
+ screenLayout,
94
99
  onAction,
95
100
  getState,
96
101
  setState,
@@ -100,6 +105,7 @@ export function useDescriptors<
100
105
  router,
101
106
  emitter,
102
107
  }: Options<State, ScreenOptions, EventMap>) {
108
+ const theme = React.useContext(ThemeContext);
103
109
  const [options, setOptions] = React.useState<Record<string, ScreenOptions>>(
104
110
  {}
105
111
  );
@@ -130,7 +136,12 @@ export function useDescriptors<
130
136
  ]
131
137
  );
132
138
 
133
- const navigations = useNavigationCache<State, ScreenOptions, EventMap>({
139
+ const { base, navigations } = useNavigationCache<
140
+ State,
141
+ ScreenOptions,
142
+ EventMap,
143
+ ActionHelpers
144
+ >({
134
145
  state,
135
146
  getState,
136
147
  navigation,
@@ -141,27 +152,20 @@ export function useDescriptors<
141
152
 
142
153
  const routes = useRouteCache(state.routes);
143
154
 
144
- return routes.reduce<
145
- Record<
155
+ const getOptions = (
156
+ route: RouteProp<ParamListBase, string>,
157
+ navigation: NavigationProp<
158
+ ParamListBase,
146
159
  string,
147
- Descriptor<
148
- ScreenOptions,
149
- NavigationProp<
150
- ParamListBase,
151
- string,
152
- string | undefined,
153
- State,
154
- ScreenOptions,
155
- EventMap
156
- > &
157
- ActionHelpers,
158
- RouteProp<ParamListBase>
159
- >
160
- >
161
- >((acc, route, i) => {
160
+ string | undefined,
161
+ State,
162
+ ScreenOptions,
163
+ EventMap
164
+ >,
165
+ overrides: Record<string, ScreenOptions>
166
+ ) => {
162
167
  const config = screens[route.name];
163
168
  const screen = config.props;
164
- const navigation = navigations[route.key];
165
169
 
166
170
  const optionsList = [
167
171
  // The default `screenOptions` passed to the navigator
@@ -173,30 +177,35 @@ export function useDescriptors<
173
177
  // The `options` prop passed to `Screen` elements,
174
178
  screen.options,
175
179
  // The options set via `navigation.setOptions`
176
- options[route.key],
180
+ overrides,
177
181
  ];
178
182
 
179
- const customOptions = optionsList.reduce<ScreenOptions>(
183
+ return optionsList.reduce<ScreenOptions>(
180
184
  (acc, curr) =>
181
185
  Object.assign(
182
186
  acc,
183
187
  // @ts-expect-error: we check for function but TS still complains
184
- typeof curr !== 'function' ? curr : curr({ route, navigation })
188
+ typeof curr !== 'function' ? curr : curr({ route, navigation, theme })
185
189
  ),
186
190
  {} as ScreenOptions
187
191
  );
192
+ };
188
193
 
189
- const mergedOptions = {
190
- ...(typeof defaultScreenOptions === 'function'
191
- ? // @ts-expect-error: ts gives incorrect error here
192
- defaultScreenOptions({
193
- route,
194
- navigation,
195
- options: customOptions,
196
- })
197
- : defaultScreenOptions),
198
- ...customOptions,
199
- };
194
+ const render = (
195
+ route: RouteProp<ParamListBase, string>,
196
+ navigation: NavigationProp<
197
+ ParamListBase,
198
+ string,
199
+ string | undefined,
200
+ State,
201
+ ScreenOptions,
202
+ EventMap
203
+ >,
204
+ customOptions: ScreenOptions,
205
+ routeState: NavigationState | PartialState<NavigationState> | undefined
206
+ ) => {
207
+ const config = screens[route.name];
208
+ const screen = config.props;
200
209
 
201
210
  const clearOptions = () =>
202
211
  setOptions((o) => {
@@ -209,24 +218,74 @@ export function useDescriptors<
209
218
  return o;
210
219
  });
211
220
 
212
- const element = (
221
+ const layout =
222
+ // The `layout` prop passed to `Screen` elements,
223
+ screen.layout ??
224
+ // The `screenLayout` props passed to `Group` elements
225
+ config.layout ??
226
+ // The default `screenLayout` passed to the navigator
227
+ screenLayout;
228
+
229
+ let element = (
230
+ <SceneView
231
+ navigation={navigation}
232
+ route={route}
233
+ screen={screen}
234
+ routeState={routeState}
235
+ getState={getState}
236
+ setState={setState}
237
+ options={customOptions}
238
+ clearOptions={clearOptions}
239
+ />
240
+ );
241
+
242
+ if (layout != null) {
243
+ element = layout({
244
+ route,
245
+ navigation,
246
+ // @ts-expect-error: in practice `theme` will be defined
247
+ theme,
248
+ children: element,
249
+ });
250
+ }
251
+
252
+ return (
213
253
  <NavigationBuilderContext.Provider key={route.key} value={context}>
214
254
  <NavigationContext.Provider value={navigation}>
215
255
  <NavigationRouteContext.Provider value={route}>
216
- <SceneView
217
- navigation={navigation}
218
- route={route}
219
- screen={screen}
220
- routeState={state.routes[i].state}
221
- getState={getState}
222
- setState={setState}
223
- options={mergedOptions}
224
- clearOptions={clearOptions}
225
- />
256
+ {element}
226
257
  </NavigationRouteContext.Provider>
227
258
  </NavigationContext.Provider>
228
259
  </NavigationBuilderContext.Provider>
229
260
  );
261
+ };
262
+
263
+ const descriptors = routes.reduce<
264
+ Record<
265
+ string,
266
+ Descriptor<
267
+ ScreenOptions,
268
+ NavigationProp<
269
+ ParamListBase,
270
+ string,
271
+ string | undefined,
272
+ State,
273
+ ScreenOptions,
274
+ EventMap
275
+ > &
276
+ ActionHelpers,
277
+ RouteProp<ParamListBase>
278
+ >
279
+ >
280
+ >((acc, route, i) => {
281
+ const navigation = navigations[route.key];
282
+ const customOptions = getOptions(route, navigation, options[route.key]);
283
+ const element = render(
284
+ route,
285
+ navigation,
286
+ customOptions,
287
+ state.routes[i].state
288
+ );
230
289
 
231
290
  acc[route.key] = {
232
291
  route,
@@ -235,9 +294,44 @@ export function useDescriptors<
235
294
  render() {
236
295
  return element;
237
296
  },
238
- options: mergedOptions as ScreenOptions,
297
+ options: customOptions as ScreenOptions,
239
298
  };
240
299
 
241
300
  return acc;
242
301
  }, {});
302
+
303
+ /**
304
+ * Create a descriptor object for a route.
305
+ *
306
+ * @param route Route object for which the descriptor should be created
307
+ * @param placeholder Whether the descriptor should be a placeholder, e.g. for a route not yet in the state
308
+ * @returns Descriptor object
309
+ */
310
+ const describe = (route: RouteProp<ParamListBase>, placeholder: boolean) => {
311
+ if (!placeholder) {
312
+ if (!(route.key in descriptors)) {
313
+ throw new Error(`Couldn't find a route with the key ${route.key}.`);
314
+ }
315
+
316
+ return descriptors[route.key];
317
+ }
318
+
319
+ const navigation = base;
320
+ const customOptions = getOptions(route, navigation, {});
321
+ const element = render(route, navigation, customOptions, undefined);
322
+
323
+ return {
324
+ route,
325
+ navigation,
326
+ render() {
327
+ return element;
328
+ },
329
+ options: customOptions as ScreenOptions,
330
+ };
331
+ };
332
+
333
+ return {
334
+ describe,
335
+ descriptors,
336
+ };
243
337
  }
@@ -14,6 +14,7 @@ type EffectCallback = () => undefined | void | (() => void);
14
14
  export function useFocusEffect(effect: EffectCallback) {
15
15
  const navigation = useNavigation();
16
16
 
17
+ // eslint-disable-next-line prefer-rest-params
17
18
  if (arguments[1] !== undefined) {
18
19
  const message =
19
20
  "You passed a second argument to 'useFocusEffect', but it only accepts one argument. " +
@@ -2,8 +2,8 @@ import type { ParamListBase } from '@react-navigation/routers';
2
2
  import * as React from 'react';
3
3
 
4
4
  import {
5
- FocusedNavigationCallback,
6
- FocusedNavigationListener,
5
+ type FocusedNavigationCallback,
6
+ type FocusedNavigationListener,
7
7
  NavigationBuilderContext,
8
8
  } from './NavigationBuilderContext';
9
9
  import type { NavigationHelpers } from './types';
@@ -0,0 +1,3 @@
1
+ import { useLayoutEffect } from 'react';
2
+
3
+ export const useIsomorphicLayoutEffect = useLayoutEffect;
@@ -0,0 +1,7 @@
1
+ import { useEffect, useLayoutEffect } from 'react';
2
+
3
+ /**
4
+ * Use `useEffect` during SSR and `useLayoutEffect` in the browser to avoid warnings.
5
+ */
6
+ export const useIsomorphicLayoutEffect =
7
+ typeof document !== 'undefined' ? useLayoutEffect : useEffect;
@@ -1,3 +1,4 @@
1
+ import { type NavigationState } from '@react-navigation/routers';
1
2
  import * as React from 'react';
2
3
 
3
4
  import { NavigationContainerRefContext } from './NavigationContainerRefContext';
@@ -10,7 +11,9 @@ import type { NavigationProp } from './types';
10
11
  * @returns Navigation prop of the parent screen.
11
12
  */
12
13
  export function useNavigation<
13
- T = NavigationProp<ReactNavigation.RootParamList>
14
+ T = Omit<NavigationProp<ReactNavigation.RootParamList>, 'getState'> & {
15
+ getState(): NavigationState | undefined;
16
+ },
14
17
  >(): T {
15
18
  const root = React.useContext(NavigationContainerRefContext);
16
19
  const navigation = React.useContext(NavigationContext);