"use client"; import React from "react"; import useEmblaCarousel, { EmblaCarouselType, EmblaOptionsType, } from "embla-carousel-react"; import Image from "next/image"; import "./carousel.css"; import Autoplay from "embla-carousel-autoplay"; import AutoHeight from "embla-carousel-auto-height"; import { PrevButton, NextButton } from "./EmblaCarouselArrowsDotsButtons"; import { useState, useCallback, useEffect } from "react"; type PropType = { slides: number[]; options?: EmblaOptionsType; }; export const EmblaCarousel = () => { const [emblaRef, emblaApi] = useEmblaCarousel({ loop: false }, [Autoplay()]); const [prevBtnDisabled, setPrevBtnDisabled] = useState(true); const [nextBtnDisabled, setNextBtnDisabled] = useState(true); const [selectedIndex, setSelectedIndex] = useState(0); const [scrollSnaps, setScrollSnaps] = useState([]); const scrollPrev = useCallback( () => emblaApi && emblaApi.scrollPrev(), [emblaApi] ); const scrollNext = useCallback( () => emblaApi && emblaApi.scrollNext(), [emblaApi] ); const scrollTo = useCallback( (index: number) => emblaApi && emblaApi.scrollTo(index), [emblaApi] ) const onInit = useCallback((emblaApi: EmblaCarouselType) => { setScrollSnaps(emblaApi.scrollSnapList()); }, []); const onSelect = useCallback((emblaApi: EmblaCarouselType) => { // setSelectedIndex(emblaApi.selectedScrollSnap()) setPrevBtnDisabled(!emblaApi.canScrollPrev()); setNextBtnDisabled(!emblaApi.canScrollNext()); }, []); useEffect(() => { if (!emblaApi) return; onInit(emblaApi); onSelect(emblaApi); emblaApi.on("reInit", onInit); emblaApi.on("reInit", onSelect); emblaApi.on("select", onSelect); }, [emblaApi, onInit, onSelect]); return (
/
/
/
); };