重构大量文件

This commit is contained in:
2026-02-24 10:50:11 +08:00
parent dd97cf6a2c
commit 9efdf060f5
29 changed files with 264 additions and 133 deletions
+7 -9
View File
@@ -1,15 +1,13 @@
"use client";
import { Page, useEditorStore } from "@/lib/store";
import { ChevronRight, FileText, Folder, FolderOpen, MoreHorizontal, File, Plus, Trash2, FilePlus, FolderPlus, Download } from "lucide-react";
import { ChevronRight, FileText, Folder, FolderOpen, MoreHorizontal, Trash2, FilePlus, FolderPlus, Download, Upload } from "lucide-react";
import { cn } from "@/lib/utils";
import { useState } from "react";
import * as DropdownMenu from "@radix-ui/react-dropdown-menu";
import { exportPageAsMarkdown, exportFolderAsZip } from "@/lib/export";
import { useRouter, usePathname } from "next/navigation";
import { useImport } from "@/components/import-context";
import { Upload } from "lucide-react";
import { useDroppable } from "@dnd-kit/core";
import { useSortable, SortableContext, verticalListSortingStrategy } from "@dnd-kit/sortable";
import { CSS } from "@dnd-kit/utilities";
@@ -24,7 +22,7 @@ function TreeNode({ node, pages, level, expanded, toggleExpand }: {
pages: Page[],
level: number,
expanded: Record<string, boolean>,
toggleExpand: (id: string, e: React.MouseEvent) => void
toggleExpand: (id: string) => void
}) {
const { activePageId, setActivePageId, addPage, deletePage } = useEditorStore();
const router = useRouter();
@@ -75,7 +73,7 @@ function TreeNode({ node, pages, level, expanded, toggleExpand }: {
onPointerDown={(e) => e.stopPropagation()} // Prevent drag start on expand button
onClick={(e) => {
e.stopPropagation();
toggleExpand(node.id, e);
toggleExpand(node.id);
}}
className={cn(
"p-0.5 rounded-sm hover:bg-muted-foreground/20 transition-colors",
@@ -122,7 +120,7 @@ function TreeNode({ node, pages, level, expanded, toggleExpand }: {
// Ideally we'd find the mid-point, but simpler logic: just +1 and let sort handle basic "after"
const order = node.type === 'folder' ? undefined : (node.order || 0) + 1;
addPage(targetParentId, 'file', undefined, order);
if (node.type === 'folder') toggleExpand(node.id, e);
if (node.type === 'folder') toggleExpand(node.id);
}}
>
<FilePlus size={14} />
@@ -135,7 +133,7 @@ function TreeNode({ node, pages, level, expanded, toggleExpand }: {
const targetParentId = node.type === 'folder' ? node.id : node.parentId;
const order = node.type === 'folder' ? undefined : (node.order || 0) + 1;
addPage(targetParentId, 'folder', undefined, order);
if (node.type === 'folder') toggleExpand(node.id, e);
if (node.type === 'folder') toggleExpand(node.id);
}}
>
<FolderPlus size={14} />
@@ -147,7 +145,7 @@ function TreeNode({ node, pages, level, expanded, toggleExpand }: {
e.stopPropagation();
const targetParentId = node.type === 'folder' ? node.id : node.parentId;
triggerImport(targetParentId);
if (node.type === 'folder') toggleExpand(node.id, e);
if (node.type === 'folder') toggleExpand(node.id);
}}
>
<Upload size={14} />
@@ -201,7 +199,7 @@ export function TreeView({ pages, parentId, level = 0 }: TreeViewProps) {
// Simple state for expansion
const [expanded, setExpanded] = useState<Record<string, boolean>>({});
const toggleExpand = (id: string, e: React.MouseEvent) => {
const toggleExpand = (id: string) => {
setExpanded(prev => ({ ...prev, [id]: !prev[id] }));
};