|
1 | 1 | import { Divider, Flex } from '@invoke-ai/ui-library';
|
2 |
| -import { ImageViewer } from 'features/gallery/components/ImageViewer/ImageViewer'; |
3 |
| -import { ViewerToolbar } from 'features/gallery/components/ImageViewer/ViewerToolbar'; |
4 |
| -import { memo } from 'react'; |
| 2 | +import { useAppSelector } from 'app/store/storeHooks'; |
| 3 | +import type { SetComparisonImageDndTargetData } from 'features/dnd/dnd'; |
| 4 | +import { setComparisonImageDndTarget } from 'features/dnd/dnd'; |
| 5 | +import { DndDropTarget } from 'features/dnd/DndDropTarget'; |
| 6 | +import { selectImageToCompare, selectLastSelectedImage } from 'features/gallery/store/gallerySelectors'; |
| 7 | +import { memo, useMemo } from 'react'; |
| 8 | +import { useTranslation } from 'react-i18next'; |
5 | 9 |
|
6 | 10 | import { ImageViewerContextProvider } from './context';
|
| 11 | +import { ImageViewer } from './ImageViewer'; |
| 12 | +import { ViewerToolbar } from './ViewerToolbar'; |
7 | 13 |
|
8 | 14 | export const ImageViewerPanel = memo(() => {
|
| 15 | + const { t } = useTranslation(); |
| 16 | + const lastSelectedImage = useAppSelector(selectLastSelectedImage); |
| 17 | + const imageToCompare = useAppSelector(selectImageToCompare); |
| 18 | + |
| 19 | + // Only show drop target when we have a selected image but no comparison image yet |
| 20 | + const shouldShowDropTarget = lastSelectedImage && !imageToCompare; |
| 21 | + |
| 22 | + const dndTargetData = useMemo<SetComparisonImageDndTargetData>(() => setComparisonImageDndTarget.getData(), []); |
| 23 | + |
9 | 24 | return (
|
10 | 25 | <ImageViewerContextProvider>
|
11 |
| - <Flex flexDir="column" w="full" h="full" overflow="hidden" gap={2}> |
| 26 | + <Flex flexDir="column" w="full" h="full" overflow="hidden" gap={2} position="relative"> |
12 | 27 | <ViewerToolbar />
|
13 | 28 | <Divider />
|
14 |
| - <ImageViewer /> |
| 29 | + <Flex w="full" h="full" position="relative"> |
| 30 | + <ImageViewer /> |
| 31 | + {shouldShowDropTarget && ( |
| 32 | + <DndDropTarget |
| 33 | + dndTarget={setComparisonImageDndTarget} |
| 34 | + dndTargetData={dndTargetData} |
| 35 | + label={t('gallery.selectForCompare')} |
| 36 | + /> |
| 37 | + )} |
| 38 | + </Flex> |
15 | 39 | </Flex>
|
16 | 40 | </ImageViewerContextProvider>
|
17 | 41 | );
|
|
0 commit comments