From d07ba927f96f80f8703d3f2a8952546fa195ac1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Thu, 18 Jul 2024 03:10:14 +0200 Subject: [PATCH] Working AnimatedOutlet --- bun.lockb | Bin 291028 -> 293283 bytes packages/webui/package.json | 6 ++++- packages/webui/src/AnimatedOutlet.tsx | 34 ++++++++++++++++++++++++++ packages/webui/src/routes/__root.tsx | 19 ++++++++++++-- 4 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 packages/webui/src/AnimatedOutlet.tsx diff --git a/bun.lockb b/bun.lockb index 51a98afa2280cb1f39603aaa61ecfa15ecde65ef..5ee83fb3f014faa7284eb7f56a2c919e83475539 100755 GIT binary patch delta 35970 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 delta 35204 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 {} +} + + +export const AnimatedOutlet = forwardRef((props, ref) => { + + const RouterContext = getRouterContext() + const routerContext = useContext(RouterContext) + const renderedContext = useRef(routerContext) + + const isPresent = useIsPresent() + if (isPresent) + renderedContext.current = cloneDeep(routerContext) + + + return ( + + + + + + ) + +}) diff --git a/packages/webui/src/routes/__root.tsx b/packages/webui/src/routes/__root.tsx index 9ffcb49..ceaa5c9 100644 --- a/packages/webui/src/routes/__root.tsx +++ b/packages/webui/src/routes/__root.tsx @@ -1,5 +1,7 @@ -import { Link, Outlet, createRootRoute } from "@tanstack/react-router" +import { Link, createRootRoute, useMatch, useMatches } from "@tanstack/react-router" +import { AnimatePresence } from "framer-motion" import { Suspense, lazy } from "react" +import { AnimatedOutlet } from "../AnimatedOutlet" const TanStackRouterDevtools = process.env.NODE_ENV === "production" @@ -10,6 +12,12 @@ const TanStackRouterDevtools = process.env.NODE_ENV === "production" export function Root() { + + const matches = useMatches() + const match = useMatch({ strict: false }) + const nextMatch = matches[ matches.findIndex(d => d.id === match.id) + 1 ] + + return <>
@@ -22,11 +30,18 @@ export function Root() {
- + + +
+ } export const Route = createRootRoute({ component: Root })