import type { MindEdge, MindNode } from "@mind-map/shared"; import { useEffect, useMemo, useState } from "react"; import { NodePropEditor } from "./node-props"; import { useAppStore } from "./store"; type ApplyOps = ReturnType["applyOps"]; export function NodeInspector() { const canvas = useAppStore((s) => s.canvas); const nodes = useAppStore((s) => s.nodes); const edges = useAppStore((s) => s.edges); const selectedIds = useAppStore((s) => s.selectedIds); const selectedEdgeId = useAppStore((s) => s.selectedEdgeId); const applyOps = useAppStore((s) => s.applyOps); const mode = canvas?.prefs.inspectorMode ?? "selection"; const node = useMemo( () => (selectedIds[0] ? nodes.find((n) => n.id === selectedIds[0]) : undefined), [nodes, selectedIds], ); const edge = useMemo( () => (selectedEdgeId ? edges.find((e) => e.id === selectedEdgeId) : undefined), [edges, selectedEdgeId], ); if (mode === "selection" && !node && !edge) { return
选中节点或边以编辑属性
; } if (edge && !node) { return ; } if (!node) { return
选中节点或边以编辑属性
; } return ; } function NodeForm({ node, applyOps }: { node: MindNode; applyOps: ApplyOps }) { return (
节点属性
); } function EdgeForm({ edge, applyOps }: { edge: MindEdge; applyOps: ApplyOps }) { const [tagsText, setTagsText] = useState(edge.tags?.join(", ") ?? ""); useEffect(() => { setTagsText(edge.tags?.join(", ") ?? ""); }, [edge.id, edge.version, edge.tags]); return (
边属性