Skip to content

Commit f0c80a8

Browse files
tidy(ui): dnd stuff
1 parent 8da9e7c commit f0c80a8

File tree

27 files changed

+676
-614
lines changed

27 files changed

+676
-614
lines changed

invokeai/frontend/web/src/app/logging/logger.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const $logger = atom<Logger>(Roarr.child(BASE_CONTEXT));
1717
export const zLogNamespace = z.enum([
1818
'canvas',
1919
'config',
20+
'dnd',
2021
'events',
2122
'gallery',
2223
'generation',

invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/index.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import { addBatchEnqueuedListener } from 'app/store/middleware/listenerMiddlewar
99
import { addDeleteBoardAndImagesFulfilledListener } from 'app/store/middleware/listenerMiddleware/listeners/boardAndImagesDeleted';
1010
import { addBoardIdSelectedListener } from 'app/store/middleware/listenerMiddleware/listeners/boardIdSelected';
1111
import { addBulkDownloadListeners } from 'app/store/middleware/listenerMiddleware/listeners/bulkDownload';
12-
import { addDndDroppedListener } from 'app/store/middleware/listenerMiddleware/listeners/dnd';
1312
import { addEnqueueRequestedLinear } from 'app/store/middleware/listenerMiddleware/listeners/enqueueRequestedLinear';
1413
import { addEnqueueRequestedNodes } from 'app/store/middleware/listenerMiddleware/listeners/enqueueRequestedNodes';
1514
import { addGalleryImageClickedListener } from 'app/store/middleware/listenerMiddleware/listeners/galleryImageClicked';
@@ -93,9 +92,6 @@ addGetOpenAPISchemaListener(startAppListening);
9392
addWorkflowLoadRequestedListener(startAppListening);
9493
addUpdateAllNodesRequestedListener(startAppListening);
9594

96-
// DND
97-
addDndDroppedListener(startAppListening);
98-
9995
// Models
10096
addModelSelectedListener(startAppListening);
10197

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

Lines changed: 0 additions & 284 deletions
This file was deleted.
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import { Box, Flex } from '@invoke-ai/ui-library';
2+
import { useAppDispatch } from 'app/store/storeHooks';
3+
import { useCanvasEntityListDnd } from 'features/controlLayers/components/CanvasEntityList/useCanvasEntityListDnd';
4+
import { useEntityIdentifierContext } from 'features/controlLayers/contexts/EntityIdentifierContext';
5+
import { useEntityIsSelected } from 'features/controlLayers/hooks/useEntityIsSelected';
6+
import { useEntitySelectionColor } from 'features/controlLayers/hooks/useEntitySelectionColor';
7+
import { entitySelected } from 'features/controlLayers/store/canvasSlice';
8+
import { DndListDropIndicator } from 'features/dnd/DndListDropIndicator';
9+
import type { PropsWithChildren } from 'react';
10+
import { memo, useCallback, useRef } from 'react';
11+
12+
export const CanvasEntityContainer = memo((props: PropsWithChildren) => {
13+
const dispatch = useAppDispatch();
14+
const entityIdentifier = useEntityIdentifierContext();
15+
const isSelected = useEntityIsSelected(entityIdentifier);
16+
const selectionColor = useEntitySelectionColor(entityIdentifier);
17+
const onClick = useCallback(() => {
18+
if (isSelected) {
19+
return;
20+
}
21+
dispatch(entitySelected({ entityIdentifier }));
22+
}, [dispatch, entityIdentifier, isSelected]);
23+
const ref = useRef<HTMLDivElement>(null);
24+
25+
const dndState = useCanvasEntityListDnd(ref, entityIdentifier);
26+
27+
return (
28+
<Box position="relative">
29+
<Flex
30+
// This is used to trigger the post-move flash animation
31+
data-entity-id={entityIdentifier.id}
32+
ref={ref}
33+
position="relative"
34+
flexDir="column"
35+
w="full"
36+
bg={isSelected ? 'base.800' : 'base.850'}
37+
onClick={onClick}
38+
borderInlineStartWidth={5}
39+
borderColor={isSelected ? selectionColor : 'base.800'}
40+
borderRadius="base"
41+
>
42+
{props.children}
43+
</Flex>
44+
<DndListDropIndicator dndState={dndState} />
45+
</Box>
46+
);
47+
});
48+
49+
CanvasEntityContainer.displayName = 'CanvasEntityContainer';

0 commit comments

Comments
 (0)