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.
- package/dist/cjs/Root.native.js.map +1 -1
- package/dist/cjs/__mocks__/@react-navigation/native-stack.native.js.map +1 -1
- package/dist/cjs/__mocks__/expo-linking.native.js.map +1 -1
- package/dist/cjs/__mocks__/expo-modules-core.native.js.map +1 -1
- package/dist/cjs/__mocks__/react-native-screens.native.js.map +1 -1
- package/dist/cjs/__tests__/polyfills-mobile.test.native.js.map +1 -1
- package/dist/cjs/babel-plugins/environment-guard.native.js.map +1 -1
- package/dist/cjs/babel-plugins/inline-one-server-url.native.js.map +1 -1
- package/dist/cjs/babel-plugins/one-router-metro.native.js.map +1 -1
- package/dist/cjs/babel-plugins/one-router-metro.test.native.js.map +1 -1
- package/dist/cjs/babel-plugins/remove-server-code.native.js.map +1 -1
- package/dist/cjs/babel-preset/index.native.js.map +1 -1
- package/dist/cjs/babel-preset/index.test.native.js.map +1 -1
- package/dist/cjs/babel-preset/integration.test.native.js.map +1 -1
- package/dist/cjs/cli/build.native.js.map +1 -1
- package/dist/cjs/cli/buildPage.native.js.map +1 -1
- package/dist/cjs/cli/buildPageWorker.native.js.map +1 -1
- package/dist/cjs/cli/checkNodeVersion.native.js.map +1 -1
- package/dist/cjs/cli/daemon.native.js.map +1 -1
- package/dist/cjs/cli/dev.native.js.map +1 -1
- package/dist/cjs/cli/generateBundlerConfig.native.js.map +1 -1
- package/dist/cjs/cli/generateBundlerConfig.test.native.js.map +1 -1
- package/dist/cjs/cli/generateRoutes.native.js.map +1 -1
- package/dist/cjs/cli/generateSitemap.native.js.map +1 -1
- package/dist/cjs/cli/generateSitemap.test.native.js.map +1 -1
- package/dist/cjs/cli/install-error-handlers.native.js.map +1 -1
- package/dist/cjs/cli/label-process.native.js.map +1 -1
- package/dist/cjs/cli/main.native.js.map +1 -1
- package/dist/cjs/cli/patch.native.js.map +1 -1
- package/dist/cjs/cli/patch.test.native.js.map +1 -1
- package/dist/cjs/cli/prebuild.native.js.map +1 -1
- package/dist/cjs/cli/prebuild.test.native.js.map +1 -1
- package/dist/cjs/cli/runAndroid.native.js.map +1 -1
- package/dist/cjs/cli/runIos.native.js.map +1 -1
- package/dist/cjs/cli/securityScan.native.js.map +1 -1
- package/dist/cjs/cli/serverRouteModules.native.js.map +1 -1
- package/dist/cjs/cli/workerPool.native.js.map +1 -1
- package/dist/cjs/cli.native.js.map +1 -1
- package/dist/cjs/clientLoaderResolver.native.js.map +1 -1
- package/dist/cjs/config.native.js.map +1 -1
- package/dist/cjs/constants.native.js.map +1 -1
- package/dist/cjs/constants.test.native.js.map +1 -1
- package/dist/cjs/createAPIRoute.native.js.map +1 -1
- package/dist/cjs/createApp.native.js +25 -1
- package/dist/cjs/createApp.native.js.map +1 -1
- package/dist/cjs/createDevHandleRequest.native.js.map +1 -1
- package/dist/cjs/createHandleRequest.native.js.map +1 -1
- package/dist/cjs/createHandleRequest.test.native.js.map +1 -1
- package/dist/cjs/createMiddleware.native.js.map +1 -1
- package/dist/cjs/daemon/index.native.js.map +1 -1
- package/dist/cjs/daemon/ipc.native.js.map +1 -1
- package/dist/cjs/daemon/picker.native.js.map +1 -1
- package/dist/cjs/daemon/proxy.native.js.map +1 -1
- package/dist/cjs/daemon/registry.native.js.map +1 -1
- package/dist/cjs/daemon/server.native.js.map +1 -1
- package/dist/cjs/daemon/tui.native.js.map +1 -1
- package/dist/cjs/daemon/types.native.js.map +1 -1
- package/dist/cjs/daemon/utils.native.js.map +1 -1
- package/dist/cjs/devtools/registry.native.js.map +1 -1
- package/dist/cjs/drawer.native.js.map +1 -1
- package/dist/cjs/fallbackViews/Sitemap.cjs +1 -1
- package/dist/cjs/fallbackViews/Sitemap.native.js +1 -1
- package/dist/cjs/fallbackViews/Sitemap.native.js.map +1 -1
- package/dist/cjs/fallbackViews/Unmatched.native.js.map +1 -1
- package/dist/cjs/fork/NavigationContainer.cjs +25 -51
- package/dist/cjs/fork/NavigationContainer.native.js +29 -56
- package/dist/cjs/fork/NavigationContainer.native.js.map +1 -1
- package/dist/cjs/fork/__tests__/getPathFromState.test.native.js.map +1 -1
- package/dist/cjs/fork/__tests__/getStateFromPath.test.native.js.map +1 -1
- package/dist/cjs/fork/_shared.native.js.map +1 -1
- package/dist/cjs/fork/createMemoryHistory.native.js.map +1 -1
- package/dist/cjs/fork/createMemoryHistory.test.native.js.map +1 -1
- package/dist/cjs/fork/extractPathFromURL.native.js.map +1 -1
- package/dist/cjs/fork/extractPathFromURL.test.native.js.map +1 -1
- package/dist/cjs/fork/findFocusedRoute.native.js.map +1 -1
- package/dist/cjs/fork/getPathFromState-mods.native.js.map +1 -1
- package/dist/cjs/fork/getPathFromState.native.js.map +1 -1
- package/dist/cjs/fork/getPathFromState.test.native.js.map +1 -1
- package/dist/cjs/fork/getStateFromPath-mods.native.js.map +1 -1
- package/dist/cjs/fork/getStateFromPath.native.js.map +1 -1
- package/dist/cjs/fork/getStateFromPath.test.native.js.map +1 -1
- package/dist/cjs/fork/useLinking.cjs +18 -15
- package/dist/cjs/fork/useLinking.native.js +12 -21
- package/dist/cjs/fork/useLinking.native.js.map +1 -1
- package/dist/cjs/fork/useLinking.native.test.cjs +1 -1
- package/dist/cjs/fork/useLinking.native.test.native.js +1 -1
- package/dist/cjs/fork/useLinking.native.test.native.js.map +1 -1
- package/dist/cjs/fork/useThenable.native.js.map +1 -1
- package/dist/cjs/fork/validatePathConfig.cjs +9 -2
- package/dist/cjs/fork/validatePathConfig.native.js +9 -2
- package/dist/cjs/fork/validatePathConfig.native.js.map +1 -1
- package/dist/cjs/getReactNavigationConfig.cjs +49 -4
- package/dist/cjs/getReactNavigationConfig.native.js +55 -4
- package/dist/cjs/getReactNavigationConfig.native.js.map +1 -1
- package/dist/cjs/getURL.native.test.native.js.map +1 -1
- package/dist/cjs/head/Head.native.js.map +1 -1
- package/dist/cjs/head/HeadModule.native.js.map +1 -1
- package/dist/cjs/head/index.native.js.map +1 -1
- package/dist/cjs/head/types.native.js.map +1 -1
- package/dist/cjs/head/url.native.js.map +1 -1
- package/dist/cjs/headless/Presentations.native.js.map +1 -1
- package/dist/cjs/headless/__tests__/useStack.test.cjs +7 -15
- package/dist/cjs/headless/__tests__/useStack.test.native.js +7 -15
- package/dist/cjs/headless/__tests__/useStack.test.native.js.map +1 -1
- package/dist/cjs/headless/children.native.js.map +1 -1
- package/dist/cjs/headless/keepMounted.native.js.map +1 -1
- package/dist/cjs/headless/types.native.js.map +1 -1
- package/dist/cjs/headless/useDrawer.native.js.map +1 -1
- package/dist/cjs/headless/useStack.cjs +1 -2
- package/dist/cjs/headless/useStack.native.js +1 -2
- package/dist/cjs/headless/useStack.native.js.map +1 -1
- package/dist/cjs/headless/useTabs.native.js.map +1 -1
- package/dist/cjs/headless-server.native.js.map +1 -1
- package/dist/cjs/headless.native.js.map +1 -1
- package/dist/cjs/hooks.native.js.map +1 -1
- package/dist/cjs/hooks.test.native.js.map +1 -1
- package/dist/cjs/href.native.js.map +1 -1
- package/dist/cjs/image/getImageData.native.js.map +1 -1
- package/dist/cjs/image.native.js.map +1 -1
- package/dist/cjs/index.native.js +1 -1
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/interfaces/router.native.js.map +1 -1
- package/dist/cjs/layouts/Drawer.native.js.map +1 -1
- package/dist/cjs/layouts/Stack.cjs +9 -12
- package/dist/cjs/layouts/Stack.native.js +11 -14
- package/dist/cjs/layouts/Stack.native.js.map +1 -1
- package/dist/cjs/layouts/Tabs.native.js +3 -84
- package/dist/cjs/layouts/Tabs.native.js.map +1 -1
- package/dist/cjs/layouts/nativeTabsOptions.cjs +49 -0
- package/dist/cjs/layouts/nativeTabsOptions.native.js +52 -0
- package/dist/cjs/layouts/nativeTabsOptions.native.js.map +1 -0
- package/dist/cjs/layouts/stack-navigator.native.js.map +1 -1
- package/dist/cjs/layouts/stack-utils/StackHeaderBackButton.cjs +4 -1
- package/dist/cjs/layouts/stack-utils/StackHeaderBackButton.native.js +4 -1
- package/dist/cjs/layouts/stack-utils/StackHeaderBackButton.native.js.map +1 -1
- package/dist/cjs/layouts/stack-utils/StackHeaderComponent.native.js.map +1 -1
- package/dist/cjs/layouts/stack-utils/StackHeaderLeft.native.js.map +1 -1
- package/dist/cjs/layouts/stack-utils/StackHeaderRight.native.js.map +1 -1
- package/dist/cjs/layouts/stack-utils/StackHeaderSearchBar.native.js.map +1 -1
- package/dist/cjs/layouts/stack-utils/StackHeaderTitle.cjs +2 -2
- package/dist/cjs/layouts/stack-utils/StackHeaderTitle.native.js +2 -2
- package/dist/cjs/layouts/stack-utils/StackHeaderTitle.native.js.map +1 -1
- package/dist/cjs/layouts/stack-utils/StackScreen.cjs +3 -6
- package/dist/cjs/layouts/stack-utils/StackScreen.native.js +4 -7
- package/dist/cjs/layouts/stack-utils/StackScreen.native.js.map +1 -1
- package/dist/cjs/layouts/stack-utils/__tests__/composition.test.cjs +14 -14
- package/dist/cjs/layouts/stack-utils/__tests__/composition.test.native.js +14 -14
- package/dist/cjs/layouts/stack-utils/__tests__/composition.test.native.js.map +1 -1
- package/dist/cjs/layouts/stack-utils/index.cjs +0 -2
- package/dist/cjs/layouts/stack-utils/index.native.js +0 -2
- package/dist/cjs/layouts/stack-utils/index.native.js.map +1 -1
- package/dist/cjs/layouts/withLayoutContext.cjs +0 -1
- package/dist/cjs/layouts/withLayoutContext.native.js +0 -1
- package/dist/cjs/layouts/withLayoutContext.native.js.map +1 -1
- package/dist/cjs/layouts/withLayoutContext.test.cjs +18 -0
- package/dist/cjs/layouts/withLayoutContext.test.native.js +24 -0
- package/dist/cjs/layouts/withLayoutContext.test.native.js.map +1 -1
- package/dist/cjs/lazyWithRetry.native.js.map +1 -1
- package/dist/cjs/link/Link.native.js.map +1 -1
- package/dist/cjs/link/Redirect.native.js.map +1 -1
- package/dist/cjs/link/Redirect.test.native.js.map +1 -1
- package/dist/cjs/link/getLinking.native.js.map +1 -1
- package/dist/cjs/link/href.native.js.map +1 -1
- package/dist/cjs/link/path.native.js.map +1 -1
- package/dist/cjs/link/prefetchIntent.native.js.map +1 -1
- package/dist/cjs/link/prefetchIntent.test.native.js.map +1 -1
- package/dist/cjs/link/prefetchViewport.native.js.map +1 -1
- package/dist/cjs/link/prefetchViewport.test.native.js.map +1 -1
- package/dist/cjs/link/useLinkTo.native.js.map +1 -1
- package/dist/cjs/link/useLoadedNavigation.native.js.map +1 -1
- package/dist/cjs/metro-config/buildOneMetroResolverOverrides.native.js.map +1 -1
- package/dist/cjs/metro-config/buildOneMetroResolverOverrides.test.native.js.map +1 -1
- package/dist/cjs/metro-config/getViteMetroPluginOptions.integration.test.native.js.map +1 -1
- package/dist/cjs/metro-config/getViteMetroPluginOptions.native.js +1 -1
- package/dist/cjs/metro-config/getViteMetroPluginOptions.native.js.map +1 -1
- package/dist/cjs/metro-config/withOne.native.js.map +1 -1
- package/dist/cjs/metro-config/withOne.test.native.js.map +1 -1
- package/dist/cjs/native-transforms.native.js.map +1 -1
- package/dist/cjs/notFoundState.native.js.map +1 -1
- package/dist/cjs/package-exports.test.native.js.map +1 -1
- package/dist/cjs/polyfills-mobile.native.js.map +1 -1
- package/dist/cjs/polyfills-server.native.js.map +1 -1
- package/dist/cjs/router/FlagsContext.native.js.map +1 -1
- package/dist/cjs/router/Route.cjs +10 -3
- package/dist/cjs/router/Route.native.js +13 -3
- package/dist/cjs/router/Route.native.js.map +1 -1
- package/dist/cjs/router/RouteInfoContext.native.js.map +1 -1
- package/dist/cjs/router/RouterStore.native.js.map +1 -1
- package/dist/cjs/router/SpaShellContext.native.js.map +1 -1
- package/dist/cjs/router/conditionalSlotPathname.test.native.js.map +1 -1
- package/dist/cjs/router/createRoute.native.js.map +1 -1
- package/dist/cjs/router/diagnoseRouteLoadFailure.native.js.map +1 -1
- package/dist/cjs/router/filterRootHTML.native.js.map +1 -1
- package/dist/cjs/router/findRouteNode.cjs +10 -10
- package/dist/cjs/router/findRouteNode.native.js +13 -29
- package/dist/cjs/router/findRouteNode.native.js.map +1 -1
- package/dist/cjs/router/findRouteNode.test.cjs +88 -0
- package/dist/cjs/router/findRouteNode.test.native.js +94 -0
- package/dist/cjs/router/findRouteNode.test.native.js.map +1 -0
- package/dist/cjs/router/getLinkingConfig.native.js.map +1 -1
- package/dist/cjs/router/getLinkingConfig.test.cjs +9 -0
- package/dist/cjs/router/getLinkingConfig.test.native.js +9 -0
- package/dist/cjs/router/getLinkingConfig.test.native.js.map +1 -1
- package/dist/cjs/router/getNormalizedStatePath.cjs +2 -1
- package/dist/cjs/router/getNormalizedStatePath.native.js +2 -1
- package/dist/cjs/router/getNormalizedStatePath.native.js.map +1 -1
- package/dist/cjs/router/getRouteArtifactPath.native.js.map +1 -1
- package/dist/cjs/router/getRouteArtifactPath.test.native.js.map +1 -1
- package/dist/cjs/router/getRouteInfo.cjs +6 -2
- package/dist/cjs/router/getRouteInfo.native.js +6 -2
- package/dist/cjs/router/getRouteInfo.native.js.map +1 -1
- package/dist/cjs/router/getRouteInfo.test.cjs +56 -0
- package/dist/cjs/router/getRouteInfo.test.native.js +65 -0
- package/dist/cjs/router/getRouteInfo.test.native.js.map +1 -0
- package/dist/cjs/router/getRoutes.native.js.map +1 -1
- package/dist/cjs/router/getRoutes.test.native.js.map +1 -1
- package/dist/cjs/router/glob-patterns.native.js.map +1 -1
- package/dist/cjs/router/hmrImport.native.test.native.js.map +1 -1
- package/dist/cjs/router/imperative-api.native.js.map +1 -1
- package/dist/cjs/router/interceptRoutes.native.js.map +1 -1
- package/dist/cjs/router/isIndexPath.cjs +1 -1
- package/dist/cjs/router/isIndexPath.native.js +2 -1
- package/dist/cjs/router/isIndexPath.native.js.map +1 -1
- package/dist/cjs/router/isStateAwaitingNavigatorMount.cjs +2 -1
- package/dist/cjs/router/isStateAwaitingNavigatorMount.native.js +2 -1
- package/dist/cjs/router/isStateAwaitingNavigatorMount.native.js.map +1 -1
- package/dist/cjs/router/lastAction.native.js.map +1 -1
- package/dist/cjs/router/linkToOrphaned.test.native.js.map +1 -1
- package/dist/cjs/router/linkingConfig.native.js.map +1 -1
- package/dist/cjs/router/matchers.native.js.map +1 -1
- package/dist/cjs/router/matchers.test.native.js.map +1 -1
- package/dist/cjs/router/params.native.js.map +1 -1
- package/dist/cjs/router/path.cjs +1 -0
- package/dist/cjs/router/path.native.js +1 -0
- package/dist/cjs/router/path.native.js.map +1 -1
- package/dist/cjs/router/path.test.native.js.map +1 -1
- package/dist/cjs/router/protectedRoutes.test.native.js.map +1 -1
- package/dist/cjs/router/routeHmr.native.js +2 -5
- package/dist/cjs/router/routeHmr.native.js.map +1 -1
- package/dist/cjs/router/routeHmr.native.test.cjs +23 -9
- package/dist/cjs/router/routeHmr.native.test.native.js +27 -9
- package/dist/cjs/router/routeHmr.native.test.native.js.map +1 -1
- package/dist/cjs/router/router.cjs +12 -14
- package/dist/cjs/router/router.native.js +13 -14
- package/dist/cjs/router/router.native.js.map +1 -1
- package/dist/cjs/router/serverLocationContext.native.js.map +1 -1
- package/dist/cjs/router/sitemap.native.js.map +1 -1
- package/dist/cjs/router/sitemap.test.native.js.map +1 -1
- package/dist/cjs/router/sortRoutes.native.js.map +1 -1
- package/dist/cjs/router/useInitializeOneRouter.native.js.map +1 -1
- package/dist/cjs/router/useInitializeOneRouter.preview-lifecycle.test.native.js.map +1 -1
- package/dist/cjs/router/useNavigation.cjs +30 -8
- package/dist/cjs/router/useNavigation.native.js +32 -8
- package/dist/cjs/router/useNavigation.native.js.map +1 -1
- package/dist/cjs/router/useScreens.cjs +19 -21
- package/dist/cjs/router/useScreens.native.js +19 -21
- package/dist/cjs/router/useScreens.native.js.map +1 -1
- package/dist/cjs/router/useScreens.test.cjs +78 -0
- package/dist/cjs/router/useScreens.test.native.js +88 -1
- package/dist/cjs/router/useScreens.test.native.js.map +1 -1
- package/dist/cjs/router/useViteRoutes.cjs +3 -2
- package/dist/cjs/router/useViteRoutes.native.js +3 -2
- package/dist/cjs/router/useViteRoutes.native.js.map +1 -1
- package/dist/cjs/router/useViteRoutes.test.native.js.map +1 -1
- package/dist/cjs/router/utils/getNavigateAction.cjs +2 -2
- package/dist/cjs/router/utils/getNavigateAction.native.js +5 -4
- package/dist/cjs/router/utils/getNavigateAction.native.js.map +1 -1
- package/dist/cjs/router/utils/getNavigateAction.test.cjs +37 -6
- package/dist/cjs/router/utils/getNavigateAction.test.native.js +37 -6
- package/dist/cjs/router/utils/getNavigateAction.test.native.js.map +1 -1
- package/dist/cjs/router/web/WebStackNavigator.native.js.map +1 -1
- package/dist/cjs/router/web/WebStackView.cjs +1 -1
- package/dist/cjs/router/web/WebStackView.native.js +1 -1
- package/dist/cjs/router/web/WebStackView.native.js.map +1 -1
- package/dist/cjs/router/web/__tests__/stackStateUtils.test.cjs +21 -1
- package/dist/cjs/router/web/__tests__/stackStateUtils.test.native.js +23 -1
- package/dist/cjs/router/web/__tests__/stackStateUtils.test.native.js.map +1 -1
- package/dist/cjs/router/web/stackStateUtils.cjs +1 -1
- package/dist/cjs/router/web/stackStateUtils.native.js +1 -1
- package/dist/cjs/router/web/stackStateUtils.native.js.map +1 -1
- package/dist/cjs/serve-worker.native.js.map +1 -1
- package/dist/cjs/serve.native.js.map +1 -1
- package/dist/cjs/server/ServerContextScript.native.js.map +1 -1
- package/dist/cjs/server/createRoutesManifest.native.js.map +1 -1
- package/dist/cjs/server/getServerManifest.native.js.map +1 -1
- package/dist/cjs/server/getServerManifest.test.native.js.map +1 -1
- package/dist/cjs/server/oneServe.native.js.map +1 -1
- package/dist/cjs/server/routeExportsFromEntry.native.js.map +1 -1
- package/dist/cjs/server/setServerGlobals.native.js.map +1 -1
- package/dist/cjs/server/setupBuildOptions.native.js.map +1 -1
- package/dist/cjs/server/setupServerGlobals.native.js.map +1 -1
- package/dist/cjs/server/ssrLoaderData.native.js.map +1 -1
- package/dist/cjs/server/staticHtmlFetcher.native.js.map +1 -1
- package/dist/cjs/server/workerHandler.native.js.map +1 -1
- package/dist/cjs/server/workerHandler.test.native.js.map +1 -1
- package/dist/cjs/server-render.native.js.map +1 -1
- package/dist/cjs/skewProtection.native.js.map +1 -1
- package/dist/cjs/testing-utils.native.js.map +1 -1
- package/dist/cjs/typed-routes/generateRouteTypes.native.js.map +1 -1
- package/dist/cjs/typed-routes/generateRouteTypes.test.native.js.map +1 -1
- package/dist/cjs/typed-routes/getTypedRoutesDeclarationFile.native.js.map +1 -1
- package/dist/cjs/typed-routes/getTypedRoutesDeclarationFile.test.native.js.map +1 -1
- package/dist/cjs/typed-routes/injectRouteHelpers.native.js.map +1 -1
- package/dist/cjs/types.native.js.map +1 -1
- package/dist/cjs/ui/Slot.cjs +3 -3
- package/dist/cjs/ui/Slot.native.js +1 -25
- package/dist/cjs/ui/Slot.native.js.map +1 -1
- package/dist/cjs/ui/TabContext.native.js.map +1 -1
- package/dist/cjs/ui/TabList.cjs +4 -5
- package/dist/cjs/ui/TabList.native.js +2 -15
- package/dist/cjs/ui/TabList.native.js.map +1 -1
- package/dist/cjs/ui/TabRouter.native.js.map +1 -1
- package/dist/cjs/ui/TabSlot.cjs +3 -3
- package/dist/cjs/ui/TabSlot.native.js +11 -43
- package/dist/cjs/ui/TabSlot.native.js.map +1 -1
- package/dist/cjs/ui/TabTrigger.cjs +3 -3
- package/dist/cjs/ui/TabTrigger.native.js +24 -22
- package/dist/cjs/ui/TabTrigger.native.js.map +1 -1
- package/dist/cjs/ui/Tabs.cjs +9 -10
- package/dist/cjs/ui/Tabs.native.js +2 -9
- package/dist/cjs/ui/Tabs.native.js.map +1 -1
- package/dist/cjs/ui/Tabs.shared.cjs +1 -4
- package/dist/cjs/ui/Tabs.shared.native.js +1 -4
- package/dist/cjs/ui/Tabs.shared.native.js.map +1 -1
- package/dist/cjs/ui/common.cjs +6 -5
- package/dist/cjs/ui/common.native.js +10 -7
- package/dist/cjs/ui/common.native.js.map +1 -1
- package/dist/cjs/ui/index.native.js +2 -4
- package/dist/cjs/ui/index.native.js.map +1 -1
- package/dist/cjs/ui/useComponent.native.js.map +1 -1
- package/dist/cjs/ui/useTabTrigger.native.js.map +1 -1
- package/dist/cjs/useFocusEffect.cjs +7 -1
- package/dist/cjs/useFocusEffect.native.js +9 -4
- package/dist/cjs/useFocusEffect.native.js.map +1 -1
- package/dist/cjs/useLoader.native.js.map +1 -1
- package/dist/cjs/useMatches.native.js.map +1 -1
- package/dist/cjs/useMatches.test.native.js.map +1 -1
- package/dist/cjs/useServerHeadInsertion.native.js.map +1 -1
- package/dist/cjs/utils/assertIsReady.native.js.map +1 -1
- package/dist/cjs/utils/buildOutputPointer.native.js.map +1 -1
- package/dist/cjs/utils/buildOutputPointer.test.native.js.map +1 -1
- package/dist/cjs/utils/children.native.js.map +1 -1
- package/dist/cjs/utils/cleanUrl.native.js.map +1 -1
- package/dist/cjs/utils/cleanUrl.test.native.js.map +1 -1
- package/dist/cjs/utils/dynamicImport.native.js.map +1 -1
- package/dist/cjs/utils/dynamicImport.test.native.js.map +1 -1
- package/dist/cjs/utils/ensureExists.native.js.map +1 -1
- package/dist/cjs/utils/evictOldest.native.js.map +1 -1
- package/dist/cjs/utils/existsAsync.native.js.map +1 -1
- package/dist/cjs/utils/findRootLayout.native.js.map +1 -1
- package/dist/cjs/utils/getPageExport.native.js.map +1 -1
- package/dist/cjs/utils/getPathnameFromFilePath.native.js.map +1 -1
- package/dist/cjs/utils/getPathnameFromFilePath.test.native.js.map +1 -1
- package/dist/cjs/utils/getRouterRootFromOneOptions.native.js.map +1 -1
- package/dist/cjs/utils/globDir.native.js.map +1 -1
- package/dist/cjs/utils/hashString.native.js.map +1 -1
- package/dist/cjs/utils/htmlEscape.native.js.map +1 -1
- package/dist/cjs/utils/isResponse.native.js.map +1 -1
- package/dist/cjs/utils/isRolldown.native.js.map +1 -1
- package/dist/cjs/utils/isStatus.native.js.map +1 -1
- package/dist/cjs/utils/pLimit.native.js.map +1 -1
- package/dist/cjs/utils/platform.native.js.map +1 -1
- package/dist/cjs/utils/posixPathContract.test.native.js.map +1 -1
- package/dist/cjs/utils/promiseWithResolvers.native.js.map +1 -1
- package/dist/cjs/utils/rand.native.js.map +1 -1
- package/dist/cjs/utils/redirect.native.js.map +1 -1
- package/dist/cjs/utils/removeParams.native.js.map +1 -1
- package/dist/cjs/utils/removeSearch.native.js.map +1 -1
- package/dist/cjs/utils/removeUndefined.native.js.map +1 -1
- package/dist/cjs/utils/routeFileWatch.native.js.map +1 -1
- package/dist/cjs/utils/routeFileWatch.test.native.js.map +1 -1
- package/dist/cjs/utils/routeIndex.native.js.map +1 -1
- package/dist/cjs/utils/routeIndex.test.native.js.map +1 -1
- package/dist/cjs/utils/style.native.js.map +1 -1
- package/dist/cjs/utils/toAbsolute.native.js.map +1 -1
- package/dist/cjs/utils/toServerOutputPath.native.js.map +1 -1
- package/dist/cjs/utils/toServerOutputPath.test.native.js.map +1 -1
- package/dist/cjs/utils/trackLoaderDependencies.native.js.map +1 -1
- package/dist/cjs/utils/url.native.js.map +1 -1
- package/dist/cjs/utils/useConstant.native.js.map +1 -1
- package/dist/cjs/utils/watchFile.native.js.map +1 -1
- package/dist/cjs/utils/weakKey.native.js.map +1 -1
- package/dist/cjs/utils/weakMemo.native.js.map +1 -1
- package/dist/cjs/utils/withStaticProperties.native.js.map +1 -1
- package/dist/cjs/utils/workerImport.native.js.map +1 -1
- package/dist/cjs/validateParams.native.js.map +1 -1
- package/dist/cjs/validateSearch.native.js.map +1 -1
- package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.js.map +1 -1
- package/dist/cjs/vercel/build/config/vc-build-output-config-base.native.js.map +1 -1
- package/dist/cjs/vercel/build/config/vc-config-base.native.js.map +1 -1
- package/dist/cjs/vercel/build/config/vc-package-base.native.js.map +1 -1
- package/dist/cjs/vercel/build/generate/createApiServerlessFunction.native.js.map +1 -1
- package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.native.js.map +1 -1
- package/dist/cjs/vercel/build/getPathFromRoute.native.js.map +1 -1
- package/dist/cjs/views/EmptyRoute.native.js.map +1 -1
- package/dist/cjs/views/ErrorBoundary.native.js.map +1 -1
- package/dist/cjs/views/LoadProgressBar.native.js.map +1 -1
- package/dist/cjs/views/Navigator.cjs +2 -19
- package/dist/cjs/views/Navigator.native.js +2 -23
- package/dist/cjs/views/Navigator.native.js.map +1 -1
- package/dist/cjs/views/Protected.native.js.map +1 -1
- package/dist/cjs/views/RootErrorBoundary.native.js.map +1 -1
- package/dist/cjs/views/RouteErrorView.native.js.map +1 -1
- package/dist/cjs/views/Screen.native.js.map +1 -1
- package/dist/cjs/views/ScrollBehavior.native.js.map +1 -1
- package/dist/cjs/views/ScrollBehavior.test.native.js.map +1 -1
- package/dist/cjs/views/SourceInspector.native.js.map +1 -1
- package/dist/cjs/views/SuspenseFallback.native.js.map +1 -1
- package/dist/cjs/views/Try.native.js.map +1 -1
- package/dist/cjs/vite/DevHead.native.js.map +1 -1
- package/dist/cjs/vite/cloudflareWranglerConfig.native.js.map +1 -1
- package/dist/cjs/vite/cloudflareWranglerConfig.test.native.js.map +1 -1
- package/dist/cjs/vite/constants.native.js.map +1 -1
- package/dist/cjs/vite/customNodeExternals.native.js.map +1 -1
- package/dist/cjs/vite/ensureTsConfig.native.js.map +1 -1
- package/dist/cjs/vite/findDepsToOptimize.native.js.map +1 -1
- package/dist/cjs/vite/getManifest.native.js.map +1 -1
- package/dist/cjs/vite/getManifest.test.native.js.map +1 -1
- package/dist/cjs/vite/loadConfig.native.js.map +1 -1
- package/dist/cjs/vite/makePluginWebOnly.native.js.map +1 -1
- package/dist/cjs/vite/one-server-only.test.native.js.map +1 -1
- package/dist/cjs/vite/one.native.js.map +1 -1
- package/dist/cjs/vite/plugins/SSRCSSPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/bundledDevPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/clientTreeShakePlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/clientTreeShakePlugin.test.native.js.map +1 -1
- package/dist/cjs/vite/plugins/criticalCSSPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/criticalCSSPlugin.test.native.js.map +1 -1
- package/dist/cjs/vite/plugins/devtoolsPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/environmentGuardPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/environmentGuardPlugin.test.native.js.map +1 -1
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.test.native.js.map +1 -1
- package/dist/cjs/vite/plugins/fixDependenciesPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/imageDataPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/imageDataPlugin.test.native.js.map +1 -1
- package/dist/cjs/vite/plugins/removeReactNativeWebAnimatedPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/routeModuleHmrPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/routeModuleHmrPlugin.test.native.js.map +1 -1
- package/dist/cjs/vite/plugins/sourceInspectorPlugin.cjs +7 -1
- package/dist/cjs/vite/plugins/sourceInspectorPlugin.native.js +7 -1
- package/dist/cjs/vite/plugins/sourceInspectorPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/sourceInspectorPlugin.test.cjs +15 -0
- package/dist/cjs/vite/plugins/sourceInspectorPlugin.test.native.js +16 -0
- package/dist/cjs/vite/plugins/sourceInspectorPlugin.test.native.js.map +1 -1
- package/dist/cjs/vite/plugins/useDomPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/virtualEntryConstants.native.js.map +1 -1
- package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/virtualEntryPlugin.test.native.js.map +1 -1
- package/dist/cjs/vite/plugins/warmRoutesPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/workerdDevPlugin.native.js.map +1 -1
- package/dist/cjs/vite/plugins/workerdDevPlugin.test.native.js.map +1 -1
- package/dist/cjs/vite/resolveResponse.native.js.map +1 -1
- package/dist/cjs/vite/types.native.js.map +1 -1
- package/dist/cjs/vite-auto-warm.native.js.map +1 -1
- package/dist/cjs/vite.native.js.map +1 -1
- package/dist/cjs/zero/getQueryKey.native.js.map +1 -1
- package/dist/cjs/zero/isZeroQuery.native.js.map +1 -1
- package/dist/cjs/zero/resolveQuery.native.js.map +1 -1
- package/dist/cjs/zero/subscribeToQuery.native.js.map +1 -1
- package/dist/cjs/zero/types.native.js.map +1 -1
- package/dist/cjs/zero/useQuery.native.js.map +1 -1
- package/dist/cjs/zero/useQueryZero.native.js.map +1 -1
- package/dist/cjs/zero.native.js.map +1 -1
- package/dist/esm/createApp.native.js +25 -1
- package/dist/esm/createApp.native.js.map +1 -1
- package/dist/esm/fallbackViews/Sitemap.mjs +1 -1
- package/dist/esm/fallbackViews/Sitemap.mjs.map +1 -1
- package/dist/esm/fallbackViews/Sitemap.native.js +1 -1
- package/dist/esm/fallbackViews/Sitemap.native.js.map +1 -1
- package/dist/esm/fork/NavigationContainer.mjs +26 -52
- package/dist/esm/fork/NavigationContainer.mjs.map +1 -1
- package/dist/esm/fork/NavigationContainer.native.js +30 -57
- package/dist/esm/fork/NavigationContainer.native.js.map +1 -1
- package/dist/esm/fork/getPathFromState.mjs.map +1 -1
- package/dist/esm/fork/useLinking.mjs +18 -15
- package/dist/esm/fork/useLinking.mjs.map +1 -1
- package/dist/esm/fork/useLinking.native.js +12 -21
- package/dist/esm/fork/useLinking.native.js.map +1 -1
- package/dist/esm/fork/useLinking.native.test.js +12 -17
- package/dist/esm/fork/useLinking.native.test.js.map +1 -1
- package/dist/esm/fork/useLinking.native.test.mjs +2 -2
- package/dist/esm/fork/useLinking.native.test.mjs.map +1 -1
- package/dist/esm/fork/useLinking.native.test.native.js +1 -1
- package/dist/esm/fork/useLinking.native.test.native.js.map +1 -1
- package/dist/esm/fork/validatePathConfig.mjs +9 -2
- package/dist/esm/fork/validatePathConfig.mjs.map +1 -1
- package/dist/esm/fork/validatePathConfig.native.js +9 -2
- package/dist/esm/fork/validatePathConfig.native.js.map +1 -1
- package/dist/esm/getReactNavigationConfig.mjs +48 -5
- package/dist/esm/getReactNavigationConfig.mjs.map +1 -1
- package/dist/esm/getReactNavigationConfig.native.js +54 -5
- package/dist/esm/getReactNavigationConfig.native.js.map +1 -1
- package/dist/esm/getURL.native.test.mjs +1 -1
- package/dist/esm/headless/__tests__/useStack.test.mjs +7 -15
- package/dist/esm/headless/__tests__/useStack.test.mjs.map +1 -1
- package/dist/esm/headless/__tests__/useStack.test.native.js +7 -15
- package/dist/esm/headless/__tests__/useStack.test.native.js.map +1 -1
- package/dist/esm/headless/useStack.mjs +1 -2
- package/dist/esm/headless/useStack.mjs.map +1 -1
- package/dist/esm/headless/useStack.native.js +1 -2
- package/dist/esm/headless/useStack.native.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/interfaces/router.mjs.map +1 -1
- package/dist/esm/interfaces/router.native.js.map +1 -1
- package/dist/esm/layouts/Stack.mjs +10 -13
- package/dist/esm/layouts/Stack.mjs.map +1 -1
- package/dist/esm/layouts/Stack.native.js +11 -14
- package/dist/esm/layouts/Stack.native.js.map +1 -1
- package/dist/esm/layouts/Tabs.native.js +4 -74
- package/dist/esm/layouts/Tabs.native.js.map +1 -1
- package/dist/esm/layouts/nativeTabsOptions.mjs +24 -0
- package/dist/esm/layouts/nativeTabsOptions.mjs.map +1 -0
- package/dist/esm/layouts/nativeTabsOptions.native.js +24 -0
- package/dist/esm/layouts/nativeTabsOptions.native.js.map +1 -0
- package/dist/esm/layouts/stack-utils/StackHeaderBackButton.mjs +4 -1
- package/dist/esm/layouts/stack-utils/StackHeaderBackButton.mjs.map +1 -1
- package/dist/esm/layouts/stack-utils/StackHeaderBackButton.native.js +4 -1
- package/dist/esm/layouts/stack-utils/StackHeaderBackButton.native.js.map +1 -1
- package/dist/esm/layouts/stack-utils/StackHeaderTitle.mjs +2 -2
- package/dist/esm/layouts/stack-utils/StackHeaderTitle.mjs.map +1 -1
- package/dist/esm/layouts/stack-utils/StackHeaderTitle.native.js +2 -2
- package/dist/esm/layouts/stack-utils/StackHeaderTitle.native.js.map +1 -1
- package/dist/esm/layouts/stack-utils/StackScreen.mjs +3 -6
- package/dist/esm/layouts/stack-utils/StackScreen.mjs.map +1 -1
- package/dist/esm/layouts/stack-utils/StackScreen.native.js +4 -7
- package/dist/esm/layouts/stack-utils/StackScreen.native.js.map +1 -1
- package/dist/esm/layouts/stack-utils/__tests__/composition.test.mjs +14 -14
- package/dist/esm/layouts/stack-utils/__tests__/composition.test.mjs.map +1 -1
- package/dist/esm/layouts/stack-utils/__tests__/composition.test.native.js +14 -14
- package/dist/esm/layouts/stack-utils/__tests__/composition.test.native.js.map +1 -1
- package/dist/esm/layouts/stack-utils/index.mjs +1 -2
- package/dist/esm/layouts/stack-utils/index.mjs.map +1 -1
- package/dist/esm/layouts/stack-utils/index.native.js +1 -2
- package/dist/esm/layouts/stack-utils/index.native.js.map +1 -1
- package/dist/esm/layouts/withLayoutContext.mjs +0 -1
- package/dist/esm/layouts/withLayoutContext.mjs.map +1 -1
- package/dist/esm/layouts/withLayoutContext.native.js +0 -1
- package/dist/esm/layouts/withLayoutContext.native.js.map +1 -1
- package/dist/esm/layouts/withLayoutContext.test.mjs +18 -0
- package/dist/esm/layouts/withLayoutContext.test.mjs.map +1 -1
- package/dist/esm/layouts/withLayoutContext.test.native.js +24 -0
- package/dist/esm/layouts/withLayoutContext.test.native.js.map +1 -1
- package/dist/esm/link/useLoadedNavigation.mjs.map +1 -1
- package/dist/esm/link/useLoadedNavigation.native.js.map +1 -1
- package/dist/esm/router/Route.mjs +9 -3
- package/dist/esm/router/Route.mjs.map +1 -1
- package/dist/esm/router/Route.native.js +12 -3
- package/dist/esm/router/Route.native.js.map +1 -1
- package/dist/esm/router/findRouteNode.mjs +10 -10
- package/dist/esm/router/findRouteNode.mjs.map +1 -1
- package/dist/esm/router/findRouteNode.native.js +13 -29
- package/dist/esm/router/findRouteNode.native.js.map +1 -1
- package/dist/esm/router/findRouteNode.test.mjs +89 -0
- package/dist/esm/router/findRouteNode.test.mjs.map +1 -0
- package/dist/esm/router/findRouteNode.test.native.js +92 -0
- package/dist/esm/router/findRouteNode.test.native.js.map +1 -0
- package/dist/esm/router/getLinkingConfig.test.mjs +9 -0
- package/dist/esm/router/getLinkingConfig.test.mjs.map +1 -1
- package/dist/esm/router/getLinkingConfig.test.native.js +9 -0
- package/dist/esm/router/getLinkingConfig.test.native.js.map +1 -1
- package/dist/esm/router/getNormalizedStatePath.mjs +2 -1
- package/dist/esm/router/getNormalizedStatePath.mjs.map +1 -1
- package/dist/esm/router/getNormalizedStatePath.native.js +2 -1
- package/dist/esm/router/getNormalizedStatePath.native.js.map +1 -1
- package/dist/esm/router/getRouteInfo.mjs +5 -2
- package/dist/esm/router/getRouteInfo.mjs.map +1 -1
- package/dist/esm/router/getRouteInfo.native.js +5 -2
- package/dist/esm/router/getRouteInfo.native.js.map +1 -1
- package/dist/esm/router/getRouteInfo.test.mjs +57 -0
- package/dist/esm/router/getRouteInfo.test.mjs.map +1 -0
- package/dist/esm/router/getRouteInfo.test.native.js +63 -0
- package/dist/esm/router/getRouteInfo.test.native.js.map +1 -0
- package/dist/esm/router/hmrImport.native.test.mjs +1 -1
- package/dist/esm/router/isIndexPath.mjs +1 -1
- package/dist/esm/router/isIndexPath.mjs.map +1 -1
- package/dist/esm/router/isIndexPath.native.js +2 -1
- package/dist/esm/router/isIndexPath.native.js.map +1 -1
- package/dist/esm/router/isStateAwaitingNavigatorMount.mjs +2 -1
- package/dist/esm/router/isStateAwaitingNavigatorMount.mjs.map +1 -1
- package/dist/esm/router/isStateAwaitingNavigatorMount.native.js +2 -1
- package/dist/esm/router/isStateAwaitingNavigatorMount.native.js.map +1 -1
- package/dist/esm/router/path.mjs +1 -1
- package/dist/esm/router/path.mjs.map +1 -1
- package/dist/esm/router/path.native.js +1 -1
- package/dist/esm/router/path.native.js.map +1 -1
- package/dist/esm/router/routeHmr.native.js +2 -5
- package/dist/esm/router/routeHmr.native.js.map +1 -1
- package/dist/esm/router/routeHmr.native.test.js +21 -11
- package/dist/esm/router/routeHmr.native.test.js.map +1 -1
- package/dist/esm/router/routeHmr.native.test.mjs +24 -10
- package/dist/esm/router/routeHmr.native.test.mjs.map +1 -1
- package/dist/esm/router/routeHmr.native.test.native.js +27 -9
- package/dist/esm/router/routeHmr.native.test.native.js.map +1 -1
- package/dist/esm/router/router.mjs +11 -13
- package/dist/esm/router/router.mjs.map +1 -1
- package/dist/esm/router/router.native.js +12 -13
- package/dist/esm/router/router.native.js.map +1 -1
- package/dist/esm/router/useInitializeOneRouter.mjs.map +1 -1
- package/dist/esm/router/useInitializeOneRouter.native.js.map +1 -1
- package/dist/esm/router/useNavigation.mjs +32 -11
- package/dist/esm/router/useNavigation.mjs.map +1 -1
- package/dist/esm/router/useNavigation.native.js +34 -11
- package/dist/esm/router/useNavigation.native.js.map +1 -1
- package/dist/esm/router/useScreens.mjs +19 -20
- package/dist/esm/router/useScreens.mjs.map +1 -1
- package/dist/esm/router/useScreens.native.js +19 -20
- package/dist/esm/router/useScreens.native.js.map +1 -1
- package/dist/esm/router/useScreens.test.mjs +76 -0
- package/dist/esm/router/useScreens.test.mjs.map +1 -1
- package/dist/esm/router/useScreens.test.native.js +86 -0
- package/dist/esm/router/useScreens.test.native.js.map +1 -1
- package/dist/esm/router/useViteRoutes.mjs +3 -2
- package/dist/esm/router/useViteRoutes.mjs.map +1 -1
- package/dist/esm/router/useViteRoutes.native.js +3 -2
- package/dist/esm/router/useViteRoutes.native.js.map +1 -1
- package/dist/esm/router/utils/getNavigateAction.mjs +2 -2
- package/dist/esm/router/utils/getNavigateAction.mjs.map +1 -1
- package/dist/esm/router/utils/getNavigateAction.native.js +5 -4
- package/dist/esm/router/utils/getNavigateAction.native.js.map +1 -1
- package/dist/esm/router/utils/getNavigateAction.test.mjs +37 -6
- package/dist/esm/router/utils/getNavigateAction.test.mjs.map +1 -1
- package/dist/esm/router/utils/getNavigateAction.test.native.js +37 -6
- package/dist/esm/router/utils/getNavigateAction.test.native.js.map +1 -1
- package/dist/esm/router/web/WebStackView.mjs +1 -1
- package/dist/esm/router/web/WebStackView.mjs.map +1 -1
- package/dist/esm/router/web/WebStackView.native.js +1 -1
- package/dist/esm/router/web/WebStackView.native.js.map +1 -1
- package/dist/esm/router/web/__tests__/stackStateUtils.test.mjs +21 -1
- package/dist/esm/router/web/__tests__/stackStateUtils.test.mjs.map +1 -1
- package/dist/esm/router/web/__tests__/stackStateUtils.test.native.js +23 -1
- package/dist/esm/router/web/__tests__/stackStateUtils.test.native.js.map +1 -1
- package/dist/esm/router/web/stackStateUtils.mjs +1 -1
- package/dist/esm/router/web/stackStateUtils.mjs.map +1 -1
- package/dist/esm/router/web/stackStateUtils.native.js +1 -1
- package/dist/esm/router/web/stackStateUtils.native.js.map +1 -1
- package/dist/esm/ui/Slot.mjs.map +1 -1
- package/dist/esm/ui/Slot.native.js +1 -25
- package/dist/esm/ui/Slot.native.js.map +1 -1
- package/dist/esm/ui/TabContext.mjs.map +1 -1
- package/dist/esm/ui/TabContext.native.js.map +1 -1
- package/dist/esm/ui/TabList.mjs +1 -2
- package/dist/esm/ui/TabList.mjs.map +1 -1
- package/dist/esm/ui/TabList.native.js +2 -15
- package/dist/esm/ui/TabList.native.js.map +1 -1
- package/dist/esm/ui/TabSlot.mjs.map +1 -1
- package/dist/esm/ui/TabSlot.native.js +12 -44
- package/dist/esm/ui/TabSlot.native.js.map +1 -1
- package/dist/esm/ui/TabTrigger.mjs.map +1 -1
- package/dist/esm/ui/TabTrigger.native.js +25 -23
- package/dist/esm/ui/TabTrigger.native.js.map +1 -1
- package/dist/esm/ui/Tabs.mjs +1 -2
- package/dist/esm/ui/Tabs.mjs.map +1 -1
- package/dist/esm/ui/Tabs.native.js +2 -9
- package/dist/esm/ui/Tabs.native.js.map +1 -1
- package/dist/esm/ui/Tabs.shared.mjs +1 -4
- package/dist/esm/ui/Tabs.shared.mjs.map +1 -1
- package/dist/esm/ui/Tabs.shared.native.js +1 -4
- package/dist/esm/ui/Tabs.shared.native.js.map +1 -1
- package/dist/esm/ui/common.mjs +6 -5
- package/dist/esm/ui/common.mjs.map +1 -1
- package/dist/esm/ui/common.native.js +10 -7
- package/dist/esm/ui/common.native.js.map +1 -1
- package/dist/esm/ui/index.native.js +1 -1
- package/dist/esm/ui/index.native.js.map +1 -1
- package/dist/esm/useFocusEffect.mjs +8 -2
- package/dist/esm/useFocusEffect.mjs.map +1 -1
- package/dist/esm/useFocusEffect.native.js +10 -5
- package/dist/esm/useFocusEffect.native.js.map +1 -1
- package/dist/esm/views/Navigator.mjs +2 -19
- package/dist/esm/views/Navigator.mjs.map +1 -1
- package/dist/esm/views/Navigator.native.js +2 -23
- package/dist/esm/views/Navigator.native.js.map +1 -1
- package/dist/esm/vite/one.mjs.map +1 -1
- package/dist/esm/vite/one.native.js.map +1 -1
- package/dist/esm/vite/plugins/sourceInspectorPlugin.mjs +7 -2
- package/dist/esm/vite/plugins/sourceInspectorPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/sourceInspectorPlugin.native.js +7 -2
- package/dist/esm/vite/plugins/sourceInspectorPlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/sourceInspectorPlugin.test.mjs +16 -1
- package/dist/esm/vite/plugins/sourceInspectorPlugin.test.mjs.map +1 -1
- package/dist/esm/vite/plugins/sourceInspectorPlugin.test.native.js +17 -1
- package/dist/esm/vite/plugins/sourceInspectorPlugin.test.native.js.map +1 -1
- package/package.json +32 -47
- package/src/__mocks__/@react-navigation/native-stack.ts +2 -2
- package/src/createApp.native.tsx +23 -1
- package/src/fallbackViews/Sitemap.tsx +1 -1
- package/src/fallbackViews/Sitemap.web.tsx +1 -1
- package/src/fork/NavigationContainer.tsx +36 -80
- package/src/fork/getPathFromState.ts +3 -3
- package/src/fork/useLinking.native.test.tsx +11 -15
- package/src/fork/useLinking.native.ts +13 -27
- package/src/fork/useLinking.ts +24 -21
- package/src/fork/validatePathConfig.ts +11 -4
- package/src/getReactNavigationConfig.ts +96 -4
- package/src/headless/__tests__/useStack.test.tsx +4 -13
- package/src/headless/types.ts +1 -2
- package/src/headless/useStack.ts +1 -2
- package/src/index.ts +0 -12
- package/src/interfaces/router.ts +2 -2
- package/src/layouts/Drawer.tsx +4 -2
- package/src/layouts/Stack.tsx +17 -36
- package/src/layouts/Tabs.tsx +6 -81
- package/src/layouts/nativeTabsOptions.ts +38 -0
- package/src/layouts/stack-utils/README.md +0 -1
- package/src/layouts/stack-utils/StackHeaderBackButton.tsx +1 -1
- package/src/layouts/stack-utils/StackHeaderTitle.tsx +2 -2
- package/src/layouts/stack-utils/StackScreen.tsx +5 -26
- package/src/layouts/stack-utils/__tests__/composition.test.tsx +14 -14
- package/src/layouts/stack-utils/index.tsx +0 -17
- package/src/layouts/withLayoutContext.test.tsx +16 -0
- package/src/layouts/withLayoutContext.tsx +2 -2
- package/src/link/useLoadedNavigation.ts +2 -1
- package/src/router/Route.tsx +12 -2
- package/src/router/findRouteNode.test.ts +92 -0
- package/src/router/findRouteNode.ts +22 -17
- package/src/router/getLinkingConfig.test.ts +13 -0
- package/src/router/getNormalizedStatePath.tsx +2 -1
- package/src/router/getRouteInfo.test.ts +54 -0
- package/src/router/getRouteInfo.ts +5 -2
- package/src/router/isIndexPath.ts +5 -2
- package/src/router/isStateAwaitingNavigatorMount.ts +4 -1
- package/src/router/path.ts +1 -1
- package/src/router/routeHmr.native.test.ts +23 -11
- package/src/router/routeHmr.native.ts +6 -4
- package/src/router/router.ts +10 -9
- package/src/router/useInitializeOneRouter.ts +2 -2
- package/src/router/useNavigation.ts +49 -14
- package/src/router/useScreens.test.tsx +72 -0
- package/src/router/useScreens.tsx +15 -21
- package/src/router/useViteRoutes.tsx +3 -2
- package/src/router/utils/getNavigateAction.test.ts +28 -6
- package/src/router/utils/getNavigateAction.ts +6 -3
- package/src/router/web/WebStackView.tsx +1 -1
- package/src/router/web/__tests__/stackStateUtils.test.ts +23 -1
- package/src/router/web/stackStateUtils.ts +3 -2
- package/src/ui/README.md +8 -16
- package/src/ui/Slot.tsx +4 -38
- package/src/ui/TabContext.tsx +2 -7
- package/src/ui/TabList.tsx +7 -19
- package/src/ui/TabSlot.tsx +17 -60
- package/src/ui/TabTrigger.tsx +22 -30
- package/src/ui/Tabs.shared.tsx +3 -6
- package/src/ui/Tabs.tsx +3 -10
- package/src/ui/common.tsx +7 -5
- package/src/ui/index.native.ts +1 -0
- package/src/useFocusEffect.ts +14 -4
- package/src/views/Navigator.tsx +5 -21
- package/src/vite/one.ts +3 -1
- package/src/vite/plugins/sourceInspectorPlugin.test.ts +39 -1
- package/src/vite/plugins/sourceInspectorPlugin.ts +24 -3
- package/types/__mocks__/@react-navigation/native-stack.d.ts +2 -2
- package/types/__mocks__/@react-navigation/native-stack.d.ts.map +1 -1
- package/types/createApp.native.d.ts.map +1 -1
- package/types/fork/NavigationContainer.d.ts +2 -7
- package/types/fork/NavigationContainer.d.ts.map +1 -1
- package/types/fork/findFocusedRoute.d.ts +12 -2
- package/types/fork/findFocusedRoute.d.ts.map +1 -1
- package/types/fork/useLinking.d.ts +1 -1
- package/types/fork/useLinking.d.ts.map +1 -1
- package/types/fork/useLinking.native.d.ts +4 -20
- package/types/fork/useLinking.native.d.ts.map +1 -1
- package/types/fork/validatePathConfig.d.ts.map +1 -1
- package/types/getReactNavigationConfig.d.ts +10 -0
- package/types/getReactNavigationConfig.d.ts.map +1 -1
- package/types/headless/types.d.ts +1 -4
- package/types/headless/types.d.ts.map +1 -1
- package/types/headless/useStack.d.ts.map +1 -1
- package/types/index.d.ts +1 -1
- package/types/index.d.ts.map +1 -1
- package/types/interfaces/router.d.ts +2 -2
- package/types/interfaces/router.d.ts.map +1 -1
- package/types/layouts/Drawer.d.ts +3 -108
- package/types/layouts/Drawer.d.ts.map +1 -1
- package/types/layouts/Drawer.web.d.ts +189 -2
- package/types/layouts/Drawer.web.d.ts.map +1 -1
- package/types/layouts/Stack.d.ts +7 -120
- package/types/layouts/Stack.d.ts.map +1 -1
- package/types/layouts/Tabs.d.ts +5 -100
- package/types/layouts/Tabs.d.ts.map +1 -1
- package/types/layouts/nativeTabsOptions.d.ts +8 -0
- package/types/layouts/nativeTabsOptions.d.ts.map +1 -0
- package/types/layouts/stack-navigator.d.ts +1 -2
- package/types/layouts/stack-navigator.d.ts.map +1 -1
- package/types/layouts/stack-navigator.web.d.ts +1 -1
- package/types/layouts/stack-navigator.web.d.ts.map +1 -1
- package/types/layouts/stack-utils/StackScreen.d.ts +1 -2
- package/types/layouts/stack-utils/StackScreen.d.ts.map +1 -1
- package/types/layouts/stack-utils/index.d.ts +1 -3
- package/types/layouts/stack-utils/index.d.ts.map +1 -1
- package/types/layouts/withLayoutContext.d.ts +1 -2
- package/types/layouts/withLayoutContext.d.ts.map +1 -1
- package/types/link/useLoadedNavigation.d.ts +2 -2
- package/types/link/useLoadedNavigation.d.ts.map +1 -1
- package/types/router/Route.d.ts +1 -0
- package/types/router/Route.d.ts.map +1 -1
- package/types/router/findRouteNode.d.ts +4 -1
- package/types/router/findRouteNode.d.ts.map +1 -1
- package/types/router/findRouteNode.test.d.ts +2 -0
- package/types/router/findRouteNode.test.d.ts.map +1 -0
- package/types/router/getNormalizedStatePath.d.ts.map +1 -1
- package/types/router/getRouteInfo.d.ts +5 -0
- package/types/router/getRouteInfo.d.ts.map +1 -1
- package/types/router/getRouteInfo.test.d.ts +2 -0
- package/types/router/getRouteInfo.test.d.ts.map +1 -0
- package/types/router/isIndexPath.d.ts.map +1 -1
- package/types/router/isStateAwaitingNavigatorMount.d.ts.map +1 -1
- package/types/router/path.d.ts +1 -0
- package/types/router/path.d.ts.map +1 -1
- package/types/router/routeHmr.native.d.ts.map +1 -1
- package/types/router/router.d.ts +2 -2
- package/types/router/router.d.ts.map +1 -1
- package/types/router/useNavigation.d.ts +4 -2
- package/types/router/useNavigation.d.ts.map +1 -1
- package/types/router/useScreens.d.ts +25 -1
- package/types/router/useScreens.d.ts.map +1 -1
- package/types/router/useViteRoutes.d.ts.map +1 -1
- package/types/router/utils/getNavigateAction.d.ts.map +1 -1
- package/types/router/web/WebStackNavigator.d.ts +1 -1
- package/types/router/web/WebStackNavigator.d.ts.map +1 -1
- package/types/router/web/stackStateUtils.d.ts +2 -1
- package/types/router/web/stackStateUtils.d.ts.map +1 -1
- package/types/ui/Slot.d.ts +2 -3
- package/types/ui/Slot.d.ts.map +1 -1
- package/types/ui/TabContext.d.ts +36 -84
- package/types/ui/TabContext.d.ts.map +1 -1
- package/types/ui/TabList.d.ts +4 -5
- package/types/ui/TabList.d.ts.map +1 -1
- package/types/ui/TabRouter.d.ts +31 -33
- package/types/ui/TabRouter.d.ts.map +1 -1
- package/types/ui/TabSlot.d.ts +5 -10
- package/types/ui/TabSlot.d.ts.map +1 -1
- package/types/ui/TabTrigger.d.ts +3 -2
- package/types/ui/TabTrigger.d.ts.map +1 -1
- package/types/ui/Tabs.d.ts.map +1 -1
- package/types/ui/Tabs.shared.d.ts +29 -137
- package/types/ui/Tabs.shared.d.ts.map +1 -1
- package/types/ui/common.d.ts +1 -1
- package/types/ui/common.d.ts.map +1 -1
- package/types/ui/index.native.d.ts +2 -0
- package/types/ui/index.native.d.ts.map +1 -0
- package/types/useFocusEffect.d.ts.map +1 -1
- package/types/views/Navigator.d.ts.map +1 -1
- package/types/views/Protected.d.ts +9 -1
- package/types/views/Protected.d.ts.map +1 -1
- package/types/vite/one.d.ts.map +1 -1
- package/types/vite/plugins/sourceInspectorPlugin.d.ts +9 -0
- package/types/vite/plugins/sourceInspectorPlugin.d.ts.map +1 -1
- package/dist/cjs/layouts/NativeTabs.cjs +0 -65
- package/dist/cjs/layouts/NativeTabs.native.js +0 -68
- package/dist/cjs/layouts/NativeTabs.native.js.map +0 -1
- package/dist/cjs/layouts/NativeTabs.test.cjs +0 -24
- package/dist/cjs/layouts/NativeTabs.test.native.js +0 -35
- package/dist/cjs/layouts/NativeTabs.test.native.js.map +0 -1
- package/dist/cjs/layouts/stack-utils/StackToolbar.cjs +0 -124
- package/dist/cjs/layouts/stack-utils/StackToolbar.native.js +0 -129
- package/dist/cjs/layouts/stack-utils/StackToolbar.native.js.map +0 -1
- package/dist/cjs/layouts/stack-utils/StackToolbar.shared.cjs +0 -57
- package/dist/cjs/layouts/stack-utils/StackToolbar.shared.native.js +0 -61
- package/dist/cjs/layouts/stack-utils/StackToolbar.shared.native.js.map +0 -1
- package/dist/cjs/layouts/stack-utils/StackToolbar.types.cjs +0 -18
- package/dist/cjs/layouts/stack-utils/StackToolbar.types.native.js +0 -21
- package/dist/cjs/layouts/stack-utils/StackToolbar.types.native.js.map +0 -1
- package/dist/cjs/layouts/stack-utils/StackToolbarImplementation.cjs +0 -39
- package/dist/cjs/layouts/stack-utils/StackToolbarImplementation.native.js +0 -41
- package/dist/cjs/layouts/stack-utils/StackToolbarImplementation.native.js.map +0 -1
- package/dist/cjs/layouts/stack-utils/__tests__/StackToolbar.test.cjs +0 -66
- package/dist/cjs/layouts/stack-utils/__tests__/StackToolbar.test.native.js +0 -99
- package/dist/cjs/layouts/stack-utils/__tests__/StackToolbar.test.native.js.map +0 -1
- package/dist/cjs/native-tabs.cjs +0 -29
- package/dist/cjs/native-tabs.native.js +0 -32
- package/dist/cjs/native-tabs.native.js.map +0 -1
- package/dist/cjs/stack-toolbar-implementation.cjs +0 -30
- package/dist/cjs/stack-toolbar-implementation.native.js +0 -33
- package/dist/cjs/stack-toolbar-implementation.native.js.map +0 -1
- package/dist/cjs/views/OneStackRouter.cjs +0 -46
- package/dist/cjs/views/OneStackRouter.native.js +0 -39
- package/dist/cjs/views/OneStackRouter.native.js.map +0 -1
- package/dist/esm/layouts/NativeTabs.mjs +0 -28
- package/dist/esm/layouts/NativeTabs.mjs.map +0 -1
- package/dist/esm/layouts/NativeTabs.native.js +0 -28
- package/dist/esm/layouts/NativeTabs.native.js.map +0 -1
- package/dist/esm/layouts/NativeTabs.test.mjs +0 -24
- package/dist/esm/layouts/NativeTabs.test.mjs.map +0 -1
- package/dist/esm/layouts/NativeTabs.test.native.js +0 -32
- package/dist/esm/layouts/NativeTabs.test.native.js.map +0 -1
- package/dist/esm/layouts/stack-utils/StackToolbar.mjs +0 -89
- package/dist/esm/layouts/stack-utils/StackToolbar.mjs.map +0 -1
- package/dist/esm/layouts/stack-utils/StackToolbar.native.js +0 -92
- package/dist/esm/layouts/stack-utils/StackToolbar.native.js.map +0 -1
- package/dist/esm/layouts/stack-utils/StackToolbar.shared.mjs +0 -31
- package/dist/esm/layouts/stack-utils/StackToolbar.shared.mjs.map +0 -1
- package/dist/esm/layouts/stack-utils/StackToolbar.shared.native.js +0 -32
- package/dist/esm/layouts/stack-utils/StackToolbar.shared.native.js.map +0 -1
- package/dist/esm/layouts/stack-utils/StackToolbar.types.mjs +0 -2
- package/dist/esm/layouts/stack-utils/StackToolbar.types.mjs.map +0 -1
- package/dist/esm/layouts/stack-utils/StackToolbar.types.native.js +0 -2
- package/dist/esm/layouts/stack-utils/StackToolbar.types.native.js.map +0 -1
- package/dist/esm/layouts/stack-utils/StackToolbarImplementation.mjs +0 -12
- package/dist/esm/layouts/stack-utils/StackToolbarImplementation.mjs.map +0 -1
- package/dist/esm/layouts/stack-utils/StackToolbarImplementation.native.js +0 -12
- package/dist/esm/layouts/stack-utils/StackToolbarImplementation.native.js.map +0 -1
- package/dist/esm/layouts/stack-utils/__tests__/StackToolbar.test.mjs +0 -67
- package/dist/esm/layouts/stack-utils/__tests__/StackToolbar.test.mjs.map +0 -1
- package/dist/esm/layouts/stack-utils/__tests__/StackToolbar.test.native.js +0 -73
- package/dist/esm/layouts/stack-utils/__tests__/StackToolbar.test.native.js.map +0 -1
- package/dist/esm/native-tabs.mjs +0 -3
- package/dist/esm/native-tabs.mjs.map +0 -1
- package/dist/esm/native-tabs.native.js +0 -3
- package/dist/esm/native-tabs.native.js.map +0 -1
- package/dist/esm/stack-toolbar-implementation.mjs +0 -3
- package/dist/esm/stack-toolbar-implementation.mjs.map +0 -1
- package/dist/esm/stack-toolbar-implementation.native.js +0 -3
- package/dist/esm/stack-toolbar-implementation.native.js.map +0 -1
- package/dist/esm/views/OneStackRouter.mjs +0 -21
- package/dist/esm/views/OneStackRouter.mjs.map +0 -1
- package/dist/esm/views/OneStackRouter.native.js +0 -11
- package/dist/esm/views/OneStackRouter.native.js.map +0 -1
- package/src/layouts/NativeTabs.test.ts +0 -30
- package/src/layouts/NativeTabs.tsx +0 -46
- package/src/layouts/stack-utils/StackToolbar.shared.ts +0 -44
- package/src/layouts/stack-utils/StackToolbar.tsx +0 -134
- package/src/layouts/stack-utils/StackToolbar.types.ts +0 -100
- package/src/layouts/stack-utils/StackToolbarImplementation.tsx +0 -39
- package/src/layouts/stack-utils/__tests__/StackToolbar.test.tsx +0 -70
- package/src/native-tabs.ts +0 -1
- package/src/stack-toolbar-implementation.ts +0 -8
- package/src/ui/Slot.web.tsx +0 -9
- package/src/ui/TabList.web.tsx +0 -27
- package/src/ui/TabSlot.web.tsx +0 -90
- package/src/ui/TabTrigger.web.tsx +0 -71
- package/src/ui/Tabs.web.tsx +0 -40
- package/src/views/OneStackRouter.tsx +0 -75
- package/types/layouts/NativeTabs.d.ts +0 -8
- package/types/layouts/NativeTabs.d.ts.map +0 -1
- package/types/layouts/NativeTabs.test.d.ts +0 -2
- package/types/layouts/NativeTabs.test.d.ts.map +0 -1
- package/types/layouts/stack-utils/StackToolbar.d.ts +0 -28
- package/types/layouts/stack-utils/StackToolbar.d.ts.map +0 -1
- package/types/layouts/stack-utils/StackToolbar.shared.d.ts +0 -5
- package/types/layouts/stack-utils/StackToolbar.shared.d.ts.map +0 -1
- package/types/layouts/stack-utils/StackToolbar.types.d.ts +0 -83
- package/types/layouts/stack-utils/StackToolbar.types.d.ts.map +0 -1
- package/types/layouts/stack-utils/StackToolbarImplementation.d.ts +0 -12
- package/types/layouts/stack-utils/StackToolbarImplementation.d.ts.map +0 -1
- package/types/native-tabs.d.ts +0 -2
- package/types/native-tabs.d.ts.map +0 -1
- package/types/stack-toolbar-implementation.d.ts +0 -3
- package/types/stack-toolbar-implementation.d.ts.map +0 -1
- package/types/ui/Slot.web.d.ts +0 -5
- package/types/ui/Slot.web.d.ts.map +0 -1
- package/types/ui/TabList.web.d.ts +0 -11
- package/types/ui/TabList.web.d.ts.map +0 -1
- package/types/ui/TabSlot.web.d.ts +0 -24
- package/types/ui/TabSlot.web.d.ts.map +0 -1
- package/types/ui/TabTrigger.web.d.ts +0 -11
- package/types/ui/TabTrigger.web.d.ts.map +0 -1
- package/types/ui/Tabs.web.d.ts +0 -10
- package/types/ui/Tabs.web.d.ts.map +0 -1
- package/types/views/OneStackRouter.d.ts +0 -3
- package/types/views/OneStackRouter.d.ts.map +0 -1
package/src/router/Route.tsx
CHANGED
|
@@ -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
|
|
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={
|
|
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
|
|
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
|
|
62
|
+
* Collects params from the focused route chain in the state hierarchy.
|
|
62
63
|
*/
|
|
63
64
|
export function extractParamsFromState(
|
|
64
65
|
state:
|
|
65
|
-
| {
|
|
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
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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
|
-
| {
|
|
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 =
|
|
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
|
|
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
|
|
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 = {
|
|
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(
|
|
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) {
|
package/src/router/path.ts
CHANGED
|
@@ -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('
|
|
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
|
|
35
|
-
expect(listener).
|
|
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('
|
|
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
|
-
|
|
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
|
|
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
|
-
}
|
|
33
|
-
|
|
34
|
-
routeHmrListeners.forEach((listener) => listener())
|
|
35
|
+
} catch (error) {
|
|
36
|
+
console.error('[one] route cache eviction failed', error)
|
|
35
37
|
}
|
|
36
38
|
}
|
|
37
39
|
}
|
package/src/router/router.ts
CHANGED
|
@@ -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<
|
|
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-
|
|
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
|
|
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<
|
|
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 {
|
|
8
|
-
import {
|
|
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<
|
|
25
|
-
|
|
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
|
-
|
|
35
|
+
return resolveParentRouteName(routeNodes, contextKey, parent)
|
|
36
|
+
}, [contextKey, parent, routeNodes])
|
|
35
37
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
|
78
|
+
return normalizeContextPath(relativePaths(contextKey, parentId))
|
|
66
79
|
}
|
|
67
|
-
return
|
|
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`
|