int visualLineFromCharOffset({required BigInt charOffset}) { if (_root.summary.lines == 0) return 0; return _root.seekChars(charOffset.toInt()).line; }