review: address feedback — update navigation tree on cut/paste
When nodes with subgraphs are cut and pasted to a different graph, reparent their tree entries so the sidebar tree and breadcrumbs reflect the new hierarchy. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -62,6 +62,7 @@ export default function NodeContextMenu({
|
||||
const graphsById = useGraphsStore((s) => (s as { graphsById: Map<string, GraphModel> }).graphsById);
|
||||
const addTreeNode = useGraphLayersTreeStore(store => store.add);
|
||||
const removeTreeNode = useGraphLayersTreeStore(store => store.remove);
|
||||
const moveTreeNode = useGraphLayersTreeStore(store => store.move);
|
||||
const setCut = useCutStore(store => store.setCut);
|
||||
const clearCut = useCutStore(store => store.clearCut);
|
||||
|
||||
@@ -165,6 +166,22 @@ export default function NodeContextMenu({
|
||||
}
|
||||
}
|
||||
|
||||
// Update navigation tree: reparent tree nodes from source graph to target graph.
|
||||
// A tree node belongs to the source graph when its tree parent matches sourceGraphId
|
||||
// (or is a root node when sourceGraphId is 'main').
|
||||
const treeState = useGraphLayersTreeStore.getState();
|
||||
const effectiveSourceParent = cutState.sourceGraphId === 'main' ? undefined : cutState.sourceGraphId ?? undefined;
|
||||
const newTreeParent = graphContextValue.graphId === 'main' ? undefined : graphContextValue.graphId;
|
||||
|
||||
for (const nodeId of cutState.cutNodeIds) {
|
||||
if (treeState.nodesFlatById.has(nodeId)) {
|
||||
const nodeTreeParent = treeState.parentIdByChildId.get(nodeId);
|
||||
if (nodeTreeParent === effectiveSourceParent) {
|
||||
moveTreeNode(nodeId, newTreeParent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
clearCut();
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user