import { Box, Flex, Image } from '@invoke-ai/ui-library'; import { useAppSelector } from 'app/store/storeHooks'; import { useBoolean } from 'common/hooks/useBoolean'; import { preventDefault } from 'common/util/stopPropagation'; import { TRANSPARENCY_CHECKERBOARD_PATTERN_DARK_DATAURL } from 'features/controlLayers/konva/patterns/transparency-checkerboard-pattern'; import type { Dimensions } from 'features/controlLayers/store/types'; import { ImageComparisonLabel } from 'features/gallery/components/ImageViewer/ImageComparisonLabel'; import { selectComparisonFit } from 'features/gallery/store/gallerySelectors'; import { memo, useMemo, useRef } from 'react'; import type { ComparisonProps } from './common'; import { fitDimsToContainer, getSecondImageDims } from './common'; export const ImageComparisonHover = memo(({ firstImage, secondImage, containerDims }: ComparisonProps) => { const comparisonFit = useAppSelector(selectComparisonFit); const imageContainerRef = useRef(null); const mouseOver = useBoolean(false); const fittedDims = useMemo( () => fitDimsToContainer(containerDims, firstImage), [containerDims, firstImage] ); const compareImageDims = useMemo( () => getSecondImageDims(comparisonFit, fittedDims, firstImage, secondImage), [comparisonFit, fittedDims, firstImage, secondImage] ); return ( ); }); ImageComparisonHover.displayName = 'ImageComparisonHover';