/**
* An example for a custom SelectionDot component.
*
* Usage:
*
* ```jsx
*
* ```
*
* This example has removed the outer ring and light
* shadow from the default one to make it more flat.
*/
import React, { useCallback } from 'react';
import {
runOnJS,
useAnimatedReaction,
withSpring,
useSharedValue,
} from 'react-native-reanimated';
import { Circle } from '@shopify/react-native-skia';
import type { SelectionDotProps } from 'react-native-graph';
export function SelectionDot({
isActive,
color,
circleX,
circleY,
}: SelectionDotProps): React.ReactElement {
const circleRadius = useSharedValue(0);
const setIsActive = useCallback(
(active: boolean) => {
circleRadius.value = withSpring(active ? 5 : 0, {
mass: 1,
stiffness: 1000,
damping: 50,
velocity: 0,
});
},
[circleRadius]
);
useAnimatedReaction(
() => isActive.value,
(active) => {
runOnJS(setIsActive)(active);
},
[isActive, setIsActive]
);
return ;
}