one 1.26.1 → 2.0.0-beta.33.1

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 (882) hide show
  1. package/dist/cjs/Root.native.js.map +1 -1
  2. package/dist/cjs/__mocks__/@react-navigation/native-stack.native.js.map +1 -1
  3. package/dist/cjs/__mocks__/expo-linking.native.js.map +1 -1
  4. package/dist/cjs/__mocks__/expo-modules-core.native.js.map +1 -1
  5. package/dist/cjs/__mocks__/react-native-screens.native.js.map +1 -1
  6. package/dist/cjs/__tests__/polyfills-mobile.test.native.js.map +1 -1
  7. package/dist/cjs/babel-plugins/environment-guard.native.js.map +1 -1
  8. package/dist/cjs/babel-plugins/inline-one-server-url.native.js.map +1 -1
  9. package/dist/cjs/babel-plugins/one-router-metro.native.js.map +1 -1
  10. package/dist/cjs/babel-plugins/one-router-metro.test.native.js.map +1 -1
  11. package/dist/cjs/babel-plugins/remove-server-code.native.js.map +1 -1
  12. package/dist/cjs/babel-preset/index.native.js.map +1 -1
  13. package/dist/cjs/babel-preset/index.test.native.js.map +1 -1
  14. package/dist/cjs/babel-preset/integration.test.native.js.map +1 -1
  15. package/dist/cjs/cli/build.native.js.map +1 -1
  16. package/dist/cjs/cli/buildPage.native.js.map +1 -1
  17. package/dist/cjs/cli/buildPageWorker.native.js.map +1 -1
  18. package/dist/cjs/cli/checkNodeVersion.native.js.map +1 -1
  19. package/dist/cjs/cli/daemon.native.js.map +1 -1
  20. package/dist/cjs/cli/dev.native.js.map +1 -1
  21. package/dist/cjs/cli/generateBundlerConfig.native.js.map +1 -1
  22. package/dist/cjs/cli/generateBundlerConfig.test.native.js.map +1 -1
  23. package/dist/cjs/cli/generateRoutes.native.js.map +1 -1
  24. package/dist/cjs/cli/generateSitemap.native.js.map +1 -1
  25. package/dist/cjs/cli/generateSitemap.test.native.js.map +1 -1
  26. package/dist/cjs/cli/install-error-handlers.native.js.map +1 -1
  27. package/dist/cjs/cli/label-process.native.js.map +1 -1
  28. package/dist/cjs/cli/main.native.js.map +1 -1
  29. package/dist/cjs/cli/patch.native.js.map +1 -1
  30. package/dist/cjs/cli/patch.test.native.js.map +1 -1
  31. package/dist/cjs/cli/prebuild.native.js.map +1 -1
  32. package/dist/cjs/cli/prebuild.test.native.js.map +1 -1
  33. package/dist/cjs/cli/runAndroid.native.js.map +1 -1
  34. package/dist/cjs/cli/runIos.native.js.map +1 -1
  35. package/dist/cjs/cli/securityScan.native.js.map +1 -1
  36. package/dist/cjs/cli/serverRouteModules.native.js.map +1 -1
  37. package/dist/cjs/cli/workerPool.native.js.map +1 -1
  38. package/dist/cjs/cli.native.js.map +1 -1
  39. package/dist/cjs/clientLoaderResolver.native.js.map +1 -1
  40. package/dist/cjs/config.native.js.map +1 -1
  41. package/dist/cjs/constants.native.js.map +1 -1
  42. package/dist/cjs/constants.test.native.js.map +1 -1
  43. package/dist/cjs/createAPIRoute.native.js.map +1 -1
  44. package/dist/cjs/createApp.native.js +25 -1
  45. package/dist/cjs/createApp.native.js.map +1 -1
  46. package/dist/cjs/createDevHandleRequest.native.js.map +1 -1
  47. package/dist/cjs/createHandleRequest.native.js.map +1 -1
  48. package/dist/cjs/createHandleRequest.test.native.js.map +1 -1
  49. package/dist/cjs/createMiddleware.native.js.map +1 -1
  50. package/dist/cjs/daemon/index.native.js.map +1 -1
  51. package/dist/cjs/daemon/ipc.native.js.map +1 -1
  52. package/dist/cjs/daemon/picker.native.js.map +1 -1
  53. package/dist/cjs/daemon/proxy.native.js.map +1 -1
  54. package/dist/cjs/daemon/registry.native.js.map +1 -1
  55. package/dist/cjs/daemon/server.native.js.map +1 -1
  56. package/dist/cjs/daemon/tui.native.js.map +1 -1
  57. package/dist/cjs/daemon/types.native.js.map +1 -1
  58. package/dist/cjs/daemon/utils.native.js.map +1 -1
  59. package/dist/cjs/devtools/registry.native.js.map +1 -1
  60. package/dist/cjs/drawer.native.js.map +1 -1
  61. package/dist/cjs/fallbackViews/Sitemap.cjs +1 -1
  62. package/dist/cjs/fallbackViews/Sitemap.native.js +1 -1
  63. package/dist/cjs/fallbackViews/Sitemap.native.js.map +1 -1
  64. package/dist/cjs/fallbackViews/Unmatched.native.js.map +1 -1
  65. package/dist/cjs/fork/NavigationContainer.cjs +25 -51
  66. package/dist/cjs/fork/NavigationContainer.native.js +29 -56
  67. package/dist/cjs/fork/NavigationContainer.native.js.map +1 -1
  68. package/dist/cjs/fork/__tests__/getPathFromState.test.native.js.map +1 -1
  69. package/dist/cjs/fork/__tests__/getStateFromPath.test.native.js.map +1 -1
  70. package/dist/cjs/fork/_shared.native.js.map +1 -1
  71. package/dist/cjs/fork/createMemoryHistory.native.js.map +1 -1
  72. package/dist/cjs/fork/createMemoryHistory.test.native.js.map +1 -1
  73. package/dist/cjs/fork/extractPathFromURL.native.js.map +1 -1
  74. package/dist/cjs/fork/extractPathFromURL.test.native.js.map +1 -1
  75. package/dist/cjs/fork/findFocusedRoute.native.js.map +1 -1
  76. package/dist/cjs/fork/getPathFromState-mods.native.js.map +1 -1
  77. package/dist/cjs/fork/getPathFromState.native.js.map +1 -1
  78. package/dist/cjs/fork/getPathFromState.test.native.js.map +1 -1
  79. package/dist/cjs/fork/getStateFromPath-mods.native.js.map +1 -1
  80. package/dist/cjs/fork/getStateFromPath.native.js.map +1 -1
  81. package/dist/cjs/fork/getStateFromPath.test.native.js.map +1 -1
  82. package/dist/cjs/fork/useLinking.cjs +18 -15
  83. package/dist/cjs/fork/useLinking.native.js +12 -21
  84. package/dist/cjs/fork/useLinking.native.js.map +1 -1
  85. package/dist/cjs/fork/useLinking.native.test.cjs +1 -1
  86. package/dist/cjs/fork/useLinking.native.test.native.js +1 -1
  87. package/dist/cjs/fork/useLinking.native.test.native.js.map +1 -1
  88. package/dist/cjs/fork/useThenable.native.js.map +1 -1
  89. package/dist/cjs/fork/validatePathConfig.cjs +9 -2
  90. package/dist/cjs/fork/validatePathConfig.native.js +9 -2
  91. package/dist/cjs/fork/validatePathConfig.native.js.map +1 -1
  92. package/dist/cjs/getReactNavigationConfig.cjs +49 -4
  93. package/dist/cjs/getReactNavigationConfig.native.js +55 -4
  94. package/dist/cjs/getReactNavigationConfig.native.js.map +1 -1
  95. package/dist/cjs/getURL.native.test.native.js.map +1 -1
  96. package/dist/cjs/head/Head.native.js.map +1 -1
  97. package/dist/cjs/head/HeadModule.native.js.map +1 -1
  98. package/dist/cjs/head/index.native.js.map +1 -1
  99. package/dist/cjs/head/types.native.js.map +1 -1
  100. package/dist/cjs/head/url.native.js.map +1 -1
  101. package/dist/cjs/headless/Presentations.native.js.map +1 -1
  102. package/dist/cjs/headless/__tests__/useStack.test.cjs +7 -15
  103. package/dist/cjs/headless/__tests__/useStack.test.native.js +7 -15
  104. package/dist/cjs/headless/__tests__/useStack.test.native.js.map +1 -1
  105. package/dist/cjs/headless/children.native.js.map +1 -1
  106. package/dist/cjs/headless/keepMounted.native.js.map +1 -1
  107. package/dist/cjs/headless/types.native.js.map +1 -1
  108. package/dist/cjs/headless/useDrawer.native.js.map +1 -1
  109. package/dist/cjs/headless/useStack.cjs +1 -2
  110. package/dist/cjs/headless/useStack.native.js +1 -2
  111. package/dist/cjs/headless/useStack.native.js.map +1 -1
  112. package/dist/cjs/headless/useTabs.native.js.map +1 -1
  113. package/dist/cjs/headless-server.native.js.map +1 -1
  114. package/dist/cjs/headless.native.js.map +1 -1
  115. package/dist/cjs/hooks.native.js.map +1 -1
  116. package/dist/cjs/hooks.test.native.js.map +1 -1
  117. package/dist/cjs/href.native.js.map +1 -1
  118. package/dist/cjs/image/getImageData.native.js.map +1 -1
  119. package/dist/cjs/image.native.js.map +1 -1
  120. package/dist/cjs/index.native.js +1 -1
  121. package/dist/cjs/index.native.js.map +1 -1
  122. package/dist/cjs/interfaces/router.native.js.map +1 -1
  123. package/dist/cjs/layouts/Drawer.native.js.map +1 -1
  124. package/dist/cjs/layouts/Stack.cjs +9 -12
  125. package/dist/cjs/layouts/Stack.native.js +11 -14
  126. package/dist/cjs/layouts/Stack.native.js.map +1 -1
  127. package/dist/cjs/layouts/Tabs.native.js +3 -84
  128. package/dist/cjs/layouts/Tabs.native.js.map +1 -1
  129. package/dist/cjs/layouts/nativeTabsOptions.cjs +49 -0
  130. package/dist/cjs/layouts/nativeTabsOptions.native.js +52 -0
  131. package/dist/cjs/layouts/nativeTabsOptions.native.js.map +1 -0
  132. package/dist/cjs/layouts/stack-navigator.native.js.map +1 -1
  133. package/dist/cjs/layouts/stack-utils/StackHeaderBackButton.cjs +4 -1
  134. package/dist/cjs/layouts/stack-utils/StackHeaderBackButton.native.js +4 -1
  135. package/dist/cjs/layouts/stack-utils/StackHeaderBackButton.native.js.map +1 -1
  136. package/dist/cjs/layouts/stack-utils/StackHeaderComponent.native.js.map +1 -1
  137. package/dist/cjs/layouts/stack-utils/StackHeaderLeft.native.js.map +1 -1
  138. package/dist/cjs/layouts/stack-utils/StackHeaderRight.native.js.map +1 -1
  139. package/dist/cjs/layouts/stack-utils/StackHeaderSearchBar.native.js.map +1 -1
  140. package/dist/cjs/layouts/stack-utils/StackHeaderTitle.cjs +2 -2
  141. package/dist/cjs/layouts/stack-utils/StackHeaderTitle.native.js +2 -2
  142. package/dist/cjs/layouts/stack-utils/StackHeaderTitle.native.js.map +1 -1
  143. package/dist/cjs/layouts/stack-utils/StackScreen.cjs +3 -6
  144. package/dist/cjs/layouts/stack-utils/StackScreen.native.js +4 -7
  145. package/dist/cjs/layouts/stack-utils/StackScreen.native.js.map +1 -1
  146. package/dist/cjs/layouts/stack-utils/__tests__/composition.test.cjs +14 -14
  147. package/dist/cjs/layouts/stack-utils/__tests__/composition.test.native.js +14 -14
  148. package/dist/cjs/layouts/stack-utils/__tests__/composition.test.native.js.map +1 -1
  149. package/dist/cjs/layouts/stack-utils/index.cjs +0 -2
  150. package/dist/cjs/layouts/stack-utils/index.native.js +0 -2
  151. package/dist/cjs/layouts/stack-utils/index.native.js.map +1 -1
  152. package/dist/cjs/layouts/withLayoutContext.cjs +0 -1
  153. package/dist/cjs/layouts/withLayoutContext.native.js +0 -1
  154. package/dist/cjs/layouts/withLayoutContext.native.js.map +1 -1
  155. package/dist/cjs/layouts/withLayoutContext.test.cjs +18 -0
  156. package/dist/cjs/layouts/withLayoutContext.test.native.js +24 -0
  157. package/dist/cjs/layouts/withLayoutContext.test.native.js.map +1 -1
  158. package/dist/cjs/lazyWithRetry.native.js.map +1 -1
  159. package/dist/cjs/link/Link.native.js.map +1 -1
  160. package/dist/cjs/link/Redirect.native.js.map +1 -1
  161. package/dist/cjs/link/Redirect.test.native.js.map +1 -1
  162. package/dist/cjs/link/getLinking.native.js.map +1 -1
  163. package/dist/cjs/link/href.native.js.map +1 -1
  164. package/dist/cjs/link/path.native.js.map +1 -1
  165. package/dist/cjs/link/prefetchIntent.native.js.map +1 -1
  166. package/dist/cjs/link/prefetchIntent.test.native.js.map +1 -1
  167. package/dist/cjs/link/prefetchViewport.native.js.map +1 -1
  168. package/dist/cjs/link/prefetchViewport.test.native.js.map +1 -1
  169. package/dist/cjs/link/useLinkTo.native.js.map +1 -1
  170. package/dist/cjs/link/useLoadedNavigation.native.js.map +1 -1
  171. package/dist/cjs/metro-config/buildOneMetroResolverOverrides.native.js.map +1 -1
  172. package/dist/cjs/metro-config/buildOneMetroResolverOverrides.test.native.js.map +1 -1
  173. package/dist/cjs/metro-config/getViteMetroPluginOptions.integration.test.native.js.map +1 -1
  174. package/dist/cjs/metro-config/getViteMetroPluginOptions.native.js +1 -1
  175. package/dist/cjs/metro-config/getViteMetroPluginOptions.native.js.map +1 -1
  176. package/dist/cjs/metro-config/withOne.native.js.map +1 -1
  177. package/dist/cjs/metro-config/withOne.test.native.js.map +1 -1
  178. package/dist/cjs/native-transforms.native.js.map +1 -1
  179. package/dist/cjs/notFoundState.native.js.map +1 -1
  180. package/dist/cjs/package-exports.test.native.js.map +1 -1
  181. package/dist/cjs/polyfills-mobile.native.js.map +1 -1
  182. package/dist/cjs/polyfills-server.native.js.map +1 -1
  183. package/dist/cjs/router/FlagsContext.native.js.map +1 -1
  184. package/dist/cjs/router/Route.cjs +10 -3
  185. package/dist/cjs/router/Route.native.js +13 -3
  186. package/dist/cjs/router/Route.native.js.map +1 -1
  187. package/dist/cjs/router/RouteInfoContext.native.js.map +1 -1
  188. package/dist/cjs/router/RouterStore.native.js.map +1 -1
  189. package/dist/cjs/router/SpaShellContext.native.js.map +1 -1
  190. package/dist/cjs/router/conditionalSlotPathname.test.native.js.map +1 -1
  191. package/dist/cjs/router/createRoute.native.js.map +1 -1
  192. package/dist/cjs/router/diagnoseRouteLoadFailure.native.js.map +1 -1
  193. package/dist/cjs/router/filterRootHTML.native.js.map +1 -1
  194. package/dist/cjs/router/findRouteNode.cjs +10 -10
  195. package/dist/cjs/router/findRouteNode.native.js +13 -29
  196. package/dist/cjs/router/findRouteNode.native.js.map +1 -1
  197. package/dist/cjs/router/findRouteNode.test.cjs +88 -0
  198. package/dist/cjs/router/findRouteNode.test.native.js +94 -0
  199. package/dist/cjs/router/findRouteNode.test.native.js.map +1 -0
  200. package/dist/cjs/router/getLinkingConfig.native.js.map +1 -1
  201. package/dist/cjs/router/getLinkingConfig.test.cjs +9 -0
  202. package/dist/cjs/router/getLinkingConfig.test.native.js +9 -0
  203. package/dist/cjs/router/getLinkingConfig.test.native.js.map +1 -1
  204. package/dist/cjs/router/getNormalizedStatePath.native.js.map +1 -1
  205. package/dist/cjs/router/getRouteArtifactPath.native.js.map +1 -1
  206. package/dist/cjs/router/getRouteArtifactPath.test.native.js.map +1 -1
  207. package/dist/cjs/router/getRouteInfo.native.js.map +1 -1
  208. package/dist/cjs/router/getRouteInfo.test.cjs +21 -0
  209. package/dist/cjs/router/getRouteInfo.test.native.js +23 -0
  210. package/dist/cjs/router/getRouteInfo.test.native.js.map +1 -1
  211. package/dist/cjs/router/getRoutes.native.js.map +1 -1
  212. package/dist/cjs/router/getRoutes.test.native.js.map +1 -1
  213. package/dist/cjs/router/glob-patterns.native.js.map +1 -1
  214. package/dist/cjs/router/hmrImport.native.test.native.js.map +1 -1
  215. package/dist/cjs/router/imperative-api.native.js.map +1 -1
  216. package/dist/cjs/router/interceptRoutes.native.js.map +1 -1
  217. package/dist/cjs/router/isIndexPath.cjs +1 -1
  218. package/dist/cjs/router/isIndexPath.native.js +2 -1
  219. package/dist/cjs/router/isIndexPath.native.js.map +1 -1
  220. package/dist/cjs/router/isStateAwaitingNavigatorMount.cjs +2 -1
  221. package/dist/cjs/router/isStateAwaitingNavigatorMount.native.js +2 -1
  222. package/dist/cjs/router/isStateAwaitingNavigatorMount.native.js.map +1 -1
  223. package/dist/cjs/router/lastAction.native.js.map +1 -1
  224. package/dist/cjs/router/linkToOrphaned.test.native.js.map +1 -1
  225. package/dist/cjs/router/linkingConfig.native.js.map +1 -1
  226. package/dist/cjs/router/matchers.native.js.map +1 -1
  227. package/dist/cjs/router/matchers.test.native.js.map +1 -1
  228. package/dist/cjs/router/params.native.js.map +1 -1
  229. package/dist/cjs/router/path.native.js.map +1 -1
  230. package/dist/cjs/router/path.test.native.js.map +1 -1
  231. package/dist/cjs/router/protectedRoutes.test.native.js.map +1 -1
  232. package/dist/cjs/router/routeHmr.native.test.native.js.map +1 -1
  233. package/dist/cjs/router/router.cjs +12 -14
  234. package/dist/cjs/router/router.native.js +13 -14
  235. package/dist/cjs/router/router.native.js.map +1 -1
  236. package/dist/cjs/router/serverLocationContext.native.js.map +1 -1
  237. package/dist/cjs/router/sitemap.native.js.map +1 -1
  238. package/dist/cjs/router/sitemap.test.native.js.map +1 -1
  239. package/dist/cjs/router/sortRoutes.native.js.map +1 -1
  240. package/dist/cjs/router/useInitializeOneRouter.native.js.map +1 -1
  241. package/dist/cjs/router/useInitializeOneRouter.preview-lifecycle.test.native.js.map +1 -1
  242. package/dist/cjs/router/useNavigation.cjs +30 -8
  243. package/dist/cjs/router/useNavigation.native.js +32 -8
  244. package/dist/cjs/router/useNavigation.native.js.map +1 -1
  245. package/dist/cjs/router/useScreens.cjs +4 -2
  246. package/dist/cjs/router/useScreens.native.js +4 -2
  247. package/dist/cjs/router/useScreens.native.js.map +1 -1
  248. package/dist/cjs/router/useScreens.test.native.js.map +1 -1
  249. package/dist/cjs/router/useViteRoutes.native.js.map +1 -1
  250. package/dist/cjs/router/useViteRoutes.test.native.js.map +1 -1
  251. package/dist/cjs/router/utils/getNavigateAction.cjs +2 -2
  252. package/dist/cjs/router/utils/getNavigateAction.native.js +5 -4
  253. package/dist/cjs/router/utils/getNavigateAction.native.js.map +1 -1
  254. package/dist/cjs/router/utils/getNavigateAction.test.cjs +37 -6
  255. package/dist/cjs/router/utils/getNavigateAction.test.native.js +37 -6
  256. package/dist/cjs/router/utils/getNavigateAction.test.native.js.map +1 -1
  257. package/dist/cjs/router/web/WebStackNavigator.native.js.map +1 -1
  258. package/dist/cjs/router/web/WebStackView.cjs +1 -1
  259. package/dist/cjs/router/web/WebStackView.native.js +1 -1
  260. package/dist/cjs/router/web/WebStackView.native.js.map +1 -1
  261. package/dist/cjs/router/web/__tests__/stackStateUtils.test.cjs +21 -1
  262. package/dist/cjs/router/web/__tests__/stackStateUtils.test.native.js +23 -1
  263. package/dist/cjs/router/web/__tests__/stackStateUtils.test.native.js.map +1 -1
  264. package/dist/cjs/router/web/stackStateUtils.cjs +1 -1
  265. package/dist/cjs/router/web/stackStateUtils.native.js +1 -1
  266. package/dist/cjs/router/web/stackStateUtils.native.js.map +1 -1
  267. package/dist/cjs/serve-worker.native.js.map +1 -1
  268. package/dist/cjs/serve.native.js.map +1 -1
  269. package/dist/cjs/server/ServerContextScript.native.js.map +1 -1
  270. package/dist/cjs/server/createRoutesManifest.native.js.map +1 -1
  271. package/dist/cjs/server/getServerManifest.native.js.map +1 -1
  272. package/dist/cjs/server/getServerManifest.test.native.js.map +1 -1
  273. package/dist/cjs/server/oneServe.native.js.map +1 -1
  274. package/dist/cjs/server/routeExportsFromEntry.native.js.map +1 -1
  275. package/dist/cjs/server/setServerGlobals.native.js.map +1 -1
  276. package/dist/cjs/server/setupBuildOptions.native.js.map +1 -1
  277. package/dist/cjs/server/setupServerGlobals.native.js.map +1 -1
  278. package/dist/cjs/server/ssrLoaderData.native.js.map +1 -1
  279. package/dist/cjs/server/staticHtmlFetcher.native.js.map +1 -1
  280. package/dist/cjs/server/workerHandler.native.js.map +1 -1
  281. package/dist/cjs/server/workerHandler.test.native.js.map +1 -1
  282. package/dist/cjs/server-render.native.js.map +1 -1
  283. package/dist/cjs/skewProtection.native.js.map +1 -1
  284. package/dist/cjs/testing-utils.native.js.map +1 -1
  285. package/dist/cjs/typed-routes/generateRouteTypes.native.js.map +1 -1
  286. package/dist/cjs/typed-routes/generateRouteTypes.test.native.js.map +1 -1
  287. package/dist/cjs/typed-routes/getTypedRoutesDeclarationFile.native.js.map +1 -1
  288. package/dist/cjs/typed-routes/getTypedRoutesDeclarationFile.test.native.js.map +1 -1
  289. package/dist/cjs/typed-routes/injectRouteHelpers.native.js.map +1 -1
  290. package/dist/cjs/types.native.js.map +1 -1
  291. package/dist/cjs/ui/Slot.cjs +3 -3
  292. package/dist/cjs/ui/Slot.native.js +1 -25
  293. package/dist/cjs/ui/Slot.native.js.map +1 -1
  294. package/dist/cjs/ui/TabContext.native.js.map +1 -1
  295. package/dist/cjs/ui/TabList.cjs +4 -5
  296. package/dist/cjs/ui/TabList.native.js +2 -15
  297. package/dist/cjs/ui/TabList.native.js.map +1 -1
  298. package/dist/cjs/ui/TabRouter.native.js.map +1 -1
  299. package/dist/cjs/ui/TabSlot.cjs +3 -3
  300. package/dist/cjs/ui/TabSlot.native.js +11 -43
  301. package/dist/cjs/ui/TabSlot.native.js.map +1 -1
  302. package/dist/cjs/ui/TabTrigger.cjs +3 -3
  303. package/dist/cjs/ui/TabTrigger.native.js +24 -22
  304. package/dist/cjs/ui/TabTrigger.native.js.map +1 -1
  305. package/dist/cjs/ui/Tabs.cjs +9 -10
  306. package/dist/cjs/ui/Tabs.native.js +2 -9
  307. package/dist/cjs/ui/Tabs.native.js.map +1 -1
  308. package/dist/cjs/ui/Tabs.shared.cjs +1 -4
  309. package/dist/cjs/ui/Tabs.shared.native.js +1 -4
  310. package/dist/cjs/ui/Tabs.shared.native.js.map +1 -1
  311. package/dist/cjs/ui/common.cjs +6 -5
  312. package/dist/cjs/ui/common.native.js +10 -7
  313. package/dist/cjs/ui/common.native.js.map +1 -1
  314. package/dist/cjs/ui/index.native.js +2 -4
  315. package/dist/cjs/ui/index.native.js.map +1 -1
  316. package/dist/cjs/ui/useComponent.native.js.map +1 -1
  317. package/dist/cjs/ui/useTabTrigger.native.js.map +1 -1
  318. package/dist/cjs/useFocusEffect.native.js.map +1 -1
  319. package/dist/cjs/useLoader.native.js.map +1 -1
  320. package/dist/cjs/useMatches.native.js.map +1 -1
  321. package/dist/cjs/useMatches.test.native.js.map +1 -1
  322. package/dist/cjs/useServerHeadInsertion.native.js.map +1 -1
  323. package/dist/cjs/utils/assertIsReady.native.js.map +1 -1
  324. package/dist/cjs/utils/buildOutputPointer.native.js.map +1 -1
  325. package/dist/cjs/utils/buildOutputPointer.test.native.js.map +1 -1
  326. package/dist/cjs/utils/children.native.js.map +1 -1
  327. package/dist/cjs/utils/cleanUrl.native.js.map +1 -1
  328. package/dist/cjs/utils/cleanUrl.test.native.js.map +1 -1
  329. package/dist/cjs/utils/dynamicImport.native.js.map +1 -1
  330. package/dist/cjs/utils/dynamicImport.test.native.js.map +1 -1
  331. package/dist/cjs/utils/ensureExists.native.js.map +1 -1
  332. package/dist/cjs/utils/evictOldest.native.js.map +1 -1
  333. package/dist/cjs/utils/existsAsync.native.js.map +1 -1
  334. package/dist/cjs/utils/findRootLayout.native.js.map +1 -1
  335. package/dist/cjs/utils/getPageExport.native.js.map +1 -1
  336. package/dist/cjs/utils/getPathnameFromFilePath.native.js.map +1 -1
  337. package/dist/cjs/utils/getPathnameFromFilePath.test.native.js.map +1 -1
  338. package/dist/cjs/utils/getRouterRootFromOneOptions.native.js.map +1 -1
  339. package/dist/cjs/utils/globDir.native.js.map +1 -1
  340. package/dist/cjs/utils/hashString.native.js.map +1 -1
  341. package/dist/cjs/utils/htmlEscape.native.js.map +1 -1
  342. package/dist/cjs/utils/isResponse.native.js.map +1 -1
  343. package/dist/cjs/utils/isRolldown.native.js.map +1 -1
  344. package/dist/cjs/utils/isStatus.native.js.map +1 -1
  345. package/dist/cjs/utils/pLimit.native.js.map +1 -1
  346. package/dist/cjs/utils/platform.native.js.map +1 -1
  347. package/dist/cjs/utils/posixPathContract.test.native.js.map +1 -1
  348. package/dist/cjs/utils/promiseWithResolvers.native.js.map +1 -1
  349. package/dist/cjs/utils/rand.native.js.map +1 -1
  350. package/dist/cjs/utils/redirect.native.js.map +1 -1
  351. package/dist/cjs/utils/removeParams.native.js.map +1 -1
  352. package/dist/cjs/utils/removeSearch.native.js.map +1 -1
  353. package/dist/cjs/utils/removeUndefined.native.js.map +1 -1
  354. package/dist/cjs/utils/routeFileWatch.native.js.map +1 -1
  355. package/dist/cjs/utils/routeFileWatch.test.native.js.map +1 -1
  356. package/dist/cjs/utils/routeIndex.native.js.map +1 -1
  357. package/dist/cjs/utils/routeIndex.test.native.js.map +1 -1
  358. package/dist/cjs/utils/style.native.js.map +1 -1
  359. package/dist/cjs/utils/toAbsolute.native.js.map +1 -1
  360. package/dist/cjs/utils/toServerOutputPath.native.js.map +1 -1
  361. package/dist/cjs/utils/toServerOutputPath.test.native.js.map +1 -1
  362. package/dist/cjs/utils/trackLoaderDependencies.native.js.map +1 -1
  363. package/dist/cjs/utils/url.native.js.map +1 -1
  364. package/dist/cjs/utils/useConstant.native.js.map +1 -1
  365. package/dist/cjs/utils/watchFile.native.js.map +1 -1
  366. package/dist/cjs/utils/weakKey.native.js.map +1 -1
  367. package/dist/cjs/utils/weakMemo.native.js.map +1 -1
  368. package/dist/cjs/utils/withStaticProperties.native.js.map +1 -1
  369. package/dist/cjs/utils/workerImport.native.js.map +1 -1
  370. package/dist/cjs/validateParams.native.js.map +1 -1
  371. package/dist/cjs/validateSearch.native.js.map +1 -1
  372. package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.js.map +1 -1
  373. package/dist/cjs/vercel/build/config/vc-build-output-config-base.native.js.map +1 -1
  374. package/dist/cjs/vercel/build/config/vc-config-base.native.js.map +1 -1
  375. package/dist/cjs/vercel/build/config/vc-package-base.native.js.map +1 -1
  376. package/dist/cjs/vercel/build/generate/createApiServerlessFunction.native.js.map +1 -1
  377. package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.native.js.map +1 -1
  378. package/dist/cjs/vercel/build/getPathFromRoute.native.js.map +1 -1
  379. package/dist/cjs/views/EmptyRoute.native.js.map +1 -1
  380. package/dist/cjs/views/ErrorBoundary.native.js.map +1 -1
  381. package/dist/cjs/views/LoadProgressBar.native.js.map +1 -1
  382. package/dist/cjs/views/Navigator.cjs +2 -19
  383. package/dist/cjs/views/Navigator.native.js +2 -23
  384. package/dist/cjs/views/Navigator.native.js.map +1 -1
  385. package/dist/cjs/views/Protected.native.js.map +1 -1
  386. package/dist/cjs/views/RootErrorBoundary.native.js.map +1 -1
  387. package/dist/cjs/views/RouteErrorView.native.js.map +1 -1
  388. package/dist/cjs/views/Screen.native.js.map +1 -1
  389. package/dist/cjs/views/ScrollBehavior.native.js.map +1 -1
  390. package/dist/cjs/views/ScrollBehavior.test.native.js.map +1 -1
  391. package/dist/cjs/views/SourceInspector.native.js.map +1 -1
  392. package/dist/cjs/views/SuspenseFallback.native.js.map +1 -1
  393. package/dist/cjs/views/Try.native.js.map +1 -1
  394. package/dist/cjs/vite/DevHead.native.js.map +1 -1
  395. package/dist/cjs/vite/cloudflareWranglerConfig.native.js.map +1 -1
  396. package/dist/cjs/vite/cloudflareWranglerConfig.test.native.js.map +1 -1
  397. package/dist/cjs/vite/constants.native.js.map +1 -1
  398. package/dist/cjs/vite/customNodeExternals.native.js.map +1 -1
  399. package/dist/cjs/vite/ensureTsConfig.native.js.map +1 -1
  400. package/dist/cjs/vite/findDepsToOptimize.native.js.map +1 -1
  401. package/dist/cjs/vite/getManifest.native.js.map +1 -1
  402. package/dist/cjs/vite/getManifest.test.native.js.map +1 -1
  403. package/dist/cjs/vite/loadConfig.native.js.map +1 -1
  404. package/dist/cjs/vite/makePluginWebOnly.native.js.map +1 -1
  405. package/dist/cjs/vite/one-server-only.test.native.js.map +1 -1
  406. package/dist/cjs/vite/one.native.js.map +1 -1
  407. package/dist/cjs/vite/plugins/SSRCSSPlugin.native.js.map +1 -1
  408. package/dist/cjs/vite/plugins/bundledDevPlugin.native.js.map +1 -1
  409. package/dist/cjs/vite/plugins/clientTreeShakePlugin.native.js.map +1 -1
  410. package/dist/cjs/vite/plugins/clientTreeShakePlugin.test.native.js.map +1 -1
  411. package/dist/cjs/vite/plugins/criticalCSSPlugin.native.js.map +1 -1
  412. package/dist/cjs/vite/plugins/criticalCSSPlugin.test.native.js.map +1 -1
  413. package/dist/cjs/vite/plugins/devtoolsPlugin.native.js.map +1 -1
  414. package/dist/cjs/vite/plugins/environmentGuardPlugin.native.js.map +1 -1
  415. package/dist/cjs/vite/plugins/environmentGuardPlugin.test.native.js.map +1 -1
  416. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
  417. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.test.native.js.map +1 -1
  418. package/dist/cjs/vite/plugins/fixDependenciesPlugin.native.js.map +1 -1
  419. package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.native.js.map +1 -1
  420. package/dist/cjs/vite/plugins/imageDataPlugin.native.js.map +1 -1
  421. package/dist/cjs/vite/plugins/imageDataPlugin.test.native.js.map +1 -1
  422. package/dist/cjs/vite/plugins/removeReactNativeWebAnimatedPlugin.native.js.map +1 -1
  423. package/dist/cjs/vite/plugins/routeModuleHmrPlugin.native.js.map +1 -1
  424. package/dist/cjs/vite/plugins/routeModuleHmrPlugin.test.native.js.map +1 -1
  425. package/dist/cjs/vite/plugins/sourceInspectorPlugin.native.js.map +1 -1
  426. package/dist/cjs/vite/plugins/sourceInspectorPlugin.test.native.js.map +1 -1
  427. package/dist/cjs/vite/plugins/useDomPlugin.native.js.map +1 -1
  428. package/dist/cjs/vite/plugins/virtualEntryConstants.native.js.map +1 -1
  429. package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
  430. package/dist/cjs/vite/plugins/virtualEntryPlugin.test.native.js.map +1 -1
  431. package/dist/cjs/vite/plugins/warmRoutesPlugin.native.js.map +1 -1
  432. package/dist/cjs/vite/plugins/workerdDevPlugin.native.js.map +1 -1
  433. package/dist/cjs/vite/plugins/workerdDevPlugin.test.native.js.map +1 -1
  434. package/dist/cjs/vite/resolveResponse.native.js.map +1 -1
  435. package/dist/cjs/vite/types.native.js.map +1 -1
  436. package/dist/cjs/vite-auto-warm.native.js.map +1 -1
  437. package/dist/cjs/vite.native.js.map +1 -1
  438. package/dist/cjs/zero/getQueryKey.native.js.map +1 -1
  439. package/dist/cjs/zero/isZeroQuery.native.js.map +1 -1
  440. package/dist/cjs/zero/resolveQuery.native.js.map +1 -1
  441. package/dist/cjs/zero/subscribeToQuery.native.js.map +1 -1
  442. package/dist/cjs/zero/types.native.js.map +1 -1
  443. package/dist/cjs/zero/useQuery.native.js.map +1 -1
  444. package/dist/cjs/zero/useQueryZero.native.js.map +1 -1
  445. package/dist/cjs/zero.native.js.map +1 -1
  446. package/dist/esm/createApp.native.js +25 -1
  447. package/dist/esm/createApp.native.js.map +1 -1
  448. package/dist/esm/fallbackViews/Sitemap.mjs +1 -1
  449. package/dist/esm/fallbackViews/Sitemap.mjs.map +1 -1
  450. package/dist/esm/fallbackViews/Sitemap.native.js +1 -1
  451. package/dist/esm/fallbackViews/Sitemap.native.js.map +1 -1
  452. package/dist/esm/fork/NavigationContainer.mjs +26 -52
  453. package/dist/esm/fork/NavigationContainer.mjs.map +1 -1
  454. package/dist/esm/fork/NavigationContainer.native.js +30 -57
  455. package/dist/esm/fork/NavigationContainer.native.js.map +1 -1
  456. package/dist/esm/fork/getPathFromState.mjs.map +1 -1
  457. package/dist/esm/fork/useLinking.mjs +18 -15
  458. package/dist/esm/fork/useLinking.mjs.map +1 -1
  459. package/dist/esm/fork/useLinking.native.js +12 -21
  460. package/dist/esm/fork/useLinking.native.js.map +1 -1
  461. package/dist/esm/fork/useLinking.native.test.js +12 -17
  462. package/dist/esm/fork/useLinking.native.test.js.map +1 -1
  463. package/dist/esm/fork/useLinking.native.test.mjs +2 -2
  464. package/dist/esm/fork/useLinking.native.test.mjs.map +1 -1
  465. package/dist/esm/fork/useLinking.native.test.native.js +1 -1
  466. package/dist/esm/fork/useLinking.native.test.native.js.map +1 -1
  467. package/dist/esm/fork/validatePathConfig.mjs +9 -2
  468. package/dist/esm/fork/validatePathConfig.mjs.map +1 -1
  469. package/dist/esm/fork/validatePathConfig.native.js +9 -2
  470. package/dist/esm/fork/validatePathConfig.native.js.map +1 -1
  471. package/dist/esm/getReactNavigationConfig.mjs +48 -5
  472. package/dist/esm/getReactNavigationConfig.mjs.map +1 -1
  473. package/dist/esm/getReactNavigationConfig.native.js +54 -5
  474. package/dist/esm/getReactNavigationConfig.native.js.map +1 -1
  475. package/dist/esm/getURL.native.test.mjs +1 -1
  476. package/dist/esm/headless/__tests__/useStack.test.mjs +7 -15
  477. package/dist/esm/headless/__tests__/useStack.test.mjs.map +1 -1
  478. package/dist/esm/headless/__tests__/useStack.test.native.js +7 -15
  479. package/dist/esm/headless/__tests__/useStack.test.native.js.map +1 -1
  480. package/dist/esm/headless/useStack.mjs +1 -2
  481. package/dist/esm/headless/useStack.mjs.map +1 -1
  482. package/dist/esm/headless/useStack.native.js +1 -2
  483. package/dist/esm/headless/useStack.native.js.map +1 -1
  484. package/dist/esm/index.js.map +1 -1
  485. package/dist/esm/index.mjs.map +1 -1
  486. package/dist/esm/index.native.js.map +1 -1
  487. package/dist/esm/interfaces/router.mjs.map +1 -1
  488. package/dist/esm/interfaces/router.native.js.map +1 -1
  489. package/dist/esm/layouts/Stack.mjs +10 -13
  490. package/dist/esm/layouts/Stack.mjs.map +1 -1
  491. package/dist/esm/layouts/Stack.native.js +11 -14
  492. package/dist/esm/layouts/Stack.native.js.map +1 -1
  493. package/dist/esm/layouts/Tabs.native.js +4 -74
  494. package/dist/esm/layouts/Tabs.native.js.map +1 -1
  495. package/dist/esm/layouts/nativeTabsOptions.mjs +24 -0
  496. package/dist/esm/layouts/nativeTabsOptions.mjs.map +1 -0
  497. package/dist/esm/layouts/nativeTabsOptions.native.js +24 -0
  498. package/dist/esm/layouts/nativeTabsOptions.native.js.map +1 -0
  499. package/dist/esm/layouts/stack-utils/StackHeaderBackButton.mjs +4 -1
  500. package/dist/esm/layouts/stack-utils/StackHeaderBackButton.mjs.map +1 -1
  501. package/dist/esm/layouts/stack-utils/StackHeaderBackButton.native.js +4 -1
  502. package/dist/esm/layouts/stack-utils/StackHeaderBackButton.native.js.map +1 -1
  503. package/dist/esm/layouts/stack-utils/StackHeaderTitle.mjs +2 -2
  504. package/dist/esm/layouts/stack-utils/StackHeaderTitle.mjs.map +1 -1
  505. package/dist/esm/layouts/stack-utils/StackHeaderTitle.native.js +2 -2
  506. package/dist/esm/layouts/stack-utils/StackHeaderTitle.native.js.map +1 -1
  507. package/dist/esm/layouts/stack-utils/StackScreen.mjs +3 -6
  508. package/dist/esm/layouts/stack-utils/StackScreen.mjs.map +1 -1
  509. package/dist/esm/layouts/stack-utils/StackScreen.native.js +4 -7
  510. package/dist/esm/layouts/stack-utils/StackScreen.native.js.map +1 -1
  511. package/dist/esm/layouts/stack-utils/__tests__/composition.test.mjs +14 -14
  512. package/dist/esm/layouts/stack-utils/__tests__/composition.test.mjs.map +1 -1
  513. package/dist/esm/layouts/stack-utils/__tests__/composition.test.native.js +14 -14
  514. package/dist/esm/layouts/stack-utils/__tests__/composition.test.native.js.map +1 -1
  515. package/dist/esm/layouts/stack-utils/index.mjs +1 -2
  516. package/dist/esm/layouts/stack-utils/index.mjs.map +1 -1
  517. package/dist/esm/layouts/stack-utils/index.native.js +1 -2
  518. package/dist/esm/layouts/stack-utils/index.native.js.map +1 -1
  519. package/dist/esm/layouts/withLayoutContext.mjs +0 -1
  520. package/dist/esm/layouts/withLayoutContext.mjs.map +1 -1
  521. package/dist/esm/layouts/withLayoutContext.native.js +0 -1
  522. package/dist/esm/layouts/withLayoutContext.native.js.map +1 -1
  523. package/dist/esm/layouts/withLayoutContext.test.mjs +18 -0
  524. package/dist/esm/layouts/withLayoutContext.test.mjs.map +1 -1
  525. package/dist/esm/layouts/withLayoutContext.test.native.js +24 -0
  526. package/dist/esm/layouts/withLayoutContext.test.native.js.map +1 -1
  527. package/dist/esm/link/useLoadedNavigation.mjs.map +1 -1
  528. package/dist/esm/link/useLoadedNavigation.native.js.map +1 -1
  529. package/dist/esm/router/Route.mjs +9 -3
  530. package/dist/esm/router/Route.mjs.map +1 -1
  531. package/dist/esm/router/Route.native.js +12 -3
  532. package/dist/esm/router/Route.native.js.map +1 -1
  533. package/dist/esm/router/findRouteNode.mjs +10 -10
  534. package/dist/esm/router/findRouteNode.mjs.map +1 -1
  535. package/dist/esm/router/findRouteNode.native.js +13 -29
  536. package/dist/esm/router/findRouteNode.native.js.map +1 -1
  537. package/dist/esm/router/findRouteNode.test.mjs +89 -0
  538. package/dist/esm/router/findRouteNode.test.mjs.map +1 -0
  539. package/dist/esm/router/findRouteNode.test.native.js +92 -0
  540. package/dist/esm/router/findRouteNode.test.native.js.map +1 -0
  541. package/dist/esm/router/getLinkingConfig.test.mjs +9 -0
  542. package/dist/esm/router/getLinkingConfig.test.mjs.map +1 -1
  543. package/dist/esm/router/getLinkingConfig.test.native.js +9 -0
  544. package/dist/esm/router/getLinkingConfig.test.native.js.map +1 -1
  545. package/dist/esm/router/getRouteInfo.test.mjs +21 -0
  546. package/dist/esm/router/getRouteInfo.test.mjs.map +1 -1
  547. package/dist/esm/router/getRouteInfo.test.native.js +23 -0
  548. package/dist/esm/router/getRouteInfo.test.native.js.map +1 -1
  549. package/dist/esm/router/hmrImport.native.test.mjs +1 -1
  550. package/dist/esm/router/isIndexPath.mjs +1 -1
  551. package/dist/esm/router/isIndexPath.mjs.map +1 -1
  552. package/dist/esm/router/isIndexPath.native.js +2 -1
  553. package/dist/esm/router/isIndexPath.native.js.map +1 -1
  554. package/dist/esm/router/isStateAwaitingNavigatorMount.mjs +2 -1
  555. package/dist/esm/router/isStateAwaitingNavigatorMount.mjs.map +1 -1
  556. package/dist/esm/router/isStateAwaitingNavigatorMount.native.js +2 -1
  557. package/dist/esm/router/isStateAwaitingNavigatorMount.native.js.map +1 -1
  558. package/dist/esm/router/routeHmr.native.test.mjs +1 -1
  559. package/dist/esm/router/routeHmr.native.test.mjs.map +1 -1
  560. package/dist/esm/router/router.mjs +11 -13
  561. package/dist/esm/router/router.mjs.map +1 -1
  562. package/dist/esm/router/router.native.js +12 -13
  563. package/dist/esm/router/router.native.js.map +1 -1
  564. package/dist/esm/router/useInitializeOneRouter.mjs.map +1 -1
  565. package/dist/esm/router/useInitializeOneRouter.native.js.map +1 -1
  566. package/dist/esm/router/useNavigation.mjs +32 -11
  567. package/dist/esm/router/useNavigation.mjs.map +1 -1
  568. package/dist/esm/router/useNavigation.native.js +34 -11
  569. package/dist/esm/router/useNavigation.native.js.map +1 -1
  570. package/dist/esm/router/useScreens.mjs +4 -2
  571. package/dist/esm/router/useScreens.mjs.map +1 -1
  572. package/dist/esm/router/useScreens.native.js +4 -2
  573. package/dist/esm/router/useScreens.native.js.map +1 -1
  574. package/dist/esm/router/utils/getNavigateAction.mjs +2 -2
  575. package/dist/esm/router/utils/getNavigateAction.mjs.map +1 -1
  576. package/dist/esm/router/utils/getNavigateAction.native.js +5 -4
  577. package/dist/esm/router/utils/getNavigateAction.native.js.map +1 -1
  578. package/dist/esm/router/utils/getNavigateAction.test.mjs +37 -6
  579. package/dist/esm/router/utils/getNavigateAction.test.mjs.map +1 -1
  580. package/dist/esm/router/utils/getNavigateAction.test.native.js +37 -6
  581. package/dist/esm/router/utils/getNavigateAction.test.native.js.map +1 -1
  582. package/dist/esm/router/web/WebStackView.mjs +1 -1
  583. package/dist/esm/router/web/WebStackView.mjs.map +1 -1
  584. package/dist/esm/router/web/WebStackView.native.js +1 -1
  585. package/dist/esm/router/web/WebStackView.native.js.map +1 -1
  586. package/dist/esm/router/web/__tests__/stackStateUtils.test.mjs +21 -1
  587. package/dist/esm/router/web/__tests__/stackStateUtils.test.mjs.map +1 -1
  588. package/dist/esm/router/web/__tests__/stackStateUtils.test.native.js +23 -1
  589. package/dist/esm/router/web/__tests__/stackStateUtils.test.native.js.map +1 -1
  590. package/dist/esm/router/web/stackStateUtils.mjs +1 -1
  591. package/dist/esm/router/web/stackStateUtils.mjs.map +1 -1
  592. package/dist/esm/router/web/stackStateUtils.native.js +1 -1
  593. package/dist/esm/router/web/stackStateUtils.native.js.map +1 -1
  594. package/dist/esm/ui/Slot.mjs.map +1 -1
  595. package/dist/esm/ui/Slot.native.js +1 -25
  596. package/dist/esm/ui/Slot.native.js.map +1 -1
  597. package/dist/esm/ui/TabContext.mjs.map +1 -1
  598. package/dist/esm/ui/TabContext.native.js.map +1 -1
  599. package/dist/esm/ui/TabList.mjs +1 -2
  600. package/dist/esm/ui/TabList.mjs.map +1 -1
  601. package/dist/esm/ui/TabList.native.js +2 -15
  602. package/dist/esm/ui/TabList.native.js.map +1 -1
  603. package/dist/esm/ui/TabSlot.mjs.map +1 -1
  604. package/dist/esm/ui/TabSlot.native.js +12 -44
  605. package/dist/esm/ui/TabSlot.native.js.map +1 -1
  606. package/dist/esm/ui/TabTrigger.mjs.map +1 -1
  607. package/dist/esm/ui/TabTrigger.native.js +25 -23
  608. package/dist/esm/ui/TabTrigger.native.js.map +1 -1
  609. package/dist/esm/ui/Tabs.mjs +1 -2
  610. package/dist/esm/ui/Tabs.mjs.map +1 -1
  611. package/dist/esm/ui/Tabs.native.js +2 -9
  612. package/dist/esm/ui/Tabs.native.js.map +1 -1
  613. package/dist/esm/ui/Tabs.shared.mjs +1 -4
  614. package/dist/esm/ui/Tabs.shared.mjs.map +1 -1
  615. package/dist/esm/ui/Tabs.shared.native.js +1 -4
  616. package/dist/esm/ui/Tabs.shared.native.js.map +1 -1
  617. package/dist/esm/ui/common.mjs +6 -5
  618. package/dist/esm/ui/common.mjs.map +1 -1
  619. package/dist/esm/ui/common.native.js +10 -7
  620. package/dist/esm/ui/common.native.js.map +1 -1
  621. package/dist/esm/ui/index.native.js +1 -1
  622. package/dist/esm/ui/index.native.js.map +1 -1
  623. package/dist/esm/views/Navigator.mjs +2 -19
  624. package/dist/esm/views/Navigator.mjs.map +1 -1
  625. package/dist/esm/views/Navigator.native.js +2 -23
  626. package/dist/esm/views/Navigator.native.js.map +1 -1
  627. package/dist/esm/vite/plugins/sourceInspectorPlugin.test.mjs.map +1 -1
  628. package/package.json +30 -45
  629. package/src/__mocks__/@react-navigation/native-stack.ts +2 -2
  630. package/src/createApp.native.tsx +23 -1
  631. package/src/fallbackViews/Sitemap.tsx +1 -1
  632. package/src/fallbackViews/Sitemap.web.tsx +1 -1
  633. package/src/fork/NavigationContainer.tsx +36 -80
  634. package/src/fork/getPathFromState.ts +3 -3
  635. package/src/fork/useLinking.native.test.tsx +11 -15
  636. package/src/fork/useLinking.native.ts +13 -27
  637. package/src/fork/useLinking.ts +24 -21
  638. package/src/fork/validatePathConfig.ts +11 -4
  639. package/src/getReactNavigationConfig.ts +96 -4
  640. package/src/headless/__tests__/useStack.test.tsx +4 -13
  641. package/src/headless/types.ts +1 -2
  642. package/src/headless/useStack.ts +1 -2
  643. package/src/index.ts +0 -12
  644. package/src/interfaces/router.ts +2 -2
  645. package/src/layouts/Drawer.tsx +4 -2
  646. package/src/layouts/Stack.tsx +17 -36
  647. package/src/layouts/Tabs.tsx +6 -81
  648. package/src/layouts/nativeTabsOptions.ts +38 -0
  649. package/src/layouts/stack-utils/README.md +0 -1
  650. package/src/layouts/stack-utils/StackHeaderBackButton.tsx +1 -1
  651. package/src/layouts/stack-utils/StackHeaderTitle.tsx +2 -2
  652. package/src/layouts/stack-utils/StackScreen.tsx +5 -26
  653. package/src/layouts/stack-utils/__tests__/composition.test.tsx +14 -14
  654. package/src/layouts/stack-utils/index.tsx +0 -17
  655. package/src/layouts/withLayoutContext.test.tsx +16 -0
  656. package/src/layouts/withLayoutContext.tsx +2 -2
  657. package/src/link/useLoadedNavigation.ts +2 -1
  658. package/src/router/Route.tsx +12 -2
  659. package/src/router/findRouteNode.test.ts +92 -0
  660. package/src/router/findRouteNode.ts +22 -17
  661. package/src/router/getLinkingConfig.test.ts +13 -0
  662. package/src/router/getRouteInfo.test.ts +21 -0
  663. package/src/router/isIndexPath.ts +5 -2
  664. package/src/router/isStateAwaitingNavigatorMount.ts +4 -1
  665. package/src/router/router.ts +10 -9
  666. package/src/router/useInitializeOneRouter.ts +2 -2
  667. package/src/router/useNavigation.ts +49 -14
  668. package/src/router/useScreens.tsx +4 -2
  669. package/src/router/utils/getNavigateAction.test.ts +28 -6
  670. package/src/router/utils/getNavigateAction.ts +6 -3
  671. package/src/router/web/WebStackView.tsx +1 -1
  672. package/src/router/web/__tests__/stackStateUtils.test.ts +23 -1
  673. package/src/router/web/stackStateUtils.ts +3 -2
  674. package/src/ui/README.md +8 -16
  675. package/src/ui/Slot.tsx +4 -38
  676. package/src/ui/TabContext.tsx +2 -7
  677. package/src/ui/TabList.tsx +7 -19
  678. package/src/ui/TabSlot.tsx +17 -60
  679. package/src/ui/TabTrigger.tsx +22 -30
  680. package/src/ui/Tabs.shared.tsx +3 -6
  681. package/src/ui/Tabs.tsx +3 -10
  682. package/src/ui/common.tsx +7 -5
  683. package/src/ui/index.native.ts +1 -0
  684. package/src/views/Navigator.tsx +5 -21
  685. package/src/vite/plugins/sourceInspectorPlugin.test.ts +3 -1
  686. package/types/__mocks__/@react-navigation/native-stack.d.ts +2 -2
  687. package/types/__mocks__/@react-navigation/native-stack.d.ts.map +1 -1
  688. package/types/createApp.native.d.ts.map +1 -1
  689. package/types/fork/NavigationContainer.d.ts +2 -7
  690. package/types/fork/NavigationContainer.d.ts.map +1 -1
  691. package/types/fork/findFocusedRoute.d.ts +12 -2
  692. package/types/fork/findFocusedRoute.d.ts.map +1 -1
  693. package/types/fork/useLinking.d.ts +1 -1
  694. package/types/fork/useLinking.d.ts.map +1 -1
  695. package/types/fork/useLinking.native.d.ts +4 -20
  696. package/types/fork/useLinking.native.d.ts.map +1 -1
  697. package/types/fork/validatePathConfig.d.ts.map +1 -1
  698. package/types/getReactNavigationConfig.d.ts +10 -0
  699. package/types/getReactNavigationConfig.d.ts.map +1 -1
  700. package/types/headless/types.d.ts +1 -4
  701. package/types/headless/types.d.ts.map +1 -1
  702. package/types/headless/useStack.d.ts.map +1 -1
  703. package/types/index.d.ts +1 -1
  704. package/types/index.d.ts.map +1 -1
  705. package/types/interfaces/router.d.ts +2 -2
  706. package/types/interfaces/router.d.ts.map +1 -1
  707. package/types/layouts/Drawer.d.ts +3 -108
  708. package/types/layouts/Drawer.d.ts.map +1 -1
  709. package/types/layouts/Drawer.web.d.ts +189 -2
  710. package/types/layouts/Drawer.web.d.ts.map +1 -1
  711. package/types/layouts/Stack.d.ts +7 -120
  712. package/types/layouts/Stack.d.ts.map +1 -1
  713. package/types/layouts/Tabs.d.ts +5 -100
  714. package/types/layouts/Tabs.d.ts.map +1 -1
  715. package/types/layouts/nativeTabsOptions.d.ts +8 -0
  716. package/types/layouts/nativeTabsOptions.d.ts.map +1 -0
  717. package/types/layouts/stack-navigator.d.ts +1 -2
  718. package/types/layouts/stack-navigator.d.ts.map +1 -1
  719. package/types/layouts/stack-navigator.web.d.ts +1 -1
  720. package/types/layouts/stack-navigator.web.d.ts.map +1 -1
  721. package/types/layouts/stack-utils/StackScreen.d.ts +1 -2
  722. package/types/layouts/stack-utils/StackScreen.d.ts.map +1 -1
  723. package/types/layouts/stack-utils/index.d.ts +1 -3
  724. package/types/layouts/stack-utils/index.d.ts.map +1 -1
  725. package/types/layouts/withLayoutContext.d.ts +1 -2
  726. package/types/layouts/withLayoutContext.d.ts.map +1 -1
  727. package/types/link/useLoadedNavigation.d.ts +2 -2
  728. package/types/link/useLoadedNavigation.d.ts.map +1 -1
  729. package/types/router/Route.d.ts +1 -0
  730. package/types/router/Route.d.ts.map +1 -1
  731. package/types/router/findRouteNode.d.ts +4 -1
  732. package/types/router/findRouteNode.d.ts.map +1 -1
  733. package/types/router/findRouteNode.test.d.ts +2 -0
  734. package/types/router/findRouteNode.test.d.ts.map +1 -0
  735. package/types/router/isIndexPath.d.ts.map +1 -1
  736. package/types/router/isStateAwaitingNavigatorMount.d.ts.map +1 -1
  737. package/types/router/router.d.ts +2 -2
  738. package/types/router/router.d.ts.map +1 -1
  739. package/types/router/useNavigation.d.ts +4 -2
  740. package/types/router/useNavigation.d.ts.map +1 -1
  741. package/types/router/useScreens.d.ts +25 -1
  742. package/types/router/useScreens.d.ts.map +1 -1
  743. package/types/router/utils/getNavigateAction.d.ts.map +1 -1
  744. package/types/router/web/WebStackNavigator.d.ts +1 -1
  745. package/types/router/web/WebStackNavigator.d.ts.map +1 -1
  746. package/types/router/web/stackStateUtils.d.ts +2 -1
  747. package/types/router/web/stackStateUtils.d.ts.map +1 -1
  748. package/types/ui/Slot.d.ts +2 -3
  749. package/types/ui/Slot.d.ts.map +1 -1
  750. package/types/ui/TabContext.d.ts +36 -84
  751. package/types/ui/TabContext.d.ts.map +1 -1
  752. package/types/ui/TabList.d.ts +4 -5
  753. package/types/ui/TabList.d.ts.map +1 -1
  754. package/types/ui/TabRouter.d.ts +31 -33
  755. package/types/ui/TabRouter.d.ts.map +1 -1
  756. package/types/ui/TabSlot.d.ts +5 -10
  757. package/types/ui/TabSlot.d.ts.map +1 -1
  758. package/types/ui/TabTrigger.d.ts +3 -2
  759. package/types/ui/TabTrigger.d.ts.map +1 -1
  760. package/types/ui/Tabs.d.ts.map +1 -1
  761. package/types/ui/Tabs.shared.d.ts +29 -137
  762. package/types/ui/Tabs.shared.d.ts.map +1 -1
  763. package/types/ui/common.d.ts +1 -1
  764. package/types/ui/common.d.ts.map +1 -1
  765. package/types/ui/index.native.d.ts +2 -0
  766. package/types/ui/index.native.d.ts.map +1 -0
  767. package/types/views/Navigator.d.ts.map +1 -1
  768. package/types/views/Protected.d.ts +9 -1
  769. package/types/views/Protected.d.ts.map +1 -1
  770. package/dist/cjs/layouts/NativeTabs.cjs +0 -65
  771. package/dist/cjs/layouts/NativeTabs.native.js +0 -68
  772. package/dist/cjs/layouts/NativeTabs.native.js.map +0 -1
  773. package/dist/cjs/layouts/NativeTabs.test.cjs +0 -24
  774. package/dist/cjs/layouts/NativeTabs.test.native.js +0 -35
  775. package/dist/cjs/layouts/NativeTabs.test.native.js.map +0 -1
  776. package/dist/cjs/layouts/stack-utils/StackToolbar.cjs +0 -124
  777. package/dist/cjs/layouts/stack-utils/StackToolbar.native.js +0 -129
  778. package/dist/cjs/layouts/stack-utils/StackToolbar.native.js.map +0 -1
  779. package/dist/cjs/layouts/stack-utils/StackToolbar.shared.cjs +0 -57
  780. package/dist/cjs/layouts/stack-utils/StackToolbar.shared.native.js +0 -61
  781. package/dist/cjs/layouts/stack-utils/StackToolbar.shared.native.js.map +0 -1
  782. package/dist/cjs/layouts/stack-utils/StackToolbar.types.cjs +0 -18
  783. package/dist/cjs/layouts/stack-utils/StackToolbar.types.native.js +0 -21
  784. package/dist/cjs/layouts/stack-utils/StackToolbar.types.native.js.map +0 -1
  785. package/dist/cjs/layouts/stack-utils/StackToolbarImplementation.cjs +0 -39
  786. package/dist/cjs/layouts/stack-utils/StackToolbarImplementation.native.js +0 -41
  787. package/dist/cjs/layouts/stack-utils/StackToolbarImplementation.native.js.map +0 -1
  788. package/dist/cjs/layouts/stack-utils/__tests__/StackToolbar.test.cjs +0 -66
  789. package/dist/cjs/layouts/stack-utils/__tests__/StackToolbar.test.native.js +0 -99
  790. package/dist/cjs/layouts/stack-utils/__tests__/StackToolbar.test.native.js.map +0 -1
  791. package/dist/cjs/native-tabs.cjs +0 -29
  792. package/dist/cjs/native-tabs.native.js +0 -32
  793. package/dist/cjs/native-tabs.native.js.map +0 -1
  794. package/dist/cjs/stack-toolbar-implementation.cjs +0 -30
  795. package/dist/cjs/stack-toolbar-implementation.native.js +0 -33
  796. package/dist/cjs/stack-toolbar-implementation.native.js.map +0 -1
  797. package/dist/cjs/views/OneStackRouter.cjs +0 -46
  798. package/dist/cjs/views/OneStackRouter.native.js +0 -39
  799. package/dist/cjs/views/OneStackRouter.native.js.map +0 -1
  800. package/dist/esm/layouts/NativeTabs.mjs +0 -28
  801. package/dist/esm/layouts/NativeTabs.mjs.map +0 -1
  802. package/dist/esm/layouts/NativeTabs.native.js +0 -28
  803. package/dist/esm/layouts/NativeTabs.native.js.map +0 -1
  804. package/dist/esm/layouts/NativeTabs.test.mjs +0 -24
  805. package/dist/esm/layouts/NativeTabs.test.mjs.map +0 -1
  806. package/dist/esm/layouts/NativeTabs.test.native.js +0 -32
  807. package/dist/esm/layouts/NativeTabs.test.native.js.map +0 -1
  808. package/dist/esm/layouts/stack-utils/StackToolbar.mjs +0 -89
  809. package/dist/esm/layouts/stack-utils/StackToolbar.mjs.map +0 -1
  810. package/dist/esm/layouts/stack-utils/StackToolbar.native.js +0 -92
  811. package/dist/esm/layouts/stack-utils/StackToolbar.native.js.map +0 -1
  812. package/dist/esm/layouts/stack-utils/StackToolbar.shared.mjs +0 -31
  813. package/dist/esm/layouts/stack-utils/StackToolbar.shared.mjs.map +0 -1
  814. package/dist/esm/layouts/stack-utils/StackToolbar.shared.native.js +0 -32
  815. package/dist/esm/layouts/stack-utils/StackToolbar.shared.native.js.map +0 -1
  816. package/dist/esm/layouts/stack-utils/StackToolbar.types.mjs +0 -2
  817. package/dist/esm/layouts/stack-utils/StackToolbar.types.mjs.map +0 -1
  818. package/dist/esm/layouts/stack-utils/StackToolbar.types.native.js +0 -2
  819. package/dist/esm/layouts/stack-utils/StackToolbar.types.native.js.map +0 -1
  820. package/dist/esm/layouts/stack-utils/StackToolbarImplementation.mjs +0 -12
  821. package/dist/esm/layouts/stack-utils/StackToolbarImplementation.mjs.map +0 -1
  822. package/dist/esm/layouts/stack-utils/StackToolbarImplementation.native.js +0 -12
  823. package/dist/esm/layouts/stack-utils/StackToolbarImplementation.native.js.map +0 -1
  824. package/dist/esm/layouts/stack-utils/__tests__/StackToolbar.test.mjs +0 -67
  825. package/dist/esm/layouts/stack-utils/__tests__/StackToolbar.test.mjs.map +0 -1
  826. package/dist/esm/layouts/stack-utils/__tests__/StackToolbar.test.native.js +0 -73
  827. package/dist/esm/layouts/stack-utils/__tests__/StackToolbar.test.native.js.map +0 -1
  828. package/dist/esm/native-tabs.mjs +0 -3
  829. package/dist/esm/native-tabs.mjs.map +0 -1
  830. package/dist/esm/native-tabs.native.js +0 -3
  831. package/dist/esm/native-tabs.native.js.map +0 -1
  832. package/dist/esm/stack-toolbar-implementation.mjs +0 -3
  833. package/dist/esm/stack-toolbar-implementation.mjs.map +0 -1
  834. package/dist/esm/stack-toolbar-implementation.native.js +0 -3
  835. package/dist/esm/stack-toolbar-implementation.native.js.map +0 -1
  836. package/dist/esm/views/OneStackRouter.mjs +0 -21
  837. package/dist/esm/views/OneStackRouter.mjs.map +0 -1
  838. package/dist/esm/views/OneStackRouter.native.js +0 -11
  839. package/dist/esm/views/OneStackRouter.native.js.map +0 -1
  840. package/src/layouts/NativeTabs.test.ts +0 -30
  841. package/src/layouts/NativeTabs.tsx +0 -46
  842. package/src/layouts/stack-utils/StackToolbar.shared.ts +0 -44
  843. package/src/layouts/stack-utils/StackToolbar.tsx +0 -134
  844. package/src/layouts/stack-utils/StackToolbar.types.ts +0 -100
  845. package/src/layouts/stack-utils/StackToolbarImplementation.tsx +0 -39
  846. package/src/layouts/stack-utils/__tests__/StackToolbar.test.tsx +0 -70
  847. package/src/native-tabs.ts +0 -1
  848. package/src/stack-toolbar-implementation.ts +0 -8
  849. package/src/ui/Slot.web.tsx +0 -9
  850. package/src/ui/TabList.web.tsx +0 -27
  851. package/src/ui/TabSlot.web.tsx +0 -90
  852. package/src/ui/TabTrigger.web.tsx +0 -71
  853. package/src/ui/Tabs.web.tsx +0 -40
  854. package/src/views/OneStackRouter.tsx +0 -75
  855. package/types/layouts/NativeTabs.d.ts +0 -8
  856. package/types/layouts/NativeTabs.d.ts.map +0 -1
  857. package/types/layouts/NativeTabs.test.d.ts +0 -2
  858. package/types/layouts/NativeTabs.test.d.ts.map +0 -1
  859. package/types/layouts/stack-utils/StackToolbar.d.ts +0 -28
  860. package/types/layouts/stack-utils/StackToolbar.d.ts.map +0 -1
  861. package/types/layouts/stack-utils/StackToolbar.shared.d.ts +0 -5
  862. package/types/layouts/stack-utils/StackToolbar.shared.d.ts.map +0 -1
  863. package/types/layouts/stack-utils/StackToolbar.types.d.ts +0 -83
  864. package/types/layouts/stack-utils/StackToolbar.types.d.ts.map +0 -1
  865. package/types/layouts/stack-utils/StackToolbarImplementation.d.ts +0 -12
  866. package/types/layouts/stack-utils/StackToolbarImplementation.d.ts.map +0 -1
  867. package/types/native-tabs.d.ts +0 -2
  868. package/types/native-tabs.d.ts.map +0 -1
  869. package/types/stack-toolbar-implementation.d.ts +0 -3
  870. package/types/stack-toolbar-implementation.d.ts.map +0 -1
  871. package/types/ui/Slot.web.d.ts +0 -5
  872. package/types/ui/Slot.web.d.ts.map +0 -1
  873. package/types/ui/TabList.web.d.ts +0 -11
  874. package/types/ui/TabList.web.d.ts.map +0 -1
  875. package/types/ui/TabSlot.web.d.ts +0 -24
  876. package/types/ui/TabSlot.web.d.ts.map +0 -1
  877. package/types/ui/TabTrigger.web.d.ts +0 -11
  878. package/types/ui/TabTrigger.web.d.ts.map +0 -1
  879. package/types/ui/Tabs.web.d.ts +0 -10
  880. package/types/ui/Tabs.web.d.ts.map +0 -1
  881. package/types/views/OneStackRouter.d.ts +0 -3
  882. package/types/views/OneStackRouter.d.ts.map +0 -1
@@ -124,7 +124,7 @@ export const RouteParamsContext = createContext<
124
124
  Record<string, string | undefined> | undefined
125
125
  >({})
126
126
 
127
- const CurrentRouteContext = React.createContext<RouteNode | null>(null)
127
+ const CurrentRouteContext = React.createContext<RouteNode[]>([])
128
128
 
129
129
  /** Allows a layout to provide a Suspense fallback for its child routes. */
130
130
  export const SuspenseFallbackContext = createContext<
@@ -138,6 +138,11 @@ if (process.env.NODE_ENV !== 'production') {
138
138
 
139
139
  /** Return the RouteNode at the current contextual boundary. */
140
140
  export function useRouteNode(): RouteNode | null {
141
+ const nodes = useContext(CurrentRouteContext)
142
+ return nodes[nodes.length - 1] ?? null
143
+ }
144
+
145
+ export function useRouteNodes(): RouteNode[] {
141
146
  return useContext(CurrentRouteContext)
142
147
  }
143
148
 
@@ -189,6 +194,11 @@ export function Route({
189
194
  }
190
195
  }) {
191
196
  const parentParams = useContext(RouteParamsContext)
197
+ const parentRouteNodes = useContext(CurrentRouteContext)
198
+ const routeNodes = React.useMemo(
199
+ () => [...parentRouteNodes, node],
200
+ [node, parentRouteNodes]
201
+ )
192
202
 
193
203
  // url is the source of truth for path params. react navigation can provide
194
204
  // a `route` whose `params` are missing or stale for the dynamic segments
@@ -211,7 +221,7 @@ export function Route({
211
221
 
212
222
  return (
213
223
  <RouteParamsContext.Provider value={resolvedParams}>
214
- <CurrentRouteContext.Provider value={node}>
224
+ <CurrentRouteContext.Provider value={routeNodes}>
215
225
  <RouteInfoContextProvider>{children}</RouteInfoContextProvider>
216
226
  </CurrentRouteContext.Provider>
217
227
  </RouteParamsContext.Provider>
@@ -0,0 +1,92 @@
1
+ import { describe, expect, it } from 'vitest'
2
+ import {
3
+ getReactNavigationRouteName,
4
+ resolveInitialRouteNameFromState,
5
+ } from '../getReactNavigationConfig'
6
+ import type { RouteNode } from './Route'
7
+ import {
8
+ extractParamsFromState,
9
+ findAllRouteNodesFromState,
10
+ findRouteNodeFromState,
11
+ } from './findRouteNode'
12
+ import { resolveParentRouteName } from './useNavigation'
13
+
14
+ function node(route: string, contextKey: string, children: RouteNode[] = []): RouteNode {
15
+ return {
16
+ type: children.length ? 'layout' : 'spa',
17
+ loadRoute: () => ({}),
18
+ children,
19
+ dynamic: null,
20
+ route,
21
+ contextKey,
22
+ }
23
+ }
24
+
25
+ describe('focused route state', () => {
26
+ const current = node('index', './index/index.tsx')
27
+ const preloaded = node('detail', './index/detail.tsx')
28
+ const layout = node('index', './index/_layout.tsx', [current, preloaded])
29
+ const root = node('', './_layout.tsx', [layout])
30
+ const state = {
31
+ index: 0,
32
+ routes: [
33
+ {
34
+ name: getReactNavigationRouteName(layout),
35
+ params: { layout: 'active' },
36
+ state: {
37
+ index: 0,
38
+ routes: [
39
+ { name: 'index', params: { page: 'current' } },
40
+ { name: 'detail', params: { page: 'preloaded' } },
41
+ ],
42
+ },
43
+ },
44
+ { name: 'other', params: { root: 'preloaded' } },
45
+ ],
46
+ }
47
+
48
+ it('finds the focused node through an internal layout name', () => {
49
+ expect(findRouteNodeFromState(state, root)).toBe(current)
50
+ expect(findAllRouteNodesFromState(state, root)).toEqual([layout, current])
51
+ })
52
+
53
+ it('collects params only from the focused route chain', () => {
54
+ expect(extractParamsFromState(state)).toEqual({
55
+ layout: 'active',
56
+ page: 'current',
57
+ })
58
+ })
59
+ })
60
+
61
+ describe('filesystem paths at React Navigation boundaries', () => {
62
+ const detail = node('detail', './index/detail.tsx')
63
+ const index = node('index', './index/index.tsx')
64
+ const collidingLayout = node('index', './index/_layout.tsx', [index, detail])
65
+ const root = node('', './_layout.tsx', [collidingLayout])
66
+
67
+ it('resolves absolute and relative parent paths to aliased screen names', () => {
68
+ const routeNodes = [root, collidingLayout, detail]
69
+ const routeName = getReactNavigationRouteName(collidingLayout)
70
+
71
+ expect(resolveParentRouteName(routeNodes, '/index/detail', '/index')).toBe(routeName)
72
+ expect(resolveParentRouteName(routeNodes, '/index/detail', '../')).toBe(routeName)
73
+ expect(resolveParentRouteName(routeNodes, '/index/detail', '/')).toBe('')
74
+ })
75
+
76
+ it('uses aliased layout names while resolving a late-mounted child', () => {
77
+ const state = {
78
+ index: 0,
79
+ routes: [
80
+ {
81
+ name: getReactNavigationRouteName(collidingLayout),
82
+ state: {
83
+ index: 1,
84
+ routes: [{ name: 'index' }, { name: 'detail' }],
85
+ },
86
+ },
87
+ ],
88
+ }
89
+
90
+ expect(resolveInitialRouteNameFromState('/index', state)).toBe('detail')
91
+ })
92
+ })
@@ -1,11 +1,12 @@
1
1
  import type { RouteNode } from './Route'
2
+ import { getReactNavigationRouteName } from '../getReactNavigationConfig'
2
3
 
3
4
  /**
4
5
  * Find a RouteNode from the route tree based on the navigation state.
5
6
  * Walks through the state's routes recursively to find the deepest matching route.
6
7
  */
7
8
  export function findRouteNodeFromState(
8
- state: { routes: Array<{ name: string; state?: any }> } | undefined,
9
+ state: { index?: number; routes: Array<{ name: string; state?: any }> } | undefined,
9
10
  rootNode: RouteNode | null
10
11
  ): RouteNode | null {
11
12
  if (!state || !state.routes || !rootNode) {
@@ -13,7 +14,7 @@ export function findRouteNodeFromState(
13
14
  }
14
15
 
15
16
  // Get the current route from state (the active one based on index)
16
- const currentRoute = state.routes[state.routes.length - 1]
17
+ const currentRoute = state.routes[state.index ?? state.routes.length - 1]
17
18
  if (!currentRoute) {
18
19
  return null
19
20
  }
@@ -41,7 +42,7 @@ export function findRouteNodeFromState(
41
42
  */
42
43
  function findNodeByRouteName(node: RouteNode, routeName: string): RouteNode | null {
43
44
  // Check if this node matches
44
- if (node.route === routeName) {
45
+ if (getReactNavigationRouteName(node) === routeName) {
45
46
  return node
46
47
  }
47
48
 
@@ -58,11 +59,14 @@ function findNodeByRouteName(node: RouteNode, routeName: string): RouteNode | nu
58
59
 
59
60
  /**
60
61
  * Extract params from navigation state.
61
- * Collects params from all routes in the state hierarchy.
62
+ * Collects params from the focused route chain in the state hierarchy.
62
63
  */
63
64
  export function extractParamsFromState(
64
65
  state:
65
- | { routes: Array<{ name: string; params?: Record<string, any>; state?: any }> }
66
+ | {
67
+ index?: number
68
+ routes: Array<{ name: string; params?: Record<string, any>; state?: any }>
69
+ }
66
70
  | undefined
67
71
  ): Record<string, string | string[]> {
68
72
  if (!state || !state.routes) {
@@ -71,15 +75,12 @@ export function extractParamsFromState(
71
75
 
72
76
  const params: Record<string, string | string[]> = {}
73
77
 
74
- // Collect params from all routes in the state
75
- for (const route of state.routes) {
76
- if (route.params) {
77
- Object.assign(params, route.params)
78
- }
79
- // Recurse into nested state
80
- if (route.state) {
81
- Object.assign(params, extractParamsFromState(route.state))
82
- }
78
+ const route = state.routes[state.index ?? state.routes.length - 1]
79
+ if (route?.params) {
80
+ Object.assign(params, route.params)
81
+ }
82
+ if (route?.state) {
83
+ Object.assign(params, extractParamsFromState(route.state))
83
84
  }
84
85
 
85
86
  return params
@@ -132,7 +133,7 @@ export function extractPathnameFromHref(href: string): string {
132
133
  * This is used on native to build the full matches array including layouts.
133
134
  */
134
135
  export function findAllRouteNodesFromState(
135
- state: { routes: Array<{ name: string; state?: any }> } | undefined,
136
+ state: { index?: number; routes: Array<{ name: string; state?: any }> } | undefined,
136
137
  rootNode: RouteNode | null
137
138
  ): RouteNode[] {
138
139
  if (!state || !state.routes || !rootNode) {
@@ -143,7 +144,10 @@ export function findAllRouteNodesFromState(
143
144
 
144
145
  function collectNodes(
145
146
  currentState:
146
- | { routes: Array<{ name: string; state?: any; params?: Record<string, any> }> }
147
+ | {
148
+ index?: number
149
+ routes: Array<{ name: string; state?: any; params?: Record<string, any> }>
150
+ }
147
151
  | undefined,
148
152
  parentNode: RouteNode | null
149
153
  ) {
@@ -152,7 +156,8 @@ export function findAllRouteNodesFromState(
152
156
  }
153
157
 
154
158
  // get the current route from state (the active one based on index)
155
- const currentRoute = currentState.routes[currentState.routes.length - 1]
159
+ const currentRoute =
160
+ currentState.routes[currentState.index ?? currentState.routes.length - 1]
156
161
  if (!currentRoute) {
157
162
  return
158
163
  }
@@ -27,6 +27,19 @@ describe('getLinkingConfig', () => {
27
27
  'threepunchconvo://app',
28
28
  ])
29
29
  })
30
+
31
+ it('assigns distinct navigation names to nested routes with the same file name', () => {
32
+ const routes = getRoutes(
33
+ getMockContext(['_layout.tsx', 'index/_layout.tsx', 'index/index.tsx'])
34
+ )!
35
+ const linking = getLinkingConfig(routes, true)
36
+ const state = linking.getStateFromPath!('/', linking.config as never)!
37
+ const parent = state.routes[0]!
38
+ const child = parent.state!.routes[0]!
39
+
40
+ expect(parent.name).not.toBe(child.name)
41
+ expect(linking.getPathFromState!(state, linking.config as never)).toBe('/')
42
+ })
30
43
  })
31
44
 
32
45
  describe('normalizeLinkingConfig', () => {
@@ -30,4 +30,25 @@ describe('getRouteInfoFromState', () => {
30
30
  expect(info.pathname).toBe('/dev')
31
31
  expect(info.segments).toEqual(['dev'])
32
32
  })
33
+
34
+ it('uses the focused nested route when later routes are preloaded', () => {
35
+ const stateWithPreload = {
36
+ index: 0,
37
+ routes: [
38
+ {
39
+ name: '(site)',
40
+ state: {
41
+ index: 0,
42
+ routes: [{ name: 'index' }, { name: 'detail' }],
43
+ },
44
+ },
45
+ ],
46
+ } as any
47
+ const info = getRouteInfoFromState(
48
+ (_state, asPath) => ({ path: asPath ? '/(site)' : '/', params: {} }),
49
+ stateWithPreload
50
+ )
51
+
52
+ expect(info.isIndex).toBe(true)
53
+ })
33
54
  })
@@ -1,6 +1,9 @@
1
1
  import type { State } from '../fork/getPathFromState'
2
2
 
3
- type RouteLikeTree = { name: string; state?: { routes?: RouteLikeTree[] } }
3
+ type RouteLikeTree = {
4
+ name: string
5
+ state?: { index?: number; routes?: RouteLikeTree[] }
6
+ }
4
7
 
5
8
  export function isIndexPath(state: State) {
6
9
  if (!state.routes) {
@@ -31,7 +34,7 @@ export function isIndexPath(state: State) {
31
34
  function getActualLastRoute<A extends RouteLikeTree>(routeLike: A): A {
32
35
  if (routeLike.name[0] === '(' && routeLike.state?.routes) {
33
36
  const routes = routeLike.state.routes
34
- return getActualLastRoute(routes[routes.length - 1]) as any
37
+ return getActualLastRoute(routes[routeLike.state.index ?? routes.length - 1]) as any
35
38
  }
36
39
  return routeLike
37
40
  }
@@ -1,4 +1,5 @@
1
1
  import type { OneRouter } from '../interfaces/router'
2
+ import { getReactNavigationRouteName } from '../getReactNavigationConfig'
2
3
  import type { RouteNode } from './Route'
3
4
 
4
5
  type PartialState = {
@@ -46,7 +47,9 @@ export function isStateAwaitingNavigatorMount(
46
47
  // direct children only: a directory with no `_layout` is flattened into the
47
48
  // parent navigator under a multi-segment route name, and that name is what
48
49
  // the state carries, so a recursive search would match the wrong depth
49
- const child = node.children.find((candidate) => candidate.route === route.name)
50
+ const child = node.children.find(
51
+ (candidate) => getReactNavigationRouteName(candidate) === route.name
52
+ )
50
53
  if (!child) return false
51
54
 
52
55
  if (route.state) {
@@ -7,6 +7,7 @@
7
7
  import type {
8
8
  NavigationContainerRefWithCurrent,
9
9
  NavigationState,
10
+ ParamListBase,
10
11
  } from '@react-navigation/core'
11
12
  import { StackActions } from '@react-navigation/native'
12
13
  import {
@@ -250,7 +251,7 @@ let cachedContext: One.RouteContext | null = null
250
251
  // Initialize function
251
252
  export function initialize(
252
253
  context: One.RouteContext,
253
- ref: NavigationContainerRefWithCurrent<ReactNavigation.RootParamList>,
254
+ ref: NavigationContainerRefWithCurrent<ParamListBase>,
254
255
  initialLocation?: URL,
255
256
  linking?: OneLinkingConfig
256
257
  ) {
@@ -443,7 +444,7 @@ export function replace(url: OneRouter.Href, options?: OneRouter.LinkToOptions)
443
444
  export function setParams(params: OneRouter.InpurRouteParamsGeneric = {}) {
444
445
  assertIsReady(navigationRef)
445
446
  return navigationRef?.current?.setParams(
446
- // @ts-expect-error
447
+ // @ts-ignore
447
448
  params
448
449
  )
449
450
  }
@@ -1350,7 +1351,7 @@ export async function linkTo(
1350
1351
  const currentRootState = navigationRef.getRootState()
1351
1352
 
1352
1353
  const hash = href.indexOf('#')
1353
- if (currentRootState.key && hash > 0) {
1354
+ if (currentRootState?.key && hash > 0) {
1354
1355
  hashes[currentRootState.key] = href.slice(hash)
1355
1356
  }
1356
1357
 
@@ -1368,13 +1369,13 @@ export async function linkTo(
1368
1369
  // compute target at dispatch time to avoid stale state during first render/effects
1369
1370
  const freshRootState = navigationRef.getRootState() as NavigationState
1370
1371
  const currentRouteBeforeDispatch = navigationRef.getCurrentRoute()
1372
+ const targetPathname = pendingNavigationPathname
1373
+ const optimisticState = nextOptions ? { ...state, linkOptions: nextOptions } : state
1374
+ updateState(optimisticState)
1375
+ pendingNavigationPathname = targetPathname
1376
+ notifyRootStateSubscribers(optimisticState)
1371
1377
 
1372
1378
  if (event === 'REPLACE') {
1373
- const targetPathname = pendingNavigationPathname
1374
- const optimisticState = nextOptions ? { ...state, linkOptions: nextOptions } : state
1375
- updateState(optimisticState)
1376
- pendingNavigationPathname = targetPathname
1377
- notifyRootStateSubscribers(optimisticState)
1378
1379
  navigationRef.resetRoot(state)
1379
1380
  } else {
1380
1381
  const action = getNavigateAction(state, freshRootState, event)
@@ -1393,7 +1394,7 @@ export async function linkTo(
1393
1394
  const currentFocusedName = currentFocusedRoute?.name
1394
1395
 
1395
1396
  if (isRootTarget && isGroupTarget && hasFreshRootState) {
1396
- const targetRoute = state.routes[state.routes.length - 1]
1397
+ const targetRoute = state.routes[state.index ?? state.routes.length - 1]
1397
1398
  const targetRootName = targetRoute.name
1398
1399
 
1399
1400
  if (currentFocusedName === targetRootName) {
@@ -1,4 +1,4 @@
1
- import { useNavigationContainerRef } from '@react-navigation/core'
1
+ import { type ParamListBase, useNavigationContainerRef } from '@react-navigation/core'
2
2
  import { resetLoaderState } from '../useLoader'
3
3
  import type { One } from '../vite/types'
4
4
  import type { OneLinkingConfig } from '../link/getLinking'
@@ -22,7 +22,7 @@ export function useInitializeOneRouter(
22
22
  initialLocation: URL | undefined,
23
23
  linking?: OneLinkingConfig
24
24
  ) {
25
- const navigationRef = useNavigationContainerRef<ReactNavigation.RootParamList>()
25
+ const navigationRef = useNavigationContainerRef<ParamListBase>()
26
26
 
27
27
  // SSR: initialize route tree once, then compute per-request state via cache
28
28
  if (typeof window === 'undefined') {
@@ -1,11 +1,13 @@
1
1
  import {
2
2
  type NavigationProp,
3
+ type ParamListBase,
3
4
  useNavigation as useUpstreamNavigation,
4
5
  } from '@react-navigation/native'
5
6
  import React from 'react'
6
7
 
7
- import { getNameFromFilePath } from './matchers'
8
- import { useContextKey } from './Route'
8
+ import { getReactNavigationRouteName } from '../getReactNavigationConfig'
9
+ import { getContextKey, getNameFromFilePath } from './matchers'
10
+ import { type RouteNode, useContextKey, useRouteNodes } from './Route'
9
11
 
10
12
  /**
11
13
  * Returns the React Navigation navigation object for the current route.
@@ -21,25 +23,36 @@ import { useContextKey } from './Route'
21
23
  * navigation.setOptions({ title: 'My Screen' })
22
24
  * ```
23
25
  */
24
- export function useNavigation<T = NavigationProp<ReactNavigation.RootParamList>>(
25
- parent?: string
26
- ): T {
27
- const navigation = useUpstreamNavigation<any>()
26
+ export function useNavigation<T = NavigationProp<ParamListBase>>(parent?: string): T {
27
+ const navigation = useUpstreamNavigation() as any
28
28
 
29
29
  const contextKey = useContextKey()
30
+ const routeNodes = useRouteNodes()
30
31
  const normalizedParent = React.useMemo(() => {
31
32
  if (!parent) {
32
33
  return null
33
34
  }
34
- const normalized = getNameFromFilePath(parent)
35
+ return resolveParentRouteName(routeNodes, contextKey, parent)
36
+ }, [contextKey, parent, routeNodes])
35
37
 
36
- if (parent.startsWith('.')) {
37
- return relativePaths(contextKey, parent)
38
- }
39
- return normalized
40
- }, [contextKey, parent])
38
+ if (parent && normalizedParent === undefined) {
39
+ throw new Error(
40
+ `Could not find parent navigation with route "${parent}".` +
41
+ ` (normalized context: ${resolveParentId(contextKey, parent)})`
42
+ )
43
+ }
41
44
 
42
45
  if (normalizedParent != null) {
46
+ if (normalizedParent === '') {
47
+ let rootNavigation = navigation
48
+ let nextNavigation = rootNavigation.getParent()
49
+ while (nextNavigation) {
50
+ rootNavigation = nextNavigation
51
+ nextNavigation = rootNavigation.getParent()
52
+ }
53
+ return rootNavigation
54
+ }
55
+
43
56
  const parentNavigation = navigation.getParent(normalizedParent)
44
57
 
45
58
  if (!parentNavigation) {
@@ -62,9 +75,31 @@ export function resolveParentId(
62
75
  }
63
76
 
64
77
  if (parentId.startsWith('.')) {
65
- return getNameFromFilePath(relativePaths(contextKey, parentId))
78
+ return normalizeContextPath(relativePaths(contextKey, parentId))
66
79
  }
67
- return getNameFromFilePath(parentId)
80
+ return normalizeContextPath(parentId)
81
+ }
82
+
83
+ export function resolveParentRouteName(
84
+ routeNodes: RouteNode[],
85
+ contextKey: string,
86
+ parentId?: string | null
87
+ ): string | null | undefined {
88
+ const parentContextKey = resolveParentId(contextKey, parentId)
89
+ if (parentContextKey == null) return null
90
+ if (parentContextKey === '/') return ''
91
+
92
+ const parentRoute = routeNodes.find(
93
+ (node) => getContextKey(node.contextKey) === parentContextKey
94
+ )
95
+ return parentRoute ? getReactNavigationRouteName(parentRoute) : undefined
96
+ }
97
+
98
+ function normalizeContextPath(path: string): string {
99
+ const normalized = getNameFromFilePath(path)
100
+ .replace(/^\/+|\/+$/g, '')
101
+ .replace(/\/_layout$/, '')
102
+ return normalized ? `/${normalized}` : '/'
68
103
  }
69
104
 
70
105
  // Resolve a path like `../` relative to a path like `/foo/bar`
@@ -20,6 +20,7 @@ import type { SuspenseFallbackProps } from '../views/SuspenseFallback'
20
20
  import { Try } from '../views/Try'
21
21
  import { DevHead } from '../vite/DevHead'
22
22
  import { getServerContext, useServerContext } from '../vite/one-server-only'
23
+ import { getReactNavigationRouteName } from '../getReactNavigationConfig'
23
24
  import { filterRootHTML } from './filterRootHTML'
24
25
  import {
25
26
  type DynamicConvention,
@@ -630,13 +631,14 @@ function routeToScreen(
630
631
  route: RouteNode,
631
632
  { options, ...props }: Partial<ScreenProps> = {}
632
633
  ) {
634
+ const navigationRouteName = getReactNavigationRouteName(route)
633
635
  return (
634
636
  <Screen
635
637
  // Users can override the screen getId function.
636
638
  getId={createGetIdForRoute(route)}
637
639
  {...props}
638
- name={route.route}
639
- key={route.route}
640
+ name={navigationRouteName}
641
+ key={navigationRouteName}
640
642
  options={(args) => {
641
643
  // Only eager load generated components
642
644
  const staticOptions = route.generated ? route.loadRoute()?.getNavOptions : null
@@ -24,7 +24,7 @@ describe('getNavigateAction', () => {
24
24
  key: 'page-1-Gc-TeIdZmx_jAcRD-SGcs',
25
25
  },
26
26
  ],
27
- preloadedRoutes: [],
27
+ retainedRouteKeys: [],
28
28
  }
29
29
 
30
30
  const action = getNavigateAction(actionState, navigationState)
@@ -36,6 +36,28 @@ describe('getNavigateAction', () => {
36
36
  })
37
37
  })
38
38
 
39
+ it('uses the focused route when the desired state includes a preloaded route', () => {
40
+ const actionState = {
41
+ index: 0,
42
+ routes: [{ name: 'page-2' }, { name: 'preloaded-page' }],
43
+ }
44
+ const navigationState = {
45
+ stale: false as const,
46
+ type: 'stack',
47
+ key: 'stack-pWRo04',
48
+ index: 0,
49
+ routeNames: ['page-1', 'page-2', 'preloaded-page'],
50
+ routes: [{ name: 'page-1', key: 'page-1-key' }],
51
+ retainedRouteKeys: [],
52
+ }
53
+
54
+ expect(getNavigateAction(actionState, navigationState)).toStrictEqual({
55
+ type: 'NAVIGATE',
56
+ target: 'stack-pWRo04',
57
+ payload: { key: undefined, name: 'page-2', params: {} },
58
+ })
59
+ })
60
+
39
61
  it('handles params', () => {
40
62
  const actionState = {
41
63
  routes: [
@@ -61,7 +83,7 @@ describe('getNavigateAction', () => {
61
83
  key: 'page-1-Gc-TeIdZmx_jAcRD-SGcs',
62
84
  },
63
85
  ],
64
- preloadedRoutes: [],
86
+ retainedRouteKeys: [],
65
87
  }
66
88
 
67
89
  const action = getNavigateAction(actionState, navigationState)
@@ -115,7 +137,7 @@ describe('getNavigateAction', () => {
115
137
  key: 'index-Kyz4PdQ7ZAvE0XFhBWydM',
116
138
  },
117
139
  ],
118
- preloadedRoutes: [],
140
+ retainedRouteKeys: [],
119
141
  }
120
142
 
121
143
  const action = getNavigateAction(actionState, navigationState)
@@ -184,7 +206,7 @@ describe('getNavigateAction', () => {
184
206
  key: 'index-Kyz4PdQ7ZAvE0XFhBWydM',
185
207
  },
186
208
  ],
187
- preloadedRoutes: [],
209
+ retainedRouteKeys: [],
188
210
  }
189
211
 
190
212
  const action = getNavigateAction(actionState, navigationState)
@@ -276,7 +298,7 @@ describe('getNavigateAction', () => {
276
298
  },
277
299
  },
278
300
  ],
279
- preloadedRoutes: [],
301
+ retainedRouteKeys: [],
280
302
  }
281
303
 
282
304
  const action = getNavigateAction(actionState, navigationState)
@@ -315,7 +337,7 @@ describe('getNavigateAction', () => {
315
337
  key: 'page-1-Gc-TeIdZmx_jAcRD-SGcs',
316
338
  },
317
339
  ],
318
- preloadedRoutes: [],
340
+ retainedRouteKeys: [],
319
341
  }
320
342
 
321
343
  const action = getNavigateAction(actionState, navigationState, 'PUSH')
@@ -34,7 +34,8 @@ export function getNavigateAction(
34
34
  while (actionState && navigationState) {
35
35
  const stateRoute = navigationState.routes[navigationState.index]
36
36
 
37
- actionStateRoute = actionState.routes[actionState.routes.length - 1]
37
+ actionStateRoute =
38
+ actionState.routes[actionState.index ?? actionState.routes.length - 1]
38
39
 
39
40
  const childState = actionStateRoute.state
40
41
  const nextNavigationState = stateRoute.state
@@ -54,7 +55,7 @@ export function getNavigateAction(
54
55
  break
55
56
  }
56
57
 
57
- actionState = childState
58
+ actionState = childState as OneRouter.ResultState
58
59
  navigationState = nextNavigationState as NavigationState
59
60
  }
60
61
 
@@ -73,7 +74,9 @@ export function getNavigateAction(
73
74
  payload.params = { ...actionStateRoute.params }
74
75
 
75
76
  actionStateRoute =
76
- actionStateRoute.state?.routes[actionStateRoute.state?.routes.length - 1]
77
+ actionStateRoute.state?.routes[
78
+ actionStateRoute.state.index ?? actionStateRoute.state.routes.length - 1
79
+ ]
77
80
 
78
81
  payload.params ??= {}
79
82
  payload = payload.params
@@ -103,7 +103,7 @@ function HeadlessStackView({
103
103
  state.routes.slice(0, lastBaseIndex + 1).map((route) => route.key)
104
104
  )
105
105
  const baseFocusedKey = state.routes[lastBaseIndex]?.key
106
- const overlayRoutes = state.routes.slice(lastBaseIndex + 1)
106
+ const overlayRoutes = state.routes.slice(lastBaseIndex + 1, state.index + 1)
107
107
 
108
108
  return (
109
109
  <Fragment>