import './Selector.scss'; import * as React from 'react'; import { IContainerModel } from '../../../../Interfaces/IContainerModel'; import { SHOW_SELECTOR_TEXT } from '../../../../utils/default'; import { GetAbsolutePosition } from '../../../../utils/itertools'; import { RemoveMargin } from '../../../../utils/svg'; interface ISelectorProps { selected?: IContainerModel scale?: number } export function Selector(props: ISelectorProps): JSX.Element { if (props.selected === undefined || props.selected === null) { return ( ); } const scale = (props.scale ?? 1); let [x, y] = GetAbsolutePosition(props.selected); let [width, height] = [ props.selected.properties.width, props.selected.properties.height ]; ({ x, y, width, height } = RemoveMargin(x, y, width, height, props.selected.properties.margin.left, props.selected.properties.margin.bottom, props.selected.properties.margin.top, props.selected.properties.margin.right )); const xText = x + width / 2; const yText = y + height / 2; const style: React.CSSProperties = { stroke: '#3B82F6', strokeWidth: 4 / scale, fillOpacity: 0, transitionProperty: 'all', transitionTimingFunction: 'cubic-bezier(0.4, 0, 0.2, 1)', transitionDuration: '150ms', animation: 'fadein 750ms ease-in alternate infinite' }; return ( <> {SHOW_SELECTOR_TEXT ? {props.selected.properties.displayedText} : null} ); }