feat(ui): add hook to get all entity adapters in array

This commit is contained in:
psychedelicious
2025-06-06 13:46:18 +10:00
parent 2c5c35647f
commit c77f9ec202

View File

@@ -168,3 +168,33 @@ export const useEntityAdapter = (
assert(adapter, 'useEntityAdapter must be used within a EntityAdapterContext');
return adapter;
};
export const useAllEntityAdapters = () => {
const canvasManager = useCanvasManager();
const regionalGuidanceAdapters = useSyncExternalStore(
canvasManager.adapters.regionMasks.subscribe,
canvasManager.adapters.regionMasks.getSnapshot
);
const rasterLayerAdapters = useSyncExternalStore(
canvasManager.adapters.rasterLayers.subscribe,
canvasManager.adapters.rasterLayers.getSnapshot
);
const controlLayerAdapters = useSyncExternalStore(
canvasManager.adapters.controlLayers.subscribe,
canvasManager.adapters.controlLayers.getSnapshot
);
const inpaintMaskAdapters = useSyncExternalStore(
canvasManager.adapters.inpaintMasks.subscribe,
canvasManager.adapters.inpaintMasks.getSnapshot
);
const allEntityAdapters = useMemo(() => {
return [
...Array.from(rasterLayerAdapters.values()),
...Array.from(controlLayerAdapters.values()),
...Array.from(inpaintMaskAdapters.values()),
...Array.from(regionalGuidanceAdapters.values()),
];
}, [controlLayerAdapters, inpaintMaskAdapters, rasterLayerAdapters, regionalGuidanceAdapters]);
return allEntityAdapters;
};