feat(kernel): complete tree-first graph tasks 074-080
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
"use client";
|
||||
|
||||
import type { DocumentNode } from "@/lib/documents";
|
||||
import type { SidebarTreeNode } from "@/lib/kernel-sidebar";
|
||||
import type { MediaAsset } from "@/types/media";
|
||||
import type { FileTreeRow } from "./types";
|
||||
import { makeAssetFolderRowId, makeAssetRowId, makeDocRowId, makeIndexRowId } from "./types";
|
||||
@@ -12,7 +12,7 @@ export function buildVisibleRows({
|
||||
assetChildrenByAssetId,
|
||||
expandedAssetFolderIds,
|
||||
}: {
|
||||
nodes: DocumentNode[];
|
||||
nodes: SidebarTreeNode[];
|
||||
expanded: Set<string>;
|
||||
assetsByDoc: Record<string, MediaAsset[]>;
|
||||
assetChildrenByAssetId?: Record<string, MediaAsset[]>;
|
||||
@@ -21,7 +21,7 @@ export function buildVisibleRows({
|
||||
const rows: FileTreeRow[] = [];
|
||||
const visitedDocIds = new Set<string>();
|
||||
|
||||
const walk = (node: DocumentNode, depth: number) => {
|
||||
const walk = (node: SidebarTreeNode, depth: number) => {
|
||||
// 防御性处理:上游数据异常时(例如同一 docId 在树中重复出现),避免生成重复 rowId 导致 React key 冲突。
|
||||
// 同时也能避免潜在的“循环引用/重复引用”导致的递归问题。
|
||||
if (visitedDocIds.has(node.id)) return;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
"use client";
|
||||
|
||||
import type { DocumentNode } from "@/lib/documents";
|
||||
import type { SidebarTreeNode } from "@/lib/kernel-sidebar";
|
||||
import type { MediaAsset } from "@/types/media";
|
||||
|
||||
export type FileTreeRowKind = "doc" | "index" | "asset" | "asset-folder";
|
||||
@@ -60,7 +60,7 @@ export type FileTreeRow =
|
||||
depth: number;
|
||||
docId: string;
|
||||
parentDocId: string | null;
|
||||
node: DocumentNode;
|
||||
node: SidebarTreeNode;
|
||||
hasChildren: boolean;
|
||||
isExpanded: boolean;
|
||||
}
|
||||
@@ -70,7 +70,7 @@ export type FileTreeRow =
|
||||
depth: number;
|
||||
docId: string;
|
||||
parentDocId: string;
|
||||
node: DocumentNode;
|
||||
node: SidebarTreeNode;
|
||||
}
|
||||
| {
|
||||
kind: "asset-folder";
|
||||
|
||||
Reference in New Issue
Block a user