@react-navigation/core 8.0.0-alpha.4 → 8.0.0-alpha.41

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 (323) hide show
  1. package/README.md +17 -14
  2. package/lib/module/BaseNavigationContainer.js +173 -90
  3. package/lib/module/BaseNavigationContainer.js.map +1 -1
  4. package/lib/module/ConsumedParamsContext.js +5 -0
  5. package/lib/module/ConsumedParamsContext.js.map +1 -0
  6. package/lib/module/DataLoading.js +129 -0
  7. package/lib/module/DataLoading.js.map +1 -0
  8. package/lib/module/NavigationBuilderContext.js +7 -10
  9. package/lib/module/NavigationBuilderContext.js.map +1 -1
  10. package/lib/module/NavigationIndependentTree.js +54 -9
  11. package/lib/module/NavigationIndependentTree.js.map +1 -1
  12. package/lib/module/NavigationProvider.js +37 -12
  13. package/lib/module/NavigationProvider.js.map +1 -1
  14. package/lib/module/NavigationRootContext.js +8 -0
  15. package/lib/module/NavigationRootContext.js.map +1 -0
  16. package/lib/module/NavigationStateContext.js +3 -0
  17. package/lib/module/NavigationStateContext.js.map +1 -1
  18. package/lib/module/PreventRemoveContext.js.map +1 -1
  19. package/lib/module/PreventRemoveProvider.js +40 -31
  20. package/lib/module/PreventRemoveProvider.js.map +1 -1
  21. package/lib/module/SceneView.js +29 -57
  22. package/lib/module/SceneView.js.map +1 -1
  23. package/lib/module/StaticNavigation.js +219 -67
  24. package/lib/module/StaticNavigation.js.map +1 -1
  25. package/lib/module/StaticTreeContext.js +5 -0
  26. package/lib/module/StaticTreeContext.js.map +1 -0
  27. package/lib/module/createNavigationContainerRef.js +7 -9
  28. package/lib/module/createNavigationContainerRef.js.map +1 -1
  29. package/lib/module/createNavigatorFactory.js +27 -5
  30. package/lib/module/createNavigatorFactory.js.map +1 -1
  31. package/lib/module/findFocusedRoute.js +7 -4
  32. package/lib/module/findFocusedRoute.js.map +1 -1
  33. package/lib/module/getActionFromState.js +45 -20
  34. package/lib/module/getActionFromState.js.map +1 -1
  35. package/lib/module/getPathFromState.js +204 -94
  36. package/lib/module/getPathFromState.js.map +1 -1
  37. package/lib/module/getPatternParts.js +61 -14
  38. package/lib/module/getPatternParts.js.map +1 -1
  39. package/lib/module/getStateFromPath.js +608 -272
  40. package/lib/module/getStateFromPath.js.map +1 -1
  41. package/lib/module/getStateFromRouteParams.js +23 -0
  42. package/lib/module/getStateFromRouteParams.js.map +1 -0
  43. package/lib/module/index.js +7 -6
  44. package/lib/module/index.js.map +1 -1
  45. package/lib/module/internal.js +2 -0
  46. package/lib/module/internal.js.map +1 -0
  47. package/lib/module/isRecordEqual.js +1 -1
  48. package/lib/module/isRecordEqual.js.map +1 -1
  49. package/lib/module/queryString.js +71 -0
  50. package/lib/module/queryString.js.map +1 -0
  51. package/lib/module/theming/useTheme.js +1 -1
  52. package/lib/module/theming/useTheme.js.map +1 -1
  53. package/lib/module/types.js +35 -1
  54. package/lib/module/types.js.map +1 -1
  55. package/lib/module/useDescriptors.js +65 -25
  56. package/lib/module/useDescriptors.js.map +1 -1
  57. package/lib/module/useEventEmitter.js +48 -33
  58. package/lib/module/useEventEmitter.js.map +1 -1
  59. package/lib/module/useFocusEffect.js +4 -2
  60. package/lib/module/useFocusEffect.js.map +1 -1
  61. package/lib/module/useFocusEvents.js +15 -5
  62. package/lib/module/useFocusEvents.js.map +1 -1
  63. package/lib/module/useFocusedListenersChildrenAdapter.js +3 -3
  64. package/lib/module/useFocusedListenersChildrenAdapter.js.map +1 -1
  65. package/lib/module/useIsFocused.js +8 -12
  66. package/lib/module/useIsFocused.js.map +1 -1
  67. package/lib/module/useKeyedChildListeners.js +5 -2
  68. package/lib/module/useKeyedChildListeners.js.map +1 -1
  69. package/lib/module/useLazyValue.js.map +1 -1
  70. package/lib/module/useNavigation.js +4 -17
  71. package/lib/module/useNavigation.js.map +1 -1
  72. package/lib/module/useNavigationBuilder.js +244 -147
  73. package/lib/module/useNavigationBuilder.js.map +1 -1
  74. package/lib/module/useNavigationCache.js +92 -89
  75. package/lib/module/useNavigationCache.js.map +1 -1
  76. package/lib/module/useNavigationHelpers.js +22 -29
  77. package/lib/module/useNavigationHelpers.js.map +1 -1
  78. package/lib/module/useNavigationIndependentTree.js +1 -1
  79. package/lib/module/useNavigationIndependentTree.js.map +1 -1
  80. package/lib/module/useNavigationState.js +158 -46
  81. package/lib/module/useNavigationState.js.map +1 -1
  82. package/lib/module/useOnAction.js +58 -11
  83. package/lib/module/useOnAction.js.map +1 -1
  84. package/lib/module/useOnGetNavigation.js +26 -0
  85. package/lib/module/useOnGetNavigation.js.map +1 -0
  86. package/lib/module/useOnGetState.js +7 -4
  87. package/lib/module/useOnGetState.js.map +1 -1
  88. package/lib/module/useOnPreventRemove.js +40 -31
  89. package/lib/module/useOnPreventRemove.js.map +1 -1
  90. package/lib/module/useOnRouteFocus.js +2 -2
  91. package/lib/module/useOnRouteFocus.js.map +1 -1
  92. package/lib/module/useOptionsGetters.js +35 -27
  93. package/lib/module/useOptionsGetters.js.map +1 -1
  94. package/lib/module/usePreventRemove.js +11 -5
  95. package/lib/module/usePreventRemove.js.map +1 -1
  96. package/lib/module/usePreventRemoveContext.js +2 -2
  97. package/lib/module/usePreventRemoveContext.js.map +1 -1
  98. package/lib/module/useRegisterNavigator.js +3 -4
  99. package/lib/module/useRegisterNavigator.js.map +1 -1
  100. package/lib/module/useRoute.js +2 -0
  101. package/lib/module/useRoute.js.map +1 -1
  102. package/lib/module/useRouteCache.js +51 -35
  103. package/lib/module/useRouteCache.js.map +1 -1
  104. package/lib/module/useScheduleUpdate.js +12 -10
  105. package/lib/module/useScheduleUpdate.js.map +1 -1
  106. package/lib/module/useStateForPath.js +1 -1
  107. package/lib/module/useStateForPath.js.map +1 -1
  108. package/lib/module/useSyncState.js +37 -15
  109. package/lib/module/useSyncState.js.map +1 -1
  110. package/lib/module/validatePathConfig.js +50 -36
  111. package/lib/module/validatePathConfig.js.map +1 -1
  112. package/lib/typescript/src/BaseNavigationContainer.d.ts +6 -3
  113. package/lib/typescript/src/BaseNavigationContainer.d.ts.map +1 -1
  114. package/lib/typescript/src/ConsumedParamsContext.d.ts +3 -0
  115. package/lib/typescript/src/ConsumedParamsContext.d.ts.map +1 -0
  116. package/lib/typescript/src/DataLoading.d.ts +21 -0
  117. package/lib/typescript/src/DataLoading.d.ts.map +1 -0
  118. package/lib/typescript/src/EnsureSingleNavigator.d.ts +1 -1
  119. package/lib/typescript/src/EnsureSingleNavigator.d.ts.map +1 -1
  120. package/lib/typescript/src/Group.d.ts +1 -1
  121. package/lib/typescript/src/Group.d.ts.map +1 -1
  122. package/lib/typescript/src/NavigationBuilderContext.d.ts +22 -14
  123. package/lib/typescript/src/NavigationBuilderContext.d.ts.map +1 -1
  124. package/lib/typescript/src/NavigationContainerRefContext.d.ts +1 -1
  125. package/lib/typescript/src/NavigationContainerRefContext.d.ts.map +1 -1
  126. package/lib/typescript/src/NavigationFocusedRouteStateContext.d.ts +4 -4
  127. package/lib/typescript/src/NavigationFocusedRouteStateContext.d.ts.map +1 -1
  128. package/lib/typescript/src/NavigationHelpersContext.d.ts +1 -1
  129. package/lib/typescript/src/NavigationHelpersContext.d.ts.map +1 -1
  130. package/lib/typescript/src/NavigationIndependentTree.d.ts +1 -1
  131. package/lib/typescript/src/NavigationIndependentTree.d.ts.map +1 -1
  132. package/lib/typescript/src/NavigationProvider.d.ts +21 -18
  133. package/lib/typescript/src/NavigationProvider.d.ts.map +1 -1
  134. package/lib/typescript/src/NavigationRootContext.d.ts +8 -0
  135. package/lib/typescript/src/NavigationRootContext.d.ts.map +1 -0
  136. package/lib/typescript/src/NavigationStateContext.d.ts +3 -3
  137. package/lib/typescript/src/NavigationStateContext.d.ts.map +1 -1
  138. package/lib/typescript/src/PreventRemoveContext.d.ts +1 -0
  139. package/lib/typescript/src/PreventRemoveContext.d.ts.map +1 -1
  140. package/lib/typescript/src/PreventRemoveProvider.d.ts +1 -1
  141. package/lib/typescript/src/PreventRemoveProvider.d.ts.map +1 -1
  142. package/lib/typescript/src/SceneView.d.ts +5 -2
  143. package/lib/typescript/src/SceneView.d.ts.map +1 -1
  144. package/lib/typescript/src/Screen.d.ts +1 -1
  145. package/lib/typescript/src/Screen.d.ts.map +1 -1
  146. package/lib/typescript/src/StaticContainer.d.ts +1 -1
  147. package/lib/typescript/src/StaticContainer.d.ts.map +1 -1
  148. package/lib/typescript/src/StaticNavigation.d.ts +189 -111
  149. package/lib/typescript/src/StaticNavigation.d.ts.map +1 -1
  150. package/lib/typescript/src/StaticTreeContext.d.ts +4 -0
  151. package/lib/typescript/src/StaticTreeContext.d.ts.map +1 -0
  152. package/lib/typescript/src/createNavigationContainerRef.d.ts +1 -1
  153. package/lib/typescript/src/createNavigationContainerRef.d.ts.map +1 -1
  154. package/lib/typescript/src/createNavigatorFactory.d.ts +23 -5
  155. package/lib/typescript/src/createNavigatorFactory.d.ts.map +1 -1
  156. package/lib/typescript/src/findFocusedRoute.d.ts +3 -8
  157. package/lib/typescript/src/findFocusedRoute.d.ts.map +1 -1
  158. package/lib/typescript/src/getActionFromState.d.ts +4 -4
  159. package/lib/typescript/src/getActionFromState.d.ts.map +1 -1
  160. package/lib/typescript/src/getPathFromState.d.ts +3 -3
  161. package/lib/typescript/src/getPathFromState.d.ts.map +1 -1
  162. package/lib/typescript/src/getPatternParts.d.ts +5 -2
  163. package/lib/typescript/src/getPatternParts.d.ts.map +1 -1
  164. package/lib/typescript/src/getStateFromPath.d.ts +4 -7
  165. package/lib/typescript/src/getStateFromPath.d.ts.map +1 -1
  166. package/lib/typescript/src/getStateFromRouteParams.d.ts +3 -0
  167. package/lib/typescript/src/getStateFromRouteParams.d.ts.map +1 -0
  168. package/lib/typescript/src/index.d.ts +36 -33
  169. package/lib/typescript/src/index.d.ts.map +1 -1
  170. package/lib/typescript/src/internal.d.ts +3 -0
  171. package/lib/typescript/src/internal.d.ts.map +1 -0
  172. package/lib/typescript/src/isRecordEqual.d.ts.map +1 -1
  173. package/lib/typescript/src/queryString.d.ts +5 -0
  174. package/lib/typescript/src/queryString.d.ts.map +1 -0
  175. package/lib/typescript/src/theming/ThemeContext.d.ts +1 -1
  176. package/lib/typescript/src/theming/ThemeContext.d.ts.map +1 -1
  177. package/lib/typescript/src/theming/ThemeProvider.d.ts +2 -2
  178. package/lib/typescript/src/theming/ThemeProvider.d.ts.map +1 -1
  179. package/lib/typescript/src/theming/useTheme.d.ts +1 -1
  180. package/lib/typescript/src/theming/useTheme.d.ts.map +1 -1
  181. package/lib/typescript/src/types.d.ts +265 -167
  182. package/lib/typescript/src/types.d.ts.map +1 -1
  183. package/lib/typescript/src/useChildListeners.d.ts +3 -3
  184. package/lib/typescript/src/useChildListeners.d.ts.map +1 -1
  185. package/lib/typescript/src/useDescriptors.d.ts +13 -11
  186. package/lib/typescript/src/useDescriptors.d.ts.map +1 -1
  187. package/lib/typescript/src/useEventEmitter.d.ts +2 -2
  188. package/lib/typescript/src/useEventEmitter.d.ts.map +1 -1
  189. package/lib/typescript/src/useFocusEffect.d.ts.map +1 -1
  190. package/lib/typescript/src/useFocusEvents.d.ts +2 -2
  191. package/lib/typescript/src/useFocusEvents.d.ts.map +1 -1
  192. package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts +2 -2
  193. package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts.map +1 -1
  194. package/lib/typescript/src/useIsFocused.d.ts +4 -0
  195. package/lib/typescript/src/useIsFocused.d.ts.map +1 -1
  196. package/lib/typescript/src/useKeyedChildListeners.d.ts +4 -3
  197. package/lib/typescript/src/useKeyedChildListeners.d.ts.map +1 -1
  198. package/lib/typescript/src/useLazyValue.d.ts.map +1 -1
  199. package/lib/typescript/src/useNavigation.d.ts +4 -2
  200. package/lib/typescript/src/useNavigation.d.ts.map +1 -1
  201. package/lib/typescript/src/useNavigationBuilder.d.ts +22 -63
  202. package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -1
  203. package/lib/typescript/src/useNavigationCache.d.ts +6 -5
  204. package/lib/typescript/src/useNavigationCache.d.ts.map +1 -1
  205. package/lib/typescript/src/useNavigationContainerRef.d.ts +1 -1
  206. package/lib/typescript/src/useNavigationContainerRef.d.ts.map +1 -1
  207. package/lib/typescript/src/useNavigationHelpers.d.ts +18 -58
  208. package/lib/typescript/src/useNavigationHelpers.d.ts.map +1 -1
  209. package/lib/typescript/src/useNavigationState.d.ts +19 -3
  210. package/lib/typescript/src/useNavigationState.d.ts.map +1 -1
  211. package/lib/typescript/src/useOnAction.d.ts +9 -9
  212. package/lib/typescript/src/useOnAction.d.ts.map +1 -1
  213. package/lib/typescript/src/useOnGetNavigation.d.ts +12 -0
  214. package/lib/typescript/src/useOnGetNavigation.d.ts.map +1 -0
  215. package/lib/typescript/src/useOnGetState.d.ts +1 -1
  216. package/lib/typescript/src/useOnGetState.d.ts.map +1 -1
  217. package/lib/typescript/src/useOnPreventRemove.d.ts +5 -9
  218. package/lib/typescript/src/useOnPreventRemove.d.ts.map +1 -1
  219. package/lib/typescript/src/useOnRouteFocus.d.ts +6 -6
  220. package/lib/typescript/src/useOnRouteFocus.d.ts.map +1 -1
  221. package/lib/typescript/src/useOptionsGetters.d.ts +4 -4
  222. package/lib/typescript/src/useOptionsGetters.d.ts.map +1 -1
  223. package/lib/typescript/src/usePreventRemove.d.ts.map +1 -1
  224. package/lib/typescript/src/usePreventRemoveContext.d.ts +2 -1
  225. package/lib/typescript/src/usePreventRemoveContext.d.ts.map +1 -1
  226. package/lib/typescript/src/useRegisterNavigator.d.ts.map +1 -1
  227. package/lib/typescript/src/useRoute.d.ts +7 -3
  228. package/lib/typescript/src/useRoute.d.ts.map +1 -1
  229. package/lib/typescript/src/useRouteCache.d.ts +7 -12
  230. package/lib/typescript/src/useRouteCache.d.ts.map +1 -1
  231. package/lib/typescript/src/useScheduleUpdate.d.ts +5 -4
  232. package/lib/typescript/src/useScheduleUpdate.d.ts.map +1 -1
  233. package/lib/typescript/src/useStateForPath.d.ts +1 -1
  234. package/lib/typescript/src/useStateForPath.d.ts.map +1 -1
  235. package/lib/typescript/src/useSyncState.d.ts +1 -0
  236. package/lib/typescript/src/useSyncState.d.ts.map +1 -1
  237. package/lib/typescript/src/utilities.d.ts +79 -39
  238. package/lib/typescript/src/utilities.d.ts.map +1 -1
  239. package/lib/typescript/src/validatePathConfig.d.ts.map +1 -1
  240. package/package.json +26 -22
  241. package/src/BaseNavigationContainer.tsx +459 -332
  242. package/src/ConsumedParamsContext.tsx +5 -0
  243. package/src/DataLoading.tsx +206 -0
  244. package/src/NavigationBuilderContext.tsx +44 -25
  245. package/src/NavigationFocusedRouteStateContext.tsx +4 -4
  246. package/src/NavigationIndependentTree.tsx +60 -12
  247. package/src/NavigationProvider.tsx +59 -21
  248. package/src/NavigationRootContext.tsx +11 -0
  249. package/src/NavigationStateContext.tsx +6 -6
  250. package/src/PreventRemoveContext.tsx +1 -0
  251. package/src/PreventRemoveProvider.tsx +55 -56
  252. package/src/SceneView.tsx +31 -57
  253. package/src/StaticNavigation.tsx +715 -328
  254. package/src/StaticTreeContext.tsx +7 -0
  255. package/src/createNavigationContainerRef.tsx +12 -11
  256. package/src/createNavigatorFactory.tsx +92 -8
  257. package/src/findFocusedRoute.tsx +16 -16
  258. package/src/getActionFromState.tsx +87 -51
  259. package/src/getPathFromState.tsx +310 -134
  260. package/src/getPatternParts.tsx +98 -16
  261. package/src/getStateFromPath.tsx +971 -344
  262. package/src/getStateFromRouteParams.tsx +59 -0
  263. package/src/index.tsx +57 -6
  264. package/src/internal.tsx +2 -0
  265. package/src/isRecordEqual.tsx +3 -1
  266. package/src/queryString.ts +109 -0
  267. package/src/theming/useTheme.tsx +1 -1
  268. package/src/types.tsx +799 -377
  269. package/src/useDescriptors.tsx +151 -43
  270. package/src/useEventEmitter.tsx +53 -39
  271. package/src/useFocusEffect.tsx +5 -2
  272. package/src/useFocusEvents.tsx +19 -8
  273. package/src/useFocusedListenersChildrenAdapter.tsx +3 -3
  274. package/src/useIsFocused.tsx +18 -21
  275. package/src/useKeyedChildListeners.tsx +5 -2
  276. package/src/useLazyValue.tsx +2 -2
  277. package/src/useNavigation.tsx +9 -26
  278. package/src/useNavigationBuilder.tsx +370 -201
  279. package/src/useNavigationCache.tsx +148 -123
  280. package/src/useNavigationHelpers.tsx +27 -37
  281. package/src/useNavigationIndependentTree.tsx +1 -1
  282. package/src/useNavigationState.tsx +207 -69
  283. package/src/useOnAction.tsx +92 -18
  284. package/src/useOnGetNavigation.tsx +30 -0
  285. package/src/useOnGetState.tsx +8 -4
  286. package/src/useOnPreventRemove.tsx +78 -43
  287. package/src/useOnRouteFocus.tsx +11 -15
  288. package/src/useOptionsGetters.tsx +44 -30
  289. package/src/usePreventRemove.tsx +13 -5
  290. package/src/usePreventRemoveContext.tsx +2 -2
  291. package/src/useRegisterNavigator.tsx +4 -4
  292. package/src/useRoute.tsx +20 -6
  293. package/src/useRouteCache.tsx +57 -35
  294. package/src/useScheduleUpdate.tsx +13 -11
  295. package/src/useStateForPath.tsx +1 -1
  296. package/src/useSyncState.tsx +39 -15
  297. package/src/utilities.tsx +151 -35
  298. package/src/validatePathConfig.tsx +86 -57
  299. package/lib/module/CurrentRenderContext.js +0 -10
  300. package/lib/module/CurrentRenderContext.js.map +0 -1
  301. package/lib/module/NavigationMetaContext.js +0 -15
  302. package/lib/module/NavigationMetaContext.js.map +0 -1
  303. package/lib/module/checkSerializable.js +0 -46
  304. package/lib/module/checkSerializable.js.map +0 -1
  305. package/lib/module/useComponent.js +0 -34
  306. package/lib/module/useComponent.js.map +0 -1
  307. package/lib/module/useCurrentRender.js +0 -19
  308. package/lib/module/useCurrentRender.js.map +0 -1
  309. package/lib/typescript/src/CurrentRenderContext.d.ts +0 -9
  310. package/lib/typescript/src/CurrentRenderContext.d.ts.map +0 -1
  311. package/lib/typescript/src/NavigationMetaContext.d.ts +0 -12
  312. package/lib/typescript/src/NavigationMetaContext.d.ts.map +0 -1
  313. package/lib/typescript/src/checkSerializable.d.ts +0 -10
  314. package/lib/typescript/src/checkSerializable.d.ts.map +0 -1
  315. package/lib/typescript/src/useComponent.d.ts +0 -7
  316. package/lib/typescript/src/useComponent.d.ts.map +0 -1
  317. package/lib/typescript/src/useCurrentRender.d.ts +0 -14
  318. package/lib/typescript/src/useCurrentRender.d.ts.map +0 -1
  319. package/src/CurrentRenderContext.tsx +0 -9
  320. package/src/NavigationMetaContext.tsx +0 -14
  321. package/src/checkSerializable.tsx +0 -74
  322. package/src/useComponent.tsx +0 -37
  323. package/src/useCurrentRender.tsx +0 -31
@@ -0,0 +1,59 @@
1
+ import type { NavigationState, PartialState } from '@react-navigation/routers';
2
+
3
+ export function getStateFromRouteParams(
4
+ params: object | undefined
5
+ ): PartialState<NavigationState> | NavigationState | undefined {
6
+ if (params == null || typeof params !== 'object') {
7
+ return undefined;
8
+ }
9
+
10
+ if (
11
+ 'state' in params &&
12
+ params.state &&
13
+ typeof params.state === 'object' &&
14
+ 'routes' in params.state &&
15
+ Array.isArray(params.state.routes) &&
16
+ params.state.routes.every(
17
+ (route) =>
18
+ typeof route === 'object' &&
19
+ route != null &&
20
+ 'name' in route &&
21
+ typeof route.name === 'string'
22
+ )
23
+ ) {
24
+ // @ts-expect-error this is fine 🔥
25
+ return params.state;
26
+ }
27
+
28
+ if (
29
+ 'screen' in params &&
30
+ params.screen &&
31
+ typeof params.screen === 'string'
32
+ ) {
33
+ return {
34
+ routes: [
35
+ {
36
+ name: params.screen,
37
+ params:
38
+ 'params' in params &&
39
+ typeof params.params === 'object' &&
40
+ params.params != null
41
+ ? params.params
42
+ : undefined,
43
+ path:
44
+ 'path' in params && typeof params.path === 'string'
45
+ ? params.path
46
+ : undefined,
47
+ state:
48
+ 'params' in params &&
49
+ typeof params.params === 'object' &&
50
+ params.params != null
51
+ ? getStateFromRouteParams(params.params)
52
+ : undefined,
53
+ },
54
+ ],
55
+ };
56
+ }
57
+
58
+ return undefined;
59
+ }
package/src/index.tsx CHANGED
@@ -1,40 +1,90 @@
1
1
  export { BaseNavigationContainer } from './BaseNavigationContainer';
2
2
  export { createNavigationContainerRef } from './createNavigationContainerRef';
3
- export { createNavigatorFactory } from './createNavigatorFactory';
4
- export { CurrentRenderContext } from './CurrentRenderContext';
3
+ export {
4
+ createNavigatorFactory,
5
+ type TypedNavigatorFactory,
6
+ } from './createNavigatorFactory';
7
+ export { getLoaderForState as UNSTABLE_getLoaderForState } from './DataLoading';
5
8
  export { findFocusedRoute } from './findFocusedRoute';
6
9
  export { getActionFromState } from './getActionFromState';
7
10
  export { getFocusedRouteNameFromRoute } from './getFocusedRouteNameFromRoute';
8
11
  export { getPathFromState } from './getPathFromState';
9
12
  export { getStateFromPath } from './getStateFromPath';
10
13
  export { NavigationContainerRefContext } from './NavigationContainerRefContext';
14
+ export {
15
+ type FocusedRouteState,
16
+ NavigationFocusedRouteStateContext,
17
+ } from './NavigationFocusedRouteStateContext';
11
18
  export { NavigationHelpersContext } from './NavigationHelpersContext';
12
19
  export { NavigationIndependentTree } from './NavigationIndependentTree';
13
- export { NavigationMetaContext } from './NavigationMetaContext';
14
20
  export {
21
+ IsScreenContext,
15
22
  NavigationContext,
16
23
  NavigationProvider,
17
24
  NavigationRouteContext,
18
25
  } from './NavigationProvider';
26
+ export { NavigationRootContext } from './NavigationRootContext';
19
27
  export { PreventRemoveContext } from './PreventRemoveContext';
20
28
  export { PreventRemoveProvider } from './PreventRemoveProvider';
21
29
  export {
22
- createComponentForStaticNavigation,
23
30
  createPathConfigForStaticNavigation,
31
+ createScreenFactory,
24
32
  type StaticConfig,
25
33
  type StaticNavigation,
26
34
  type StaticParamList,
27
35
  type StaticScreenConfig,
28
36
  type StaticScreenConfigLinking,
29
37
  type StaticScreenConfigScreen,
38
+ type StaticScreenFactory,
30
39
  type StaticScreenProps,
31
40
  } from './StaticNavigation';
32
41
  export { ThemeContext } from './theming/ThemeContext';
33
42
  export { ThemeProvider } from './theming/ThemeProvider';
34
43
  export { useTheme } from './theming/useTheme';
35
- export * from './types';
44
+ export type {
45
+ CompositeNavigationProp,
46
+ CompositeScreenProps,
47
+ DefaultNavigatorOptions,
48
+ Descriptor,
49
+ EventArg,
50
+ EventConsumer,
51
+ EventEmitter,
52
+ EventListenerCallback,
53
+ EventMapBase,
54
+ EventMapCore,
55
+ GenericNavigation,
56
+ NavigationContainerEventMap,
57
+ NavigationContainerProps,
58
+ NavigationContainerRef,
59
+ NavigationContainerRefWithCurrent,
60
+ NavigationHelpers,
61
+ NavigationListBase,
62
+ NavigationListForNavigator,
63
+ NavigationListForNested,
64
+ NavigationProp,
65
+ NavigatorScreenParams,
66
+ NavigatorTypeBagBase,
67
+ NavigatorTypeBagFor,
68
+ NestedNavigatorsForParamList,
69
+ ParamListForNavigator,
70
+ PathConfig,
71
+ PathConfigMap,
72
+ RootNavigator,
73
+ RootParamList,
74
+ RouteConfig,
75
+ RouteConfigComponent,
76
+ RouteConfigProps,
77
+ RouteForName,
78
+ RouteGroupConfig,
79
+ RouteProp,
80
+ ScreenLayoutArgs,
81
+ ScreenListeners,
82
+ Theme,
83
+ TypedNavigator,
84
+ } from './types';
85
+ export { PrivateValueStore } from './types';
36
86
  export { useFocusEffect } from './useFocusEffect';
37
- export { useIsFocused } from './useIsFocused';
87
+ export { IsFocusedContext, useIsFocused } from './useIsFocused';
38
88
  export { useNavigation } from './useNavigation';
39
89
  export { useNavigationBuilder } from './useNavigationBuilder';
40
90
  export { useNavigationContainerRef } from './useNavigationContainerRef';
@@ -44,5 +94,6 @@ export { usePreventRemove } from './usePreventRemove';
44
94
  export { usePreventRemoveContext } from './usePreventRemoveContext';
45
95
  export { useRoute } from './useRoute';
46
96
  export { useStateForPath } from './useStateForPath';
97
+ export type { QueryParamInput, StandardSchemaV1 } from './utilities';
47
98
  export { validatePathConfig } from './validatePathConfig';
48
99
  export * from '@react-navigation/routers';
@@ -0,0 +1,2 @@
1
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface
2
+ export interface Theme {}
@@ -16,5 +16,7 @@ export function isRecordEqual(
16
16
  return false;
17
17
  }
18
18
 
19
- return aKeys.every((key) => Object.is(a[key], b[key]));
19
+ return aKeys.every(
20
+ (key) => Object.hasOwn(b, key) && Object.is(a[key], b[key])
21
+ );
20
22
  }
@@ -0,0 +1,109 @@
1
+ type QueryValue = string | null | (string | null)[];
2
+
3
+ // Match complete UTF-8 sequences so malformed input can be decoded partially
4
+ // without repeatedly splitting and retrying an arbitrarily long byte sequence.
5
+ const ENCODED_UTF8 = new RegExp(
6
+ [
7
+ '%[0-7][\\dA-F]',
8
+ '%(?:C[2-9A-F]|D[\\dA-F])%[89AB][\\dA-F]',
9
+ '%E0%[AB][\\dA-F]%[89AB][\\dA-F]',
10
+ '%E[1-9A-CEF](?:%[89AB][\\dA-F]){2}',
11
+ '%ED%[89][\\dA-F]%[89AB][\\dA-F]',
12
+ '%F0%[9AB][\\dA-F](?:%[89AB][\\dA-F]){2}',
13
+ '%F[1-3](?:%[89AB][\\dA-F]){3}',
14
+ '%F4%8[\\dA-F](?:%[89AB][\\dA-F]){2}',
15
+ ].join('|'),
16
+ 'gi'
17
+ );
18
+
19
+ const decode = (value: string) => {
20
+ if (!value.includes('%')) {
21
+ return value;
22
+ }
23
+
24
+ try {
25
+ return decodeURIComponent(value);
26
+ } catch {
27
+ return value.replace(ENCODED_UTF8, (sequence) =>
28
+ decodeURIComponent(sequence)
29
+ );
30
+ }
31
+ };
32
+
33
+ const encode = (value: string) => {
34
+ if (/^[A-Za-z0-9_.~-]*$/.test(value)) {
35
+ return value;
36
+ }
37
+
38
+ return encodeURIComponent(value).replace(
39
+ /[!'()*]/g,
40
+ (char) => `%${char.charCodeAt(0).toString(16).toUpperCase()}`
41
+ );
42
+ };
43
+
44
+ export function parse(query: string): Record<string, QueryValue> {
45
+ const params: Record<string, QueryValue> = Object.create(null);
46
+
47
+ query = query.trim().replace(/^[?#&]/, '');
48
+
49
+ let start = 0;
50
+
51
+ while (start < query.length) {
52
+ if (query[start] === '&') {
53
+ start++;
54
+ continue;
55
+ }
56
+
57
+ const end = query.indexOf('&', start);
58
+ const index = end === -1 ? query.length : end;
59
+ const part = query.slice(start, index).replace(/\+/g, ' ');
60
+ const separator = part.indexOf('=');
61
+ const key = decode(separator === -1 ? part : part.slice(0, separator));
62
+ const value = separator === -1 ? null : decode(part.slice(separator + 1));
63
+ const previous = params[key];
64
+
65
+ if (previous === undefined) {
66
+ params[key] = value;
67
+ } else if (Array.isArray(previous)) {
68
+ previous.push(value);
69
+ } else {
70
+ params[key] = [previous, value];
71
+ }
72
+
73
+ start = index + 1;
74
+ }
75
+
76
+ return params;
77
+ }
78
+
79
+ export function stringify(
80
+ params: Record<string, string | string[] | null>
81
+ ): string {
82
+ const parts: string[] = [];
83
+
84
+ for (const [key, value] of Object.entries(params)) {
85
+ if (Array.isArray(value)) {
86
+ let encodedKey: string | undefined;
87
+
88
+ value.forEach((item) => {
89
+ encodedKey ??= encode(key);
90
+
91
+ parts.push(`${encodedKey}=${encode(item)}`);
92
+ });
93
+
94
+ continue;
95
+ }
96
+
97
+ const encodedKey = encode(key);
98
+
99
+ if (value === null) {
100
+ if (encodedKey) {
101
+ parts.push(encodedKey);
102
+ }
103
+ } else {
104
+ parts.push(`${encodedKey}=${encode(value)}`);
105
+ }
106
+ }
107
+
108
+ return parts.join('&');
109
+ }
@@ -3,7 +3,7 @@ import * as React from 'react';
3
3
  import { ThemeContext } from './ThemeContext';
4
4
 
5
5
  export function useTheme() {
6
- const theme = React.useContext(ThemeContext);
6
+ const theme = React.use(ThemeContext);
7
7
 
8
8
  if (theme == null) {
9
9
  throw new Error(