import React, {memo} from 'react';
import {useAnimatedProps} from 'react-native-reanimated';
import {vector} from '../../utils/worklets';
import {AnimatedLine, AnimatedText} from './Animated';
import {SharedNumber, SharedVector} from '../../types';
export interface MarkProps {
r: SharedNumber;
trackWidth: SharedNumber;
center: SharedVector;
color: string;
showText: boolean;
thickness: number;
length: number;
theta: number;
text?: string;
}
export const Mark = memo(
({
r,
trackWidth,
center,
showText,
color,
thickness,
length,
theta,
text,
}: MarkProps) => {
const animatedLineProps = useAnimatedProps(() => {
const v1 = vector(theta, r.value - trackWidth.value / 2, center.value);
const v2 = vector(
theta,
r.value - trackWidth.value / 2 - (text ? length : length / 2),
center.value,
);
return {
x1: v1.x,
y1: v1.y,
x2: v2.x,
y2: v2.y,
};
});
const animatedTextProps = useAnimatedProps(() => {
const v = vector(
theta,
r.value - trackWidth.value / 2 - length - 10,
center.value,
);
return {
x: v.x,
y: v.y,
};
}, [length]);
return (
<>
{showText && (
{text}
)}
>
);
},
);