react-planner-viewer
Version:
react-planner-viewer is a React Component for view plans builded with react-planner in 2D mode
33 lines (28 loc) • 3.5 kB
JavaScript
;
function getEdgesOfSubgraphs(subgraphs, graph) {
var edges = [];
subgraphs.forEach(function (component) {
edges.push([]);
var vertices = getVerticesFromBiconnectedComponent(component);
var inserted = [];
vertices.forEach(function (vertex) {
var adjacents = graph.adj[vertex];
adjacents.forEach(function (adj) {
if (vertex <= adj && vertices.has(adj)) {
edges[edges.length - 1].push([vertex, adj]);
}
});
});
});
return edges;
}
function getVerticesFromBiconnectedComponent(component) {
var vertices = new Set();
component.forEach(function (edge) {
vertices.add(edge.u);
vertices.add(edge.v);
});
return vertices;
}
module.exports = getEdgesOfSubgraphs;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9nZXQtZWRnZXMtb2Ytc3ViZ3JhcGhzLmpzIl0sIm5hbWVzIjpbImdldEVkZ2VzT2ZTdWJncmFwaHMiLCJzdWJncmFwaHMiLCJncmFwaCIsImVkZ2VzIiwiZm9yRWFjaCIsInB1c2giLCJ2ZXJ0aWNlcyIsImdldFZlcnRpY2VzRnJvbUJpY29ubmVjdGVkQ29tcG9uZW50IiwiY29tcG9uZW50IiwiaW5zZXJ0ZWQiLCJhZGphY2VudHMiLCJhZGoiLCJ2ZXJ0ZXgiLCJoYXMiLCJsZW5ndGgiLCJTZXQiLCJhZGQiLCJlZGdlIiwidSIsInYiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOztBQUFBLFNBQVNBLG1CQUFULENBQTZCQyxTQUE3QixFQUF3Q0MsS0FBeEMsRUFBK0M7O0FBRTNDLFFBQUlDLFFBQVEsRUFBWjs7QUFFQUYsY0FBVUcsT0FBVixDQUFrQixxQkFBYTtBQUMzQkQsY0FBTUUsSUFBTixDQUFXLEVBQVg7QUFDQSxZQUFJQyxXQUFXQyxvQ0FBb0NDLFNBQXBDLENBQWY7QUFDQSxZQUFJQyxXQUFXLEVBQWY7QUFDQUgsaUJBQVNGLE9BQVQsQ0FBaUIsa0JBQVU7QUFDdkIsZ0JBQUlNLFlBQVlSLE1BQU1TLEdBQU4sQ0FBVUMsTUFBVixDQUFoQjtBQUNBRixzQkFBVU4sT0FBVixDQUFrQixlQUFPO0FBQ3JCLG9CQUFJUSxVQUFVRCxHQUFWLElBQWlCTCxTQUFTTyxHQUFULENBQWFGLEdBQWIsQ0FBckIsRUFBd0M7QUFDcENSLDBCQUFNQSxNQUFNVyxNQUFOLEdBQWUsQ0FBckIsRUFBd0JULElBQXhCLENBQTZCLENBQUNPLE1BQUQsRUFBUUQsR0FBUixDQUE3QjtBQUNIO0FBQ0osYUFKRDtBQUtILFNBUEQ7QUFRSCxLQVpEO0FBYUEsV0FBT1IsS0FBUDtBQUVIOztBQUVELFNBQVNJLG1DQUFULENBQTZDQyxTQUE3QyxFQUF3RDtBQUNwRCxRQUFJRixXQUFXLElBQUlTLEdBQUosRUFBZjtBQUNBUCxjQUFVSixPQUFWLENBQWtCLGdCQUFRO0FBQ3RCRSxpQkFBU1UsR0FBVCxDQUFhQyxLQUFLQyxDQUFsQjtBQUNBWixpQkFBU1UsR0FBVCxDQUFhQyxLQUFLRSxDQUFsQjtBQUNILEtBSEQ7QUFJQSxXQUFPYixRQUFQO0FBQ0g7O0FBRURjLE9BQU9DLE9BQVAsR0FBaUJyQixtQkFBakIiLCJmaWxlIjoiZ2V0LWVkZ2VzLW9mLXN1YmdyYXBocy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGdldEVkZ2VzT2ZTdWJncmFwaHMoc3ViZ3JhcGhzLCBncmFwaCkge1xuXG4gICAgbGV0IGVkZ2VzID0gW107XG5cbiAgICBzdWJncmFwaHMuZm9yRWFjaChjb21wb25lbnQgPT4ge1xuICAgICAgICBlZGdlcy5wdXNoKFtdKTtcbiAgICAgICAgbGV0IHZlcnRpY2VzID0gZ2V0VmVydGljZXNGcm9tQmljb25uZWN0ZWRDb21wb25lbnQoY29tcG9uZW50KTtcbiAgICAgICAgbGV0IGluc2VydGVkID0gW107XG4gICAgICAgIHZlcnRpY2VzLmZvckVhY2godmVydGV4ID0+IHtcbiAgICAgICAgICAgIGxldCBhZGphY2VudHMgPSBncmFwaC5hZGpbdmVydGV4XTtcbiAgICAgICAgICAgIGFkamFjZW50cy5mb3JFYWNoKGFkaiA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHZlcnRleCA8PSBhZGogJiYgdmVydGljZXMuaGFzKGFkaikpIHtcbiAgICAgICAgICAgICAgICAgICAgZWRnZXNbZWRnZXMubGVuZ3RoIC0gMV0ucHVzaChbdmVydGV4LGFkal0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gZWRnZXM7XG5cbn1cblxuZnVuY3Rpb24gZ2V0VmVydGljZXNGcm9tQmljb25uZWN0ZWRDb21wb25lbnQoY29tcG9uZW50KSB7XG4gICAgbGV0IHZlcnRpY2VzID0gbmV3IFNldCgpO1xuICAgIGNvbXBvbmVudC5mb3JFYWNoKGVkZ2UgPT4ge1xuICAgICAgICB2ZXJ0aWNlcy5hZGQoZWRnZS51KTtcbiAgICAgICAgdmVydGljZXMuYWRkKGVkZ2Uudik7XG4gICAgfSk7XG4gICAgcmV0dXJuIHZlcnRpY2VzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEVkZ2VzT2ZTdWJncmFwaHM7XG4iXX0=