safaehResolveUserTextDirection function

TextDirection? safaehResolveUserTextDirection(
  1. String text
)

Base direction for standalone UGC so truncation ellipsis follows the content's script, not only the ambient UI locale.

Returns null when text has no strong directional characters (inherit).

Implementation

TextDirection? safaehResolveUserTextDirection(String text) {
  final trimmed = text.trim();
  if (trimmed.isEmpty) return null;
  var sawRtl = false;
  var sawLtr = false;
  for (final unit in trimmed.runes) {
    if (_isRtl(unit)) {
      sawRtl = true;
    } else if (_isLtr(unit)) {
      sawLtr = true;
    }
    if (sawRtl && sawLtr) break;
  }
  if (!sawRtl && !sawLtr) return null;
  // First strong character wins, matching typical bidi first-strong.
  for (final unit in trimmed.runes) {
    if (_isRtl(unit)) return TextDirection.rtl;
    if (_isLtr(unit)) return TextDirection.ltr;
  }
  return null;
}