diff --git a/invokeai/app/invocations/latent.py b/invokeai/app/invocations/latent.py index 2800624235..743a648785 100644 --- a/invokeai/app/invocations/latent.py +++ b/invokeai/app/invocations/latent.py @@ -22,7 +22,7 @@ from ...backend.stable_diffusion.diffusers_pipeline import ( from ...backend.stable_diffusion.diffusion.shared_invokeai_diffusion import \ PostprocessingSettings from ...backend.stable_diffusion.schedulers import SCHEDULER_MAP -from ...backend.util.devices import torch_dtype +from ...backend.util.devices import choose_torch_device, torch_dtype from ..models.image import ImageCategory, ImageField, ResourceOrigin from .baseinvocation import (BaseInvocation, BaseInvocationOutput, InvocationConfig, InvocationContext) @@ -38,7 +38,6 @@ from diffusers.models.attention_processor import ( XFormersAttnProcessor, ) - class LatentsField(BaseModel): """A latents field used for passing latents between invocations""" diff --git a/invokeai/frontend/web/src/features/nodes/components/ProgressImageNode.tsx b/invokeai/frontend/web/src/features/nodes/components/ProgressImageNode.tsx index faaec06e49..142e2a2990 100644 --- a/invokeai/frontend/web/src/features/nodes/components/ProgressImageNode.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/ProgressImageNode.tsx @@ -1,33 +1,46 @@ import { Flex, Image } from '@chakra-ui/react'; -import { NodeProps } from 'reactflow'; -import { InvocationValue } from '../types/types'; - -import { useAppSelector } from 'app/store/storeHooks'; +import { RootState } from 'app/store/store'; import { IAINoContentFallback } from 'common/components/IAIImageFallback'; import { memo } from 'react'; +import { useDispatch, useSelector } from 'react-redux'; +import { NodeProps, OnResize } from 'reactflow'; +import { setProgressNodeSize } from '../store/nodesSlice'; import IAINodeHeader from './IAINode/IAINodeHeader'; import IAINodeResizer from './IAINode/IAINodeResizer'; import NodeWrapper from './NodeWrapper'; -const ProgressImageNode = (props: NodeProps) => { - const progressImage = useAppSelector((state) => state.system.progressImage); +const ProgressImageNode = (props: NodeProps) => { + const progressImage = useSelector( + (state: RootState) => state.system.progressImage + ); + const progressNodeSize = useSelector( + (state: RootState) => state.nodes.progressNodeSize + ); + const dispatch = useDispatch(); const { selected } = props; + const handleResize: OnResize = (_, newSize) => { + dispatch(setProgressNodeSize(newSize)); + }; + return ( - {progressImage ? ( @@ -42,22 +55,17 @@ const ProgressImageNode = (props: NodeProps) => { ) : ( )} - + ); }; diff --git a/invokeai/frontend/web/src/features/nodes/store/nodesSlice.ts b/invokeai/frontend/web/src/features/nodes/store/nodesSlice.ts index 833a220336..997d0493dd 100644 --- a/invokeai/frontend/web/src/features/nodes/store/nodesSlice.ts +++ b/invokeai/frontend/web/src/features/nodes/store/nodesSlice.ts @@ -35,6 +35,7 @@ export type NodesState = { shouldShowFieldTypeLegend: boolean; shouldShowMinimapPanel: boolean; editorInstance: ReactFlowInstance | undefined; + progressNodeSize: { width: number; height: number }; }; export const initialNodesState: NodesState = { @@ -47,6 +48,7 @@ export const initialNodesState: NodesState = { shouldShowFieldTypeLegend: false, shouldShowMinimapPanel: true, editorInstance: undefined, + progressNodeSize: { width: 512, height: 512 }, }; const nodesSlice = createSlice({ @@ -157,6 +159,12 @@ const nodesSlice = createSlice({ loadFileEdges: (state, action: PayloadAction) => { state.edges = action.payload; }, + setProgressNodeSize: ( + state, + action: PayloadAction<{ width: number; height: number }> + ) => { + state.progressNodeSize = action.payload; + }, }, extraReducers: (builder) => { builder.addCase(receivedOpenAPISchema.fulfilled, (state, action) => { @@ -182,6 +190,7 @@ export const { setEditorInstance, loadFileNodes, loadFileEdges, + setProgressNodeSize, } = nodesSlice.actions; export default nodesSlice.reducer;