mergeText method

void mergeText(
  1. Node left,
  2. Node right, {
  3. int? leftOffset,
  4. int rightOffset = 0,
})

Implementation

void mergeText(
  Node left,
  Node right, {
  int? leftOffset,
  int rightOffset = 0,
}) {
  final leftDelta = left.delta;
  final rightDelta = right.delta;
  if (leftDelta == null || rightDelta == null) {
    return;
  }
  final leftLength = leftDelta.length;
  final rightLength = rightDelta.length;
  leftOffset ??= leftLength;

  final merge = Delta()
    ..retain(leftOffset)
    ..delete(leftLength - leftOffset)
    ..addAll(rightDelta.slice(rightOffset, rightLength));

  addDeltaToComposeMap(left, merge);

  afterSelection = Selection.collapsed(
    Position(
      path: left.path,
      offset: leftOffset,
    ),
  );
}