apply method

  1. @override
Delta? apply(
  1. Delta document,
  2. int index,
  3. String text
)
override

Applies heuristic rule to an insert operation on a document and returns resulting Delta.

Implementation

@override
Delta? apply(Delta document, int index, String text) {
  if (text != '\n') return null;

  final iter = DeltaIterator(document);
  iter.skip(index);
  final target = iter.next();

  if (target != null && target.data.startsWith('\n')) {
    Map<String, dynamic>? resetStyle;
    if (target.attributes != null && target.attributes!.containsKey(NotusAttribute.heading.key)) {
      resetStyle = NotusAttribute.heading.unset.toJson();
    }
    return Delta()
      ..retain(index)
      ..insert('\n', target.attributes)
      ..retain(1, resetStyle)
      ..trim();
  }
  return null;
}