@@ -4,11 +4,23 @@ import Animated, { useAnimatedStyle } from 'react-native-reanimated';
44import { ShimmerContext } from './ShimmerContext' ;
55import { MyLinearGradient } from './LinearGradient' ;
66
7+ const DEFAULT_LINEAR_GRADIENTS = [ 'transparent' , '#FFFFFF30' , 'transparent' ] ;
8+ const DEFAULT_GRADIENT_START = { x : 0 , y : 0.5 } ;
9+ const DEFAULT_GRADIENT_END = { x : 1 , y : 0.5 } ;
10+
711interface Props {
812 style ?: ViewStyle | ViewStyle [ ] ;
13+ linearGradients ?: string [ ] ;
14+ gradientStart ?: { x : number ; y : number } ;
15+ gradientEnd ?: { x : number ; y : number } ;
916}
1017
11- export const Shimmer : React . FC < Props > = ( { style } ) => {
18+ export const Shimmer = ( {
19+ style,
20+ linearGradients = DEFAULT_LINEAR_GRADIENTS ,
21+ gradientStart = DEFAULT_GRADIENT_START ,
22+ gradientEnd = DEFAULT_GRADIENT_END ,
23+ } : Props ) : React . ReactNode => {
1224 const shimmer = useContext ( ShimmerContext ) ;
1325 const shimmerRef = React . useRef < View > ( null ) ;
1426 const [ offset , setOffset ] = useState ( 0 ) ;
@@ -39,9 +51,9 @@ export const Shimmer: React.FC<Props> = ({ style }) => {
3951 < View ref = { shimmerRef } onLayout = { measure } style = { [ styles . container , style ] } >
4052 < Animated . View style = { [ gradientStyle , styles . gradientWrapper ] } >
4153 < MyLinearGradient
42- colors = { [ 'transparent' , '#FFFFFF30' , 'transparent' ] }
43- start = { { x : 0 , y : 0.5 } }
44- end = { { x : 1 , y : 0.5 } }
54+ colors = { linearGradients }
55+ start = { gradientStart }
56+ end = { gradientEnd }
4557 style = { StyleSheet . absoluteFill }
4658 />
4759 </ Animated . View >
0 commit comments