Skip to content

Commit fdcd26f

Browse files
psychedelicioushipsterusername
authored andcommitted
chore(ui): lint (circular dependency)
Had to shuffle around the canvas right panel tabs state.
1 parent 95675c0 commit fdcd26f

File tree

11 files changed

+45
-31
lines changed

11 files changed

+45
-31
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import type { AppStartListening } from 'app/store/middleware/listenerMiddleware'
44
import type { SerializableObject } from 'common/types';
55
import type { Result } from 'common/util/result';
66
import { withResult, withResultAsync } from 'common/util/result';
7-
import { $canvasManager } from 'features/controlLayers/store/canvasSlice';
7+
import { $canvasManager } from 'features/controlLayers/store/ephemeral';
88
import { prepareLinearUIBatch } from 'features/nodes/util/graph/buildLinearBatchConfig';
99
import { buildFLUXGraph } from 'features/nodes/util/graph/generation/buildFLUXGraph';
1010
import { buildSD1Graph } from 'features/nodes/util/graph/generation/buildSD1Graph';

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ import {
1212
import { useAppDispatch, useAppSelector } from 'app/store/storeHooks';
1313
import { useBoolean } from 'common/hooks/useBoolean';
1414
import {
15-
setRightPanelTabToGallery,
16-
setRightPanelTabToLayers,
17-
} from 'features/controlLayers/components/CanvasRightPanel';
15+
selectCanvasRightPanelGalleryTab,
16+
selectCanvasRightPanelLayersTab,
17+
} from 'features/controlLayers/store/ephemeral';
1818
import { useImageViewer } from 'features/gallery/components/ImageViewer/useImageViewer';
1919
import { useCurrentDestination } from 'features/queue/hooks/useCurrentDestination';
2020
import { selectShowSendingToAlerts, showSendingToAlertsChanged } from 'features/system/store/systemSlice';
@@ -29,7 +29,7 @@ const ActivateImageViewerButton = (props: PropsWithChildren) => {
2929
const imageViewer = useImageViewer();
3030
const onClick = useCallback(() => {
3131
imageViewer.open();
32-
setRightPanelTabToGallery();
32+
selectCanvasRightPanelGalleryTab();
3333
}, [imageViewer]);
3434
return (
3535
<Button onClick={onClick} size="sm" variant="link" color="base.50">
@@ -69,7 +69,7 @@ const ActivateCanvasButton = (props: PropsWithChildren) => {
6969
const imageViewer = useImageViewer();
7070
const onClick = useCallback(() => {
7171
dispatch(setActiveTab('canvas'));
72-
setRightPanelTabToLayers();
72+
selectCanvasRightPanelLayersTab();
7373
imageViewer.close();
7474
}, [dispatch, imageViewer]);
7575
return (

invokeai/frontend/web/src/features/controlLayers/components/CanvasRightPanel.tsx

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,35 +4,34 @@ import { useStore } from '@nanostores/react';
44
import { useAppSelector } from 'app/store/storeHooks';
55
import { useScopeOnFocus } from 'common/hooks/interactionScopes';
66
import { CanvasLayersPanelContent } from 'features/controlLayers/components/CanvasLayersPanelContent';
7+
import {
8+
$canvasRightPanelTabIndex,
9+
selectCanvasRightPanelGalleryTab,
10+
selectCanvasRightPanelLayersTab,
11+
} from 'features/controlLayers/store/ephemeral';
712
import { selectEntityCountActive } from 'features/controlLayers/store/selectors';
813
import GalleryPanelContent from 'features/gallery/components/GalleryPanelContent';
914
import { useImageViewer } from 'features/gallery/components/ImageViewer/useImageViewer';
10-
import { atom, computed } from 'nanostores';
1115
import { memo, useCallback, useMemo, useRef } from 'react';
1216
import { useHotkeys } from 'react-hotkeys-hook';
1317
import { useTranslation } from 'react-i18next';
1418

15-
const $tabIndex = atom(0);
16-
export const $canvasRightPanelTab = computed($tabIndex, (index) => (index === 0 ? 'layers' : 'gallery'));
17-
export const setRightPanelTabToLayers = () => $tabIndex.set(0);
18-
export const setRightPanelTabToGallery = () => $tabIndex.set(1);
19-
2019
export const CanvasRightPanel = memo(() => {
2120
const { t } = useTranslation();
2221
const ref = useRef<HTMLDivElement>(null);
23-
const tabIndex = useStore($tabIndex);
22+
const tabIndex = useStore($canvasRightPanelTabIndex);
2423
useScopeOnFocus('gallery', ref);
2524
const imageViewer = useImageViewer();
2625
const onClickViewerToggleButton = useCallback(() => {
27-
if ($tabIndex.get() !== 1) {
28-
$tabIndex.set(1);
26+
if ($canvasRightPanelTabIndex.get() !== 1) {
27+
$canvasRightPanelTabIndex.set(1);
2928
}
3029
imageViewer.toggle();
3130
}, [imageViewer]);
3231
useHotkeys('z', imageViewer.toggle);
3332

3433
return (
35-
<Tabs index={tabIndex} onChange={$tabIndex.set} w="full" h="full" display="flex" flexDir="column">
34+
<Tabs index={tabIndex} onChange={$canvasRightPanelTabIndex.set} w="full" h="full" display="flex" flexDir="column">
3635
<TabList alignItems="center">
3736
<PanelTabs />
3837
<Spacer />
@@ -63,15 +62,15 @@ const PanelTabs = memo(() => {
6362
const onOnMouseOverLayersTab = useCallback(() => {
6463
tabTimeout.current = window.setTimeout(() => {
6564
if (dndCtx.active) {
66-
setRightPanelTabToLayers();
65+
selectCanvasRightPanelLayersTab();
6766
}
6867
}, 300);
6968
}, [dndCtx.active]);
7069

7170
const onOnMouseOverGalleryTab = useCallback(() => {
7271
tabTimeout.current = window.setTimeout(() => {
7372
if (dndCtx.active) {
74-
setRightPanelTabToGallery();
73+
selectCanvasRightPanelGalleryTab();
7574
}
7675
}, 300);
7776
}, [dndCtx.active]);

invokeai/frontend/web/src/features/controlLayers/components/Toolbar/CanvasToolbarResetViewButton.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { $alt, IconButton } from '@invoke-ai/ui-library';
22
import { useStore } from '@nanostores/react';
33
import { INTERACTION_SCOPES } from 'common/hooks/interactionScopes';
4-
import { $canvasManager } from 'features/controlLayers/store/canvasSlice';
4+
import { $canvasManager } from 'features/controlLayers/store/ephemeral';
55
import { memo, useCallback } from 'react';
66
import { useHotkeys } from 'react-hotkeys-hook';
77
import { useTranslation } from 'react-i18next';

invokeai/frontend/web/src/features/controlLayers/contexts/CanvasManagerProviderGate.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { useStore } from '@nanostores/react';
22
import type { CanvasManager } from 'features/controlLayers/konva/CanvasManager';
3-
import { $canvasManager } from 'features/controlLayers/store/canvasSlice';
3+
import { $canvasManager } from 'features/controlLayers/store/ephemeral';
44
import type { PropsWithChildren } from 'react';
55
import { createContext, memo, useContext } from 'react';
66
import { assert } from 'tsafe';

invokeai/frontend/web/src/features/controlLayers/hooks/useCanvasDeleteLayerHotkey.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { useStore } from '@nanostores/react';
22
import { useAppDispatch, useAppSelector } from 'app/store/storeHooks';
33
import { useAssertSingleton } from 'common/hooks/useAssertSingleton';
4-
import { $canvasRightPanelTab } from 'features/controlLayers/components/CanvasRightPanel';
54
import { useCanvasIsBusy } from 'features/controlLayers/hooks/useCanvasIsBusy';
65
import { entityDeleted } from 'features/controlLayers/store/canvasSlice';
6+
import { $canvasRightPanelTab } from 'features/controlLayers/store/ephemeral';
77
import { selectSelectedEntityIdentifier } from 'features/controlLayers/store/selectors';
88
import { selectActiveTab } from 'features/ui/store/uiSelectors';
99
import { useCallback, useMemo } from 'react';

invokeai/frontend/web/src/features/controlLayers/hooks/useInvokeCanvas.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { logger } from 'app/logging/logger';
33
import { useAppStore } from 'app/store/nanostores/store';
44
import { useAssertSingleton } from 'common/hooks/useAssertSingleton';
55
import { CanvasManager } from 'features/controlLayers/konva/CanvasManager';
6-
import { $canvasManager } from 'features/controlLayers/store/canvasSlice';
6+
import { $canvasManager } from 'features/controlLayers/store/ephemeral';
77
import Konva from 'konva';
88
import { useLayoutEffect, useState } from 'react';
99
import { $socket } from 'services/events/stores';

invokeai/frontend/web/src/features/controlLayers/konva/CanvasManager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { CanvasStagingAreaModule } from 'features/controlLayers/konva/CanvasStag
1818
import { CanvasToolModule } from 'features/controlLayers/konva/CanvasTool/CanvasToolModule';
1919
import { CanvasWorkerModule } from 'features/controlLayers/konva/CanvasWorkerModule.js';
2020
import { getPrefixedId } from 'features/controlLayers/konva/util';
21-
import { $canvasManager } from 'features/controlLayers/store/canvasSlice';
21+
import { $canvasManager } from 'features/controlLayers/store/ephemeral';
2222
import type { CanvasEntityIdentifier, CanvasEntityType } from 'features/controlLayers/store/types';
2323
import {
2424
isControlLayerEntityIdentifier,

invokeai/frontend/web/src/features/controlLayers/store/canvasSlice.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import type { PersistConfig } from 'app/store/store';
44
import { moveOneToEnd, moveOneToStart, moveToEnd, moveToStart } from 'common/util/arrayUtils';
55
import { deepClone } from 'common/util/deepClone';
66
import { roundDownToMultiple, roundToMultiple } from 'common/util/roundDownToMultiple';
7-
import type { CanvasManager } from 'features/controlLayers/konva/CanvasManager';
87
import { getPrefixedId } from 'features/controlLayers/konva/util';
98
import { canvasReset } from 'features/controlLayers/store/actions';
109
import { modelChanged } from 'features/controlLayers/store/paramsSlice';
@@ -28,7 +27,6 @@ import { ASPECT_RATIO_MAP } from 'features/parameters/components/Bbox/constants'
2827
import { getIsSizeOptimal, getOptimalDimension } from 'features/parameters/util/optimalDimension';
2928
import type { IRect } from 'konva/lib/types';
3029
import { merge, omit } from 'lodash-es';
31-
import { atom } from 'nanostores';
3230
import type { UndoableOptions } from 'redux-undo';
3331
import type { ControlNetModelConfig, ImageDTO, IPAdapterModelConfig, T2IAdapterModelConfig } from 'services/api/types';
3432
import { assert } from 'tsafe';
@@ -1234,8 +1232,3 @@ function actionsThrottlingFilter(action: UnknownAction) {
12341232
}, THROTTLE_MS);
12351233
return true;
12361234
}
1237-
1238-
/**
1239-
* The global canvas manager instance.
1240-
*/
1241-
export const $canvasManager = atom<CanvasManager | null>(null);
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import type { CanvasManager } from 'features/controlLayers/konva/CanvasManager';
2+
import { atom, computed } from 'nanostores';
3+
4+
// Ephemeral state for canvas - not persisted across sessions.
5+
6+
/**
7+
* The global canvas manager instance.
8+
*/
9+
export const $canvasManager = atom<CanvasManager | null>(null);
10+
11+
/**
12+
* The index of the active tab in the canvas right panel.
13+
*/
14+
export const $canvasRightPanelTabIndex = atom(0);
15+
/**
16+
* The name of the active tab in the canvas right panel.
17+
*/
18+
export const $canvasRightPanelTab = computed($canvasRightPanelTabIndex, (index) =>
19+
index === 0 ? 'layers' : 'gallery'
20+
);
21+
export const selectCanvasRightPanelLayersTab = () => $canvasRightPanelTabIndex.set(0);
22+
export const selectCanvasRightPanelGalleryTab = () => $canvasRightPanelTabIndex.set(1);

0 commit comments

Comments
 (0)