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
@@ -13,27 +13,19 @@ import {
13
13
  getStateFromPath,
14
14
  type NavigationContainerProps,
15
15
  type NavigationContainerRef,
16
- type NavigationState,
17
16
  type ParamListBase,
18
17
  ThemeProvider,
19
18
  validatePathConfig,
20
19
  } from '@react-navigation/core'
21
20
  // @modified - start
22
- // import { LinkingContext } from './LinkingContext'
23
- // import { LocaleDirContext } from './LocaleDirContext'
24
- // import { DefaultTheme } from './theming/DefaultTheme'
25
- // import type { DocumentTitleOptions, LinkingOptions, LocaleDirection } from './types'
26
- // import { UnhandledLinkingContext } from './UnhandledLinkingContext'
27
21
  import {
28
22
  type DocumentTitleOptions,
29
23
  LinkingContext,
30
24
  type LinkingOptions,
31
25
  LocaleDirContext,
32
26
  type LocaleDirection,
33
- UNSTABLE_UnhandledLinkingContext as UnhandledLinkingContext,
34
27
  } from '@react-navigation/native'
35
28
  import * as React from 'react'
36
- import useLatestCallback from 'use-latest-callback'
37
29
  // @modified - end
38
30
  import { getLocaleDirection } from './localeDirection'
39
31
  import { DefaultTheme } from './theme'
@@ -42,16 +34,8 @@ import { useDocumentTitle } from './useDocumentTitle'
42
34
  import { useLinking } from './useLinking'
43
35
  import { useThenable } from './useThenable'
44
36
 
45
- declare global {
46
- // eslint-disable-next-line no-var
47
- // @ts-ignore - Type differs between react-navigation versions
48
- var REACT_NAVIGATION_DEVTOOLS: WeakMap<
49
- NavigationContainerRef<any>,
50
- { readonly linking: LinkingOptions<any> }
51
- >
52
- }
53
-
54
- globalThis.REACT_NAVIGATION_DEVTOOLS = new WeakMap()
37
+ // @ts-ignore - v8 declares this with listeners field, we use a simplified version
38
+ globalThis.REACT_NAVIGATION_DEVTOOLS ??= new WeakMap()
55
39
 
56
40
  type Props<ParamList extends {}> = NavigationContainerProps & {
57
41
  direction?: LocaleDirection
@@ -83,7 +67,6 @@ function NavigationContainerInner(
83
67
  linking,
84
68
  fallback = null,
85
69
  documentTitle,
86
- onReady,
87
70
  onStateChange,
88
71
  ...rest
89
72
  }: Props<ParamListBase>,
@@ -100,62 +83,38 @@ function NavigationContainerInner(
100
83
  useBackButton(refContainer)
101
84
  useDocumentTitle(refContainer, documentTitle)
102
85
 
103
- const [lastUnhandledLink, setLastUnhandledLink] = React.useState<string | undefined>()
104
-
105
- const { getInitialState } = useLinking(
106
- refContainer,
107
- {
108
- enabled: isLinkingEnabled,
109
- prefixes: [],
110
- ...linking,
111
- },
112
- setLastUnhandledLink
113
- )
114
-
115
- const linkingContext = React.useMemo(() => ({ options: linking }), [linking])
116
-
117
- const unhandledLinkingContext = React.useMemo(
118
- () => ({ lastUnhandledLink, setLastUnhandledLink }),
119
- [lastUnhandledLink, setLastUnhandledLink]
120
- )
121
-
122
- const onReadyForLinkingHandling = useLatestCallback(() => {
123
- const path = refContainer.current?.getCurrentRoute()?.path
124
- setLastUnhandledLink((previousLastUnhandledLink) => {
125
- if (previousLastUnhandledLink === path) {
126
- return undefined
127
- }
128
- return previousLastUnhandledLink
129
- })
130
- onReady?.()
86
+ const { getInitialState } = useLinking(refContainer, {
87
+ enabled: isLinkingEnabled,
88
+ prefixes: [],
89
+ ...linking,
131
90
  })
132
91
 
133
- const onStateChangeForLinkingHandling = useLatestCallback(
134
- (state: Readonly<NavigationState> | undefined) => {
135
- const path = refContainer.current?.getCurrentRoute()?.path
136
- setLastUnhandledLink((previousLastUnhandledLink) => {
137
- if (previousLastUnhandledLink === path) {
138
- return undefined
139
- }
140
- return previousLastUnhandledLink
141
- })
142
- onStateChange?.(state)
143
- }
92
+ // @modified - v8 pre-processes linking options into context value
93
+ const linkingContext = React.useMemo(
94
+ () => ({
95
+ options: {
96
+ ...linking,
97
+ enabled: isLinkingEnabled,
98
+ prefixes: linking?.prefixes ?? [],
99
+ getStateFromPath: linking?.getStateFromPath ?? getStateFromPath,
100
+ getPathFromState: linking?.getPathFromState ?? getPathFromState,
101
+ getActionFromState: linking?.getActionFromState ?? getActionFromState,
102
+ },
103
+ }),
104
+ [linking, isLinkingEnabled]
144
105
  )
145
106
 
146
107
  React.useEffect(() => {
147
108
  if (refContainer.current) {
148
- // @ts-ignore - Type differs between react-navigation versions in monorepo
109
+ const previous = REACT_NAVIGATION_DEVTOOLS.get(refContainer.current)
110
+ const listeners = (previous as any)?.listeners ?? new Set()
111
+
149
112
  REACT_NAVIGATION_DEVTOOLS.set(refContainer.current, {
150
113
  get linking() {
151
- return {
152
- ...linking,
153
- enabled: isLinkingEnabled,
154
- prefixes: linking?.prefixes ?? [],
155
- getStateFromPath: linking?.getStateFromPath ?? getStateFromPath,
156
- getPathFromState: linking?.getPathFromState ?? getPathFromState,
157
- getActionFromState: linking?.getActionFromState ?? getActionFromState,
158
- }
114
+ return linkingContext.options
115
+ },
116
+ get listeners() {
117
+ return listeners
159
118
  },
160
119
  })
161
120
  }
@@ -181,24 +140,21 @@ function NavigationContainerInner(
181
140
 
182
141
  return (
183
142
  <LocaleDirContext.Provider value={direction}>
184
- <UnhandledLinkingContext.Provider value={unhandledLinkingContext}>
185
- <LinkingContext.Provider value={linkingContext}>
186
- <BaseNavigationContainer
187
- {...rest}
188
- theme={theme}
189
- onReady={onReadyForLinkingHandling}
190
- onStateChange={onStateChangeForLinkingHandling}
191
- initialState={rest.initialState == null ? initialState : rest.initialState}
192
- ref={refContainer}
193
- />
194
- </LinkingContext.Provider>
195
- </UnhandledLinkingContext.Provider>
143
+ <LinkingContext.Provider value={linkingContext}>
144
+ <BaseNavigationContainer
145
+ {...rest}
146
+ theme={theme}
147
+ onStateChange={onStateChange}
148
+ initialState={rest.initialState == null ? initialState : rest.initialState}
149
+ ref={refContainer}
150
+ />
151
+ </LinkingContext.Provider>
196
152
  </LocaleDirContext.Provider>
197
153
  )
198
154
  }
199
155
 
200
156
  export const NavigationContainer = React.forwardRef(NavigationContainerInner) as <
201
- RootParamList extends {} = ReactNavigation.RootParamList,
157
+ RootParamList extends {} = ParamListBase,
202
158
  >(
203
159
  props: Props<RootParamList> & {
204
160
  ref?: React.Ref<NavigationContainerRef<RootParamList>>
@@ -427,14 +427,14 @@ const createConfigItem = (
427
427
  ? joinPaths(parentPattern || '', config.path || '')
428
428
  : config.path || ''
429
429
 
430
- const screens = config.screens
431
- ? createNormalizedConfigs(config.screens, pattern)
430
+ const screens = (config as any).screens
431
+ ? createNormalizedConfigs((config as any).screens, pattern)
432
432
  : undefined
433
433
 
434
434
  return {
435
435
  // Normalize pattern to remove any leading, trailing slashes, duplicate slashes etc.
436
436
  pattern: pattern?.split('/').filter(Boolean).join('/'),
437
- stringify: config.stringify,
437
+ stringify: config.stringify as StringifyConfig | undefined,
438
438
  screens,
439
439
  }
440
440
  }
@@ -66,22 +66,18 @@ async function captureIncomingAction(overrides: LinkingOverrides = {}) {
66
66
  const ref = { current: navigation }
67
67
 
68
68
  function Harness() {
69
- useLinking(
70
- ref as any,
71
- {
72
- ...linking,
73
- enabled: true,
74
- prefixes: ['contrast:///'],
75
- getInitialURL: () => null,
76
- getStateFromPath: () => linkedState,
77
- subscribe: (nextListener) => {
78
- listener = nextListener
79
- return () => {}
80
- },
81
- ...overrides,
69
+ useLinking(ref as any, {
70
+ ...linking,
71
+ enabled: true,
72
+ prefixes: ['contrast:///'],
73
+ getInitialURL: () => null,
74
+ getStateFromPath: () => linkedState,
75
+ subscribe: (nextListener) => {
76
+ listener = nextListener
77
+ return () => {}
82
78
  },
83
- () => {}
84
- )
79
+ ...overrides,
80
+ })
85
81
  return null
86
82
  }
87
83
 
@@ -23,7 +23,7 @@ type ResultState = ReturnType<typeof getStateFromPathDefault>
23
23
 
24
24
  type Options = LinkingOptions<ParamListBase>
25
25
 
26
- const linkingHandlers: symbol[] = []
26
+ const linkingHandlers = new Set<symbol>()
27
27
 
28
28
  // @modified: custom getActionFromState functions have received keyless routes
29
29
  // since One added deterministic hydration keys. preserve that contract; the
@@ -80,8 +80,7 @@ export function useLinking(
80
80
  },
81
81
  getStateFromPath = getStateFromPathDefault,
82
82
  getActionFromState = getActionFromStateDefault,
83
- }: Options,
84
- onUnhandledLinking: (lastUnhandledLining: string | undefined) => void
83
+ }: Options
85
84
  ) {
86
85
  const independent = useNavigationIndependentTree()
87
86
 
@@ -96,8 +95,8 @@ export function useLinking(
96
95
 
97
96
  // @modified - start: reduce spurious warnings on android where activity recreation
98
97
  // causes remounts, and only warn when there are truly multiple handlers
99
- if (enabled !== false && linkingHandlers.length && Platform.OS !== 'android') {
100
- if (linkingHandlers.length > 1) {
98
+ if (enabled !== false && linkingHandlers.size && Platform.OS !== 'android') {
99
+ if (linkingHandlers.size > 1) {
101
100
  console.error(
102
101
  [
103
102
  'Looks like you have configured linking in multiple places. This is likely an error since deep links should only be handled in one place to avoid conflicts. Make sure that:',
@@ -114,15 +113,11 @@ export function useLinking(
114
113
  const handler = Symbol()
115
114
 
116
115
  if (enabled !== false) {
117
- linkingHandlers.push(handler)
116
+ linkingHandlers.add(handler)
118
117
  }
119
118
 
120
119
  return () => {
121
- const index = linkingHandlers.indexOf(handler)
122
-
123
- if (index > -1) {
124
- linkingHandlers.splice(index, 1)
125
- }
120
+ linkingHandlers.delete(handler)
126
121
  }
127
122
  }, [enabled, independent])
128
123
 
@@ -152,7 +147,7 @@ export function useLinking(
152
147
  return undefined
153
148
  }
154
149
 
155
- const path = extractPathFromURL(prefixesRef.current, url)
150
+ const path = extractPathFromURL((prefixesRef.current ?? []) as string[], url)
156
151
 
157
152
  return path !== undefined
158
153
  ? getStateFromPathRef.current(path, configRef.current)
@@ -168,17 +163,8 @@ export function useLinking(
168
163
  if (url != null) {
169
164
  if (typeof url !== 'string') {
170
165
  return url.then((url) => {
171
- const state = getStateFromURL(url)
172
-
173
- if (typeof url === 'string') {
174
- // If the link were handled, it gets cleared in NavigationContainer
175
- onUnhandledLinking(extractPathFromURL(prefixes, url))
176
- }
177
-
178
- return state
166
+ return getStateFromURL(url)
179
167
  })
180
- } else {
181
- onUnhandledLinking(extractPathFromURL(prefixes, url))
182
168
  }
183
169
  }
184
170
 
@@ -196,7 +182,7 @@ export function useLinking(
196
182
  }
197
183
 
198
184
  return thenable as PromiseLike<ResultState | undefined>
199
- }, [getStateFromURL, onUnhandledLinking, prefixes])
185
+ }, [getStateFromURL])
200
186
 
201
187
  React.useEffect(() => {
202
188
  const listener = (url: string) => {
@@ -208,8 +194,6 @@ export function useLinking(
208
194
  const state = navigation ? getStateFromURL(url) : undefined
209
195
 
210
196
  if (navigation && state) {
211
- // If the link were handled, it gets cleared in NavigationContainer
212
- onUnhandledLinking(extractPathFromURL(prefixes, url))
213
197
  const rootState = navigation.getRootState()
214
198
  if (state.routes.some((r) => !rootState?.routeNames?.includes(r.name))) {
215
199
  return
@@ -219,7 +203,9 @@ export function useLinking(
219
203
  // links get the same nested param propagation as imperative navigation.
220
204
  const action =
221
205
  getActionFromStateRef.current === getActionFromStateDefault
222
- ? getNavigateAction(state, rootState)
206
+ ? rootState
207
+ ? getNavigateAction(state, rootState)
208
+ : undefined
223
209
  : getActionFromStateRef.current(stripRouteKeys(state), configRef.current)
224
210
 
225
211
  if (action !== undefined) {
@@ -241,7 +227,7 @@ export function useLinking(
241
227
  }
242
228
 
243
229
  return subscribe(listener)
244
- }, [enabled, getStateFromURL, onUnhandledLinking, prefixes, ref, subscribe])
230
+ }, [enabled, getStateFromURL, ref, subscribe])
245
231
 
246
232
  return {
247
233
  getInitialState,
@@ -68,7 +68,7 @@ const getPartialState = (state: any): any => {
68
68
  // routes.length but the focused route's nested navigator gained or lost
69
69
  // entries. that nested change is what determines push vs replace.
70
70
  function getFocusedRouteDepth(state: NavigationState): number {
71
- const length = state.history ? state.history.length : state.routes.length
71
+ const length = getTotalHistoryLength(state)
72
72
  const focusedRoute = state.routes[state.index]
73
73
  const child = focusedRoute?.state as NavigationState | undefined
74
74
  if (child) {
@@ -77,6 +77,15 @@ function getFocusedRouteDepth(state: NavigationState): number {
77
77
  return length
78
78
  }
79
79
 
80
+ const getTotalHistoryLength = (state: NavigationState): number => {
81
+ const activeRoutes = state.routes.slice(0, state.index + 1)
82
+ const baseHistoryLength = state.history ? state.history.length : activeRoutes.length
83
+ const routeHistoryLength = activeRoutes.reduce((acc, r) => {
84
+ return acc + (r.history ? r.history.length : 0)
85
+ }, 0)
86
+ return baseHistoryLength + routeHistoryLength
87
+ }
88
+
80
89
  function getDynamicParamNames(routeName: string): string[] {
81
90
  return Array.from(routeName.matchAll(/\[(?:\.\.\.)?([^\]]+)\]/g), (match) => match[1])
82
91
  }
@@ -113,9 +122,8 @@ const findMatchingState = <T extends NavigationState>(
113
122
  return [undefined, undefined]
114
123
  }
115
124
 
116
- // Tab and drawer will have `history` property, but stack will have history in `routes`
117
- const aHistoryLength = a.history ? a.history.length : a.routes.length
118
- const bHistoryLength = b.history ? b.history.length : b.routes.length
125
+ const aHistoryLength = getTotalHistoryLength(a)
126
+ const bHistoryLength = getTotalHistoryLength(b)
119
127
 
120
128
  const aRoute = a.routes[a.index]
121
129
  const bRoute = b.routes[b.index]
@@ -124,16 +132,18 @@ const findMatchingState = <T extends NavigationState>(
124
132
  const bChildState = bRoute.state as T | undefined
125
133
 
126
134
  // Stop here if this is the state object that changed:
127
- // - history length is different
135
+ // - total history length is different (including route.history)
128
136
  // - focused routes are different
129
137
  // - one of them doesn't have child state
130
138
  // - child state keys are different
139
+ // - route history length is different
131
140
  if (
132
141
  aHistoryLength !== bHistoryLength ||
133
142
  aRoute.key !== bRoute.key ||
134
143
  aChildState === undefined ||
135
144
  bChildState === undefined ||
136
- aChildState.key !== bChildState.key
145
+ aChildState.key !== bChildState.key ||
146
+ (aRoute.history?.length || 0) !== (bRoute.history?.length || 0)
137
147
  ) {
138
148
  return [a, b]
139
149
  }
@@ -153,7 +163,7 @@ export const series = (cb: () => Promise<void>) => {
153
163
  return callback
154
164
  }
155
165
 
156
- const linkingHandlers: symbol[] = []
166
+ const linkingHandlers = new Set<symbol>()
157
167
 
158
168
  type Options = LinkingOptions<ParamListBase>
159
169
 
@@ -165,8 +175,7 @@ export function useLinking(
165
175
  getStateFromPath = getStateFromPathDefault,
166
176
  getPathFromState = getPathFromStateDefault,
167
177
  getActionFromState = getActionFromStateDefault,
168
- }: Options,
169
- onUnhandledLinking: (lastUnhandledLining: string | undefined) => void
178
+ }: Options
170
179
  ) {
171
180
  // @modified - SSR fast path: skip all client-only linking logic
172
181
  // on the server, initialState is already computed and passed as a prop
@@ -198,7 +207,7 @@ export function useLinking(
198
207
  return undefined
199
208
  }
200
209
 
201
- if (enabled !== false && linkingHandlers.length) {
210
+ if (enabled !== false && linkingHandlers.size) {
202
211
  console.error(
203
212
  [
204
213
  'Looks like you have configured linking in multiple places. This is likely an error since deep links should only be handled in one place to avoid conflicts. Make sure that:',
@@ -213,15 +222,11 @@ export function useLinking(
213
222
  const handler = Symbol()
214
223
 
215
224
  if (enabled !== false) {
216
- linkingHandlers.push(handler)
225
+ linkingHandlers.add(handler)
217
226
  }
218
227
 
219
228
  return () => {
220
- const index = linkingHandlers.indexOf(handler)
221
-
222
- if (index > -1) {
223
- linkingHandlers.splice(index, 1)
224
- }
229
+ linkingHandlers.delete(handler)
225
230
  }
226
231
  }, [enabled, independent])
227
232
 
@@ -318,8 +323,7 @@ export function useLinking(
318
323
  value = getStateFromPathRef.current(path, configRef.current)
319
324
  }
320
325
 
321
- // If the link were handled, it gets cleared in NavigationContainer
322
- onUnhandledLinking(path)
326
+ // v8: unhandled link tracking removed
323
327
  }
324
328
 
325
329
  const thenable = {
@@ -417,8 +421,7 @@ export function useLinking(
417
421
  // We should only dispatch an action when going forward
418
422
  // Otherwise the action will likely add items to history, which would mess things up
419
423
  if (state) {
420
- // If the link were handled, it gets cleared in NavigationContainer
421
- onUnhandledLinking(path)
424
+ // v8: unhandled link tracking removed
422
425
  // Make sure that the routes in the state exist in the root navigator
423
426
  // Otherwise there's an error in the linking configuration
424
427
  if (validateRoutesNotExistInRootState(state)) {
@@ -472,7 +475,7 @@ export function useLinking(
472
475
  navigation.resetRoot(state)
473
476
  }
474
477
  })
475
- }, [enabled, history, onUnhandledLinking, ref, validateRoutesNotExistInRootState])
478
+ }, [enabled, history, ref, validateRoutesNotExistInRootState])
476
479
 
477
480
  React.useEffect(() => {
478
481
  if (!enabled) {
@@ -23,6 +23,7 @@ export function validatePathConfig(config: unknown, root = true) {
23
23
  ...(root
24
24
  ? null
25
25
  : {
26
+ alias: 'array',
26
27
  exact: 'boolean',
27
28
  stringify: 'object',
28
29
  parse: 'object',
@@ -39,11 +40,17 @@ export function validatePathConfig(config: unknown, root = true) {
39
40
  Object.keys(config)
40
41
  .map((key) => {
41
42
  if (key in validation) {
42
- const type = validation[key as keyof typeof validation] as string
43
- const value: string = config[key]
43
+ const type = validation[key as keyof typeof validation]
44
+ const value = (config as any)[key]
44
45
 
45
- if (value !== undefined && typeof value !== type) {
46
- return [key, `expected '${type}', got '${typeof value}'`]
46
+ if (value !== undefined) {
47
+ if (type === 'array') {
48
+ if (!Array.isArray(value)) {
49
+ return [key, `expected 'Array', got '${typeof value}'`]
50
+ }
51
+ } else if (typeof value !== type) {
52
+ return [key, `expected '${type}', got '${typeof value}'`]
53
+ }
47
54
  }
48
55
  } else {
49
56
  return [key, 'extraneous']
@@ -1,6 +1,8 @@
1
- import { matchDynamicName } from './router/matchers'
1
+ import { getContextKey, matchDynamicName } from './router/matchers'
2
2
  import type { RouteNode } from './router/Route'
3
3
 
4
+ const layoutRouteNamePrefix = '__one_layout:'
5
+
4
6
  export type Screen =
5
7
  | string
6
8
  | {
@@ -49,6 +51,84 @@ function parseRouteSegments(segments: string): string {
49
51
  )
50
52
  }
51
53
 
54
+ function hasDescendantWithRoute(node: RouteNode, route: string): boolean {
55
+ return node.children.some(
56
+ (child) => child.route === route || hasDescendantWithRoute(child, route)
57
+ )
58
+ }
59
+
60
+ export function getReactNavigationRouteName(node: RouteNode): string {
61
+ if (node.children.length && hasDescendantWithRoute(node, node.route)) {
62
+ return `${layoutRouteNamePrefix}${node.contextKey}`
63
+ }
64
+ return node.route
65
+ }
66
+
67
+ type PartialNavigationState = {
68
+ index?: number
69
+ routes: Array<{ name: string; state?: PartialNavigationState }>
70
+ }
71
+
72
+ function focusedRoute(state: PartialNavigationState) {
73
+ return state.routes[state.index ?? state.routes.length - 1]
74
+ }
75
+
76
+ export function resolveInitialRouteNameFromState(
77
+ contextKey: string,
78
+ state: PartialNavigationState | undefined
79
+ ): string | undefined {
80
+ const contextSegments = contextKey.split('/').filter(Boolean)
81
+ let current = state
82
+ let consumedSegments = 0
83
+
84
+ while (consumedSegments < contextSegments.length) {
85
+ if (!current?.routes.length) return undefined
86
+ const route = focusedRoute(current)
87
+ if (!route?.state) return undefined
88
+
89
+ if (route.name.startsWith(layoutRouteNamePrefix)) {
90
+ const routeContextSegments = getContextKey(
91
+ route.name.slice(layoutRouteNamePrefix.length)
92
+ )
93
+ .split('/')
94
+ .filter(Boolean)
95
+
96
+ if (
97
+ routeContextSegments.length <= consumedSegments ||
98
+ routeContextSegments.join('/') !==
99
+ contextSegments.slice(0, routeContextSegments.length).join('/')
100
+ ) {
101
+ return undefined
102
+ }
103
+ consumedSegments = routeContextSegments.length
104
+ } else {
105
+ const routeSegments = route.name.split('/').filter(Boolean)
106
+ if (
107
+ route.name !==
108
+ contextSegments
109
+ .slice(consumedSegments, consumedSegments + routeSegments.length)
110
+ .join('/')
111
+ ) {
112
+ return undefined
113
+ }
114
+ consumedSegments += routeSegments.length
115
+ }
116
+
117
+ current = route.state
118
+ }
119
+
120
+ return current?.routes.length ? focusedRoute(current)?.name : undefined
121
+ }
122
+
123
+ function getReactNavigationInitialRouteName(
124
+ nodes: RouteNode[],
125
+ initialRouteName: string | undefined
126
+ ): string | undefined {
127
+ if (!initialRouteName) return undefined
128
+ const initialRoute = nodes.find((node) => node.route === initialRouteName)
129
+ return initialRoute ? getReactNavigationRouteName(initialRoute) : initialRouteName
130
+ }
131
+
52
132
  function convertRouteNodeToScreen(node: RouteNode, metaOnly: boolean): Screen {
53
133
  const path = parseRouteSegments(node.route)
54
134
 
@@ -72,7 +152,10 @@ function convertRouteNodeToScreen(node: RouteNode, metaOnly: boolean): Screen {
72
152
  // to be loaded into memory. We should move towards a system where
73
153
  // the initial route name is either loaded asynchronously in the Layout Route
74
154
  // or defined via a file system convention.
75
- initialRouteName: node.initialRouteName,
155
+ initialRouteName: getReactNavigationInitialRouteName(
156
+ node.children,
157
+ node.initialRouteName
158
+ ),
76
159
  }
77
160
 
78
161
  if (!metaOnly) {
@@ -87,7 +170,13 @@ function getReactNavigationScreensConfig(
87
170
  metaOnly: boolean
88
171
  ): Record<string, Screen> {
89
172
  return Object.fromEntries(
90
- nodes.map((node) => [node.route, convertRouteNodeToScreen(node, metaOnly)] as const)
173
+ nodes.map(
174
+ (node) =>
175
+ [
176
+ getReactNavigationRouteName(node),
177
+ convertRouteNodeToScreen(node, metaOnly),
178
+ ] as const
179
+ )
91
180
  )
92
181
  }
93
182
 
@@ -102,7 +191,10 @@ export function getReactNavigationConfig(
102
191
  return { screens: {} }
103
192
  }
104
193
  return {
105
- initialRouteName: routes.initialRouteName,
194
+ initialRouteName: getReactNavigationInitialRouteName(
195
+ routes.children,
196
+ routes.initialRouteName
197
+ ),
106
198
  screens: getReactNavigationScreensConfig(routes.children, metaOnly),
107
199
  }
108
200
  }
@@ -2,11 +2,10 @@ import React from 'react'
2
2
  import TestRenderer, { act } from 'react-test-renderer'
3
3
  import { describe, expect, it } from 'vitest'
4
4
 
5
- import { appendStackToolbarConfig } from '../../layouts/stack-utils/StackToolbar.shared'
6
5
  import { StackStateProvider, useStack, type HeadlessStackDescriptors } from '../useStack'
7
6
 
8
7
  describe('StackStateProvider', () => {
9
- it('hands toolbar config to headless implementations', () => {
8
+ it('hands screen options to headless implementations', () => {
10
9
  let options: Record<string, any> | undefined
11
10
 
12
11
  function Capture() {
@@ -21,14 +20,11 @@ describe('StackStateProvider', () => {
21
20
  index: 0,
22
21
  routeNames: ['index'],
23
22
  routes: [{ key: 'index-key', name: 'index' }],
24
- preloadedRoutes: [],
23
+ retainedRouteKeys: [],
25
24
  }
26
25
  const descriptors: HeadlessStackDescriptors = {
27
26
  'index-key': {
28
- options: appendStackToolbarConfig(
29
- { title: 'Inbox' },
30
- { placement: 'right', children: 'Share' }
31
- ),
27
+ options: { title: 'Inbox', keepMounted: true },
32
28
  render: () => <div>Inbox</div>,
33
29
  },
34
30
  }
@@ -43,12 +39,7 @@ describe('StackStateProvider', () => {
43
39
 
44
40
  expect(options).toMatchObject({
45
41
  title: 'Inbox',
46
- toolbar: {
47
- right: {
48
- placement: 'right',
49
- children: 'Share',
50
- },
51
- },
42
+ keepMounted: true,
52
43
  })
53
44
  })
54
45
  })