"use client"; import React, { useRef, useEffect, useState, useCallback } from "react"; import useEmblaCarousel from "embla-carousel-react"; import { FaAngleLeft, FaAngleRight } from "react-icons/fa6"; const TabSlider: React.FC = ({ children, className, disabledPagination, }) => { // const containerRef = useRef(null); const [canScrollNext, setCanScrollNext] = useState(false); const [canScrollPrev, setCanScrollPrev] = useState(false); const [emblaRef, emblaApi] = useEmblaCarousel({}); const onSelect = useCallback(() => { if (!emblaApi) return; setCanScrollNext(emblaApi.canScrollNext()); setCanScrollPrev(emblaApi.canScrollPrev()); }, [emblaApi]); const wrapper = useRef(null); const item = useRef(null); const [widthWrapper, setWidthWrapper] = useState(0); const [isScroll, setIsScroll] = useState(false); const [ready, setReady] = useState(false); useEffect(() => { if (wrapper.current) { setWidthWrapper(wrapper?.current?.clientWidth); setTimeout(() => { setReady(true); }, 1000); } }, [wrapper]); useEffect(() => { if (item.current) { if (item.current.scrollWidth > widthWrapper) { setIsScroll(true); } } }, [item.current]); useEffect(() => { if (!emblaApi) return; emblaApi.on("select", onSelect); onSelect(); // Initialize state }, [emblaApi, onSelect]); return (
{!disabledPagination && ( )}
{ready ? (
{children}
) : ( <> )}
{!disabledPagination && ( )}
); }; export default TabSlider;