refactor(ui): wire up CA logic across (wip)

This commit is contained in:
psychedelicious
2024-05-01 18:36:08 +10:00
committed by Kent Keirsey
parent 424a27eeda
commit 0e55488ff6
34 changed files with 852 additions and 756 deletions

View File

@@ -72,7 +72,7 @@ export type ProcessorConfig =
| PidiProcessorConfig
| ZoeDepthProcessorConfig;
type ImageWithDims = {
export type ImageWithDims = {
imageName: string;
width: number;
height: number;
@@ -273,7 +273,7 @@ export const CONTROLNET_PROCESSORS: ControlNetProcessorsDict = {
type: 'zoe_depth_image_processor',
}),
},
}
};
export const zProcessorType = z.enum([
'canny_image_processor',
'color_map_image_processor',
@@ -328,15 +328,15 @@ export const initialIPAdapter: Omit<IPAdapterConfig, 'id'> = {
};
export const buildControlNet = (id: string, overrides?: Partial<ControlNetConfig>): ControlNetConfig => {
return merge(deepClone(initialControlNet), { id, overrides });
return merge(deepClone(initialControlNet), { id, ...overrides });
};
export const buildT2IAdapter = (id: string, overrides?: Partial<T2IAdapterConfig>): T2IAdapterConfig => {
return merge(deepClone(initialT2IAdapter), { id, overrides });
return merge(deepClone(initialT2IAdapter), { id, ...overrides });
};
export const buildIPAdapter = (id: string, overrides?: Partial<IPAdapterConfig>): IPAdapterConfig => {
return merge(deepClone(initialIPAdapter), { id, overrides });
return merge(deepClone(initialIPAdapter), { id, ...overrides });
};
export const buildControlAdapterProcessor = (

View File

@@ -52,8 +52,7 @@ const STAGE_BG_DATAURL =
const mapId = (object: { id: string }) => object.id;
const selectRenderableLayers = (n: Konva.Node) =>
n.name() === RG_LAYER_NAME || n.name() === CA_LAYER_NAME;
const selectRenderableLayers = (n: Konva.Node) => n.name() === RG_LAYER_NAME || n.name() === CA_LAYER_NAME;
const selectVectorMaskObjects = (node: Konva.Node) => {
return node.name() === RG_LAYER_LINE_NAME || node.name() === RG_LAYER_RECT_NAME;
@@ -432,9 +431,9 @@ const updateControlNetLayerImageSource = async (
konvaLayer: Konva.Layer,
reduxLayer: ControlAdapterLayer
) => {
if (reduxLayer.imageName) {
const imageName = reduxLayer.imageName;
const req = getStore().dispatch(imagesApi.endpoints.getImageDTO.initiate(reduxLayer.imageName));
if (reduxLayer.controlAdapter.image) {
const { imageName } = reduxLayer.controlAdapter.image;
const req = getStore().dispatch(imagesApi.endpoints.getImageDTO.initiate(imageName));
const imageDTO = await req.unwrap();
req.unsubscribe();
const image = new Image();
@@ -442,8 +441,7 @@ const updateControlNetLayerImageSource = async (
image.onload = () => {
// Find the existing image or create a new one - must find using the name, bc the id may have just changed
const konvaImage =
konvaLayer.findOne<Konva.Image>(`.${CA_LAYER_IMAGE_NAME}`) ??
createControlNetLayerImage(konvaLayer, image);
konvaLayer.findOne<Konva.Image>(`.${CA_LAYER_IMAGE_NAME}`) ?? createControlNetLayerImage(konvaLayer, image);
// Update the image's attributes
konvaImage.setAttrs({
@@ -502,11 +500,11 @@ const renderControlNetLayer = (stage: Konva.Stage, reduxLayer: ControlAdapterLay
let imageSourceNeedsUpdate = false;
if (canvasImageSource instanceof HTMLImageElement) {
if (
reduxLayer.imageName &&
canvasImageSource.id !== getCALayerImageId(reduxLayer.id, reduxLayer.imageName)
reduxLayer.controlAdapter.image &&
canvasImageSource.id !== getCALayerImageId(reduxLayer.id, reduxLayer.controlAdapter.image.imageName)
) {
imageSourceNeedsUpdate = true;
} else if (!reduxLayer.imageName) {
} else if (!reduxLayer.controlAdapter.image) {
imageSourceNeedsUpdate = true;
}
} else if (!canvasImageSource) {