From 931d6521f6334e50ca0d3c97d844ca6036f426ee Mon Sep 17 00:00:00 2001 From: Kent Keirsey <31807370+hipsterusername@users.noreply.github.com> Date: Sun, 6 Jul 2025 21:54:55 -0400 Subject: [PATCH] Adds bbox to ref image button --- .../components/RefImage/RefImageList.tsx | 48 +++++++++++++++++-- 1 file changed, 45 insertions(+), 3 deletions(-) diff --git a/invokeai/frontend/web/src/features/controlLayers/components/RefImage/RefImageList.tsx b/invokeai/frontend/web/src/features/controlLayers/components/RefImage/RefImageList.tsx index 62f188e5b3..064987f41e 100644 --- a/invokeai/frontend/web/src/features/controlLayers/components/RefImage/RefImageList.tsx +++ b/invokeai/frontend/web/src/features/controlLayers/components/RefImage/RefImageList.tsx @@ -2,8 +2,14 @@ import { Button, Collapse, Divider, Flex } from '@invoke-ai/ui-library'; import { useAppSelector, useAppStore } from 'app/store/storeHooks'; import { useImageUploadButton } from 'common/hooks/useImageUploadButton'; import { RefImagePreview } from 'features/controlLayers/components/RefImage/RefImagePreview'; +import { + CanvasManagerProviderGate, + useCanvasManagerSafe, +} from 'features/controlLayers/contexts/CanvasManagerProviderGate'; import { RefImageIdContext } from 'features/controlLayers/contexts/RefImageIdContext'; import { getDefaultRefImageConfig } from 'features/controlLayers/hooks/addLayerHooks'; +import { useNewGlobalReferenceImageFromBbox } from 'features/controlLayers/hooks/saveCanvasHooks'; +import { useCanvasIsBusySafe } from 'features/controlLayers/hooks/useCanvasIsBusy'; import { refImageAdded, selectIsRefImagePanelOpen, @@ -13,8 +19,10 @@ import { import { imageDTOToImageWithDims } from 'features/controlLayers/store/util'; import { addGlobalReferenceImageDndTarget } from 'features/dnd/dnd'; import { DndDropTarget } from 'features/dnd/DndDropTarget'; +import { selectActiveTab } from 'features/ui/store/uiSelectors'; import { memo, useMemo } from 'react'; -import { PiUploadBold } from 'react-icons/pi'; +import { useTranslation } from 'react-i18next'; +import { PiBoundingBoxBold, PiUploadBold } from 'react-icons/pi'; import type { ImageDTO } from 'services/api/types'; import { RefImageHeader } from './RefImageHeader'; @@ -77,7 +85,11 @@ const MaxRefImages = memo(() => { MaxRefImages.displayName = 'MaxRefImages'; const AddRefImageDropTargetAndButton = memo(() => { + const { t } = useTranslation(); const { dispatch, getState } = useAppStore(); + const tab = useAppSelector(selectActiveTab); + const canvasManager = useCanvasManagerSafe(); + const isBusy = useCanvasIsBusySafe(); const uploadOptions = useMemo( () => @@ -95,7 +107,7 @@ const AddRefImageDropTargetAndButton = memo(() => { const uploadApi = useImageUploadButton(uploadOptions); return ( - <> + - + {tab === 'canvas' && canvasManager && ( + + + + )} + + ); +}); + +const BboxButton = memo(() => { + const { t } = useTranslation(); + const isBusy = useCanvasIsBusySafe(); + const newGlobalReferenceImageFromBbox = useNewGlobalReferenceImageFromBbox(); + + return ( + ); }); AddRefImageDropTargetAndButton.displayName = 'AddRefImageDropTargetAndButton';