refactor(renderer): extract modal registry for open/dismiss/active queries (#166)

This commit is contained in:
2026-07-13 18:16:39 -07:00
committed by GitHub
parent 6fe1e0fee4
commit 66f8ca4f80
6 changed files with 227 additions and 100 deletions
+24
View File
@@ -0,0 +1,24 @@
export type ModalDescriptor<TId extends string> = {
id: TId;
isOpen: () => boolean;
close: () => void;
suppressesSubtitles: boolean;
};
export function createModalRegistry<TId extends string>(
descriptors: readonly ModalDescriptor<TId>[],
) {
return {
isAnyOpen: (): boolean => descriptors.some((descriptor) => descriptor.isOpen()),
isAnySuppressingSubtitlesOpen: (): boolean =>
descriptors.some((descriptor) => descriptor.suppressesSubtitles && descriptor.isOpen()),
getActive: (): TId | null => descriptors.find((descriptor) => descriptor.isOpen())?.id ?? null,
dismissOpen: (): void => {
for (const descriptor of descriptors) {
if (descriptor.isOpen()) {
descriptor.close();
}
}
},
};
}