textPrepareInsertedGraphemes function
Implementation
List<String> textPrepareInsertedGraphemes(
List<int> runes, {
required bool multiline,
int? maxGraphemes,
}) {
if (maxGraphemes != null && maxGraphemes <= 0) {
return const <String>[];
}
final maxOutputCodepoints = maxGraphemes;
if (maxOutputCodepoints != null && runes.length > maxOutputCodepoints * 4) {
final limitedRunes = textSanitizeRunesLimited(
runes,
multiline: multiline,
maxOutputCodepoints: maxOutputCodepoints,
);
if (limitedRunes.isEmpty) return const <String>[];
return limitedRunes.isEmpty
? const <String>[]
: uni
.graphemes(String.fromCharCodes(limitedRunes))
.take(maxOutputCodepoints)
.toList(growable: false);
}
final sanitizedRunes = textSanitizeRunes(runes, multiline: multiline);
final graphemes = uni
.graphemes(String.fromCharCodes(sanitizedRunes))
.toList(growable: false);
if (maxOutputCodepoints == null || graphemes.length <= maxOutputCodepoints) {
return graphemes;
}
return graphemes.sublist(0, maxOutputCodepoints).toList(growable: false);
}