import { ExternalLink, Flex, Tab, TabList, TabPanel, TabPanels, Tabs } from '@invoke-ai/ui-library'; import { IAINoContentFallback, IAINoContentFallbackWithSpinner } from 'common/components/IAIImageFallback'; import ScrollableContent from 'common/components/OverlayScrollbars/ScrollableContent'; import ImageMetadataGraphTabContent from 'features/gallery/components/ImageMetadataViewer/ImageMetadataGraphTabContent'; import { MetadataHandlers } from 'features/metadata/parsing'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; import { useDebouncedMetadata } from 'services/api/hooks/useDebouncedMetadata'; import type { ImageDTO } from 'services/api/types'; import DataViewer from './DataViewer'; import ImageMetadataActions, { UnrecallableMetadataDatum } from './ImageMetadataActions'; import ImageMetadataWorkflowTabContent from './ImageMetadataWorkflowTabContent'; type ImageMetadataViewerProps = { image: ImageDTO; }; const ImageMetadataViewer = ({ image }: ImageMetadataViewerProps) => { // TODO: fix hotkeys // const dispatch = useAppDispatch(); // useHotkeys('esc', () => { // dispatch(setShouldShowImageDetails(false)); // }); const { t } = useTranslation(); const { metadata, isLoading } = useDebouncedMetadata(image.image_name); return ( {t('metadata.recallParameters')} {t('metadata.metadata')} {t('metadata.imageDetails')} {t('metadata.workflow')} {t('nodes.graph')} {isLoading && } {metadata && !isLoading && ( )} {!metadata && !isLoading && } {metadata ? ( ) : ( )} {image ? ( ) : ( )} ); }; export default memo(ImageMetadataViewer);