NEWONE1 / invokeai /frontend /web /src /features /gallery /components /ImageContextMenu /ImageMenuItemCopy.tsx
| import { IconMenuItem } from 'common/components/IconMenuItem'; | |
| import { useCopyImageToClipboard } from 'common/hooks/useCopyImageToClipboard'; | |
| import { useImageDTOContext } from 'features/gallery/contexts/ImageDTOContext'; | |
| import { memo, useCallback } from 'react'; | |
| import { useTranslation } from 'react-i18next'; | |
| import { PiCopyBold } from 'react-icons/pi'; | |
| export const ImageMenuItemCopy = memo(() => { | |
| const { t } = useTranslation(); | |
| const imageDTO = useImageDTOContext(); | |
| const { isClipboardAPIAvailable, copyImageToClipboard } = useCopyImageToClipboard(); | |
| const onClick = useCallback(() => { | |
| copyImageToClipboard(imageDTO.image_url); | |
| }, [copyImageToClipboard, imageDTO.image_url]); | |
| if (!isClipboardAPIAvailable) { | |
| return null; | |
| } | |
| return ( | |
| <IconMenuItem | |
| icon={<PiCopyBold />} | |
| aria-label={t('parameters.copyImage')} | |
| tooltip={t('parameters.copyImage')} | |
| onClickCapture={onClick} | |
| /> | |
| ); | |
| }); | |
| ImageMenuItemCopy.displayName = 'ImageMenuItemCopy'; | |