Skip to content

Commit a2b40d2

Browse files
authored
Merge pull request #69 from pedroven/feat/import-images-two-ways
Add another way to pass image URL to the component
2 parents f5f63e4 + 80cc796 commit a2b40d2

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

src/ImageSlider.tsx

+15-7
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,18 @@ import ImageSliderNavigation, { ImageSliderNavDirection, ImageSliderNavStyle } f
55
import ImageSliderBullets from './ImageSliderBullets';
66
import 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+
816
export 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

Comments
 (0)