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