validate method

void validate(
  1. GraphLayoutRequest request
)

Throws a StateError unless every request node has a finite position and every pinned node keeps its own.

Implementation

void validate(GraphLayoutRequest request) {
  final nodeIds = {for (final node in request.nodes) node.id};
  if (positions.length != request.nodes.length ||
      positions.keys.any((id) => !nodeIds.contains(id)) ||
      positions.values.any(
        (point) => !point.x.isFinite || !point.y.isFinite,
      )) {
    throw StateError('Layout returned invalid or incomplete geometry.');
  }
  for (final node in request.nodes.where((node) => node.pinned)) {
    if (positions[node.id] != node.position) {
      throw StateError('Layout moved pinned node ${node.id}.');
    }
  }
}