clamp method

TextLineStateSnapshot clamp({
  1. required int lineCount,
  2. required int lineLength(
    1. int line
    ),
  3. bool preserveCollapsedSelection = false,
})

Implementation

TextLineStateSnapshot clamp({
  required int lineCount,
  required int Function(int line) lineLength,
  bool preserveCollapsedSelection = false,
}) {
  final clampedCursor = _clampPositionToLines(
    cursor,
    lineCount: lineCount,
    lineLength: lineLength,
  );
  final clampedBase = selectionBase == null
      ? null
      : _clampPositionToLines(
          selectionBase!,
          lineCount: lineCount,
          lineLength: lineLength,
        );
  final clampedExtent = selectionExtent == null
      ? null
      : _clampPositionToLines(
          selectionExtent!,
          lineCount: lineCount,
          lineLength: lineLength,
        );

  if (clampedBase == null || clampedExtent == null) {
    return TextLineStateSnapshot.collapsed(cursor: clampedCursor);
  }
  if (clampedBase == clampedExtent && !preserveCollapsedSelection) {
    return TextLineStateSnapshot.collapsed(cursor: clampedCursor);
  }

  return TextLineStateSnapshot(
    cursor: clampedCursor,
    selectionBase: clampedBase,
    selectionExtent: clampedExtent,
  );
}