Files
MajoorWaldi-ComfyUI-Majoor-…/js/features/viewer/viewerInstanceManager.js
T
MajoorWaldi 2fa41a0e76 feat: add useGridState and useVirtualGrid composables for asset management
- Implemented useGridState to manage grid state, including asset selection and loading states.
- Created useVirtualGrid to centralize virtualization helpers for improved performance.
- Added createVueApp for isolated Vue 3 + Pinia application instances.
- Introduced Vite configuration for building the ComfyUI-Majoor-AssetsManager with external dependencies.
2026-04-03 11:04:55 +02:00

40 lines
1.0 KiB
JavaScript

/**
* 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) {
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) {
console.debug?.(e);
}
try {
el.remove?.();
} catch (e) {
console.debug?.(e);
}
}
if (keep && keep._mjrViewerAPI) return keep._mjrViewerAPI;
try {
keep?.remove?.();
} catch (e) {
console.debug?.(e);
}
}
const viewer = createViewer();
appendViewerOverlayNode(viewer);
return viewer._mjrViewerAPI;
}