deletionSequencesSince method

Iterable<String> deletionSequencesSince(
  1. TerminalGraphicsFrame previous, {
  2. int quiet = 2,
})

Deletion sequences needed before rendering this frame after previous.

Implementation

Iterable<String> deletionSequencesSince(
  TerminalGraphicsFrame previous, {
  int quiet = 2,
}) sync* {
  if (!hasRetainedGraphics && previous.hasRetainedGraphics) {
    yield deleteAllRetainedGraphics(quiet: quiet);
    return;
  }

  if (!hasRetainedGraphics || previous.retainedImageIds.isEmpty) {
    if (hasRetainedGraphics &&
        previous.hasRetainedGraphics &&
        previous.retainedImageIds.isEmpty) {
      yield deleteAllRetainedGraphics(quiet: quiet);
    }
    return;
  }

  if (retainedImageIds.isEmpty) {
    yield deleteAllRetainedGraphics(quiet: quiet);
    return;
  }

  for (final staleId in previous.retainedImageIds.difference(
    retainedImageIds,
  )) {
    yield deleteRetainedGraphic(staleId, quiet: quiet);
  }
}