groupMergeableNodes()

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