update method

EditResult update(
  1. String connectorId,
  2. String labelId, {
  3. TextStory? story,
  4. double? fraction,
  5. DiagramPoint? offset,
  6. DiagramSize? size,
  7. LabelPresentation? presentation,
})

Implementation

EditResult update(
  String connectorId,
  String labelId, {
  TextStory? story,
  double? fraction,
  DiagramPoint? offset,
  DiagramSize? size,
  LabelPresentation? presentation,
}) {
  final capability = _capability(connectorId);
  if ((story != null && !capability.textEditable) ||
      ((fraction != null || offset != null) && !capability.movable) ||
      (size != null && !capability.resizable)) {
    throw StateError('Label capability denied this edit');
  }
  final connector = _connector(connectorId);
  final index = connector.labels.indexWhere((label) => label.id == labelId);
  if (index < 0) throw StateError('Missing connector label $labelId');
  final labels = [...connector.labels];
  labels[index] = labels[index].copyWith(
    story: story,
    fraction: fraction,
    offset: offset,
    size: size,
    presentation: presentation,
  );
  return _publish(connector, labels, 'Edit connector label');
}