refactor(edgeAnchor): add types, class name handling
This commit is contained in:
@@ -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"
|
/>
|
||||||
/>
|
);
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user