1// Keydown handlers read this on every key, so a mount count replaces a document query.
2let mountedModelPickers = 0;
3const listeners = new Set<() => void>();
4
5function setMountedModelPickers(next: number) {
6 const wasOpen = mountedModelPickers > 0;
7 mountedModelPickers = next;
8 if (wasOpen === mountedModelPickers > 0) return;
9 for (const listener of listeners) listener();
10}
11
12export function registerModelPickerContent(): () => void {
13 setMountedModelPickers(mountedModelPickers + 1);
14 return () => {
15 setMountedModelPickers(mountedModelPickers - 1);
16 };
17}
18
19export function isModelPickerOpen(): boolean {
20 return mountedModelPickers > 0;
21}
22
23export function subscribeToModelPickerVisibility(listener: () => void): () => void {
24 listeners.add(listener);
25 return () => {
26 listeners.delete(listener);
27 };
28}