From 12934da39047dce8cb8d490f5fa504dea7377057 Mon Sep 17 00:00:00 2001 From: dunkeroni Date: Mon, 26 May 2025 00:18:48 -0400 Subject: [PATCH] Use Optional instead of Nullable for mask settings --- .../components/InpaintMask/InpaintMaskDenoiseLimitSlider.tsx | 2 +- .../components/InpaintMask/InpaintMaskNoiseSlider.tsx | 2 +- .../components/InpaintMask/InpaintMaskSettings.tsx | 4 ++-- .../features/controlLayers/konva/CanvasCompositorModule.ts | 2 +- .../web/src/features/controlLayers/store/canvasSlice.ts | 4 ++-- .../frontend/web/src/features/controlLayers/store/types.ts | 4 ++-- .../frontend/web/src/features/controlLayers/store/util.ts | 4 ++-- .../src/features/nodes/util/graph/generation/addInpaint.ts | 2 +- .../src/features/nodes/util/graph/generation/addOutpaint.ts | 2 +- 9 files changed, 13 insertions(+), 13 deletions(-) diff --git a/invokeai/frontend/web/src/features/controlLayers/components/InpaintMask/InpaintMaskDenoiseLimitSlider.tsx b/invokeai/frontend/web/src/features/controlLayers/components/InpaintMask/InpaintMaskDenoiseLimitSlider.tsx index 6d133b031f..7f1e154c37 100644 --- a/invokeai/frontend/web/src/features/controlLayers/components/InpaintMask/InpaintMaskDenoiseLimitSlider.tsx +++ b/invokeai/frontend/web/src/features/controlLayers/components/InpaintMask/InpaintMaskDenoiseLimitSlider.tsx @@ -37,7 +37,7 @@ export const InpaintMaskDenoiseLimitSlider = memo(() => { dispatch(inpaintMaskDenoiseLimitDeleted({ entityIdentifier })); }, [dispatch, entityIdentifier]); - if (denoiseLimit === null) { + if (denoiseLimit === undefined) { return null; } diff --git a/invokeai/frontend/web/src/features/controlLayers/components/InpaintMask/InpaintMaskNoiseSlider.tsx b/invokeai/frontend/web/src/features/controlLayers/components/InpaintMask/InpaintMaskNoiseSlider.tsx index 58222a58b8..47ec27f6b2 100644 --- a/invokeai/frontend/web/src/features/controlLayers/components/InpaintMask/InpaintMaskNoiseSlider.tsx +++ b/invokeai/frontend/web/src/features/controlLayers/components/InpaintMask/InpaintMaskNoiseSlider.tsx @@ -34,7 +34,7 @@ export const InpaintMaskNoiseSlider = memo(() => { dispatch(inpaintMaskNoiseDeleted({ entityIdentifier })); }, [dispatch, entityIdentifier]); - if (noiseLevel === null) { + if (noiseLevel === undefined) { return null; } diff --git a/invokeai/frontend/web/src/features/controlLayers/components/InpaintMask/InpaintMaskSettings.tsx b/invokeai/frontend/web/src/features/controlLayers/components/InpaintMask/InpaintMaskSettings.tsx index ef27681242..1965c6a9ab 100644 --- a/invokeai/frontend/web/src/features/controlLayers/components/InpaintMask/InpaintMaskSettings.tsx +++ b/invokeai/frontend/web/src/features/controlLayers/components/InpaintMask/InpaintMaskSettings.tsx @@ -13,8 +13,8 @@ const buildSelectFlags = (entityIdentifier: CanvasEntityIdentifier<'inpaint_mask createMemoizedSelector(selectCanvasSlice, (canvas) => { const entity = selectEntityOrThrow(canvas, entityIdentifier, 'InpaintMaskSettings'); return { - hasNoiseLevel: entity.noiseLevel !== null, - hasDenoiseLimit: entity.denoiseLimit !== null, + hasNoiseLevel: entity.noiseLevel !== undefined, + hasDenoiseLimit: entity.denoiseLimit !== undefined, }; }); diff --git a/invokeai/frontend/web/src/features/controlLayers/konva/CanvasCompositorModule.ts b/invokeai/frontend/web/src/features/controlLayers/konva/CanvasCompositorModule.ts index 5e01911f88..c5611470b9 100644 --- a/invokeai/frontend/web/src/features/controlLayers/konva/CanvasCompositorModule.ts +++ b/invokeai/frontend/web/src/features/controlLayers/konva/CanvasCompositorModule.ts @@ -498,7 +498,7 @@ export class CanvasCompositorModule extends CanvasModuleBase { const imageData = tempCtx.getImageData(0, 0, tempCanvas.width, tempCanvas.height); const data = imageData.data; - const attributeValue = typeof adapter.state[attribute] === 'number' ? (adapter.state[attribute] as number) : 1.0; // Default to full strength if attribute is not a number + const attributeValue = typeof adapter.state[attribute] === 'number' ? (adapter.state[attribute] as number) : 1.0; // Default to full strength if attribute is undefined // Process all pixels in the image data for (let i = 0; i < data.length; i += 4) { diff --git a/invokeai/frontend/web/src/features/controlLayers/store/canvasSlice.ts b/invokeai/frontend/web/src/features/controlLayers/store/canvasSlice.ts index 4be23d5a8f..a10b688ac1 100644 --- a/invokeai/frontend/web/src/features/controlLayers/store/canvasSlice.ts +++ b/invokeai/frontend/web/src/features/controlLayers/store/canvasSlice.ts @@ -1117,7 +1117,7 @@ export const canvasSlice = createSlice({ const { entityIdentifier } = action.payload; const entity = selectEntity(state, entityIdentifier); if (entity && entity.type === 'inpaint_mask') { - entity.noiseLevel = null; + entity.noiseLevel = undefined; } }, inpaintMaskConvertedToRegionalGuidance: { @@ -1179,7 +1179,7 @@ export const canvasSlice = createSlice({ const { entityIdentifier } = action.payload; const entity = selectEntity(state, entityIdentifier); if (entity && entity.type === 'inpaint_mask') { - entity.denoiseLimit = null; + entity.denoiseLimit = undefined; } }, //#region BBox diff --git a/invokeai/frontend/web/src/features/controlLayers/store/types.ts b/invokeai/frontend/web/src/features/controlLayers/store/types.ts index 3f0c5a9116..e0f9a59846 100644 --- a/invokeai/frontend/web/src/features/controlLayers/store/types.ts +++ b/invokeai/frontend/web/src/features/controlLayers/store/types.ts @@ -310,8 +310,8 @@ const zCanvasInpaintMaskState = zCanvasEntityBase.extend({ fill: zFill, opacity: zOpacity, objects: z.array(zCanvasObjectState), - noiseLevel: z.number().gte(0).lte(1).nullable().default(null), - denoiseLimit: z.number().gte(0).lte(1).nullable().default(null), + noiseLevel: z.number().gte(0).lte(1).optional(), + denoiseLimit: z.number().gte(0).lte(1).optional(), }); export type CanvasInpaintMaskState = z.infer; diff --git a/invokeai/frontend/web/src/features/controlLayers/store/util.ts b/invokeai/frontend/web/src/features/controlLayers/store/util.ts index c40b4b8404..4f809d720b 100644 --- a/invokeai/frontend/web/src/features/controlLayers/store/util.ts +++ b/invokeai/frontend/web/src/features/controlLayers/store/util.ts @@ -199,8 +199,8 @@ export const getInpaintMaskState = ( style: 'diagonal', color: getInpaintMaskFillColor(), }, - noiseLevel: null, - denoiseLimit: null, + noiseLevel: undefined, + denoiseLimit: undefined, }; merge(entityState, overrides); return entityState; diff --git a/invokeai/frontend/web/src/features/nodes/util/graph/generation/addInpaint.ts b/invokeai/frontend/web/src/features/nodes/util/graph/generation/addInpaint.ts index b7978e2faf..80b8a074a5 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graph/generation/addInpaint.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graph/generation/addInpaint.ts @@ -66,7 +66,7 @@ export const addInpaint = async ({ const inpaintMaskAdapters = manager.compositor.getVisibleAdaptersOfType('inpaint_mask'); // Get inpaint mask adapters that have noise settings - const noiseMaskAdapters = inpaintMaskAdapters.filter((adapter) => adapter.state.noiseLevel !== null); + const noiseMaskAdapters = inpaintMaskAdapters.filter((adapter) => adapter.state.noiseLevel !== undefined); // Create a composite noise mask if we have any adapters with noise settings let noiseMaskImage = null; diff --git a/invokeai/frontend/web/src/features/nodes/util/graph/generation/addOutpaint.ts b/invokeai/frontend/web/src/features/nodes/util/graph/generation/addOutpaint.ts index 6eeacfcaa2..ef8edd33df 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graph/generation/addOutpaint.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graph/generation/addOutpaint.ts @@ -69,7 +69,7 @@ export const addOutpaint = async ({ const rect: Rect = canvas.bbox?.rect ?? getEmptyRect(); // Get inpaint mask adapters that have noise settings - const noiseMaskAdapters = inpaintMaskAdapters.filter((adapter) => adapter.state.noiseLevel !== null); + const noiseMaskAdapters = inpaintMaskAdapters.filter((adapter) => adapter.state.noiseLevel !== undefined); // Create a composite noise mask if we have any adapters with noise settings let noiseMaskImage = null;