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';