deltaWithMentionsAsText static method

Delta deltaWithMentionsAsText(
  1. Delta delta, {
  2. MentionConfig? mentionConfig,
})

Implementation

static Delta deltaWithMentionsAsText(Delta delta, {MentionConfig? mentionConfig}) {
  final result = Delta();
  final key = mentionConfig?.embedKey ?? 'mention';

  for (final op in delta.toJson()) {
    final insert = op['insert'];
    final attr = op['attributes'] as Map<String, dynamic>?;

    if (insert is Map<String, dynamic>) {
      final embedData = insert[key];
      if (embedData is Map<String, dynamic>) {
        String? mentionText;
        if (mentionConfig != null) {
          final mention = mentionConfig.fromJson(embedData);
          if (mention != null) mentionText = '@${mention.displayData}';
        } else {
          final String? name = switch (embedData) {
            {'name': String n} => n,
            _ => null,
          };
          if (name != null) mentionText = '@$name';
        }
        if (mentionText != null) {
          result.insert(mentionText, attr);
          continue;
        }
      }
    }
    result.insert(insert, attr);
  }
  return result;
}