@@ -5,10 +5,18 @@ import ImageSliderNavigation, { ImageSliderNavDirection, ImageSliderNavStyle } f
55import ImageSliderBullets from './ImageSliderBullets' ;
66import useSlideIndex from './hooks/useSlideIndex' ;
77
8+ type URLObject = {
9+ url : string ;
10+ } ;
11+
12+ const getURLValueFromImages = ( images : URLObject [ ] | string [ ] , index : number ) => {
13+ return ( images as URLObject [ ] ) [ index ] ?. url || ( images as string [ ] ) [ index ] ;
14+ } ;
15+
816export type SimpleImageSliderProps = {
917 width : number | string ;
1018 height : number | string ;
11- images : Array < { url : string } > ;
19+ images : URLObject [ ] | string [ ] ;
1220 style ?: React . CSSProperties ;
1321 showNavs : boolean ;
1422 showBullets : boolean ;
@@ -59,8 +67,8 @@ const SimpleImageSlider: React.FC<SimpleImageSliderProps> = ({
5967 autoPlay,
6068 autoPlayDelay : autoPlayDelay + slideDuration
6169 } ) ;
62- const [ currentSliderStyle , setCurrentSlideStyle ] = useState ( styles . getImageSlide ( images [ 0 ] . url , slideDuration , 0 , useGPURender ) ) ;
63- const [ nextSliderStyle , setNextSliderStyle ] = useState ( styles . getImageSlide ( images [ 1 ] ?. url , slideDuration , 1 , useGPURender ) ) ;
70+ const [ currentSliderStyle , setCurrentSlideStyle ] = useState ( styles . getImageSlide ( getURLValueFromImages ( images , 0 ) , slideDuration , 0 , useGPURender ) ) ;
71+ const [ nextSliderStyle , setNextSliderStyle ] = useState ( styles . getImageSlide ( getURLValueFromImages ( images , 1 ) , slideDuration , 1 , useGPURender ) ) ;
6472 const isSlidingRef = useRef ( false ) ;
6573
6674 const handleClick = useCallback (
@@ -100,8 +108,8 @@ const SimpleImageSlider: React.FC<SimpleImageSliderProps> = ({
100108 return ;
101109 }
102110
103- const currentUrl : string = images [ getNextLoopingIdx ( isRightDirection ? slideIdx - 1 : slideIdx + 1 ) ] . url ;
104- const nextUrl : string = images [ slideIdx ] . url ;
111+ const currentUrl : string = getURLValueFromImages ( images , getNextLoopingIdx ( isRightDirection ? slideIdx - 1 : slideIdx + 1 ) ) ;
112+ const nextUrl : string = getURLValueFromImages ( images , slideIdx ) ;
105113 const currentOffsetX : 1 | - 1 = isRightDirection ? - 1 : 1 ;
106114 const nextReadyOffsetX : 1 | - 1 = isRightDirection ? 1 : - 1 ;
107115
@@ -116,8 +124,8 @@ const SimpleImageSlider: React.FC<SimpleImageSliderProps> = ({
116124
117125 const handleSlideEnd = useCallback ( ( ) => {
118126 isSlidingRef . current = false ;
119- ImagePreLoader . load ( images [ slideIdx + 2 ] ?. url ) ;
120- setCurrentSlideStyle ( styles . getImageSlide ( images [ slideIdx ] . url , 0 , 0 , useGPURender ) ) ;
127+ ImagePreLoader . load ( getURLValueFromImages ( images , slideIdx + 2 ) ) ;
128+ setCurrentSlideStyle ( styles . getImageSlide ( getURLValueFromImages ( images , slideIdx ) , 0 , 0 , useGPURender ) ) ;
121129 onCompleteSlide ?.( slideIdx + 1 , images . length ) ;
122130 } , [ onCompleteSlide , slideIdx ] ) ;
123131
0 commit comments