"use client"; import { useMemo, useState } from "react"; import { useTranslations } from "next-intl"; import { useLessonPlanEditor } from "../../hooks/use-lesson-plan-editor"; import { TreeNodeRow } from "./tree-node-row"; import type { Block, InteractionBlockData, LessonPlanNode, TextbookContentNode } from "../../types"; export function StructureTree() { const t = useTranslations("lessonPreparation"); const doc = useLessonPlanEditor((s) => s.doc); const expandedNodeIds = useLessonPlanEditor((s) => s.expandedNodeIds); const addNode = useLessonPlanEditor((s) => s.addNode); const [expandedTreeNodes, setExpandedTreeNodes] = useState>(new Set()); // V1:默认添加 rich_text 节点(V2 接入节点类型选择对话框) const onAddNode = () => { const id = addNode("rich_text"); // 自动选中新节点(addNode 内部已设置 selectedNodeId) void id; }; const textbookNode = doc.nodes.find((n): n is TextbookContentNode => n.type === "textbook_content"); const teachingNodes = useMemo( () => doc.nodes .filter((n): n is LessonPlanNode => n.type !== "textbook_content") .sort((a, b) => a.order - b.order), [doc.nodes], ); const toggleTreeNode = (id: string) => { setExpandedTreeNodes((prev) => { const next = new Set(prev); if (next.has(id)) next.delete(id); else next.add(id); return next; }); }; return ( ); }