import React, { Component } from 'react' import { useKeenSlider } from "app/utils/vendor/keen-slider/react" import "keen-slider/keen-slider.min.css" import { MediaCitation } from './media.citation' import { Arrow } from 'app/views/viewer/nav/viewer.icons' const SPACING = 15 const SLIDES_PER_VIEW = 2 export const Carousel = ({ media }) => { const { image_order, image_lookup, display_lookup, thumbnail_lookup, caption_lookup } = media.settings // const [details, setDetails] = React.useState(null) const [currentSlide, setCurrentSlide] = React.useState(0) const [currentCaption, setCurrentCaption] = React.useState(caption_lookup[image_order[0]]) const [sliderRef, slider] = useKeenSlider({ slidesPerView: SLIDES_PER_VIEW, mode: "free", spacing: SPACING, centered: true, loop: false, // duration: 700, slideChanged: slider => { const currentSlideIndex = slider.details().relativeSlide const currentImageId = image_order[currentSlideIndex] const currentCaption = caption_lookup[currentImageId] setCurrentSlide(currentSlideIndex) setCurrentCaption(currentCaption) }, }) return [
{image_order.map((id, idx) => { const image = display_lookup[id] // console.log(image) return ( ) })}
, , { slider.prev() }} onNext={() => { slider.next() }} onPick={index => { slider.moveToSlideRelative(index) }} /> ] } const CarouselNav = ({ currentSlide, slides, onPrev, onNext, onPick }) => { return (
{ e.stopPropagation() onPrev() }} >
{ e.stopPropagation() onNext() }} >
{[...slides.keys()].map(idx => { return (
{ onPick(idx) }} className={"dot-item" + (currentSlide === idx ? " active" : "")} >
) })}
) } const CarouselItem = ({ image }) => { return (
) }