refactor(edgeAnchor): add types, class name handling

This commit is contained in:
moklick
2021-03-05 20:49:14 +01:00
parent b71c9eb891
commit 0ca48c2b7f
+25 -27
View File
@@ -1,42 +1,40 @@
import React from 'react'; import React, { FC, HTMLAttributes } from 'react';
import cc from 'classcat';
import { Position } from '../../types'; import { Position } from '../../types';
const shiftX = (x: number, shift: number, position: Position) => { const shiftX = (x: number, shift: number, position: Position): number => {
if (position === Position.Left) return x - shift; if (position === Position.Left) return x - shift;
if (position === Position.Right) return x + shift; if (position === Position.Right) return x + shift;
return x; return x;
} };
const shiftY = (y: number, shift: number, position: Position) => { const shiftY = (y: number, shift: number, position: Position): number => {
if (position === Position.Top) return y - shift; if (position === Position.Top) return y - shift;
if (position === Position.Bottom) return y + shift; if (position === Position.Bottom) return y + shift;
return y; return y;
};
export interface EdgeAnchorProps extends HTMLAttributes<HTMLDivElement> {
position: Position;
centerX: number;
centerY: number;
radius?: number;
} }
export interface EdgeAnchorProps { export const EdgeAnchor: FC<EdgeAnchorProps> = ({
className?: string className,
position: Position
centerX: number
centerY: number
radius?: number
}
export const EdgeAnchor = ({
className = "react-flow__edgeupdater",
position, position,
centerX, centerX,
centerY, centerY,
radius = 10 radius = 10,
}: EdgeAnchorProps): JSX.Element => { }: EdgeAnchorProps) => (
return ( <circle
<circle className={cc(['react-flow__edgeupdater', className])}
className={className} cx={shiftX(centerX, radius, position)}
cx={shiftX(centerX, radius, position)} cy={shiftY(centerY, radius, position)}
cy={shiftY(centerY, radius, position)} r={radius}
r={radius} stroke="transparent"
stroke="transparent" fill="transparent"
fill="transparent" />
/> );
);
}