@react-navigation/core 6.4.4 → 6.4.6

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 (353) hide show
  1. package/lib/commonjs/BaseNavigationContainer.js +17 -69
  2. package/lib/commonjs/BaseNavigationContainer.js.map +1 -1
  3. package/lib/commonjs/CurrentRenderContext.js +0 -4
  4. package/lib/commonjs/CurrentRenderContext.js.map +1 -1
  5. package/lib/commonjs/EnsureSingleNavigator.js +1 -12
  6. package/lib/commonjs/EnsureSingleNavigator.js.map +1 -1
  7. package/lib/commonjs/Group.js +0 -1
  8. package/lib/commonjs/Group.js.map +1 -1
  9. package/lib/commonjs/NavigationBuilderContext.js +0 -4
  10. package/lib/commonjs/NavigationBuilderContext.js.map +1 -1
  11. package/lib/commonjs/NavigationContainerRefContext.js +0 -4
  12. package/lib/commonjs/NavigationContainerRefContext.js.map +1 -1
  13. package/lib/commonjs/NavigationContext.js +0 -4
  14. package/lib/commonjs/NavigationContext.js.map +1 -1
  15. package/lib/commonjs/NavigationHelpersContext.js +0 -4
  16. package/lib/commonjs/NavigationHelpersContext.js.map +1 -1
  17. package/lib/commonjs/NavigationRouteContext.js +0 -4
  18. package/lib/commonjs/NavigationRouteContext.js.map +1 -1
  19. package/lib/commonjs/NavigationStateContext.js +0 -12
  20. package/lib/commonjs/NavigationStateContext.js.map +1 -1
  21. package/lib/commonjs/PreventRemoveContext.js +0 -4
  22. package/lib/commonjs/PreventRemoveContext.js.map +1 -1
  23. package/lib/commonjs/PreventRemoveProvider.js +3 -21
  24. package/lib/commonjs/PreventRemoveProvider.js.map +1 -1
  25. package/lib/commonjs/SceneView.js +8 -13
  26. package/lib/commonjs/SceneView.js.map +1 -1
  27. package/lib/commonjs/Screen.js +0 -1
  28. package/lib/commonjs/Screen.js.map +1 -1
  29. package/lib/commonjs/StaticContainer.js +0 -10
  30. package/lib/commonjs/StaticContainer.js.map +1 -1
  31. package/lib/commonjs/UnhandledActionContext.js +0 -4
  32. package/lib/commonjs/UnhandledActionContext.js.map +1 -1
  33. package/lib/commonjs/checkDuplicateRouteNames.js +0 -5
  34. package/lib/commonjs/checkDuplicateRouteNames.js.map +1 -1
  35. package/lib/commonjs/checkSerializable.js +0 -9
  36. package/lib/commonjs/checkSerializable.js.map +1 -1
  37. package/lib/commonjs/createNavigationContainerRef.js +0 -13
  38. package/lib/commonjs/createNavigationContainerRef.js.map +1 -1
  39. package/lib/commonjs/createNavigatorFactory.js +0 -5
  40. package/lib/commonjs/createNavigatorFactory.js.map +1 -1
  41. package/lib/commonjs/findFocusedRoute.js +5 -10
  42. package/lib/commonjs/findFocusedRoute.js.map +1 -1
  43. package/lib/commonjs/fromEntries.js +0 -3
  44. package/lib/commonjs/fromEntries.js.map +1 -1
  45. package/lib/commonjs/getActionFromState.js +11 -22
  46. package/lib/commonjs/getActionFromState.js.map +1 -1
  47. package/lib/commonjs/getFocusedRouteNameFromRoute.js +7 -8
  48. package/lib/commonjs/getFocusedRouteNameFromRoute.js.map +1 -1
  49. package/lib/commonjs/getPathFromState.js +25 -55
  50. package/lib/commonjs/getPathFromState.js.map +1 -1
  51. package/lib/commonjs/getStateFromPath.js +48 -105
  52. package/lib/commonjs/getStateFromPath.js.map +1 -1
  53. package/lib/commonjs/index.js +0 -30
  54. package/lib/commonjs/index.js.map +1 -1
  55. package/lib/commonjs/isArrayEqual.js +0 -3
  56. package/lib/commonjs/isArrayEqual.js.map +1 -1
  57. package/lib/commonjs/isRecordEqual.js +0 -4
  58. package/lib/commonjs/isRecordEqual.js.map +1 -1
  59. package/lib/commonjs/types.js +3 -5
  60. package/lib/commonjs/types.js.map +1 -1
  61. package/lib/commonjs/useChildListeners.js +0 -5
  62. package/lib/commonjs/useChildListeners.js.map +1 -1
  63. package/lib/commonjs/useComponent.js +3 -9
  64. package/lib/commonjs/useComponent.js.map +1 -1
  65. package/lib/commonjs/useCurrentRender.js +0 -7
  66. package/lib/commonjs/useCurrentRender.js.map +1 -1
  67. package/lib/commonjs/useDescriptors.js +11 -21
  68. package/lib/commonjs/useDescriptors.js.map +1 -1
  69. package/lib/commonjs/useEventEmitter.js +2 -24
  70. package/lib/commonjs/useEventEmitter.js.map +1 -1
  71. package/lib/commonjs/useFocusEffect.js +2 -20
  72. package/lib/commonjs/useFocusEffect.js.map +1 -1
  73. package/lib/commonjs/useFocusEvents.js +9 -15
  74. package/lib/commonjs/useFocusEvents.js.map +1 -1
  75. package/lib/commonjs/useFocusedListenersChildrenAdapter.js +0 -8
  76. package/lib/commonjs/useFocusedListenersChildrenAdapter.js.map +1 -1
  77. package/lib/commonjs/useIsFocused.js +0 -8
  78. package/lib/commonjs/useIsFocused.js.map +1 -1
  79. package/lib/commonjs/useKeyedChildListeners.js +0 -4
  80. package/lib/commonjs/useKeyedChildListeners.js.map +1 -1
  81. package/lib/commonjs/useNavigation.js +3 -11
  82. package/lib/commonjs/useNavigation.js.map +1 -1
  83. package/lib/commonjs/useNavigationBuilder.js +34 -91
  84. package/lib/commonjs/useNavigationBuilder.js.map +1 -1
  85. package/lib/commonjs/useNavigationCache.js +18 -30
  86. package/lib/commonjs/useNavigationCache.js.map +1 -1
  87. package/lib/commonjs/useNavigationContainerRef.js +0 -8
  88. package/lib/commonjs/useNavigationContainerRef.js.map +1 -1
  89. package/lib/commonjs/useNavigationHelpers.js +4 -18
  90. package/lib/commonjs/useNavigationHelpers.js.map +1 -1
  91. package/lib/commonjs/useNavigationState.js +5 -9
  92. package/lib/commonjs/useNavigationState.js.map +1 -1
  93. package/lib/commonjs/useOnAction.js +8 -25
  94. package/lib/commonjs/useOnAction.js.map +1 -1
  95. package/lib/commonjs/useOnGetState.js +6 -16
  96. package/lib/commonjs/useOnGetState.js.map +1 -1
  97. package/lib/commonjs/useOnPreventRemove.js +9 -24
  98. package/lib/commonjs/useOnPreventRemove.js.map +1 -1
  99. package/lib/commonjs/useOnRouteFocus.js +0 -8
  100. package/lib/commonjs/useOnRouteFocus.js.map +1 -1
  101. package/lib/commonjs/useOptionsGetters.js +5 -24
  102. package/lib/commonjs/useOptionsGetters.js.map +1 -1
  103. package/lib/commonjs/usePreventRemove.js +0 -11
  104. package/lib/commonjs/usePreventRemove.js.map +1 -1
  105. package/lib/commonjs/usePreventRemoveContext.js +0 -8
  106. package/lib/commonjs/usePreventRemoveContext.js.map +1 -1
  107. package/lib/commonjs/useRegisterNavigator.js +0 -8
  108. package/lib/commonjs/useRegisterNavigator.js.map +1 -1
  109. package/lib/commonjs/useRoute.js +0 -8
  110. package/lib/commonjs/useRoute.js.map +1 -1
  111. package/lib/commonjs/useRouteCache.js +1 -10
  112. package/lib/commonjs/useRouteCache.js.map +1 -1
  113. package/lib/commonjs/useScheduleUpdate.js +1 -8
  114. package/lib/commonjs/useScheduleUpdate.js.map +1 -1
  115. package/lib/commonjs/useSyncState.js +9 -17
  116. package/lib/commonjs/useSyncState.js.map +1 -1
  117. package/lib/commonjs/validatePathConfig.js +0 -7
  118. package/lib/commonjs/validatePathConfig.js.map +1 -1
  119. package/lib/module/BaseNavigationContainer.js +17 -46
  120. package/lib/module/BaseNavigationContainer.js.map +1 -1
  121. package/lib/module/CurrentRenderContext.js +1 -1
  122. package/lib/module/CurrentRenderContext.js.map +1 -1
  123. package/lib/module/EnsureSingleNavigator.js +1 -7
  124. package/lib/module/EnsureSingleNavigator.js.map +1 -1
  125. package/lib/module/Group.js.map +1 -1
  126. package/lib/module/NavigationBuilderContext.js +0 -1
  127. package/lib/module/NavigationBuilderContext.js.map +1 -1
  128. package/lib/module/NavigationContainerRefContext.js +0 -1
  129. package/lib/module/NavigationContainerRefContext.js.map +1 -1
  130. package/lib/module/NavigationContext.js +0 -1
  131. package/lib/module/NavigationContext.js.map +1 -1
  132. package/lib/module/NavigationHelpersContext.js +0 -1
  133. package/lib/module/NavigationHelpersContext.js.map +1 -1
  134. package/lib/module/NavigationRouteContext.js +1 -1
  135. package/lib/module/NavigationRouteContext.js.map +1 -1
  136. package/lib/module/NavigationStateContext.js +0 -6
  137. package/lib/module/NavigationStateContext.js.map +1 -1
  138. package/lib/module/PreventRemoveContext.js +1 -0
  139. package/lib/module/PreventRemoveContext.js.map +1 -1
  140. package/lib/module/PreventRemoveProvider.js +3 -12
  141. package/lib/module/PreventRemoveProvider.js.map +1 -1
  142. package/lib/module/SceneView.js +8 -5
  143. package/lib/module/SceneView.js.map +1 -1
  144. package/lib/module/Screen.js.map +1 -1
  145. package/lib/module/StaticContainer.js +1 -6
  146. package/lib/module/StaticContainer.js.map +1 -1
  147. package/lib/module/UnhandledActionContext.js.map +1 -1
  148. package/lib/module/checkDuplicateRouteNames.js +0 -4
  149. package/lib/module/checkDuplicateRouteNames.js.map +1 -1
  150. package/lib/module/checkSerializable.js +0 -8
  151. package/lib/module/checkSerializable.js.map +1 -1
  152. package/lib/module/createNavigationContainerRef.js +0 -10
  153. package/lib/module/createNavigationContainerRef.js.map +1 -1
  154. package/lib/module/createNavigatorFactory.js +0 -2
  155. package/lib/module/createNavigatorFactory.js.map +1 -1
  156. package/lib/module/findFocusedRoute.js +5 -9
  157. package/lib/module/findFocusedRoute.js.map +1 -1
  158. package/lib/module/fromEntries.js +0 -2
  159. package/lib/module/fromEntries.js.map +1 -1
  160. package/lib/module/getActionFromState.js +11 -21
  161. package/lib/module/getActionFromState.js.map +1 -1
  162. package/lib/module/getFocusedRouteNameFromRoute.js +7 -6
  163. package/lib/module/getFocusedRouteNameFromRoute.js.map +1 -1
  164. package/lib/module/getPathFromState.js +25 -49
  165. package/lib/module/getPathFromState.js.map +1 -1
  166. package/lib/module/getStateFromPath.js +48 -98
  167. package/lib/module/getStateFromPath.js.map +1 -1
  168. package/lib/module/index.js.map +1 -1
  169. package/lib/module/isArrayEqual.js +0 -2
  170. package/lib/module/isArrayEqual.js.map +1 -1
  171. package/lib/module/isRecordEqual.js +0 -3
  172. package/lib/module/isRecordEqual.js.map +1 -1
  173. package/lib/module/types.js +3 -3
  174. package/lib/module/types.js.map +1 -1
  175. package/lib/module/useChildListeners.js +0 -2
  176. package/lib/module/useChildListeners.js.map +1 -1
  177. package/lib/module/useComponent.js +3 -6
  178. package/lib/module/useComponent.js.map +1 -1
  179. package/lib/module/useCurrentRender.js +0 -2
  180. package/lib/module/useCurrentRender.js.map +1 -1
  181. package/lib/module/useDescriptors.js +11 -11
  182. package/lib/module/useDescriptors.js.map +1 -1
  183. package/lib/module/useEventEmitter.js +2 -21
  184. package/lib/module/useEventEmitter.js.map +1 -1
  185. package/lib/module/useFocusEffect.js +2 -15
  186. package/lib/module/useFocusEffect.js.map +1 -1
  187. package/lib/module/useFocusEvents.js +9 -10
  188. package/lib/module/useFocusEvents.js.map +1 -1
  189. package/lib/module/useFocusedListenersChildrenAdapter.js +0 -3
  190. package/lib/module/useFocusedListenersChildrenAdapter.js.map +1 -1
  191. package/lib/module/useIsFocused.js +1 -3
  192. package/lib/module/useIsFocused.js.map +1 -1
  193. package/lib/module/useKeyedChildListeners.js +0 -1
  194. package/lib/module/useKeyedChildListeners.js.map +1 -1
  195. package/lib/module/useNavigation.js +3 -5
  196. package/lib/module/useNavigation.js.map +1 -1
  197. package/lib/module/useNavigationBuilder.js +37 -63
  198. package/lib/module/useNavigationBuilder.js.map +1 -1
  199. package/lib/module/useNavigationCache.js +18 -24
  200. package/lib/module/useNavigationCache.js.map +1 -1
  201. package/lib/module/useNavigationContainerRef.js +0 -2
  202. package/lib/module/useNavigationContainerRef.js.map +1 -1
  203. package/lib/module/useNavigationHelpers.js +4 -9
  204. package/lib/module/useNavigationHelpers.js.map +1 -1
  205. package/lib/module/useNavigationState.js +5 -4
  206. package/lib/module/useNavigationState.js.map +1 -1
  207. package/lib/module/useOnAction.js +8 -19
  208. package/lib/module/useOnAction.js.map +1 -1
  209. package/lib/module/useOnGetState.js +6 -8
  210. package/lib/module/useOnGetState.js.map +1 -1
  211. package/lib/module/useOnPreventRemove.js +9 -14
  212. package/lib/module/useOnPreventRemove.js.map +1 -1
  213. package/lib/module/useOnRouteFocus.js +0 -3
  214. package/lib/module/useOnRouteFocus.js.map +1 -1
  215. package/lib/module/useOptionsGetters.js +5 -17
  216. package/lib/module/useOptionsGetters.js.map +1 -1
  217. package/lib/module/usePreventRemove.js +1 -2
  218. package/lib/module/usePreventRemove.js.map +1 -1
  219. package/lib/module/usePreventRemoveContext.js +0 -2
  220. package/lib/module/usePreventRemoveContext.js.map +1 -1
  221. package/lib/module/useRegisterNavigator.js +1 -3
  222. package/lib/module/useRegisterNavigator.js.map +1 -1
  223. package/lib/module/useRoute.js +0 -3
  224. package/lib/module/useRoute.js.map +1 -1
  225. package/lib/module/useRouteCache.js +1 -6
  226. package/lib/module/useRouteCache.js.map +1 -1
  227. package/lib/module/useScheduleUpdate.js +1 -3
  228. package/lib/module/useScheduleUpdate.js.map +1 -1
  229. package/lib/module/useSyncState.js +9 -13
  230. package/lib/module/useSyncState.js.map +1 -1
  231. package/lib/module/validatePathConfig.js +0 -6
  232. package/lib/module/validatePathConfig.js.map +1 -1
  233. package/lib/typescript/src/BaseNavigationContainer.d.ts +1 -0
  234. package/lib/typescript/src/BaseNavigationContainer.d.ts.map +1 -0
  235. package/lib/typescript/src/CurrentRenderContext.d.ts +1 -0
  236. package/lib/typescript/src/CurrentRenderContext.d.ts.map +1 -0
  237. package/lib/typescript/src/EnsureSingleNavigator.d.ts +1 -0
  238. package/lib/typescript/src/EnsureSingleNavigator.d.ts.map +1 -0
  239. package/lib/typescript/src/Group.d.ts +1 -0
  240. package/lib/typescript/src/Group.d.ts.map +1 -0
  241. package/lib/typescript/src/NavigationBuilderContext.d.ts +1 -0
  242. package/lib/typescript/src/NavigationBuilderContext.d.ts.map +1 -0
  243. package/lib/typescript/src/NavigationContainerRefContext.d.ts +1 -0
  244. package/lib/typescript/src/NavigationContainerRefContext.d.ts.map +1 -0
  245. package/lib/typescript/src/NavigationContext.d.ts +1 -0
  246. package/lib/typescript/src/NavigationContext.d.ts.map +1 -0
  247. package/lib/typescript/src/NavigationHelpersContext.d.ts +1 -0
  248. package/lib/typescript/src/NavigationHelpersContext.d.ts.map +1 -0
  249. package/lib/typescript/src/NavigationRouteContext.d.ts +1 -0
  250. package/lib/typescript/src/NavigationRouteContext.d.ts.map +1 -0
  251. package/lib/typescript/src/NavigationStateContext.d.ts +1 -0
  252. package/lib/typescript/src/NavigationStateContext.d.ts.map +1 -0
  253. package/lib/typescript/src/PreventRemoveContext.d.ts +1 -0
  254. package/lib/typescript/src/PreventRemoveContext.d.ts.map +1 -0
  255. package/lib/typescript/src/PreventRemoveProvider.d.ts +1 -0
  256. package/lib/typescript/src/PreventRemoveProvider.d.ts.map +1 -0
  257. package/lib/typescript/src/SceneView.d.ts +1 -0
  258. package/lib/typescript/src/SceneView.d.ts.map +1 -0
  259. package/lib/typescript/src/Screen.d.ts +1 -0
  260. package/lib/typescript/src/Screen.d.ts.map +1 -0
  261. package/lib/typescript/src/StaticContainer.d.ts +1 -0
  262. package/lib/typescript/src/StaticContainer.d.ts.map +1 -0
  263. package/lib/typescript/src/UnhandledActionContext.d.ts +1 -0
  264. package/lib/typescript/src/UnhandledActionContext.d.ts.map +1 -0
  265. package/lib/typescript/src/checkDuplicateRouteNames.d.ts +1 -0
  266. package/lib/typescript/src/checkDuplicateRouteNames.d.ts.map +1 -0
  267. package/lib/typescript/src/checkSerializable.d.ts +1 -0
  268. package/lib/typescript/src/checkSerializable.d.ts.map +1 -0
  269. package/lib/typescript/src/createNavigationContainerRef.d.ts +1 -0
  270. package/lib/typescript/src/createNavigationContainerRef.d.ts.map +1 -0
  271. package/lib/typescript/src/createNavigatorFactory.d.ts +1 -0
  272. package/lib/typescript/src/createNavigatorFactory.d.ts.map +1 -0
  273. package/lib/typescript/src/findFocusedRoute.d.ts +1 -0
  274. package/lib/typescript/src/findFocusedRoute.d.ts.map +1 -0
  275. package/lib/typescript/src/fromEntries.d.ts +1 -0
  276. package/lib/typescript/src/fromEntries.d.ts.map +1 -0
  277. package/lib/typescript/src/getActionFromState.d.ts +1 -0
  278. package/lib/typescript/src/getActionFromState.d.ts.map +1 -0
  279. package/lib/typescript/src/getFocusedRouteNameFromRoute.d.ts +1 -0
  280. package/lib/typescript/src/getFocusedRouteNameFromRoute.d.ts.map +1 -0
  281. package/lib/typescript/src/getPathFromState.d.ts +1 -0
  282. package/lib/typescript/src/getPathFromState.d.ts.map +1 -0
  283. package/lib/typescript/src/getStateFromPath.d.ts +1 -0
  284. package/lib/typescript/src/getStateFromPath.d.ts.map +1 -0
  285. package/lib/typescript/src/index.d.ts +1 -0
  286. package/lib/typescript/src/index.d.ts.map +1 -0
  287. package/lib/typescript/src/isArrayEqual.d.ts +1 -0
  288. package/lib/typescript/src/isArrayEqual.d.ts.map +1 -0
  289. package/lib/typescript/src/isRecordEqual.d.ts +1 -0
  290. package/lib/typescript/src/isRecordEqual.d.ts.map +1 -0
  291. package/lib/typescript/src/types.d.ts +1 -9
  292. package/lib/typescript/src/types.d.ts.map +1 -0
  293. package/lib/typescript/src/useChildListeners.d.ts +1 -0
  294. package/lib/typescript/src/useChildListeners.d.ts.map +1 -0
  295. package/lib/typescript/src/useComponent.d.ts +1 -0
  296. package/lib/typescript/src/useComponent.d.ts.map +1 -0
  297. package/lib/typescript/src/useCurrentRender.d.ts +1 -0
  298. package/lib/typescript/src/useCurrentRender.d.ts.map +1 -0
  299. package/lib/typescript/src/useDescriptors.d.ts +1 -0
  300. package/lib/typescript/src/useDescriptors.d.ts.map +1 -0
  301. package/lib/typescript/src/useEventEmitter.d.ts +1 -0
  302. package/lib/typescript/src/useEventEmitter.d.ts.map +1 -0
  303. package/lib/typescript/src/useFocusEffect.d.ts +1 -0
  304. package/lib/typescript/src/useFocusEffect.d.ts.map +1 -0
  305. package/lib/typescript/src/useFocusEvents.d.ts +1 -0
  306. package/lib/typescript/src/useFocusEvents.d.ts.map +1 -0
  307. package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts +1 -0
  308. package/lib/typescript/src/useFocusedListenersChildrenAdapter.d.ts.map +1 -0
  309. package/lib/typescript/src/useIsFocused.d.ts +1 -0
  310. package/lib/typescript/src/useIsFocused.d.ts.map +1 -0
  311. package/lib/typescript/src/useKeyedChildListeners.d.ts +1 -0
  312. package/lib/typescript/src/useKeyedChildListeners.d.ts.map +1 -0
  313. package/lib/typescript/src/useNavigation.d.ts +1 -0
  314. package/lib/typescript/src/useNavigation.d.ts.map +1 -0
  315. package/lib/typescript/src/useNavigationBuilder.d.ts +16 -3
  316. package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -0
  317. package/lib/typescript/src/useNavigationCache.d.ts +1 -0
  318. package/lib/typescript/src/useNavigationCache.d.ts.map +1 -0
  319. package/lib/typescript/src/useNavigationContainerRef.d.ts +1 -0
  320. package/lib/typescript/src/useNavigationContainerRef.d.ts.map +1 -0
  321. package/lib/typescript/src/useNavigationHelpers.d.ts +1 -0
  322. package/lib/typescript/src/useNavigationHelpers.d.ts.map +1 -0
  323. package/lib/typescript/src/useNavigationState.d.ts +1 -0
  324. package/lib/typescript/src/useNavigationState.d.ts.map +1 -0
  325. package/lib/typescript/src/useOnAction.d.ts +1 -0
  326. package/lib/typescript/src/useOnAction.d.ts.map +1 -0
  327. package/lib/typescript/src/useOnGetState.d.ts +1 -0
  328. package/lib/typescript/src/useOnGetState.d.ts.map +1 -0
  329. package/lib/typescript/src/useOnPreventRemove.d.ts +1 -0
  330. package/lib/typescript/src/useOnPreventRemove.d.ts.map +1 -0
  331. package/lib/typescript/src/useOnRouteFocus.d.ts +1 -0
  332. package/lib/typescript/src/useOnRouteFocus.d.ts.map +1 -0
  333. package/lib/typescript/src/useOptionsGetters.d.ts +1 -0
  334. package/lib/typescript/src/useOptionsGetters.d.ts.map +1 -0
  335. package/lib/typescript/src/usePreventRemove.d.ts +1 -0
  336. package/lib/typescript/src/usePreventRemove.d.ts.map +1 -0
  337. package/lib/typescript/src/usePreventRemoveContext.d.ts +1 -0
  338. package/lib/typescript/src/usePreventRemoveContext.d.ts.map +1 -0
  339. package/lib/typescript/src/useRegisterNavigator.d.ts +1 -0
  340. package/lib/typescript/src/useRegisterNavigator.d.ts.map +1 -0
  341. package/lib/typescript/src/useRoute.d.ts +1 -0
  342. package/lib/typescript/src/useRoute.d.ts.map +1 -0
  343. package/lib/typescript/src/useRouteCache.d.ts +1 -0
  344. package/lib/typescript/src/useRouteCache.d.ts.map +1 -0
  345. package/lib/typescript/src/useScheduleUpdate.d.ts +1 -0
  346. package/lib/typescript/src/useScheduleUpdate.d.ts.map +1 -0
  347. package/lib/typescript/src/useSyncState.d.ts +1 -0
  348. package/lib/typescript/src/useSyncState.d.ts.map +1 -0
  349. package/lib/typescript/src/validatePathConfig.d.ts +1 -0
  350. package/lib/typescript/src/validatePathConfig.d.ts.map +1 -0
  351. package/package.json +4 -4
  352. package/src/types.tsx +0 -11
  353. package/src/useNavigationBuilder.tsx +16 -0
@@ -4,89 +4,56 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = useNavigationBuilder;
7
-
8
7
  var _routers = require("@react-navigation/routers");
9
-
10
8
  var React = _interopRequireWildcard(require("react"));
11
-
12
9
  var _reactIs = require("react-is");
13
-
14
10
  var _Group = _interopRequireDefault(require("./Group"));
15
-
16
11
  var _isArrayEqual = _interopRequireDefault(require("./isArrayEqual"));
17
-
18
12
  var _isRecordEqual = _interopRequireDefault(require("./isRecordEqual"));
19
-
20
13
  var _NavigationHelpersContext = _interopRequireDefault(require("./NavigationHelpersContext"));
21
-
22
14
  var _NavigationRouteContext = _interopRequireDefault(require("./NavigationRouteContext"));
23
-
24
15
  var _NavigationStateContext = _interopRequireDefault(require("./NavigationStateContext"));
25
-
26
16
  var _PreventRemoveProvider = _interopRequireDefault(require("./PreventRemoveProvider"));
27
-
28
17
  var _Screen = _interopRequireDefault(require("./Screen"));
29
-
30
18
  var _types = require("./types");
31
-
32
19
  var _useChildListeners = _interopRequireDefault(require("./useChildListeners"));
33
-
34
20
  var _useComponent = _interopRequireDefault(require("./useComponent"));
35
-
36
21
  var _useCurrentRender = _interopRequireDefault(require("./useCurrentRender"));
37
-
38
22
  var _useDescriptors = _interopRequireDefault(require("./useDescriptors"));
39
-
40
23
  var _useEventEmitter = _interopRequireDefault(require("./useEventEmitter"));
41
-
42
24
  var _useFocusedListenersChildrenAdapter = _interopRequireDefault(require("./useFocusedListenersChildrenAdapter"));
43
-
44
25
  var _useFocusEvents = _interopRequireDefault(require("./useFocusEvents"));
45
-
46
26
  var _useKeyedChildListeners = _interopRequireDefault(require("./useKeyedChildListeners"));
47
-
48
27
  var _useNavigationHelpers = _interopRequireDefault(require("./useNavigationHelpers"));
49
-
50
28
  var _useOnAction = _interopRequireDefault(require("./useOnAction"));
51
-
52
29
  var _useOnGetState = _interopRequireDefault(require("./useOnGetState"));
53
-
54
30
  var _useOnRouteFocus = _interopRequireDefault(require("./useOnRouteFocus"));
55
-
56
31
  var _useRegisterNavigator = _interopRequireDefault(require("./useRegisterNavigator"));
57
-
58
32
  var _useScheduleUpdate = _interopRequireDefault(require("./useScheduleUpdate"));
59
-
60
33
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
61
-
62
34
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
63
-
64
35
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
65
-
66
36
  // This is to make TypeScript compiler happy
67
37
  // eslint-disable-next-line babel/no-unused-expressions
68
38
  _types.PrivateValueStore;
69
-
70
39
  const isValidKey = key => key === undefined || typeof key === 'string' && key !== '';
40
+
71
41
  /**
72
42
  * Extract route config object from React children elements.
73
43
  *
74
44
  * @param children React Elements to extract the config from.
75
45
  */
76
-
77
-
78
46
  const getRouteConfigsFromChildren = (children, groupKey, groupOptions) => {
79
47
  const configs = React.Children.toArray(children).reduce((acc, child) => {
80
48
  var _child$type, _child$props;
81
-
82
49
  if ( /*#__PURE__*/React.isValidElement(child)) {
83
50
  if (child.type === _Screen.default) {
84
51
  // We can only extract the config from `Screen` elements
85
52
  // If something else was rendered, it's probably a bug
53
+
86
54
  if (!isValidKey(child.props.navigationKey)) {
87
55
  throw new Error(`Got an invalid 'navigationKey' prop (${JSON.stringify(child.props.navigationKey)}) for the screen '${child.props.name}'. It must be a non-empty string or 'undefined'.`);
88
56
  }
89
-
90
57
  acc.push({
91
58
  keys: [groupKey, child.props.navigationKey],
92
59
  options: groupOptions,
@@ -94,22 +61,19 @@ const getRouteConfigsFromChildren = (children, groupKey, groupOptions) => {
94
61
  });
95
62
  return acc;
96
63
  }
97
-
98
64
  if (child.type === React.Fragment || child.type === _Group.default) {
99
65
  if (!isValidKey(child.props.navigationKey)) {
100
66
  throw new Error(`Got an invalid 'navigationKey' prop (${JSON.stringify(child.props.navigationKey)}) for the group. It must be a non-empty string or 'undefined'.`);
101
- } // When we encounter a fragment or group, we need to dive into its children to extract the configs
102
- // This is handy to conditionally define a group of screens
103
-
67
+ }
104
68
 
69
+ // When we encounter a fragment or group, we need to dive into its children to extract the configs
70
+ // This is handy to conditionally define a group of screens
105
71
  acc.push(...getRouteConfigsFromChildren(child.props.children, child.props.navigationKey, child.type !== _Group.default ? groupOptions : groupOptions != null ? [...groupOptions, child.props.screenOptions] : [child.props.screenOptions]));
106
72
  return acc;
107
73
  }
108
74
  }
109
-
110
75
  throw new Error(`A navigator can only contain 'Screen', 'Group' or 'React.Fragment' as its direct children (found ${/*#__PURE__*/React.isValidElement(child) ? `'${typeof child.type === 'string' ? child.type : (_child$type = child.type) === null || _child$type === void 0 ? void 0 : _child$type.name}'${(_child$props = child.props) !== null && _child$props !== void 0 && _child$props.name ? ` for the screen '${child.props.name}'` : ''}` : typeof child === 'object' ? JSON.stringify(child) : `'${String(child)}'`}). To render this component in the navigator, pass it in the 'component' prop to 'Screen'.`);
111
76
  }, []);
112
-
113
77
  if (process.env.NODE_ENV !== 'production') {
114
78
  configs.forEach(config => {
115
79
  const {
@@ -118,36 +82,28 @@ const getRouteConfigsFromChildren = (children, groupKey, groupOptions) => {
118
82
  component,
119
83
  getComponent
120
84
  } = config.props;
121
-
122
85
  if (typeof name !== 'string' || !name) {
123
86
  throw new Error(`Got an invalid name (${JSON.stringify(name)}) for the screen. It must be a non-empty string.`);
124
87
  }
125
-
126
88
  if (children != null || component !== undefined || getComponent !== undefined) {
127
89
  if (children != null && component !== undefined) {
128
90
  throw new Error(`Got both 'component' and 'children' props for the screen '${name}'. You must pass only one of them.`);
129
91
  }
130
-
131
92
  if (children != null && getComponent !== undefined) {
132
93
  throw new Error(`Got both 'getComponent' and 'children' props for the screen '${name}'. You must pass only one of them.`);
133
94
  }
134
-
135
95
  if (component !== undefined && getComponent !== undefined) {
136
96
  throw new Error(`Got both 'component' and 'getComponent' props for the screen '${name}'. You must pass only one of them.`);
137
97
  }
138
-
139
98
  if (children != null && typeof children !== 'function') {
140
99
  throw new Error(`Got an invalid value for 'children' prop for the screen '${name}'. It must be a function returning a React Element.`);
141
100
  }
142
-
143
101
  if (component !== undefined && !(0, _reactIs.isValidElementType)(component)) {
144
102
  throw new Error(`Got an invalid value for 'component' prop for the screen '${name}'. It must be a valid React Component.`);
145
103
  }
146
-
147
104
  if (getComponent !== undefined && typeof getComponent !== 'function') {
148
105
  throw new Error(`Got an invalid value for 'getComponent' prop for the screen '${name}'. It must be a function returning a React Component.`);
149
106
  }
150
-
151
107
  if (typeof component === 'function') {
152
108
  if (component.name === 'component') {
153
109
  // Inline anonymous functions passed in the `component` prop will have the name of the prop
@@ -163,9 +119,9 @@ const getRouteConfigsFromChildren = (children, groupKey, groupOptions) => {
163
119
  }
164
120
  });
165
121
  }
166
-
167
122
  return configs;
168
123
  };
124
+
169
125
  /**
170
126
  * Hook for building navigators.
171
127
  *
@@ -173,8 +129,6 @@ const getRouteConfigsFromChildren = (children, groupKey, groupOptions) => {
173
129
  * @param options Options object containing `children` and additional options for the router.
174
130
  * @returns An object containing `state`, `navigation`, `descriptors` objects.
175
131
  */
176
-
177
-
178
132
  function useNavigationBuilder(createRouter, options) {
179
133
  const navigatorKey = (0, _useRegisterNavigator.default)();
180
134
  const route = React.useContext(_NavigationRouteContext.default);
@@ -185,7 +139,8 @@ function useNavigationBuilder(createRouter, options) {
185
139
  } = options;
186
140
  const {
187
141
  current: router
188
- } = React.useRef(createRouter({ ...rest,
142
+ } = React.useRef(createRouter({
143
+ ...rest,
189
144
  ...(route !== null && route !== void 0 && route.params && route.params.state == null && route.params.initial !== false && typeof route.params.screen === 'string' ? {
190
145
  initialRouteName: route.params.screen
191
146
  } : null)
@@ -195,13 +150,12 @@ function useNavigationBuilder(createRouter, options) {
195
150
  if (config.props.name in acc) {
196
151
  throw new Error(`A navigator cannot contain multiple 'Screen' components with the same name (found duplicate screen named '${config.props.name}')`);
197
152
  }
198
-
199
153
  acc[config.props.name] = config;
200
154
  return acc;
201
155
  }, {});
202
156
  const routeNames = routeConfigs.map(config => config.props.name);
203
157
  const routeKeyList = routeNames.reduce((acc, curr) => {
204
- acc[curr] = screens[curr].keys.map(key => key !== null && key !== void 0 ? key : '').join(':');
158
+ acc[curr] = screens[curr].keys.map(key => key ?? '').join(':');
205
159
  return acc;
206
160
  }, {});
207
161
  const routeParamList = routeNames.reduce((acc, curr) => {
@@ -214,11 +168,9 @@ function useNavigationBuilder(createRouter, options) {
214
168
  const routeGetIdList = routeNames.reduce((acc, curr) => Object.assign(acc, {
215
169
  [curr]: screens[curr].props.getId
216
170
  }), {});
217
-
218
171
  if (!routeNames.length) {
219
172
  throw new Error("Couldn't find any screens for the navigator. Have you defined any screens as its children?");
220
173
  }
221
-
222
174
  const isStateValid = React.useCallback(state => state.type === undefined || state.type === router.type, [router.type]);
223
175
  const isStateInitialized = React.useCallback(state => state !== undefined && state.stale === false && isStateValid(state), [isStateValid]);
224
176
  const {
@@ -241,28 +193,27 @@ function useNavigationBuilder(createRouter, options) {
241
193
  // This would lead to old data preservation on main navigator unmount
242
194
  return;
243
195
  }
244
-
245
196
  setCurrentState(state);
246
197
  }, [setCurrentState]);
247
198
  const [initializedState, isFirstStateInitialization] = React.useMemo(() => {
248
199
  var _route$params4;
249
-
250
200
  const initialRouteParamList = routeNames.reduce((acc, curr) => {
251
201
  var _route$params, _route$params2, _route$params3;
252
-
253
202
  const {
254
203
  initialParams
255
204
  } = screens[curr].props;
256
205
  const initialParamsFromParams = (route === null || route === void 0 ? void 0 : (_route$params = route.params) === null || _route$params === void 0 ? void 0 : _route$params.state) == null && (route === null || route === void 0 ? void 0 : (_route$params2 = route.params) === null || _route$params2 === void 0 ? void 0 : _route$params2.initial) !== false && (route === null || route === void 0 ? void 0 : (_route$params3 = route.params) === null || _route$params3 === void 0 ? void 0 : _route$params3.screen) === curr ? route.params.params : undefined;
257
- acc[curr] = initialParams !== undefined || initialParamsFromParams !== undefined ? { ...initialParams,
206
+ acc[curr] = initialParams !== undefined || initialParamsFromParams !== undefined ? {
207
+ ...initialParams,
258
208
  ...initialParamsFromParams
259
209
  } : undefined;
260
210
  return acc;
261
- }, {}); // If the current state isn't initialized on first render, we initialize it
211
+ }, {});
212
+
213
+ // If the current state isn't initialized on first render, we initialize it
262
214
  // We also need to re-initialize it if the state passed from parent was changed (maybe due to reset)
263
215
  // Otherwise assume that the state was provided as initial state
264
216
  // So we need to rehydrate it to make it usable
265
-
266
217
  if ((currentState === undefined || !isStateValid(currentState)) && (route === null || route === void 0 ? void 0 : (_route$params4 = route.params) === null || _route$params4 === void 0 ? void 0 : _route$params4.state) == null) {
267
218
  return [router.getInitialState({
268
219
  routeNames,
@@ -270,32 +221,31 @@ function useNavigationBuilder(createRouter, options) {
270
221
  routeGetIdList
271
222
  }), true];
272
223
  } else {
273
- var _route$params$state, _route$params5;
274
-
275
- return [router.getRehydratedState((_route$params$state = route === null || route === void 0 ? void 0 : (_route$params5 = route.params) === null || _route$params5 === void 0 ? void 0 : _route$params5.state) !== null && _route$params$state !== void 0 ? _route$params$state : currentState, {
224
+ var _route$params5;
225
+ return [router.getRehydratedState((route === null || route === void 0 ? void 0 : (_route$params5 = route.params) === null || _route$params5 === void 0 ? void 0 : _route$params5.state) ?? currentState, {
276
226
  routeNames,
277
227
  routeParamList: initialRouteParamList,
278
228
  routeGetIdList
279
229
  }), false];
280
- } // We explicitly don't include routeNames, route.params etc. in the dep list
230
+ }
231
+ // We explicitly don't include routeNames, route.params etc. in the dep list
281
232
  // below. We want to avoid forcing a new state to be calculated in those cases
282
233
  // Instead, we handle changes to these in the nextState code below. Note
283
234
  // that some changes to routeConfigs are explicitly ignored, such as changes
284
235
  // to initialParams
285
236
  // eslint-disable-next-line react-hooks/exhaustive-deps
286
-
287
237
  }, [currentState, router, isStateValid]);
288
238
  const previousRouteKeyListRef = React.useRef(routeKeyList);
289
239
  React.useEffect(() => {
290
240
  previousRouteKeyListRef.current = routeKeyList;
291
241
  });
292
242
  const previousRouteKeyList = previousRouteKeyListRef.current;
293
- let state = // If the state isn't initialized, or stale, use the state we initialized instead
243
+ let state =
244
+ // If the state isn't initialized, or stale, use the state we initialized instead
294
245
  // The state won't update until there's a change needed in the state we have initalized locally
295
246
  // So it'll be `undefined` or stale until the first navigation event happens
296
247
  isStateInitialized(currentState) ? currentState : initializedState;
297
248
  let nextState = state;
298
-
299
249
  if (!(0, _isArrayEqual.default)(state.routeNames, routeNames) || !(0, _isRecordEqual.default)(routeKeyList, previousRouteKeyList)) {
300
250
  // When the list of route names change, the router should handle it to remove invalid routes
301
251
  nextState = router.getStateForRouteNamesChange(state, {
@@ -305,16 +255,13 @@ function useNavigationBuilder(createRouter, options) {
305
255
  routeKeyChanges: Object.keys(routeKeyList).filter(name => previousRouteKeyList.hasOwnProperty(name) && routeKeyList[name] !== previousRouteKeyList[name])
306
256
  });
307
257
  }
308
-
309
258
  const previousNestedParamsRef = React.useRef(route === null || route === void 0 ? void 0 : route.params);
310
259
  React.useEffect(() => {
311
260
  previousNestedParamsRef.current = route === null || route === void 0 ? void 0 : route.params;
312
261
  }, [route === null || route === void 0 ? void 0 : route.params]);
313
-
314
262
  if (route !== null && route !== void 0 && route.params) {
315
263
  const previousParams = previousNestedParamsRef.current;
316
264
  let action;
317
-
318
265
  if (typeof route.params.state === 'object' && route.params.state != null && route.params !== previousParams) {
319
266
  // If the route was updated with new state, we should reset to it
320
267
  action = _routers.CommonActions.reset(route.params.state);
@@ -325,9 +272,9 @@ function useNavigationBuilder(createRouter, options) {
325
272
  params: route.params.params,
326
273
  path: route.params.path
327
274
  });
328
- } // The update should be limited to current navigator only, so we call the router manually
329
-
275
+ }
330
276
 
277
+ // The update should be limited to current navigator only, so we call the router manually
331
278
  const updatedState = action ? router.getStateForAction(nextState, action, {
332
279
  routeNames,
333
280
  routeParamList,
@@ -339,28 +286,26 @@ function useNavigationBuilder(createRouter, options) {
339
286
  routeGetIdList
340
287
  }) : nextState;
341
288
  }
342
-
343
289
  const shouldUpdate = state !== nextState;
344
290
  (0, _useScheduleUpdate.default)(() => {
345
291
  if (shouldUpdate) {
346
292
  // If the state needs to be updated, we'll schedule an update
347
293
  setState(nextState);
348
294
  }
349
- }); // The up-to-date state will come in next render, but we don't need to wait for it
295
+ });
296
+
297
+ // The up-to-date state will come in next render, but we don't need to wait for it
350
298
  // We can't use the outdated state since the screens have changed, which will cause error due to mismatched config
351
299
  // So we override the state object we return to use the latest state as soon as possible
352
-
353
300
  state = nextState;
354
301
  React.useEffect(() => {
355
302
  setKey(navigatorKey);
356
-
357
303
  if (!getIsInitial()) {
358
304
  // If it's not initial render, we need to update the state
359
305
  // This will make sure that our container gets notifier of state changes due to new mounts
360
306
  // This is necessary for proper screen tracking, URL updates etc.
361
307
  setState(nextState);
362
308
  }
363
-
364
309
  return () => {
365
310
  // We need to clean up state for this navigator on unmount
366
311
  // We do it in a timeout because we need to detect if another navigator mounted in the meantime
@@ -371,11 +316,13 @@ function useNavigationBuilder(createRouter, options) {
371
316
  cleanUpState();
372
317
  }
373
318
  }, 0);
374
- }; // eslint-disable-next-line react-hooks/exhaustive-deps
375
- }, []); // We initialize this ref here to avoid a new getState getting initialized
319
+ };
320
+ // eslint-disable-next-line react-hooks/exhaustive-deps
321
+ }, []);
322
+
323
+ // We initialize this ref here to avoid a new getState getting initialized
376
324
  // whenever initializedState changes. We want getState to have access to the
377
325
  // latest initializedState, but don't need it to change when that happens
378
-
379
326
  const initializedStateRef = React.useRef();
380
327
  initializedStateRef.current = initializedState;
381
328
  const getState = React.useCallback(() => {
@@ -385,12 +332,9 @@ function useNavigationBuilder(createRouter, options) {
385
332
  const emitter = (0, _useEventEmitter.default)(e => {
386
333
  let routeNames = [];
387
334
  let route;
388
-
389
335
  if (e.target) {
390
336
  var _route;
391
-
392
337
  route = state.routes.find(route => route.key === e.target);
393
-
394
338
  if ((_route = route) !== null && _route !== void 0 && _route.name) {
395
339
  routeNames.push(route.name);
396
340
  }
@@ -398,17 +342,15 @@ function useNavigationBuilder(createRouter, options) {
398
342
  route = state.routes[state.index];
399
343
  routeNames.push(...Object.keys(screens).filter(name => {
400
344
  var _route2;
401
-
402
345
  return ((_route2 = route) === null || _route2 === void 0 ? void 0 : _route2.name) === name;
403
346
  }));
404
347
  }
405
-
406
348
  if (route == null) {
407
349
  return;
408
350
  }
409
-
410
351
  const navigation = descriptors[route.key].navigation;
411
- const listeners = [].concat( // Get an array of listeners for all screens + common listeners on navigator
352
+ const listeners = [].concat(
353
+ // Get an array of listeners for all screens + common listeners on navigator
412
354
  ...[screenListeners, ...routeNames.map(name => {
413
355
  const {
414
356
  listeners
@@ -420,7 +362,8 @@ function useNavigationBuilder(createRouter, options) {
420
362
  navigation
421
363
  }) : listeners;
422
364
  return map ? Object.keys(map).filter(type => type === e.type).map(type => map === null || map === void 0 ? void 0 : map[type]) : undefined;
423
- })) // We don't want same listener to be called multiple times for same event
365
+ }))
366
+ // We don't want same listener to be called multiple times for same event
424
367
  // So we remove any duplicate functions from the array
425
368
  .filter((cb, i, self) => cb && self.lastIndexOf(cb) === i);
426
369
  listeners.forEach(listener => listener === null || listener === void 0 ? void 0 : listener(e));
@@ -1 +1 @@
1
- {"version":3,"names":["PrivateValueStore","isValidKey","key","undefined","getRouteConfigsFromChildren","children","groupKey","groupOptions","configs","React","Children","toArray","reduce","acc","child","isValidElement","type","Screen","props","navigationKey","Error","JSON","stringify","name","push","keys","options","Fragment","Group","screenOptions","String","process","env","NODE_ENV","forEach","config","component","getComponent","isValidElementType","console","warn","test","useNavigationBuilder","createRouter","navigatorKey","useRegisterNavigator","route","useContext","NavigationRouteContext","screenListeners","rest","current","router","useRef","params","state","initial","screen","initialRouteName","routeConfigs","screens","routeNames","map","routeKeyList","curr","join","routeParamList","initialParams","routeGetIdList","Object","assign","getId","length","isStateValid","useCallback","isStateInitialized","stale","currentState","getState","getCurrentState","setState","setCurrentState","setKey","getKey","getIsInitial","NavigationStateContext","stateCleanedUp","cleanUpState","initializedState","isFirstStateInitialization","useMemo","initialRouteParamList","initialParamsFromParams","getInitialState","getRehydratedState","previousRouteKeyListRef","useEffect","previousRouteKeyList","nextState","isArrayEqual","isRecordEqual","getStateForRouteNamesChange","routeKeyChanges","filter","hasOwnProperty","previousNestedParamsRef","previousParams","action","CommonActions","reset","navigate","path","updatedState","getStateForAction","shouldUpdate","useScheduleUpdate","setTimeout","initializedStateRef","emitter","useEventEmitter","e","target","routes","find","index","navigation","descriptors","listeners","concat","cb","i","self","lastIndexOf","listener","useFocusEvents","emit","data","childListeners","addListener","useChildListeners","keyedListeners","addKeyedListener","useKeyedChildListeners","onAction","useOnAction","actionListeners","beforeRemoveListeners","beforeRemove","routerConfigOptions","onRouteFocus","useOnRouteFocus","useNavigationHelpers","id","useFocusedListenersChildrenAdapter","focusedListeners","focus","useOnGetState","getStateListeners","useDescriptors","defaultScreenOptions","useCurrentRender","NavigationContent","useComponent"],"sources":["useNavigationBuilder.tsx"],"sourcesContent":["import {\n CommonActions,\n DefaultRouterOptions,\n NavigationAction,\n NavigationState,\n ParamListBase,\n PartialState,\n Route,\n Router,\n RouterConfigOptions,\n RouterFactory,\n} from '@react-navigation/routers';\nimport * as React from 'react';\nimport { isValidElementType } from 'react-is';\n\nimport Group from './Group';\nimport isArrayEqual from './isArrayEqual';\nimport isRecordEqual from './isRecordEqual';\nimport NavigationHelpersContext from './NavigationHelpersContext';\nimport NavigationRouteContext from './NavigationRouteContext';\nimport NavigationStateContext from './NavigationStateContext';\nimport PreventRemoveProvider from './PreventRemoveProvider';\nimport Screen from './Screen';\nimport {\n DefaultNavigatorOptions,\n EventMapBase,\n EventMapCore,\n NavigatorScreenParams,\n PrivateValueStore,\n RouteConfig,\n} from './types';\nimport useChildListeners from './useChildListeners';\nimport useComponent from './useComponent';\nimport useCurrentRender from './useCurrentRender';\nimport useDescriptors, { ScreenConfigWithParent } from './useDescriptors';\nimport useEventEmitter from './useEventEmitter';\nimport useFocusedListenersChildrenAdapter from './useFocusedListenersChildrenAdapter';\nimport useFocusEvents from './useFocusEvents';\nimport useKeyedChildListeners from './useKeyedChildListeners';\nimport useNavigationHelpers from './useNavigationHelpers';\nimport useOnAction from './useOnAction';\nimport useOnGetState from './useOnGetState';\nimport useOnRouteFocus from './useOnRouteFocus';\nimport useRegisterNavigator from './useRegisterNavigator';\nimport useScheduleUpdate from './useScheduleUpdate';\n\n// This is to make TypeScript compiler happy\n// eslint-disable-next-line babel/no-unused-expressions\nPrivateValueStore;\n\ntype NavigatorRoute<State extends NavigationState> = {\n key: string;\n params?: NavigatorScreenParams<ParamListBase, State>;\n};\n\nconst isValidKey = (key: unknown) =>\n key === undefined || (typeof key === 'string' && key !== '');\n\n/**\n * Extract route config object from React children elements.\n *\n * @param children React Elements to extract the config from.\n */\nconst getRouteConfigsFromChildren = <\n State extends NavigationState,\n ScreenOptions extends {},\n EventMap extends EventMapBase\n>(\n children: React.ReactNode,\n groupKey?: string,\n groupOptions?: ScreenConfigWithParent<\n State,\n ScreenOptions,\n EventMap\n >['options']\n) => {\n const configs = React.Children.toArray(children).reduce<\n ScreenConfigWithParent<State, ScreenOptions, EventMap>[]\n >((acc, child) => {\n if (React.isValidElement(child)) {\n if (child.type === Screen) {\n // We can only extract the config from `Screen` elements\n // If something else was rendered, it's probably a bug\n\n if (!isValidKey(child.props.navigationKey)) {\n throw new Error(\n `Got an invalid 'navigationKey' prop (${JSON.stringify(\n child.props.navigationKey\n )}) for the screen '${\n child.props.name\n }'. It must be a non-empty string or 'undefined'.`\n );\n }\n\n acc.push({\n keys: [groupKey, child.props.navigationKey],\n options: groupOptions,\n props: child.props as RouteConfig<\n ParamListBase,\n string,\n State,\n ScreenOptions,\n EventMap\n >,\n });\n return acc;\n }\n\n if (child.type === React.Fragment || child.type === Group) {\n if (!isValidKey(child.props.navigationKey)) {\n throw new Error(\n `Got an invalid 'navigationKey' prop (${JSON.stringify(\n child.props.navigationKey\n )}) for the group. It must be a non-empty string or 'undefined'.`\n );\n }\n\n // When we encounter a fragment or group, we need to dive into its children to extract the configs\n // This is handy to conditionally define a group of screens\n acc.push(\n ...getRouteConfigsFromChildren<State, ScreenOptions, EventMap>(\n child.props.children,\n child.props.navigationKey,\n child.type !== Group\n ? groupOptions\n : groupOptions != null\n ? [...groupOptions, child.props.screenOptions]\n : [child.props.screenOptions]\n )\n );\n return acc;\n }\n }\n\n throw new Error(\n `A navigator can only contain 'Screen', 'Group' or 'React.Fragment' as its direct children (found ${\n React.isValidElement(child)\n ? `'${\n typeof child.type === 'string' ? child.type : child.type?.name\n }'${\n child.props?.name ? ` for the screen '${child.props.name}'` : ''\n }`\n : typeof child === 'object'\n ? JSON.stringify(child)\n : `'${String(child)}'`\n }). To render this component in the navigator, pass it in the 'component' prop to 'Screen'.`\n );\n }, []);\n\n if (process.env.NODE_ENV !== 'production') {\n configs.forEach((config) => {\n const { name, children, component, getComponent } = config.props;\n\n if (typeof name !== 'string' || !name) {\n throw new Error(\n `Got an invalid name (${JSON.stringify(\n name\n )}) for the screen. It must be a non-empty string.`\n );\n }\n\n if (\n children != null ||\n component !== undefined ||\n getComponent !== undefined\n ) {\n if (children != null && component !== undefined) {\n throw new Error(\n `Got both 'component' and 'children' props for the screen '${name}'. You must pass only one of them.`\n );\n }\n\n if (children != null && getComponent !== undefined) {\n throw new Error(\n `Got both 'getComponent' and 'children' props for the screen '${name}'. You must pass only one of them.`\n );\n }\n\n if (component !== undefined && getComponent !== undefined) {\n throw new Error(\n `Got both 'component' and 'getComponent' props for the screen '${name}'. You must pass only one of them.`\n );\n }\n\n if (children != null && typeof children !== 'function') {\n throw new Error(\n `Got an invalid value for 'children' prop for the screen '${name}'. It must be a function returning a React Element.`\n );\n }\n\n if (component !== undefined && !isValidElementType(component)) {\n throw new Error(\n `Got an invalid value for 'component' prop for the screen '${name}'. It must be a valid React Component.`\n );\n }\n\n if (getComponent !== undefined && typeof getComponent !== 'function') {\n throw new Error(\n `Got an invalid value for 'getComponent' prop for the screen '${name}'. It must be a function returning a React Component.`\n );\n }\n\n if (typeof component === 'function') {\n if (component.name === 'component') {\n // Inline anonymous functions passed in the `component` prop will have the name of the prop\n // It's relatively safe to assume that it's not a component since it should also have PascalCase name\n // We won't catch all scenarios here, but this should catch a good chunk of incorrect use.\n console.warn(\n `Looks like you're passing an inline function for 'component' prop for the screen '${name}' (e.g. component={() => <SomeComponent />}). Passing an inline function will cause the component state to be lost on re-render and cause perf issues since it's re-created every render. You can pass the function as children to 'Screen' instead to achieve the desired behaviour.`\n );\n } else if (/^[a-z]/.test(component.name)) {\n console.warn(\n `Got a component with the name '${component.name}' for the screen '${name}'. React Components must start with an uppercase letter. If you're passing a regular function and not a component, pass it as children to 'Screen' instead. Otherwise capitalize your component's name.`\n );\n }\n }\n } else {\n throw new Error(\n `Couldn't find a 'component', 'getComponent' or 'children' prop for the screen '${name}'. This can happen if you passed 'undefined'. You likely forgot to export your component from the file it's defined in, or mixed up default import and named import when importing.`\n );\n }\n });\n }\n\n return configs;\n};\n\n/**\n * Hook for building navigators.\n *\n * @param createRouter Factory method which returns router object.\n * @param options Options object containing `children` and additional options for the router.\n * @returns An object containing `state`, `navigation`, `descriptors` objects.\n */\nexport default function useNavigationBuilder<\n State extends NavigationState,\n RouterOptions extends DefaultRouterOptions,\n ActionHelpers extends Record<string, () => void>,\n ScreenOptions extends {},\n EventMap extends Record<string, any>\n>(\n createRouter: RouterFactory<State, any, RouterOptions>,\n options: DefaultNavigatorOptions<\n ParamListBase,\n State,\n ScreenOptions,\n EventMap\n > &\n RouterOptions\n) {\n const navigatorKey = useRegisterNavigator();\n\n const route = React.useContext(NavigationRouteContext) as\n | NavigatorRoute<State>\n | undefined;\n\n const { children, screenListeners, ...rest } = options;\n const { current: router } = React.useRef<Router<State, any>>(\n createRouter({\n ...(rest as unknown as RouterOptions),\n ...(route?.params &&\n route.params.state == null &&\n route.params.initial !== false &&\n typeof route.params.screen === 'string'\n ? { initialRouteName: route.params.screen }\n : null),\n })\n );\n\n const routeConfigs = getRouteConfigsFromChildren<\n State,\n ScreenOptions,\n EventMap\n >(children);\n\n const screens = routeConfigs.reduce<\n Record<string, ScreenConfigWithParent<State, ScreenOptions, EventMap>>\n >((acc, config) => {\n if (config.props.name in acc) {\n throw new Error(\n `A navigator cannot contain multiple 'Screen' components with the same name (found duplicate screen named '${config.props.name}')`\n );\n }\n\n acc[config.props.name] = config;\n return acc;\n }, {});\n\n const routeNames = routeConfigs.map((config) => config.props.name);\n const routeKeyList = routeNames.reduce<Record<string, React.Key | undefined>>(\n (acc, curr) => {\n acc[curr] = screens[curr].keys.map((key) => key ?? '').join(':');\n return acc;\n },\n {}\n );\n const routeParamList = routeNames.reduce<Record<string, object | undefined>>(\n (acc, curr) => {\n const { initialParams } = screens[curr].props;\n acc[curr] = initialParams;\n return acc;\n },\n {}\n );\n const routeGetIdList = routeNames.reduce<\n RouterConfigOptions['routeGetIdList']\n >(\n (acc, curr) =>\n Object.assign(acc, {\n [curr]: screens[curr].props.getId,\n }),\n {}\n );\n\n if (!routeNames.length) {\n throw new Error(\n \"Couldn't find any screens for the navigator. Have you defined any screens as its children?\"\n );\n }\n\n const isStateValid = React.useCallback(\n (state: NavigationState | PartialState<NavigationState>) =>\n state.type === undefined || state.type === router.type,\n [router.type]\n );\n\n const isStateInitialized = React.useCallback(\n (state: NavigationState | PartialState<NavigationState> | undefined) =>\n state !== undefined && state.stale === false && isStateValid(state),\n [isStateValid]\n );\n\n const {\n state: currentState,\n getState: getCurrentState,\n setState: setCurrentState,\n setKey,\n getKey,\n getIsInitial,\n } = React.useContext(NavigationStateContext);\n\n const stateCleanedUp = React.useRef(false);\n\n const cleanUpState = React.useCallback(() => {\n setCurrentState(undefined);\n stateCleanedUp.current = true;\n }, [setCurrentState]);\n\n const setState = React.useCallback(\n (state: NavigationState | PartialState<NavigationState> | undefined) => {\n if (stateCleanedUp.current) {\n // State might have been already cleaned up due to unmount\n // We do not want to expose API allowing to override this\n // This would lead to old data preservation on main navigator unmount\n return;\n }\n setCurrentState(state);\n },\n [setCurrentState]\n );\n\n const [initializedState, isFirstStateInitialization] = React.useMemo(() => {\n const initialRouteParamList = routeNames.reduce<\n Record<string, object | undefined>\n >((acc, curr) => {\n const { initialParams } = screens[curr].props;\n const initialParamsFromParams =\n route?.params?.state == null &&\n route?.params?.initial !== false &&\n route?.params?.screen === curr\n ? route.params.params\n : undefined;\n\n acc[curr] =\n initialParams !== undefined || initialParamsFromParams !== undefined\n ? {\n ...initialParams,\n ...initialParamsFromParams,\n }\n : undefined;\n\n return acc;\n }, {});\n\n // If the current state isn't initialized on first render, we initialize it\n // We also need to re-initialize it if the state passed from parent was changed (maybe due to reset)\n // Otherwise assume that the state was provided as initial state\n // So we need to rehydrate it to make it usable\n if (\n (currentState === undefined || !isStateValid(currentState)) &&\n route?.params?.state == null\n ) {\n return [\n router.getInitialState({\n routeNames,\n routeParamList: initialRouteParamList,\n routeGetIdList,\n }),\n true,\n ];\n } else {\n return [\n router.getRehydratedState(\n route?.params?.state ?? (currentState as PartialState<State>),\n {\n routeNames,\n routeParamList: initialRouteParamList,\n routeGetIdList,\n }\n ),\n false,\n ];\n }\n // We explicitly don't include routeNames, route.params etc. in the dep list\n // below. We want to avoid forcing a new state to be calculated in those cases\n // Instead, we handle changes to these in the nextState code below. Note\n // that some changes to routeConfigs are explicitly ignored, such as changes\n // to initialParams\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentState, router, isStateValid]);\n\n const previousRouteKeyListRef = React.useRef(routeKeyList);\n\n React.useEffect(() => {\n previousRouteKeyListRef.current = routeKeyList;\n });\n\n const previousRouteKeyList = previousRouteKeyListRef.current;\n\n let state =\n // If the state isn't initialized, or stale, use the state we initialized instead\n // The state won't update until there's a change needed in the state we have initalized locally\n // So it'll be `undefined` or stale until the first navigation event happens\n isStateInitialized(currentState)\n ? (currentState as State)\n : (initializedState as State);\n\n let nextState: State = state;\n\n if (\n !isArrayEqual(state.routeNames, routeNames) ||\n !isRecordEqual(routeKeyList, previousRouteKeyList)\n ) {\n // When the list of route names change, the router should handle it to remove invalid routes\n nextState = router.getStateForRouteNamesChange(state, {\n routeNames,\n routeParamList,\n routeGetIdList,\n routeKeyChanges: Object.keys(routeKeyList).filter(\n (name) =>\n previousRouteKeyList.hasOwnProperty(name) &&\n routeKeyList[name] !== previousRouteKeyList[name]\n ),\n });\n }\n\n const previousNestedParamsRef = React.useRef(route?.params);\n\n React.useEffect(() => {\n previousNestedParamsRef.current = route?.params;\n }, [route?.params]);\n\n if (route?.params) {\n const previousParams = previousNestedParamsRef.current;\n\n let action: CommonActions.Action | undefined;\n\n if (\n typeof route.params.state === 'object' &&\n route.params.state != null &&\n route.params !== previousParams\n ) {\n // If the route was updated with new state, we should reset to it\n action = CommonActions.reset(route.params.state);\n } else if (\n typeof route.params.screen === 'string' &&\n ((route.params.initial === false && isFirstStateInitialization) ||\n route.params !== previousParams)\n ) {\n // If the route was updated with new screen name and/or params, we should navigate there\n action = CommonActions.navigate({\n name: route.params.screen,\n params: route.params.params,\n path: route.params.path,\n });\n }\n\n // The update should be limited to current navigator only, so we call the router manually\n const updatedState = action\n ? router.getStateForAction(nextState, action, {\n routeNames,\n routeParamList,\n routeGetIdList,\n })\n : null;\n\n nextState =\n updatedState !== null\n ? router.getRehydratedState(updatedState, {\n routeNames,\n routeParamList,\n routeGetIdList,\n })\n : nextState;\n }\n\n const shouldUpdate = state !== nextState;\n\n useScheduleUpdate(() => {\n if (shouldUpdate) {\n // If the state needs to be updated, we'll schedule an update\n setState(nextState);\n }\n });\n\n // The up-to-date state will come in next render, but we don't need to wait for it\n // We can't use the outdated state since the screens have changed, which will cause error due to mismatched config\n // So we override the state object we return to use the latest state as soon as possible\n state = nextState;\n\n React.useEffect(() => {\n setKey(navigatorKey);\n\n if (!getIsInitial()) {\n // If it's not initial render, we need to update the state\n // This will make sure that our container gets notifier of state changes due to new mounts\n // This is necessary for proper screen tracking, URL updates etc.\n setState(nextState);\n }\n\n return () => {\n // We need to clean up state for this navigator on unmount\n // We do it in a timeout because we need to detect if another navigator mounted in the meantime\n // For example, if another navigator has started rendering, we should skip cleanup\n // Otherwise, our cleanup step will cleanup state for the other navigator and re-initialize it\n setTimeout(() => {\n if (getCurrentState() !== undefined && getKey() === navigatorKey) {\n cleanUpState();\n }\n }, 0);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // We initialize this ref here to avoid a new getState getting initialized\n // whenever initializedState changes. We want getState to have access to the\n // latest initializedState, but don't need it to change when that happens\n const initializedStateRef = React.useRef<State>();\n initializedStateRef.current = initializedState;\n\n const getState = React.useCallback((): State => {\n const currentState = getCurrentState();\n\n return isStateInitialized(currentState)\n ? (currentState as State)\n : (initializedStateRef.current as State);\n }, [getCurrentState, isStateInitialized]);\n\n const emitter = useEventEmitter<EventMapCore<State>>((e) => {\n let routeNames = [];\n\n let route: Route<string> | undefined;\n\n if (e.target) {\n route = state.routes.find((route) => route.key === e.target);\n\n if (route?.name) {\n routeNames.push(route.name);\n }\n } else {\n route = state.routes[state.index];\n routeNames.push(\n ...Object.keys(screens).filter((name) => route?.name === name)\n );\n }\n\n if (route == null) {\n return;\n }\n\n const navigation = descriptors[route.key].navigation;\n\n const listeners = ([] as (((e: any) => void) | undefined)[])\n .concat(\n // Get an array of listeners for all screens + common listeners on navigator\n ...[\n screenListeners,\n ...routeNames.map((name) => {\n const { listeners } = screens[name].props;\n return listeners;\n }),\n ].map((listeners) => {\n const map =\n typeof listeners === 'function'\n ? listeners({ route: route as any, navigation })\n : listeners;\n\n return map\n ? Object.keys(map)\n .filter((type) => type === e.type)\n .map((type) => map?.[type])\n : undefined;\n })\n )\n // We don't want same listener to be called multiple times for same event\n // So we remove any duplicate functions from the array\n .filter((cb, i, self) => cb && self.lastIndexOf(cb) === i);\n\n listeners.forEach((listener) => listener?.(e));\n });\n\n useFocusEvents({ state, emitter });\n\n React.useEffect(() => {\n emitter.emit({ type: 'state', data: { state } });\n }, [emitter, state]);\n\n const { listeners: childListeners, addListener } = useChildListeners();\n\n const { keyedListeners, addKeyedListener } = useKeyedChildListeners();\n\n const onAction = useOnAction({\n router,\n getState,\n setState,\n key: route?.key,\n actionListeners: childListeners.action,\n beforeRemoveListeners: keyedListeners.beforeRemove,\n routerConfigOptions: {\n routeNames,\n routeParamList,\n routeGetIdList,\n },\n emitter,\n });\n\n const onRouteFocus = useOnRouteFocus({\n router,\n key: route?.key,\n getState,\n setState,\n });\n\n const navigation = useNavigationHelpers<\n State,\n ActionHelpers,\n NavigationAction,\n EventMap\n >({\n id: options.id,\n onAction,\n getState,\n emitter,\n router,\n });\n\n useFocusedListenersChildrenAdapter({\n navigation,\n focusedListeners: childListeners.focus,\n });\n\n useOnGetState({\n getState,\n getStateListeners: keyedListeners.getState,\n });\n\n const descriptors = useDescriptors<\n State,\n ActionHelpers,\n ScreenOptions,\n EventMap\n >({\n state,\n screens,\n navigation,\n screenOptions: options.screenOptions,\n defaultScreenOptions: options.defaultScreenOptions,\n onAction,\n getState,\n setState,\n onRouteFocus,\n addListener,\n addKeyedListener,\n router,\n // @ts-expect-error: this should have both core and custom events, but too much work right now\n emitter,\n });\n\n useCurrentRender({\n state,\n navigation,\n descriptors,\n });\n\n const NavigationContent = useComponent((children: React.ReactNode) => (\n <NavigationHelpersContext.Provider value={navigation}>\n <PreventRemoveProvider>{children}</PreventRemoveProvider>\n </NavigationHelpersContext.Provider>\n ));\n\n return {\n state,\n navigation,\n descriptors,\n NavigationContent,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["PrivateValueStore","isValidKey","key","undefined","getRouteConfigsFromChildren","children","groupKey","groupOptions","configs","React","Children","toArray","reduce","acc","child","isValidElement","type","Screen","props","navigationKey","Error","JSON","stringify","name","push","keys","options","Fragment","Group","screenOptions","String","process","env","NODE_ENV","forEach","config","component","getComponent","isValidElementType","console","warn","test","useNavigationBuilder","createRouter","navigatorKey","useRegisterNavigator","route","useContext","NavigationRouteContext","screenListeners","rest","current","router","useRef","params","state","initial","screen","initialRouteName","routeConfigs","screens","routeNames","map","routeKeyList","curr","join","routeParamList","initialParams","routeGetIdList","Object","assign","getId","length","isStateValid","useCallback","isStateInitialized","stale","currentState","getState","getCurrentState","setState","setCurrentState","setKey","getKey","getIsInitial","NavigationStateContext","stateCleanedUp","cleanUpState","initializedState","isFirstStateInitialization","useMemo","initialRouteParamList","initialParamsFromParams","getInitialState","getRehydratedState","previousRouteKeyListRef","useEffect","previousRouteKeyList","nextState","isArrayEqual","isRecordEqual","getStateForRouteNamesChange","routeKeyChanges","filter","hasOwnProperty","previousNestedParamsRef","previousParams","action","CommonActions","reset","navigate","path","updatedState","getStateForAction","shouldUpdate","useScheduleUpdate","setTimeout","initializedStateRef","emitter","useEventEmitter","e","target","routes","find","index","navigation","descriptors","listeners","concat","cb","i","self","lastIndexOf","listener","useFocusEvents","emit","data","childListeners","addListener","useChildListeners","keyedListeners","addKeyedListener","useKeyedChildListeners","onAction","useOnAction","actionListeners","beforeRemoveListeners","beforeRemove","routerConfigOptions","onRouteFocus","useOnRouteFocus","useNavigationHelpers","id","useFocusedListenersChildrenAdapter","focusedListeners","focus","useOnGetState","getStateListeners","useDescriptors","defaultScreenOptions","useCurrentRender","NavigationContent","useComponent"],"sourceRoot":"../../src","sources":["useNavigationBuilder.tsx"],"mappings":"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"}