private isReachable()

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;
    }