resolve method

Implementation

List<DiagramMeasuredTextLine> resolve(
  DiagramParagraphCacheKey key,
  List<DiagramMeasuredTextLine> Function() build,
) {
  final existing = _entries.remove(key);
  if (existing != null) {
    _entries[key] = existing;
    return existing.lines;
  }
  final lines = List<DiagramMeasuredTextLine>.unmodifiable(build());
  final weight = key.codeUnits;
  if (maxEntries == 0 || weight > maxCodeUnits) return lines;
  while (_entries.isNotEmpty &&
      (_entries.length >= maxEntries || _codeUnits + weight > maxCodeUnits)) {
    _codeUnits -= _entries.remove(_entries.keys.first)!.weight;
  }
  _entries[key] = (lines: lines, weight: weight);
  _codeUnits += weight;
  return lines;
}