react-planner-viewer
Version:
react-planner-viewer is a React Component for view plans builded with react-planner in 2D mode
31 lines (27 loc) • 3.48 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9nZXQtZWRnZXMtb2Ytc3ViZ3JhcGhzLmpzIl0sIm5hbWVzIjpbImdldEVkZ2VzT2ZTdWJncmFwaHMiLCJzdWJncmFwaHMiLCJncmFwaCIsImVkZ2VzIiwiZm9yRWFjaCIsInB1c2giLCJ2ZXJ0aWNlcyIsImdldFZlcnRpY2VzRnJvbUJpY29ubmVjdGVkQ29tcG9uZW50IiwiY29tcG9uZW50IiwiaW5zZXJ0ZWQiLCJhZGphY2VudHMiLCJhZGoiLCJ2ZXJ0ZXgiLCJoYXMiLCJsZW5ndGgiLCJTZXQiLCJhZGQiLCJlZGdlIiwidSIsInYiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxtQkFBVCxDQUE2QkMsU0FBN0IsRUFBd0NDLEtBQXhDLEVBQStDOztBQUUzQyxRQUFJQyxRQUFRLEVBQVo7O0FBRUFGLGNBQVVHLE9BQVYsQ0FBa0IscUJBQWE7QUFDM0JELGNBQU1FLElBQU4sQ0FBVyxFQUFYO0FBQ0EsWUFBSUMsV0FBV0Msb0NBQW9DQyxTQUFwQyxDQUFmO0FBQ0EsWUFBSUMsV0FBVyxFQUFmO0FBQ0FILGlCQUFTRixPQUFULENBQWlCLGtCQUFVO0FBQ3ZCLGdCQUFJTSxZQUFZUixNQUFNUyxHQUFOLENBQVVDLE1BQVYsQ0FBaEI7QUFDQUYsc0JBQVVOLE9BQVYsQ0FBa0IsZUFBTztBQUNyQixvQkFBSVEsVUFBVUQsR0FBVixJQUFpQkwsU0FBU08sR0FBVCxDQUFhRixHQUFiLENBQXJCLEVBQXdDO0FBQ3BDUiwwQkFBTUEsTUFBTVcsTUFBTixHQUFlLENBQXJCLEVBQXdCVCxJQUF4QixDQUE2QixDQUFDTyxNQUFELEVBQVFELEdBQVIsQ0FBN0I7QUFDSDtBQUNKLGFBSkQ7QUFLSCxTQVBEO0FBUUgsS0FaRDtBQWFBLFdBQU9SLEtBQVA7QUFFSDs7QUFFRCxTQUFTSSxtQ0FBVCxDQUE2Q0MsU0FBN0MsRUFBd0Q7QUFDcEQsUUFBSUYsV0FBVyxJQUFJUyxHQUFKLEVBQWY7QUFDQVAsY0FBVUosT0FBVixDQUFrQixnQkFBUTtBQUN0QkUsaUJBQVNVLEdBQVQsQ0FBYUMsS0FBS0MsQ0FBbEI7QUFDQVosaUJBQVNVLEdBQVQsQ0FBYUMsS0FBS0UsQ0FBbEI7QUFDSCxLQUhEO0FBSUEsV0FBT2IsUUFBUDtBQUNIOztBQUVEYyxPQUFPQyxPQUFQLEdBQWlCckIsbUJBQWpCIiwiZmlsZSI6ImdldC1lZGdlcy1vZi1zdWJncmFwaHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBnZXRFZGdlc09mU3ViZ3JhcGhzKHN1YmdyYXBocywgZ3JhcGgpIHtcblxuICAgIGxldCBlZGdlcyA9IFtdO1xuXG4gICAgc3ViZ3JhcGhzLmZvckVhY2goY29tcG9uZW50ID0+IHtcbiAgICAgICAgZWRnZXMucHVzaChbXSk7XG4gICAgICAgIGxldCB2ZXJ0aWNlcyA9IGdldFZlcnRpY2VzRnJvbUJpY29ubmVjdGVkQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gICAgICAgIGxldCBpbnNlcnRlZCA9IFtdO1xuICAgICAgICB2ZXJ0aWNlcy5mb3JFYWNoKHZlcnRleCA9PiB7XG4gICAgICAgICAgICBsZXQgYWRqYWNlbnRzID0gZ3JhcGguYWRqW3ZlcnRleF07XG4gICAgICAgICAgICBhZGphY2VudHMuZm9yRWFjaChhZGogPT4ge1xuICAgICAgICAgICAgICAgIGlmICh2ZXJ0ZXggPD0gYWRqICYmIHZlcnRpY2VzLmhhcyhhZGopKSB7XG4gICAgICAgICAgICAgICAgICAgIGVkZ2VzW2VkZ2VzLmxlbmd0aCAtIDFdLnB1c2goW3ZlcnRleCxhZGpdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGVkZ2VzO1xuXG59XG5cbmZ1bmN0aW9uIGdldFZlcnRpY2VzRnJvbUJpY29ubmVjdGVkQ29tcG9uZW50KGNvbXBvbmVudCkge1xuICAgIGxldCB2ZXJ0aWNlcyA9IG5ldyBTZXQoKTtcbiAgICBjb21wb25lbnQuZm9yRWFjaChlZGdlID0+IHtcbiAgICAgICAgdmVydGljZXMuYWRkKGVkZ2UudSk7XG4gICAgICAgIHZlcnRpY2VzLmFkZChlZGdlLnYpO1xuICAgIH0pO1xuICAgIHJldHVybiB2ZXJ0aWNlcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRFZGdlc09mU3ViZ3JhcGhzO1xuIl19