import React, { useState, useEffect, useCallback, useRef, memo } from 'react'; import { MdOutlineArrowForwardIos, MdOutlineArrowBackIos } from 'react-icons/md'; import useEmblaCarousel from 'embla-carousel-react'; import Autoplay from 'embla-carousel-autoplay'; import './carousel.scss'; function EmblaCarousel({ data }) { const autoplay = useRef( Autoplay({ delay: 3000, stopOnInteraction: false }, (emblaRoot) => emblaRoot.parentElement), ); const [emblaRef, emblaApi] = useEmblaCarousel({ loop: false }, [autoplay.current]); const [prevBtnEnabled, setPrevBtnEnabled] = useState(false); const [nextBtnEnabled, setNextBtnEnabled] = useState(false); const scroll = useCallback( (direction) => { if (!emblaApi) { return; } if (direction === 'next') { emblaApi.scrollNext(); } else { emblaApi.scrollPrev(); } autoplay.current.reset(); }, [emblaApi], ); const onSelect = useCallback(() => { if (!emblaApi) { return; } setPrevBtnEnabled(emblaApi.canScrollPrev()); setNextBtnEnabled(emblaApi.canScrollNext()); }, [emblaApi]); useEffect(() => { if (!emblaApi) { return; } onSelect(); emblaApi.on('select', onSelect); }, [emblaApi, onSelect]); return (
{data.map((photo, index) => (
Marketplace example screenshot
))}
); } export default memo(EmblaCarousel);