commandPaletteVisibleWindow function
Centers selectedIndex inside a window of viewportSize items.
Implementation
CommandPaletteWindow commandPaletteVisibleWindow({
required int itemCount,
required int selectedIndex,
required int viewportSize,
}) {
final size = viewportSize < 1 ? 1 : viewportSize;
if (itemCount <= 0) {
return CommandPaletteWindow(
start: 0,
end: 0,
selectedIndex: 0,
itemCount: 0,
viewportSize: size,
);
}
final selected = selectedIndex.clamp(0, itemCount - 1);
final maxStart = (itemCount - size).clamp(0, itemCount);
final start = (selected - size ~/ 2).clamp(0, maxStart);
final end = (start + size).clamp(start, itemCount);
return CommandPaletteWindow(
start: start,
end: end,
selectedIndex: selected,
itemCount: itemCount,
viewportSize: size,
);
}