import React, { useCallback, useEffect, useState } from 'react' import { EmblaCarouselType } from 'embla-carousel' type UseSelectedSnapDisplayType = { selectedSnap: number snapCount: number } export const useSelectedSnapDisplay = ( emblaApi: EmblaCarouselType | undefined ): UseSelectedSnapDisplayType => { const [selectedSnap, setSelectedSnap] = useState(0) const [snapCount, setSnapCount] = useState(0) const updateScrollSnapState = useCallback((emblaApi: EmblaCarouselType) => { setSnapCount(emblaApi.snapList().length) setSelectedSnap(emblaApi.selectedSnap()) }, []) useEffect(() => { if (!emblaApi) return updateScrollSnapState(emblaApi) emblaApi.on('select', updateScrollSnapState) emblaApi.on('reinit', updateScrollSnapState) }, [emblaApi, updateScrollSnapState]) return { selectedSnap, snapCount } } type PropType = { selectedSnap: number snapCount: number } export const SelectedSnapDisplay = (props: PropType) => { const { selectedSnap, snapCount } = props return (