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
|
@@ -137,3 +137,75 @@ describe('route SuspenseFallback', () => {
|
|
|
137
137
|
expect(renderer!.toJSON()).toBeNull()
|
|
138
138
|
})
|
|
139
139
|
})
|
|
140
|
+
|
|
141
|
+
describe('ErrorBoundary route identity', () => {
|
|
142
|
+
it('preserves page state across a re-render when the route exports ErrorBoundary', async () => {
|
|
143
|
+
let mounts = 0
|
|
144
|
+
function Page() {
|
|
145
|
+
const [count, setCount] = React.useState(0)
|
|
146
|
+
React.useEffect(() => {
|
|
147
|
+
mounts += 1
|
|
148
|
+
}, [])
|
|
149
|
+
return (
|
|
150
|
+
<button data-count={count} onClick={() => setCount((value) => value + 1)}>
|
|
151
|
+
{count}
|
|
152
|
+
</button>
|
|
153
|
+
)
|
|
154
|
+
}
|
|
155
|
+
function ErrorBoundary() {
|
|
156
|
+
return <div data-error="1" />
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
const node = createRouteNode('spa', 'onboarding', './auth/onboarding.tsx', () => ({
|
|
160
|
+
default: Page,
|
|
161
|
+
ErrorBoundary,
|
|
162
|
+
}))
|
|
163
|
+
const Route = getQualifiedRouteComponent(node)
|
|
164
|
+
|
|
165
|
+
function Harness({ tick }: { tick: number }) {
|
|
166
|
+
return <Route tick={tick} />
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
let renderer: TestRenderer.ReactTestRenderer
|
|
170
|
+
await act(async () => {
|
|
171
|
+
renderer = TestRenderer.create(<Harness tick={0} />)
|
|
172
|
+
})
|
|
173
|
+
|
|
174
|
+
const button = renderer!.root.findByType('button')
|
|
175
|
+
expect(button.props['data-count']).toBe(0)
|
|
176
|
+
await act(async () => {
|
|
177
|
+
button.props.onClick()
|
|
178
|
+
})
|
|
179
|
+
expect(renderer!.root.findByType('button').props['data-count']).toBe(1)
|
|
180
|
+
expect(mounts).toBe(1)
|
|
181
|
+
|
|
182
|
+
await act(async () => {
|
|
183
|
+
renderer.update(<Harness tick={1} />)
|
|
184
|
+
})
|
|
185
|
+
|
|
186
|
+
expect(renderer!.root.findByType('button').props['data-count']).toBe(1)
|
|
187
|
+
expect(mounts).toBe(1)
|
|
188
|
+
})
|
|
189
|
+
|
|
190
|
+
it('still renders the exported ErrorBoundary when the page throws', async () => {
|
|
191
|
+
function Page(): React.ReactNode {
|
|
192
|
+
throw new Error('boom')
|
|
193
|
+
}
|
|
194
|
+
function ErrorBoundary({ error }: { error: Error; retry: () => Promise<void> }) {
|
|
195
|
+
return <div data-caught={error.message} />
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
const node = createRouteNode('spa', 'broken', './broken.tsx', () => ({
|
|
199
|
+
default: Page,
|
|
200
|
+
ErrorBoundary,
|
|
201
|
+
}))
|
|
202
|
+
const Route = getQualifiedRouteComponent(node)
|
|
203
|
+
|
|
204
|
+
let renderer: TestRenderer.ReactTestRenderer
|
|
205
|
+
await act(async () => {
|
|
206
|
+
renderer = TestRenderer.create(<Route />)
|
|
207
|
+
})
|
|
208
|
+
|
|
209
|
+
expect(renderer!.root.findByProps({ 'data-caught': 'boom' })).toBeTruthy()
|
|
210
|
+
})
|
|
211
|
+
})
|
|
@@ -20,6 +20,7 @@ import type { SuspenseFallbackProps } from '../views/SuspenseFallback'
|
|
|
20
20
|
import { Try } from '../views/Try'
|
|
21
21
|
import { DevHead } from '../vite/DevHead'
|
|
22
22
|
import { getServerContext, useServerContext } from '../vite/one-server-only'
|
|
23
|
+
import { getReactNavigationRouteName } from '../getReactNavigationConfig'
|
|
23
24
|
import { filterRootHTML } from './filterRootHTML'
|
|
24
25
|
import {
|
|
25
26
|
type DynamicConvention,
|
|
@@ -350,26 +351,16 @@ export function useSortedScreens(
|
|
|
350
351
|
}
|
|
351
352
|
|
|
352
353
|
function fromImport({ ErrorBoundary, SuspenseFallback, ...component }: LoadedRoute) {
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
default: React.forwardRef((props: any, ref: any) => {
|
|
356
|
-
const children = React.createElement(getPageExport(component) || EmptyRoute, {
|
|
357
|
-
...props,
|
|
358
|
-
ref,
|
|
359
|
-
})
|
|
360
|
-
return <Try catch={ErrorBoundary}>{children}</Try>
|
|
361
|
-
}),
|
|
362
|
-
SuspenseFallback,
|
|
363
|
-
}
|
|
364
|
-
}
|
|
354
|
+
// keep ErrorBoundary on the returned module and wrap it in JSX below.
|
|
355
|
+
// a new forwardRef here remounts the route on every ScreenComponent render.
|
|
365
356
|
if (process.env.NODE_ENV !== 'production') {
|
|
366
357
|
const exported = getPageExport(component)
|
|
367
358
|
if (exported && typeof exported === 'object' && Object.keys(exported).length === 0) {
|
|
368
|
-
return { default: EmptyRoute, SuspenseFallback }
|
|
359
|
+
return { default: EmptyRoute, ErrorBoundary, SuspenseFallback }
|
|
369
360
|
}
|
|
370
361
|
}
|
|
371
362
|
|
|
372
|
-
return { default: getPageExport(component), SuspenseFallback }
|
|
363
|
+
return { default: getPageExport(component), ErrorBoundary, SuspenseFallback }
|
|
373
364
|
}
|
|
374
365
|
|
|
375
366
|
function RouteSuspenseFallback({
|
|
@@ -422,9 +413,9 @@ export function getQualifiedRouteComponent(value: RouteNode) {
|
|
|
422
413
|
}, [])
|
|
423
414
|
}
|
|
424
415
|
|
|
425
|
-
// native Fast Refresh: subscribe to the route-hot epoch
|
|
426
|
-
//
|
|
427
|
-
//
|
|
416
|
+
// native Fast Refresh: subscribe to the route-hot epoch. route file patches
|
|
417
|
+
// are applied in place and do not bump it; a bump re-runs loadRoute() and
|
|
418
|
+
// remounts the screen.
|
|
428
419
|
if (
|
|
429
420
|
process.env.NODE_ENV === 'development' &&
|
|
430
421
|
process.env.TAMAGUI_TARGET === 'native'
|
|
@@ -451,7 +442,8 @@ export function getQualifiedRouteComponent(value: RouteNode) {
|
|
|
451
442
|
}
|
|
452
443
|
|
|
453
444
|
const res = fromImport(value.loadRoute())
|
|
454
|
-
const Component =
|
|
445
|
+
const Component = (res.default || EmptyRoute) as React.ComponentType<any>
|
|
446
|
+
const CatchBoundary = res.ErrorBoundary
|
|
455
447
|
const LayoutSuspenseFallback =
|
|
456
448
|
value.type === 'layout' ? res.SuspenseFallback : undefined
|
|
457
449
|
const match =
|
|
@@ -491,9 +483,10 @@ export function getQualifiedRouteComponent(value: RouteNode) {
|
|
|
491
483
|
/>
|
|
492
484
|
)
|
|
493
485
|
} else {
|
|
486
|
+
const page = <Component {...props} {...slotProps} {...loaderDataProps} ref={ref} />
|
|
494
487
|
rendered = (
|
|
495
488
|
<RouteErrorBoundary routeName={value.route}>
|
|
496
|
-
<
|
|
489
|
+
{CatchBoundary ? <Try catch={CatchBoundary}>{page}</Try> : page}
|
|
497
490
|
</RouteErrorBoundary>
|
|
498
491
|
)
|
|
499
492
|
}
|
|
@@ -638,13 +631,14 @@ function routeToScreen(
|
|
|
638
631
|
route: RouteNode,
|
|
639
632
|
{ options, ...props }: Partial<ScreenProps> = {}
|
|
640
633
|
) {
|
|
634
|
+
const navigationRouteName = getReactNavigationRouteName(route)
|
|
641
635
|
return (
|
|
642
636
|
<Screen
|
|
643
637
|
// Users can override the screen getId function.
|
|
644
638
|
getId={createGetIdForRoute(route)}
|
|
645
639
|
{...props}
|
|
646
|
-
name={
|
|
647
|
-
key={
|
|
640
|
+
name={navigationRouteName}
|
|
641
|
+
key={navigationRouteName}
|
|
648
642
|
options={(args) => {
|
|
649
643
|
// Only eager load generated components
|
|
650
644
|
const staticOptions = route.generated ? route.loadRoute()?.getNavOptions : null
|
|
@@ -227,17 +227,18 @@ export function globbedRoutesToRouteContext(
|
|
|
227
227
|
})
|
|
228
228
|
},
|
|
229
229
|
clearFile: (file: string) => {
|
|
230
|
-
hmrVersion++
|
|
231
230
|
const normalizedFile = file.replace(/\\/g, '/').replace(/^\//, '')
|
|
232
231
|
const routeId = moduleKeys.find(
|
|
233
232
|
(key) =>
|
|
234
233
|
routePaths[key].replace(/\\/g, '/').replace(/^\//, '') === normalizedFile
|
|
235
234
|
)
|
|
236
|
-
if (!routeId) return
|
|
235
|
+
if (!routeId) return false
|
|
237
236
|
|
|
237
|
+
hmrVersion++
|
|
238
238
|
delete loadedRoutes[routeId]
|
|
239
239
|
delete promises[routeId]
|
|
240
240
|
delete preloadedModules[routePaths[routeId]]
|
|
241
|
+
return true
|
|
241
242
|
},
|
|
242
243
|
getVersion: () => hmrVersion,
|
|
243
244
|
}
|
|
@@ -24,7 +24,7 @@ describe('getNavigateAction', () => {
|
|
|
24
24
|
key: 'page-1-Gc-TeIdZmx_jAcRD-SGcs',
|
|
25
25
|
},
|
|
26
26
|
],
|
|
27
|
-
|
|
27
|
+
retainedRouteKeys: [],
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
const action = getNavigateAction(actionState, navigationState)
|
|
@@ -36,6 +36,28 @@ describe('getNavigateAction', () => {
|
|
|
36
36
|
})
|
|
37
37
|
})
|
|
38
38
|
|
|
39
|
+
it('uses the focused route when the desired state includes a preloaded route', () => {
|
|
40
|
+
const actionState = {
|
|
41
|
+
index: 0,
|
|
42
|
+
routes: [{ name: 'page-2' }, { name: 'preloaded-page' }],
|
|
43
|
+
}
|
|
44
|
+
const navigationState = {
|
|
45
|
+
stale: false as const,
|
|
46
|
+
type: 'stack',
|
|
47
|
+
key: 'stack-pWRo04',
|
|
48
|
+
index: 0,
|
|
49
|
+
routeNames: ['page-1', 'page-2', 'preloaded-page'],
|
|
50
|
+
routes: [{ name: 'page-1', key: 'page-1-key' }],
|
|
51
|
+
retainedRouteKeys: [],
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
expect(getNavigateAction(actionState, navigationState)).toStrictEqual({
|
|
55
|
+
type: 'NAVIGATE',
|
|
56
|
+
target: 'stack-pWRo04',
|
|
57
|
+
payload: { key: undefined, name: 'page-2', params: {} },
|
|
58
|
+
})
|
|
59
|
+
})
|
|
60
|
+
|
|
39
61
|
it('handles params', () => {
|
|
40
62
|
const actionState = {
|
|
41
63
|
routes: [
|
|
@@ -61,7 +83,7 @@ describe('getNavigateAction', () => {
|
|
|
61
83
|
key: 'page-1-Gc-TeIdZmx_jAcRD-SGcs',
|
|
62
84
|
},
|
|
63
85
|
],
|
|
64
|
-
|
|
86
|
+
retainedRouteKeys: [],
|
|
65
87
|
}
|
|
66
88
|
|
|
67
89
|
const action = getNavigateAction(actionState, navigationState)
|
|
@@ -115,7 +137,7 @@ describe('getNavigateAction', () => {
|
|
|
115
137
|
key: 'index-Kyz4PdQ7ZAvE0XFhBWydM',
|
|
116
138
|
},
|
|
117
139
|
],
|
|
118
|
-
|
|
140
|
+
retainedRouteKeys: [],
|
|
119
141
|
}
|
|
120
142
|
|
|
121
143
|
const action = getNavigateAction(actionState, navigationState)
|
|
@@ -184,7 +206,7 @@ describe('getNavigateAction', () => {
|
|
|
184
206
|
key: 'index-Kyz4PdQ7ZAvE0XFhBWydM',
|
|
185
207
|
},
|
|
186
208
|
],
|
|
187
|
-
|
|
209
|
+
retainedRouteKeys: [],
|
|
188
210
|
}
|
|
189
211
|
|
|
190
212
|
const action = getNavigateAction(actionState, navigationState)
|
|
@@ -276,7 +298,7 @@ describe('getNavigateAction', () => {
|
|
|
276
298
|
},
|
|
277
299
|
},
|
|
278
300
|
],
|
|
279
|
-
|
|
301
|
+
retainedRouteKeys: [],
|
|
280
302
|
}
|
|
281
303
|
|
|
282
304
|
const action = getNavigateAction(actionState, navigationState)
|
|
@@ -315,7 +337,7 @@ describe('getNavigateAction', () => {
|
|
|
315
337
|
key: 'page-1-Gc-TeIdZmx_jAcRD-SGcs',
|
|
316
338
|
},
|
|
317
339
|
],
|
|
318
|
-
|
|
340
|
+
retainedRouteKeys: [],
|
|
319
341
|
}
|
|
320
342
|
|
|
321
343
|
const action = getNavigateAction(actionState, navigationState, 'PUSH')
|
|
@@ -34,7 +34,8 @@ export function getNavigateAction(
|
|
|
34
34
|
while (actionState && navigationState) {
|
|
35
35
|
const stateRoute = navigationState.routes[navigationState.index]
|
|
36
36
|
|
|
37
|
-
actionStateRoute =
|
|
37
|
+
actionStateRoute =
|
|
38
|
+
actionState.routes[actionState.index ?? actionState.routes.length - 1]
|
|
38
39
|
|
|
39
40
|
const childState = actionStateRoute.state
|
|
40
41
|
const nextNavigationState = stateRoute.state
|
|
@@ -54,7 +55,7 @@ export function getNavigateAction(
|
|
|
54
55
|
break
|
|
55
56
|
}
|
|
56
57
|
|
|
57
|
-
actionState = childState
|
|
58
|
+
actionState = childState as OneRouter.ResultState
|
|
58
59
|
navigationState = nextNavigationState as NavigationState
|
|
59
60
|
}
|
|
60
61
|
|
|
@@ -73,7 +74,9 @@ export function getNavigateAction(
|
|
|
73
74
|
payload.params = { ...actionStateRoute.params }
|
|
74
75
|
|
|
75
76
|
actionStateRoute =
|
|
76
|
-
actionStateRoute.state?.routes[
|
|
77
|
+
actionStateRoute.state?.routes[
|
|
78
|
+
actionStateRoute.state.index ?? actionStateRoute.state.routes.length - 1
|
|
79
|
+
]
|
|
77
80
|
|
|
78
81
|
payload.params ??= {}
|
|
79
82
|
payload = payload.params
|
|
@@ -103,7 +103,7 @@ function HeadlessStackView({
|
|
|
103
103
|
state.routes.slice(0, lastBaseIndex + 1).map((route) => route.key)
|
|
104
104
|
)
|
|
105
105
|
const baseFocusedKey = state.routes[lastBaseIndex]?.key
|
|
106
|
-
const overlayRoutes = state.routes.slice(lastBaseIndex + 1)
|
|
106
|
+
const overlayRoutes = state.routes.slice(lastBaseIndex + 1, state.index + 1)
|
|
107
107
|
|
|
108
108
|
return (
|
|
109
109
|
<Fragment>
|
|
@@ -27,7 +27,7 @@ function makeState(
|
|
|
27
27
|
routes,
|
|
28
28
|
type: 'stack',
|
|
29
29
|
stale: false,
|
|
30
|
-
|
|
30
|
+
retainedRouteKeys: [],
|
|
31
31
|
} as unknown as StackNavigationState<ParamListBase>
|
|
32
32
|
}
|
|
33
33
|
|
|
@@ -131,6 +131,18 @@ describe('convertStackStateToNonOverlayState', () => {
|
|
|
131
131
|
expect(out.routes).toHaveLength(0)
|
|
132
132
|
expect(out.index).toBe(0)
|
|
133
133
|
})
|
|
134
|
+
|
|
135
|
+
it('ignores preloaded routes after the focused index', () => {
|
|
136
|
+
const state = makeState(['home', 'sheet', 'preloaded'], 1)
|
|
137
|
+
const descriptors = makeDescriptors(['home', 'sheet', 'preloaded'], {
|
|
138
|
+
home: 'card',
|
|
139
|
+
sheet: 'formSheet',
|
|
140
|
+
preloaded: 'card',
|
|
141
|
+
})
|
|
142
|
+
const out = convertStackStateToNonOverlayState(state, descriptors)
|
|
143
|
+
expect(out.routes.map((route) => route.name)).toEqual(['home'])
|
|
144
|
+
expect(out.index).toBe(0)
|
|
145
|
+
})
|
|
134
146
|
})
|
|
135
147
|
|
|
136
148
|
describe('findLastNonOverlayIndex', () => {
|
|
@@ -150,4 +162,14 @@ describe('findLastNonOverlayIndex', () => {
|
|
|
150
162
|
const descriptors = makeDescriptors(['sheet'], { sheet: 'formSheet' })
|
|
151
163
|
expect(findLastNonOverlayIndex(state, descriptors)).toBe(-1)
|
|
152
164
|
})
|
|
165
|
+
|
|
166
|
+
it('does not treat a preloaded card as focused', () => {
|
|
167
|
+
const state = makeState(['home', 'sheet', 'preloaded'], 1)
|
|
168
|
+
const descriptors = makeDescriptors(['home', 'sheet', 'preloaded'], {
|
|
169
|
+
home: 'card',
|
|
170
|
+
sheet: 'formSheet',
|
|
171
|
+
preloaded: 'card',
|
|
172
|
+
})
|
|
173
|
+
expect(findLastNonOverlayIndex(state, descriptors)).toBe(0)
|
|
174
|
+
})
|
|
153
175
|
})
|
|
@@ -35,7 +35,8 @@ export function isTransparentOverlay(
|
|
|
35
35
|
|
|
36
36
|
/**
|
|
37
37
|
* Returns the underlying navigation state for NativeStackView with the
|
|
38
|
-
* trailing overlay suffix removed.
|
|
38
|
+
* trailing overlay suffix removed. Routes after `state.index` are preloaded
|
|
39
|
+
* routes in React Navigation 8, so they are not part of the visible stack.
|
|
39
40
|
*
|
|
40
41
|
* Important: we only strip the suffix of overlay routes at the top of the
|
|
41
42
|
* stack. Overlay routes that are SANDWICHED between cards (e.g. user
|
|
@@ -79,7 +80,7 @@ export function findLastNonOverlayIndex(
|
|
|
79
80
|
options: NativeStackNavigationOptions | undefined | null
|
|
80
81
|
) => boolean = isOverlayPresentation
|
|
81
82
|
): number {
|
|
82
|
-
for (let i = state.
|
|
83
|
+
for (let i = state.index; i >= 0; i--) {
|
|
83
84
|
if (!isOverlay(descriptors[state.routes[i]!.key]?.options)) {
|
|
84
85
|
return i
|
|
85
86
|
}
|
package/src/ui/README.md
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# One Headless UI Components
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Web-only headless UI components for the One framework.
|
|
4
4
|
|
|
5
5
|
## Overview
|
|
6
6
|
|
|
7
|
-
The headless tabs system provides complete control over tab navigation UI while maintaining full integration with One's file-based routing system.
|
|
7
|
+
The headless tabs system provides complete control over browser tab navigation UI while maintaining full integration with One's file-based routing system. These components render DOM elements and are completely unstyled. Use `Tabs` from `one` for React Navigation 8 tabs on iOS and Android.
|
|
8
8
|
|
|
9
9
|
## Installation
|
|
10
10
|
|
|
11
|
-
The UI components are available through the `one/ui` submodule
|
|
11
|
+
The web UI components are available through the `one/ui` submodule. Put a React Navigation `Tabs` layout in the route's `.native.tsx` sibling when the same route runs on native.
|
|
12
12
|
|
|
13
13
|
```tsx
|
|
14
14
|
import { Tabs, TabList, TabTrigger, TabSlot } from 'one/ui'
|
|
@@ -100,22 +100,14 @@ function CustomTabBar() {
|
|
|
100
100
|
const profile = useTabTrigger({ name: 'profile' })
|
|
101
101
|
|
|
102
102
|
return (
|
|
103
|
-
<
|
|
104
|
-
<
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
</Text>
|
|
108
|
-
</Pressable>
|
|
109
|
-
<Pressable {...profile.triggerProps}>
|
|
110
|
-
<Text style={profile.trigger?.isFocused && styles.active}>
|
|
111
|
-
Profile
|
|
112
|
-
</Text>
|
|
113
|
-
</Pressable>
|
|
114
|
-
</View>
|
|
103
|
+
<nav>
|
|
104
|
+
<button {...home.triggerProps}>Home</button>
|
|
105
|
+
<button {...profile.triggerProps}>Profile</button>
|
|
106
|
+
</nav>
|
|
115
107
|
)
|
|
116
108
|
}
|
|
117
109
|
```
|
|
118
110
|
|
|
119
111
|
## Example
|
|
120
112
|
|
|
121
|
-
See `/examples/one-basic/app/tabs/` for a working example with custom
|
|
113
|
+
See `/examples/one-basic/app/tabs/` for a working example with custom web tabs and an RN8 native sibling.
|
package/src/ui/Slot.tsx
CHANGED
|
@@ -1,43 +1,9 @@
|
|
|
1
1
|
import { Slot as RUISlot } from '@radix-ui/react-slot'
|
|
2
|
-
import {
|
|
3
|
-
type Component,
|
|
4
|
-
type ForwardRefExoticComponent,
|
|
5
|
-
forwardRef,
|
|
6
|
-
type RefAttributes,
|
|
7
|
-
useMemo,
|
|
8
|
-
} from 'react'
|
|
9
|
-
import { StyleSheet, type ViewProps } from 'react-native'
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* RadixUI has special logic to handle the merging of `style` and `className` props.
|
|
13
|
-
* On the web styles are not allowed so Radix does not handle this scenario.
|
|
14
|
-
* This could be fixed upstream (PR open), but it may not as RN is not their target
|
|
15
|
-
* platform.
|
|
16
|
-
*
|
|
17
|
-
* This shim calls `StyleSheet.flatten` on the styles before we render the <Slot />
|
|
18
|
-
*
|
|
19
|
-
* @see https://github.com/expo/expo/issues/31352
|
|
20
|
-
* @see https://github.com/radix-ui/primitives/issues/3107
|
|
21
|
-
* @param Component
|
|
22
|
-
* @returns
|
|
23
|
-
*/
|
|
24
|
-
function ShimSlotForReactNative(Component: typeof RUISlot): typeof RUISlot {
|
|
25
|
-
return forwardRef(function RNSlotHOC({ style, ...props }, ref) {
|
|
26
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
27
|
-
if (Array.isArray(style)) {
|
|
28
|
-
throw new Error(
|
|
29
|
-
'Slot does not support array styles. Use StyleSheet.flatten() or an object style instead.'
|
|
30
|
-
)
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
style = useMemo(() => StyleSheet.flatten(style), [style])
|
|
34
|
-
return <Component ref={ref} {...props} style={style} />
|
|
35
|
-
})
|
|
36
|
-
}
|
|
2
|
+
import type { ForwardRefExoticComponent, HTMLAttributes, RefAttributes } from 'react'
|
|
37
3
|
|
|
38
4
|
export interface Slot<
|
|
39
|
-
Props =
|
|
40
|
-
Ref =
|
|
5
|
+
Props = HTMLAttributes<HTMLElement>,
|
|
6
|
+
Ref = HTMLElement,
|
|
41
7
|
> extends ForwardRefExoticComponent<Props & RefAttributes<Ref>> {}
|
|
42
8
|
|
|
43
|
-
export const Slot
|
|
9
|
+
export const Slot = RUISlot as Slot
|
package/src/ui/TabContext.tsx
CHANGED
|
@@ -24,7 +24,6 @@ export type ExpoTabsNavigatorScreenOptions = {
|
|
|
24
24
|
|
|
25
25
|
export type ExpoTabsNavigatorOptions = DefaultNavigatorOptions<
|
|
26
26
|
ParamListBase,
|
|
27
|
-
string | undefined,
|
|
28
27
|
TabNavigationState<ParamListBase>,
|
|
29
28
|
ExpoTabsScreenOptions,
|
|
30
29
|
TabNavigationEventMap,
|
|
@@ -37,20 +36,16 @@ export type ExpoTabsNavigatorOptions = DefaultNavigatorOptions<
|
|
|
37
36
|
export type ExpoTabsNavigationProp<
|
|
38
37
|
ParamList extends ParamListBase,
|
|
39
38
|
RouteName extends keyof ParamList = keyof ParamList,
|
|
40
|
-
NavigatorID extends string | undefined = undefined,
|
|
41
39
|
> = NavigationProp<
|
|
42
40
|
ParamList,
|
|
43
41
|
RouteName,
|
|
44
|
-
NavigatorID,
|
|
45
42
|
TabNavigationState<ParamListBase>,
|
|
46
43
|
ExpoTabsScreenOptions,
|
|
47
44
|
TabNavigationEventMap
|
|
48
45
|
>
|
|
49
46
|
|
|
50
|
-
export type ExpoTabsScreenOptions = Pick<
|
|
51
|
-
|
|
52
|
-
'title' | 'lazy' | 'freezeOnBlur'
|
|
53
|
-
> & {
|
|
47
|
+
export type ExpoTabsScreenOptions = Pick<BottomTabNavigationOptions, 'title' | 'lazy'> & {
|
|
48
|
+
freezeOnBlur?: boolean
|
|
54
49
|
params?: object
|
|
55
50
|
title: string
|
|
56
51
|
action: NavigationAction
|
package/src/ui/TabList.tsx
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import type { ComponentProps, ReactElement } from 'react'
|
|
2
|
-
import { StyleSheet, View, type ViewProps } from 'react-native'
|
|
1
|
+
import type { ComponentProps, HTMLAttributes, ReactElement } from 'react'
|
|
3
2
|
|
|
4
|
-
import {
|
|
3
|
+
import { Slot } from './Slot'
|
|
5
4
|
|
|
6
|
-
export type TabListProps =
|
|
7
|
-
/** Forward props to child component and removes the extra `<
|
|
5
|
+
export type TabListProps = HTMLAttributes<HTMLElement> & {
|
|
6
|
+
/** Forward props to child component and removes the extra `<nav>`. Useful for custom wrappers. */
|
|
8
7
|
asChild?: boolean
|
|
9
8
|
}
|
|
10
9
|
|
|
@@ -21,9 +20,9 @@ export type TabListProps = ViewProps & {
|
|
|
21
20
|
* </Tabs>
|
|
22
21
|
* ```
|
|
23
22
|
*/
|
|
24
|
-
export function TabList({ asChild,
|
|
25
|
-
const Comp = asChild ?
|
|
26
|
-
return <Comp
|
|
23
|
+
export function TabList({ asChild, ...props }: TabListProps) {
|
|
24
|
+
const Comp = asChild ? Slot : 'nav'
|
|
25
|
+
return <Comp {...props} />
|
|
27
26
|
}
|
|
28
27
|
|
|
29
28
|
/**
|
|
@@ -34,14 +33,3 @@ export function isTabList(
|
|
|
34
33
|
): child is ReactElement<ComponentProps<typeof TabList>> {
|
|
35
34
|
return child.type === TabList
|
|
36
35
|
}
|
|
37
|
-
|
|
38
|
-
const styles = StyleSheet.create({
|
|
39
|
-
tabList: {
|
|
40
|
-
flexDirection: 'row',
|
|
41
|
-
justifyContent: 'space-between',
|
|
42
|
-
},
|
|
43
|
-
tabTrigger: {
|
|
44
|
-
flexDirection: 'row',
|
|
45
|
-
justifyContent: 'space-between',
|
|
46
|
-
},
|
|
47
|
-
})
|
package/src/ui/TabSlot.tsx
CHANGED
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Platform, StyleSheet } from 'react-native'
|
|
3
|
-
import { Screen, ScreenContainer } from 'react-native-screens'
|
|
1
|
+
import { Activity, Fragment, type ReactElement, useState } from 'react'
|
|
4
2
|
import { useNavigatorContext } from '../views/Navigator'
|
|
5
3
|
import { TabContext, type TabsDescriptor } from './TabContext'
|
|
6
4
|
import type { TabListProps } from './TabList'
|
|
7
5
|
|
|
8
|
-
export type TabSlotProps =
|
|
9
|
-
/**
|
|
10
|
-
* Remove inactive screens.
|
|
11
|
-
*/
|
|
6
|
+
export type TabSlotProps = {
|
|
7
|
+
/** Remove inactive screens from the visible DOM tree. */
|
|
12
8
|
detachInactiveScreens?: boolean
|
|
13
|
-
/**
|
|
14
|
-
* Override how the `Screen` component is rendered.
|
|
15
|
-
*/
|
|
9
|
+
/** Override how each screen is rendered. */
|
|
16
10
|
renderFn?: typeof defaultTabsSlotRender
|
|
17
11
|
}
|
|
18
12
|
|
|
@@ -51,8 +45,7 @@ export type TabsSlotRenderOptions = {
|
|
|
51
45
|
* ```
|
|
52
46
|
*/
|
|
53
47
|
export function useTabSlot({
|
|
54
|
-
detachInactiveScreens =
|
|
55
|
-
style,
|
|
48
|
+
detachInactiveScreens = true,
|
|
56
49
|
renderFn = defaultTabsSlotRender,
|
|
57
50
|
}: TabSlotProps = {}) {
|
|
58
51
|
const { state, descriptorsRef } = useNavigatorContext()
|
|
@@ -65,11 +58,7 @@ export function useTabSlot({
|
|
|
65
58
|
}
|
|
66
59
|
|
|
67
60
|
return (
|
|
68
|
-
<
|
|
69
|
-
enabled={detachInactiveScreens}
|
|
70
|
-
hasTwoStates
|
|
71
|
-
style={[styles.screenContainer, style]}
|
|
72
|
-
>
|
|
61
|
+
<Fragment>
|
|
73
62
|
{state.routes.map((route, index) => {
|
|
74
63
|
const descriptor = descriptors[route.key] as unknown as TabsDescriptor
|
|
75
64
|
|
|
@@ -84,7 +73,7 @@ export function useTabSlot({
|
|
|
84
73
|
</TabContext.Provider>
|
|
85
74
|
)
|
|
86
75
|
})}
|
|
87
|
-
</
|
|
76
|
+
</Fragment>
|
|
88
77
|
)
|
|
89
78
|
}
|
|
90
79
|
|
|
@@ -114,28 +103,20 @@ export function defaultTabsSlotRender(
|
|
|
114
103
|
descriptor: TabsDescriptor,
|
|
115
104
|
{ isFocused, loaded, detachInactiveScreens }: TabsSlotRenderOptions
|
|
116
105
|
) {
|
|
117
|
-
const { lazy = true, unmountOnBlur
|
|
106
|
+
const { lazy = true, unmountOnBlur } = descriptor.options
|
|
118
107
|
|
|
119
|
-
if (unmountOnBlur && !isFocused)
|
|
120
|
-
|
|
121
|
-
}
|
|
108
|
+
if ((unmountOnBlur || detachInactiveScreens) && !isFocused) return null
|
|
109
|
+
if (lazy && !loaded && !isFocused) return null
|
|
122
110
|
|
|
123
|
-
if (
|
|
124
|
-
|
|
125
|
-
|
|
111
|
+
if (!isFocused) {
|
|
112
|
+
return (
|
|
113
|
+
<Activity key={descriptor.route.key} mode="hidden">
|
|
114
|
+
{descriptor.render()}
|
|
115
|
+
</Activity>
|
|
116
|
+
)
|
|
126
117
|
}
|
|
127
118
|
|
|
128
|
-
return (
|
|
129
|
-
<Screen
|
|
130
|
-
key={descriptor.route.key}
|
|
131
|
-
enabled={detachInactiveScreens}
|
|
132
|
-
activityState={isFocused ? 2 : 0}
|
|
133
|
-
freezeOnBlur={freezeOnBlur}
|
|
134
|
-
style={[styles.screen, isFocused ? styles.focused : styles.unfocused]}
|
|
135
|
-
>
|
|
136
|
-
{descriptor.render()}
|
|
137
|
-
</Screen>
|
|
138
|
-
)
|
|
119
|
+
return <Fragment key={descriptor.route.key}>{descriptor.render()}</Fragment>
|
|
139
120
|
}
|
|
140
121
|
|
|
141
122
|
/**
|
|
@@ -144,27 +125,3 @@ export function defaultTabsSlotRender(
|
|
|
144
125
|
export function isTabSlot(child: ReactElement<any>): child is ReactElement<TabListProps> {
|
|
145
126
|
return child.type === TabSlot
|
|
146
127
|
}
|
|
147
|
-
|
|
148
|
-
const styles = StyleSheet.create({
|
|
149
|
-
screen: {
|
|
150
|
-
flex: 1,
|
|
151
|
-
position: 'relative',
|
|
152
|
-
height: '100%',
|
|
153
|
-
},
|
|
154
|
-
screenContainer: {
|
|
155
|
-
flexShrink: 0,
|
|
156
|
-
flexGrow: 1,
|
|
157
|
-
},
|
|
158
|
-
focused: {
|
|
159
|
-
zIndex: 1,
|
|
160
|
-
display: 'flex',
|
|
161
|
-
flexShrink: 0,
|
|
162
|
-
flexGrow: 1,
|
|
163
|
-
},
|
|
164
|
-
unfocused: {
|
|
165
|
-
zIndex: -1,
|
|
166
|
-
display: 'none',
|
|
167
|
-
flexShrink: 1,
|
|
168
|
-
flexGrow: 0,
|
|
169
|
-
},
|
|
170
|
-
})
|