- 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.
40 lines
1.0 KiB
JavaScript
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;
|
|
}
|