InvokeAI/invokeai/frontend/web/src/common/components/ImageMetadataOverlay.tsx

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

55 lines
1.2 KiB
TypeScript
Raw Normal View History

2023-05-11 04:18:35 +00:00
import { Badge, Flex } from '@chakra-ui/react';
import { isNumber, isString } from 'lodash-es';
import { useMemo } from 'react';
2023-05-22 09:45:08 +00:00
import { ImageDTO } from 'services/api';
2023-05-11 04:18:35 +00:00
type ImageMetadataOverlayProps = {
2023-05-22 09:45:08 +00:00
image: ImageDTO;
2023-05-11 04:18:35 +00:00
};
const ImageMetadataOverlay = ({ image }: ImageMetadataOverlayProps) => {
const dimensions = useMemo(() => {
if (!isNumber(image.metadata?.width) || isNumber(!image.metadata?.height)) {
return;
}
return `${image.metadata?.width} × ${image.metadata?.height}`;
}, [image.metadata]);
const model = useMemo(() => {
2023-05-22 09:45:08 +00:00
if (!isString(image.metadata?.model)) {
2023-05-11 04:18:35 +00:00
return;
}
2023-05-22 09:45:08 +00:00
return image.metadata?.model;
2023-05-11 04:18:35 +00:00
}, [image.metadata]);
return (
<Flex
sx={{
pointerEvents: 'none',
flexDirection: 'column',
position: 'absolute',
top: 0,
right: 0,
p: 2,
alignItems: 'flex-end',
gap: 2,
}}
>
{dimensions && (
<Badge variant="solid" colorScheme="base">
{dimensions}
</Badge>
)}
{model && (
<Badge variant="solid" colorScheme="base">
{model}
</Badge>
)}
</Flex>
);
};
export default ImageMetadataOverlay;