Skip to content

Commit 01caa0b

Browse files
author
Attila Cseh
committed
canvasSlice refactored
1 parent 4c343f0 commit 01caa0b

File tree

57 files changed

+248
-234
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+248
-234
lines changed

invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/modelSelected.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ import { loraIsEnabledChanged } from 'features/controlLayers/store/lorasSlice';
99
import { modelChanged, syncedToOptimalDimension, vaeSelected } from 'features/controlLayers/store/paramsSlice';
1010
import { refImageModelChanged, selectReferenceImageEntities } from 'features/controlLayers/store/refImagesSlice';
1111
import {
12+
selectActiveCanvas,
1213
selectAllEntitiesOfType,
1314
selectBboxModelBase,
14-
selectSelectedCanvas,
1515
} from 'features/controlLayers/store/selectors';
1616
import { getEntityIdentifier } from 'features/controlLayers/store/types';
1717
import { modelSelected } from 'features/parameters/store/actions';
@@ -121,7 +121,7 @@ export const addModelSelectedListener = (startAppListening: AppStartListening) =
121121
const newRegionalRefImageModel = selectRegionalRefImageModels(state)[0] ?? null;
122122

123123
// All regional guidance entities are updated to use the same new model.
124-
const canvasState = selectSelectedCanvas(state);
124+
const canvasState = selectActiveCanvas(state);
125125
const canvasRegionalGuidanceEntities = selectAllEntitiesOfType(canvasState, 'regional_guidance');
126126
for (const entity of canvasRegionalGuidanceEntities) {
127127
for (const refImage of entity.referenceImages) {

invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/modelsLoaded.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
vaeSelected,
1212
} from 'features/controlLayers/store/paramsSlice';
1313
import { refImageModelChanged, selectRefImagesSlice } from 'features/controlLayers/store/refImagesSlice';
14-
import { selectSelectedCanvas } from 'features/controlLayers/store/selectors';
14+
import { selectActiveCanvas } from 'features/controlLayers/store/selectors';
1515
import {
1616
getEntityIdentifier,
1717
isFLUXReduxConfig,
@@ -221,7 +221,7 @@ const handleVideoModels: ModelHandler = (models, state, dispatch, log) => {
221221

222222
const handleControlAdapterModels: ModelHandler = (models, state, dispatch, log) => {
223223
const caModels = models.filter(isControlLayerModelConfig);
224-
selectSelectedCanvas(state).controlLayers.entities.forEach((entity) => {
224+
selectActiveCanvas(state).controlLayers.entities.forEach((entity) => {
225225
const selectedControlAdapterModel = entity.controlAdapter.model;
226226
// `null` is a valid control adapter model - no need to do anything.
227227
if (!selectedControlAdapterModel) {
@@ -256,7 +256,7 @@ const handleIPAdapterModels: ModelHandler = (models, state, dispatch, log) => {
256256
dispatch(refImageModelChanged({ id: entity.id, modelConfig: null }));
257257
});
258258

259-
selectSelectedCanvas(state).regionalGuidance.entities.forEach((entity) => {
259+
selectActiveCanvas(state).regionalGuidance.entities.forEach((entity) => {
260260
entity.referenceImages.forEach(({ id: referenceImageId, config }) => {
261261
if (!isRegionalGuidanceIPAdapterConfig(config)) {
262262
return;
@@ -299,7 +299,7 @@ const handleFLUXReduxModels: ModelHandler = (models, state, dispatch, log) => {
299299
dispatch(refImageModelChanged({ id: entity.id, modelConfig: null }));
300300
});
301301

302-
selectSelectedCanvas(state).regionalGuidance.entities.forEach((entity) => {
302+
selectActiveCanvas(state).regionalGuidance.entities.forEach((entity) => {
303303
entity.referenceImages.forEach(({ id: referenceImageId, config }) => {
304304
if (!isRegionalGuidanceFLUXReduxConfig(config)) {
305305
return;

invokeai/frontend/web/src/features/controlLayers/components/CanvasAlerts/CanvasAlertsSelectedEntityStatus.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import { useEntityTitle } from 'features/controlLayers/hooks/useEntityTitle';
99
import { useEntityTypeIsHidden } from 'features/controlLayers/hooks/useEntityTypeIsHidden';
1010
import type { CanvasEntityAdapter } from 'features/controlLayers/konva/CanvasEntity/types';
1111
import {
12+
selectActiveCanvas,
1213
selectEntityOrThrow,
13-
selectSelectedCanvas,
1414
selectSelectedEntityIdentifier,
1515
} from 'features/controlLayers/store/selectors';
1616
import type { CanvasEntityIdentifier } from 'features/controlLayers/store/types';
@@ -32,13 +32,13 @@ type AlertData = {
3232

3333
const buildSelectIsEnabled = (entityIdentifier: CanvasEntityIdentifier) =>
3434
createSelector(
35-
selectSelectedCanvas,
35+
selectActiveCanvas,
3636
(canvas) => selectEntityOrThrow(canvas, entityIdentifier, 'CanvasAlertsSelectedEntityStatusContent').isEnabled
3737
);
3838

3939
const buildSelectIsLocked = (entityIdentifier: CanvasEntityIdentifier) =>
4040
createSelector(
41-
selectSelectedCanvas,
41+
selectActiveCanvas,
4242
(canvas) => selectEntityOrThrow(canvas, entityIdentifier, 'CanvasAlertsSelectedEntityStatusContent').isLocked
4343
);
4444

invokeai/frontend/web/src/features/controlLayers/components/CanvasEntityList/EntityListSelectedEntityActionBarOpacity.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ import { clamp, round } from 'es-toolkit/compat';
2020
import { snapToNearest } from 'features/controlLayers/konva/util';
2121
import { entityOpacityChanged } from 'features/controlLayers/store/canvasSlice';
2222
import {
23+
selectActiveCanvas,
2324
selectEntity,
24-
selectSelectedCanvas,
2525
selectSelectedEntityIdentifier,
2626
} from 'features/controlLayers/store/selectors';
2727
import type { KeyboardEvent } from 'react';
@@ -61,7 +61,7 @@ const sliderDefaultValue = mapRawValueToSliderValue(1);
6161

6262
const snapCandidates = marks.slice(1, marks.length - 1);
6363

64-
const selectOpacity = createSelector(selectSelectedCanvas, (canvas) => {
64+
const selectOpacity = createSelector(selectActiveCanvas, (canvas) => {
6565
const selectedEntityIdentifier = canvas.selectedEntityIdentifier;
6666
if (!selectedEntityIdentifier) {
6767
return 1; // fallback to 100% opacity

invokeai/frontend/web/src/features/controlLayers/components/ControlLayer/ControlLayerBadges.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ import { createSelector } from '@reduxjs/toolkit';
33
import { useAppSelector } from 'app/store/storeHooks';
44
import { CanvasEntityStateGate } from 'features/controlLayers/contexts/CanvasEntityStateGate';
55
import { useEntityIdentifierContext } from 'features/controlLayers/contexts/EntityIdentifierContext';
6-
import { selectEntityOrThrow, selectSelectedCanvas } from 'features/controlLayers/store/selectors';
6+
import { selectActiveCanvas, selectEntityOrThrow } from 'features/controlLayers/store/selectors';
77
import type { CanvasEntityIdentifier } from 'features/controlLayers/store/types';
88
import { memo, useMemo } from 'react';
99
import { useTranslation } from 'react-i18next';
1010

1111
const buildSelectWithTransparencyEffect = (entityIdentifier: CanvasEntityIdentifier<'control_layer'>) =>
1212
createSelector(
13-
selectSelectedCanvas,
13+
selectActiveCanvas,
1414
(canvas) => selectEntityOrThrow(canvas, entityIdentifier, 'ControlLayerBadgesContent').withTransparencyEffect
1515
);
1616

invokeai/frontend/web/src/features/controlLayers/components/ControlLayer/ControlLayerControlAdapter.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import {
1919
} from 'features/controlLayers/store/canvasSlice';
2020
import { getFilterForModel } from 'features/controlLayers/store/filters';
2121
import { selectIsFLUX } from 'features/controlLayers/store/paramsSlice';
22-
import { selectEntityOrThrow, selectSelectedCanvas } from 'features/controlLayers/store/selectors';
22+
import { selectActiveCanvas, selectEntityOrThrow } from 'features/controlLayers/store/selectors';
2323
import type { CanvasEntityIdentifier, ControlModeV2 } from 'features/controlLayers/store/types';
2424
import { replaceCanvasEntityObjectsWithImage } from 'features/imageActions/actions';
2525
import { memo, useCallback, useMemo } from 'react';
@@ -33,7 +33,7 @@ import type {
3333
} from 'services/api/types';
3434

3535
const buildSelectControlAdapter = (entityIdentifier: CanvasEntityIdentifier<'control_layer'>) =>
36-
createSelector(selectSelectedCanvas, (canvas) => {
36+
createSelector(selectActiveCanvas, (canvas) => {
3737
const layer = selectEntityOrThrow(canvas, entityIdentifier, 'ControlLayerControlAdapter');
3838
return layer.controlAdapter;
3939
});

invokeai/frontend/web/src/features/controlLayers/components/ControlLayer/ControlLayerEntityList.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ import { createMemoizedSelector } from 'app/store/createMemoizedSelector';
33
import { useAppSelector } from 'app/store/storeHooks';
44
import { CanvasEntityGroupList } from 'features/controlLayers/components/CanvasEntityList/CanvasEntityGroupList';
55
import { ControlLayer } from 'features/controlLayers/components/ControlLayer/ControlLayer';
6-
import { selectSelectedCanvas, selectSelectedEntityIdentifier } from 'features/controlLayers/store/selectors';
6+
import { selectActiveCanvas, selectSelectedEntityIdentifier } from 'features/controlLayers/store/selectors';
77
import { getEntityIdentifier } from 'features/controlLayers/store/types';
88
import { memo } from 'react';
99

10-
const selectEntityIdentifiers = createMemoizedSelector(selectSelectedCanvas, (canvas) => {
10+
const selectEntityIdentifiers = createMemoizedSelector(selectActiveCanvas, (canvas) => {
1111
return canvas.controlLayers.entities.map(getEntityIdentifier).toReversed();
1212
});
1313

invokeai/frontend/web/src/features/controlLayers/components/ControlLayer/ControlLayerMenuItemsTransparencyEffect.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ import { useAppDispatch, useAppSelector } from 'app/store/storeHooks';
44
import { useEntityIdentifierContext } from 'features/controlLayers/contexts/EntityIdentifierContext';
55
import { useEntityIsLocked } from 'features/controlLayers/hooks/useEntityIsLocked';
66
import { controlLayerWithTransparencyEffectToggled } from 'features/controlLayers/store/canvasSlice';
7-
import { selectEntityOrThrow, selectSelectedCanvas } from 'features/controlLayers/store/selectors';
7+
import { selectActiveCanvas, selectEntityOrThrow } from 'features/controlLayers/store/selectors';
88
import type { CanvasEntityIdentifier } from 'features/controlLayers/store/types';
99
import { memo, useCallback, useMemo } from 'react';
1010
import { useTranslation } from 'react-i18next';
1111
import { PiDropHalfBold } from 'react-icons/pi';
1212

1313
const buildSelectWithTransparencyEffect = (entityIdentifier: CanvasEntityIdentifier<'control_layer'>) =>
1414
createSelector(
15-
selectSelectedCanvas,
15+
selectActiveCanvas,
1616
(canvas) =>
1717
selectEntityOrThrow(canvas, entityIdentifier, 'ControlLayerMenuItemsTransparencyEffect').withTransparencyEffect
1818
);

invokeai/frontend/web/src/features/controlLayers/components/InpaintMask/InpaintMaskDenoiseLimitSlider.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
inpaintMaskDenoiseLimitChanged,
88
inpaintMaskDenoiseLimitDeleted,
99
} from 'features/controlLayers/store/canvasSlice';
10-
import { selectEntityOrThrow, selectSelectedCanvas } from 'features/controlLayers/store/selectors';
10+
import { selectActiveCanvas, selectEntityOrThrow } from 'features/controlLayers/store/selectors';
1111
import { memo, useCallback, useMemo } from 'react';
1212
import { useTranslation } from 'react-i18next';
1313

@@ -19,7 +19,7 @@ export const InpaintMaskDenoiseLimitSlider = memo(() => {
1919
const selectDenoiseLimit = useMemo(
2020
() =>
2121
createSelector(
22-
selectSelectedCanvas,
22+
selectActiveCanvas,
2323
(canvas) => selectEntityOrThrow(canvas, entityIdentifier, 'InpaintMaskDenoiseLimitSlider').denoiseLimit
2424
),
2525
[entityIdentifier]

invokeai/frontend/web/src/features/controlLayers/components/InpaintMask/InpaintMaskList.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ import { createMemoizedSelector } from 'app/store/createMemoizedSelector';
33
import { useAppSelector } from 'app/store/storeHooks';
44
import { CanvasEntityGroupList } from 'features/controlLayers/components/CanvasEntityList/CanvasEntityGroupList';
55
import { InpaintMask } from 'features/controlLayers/components/InpaintMask/InpaintMask';
6-
import { selectSelectedCanvas, selectSelectedEntityIdentifier } from 'features/controlLayers/store/selectors';
6+
import { selectActiveCanvas, selectSelectedEntityIdentifier } from 'features/controlLayers/store/selectors';
77
import { getEntityIdentifier } from 'features/controlLayers/store/types';
88
import { memo } from 'react';
99

10-
const selectEntityIdentifiers = createMemoizedSelector(selectSelectedCanvas, (canvas) => {
10+
const selectEntityIdentifiers = createMemoizedSelector(selectActiveCanvas, (canvas) => {
1111
return canvas.inpaintMasks.entities.map(getEntityIdentifier).toReversed();
1212
});
1313

0 commit comments

Comments
 (0)