in src/visual.ts [975:1011]
private isReachable(a: ForceGraphNode, b: ForceGraphNode): boolean {
if (a.name === b.name || this.data.linkedByName[a.name + "," + b.name]) {
return true;
}
let visited = {};
for (let name in this.data.nodes) {
visited[name] = false;
}
visited[a.name] = true;
let stack = [];
stack.push(a.name);
while (stack.length > 0) {
let cur = stack.pop(),
node = this.data.nodes[cur];
if (node && node.adj) {
for (let nb in node.adj) {
if (nb === b.name) {
return true;
}
if (!visited[nb]) {
visited[nb] = true;
stack.push(nb);
}
}
}
}
return false;
}