import React from "react"; import { Animated, Easing } from "react-native"; import Indicator, { IndicatorProps } from "./indicator"; export type DotIndicatorProps = IndicatorProps & { count?: number; size?: number; color?: string; }; const DotIndicator = React.memo( React.forwardRef( ( { count = 4, size = 16, color = "rgb(0, 0, 0)", animationEasing = Easing.inOut(Easing.ease), ...rest }: DotIndicatorProps, ref: any ) => { const _renderComponent = React.useCallback( ({ index, count, progress, }: { index: number; count: number; progress: Animated.Value; }) => { let style = { width: size, height: size, margin: size / 2, borderRadius: size / 2, backgroundColor: color, transform: [ { scale: progress.interpolate({ inputRange: [ 0.0, (index + 0.5) / (count + 1), (index + 1.0) / (count + 1), (index + 1.5) / (count + 1), 1.0, ], outputRange: [1.0, 1.36, 1.56, 1.06, 1.0], }), }, ], }; return ; }, [size, color] ); return ( ); } ) ); export default DotIndicator;