react-slideshow-image 4.1.1 → 4.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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":"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"}
@@ -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