Files
MajoorWaldi-ComfyUI-Majoor-…/ui/features/viewer/viewerInstanceManager.ts
T

37 lines
1.0 KiB
TypeScript

/**
* Viewer instance manager - ensures a single active viewer overlay in the DOM.
* Cleans up stale overlays before mounting a new one.
*/
import { appendViewerOverlayNode, getManagedViewerOverlayNodes } from "./viewerRuntimeHosts.js";
export function getViewerInstance(createViewer: () => any): any {
const all = getManagedViewerOverlayNodes();
if (all.length) {
const keep = all[all.length - 1];
for (const el of all) {
if (el === keep) continue;
try {
el?._mjrViewerAPI?.dispose?.();
} catch (e: any) {
console.debug?.(e);
}
try {
el.remove?.();
} catch (e: any) {
console.debug?.(e);
}
}
if (keep && keep._mjrViewerAPI) return keep._mjrViewerAPI;
try {
keep?.remove?.();
} catch (e: any) {
console.debug?.(e);
}
}
const viewer = createViewer();
appendViewerOverlayNode(viewer);
return viewer._mjrViewerAPI;
}