@react-navigation/core 6.4.4 → 6.4.5

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 (351) 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 -0
  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 +1 -0
  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
@@ -1,7 +1,6 @@
1
1
  import { CommonActions } from '@react-navigation/routers';
2
2
  import * as React from 'react';
3
3
  import NavigationBuilderContext from './NavigationBuilderContext';
4
-
5
4
  /**
6
5
  * Hook to cache navigation objects for each screen in the navigator.
7
6
  * It's important to cache them to make sure navigation objects don't change between renders.
@@ -18,20 +17,22 @@ export default function useNavigationCache(_ref) {
18
17
  } = _ref;
19
18
  const {
20
19
  stackRef
21
- } = React.useContext(NavigationBuilderContext); // Cache object which holds navigation objects for each screen
20
+ } = React.useContext(NavigationBuilderContext);
21
+
22
+ // Cache object which holds navigation objects for each screen
22
23
  // We use `React.useMemo` instead of `React.useRef` coz we want to invalidate it when deps change
23
24
  // In reality, these deps will rarely change, if ever
24
-
25
25
  const cache = React.useMemo(() => ({
26
26
  current: {}
27
- }), // eslint-disable-next-line react-hooks/exhaustive-deps
27
+ }),
28
+ // eslint-disable-next-line react-hooks/exhaustive-deps
28
29
  [getState, navigation, setOptions, router, emitter]);
29
- const actions = { ...router.actionCreators,
30
+ const actions = {
31
+ ...router.actionCreators,
30
32
  ...CommonActions
31
33
  };
32
34
  cache.current = state.routes.reduce((acc, route) => {
33
35
  const previous = cache.current[route.key];
34
-
35
36
  if (previous) {
36
37
  // If a cached navigation object already exists, reuse it
37
38
  acc[route.key] = previous;
@@ -41,10 +42,8 @@ export default function useNavigationCache(_ref) {
41
42
  emit,
42
43
  ...rest
43
44
  } = navigation;
44
-
45
45
  const dispatch = thunk => {
46
46
  const action = typeof thunk === 'function' ? thunk(getState()) : thunk;
47
-
48
47
  if (action != null) {
49
48
  navigation.dispatch({
50
49
  source: route.key,
@@ -52,17 +51,14 @@ export default function useNavigationCache(_ref) {
52
51
  });
53
52
  }
54
53
  };
55
-
56
54
  const withStack = callback => {
57
55
  let isStackSet = false;
58
-
59
56
  try {
60
57
  if (process.env.NODE_ENV !== 'production' && stackRef && !stackRef.current) {
61
58
  // Capture the stack trace for devtools
62
59
  stackRef.current = new Error().stack;
63
60
  isStackSet = true;
64
61
  }
65
-
66
62
  callback();
67
63
  } finally {
68
64
  if (isStackSet && stackRef) {
@@ -70,20 +66,19 @@ export default function useNavigationCache(_ref) {
70
66
  }
71
67
  }
72
68
  };
73
-
74
69
  const helpers = Object.keys(actions).reduce((acc, name) => {
75
70
  acc[name] = function () {
76
71
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
77
72
  args[_key] = arguments[_key];
78
73
  }
79
-
80
- return withStack(() => // @ts-expect-error: name is a valid key, but TypeScript is dumb
74
+ return withStack(() =>
75
+ // @ts-expect-error: name is a valid key, but TypeScript is dumb
81
76
  dispatch(actions[name](...args)));
82
77
  };
83
-
84
78
  return acc;
85
79
  }, {});
86
- acc[route.key] = { ...rest,
80
+ acc[route.key] = {
81
+ ...rest,
87
82
  ...helpers,
88
83
  // FIXME: too much work to fix the types for now
89
84
  ...emitter.create(route.key),
@@ -94,28 +89,27 @@ export default function useNavigationCache(_ref) {
94
89
  // we return the cached navigation object for the relevant route
95
90
  return acc[route.key];
96
91
  }
97
-
98
92
  return rest.getParent(id);
99
93
  },
100
- setOptions: options => setOptions(o => ({ ...o,
101
- [route.key]: { ...o[route.key],
94
+ setOptions: options => setOptions(o => ({
95
+ ...o,
96
+ [route.key]: {
97
+ ...o[route.key],
102
98
  ...options
103
99
  }
104
100
  })),
105
101
  isFocused: () => {
106
102
  const state = getState();
107
-
108
103
  if (state.routes[state.index].key !== route.key) {
109
104
  return false;
110
- } // If the current screen is focused, we also need to check if parent navigator is focused
111
- // This makes sure that we return the focus state in the whole tree, not just this navigator
112
-
105
+ }
113
106
 
107
+ // If the current screen is focused, we also need to check if parent navigator is focused
108
+ // This makes sure that we return the focus state in the whole tree, not just this navigator
114
109
  return navigation ? navigation.isFocused() : true;
115
110
  }
116
111
  };
117
112
  }
118
-
119
113
  return acc;
120
114
  }, {});
121
115
  return cache.current;
@@ -1 +1 @@
1
- {"version":3,"names":["CommonActions","React","NavigationBuilderContext","useNavigationCache","state","getState","navigation","setOptions","router","emitter","stackRef","useContext","cache","useMemo","current","actions","actionCreators","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":"AAAA,SACEA,aADF,QAMO,2BANP;AAOA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AAEA,OAAOC,wBAAP,MAAqC,4BAArC;;AAmCA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,kBAAT,OAWc;EAAA,IAP3B;IACAC,KADA;IAEAC,QAFA;IAGAC,UAHA;IAIAC,UAJA;IAKAC,MALA;IAMAC;EANA,CAO2B;EAC3B,MAAM;IAAEC;EAAF,IAAeT,KAAK,CAACU,UAAN,CAAiBT,wBAAjB,CAArB,CAD2B,CAG3B;EACA;EACA;;EACA,MAAMU,KAAK,GAAGX,KAAK,CAACY,OAAN,CACZ,OAAO;IAAEC,OAAO,EAAE;EAAX,CAAP,CADY,EAEZ;EACA,CAACT,QAAD,EAAWC,UAAX,EAAuBC,UAAvB,EAAmCC,MAAnC,EAA2CC,OAA3C,CAHY,CAAd;EAMA,MAAMM,OAAO,GAAG,EACd,GAAGP,MAAM,CAACQ,cADI;IAEd,GAAGhB;EAFW,CAAhB;EAKAY,KAAK,CAACE,OAAN,GAAgBV,KAAK,CAACa,MAAN,CAAaC,MAAb,CAEd,CAACC,GAAD,EAAMC,KAAN,KAAgB;IAChB,MAAMC,QAAQ,GAAGT,KAAK,CAACE,OAAN,CAAcM,KAAK,CAACE,GAApB,CAAjB;;IAMA,IAAID,QAAJ,EAAc;MACZ;MACAF,GAAG,CAACC,KAAK,CAACE,GAAP,CAAH,GAAiBD,QAAjB;IACD,CAHD,MAGO;MACL;MACA,MAAM;QAAEE,IAAF;QAAQ,GAAGC;MAAX,IAAoBlB,UAA1B;;MAEA,MAAMmB,QAAQ,GAAIC,KAAD,IAAkB;QACjC,MAAMC,MAAM,GAAG,OAAOD,KAAP,KAAiB,UAAjB,GAA8BA,KAAK,CAACrB,QAAQ,EAAT,CAAnC,GAAkDqB,KAAjE;;QAEA,IAAIC,MAAM,IAAI,IAAd,EAAoB;UAClBrB,UAAU,CAACmB,QAAX,CAAoB;YAAEG,MAAM,EAAER,KAAK,CAACE,GAAhB;YAAqB,GAAGK;UAAxB,CAApB;QACD;MACF,CAND;;MAQA,MAAME,SAAS,GAAIC,QAAD,IAA0B;QAC1C,IAAIC,UAAU,GAAG,KAAjB;;QAEA,IAAI;UACF,IACEC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAzB,IACAxB,QADA,IAEA,CAACA,QAAQ,CAACI,OAHZ,EAIE;YACA;YACAJ,QAAQ,CAACI,OAAT,GAAmB,IAAIqB,KAAJ,GAAYC,KAA/B;YACAL,UAAU,GAAG,IAAb;UACD;;UAEDD,QAAQ;QACT,CAZD,SAYU;UACR,IAAIC,UAAU,IAAIrB,QAAlB,EAA4B;YAC1BA,QAAQ,CAACI,OAAT,GAAmBuB,SAAnB;UACD;QACF;MACF,CApBD;;MAsBA,MAAMC,OAAO,GAAGC,MAAM,CAACC,IAAP,CAAYzB,OAAZ,EAAqBG,MAArB,CACd,CAACC,GAAD,EAAMsB,IAAN,KAAe;QACbtB,GAAG,CAACsB,IAAD,CAAH,GAAY;UAAA,kCAAIC,IAAJ;YAAIA,IAAJ;UAAA;;UAAA,OACVb,SAAS,CAAC,MACR;UACAJ,QAAQ,CAACV,OAAO,CAAC0B,IAAD,CAAP,CAAc,GAAGC,IAAjB,CAAD,CAFD,CADC;QAAA,CAAZ;;QAMA,OAAOvB,GAAP;MACD,CATa,EAUd,EAVc,CAAhB;MAaAA,GAAG,CAACC,KAAK,CAACE,GAAP,CAAH,GAAiB,EACf,GAAGE,IADY;QAEf,GAAGc,OAFY;QAGf;QACA,GAAI7B,OAAO,CAACkC,MAAR,CAAevB,KAAK,CAACE,GAArB,CAJW;QAKfG,QAAQ,EAAGC,KAAD,IAAkBG,SAAS,CAAC,MAAMJ,QAAQ,CAACC,KAAD,CAAf,CALtB;QAMfkB,SAAS,EAAGC,EAAD,IAAiB;UAC1B,IAAIA,EAAE,KAAKR,SAAP,IAAoBQ,EAAE,KAAKrB,IAAI,CAACsB,KAAL,EAA/B,EAA6C;YAC3C;YACA;YACA,OAAO3B,GAAG,CAACC,KAAK,CAACE,GAAP,CAAV;UACD;;UAED,OAAOE,IAAI,CAACoB,SAAL,CAAeC,EAAf,CAAP;QACD,CAdc;QAeftC,UAAU,EAAGwC,OAAD,IACVxC,UAAU,CAAEyC,CAAD,KAAQ,EACjB,GAAGA,CADc;UAEjB,CAAC5B,KAAK,CAACE,GAAP,GAAa,EAAE,GAAG0B,CAAC,CAAC5B,KAAK,CAACE,GAAP,CAAN;YAAmB,GAAGyB;UAAtB;QAFI,CAAR,CAAD,CAhBG;QAoBfE,SAAS,EAAE,MAAM;UACf,MAAM7C,KAAK,GAAGC,QAAQ,EAAtB;;UAEA,IAAID,KAAK,CAACa,MAAN,CAAab,KAAK,CAAC8C,KAAnB,EAA0B5B,GAA1B,KAAkCF,KAAK,CAACE,GAA5C,EAAiD;YAC/C,OAAO,KAAP;UACD,CALc,CAOf;UACA;;;UACA,OAAOhB,UAAU,GAAGA,UAAU,CAAC2C,SAAX,EAAH,GAA4B,IAA7C;QACD;MA9Bc,CAAjB;IAgCD;;IAED,OAAO9B,GAAP;EACD,CA9Fe,EA8Fb,EA9Fa,CAAhB;EAgGA,OAAOP,KAAK,CAACE,OAAb;AACD"}
1
+ {"version":3,"names":["CommonActions","React","NavigationBuilderContext","useNavigationCache","state","getState","navigation","setOptions","router","emitter","stackRef","useContext","cache","useMemo","current","actions","actionCreators","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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"}
@@ -2,11 +2,9 @@ import * as React from 'react';
2
2
  import createNavigationContainerRef from './createNavigationContainerRef';
3
3
  export default function useNavigationContainerRef() {
4
4
  const navigation = React.useRef(null);
5
-
6
5
  if (navigation.current == null) {
7
6
  navigation.current = createNavigationContainerRef();
8
7
  }
9
-
10
8
  return navigation.current;
11
9
  }
12
10
  //# sourceMappingURL=useNavigationContainerRef.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","createNavigationContainerRef","useNavigationContainerRef","navigation","useRef","current"],"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,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,OAAOC,4BAAP,MAAyC,gCAAzC;AAGA,eAAe,SAASC,yBAAT,GAEmC;EAChD,MAAMC,UAAU,GACdH,KAAK,CAACI,MAAN,CAAkE,IAAlE,CADF;;EAGA,IAAID,UAAU,CAACE,OAAX,IAAsB,IAA1B,EAAgC;IAC9BF,UAAU,CAACE,OAAX,GAAqBJ,4BAA4B,EAAjD;EACD;;EAED,OAAOE,UAAU,CAACE,OAAlB;AACD"}
1
+ {"version":3,"names":["React","createNavigationContainerRef","useNavigationContainerRef","navigation","useRef","current"],"sourceRoot":"../../src","sources":["useNavigationContainerRef.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,4BAA4B,MAAM,gCAAgC;AAGzE,eAAe,SAASC,yBAAyB,GAEC;EAChD,MAAMC,UAAU,GACdH,KAAK,CAACI,MAAM,CAAsD,IAAI,CAAC;EAEzE,IAAID,UAAU,CAACE,OAAO,IAAI,IAAI,EAAE;IAC9BF,UAAU,CAACE,OAAO,GAAGJ,4BAA4B,EAAa;EAChE;EAEA,OAAOE,UAAU,CAACE,OAAO;AAC3B"}
@@ -6,7 +6,6 @@ import UnhandledActionContext from './UnhandledActionContext';
6
6
  // This is to make TypeScript compiler happy
7
7
  // eslint-disable-next-line babel/no-unused-expressions
8
8
  PrivateValueStore;
9
-
10
9
  /**
11
10
  * Navigation object with helper methods to be used by a navigator.
12
11
  * This object includes methods for common actions as well as methods the parent screen's navigation object.
@@ -25,13 +24,12 @@ export default function useNavigationHelpers(_ref) {
25
24
  const dispatch = op => {
26
25
  const action = typeof op === 'function' ? op(getState()) : op;
27
26
  const handled = onAction(action);
28
-
29
27
  if (!handled) {
30
28
  onUnhandledAction === null || onUnhandledAction === void 0 ? void 0 : onUnhandledAction(action);
31
29
  }
32
30
  };
33
-
34
- const actions = { ...router.actionCreators,
31
+ const actions = {
32
+ ...router.actionCreators,
35
33
  ...CommonActions
36
34
  };
37
35
  const helpers = Object.keys(actions).reduce((acc, name) => {
@@ -39,10 +37,10 @@ export default function useNavigationHelpers(_ref) {
39
37
  acc[name] = function () {
40
38
  return dispatch(actions[name](...arguments));
41
39
  };
42
-
43
40
  return acc;
44
41
  }, {});
45
- const navigationHelpers = { ...parentNavigationHelpers,
42
+ const navigationHelpers = {
43
+ ...parentNavigationHelpers,
46
44
  ...helpers,
47
45
  dispatch,
48
46
  emit: emitter.emit,
@@ -59,14 +57,11 @@ export default function useNavigationHelpers(_ref) {
59
57
  getParent: id => {
60
58
  if (id !== undefined) {
61
59
  let current = navigationHelpers;
62
-
63
60
  while (current && id !== current.getId()) {
64
61
  current = current.getParent();
65
62
  }
66
-
67
63
  return current;
68
64
  }
69
-
70
65
  return parentNavigationHelpers;
71
66
  },
72
67
  getState
@@ -1 +1 @@
1
- {"version":3,"names":["CommonActions","React","NavigationContext","PrivateValueStore","UnhandledActionContext","useNavigationHelpers","id","navigatorId","onAction","getState","emitter","router","onUnhandledAction","useContext","parentNavigationHelpers","useMemo","dispatch","op","action","handled","actions","actionCreators","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":"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"}
1
+ {"version":3,"names":["CommonActions","React","NavigationContext","PrivateValueStore","UnhandledActionContext","useNavigationHelpers","id","navigatorId","onAction","getState","emitter","router","onUnhandledAction","useContext","parentNavigationHelpers","useMemo","dispatch","op","action","handled","actions","actionCreators","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,SACEA,aAAa,QAKR,2BAA2B;AAClC,OAAO,KAAKC,KAAK,MAAM,OAAO;AAE9B,OAAOC,iBAAiB,MAAM,qBAAqB;AACnD,SAA4BC,iBAAiB,QAAQ,SAAS;AAC9D,OAAOC,sBAAsB,MAAM,0BAA0B;AAG7D;AACA;AACAD,iBAAiB;AAUjB;AACA;AACA;AACA;AACA,eAAe,SAASE,oBAAoB,OAWjB;EAAA,IANzB;IACAC,EAAE,EAAEC,WAAW;IACfC,QAAQ;IACRC,QAAQ;IACRC,OAAO;IACPC;EACsB,CAAC;EACvB,MAAMC,iBAAiB,GAAGX,KAAK,CAACY,UAAU,CAACT,sBAAsB,CAAC;EAClE,MAAMU,uBAAuB,GAAGb,KAAK,CAACY,UAAU,CAACX,iBAAiB,CAAC;EAEnE,OAAOD,KAAK,CAACc,OAAO,CAAC,MAAM;IACzB,MAAMC,QAAQ,GAAIC,EAAuC,IAAK;MAC5D,MAAMC,MAAM,GAAG,OAAOD,EAAE,KAAK,UAAU,GAAGA,EAAE,CAACR,QAAQ,EAAE,CAAC,GAAGQ,EAAE;MAE7D,MAAME,OAAO,GAAGX,QAAQ,CAACU,MAAM,CAAC;MAEhC,IAAI,CAACC,OAAO,EAAE;QACZP,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAGM,MAAM,CAAC;MAC7B;IACF,CAAC;IAED,MAAME,OAAO,GAAG;MACd,GAAGT,MAAM,CAACU,cAAc;MACxB,GAAGrB;IACL,CAAC;IAED,MAAMsB,OAAO,GAAGC,MAAM,CAACC,IAAI,CAACJ,OAAO,CAAC,CAACK,MAAM,CAAC,CAACC,GAAG,EAAEC,IAAI,KAAK;MACzD;MACAD,GAAG,CAACC,IAAI,CAAC,GAAG;QAAA,OAAkBX,QAAQ,CAACI,OAAO,CAACO,IAAI,CAAC,CAAC,YAAO,CAAC,CAAC;MAAA;MAC9D,OAAOD,GAAG;IACZ,CAAC,EAAE,CAAC,CAAC,CAAkB;IAEvB,MAAME,iBAAiB,GAAG;MACxB,GAAGd,uBAAuB;MAC1B,GAAGQ,OAAO;MACVN,QAAQ;MACRa,IAAI,EAAEnB,OAAO,CAACmB,IAAI;MAClBC,SAAS,EAAEhB,uBAAuB,GAC9BA,uBAAuB,CAACgB,SAAS,GACjC,MAAM,IAAI;MACdC,SAAS,EAAE,MAAM;QACf,MAAMC,KAAK,GAAGvB,QAAQ,EAAE;QAExB,OACEE,MAAM,CAACsB,iBAAiB,CAACD,KAAK,EAAEhC,aAAa,CAACkC,MAAM,EAAE,EAAY;UAChEC,UAAU,EAAEH,KAAK,CAACG,UAAU;UAC5BC,cAAc,EAAE,CAAC,CAAC;UAClBC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,KAAK,IAAI,KACXvB,uBAAuB,aAAvBA,uBAAuB,uBAAvBA,uBAAuB,CAAEiB,SAAS,EAAE,KACpC,KAAK;MAET,CAAC;MACDO,KAAK,EAAE,MAAM/B,WAAW;MACxBgC,SAAS,EAAGjC,EAAW,IAAK;QAC1B,IAAIA,EAAE,KAAKkC,SAAS,EAAE;UACpB,IAAIC,OAAO,GAAGb,iBAAiB;UAE/B,OAAOa,OAAO,IAAInC,EAAE,KAAKmC,OAAO,CAACH,KAAK,EAAE,EAAE;YACxCG,OAAO,GAAGA,OAAO,CAACF,SAAS,EAAE;UAC/B;UAEA,OAAOE,OAAO;QAChB;QAEA,OAAO3B,uBAAuB;MAChC,CAAC;MACDL;IACF,CAA+D;IAE/D,OAAOmB,iBAAiB;EAC1B,CAAC,EAAE,CACDrB,WAAW,EACXG,OAAO,CAACmB,IAAI,EACZpB,QAAQ,EACRD,QAAQ,EACRI,iBAAiB,EACjBE,uBAAuB,EACvBH,MAAM,CACP,CAAC;AACJ"}
@@ -1,17 +1,18 @@
1
1
  import * as React from 'react';
2
2
  import useNavigation from './useNavigation';
3
-
4
3
  /**
5
4
  * Hook to get a value from the current navigation state using a selector.
6
5
  *
7
6
  * @param selector Selector function to get a value from the state.
8
7
  */
9
8
  export default function useNavigationState(selector) {
10
- const navigation = useNavigation(); // We don't care about the state value, we run the selector again at the end
11
- // The state is only to make sure that there's a re-render when we have a new value
9
+ const navigation = useNavigation();
12
10
 
13
- const [, setResult] = React.useState(() => selector(navigation.getState())); // We store the selector in a ref to avoid re-subscribing listeners every render
11
+ // We don't care about the state value, we run the selector again at the end
12
+ // The state is only to make sure that there's a re-render when we have a new value
13
+ const [, setResult] = React.useState(() => selector(navigation.getState()));
14
14
 
15
+ // We store the selector in a ref to avoid re-subscribing listeners every render
15
16
  const selectorRef = React.useRef(selector);
16
17
  React.useEffect(() => {
17
18
  selectorRef.current = selector;
@@ -1 +1 @@
1
- {"version":3,"names":["React","useNavigation","useNavigationState","selector","navigation","setResult","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,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAGA,OAAOC,aAAP,MAA0B,iBAA1B;;AAMA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,kBAAT,CACbC,QADa,EAEV;EACH,MAAMC,UAAU,GAAGH,aAAa,EAAhC,CADG,CAGH;EACA;;EACA,MAAM,GAAGI,SAAH,IAAgBL,KAAK,CAACM,QAAN,CAAe,MAAMH,QAAQ,CAACC,UAAU,CAACG,QAAX,EAAD,CAA7B,CAAtB,CALG,CAOH;;EACA,MAAMC,WAAW,GAAGR,KAAK,CAACS,MAAN,CAAaN,QAAb,CAApB;EAEAH,KAAK,CAACU,SAAN,CAAgB,MAAM;IACpBF,WAAW,CAACG,OAAZ,GAAsBR,QAAtB;EACD,CAFD;EAIAH,KAAK,CAACU,SAAN,CAAgB,MAAM;IACpB,MAAME,WAAW,GAAGR,UAAU,CAACS,WAAX,CAAuB,OAAvB,EAAiCC,CAAD,IAAO;MACzDT,SAAS,CAACG,WAAW,CAACG,OAAZ,CAAoBG,CAAC,CAACC,IAAF,CAAOC,KAA3B,CAAD,CAAT;IACD,CAFmB,CAApB;IAIA,OAAOJ,WAAP;EACD,CAND,EAMG,CAACR,UAAD,CANH;EAQA,OAAOD,QAAQ,CAACC,UAAU,CAACG,QAAX,EAAD,CAAf;AACD"}
1
+ {"version":3,"names":["React","useNavigation","useNavigationState","selector","navigation","setResult","useState","getState","selectorRef","useRef","useEffect","current","unsubscribe","addListener","e","data","state"],"sourceRoot":"../../src","sources":["useNavigationState.tsx"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAG9B,OAAOC,aAAa,MAAM,iBAAiB;AAM3C;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,kBAAkB,CACxCC,QAAgC,EAC7B;EACH,MAAMC,UAAU,GAAGH,aAAa,EAA6B;;EAE7D;EACA;EACA,MAAM,GAAGI,SAAS,CAAC,GAAGL,KAAK,CAACM,QAAQ,CAAC,MAAMH,QAAQ,CAACC,UAAU,CAACG,QAAQ,EAAE,CAAC,CAAC;;EAE3E;EACA,MAAMC,WAAW,GAAGR,KAAK,CAACS,MAAM,CAACN,QAAQ,CAAC;EAE1CH,KAAK,CAACU,SAAS,CAAC,MAAM;IACpBF,WAAW,CAACG,OAAO,GAAGR,QAAQ;EAChC,CAAC,CAAC;EAEFH,KAAK,CAACU,SAAS,CAAC,MAAM;IACpB,MAAME,WAAW,GAAGR,UAAU,CAACS,WAAW,CAAC,OAAO,EAAGC,CAAC,IAAK;MACzDT,SAAS,CAACG,WAAW,CAACG,OAAO,CAACG,CAAC,CAACC,IAAI,CAACC,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,OAAOJ,WAAW;EACpB,CAAC,EAAE,CAACR,UAAU,CAAC,CAAC;EAEhB,OAAOD,QAAQ,CAACC,UAAU,CAACG,QAAQ,EAAE,CAAC;AACxC"}
@@ -1,7 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import NavigationBuilderContext from './NavigationBuilderContext';
3
3
  import useOnPreventRemove, { shouldPreventRemove } from './useOnPreventRemove';
4
-
5
4
  /**
6
5
  * Hook to handle actions for a navigator, including state updates and bubbling.
7
6
  *
@@ -34,64 +33,54 @@ export default function useOnAction(_ref) {
34
33
  });
35
34
  const onAction = React.useCallback(function (action) {
36
35
  let visitedNavigators = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Set();
37
- const state = getState(); // Since actions can bubble both up and down, they could come to the same navigator again
38
- // We keep track of navigators which have already tried to handle the action and return if it's already visited
36
+ const state = getState();
39
37
 
38
+ // Since actions can bubble both up and down, they could come to the same navigator again
39
+ // We keep track of navigators which have already tried to handle the action and return if it's already visited
40
40
  if (visitedNavigators.has(state.key)) {
41
41
  return false;
42
42
  }
43
-
44
43
  visitedNavigators.add(state.key);
45
-
46
44
  if (typeof action.target !== 'string' || action.target === state.key) {
47
- let result = router.getStateForAction(state, action, routerConfigOptionsRef.current); // If a target is specified and set to current navigator, the action shouldn't bubble
48
- // So instead of `null`, we use the state object for such cases to signal that action was handled
45
+ let result = router.getStateForAction(state, action, routerConfigOptionsRef.current);
49
46
 
47
+ // If a target is specified and set to current navigator, the action shouldn't bubble
48
+ // So instead of `null`, we use the state object for such cases to signal that action was handled
50
49
  result = result === null && action.target === state.key ? state : result;
51
-
52
50
  if (result !== null) {
53
51
  onDispatchAction(action, state === result);
54
-
55
52
  if (state !== result) {
56
53
  const isPrevented = shouldPreventRemove(emitter, beforeRemoveListeners, state.routes, result.routes, action);
57
-
58
54
  if (isPrevented) {
59
55
  return true;
60
56
  }
61
-
62
57
  setState(result);
63
58
  }
64
-
65
59
  if (onRouteFocusParent !== undefined) {
66
60
  // Some actions such as `NAVIGATE` also want to bring the navigated route to focus in the whole tree
67
61
  // This means we need to focus all of the parent navigators of this navigator as well
68
62
  const shouldFocus = router.shouldActionChangeFocus(action);
69
-
70
63
  if (shouldFocus && key !== undefined) {
71
64
  onRouteFocusParent(key);
72
65
  }
73
66
  }
74
-
75
67
  return true;
76
68
  }
77
69
  }
78
-
79
70
  if (onActionParent !== undefined) {
80
71
  // Bubble action to the parent if the current navigator didn't handle it
81
72
  if (onActionParent(action, visitedNavigators)) {
82
73
  return true;
83
74
  }
84
- } // If the action wasn't handled by current navigator or a parent navigator, let children handle it
85
-
75
+ }
86
76
 
77
+ // If the action wasn't handled by current navigator or a parent navigator, let children handle it
87
78
  for (let i = actionListeners.length - 1; i >= 0; i--) {
88
79
  const listener = actionListeners[i];
89
-
90
80
  if (listener(action, visitedNavigators)) {
91
81
  return true;
92
82
  }
93
83
  }
94
-
95
84
  return false;
96
85
  }, [actionListeners, beforeRemoveListeners, emitter, getState, key, onActionParent, onDispatchAction, onRouteFocusParent, router, setState]);
97
86
  useOnPreventRemove({
@@ -1 +1 @@
1
- {"version":3,"names":["React","NavigationBuilderContext","useOnPreventRemove","shouldPreventRemove","useOnAction","router","getState","setState","key","actionListeners","beforeRemoveListeners","routerConfigOptions","emitter","onAction","onActionParent","onRouteFocus","onRouteFocusParent","addListener","addListenerParent","onDispatchAction","useContext","routerConfigOptionsRef","useRef","useEffect","current","useCallback","action","visitedNavigators","Set","state","has","add","target","result","getStateForAction","isPrevented","routes","undefined","shouldFocus","shouldActionChangeFocus","i","length","listener"],"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":["React","NavigationBuilderContext","useOnPreventRemove","shouldPreventRemove","useOnAction","router","getState","setState","key","actionListeners","beforeRemoveListeners","routerConfigOptions","emitter","onAction","onActionParent","onRouteFocus","onRouteFocusParent","addListener","addListenerParent","onDispatchAction","useContext","routerConfigOptionsRef","useRef","useEffect","current","useCallback","action","visitedNavigators","Set","state","has","add","target","result","getStateForAction","isPrevented","routes","undefined","shouldFocus","shouldActionChangeFocus","i","length","listener"],"sourceRoot":"../../src","sources":["useOnAction.tsx"],"mappings":"AAOA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,wBAAwB,MAGxB,4BAA4B;AAGnC,OAAOC,kBAAkB,IAAIC,mBAAmB,QAAQ,sBAAsB;AAa9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,WAAW,OASvB;EAAA,IATwB;IAClCC,MAAM;IACNC,QAAQ;IACRC,QAAQ;IACRC,GAAG;IACHC,eAAe;IACfC,qBAAqB;IACrBC,mBAAmB;IACnBC;EACO,CAAC;EACR,MAAM;IACJC,QAAQ,EAAEC,cAAc;IACxBC,YAAY,EAAEC,kBAAkB;IAChCC,WAAW,EAAEC,iBAAiB;IAC9BC;EACF,CAAC,GAAGnB,KAAK,CAACoB,UAAU,CAACnB,wBAAwB,CAAC;EAE9C,MAAMoB,sBAAsB,GAC1BrB,KAAK,CAACsB,MAAM,CAAsBX,mBAAmB,CAAC;EAExDX,KAAK,CAACuB,SAAS,CAAC,MAAM;IACpBF,sBAAsB,CAACG,OAAO,GAAGb,mBAAmB;EACtD,CAAC,CAAC;EAEF,MAAME,QAAQ,GAAGb,KAAK,CAACyB,WAAW,CAChC,UACEC,MAAwB,EAErB;IAAA,IADHC,iBAA8B,uEAAG,IAAIC,GAAG,EAAU;IAElD,MAAMC,KAAK,GAAGvB,QAAQ,EAAE;;IAExB;IACA;IACA,IAAIqB,iBAAiB,CAACG,GAAG,CAACD,KAAK,CAACrB,GAAG,CAAC,EAAE;MACpC,OAAO,KAAK;IACd;IAEAmB,iBAAiB,CAACI,GAAG,CAACF,KAAK,CAACrB,GAAG,CAAC;IAEhC,IAAI,OAAOkB,MAAM,CAACM,MAAM,KAAK,QAAQ,IAAIN,MAAM,CAACM,MAAM,KAAKH,KAAK,CAACrB,GAAG,EAAE;MACpE,IAAIyB,MAAM,GAAG5B,MAAM,CAAC6B,iBAAiB,CACnCL,KAAK,EACLH,MAAM,EACNL,sBAAsB,CAACG,OAAO,CAC/B;;MAED;MACA;MACAS,MAAM,GACJA,MAAM,KAAK,IAAI,IAAIP,MAAM,CAACM,MAAM,KAAKH,KAAK,CAACrB,GAAG,GAAGqB,KAAK,GAAGI,MAAM;MAEjE,IAAIA,MAAM,KAAK,IAAI,EAAE;QACnBd,gBAAgB,CAACO,MAAM,EAAEG,KAAK,KAAKI,MAAM,CAAC;QAE1C,IAAIJ,KAAK,KAAKI,MAAM,EAAE;UACpB,MAAME,WAAW,GAAGhC,mBAAmB,CACrCS,OAAO,EACPF,qBAAqB,EACrBmB,KAAK,CAACO,MAAM,EACZH,MAAM,CAACG,MAAM,EACbV,MAAM,CACP;UAED,IAAIS,WAAW,EAAE;YACf,OAAO,IAAI;UACb;UAEA5B,QAAQ,CAAC0B,MAAM,CAAC;QAClB;QAEA,IAAIjB,kBAAkB,KAAKqB,SAAS,EAAE;UACpC;UACA;UACA,MAAMC,WAAW,GAAGjC,MAAM,CAACkC,uBAAuB,CAACb,MAAM,CAAC;UAE1D,IAAIY,WAAW,IAAI9B,GAAG,KAAK6B,SAAS,EAAE;YACpCrB,kBAAkB,CAACR,GAAG,CAAC;UACzB;QACF;QAEA,OAAO,IAAI;MACb;IACF;IAEA,IAAIM,cAAc,KAAKuB,SAAS,EAAE;MAChC;MACA,IAAIvB,cAAc,CAACY,MAAM,EAAEC,iBAAiB,CAAC,EAAE;QAC7C,OAAO,IAAI;MACb;IACF;;IAEA;IACA,KAAK,IAAIa,CAAC,GAAG/B,eAAe,CAACgC,MAAM,GAAG,CAAC,EAAED,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;MACpD,MAAME,QAAQ,GAAGjC,eAAe,CAAC+B,CAAC,CAAC;MAEnC,IAAIE,QAAQ,CAAChB,MAAM,EAAEC,iBAAiB,CAAC,EAAE;QACvC,OAAO,IAAI;MACb;IACF;IAEA,OAAO,KAAK;EACd,CAAC,EACD,CACElB,eAAe,EACfC,qBAAqB,EACrBE,OAAO,EACPN,QAAQ,EACRE,GAAG,EACHM,cAAc,EACdK,gBAAgB,EAChBH,kBAAkB,EAClBX,MAAM,EACNE,QAAQ,CACT,CACF;EAEDL,kBAAkB,CAAC;IACjBI,QAAQ;IACRM,OAAO;IACPF;EACF,CAAC,CAAC;EAEFV,KAAK,CAACuB,SAAS,CACb,MAAML,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAG,QAAQ,EAAEL,QAAQ,CAAC,EAC7C,CAACK,iBAAiB,EAAEL,QAAQ,CAAC,CAC9B;EAED,OAAOA,QAAQ;AACjB"}
@@ -13,27 +13,25 @@ export default function useOnGetState(_ref) {
13
13
  const route = React.useContext(NavigationRouteContext);
14
14
  const key = route ? route.key : 'root';
15
15
  const getRehydratedState = React.useCallback(() => {
16
- const state = getState(); // Avoid returning new route objects if we don't need to
16
+ const state = getState();
17
17
 
18
+ // Avoid returning new route objects if we don't need to
18
19
  const routes = state.routes.map(route => {
19
20
  var _getStateListeners$ro;
20
-
21
21
  const childState = (_getStateListeners$ro = getStateListeners[route.key]) === null || _getStateListeners$ro === void 0 ? void 0 : _getStateListeners$ro.call(getStateListeners);
22
-
23
22
  if (route.state === childState) {
24
23
  return route;
25
24
  }
26
-
27
- return { ...route,
25
+ return {
26
+ ...route,
28
27
  state: childState
29
28
  };
30
29
  });
31
-
32
30
  if (isArrayEqual(state.routes, routes)) {
33
31
  return state;
34
32
  }
35
-
36
- return { ...state,
33
+ return {
34
+ ...state,
37
35
  routes
38
36
  };
39
37
  }, [getState, getStateListeners]);
@@ -1 +1 @@
1
- {"version":3,"names":["React","isArrayEqual","NavigationBuilderContext","NavigationRouteContext","useOnGetState","getState","getStateListeners","addKeyedListener","useContext","route","key","getRehydratedState","useCallback","state","routes","map","childState","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,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,OAAOC,YAAP,MAAyB,gBAAzB;AACA,OAAOC,wBAAP,MAEO,4BAFP;AAGA,OAAOC,sBAAP,MAAmC,0BAAnC;AAOA,eAAe,SAASC,aAAT,OAGH;EAAA,IAH0B;IACpCC,QADoC;IAEpCC;EAFoC,CAG1B;EACV,MAAM;IAAEC;EAAF,IAAuBP,KAAK,CAACQ,UAAN,CAAiBN,wBAAjB,CAA7B;EACA,MAAMO,KAAK,GAAGT,KAAK,CAACQ,UAAN,CAAiBL,sBAAjB,CAAd;EACA,MAAMO,GAAG,GAAGD,KAAK,GAAGA,KAAK,CAACC,GAAT,GAAe,MAAhC;EAEA,MAAMC,kBAAkB,GAAGX,KAAK,CAACY,WAAN,CAAkB,MAAM;IACjD,MAAMC,KAAK,GAAGR,QAAQ,EAAtB,CADiD,CAGjD;;IACA,MAAMS,MAAM,GAAGD,KAAK,CAACC,MAAN,CAAaC,GAAb,CAAkBN,KAAD,IAAW;MAAA;;MACzC,MAAMO,UAAU,4BAAGV,iBAAiB,CAACG,KAAK,CAACC,GAAP,CAApB,0DAAG,2BAAAJ,iBAAiB,CAApC;;MAEA,IAAIG,KAAK,CAACI,KAAN,KAAgBG,UAApB,EAAgC;QAC9B,OAAOP,KAAP;MACD;;MAED,OAAO,EAAE,GAAGA,KAAL;QAAYI,KAAK,EAAEG;MAAnB,CAAP;IACD,CARc,CAAf;;IAUA,IAAIf,YAAY,CAACY,KAAK,CAACC,MAAP,EAAeA,MAAf,CAAhB,EAAwC;MACtC,OAAOD,KAAP;IACD;;IAED,OAAO,EAAE,GAAGA,KAAL;MAAYC;IAAZ,CAAP;EACD,CAnB0B,EAmBxB,CAACT,QAAD,EAAWC,iBAAX,CAnBwB,CAA3B;EAqBAN,KAAK,CAACiB,SAAN,CAAgB,MAAM;IACpB,OAAOV,gBAAP,aAAOA,gBAAP,uBAAOA,gBAAgB,CAAG,UAAH,EAAeG,GAAf,EAAoBC,kBAApB,CAAvB;EACD,CAFD,EAEG,CAACJ,gBAAD,EAAmBI,kBAAnB,EAAuCD,GAAvC,CAFH;AAGD"}
1
+ {"version":3,"names":["React","isArrayEqual","NavigationBuilderContext","NavigationRouteContext","useOnGetState","getState","getStateListeners","addKeyedListener","useContext","route","key","getRehydratedState","useCallback","state","routes","map","childState","useEffect"],"sourceRoot":"../../src","sources":["useOnGetState.tsx"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,YAAY,MAAM,gBAAgB;AACzC,OAAOC,wBAAwB,MAExB,4BAA4B;AACnC,OAAOC,sBAAsB,MAAM,0BAA0B;AAO7D,eAAe,SAASC,aAAa,OAGzB;EAAA,IAH0B;IACpCC,QAAQ;IACRC;EACO,CAAC;EACR,MAAM;IAAEC;EAAiB,CAAC,GAAGP,KAAK,CAACQ,UAAU,CAACN,wBAAwB,CAAC;EACvE,MAAMO,KAAK,GAAGT,KAAK,CAACQ,UAAU,CAACL,sBAAsB,CAAC;EACtD,MAAMO,GAAG,GAAGD,KAAK,GAAGA,KAAK,CAACC,GAAG,GAAG,MAAM;EAEtC,MAAMC,kBAAkB,GAAGX,KAAK,CAACY,WAAW,CAAC,MAAM;IACjD,MAAMC,KAAK,GAAGR,QAAQ,EAAE;;IAExB;IACA,MAAMS,MAAM,GAAGD,KAAK,CAACC,MAAM,CAACC,GAAG,CAAEN,KAAK,IAAK;MAAA;MACzC,MAAMO,UAAU,4BAAGV,iBAAiB,CAACG,KAAK,CAACC,GAAG,CAAC,0DAA5B,2BAAAJ,iBAAiB,CAAe;MAEnD,IAAIG,KAAK,CAACI,KAAK,KAAKG,UAAU,EAAE;QAC9B,OAAOP,KAAK;MACd;MAEA,OAAO;QAAE,GAAGA,KAAK;QAAEI,KAAK,EAAEG;MAAW,CAAC;IACxC,CAAC,CAAC;IAEF,IAAIf,YAAY,CAACY,KAAK,CAACC,MAAM,EAAEA,MAAM,CAAC,EAAE;MACtC,OAAOD,KAAK;IACd;IAEA,OAAO;MAAE,GAAGA,KAAK;MAAEC;IAAO,CAAC;EAC7B,CAAC,EAAE,CAACT,QAAQ,EAAEC,iBAAiB,CAAC,CAAC;EAEjCN,KAAK,CAACiB,SAAS,CAAC,MAAM;IACpB,OAAOV,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAG,UAAU,EAAEG,GAAG,EAAEC,kBAAkB,CAAC;EAChE,CAAC,EAAE,CAACJ,gBAAgB,EAAEI,kBAAkB,EAAED,GAAG,CAAC,CAAC;AACjD"}
@@ -3,32 +3,29 @@ import NavigationBuilderContext from './NavigationBuilderContext';
3
3
  import NavigationRouteContext from './NavigationRouteContext';
4
4
  const VISITED_ROUTE_KEYS = Symbol('VISITED_ROUTE_KEYS');
5
5
  export const shouldPreventRemove = (emitter, beforeRemoveListeners, currentRoutes, nextRoutes, action) => {
6
- var _action$VISITED_ROUTE;
7
-
8
- const nextRouteKeys = nextRoutes.map(route => route.key); // Call these in reverse order so last screens handle the event first
6
+ const nextRouteKeys = nextRoutes.map(route => route.key);
9
7
 
8
+ // Call these in reverse order so last screens handle the event first
10
9
  const removedRoutes = currentRoutes.filter(route => !nextRouteKeys.includes(route.key)).reverse();
11
- const visitedRouteKeys = // @ts-expect-error: add this property to mark that we've already emitted this action
12
- (_action$VISITED_ROUTE = action[VISITED_ROUTE_KEYS]) !== null && _action$VISITED_ROUTE !== void 0 ? _action$VISITED_ROUTE : new Set();
13
- const beforeRemoveAction = { ...action,
10
+ const visitedRouteKeys =
11
+ // @ts-expect-error: add this property to mark that we've already emitted this action
12
+ action[VISITED_ROUTE_KEYS] ?? new Set();
13
+ const beforeRemoveAction = {
14
+ ...action,
14
15
  [VISITED_ROUTE_KEYS]: visitedRouteKeys
15
16
  };
16
-
17
17
  for (const route of removedRoutes) {
18
18
  var _beforeRemoveListener;
19
-
20
19
  if (visitedRouteKeys.has(route.key)) {
21
20
  // Skip if we've already emitted this action for this screen
22
21
  continue;
23
- } // First, we need to check if any child screens want to prevent it
24
-
22
+ }
25
23
 
24
+ // First, we need to check if any child screens want to prevent it
26
25
  const isPrevented = (_beforeRemoveListener = beforeRemoveListeners[route.key]) === null || _beforeRemoveListener === void 0 ? void 0 : _beforeRemoveListener.call(beforeRemoveListeners, beforeRemoveAction);
27
-
28
26
  if (isPrevented) {
29
27
  return true;
30
28
  }
31
-
32
29
  visitedRouteKeys.add(route.key);
33
30
  const event = emitter.emit({
34
31
  type: 'beforeRemove',
@@ -38,12 +35,10 @@ export const shouldPreventRemove = (emitter, beforeRemoveListeners, currentRoute
38
35
  },
39
36
  canPreventDefault: true
40
37
  });
41
-
42
38
  if (event.defaultPrevented) {
43
39
  return true;
44
40
  }
45
41
  }
46
-
47
42
  return false;
48
43
  };
49
44
  export default function useOnPreventRemove(_ref) {
@@ -1 +1 @@
1
- {"version":3,"names":["React","NavigationBuilderContext","NavigationRouteContext","VISITED_ROUTE_KEYS","Symbol","shouldPreventRemove","emitter","beforeRemoveListeners","currentRoutes","nextRoutes","action","nextRouteKeys","map","route","key","removedRoutes","filter","includes","reverse","visitedRouteKeys","Set","beforeRemoveAction","has","isPrevented","add","event","emit","type","target","data","canPreventDefault","defaultPrevented","useOnPreventRemove","getState","addKeyedListener","useContext","routeKey","useEffect","state","routes"],"sources":["useOnPreventRemove.tsx"],"sourcesContent":["import type {\n NavigationAction,\n NavigationState,\n} from '@react-navigation/routers';\nimport * as React from 'react';\n\nimport NavigationBuilderContext, {\n ChildBeforeRemoveListener,\n} from './NavigationBuilderContext';\nimport NavigationRouteContext from './NavigationRouteContext';\nimport type { EventMapCore } from './types';\nimport type { NavigationEventEmitter } from './useEventEmitter';\n\ntype Options = {\n getState: () => NavigationState;\n emitter: NavigationEventEmitter<EventMapCore<any>>;\n beforeRemoveListeners: Record<string, ChildBeforeRemoveListener | undefined>;\n};\n\nconst VISITED_ROUTE_KEYS = Symbol('VISITED_ROUTE_KEYS');\n\nexport const shouldPreventRemove = (\n emitter: NavigationEventEmitter<EventMapCore<any>>,\n beforeRemoveListeners: Record<string, ChildBeforeRemoveListener | undefined>,\n currentRoutes: { key: string }[],\n nextRoutes: { key?: string | undefined }[],\n action: NavigationAction\n) => {\n const nextRouteKeys = nextRoutes.map((route) => route.key);\n\n // Call these in reverse order so last screens handle the event first\n const removedRoutes = currentRoutes\n .filter((route) => !nextRouteKeys.includes(route.key))\n .reverse();\n\n const visitedRouteKeys: Set<string> =\n // @ts-expect-error: add this property to mark that we've already emitted this action\n action[VISITED_ROUTE_KEYS] ?? new Set<string>();\n\n const beforeRemoveAction = {\n ...action,\n [VISITED_ROUTE_KEYS]: visitedRouteKeys,\n };\n\n for (const route of removedRoutes) {\n if (visitedRouteKeys.has(route.key)) {\n // Skip if we've already emitted this action for this screen\n continue;\n }\n\n // First, we need to check if any child screens want to prevent it\n const isPrevented = beforeRemoveListeners[route.key]?.(beforeRemoveAction);\n\n if (isPrevented) {\n return true;\n }\n\n visitedRouteKeys.add(route.key);\n\n const event = emitter.emit({\n type: 'beforeRemove',\n target: route.key,\n data: { action: beforeRemoveAction },\n canPreventDefault: true,\n });\n\n if (event.defaultPrevented) {\n return true;\n }\n }\n\n return false;\n};\n\nexport default function useOnPreventRemove({\n getState,\n emitter,\n beforeRemoveListeners,\n}: Options) {\n const { addKeyedListener } = React.useContext(NavigationBuilderContext);\n const route = React.useContext(NavigationRouteContext);\n const routeKey = route?.key;\n\n React.useEffect(() => {\n if (routeKey) {\n return addKeyedListener?.('beforeRemove', routeKey, (action) => {\n const state = getState();\n\n return shouldPreventRemove(\n emitter,\n beforeRemoveListeners,\n state.routes,\n [],\n action\n );\n });\n }\n }, [addKeyedListener, beforeRemoveListeners, emitter, getState, routeKey]);\n}\n"],"mappings":"AAIA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,OAAOC,wBAAP,MAEO,4BAFP;AAGA,OAAOC,sBAAP,MAAmC,0BAAnC;AAUA,MAAMC,kBAAkB,GAAGC,MAAM,CAAC,oBAAD,CAAjC;AAEA,OAAO,MAAMC,mBAAmB,GAAG,CACjCC,OADiC,EAEjCC,qBAFiC,EAGjCC,aAHiC,EAIjCC,UAJiC,EAKjCC,MALiC,KAM9B;EAAA;;EACH,MAAMC,aAAa,GAAGF,UAAU,CAACG,GAAX,CAAgBC,KAAD,IAAWA,KAAK,CAACC,GAAhC,CAAtB,CADG,CAGH;;EACA,MAAMC,aAAa,GAAGP,aAAa,CAChCQ,MADmB,CACXH,KAAD,IAAW,CAACF,aAAa,CAACM,QAAd,CAAuBJ,KAAK,CAACC,GAA7B,CADA,EAEnBI,OAFmB,EAAtB;EAIA,MAAMC,gBAA6B,GACjC;EADiC,yBAEjCT,MAAM,CAACP,kBAAD,CAF2B,yEAEH,IAAIiB,GAAJ,EAFhC;EAIA,MAAMC,kBAAkB,GAAG,EACzB,GAAGX,MADsB;IAEzB,CAACP,kBAAD,GAAsBgB;EAFG,CAA3B;;EAKA,KAAK,MAAMN,KAAX,IAAoBE,aAApB,EAAmC;IAAA;;IACjC,IAAII,gBAAgB,CAACG,GAAjB,CAAqBT,KAAK,CAACC,GAA3B,CAAJ,EAAqC;MACnC;MACA;IACD,CAJgC,CAMjC;;;IACA,MAAMS,WAAW,4BAAGhB,qBAAqB,CAACM,KAAK,CAACC,GAAP,CAAxB,0DAAG,2BAAAP,qBAAqB,EAAcc,kBAAd,CAAzC;;IAEA,IAAIE,WAAJ,EAAiB;MACf,OAAO,IAAP;IACD;;IAEDJ,gBAAgB,CAACK,GAAjB,CAAqBX,KAAK,CAACC,GAA3B;IAEA,MAAMW,KAAK,GAAGnB,OAAO,CAACoB,IAAR,CAAa;MACzBC,IAAI,EAAE,cADmB;MAEzBC,MAAM,EAAEf,KAAK,CAACC,GAFW;MAGzBe,IAAI,EAAE;QAAEnB,MAAM,EAAEW;MAAV,CAHmB;MAIzBS,iBAAiB,EAAE;IAJM,CAAb,CAAd;;IAOA,IAAIL,KAAK,CAACM,gBAAV,EAA4B;MAC1B,OAAO,IAAP;IACD;EACF;;EAED,OAAO,KAAP;AACD,CAnDM;AAqDP,eAAe,SAASC,kBAAT,OAIH;EAAA,IAJ+B;IACzCC,QADyC;IAEzC3B,OAFyC;IAGzCC;EAHyC,CAI/B;EACV,MAAM;IAAE2B;EAAF,IAAuBlC,KAAK,CAACmC,UAAN,CAAiBlC,wBAAjB,CAA7B;EACA,MAAMY,KAAK,GAAGb,KAAK,CAACmC,UAAN,CAAiBjC,sBAAjB,CAAd;EACA,MAAMkC,QAAQ,GAAGvB,KAAH,aAAGA,KAAH,uBAAGA,KAAK,CAAEC,GAAxB;EAEAd,KAAK,CAACqC,SAAN,CAAgB,MAAM;IACpB,IAAID,QAAJ,EAAc;MACZ,OAAOF,gBAAP,aAAOA,gBAAP,uBAAOA,gBAAgB,CAAG,cAAH,EAAmBE,QAAnB,EAA8B1B,MAAD,IAAY;QAC9D,MAAM4B,KAAK,GAAGL,QAAQ,EAAtB;QAEA,OAAO5B,mBAAmB,CACxBC,OADwB,EAExBC,qBAFwB,EAGxB+B,KAAK,CAACC,MAHkB,EAIxB,EAJwB,EAKxB7B,MALwB,CAA1B;MAOD,CAVsB,CAAvB;IAWD;EACF,CAdD,EAcG,CAACwB,gBAAD,EAAmB3B,qBAAnB,EAA0CD,OAA1C,EAAmD2B,QAAnD,EAA6DG,QAA7D,CAdH;AAeD"}
1
+ {"version":3,"names":["React","NavigationBuilderContext","NavigationRouteContext","VISITED_ROUTE_KEYS","Symbol","shouldPreventRemove","emitter","beforeRemoveListeners","currentRoutes","nextRoutes","action","nextRouteKeys","map","route","key","removedRoutes","filter","includes","reverse","visitedRouteKeys","Set","beforeRemoveAction","has","isPrevented","add","event","emit","type","target","data","canPreventDefault","defaultPrevented","useOnPreventRemove","getState","addKeyedListener","useContext","routeKey","useEffect","state","routes"],"sourceRoot":"../../src","sources":["useOnPreventRemove.tsx"],"mappings":"AAIA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,wBAAwB,MAExB,4BAA4B;AACnC,OAAOC,sBAAsB,MAAM,0BAA0B;AAU7D,MAAMC,kBAAkB,GAAGC,MAAM,CAAC,oBAAoB,CAAC;AAEvD,OAAO,MAAMC,mBAAmB,GAAG,CACjCC,OAAkD,EAClDC,qBAA4E,EAC5EC,aAAgC,EAChCC,UAA0C,EAC1CC,MAAwB,KACrB;EACH,MAAMC,aAAa,GAAGF,UAAU,CAACG,GAAG,CAAEC,KAAK,IAAKA,KAAK,CAACC,GAAG,CAAC;;EAE1D;EACA,MAAMC,aAAa,GAAGP,aAAa,CAChCQ,MAAM,CAAEH,KAAK,IAAK,CAACF,aAAa,CAACM,QAAQ,CAACJ,KAAK,CAACC,GAAG,CAAC,CAAC,CACrDI,OAAO,EAAE;EAEZ,MAAMC,gBAA6B;EACjC;EACAT,MAAM,CAACP,kBAAkB,CAAC,IAAI,IAAIiB,GAAG,EAAU;EAEjD,MAAMC,kBAAkB,GAAG;IACzB,GAAGX,MAAM;IACT,CAACP,kBAAkB,GAAGgB;EACxB,CAAC;EAED,KAAK,MAAMN,KAAK,IAAIE,aAAa,EAAE;IAAA;IACjC,IAAII,gBAAgB,CAACG,GAAG,CAACT,KAAK,CAACC,GAAG,CAAC,EAAE;MACnC;MACA;IACF;;IAEA;IACA,MAAMS,WAAW,4BAAGhB,qBAAqB,CAACM,KAAK,CAACC,GAAG,CAAC,0DAAhC,2BAAAP,qBAAqB,EAAcc,kBAAkB,CAAC;IAE1E,IAAIE,WAAW,EAAE;MACf,OAAO,IAAI;IACb;IAEAJ,gBAAgB,CAACK,GAAG,CAACX,KAAK,CAACC,GAAG,CAAC;IAE/B,MAAMW,KAAK,GAAGnB,OAAO,CAACoB,IAAI,CAAC;MACzBC,IAAI,EAAE,cAAc;MACpBC,MAAM,EAAEf,KAAK,CAACC,GAAG;MACjBe,IAAI,EAAE;QAAEnB,MAAM,EAAEW;MAAmB,CAAC;MACpCS,iBAAiB,EAAE;IACrB,CAAC,CAAC;IAEF,IAAIL,KAAK,CAACM,gBAAgB,EAAE;MAC1B,OAAO,IAAI;IACb;EACF;EAEA,OAAO,KAAK;AACd,CAAC;AAED,eAAe,SAASC,kBAAkB,OAI9B;EAAA,IAJ+B;IACzCC,QAAQ;IACR3B,OAAO;IACPC;EACO,CAAC;EACR,MAAM;IAAE2B;EAAiB,CAAC,GAAGlC,KAAK,CAACmC,UAAU,CAAClC,wBAAwB,CAAC;EACvE,MAAMY,KAAK,GAAGb,KAAK,CAACmC,UAAU,CAACjC,sBAAsB,CAAC;EACtD,MAAMkC,QAAQ,GAAGvB,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEC,GAAG;EAE3Bd,KAAK,CAACqC,SAAS,CAAC,MAAM;IACpB,IAAID,QAAQ,EAAE;MACZ,OAAOF,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAG,cAAc,EAAEE,QAAQ,EAAG1B,MAAM,IAAK;QAC9D,MAAM4B,KAAK,GAAGL,QAAQ,EAAE;QAExB,OAAO5B,mBAAmB,CACxBC,OAAO,EACPC,qBAAqB,EACrB+B,KAAK,CAACC,MAAM,EACZ,EAAE,EACF7B,MAAM,CACP;MACH,CAAC,CAAC;IACJ;EACF,CAAC,EAAE,CAACwB,gBAAgB,EAAE3B,qBAAqB,EAAED,OAAO,EAAE2B,QAAQ,EAAEG,QAAQ,CAAC,CAAC;AAC5E"}
@@ -1,6 +1,5 @@
1
1
  import * as React from 'react';
2
2
  import NavigationBuilderContext from './NavigationBuilderContext';
3
-
4
3
  /**
5
4
  * Hook to handle focus actions for a route.
6
5
  * Focus action needs to be treated specially, coz when a nested route is focused,
@@ -19,11 +18,9 @@ export default function useOnRouteFocus(_ref) {
19
18
  return React.useCallback(key => {
20
19
  const state = getState();
21
20
  const result = router.getStateForRouteFocus(state, key);
22
-
23
21
  if (result !== state) {
24
22
  setState(result);
25
23
  }
26
-
27
24
  if (onRouteFocusParent !== undefined && sourceRouteKey !== undefined) {
28
25
  onRouteFocusParent(sourceRouteKey);
29
26
  }
@@ -1 +1 @@
1
- {"version":3,"names":["React","NavigationBuilderContext","useOnRouteFocus","router","getState","key","sourceRouteKey","setState","onRouteFocus","onRouteFocusParent","useContext","useCallback","state","result","getStateForRouteFocus","undefined"],"sources":["useOnRouteFocus.tsx"],"sourcesContent":["import type {\n NavigationAction,\n NavigationState,\n Router,\n} from '@react-navigation/routers';\nimport * as React from 'react';\n\nimport NavigationBuilderContext from './NavigationBuilderContext';\n\ntype Options<Action extends NavigationAction> = {\n router: Router<NavigationState, Action>;\n getState: () => NavigationState;\n setState: (state: NavigationState) => void;\n key?: string;\n};\n\n/**\n * Hook to handle focus actions for a route.\n * Focus action needs to be treated specially, coz when a nested route is focused,\n * the parent navigators also needs to be focused.\n */\nexport default function useOnRouteFocus<Action extends NavigationAction>({\n router,\n getState,\n key: sourceRouteKey,\n setState,\n}: Options<Action>) {\n const { onRouteFocus: onRouteFocusParent } = React.useContext(\n NavigationBuilderContext\n );\n\n return React.useCallback(\n (key: string) => {\n const state = getState();\n const result = router.getStateForRouteFocus(state, key);\n\n if (result !== state) {\n setState(result);\n }\n\n if (onRouteFocusParent !== undefined && sourceRouteKey !== undefined) {\n onRouteFocusParent(sourceRouteKey);\n }\n },\n [getState, onRouteFocusParent, router, setState, sourceRouteKey]\n );\n}\n"],"mappings":"AAKA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,OAAOC,wBAAP,MAAqC,4BAArC;;AASA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,eAAT,OAKK;EAAA,IALqD;IACvEC,MADuE;IAEvEC,QAFuE;IAGvEC,GAAG,EAAEC,cAHkE;IAIvEC;EAJuE,CAKrD;EAClB,MAAM;IAAEC,YAAY,EAAEC;EAAhB,IAAuCT,KAAK,CAACU,UAAN,CAC3CT,wBAD2C,CAA7C;EAIA,OAAOD,KAAK,CAACW,WAAN,CACJN,GAAD,IAAiB;IACf,MAAMO,KAAK,GAAGR,QAAQ,EAAtB;IACA,MAAMS,MAAM,GAAGV,MAAM,CAACW,qBAAP,CAA6BF,KAA7B,EAAoCP,GAApC,CAAf;;IAEA,IAAIQ,MAAM,KAAKD,KAAf,EAAsB;MACpBL,QAAQ,CAACM,MAAD,CAAR;IACD;;IAED,IAAIJ,kBAAkB,KAAKM,SAAvB,IAAoCT,cAAc,KAAKS,SAA3D,EAAsE;MACpEN,kBAAkB,CAACH,cAAD,CAAlB;IACD;EACF,CAZI,EAaL,CAACF,QAAD,EAAWK,kBAAX,EAA+BN,MAA/B,EAAuCI,QAAvC,EAAiDD,cAAjD,CAbK,CAAP;AAeD"}
1
+ {"version":3,"names":["React","NavigationBuilderContext","useOnRouteFocus","router","getState","key","sourceRouteKey","setState","onRouteFocus","onRouteFocusParent","useContext","useCallback","state","result","getStateForRouteFocus","undefined"],"sourceRoot":"../../src","sources":["useOnRouteFocus.tsx"],"mappings":"AAKA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,wBAAwB,MAAM,4BAA4B;AASjE;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,eAAe,OAKnB;EAAA,IALqD;IACvEC,MAAM;IACNC,QAAQ;IACRC,GAAG,EAAEC,cAAc;IACnBC;EACe,CAAC;EAChB,MAAM;IAAEC,YAAY,EAAEC;EAAmB,CAAC,GAAGT,KAAK,CAACU,UAAU,CAC3DT,wBAAwB,CACzB;EAED,OAAOD,KAAK,CAACW,WAAW,CACrBN,GAAW,IAAK;IACf,MAAMO,KAAK,GAAGR,QAAQ,EAAE;IACxB,MAAMS,MAAM,GAAGV,MAAM,CAACW,qBAAqB,CAACF,KAAK,EAAEP,GAAG,CAAC;IAEvD,IAAIQ,MAAM,KAAKD,KAAK,EAAE;MACpBL,QAAQ,CAACM,MAAM,CAAC;IAClB;IAEA,IAAIJ,kBAAkB,KAAKM,SAAS,IAAIT,cAAc,KAAKS,SAAS,EAAE;MACpEN,kBAAkB,CAACH,cAAc,CAAC;IACpC;EACF,CAAC,EACD,CAACF,QAAQ,EAAEK,kBAAkB,EAAEN,MAAM,EAAEI,QAAQ,EAAED,cAAc,CAAC,CACjE;AACH"}