import { css } from '@patternfly/react-styles'; import styles from '../../css/topology-components'; import SvgDropShadowFilter from '../svg/SvgDropShadowFilter'; import { createSvgIdUrl, useHover } from '../../utils'; import { DEFAULT_DECORATOR_PADDING } from '../nodes'; import useCombineRefs from '../../utils/useCombineRefs'; interface DecoratorTypes { children?: React.ReactNode; className?: string; x: number; y: number; radius: number; padding?: number; showBackground?: boolean; icon?: React.ReactNode; onClick?(event: React.MouseEvent): void; ariaLabel?: string; circleRef?: React.Ref; innerRef?: React.Ref; } const HOVER_FILTER_ID = 'DecoratorDropShadowHoverFilterId'; const Decorator: React.FunctionComponent = ({ className, x, y, showBackground, radius, padding = DEFAULT_DECORATOR_PADDING, children, icon, onClick, ariaLabel, circleRef, innerRef }) => { const [hover, hoverRef] = useHover(); const iconRadius = radius - padding; return ( { e.stopPropagation(); onClick(e); }, role: 'button', 'aria-label': ariaLabel } : null)} > {showBackground && ( )} {icon ? ( {icon} ) : null} {children} ); }; export default Decorator;