Revert "First pass at pulling the v1.5 CLI, TUI, and Launcher clients into v2."

This reverts commit 467b01edd6.
This commit is contained in:
Bob Dickinson 2026-06-09 21:56:38 -07:00
commit 62d442b073

View file

@ -1,61 +0,0 @@
import { useState, useEffect, useCallback } from "react";
function clampFirstVisible(
first: number,
selected: number,
visibleCount: number,
): number {
if (selected < first) return selected;
if (selected >= first + visibleCount) return selected - visibleCount + 1;
return first;
}
export interface UseSelectableListOptions {
/** When this reference changes, reset selection to 0 (e.g. tools list when switching servers) */
resetWhen?: unknown;
}
/**
* Manages selection and scroll position for a virtualized list.
* Returns selection state and a setSelection that updates both
* selectedIndex and firstVisible so the selected item stays in view.
*/
export function useSelectableList(
itemCount: number,
visibleCount: number,
options?: UseSelectableListOptions,
) {
const [selectedIndex, setSelectedIndex] = useState(0);
const [firstVisible, setFirstVisible] = useState(0);
const setSelection = useCallback(
(newIndex: number) => {
setSelectedIndex(newIndex);
setFirstVisible((prev) =>
clampFirstVisible(prev, newIndex, visibleCount),
);
},
[visibleCount],
);
// Reset when the list reference changes (e.g. different server).
useEffect(() => {
if (options?.resetWhen !== undefined) {
setSelectedIndex(0);
setFirstVisible(0);
}
}, [options?.resetWhen]);
// Clamp when list shrinks
useEffect(() => {
if (itemCount > 0 && selectedIndex >= itemCount) {
const newIndex = itemCount - 1;
setSelectedIndex(newIndex);
setFirstVisible((prev) =>
clampFirstVisible(prev, newIndex, visibleCount),
);
}
}, [itemCount, selectedIndex, visibleCount]);
return { selectedIndex, firstVisible, setSelection };
}