renderCommandPaletteBody function

List<String> renderCommandPaletteBody({
  1. required String query,
  2. required List<CommandPaletteItem> items,
  3. required int selectedIndex,
  4. required CommandPaletteWindow window,
  5. String emptyLabel = 'No matching commands',
})

Renders the shared query, rows, and overflow footer used by TEA hosts.

Implementation

List<String> renderCommandPaletteBody({
  required String query,
  required List<CommandPaletteItem> items,
  required int selectedIndex,
  required CommandPaletteWindow window,
  String emptyLabel = 'No matching commands',
}) {
  final lines = <String>['> $query', ''];
  for (var index = window.start; index < window.end; index++) {
    final selected = index == selectedIndex;
    lines.add('${selected ? '❯' : ' '} ${items[index].label}');
  }
  if (items.isEmpty) lines.add('  $emptyLabel');
  if (items.length > window.viewportSize) {
    lines.add(
      '  ${selectedIndex + 1}/${items.length}'
      '${window.hasMoreAbove ? '  ↑ more' : ''}'
      '${window.hasMoreBelow ? '  ↓ more' : ''}',
    );
  }
  return lines;
}