delete method

void delete(
  1. int index,
  2. int count
)

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,
    ),
  );
}