in src/models/GraphBundler.js [60:85]
groupMergeableNodes(nodes) {
const linkLookup = this.linkLookup;
return chain(nodes)
.groupBy(n => n.data.entity)
.values()
.filter(g => g.length > 1)
.flatMap(g => {
const subgroups = [[g[0]]];
for (let i = 1; i < g.length; i++) {
const node = g[i];
for (let j = 0; j < subgroups.length; j++) {
const subgroup = subgroups[j];
if (subgroup.every(n =>
!linkLookup[[n.id, node.id].join(',')]
&& !linkLookup[[n.id, node.id].join(',')])
) {
subgroup.push(node);
continue;
}
subgroups.push([node]);
}
}
return subgroups.filter(subgroup => subgroup.length > 1);
})
.value();
}