delete method
Deletes count characters starting from position index
Implementation
void delete(int index, int count) {
final state = _cachedOrComputedState();
// Collect targets first to avoid index drift while deleting
final targets = <FugueElementID>[];
for (var i = 0; i < count; i++) {
final nodeID = state._tree.findNodeAtPosition(index + i);
if (!nodeID.isNull) {
targets.add(nodeID);
}
}
if (targets.isEmpty) {
return;
}
// Create items for batch delete
final items =
targets.map((nodeID) => _FugueDeleteItem(nodeID: nodeID)).toList();
// Emit a single batch delete change
doc.registerOperation(
_FugueTextDeleteOperation.fromHandler(
this,
items: items,
),
);
}