react-slideshow-image 4.1.1 → 4.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- {"version":3,"file":"react-slideshow-image.cjs.production.min.js","sources":["../src/helpers.tsx","../src/props.ts","../src/fadezoom.tsx","../src/fade.tsx","../src/zoom.tsx","../src/slide.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\nimport {\n ButtonClick,\n FadeProps,\n IndicatorPropsType,\n Responsive,\n SlideProps,\n TweenEasingFn,\n ZoomProps,\n} from './types';\nimport TWEEN from '@tweenjs/tween.js';\n\nexport const getStartingIndex = (children: ReactNode, defaultIndex?: number): number => {\n if (defaultIndex && defaultIndex < React.Children.count(children)) {\n return defaultIndex;\n }\n return 0;\n};\n\nexport const getResponsiveSettings = (\n wrapperWidth: number,\n responsive?: Array<Responsive>\n): Responsive | undefined => {\n if (typeof window !== 'undefined' && Array.isArray(responsive)) {\n return responsive.find((each) => each.breakpoint <= wrapperWidth);\n }\n return;\n};\n\nconst EASING_METHODS: { [key: string]: TweenEasingFn } = {\n linear: TWEEN.Easing.Linear.None,\n ease: TWEEN.Easing.Quadratic.InOut,\n 'ease-in': TWEEN.Easing.Quadratic.In,\n 'ease-out': TWEEN.Easing.Quadratic.Out,\n cubic: TWEEN.Easing.Cubic.InOut,\n 'cubic-in': TWEEN.Easing.Cubic.In,\n 'cubic-out': TWEEN.Easing.Cubic.Out,\n};\n\nexport const getEasing = (easeMethod?: string): TweenEasingFn => {\n if (easeMethod) {\n return EASING_METHODS[easeMethod];\n }\n return EASING_METHODS.linear;\n};\n\nexport const showPreviousArrow = (\n { prevArrow, infinite }: FadeProps | SlideProps | ZoomProps,\n currentIndex: number,\n moveSlides: ButtonClick\n): ReactNode => {\n const isDisabled = currentIndex <= 0 && !infinite;\n const props = {\n 'data-type': 'prev',\n 'aria-label': 'Previous Slide',\n disabled: isDisabled,\n onClick: moveSlides,\n };\n if (prevArrow) {\n return React.cloneElement(prevArrow, {\n className: `${prevArrow.props.className || ''} nav ${isDisabled ? 'disabled' : ''}`,\n ...props,\n });\n }\n const className = `nav default-nav ${isDisabled ? 'disabled' : ''}`;\n return (\n <button type=\"button\" className={className} {...props}>\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <path d=\"M16.67 0l2.83 2.829-9.339 9.175 9.339 9.167-2.83 2.829-12.17-11.996z\" />\n </svg>\n </button>\n );\n};\n\nexport const showNextArrow = (\n properties: FadeProps | SlideProps | ZoomProps,\n currentIndex: number,\n moveSlides: ButtonClick\n) => {\n const { nextArrow, infinite, children } = properties;\n let slidesToScroll = 1;\n if ('slidesToScroll' in properties) {\n slidesToScroll = properties.slidesToScroll || 1;\n }\n const isDisabled = currentIndex >= React.Children.count(children) - slidesToScroll && !infinite;\n const props = {\n 'data-type': 'next',\n 'aria-label': 'Next Slide',\n disabled: isDisabled,\n onClick: moveSlides,\n };\n if (nextArrow) {\n return React.cloneElement(nextArrow, {\n className: `${nextArrow.props.className || ''} nav ${isDisabled ? 'disabled' : ''}`,\n ...props,\n });\n }\n const className = `nav default-nav ${isDisabled ? 'disabled' : ''}`;\n return (\n <button type=\"button\" className={className} {...props}>\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <path d=\"M5 3l3.057-3 11.943 12-11.943 12-3.057-3 9-9z\" />\n </svg>\n </button>\n );\n};\n\nconst showDefaultIndicator = (\n isCurrentPageActive: boolean,\n key: number,\n indicatorProps: IndicatorPropsType\n) => {\n return (\n <li key={key}>\n <button\n type=\"button\"\n className={`each-slideshow-indicator ${isCurrentPageActive ? 'active' : ''}`}\n {...indicatorProps}\n />\n </li>\n );\n};\n\nconst showCustomIndicator = (\n isCurrentPageActive: boolean,\n key: number,\n indicatorProps: any,\n eachIndicator: any\n) => {\n return React.cloneElement(eachIndicator, {\n className: `${eachIndicator.props.className} ${isCurrentPageActive ? 'active' : ''}`,\n key,\n ...indicatorProps,\n });\n};\n\nexport const showIndicators = (\n props: FadeProps | SlideProps | ZoomProps,\n currentIndex: number,\n navigate: ButtonClick,\n responsiveSettings?: Responsive\n): ReactNode => {\n const { children, indicators } = props;\n let slidesToScroll = 1;\n if (responsiveSettings) {\n slidesToScroll = responsiveSettings?.settings.slidesToScroll;\n } else if ('slidesToScroll' in props) {\n slidesToScroll = props.slidesToScroll || 1;\n }\n const pages = Math.ceil(React.Children.count(children) / slidesToScroll);\n return (\n <ul className=\"indicators\">\n {Array.from({ length: pages }, (_, key) => {\n const indicatorProps: IndicatorPropsType = {\n 'data-key': key,\n 'aria-label': `Go to slide ${key + 1}`,\n onClick: navigate,\n };\n const isCurrentPageActive =\n Math.floor((currentIndex + slidesToScroll - 1) / slidesToScroll) === key;\n if (typeof indicators === 'function') {\n return showCustomIndicator(\n isCurrentPageActive,\n key,\n indicatorProps,\n indicators(key)\n );\n }\n return showDefaultIndicator(isCurrentPageActive, key, indicatorProps);\n })}\n </ul>\n );\n};\n","export const defaultProps = {\n duration: 5000,\n transitionDuration: 1000,\n defaultIndex: 0,\n infinite: true,\n autoplay: true,\n indicators: false,\n arrows: true,\n pauseOnHover: true,\n easing: 'linear',\n canSwipe: true,\n cssClass: '',\n responsive: [],\n};\n","import React, {\n useState,\n useRef,\n useEffect,\n useMemo,\n useImperativeHandle,\n useCallback,\n} from 'react';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport TWEEN from '@tweenjs/tween.js';\nimport {\n getEasing,\n getStartingIndex,\n showIndicators,\n showNextArrow,\n showPreviousArrow,\n} from './helpers';\nimport { ButtonClick, SlideshowRef, ZoomProps } from './types';\nimport { defaultProps } from './props';\n\nexport const FadeZoom = React.forwardRef<SlideshowRef, ZoomProps>((props, ref) => {\n const [index, setIndex] = useState<number>(\n getStartingIndex(props.children, props.defaultIndex)\n );\n const wrapperRef = useRef<HTMLDivElement>(null);\n const innerWrapperRef = useRef<any>(null);\n const tweenGroup = useRef(new TWEEN.Group());\n const timeout = useRef<NodeJS.Timeout>();\n const resizeObserver = useRef<any>();\n const childrenCount = useMemo(() => React.Children.count(props.children), [props.children]);\n\n const applyStyle = useCallback(() => {\n if (innerWrapperRef.current && wrapperRef.current) {\n const wrapperWidth = wrapperRef.current.clientWidth;\n const fullwidth = wrapperWidth * childrenCount;\n innerWrapperRef.current.style.width = `${fullwidth}px`;\n for (let index = 0; index < innerWrapperRef.current.children.length; index++) {\n const eachDiv = innerWrapperRef.current.children[index];\n if (eachDiv) {\n eachDiv.style.width = `${wrapperWidth}px`;\n eachDiv.style.left = `${index * -wrapperWidth}px`;\n eachDiv.style.display = `block`;\n }\n }\n }\n }, [wrapperRef, innerWrapperRef, childrenCount]);\n\n const initResizeObserver = useCallback(() => {\n if (wrapperRef.current) {\n resizeObserver.current = new ResizeObserver((entries) => {\n if (!entries) return;\n applyStyle();\n });\n resizeObserver.current.observe(wrapperRef.current);\n }\n }, [wrapperRef, applyStyle]);\n\n const play = useCallback(() => {\n const { autoplay, children, duration, infinite } = props;\n if (\n autoplay &&\n React.Children.count(children) > 1 &&\n (infinite || index < React.Children.count(children) - 1)\n ) {\n timeout.current = setTimeout(moveNext, duration);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props, index]);\n\n useEffect(() => {\n initResizeObserver();\n return () => {\n tweenGroup.current.removeAll();\n clearTimeout(timeout.current);\n removeResizeObserver();\n };\n }, [initResizeObserver, tweenGroup]);\n\n useEffect(() => {\n clearTimeout(timeout.current);\n play();\n }, [index, props.autoplay, play]);\n\n useEffect(() => {\n applyStyle();\n }, [childrenCount, applyStyle]);\n\n useImperativeHandle(ref, () => ({\n goNext: () => {\n moveNext();\n },\n goBack: () => {\n moveBack();\n },\n goTo: (index: number, options?: { skipTransition?: boolean }) => {\n if (options?.skipTransition) {\n setIndex(index);\n } else {\n moveTo(index);\n }\n },\n }));\n\n const removeResizeObserver = () => {\n if (resizeObserver.current && wrapperRef.current) {\n resizeObserver.current.unobserve(wrapperRef.current);\n }\n };\n\n const pauseSlides = () => {\n if (props.pauseOnHover) {\n clearTimeout(timeout.current);\n }\n };\n\n const startSlides = () => {\n const { pauseOnHover, autoplay, duration } = props;\n if (pauseOnHover && autoplay) {\n timeout.current = setTimeout(() => moveNext(), duration);\n }\n };\n\n const moveNext = () => {\n const { children, infinite } = props;\n if (!infinite && index === React.Children.count(children) - 1) {\n return;\n }\n transitionSlide((index + 1) % React.Children.count(children));\n };\n\n const moveBack = () => {\n const { children, infinite } = props;\n if (!infinite && index === 0) {\n return;\n }\n transitionSlide(index === 0 ? React.Children.count(children) - 1 : index - 1);\n };\n\n const preTransition: ButtonClick = (event) => {\n const { currentTarget } = event;\n if (currentTarget.dataset.type === 'prev') {\n moveBack();\n } else {\n moveNext();\n }\n };\n\n const animate = () => {\n requestAnimationFrame(animate);\n tweenGroup.current.update();\n };\n\n const transitionSlide = (newIndex: number) => {\n const existingTweens = tweenGroup.current.getAll();\n if (!existingTweens.length) {\n if (!innerWrapperRef.current?.children[newIndex]) {\n newIndex = 0;\n }\n clearTimeout(timeout.current);\n const value = { opacity: 0, scale: 1 };\n\n animate();\n\n const tween = new TWEEN.Tween(value, tweenGroup.current)\n .to({ opacity: 1, scale: props.scale }, props.transitionDuration)\n .onUpdate((value) => {\n if (!innerWrapperRef.current) {\n return;\n }\n innerWrapperRef.current.children[newIndex].style.opacity = value.opacity;\n innerWrapperRef.current.children[index].style.opacity = 1 - value.opacity;\n innerWrapperRef.current.children[\n index\n ].style.transform = `scale(${value.scale})`;\n })\n .start();\n tween.easing(getEasing(props.easing));\n tween.onComplete(() => {\n if (innerWrapperRef.current) {\n setIndex(newIndex);\n innerWrapperRef.current.children[index].style.transform = `scale(1)`;\n }\n if (typeof props.onChange === 'function') {\n props.onChange(index, newIndex);\n }\n });\n }\n };\n\n const moveTo = (gotoIndex: number) => {\n if (gotoIndex !== index) {\n transitionSlide(gotoIndex);\n }\n };\n\n const navigate: ButtonClick = (event) => {\n const { currentTarget } = event;\n if (!currentTarget.dataset.key) {\n return;\n }\n if (parseInt(currentTarget.dataset.key) !== index) {\n moveTo(parseInt(currentTarget.dataset.key));\n }\n };\n\n return (\n <div dir=\"ltr\" aria-roledescription=\"carousel\">\n <div\n className={`react-slideshow-container ${props.cssClass || ''}`}\n onMouseEnter={pauseSlides}\n onMouseOver={pauseSlides}\n onMouseLeave={startSlides}\n >\n {props.arrows && showPreviousArrow(props, index, preTransition)}\n <div\n className={`react-slideshow-fadezoom-wrapper ${props.cssClass}`}\n ref={wrapperRef}\n >\n <div className=\"react-slideshow-fadezoom-images-wrap\" ref={innerWrapperRef}>\n {(React.Children.map(props.children, (thisArg) => thisArg) || []).map(\n (each, key) => (\n <div\n style={{\n opacity: key === index ? '1' : '0',\n zIndex: key === index ? '1' : '0',\n }}\n data-index={key}\n key={key}\n aria-roledescription=\"slide\"\n aria-hidden={key === index ? 'false' : 'true'}\n >\n {each}\n </div>\n )\n )}\n </div>\n </div>\n {props.arrows && showNextArrow(props, index, preTransition)}\n </div>\n {props.indicators && showIndicators(props, index, navigate)}\n </div>\n );\n});\n\nFadeZoom.defaultProps = defaultProps;\n","import React from 'react';\nimport { FadeZoom } from './fadezoom';\nimport { defaultProps } from './props';\nimport { FadeProps, SlideshowRef } from './types';\n\nexport const Fade = React.forwardRef<SlideshowRef, FadeProps>((props, ref) => {\n return <FadeZoom {...props} scale={1} ref={ref} />;\n});\n\nFade.defaultProps = defaultProps;\n","import React from 'react';\nimport { FadeZoom } from './fadezoom';\nimport { defaultProps } from './props';\nimport { SlideshowRef, ZoomProps } from './types';\n\nexport const Zoom = React.forwardRef<SlideshowRef, ZoomProps>((props, ref) => {\n return <FadeZoom {...props} ref={ref} />;\n});\n\nZoom.defaultProps = defaultProps;\n","import React, {\n useState,\n useRef,\n useEffect,\n useMemo,\n useImperativeHandle,\n useCallback,\n} from 'react';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport TWEEN from '@tweenjs/tween.js';\nimport {\n getEasing,\n getResponsiveSettings,\n getStartingIndex,\n showIndicators,\n showNextArrow,\n showPreviousArrow,\n} from './helpers';\nimport { ButtonClick, SlideshowRef, SlideProps } from './types';\nimport { defaultProps } from './props';\n\nexport const Slide = React.forwardRef<SlideshowRef, SlideProps>((props, ref) => {\n const [index, setIndex] = useState(getStartingIndex(props.children, props.defaultIndex));\n const [wrapperWidth, setWrapperWidth] = useState<number>(0);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const innerWrapperRef = useRef<any>(null);\n const tweenGroup = useRef(new TWEEN.Group());\n const responsiveSettings = useMemo(\n () => getResponsiveSettings(wrapperWidth, props.responsive),\n [wrapperWidth, props.responsive]\n );\n const slidesToScroll = useMemo(() => {\n if (responsiveSettings) {\n return responsiveSettings.settings.slidesToScroll;\n }\n return props.slidesToScroll || 1;\n }, [responsiveSettings, props.slidesToScroll]);\n const slidesToShow = useMemo(() => {\n if (responsiveSettings) {\n return responsiveSettings.settings.slidesToShow;\n }\n return props.slidesToShow || 1;\n }, [responsiveSettings, props.slidesToShow]);\n const childrenCount = useMemo(() => React.Children.count(props.children), [props.children]);\n const eachChildWidth = useMemo(() => wrapperWidth / slidesToShow, [wrapperWidth, slidesToShow]);\n const timeout = useRef<NodeJS.Timeout>();\n const resizeObserver = useRef<any>();\n let startingClientX: number;\n let dragging: boolean = false;\n let distanceSwiped: number = 0;\n\n const applyStyle = useCallback(() => {\n if (innerWrapperRef.current) {\n const fullwidth = wrapperWidth * innerWrapperRef.current.children.length;\n innerWrapperRef.current.style.width = `${fullwidth}px`;\n for (let index = 0; index < innerWrapperRef.current.children.length; index++) {\n const eachDiv = innerWrapperRef.current.children[index];\n if (eachDiv) {\n eachDiv.style.width = `${eachChildWidth}px`;\n eachDiv.style.display = `block`;\n }\n }\n }\n }, [wrapperWidth, eachChildWidth]);\n\n const initResizeObserver = useCallback(() => {\n if (wrapperRef.current) {\n resizeObserver.current = new ResizeObserver((entries) => {\n if (!entries) return;\n setWidth();\n });\n resizeObserver.current.observe(wrapperRef.current);\n }\n }, [wrapperRef]);\n\n const play = useCallback(() => {\n const { autoplay, infinite, duration } = props;\n if (autoplay && (infinite || index < childrenCount - 1)) {\n timeout.current = setTimeout(moveNext, duration);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props, childrenCount, index]);\n\n useEffect(() => {\n applyStyle();\n }, [wrapperWidth, applyStyle]);\n\n useEffect(() => {\n initResizeObserver();\n return () => {\n tweenGroup.current.removeAll();\n clearTimeout(timeout.current);\n removeResizeObserver();\n };\n }, [wrapperRef, initResizeObserver, tweenGroup]);\n\n useEffect(() => {\n clearTimeout(timeout.current);\n play();\n }, [index, wrapperWidth, props.autoplay, play]);\n\n useImperativeHandle(ref, () => ({\n goNext: () => {\n moveNext();\n },\n goBack: () => {\n moveBack();\n },\n goTo: (index: number, options?: { skipTransition?: boolean }) => {\n if (options?.skipTransition) {\n setIndex(index);\n } else {\n moveTo(index);\n }\n },\n }));\n\n const removeResizeObserver = () => {\n if (resizeObserver && wrapperRef.current) {\n resizeObserver.current.unobserve(wrapperRef.current);\n }\n };\n\n const pauseSlides = () => {\n if (props.pauseOnHover) {\n clearTimeout(timeout.current);\n }\n };\n\n const swipe = (event: React.MouseEvent | React.TouchEvent) => {\n if (props.canSwipe && dragging) {\n let clientX;\n if (window.TouchEvent && event.nativeEvent instanceof TouchEvent) {\n clientX = event.nativeEvent.touches[0].pageX;\n } else if (event.nativeEvent instanceof MouseEvent) {\n clientX = event.nativeEvent.clientX;\n }\n if (clientX && startingClientX) {\n let translateValue = eachChildWidth * (index + getOffset());\n const distance = clientX - startingClientX;\n if (!props.infinite && index === childrenCount - slidesToScroll && distance < 0) {\n // if it is the last and infinite is false and you're swiping left\n // then nothing happens\n return;\n }\n if (!props.infinite && index === 0 && distance > 0) {\n // if it is the first and infinite is false and you're swiping right\n // then nothing happens\n return;\n }\n distanceSwiped = distance;\n translateValue -= distanceSwiped;\n innerWrapperRef.current.style.transform = `translate(-${translateValue}px)`;\n }\n }\n };\n\n const moveNext = () => {\n if (!props.infinite && index === childrenCount - slidesToScroll) {\n return;\n }\n const nextIndex = calculateIndex(index + slidesToScroll);\n transitionSlide(nextIndex);\n };\n\n const moveBack = () => {\n if (!props.infinite && index === 0) {\n return;\n }\n let previousIndex = index - slidesToScroll;\n if (previousIndex % slidesToScroll) {\n previousIndex = Math.ceil(previousIndex / slidesToScroll) * slidesToScroll;\n }\n transitionSlide(previousIndex);\n };\n\n const goToSlide: ButtonClick = ({ currentTarget }) => {\n if (!currentTarget.dataset.key) {\n return;\n }\n const datasetKey = parseInt(currentTarget.dataset.key);\n moveTo(datasetKey * slidesToScroll);\n };\n\n const moveTo = (index: number) => {\n transitionSlide(calculateIndex(index));\n };\n\n const calculateIndex = (nextIndex: number): number => {\n if (nextIndex < childrenCount && nextIndex + slidesToScroll > childrenCount) {\n if ((childrenCount - slidesToScroll) % slidesToScroll) {\n return childrenCount - slidesToScroll;\n }\n return nextIndex;\n }\n return nextIndex;\n };\n\n const startSlides = () => {\n if (dragging) {\n endSwipe();\n } else if (props.pauseOnHover && props.autoplay) {\n timeout.current = setTimeout(moveNext, props.duration);\n }\n };\n\n const moveSlides: ButtonClick = ({ currentTarget: { dataset } }) => {\n if (dataset.type === 'next') {\n moveNext();\n } else {\n moveBack();\n }\n };\n\n const renderPreceedingSlides = () => {\n return React.Children.toArray(props.children)\n .slice(-slidesToShow)\n .map((each, index) => (\n <div\n data-index={index - slidesToShow}\n aria-roledescription=\"slide\"\n aria-hidden=\"true\"\n key={index - slidesToShow}\n >\n {each}\n </div>\n ));\n };\n\n const renderTrailingSlides = () => {\n if (!props.infinite && slidesToShow === slidesToScroll) {\n return;\n }\n return React.Children.toArray(props.children)\n .slice(0, slidesToShow)\n .map((each, index) => (\n <div\n data-index={childrenCount + index}\n aria-roledescription=\"slide\"\n aria-hidden=\"true\"\n key={childrenCount + index}\n >\n {each}\n </div>\n ));\n };\n\n const setWidth = () => {\n if (wrapperRef.current) {\n setWrapperWidth(wrapperRef.current.clientWidth);\n }\n };\n\n const startSwipe = (event: React.MouseEvent | React.TouchEvent) => {\n if (props.canSwipe) {\n if (window.TouchEvent && event.nativeEvent instanceof TouchEvent) {\n startingClientX = event.nativeEvent.touches[0].pageX;\n } else if (event.nativeEvent instanceof MouseEvent) {\n startingClientX = event.nativeEvent.clientX;\n }\n clearTimeout(timeout.current);\n dragging = true;\n }\n };\n\n const endSwipe = () => {\n if (props.canSwipe) {\n dragging = false;\n if (Math.abs(distanceSwiped) / wrapperWidth > 0.2) {\n if (distanceSwiped < 0) {\n moveNext();\n } else {\n moveBack();\n }\n } else {\n if (Math.abs(distanceSwiped) > 0) {\n transitionSlide(index, 300);\n }\n }\n }\n };\n\n const animate = () => {\n requestAnimationFrame(animate);\n tweenGroup.current.update();\n };\n\n const transitionSlide = (toIndex: number, animationDuration?: number) => {\n const transitionDuration = animationDuration || props.transitionDuration;\n const currentIndex = index;\n const existingTweens = tweenGroup.current.getAll();\n if (!wrapperRef.current) {\n return;\n }\n const childWidth = wrapperRef.current.clientWidth / slidesToShow;\n if (!existingTweens.length) {\n clearTimeout(timeout.current);\n const value = {\n margin: -childWidth * (currentIndex + getOffset()) + distanceSwiped,\n };\n const tween = new TWEEN.Tween(value, tweenGroup.current)\n .to({ margin: -childWidth * (toIndex + getOffset()) }, transitionDuration)\n .onUpdate((value) => {\n if (innerWrapperRef.current) {\n innerWrapperRef.current.style.transform = `translate(${value.margin}px)`;\n }\n })\n .start();\n tween.easing(getEasing(props.easing));\n\n animate();\n\n tween.onComplete(() => {\n distanceSwiped = 0;\n let newIndex = toIndex;\n if (newIndex < 0) {\n newIndex = childrenCount - slidesToScroll;\n } else if (newIndex >= childrenCount) {\n newIndex = 0;\n }\n\n if (typeof props.onChange === 'function') {\n props.onChange(index, newIndex);\n }\n setIndex(newIndex);\n });\n }\n };\n\n const isSlideActive = (key: number) => {\n return key < index + slidesToShow && key >= index;\n };\n\n const getOffset = (): number => {\n if (!props.infinite) {\n return 0;\n }\n return slidesToShow;\n };\n\n const style = {\n transform: `translate(-${(index + getOffset()) * eachChildWidth}px)`,\n };\n return (\n <div dir=\"ltr\" aria-roledescription=\"carousel\">\n <div\n className=\"react-slideshow-container\"\n onMouseEnter={pauseSlides}\n onMouseOver={pauseSlides}\n onMouseLeave={startSlides}\n onMouseDown={startSwipe}\n onMouseUp={endSwipe}\n onMouseMove={swipe}\n onTouchStart={startSwipe}\n onTouchEnd={endSwipe}\n onTouchCancel={endSwipe}\n onTouchMove={swipe}\n >\n {props.arrows && showPreviousArrow(props, index, moveSlides)}\n <div\n className={`react-slideshow-wrapper slide ${props.cssClass || ''}`}\n ref={wrapperRef}\n >\n <div className=\"images-wrap\" style={style} ref={innerWrapperRef}>\n {props.infinite && renderPreceedingSlides()}\n {(React.Children.map(props.children, (thisArg) => thisArg) || []).map(\n (each, key) => {\n const isThisSlideActive = isSlideActive(key);\n return (\n <div\n data-index={key}\n key={key}\n className={isThisSlideActive ? 'active' : ''}\n aria-roledescription=\"slide\"\n aria-hidden={isThisSlideActive ? 'false' : 'true'}\n >\n {each}\n </div>\n );\n }\n )}\n {renderTrailingSlides()}\n </div>\n </div>\n {props.arrows && showNextArrow(props, index, moveSlides)}\n </div>\n {props.indicators && showIndicators(props, index, goToSlide, responsiveSettings)}\n </div>\n );\n});\n\nSlide.defaultProps = defaultProps;\n"],"names":["getStartingIndex","children","defaultIndex","React","Children","count","EASING_METHODS","linear","TWEEN","Easing","Linear","None","ease","Quadratic","InOut","ease-in","In","ease-out","Out","cubic","Cubic","cubic-in","cubic-out","getEasing","easeMethod","showPreviousArrow","currentIndex","moveSlides","prevArrow","isDisabled","infinite","props","data-type","aria-label","disabled","onClick","cloneElement","className","type","width","height","viewBox","d","showNextArrow","properties","nextArrow","slidesToScroll","showIndicators","navigate","responsiveSettings","indicators","settings","pages","Math","ceil","Array","from","length","_","key","indicatorProps","data-key","isCurrentPageActive","floor","eachIndicator","showCustomIndicator","showDefaultIndicator","defaultProps","duration","transitionDuration","autoplay","arrows","pauseOnHover","easing","canSwipe","cssClass","responsive","FadeZoom","forwardRef","ref","useState","index","setIndex","wrapperRef","useRef","innerWrapperRef","tweenGroup","Group","timeout","resizeObserver","childrenCount","useMemo","applyStyle","useCallback","current","wrapperWidth","clientWidth","style","eachDiv","left","display","initResizeObserver","ResizeObserver","entries","observe","play","setTimeout","moveNext","useEffect","removeAll","clearTimeout","removeResizeObserver","useImperativeHandle","goNext","goBack","moveBack","goTo","options","skipTransition","moveTo","unobserve","pauseSlides","transitionSlide","preTransition","event","currentTarget","dataset","newIndex","getAll","_innerWrapperRef$curr","animate","requestAnimationFrame","update","tween","Tween","opacity","scale","to","onUpdate","value","transform","start","onComplete","onChange","gotoIndex","dir","onMouseEnter","onMouseOver","onMouseLeave","map","thisArg","each","zIndex","parseInt","Fade","Zoom","Slide","startingClientX","setWrapperWidth","window","isArray","find","breakpoint","getResponsiveSettings","slidesToShow","eachChildWidth","dragging","distanceSwiped","setWidth","swipe","clientX","TouchEvent","nativeEvent","touches","pageX","MouseEvent","translateValue","getOffset","distance","nextIndex","calculateIndex","previousIndex","startSwipe","endSwipe","abs","toIndex","animationDuration","existingTweens","childWidth","margin","onMouseDown","onMouseUp","onMouseMove","onTouchStart","onTouchEnd","onTouchCancel","onTouchMove","toArray","slice","isThisSlideActive","isSlideActive","renderTrailingSlides","datasetKey"],"mappings":"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"}
1
+ {"version":3,"file":"react-slideshow-image.cjs.production.min.js","sources":["../src/helpers.tsx","../src/props.ts","../src/fadezoom.tsx","../src/fade.tsx","../src/zoom.tsx","../src/slide.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\nimport {\n ButtonClick,\n FadeProps,\n IndicatorPropsType,\n Responsive,\n SlideProps,\n TweenEasingFn,\n ZoomProps,\n} from './types';\nimport { Easing } from '@tweenjs/tween.js';\n\nexport const getStartingIndex = (children: ReactNode, defaultIndex?: number): number => {\n if (defaultIndex && defaultIndex < React.Children.count(children)) {\n return defaultIndex;\n }\n return 0;\n};\n\nexport const getResponsiveSettings = (\n wrapperWidth: number,\n responsive?: Array<Responsive>\n): Responsive | undefined => {\n if (typeof window !== 'undefined' && Array.isArray(responsive)) {\n return responsive.find((each) => each.breakpoint <= wrapperWidth);\n }\n return;\n};\n\nconst EASING_METHODS: { [key: string]: TweenEasingFn } = {\n linear: Easing.Linear.None,\n ease: Easing.Quadratic.InOut,\n 'ease-in': Easing.Quadratic.In,\n 'ease-out': Easing.Quadratic.Out,\n cubic: Easing.Cubic.InOut,\n 'cubic-in': Easing.Cubic.In,\n 'cubic-out': Easing.Cubic.Out,\n};\n\nexport const getEasing = (easeMethod?: string): TweenEasingFn => {\n if (easeMethod) {\n return EASING_METHODS[easeMethod];\n }\n return EASING_METHODS.linear;\n};\n\nexport const showPreviousArrow = (\n { prevArrow, infinite }: FadeProps | SlideProps | ZoomProps,\n currentIndex: number,\n moveSlides: ButtonClick\n): ReactNode => {\n const isDisabled = currentIndex <= 0 && !infinite;\n const props = {\n 'data-type': 'prev',\n 'aria-label': 'Previous Slide',\n disabled: isDisabled,\n onClick: moveSlides,\n };\n if (prevArrow) {\n return React.cloneElement(prevArrow, {\n className: `${prevArrow.props.className || ''} nav ${isDisabled ? 'disabled' : ''}`,\n ...props,\n });\n }\n const className = `nav default-nav ${isDisabled ? 'disabled' : ''}`;\n return (\n <button type=\"button\" className={className} {...props}>\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <path d=\"M16.67 0l2.83 2.829-9.339 9.175 9.339 9.167-2.83 2.829-12.17-11.996z\" />\n </svg>\n </button>\n );\n};\n\nexport const showNextArrow = (\n properties: FadeProps | SlideProps | ZoomProps,\n currentIndex: number,\n moveSlides: ButtonClick\n) => {\n const { nextArrow, infinite, children } = properties;\n let slidesToScroll = 1;\n if ('slidesToScroll' in properties) {\n slidesToScroll = properties.slidesToScroll || 1;\n }\n const isDisabled = currentIndex >= React.Children.count(children) - slidesToScroll && !infinite;\n const props = {\n 'data-type': 'next',\n 'aria-label': 'Next Slide',\n disabled: isDisabled,\n onClick: moveSlides,\n };\n if (nextArrow) {\n return React.cloneElement(nextArrow, {\n className: `${nextArrow.props.className || ''} nav ${isDisabled ? 'disabled' : ''}`,\n ...props,\n });\n }\n const className = `nav default-nav ${isDisabled ? 'disabled' : ''}`;\n return (\n <button type=\"button\" className={className} {...props}>\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <path d=\"M5 3l3.057-3 11.943 12-11.943 12-3.057-3 9-9z\" />\n </svg>\n </button>\n );\n};\n\nconst showDefaultIndicator = (\n isCurrentPageActive: boolean,\n key: number,\n indicatorProps: IndicatorPropsType\n) => {\n return (\n <li key={key}>\n <button\n type=\"button\"\n className={`each-slideshow-indicator ${isCurrentPageActive ? 'active' : ''}`}\n {...indicatorProps}\n />\n </li>\n );\n};\n\nconst showCustomIndicator = (\n isCurrentPageActive: boolean,\n key: number,\n indicatorProps: any,\n eachIndicator: any\n) => {\n return React.cloneElement(eachIndicator, {\n className: `${eachIndicator.props.className} ${isCurrentPageActive ? 'active' : ''}`,\n key,\n ...indicatorProps,\n });\n};\n\nexport const showIndicators = (\n props: FadeProps | SlideProps | ZoomProps,\n currentIndex: number,\n navigate: ButtonClick,\n responsiveSettings?: Responsive\n): ReactNode => {\n const { children, indicators } = props;\n let slidesToScroll = 1;\n if (responsiveSettings) {\n slidesToScroll = responsiveSettings?.settings.slidesToScroll;\n } else if ('slidesToScroll' in props) {\n slidesToScroll = props.slidesToScroll || 1;\n }\n const pages = Math.ceil(React.Children.count(children) / slidesToScroll);\n return (\n <ul className=\"indicators\">\n {Array.from({ length: pages }, (_, key) => {\n const indicatorProps: IndicatorPropsType = {\n 'data-key': key,\n 'aria-label': `Go to slide ${key + 1}`,\n onClick: navigate,\n };\n const isCurrentPageActive =\n Math.floor((currentIndex + slidesToScroll - 1) / slidesToScroll) === key;\n if (typeof indicators === 'function') {\n return showCustomIndicator(\n isCurrentPageActive,\n key,\n indicatorProps,\n indicators(key)\n );\n }\n return showDefaultIndicator(isCurrentPageActive, key, indicatorProps);\n })}\n </ul>\n );\n};\n","export const defaultProps = {\n duration: 5000,\n transitionDuration: 1000,\n defaultIndex: 0,\n infinite: true,\n autoplay: true,\n indicators: false,\n arrows: true,\n pauseOnHover: true,\n easing: 'linear',\n canSwipe: true,\n cssClass: '',\n responsive: [],\n};\n","import React, {\n useState,\n useRef,\n useEffect,\n useMemo,\n useImperativeHandle,\n useCallback,\n} from 'react';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport { Group, Tween } from '@tweenjs/tween.js';\nimport {\n getEasing,\n getStartingIndex,\n showIndicators,\n showNextArrow,\n showPreviousArrow,\n} from './helpers';\nimport { ButtonClick, SlideshowRef, ZoomProps } from './types';\nimport { defaultProps } from './props';\n\nexport const FadeZoom = React.forwardRef<SlideshowRef, ZoomProps>((props, ref) => {\n const [index, setIndex] = useState<number>(\n getStartingIndex(props.children, props.defaultIndex)\n );\n const wrapperRef = useRef<HTMLDivElement>(null);\n const innerWrapperRef = useRef<any>(null);\n const tweenGroup = useRef(new Group());\n const timeout = useRef<NodeJS.Timeout>();\n const resizeObserver = useRef<any>();\n const childrenCount = useMemo(() => React.Children.count(props.children), [props.children]);\n\n const applyStyle = useCallback(() => {\n if (innerWrapperRef.current && wrapperRef.current) {\n const wrapperWidth = wrapperRef.current.clientWidth;\n const fullwidth = wrapperWidth * childrenCount;\n innerWrapperRef.current.style.width = `${fullwidth}px`;\n for (let index = 0; index < innerWrapperRef.current.children.length; index++) {\n const eachDiv = innerWrapperRef.current.children[index];\n if (eachDiv) {\n eachDiv.style.width = `${wrapperWidth}px`;\n eachDiv.style.left = `${index * -wrapperWidth}px`;\n eachDiv.style.display = `block`;\n }\n }\n }\n }, [wrapperRef, innerWrapperRef, childrenCount]);\n\n const initResizeObserver = useCallback(() => {\n if (wrapperRef.current) {\n resizeObserver.current = new ResizeObserver((entries) => {\n if (!entries) return;\n applyStyle();\n });\n resizeObserver.current.observe(wrapperRef.current);\n }\n }, [wrapperRef, applyStyle]);\n\n const play = useCallback(() => {\n const { autoplay, children, duration, infinite } = props;\n if (\n autoplay &&\n React.Children.count(children) > 1 &&\n (infinite || index < React.Children.count(children) - 1)\n ) {\n timeout.current = setTimeout(moveNext, duration);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props, index]);\n\n useEffect(() => {\n initResizeObserver();\n return () => {\n tweenGroup.current.removeAll();\n clearTimeout(timeout.current);\n removeResizeObserver();\n };\n }, [initResizeObserver, tweenGroup]);\n\n useEffect(() => {\n clearTimeout(timeout.current);\n play();\n }, [index, props.autoplay, play]);\n\n useEffect(() => {\n applyStyle();\n }, [childrenCount, applyStyle]);\n\n useImperativeHandle(ref, () => ({\n goNext: () => {\n moveNext();\n },\n goBack: () => {\n moveBack();\n },\n goTo: (index: number, options?: { skipTransition?: boolean }) => {\n if (options?.skipTransition) {\n setIndex(index);\n } else {\n moveTo(index);\n }\n },\n }));\n\n const removeResizeObserver = () => {\n if (resizeObserver.current && wrapperRef.current) {\n resizeObserver.current.unobserve(wrapperRef.current);\n }\n };\n\n const pauseSlides = () => {\n if (props.pauseOnHover) {\n clearTimeout(timeout.current);\n }\n };\n\n const startSlides = () => {\n const { pauseOnHover, autoplay, duration } = props;\n if (pauseOnHover && autoplay) {\n timeout.current = setTimeout(() => moveNext(), duration);\n }\n };\n\n const moveNext = () => {\n const { children, infinite } = props;\n if (!infinite && index === React.Children.count(children) - 1) {\n return;\n }\n transitionSlide((index + 1) % React.Children.count(children));\n };\n\n const moveBack = () => {\n const { children, infinite } = props;\n if (!infinite && index === 0) {\n return;\n }\n transitionSlide(index === 0 ? React.Children.count(children) - 1 : index - 1);\n };\n\n const preTransition: ButtonClick = (event) => {\n const { currentTarget } = event;\n if (currentTarget.dataset.type === 'prev') {\n moveBack();\n } else {\n moveNext();\n }\n };\n\n const animate = () => {\n requestAnimationFrame(animate);\n tweenGroup.current.update();\n };\n\n const transitionSlide = (newIndex: number) => {\n const existingTweens = tweenGroup.current.getAll();\n if (!existingTweens.length) {\n if (!innerWrapperRef.current?.children[newIndex]) {\n newIndex = 0;\n }\n clearTimeout(timeout.current);\n const value = { opacity: 0, scale: 1 };\n\n animate();\n\n const tween = new Tween(value, tweenGroup.current)\n .to({ opacity: 1, scale: props.scale }, props.transitionDuration)\n .onUpdate((value) => {\n if (!innerWrapperRef.current) {\n return;\n }\n innerWrapperRef.current.children[newIndex].style.opacity = value.opacity;\n innerWrapperRef.current.children[index].style.opacity = 1 - value.opacity;\n innerWrapperRef.current.children[\n index\n ].style.transform = `scale(${value.scale})`;\n });\n tween.easing(getEasing(props.easing));\n tween.onStart(() => {\n if (typeof props.onStartChange === 'function') {\n props.onStartChange(index, newIndex);\n }\n });\n tween.onComplete(() => {\n if (innerWrapperRef.current) {\n setIndex(newIndex);\n innerWrapperRef.current.children[index].style.transform = `scale(1)`;\n }\n if (typeof props.onChange === 'function') {\n props.onChange(index, newIndex);\n }\n });\n tween.start();\n }\n };\n\n const moveTo = (gotoIndex: number) => {\n if (gotoIndex !== index) {\n transitionSlide(gotoIndex);\n }\n };\n\n const navigate: ButtonClick = (event) => {\n const { currentTarget } = event;\n if (!currentTarget.dataset.key) {\n return;\n }\n if (parseInt(currentTarget.dataset.key) !== index) {\n moveTo(parseInt(currentTarget.dataset.key));\n }\n };\n\n return (\n <div dir=\"ltr\" aria-roledescription=\"carousel\">\n <div\n className={`react-slideshow-container ${props.cssClass || ''}`}\n onMouseEnter={pauseSlides}\n onMouseOver={pauseSlides}\n onMouseLeave={startSlides}\n >\n {props.arrows && showPreviousArrow(props, index, preTransition)}\n <div\n className={`react-slideshow-fadezoom-wrapper ${props.cssClass}`}\n ref={wrapperRef}\n >\n <div className=\"react-slideshow-fadezoom-images-wrap\" ref={innerWrapperRef}>\n {(React.Children.map(props.children, (thisArg) => thisArg) || []).map(\n (each, key) => (\n <div\n style={{\n opacity: key === index ? '1' : '0',\n zIndex: key === index ? '1' : '0',\n }}\n data-index={key}\n key={key}\n aria-roledescription=\"slide\"\n aria-hidden={key === index ? 'false' : 'true'}\n >\n {each}\n </div>\n )\n )}\n </div>\n </div>\n {props.arrows && showNextArrow(props, index, preTransition)}\n </div>\n {props.indicators && showIndicators(props, index, navigate)}\n </div>\n );\n});\n\nFadeZoom.defaultProps = defaultProps;\n","import React from 'react';\nimport { FadeZoom } from './fadezoom';\nimport { defaultProps } from './props';\nimport { FadeProps, SlideshowRef } from './types';\n\nexport const Fade = React.forwardRef<SlideshowRef, FadeProps>((props, ref) => {\n return <FadeZoom {...props} scale={1} ref={ref} />;\n});\n\nFade.defaultProps = defaultProps;\n","import React from 'react';\nimport { FadeZoom } from './fadezoom';\nimport { defaultProps } from './props';\nimport { SlideshowRef, ZoomProps } from './types';\n\nexport const Zoom = React.forwardRef<SlideshowRef, ZoomProps>((props, ref) => {\n return <FadeZoom {...props} ref={ref} />;\n});\n\nZoom.defaultProps = defaultProps;\n","import React, {\n useState,\n useRef,\n useEffect,\n useMemo,\n useImperativeHandle,\n useCallback,\n} from 'react';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport { Group, Tween } from '@tweenjs/tween.js';\nimport {\n getEasing,\n getResponsiveSettings,\n getStartingIndex,\n showIndicators,\n showNextArrow,\n showPreviousArrow,\n} from './helpers';\nimport { ButtonClick, SlideshowRef, SlideProps } from './types';\nimport { defaultProps } from './props';\n\nexport const Slide = React.forwardRef<SlideshowRef, SlideProps>((props, ref) => {\n const [index, setIndex] = useState(getStartingIndex(props.children, props.defaultIndex));\n const [wrapperWidth, setWrapperWidth] = useState<number>(0);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const innerWrapperRef = useRef<any>(null);\n const tweenGroup = useRef(new Group());\n const responsiveSettings = useMemo(\n () => getResponsiveSettings(wrapperWidth, props.responsive),\n [wrapperWidth, props.responsive]\n );\n const slidesToScroll = useMemo(() => {\n if (responsiveSettings) {\n return responsiveSettings.settings.slidesToScroll;\n }\n return props.slidesToScroll || 1;\n }, [responsiveSettings, props.slidesToScroll]);\n const slidesToShow = useMemo(() => {\n if (responsiveSettings) {\n return responsiveSettings.settings.slidesToShow;\n }\n return props.slidesToShow || 1;\n }, [responsiveSettings, props.slidesToShow]);\n const childrenCount = useMemo(() => React.Children.count(props.children), [props.children]);\n const eachChildWidth = useMemo(() => wrapperWidth / slidesToShow, [wrapperWidth, slidesToShow]);\n const timeout = useRef<NodeJS.Timeout>();\n const resizeObserver = useRef<any>();\n let startingClientX: number;\n let dragging: boolean = false;\n let distanceSwiped: number = 0;\n\n const applyStyle = useCallback(() => {\n if (innerWrapperRef.current) {\n const fullwidth = wrapperWidth * innerWrapperRef.current.children.length;\n innerWrapperRef.current.style.width = `${fullwidth}px`;\n for (let index = 0; index < innerWrapperRef.current.children.length; index++) {\n const eachDiv = innerWrapperRef.current.children[index];\n if (eachDiv) {\n eachDiv.style.width = `${eachChildWidth}px`;\n eachDiv.style.display = `block`;\n }\n }\n }\n }, [wrapperWidth, eachChildWidth]);\n\n const initResizeObserver = useCallback(() => {\n if (wrapperRef.current) {\n resizeObserver.current = new ResizeObserver((entries) => {\n if (!entries) return;\n setWidth();\n });\n resizeObserver.current.observe(wrapperRef.current);\n }\n }, [wrapperRef]);\n\n const play = useCallback(() => {\n const { autoplay, infinite, duration } = props;\n if (autoplay && (infinite || index < childrenCount - 1)) {\n timeout.current = setTimeout(moveNext, duration);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props, childrenCount, index]);\n\n useEffect(() => {\n applyStyle();\n }, [wrapperWidth, applyStyle]);\n\n useEffect(() => {\n initResizeObserver();\n return () => {\n tweenGroup.current.removeAll();\n clearTimeout(timeout.current);\n removeResizeObserver();\n };\n }, [wrapperRef, initResizeObserver, tweenGroup]);\n\n useEffect(() => {\n clearTimeout(timeout.current);\n play();\n }, [index, wrapperWidth, props.autoplay, play]);\n\n useImperativeHandle(ref, () => ({\n goNext: () => {\n moveNext();\n },\n goBack: () => {\n moveBack();\n },\n goTo: (index: number, options?: { skipTransition?: boolean }) => {\n if (options?.skipTransition) {\n setIndex(index);\n } else {\n moveTo(index);\n }\n },\n }));\n\n const removeResizeObserver = () => {\n if (resizeObserver && wrapperRef.current) {\n resizeObserver.current.unobserve(wrapperRef.current);\n }\n };\n\n const pauseSlides = () => {\n if (props.pauseOnHover) {\n clearTimeout(timeout.current);\n }\n };\n\n const swipe = (event: React.MouseEvent | React.TouchEvent) => {\n if (props.canSwipe && dragging) {\n let clientX;\n if (window.TouchEvent && event.nativeEvent instanceof TouchEvent) {\n clientX = event.nativeEvent.touches[0].pageX;\n } else if (event.nativeEvent instanceof MouseEvent) {\n clientX = event.nativeEvent.clientX;\n }\n if (clientX && startingClientX) {\n let translateValue = eachChildWidth * (index + getOffset());\n const distance = clientX - startingClientX;\n if (!props.infinite && index === childrenCount - slidesToScroll && distance < 0) {\n // if it is the last and infinite is false and you're swiping left\n // then nothing happens\n return;\n }\n if (!props.infinite && index === 0 && distance > 0) {\n // if it is the first and infinite is false and you're swiping right\n // then nothing happens\n return;\n }\n distanceSwiped = distance;\n translateValue -= distanceSwiped;\n innerWrapperRef.current.style.transform = `translate(-${translateValue}px)`;\n }\n }\n };\n\n const moveNext = () => {\n if (!props.infinite && index === childrenCount - slidesToScroll) {\n return;\n }\n const nextIndex = calculateIndex(index + slidesToScroll);\n transitionSlide(nextIndex);\n };\n\n const moveBack = () => {\n if (!props.infinite && index === 0) {\n return;\n }\n let previousIndex = index - slidesToScroll;\n if (previousIndex % slidesToScroll) {\n previousIndex = Math.ceil(previousIndex / slidesToScroll) * slidesToScroll;\n }\n transitionSlide(previousIndex);\n };\n\n const goToSlide: ButtonClick = ({ currentTarget }) => {\n if (!currentTarget.dataset.key) {\n return;\n }\n const datasetKey = parseInt(currentTarget.dataset.key);\n moveTo(datasetKey * slidesToScroll);\n };\n\n const moveTo = (index: number) => {\n transitionSlide(calculateIndex(index));\n };\n\n const calculateIndex = (nextIndex: number): number => {\n if (nextIndex < childrenCount && nextIndex + slidesToScroll > childrenCount) {\n if ((childrenCount - slidesToScroll) % slidesToScroll) {\n return childrenCount - slidesToScroll;\n }\n return nextIndex;\n }\n return nextIndex;\n };\n\n const startSlides = () => {\n if (dragging) {\n endSwipe();\n } else if (props.pauseOnHover && props.autoplay) {\n timeout.current = setTimeout(moveNext, props.duration);\n }\n };\n\n const moveSlides: ButtonClick = ({ currentTarget: { dataset } }) => {\n if (dataset.type === 'next') {\n moveNext();\n } else {\n moveBack();\n }\n };\n\n const renderPreceedingSlides = () => {\n return React.Children.toArray(props.children)\n .slice(-slidesToShow)\n .map((each, index) => (\n <div\n data-index={index - slidesToShow}\n aria-roledescription=\"slide\"\n aria-hidden=\"true\"\n key={index - slidesToShow}\n >\n {each}\n </div>\n ));\n };\n\n const renderTrailingSlides = () => {\n if (!props.infinite && slidesToShow === slidesToScroll) {\n return;\n }\n return React.Children.toArray(props.children)\n .slice(0, slidesToShow)\n .map((each, index) => (\n <div\n data-index={childrenCount + index}\n aria-roledescription=\"slide\"\n aria-hidden=\"true\"\n key={childrenCount + index}\n >\n {each}\n </div>\n ));\n };\n\n const setWidth = () => {\n if (wrapperRef.current) {\n setWrapperWidth(wrapperRef.current.clientWidth);\n }\n };\n\n const startSwipe = (event: React.MouseEvent | React.TouchEvent) => {\n if (props.canSwipe) {\n if (window.TouchEvent && event.nativeEvent instanceof TouchEvent) {\n startingClientX = event.nativeEvent.touches[0].pageX;\n } else if (event.nativeEvent instanceof MouseEvent) {\n startingClientX = event.nativeEvent.clientX;\n }\n clearTimeout(timeout.current);\n dragging = true;\n }\n };\n\n const endSwipe = () => {\n if (props.canSwipe) {\n dragging = false;\n if (Math.abs(distanceSwiped) / wrapperWidth > 0.2) {\n if (distanceSwiped < 0) {\n moveNext();\n } else {\n moveBack();\n }\n } else {\n if (Math.abs(distanceSwiped) > 0) {\n transitionSlide(index, 300);\n }\n }\n }\n };\n\n const animate = () => {\n requestAnimationFrame(animate);\n tweenGroup.current.update();\n };\n\n const transitionSlide = (toIndex: number, animationDuration?: number) => {\n const transitionDuration = animationDuration || props.transitionDuration;\n const currentIndex = index;\n const existingTweens = tweenGroup.current.getAll();\n if (!wrapperRef.current) {\n return;\n }\n const childWidth = wrapperRef.current.clientWidth / slidesToShow;\n if (!existingTweens.length) {\n clearTimeout(timeout.current);\n const value = {\n margin: -childWidth * (currentIndex + getOffset()) + distanceSwiped,\n };\n const tween = new Tween(value, tweenGroup.current)\n .to({ margin: -childWidth * (toIndex + getOffset()) }, transitionDuration)\n .onUpdate((value) => {\n if (innerWrapperRef.current) {\n innerWrapperRef.current.style.transform = `translate(${value.margin}px)`;\n }\n });\n tween.easing(getEasing(props.easing));\n\n animate();\n\n let newIndex = toIndex;\n if (newIndex < 0) {\n newIndex = childrenCount - slidesToScroll;\n } else if (newIndex >= childrenCount) {\n newIndex = 0;\n }\n\n tween.onStart(() => {\n if (typeof props.onStartChange === 'function') {\n props.onStartChange(index, newIndex);\n }\n });\n\n tween.onComplete(() => {\n distanceSwiped = 0;\n if (typeof props.onChange === 'function') {\n props.onChange(index, newIndex);\n }\n setIndex(newIndex);\n });\n\n tween.start();\n }\n };\n\n const isSlideActive = (key: number) => {\n return key < index + slidesToShow && key >= index;\n };\n\n const getOffset = (): number => {\n if (!props.infinite) {\n return 0;\n }\n return slidesToShow;\n };\n\n const style = {\n transform: `translate(-${(index + getOffset()) * eachChildWidth}px)`,\n };\n return (\n <div dir=\"ltr\" aria-roledescription=\"carousel\">\n <div\n className=\"react-slideshow-container\"\n onMouseEnter={pauseSlides}\n onMouseOver={pauseSlides}\n onMouseLeave={startSlides}\n onMouseDown={startSwipe}\n onMouseUp={endSwipe}\n onMouseMove={swipe}\n onTouchStart={startSwipe}\n onTouchEnd={endSwipe}\n onTouchCancel={endSwipe}\n onTouchMove={swipe}\n >\n {props.arrows && showPreviousArrow(props, index, moveSlides)}\n <div\n className={`react-slideshow-wrapper slide ${props.cssClass || ''}`}\n ref={wrapperRef}\n >\n <div className=\"images-wrap\" style={style} ref={innerWrapperRef}>\n {props.infinite && renderPreceedingSlides()}\n {(React.Children.map(props.children, (thisArg) => thisArg) || []).map(\n (each, key) => {\n const isThisSlideActive = isSlideActive(key);\n return (\n <div\n data-index={key}\n key={key}\n className={isThisSlideActive ? 'active' : ''}\n aria-roledescription=\"slide\"\n aria-hidden={isThisSlideActive ? 'false' : 'true'}\n >\n {each}\n </div>\n );\n }\n )}\n {renderTrailingSlides()}\n </div>\n </div>\n {props.arrows && showNextArrow(props, index, moveSlides)}\n </div>\n {props.indicators && showIndicators(props, index, goToSlide, responsiveSettings)}\n </div>\n );\n});\n\nSlide.defaultProps = defaultProps;\n"],"names":["getStartingIndex","children","defaultIndex","React","Children","count","EASING_METHODS","linear","Easing","Linear","None","ease","Quadratic","InOut","ease-in","In","ease-out","Out","cubic","Cubic","cubic-in","cubic-out","getEasing","easeMethod","showPreviousArrow","currentIndex","moveSlides","prevArrow","isDisabled","infinite","props","data-type","aria-label","disabled","onClick","cloneElement","className","type","width","height","viewBox","d","showNextArrow","properties","nextArrow","slidesToScroll","showIndicators","navigate","responsiveSettings","indicators","settings","pages","Math","ceil","Array","from","length","_","key","indicatorProps","data-key","isCurrentPageActive","floor","eachIndicator","showCustomIndicator","showDefaultIndicator","defaultProps","duration","transitionDuration","autoplay","arrows","pauseOnHover","easing","canSwipe","cssClass","responsive","FadeZoom","forwardRef","ref","useState","index","setIndex","wrapperRef","useRef","innerWrapperRef","tweenGroup","Group","timeout","resizeObserver","childrenCount","useMemo","applyStyle","useCallback","current","wrapperWidth","clientWidth","style","eachDiv","left","display","initResizeObserver","ResizeObserver","entries","observe","play","setTimeout","moveNext","useEffect","removeAll","clearTimeout","removeResizeObserver","useImperativeHandle","goNext","goBack","moveBack","goTo","options","skipTransition","moveTo","unobserve","pauseSlides","transitionSlide","preTransition","event","currentTarget","dataset","newIndex","getAll","_innerWrapperRef$curr","animate","requestAnimationFrame","update","tween","Tween","opacity","scale","to","onUpdate","value","transform","onStart","onStartChange","onComplete","onChange","start","gotoIndex","dir","onMouseEnter","onMouseOver","onMouseLeave","map","thisArg","each","zIndex","parseInt","Fade","Zoom","Slide","startingClientX","setWrapperWidth","window","isArray","find","breakpoint","getResponsiveSettings","slidesToShow","eachChildWidth","dragging","distanceSwiped","setWidth","swipe","clientX","TouchEvent","nativeEvent","touches","pageX","MouseEvent","translateValue","getOffset","distance","nextIndex","calculateIndex","previousIndex","startSwipe","endSwipe","abs","toIndex","animationDuration","existingTweens","childWidth","margin","onMouseDown","onMouseUp","onMouseMove","onTouchStart","onTouchEnd","onTouchCancel","onTouchMove","toArray","slice","isThisSlideActive","isSlideActive","renderTrailingSlides","datasetKey"],"mappings":"mdAYO,IAAMA,EAAmB,SAACC,EAAqBC,GAClD,OAAIA,GAAgBA,EAAeC,EAAMC,SAASC,MAAMJ,GAC7CC,EAEJ,GAaLI,EAAmD,CACrDC,OAAQC,SAAOC,OAAOC,KACtBC,KAAMH,SAAOI,UAAUC,MACvBC,UAAWN,SAAOI,UAAUG,GAC5BC,WAAYR,SAAOI,UAAUK,IAC7BC,MAAOV,SAAOW,MAAMN,MACpBO,WAAYZ,SAAOW,MAAMJ,GACzBM,YAAab,SAAOW,MAAMF,KAGjBK,EAAY,SAACC,GACtB,OAAIA,EACOjB,EAAeiB,GAEnBjB,EAAeC,QAGbiB,EAAoB,WAE7BC,EACAC,OAFEC,IAAAA,UAIIC,EAAaH,GAAgB,MAJtBI,SAKPC,EAAQ,CACVC,YAAa,OACbC,aAAc,iBACdC,SAAUL,EACVM,QAASR,GAEb,OAAIC,EACOxB,EAAMgC,aAAaR,KACtBS,WAAcT,EAAUG,MAAMM,WAAa,aAAUR,EAAa,WAAa,KAC5EE,IAKP3B,wCAAQkC,KAAK,SAASD,8BAFWR,EAAa,WAAa,KAEXE,GAC5C3B,uBAAKmC,MAAM,KAAKC,OAAO,KAAKC,QAAQ,aAChCrC,wBAAMsC,EAAE,4EAMXC,EAAgB,SACzBC,EACAlB,EACAC,GAEA,IAAQkB,EAAkCD,EAAlCC,UAAWf,EAAuBc,EAAvBd,SACfgB,EAAiB,EACjB,mBAAoBF,IACpBE,EAAiBF,EAAWE,gBAAkB,GAElD,IAAMjB,EAAaH,GAAgBtB,EAAMC,SAASC,MALRsC,EAAb1C,UAKuC4C,IAAmBhB,EACjFC,EAAQ,CACVC,YAAa,OACbC,aAAc,aACdC,SAAUL,EACVM,QAASR,GAEb,OAAIkB,EACOzC,EAAMgC,aAAaS,KACtBR,WAAcQ,EAAUd,MAAMM,WAAa,aAAUR,EAAa,WAAa,KAC5EE,IAKP3B,wCAAQkC,KAAK,SAASD,8BAFWR,EAAa,WAAa,KAEXE,GAC5C3B,uBAAKmC,MAAM,KAAKC,OAAO,KAAKC,QAAQ,aAChCrC,wBAAMsC,EAAE,qDAmCXK,EAAiB,SAC1BhB,EACAL,EACAsB,EACAC,GAEA,IAAkBC,EAAenB,EAAfmB,WACdJ,EAAiB,EACjBG,EACAH,QAAiBG,SAAAA,EAAoBE,SAASL,eACvC,mBAAoBf,IAC3Be,EAAiBf,EAAMe,gBAAkB,GAE7C,IAAMM,EAAQC,KAAKC,KAAKlD,EAAMC,SAASC,MAPNyB,EAAzB7B,UAOiD4C,GACzD,OACI1C,sBAAIiC,UAAU,cACTkB,MAAMC,KAAK,CAAEC,OAAQL,IAAS,SAACM,EAAGC,GAC/B,IAAMC,EAAqC,CACvCC,WAAYF,EACZ1B,6BAA6B0B,EAAM,GACnCxB,QAASa,GAEPc,EACFT,KAAKU,OAAOrC,EAAeoB,EAAiB,GAAKA,KAAoBa,EACzE,MAA0B,mBAAfT,EArCC,SACxBY,EACAH,EACAC,EACAI,GAEA,OAAO5D,EAAMgC,aAAa4B,KACtB3B,UAAc2B,EAAcjC,MAAMM,eAAayB,EAAsB,SAAW,IAChFH,IAAAA,GACGC,IA6BgBK,CACHH,EACAH,EACAC,EACAV,EAAWS,IA1DN,SACzBG,EACAH,EACAC,GAEA,OACIxD,sBAAIuD,IAAKA,GACLvD,wCACIkC,KAAK,SACLD,uCAAuCyB,EAAsB,SAAW,KACpEF,KAmDGM,CAAqBJ,EAAqBH,EAAKC,QCxKzDO,EAAe,CAC1BC,SAAU,IACVC,mBAAoB,IACpBlE,aAAc,EACd2B,UAAU,EACVwC,UAAU,EACVpB,YAAY,EACZqB,QAAQ,EACRC,cAAc,EACdC,OAAQ,SACRC,UAAU,EACVC,SAAU,GACVC,WAAY,ICQDC,EAAWzE,EAAM0E,YAAoC,SAAC/C,EAAOgD,GACtE,MAA0BC,WACtB/E,EAAiB8B,EAAM7B,SAAU6B,EAAM5B,eADpC8E,OAAOC,OAGRC,EAAaC,SAAuB,MACpCC,EAAkBD,SAAY,MAC9BE,EAAaF,SAAO,IAAIG,SACxBC,EAAUJ,WACVK,EAAiBL,WACjBM,EAAgBC,WAAQ,WAAA,OAAMvF,EAAMC,SAASC,MAAMyB,EAAM7B,YAAW,CAAC6B,EAAM7B,WAE3E0F,EAAaC,eAAY,WAC3B,GAAIR,EAAgBS,SAAWX,EAAWW,QAAS,CAC/C,IAAMC,EAAeZ,EAAWW,QAAQE,YAExCX,EAAgBS,QAAQG,MAAM1D,MADZwD,EAAeL,OAEjC,IAAK,IAAIT,EAAQ,EAAGA,EAAQI,EAAgBS,QAAQ5F,SAASuD,OAAQwB,IAAS,CAC1E,IAAMiB,EAAUb,EAAgBS,QAAQ5F,SAAS+E,GAC7CiB,IACAA,EAAQD,MAAM1D,MAAWwD,OACzBG,EAAQD,MAAME,KAAUlB,GAASc,OACjCG,EAAQD,MAAMG,qBAI3B,CAACjB,EAAYE,EAAiBK,IAE3BW,EAAqBR,eAAY,WAC/BV,EAAWW,UACXL,EAAeK,QAAU,IAAIQ,GAAe,SAACC,GACpCA,GACLX,OAEJH,EAAeK,QAAQU,QAAQrB,EAAWW,YAE/C,CAACX,EAAYS,IAEVa,EAAOZ,eAAY,WACrB,IAAkB3F,EAAiC6B,EAAjC7B,SAAUkE,EAAuBrC,EAAvBqC,SAAUtC,EAAaC,EAAbD,SAAaC,EAA3CuC,UAGJlE,EAAMC,SAASC,MAAMJ,GAAY,IAChC4B,GAAYmD,EAAQ7E,EAAMC,SAASC,MAAMJ,GAAY,KAEtDsF,EAAQM,QAAUY,WAAWC,EAAUvC,MAG5C,CAACrC,EAAOkD,IAEX2B,aAAU,WAEN,OADAP,IACO,WACHf,EAAWQ,QAAQe,YACnBC,aAAatB,EAAQM,SACrBiB,OAEL,CAACV,EAAoBf,IAExBsB,aAAU,WACNE,aAAatB,EAAQM,SACrBW,MACD,CAACxB,EAAOlD,EAAMuC,SAAUmC,IAE3BG,aAAU,WACNhB,MACD,CAACF,EAAeE,IAEnBoB,sBAAoBjC,GAAK,WAAA,MAAO,CAC5BkC,OAAQ,WACJN,KAEJO,OAAQ,WACJC,KAEJC,KAAM,SAACnC,EAAeoC,SACdA,GAAAA,EAASC,eACTpC,EAASD,GAETsC,EAAOtC,QAKnB,IAAM8B,EAAuB,WACrBtB,EAAeK,SAAWX,EAAWW,SACrCL,EAAeK,QAAQ0B,UAAUrC,EAAWW,UAI9C2B,EAAc,WACZ1F,EAAMyC,cACNsC,aAAatB,EAAQM,UAWvBa,EAAW,WACb,IAAQzG,EAAuB6B,EAAvB7B,UAAuB6B,EAAbD,UACDmD,IAAU7E,EAAMC,SAASC,MAAMJ,GAAY,IAG5DwH,GAAiBzC,EAAQ,GAAK7E,EAAMC,SAASC,MAAMJ,KAGjDiH,EAAW,YACkBpF,EAAbD,UACS,IAAVmD,IAGjByC,EAA0B,IAAVzC,EAAc7E,EAAMC,SAASC,MAJdyB,EAAvB7B,UAIuD,EAAI+E,EAAQ,IAGzE0C,EAA6B,SAACC,GAEG,SADTA,EAAlBC,cACUC,QAAQxF,KACtB6E,IAEAR,KASFe,EAAkB,SAACK,GAErB,IADuBzC,EAAWQ,QAAQkC,SACtBvE,OAAQ,CAAA,eACnB4B,EAAgBS,UAAhBmC,EAAyB/H,SAAS6H,KACnCA,EAAW,GAEfjB,aAAatB,EAAQM,SAXb,SAAVoC,IACFC,sBAAsBD,GACtB5C,EAAWQ,QAAQsC,SAYfF,GAEA,IAAMG,EAAQ,IAAIC,QAJJ,CAAEC,QAAS,EAAGC,MAAO,GAIJlD,EAAWQ,SACrC2C,GAAG,CAAEF,QAAS,EAAGC,MAAOzG,EAAMyG,OAASzG,EAAMsC,oBAC7CqE,UAAS,SAACC,GACFtD,EAAgBS,UAGrBT,EAAgBS,QAAQ5F,SAAS6H,GAAU9B,MAAMsC,QAAUI,EAAMJ,QACjElD,EAAgBS,QAAQ5F,SAAS+E,GAAOgB,MAAMsC,QAAU,EAAII,EAAMJ,QAClElD,EAAgBS,QAAQ5F,SACpB+E,GACFgB,MAAM2C,mBAAqBD,EAAMH,cAE3CH,EAAM5D,OAAOlD,EAAUQ,EAAM0C,SAC7B4D,EAAMQ,SAAQ,WACyB,mBAAxB9G,EAAM+G,eACb/G,EAAM+G,cAAc7D,EAAO8C,MAGnCM,EAAMU,YAAW,WACT1D,EAAgBS,UAChBZ,EAAS6C,GACT1C,EAAgBS,QAAQ5F,SAAS+E,GAAOgB,MAAM2C,sBAEpB,mBAAnB7G,EAAMiH,UACbjH,EAAMiH,SAAS/D,EAAO8C,MAG9BM,EAAMY,UAIR1B,EAAS,SAAC2B,GACRA,IAAcjE,GACdyC,EAAgBwB,IAcxB,OACI9I,uBAAK+I,IAAI,6BAA2B,YAChC/I,uBACIiC,wCAAwCN,EAAM4C,UAAY,IAC1DyE,aAAc3B,EACd4B,YAAa5B,EACb6B,aArGQ,WAC6BvH,EAArCyC,cAAqCzC,EAAvBuC,WAElBkB,EAAQM,QAAUY,YAAW,WAAA,OAAMC,MAFM5E,EAAbqC,aAsGvBrC,EAAMwC,QAAU9C,EAAkBM,EAAOkD,EAAO0C,GACjDvH,uBACIiC,8CAA+CN,EAAM4C,SACrDI,IAAKI,GAEL/E,uBAAKiC,UAAU,uCAAuC0C,IAAKM,IACrDjF,EAAMC,SAASkJ,IAAIxH,EAAM7B,UAAU,SAACsJ,GAAD,OAAaA,MAAY,IAAID,KAC9D,SAACE,EAAM9F,GAAP,OACIvD,uBACI6F,MAAO,CACHsC,QAAS5E,IAAQsB,EAAQ,IAAM,IAC/ByE,OAAQ/F,IAAQsB,EAAQ,IAAM,kBAEtBtB,EACZA,IAAKA,yBACgB,sBACRA,IAAQsB,EAAQ,QAAU,QAEtCwE,QAMpB1H,EAAMwC,QAAU5B,EAAcZ,EAAOkD,EAAO0C,IAEhD5F,EAAMmB,YAAcH,EAAehB,EAAOkD,GA5CrB,SAAC2C,GAC3B,IAAQC,EAAkBD,EAAlBC,cACHA,EAAcC,QAAQnE,KAGvBgG,SAAS9B,EAAcC,QAAQnE,OAASsB,GACxCsC,EAAOoC,SAAS9B,EAAcC,QAAQnE,aA2ClDkB,EAASV,aAAeA,MCpPXyF,EAAOxJ,EAAM0E,YAAoC,SAAC/C,EAAOgD,GAClE,OAAO3E,gBAACyE,mBAAa9C,GAAOyG,MAAO,EAAGzD,IAAKA,QAG/C6E,EAAKzF,aAAeA,MCJP0F,EAAOzJ,EAAM0E,YAAoC,SAAC/C,EAAOgD,GAClE,OAAO3E,gBAACyE,mBAAa9C,GAAOgD,IAAKA,QAGrC8E,EAAK1F,aAAeA,MCYP2F,EAAQ1J,EAAM0E,YAAqC,SAAC/C,EAAOgD,GACpE,IAyBIgF,IAzBsB/E,WAAS/E,EAAiB8B,EAAM7B,SAAU6B,EAAM5B,eAAnE8E,OAAOC,SAC0BF,WAAiB,GAAlDe,OAAciE,OACf7E,EAAaC,SAAuB,MACpCC,EAAkBD,SAAY,MAC9BE,EAAaF,SAAO,IAAIG,SACxBtC,EAAqB0C,WACvB,WAAA,OLT6B,SACjCI,EACAnB,GAEA,GAAsB,oBAAXqF,QAA0B1G,MAAM2G,QAAQtF,GAC/C,OAAOA,EAAWuF,MAAK,SAACV,GAAD,OAAUA,EAAKW,YAAcrE,KKI9CsE,CAAsBtE,EAAchE,EAAM6C,cAChD,CAACmB,EAAchE,EAAM6C,aAEnB9B,EAAiB6C,WAAQ,WAC3B,OAAI1C,EACOA,EAAmBE,SAASL,eAEhCf,EAAMe,gBAAkB,IAChC,CAACG,EAAoBlB,EAAMe,iBACxBwH,EAAe3E,WAAQ,WACzB,OAAI1C,EACOA,EAAmBE,SAASmH,aAEhCvI,EAAMuI,cAAgB,IAC9B,CAACrH,EAAoBlB,EAAMuI,eACxB5E,EAAgBC,WAAQ,WAAA,OAAMvF,EAAMC,SAASC,MAAMyB,EAAM7B,YAAW,CAAC6B,EAAM7B,WAC3EqK,EAAiB5E,WAAQ,WAAA,OAAMI,EAAeuE,IAAc,CAACvE,EAAcuE,IAC3E9E,EAAUJ,WACVK,EAAiBL,WAEnBoF,GAAoB,EACpBC,EAAyB,EAEvB7E,EAAaC,eAAY,WAC3B,GAAIR,EAAgBS,QAAS,CAEzBT,EAAgBS,QAAQG,MAAM1D,MADZwD,EAAeV,EAAgBS,QAAQ5F,SAASuD,YAElE,IAAK,IAAIwB,EAAQ,EAAGA,EAAQI,EAAgBS,QAAQ5F,SAASuD,OAAQwB,IAAS,CAC1E,IAAMiB,EAAUb,EAAgBS,QAAQ5F,SAAS+E,GAC7CiB,IACAA,EAAQD,MAAM1D,MAAWgI,OACzBrE,EAAQD,MAAMG,qBAI3B,CAACL,EAAcwE,IAEZlE,EAAqBR,eAAY,WAC/BV,EAAWW,UACXL,EAAeK,QAAU,IAAIQ,GAAe,SAACC,GACpCA,GACLmE,OAEJjF,EAAeK,QAAQU,QAAQrB,EAAWW,YAE/C,CAACX,IAEEsB,EAAOZ,eAAY,WACoB9D,EAAjCuC,WAAiCvC,EAAvBD,UACWmD,EAAQS,EAAgB,KACjDF,EAAQM,QAAUY,WAAWC,EAFQ5E,EAAbqC,aAK7B,CAACrC,EAAO2D,EAAeT,IAE1B2B,aAAU,WACNhB,MACD,CAACG,EAAcH,IAElBgB,aAAU,WAEN,OADAP,IACO,WACHf,EAAWQ,QAAQe,YACnBC,aAAatB,EAAQM,SACrBiB,OAEL,CAAC5B,EAAYkB,EAAoBf,IAEpCsB,aAAU,WACNE,aAAatB,EAAQM,SACrBW,MACD,CAACxB,EAAOc,EAAchE,EAAMuC,SAAUmC,IAEzCO,sBAAoBjC,GAAK,WAAA,MAAO,CAC5BkC,OAAQ,WACJN,KAEJO,OAAQ,WACJC,KAEJC,KAAM,SAACnC,EAAeoC,SACdA,GAAAA,EAASC,eACTpC,EAASD,GAETsC,EAAOtC,QAKnB,IAAM8B,EAAuB,WACrBtB,GAAkBN,EAAWW,SAC7BL,EAAeK,QAAQ0B,UAAUrC,EAAWW,UAI9C2B,EAAc,WACZ1F,EAAMyC,cACNsC,aAAatB,EAAQM,UAIvB6E,EAAQ,SAAC/C,GAEP,IAAIgD,EADR,GAAI7I,EAAM2C,UAAY8F,IAEdP,OAAOY,YAAcjD,EAAMkD,uBAAuBD,WAClDD,EAAUhD,EAAMkD,YAAYC,QAAQ,GAAGC,MAChCpD,EAAMkD,uBAAuBG,aACpCL,EAAUhD,EAAMkD,YAAYF,SAE5BA,GAAWb,GAAiB,CAC5B,IAAImB,EAAiBX,GAAkBtF,EAAQkG,KACzCC,EAAWR,EAAUb,EAC3B,IAAKhI,EAAMD,UAAYmD,IAAUS,EAAgB5C,GAAkBsI,EAAW,EAG1E,OAEJ,IAAKrJ,EAAMD,UAAsB,IAAVmD,GAAemG,EAAW,EAG7C,OAIJ/F,EAAgBS,QAAQG,MAAM2C,yBAD9BsC,GADAT,EAAiBW,WAOvBzE,EAAW,WACb,GAAK5E,EAAMD,UAAYmD,IAAUS,EAAgB5C,EAAjD,CAGA,IAAMuI,EAAYC,EAAerG,EAAQnC,GACzC4E,EAAgB2D,KAGdlE,EAAW,WACb,GAAKpF,EAAMD,UAAsB,IAAVmD,EAAvB,CAGA,IAAIsG,EAAgBtG,EAAQnC,EACxByI,EAAgBzI,IAChByI,EAAgBlI,KAAKC,KAAKiI,EAAgBzI,GAAkBA,GAEhE4E,EAAgB6D,KAWdhE,EAAS,SAACtC,GACZyC,EAAgB4D,EAAerG,KAG7BqG,EAAiB,SAACD,GACpB,OAAIA,EAAY3F,GAAiB2F,EAAYvI,EAAiB4C,IACrDA,EAAgB5C,GAAkBA,EAC5B4C,EAAgB5C,EAIxBuI,GAWL1J,EAA0B,YACP,WADUkG,cAAiBC,QACpCxF,KACRqE,IAEAQ,KAqCFuD,EAAW,WACTvF,EAAWW,SACXkE,EAAgB7E,EAAWW,QAAQE,cAIrCwF,EAAa,SAAC5D,GACZ7F,EAAM2C,WACFuF,OAAOY,YAAcjD,EAAMkD,uBAAuBD,WAClDd,EAAkBnC,EAAMkD,YAAYC,QAAQ,GAAGC,MACxCpD,EAAMkD,uBAAuBG,aACpClB,EAAkBnC,EAAMkD,YAAYF,SAExC9D,aAAatB,EAAQM,SACrB0E,GAAW,IAIbiB,EAAW,WACT1J,EAAM2C,WACN8F,GAAW,EACPnH,KAAKqI,IAAIjB,GAAkB1E,EAAe,GACtC0E,EAAiB,EACjB9D,IAEAQ,IAGA9D,KAAKqI,IAAIjB,GAAkB,GAC3B/C,EAAgBzC,EAAO,OAWjCyC,EAAkB,SAACiE,EAAiBC,GACtC,IAAMvH,EAAqBuH,GAAqB7J,EAAMsC,mBAChD3C,EAAeuD,EACf4G,EAAiBvG,EAAWQ,QAAQkC,SAC1C,GAAK7C,EAAWW,QAAhB,CAGA,IAAMgG,EAAa3G,EAAWW,QAAQE,YAAcsE,EACpD,IAAKuB,EAAepI,OAAQ,CACxBqD,aAAatB,EAAQM,SACrB,IAAM6C,EAAQ,CACVoD,QAASD,GAAcpK,EAAeyJ,KAAeV,GAEnDpC,EAAQ,IAAIC,QAAMK,EAAOrD,EAAWQ,SACrC2C,GAAG,CAAEsD,QAASD,GAAcH,EAAUR,MAAgB9G,GACtDqE,UAAS,SAACC,GACHtD,EAAgBS,UAChBT,EAAgBS,QAAQG,MAAM2C,uBAAyBD,EAAMoD,iBAGzE1D,EAAM5D,OAAOlD,EAAUQ,EAAM0C,SAzBrB,SAAVyD,IACFC,sBAAsBD,GACtB5C,EAAWQ,QAAQsC,SAyBfF,GAEA,IAAIH,EAAW4D,EACX5D,EAAW,EACXA,EAAWrC,EAAgB5C,EACpBiF,GAAYrC,IACnBqC,EAAW,GAGfM,EAAMQ,SAAQ,WACyB,mBAAxB9G,EAAM+G,eACb/G,EAAM+G,cAAc7D,EAAO8C,MAInCM,EAAMU,YAAW,WACb0B,EAAiB,EACa,mBAAnB1I,EAAMiH,UACbjH,EAAMiH,SAAS/D,EAAO8C,GAE1B7C,EAAS6C,MAGbM,EAAMY,WAQRkC,EAAY,WACd,OAAKpJ,EAAMD,SAGJwI,EAFI,GAKTrE,EAAQ,CACV2C,yBAA0B3D,EAAQkG,KAAeZ,SAErD,OACInK,uBAAK+I,IAAI,6BAA2B,YAChC/I,uBACIiC,UAAU,4BACV+G,aAAc3B,EACd4B,YAAa5B,EACb6B,aA9JQ,WACZkB,EACAiB,IACO1J,EAAMyC,cAAgBzC,EAAMuC,WACnCkB,EAAQM,QAAUY,WAAWC,EAAU5E,EAAMqC,YA2JzC4H,YAAaR,EACbS,UAAWR,EACXS,YAAavB,EACbwB,aAAcX,EACdY,WAAYX,EACZY,cAAeZ,EACfa,YAAa3B,GAEZ5I,EAAMwC,QAAU9C,EAAkBM,EAAOkD,EAAOtD,GACjDvB,uBACIiC,4CAA4CN,EAAM4C,UAAY,IAC9DI,IAAKI,GAEL/E,uBAAKiC,UAAU,cAAc4D,MAAOA,EAAOlB,IAAKM,GAC3CtD,EAAMD,UA5JhB1B,EAAMC,SAASkM,QAAQxK,EAAM7B,UAC/BsM,OAAOlC,GACPf,KAAI,SAACE,EAAMxE,GAAP,OACD7E,oCACgB6E,EAAQqF,yBACC,sBACT,OACZ3G,IAAKsB,EAAQqF,GAEZb,OAoJKrJ,EAAMC,SAASkJ,IAAIxH,EAAM7B,UAAU,SAACsJ,GAAD,OAAaA,MAAY,IAAID,KAC9D,SAACE,EAAM9F,GACH,IAAM8I,EAtCZ,SAAC9I,GACnB,OAAOA,EAAMsB,EAAQqF,GAAgB3G,GAAOsB,EAqCMyH,CAAc/I,GACxC,OACIvD,oCACgBuD,EACZA,IAAKA,EACLtB,UAAWoK,EAAoB,SAAW,0BACrB,sBACRA,EAAoB,QAAU,QAE1ChD,MA1JR,WACzB,GAAK1H,EAAMD,UAAYwI,IAAiBxH,EAGxC,OAAO1C,EAAMC,SAASkM,QAAQxK,EAAM7B,UAC/BsM,MAAM,EAAGlC,GACTf,KAAI,SAACE,EAAMxE,GAAP,OACD7E,oCACgBsF,EAAgBT,yBACP,sBACT,OACZtB,IAAK+B,EAAgBT,GAEpBwE,MAkJIkD,KAGR5K,EAAMwC,QAAU5B,EAAcZ,EAAOkD,EAAOtD,IAEhDI,EAAMmB,YAAcH,EAAehB,EAAOkD,GAzNpB,gBAAG4C,IAAAA,cAC9B,GAAKA,EAAcC,QAAQnE,IAA3B,CAGA,IAAMiJ,EAAajD,SAAS9B,EAAcC,QAAQnE,KAClD4D,EAAOqF,EAAa9J,MAoN6CG,OAKzE6G,EAAM3F,aAAeA"}
@@ -1,6 +1,6 @@
1
1
  import React, { useState, useRef, useMemo, useCallback, useEffect, useImperativeHandle } from 'react';
2
2
  import ResizeObserver from 'resize-observer-polyfill';
3
- import TWEEN from '@tweenjs/tween.js';
3
+ import { Easing, Group, Tween } from '@tweenjs/tween.js';
4
4
 
5
5
  function _extends() {
6
6
  _extends = Object.assign ? Object.assign.bind() : function (target) {
@@ -36,13 +36,13 @@ var getResponsiveSettings = function getResponsiveSettings(wrapperWidth, respons
36
36
  return;
37
37
  };
38
38
  var EASING_METHODS = {
39
- linear: TWEEN.Easing.Linear.None,
40
- ease: TWEEN.Easing.Quadratic.InOut,
41
- 'ease-in': TWEEN.Easing.Quadratic.In,
42
- 'ease-out': TWEEN.Easing.Quadratic.Out,
43
- cubic: TWEEN.Easing.Cubic.InOut,
44
- 'cubic-in': TWEEN.Easing.Cubic.In,
45
- 'cubic-out': TWEEN.Easing.Cubic.Out
39
+ linear: Easing.Linear.None,
40
+ ease: Easing.Quadratic.InOut,
41
+ 'ease-in': Easing.Quadratic.In,
42
+ 'ease-out': Easing.Quadratic.Out,
43
+ cubic: Easing.Cubic.InOut,
44
+ 'cubic-in': Easing.Cubic.In,
45
+ 'cubic-out': Easing.Cubic.Out
46
46
  };
47
47
  var getEasing = function getEasing(easeMethod) {
48
48
  if (easeMethod) {
@@ -187,7 +187,7 @@ var FadeZoom = /*#__PURE__*/React.forwardRef(function (props, ref) {
187
187
 
188
188
  var wrapperRef = useRef(null);
189
189
  var innerWrapperRef = useRef(null);
190
- var tweenGroup = useRef(new TWEEN.Group());
190
+ var tweenGroup = useRef(new Group());
191
191
  var timeout = useRef();
192
192
  var resizeObserver = useRef();
193
193
  var childrenCount = useMemo(function () {
@@ -340,7 +340,7 @@ var FadeZoom = /*#__PURE__*/React.forwardRef(function (props, ref) {
340
340
  scale: 1
341
341
  };
342
342
  animate();
343
- var tween = new TWEEN.Tween(value, tweenGroup.current).to({
343
+ var tween = new Tween(value, tweenGroup.current).to({
344
344
  opacity: 1,
345
345
  scale: props.scale
346
346
  }, props.transitionDuration).onUpdate(function (value) {
@@ -351,8 +351,13 @@ var FadeZoom = /*#__PURE__*/React.forwardRef(function (props, ref) {
351
351
  innerWrapperRef.current.children[newIndex].style.opacity = value.opacity;
352
352
  innerWrapperRef.current.children[index].style.opacity = 1 - value.opacity;
353
353
  innerWrapperRef.current.children[index].style.transform = "scale(" + value.scale + ")";
354
- }).start();
354
+ });
355
355
  tween.easing(getEasing(props.easing));
356
+ tween.onStart(function () {
357
+ if (typeof props.onStartChange === 'function') {
358
+ props.onStartChange(index, newIndex);
359
+ }
360
+ });
356
361
  tween.onComplete(function () {
357
362
  if (innerWrapperRef.current) {
358
363
  setIndex(newIndex);
@@ -363,6 +368,7 @@ var FadeZoom = /*#__PURE__*/React.forwardRef(function (props, ref) {
363
368
  props.onChange(index, newIndex);
364
369
  }
365
370
  });
371
+ tween.start();
366
372
  }
367
373
  };
368
374
 
@@ -441,7 +447,7 @@ var Slide = /*#__PURE__*/React.forwardRef(function (props, ref) {
441
447
 
442
448
  var wrapperRef = useRef(null);
443
449
  var innerWrapperRef = useRef(null);
444
- var tweenGroup = useRef(new TWEEN.Group());
450
+ var tweenGroup = useRef(new Group());
445
451
  var responsiveSettings = useMemo(function () {
446
452
  return getResponsiveSettings(wrapperWidth, props.responsive);
447
453
  }, [wrapperWidth, props.responsive]);
@@ -734,24 +740,30 @@ var Slide = /*#__PURE__*/React.forwardRef(function (props, ref) {
734
740
  var value = {
735
741
  margin: -childWidth * (currentIndex + getOffset()) + distanceSwiped
736
742
  };
737
- var tween = new TWEEN.Tween(value, tweenGroup.current).to({
743
+ var tween = new Tween(value, tweenGroup.current).to({
738
744
  margin: -childWidth * (toIndex + getOffset())
739
745
  }, transitionDuration).onUpdate(function (value) {
740
746
  if (innerWrapperRef.current) {
741
747
  innerWrapperRef.current.style.transform = "translate(" + value.margin + "px)";
742
748
  }
743
- }).start();
749
+ });
744
750
  tween.easing(getEasing(props.easing));
745
751
  animate();
746
- tween.onComplete(function () {
747
- distanceSwiped = 0;
748
- var newIndex = toIndex;
752
+ var newIndex = toIndex;
749
753
 
750
- if (newIndex < 0) {
751
- newIndex = childrenCount - slidesToScroll;
752
- } else if (newIndex >= childrenCount) {
753
- newIndex = 0;
754
+ if (newIndex < 0) {
755
+ newIndex = childrenCount - slidesToScroll;
756
+ } else if (newIndex >= childrenCount) {
757
+ newIndex = 0;
758
+ }
759
+
760
+ tween.onStart(function () {
761
+ if (typeof props.onStartChange === 'function') {
762
+ props.onStartChange(index, newIndex);
754
763
  }
764
+ });
765
+ tween.onComplete(function () {
766
+ distanceSwiped = 0;
755
767
 
756
768
  if (typeof props.onChange === 'function') {
757
769
  props.onChange(index, newIndex);
@@ -759,6 +771,7 @@ var Slide = /*#__PURE__*/React.forwardRef(function (props, ref) {
759
771
 
760
772
  setIndex(newIndex);
761
773
  });
774
+ tween.start();
762
775
  }
763
776
  };
764
777