GraphLayoutRequest constructor

GraphLayoutRequest({
  1. required Iterable<GraphLayoutNode> nodes,
  2. required Iterable<GraphLayoutEdge> edges,
})

Implementation

GraphLayoutRequest({
  required Iterable<GraphLayoutNode> nodes,
  required Iterable<GraphLayoutEdge> edges,
}) : nodes = List.unmodifiable(nodes),
     edges = List.unmodifiable(edges) {
  final ids = <String>{};
  for (final node in this.nodes) {
    if (node.id.isEmpty ||
        !ids.add(node.id) ||
        !node.size.width.isFinite ||
        node.size.width <= 0 ||
        !node.size.height.isFinite ||
        node.size.height <= 0 ||
        (node.pinned && node.position == null) ||
        (node.position != null &&
            (!node.position!.x.isFinite || !node.position!.y.isFinite))) {
      throw ArgumentError('Layout nodes need valid unique geometry.');
    }
  }
  for (final edge in this.edges) {
    if (!ids.contains(edge.source) || !ids.contains(edge.target)) {
      throw ArgumentError('Layout edges must identify request nodes.');
    }
  }
}