@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,19 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = useNavigationCache;
7
-
8
7
  var _routers = require("@react-navigation/routers");
9
-
10
8
  var React = _interopRequireWildcard(require("react"));
11
-
12
9
  var _NavigationBuilderContext = _interopRequireDefault(require("./NavigationBuilderContext"));
13
-
14
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
11
  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); }
17
-
18
12
  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; }
19
-
20
13
  /**
21
14
  * Hook to cache navigation objects for each screen in the navigator.
22
15
  * It's important to cache them to make sure navigation objects don't change between renders.
@@ -33,20 +26,22 @@ function useNavigationCache(_ref) {
33
26
  } = _ref;
34
27
  const {
35
28
  stackRef
36
- } = React.useContext(_NavigationBuilderContext.default); // Cache object which holds navigation objects for each screen
29
+ } = React.useContext(_NavigationBuilderContext.default);
30
+
31
+ // Cache object which holds navigation objects for each screen
37
32
  // We use `React.useMemo` instead of `React.useRef` coz we want to invalidate it when deps change
38
33
  // In reality, these deps will rarely change, if ever
39
-
40
34
  const cache = React.useMemo(() => ({
41
35
  current: {}
42
- }), // eslint-disable-next-line react-hooks/exhaustive-deps
36
+ }),
37
+ // eslint-disable-next-line react-hooks/exhaustive-deps
43
38
  [getState, navigation, setOptions, router, emitter]);
44
- const actions = { ...router.actionCreators,
39
+ const actions = {
40
+ ...router.actionCreators,
45
41
  ..._routers.CommonActions
46
42
  };
47
43
  cache.current = state.routes.reduce((acc, route) => {
48
44
  const previous = cache.current[route.key];
49
-
50
45
  if (previous) {
51
46
  // If a cached navigation object already exists, reuse it
52
47
  acc[route.key] = previous;
@@ -56,10 +51,8 @@ function useNavigationCache(_ref) {
56
51
  emit,
57
52
  ...rest
58
53
  } = navigation;
59
-
60
54
  const dispatch = thunk => {
61
55
  const action = typeof thunk === 'function' ? thunk(getState()) : thunk;
62
-
63
56
  if (action != null) {
64
57
  navigation.dispatch({
65
58
  source: route.key,
@@ -67,17 +60,14 @@ function useNavigationCache(_ref) {
67
60
  });
68
61
  }
69
62
  };
70
-
71
63
  const withStack = callback => {
72
64
  let isStackSet = false;
73
-
74
65
  try {
75
66
  if (process.env.NODE_ENV !== 'production' && stackRef && !stackRef.current) {
76
67
  // Capture the stack trace for devtools
77
68
  stackRef.current = new Error().stack;
78
69
  isStackSet = true;
79
70
  }
80
-
81
71
  callback();
82
72
  } finally {
83
73
  if (isStackSet && stackRef) {
@@ -85,20 +75,19 @@ function useNavigationCache(_ref) {
85
75
  }
86
76
  }
87
77
  };
88
-
89
78
  const helpers = Object.keys(actions).reduce((acc, name) => {
90
79
  acc[name] = function () {
91
80
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
92
81
  args[_key] = arguments[_key];
93
82
  }
94
-
95
- return withStack(() => // @ts-expect-error: name is a valid key, but TypeScript is dumb
83
+ return withStack(() =>
84
+ // @ts-expect-error: name is a valid key, but TypeScript is dumb
96
85
  dispatch(actions[name](...args)));
97
86
  };
98
-
99
87
  return acc;
100
88
  }, {});
101
- acc[route.key] = { ...rest,
89
+ acc[route.key] = {
90
+ ...rest,
102
91
  ...helpers,
103
92
  // FIXME: too much work to fix the types for now
104
93
  ...emitter.create(route.key),
@@ -109,28 +98,27 @@ function useNavigationCache(_ref) {
109
98
  // we return the cached navigation object for the relevant route
110
99
  return acc[route.key];
111
100
  }
112
-
113
101
  return rest.getParent(id);
114
102
  },
115
- setOptions: options => setOptions(o => ({ ...o,
116
- [route.key]: { ...o[route.key],
103
+ setOptions: options => setOptions(o => ({
104
+ ...o,
105
+ [route.key]: {
106
+ ...o[route.key],
117
107
  ...options
118
108
  }
119
109
  })),
120
110
  isFocused: () => {
121
111
  const state = getState();
122
-
123
112
  if (state.routes[state.index].key !== route.key) {
124
113
  return false;
125
- } // If the current screen is focused, we also need to check if parent navigator is focused
126
- // This makes sure that we return the focus state in the whole tree, not just this navigator
127
-
114
+ }
128
115
 
116
+ // If the current screen is focused, we also need to check if parent navigator is focused
117
+ // This makes sure that we return the focus state in the whole tree, not just this navigator
129
118
  return navigation ? navigation.isFocused() : true;
130
119
  }
131
120
  };
132
121
  }
133
-
134
122
  return acc;
135
123
  }, {});
136
124
  return cache.current;
@@ -1 +1 @@
1
- {"version":3,"names":["useNavigationCache","state","getState","navigation","setOptions","router","emitter","stackRef","React","useContext","NavigationBuilderContext","cache","useMemo","current","actions","actionCreators","CommonActions","routes","reduce","acc","route","previous","key","emit","rest","dispatch","thunk","action","source","withStack","callback","isStackSet","process","env","NODE_ENV","Error","stack","undefined","helpers","Object","keys","name","args","create","getParent","id","getId","options","o","isFocused","index"],"sources":["useNavigationCache.tsx"],"sourcesContent":["import {\n CommonActions,\n NavigationAction,\n NavigationState,\n ParamListBase,\n Router,\n} from '@react-navigation/routers';\nimport * as React from 'react';\n\nimport NavigationBuilderContext from './NavigationBuilderContext';\nimport type { NavigationHelpers, NavigationProp } from './types';\nimport type { NavigationEventEmitter } from './useEventEmitter';\n\ntype Options<\n State extends NavigationState,\n EventMap extends Record<string, any>\n> = {\n state: State;\n getState: () => State;\n navigation: NavigationHelpers<ParamListBase> &\n Partial<NavigationProp<ParamListBase, string, any, any, any>>;\n setOptions: (\n cb: (options: Record<string, object>) => Record<string, object>\n ) => void;\n router: Router<State, NavigationAction>;\n emitter: NavigationEventEmitter<EventMap>;\n};\n\ntype NavigationCache<\n State extends NavigationState,\n ScreenOptions extends {},\n EventMap extends Record<string, any>\n> = Record<\n string,\n NavigationProp<\n ParamListBase,\n string,\n string | undefined,\n State,\n ScreenOptions,\n EventMap\n >\n>;\n\n/**\n * Hook to cache navigation objects for each screen in the navigator.\n * It's important to cache them to make sure navigation objects don't change between renders.\n * This lets us apply optimizations like `React.memo` to minimize re-rendering screens.\n */\nexport default function useNavigationCache<\n State extends NavigationState,\n ScreenOptions extends {},\n EventMap extends Record<string, any>\n>({\n state,\n getState,\n navigation,\n setOptions,\n router,\n emitter,\n}: Options<State, EventMap>) {\n const { stackRef } = React.useContext(NavigationBuilderContext);\n\n // Cache object which holds navigation objects for each screen\n // We use `React.useMemo` instead of `React.useRef` coz we want to invalidate it when deps change\n // In reality, these deps will rarely change, if ever\n const cache = React.useMemo(\n () => ({ current: {} as NavigationCache<State, ScreenOptions, EventMap> }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [getState, navigation, setOptions, router, emitter]\n );\n\n const actions = {\n ...router.actionCreators,\n ...CommonActions,\n };\n\n cache.current = state.routes.reduce<\n NavigationCache<State, ScreenOptions, EventMap>\n >((acc, route) => {\n const previous = cache.current[route.key];\n\n type Thunk =\n | NavigationAction\n | ((state: State) => NavigationAction | null | undefined);\n\n if (previous) {\n // If a cached navigation object already exists, reuse it\n acc[route.key] = previous;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { emit, ...rest } = navigation;\n\n const dispatch = (thunk: Thunk) => {\n const action = typeof thunk === 'function' ? thunk(getState()) : thunk;\n\n if (action != null) {\n navigation.dispatch({ source: route.key, ...action });\n }\n };\n\n const withStack = (callback: () => void) => {\n let isStackSet = false;\n\n try {\n if (\n process.env.NODE_ENV !== 'production' &&\n stackRef &&\n !stackRef.current\n ) {\n // Capture the stack trace for devtools\n stackRef.current = new Error().stack;\n isStackSet = true;\n }\n\n callback();\n } finally {\n if (isStackSet && stackRef) {\n stackRef.current = undefined;\n }\n }\n };\n\n const helpers = Object.keys(actions).reduce<Record<string, () => void>>(\n (acc, name) => {\n acc[name] = (...args: any) =>\n withStack(() =>\n // @ts-expect-error: name is a valid key, but TypeScript is dumb\n dispatch(actions[name](...args))\n );\n\n return acc;\n },\n {}\n );\n\n acc[route.key] = {\n ...rest,\n ...helpers,\n // FIXME: too much work to fix the types for now\n ...(emitter.create(route.key) as any),\n dispatch: (thunk: Thunk) => withStack(() => dispatch(thunk)),\n getParent: (id?: string) => {\n if (id !== undefined && id === rest.getId()) {\n // If the passed id is the same as the current navigation id,\n // we return the cached navigation object for the relevant route\n return acc[route.key];\n }\n\n return rest.getParent(id);\n },\n setOptions: (options: object) =>\n setOptions((o) => ({\n ...o,\n [route.key]: { ...o[route.key], ...options },\n })),\n isFocused: () => {\n const state = getState();\n\n if (state.routes[state.index].key !== route.key) {\n return false;\n }\n\n // If the current screen is focused, we also need to check if parent navigator is focused\n // This makes sure that we return the focus state in the whole tree, not just this navigator\n return navigation ? navigation.isFocused() : true;\n },\n };\n }\n\n return acc;\n }, {});\n\n return cache.current;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["useNavigationCache","state","getState","navigation","setOptions","router","emitter","stackRef","React","useContext","NavigationBuilderContext","cache","useMemo","current","actions","actionCreators","CommonActions","routes","reduce","acc","route","previous","key","emit","rest","dispatch","thunk","action","source","withStack","callback","isStackSet","process","env","NODE_ENV","Error","stack","undefined","helpers","Object","keys","name","args","create","getParent","id","getId","options","o","isFocused","index"],"sourceRoot":"../../src","sources":["useNavigationCache.tsx"],"mappings":"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"}
@@ -4,24 +4,16 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = useNavigationContainerRef;
7
-
8
7
  var React = _interopRequireWildcard(require("react"));
9
-
10
8
  var _createNavigationContainerRef = _interopRequireDefault(require("./createNavigationContainerRef"));
11
-
12
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
10
  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); }
15
-
16
11
  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; }
17
-
18
12
  function useNavigationContainerRef() {
19
13
  const navigation = React.useRef(null);
20
-
21
14
  if (navigation.current == null) {
22
15
  navigation.current = (0, _createNavigationContainerRef.default)();
23
16
  }
24
-
25
17
  return navigation.current;
26
18
  }
27
19
  //# sourceMappingURL=useNavigationContainerRef.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useNavigationContainerRef","navigation","React","useRef","current","createNavigationContainerRef"],"sources":["useNavigationContainerRef.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport createNavigationContainerRef from './createNavigationContainerRef';\nimport type { NavigationContainerRefWithCurrent } from './types';\n\nexport default function useNavigationContainerRef<\n ParamList extends {} = ReactNavigation.RootParamList\n>(): NavigationContainerRefWithCurrent<ParamList> {\n const navigation =\n React.useRef<NavigationContainerRefWithCurrent<ParamList> | null>(null);\n\n if (navigation.current == null) {\n navigation.current = createNavigationContainerRef<ParamList>();\n }\n\n return navigation.current;\n}\n"],"mappings":";;;;;;;AAAA;;AAEA;;;;;;;;AAGe,SAASA,yBAAT,GAEmC;EAChD,MAAMC,UAAU,GACdC,KAAK,CAACC,MAAN,CAAkE,IAAlE,CADF;;EAGA,IAAIF,UAAU,CAACG,OAAX,IAAsB,IAA1B,EAAgC;IAC9BH,UAAU,CAACG,OAAX,GAAqB,IAAAC,qCAAA,GAArB;EACD;;EAED,OAAOJ,UAAU,CAACG,OAAlB;AACD"}
1
+ {"version":3,"names":["useNavigationContainerRef","navigation","React","useRef","current","createNavigationContainerRef"],"sourceRoot":"../../src","sources":["useNavigationContainerRef.tsx"],"mappings":";;;;;;AAAA;AAEA;AAA0E;AAAA;AAAA;AAG3D,SAASA,yBAAyB,GAEC;EAChD,MAAMC,UAAU,GACdC,KAAK,CAACC,MAAM,CAAsD,IAAI,CAAC;EAEzE,IAAIF,UAAU,CAACG,OAAO,IAAI,IAAI,EAAE;IAC9BH,UAAU,CAACG,OAAO,GAAG,IAAAC,qCAA4B,GAAa;EAChE;EAEA,OAAOJ,UAAU,CAACG,OAAO;AAC3B"}
@@ -4,27 +4,17 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = useNavigationHelpers;
7
-
8
7
  var _routers = require("@react-navigation/routers");
9
-
10
8
  var React = _interopRequireWildcard(require("react"));
11
-
12
9
  var _NavigationContext = _interopRequireDefault(require("./NavigationContext"));
13
-
14
10
  var _types = require("./types");
15
-
16
11
  var _UnhandledActionContext = _interopRequireDefault(require("./UnhandledActionContext"));
17
-
18
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
20
13
  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); }
21
-
22
14
  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; }
23
-
24
15
  // This is to make TypeScript compiler happy
25
16
  // eslint-disable-next-line babel/no-unused-expressions
26
17
  _types.PrivateValueStore;
27
-
28
18
  /**
29
19
  * Navigation object with helper methods to be used by a navigator.
30
20
  * This object includes methods for common actions as well as methods the parent screen's navigation object.
@@ -43,13 +33,12 @@ function useNavigationHelpers(_ref) {
43
33
  const dispatch = op => {
44
34
  const action = typeof op === 'function' ? op(getState()) : op;
45
35
  const handled = onAction(action);
46
-
47
36
  if (!handled) {
48
37
  onUnhandledAction === null || onUnhandledAction === void 0 ? void 0 : onUnhandledAction(action);
49
38
  }
50
39
  };
51
-
52
- const actions = { ...router.actionCreators,
40
+ const actions = {
41
+ ...router.actionCreators,
53
42
  ..._routers.CommonActions
54
43
  };
55
44
  const helpers = Object.keys(actions).reduce((acc, name) => {
@@ -57,10 +46,10 @@ function useNavigationHelpers(_ref) {
57
46
  acc[name] = function () {
58
47
  return dispatch(actions[name](...arguments));
59
48
  };
60
-
61
49
  return acc;
62
50
  }, {});
63
- const navigationHelpers = { ...parentNavigationHelpers,
51
+ const navigationHelpers = {
52
+ ...parentNavigationHelpers,
64
53
  ...helpers,
65
54
  dispatch,
66
55
  emit: emitter.emit,
@@ -77,14 +66,11 @@ function useNavigationHelpers(_ref) {
77
66
  getParent: id => {
78
67
  if (id !== undefined) {
79
68
  let current = navigationHelpers;
80
-
81
69
  while (current && id !== current.getId()) {
82
70
  current = current.getParent();
83
71
  }
84
-
85
72
  return current;
86
73
  }
87
-
88
74
  return parentNavigationHelpers;
89
75
  },
90
76
  getState
@@ -1 +1 @@
1
- {"version":3,"names":["PrivateValueStore","useNavigationHelpers","id","navigatorId","onAction","getState","emitter","router","onUnhandledAction","React","useContext","UnhandledActionContext","parentNavigationHelpers","NavigationContext","useMemo","dispatch","op","action","handled","actions","actionCreators","CommonActions","helpers","Object","keys","reduce","acc","name","navigationHelpers","emit","isFocused","canGoBack","state","getStateForAction","goBack","routeNames","routeParamList","routeGetIdList","getId","getParent","undefined","current"],"sources":["useNavigationHelpers.tsx"],"sourcesContent":["import {\n CommonActions,\n NavigationAction,\n NavigationState,\n ParamListBase,\n Router,\n} from '@react-navigation/routers';\nimport * as React from 'react';\n\nimport NavigationContext from './NavigationContext';\nimport { NavigationHelpers, PrivateValueStore } from './types';\nimport UnhandledActionContext from './UnhandledActionContext';\nimport type { NavigationEventEmitter } from './useEventEmitter';\n\n// This is to make TypeScript compiler happy\n// eslint-disable-next-line babel/no-unused-expressions\nPrivateValueStore;\n\ntype Options<State extends NavigationState, Action extends NavigationAction> = {\n id: string | undefined;\n onAction: (action: NavigationAction) => boolean;\n getState: () => State;\n emitter: NavigationEventEmitter<any>;\n router: Router<State, Action>;\n};\n\n/**\n * Navigation object with helper methods to be used by a navigator.\n * This object includes methods for common actions as well as methods the parent screen's navigation object.\n */\nexport default function useNavigationHelpers<\n State extends NavigationState,\n ActionHelpers extends Record<string, () => void>,\n Action extends NavigationAction,\n EventMap extends Record<string, any>\n>({\n id: navigatorId,\n onAction,\n getState,\n emitter,\n router,\n}: Options<State, Action>) {\n const onUnhandledAction = React.useContext(UnhandledActionContext);\n const parentNavigationHelpers = React.useContext(NavigationContext);\n\n return React.useMemo(() => {\n const dispatch = (op: Action | ((state: State) => Action)) => {\n const action = typeof op === 'function' ? op(getState()) : op;\n\n const handled = onAction(action);\n\n if (!handled) {\n onUnhandledAction?.(action);\n }\n };\n\n const actions = {\n ...router.actionCreators,\n ...CommonActions,\n };\n\n const helpers = Object.keys(actions).reduce((acc, name) => {\n // @ts-expect-error: name is a valid key, but TypeScript is dumb\n acc[name] = (...args: any) => dispatch(actions[name](...args));\n return acc;\n }, {} as ActionHelpers);\n\n const navigationHelpers = {\n ...parentNavigationHelpers,\n ...helpers,\n dispatch,\n emit: emitter.emit,\n isFocused: parentNavigationHelpers\n ? parentNavigationHelpers.isFocused\n : () => true,\n canGoBack: () => {\n const state = getState();\n\n return (\n router.getStateForAction(state, CommonActions.goBack() as Action, {\n routeNames: state.routeNames,\n routeParamList: {},\n routeGetIdList: {},\n }) !== null ||\n parentNavigationHelpers?.canGoBack() ||\n false\n );\n },\n getId: () => navigatorId,\n getParent: (id?: string) => {\n if (id !== undefined) {\n let current = navigationHelpers;\n\n while (current && id !== current.getId()) {\n current = current.getParent();\n }\n\n return current;\n }\n\n return parentNavigationHelpers;\n },\n getState,\n } as NavigationHelpers<ParamListBase, EventMap> & ActionHelpers;\n\n return navigationHelpers;\n }, [\n navigatorId,\n emitter.emit,\n getState,\n onAction,\n onUnhandledAction,\n parentNavigationHelpers,\n router,\n ]);\n}\n"],"mappings":";;;;;;;AAAA;;AAOA;;AAEA;;AACA;;AACA;;;;;;;;AAGA;AACA;AACAA,wBAAA;;AAUA;AACA;AACA;AACA;AACe,SAASC,oBAAT,OAWY;EAAA,IANzB;IACAC,EAAE,EAAEC,WADJ;IAEAC,QAFA;IAGAC,QAHA;IAIAC,OAJA;IAKAC;EALA,CAMyB;EACzB,MAAMC,iBAAiB,GAAGC,KAAK,CAACC,UAAN,CAAiBC,+BAAjB,CAA1B;EACA,MAAMC,uBAAuB,GAAGH,KAAK,CAACC,UAAN,CAAiBG,0BAAjB,CAAhC;EAEA,OAAOJ,KAAK,CAACK,OAAN,CAAc,MAAM;IACzB,MAAMC,QAAQ,GAAIC,EAAD,IAA6C;MAC5D,MAAMC,MAAM,GAAG,OAAOD,EAAP,KAAc,UAAd,GAA2BA,EAAE,CAACX,QAAQ,EAAT,CAA7B,GAA4CW,EAA3D;MAEA,MAAME,OAAO,GAAGd,QAAQ,CAACa,MAAD,CAAxB;;MAEA,IAAI,CAACC,OAAL,EAAc;QACZV,iBAAiB,SAAjB,IAAAA,iBAAiB,WAAjB,YAAAA,iBAAiB,CAAGS,MAAH,CAAjB;MACD;IACF,CARD;;IAUA,MAAME,OAAO,GAAG,EACd,GAAGZ,MAAM,CAACa,cADI;MAEd,GAAGC;IAFW,CAAhB;IAKA,MAAMC,OAAO,GAAGC,MAAM,CAACC,IAAP,CAAYL,OAAZ,EAAqBM,MAArB,CAA4B,CAACC,GAAD,EAAMC,IAAN,KAAe;MACzD;MACAD,GAAG,CAACC,IAAD,CAAH,GAAY;QAAA,OAAkBZ,QAAQ,CAACI,OAAO,CAACQ,IAAD,CAAP,CAAc,YAAd,CAAD,CAA1B;MAAA,CAAZ;;MACA,OAAOD,GAAP;IACD,CAJe,EAIb,EAJa,CAAhB;IAMA,MAAME,iBAAiB,GAAG,EACxB,GAAGhB,uBADqB;MAExB,GAAGU,OAFqB;MAGxBP,QAHwB;MAIxBc,IAAI,EAAEvB,OAAO,CAACuB,IAJU;MAKxBC,SAAS,EAAElB,uBAAuB,GAC9BA,uBAAuB,CAACkB,SADM,GAE9B,MAAM,IAPc;MAQxBC,SAAS,EAAE,MAAM;QACf,MAAMC,KAAK,GAAG3B,QAAQ,EAAtB;QAEA,OACEE,MAAM,CAAC0B,iBAAP,CAAyBD,KAAzB,EAAgCX,sBAAA,CAAca,MAAd,EAAhC,EAAkE;UAChEC,UAAU,EAAEH,KAAK,CAACG,UAD8C;UAEhEC,cAAc,EAAE,EAFgD;UAGhEC,cAAc,EAAE;QAHgD,CAAlE,MAIO,IAJP,KAKAzB,uBALA,aAKAA,uBALA,uBAKAA,uBAAuB,CAAEmB,SAAzB,EALA,KAMA,KAPF;MASD,CApBuB;MAqBxBO,KAAK,EAAE,MAAMnC,WArBW;MAsBxBoC,SAAS,EAAGrC,EAAD,IAAiB;QAC1B,IAAIA,EAAE,KAAKsC,SAAX,EAAsB;UACpB,IAAIC,OAAO,GAAGb,iBAAd;;UAEA,OAAOa,OAAO,IAAIvC,EAAE,KAAKuC,OAAO,CAACH,KAAR,EAAzB,EAA0C;YACxCG,OAAO,GAAGA,OAAO,CAACF,SAAR,EAAV;UACD;;UAED,OAAOE,OAAP;QACD;;QAED,OAAO7B,uBAAP;MACD,CAlCuB;MAmCxBP;IAnCwB,CAA1B;IAsCA,OAAOuB,iBAAP;EACD,CA7DM,EA6DJ,CACDzB,WADC,EAEDG,OAAO,CAACuB,IAFP,EAGDxB,QAHC,EAIDD,QAJC,EAKDI,iBALC,EAMDI,uBANC,EAODL,MAPC,CA7DI,CAAP;AAsED"}
1
+ {"version":3,"names":["PrivateValueStore","useNavigationHelpers","id","navigatorId","onAction","getState","emitter","router","onUnhandledAction","React","useContext","UnhandledActionContext","parentNavigationHelpers","NavigationContext","useMemo","dispatch","op","action","handled","actions","actionCreators","CommonActions","helpers","Object","keys","reduce","acc","name","navigationHelpers","emit","isFocused","canGoBack","state","getStateForAction","goBack","routeNames","routeParamList","routeGetIdList","getId","getParent","undefined","current"],"sourceRoot":"../../src","sources":["useNavigationHelpers.tsx"],"mappings":";;;;;;AAAA;AAOA;AAEA;AACA;AACA;AAA8D;AAAA;AAAA;AAG9D;AACA;AACAA,wBAAiB;AAUjB;AACA;AACA;AACA;AACe,SAASC,oBAAoB,OAWjB;EAAA,IANzB;IACAC,EAAE,EAAEC,WAAW;IACfC,QAAQ;IACRC,QAAQ;IACRC,OAAO;IACPC;EACsB,CAAC;EACvB,MAAMC,iBAAiB,GAAGC,KAAK,CAACC,UAAU,CAACC,+BAAsB,CAAC;EAClE,MAAMC,uBAAuB,GAAGH,KAAK,CAACC,UAAU,CAACG,0BAAiB,CAAC;EAEnE,OAAOJ,KAAK,CAACK,OAAO,CAAC,MAAM;IACzB,MAAMC,QAAQ,GAAIC,EAAuC,IAAK;MAC5D,MAAMC,MAAM,GAAG,OAAOD,EAAE,KAAK,UAAU,GAAGA,EAAE,CAACX,QAAQ,EAAE,CAAC,GAAGW,EAAE;MAE7D,MAAME,OAAO,GAAGd,QAAQ,CAACa,MAAM,CAAC;MAEhC,IAAI,CAACC,OAAO,EAAE;QACZV,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAGS,MAAM,CAAC;MAC7B;IACF,CAAC;IAED,MAAME,OAAO,GAAG;MACd,GAAGZ,MAAM,CAACa,cAAc;MACxB,GAAGC;IACL,CAAC;IAED,MAAMC,OAAO,GAAGC,MAAM,CAACC,IAAI,CAACL,OAAO,CAAC,CAACM,MAAM,CAAC,CAACC,GAAG,EAAEC,IAAI,KAAK;MACzD;MACAD,GAAG,CAACC,IAAI,CAAC,GAAG;QAAA,OAAkBZ,QAAQ,CAACI,OAAO,CAACQ,IAAI,CAAC,CAAC,YAAO,CAAC,CAAC;MAAA;MAC9D,OAAOD,GAAG;IACZ,CAAC,EAAE,CAAC,CAAC,CAAkB;IAEvB,MAAME,iBAAiB,GAAG;MACxB,GAAGhB,uBAAuB;MAC1B,GAAGU,OAAO;MACVP,QAAQ;MACRc,IAAI,EAAEvB,OAAO,CAACuB,IAAI;MAClBC,SAAS,EAAElB,uBAAuB,GAC9BA,uBAAuB,CAACkB,SAAS,GACjC,MAAM,IAAI;MACdC,SAAS,EAAE,MAAM;QACf,MAAMC,KAAK,GAAG3B,QAAQ,EAAE;QAExB,OACEE,MAAM,CAAC0B,iBAAiB,CAACD,KAAK,EAAEX,sBAAa,CAACa,MAAM,EAAE,EAAY;UAChEC,UAAU,EAAEH,KAAK,CAACG,UAAU;UAC5BC,cAAc,EAAE,CAAC,CAAC;UAClBC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,KAAK,IAAI,KACXzB,uBAAuB,aAAvBA,uBAAuB,uBAAvBA,uBAAuB,CAAEmB,SAAS,EAAE,KACpC,KAAK;MAET,CAAC;MACDO,KAAK,EAAE,MAAMnC,WAAW;MACxBoC,SAAS,EAAGrC,EAAW,IAAK;QAC1B,IAAIA,EAAE,KAAKsC,SAAS,EAAE;UACpB,IAAIC,OAAO,GAAGb,iBAAiB;UAE/B,OAAOa,OAAO,IAAIvC,EAAE,KAAKuC,OAAO,CAACH,KAAK,EAAE,EAAE;YACxCG,OAAO,GAAGA,OAAO,CAACF,SAAS,EAAE;UAC/B;UAEA,OAAOE,OAAO;QAChB;QAEA,OAAO7B,uBAAuB;MAChC,CAAC;MACDP;IACF,CAA+D;IAE/D,OAAOuB,iBAAiB;EAC1B,CAAC,EAAE,CACDzB,WAAW,EACXG,OAAO,CAACuB,IAAI,EACZxB,QAAQ,EACRD,QAAQ,EACRI,iBAAiB,EACjBI,uBAAuB,EACvBL,MAAM,CACP,CAAC;AACJ"}
@@ -4,28 +4,24 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = useNavigationState;
7
-
8
7
  var React = _interopRequireWildcard(require("react"));
9
-
10
8
  var _useNavigation = _interopRequireDefault(require("./useNavigation"));
11
-
12
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
10
  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); }
15
-
16
11
  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; }
17
-
18
12
  /**
19
13
  * Hook to get a value from the current navigation state using a selector.
20
14
  *
21
15
  * @param selector Selector function to get a value from the state.
22
16
  */
23
17
  function useNavigationState(selector) {
24
- const navigation = (0, _useNavigation.default)(); // We don't care about the state value, we run the selector again at the end
25
- // The state is only to make sure that there's a re-render when we have a new value
18
+ const navigation = (0, _useNavigation.default)();
26
19
 
27
- const [, setResult] = React.useState(() => selector(navigation.getState())); // We store the selector in a ref to avoid re-subscribing listeners every render
20
+ // We don't care about the state value, we run the selector again at the end
21
+ // The state is only to make sure that there's a re-render when we have a new value
22
+ const [, setResult] = React.useState(() => selector(navigation.getState()));
28
23
 
24
+ // We store the selector in a ref to avoid re-subscribing listeners every render
29
25
  const selectorRef = React.useRef(selector);
30
26
  React.useEffect(() => {
31
27
  selectorRef.current = selector;
@@ -1 +1 @@
1
- {"version":3,"names":["useNavigationState","selector","navigation","useNavigation","setResult","React","useState","getState","selectorRef","useRef","useEffect","current","unsubscribe","addListener","e","data","state"],"sources":["useNavigationState.tsx"],"sourcesContent":["import type { NavigationState, ParamListBase } from '@react-navigation/routers';\nimport * as React from 'react';\n\nimport type { NavigationProp } from './types';\nimport useNavigation from './useNavigation';\n\ntype Selector<ParamList extends ParamListBase, T> = (\n state: NavigationState<ParamList>\n) => T;\n\n/**\n * Hook to get a value from the current navigation state using a selector.\n *\n * @param selector Selector function to get a value from the state.\n */\nexport default function useNavigationState<ParamList extends ParamListBase, T>(\n selector: Selector<ParamList, T>\n): T {\n const navigation = useNavigation<NavigationProp<ParamList>>();\n\n // We don't care about the state value, we run the selector again at the end\n // The state is only to make sure that there's a re-render when we have a new value\n const [, setResult] = React.useState(() => selector(navigation.getState()));\n\n // We store the selector in a ref to avoid re-subscribing listeners every render\n const selectorRef = React.useRef(selector);\n\n React.useEffect(() => {\n selectorRef.current = selector;\n });\n\n React.useEffect(() => {\n const unsubscribe = navigation.addListener('state', (e) => {\n setResult(selectorRef.current(e.data.state));\n });\n\n return unsubscribe;\n }, [navigation]);\n\n return selector(navigation.getState());\n}\n"],"mappings":";;;;;;;AACA;;AAGA;;;;;;;;AAMA;AACA;AACA;AACA;AACA;AACe,SAASA,kBAAT,CACbC,QADa,EAEV;EACH,MAAMC,UAAU,GAAG,IAAAC,sBAAA,GAAnB,CADG,CAGH;EACA;;EACA,MAAM,GAAGC,SAAH,IAAgBC,KAAK,CAACC,QAAN,CAAe,MAAML,QAAQ,CAACC,UAAU,CAACK,QAAX,EAAD,CAA7B,CAAtB,CALG,CAOH;;EACA,MAAMC,WAAW,GAAGH,KAAK,CAACI,MAAN,CAAaR,QAAb,CAApB;EAEAI,KAAK,CAACK,SAAN,CAAgB,MAAM;IACpBF,WAAW,CAACG,OAAZ,GAAsBV,QAAtB;EACD,CAFD;EAIAI,KAAK,CAACK,SAAN,CAAgB,MAAM;IACpB,MAAME,WAAW,GAAGV,UAAU,CAACW,WAAX,CAAuB,OAAvB,EAAiCC,CAAD,IAAO;MACzDV,SAAS,CAACI,WAAW,CAACG,OAAZ,CAAoBG,CAAC,CAACC,IAAF,CAAOC,KAA3B,CAAD,CAAT;IACD,CAFmB,CAApB;IAIA,OAAOJ,WAAP;EACD,CAND,EAMG,CAACV,UAAD,CANH;EAQA,OAAOD,QAAQ,CAACC,UAAU,CAACK,QAAX,EAAD,CAAf;AACD"}
1
+ {"version":3,"names":["useNavigationState","selector","navigation","useNavigation","setResult","React","useState","getState","selectorRef","useRef","useEffect","current","unsubscribe","addListener","e","data","state"],"sourceRoot":"../../src","sources":["useNavigationState.tsx"],"mappings":";;;;;;AACA;AAGA;AAA4C;AAAA;AAAA;AAM5C;AACA;AACA;AACA;AACA;AACe,SAASA,kBAAkB,CACxCC,QAAgC,EAC7B;EACH,MAAMC,UAAU,GAAG,IAAAC,sBAAa,GAA6B;;EAE7D;EACA;EACA,MAAM,GAAGC,SAAS,CAAC,GAAGC,KAAK,CAACC,QAAQ,CAAC,MAAML,QAAQ,CAACC,UAAU,CAACK,QAAQ,EAAE,CAAC,CAAC;;EAE3E;EACA,MAAMC,WAAW,GAAGH,KAAK,CAACI,MAAM,CAACR,QAAQ,CAAC;EAE1CI,KAAK,CAACK,SAAS,CAAC,MAAM;IACpBF,WAAW,CAACG,OAAO,GAAGV,QAAQ;EAChC,CAAC,CAAC;EAEFI,KAAK,CAACK,SAAS,CAAC,MAAM;IACpB,MAAME,WAAW,GAAGV,UAAU,CAACW,WAAW,CAAC,OAAO,EAAGC,CAAC,IAAK;MACzDV,SAAS,CAACI,WAAW,CAACG,OAAO,CAACG,CAAC,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,OAAOJ,WAAW;EACpB,CAAC,EAAE,CAACV,UAAU,CAAC,CAAC;EAEhB,OAAOD,QAAQ,CAACC,UAAU,CAACK,QAAQ,EAAE,CAAC;AACxC"}
@@ -4,19 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = useOnAction;
7
-
8
7
  var React = _interopRequireWildcard(require("react"));
9
-
10
8
  var _NavigationBuilderContext = _interopRequireDefault(require("./NavigationBuilderContext"));
11
-
12
9
  var _useOnPreventRemove = _interopRequireWildcard(require("./useOnPreventRemove"));
13
-
14
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
11
  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); }
17
-
18
12
  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; }
19
-
20
13
  /**
21
14
  * Hook to handle actions for a navigator, including state updates and bubbling.
22
15
  *
@@ -49,64 +42,54 @@ function useOnAction(_ref) {
49
42
  });
50
43
  const onAction = React.useCallback(function (action) {
51
44
  let visitedNavigators = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Set();
52
- const state = getState(); // Since actions can bubble both up and down, they could come to the same navigator again
53
- // We keep track of navigators which have already tried to handle the action and return if it's already visited
45
+ const state = getState();
54
46
 
47
+ // Since actions can bubble both up and down, they could come to the same navigator again
48
+ // We keep track of navigators which have already tried to handle the action and return if it's already visited
55
49
  if (visitedNavigators.has(state.key)) {
56
50
  return false;
57
51
  }
58
-
59
52
  visitedNavigators.add(state.key);
60
-
61
53
  if (typeof action.target !== 'string' || action.target === state.key) {
62
- let result = router.getStateForAction(state, action, routerConfigOptionsRef.current); // If a target is specified and set to current navigator, the action shouldn't bubble
63
- // So instead of `null`, we use the state object for such cases to signal that action was handled
54
+ let result = router.getStateForAction(state, action, routerConfigOptionsRef.current);
64
55
 
56
+ // If a target is specified and set to current navigator, the action shouldn't bubble
57
+ // So instead of `null`, we use the state object for such cases to signal that action was handled
65
58
  result = result === null && action.target === state.key ? state : result;
66
-
67
59
  if (result !== null) {
68
60
  onDispatchAction(action, state === result);
69
-
70
61
  if (state !== result) {
71
62
  const isPrevented = (0, _useOnPreventRemove.shouldPreventRemove)(emitter, beforeRemoveListeners, state.routes, result.routes, action);
72
-
73
63
  if (isPrevented) {
74
64
  return true;
75
65
  }
76
-
77
66
  setState(result);
78
67
  }
79
-
80
68
  if (onRouteFocusParent !== undefined) {
81
69
  // Some actions such as `NAVIGATE` also want to bring the navigated route to focus in the whole tree
82
70
  // This means we need to focus all of the parent navigators of this navigator as well
83
71
  const shouldFocus = router.shouldActionChangeFocus(action);
84
-
85
72
  if (shouldFocus && key !== undefined) {
86
73
  onRouteFocusParent(key);
87
74
  }
88
75
  }
89
-
90
76
  return true;
91
77
  }
92
78
  }
93
-
94
79
  if (onActionParent !== undefined) {
95
80
  // Bubble action to the parent if the current navigator didn't handle it
96
81
  if (onActionParent(action, visitedNavigators)) {
97
82
  return true;
98
83
  }
99
- } // If the action wasn't handled by current navigator or a parent navigator, let children handle it
100
-
84
+ }
101
85
 
86
+ // If the action wasn't handled by current navigator or a parent navigator, let children handle it
102
87
  for (let i = actionListeners.length - 1; i >= 0; i--) {
103
88
  const listener = actionListeners[i];
104
-
105
89
  if (listener(action, visitedNavigators)) {
106
90
  return true;
107
91
  }
108
92
  }
109
-
110
93
  return false;
111
94
  }, [actionListeners, beforeRemoveListeners, emitter, getState, key, onActionParent, onDispatchAction, onRouteFocusParent, router, setState]);
112
95
  (0, _useOnPreventRemove.default)({
@@ -1 +1 @@
1
- {"version":3,"names":["useOnAction","router","getState","setState","key","actionListeners","beforeRemoveListeners","routerConfigOptions","emitter","onAction","onActionParent","onRouteFocus","onRouteFocusParent","addListener","addListenerParent","onDispatchAction","React","useContext","NavigationBuilderContext","routerConfigOptionsRef","useRef","useEffect","current","useCallback","action","visitedNavigators","Set","state","has","add","target","result","getStateForAction","isPrevented","shouldPreventRemove","routes","undefined","shouldFocus","shouldActionChangeFocus","i","length","listener","useOnPreventRemove"],"sources":["useOnAction.tsx"],"sourcesContent":["import type {\n NavigationAction,\n NavigationState,\n PartialState,\n Router,\n RouterConfigOptions,\n} from '@react-navigation/routers';\nimport * as React from 'react';\n\nimport NavigationBuilderContext, {\n ChildActionListener,\n ChildBeforeRemoveListener,\n} from './NavigationBuilderContext';\nimport type { EventMapCore } from './types';\nimport type { NavigationEventEmitter } from './useEventEmitter';\nimport useOnPreventRemove, { shouldPreventRemove } from './useOnPreventRemove';\n\ntype Options = {\n router: Router<NavigationState, NavigationAction>;\n key?: string;\n getState: () => NavigationState;\n setState: (state: NavigationState | PartialState<NavigationState>) => void;\n actionListeners: ChildActionListener[];\n beforeRemoveListeners: Record<string, ChildBeforeRemoveListener | undefined>;\n routerConfigOptions: RouterConfigOptions;\n emitter: NavigationEventEmitter<EventMapCore<any>>;\n};\n\n/**\n * Hook to handle actions for a navigator, including state updates and bubbling.\n *\n * Bubbling an action is achieved in 2 ways:\n * 1. To bubble action to parent, we expose the action handler in context and then access the parent context\n * 2. To bubble action to child, child adds event listeners subscribing to actions from parent\n *\n * When the action handler handles as action, it returns `true`, otherwise `false`.\n */\nexport default function useOnAction({\n router,\n getState,\n setState,\n key,\n actionListeners,\n beforeRemoveListeners,\n routerConfigOptions,\n emitter,\n}: Options) {\n const {\n onAction: onActionParent,\n onRouteFocus: onRouteFocusParent,\n addListener: addListenerParent,\n onDispatchAction,\n } = React.useContext(NavigationBuilderContext);\n\n const routerConfigOptionsRef =\n React.useRef<RouterConfigOptions>(routerConfigOptions);\n\n React.useEffect(() => {\n routerConfigOptionsRef.current = routerConfigOptions;\n });\n\n const onAction = React.useCallback(\n (\n action: NavigationAction,\n visitedNavigators: Set<string> = new Set<string>()\n ) => {\n const state = getState();\n\n // Since actions can bubble both up and down, they could come to the same navigator again\n // We keep track of navigators which have already tried to handle the action and return if it's already visited\n if (visitedNavigators.has(state.key)) {\n return false;\n }\n\n visitedNavigators.add(state.key);\n\n if (typeof action.target !== 'string' || action.target === state.key) {\n let result = router.getStateForAction(\n state,\n action,\n routerConfigOptionsRef.current\n );\n\n // If a target is specified and set to current navigator, the action shouldn't bubble\n // So instead of `null`, we use the state object for such cases to signal that action was handled\n result =\n result === null && action.target === state.key ? state : result;\n\n if (result !== null) {\n onDispatchAction(action, state === result);\n\n if (state !== result) {\n const isPrevented = shouldPreventRemove(\n emitter,\n beforeRemoveListeners,\n state.routes,\n result.routes,\n action\n );\n\n if (isPrevented) {\n return true;\n }\n\n setState(result);\n }\n\n if (onRouteFocusParent !== undefined) {\n // Some actions such as `NAVIGATE` also want to bring the navigated route to focus in the whole tree\n // This means we need to focus all of the parent navigators of this navigator as well\n const shouldFocus = router.shouldActionChangeFocus(action);\n\n if (shouldFocus && key !== undefined) {\n onRouteFocusParent(key);\n }\n }\n\n return true;\n }\n }\n\n if (onActionParent !== undefined) {\n // Bubble action to the parent if the current navigator didn't handle it\n if (onActionParent(action, visitedNavigators)) {\n return true;\n }\n }\n\n // If the action wasn't handled by current navigator or a parent navigator, let children handle it\n for (let i = actionListeners.length - 1; i >= 0; i--) {\n const listener = actionListeners[i];\n\n if (listener(action, visitedNavigators)) {\n return true;\n }\n }\n\n return false;\n },\n [\n actionListeners,\n beforeRemoveListeners,\n emitter,\n getState,\n key,\n onActionParent,\n onDispatchAction,\n onRouteFocusParent,\n router,\n setState,\n ]\n );\n\n useOnPreventRemove({\n getState,\n emitter,\n beforeRemoveListeners,\n });\n\n React.useEffect(\n () => addListenerParent?.('action', onAction),\n [addListenerParent, onAction]\n );\n\n return onAction;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["useOnAction","router","getState","setState","key","actionListeners","beforeRemoveListeners","routerConfigOptions","emitter","onAction","onActionParent","onRouteFocus","onRouteFocusParent","addListener","addListenerParent","onDispatchAction","React","useContext","NavigationBuilderContext","routerConfigOptionsRef","useRef","useEffect","current","useCallback","action","visitedNavigators","Set","state","has","add","target","result","getStateForAction","isPrevented","shouldPreventRemove","routes","undefined","shouldFocus","shouldActionChangeFocus","i","length","listener","useOnPreventRemove"],"sourceRoot":"../../src","sources":["useOnAction.tsx"],"mappings":"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"}
@@ -4,21 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = useOnGetState;
7
-
8
7
  var React = _interopRequireWildcard(require("react"));
9
-
10
8
  var _isArrayEqual = _interopRequireDefault(require("./isArrayEqual"));
11
-
12
9
  var _NavigationBuilderContext = _interopRequireDefault(require("./NavigationBuilderContext"));
13
-
14
10
  var _NavigationRouteContext = _interopRequireDefault(require("./NavigationRouteContext"));
15
-
16
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
12
  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); }
19
-
20
13
  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; }
21
-
22
14
  function useOnGetState(_ref) {
23
15
  let {
24
16
  getState,
@@ -30,27 +22,25 @@ function useOnGetState(_ref) {
30
22
  const route = React.useContext(_NavigationRouteContext.default);
31
23
  const key = route ? route.key : 'root';
32
24
  const getRehydratedState = React.useCallback(() => {
33
- const state = getState(); // Avoid returning new route objects if we don't need to
25
+ const state = getState();
34
26
 
27
+ // Avoid returning new route objects if we don't need to
35
28
  const routes = state.routes.map(route => {
36
29
  var _getStateListeners$ro;
37
-
38
30
  const childState = (_getStateListeners$ro = getStateListeners[route.key]) === null || _getStateListeners$ro === void 0 ? void 0 : _getStateListeners$ro.call(getStateListeners);
39
-
40
31
  if (route.state === childState) {
41
32
  return route;
42
33
  }
43
-
44
- return { ...route,
34
+ return {
35
+ ...route,
45
36
  state: childState
46
37
  };
47
38
  });
48
-
49
39
  if ((0, _isArrayEqual.default)(state.routes, routes)) {
50
40
  return state;
51
41
  }
52
-
53
- return { ...state,
42
+ return {
43
+ ...state,
54
44
  routes
55
45
  };
56
46
  }, [getState, getStateListeners]);
@@ -1 +1 @@
1
- {"version":3,"names":["useOnGetState","getState","getStateListeners","addKeyedListener","React","useContext","NavigationBuilderContext","route","NavigationRouteContext","key","getRehydratedState","useCallback","state","routes","map","childState","isArrayEqual","useEffect"],"sources":["useOnGetState.tsx"],"sourcesContent":["import type { NavigationState } from '@react-navigation/routers';\nimport * as React from 'react';\n\nimport isArrayEqual from './isArrayEqual';\nimport NavigationBuilderContext, {\n GetStateListener,\n} from './NavigationBuilderContext';\nimport NavigationRouteContext from './NavigationRouteContext';\n\ntype Options = {\n getState: () => NavigationState;\n getStateListeners: Record<string, GetStateListener | undefined>;\n};\n\nexport default function useOnGetState({\n getState,\n getStateListeners,\n}: Options) {\n const { addKeyedListener } = React.useContext(NavigationBuilderContext);\n const route = React.useContext(NavigationRouteContext);\n const key = route ? route.key : 'root';\n\n const getRehydratedState = React.useCallback(() => {\n const state = getState();\n\n // Avoid returning new route objects if we don't need to\n const routes = state.routes.map((route) => {\n const childState = getStateListeners[route.key]?.();\n\n if (route.state === childState) {\n return route;\n }\n\n return { ...route, state: childState };\n });\n\n if (isArrayEqual(state.routes, routes)) {\n return state;\n }\n\n return { ...state, routes };\n }, [getState, getStateListeners]);\n\n React.useEffect(() => {\n return addKeyedListener?.('getState', key, getRehydratedState);\n }, [addKeyedListener, getRehydratedState, key]);\n}\n"],"mappings":";;;;;;;AACA;;AAEA;;AACA;;AAGA;;;;;;;;AAOe,SAASA,aAAT,OAGH;EAAA,IAH0B;IACpCC,QADoC;IAEpCC;EAFoC,CAG1B;EACV,MAAM;IAAEC;EAAF,IAAuBC,KAAK,CAACC,UAAN,CAAiBC,iCAAjB,CAA7B;EACA,MAAMC,KAAK,GAAGH,KAAK,CAACC,UAAN,CAAiBG,+BAAjB,CAAd;EACA,MAAMC,GAAG,GAAGF,KAAK,GAAGA,KAAK,CAACE,GAAT,GAAe,MAAhC;EAEA,MAAMC,kBAAkB,GAAGN,KAAK,CAACO,WAAN,CAAkB,MAAM;IACjD,MAAMC,KAAK,GAAGX,QAAQ,EAAtB,CADiD,CAGjD;;IACA,MAAMY,MAAM,GAAGD,KAAK,CAACC,MAAN,CAAaC,GAAb,CAAkBP,KAAD,IAAW;MAAA;;MACzC,MAAMQ,UAAU,4BAAGb,iBAAiB,CAACK,KAAK,CAACE,GAAP,CAApB,0DAAG,2BAAAP,iBAAiB,CAApC;;MAEA,IAAIK,KAAK,CAACK,KAAN,KAAgBG,UAApB,EAAgC;QAC9B,OAAOR,KAAP;MACD;;MAED,OAAO,EAAE,GAAGA,KAAL;QAAYK,KAAK,EAAEG;MAAnB,CAAP;IACD,CARc,CAAf;;IAUA,IAAI,IAAAC,qBAAA,EAAaJ,KAAK,CAACC,MAAnB,EAA2BA,MAA3B,CAAJ,EAAwC;MACtC,OAAOD,KAAP;IACD;;IAED,OAAO,EAAE,GAAGA,KAAL;MAAYC;IAAZ,CAAP;EACD,CAnB0B,EAmBxB,CAACZ,QAAD,EAAWC,iBAAX,CAnBwB,CAA3B;EAqBAE,KAAK,CAACa,SAAN,CAAgB,MAAM;IACpB,OAAOd,gBAAP,aAAOA,gBAAP,uBAAOA,gBAAgB,CAAG,UAAH,EAAeM,GAAf,EAAoBC,kBAApB,CAAvB;EACD,CAFD,EAEG,CAACP,gBAAD,EAAmBO,kBAAnB,EAAuCD,GAAvC,CAFH;AAGD"}
1
+ {"version":3,"names":["useOnGetState","getState","getStateListeners","addKeyedListener","React","useContext","NavigationBuilderContext","route","NavigationRouteContext","key","getRehydratedState","useCallback","state","routes","map","childState","isArrayEqual","useEffect"],"sourceRoot":"../../src","sources":["useOnGetState.tsx"],"mappings":";;;;;;AACA;AAEA;AACA;AAGA;AAA8D;AAAA;AAAA;AAO/C,SAASA,aAAa,OAGzB;EAAA,IAH0B;IACpCC,QAAQ;IACRC;EACO,CAAC;EACR,MAAM;IAAEC;EAAiB,CAAC,GAAGC,KAAK,CAACC,UAAU,CAACC,iCAAwB,CAAC;EACvE,MAAMC,KAAK,GAAGH,KAAK,CAACC,UAAU,CAACG,+BAAsB,CAAC;EACtD,MAAMC,GAAG,GAAGF,KAAK,GAAGA,KAAK,CAACE,GAAG,GAAG,MAAM;EAEtC,MAAMC,kBAAkB,GAAGN,KAAK,CAACO,WAAW,CAAC,MAAM;IACjD,MAAMC,KAAK,GAAGX,QAAQ,EAAE;;IAExB;IACA,MAAMY,MAAM,GAAGD,KAAK,CAACC,MAAM,CAACC,GAAG,CAAEP,KAAK,IAAK;MAAA;MACzC,MAAMQ,UAAU,4BAAGb,iBAAiB,CAACK,KAAK,CAACE,GAAG,CAAC,0DAA5B,2BAAAP,iBAAiB,CAAe;MAEnD,IAAIK,KAAK,CAACK,KAAK,KAAKG,UAAU,EAAE;QAC9B,OAAOR,KAAK;MACd;MAEA,OAAO;QAAE,GAAGA,KAAK;QAAEK,KAAK,EAAEG;MAAW,CAAC;IACxC,CAAC,CAAC;IAEF,IAAI,IAAAC,qBAAY,EAACJ,KAAK,CAACC,MAAM,EAAEA,MAAM,CAAC,EAAE;MACtC,OAAOD,KAAK;IACd;IAEA,OAAO;MAAE,GAAGA,KAAK;MAAEC;IAAO,CAAC;EAC7B,CAAC,EAAE,CAACZ,QAAQ,EAAEC,iBAAiB,CAAC,CAAC;EAEjCE,KAAK,CAACa,SAAS,CAAC,MAAM;IACpB,OAAOd,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAG,UAAU,EAAEM,GAAG,EAAEC,kBAAkB,CAAC;EAChE,CAAC,EAAE,CAACP,gBAAgB,EAAEO,kBAAkB,EAAED,GAAG,CAAC,CAAC;AACjD"}