/** * @TODO Needs more check and fix */ import React, { CSSProperties, useCallback, useEffect, useMemo, useRef, useState } from "react"; export interface CarouselProps { className?: string; style?: CSSProperties; items: { src: any; caption?: { title: string; subtitle?: string; }; }[]; defaultIndex?: number; indicator?: 'default' | 'dot' | 'thumb'; indicatorPosition?: 'bottom' | 'end'; anim?: 'slide' | 'fade'; } const Carousel = ({ className, style, items, defaultIndex = 0, indicator, indicatorPosition, anim, }: CarouselProps) => { const cid = useRef('carousel-element-' + (Math.random() * 100000).toPrecision()); const [active, setActive] = useState(defaultIndex); const classes = useMemo(() => { return [ 'carousel slide', anim === 'fade' && 'carousel-fade', className ].filter(Boolean).join(' ') }, [anim, className]); const indicatorClasses = useMemo(() => { const cls = [ 'carousel-indicators' ]; switch (indicator) { case 'dot': cls.push('carousel-indicators-dot'); break; case 'thumb': cls.push('carousel-indicators-thumb'); break; case 'default': default: break; } switch (indicatorPosition) { case 'end': cls.push('carousel-indicators-vertical'); break; case 'bottom': default: break; } return cls.join(' '); }, [indicator, indicatorPosition]) return (
{item.caption.subtitle}