import { Flex, Heading, Icon, Text } from '@invoke-ai/ui-library'; import { useAppStore } from 'app/store/storeHooks'; import { useImageUploadButton } from 'common/hooks/useImageUploadButton'; import { LaunchpadButton } from 'features/controlLayers/components/SimpleSession/LaunchpadButton'; import { newCanvasFromImageDndTarget } from 'features/dnd/dnd'; import { DndDropTarget } from 'features/dnd/DndDropTarget'; import { newCanvasFromImage } from 'features/imageActions/actions'; import { memo, useCallback } from 'react'; import { PiPencilBold, PiUploadBold } from 'react-icons/pi'; import type { ImageDTO } from 'services/api/types'; const NEW_CANVAS_OPTIONS = { type: 'raster_layer', withInpaintMask: true } as const; const dndTargetData = newCanvasFromImageDndTarget.getData(NEW_CANVAS_OPTIONS); export const LaunchpadEditImageButton = memo((props: { extraAction?: () => void }) => { const { getState, dispatch } = useAppStore(); const onUpload = useCallback( (imageDTO: ImageDTO) => { newCanvasFromImage({ imageDTO, getState, dispatch, ...NEW_CANVAS_OPTIONS }); props.extraAction?.(); }, [dispatch, getState, props] ); const uploadApi = useImageUploadButton({ allowMultiple: false, onUpload }); return ( Edit Image Add an image to refine. ); }); LaunchpadEditImageButton.displayName = 'LaunchpadEditImageButton';