重构大量文件
This commit is contained in:
@@ -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] }));
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user