one 1.26.0 → 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 (964) 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.cjs +2 -1
  205. package/dist/cjs/router/getNormalizedStatePath.native.js +2 -1
  206. package/dist/cjs/router/getNormalizedStatePath.native.js.map +1 -1
  207. package/dist/cjs/router/getRouteArtifactPath.native.js.map +1 -1
  208. package/dist/cjs/router/getRouteArtifactPath.test.native.js.map +1 -1
  209. package/dist/cjs/router/getRouteInfo.cjs +6 -2
  210. package/dist/cjs/router/getRouteInfo.native.js +6 -2
  211. package/dist/cjs/router/getRouteInfo.native.js.map +1 -1
  212. package/dist/cjs/router/getRouteInfo.test.cjs +56 -0
  213. package/dist/cjs/router/getRouteInfo.test.native.js +65 -0
  214. package/dist/cjs/router/getRouteInfo.test.native.js.map +1 -0
  215. package/dist/cjs/router/getRoutes.native.js.map +1 -1
  216. package/dist/cjs/router/getRoutes.test.native.js.map +1 -1
  217. package/dist/cjs/router/glob-patterns.native.js.map +1 -1
  218. package/dist/cjs/router/hmrImport.native.test.native.js.map +1 -1
  219. package/dist/cjs/router/imperative-api.native.js.map +1 -1
  220. package/dist/cjs/router/interceptRoutes.native.js.map +1 -1
  221. package/dist/cjs/router/isIndexPath.cjs +1 -1
  222. package/dist/cjs/router/isIndexPath.native.js +2 -1
  223. package/dist/cjs/router/isIndexPath.native.js.map +1 -1
  224. package/dist/cjs/router/isStateAwaitingNavigatorMount.cjs +2 -1
  225. package/dist/cjs/router/isStateAwaitingNavigatorMount.native.js +2 -1
  226. package/dist/cjs/router/isStateAwaitingNavigatorMount.native.js.map +1 -1
  227. package/dist/cjs/router/lastAction.native.js.map +1 -1
  228. package/dist/cjs/router/linkToOrphaned.test.native.js.map +1 -1
  229. package/dist/cjs/router/linkingConfig.native.js.map +1 -1
  230. package/dist/cjs/router/matchers.native.js.map +1 -1
  231. package/dist/cjs/router/matchers.test.native.js.map +1 -1
  232. package/dist/cjs/router/params.native.js.map +1 -1
  233. package/dist/cjs/router/path.cjs +1 -0
  234. package/dist/cjs/router/path.native.js +1 -0
  235. package/dist/cjs/router/path.native.js.map +1 -1
  236. package/dist/cjs/router/path.test.native.js.map +1 -1
  237. package/dist/cjs/router/protectedRoutes.test.native.js.map +1 -1
  238. package/dist/cjs/router/routeHmr.native.js +2 -5
  239. package/dist/cjs/router/routeHmr.native.js.map +1 -1
  240. package/dist/cjs/router/routeHmr.native.test.cjs +23 -9
  241. package/dist/cjs/router/routeHmr.native.test.native.js +27 -9
  242. package/dist/cjs/router/routeHmr.native.test.native.js.map +1 -1
  243. package/dist/cjs/router/router.cjs +12 -14
  244. package/dist/cjs/router/router.native.js +13 -14
  245. package/dist/cjs/router/router.native.js.map +1 -1
  246. package/dist/cjs/router/serverLocationContext.native.js.map +1 -1
  247. package/dist/cjs/router/sitemap.native.js.map +1 -1
  248. package/dist/cjs/router/sitemap.test.native.js.map +1 -1
  249. package/dist/cjs/router/sortRoutes.native.js.map +1 -1
  250. package/dist/cjs/router/useInitializeOneRouter.native.js.map +1 -1
  251. package/dist/cjs/router/useInitializeOneRouter.preview-lifecycle.test.native.js.map +1 -1
  252. package/dist/cjs/router/useNavigation.cjs +30 -8
  253. package/dist/cjs/router/useNavigation.native.js +32 -8
  254. package/dist/cjs/router/useNavigation.native.js.map +1 -1
  255. package/dist/cjs/router/useScreens.cjs +19 -21
  256. package/dist/cjs/router/useScreens.native.js +19 -21
  257. package/dist/cjs/router/useScreens.native.js.map +1 -1
  258. package/dist/cjs/router/useScreens.test.cjs +78 -0
  259. package/dist/cjs/router/useScreens.test.native.js +88 -1
  260. package/dist/cjs/router/useScreens.test.native.js.map +1 -1
  261. package/dist/cjs/router/useViteRoutes.cjs +3 -2
  262. package/dist/cjs/router/useViteRoutes.native.js +3 -2
  263. package/dist/cjs/router/useViteRoutes.native.js.map +1 -1
  264. package/dist/cjs/router/useViteRoutes.test.native.js.map +1 -1
  265. package/dist/cjs/router/utils/getNavigateAction.cjs +2 -2
  266. package/dist/cjs/router/utils/getNavigateAction.native.js +5 -4
  267. package/dist/cjs/router/utils/getNavigateAction.native.js.map +1 -1
  268. package/dist/cjs/router/utils/getNavigateAction.test.cjs +37 -6
  269. package/dist/cjs/router/utils/getNavigateAction.test.native.js +37 -6
  270. package/dist/cjs/router/utils/getNavigateAction.test.native.js.map +1 -1
  271. package/dist/cjs/router/web/WebStackNavigator.native.js.map +1 -1
  272. package/dist/cjs/router/web/WebStackView.cjs +1 -1
  273. package/dist/cjs/router/web/WebStackView.native.js +1 -1
  274. package/dist/cjs/router/web/WebStackView.native.js.map +1 -1
  275. package/dist/cjs/router/web/__tests__/stackStateUtils.test.cjs +21 -1
  276. package/dist/cjs/router/web/__tests__/stackStateUtils.test.native.js +23 -1
  277. package/dist/cjs/router/web/__tests__/stackStateUtils.test.native.js.map +1 -1
  278. package/dist/cjs/router/web/stackStateUtils.cjs +1 -1
  279. package/dist/cjs/router/web/stackStateUtils.native.js +1 -1
  280. package/dist/cjs/router/web/stackStateUtils.native.js.map +1 -1
  281. package/dist/cjs/serve-worker.native.js.map +1 -1
  282. package/dist/cjs/serve.native.js.map +1 -1
  283. package/dist/cjs/server/ServerContextScript.native.js.map +1 -1
  284. package/dist/cjs/server/createRoutesManifest.native.js.map +1 -1
  285. package/dist/cjs/server/getServerManifest.native.js.map +1 -1
  286. package/dist/cjs/server/getServerManifest.test.native.js.map +1 -1
  287. package/dist/cjs/server/oneServe.native.js.map +1 -1
  288. package/dist/cjs/server/routeExportsFromEntry.native.js.map +1 -1
  289. package/dist/cjs/server/setServerGlobals.native.js.map +1 -1
  290. package/dist/cjs/server/setupBuildOptions.native.js.map +1 -1
  291. package/dist/cjs/server/setupServerGlobals.native.js.map +1 -1
  292. package/dist/cjs/server/ssrLoaderData.native.js.map +1 -1
  293. package/dist/cjs/server/staticHtmlFetcher.native.js.map +1 -1
  294. package/dist/cjs/server/workerHandler.native.js.map +1 -1
  295. package/dist/cjs/server/workerHandler.test.native.js.map +1 -1
  296. package/dist/cjs/server-render.native.js.map +1 -1
  297. package/dist/cjs/skewProtection.native.js.map +1 -1
  298. package/dist/cjs/testing-utils.native.js.map +1 -1
  299. package/dist/cjs/typed-routes/generateRouteTypes.native.js.map +1 -1
  300. package/dist/cjs/typed-routes/generateRouteTypes.test.native.js.map +1 -1
  301. package/dist/cjs/typed-routes/getTypedRoutesDeclarationFile.native.js.map +1 -1
  302. package/dist/cjs/typed-routes/getTypedRoutesDeclarationFile.test.native.js.map +1 -1
  303. package/dist/cjs/typed-routes/injectRouteHelpers.native.js.map +1 -1
  304. package/dist/cjs/types.native.js.map +1 -1
  305. package/dist/cjs/ui/Slot.cjs +3 -3
  306. package/dist/cjs/ui/Slot.native.js +1 -25
  307. package/dist/cjs/ui/Slot.native.js.map +1 -1
  308. package/dist/cjs/ui/TabContext.native.js.map +1 -1
  309. package/dist/cjs/ui/TabList.cjs +4 -5
  310. package/dist/cjs/ui/TabList.native.js +2 -15
  311. package/dist/cjs/ui/TabList.native.js.map +1 -1
  312. package/dist/cjs/ui/TabRouter.native.js.map +1 -1
  313. package/dist/cjs/ui/TabSlot.cjs +3 -3
  314. package/dist/cjs/ui/TabSlot.native.js +11 -43
  315. package/dist/cjs/ui/TabSlot.native.js.map +1 -1
  316. package/dist/cjs/ui/TabTrigger.cjs +3 -3
  317. package/dist/cjs/ui/TabTrigger.native.js +24 -22
  318. package/dist/cjs/ui/TabTrigger.native.js.map +1 -1
  319. package/dist/cjs/ui/Tabs.cjs +9 -10
  320. package/dist/cjs/ui/Tabs.native.js +2 -9
  321. package/dist/cjs/ui/Tabs.native.js.map +1 -1
  322. package/dist/cjs/ui/Tabs.shared.cjs +1 -4
  323. package/dist/cjs/ui/Tabs.shared.native.js +1 -4
  324. package/dist/cjs/ui/Tabs.shared.native.js.map +1 -1
  325. package/dist/cjs/ui/common.cjs +6 -5
  326. package/dist/cjs/ui/common.native.js +10 -7
  327. package/dist/cjs/ui/common.native.js.map +1 -1
  328. package/dist/cjs/ui/index.native.js +2 -4
  329. package/dist/cjs/ui/index.native.js.map +1 -1
  330. package/dist/cjs/ui/useComponent.native.js.map +1 -1
  331. package/dist/cjs/ui/useTabTrigger.native.js.map +1 -1
  332. package/dist/cjs/useFocusEffect.cjs +7 -1
  333. package/dist/cjs/useFocusEffect.native.js +9 -4
  334. package/dist/cjs/useFocusEffect.native.js.map +1 -1
  335. package/dist/cjs/useLoader.native.js.map +1 -1
  336. package/dist/cjs/useMatches.native.js.map +1 -1
  337. package/dist/cjs/useMatches.test.native.js.map +1 -1
  338. package/dist/cjs/useServerHeadInsertion.native.js.map +1 -1
  339. package/dist/cjs/utils/assertIsReady.native.js.map +1 -1
  340. package/dist/cjs/utils/buildOutputPointer.native.js.map +1 -1
  341. package/dist/cjs/utils/buildOutputPointer.test.native.js.map +1 -1
  342. package/dist/cjs/utils/children.native.js.map +1 -1
  343. package/dist/cjs/utils/cleanUrl.native.js.map +1 -1
  344. package/dist/cjs/utils/cleanUrl.test.native.js.map +1 -1
  345. package/dist/cjs/utils/dynamicImport.native.js.map +1 -1
  346. package/dist/cjs/utils/dynamicImport.test.native.js.map +1 -1
  347. package/dist/cjs/utils/ensureExists.native.js.map +1 -1
  348. package/dist/cjs/utils/evictOldest.native.js.map +1 -1
  349. package/dist/cjs/utils/existsAsync.native.js.map +1 -1
  350. package/dist/cjs/utils/findRootLayout.native.js.map +1 -1
  351. package/dist/cjs/utils/getPageExport.native.js.map +1 -1
  352. package/dist/cjs/utils/getPathnameFromFilePath.native.js.map +1 -1
  353. package/dist/cjs/utils/getPathnameFromFilePath.test.native.js.map +1 -1
  354. package/dist/cjs/utils/getRouterRootFromOneOptions.native.js.map +1 -1
  355. package/dist/cjs/utils/globDir.native.js.map +1 -1
  356. package/dist/cjs/utils/hashString.native.js.map +1 -1
  357. package/dist/cjs/utils/htmlEscape.native.js.map +1 -1
  358. package/dist/cjs/utils/isResponse.native.js.map +1 -1
  359. package/dist/cjs/utils/isRolldown.native.js.map +1 -1
  360. package/dist/cjs/utils/isStatus.native.js.map +1 -1
  361. package/dist/cjs/utils/pLimit.native.js.map +1 -1
  362. package/dist/cjs/utils/platform.native.js.map +1 -1
  363. package/dist/cjs/utils/posixPathContract.test.native.js.map +1 -1
  364. package/dist/cjs/utils/promiseWithResolvers.native.js.map +1 -1
  365. package/dist/cjs/utils/rand.native.js.map +1 -1
  366. package/dist/cjs/utils/redirect.native.js.map +1 -1
  367. package/dist/cjs/utils/removeParams.native.js.map +1 -1
  368. package/dist/cjs/utils/removeSearch.native.js.map +1 -1
  369. package/dist/cjs/utils/removeUndefined.native.js.map +1 -1
  370. package/dist/cjs/utils/routeFileWatch.native.js.map +1 -1
  371. package/dist/cjs/utils/routeFileWatch.test.native.js.map +1 -1
  372. package/dist/cjs/utils/routeIndex.native.js.map +1 -1
  373. package/dist/cjs/utils/routeIndex.test.native.js.map +1 -1
  374. package/dist/cjs/utils/style.native.js.map +1 -1
  375. package/dist/cjs/utils/toAbsolute.native.js.map +1 -1
  376. package/dist/cjs/utils/toServerOutputPath.native.js.map +1 -1
  377. package/dist/cjs/utils/toServerOutputPath.test.native.js.map +1 -1
  378. package/dist/cjs/utils/trackLoaderDependencies.native.js.map +1 -1
  379. package/dist/cjs/utils/url.native.js.map +1 -1
  380. package/dist/cjs/utils/useConstant.native.js.map +1 -1
  381. package/dist/cjs/utils/watchFile.native.js.map +1 -1
  382. package/dist/cjs/utils/weakKey.native.js.map +1 -1
  383. package/dist/cjs/utils/weakMemo.native.js.map +1 -1
  384. package/dist/cjs/utils/withStaticProperties.native.js.map +1 -1
  385. package/dist/cjs/utils/workerImport.native.js.map +1 -1
  386. package/dist/cjs/validateParams.native.js.map +1 -1
  387. package/dist/cjs/validateSearch.native.js.map +1 -1
  388. package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.js.map +1 -1
  389. package/dist/cjs/vercel/build/config/vc-build-output-config-base.native.js.map +1 -1
  390. package/dist/cjs/vercel/build/config/vc-config-base.native.js.map +1 -1
  391. package/dist/cjs/vercel/build/config/vc-package-base.native.js.map +1 -1
  392. package/dist/cjs/vercel/build/generate/createApiServerlessFunction.native.js.map +1 -1
  393. package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.native.js.map +1 -1
  394. package/dist/cjs/vercel/build/getPathFromRoute.native.js.map +1 -1
  395. package/dist/cjs/views/EmptyRoute.native.js.map +1 -1
  396. package/dist/cjs/views/ErrorBoundary.native.js.map +1 -1
  397. package/dist/cjs/views/LoadProgressBar.native.js.map +1 -1
  398. package/dist/cjs/views/Navigator.cjs +2 -19
  399. package/dist/cjs/views/Navigator.native.js +2 -23
  400. package/dist/cjs/views/Navigator.native.js.map +1 -1
  401. package/dist/cjs/views/Protected.native.js.map +1 -1
  402. package/dist/cjs/views/RootErrorBoundary.native.js.map +1 -1
  403. package/dist/cjs/views/RouteErrorView.native.js.map +1 -1
  404. package/dist/cjs/views/Screen.native.js.map +1 -1
  405. package/dist/cjs/views/ScrollBehavior.native.js.map +1 -1
  406. package/dist/cjs/views/ScrollBehavior.test.native.js.map +1 -1
  407. package/dist/cjs/views/SourceInspector.native.js.map +1 -1
  408. package/dist/cjs/views/SuspenseFallback.native.js.map +1 -1
  409. package/dist/cjs/views/Try.native.js.map +1 -1
  410. package/dist/cjs/vite/DevHead.native.js.map +1 -1
  411. package/dist/cjs/vite/cloudflareWranglerConfig.native.js.map +1 -1
  412. package/dist/cjs/vite/cloudflareWranglerConfig.test.native.js.map +1 -1
  413. package/dist/cjs/vite/constants.native.js.map +1 -1
  414. package/dist/cjs/vite/customNodeExternals.native.js.map +1 -1
  415. package/dist/cjs/vite/ensureTsConfig.native.js.map +1 -1
  416. package/dist/cjs/vite/findDepsToOptimize.native.js.map +1 -1
  417. package/dist/cjs/vite/getManifest.native.js.map +1 -1
  418. package/dist/cjs/vite/getManifest.test.native.js.map +1 -1
  419. package/dist/cjs/vite/loadConfig.native.js.map +1 -1
  420. package/dist/cjs/vite/makePluginWebOnly.native.js.map +1 -1
  421. package/dist/cjs/vite/one-server-only.test.native.js.map +1 -1
  422. package/dist/cjs/vite/one.native.js.map +1 -1
  423. package/dist/cjs/vite/plugins/SSRCSSPlugin.native.js.map +1 -1
  424. package/dist/cjs/vite/plugins/bundledDevPlugin.native.js.map +1 -1
  425. package/dist/cjs/vite/plugins/clientTreeShakePlugin.native.js.map +1 -1
  426. package/dist/cjs/vite/plugins/clientTreeShakePlugin.test.native.js.map +1 -1
  427. package/dist/cjs/vite/plugins/criticalCSSPlugin.native.js.map +1 -1
  428. package/dist/cjs/vite/plugins/criticalCSSPlugin.test.native.js.map +1 -1
  429. package/dist/cjs/vite/plugins/devtoolsPlugin.native.js.map +1 -1
  430. package/dist/cjs/vite/plugins/environmentGuardPlugin.native.js.map +1 -1
  431. package/dist/cjs/vite/plugins/environmentGuardPlugin.test.native.js.map +1 -1
  432. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
  433. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.test.native.js.map +1 -1
  434. package/dist/cjs/vite/plugins/fixDependenciesPlugin.native.js.map +1 -1
  435. package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.native.js.map +1 -1
  436. package/dist/cjs/vite/plugins/imageDataPlugin.native.js.map +1 -1
  437. package/dist/cjs/vite/plugins/imageDataPlugin.test.native.js.map +1 -1
  438. package/dist/cjs/vite/plugins/removeReactNativeWebAnimatedPlugin.native.js.map +1 -1
  439. package/dist/cjs/vite/plugins/routeModuleHmrPlugin.native.js.map +1 -1
  440. package/dist/cjs/vite/plugins/routeModuleHmrPlugin.test.native.js.map +1 -1
  441. package/dist/cjs/vite/plugins/sourceInspectorPlugin.cjs +7 -1
  442. package/dist/cjs/vite/plugins/sourceInspectorPlugin.native.js +7 -1
  443. package/dist/cjs/vite/plugins/sourceInspectorPlugin.native.js.map +1 -1
  444. package/dist/cjs/vite/plugins/sourceInspectorPlugin.test.cjs +15 -0
  445. package/dist/cjs/vite/plugins/sourceInspectorPlugin.test.native.js +16 -0
  446. package/dist/cjs/vite/plugins/sourceInspectorPlugin.test.native.js.map +1 -1
  447. package/dist/cjs/vite/plugins/useDomPlugin.native.js.map +1 -1
  448. package/dist/cjs/vite/plugins/virtualEntryConstants.native.js.map +1 -1
  449. package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
  450. package/dist/cjs/vite/plugins/virtualEntryPlugin.test.native.js.map +1 -1
  451. package/dist/cjs/vite/plugins/warmRoutesPlugin.native.js.map +1 -1
  452. package/dist/cjs/vite/plugins/workerdDevPlugin.native.js.map +1 -1
  453. package/dist/cjs/vite/plugins/workerdDevPlugin.test.native.js.map +1 -1
  454. package/dist/cjs/vite/resolveResponse.native.js.map +1 -1
  455. package/dist/cjs/vite/types.native.js.map +1 -1
  456. package/dist/cjs/vite-auto-warm.native.js.map +1 -1
  457. package/dist/cjs/vite.native.js.map +1 -1
  458. package/dist/cjs/zero/getQueryKey.native.js.map +1 -1
  459. package/dist/cjs/zero/isZeroQuery.native.js.map +1 -1
  460. package/dist/cjs/zero/resolveQuery.native.js.map +1 -1
  461. package/dist/cjs/zero/subscribeToQuery.native.js.map +1 -1
  462. package/dist/cjs/zero/types.native.js.map +1 -1
  463. package/dist/cjs/zero/useQuery.native.js.map +1 -1
  464. package/dist/cjs/zero/useQueryZero.native.js.map +1 -1
  465. package/dist/cjs/zero.native.js.map +1 -1
  466. package/dist/esm/createApp.native.js +25 -1
  467. package/dist/esm/createApp.native.js.map +1 -1
  468. package/dist/esm/fallbackViews/Sitemap.mjs +1 -1
  469. package/dist/esm/fallbackViews/Sitemap.mjs.map +1 -1
  470. package/dist/esm/fallbackViews/Sitemap.native.js +1 -1
  471. package/dist/esm/fallbackViews/Sitemap.native.js.map +1 -1
  472. package/dist/esm/fork/NavigationContainer.mjs +26 -52
  473. package/dist/esm/fork/NavigationContainer.mjs.map +1 -1
  474. package/dist/esm/fork/NavigationContainer.native.js +30 -57
  475. package/dist/esm/fork/NavigationContainer.native.js.map +1 -1
  476. package/dist/esm/fork/getPathFromState.mjs.map +1 -1
  477. package/dist/esm/fork/useLinking.mjs +18 -15
  478. package/dist/esm/fork/useLinking.mjs.map +1 -1
  479. package/dist/esm/fork/useLinking.native.js +12 -21
  480. package/dist/esm/fork/useLinking.native.js.map +1 -1
  481. package/dist/esm/fork/useLinking.native.test.js +12 -17
  482. package/dist/esm/fork/useLinking.native.test.js.map +1 -1
  483. package/dist/esm/fork/useLinking.native.test.mjs +2 -2
  484. package/dist/esm/fork/useLinking.native.test.mjs.map +1 -1
  485. package/dist/esm/fork/useLinking.native.test.native.js +1 -1
  486. package/dist/esm/fork/useLinking.native.test.native.js.map +1 -1
  487. package/dist/esm/fork/validatePathConfig.mjs +9 -2
  488. package/dist/esm/fork/validatePathConfig.mjs.map +1 -1
  489. package/dist/esm/fork/validatePathConfig.native.js +9 -2
  490. package/dist/esm/fork/validatePathConfig.native.js.map +1 -1
  491. package/dist/esm/getReactNavigationConfig.mjs +48 -5
  492. package/dist/esm/getReactNavigationConfig.mjs.map +1 -1
  493. package/dist/esm/getReactNavigationConfig.native.js +54 -5
  494. package/dist/esm/getReactNavigationConfig.native.js.map +1 -1
  495. package/dist/esm/getURL.native.test.mjs +1 -1
  496. package/dist/esm/headless/__tests__/useStack.test.mjs +7 -15
  497. package/dist/esm/headless/__tests__/useStack.test.mjs.map +1 -1
  498. package/dist/esm/headless/__tests__/useStack.test.native.js +7 -15
  499. package/dist/esm/headless/__tests__/useStack.test.native.js.map +1 -1
  500. package/dist/esm/headless/useStack.mjs +1 -2
  501. package/dist/esm/headless/useStack.mjs.map +1 -1
  502. package/dist/esm/headless/useStack.native.js +1 -2
  503. package/dist/esm/headless/useStack.native.js.map +1 -1
  504. package/dist/esm/index.js.map +1 -1
  505. package/dist/esm/index.mjs.map +1 -1
  506. package/dist/esm/index.native.js.map +1 -1
  507. package/dist/esm/interfaces/router.mjs.map +1 -1
  508. package/dist/esm/interfaces/router.native.js.map +1 -1
  509. package/dist/esm/layouts/Stack.mjs +10 -13
  510. package/dist/esm/layouts/Stack.mjs.map +1 -1
  511. package/dist/esm/layouts/Stack.native.js +11 -14
  512. package/dist/esm/layouts/Stack.native.js.map +1 -1
  513. package/dist/esm/layouts/Tabs.native.js +4 -74
  514. package/dist/esm/layouts/Tabs.native.js.map +1 -1
  515. package/dist/esm/layouts/nativeTabsOptions.mjs +24 -0
  516. package/dist/esm/layouts/nativeTabsOptions.mjs.map +1 -0
  517. package/dist/esm/layouts/nativeTabsOptions.native.js +24 -0
  518. package/dist/esm/layouts/nativeTabsOptions.native.js.map +1 -0
  519. package/dist/esm/layouts/stack-utils/StackHeaderBackButton.mjs +4 -1
  520. package/dist/esm/layouts/stack-utils/StackHeaderBackButton.mjs.map +1 -1
  521. package/dist/esm/layouts/stack-utils/StackHeaderBackButton.native.js +4 -1
  522. package/dist/esm/layouts/stack-utils/StackHeaderBackButton.native.js.map +1 -1
  523. package/dist/esm/layouts/stack-utils/StackHeaderTitle.mjs +2 -2
  524. package/dist/esm/layouts/stack-utils/StackHeaderTitle.mjs.map +1 -1
  525. package/dist/esm/layouts/stack-utils/StackHeaderTitle.native.js +2 -2
  526. package/dist/esm/layouts/stack-utils/StackHeaderTitle.native.js.map +1 -1
  527. package/dist/esm/layouts/stack-utils/StackScreen.mjs +3 -6
  528. package/dist/esm/layouts/stack-utils/StackScreen.mjs.map +1 -1
  529. package/dist/esm/layouts/stack-utils/StackScreen.native.js +4 -7
  530. package/dist/esm/layouts/stack-utils/StackScreen.native.js.map +1 -1
  531. package/dist/esm/layouts/stack-utils/__tests__/composition.test.mjs +14 -14
  532. package/dist/esm/layouts/stack-utils/__tests__/composition.test.mjs.map +1 -1
  533. package/dist/esm/layouts/stack-utils/__tests__/composition.test.native.js +14 -14
  534. package/dist/esm/layouts/stack-utils/__tests__/composition.test.native.js.map +1 -1
  535. package/dist/esm/layouts/stack-utils/index.mjs +1 -2
  536. package/dist/esm/layouts/stack-utils/index.mjs.map +1 -1
  537. package/dist/esm/layouts/stack-utils/index.native.js +1 -2
  538. package/dist/esm/layouts/stack-utils/index.native.js.map +1 -1
  539. package/dist/esm/layouts/withLayoutContext.mjs +0 -1
  540. package/dist/esm/layouts/withLayoutContext.mjs.map +1 -1
  541. package/dist/esm/layouts/withLayoutContext.native.js +0 -1
  542. package/dist/esm/layouts/withLayoutContext.native.js.map +1 -1
  543. package/dist/esm/layouts/withLayoutContext.test.mjs +18 -0
  544. package/dist/esm/layouts/withLayoutContext.test.mjs.map +1 -1
  545. package/dist/esm/layouts/withLayoutContext.test.native.js +24 -0
  546. package/dist/esm/layouts/withLayoutContext.test.native.js.map +1 -1
  547. package/dist/esm/link/useLoadedNavigation.mjs.map +1 -1
  548. package/dist/esm/link/useLoadedNavigation.native.js.map +1 -1
  549. package/dist/esm/router/Route.mjs +9 -3
  550. package/dist/esm/router/Route.mjs.map +1 -1
  551. package/dist/esm/router/Route.native.js +12 -3
  552. package/dist/esm/router/Route.native.js.map +1 -1
  553. package/dist/esm/router/findRouteNode.mjs +10 -10
  554. package/dist/esm/router/findRouteNode.mjs.map +1 -1
  555. package/dist/esm/router/findRouteNode.native.js +13 -29
  556. package/dist/esm/router/findRouteNode.native.js.map +1 -1
  557. package/dist/esm/router/findRouteNode.test.mjs +89 -0
  558. package/dist/esm/router/findRouteNode.test.mjs.map +1 -0
  559. package/dist/esm/router/findRouteNode.test.native.js +92 -0
  560. package/dist/esm/router/findRouteNode.test.native.js.map +1 -0
  561. package/dist/esm/router/getLinkingConfig.test.mjs +9 -0
  562. package/dist/esm/router/getLinkingConfig.test.mjs.map +1 -1
  563. package/dist/esm/router/getLinkingConfig.test.native.js +9 -0
  564. package/dist/esm/router/getLinkingConfig.test.native.js.map +1 -1
  565. package/dist/esm/router/getNormalizedStatePath.mjs +2 -1
  566. package/dist/esm/router/getNormalizedStatePath.mjs.map +1 -1
  567. package/dist/esm/router/getNormalizedStatePath.native.js +2 -1
  568. package/dist/esm/router/getNormalizedStatePath.native.js.map +1 -1
  569. package/dist/esm/router/getRouteInfo.mjs +5 -2
  570. package/dist/esm/router/getRouteInfo.mjs.map +1 -1
  571. package/dist/esm/router/getRouteInfo.native.js +5 -2
  572. package/dist/esm/router/getRouteInfo.native.js.map +1 -1
  573. package/dist/esm/router/getRouteInfo.test.mjs +57 -0
  574. package/dist/esm/router/getRouteInfo.test.mjs.map +1 -0
  575. package/dist/esm/router/getRouteInfo.test.native.js +63 -0
  576. package/dist/esm/router/getRouteInfo.test.native.js.map +1 -0
  577. package/dist/esm/router/hmrImport.native.test.mjs +1 -1
  578. package/dist/esm/router/isIndexPath.mjs +1 -1
  579. package/dist/esm/router/isIndexPath.mjs.map +1 -1
  580. package/dist/esm/router/isIndexPath.native.js +2 -1
  581. package/dist/esm/router/isIndexPath.native.js.map +1 -1
  582. package/dist/esm/router/isStateAwaitingNavigatorMount.mjs +2 -1
  583. package/dist/esm/router/isStateAwaitingNavigatorMount.mjs.map +1 -1
  584. package/dist/esm/router/isStateAwaitingNavigatorMount.native.js +2 -1
  585. package/dist/esm/router/isStateAwaitingNavigatorMount.native.js.map +1 -1
  586. package/dist/esm/router/path.mjs +1 -1
  587. package/dist/esm/router/path.mjs.map +1 -1
  588. package/dist/esm/router/path.native.js +1 -1
  589. package/dist/esm/router/path.native.js.map +1 -1
  590. package/dist/esm/router/routeHmr.native.js +2 -5
  591. package/dist/esm/router/routeHmr.native.js.map +1 -1
  592. package/dist/esm/router/routeHmr.native.test.js +21 -11
  593. package/dist/esm/router/routeHmr.native.test.js.map +1 -1
  594. package/dist/esm/router/routeHmr.native.test.mjs +24 -10
  595. package/dist/esm/router/routeHmr.native.test.mjs.map +1 -1
  596. package/dist/esm/router/routeHmr.native.test.native.js +27 -9
  597. package/dist/esm/router/routeHmr.native.test.native.js.map +1 -1
  598. package/dist/esm/router/router.mjs +11 -13
  599. package/dist/esm/router/router.mjs.map +1 -1
  600. package/dist/esm/router/router.native.js +12 -13
  601. package/dist/esm/router/router.native.js.map +1 -1
  602. package/dist/esm/router/useInitializeOneRouter.mjs.map +1 -1
  603. package/dist/esm/router/useInitializeOneRouter.native.js.map +1 -1
  604. package/dist/esm/router/useNavigation.mjs +32 -11
  605. package/dist/esm/router/useNavigation.mjs.map +1 -1
  606. package/dist/esm/router/useNavigation.native.js +34 -11
  607. package/dist/esm/router/useNavigation.native.js.map +1 -1
  608. package/dist/esm/router/useScreens.mjs +19 -20
  609. package/dist/esm/router/useScreens.mjs.map +1 -1
  610. package/dist/esm/router/useScreens.native.js +19 -20
  611. package/dist/esm/router/useScreens.native.js.map +1 -1
  612. package/dist/esm/router/useScreens.test.mjs +76 -0
  613. package/dist/esm/router/useScreens.test.mjs.map +1 -1
  614. package/dist/esm/router/useScreens.test.native.js +86 -0
  615. package/dist/esm/router/useScreens.test.native.js.map +1 -1
  616. package/dist/esm/router/useViteRoutes.mjs +3 -2
  617. package/dist/esm/router/useViteRoutes.mjs.map +1 -1
  618. package/dist/esm/router/useViteRoutes.native.js +3 -2
  619. package/dist/esm/router/useViteRoutes.native.js.map +1 -1
  620. package/dist/esm/router/utils/getNavigateAction.mjs +2 -2
  621. package/dist/esm/router/utils/getNavigateAction.mjs.map +1 -1
  622. package/dist/esm/router/utils/getNavigateAction.native.js +5 -4
  623. package/dist/esm/router/utils/getNavigateAction.native.js.map +1 -1
  624. package/dist/esm/router/utils/getNavigateAction.test.mjs +37 -6
  625. package/dist/esm/router/utils/getNavigateAction.test.mjs.map +1 -1
  626. package/dist/esm/router/utils/getNavigateAction.test.native.js +37 -6
  627. package/dist/esm/router/utils/getNavigateAction.test.native.js.map +1 -1
  628. package/dist/esm/router/web/WebStackView.mjs +1 -1
  629. package/dist/esm/router/web/WebStackView.mjs.map +1 -1
  630. package/dist/esm/router/web/WebStackView.native.js +1 -1
  631. package/dist/esm/router/web/WebStackView.native.js.map +1 -1
  632. package/dist/esm/router/web/__tests__/stackStateUtils.test.mjs +21 -1
  633. package/dist/esm/router/web/__tests__/stackStateUtils.test.mjs.map +1 -1
  634. package/dist/esm/router/web/__tests__/stackStateUtils.test.native.js +23 -1
  635. package/dist/esm/router/web/__tests__/stackStateUtils.test.native.js.map +1 -1
  636. package/dist/esm/router/web/stackStateUtils.mjs +1 -1
  637. package/dist/esm/router/web/stackStateUtils.mjs.map +1 -1
  638. package/dist/esm/router/web/stackStateUtils.native.js +1 -1
  639. package/dist/esm/router/web/stackStateUtils.native.js.map +1 -1
  640. package/dist/esm/ui/Slot.mjs.map +1 -1
  641. package/dist/esm/ui/Slot.native.js +1 -25
  642. package/dist/esm/ui/Slot.native.js.map +1 -1
  643. package/dist/esm/ui/TabContext.mjs.map +1 -1
  644. package/dist/esm/ui/TabContext.native.js.map +1 -1
  645. package/dist/esm/ui/TabList.mjs +1 -2
  646. package/dist/esm/ui/TabList.mjs.map +1 -1
  647. package/dist/esm/ui/TabList.native.js +2 -15
  648. package/dist/esm/ui/TabList.native.js.map +1 -1
  649. package/dist/esm/ui/TabSlot.mjs.map +1 -1
  650. package/dist/esm/ui/TabSlot.native.js +12 -44
  651. package/dist/esm/ui/TabSlot.native.js.map +1 -1
  652. package/dist/esm/ui/TabTrigger.mjs.map +1 -1
  653. package/dist/esm/ui/TabTrigger.native.js +25 -23
  654. package/dist/esm/ui/TabTrigger.native.js.map +1 -1
  655. package/dist/esm/ui/Tabs.mjs +1 -2
  656. package/dist/esm/ui/Tabs.mjs.map +1 -1
  657. package/dist/esm/ui/Tabs.native.js +2 -9
  658. package/dist/esm/ui/Tabs.native.js.map +1 -1
  659. package/dist/esm/ui/Tabs.shared.mjs +1 -4
  660. package/dist/esm/ui/Tabs.shared.mjs.map +1 -1
  661. package/dist/esm/ui/Tabs.shared.native.js +1 -4
  662. package/dist/esm/ui/Tabs.shared.native.js.map +1 -1
  663. package/dist/esm/ui/common.mjs +6 -5
  664. package/dist/esm/ui/common.mjs.map +1 -1
  665. package/dist/esm/ui/common.native.js +10 -7
  666. package/dist/esm/ui/common.native.js.map +1 -1
  667. package/dist/esm/ui/index.native.js +1 -1
  668. package/dist/esm/ui/index.native.js.map +1 -1
  669. package/dist/esm/useFocusEffect.mjs +8 -2
  670. package/dist/esm/useFocusEffect.mjs.map +1 -1
  671. package/dist/esm/useFocusEffect.native.js +10 -5
  672. package/dist/esm/useFocusEffect.native.js.map +1 -1
  673. package/dist/esm/views/Navigator.mjs +2 -19
  674. package/dist/esm/views/Navigator.mjs.map +1 -1
  675. package/dist/esm/views/Navigator.native.js +2 -23
  676. package/dist/esm/views/Navigator.native.js.map +1 -1
  677. package/dist/esm/vite/one.mjs.map +1 -1
  678. package/dist/esm/vite/one.native.js.map +1 -1
  679. package/dist/esm/vite/plugins/sourceInspectorPlugin.mjs +7 -2
  680. package/dist/esm/vite/plugins/sourceInspectorPlugin.mjs.map +1 -1
  681. package/dist/esm/vite/plugins/sourceInspectorPlugin.native.js +7 -2
  682. package/dist/esm/vite/plugins/sourceInspectorPlugin.native.js.map +1 -1
  683. package/dist/esm/vite/plugins/sourceInspectorPlugin.test.mjs +16 -1
  684. package/dist/esm/vite/plugins/sourceInspectorPlugin.test.mjs.map +1 -1
  685. package/dist/esm/vite/plugins/sourceInspectorPlugin.test.native.js +17 -1
  686. package/dist/esm/vite/plugins/sourceInspectorPlugin.test.native.js.map +1 -1
  687. package/package.json +32 -47
  688. package/src/__mocks__/@react-navigation/native-stack.ts +2 -2
  689. package/src/createApp.native.tsx +23 -1
  690. package/src/fallbackViews/Sitemap.tsx +1 -1
  691. package/src/fallbackViews/Sitemap.web.tsx +1 -1
  692. package/src/fork/NavigationContainer.tsx +36 -80
  693. package/src/fork/getPathFromState.ts +3 -3
  694. package/src/fork/useLinking.native.test.tsx +11 -15
  695. package/src/fork/useLinking.native.ts +13 -27
  696. package/src/fork/useLinking.ts +24 -21
  697. package/src/fork/validatePathConfig.ts +11 -4
  698. package/src/getReactNavigationConfig.ts +96 -4
  699. package/src/headless/__tests__/useStack.test.tsx +4 -13
  700. package/src/headless/types.ts +1 -2
  701. package/src/headless/useStack.ts +1 -2
  702. package/src/index.ts +0 -12
  703. package/src/interfaces/router.ts +2 -2
  704. package/src/layouts/Drawer.tsx +4 -2
  705. package/src/layouts/Stack.tsx +17 -36
  706. package/src/layouts/Tabs.tsx +6 -81
  707. package/src/layouts/nativeTabsOptions.ts +38 -0
  708. package/src/layouts/stack-utils/README.md +0 -1
  709. package/src/layouts/stack-utils/StackHeaderBackButton.tsx +1 -1
  710. package/src/layouts/stack-utils/StackHeaderTitle.tsx +2 -2
  711. package/src/layouts/stack-utils/StackScreen.tsx +5 -26
  712. package/src/layouts/stack-utils/__tests__/composition.test.tsx +14 -14
  713. package/src/layouts/stack-utils/index.tsx +0 -17
  714. package/src/layouts/withLayoutContext.test.tsx +16 -0
  715. package/src/layouts/withLayoutContext.tsx +2 -2
  716. package/src/link/useLoadedNavigation.ts +2 -1
  717. package/src/router/Route.tsx +12 -2
  718. package/src/router/findRouteNode.test.ts +92 -0
  719. package/src/router/findRouteNode.ts +22 -17
  720. package/src/router/getLinkingConfig.test.ts +13 -0
  721. package/src/router/getNormalizedStatePath.tsx +2 -1
  722. package/src/router/getRouteInfo.test.ts +54 -0
  723. package/src/router/getRouteInfo.ts +5 -2
  724. package/src/router/isIndexPath.ts +5 -2
  725. package/src/router/isStateAwaitingNavigatorMount.ts +4 -1
  726. package/src/router/path.ts +1 -1
  727. package/src/router/routeHmr.native.test.ts +23 -11
  728. package/src/router/routeHmr.native.ts +6 -4
  729. package/src/router/router.ts +10 -9
  730. package/src/router/useInitializeOneRouter.ts +2 -2
  731. package/src/router/useNavigation.ts +49 -14
  732. package/src/router/useScreens.test.tsx +72 -0
  733. package/src/router/useScreens.tsx +15 -21
  734. package/src/router/useViteRoutes.tsx +3 -2
  735. package/src/router/utils/getNavigateAction.test.ts +28 -6
  736. package/src/router/utils/getNavigateAction.ts +6 -3
  737. package/src/router/web/WebStackView.tsx +1 -1
  738. package/src/router/web/__tests__/stackStateUtils.test.ts +23 -1
  739. package/src/router/web/stackStateUtils.ts +3 -2
  740. package/src/ui/README.md +8 -16
  741. package/src/ui/Slot.tsx +4 -38
  742. package/src/ui/TabContext.tsx +2 -7
  743. package/src/ui/TabList.tsx +7 -19
  744. package/src/ui/TabSlot.tsx +17 -60
  745. package/src/ui/TabTrigger.tsx +22 -30
  746. package/src/ui/Tabs.shared.tsx +3 -6
  747. package/src/ui/Tabs.tsx +3 -10
  748. package/src/ui/common.tsx +7 -5
  749. package/src/ui/index.native.ts +1 -0
  750. package/src/useFocusEffect.ts +14 -4
  751. package/src/views/Navigator.tsx +5 -21
  752. package/src/vite/one.ts +3 -1
  753. package/src/vite/plugins/sourceInspectorPlugin.test.ts +39 -1
  754. package/src/vite/plugins/sourceInspectorPlugin.ts +24 -3
  755. package/types/__mocks__/@react-navigation/native-stack.d.ts +2 -2
  756. package/types/__mocks__/@react-navigation/native-stack.d.ts.map +1 -1
  757. package/types/createApp.native.d.ts.map +1 -1
  758. package/types/fork/NavigationContainer.d.ts +2 -7
  759. package/types/fork/NavigationContainer.d.ts.map +1 -1
  760. package/types/fork/findFocusedRoute.d.ts +12 -2
  761. package/types/fork/findFocusedRoute.d.ts.map +1 -1
  762. package/types/fork/useLinking.d.ts +1 -1
  763. package/types/fork/useLinking.d.ts.map +1 -1
  764. package/types/fork/useLinking.native.d.ts +4 -20
  765. package/types/fork/useLinking.native.d.ts.map +1 -1
  766. package/types/fork/validatePathConfig.d.ts.map +1 -1
  767. package/types/getReactNavigationConfig.d.ts +10 -0
  768. package/types/getReactNavigationConfig.d.ts.map +1 -1
  769. package/types/headless/types.d.ts +1 -4
  770. package/types/headless/types.d.ts.map +1 -1
  771. package/types/headless/useStack.d.ts.map +1 -1
  772. package/types/index.d.ts +1 -1
  773. package/types/index.d.ts.map +1 -1
  774. package/types/interfaces/router.d.ts +2 -2
  775. package/types/interfaces/router.d.ts.map +1 -1
  776. package/types/layouts/Drawer.d.ts +3 -108
  777. package/types/layouts/Drawer.d.ts.map +1 -1
  778. package/types/layouts/Drawer.web.d.ts +189 -2
  779. package/types/layouts/Drawer.web.d.ts.map +1 -1
  780. package/types/layouts/Stack.d.ts +7 -120
  781. package/types/layouts/Stack.d.ts.map +1 -1
  782. package/types/layouts/Tabs.d.ts +5 -100
  783. package/types/layouts/Tabs.d.ts.map +1 -1
  784. package/types/layouts/nativeTabsOptions.d.ts +8 -0
  785. package/types/layouts/nativeTabsOptions.d.ts.map +1 -0
  786. package/types/layouts/stack-navigator.d.ts +1 -2
  787. package/types/layouts/stack-navigator.d.ts.map +1 -1
  788. package/types/layouts/stack-navigator.web.d.ts +1 -1
  789. package/types/layouts/stack-navigator.web.d.ts.map +1 -1
  790. package/types/layouts/stack-utils/StackScreen.d.ts +1 -2
  791. package/types/layouts/stack-utils/StackScreen.d.ts.map +1 -1
  792. package/types/layouts/stack-utils/index.d.ts +1 -3
  793. package/types/layouts/stack-utils/index.d.ts.map +1 -1
  794. package/types/layouts/withLayoutContext.d.ts +1 -2
  795. package/types/layouts/withLayoutContext.d.ts.map +1 -1
  796. package/types/link/useLoadedNavigation.d.ts +2 -2
  797. package/types/link/useLoadedNavigation.d.ts.map +1 -1
  798. package/types/router/Route.d.ts +1 -0
  799. package/types/router/Route.d.ts.map +1 -1
  800. package/types/router/findRouteNode.d.ts +4 -1
  801. package/types/router/findRouteNode.d.ts.map +1 -1
  802. package/types/router/findRouteNode.test.d.ts +2 -0
  803. package/types/router/findRouteNode.test.d.ts.map +1 -0
  804. package/types/router/getNormalizedStatePath.d.ts.map +1 -1
  805. package/types/router/getRouteInfo.d.ts +5 -0
  806. package/types/router/getRouteInfo.d.ts.map +1 -1
  807. package/types/router/getRouteInfo.test.d.ts +2 -0
  808. package/types/router/getRouteInfo.test.d.ts.map +1 -0
  809. package/types/router/isIndexPath.d.ts.map +1 -1
  810. package/types/router/isStateAwaitingNavigatorMount.d.ts.map +1 -1
  811. package/types/router/path.d.ts +1 -0
  812. package/types/router/path.d.ts.map +1 -1
  813. package/types/router/routeHmr.native.d.ts.map +1 -1
  814. package/types/router/router.d.ts +2 -2
  815. package/types/router/router.d.ts.map +1 -1
  816. package/types/router/useNavigation.d.ts +4 -2
  817. package/types/router/useNavigation.d.ts.map +1 -1
  818. package/types/router/useScreens.d.ts +25 -1
  819. package/types/router/useScreens.d.ts.map +1 -1
  820. package/types/router/useViteRoutes.d.ts.map +1 -1
  821. package/types/router/utils/getNavigateAction.d.ts.map +1 -1
  822. package/types/router/web/WebStackNavigator.d.ts +1 -1
  823. package/types/router/web/WebStackNavigator.d.ts.map +1 -1
  824. package/types/router/web/stackStateUtils.d.ts +2 -1
  825. package/types/router/web/stackStateUtils.d.ts.map +1 -1
  826. package/types/ui/Slot.d.ts +2 -3
  827. package/types/ui/Slot.d.ts.map +1 -1
  828. package/types/ui/TabContext.d.ts +36 -84
  829. package/types/ui/TabContext.d.ts.map +1 -1
  830. package/types/ui/TabList.d.ts +4 -5
  831. package/types/ui/TabList.d.ts.map +1 -1
  832. package/types/ui/TabRouter.d.ts +31 -33
  833. package/types/ui/TabRouter.d.ts.map +1 -1
  834. package/types/ui/TabSlot.d.ts +5 -10
  835. package/types/ui/TabSlot.d.ts.map +1 -1
  836. package/types/ui/TabTrigger.d.ts +3 -2
  837. package/types/ui/TabTrigger.d.ts.map +1 -1
  838. package/types/ui/Tabs.d.ts.map +1 -1
  839. package/types/ui/Tabs.shared.d.ts +29 -137
  840. package/types/ui/Tabs.shared.d.ts.map +1 -1
  841. package/types/ui/common.d.ts +1 -1
  842. package/types/ui/common.d.ts.map +1 -1
  843. package/types/ui/index.native.d.ts +2 -0
  844. package/types/ui/index.native.d.ts.map +1 -0
  845. package/types/useFocusEffect.d.ts.map +1 -1
  846. package/types/views/Navigator.d.ts.map +1 -1
  847. package/types/views/Protected.d.ts +9 -1
  848. package/types/views/Protected.d.ts.map +1 -1
  849. package/types/vite/one.d.ts.map +1 -1
  850. package/types/vite/plugins/sourceInspectorPlugin.d.ts +9 -0
  851. package/types/vite/plugins/sourceInspectorPlugin.d.ts.map +1 -1
  852. package/dist/cjs/layouts/NativeTabs.cjs +0 -65
  853. package/dist/cjs/layouts/NativeTabs.native.js +0 -68
  854. package/dist/cjs/layouts/NativeTabs.native.js.map +0 -1
  855. package/dist/cjs/layouts/NativeTabs.test.cjs +0 -24
  856. package/dist/cjs/layouts/NativeTabs.test.native.js +0 -35
  857. package/dist/cjs/layouts/NativeTabs.test.native.js.map +0 -1
  858. package/dist/cjs/layouts/stack-utils/StackToolbar.cjs +0 -124
  859. package/dist/cjs/layouts/stack-utils/StackToolbar.native.js +0 -129
  860. package/dist/cjs/layouts/stack-utils/StackToolbar.native.js.map +0 -1
  861. package/dist/cjs/layouts/stack-utils/StackToolbar.shared.cjs +0 -57
  862. package/dist/cjs/layouts/stack-utils/StackToolbar.shared.native.js +0 -61
  863. package/dist/cjs/layouts/stack-utils/StackToolbar.shared.native.js.map +0 -1
  864. package/dist/cjs/layouts/stack-utils/StackToolbar.types.cjs +0 -18
  865. package/dist/cjs/layouts/stack-utils/StackToolbar.types.native.js +0 -21
  866. package/dist/cjs/layouts/stack-utils/StackToolbar.types.native.js.map +0 -1
  867. package/dist/cjs/layouts/stack-utils/StackToolbarImplementation.cjs +0 -39
  868. package/dist/cjs/layouts/stack-utils/StackToolbarImplementation.native.js +0 -41
  869. package/dist/cjs/layouts/stack-utils/StackToolbarImplementation.native.js.map +0 -1
  870. package/dist/cjs/layouts/stack-utils/__tests__/StackToolbar.test.cjs +0 -66
  871. package/dist/cjs/layouts/stack-utils/__tests__/StackToolbar.test.native.js +0 -99
  872. package/dist/cjs/layouts/stack-utils/__tests__/StackToolbar.test.native.js.map +0 -1
  873. package/dist/cjs/native-tabs.cjs +0 -29
  874. package/dist/cjs/native-tabs.native.js +0 -32
  875. package/dist/cjs/native-tabs.native.js.map +0 -1
  876. package/dist/cjs/stack-toolbar-implementation.cjs +0 -30
  877. package/dist/cjs/stack-toolbar-implementation.native.js +0 -33
  878. package/dist/cjs/stack-toolbar-implementation.native.js.map +0 -1
  879. package/dist/cjs/views/OneStackRouter.cjs +0 -46
  880. package/dist/cjs/views/OneStackRouter.native.js +0 -39
  881. package/dist/cjs/views/OneStackRouter.native.js.map +0 -1
  882. package/dist/esm/layouts/NativeTabs.mjs +0 -28
  883. package/dist/esm/layouts/NativeTabs.mjs.map +0 -1
  884. package/dist/esm/layouts/NativeTabs.native.js +0 -28
  885. package/dist/esm/layouts/NativeTabs.native.js.map +0 -1
  886. package/dist/esm/layouts/NativeTabs.test.mjs +0 -24
  887. package/dist/esm/layouts/NativeTabs.test.mjs.map +0 -1
  888. package/dist/esm/layouts/NativeTabs.test.native.js +0 -32
  889. package/dist/esm/layouts/NativeTabs.test.native.js.map +0 -1
  890. package/dist/esm/layouts/stack-utils/StackToolbar.mjs +0 -89
  891. package/dist/esm/layouts/stack-utils/StackToolbar.mjs.map +0 -1
  892. package/dist/esm/layouts/stack-utils/StackToolbar.native.js +0 -92
  893. package/dist/esm/layouts/stack-utils/StackToolbar.native.js.map +0 -1
  894. package/dist/esm/layouts/stack-utils/StackToolbar.shared.mjs +0 -31
  895. package/dist/esm/layouts/stack-utils/StackToolbar.shared.mjs.map +0 -1
  896. package/dist/esm/layouts/stack-utils/StackToolbar.shared.native.js +0 -32
  897. package/dist/esm/layouts/stack-utils/StackToolbar.shared.native.js.map +0 -1
  898. package/dist/esm/layouts/stack-utils/StackToolbar.types.mjs +0 -2
  899. package/dist/esm/layouts/stack-utils/StackToolbar.types.mjs.map +0 -1
  900. package/dist/esm/layouts/stack-utils/StackToolbar.types.native.js +0 -2
  901. package/dist/esm/layouts/stack-utils/StackToolbar.types.native.js.map +0 -1
  902. package/dist/esm/layouts/stack-utils/StackToolbarImplementation.mjs +0 -12
  903. package/dist/esm/layouts/stack-utils/StackToolbarImplementation.mjs.map +0 -1
  904. package/dist/esm/layouts/stack-utils/StackToolbarImplementation.native.js +0 -12
  905. package/dist/esm/layouts/stack-utils/StackToolbarImplementation.native.js.map +0 -1
  906. package/dist/esm/layouts/stack-utils/__tests__/StackToolbar.test.mjs +0 -67
  907. package/dist/esm/layouts/stack-utils/__tests__/StackToolbar.test.mjs.map +0 -1
  908. package/dist/esm/layouts/stack-utils/__tests__/StackToolbar.test.native.js +0 -73
  909. package/dist/esm/layouts/stack-utils/__tests__/StackToolbar.test.native.js.map +0 -1
  910. package/dist/esm/native-tabs.mjs +0 -3
  911. package/dist/esm/native-tabs.mjs.map +0 -1
  912. package/dist/esm/native-tabs.native.js +0 -3
  913. package/dist/esm/native-tabs.native.js.map +0 -1
  914. package/dist/esm/stack-toolbar-implementation.mjs +0 -3
  915. package/dist/esm/stack-toolbar-implementation.mjs.map +0 -1
  916. package/dist/esm/stack-toolbar-implementation.native.js +0 -3
  917. package/dist/esm/stack-toolbar-implementation.native.js.map +0 -1
  918. package/dist/esm/views/OneStackRouter.mjs +0 -21
  919. package/dist/esm/views/OneStackRouter.mjs.map +0 -1
  920. package/dist/esm/views/OneStackRouter.native.js +0 -11
  921. package/dist/esm/views/OneStackRouter.native.js.map +0 -1
  922. package/src/layouts/NativeTabs.test.ts +0 -30
  923. package/src/layouts/NativeTabs.tsx +0 -46
  924. package/src/layouts/stack-utils/StackToolbar.shared.ts +0 -44
  925. package/src/layouts/stack-utils/StackToolbar.tsx +0 -134
  926. package/src/layouts/stack-utils/StackToolbar.types.ts +0 -100
  927. package/src/layouts/stack-utils/StackToolbarImplementation.tsx +0 -39
  928. package/src/layouts/stack-utils/__tests__/StackToolbar.test.tsx +0 -70
  929. package/src/native-tabs.ts +0 -1
  930. package/src/stack-toolbar-implementation.ts +0 -8
  931. package/src/ui/Slot.web.tsx +0 -9
  932. package/src/ui/TabList.web.tsx +0 -27
  933. package/src/ui/TabSlot.web.tsx +0 -90
  934. package/src/ui/TabTrigger.web.tsx +0 -71
  935. package/src/ui/Tabs.web.tsx +0 -40
  936. package/src/views/OneStackRouter.tsx +0 -75
  937. package/types/layouts/NativeTabs.d.ts +0 -8
  938. package/types/layouts/NativeTabs.d.ts.map +0 -1
  939. package/types/layouts/NativeTabs.test.d.ts +0 -2
  940. package/types/layouts/NativeTabs.test.d.ts.map +0 -1
  941. package/types/layouts/stack-utils/StackToolbar.d.ts +0 -28
  942. package/types/layouts/stack-utils/StackToolbar.d.ts.map +0 -1
  943. package/types/layouts/stack-utils/StackToolbar.shared.d.ts +0 -5
  944. package/types/layouts/stack-utils/StackToolbar.shared.d.ts.map +0 -1
  945. package/types/layouts/stack-utils/StackToolbar.types.d.ts +0 -83
  946. package/types/layouts/stack-utils/StackToolbar.types.d.ts.map +0 -1
  947. package/types/layouts/stack-utils/StackToolbarImplementation.d.ts +0 -12
  948. package/types/layouts/stack-utils/StackToolbarImplementation.d.ts.map +0 -1
  949. package/types/native-tabs.d.ts +0 -2
  950. package/types/native-tabs.d.ts.map +0 -1
  951. package/types/stack-toolbar-implementation.d.ts +0 -3
  952. package/types/stack-toolbar-implementation.d.ts.map +0 -1
  953. package/types/ui/Slot.web.d.ts +0 -5
  954. package/types/ui/Slot.web.d.ts.map +0 -1
  955. package/types/ui/TabList.web.d.ts +0 -11
  956. package/types/ui/TabList.web.d.ts.map +0 -1
  957. package/types/ui/TabSlot.web.d.ts +0 -24
  958. package/types/ui/TabSlot.web.d.ts.map +0 -1
  959. package/types/ui/TabTrigger.web.d.ts +0 -11
  960. package/types/ui/TabTrigger.web.d.ts.map +0 -1
  961. package/types/ui/Tabs.web.d.ts +0 -10
  962. package/types/ui/Tabs.web.d.ts.map +0 -1
  963. package/types/views/OneStackRouter.d.ts +0 -3
  964. 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', () => {
@@ -1,4 +1,5 @@
1
1
  import { stripBaseUrl } from '../fork/getStateFromPath-mods'
2
+ import { stripPathSuffix } from './path'
2
3
 
3
4
  type SearchParams = Record<string, string | string[]>
4
5
 
@@ -21,7 +22,7 @@ export function getNormalizedStatePath(
21
22
  },
22
23
  baseUrl?: string
23
24
  ): Pick<UrlObject, 'segments' | 'params'> {
24
- const [pathname] = statePath.split('?')
25
+ const pathname = stripPathSuffix(statePath)
25
26
  return {
26
27
  // Strip empty path at the start
27
28
  segments: stripBaseUrl(pathname, baseUrl)
@@ -0,0 +1,54 @@
1
+ import { describe, expect, it } from 'vitest'
2
+ import { getRouteInfoFromState } from './getRouteInfo'
3
+
4
+ // a hash link (/dev#stack) keeps its hash in the serialized path; route info
5
+ // must still report the bare pathname or the router never sees the pending
6
+ // navigation land and serializes the stale state to history
7
+ describe('getRouteInfoFromState', () => {
8
+ const state = {
9
+ routes: [{ name: 'dev', path: '/dev#stack', params: { '#': 'stack' } }],
10
+ } as any
11
+
12
+ it('drops the hash from pathname and segments', () => {
13
+ const info = getRouteInfoFromState(
14
+ (_state, asPath) => ({
15
+ path: asPath ? '/(site)/dev#stack' : '/dev#stack',
16
+ params: { '#': 'stack' },
17
+ }),
18
+ state
19
+ )
20
+ expect(info.pathname).toBe('/dev')
21
+ expect(info.segments).toEqual(['(site)', 'dev'])
22
+ expect(info.unstable_globalHref).toBe('/dev#stack')
23
+ })
24
+
25
+ it('drops the query and the hash together', () => {
26
+ const info = getRouteInfoFromState(
27
+ () => ({ path: '/dev?x=1#stack', params: { x: '1', '#': 'stack' } }),
28
+ state
29
+ )
30
+ expect(info.pathname).toBe('/dev')
31
+ expect(info.segments).toEqual(['dev'])
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
+ })
54
+ })
@@ -5,6 +5,7 @@ import type { OneRouter } from '../interfaces/router'
5
5
  import { getNormalizedStatePath, type UrlObject } from './getNormalizedStatePath'
6
6
  import { isIndexPath } from './isIndexPath'
7
7
  import { getResolvedLinking } from './linkingConfig'
8
+ import { stripPathSuffix } from './path'
8
9
 
9
10
  export function getRouteInfo(state: OneRouter.ResultState) {
10
11
  return getRouteInfoFromState(
@@ -20,7 +21,7 @@ export function getRouteInfo(state: OneRouter.ResultState) {
20
21
  )
21
22
  }
22
23
 
23
- function getRouteInfoFromState(
24
+ export function getRouteInfoFromState(
24
25
  getPathFromState: (state: State, asPath: boolean) => { path: string; params: any },
25
26
  state: State,
26
27
  baseUrl?: string
@@ -30,7 +31,9 @@ function getRouteInfoFromState(
30
31
 
31
32
  return {
32
33
  unstable_globalHref: path,
33
- pathname: stripBaseUrl(path, baseUrl).split('?')[0],
34
+ // a hash href serializes as /page#section; the pathname the router compares
35
+ // against pending navigation and the URL must drop the hash as well as the query
36
+ pathname: stripPathSuffix(stripBaseUrl(path, baseUrl)),
34
37
  isIndex: isIndexPath(state),
35
38
  ...getNormalizedStatePath(qualified, baseUrl),
36
39
  }
@@ -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) {
@@ -1,6 +1,6 @@
1
1
  import { stripBaseUrl } from '../fork/getStateFromPath-mods'
2
2
 
3
- function stripPathSuffix(path: string): string {
3
+ export function stripPathSuffix(path: string): string {
4
4
  const queryIndex = path.indexOf('?')
5
5
  const hashIndex = path.indexOf('#')
6
6
  let end = path.length
@@ -25,35 +25,48 @@ describe('routeHmr.native', () => {
25
25
  expect(typeof globalThis.__VXRN_ON_MODULE_UPDATED__).toBe('function')
26
26
  })
27
27
 
28
- it('bumps the epoch and notifies subscribers, and stops after unsubscribe', () => {
28
+ it('does not bump the epoch, so Fast Refresh can keep the mounted route', () => {
29
29
  const before = routeHmr.getRouteHmrEpoch()
30
30
  const listener = vi.fn()
31
31
  const unsubscribe = routeHmr.subscribeRouteHmr(listener)
32
32
 
33
33
  globalThis.__VXRN_ON_MODULE_UPDATED__!('app/index.tsx')
34
- expect(routeHmr.getRouteHmrEpoch()).toBe(before + 1)
35
- expect(listener).toHaveBeenCalledTimes(1)
34
+ expect(routeHmr.getRouteHmrEpoch()).toBe(before)
35
+ expect(listener).not.toHaveBeenCalled()
36
36
 
37
37
  unsubscribe()
38
- globalThis.__VXRN_ON_MODULE_UPDATED__!('app/index.tsx')
39
- expect(listener).toHaveBeenCalledTimes(1)
40
38
  })
41
39
 
42
40
  it('evicts the route cache for the updated file when window.__oneRouteCache is present', () => {
43
- const clearFile = vi.fn()
41
+ const clearFile = vi.fn(() => true)
44
42
  ;(globalThis as any).window = { __oneRouteCache: { clearFile } }
45
43
  globalThis.__VXRN_ON_MODULE_UPDATED__!('app/_layout.tsx')
46
44
  expect(clearFile).toHaveBeenCalledWith('app/_layout.tsx')
47
45
  })
48
46
 
47
+ it('does not bump the epoch for a non-route module either', () => {
48
+ const before = routeHmr.getRouteHmrEpoch()
49
+ const listener = vi.fn()
50
+ const unsubscribe = routeHmr.subscribeRouteHmr(listener)
51
+ ;(globalThis as any).window = {
52
+ __oneRouteCache: { clearFile: () => false },
53
+ }
54
+
55
+ globalThis.__VXRN_ON_MODULE_UPDATED__!('features/onboarding/HmrProbeChild.tsx')
56
+ expect(routeHmr.getRouteHmrEpoch()).toBe(before)
57
+ expect(listener).not.toHaveBeenCalled()
58
+ unsubscribe()
59
+ })
60
+
49
61
  it('does not throw when window / route cache is absent', () => {
50
62
  ;(globalThis as any).window = undefined
51
63
  expect(() => globalThis.__VXRN_ON_MODULE_UPDATED__!('x.tsx')).not.toThrow()
52
64
  })
53
65
 
54
- it('still notifies subscribers when route-cache eviction throws', () => {
66
+ it('does not throw or bump the epoch when route-cache eviction throws', () => {
55
67
  const listener = vi.fn()
56
68
  const unsubscribe = routeHmr.subscribeRouteHmr(listener)
69
+ const before = routeHmr.getRouteHmrEpoch()
57
70
  ;(globalThis as any).window = {
58
71
  __oneRouteCache: {
59
72
  clearFile() {
@@ -62,10 +75,9 @@ describe('routeHmr.native', () => {
62
75
  },
63
76
  }
64
77
 
65
- expect(() => globalThis.__VXRN_ON_MODULE_UPDATED__!('app/index.tsx')).toThrow(
66
- 'cache eviction failed'
67
- )
68
- expect(listener).toHaveBeenCalledOnce()
78
+ expect(() => globalThis.__VXRN_ON_MODULE_UPDATED__!('app/index.tsx')).not.toThrow()
79
+ expect(routeHmr.getRouteHmrEpoch()).toBe(before)
80
+ expect(listener).not.toHaveBeenCalled()
69
81
  unsubscribe()
70
82
  })
71
83
  })
@@ -1,7 +1,10 @@
1
1
  // native Fast Refresh for One routes
2
2
  //
3
3
  // vxrn calls the global hook after committing an updated module. One evicts that
4
- // route and bumps this external-store epoch so mounted screens load fresh exports.
4
+ // route from the loader cache so the next loadRoute() sees fresh exports. it
5
+ // does not bump the epoch: ScreenComponent re-running loadRoute() would render a
6
+ // new function identity and remount the route, which is what made
7
+ // `generation:1` jump to `generation:2` when a route file was Fast Refreshed.
5
8
 
6
9
  declare global {
7
10
  // vxrn's native HMR runtime invokes this (when defined) with each committed
@@ -29,9 +32,8 @@ if (process.env.NODE_ENV === 'development') {
29
32
  if (typeof routeCache?.clearFile === 'function') {
30
33
  routeCache.clearFile(id)
31
34
  }
32
- } finally {
33
- routeHmrEpoch++
34
- routeHmrListeners.forEach((listener) => listener())
35
+ } catch (error) {
36
+ console.error('[one] route cache eviction failed', error)
35
37
  }
36
38
  }
37
39
  }
@@ -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`