Fix: Cut and Paste functionality #9

Merged
tymurbaniak merged 3 commits from claude/issue-8 into main 2026-03-26 01:00:42 +00:00
Showing only changes of commit 63e204840f - Show all commits

View File

@@ -112,16 +112,20 @@ export default function NodeContextMenu({
? selectedNodeIds ? selectedNodeIds
: [nodeContext.nodeId]; : [nodeContext.nodeId];
// Also include nodes reachable by outgoing edges from base nodes // BFS to collect all nodes reachable via outgoing edges from base nodes (all hops)
const baseIdSet = new Set(baseIds); const visited = new Set(baseIds);
const linkedIds = new Set<string>(); const queue = [...baseIds];
for (const nodeId of baseIds) { while (queue.length > 0) {
const nodeId = queue.shift()!;
currentGraph.edges currentGraph.edges
.filter(e => e.from === nodeId && !baseIdSet.has(e.to)) .filter(e => e.from === nodeId && !visited.has(e.to))
.forEach(e => linkedIds.add(e.to)); .forEach(e => {
visited.add(e.to);
queue.push(e.to);
});
} }
const allCutIds = [...baseIds, ...linkedIds]; const allCutIds = [...visited];
const allCutIdSet = new Set(allCutIds); const allCutIdSet = new Set(allCutIds);
const cutNodes = currentGraph.nodes.filter(n => allCutIdSet.has(n.id)); const cutNodes = currentGraph.nodes.filter(n => allCutIdSet.has(n.id));