mirror of
https://github.com/invoke-ai/InvokeAI.git
synced 2026-02-15 13:05:16 -05:00
40 lines
890 B
TypeScript
40 lines
890 B
TypeScript
import { Box } from '@chakra-ui/react';
|
|
import { memo, useMemo } from 'react';
|
|
|
|
type Props = {
|
|
isSelected: boolean;
|
|
isHovered: boolean;
|
|
};
|
|
const SelectionOverlay = ({ isSelected, isHovered }: Props) => {
|
|
const shadow = useMemo(() => {
|
|
if (isSelected && isHovered) {
|
|
return 'nodeHoveredSelected';
|
|
}
|
|
if (isSelected) {
|
|
return 'nodeSelected';
|
|
}
|
|
if (isHovered) {
|
|
return 'nodeHovered';
|
|
}
|
|
return undefined;
|
|
}, [isHovered, isSelected]);
|
|
return (
|
|
<Box
|
|
className="selection-box"
|
|
position="absolute"
|
|
top={0}
|
|
insetInlineEnd={0}
|
|
bottom={0}
|
|
insetInlineStart={0}
|
|
borderRadius="base"
|
|
opacity={isSelected || isHovered ? 1 : 0.5}
|
|
transitionProperty="common"
|
|
transitionDuration="0.1s"
|
|
pointerEvents="none"
|
|
shadow={shadow}
|
|
/>
|
|
);
|
|
};
|
|
|
|
export default memo(SelectionOverlay);
|