insert method
Inserts a new identity at the end, or next to an existing after or
before element. At most one anchor may be supplied.
Implementation
void insert(DiagramElement element, {String? after, String? before}) {
if (contains(element.id)) {
throw StateError('Element ${element.id} already exists.');
}
if (after != null && before != null) {
throw ArgumentError('Insert after or before one element, not both.');
}
final anchor = after ?? before;
if (anchor != null && !contains(anchor)) {
throw StateError('Anchor element $anchor does not exist.');
}
// A removed base identity stays removed at its previous position.
_inserted[element.id] = element;
if (after != null) {
(_after[after] ??= []).add(element.id);
} else if (before != null) {
(_before[before] ??= []).add(element.id);
} else {
_appended.add(element.id);
}
}