From f1abc51a1ad5ded29e893e51c3675cad7d12a70a Mon Sep 17 00:00:00 2001 From: AkaraChen Date: Sat, 30 May 2026 12:09:22 +0800 Subject: [PATCH 1/3] feat(terminal): support file tree path drops --- src/features/projects/FileTreePanel.test.tsx | 90 +++++++++- src/features/projects/FileTreePanel.tsx | 100 ++++++++++- src/features/terminal/TabStrip.tsx | 10 +- src/features/terminal/TerminalTabs.test.tsx | 168 +++++++++++++++++++ src/features/terminal/TerminalTabs.tsx | 61 ++++++- src/shared/lib/fileTreeTerminalDrop.test.ts | 56 +++++++ src/shared/lib/fileTreeTerminalDrop.ts | 106 ++++++++++++ src/test/setup.ts | 1 + 8 files changed, 584 insertions(+), 8 deletions(-) create mode 100644 src/features/terminal/TerminalTabs.test.tsx create mode 100644 src/shared/lib/fileTreeTerminalDrop.test.ts create mode 100644 src/shared/lib/fileTreeTerminalDrop.ts diff --git a/src/features/projects/FileTreePanel.test.tsx b/src/features/projects/FileTreePanel.test.tsx index 140d9b8b..610cd331 100644 --- a/src/features/projects/FileTreePanel.test.tsx +++ b/src/features/projects/FileTreePanel.test.tsx @@ -7,9 +7,15 @@ import { screen, waitFor, } from "@testing-library/react"; -import type { KeyboardEventHandler, MouseEventHandler, ReactNode } from "react"; +import type { + DragEventHandler, + KeyboardEventHandler, + MouseEventHandler, + ReactNode, +} from "react"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { appSystem } from "@/theme/system"; +import { FILE_TREE_TERMINAL_DROP_MIME } from "@/shared/lib/fileTreeTerminalDrop"; import FileTreePanel from "./FileTreePanel"; import { useCreateFileTreePath, @@ -85,11 +91,13 @@ vi.mock("@/shared/lib/clipboard", () => ({ vi.mock("@pierre/trees/react", () => ({ FileTree: ({ onClick, + onDragStart, onKeyUp, onMouseDown, renderContextMenu, }: { onClick?: MouseEventHandler; + onDragStart?: DragEventHandler; onKeyUp?: KeyboardEventHandler; onMouseDown?: MouseEventHandler; renderContextMenu?: ( @@ -120,6 +128,9 @@ vi.mock("@pierre/trees/react", () => ({ } onClick?.(event); }} + onDragStart={ + onDragStart as DragEventHandler + } onMouseDown={ onMouseDown as MouseEventHandler } @@ -130,6 +141,9 @@ vi.mock("@pierre/trees/react", () => ({