react-spring-carousel 1.9.29-beta18 → 1.9.29-beta19
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.
- package/dist/index.es.js +17 -9
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +17 -9
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
package/dist/index.es.js
CHANGED
|
@@ -477,14 +477,12 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
|
|
|
477
477
|
const movement = props.movement[carouselSlideAxis === 'x' ? 0 : 1];
|
|
478
478
|
function resetAnimation() {
|
|
479
479
|
if (itemsPerSlide === 'fluid') {
|
|
480
|
-
if (getIfItemsNotFillTheCarousel()
|
|
480
|
+
if (getIfItemsNotFillTheCarousel() ||
|
|
481
|
+
(getIsFirstItem() && getSlideActionType() === 'prev')) {
|
|
481
482
|
setCarouselStyles.start({
|
|
482
483
|
[carouselSlideAxis]: 0,
|
|
483
484
|
});
|
|
484
485
|
}
|
|
485
|
-
else if (getIsFirstItem()) {
|
|
486
|
-
slideToPrevItem();
|
|
487
|
-
}
|
|
488
486
|
else if (slideFluidEndReached.current) {
|
|
489
487
|
setCarouselStyles.start({
|
|
490
488
|
[carouselSlideAxis]: -fluidTotalWrapperScrollValue.current,
|
|
@@ -508,8 +506,14 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
|
|
|
508
506
|
eventName: 'onDrag',
|
|
509
507
|
...props,
|
|
510
508
|
});
|
|
509
|
+
const direction = props.direction[carouselSlideAxis === 'x' ? 0 : 1];
|
|
510
|
+
if (direction > 0) {
|
|
511
|
+
setSlideActionType('prev');
|
|
512
|
+
}
|
|
513
|
+
else {
|
|
514
|
+
setSlideActionType('next');
|
|
515
|
+
}
|
|
511
516
|
if (freeScroll) {
|
|
512
|
-
const direction = props.direction[carouselSlideAxis === 'x' ? 0 : 1];
|
|
513
517
|
if (getWrapperScrollDirection() === 0 && direction > 0) {
|
|
514
518
|
props.cancel();
|
|
515
519
|
}
|
|
@@ -574,6 +578,7 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
|
|
|
574
578
|
}
|
|
575
579
|
}, {
|
|
576
580
|
enabled: !disableGestures,
|
|
581
|
+
preventScrollAxis: 'x',
|
|
577
582
|
});
|
|
578
583
|
// Perform some check on first mount
|
|
579
584
|
useMount(() => {
|
|
@@ -644,6 +649,9 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
|
|
|
644
649
|
}
|
|
645
650
|
}
|
|
646
651
|
}, [carouselSlideAxis]);
|
|
652
|
+
useEffect(() => {
|
|
653
|
+
setTimeout(() => adjustCarouselWrapperPosition(carouselTrackWrapperRef.current), 150);
|
|
654
|
+
}, [adjustCarouselWrapperPosition, carouselSlideAxis, itemsPerSlide]);
|
|
647
655
|
function setSlideActionType(type) {
|
|
648
656
|
slideActionType.current = type;
|
|
649
657
|
}
|
|
@@ -709,8 +717,8 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
|
|
|
709
717
|
eventName: 'onSlideStartChange',
|
|
710
718
|
slideActionType: getSlideActionType(),
|
|
711
719
|
nextItem: {
|
|
712
|
-
index: to,
|
|
713
|
-
id: items[to].id,
|
|
720
|
+
index: itemsPerSlide === 'fluid' ? -1 : to,
|
|
721
|
+
id: itemsPerSlide === 'fluid' ? '' : items[to].id,
|
|
714
722
|
},
|
|
715
723
|
});
|
|
716
724
|
}
|
|
@@ -748,8 +756,8 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
|
|
|
748
756
|
eventName: 'onSlideChange',
|
|
749
757
|
slideActionType: getSlideActionType(),
|
|
750
758
|
currentItem: {
|
|
751
|
-
index: getCurrentActiveItem(),
|
|
752
|
-
id: items[getCurrentActiveItem()].id,
|
|
759
|
+
index: itemsPerSlide === 'fluid' ? -1 : getCurrentActiveItem(),
|
|
760
|
+
id: itemsPerSlide === 'fluid' ? '' : items[getCurrentActiveItem()].id,
|
|
753
761
|
},
|
|
754
762
|
});
|
|
755
763
|
}
|
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/modules/useCustomEventsModule.tsx","../src/modules/useFullscreenModule.tsx","../src/utils.ts","../src/modules/useThumbsModule.tsx","../src/useSpringCarousel.tsx","../src/useTransitionCarousel.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react'\nimport { Subject } from 'rxjs'\nimport { EventsObservableProps, ObservableCallbackFn, EmitObservableFn } from '../types'\n\nexport function useCustomEventsModule() {\n const eventsObserverRef = useRef(new Subject<EventsObservableProps>())\n\n function useListenToCustomEvent(fn: ObservableCallbackFn) {\n useEffect(() => {\n const subscribe = eventsObserverRef.current.subscribe(fn)\n return () => subscribe.unsubscribe()\n }, [fn])\n }\n\n const emitObservable: EmitObservableFn = data => {\n eventsObserverRef.current.next(data)\n }\n\n return {\n useListenToCustomEvent,\n emitObservable,\n }\n}\n","import { useRef, MutableRefObject, useEffect } from 'react'\nimport screenfull from 'screenfull'\nimport { EmitObservableFn } from '../types'\n\ntype FullscreenModule = {\n mainCarouselWrapperRef: MutableRefObject<HTMLDivElement | null>\n emitObservable: EmitObservableFn\n handleResize?(): void\n}\n\nexport function useFullscreenModule({\n mainCarouselWrapperRef,\n emitObservable,\n handleResize,\n}: FullscreenModule) {\n const isFullscreen = useRef(false)\n\n useEffect(() => {\n function handleFullscreenChange() {\n if (document.fullscreenElement) {\n setIsFullscreen(true)\n emitObservable({\n eventName: 'onFullscreenChange',\n isFullscreen: true,\n })\n\n handleResize && handleResize()\n }\n\n if (!document.fullscreenElement) {\n setIsFullscreen(false)\n emitObservable({\n eventName: 'onFullscreenChange',\n isFullscreen: false,\n })\n handleResize && handleResize()\n }\n }\n\n if (screenfull.isEnabled) {\n screenfull.on('change', handleFullscreenChange)\n return () => {\n if (screenfull.isEnabled) {\n screenfull.off('change', handleFullscreenChange)\n }\n }\n }\n })\n\n function setIsFullscreen(_isFullscreen: boolean) {\n isFullscreen.current = _isFullscreen\n }\n\n function getIsFullscreen() {\n return isFullscreen.current\n }\n\n function enterFullscreen(elementRef?: HTMLElement) {\n if (screenfull.isEnabled) {\n screenfull.request((elementRef || mainCarouselWrapperRef.current) as Element)\n }\n }\n\n function exitFullscreen() {\n screenfull.isEnabled && screenfull.exit()\n }\n\n return {\n enterFullscreen,\n exitFullscreen,\n getIsFullscreen,\n }\n}\n","import { useRef, useEffect } from 'react'\n\ntype Callback = () => void | (() => void)\n\nexport function useMount(callback: Callback) {\n const isMounted = useRef(false)\n\n useEffect(() => {\n if (!isMounted.current) {\n const clean = callback()\n isMounted.current = true\n\n return () => {\n clean && clean()\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n}\n\nexport function getIsBrowser() {\n return typeof window !== 'undefined'\n}\n","import { forwardRef, HTMLAttributes, useRef } from 'react'\nimport { useSpring, SpringConfig, animated } from 'react-spring'\nimport { useMount } from 'src/utils'\nimport {\n UseSpringCarouselProps,\n ReactSpringThumbItem,\n PrepareThumbsData,\n UseSpringCarouselItems,\n SlideActionType,\n} from '../types'\n\ntype OffsetDimension = 'offsetWidth' | 'offsetHeight'\ntype OffsetDirection = 'offsetLeft' | 'offsetTop'\ntype ScrollDirection = 'scrollLeft' | 'scrollTop'\n\ntype Props = {\n items: UseSpringCarouselItems['items']\n withThumbs: boolean\n thumbsSlideAxis: UseSpringCarouselProps['thumbsSlideAxis']\n springConfig: SpringConfig\n prepareThumbsData?: PrepareThumbsData\n itemsPerSlide?: UseSpringCarouselProps['itemsPerSlide']\n CustomThumbsWrapperComponent?: UseSpringCarouselProps['CustomThumbsWrapperComponent']\n getFluidWrapperScrollValue?(): number\n getSlideValue?(): number\n}\n\ntype WrapperProps = {\n children: React.ReactNode\n} & HTMLAttributes<HTMLDivElement>\n\nconst InternalWrapper = forwardRef<HTMLDivElement, WrapperProps>(\n ({ children, ...rest }, ref) => {\n return (\n <animated.div {...rest} ref={ref}>\n {children}\n </animated.div>\n )\n },\n)\n\nexport function useThumbsModule({\n items,\n withThumbs,\n thumbsSlideAxis = 'x',\n springConfig,\n prepareThumbsData,\n itemsPerSlide,\n getFluidWrapperScrollValue = () => 0,\n getSlideValue = () => 0,\n CustomThumbsWrapperComponent,\n}: Props) {\n const internalThumbsWrapperRef = useRef<HTMLDivElement | null>(null)\n const [thumbListStyles, setThumbListStyles] = useSpring(() => ({\n x: 0,\n y: 0,\n config: springConfig,\n onChange: ({ value }) => {\n if (internalThumbsWrapperRef.current) {\n internalThumbsWrapperRef.current[\n thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ] = Math.abs(value[thumbsSlideAxis])\n }\n },\n }))\n\n useMount(() => {\n if (withThumbs && !internalThumbsWrapperRef.current) {\n throw new Error(\n \"The thumbs wrapper is not defined. If you've passed a Functional component, be sure to wrap your component in forwardRef.\",\n )\n }\n })\n\n function getCurrentThumbScrollValue() {\n return internalThumbsWrapperRef.current![\n thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ]\n }\n function getThumbsTotalScrollableValue() {\n return Math.round(\n Number(\n internalThumbsWrapperRef.current?.[\n thumbsSlideAxis === 'x' ? 'scrollWidth' : 'scrollHeight'\n ],\n ) -\n internalThumbsWrapperRef.current!.getBoundingClientRect()[\n thumbsSlideAxis === 'x' ? 'width' : 'height'\n ],\n )\n }\n\n function getThumbSlideValue() {\n const thumbSlideTotal = Math.round(getFluidWrapperScrollValue() / getSlideValue())\n const totalScrollableValue = getThumbsTotalScrollableValue()\n return totalScrollableValue / thumbSlideTotal\n }\n\n function handleThumbsScroll(activeItem: number, actionType?: SlideActionType) {\n if (itemsPerSlide === 'fluid') {\n const totalScrollableValue = getThumbsTotalScrollableValue()\n\n if (actionType === 'next') {\n const nextValue = getCurrentThumbScrollValue() + getThumbSlideValue()\n setThumbListStyles.start({\n from: {\n [thumbsSlideAxis]: getCurrentThumbScrollValue(),\n },\n to: {\n [thumbsSlideAxis]:\n nextValue > totalScrollableValue ? totalScrollableValue : nextValue,\n },\n })\n }\n if (actionType === 'prev') {\n const nextValue = getCurrentThumbScrollValue() - getThumbSlideValue()\n setThumbListStyles.start({\n from: {\n [thumbsSlideAxis]: getCurrentThumbScrollValue(),\n },\n to: {\n [thumbsSlideAxis]: nextValue < 0 ? 0 : nextValue,\n },\n })\n }\n } else {\n function getOffsetDirection() {\n return thumbsSlideAxis === 'x' ? 'offsetLeft' : 'offsetTop'\n }\n function getOffsetDimension() {\n return thumbsSlideAxis === 'x' ? 'offsetWidth' : 'offsetHeight'\n }\n function getScrollDirecton() {\n return thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n }\n function getThumbNode() {\n return internalThumbsWrapperRef.current!.querySelector(\n `#thumb-${items[activeItem].id}`,\n ) as HTMLElement\n }\n function getThumbOffsetPosition({\n thumbNode,\n offsetDirection,\n offsetDimension,\n }: {\n thumbNode: HTMLElement\n offsetDirection: OffsetDirection\n offsetDimension: OffsetDimension\n }) {\n return thumbNode[offsetDirection] + thumbNode[offsetDimension] / 2\n }\n function getThumbScrollDimension({\n thumbWrapper,\n offsetDimension,\n }: {\n thumbWrapper: HTMLDivElement\n offsetDimension: OffsetDimension\n }) {\n return thumbWrapper[offsetDimension] / 2\n }\n function getScrollFromValue({\n thumbWrapper,\n scrollDirection,\n }: {\n thumbWrapper: HTMLDivElement\n scrollDirection: ScrollDirection\n }) {\n return thumbWrapper[scrollDirection]\n }\n function getScrollToValue({\n thumbWrapper,\n thumbOffsetPosition,\n thumbScrollDimension,\n offsetDimension,\n }: {\n thumbWrapper: HTMLDivElement\n thumbOffsetPosition: number\n thumbScrollDimension: number\n offsetDimension: OffsetDimension\n }) {\n const scrollDimensionProperty =\n thumbsSlideAxis === 'x' ? 'scrollWidth' : 'scrollHeight'\n\n if (\n activeItem === items.length - 1 ||\n thumbOffsetPosition - thumbScrollDimension >\n thumbWrapper[scrollDimensionProperty] - thumbWrapper[offsetDimension]\n ) {\n return thumbWrapper[scrollDimensionProperty] - thumbWrapper[offsetDimension]\n }\n if (activeItem === 0) {\n return 0\n }\n\n return thumbOffsetPosition - thumbScrollDimension\n }\n\n const thumbNode = getThumbNode()\n\n if (thumbNode) {\n const thumbWrapper = internalThumbsWrapperRef.current!\n const offsetDirection = getOffsetDirection()\n const offsetDimension = getOffsetDimension()\n const scrollDirection = getScrollDirecton()\n const thumbOffsetPosition = getThumbOffsetPosition({\n thumbNode,\n offsetDimension,\n offsetDirection,\n })\n const thumbScrollDimension = getThumbScrollDimension({\n thumbWrapper,\n offsetDimension,\n })\n\n setThumbListStyles.start({\n from: {\n [thumbsSlideAxis]: getScrollFromValue({\n thumbWrapper,\n scrollDirection,\n }),\n },\n to: {\n [thumbsSlideAxis]: getScrollToValue({\n thumbWrapper,\n thumbOffsetPosition,\n thumbScrollDimension,\n offsetDimension,\n }),\n },\n onChange: val => {\n if (thumbsSlideAxis === 'x') {\n // @ts-ignore\n internalThumbsWrapperRef!.current!.scrollLeft = val.x\n } else {\n // @ts-ignore\n internalThumbsWrapperRef!.current!.scrollTop = val.y\n }\n },\n })\n }\n }\n }\n function handlePrepareThumbsDate() {\n function getPreparedItems(\n _items: UseSpringCarouselItems['items'],\n ): ReactSpringThumbItem[] {\n return _items.map(i => ({\n id: i.id,\n renderThumb: i.renderThumb,\n }))\n }\n\n if (prepareThumbsData) {\n return prepareThumbsData(getPreparedItems(items))\n }\n return getPreparedItems(items)\n }\n\n const Wrapper = CustomThumbsWrapperComponent\n ? animated(CustomThumbsWrapperComponent)\n : InternalWrapper\n\n const thumbsFragment = withThumbs ? (\n <Wrapper\n ref={internalThumbsWrapperRef}\n className=\"use-spring-carousel-thumbs-wrapper\"\n onWheel={() => {\n thumbListStyles[thumbsSlideAxis].stop()\n }}\n style={{\n display: 'flex',\n flex: 1,\n position: 'relative',\n flexDirection: thumbsSlideAxis === 'x' ? 'row' : 'column',\n ...(thumbsSlideAxis === 'x'\n ? { overflowX: 'auto' }\n : {\n overflowY: 'auto',\n maxHeight: '100%',\n }),\n }}\n >\n {handlePrepareThumbsDate().map(({ id, renderThumb }) => {\n const thumbId = `thumb-${id}`\n return (\n <div key={thumbId} id={thumbId}>\n {renderThumb}\n </div>\n )\n })}\n </Wrapper>\n ) : null\n\n return {\n thumbsFragment,\n handleThumbsScroll,\n }\n}\n","import { useRef, createContext, useCallback, useContext, useEffect } from 'react'\nimport { useSpring, config, animated } from 'react-spring'\nimport { useDrag } from '@use-gesture/react'\nimport { useCustomEventsModule, useFullscreenModule, useThumbsModule } from './modules'\nimport {\n UseSpringCarouselProps,\n SlideToItemFnProps,\n SlideActionType,\n UseSpringDafaultTypeReturnProps,\n UseSpringFluidTypeReturnProps,\n} from './types'\nimport { useMount } from './utils'\nimport { getIsBrowser } from './utils'\n\ntype ReturnHook<T> = T extends 'fluid'\n ? UseSpringFluidTypeReturnProps\n : UseSpringDafaultTypeReturnProps\n\nconst UseSpringCarouselContext = createContext<\n (UseSpringFluidTypeReturnProps | UseSpringDafaultTypeReturnProps) | undefined\n>(undefined)\n\nexport default function useSpringCarousel<T>({\n itemsPerSlide = 1,\n items,\n withLoop = false,\n draggingSlideTreshold = 140,\n springConfig = config.default,\n shouldResizeOnWindowResize = true,\n withThumbs = false,\n enableThumbsWrapperScroll = true,\n carouselSlideAxis = 'x',\n thumbsSlideAxis = 'x',\n prepareThumbsData,\n initialActiveItem = 0,\n initialStartingPosition = 'start',\n disableGestures = false,\n gutter = 0,\n startEndGutter = 0,\n touchAction,\n slideAmount,\n freeScroll = false,\n CustomThumbsWrapperComponent,\n}: UseSpringCarouselProps): ReturnHook<T> & {\n carouselFragment: JSX.Element\n thumbsFragment: JSX.Element\n} {\n function getItems() {\n if (withLoop) {\n return [...items, ...items, ...items]\n }\n return items\n }\n const slideActionType = useRef<SlideActionType>('initial')\n const internalItems = getItems()\n const activeItem = useRef(initialActiveItem)\n const mainCarouselWrapperRef = useRef<HTMLDivElement | null>(null)\n const carouselTrackWrapperRef = useRef<HTMLDivElement | null>(null)\n const isDragging = useRef(false)\n const isAnimating = useRef(false)\n const windowIsHidden = useRef(false)\n const currentWindowWidth = useRef(0)\n const fluidTotalWrapperScrollValue = useRef(0)\n const slideFluidEndReached = useRef(false)\n const initialWindowWidth = useRef(0)\n\n const [carouselStyles, setCarouselStyles] = useSpring(() => ({\n y: 0,\n x: 0,\n config: springConfig,\n onChange: ({ value }) => {\n if (mainCarouselWrapperRef.current && freeScroll) {\n mainCarouselWrapperRef.current[\n carouselSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ] = Math.abs(value[carouselSlideAxis])\n }\n },\n }))\n function getCarouselItem() {\n return carouselTrackWrapperRef.current?.querySelector('.use-spring-carousel-item')\n }\n const getMainCarouselWrapperWidth = useCallback(() => {\n if (!mainCarouselWrapperRef.current) {\n throw new Error('mainCarouselWrapperRef is not available')\n }\n return mainCarouselWrapperRef.current.getBoundingClientRect()[\n carouselSlideAxis === 'x' ? 'width' : 'height'\n ]\n }, [carouselSlideAxis])\n const getCarouselItemWidth = useCallback(() => {\n const carouselItem = getCarouselItem()\n if (!carouselItem) {\n throw Error('No carousel items available!')\n }\n return (\n carouselItem.getBoundingClientRect()[\n carouselSlideAxis === 'x' ? 'width' : 'height'\n ] + gutter\n )\n }, [carouselSlideAxis, gutter])\n const getCurrentSlidedValue = useCallback(() => {\n return carouselStyles[carouselSlideAxis].get()\n }, [carouselSlideAxis, carouselStyles])\n const getIfItemsNotFillTheCarousel = useCallback(() => {\n return getCarouselItemWidth() * items.length < getMainCarouselWrapperWidth()\n }, [getCarouselItemWidth, getMainCarouselWrapperWidth, items.length])\n const getFluidWrapperScrollValue = useCallback(() => {\n return Math.round(\n Number(\n carouselTrackWrapperRef.current?.[\n carouselSlideAxis === 'x' ? 'scrollWidth' : 'scrollHeight'\n ],\n ) -\n carouselTrackWrapperRef.current!.getBoundingClientRect()[\n carouselSlideAxis === 'x' ? 'width' : 'height'\n ],\n )\n }, [carouselSlideAxis])\n const getIsFirstItem = useCallback(() => {\n return getCurrentActiveItem() === 0\n }, [])\n const getSlideValue = useCallback(() => {\n if (!carouselTrackWrapperRef.current) {\n return 0\n }\n const itemVal = getCarouselItemWidth()\n\n if (itemsPerSlide === 'fluid' && typeof slideAmount === 'number') {\n if (slideAmount < itemVal) {\n throw new Error('slideAmount must be greater than the width of a single item.')\n }\n return slideAmount\n }\n return itemVal\n }, [getCarouselItemWidth, itemsPerSlide, slideAmount])\n const adjustCarouselWrapperPosition = useCallback(\n (ref: HTMLDivElement) => {\n const positionProperty = carouselSlideAxis === 'x' ? 'left' : 'top'\n function getDefaultPositionValue() {\n return getCarouselItemWidth() * items.length\n }\n function setPosition(v: number) {\n ref.style.top = '0px'\n ref.style.left = '0px'\n if (withLoop) {\n ref.style[positionProperty] = `-${v - startEndGutter}px`\n }\n }\n function setStartPosition() {\n setPosition(getDefaultPositionValue())\n }\n\n if (itemsPerSlide !== 'fluid' && typeof itemsPerSlide === 'number') {\n function setCenterPosition() {\n setPosition(\n getDefaultPositionValue() -\n getSlideValue() * Math.round(((itemsPerSlide as number) - 1) / 2),\n )\n }\n function setEndPosition() {\n setPosition(\n getDefaultPositionValue() -\n getSlideValue() * Math.round((itemsPerSlide as number) - 1),\n )\n }\n\n if (itemsPerSlide > 1) {\n switch (initialStartingPosition) {\n default:\n case 'start': {\n setStartPosition()\n break\n }\n case 'center': {\n setCenterPosition()\n break\n }\n case 'end': {\n setEndPosition()\n break\n }\n }\n } else {\n setStartPosition()\n }\n } else {\n setStartPosition()\n }\n },\n [\n carouselSlideAxis,\n itemsPerSlide,\n getCarouselItemWidth,\n items.length,\n startEndGutter,\n getSlideValue,\n initialStartingPosition,\n withLoop,\n ],\n )\n\n const handleResize = useCallback(() => {\n if (window.innerWidth === currentWindowWidth.current || freeScroll) {\n return\n }\n currentWindowWidth.current = window.innerWidth\n\n if (itemsPerSlide === 'fluid') {\n if (getIfItemsNotFillTheCarousel()) {\n setCarouselStyles.start({\n immediate: true,\n [carouselSlideAxis]: 0,\n })\n return\n }\n fluidTotalWrapperScrollValue.current = getFluidWrapperScrollValue()\n const diff = currentWindowWidth.current - initialWindowWidth.current\n\n if (slideFluidEndReached.current) {\n const nextValue = -fluidTotalWrapperScrollValue.current\n setCarouselStyles.start({\n immediate: true,\n [carouselSlideAxis]: nextValue,\n })\n } else {\n const nextValue = getCurrentSlidedValue() + diff\n setCarouselStyles.start({\n immediate: true,\n [carouselSlideAxis]: nextValue,\n })\n }\n\n initialWindowWidth.current = window.innerWidth\n } else {\n setCarouselStyles.start({\n immediate: true,\n x: 0,\n y: 0,\n })\n setCarouselStyles.start({\n immediate: true,\n [carouselSlideAxis]: -(getSlideValue() * getCurrentActiveItem()),\n })\n }\n adjustCarouselWrapperPosition(carouselTrackWrapperRef.current!)\n }, [\n itemsPerSlide,\n getIfItemsNotFillTheCarousel,\n getFluidWrapperScrollValue,\n freeScroll,\n setCarouselStyles,\n carouselSlideAxis,\n getCurrentSlidedValue,\n getSlideValue,\n adjustCarouselWrapperPosition,\n ])\n // Custom modules\n const { useListenToCustomEvent, emitObservable } = useCustomEventsModule()\n const { enterFullscreen, exitFullscreen, getIsFullscreen } = useFullscreenModule({\n mainCarouselWrapperRef,\n emitObservable,\n handleResize,\n })\n const { thumbsFragment: _thumbsFragment, handleThumbsScroll } = useThumbsModule({\n withThumbs,\n items,\n thumbsSlideAxis,\n springConfig,\n prepareThumbsData,\n itemsPerSlide,\n getFluidWrapperScrollValue,\n getSlideValue,\n CustomThumbsWrapperComponent,\n })\n\n function getWrapperScrollDirection() {\n if (!mainCarouselWrapperRef.current) {\n throw new Error('Missing mainCarouselWrapperRef.current')\n }\n return mainCarouselWrapperRef.current[\n carouselSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ]\n }\n\n const bindDrag = useDrag(\n props => {\n const isDragging = props.dragging\n const movement = props.movement[carouselSlideAxis === 'x' ? 0 : 1]\n function resetAnimation() {\n if (itemsPerSlide === 'fluid') {\n if (getIfItemsNotFillTheCarousel()) {\n setCarouselStyles.start({\n [carouselSlideAxis]: 0,\n })\n } else if (getIsFirstItem()) {\n slideToPrevItem()\n } else if (slideFluidEndReached.current) {\n setCarouselStyles.start({\n [carouselSlideAxis]: -fluidTotalWrapperScrollValue.current,\n })\n } else {\n setCarouselStyles.start({\n [carouselSlideAxis]: getCurrentSlidedValue(),\n })\n }\n } else {\n setCarouselStyles.start({\n [carouselSlideAxis]: -(getCurrentActiveItem() * getSlideValue()),\n })\n }\n }\n\n if (isDragging) {\n setIsDragging(true)\n emitObservable({\n eventName: 'onDrag',\n ...props,\n })\n\n if (freeScroll) {\n const direction = props.direction[carouselSlideAxis === 'x' ? 0 : 1]\n if (getWrapperScrollDirection() === 0 && direction > 0) {\n props.cancel()\n } else {\n setCarouselStyles.start({\n from: {\n [carouselSlideAxis]: getWrapperScrollDirection(),\n },\n to: {\n [carouselSlideAxis]:\n direction > 0\n ? getWrapperScrollDirection() - Math.abs(movement)\n : getWrapperScrollDirection() + Math.abs(movement),\n },\n })\n }\n } else {\n setCarouselStyles.start({\n [carouselSlideAxis]: getCurrentSlidedValue() + movement,\n })\n }\n\n const prevItemTreshold = movement > draggingSlideTreshold\n const nextItemTreshold = movement < -draggingSlideTreshold\n\n if (\n mainCarouselWrapperRef.current!.getBoundingClientRect().width >=\n items.length * getSlideValue()\n ) {\n slideFluidEndReached.current = true\n }\n\n if ((prevItemTreshold || nextItemTreshold) && getIfItemsNotFillTheCarousel()) {\n props.cancel()\n resetAnimation()\n return\n }\n\n if (slideFluidEndReached.current && movement < 0) {\n if (nextItemTreshold) {\n props.cancel()\n setCarouselStyles.start({\n [carouselSlideAxis]: -fluidTotalWrapperScrollValue.current,\n })\n }\n } else if (nextItemTreshold) {\n props.cancel()\n if (!withLoop && getIsLastItem()) {\n resetAnimation()\n } else {\n slideToNextItem()\n }\n } else if (prevItemTreshold) {\n props.cancel()\n if (!withLoop && getIsFirstItem()) {\n resetAnimation()\n } else {\n slideToPrevItem()\n }\n }\n }\n if (props.last && !props.pressed && !freeScroll) {\n resetAnimation()\n }\n },\n {\n enabled: !disableGestures,\n },\n )\n\n // Perform some check on first mount\n useMount(() => {\n if (itemsPerSlide !== 'fluid' && !Number.isInteger(itemsPerSlide)) {\n throw new Error(`itemsPerSlide should be an integer.`)\n }\n if (itemsPerSlide > items.length) {\n throw new Error(\n `The itemsPerSlide prop can't be greater than the total length of the items you provide.`,\n )\n }\n if (itemsPerSlide < 1) {\n throw new Error(`The itemsPerSlide prop can't be less than 1.`)\n }\n if (!shouldResizeOnWindowResize) {\n console.warn(\n 'You set shouldResizeOnWindowResize={false}; be aware that the carousel could behave in a strange way if you also use the fullscreen functionality or if you change the mobile orientation.',\n )\n }\n if (initialActiveItem < 0) {\n console.warn('The initialActiveItem cannot be less than 0.')\n }\n if (initialActiveItem > items.length) {\n console.warn(\n 'The initialActiveItem cannot be greater than the total length of the items you provide.',\n )\n }\n })\n useMount(() => {\n fluidTotalWrapperScrollValue.current = getFluidWrapperScrollValue()\n function handleVisibilityChange() {\n if (document.hidden) {\n windowIsHidden.current = true\n } else {\n windowIsHidden.current = false\n }\n }\n if (getIsBrowser()) {\n document.addEventListener('visibilitychange', handleVisibilityChange)\n return () => {\n document.removeEventListener('visibilitychange', handleVisibilityChange)\n }\n }\n })\n useMount(() => {\n initialWindowWidth.current = window.innerWidth\n if (initialActiveItem > 0 && initialActiveItem <= items.length) {\n slideToItem({\n to: initialActiveItem,\n immediate: true,\n })\n setActiveItem(initialActiveItem)\n }\n })\n useEffect(() => {\n function resize() {\n setTimeout(handleResize)\n }\n if (shouldResizeOnWindowResize) {\n window.addEventListener('resize', resize)\n return () => {\n window.removeEventListener('resize', resize)\n }\n }\n }, [handleResize, shouldResizeOnWindowResize])\n useEffect(() => {\n if (carouselTrackWrapperRef.current) {\n if (carouselSlideAxis === 'x') {\n carouselTrackWrapperRef.current.style.top = '0px'\n }\n if (carouselSlideAxis === 'y') {\n carouselTrackWrapperRef.current.style.left = '0px'\n }\n }\n }, [carouselSlideAxis])\n\n function setSlideActionType(type: SlideActionType) {\n slideActionType.current = type\n }\n function getSlideActionType() {\n return slideActionType.current\n }\n function setActiveItem(newItem: number) {\n activeItem.current = newItem\n }\n function getCurrentActiveItem() {\n return activeItem.current\n }\n function getIsAnimating() {\n return isAnimating.current\n }\n function setIsAnimating(val: boolean) {\n isAnimating.current = val\n }\n function setIsDragging(val: boolean) {\n isDragging.current = val\n }\n function getIsDragging() {\n return isDragging.current\n }\n function getPrevItem() {\n const currentActiveItem = getCurrentActiveItem()\n if (currentActiveItem === 0) {\n return items.length - 1\n }\n return currentActiveItem - 1\n }\n function getNextItem() {\n const currentActiveItem = getCurrentActiveItem()\n if (currentActiveItem === items.length - 1) {\n return 0\n }\n return currentActiveItem + 1\n }\n function getIsNextItem(id: string) {\n const itemIndex = findItemIndex(id)\n const activeItem = getCurrentActiveItem()\n if (withLoop && activeItem === items.length - 1) {\n return itemIndex === 0\n }\n return itemIndex === activeItem + 1\n }\n function getIsPrevItem(id: string) {\n const itemIndex = findItemIndex(id)\n const activeItem = getCurrentActiveItem()\n if (withLoop && activeItem === 0) {\n return itemIndex === items.length - 1\n }\n return itemIndex === activeItem - 1\n }\n function findItemIndex(id: string) {\n return items.findIndex(item => item.id === id)\n }\n function slideToItem({\n from,\n to = -1,\n customTo,\n immediate = false,\n onRest = () => {},\n }: SlideToItemFnProps) {\n if (!immediate) {\n setActiveItem(to)\n setIsAnimating(true)\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: to,\n id: items[to].id,\n },\n })\n }\n\n function getFromValue() {\n if (typeof from === 'number') {\n return {\n from: {\n [carouselSlideAxis]: from,\n },\n }\n }\n return {}\n }\n function getToValue() {\n if (typeof customTo === 'number') {\n return {\n [carouselSlideAxis]: customTo,\n }\n }\n return {\n [carouselSlideAxis]: -(getSlideValue() * to),\n }\n }\n\n setCarouselStyles.start({\n ...getFromValue(),\n to: getToValue(),\n immediate,\n onRest: val => {\n if (val.finished) {\n setIsDragging(false)\n setIsAnimating(false)\n onRest()\n if (!immediate) {\n emitObservable({\n eventName: 'onSlideChange',\n slideActionType: getSlideActionType(),\n currentItem: {\n index: getCurrentActiveItem(),\n id: items[getCurrentActiveItem()].id,\n },\n })\n }\n }\n },\n })\n if (enableThumbsWrapperScroll && withThumbs && !immediate) {\n handleThumbsScroll(to, getSlideActionType())\n }\n }\n function getIsLastItem() {\n return getCurrentActiveItem() === items.length - 1\n }\n function slideToPrevItem() {\n setSlideActionType('prev')\n\n if (itemsPerSlide === 'fluid') {\n if (getIfItemsNotFillTheCarousel()) {\n return\n }\n const nextPrevValue = getCurrentSlidedValue() + getSlideValue() + 200\n\n if (freeScroll) {\n const nextValue = mainCarouselWrapperRef.current!.scrollLeft - getSlideValue()\n slideToItem({\n customTo: nextValue < 0 ? 0 : nextValue,\n from: mainCarouselWrapperRef.current!.scrollLeft,\n })\n } else if (nextPrevValue >= 0) {\n if (withLoop) {\n slideToItem({\n from: getCurrentSlidedValue() - getCarouselItemWidth() * items.length,\n customTo:\n getCurrentSlidedValue() -\n getCarouselItemWidth() * items.length +\n getSlideValue(),\n })\n } else {\n slideToItem({\n customTo: 0,\n })\n }\n } else {\n slideToItem({\n customTo: getCurrentSlidedValue() + getSlideValue(),\n })\n }\n if (slideFluidEndReached.current) {\n slideFluidEndReached.current = false\n }\n } else {\n if ((!withLoop && getCurrentActiveItem() === 0) || windowIsHidden.current) {\n return\n }\n\n if (getIsFirstItem()) {\n slideToItem({\n from: getCurrentSlidedValue() - getSlideValue() * items.length,\n to: items.length - 1,\n })\n } else {\n slideToItem({\n to: getPrevItem(),\n })\n }\n }\n }\n function slideToNextItem() {\n setSlideActionType('next')\n\n if (itemsPerSlide === 'fluid') {\n if (getIfItemsNotFillTheCarousel()) {\n return\n }\n const willGoAfterLastFluidItem =\n Math.abs(getCurrentSlidedValue() - getSlideValue()) + 100 >=\n fluidTotalWrapperScrollValue.current\n\n if (freeScroll) {\n slideToItem({\n customTo: mainCarouselWrapperRef.current!.scrollLeft + getSlideValue(),\n from: mainCarouselWrapperRef.current!.scrollLeft,\n })\n } else if (\n withLoop &&\n Math.abs(getCurrentSlidedValue() - getSlideValue()) >=\n items.length * getCarouselItemWidth()\n ) {\n const currentWidth = getCarouselItemWidth() * items.length\n slideToItem({\n from: getCurrentSlidedValue() + currentWidth,\n customTo: getCurrentSlidedValue() + currentWidth - getSlideValue(),\n })\n } else if (slideFluidEndReached.current) {\n return\n } else if (willGoAfterLastFluidItem) {\n slideFluidEndReached.current = true\n slideToItem({\n customTo: -fluidTotalWrapperScrollValue.current,\n })\n } else {\n slideToItem({\n customTo: getCurrentSlidedValue() - getSlideValue(),\n })\n }\n } else {\n if (\n (!withLoop && getCurrentActiveItem() === internalItems.length - 1) ||\n windowIsHidden.current\n ) {\n return\n }\n\n if (getIsLastItem()) {\n slideToItem({\n from: getCurrentSlidedValue() + getSlideValue() * items.length,\n to: 0,\n })\n } else {\n slideToItem({\n to: getNextItem(),\n })\n }\n }\n }\n function _slideToItem(item: string | number) {\n let itemIndex = 0\n\n if (typeof item === 'string') {\n itemIndex = items.findIndex(_item => _item.id === item)\n } else {\n itemIndex = item\n }\n\n if (itemIndex >= items.length) {\n throw Error(\n `The item you want to slide to doesn't exist. This could be due to the fact that \n you provide a wrong id or a higher numeric index.`,\n )\n }\n if (itemIndex === getCurrentActiveItem()) {\n return\n }\n\n const currentItem = findItemIndex(items[getCurrentActiveItem()].id)\n const newActiveItem = findItemIndex(items[itemIndex].id)\n\n if (newActiveItem > currentItem) {\n setSlideActionType('next')\n } else {\n setSlideActionType('prev')\n }\n\n slideToItem({\n to: itemIndex,\n })\n }\n\n const contextProps = {\n useListenToCustomEvent,\n getIsFullscreen,\n enterFullscreen,\n exitFullscreen,\n getIsAnimating,\n getIsDragging,\n getIsNextItem,\n getIsPrevItem,\n slideToPrevItem,\n slideToNextItem,\n ...(typeof itemsPerSlide === 'number'\n ? {\n slideToItem: _slideToItem,\n getIsActiveItem: (id: string) => {\n return findItemIndex(id) === getCurrentActiveItem()\n },\n getCurrentActiveItem: () => ({\n id: items[getCurrentActiveItem()].id,\n index: getCurrentActiveItem(),\n }),\n }\n : {}),\n }\n function getItemStyles() {\n if (typeof itemsPerSlide === 'number') {\n return {\n ...(carouselSlideAxis === 'x'\n ? { marginRight: `${gutter}px` }\n : { marginBottom: `${gutter}px` }),\n flex: `1 0 calc(100% / ${itemsPerSlide} - ${\n (gutter * (itemsPerSlide - 1)) / itemsPerSlide\n }px)`,\n }\n }\n return {\n ...(carouselSlideAxis === 'x'\n ? { marginRight: `${gutter}px` }\n : { marginBottom: `${gutter}px` }),\n }\n }\n function getAnimatedWrapperStyles() {\n const percentValue = `calc(100% - ${startEndGutter * 2}px)`\n return {\n width: carouselSlideAxis === 'x' ? percentValue : '100%',\n height: carouselSlideAxis === 'y' ? percentValue : '100%',\n }\n }\n function handleCarouselFragmentRef(ref: HTMLDivElement | null) {\n if (ref) {\n carouselTrackWrapperRef.current = ref\n adjustCarouselWrapperPosition(ref)\n }\n }\n function getOverflowStyles() {\n if (freeScroll) {\n if (carouselSlideAxis === 'x') {\n return {\n overflowX: 'auto',\n }\n }\n return {\n overflowY: 'auto',\n }\n }\n return {}\n }\n function getWheelEvent() {\n if (freeScroll) {\n return {\n onWheel() {\n carouselStyles[carouselSlideAxis].stop()\n },\n }\n }\n return {}\n }\n function getTouchAction() {\n if (!touchAction) {\n if (carouselSlideAxis === 'x') {\n return 'pan-y'\n }\n return 'pan-x'\n }\n return touchAction\n }\n const carouselFragment = (\n <UseSpringCarouselContext.Provider value={contextProps}>\n <div\n ref={mainCarouselWrapperRef}\n className=\"use-spring-carousel-main-wrapper\"\n data-testid=\"use-spring-carousel-wrapper\"\n {...getWheelEvent()}\n // @ts-ignore\n style={{\n display: 'flex',\n position: 'relative',\n width: '100%',\n height: '100%',\n ...getOverflowStyles(),\n }}\n >\n <animated.div\n {...bindDrag()}\n className=\"use-spring-carousel-track-wrapper\"\n data-testid=\"use-spring-carousel-animated-wrapper\"\n ref={handleCarouselFragmentRef}\n style={{\n display: 'flex',\n position: 'relative',\n touchAction: getTouchAction(),\n flexDirection: carouselSlideAxis === 'x' ? 'row' : 'column',\n ...getAnimatedWrapperStyles(),\n ...(freeScroll ? {} : carouselStyles),\n }}\n >\n {internalItems.map(({ id, renderItem }, index) => {\n return (\n <div\n key={`${id}-${index}`}\n className=\"use-spring-carousel-item\"\n data-testid=\"use-spring-carousel-item-wrapper\"\n style={{\n display: 'flex',\n position: 'relative',\n ...getItemStyles(),\n }}\n >\n {renderItem}\n </div>\n )\n })}\n </animated.div>\n </div>\n </UseSpringCarouselContext.Provider>\n )\n const thumbsFragment = (\n <UseSpringCarouselContext.Provider value={contextProps}>\n {_thumbsFragment}\n </UseSpringCarouselContext.Provider>\n )\n\n return {\n ...(contextProps as ReturnHook<T>),\n carouselFragment,\n thumbsFragment,\n }\n}\n\nexport function useSpringCarouselContext<T>() {\n const context = useContext(UseSpringCarouselContext)\n if (!context) {\n throw new Error(\n 'useSpringCarouselContext must be used only inside a component that is rendered inside the Carousel.',\n )\n }\n return context as ReturnHook<T>\n}\n","import { createContext, useRef, useState, useContext } from 'react'\nimport { useTransition, animated, config } from 'react-spring'\nimport { useDrag } from '@use-gesture/react'\nimport { useCustomEventsModule, useThumbsModule, useFullscreenModule } from './modules'\nimport {\n UseTransitionCarouselContextProps,\n UseTransitionCarouselProps,\n SlideActionType,\n} from './types'\n\nconst UseTransitionCarouselContext = createContext<\n UseTransitionCarouselContextProps | undefined\n>(undefined)\n\nexport function useTransitionCarouselContext() {\n const context = useContext(UseTransitionCarouselContext)\n\n if (!context) {\n throw new Error(`useTransitionCarouselContext isn't being used within the useTransitionCarousel context; \n use the context only inside a component that is rendered within the Carousel.`)\n }\n\n return context\n}\n\nexport default function useTransitionCarousel({\n items,\n withLoop = false,\n withThumbs = false,\n springConfig = config.default,\n thumbsSlideAxis = 'x',\n enableThumbsWrapperScroll = true,\n draggingSlideTreshold = 50,\n prepareThumbsData,\n toPrevItemSpringProps,\n toNextItemSpringProps,\n disableGestures = false,\n CustomThumbsWrapperComponent,\n springAnimationProps = {\n initial: {\n opacity: 1,\n position: 'relative',\n },\n from: {\n opacity: 0,\n position: 'absolute',\n },\n enter: {\n opacity: 1,\n position: 'relative',\n },\n leave: {\n opacity: 0,\n position: 'absolute',\n },\n },\n}: UseTransitionCarouselProps) {\n const slideActionType = useRef<SlideActionType>('next')\n const mainCarouselWrapperRef = useRef<HTMLDivElement | null>(null)\n const isAnimating = useRef(false)\n const [activeItem, setActiveItem] = useState(0)\n\n const { emitObservable, useListenToCustomEvent } = useCustomEventsModule()\n const { enterFullscreen, exitFullscreen, getIsFullscreen } = useFullscreenModule({\n emitObservable,\n mainCarouselWrapperRef,\n })\n const { thumbsFragment: _thumbsFragment, handleThumbsScroll } = useThumbsModule({\n items,\n withThumbs,\n thumbsSlideAxis,\n springConfig,\n prepareThumbsData,\n CustomThumbsWrapperComponent,\n })\n\n const bindSwipe = useDrag(\n ({ last, movement: [mx] }) => {\n if (getIsAnimating()) {\n return\n }\n\n if (last) {\n const prevItemTreshold = mx > draggingSlideTreshold\n const nextItemTreshold = mx < -draggingSlideTreshold\n const isFirstItem = activeItem === 0\n const isLastItem = activeItem === items.length - 1\n\n if (nextItemTreshold) {\n if (!withLoop && isLastItem) {\n return\n }\n\n slideToNextItem()\n emitObservable({\n eventName: 'onLeftSwipe',\n })\n } else if (prevItemTreshold) {\n if (!withLoop && isFirstItem) {\n return\n }\n\n slideToPrevItem()\n emitObservable({\n eventName: 'onRightSwipe',\n })\n }\n }\n },\n {\n enabled: !disableGestures,\n },\n )\n\n function getTransitionConfig() {\n const slideActionType = getSlideActionType()\n\n if (slideActionType === 'prev' && toPrevItemSpringProps) {\n return {\n initial: {\n ...springAnimationProps.initial,\n },\n from: {\n ...toPrevItemSpringProps.from,\n },\n enter: {\n ...toPrevItemSpringProps.enter,\n },\n leave: {\n ...toPrevItemSpringProps.leave,\n },\n }\n }\n\n if (slideActionType === 'next' && toNextItemSpringProps) {\n return {\n initial: {\n ...springAnimationProps.initial,\n },\n from: {\n ...toNextItemSpringProps.from,\n },\n enter: {\n ...toNextItemSpringProps.enter,\n },\n leave: {\n ...toNextItemSpringProps.leave,\n },\n }\n }\n\n return {\n initial: {\n ...springAnimationProps.initial,\n },\n from: {\n ...springAnimationProps.from,\n },\n enter: {\n ...springAnimationProps.enter,\n },\n leave: {\n ...springAnimationProps.leave,\n },\n }\n }\n\n const transitions = useTransition(activeItem, {\n config: springConfig,\n ...getTransitionConfig(),\n onStart: () => setIsAnimating(true),\n keys: null,\n onRest: val => {\n if (val.finished) {\n setIsAnimating(false)\n emitObservable({\n eventName: 'onSlideChange',\n slideActionType: getSlideActionType(),\n currentItem: {\n index: activeItem,\n id: items[activeItem].id,\n },\n })\n }\n },\n })\n const itemsFragment = transitions((styles, item) => (\n <animated.div\n style={{\n ...styles,\n flex: '1 0 100%',\n width: '100%',\n height: '100%',\n }}\n >\n {items[item].renderItem}\n </animated.div>\n ))\n\n function getIsAnimating() {\n return isAnimating.current\n }\n function setIsAnimating(val: boolean) {\n isAnimating.current = val\n }\n function setSlideActionType(type: SlideActionType) {\n slideActionType.current = type\n }\n function getSlideActionType() {\n return slideActionType.current\n }\n function slideToItem(item: string | number) {\n let itemIndex = 0\n\n if (typeof item === 'string') {\n itemIndex = items.findIndex(_item => _item.id === item)\n } else {\n itemIndex = item\n }\n\n if (itemIndex >= items.length) {\n throw Error(\n `The item you want to slide to doesn't exist. This could be due to the fact that \n you provide a wrong id or a higher numeric index.`,\n )\n }\n\n if (itemIndex === activeItem) {\n return\n }\n\n const currentItem = findItemIndex(items[activeItem].id)\n const newActiveItem = findItemIndex(items[itemIndex].id)\n\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: newActiveItem,\n id: items[itemIndex].id,\n },\n })\n\n if (newActiveItem > currentItem) {\n setSlideActionType('next')\n } else {\n setSlideActionType('prev')\n }\n\n setActiveItem(itemIndex)\n\n if (enableThumbsWrapperScroll && withThumbs) {\n handleThumbsScroll(itemIndex)\n }\n }\n function slideToNextItem() {\n const isLastItem = activeItem === items.length - 1\n\n if (withLoop) {\n setSlideActionType('next')\n if (isLastItem) {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: 0,\n id: items[0].id,\n },\n })\n setActiveItem(0)\n } else {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem + 1,\n id: items[activeItem + 1].id,\n },\n })\n setActiveItem(activeItem + 1)\n }\n } else {\n if (!isLastItem) {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem + 1,\n id: items[activeItem + 1].id,\n },\n })\n setSlideActionType('next')\n setActiveItem(activeItem + 1)\n }\n }\n }\n function slideToPrevItem() {\n const isFirstItem = activeItem === 0\n\n if (withLoop) {\n setSlideActionType('prev')\n if (isFirstItem) {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem - 1,\n id: items[activeItem - 1].id,\n },\n })\n setActiveItem(items.length - 1)\n } else {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem - 1,\n id: items[activeItem - 1].id,\n },\n })\n setActiveItem(activeItem - 1)\n }\n } else {\n if (!isFirstItem) {\n setSlideActionType('prev')\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem - 1,\n id: items[activeItem - 1].id,\n },\n })\n setActiveItem(activeItem - 1)\n }\n }\n }\n function findItemIndex(id: string) {\n return items.findIndex(item => item.id === id)\n }\n function getIsNextItem(id: string) {\n const itemIndex = findItemIndex(id)\n\n if (withLoop && activeItem === items.length - 1) {\n return itemIndex === 0\n }\n\n return itemIndex === activeItem + 1\n }\n function getIsPrevItem(id: string) {\n const itemIndex = findItemIndex(id)\n\n if (withLoop && activeItem === 0) {\n return itemIndex === items.length - 1\n }\n\n return itemIndex === activeItem - 1\n }\n\n const contextProps: UseTransitionCarouselContextProps = {\n activeItem,\n slideToItem,\n slideToNextItem,\n slideToPrevItem,\n enterFullscreen,\n exitFullscreen,\n useListenToCustomEvent,\n getIsNextItem,\n getIsPrevItem,\n getIsAnimating,\n getIsFullscreen,\n getIsActiveItem: id => {\n return findItemIndex(id) === activeItem\n },\n getCurrentActiveItem: () => ({\n id: items[activeItem].id,\n index: activeItem,\n }),\n }\n\n const carouselFragment = (\n <UseTransitionCarouselContext.Provider value={contextProps}>\n <div\n ref={mainCarouselWrapperRef}\n {...bindSwipe()}\n style={{\n display: 'flex',\n position: 'relative',\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n }}\n >\n {itemsFragment}\n </div>\n </UseTransitionCarouselContext.Provider>\n )\n\n const thumbsFragment = (\n <UseTransitionCarouselContext.Provider value={contextProps}>\n {_thumbsFragment}\n </UseTransitionCarouselContext.Provider>\n )\n\n return {\n carouselFragment,\n thumbsFragment,\n ...contextProps,\n }\n}\n"],"names":["_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/modules/useCustomEventsModule.tsx","../src/modules/useFullscreenModule.tsx","../src/utils.ts","../src/modules/useThumbsModule.tsx","../src/useSpringCarousel.tsx","../src/useTransitionCarousel.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react'\nimport { Subject } from 'rxjs'\nimport { EventsObservableProps, ObservableCallbackFn, EmitObservableFn } from '../types'\n\nexport function useCustomEventsModule() {\n const eventsObserverRef = useRef(new Subject<EventsObservableProps>())\n\n function useListenToCustomEvent(fn: ObservableCallbackFn) {\n useEffect(() => {\n const subscribe = eventsObserverRef.current.subscribe(fn)\n return () => subscribe.unsubscribe()\n }, [fn])\n }\n\n const emitObservable: EmitObservableFn = data => {\n eventsObserverRef.current.next(data)\n }\n\n return {\n useListenToCustomEvent,\n emitObservable,\n }\n}\n","import { useRef, MutableRefObject, useEffect } from 'react'\nimport screenfull from 'screenfull'\nimport { EmitObservableFn } from '../types'\n\ntype FullscreenModule = {\n mainCarouselWrapperRef: MutableRefObject<HTMLDivElement | null>\n emitObservable: EmitObservableFn\n handleResize?(): void\n}\n\nexport function useFullscreenModule({\n mainCarouselWrapperRef,\n emitObservable,\n handleResize,\n}: FullscreenModule) {\n const isFullscreen = useRef(false)\n\n useEffect(() => {\n function handleFullscreenChange() {\n if (document.fullscreenElement) {\n setIsFullscreen(true)\n emitObservable({\n eventName: 'onFullscreenChange',\n isFullscreen: true,\n })\n\n handleResize && handleResize()\n }\n\n if (!document.fullscreenElement) {\n setIsFullscreen(false)\n emitObservable({\n eventName: 'onFullscreenChange',\n isFullscreen: false,\n })\n handleResize && handleResize()\n }\n }\n\n if (screenfull.isEnabled) {\n screenfull.on('change', handleFullscreenChange)\n return () => {\n if (screenfull.isEnabled) {\n screenfull.off('change', handleFullscreenChange)\n }\n }\n }\n })\n\n function setIsFullscreen(_isFullscreen: boolean) {\n isFullscreen.current = _isFullscreen\n }\n\n function getIsFullscreen() {\n return isFullscreen.current\n }\n\n function enterFullscreen(elementRef?: HTMLElement) {\n if (screenfull.isEnabled) {\n screenfull.request((elementRef || mainCarouselWrapperRef.current) as Element)\n }\n }\n\n function exitFullscreen() {\n screenfull.isEnabled && screenfull.exit()\n }\n\n return {\n enterFullscreen,\n exitFullscreen,\n getIsFullscreen,\n }\n}\n","import { useRef, useEffect } from 'react'\n\ntype Callback = () => void | (() => void)\n\nexport function useMount(callback: Callback) {\n const isMounted = useRef(false)\n\n useEffect(() => {\n if (!isMounted.current) {\n const clean = callback()\n isMounted.current = true\n\n return () => {\n clean && clean()\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n}\n\nexport function getIsBrowser() {\n return typeof window !== 'undefined'\n}\n","import { forwardRef, HTMLAttributes, useRef } from 'react'\nimport { useSpring, SpringConfig, animated } from 'react-spring'\nimport { useMount } from 'src/utils'\nimport {\n UseSpringCarouselProps,\n ReactSpringThumbItem,\n PrepareThumbsData,\n UseSpringCarouselItems,\n SlideActionType,\n} from '../types'\n\ntype OffsetDimension = 'offsetWidth' | 'offsetHeight'\ntype OffsetDirection = 'offsetLeft' | 'offsetTop'\ntype ScrollDirection = 'scrollLeft' | 'scrollTop'\n\ntype Props = {\n items: UseSpringCarouselItems['items']\n withThumbs: boolean\n thumbsSlideAxis: UseSpringCarouselProps['thumbsSlideAxis']\n springConfig: SpringConfig\n prepareThumbsData?: PrepareThumbsData\n itemsPerSlide?: UseSpringCarouselProps['itemsPerSlide']\n CustomThumbsWrapperComponent?: UseSpringCarouselProps['CustomThumbsWrapperComponent']\n getFluidWrapperScrollValue?(): number\n getSlideValue?(): number\n}\n\ntype WrapperProps = {\n children: React.ReactNode\n} & HTMLAttributes<HTMLDivElement>\n\nconst InternalWrapper = forwardRef<HTMLDivElement, WrapperProps>(\n ({ children, ...rest }, ref) => {\n return (\n <animated.div {...rest} ref={ref}>\n {children}\n </animated.div>\n )\n },\n)\n\nexport function useThumbsModule({\n items,\n withThumbs,\n thumbsSlideAxis = 'x',\n springConfig,\n prepareThumbsData,\n itemsPerSlide,\n getFluidWrapperScrollValue = () => 0,\n getSlideValue = () => 0,\n CustomThumbsWrapperComponent,\n}: Props) {\n const internalThumbsWrapperRef = useRef<HTMLDivElement | null>(null)\n const [thumbListStyles, setThumbListStyles] = useSpring(() => ({\n x: 0,\n y: 0,\n config: springConfig,\n onChange: ({ value }) => {\n if (internalThumbsWrapperRef.current) {\n internalThumbsWrapperRef.current[\n thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ] = Math.abs(value[thumbsSlideAxis])\n }\n },\n }))\n\n useMount(() => {\n if (withThumbs && !internalThumbsWrapperRef.current) {\n throw new Error(\n \"The thumbs wrapper is not defined. If you've passed a Functional component, be sure to wrap your component in forwardRef.\",\n )\n }\n })\n\n function getCurrentThumbScrollValue() {\n return internalThumbsWrapperRef.current![\n thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ]\n }\n function getThumbsTotalScrollableValue() {\n return Math.round(\n Number(\n internalThumbsWrapperRef.current?.[\n thumbsSlideAxis === 'x' ? 'scrollWidth' : 'scrollHeight'\n ],\n ) -\n internalThumbsWrapperRef.current!.getBoundingClientRect()[\n thumbsSlideAxis === 'x' ? 'width' : 'height'\n ],\n )\n }\n\n function getThumbSlideValue() {\n const thumbSlideTotal = Math.round(getFluidWrapperScrollValue() / getSlideValue())\n const totalScrollableValue = getThumbsTotalScrollableValue()\n return totalScrollableValue / thumbSlideTotal\n }\n\n function handleThumbsScroll(activeItem: number, actionType?: SlideActionType) {\n if (itemsPerSlide === 'fluid') {\n const totalScrollableValue = getThumbsTotalScrollableValue()\n\n if (actionType === 'next') {\n const nextValue = getCurrentThumbScrollValue() + getThumbSlideValue()\n setThumbListStyles.start({\n from: {\n [thumbsSlideAxis]: getCurrentThumbScrollValue(),\n },\n to: {\n [thumbsSlideAxis]:\n nextValue > totalScrollableValue ? totalScrollableValue : nextValue,\n },\n })\n }\n if (actionType === 'prev') {\n const nextValue = getCurrentThumbScrollValue() - getThumbSlideValue()\n setThumbListStyles.start({\n from: {\n [thumbsSlideAxis]: getCurrentThumbScrollValue(),\n },\n to: {\n [thumbsSlideAxis]: nextValue < 0 ? 0 : nextValue,\n },\n })\n }\n } else {\n function getOffsetDirection() {\n return thumbsSlideAxis === 'x' ? 'offsetLeft' : 'offsetTop'\n }\n function getOffsetDimension() {\n return thumbsSlideAxis === 'x' ? 'offsetWidth' : 'offsetHeight'\n }\n function getScrollDirecton() {\n return thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n }\n function getThumbNode() {\n return internalThumbsWrapperRef.current!.querySelector(\n `#thumb-${items[activeItem].id}`,\n ) as HTMLElement\n }\n function getThumbOffsetPosition({\n thumbNode,\n offsetDirection,\n offsetDimension,\n }: {\n thumbNode: HTMLElement\n offsetDirection: OffsetDirection\n offsetDimension: OffsetDimension\n }) {\n return thumbNode[offsetDirection] + thumbNode[offsetDimension] / 2\n }\n function getThumbScrollDimension({\n thumbWrapper,\n offsetDimension,\n }: {\n thumbWrapper: HTMLDivElement\n offsetDimension: OffsetDimension\n }) {\n return thumbWrapper[offsetDimension] / 2\n }\n function getScrollFromValue({\n thumbWrapper,\n scrollDirection,\n }: {\n thumbWrapper: HTMLDivElement\n scrollDirection: ScrollDirection\n }) {\n return thumbWrapper[scrollDirection]\n }\n function getScrollToValue({\n thumbWrapper,\n thumbOffsetPosition,\n thumbScrollDimension,\n offsetDimension,\n }: {\n thumbWrapper: HTMLDivElement\n thumbOffsetPosition: number\n thumbScrollDimension: number\n offsetDimension: OffsetDimension\n }) {\n const scrollDimensionProperty =\n thumbsSlideAxis === 'x' ? 'scrollWidth' : 'scrollHeight'\n\n if (\n activeItem === items.length - 1 ||\n thumbOffsetPosition - thumbScrollDimension >\n thumbWrapper[scrollDimensionProperty] - thumbWrapper[offsetDimension]\n ) {\n return thumbWrapper[scrollDimensionProperty] - thumbWrapper[offsetDimension]\n }\n if (activeItem === 0) {\n return 0\n }\n\n return thumbOffsetPosition - thumbScrollDimension\n }\n\n const thumbNode = getThumbNode()\n\n if (thumbNode) {\n const thumbWrapper = internalThumbsWrapperRef.current!\n const offsetDirection = getOffsetDirection()\n const offsetDimension = getOffsetDimension()\n const scrollDirection = getScrollDirecton()\n const thumbOffsetPosition = getThumbOffsetPosition({\n thumbNode,\n offsetDimension,\n offsetDirection,\n })\n const thumbScrollDimension = getThumbScrollDimension({\n thumbWrapper,\n offsetDimension,\n })\n\n setThumbListStyles.start({\n from: {\n [thumbsSlideAxis]: getScrollFromValue({\n thumbWrapper,\n scrollDirection,\n }),\n },\n to: {\n [thumbsSlideAxis]: getScrollToValue({\n thumbWrapper,\n thumbOffsetPosition,\n thumbScrollDimension,\n offsetDimension,\n }),\n },\n onChange: val => {\n if (thumbsSlideAxis === 'x') {\n // @ts-ignore\n internalThumbsWrapperRef!.current!.scrollLeft = val.x\n } else {\n // @ts-ignore\n internalThumbsWrapperRef!.current!.scrollTop = val.y\n }\n },\n })\n }\n }\n }\n function handlePrepareThumbsDate() {\n function getPreparedItems(\n _items: UseSpringCarouselItems['items'],\n ): ReactSpringThumbItem[] {\n return _items.map(i => ({\n id: i.id,\n renderThumb: i.renderThumb,\n }))\n }\n\n if (prepareThumbsData) {\n return prepareThumbsData(getPreparedItems(items))\n }\n return getPreparedItems(items)\n }\n\n const Wrapper = CustomThumbsWrapperComponent\n ? animated(CustomThumbsWrapperComponent)\n : InternalWrapper\n\n const thumbsFragment = withThumbs ? (\n <Wrapper\n ref={internalThumbsWrapperRef}\n className=\"use-spring-carousel-thumbs-wrapper\"\n onWheel={() => {\n thumbListStyles[thumbsSlideAxis].stop()\n }}\n style={{\n display: 'flex',\n flex: 1,\n position: 'relative',\n flexDirection: thumbsSlideAxis === 'x' ? 'row' : 'column',\n ...(thumbsSlideAxis === 'x'\n ? { overflowX: 'auto' }\n : {\n overflowY: 'auto',\n maxHeight: '100%',\n }),\n }}\n >\n {handlePrepareThumbsDate().map(({ id, renderThumb }) => {\n const thumbId = `thumb-${id}`\n return (\n <div key={thumbId} id={thumbId}>\n {renderThumb}\n </div>\n )\n })}\n </Wrapper>\n ) : null\n\n return {\n thumbsFragment,\n handleThumbsScroll,\n }\n}\n","import { useRef, createContext, useCallback, useContext, useEffect } from 'react'\nimport { useSpring, config, animated } from 'react-spring'\nimport { useDrag } from '@use-gesture/react'\nimport { useCustomEventsModule, useFullscreenModule, useThumbsModule } from './modules'\nimport {\n UseSpringCarouselProps,\n SlideToItemFnProps,\n SlideActionType,\n UseSpringDafaultTypeReturnProps,\n UseSpringFluidTypeReturnProps,\n} from './types'\nimport { useMount } from './utils'\nimport { getIsBrowser } from './utils'\n\ntype ReturnHook<T> = T extends 'fluid'\n ? UseSpringFluidTypeReturnProps\n : UseSpringDafaultTypeReturnProps\n\nconst UseSpringCarouselContext = createContext<\n (UseSpringFluidTypeReturnProps | UseSpringDafaultTypeReturnProps) | undefined\n>(undefined)\n\nexport default function useSpringCarousel<T>({\n itemsPerSlide = 1,\n items,\n withLoop = false,\n draggingSlideTreshold = 140,\n springConfig = config.default,\n shouldResizeOnWindowResize = true,\n withThumbs = false,\n enableThumbsWrapperScroll = true,\n carouselSlideAxis = 'x',\n thumbsSlideAxis = 'x',\n prepareThumbsData,\n initialActiveItem = 0,\n initialStartingPosition = 'start',\n disableGestures = false,\n gutter = 0,\n startEndGutter = 0,\n touchAction,\n slideAmount,\n freeScroll = false,\n CustomThumbsWrapperComponent,\n}: UseSpringCarouselProps): ReturnHook<T> & {\n carouselFragment: JSX.Element\n thumbsFragment: JSX.Element\n} {\n function getItems() {\n if (withLoop) {\n return [...items, ...items, ...items]\n }\n return items\n }\n const slideActionType = useRef<SlideActionType>('initial')\n const internalItems = getItems()\n const activeItem = useRef(initialActiveItem)\n const mainCarouselWrapperRef = useRef<HTMLDivElement | null>(null)\n const carouselTrackWrapperRef = useRef<HTMLDivElement | null>(null)\n const isDragging = useRef(false)\n const isAnimating = useRef(false)\n const windowIsHidden = useRef(false)\n const currentWindowWidth = useRef(0)\n const fluidTotalWrapperScrollValue = useRef(0)\n const slideFluidEndReached = useRef(false)\n const initialWindowWidth = useRef(0)\n\n const [carouselStyles, setCarouselStyles] = useSpring(() => ({\n y: 0,\n x: 0,\n config: springConfig,\n onChange: ({ value }) => {\n if (mainCarouselWrapperRef.current && freeScroll) {\n mainCarouselWrapperRef.current[\n carouselSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ] = Math.abs(value[carouselSlideAxis])\n }\n },\n }))\n function getCarouselItem() {\n return carouselTrackWrapperRef.current?.querySelector('.use-spring-carousel-item')\n }\n const getMainCarouselWrapperWidth = useCallback(() => {\n if (!mainCarouselWrapperRef.current) {\n throw new Error('mainCarouselWrapperRef is not available')\n }\n return mainCarouselWrapperRef.current.getBoundingClientRect()[\n carouselSlideAxis === 'x' ? 'width' : 'height'\n ]\n }, [carouselSlideAxis])\n const getCarouselItemWidth = useCallback(() => {\n const carouselItem = getCarouselItem()\n if (!carouselItem) {\n throw Error('No carousel items available!')\n }\n return (\n carouselItem.getBoundingClientRect()[\n carouselSlideAxis === 'x' ? 'width' : 'height'\n ] + gutter\n )\n }, [carouselSlideAxis, gutter])\n const getCurrentSlidedValue = useCallback(() => {\n return carouselStyles[carouselSlideAxis].get()\n }, [carouselSlideAxis, carouselStyles])\n const getIfItemsNotFillTheCarousel = useCallback(() => {\n return getCarouselItemWidth() * items.length < getMainCarouselWrapperWidth()\n }, [getCarouselItemWidth, getMainCarouselWrapperWidth, items.length])\n const getFluidWrapperScrollValue = useCallback(() => {\n return Math.round(\n Number(\n carouselTrackWrapperRef.current?.[\n carouselSlideAxis === 'x' ? 'scrollWidth' : 'scrollHeight'\n ],\n ) -\n carouselTrackWrapperRef.current!.getBoundingClientRect()[\n carouselSlideAxis === 'x' ? 'width' : 'height'\n ],\n )\n }, [carouselSlideAxis])\n const getIsFirstItem = useCallback(() => {\n return getCurrentActiveItem() === 0\n }, [])\n const getSlideValue = useCallback(() => {\n if (!carouselTrackWrapperRef.current) {\n return 0\n }\n const itemVal = getCarouselItemWidth()\n\n if (itemsPerSlide === 'fluid' && typeof slideAmount === 'number') {\n if (slideAmount < itemVal) {\n throw new Error('slideAmount must be greater than the width of a single item.')\n }\n return slideAmount\n }\n return itemVal\n }, [getCarouselItemWidth, itemsPerSlide, slideAmount])\n const adjustCarouselWrapperPosition = useCallback(\n (ref: HTMLDivElement) => {\n const positionProperty = carouselSlideAxis === 'x' ? 'left' : 'top'\n function getDefaultPositionValue() {\n return getCarouselItemWidth() * items.length\n }\n function setPosition(v: number) {\n ref.style.top = '0px'\n ref.style.left = '0px'\n if (withLoop) {\n ref.style[positionProperty] = `-${v - startEndGutter}px`\n }\n }\n function setStartPosition() {\n setPosition(getDefaultPositionValue())\n }\n\n if (itemsPerSlide !== 'fluid' && typeof itemsPerSlide === 'number') {\n function setCenterPosition() {\n setPosition(\n getDefaultPositionValue() -\n getSlideValue() * Math.round(((itemsPerSlide as number) - 1) / 2),\n )\n }\n function setEndPosition() {\n setPosition(\n getDefaultPositionValue() -\n getSlideValue() * Math.round((itemsPerSlide as number) - 1),\n )\n }\n\n if (itemsPerSlide > 1) {\n switch (initialStartingPosition) {\n default:\n case 'start': {\n setStartPosition()\n break\n }\n case 'center': {\n setCenterPosition()\n break\n }\n case 'end': {\n setEndPosition()\n break\n }\n }\n } else {\n setStartPosition()\n }\n } else {\n setStartPosition()\n }\n },\n [\n carouselSlideAxis,\n itemsPerSlide,\n getCarouselItemWidth,\n items.length,\n startEndGutter,\n getSlideValue,\n initialStartingPosition,\n withLoop,\n ],\n )\n\n const handleResize = useCallback(() => {\n if (window.innerWidth === currentWindowWidth.current || freeScroll) {\n return\n }\n currentWindowWidth.current = window.innerWidth\n\n if (itemsPerSlide === 'fluid') {\n if (getIfItemsNotFillTheCarousel()) {\n setCarouselStyles.start({\n immediate: true,\n [carouselSlideAxis]: 0,\n })\n return\n }\n fluidTotalWrapperScrollValue.current = getFluidWrapperScrollValue()\n const diff = currentWindowWidth.current - initialWindowWidth.current\n\n if (slideFluidEndReached.current) {\n const nextValue = -fluidTotalWrapperScrollValue.current\n setCarouselStyles.start({\n immediate: true,\n [carouselSlideAxis]: nextValue,\n })\n } else {\n const nextValue = getCurrentSlidedValue() + diff\n setCarouselStyles.start({\n immediate: true,\n [carouselSlideAxis]: nextValue,\n })\n }\n\n initialWindowWidth.current = window.innerWidth\n } else {\n setCarouselStyles.start({\n immediate: true,\n x: 0,\n y: 0,\n })\n setCarouselStyles.start({\n immediate: true,\n [carouselSlideAxis]: -(getSlideValue() * getCurrentActiveItem()),\n })\n }\n adjustCarouselWrapperPosition(carouselTrackWrapperRef.current!)\n }, [\n itemsPerSlide,\n getIfItemsNotFillTheCarousel,\n getFluidWrapperScrollValue,\n freeScroll,\n setCarouselStyles,\n carouselSlideAxis,\n getCurrentSlidedValue,\n getSlideValue,\n adjustCarouselWrapperPosition,\n ])\n // Custom modules\n const { useListenToCustomEvent, emitObservable } = useCustomEventsModule()\n const { enterFullscreen, exitFullscreen, getIsFullscreen } = useFullscreenModule({\n mainCarouselWrapperRef,\n emitObservable,\n handleResize,\n })\n const { thumbsFragment: _thumbsFragment, handleThumbsScroll } = useThumbsModule({\n withThumbs,\n items,\n thumbsSlideAxis,\n springConfig,\n prepareThumbsData,\n itemsPerSlide,\n getFluidWrapperScrollValue,\n getSlideValue,\n CustomThumbsWrapperComponent,\n })\n\n function getWrapperScrollDirection() {\n if (!mainCarouselWrapperRef.current) {\n throw new Error('Missing mainCarouselWrapperRef.current')\n }\n return mainCarouselWrapperRef.current[\n carouselSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ]\n }\n\n const bindDrag = useDrag(\n props => {\n const isDragging = props.dragging\n const movement = props.movement[carouselSlideAxis === 'x' ? 0 : 1]\n function resetAnimation() {\n if (itemsPerSlide === 'fluid') {\n if (\n getIfItemsNotFillTheCarousel() ||\n (getIsFirstItem() && getSlideActionType() === 'prev')\n ) {\n setCarouselStyles.start({\n [carouselSlideAxis]: 0,\n })\n } else if (slideFluidEndReached.current) {\n setCarouselStyles.start({\n [carouselSlideAxis]: -fluidTotalWrapperScrollValue.current,\n })\n } else {\n setCarouselStyles.start({\n [carouselSlideAxis]: getCurrentSlidedValue(),\n })\n }\n } else {\n setCarouselStyles.start({\n [carouselSlideAxis]: -(getCurrentActiveItem() * getSlideValue()),\n })\n }\n }\n\n if (isDragging) {\n setIsDragging(true)\n emitObservable({\n eventName: 'onDrag',\n ...props,\n })\n const direction = props.direction[carouselSlideAxis === 'x' ? 0 : 1]\n if (direction > 0) {\n setSlideActionType('prev')\n } else {\n setSlideActionType('next')\n }\n\n if (freeScroll) {\n if (getWrapperScrollDirection() === 0 && direction > 0) {\n props.cancel()\n } else {\n setCarouselStyles.start({\n from: {\n [carouselSlideAxis]: getWrapperScrollDirection(),\n },\n to: {\n [carouselSlideAxis]:\n direction > 0\n ? getWrapperScrollDirection() - Math.abs(movement)\n : getWrapperScrollDirection() + Math.abs(movement),\n },\n })\n }\n } else {\n setCarouselStyles.start({\n [carouselSlideAxis]: getCurrentSlidedValue() + movement,\n })\n }\n\n const prevItemTreshold = movement > draggingSlideTreshold\n const nextItemTreshold = movement < -draggingSlideTreshold\n\n if (\n mainCarouselWrapperRef.current!.getBoundingClientRect().width >=\n items.length * getSlideValue()\n ) {\n slideFluidEndReached.current = true\n }\n\n if ((prevItemTreshold || nextItemTreshold) && getIfItemsNotFillTheCarousel()) {\n props.cancel()\n resetAnimation()\n return\n }\n\n if (slideFluidEndReached.current && movement < 0) {\n if (nextItemTreshold) {\n props.cancel()\n setCarouselStyles.start({\n [carouselSlideAxis]: -fluidTotalWrapperScrollValue.current,\n })\n }\n } else if (nextItemTreshold) {\n props.cancel()\n if (!withLoop && getIsLastItem()) {\n resetAnimation()\n } else {\n slideToNextItem()\n }\n } else if (prevItemTreshold) {\n props.cancel()\n if (!withLoop && getIsFirstItem()) {\n resetAnimation()\n } else {\n slideToPrevItem()\n }\n }\n }\n\n if (props.last && !props.pressed && !freeScroll) {\n resetAnimation()\n }\n },\n {\n enabled: !disableGestures,\n preventScrollAxis: 'x',\n },\n )\n\n // Perform some check on first mount\n useMount(() => {\n if (itemsPerSlide !== 'fluid' && !Number.isInteger(itemsPerSlide)) {\n throw new Error(`itemsPerSlide should be an integer.`)\n }\n if (itemsPerSlide > items.length) {\n throw new Error(\n `The itemsPerSlide prop can't be greater than the total length of the items you provide.`,\n )\n }\n if (itemsPerSlide < 1) {\n throw new Error(`The itemsPerSlide prop can't be less than 1.`)\n }\n if (!shouldResizeOnWindowResize) {\n console.warn(\n 'You set shouldResizeOnWindowResize={false}; be aware that the carousel could behave in a strange way if you also use the fullscreen functionality or if you change the mobile orientation.',\n )\n }\n if (initialActiveItem < 0) {\n console.warn('The initialActiveItem cannot be less than 0.')\n }\n if (initialActiveItem > items.length) {\n console.warn(\n 'The initialActiveItem cannot be greater than the total length of the items you provide.',\n )\n }\n })\n useMount(() => {\n fluidTotalWrapperScrollValue.current = getFluidWrapperScrollValue()\n function handleVisibilityChange() {\n if (document.hidden) {\n windowIsHidden.current = true\n } else {\n windowIsHidden.current = false\n }\n }\n if (getIsBrowser()) {\n document.addEventListener('visibilitychange', handleVisibilityChange)\n return () => {\n document.removeEventListener('visibilitychange', handleVisibilityChange)\n }\n }\n })\n useMount(() => {\n initialWindowWidth.current = window.innerWidth\n if (initialActiveItem > 0 && initialActiveItem <= items.length) {\n slideToItem({\n to: initialActiveItem,\n immediate: true,\n })\n setActiveItem(initialActiveItem)\n }\n })\n useEffect(() => {\n function resize() {\n setTimeout(handleResize)\n }\n if (shouldResizeOnWindowResize) {\n window.addEventListener('resize', resize)\n return () => {\n window.removeEventListener('resize', resize)\n }\n }\n }, [handleResize, shouldResizeOnWindowResize])\n useEffect(() => {\n if (carouselTrackWrapperRef.current) {\n if (carouselSlideAxis === 'x') {\n carouselTrackWrapperRef.current.style.top = '0px'\n }\n if (carouselSlideAxis === 'y') {\n carouselTrackWrapperRef.current.style.left = '0px'\n }\n }\n }, [carouselSlideAxis])\n useEffect(() => {\n setTimeout(() => adjustCarouselWrapperPosition(carouselTrackWrapperRef.current!), 150)\n }, [adjustCarouselWrapperPosition, carouselSlideAxis, itemsPerSlide])\n\n function setSlideActionType(type: SlideActionType) {\n slideActionType.current = type\n }\n function getSlideActionType() {\n return slideActionType.current\n }\n function setActiveItem(newItem: number) {\n activeItem.current = newItem\n }\n function getCurrentActiveItem() {\n return activeItem.current\n }\n function getIsAnimating() {\n return isAnimating.current\n }\n function setIsAnimating(val: boolean) {\n isAnimating.current = val\n }\n function setIsDragging(val: boolean) {\n isDragging.current = val\n }\n function getIsDragging() {\n return isDragging.current\n }\n function getPrevItem() {\n const currentActiveItem = getCurrentActiveItem()\n if (currentActiveItem === 0) {\n return items.length - 1\n }\n return currentActiveItem - 1\n }\n function getNextItem() {\n const currentActiveItem = getCurrentActiveItem()\n if (currentActiveItem === items.length - 1) {\n return 0\n }\n return currentActiveItem + 1\n }\n function getIsNextItem(id: string) {\n const itemIndex = findItemIndex(id)\n const activeItem = getCurrentActiveItem()\n if (withLoop && activeItem === items.length - 1) {\n return itemIndex === 0\n }\n return itemIndex === activeItem + 1\n }\n function getIsPrevItem(id: string) {\n const itemIndex = findItemIndex(id)\n const activeItem = getCurrentActiveItem()\n if (withLoop && activeItem === 0) {\n return itemIndex === items.length - 1\n }\n return itemIndex === activeItem - 1\n }\n function findItemIndex(id: string) {\n return items.findIndex(item => item.id === id)\n }\n function slideToItem({\n from,\n to = -1,\n customTo,\n immediate = false,\n onRest = () => {},\n }: SlideToItemFnProps) {\n if (!immediate) {\n setActiveItem(to)\n setIsAnimating(true)\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: itemsPerSlide === 'fluid' ? -1 : to,\n id: itemsPerSlide === 'fluid' ? '' : items[to].id,\n },\n })\n }\n\n function getFromValue() {\n if (typeof from === 'number') {\n return {\n from: {\n [carouselSlideAxis]: from,\n },\n }\n }\n return {}\n }\n function getToValue() {\n if (typeof customTo === 'number') {\n return {\n [carouselSlideAxis]: customTo,\n }\n }\n return {\n [carouselSlideAxis]: -(getSlideValue() * to),\n }\n }\n\n setCarouselStyles.start({\n ...getFromValue(),\n to: getToValue(),\n immediate,\n onRest: val => {\n if (val.finished) {\n setIsDragging(false)\n setIsAnimating(false)\n onRest()\n if (!immediate) {\n emitObservable({\n eventName: 'onSlideChange',\n slideActionType: getSlideActionType(),\n currentItem: {\n index: itemsPerSlide === 'fluid' ? -1 : getCurrentActiveItem(),\n id: itemsPerSlide === 'fluid' ? '' : items[getCurrentActiveItem()].id,\n },\n })\n }\n }\n },\n })\n if (enableThumbsWrapperScroll && withThumbs && !immediate) {\n handleThumbsScroll(to, getSlideActionType())\n }\n }\n function getIsLastItem() {\n return getCurrentActiveItem() === items.length - 1\n }\n function slideToPrevItem() {\n setSlideActionType('prev')\n\n if (itemsPerSlide === 'fluid') {\n if (getIfItemsNotFillTheCarousel()) {\n return\n }\n const nextPrevValue = getCurrentSlidedValue() + getSlideValue() + 200\n\n if (freeScroll) {\n const nextValue = mainCarouselWrapperRef.current!.scrollLeft - getSlideValue()\n slideToItem({\n customTo: nextValue < 0 ? 0 : nextValue,\n from: mainCarouselWrapperRef.current!.scrollLeft,\n })\n } else if (nextPrevValue >= 0) {\n if (withLoop) {\n slideToItem({\n from: getCurrentSlidedValue() - getCarouselItemWidth() * items.length,\n customTo:\n getCurrentSlidedValue() -\n getCarouselItemWidth() * items.length +\n getSlideValue(),\n })\n } else {\n slideToItem({\n customTo: 0,\n })\n }\n } else {\n slideToItem({\n customTo: getCurrentSlidedValue() + getSlideValue(),\n })\n }\n if (slideFluidEndReached.current) {\n slideFluidEndReached.current = false\n }\n } else {\n if ((!withLoop && getCurrentActiveItem() === 0) || windowIsHidden.current) {\n return\n }\n\n if (getIsFirstItem()) {\n slideToItem({\n from: getCurrentSlidedValue() - getSlideValue() * items.length,\n to: items.length - 1,\n })\n } else {\n slideToItem({\n to: getPrevItem(),\n })\n }\n }\n }\n function slideToNextItem() {\n setSlideActionType('next')\n\n if (itemsPerSlide === 'fluid') {\n if (getIfItemsNotFillTheCarousel()) {\n return\n }\n const willGoAfterLastFluidItem =\n Math.abs(getCurrentSlidedValue() - getSlideValue()) + 100 >=\n fluidTotalWrapperScrollValue.current\n\n if (freeScroll) {\n slideToItem({\n customTo: mainCarouselWrapperRef.current!.scrollLeft + getSlideValue(),\n from: mainCarouselWrapperRef.current!.scrollLeft,\n })\n } else if (\n withLoop &&\n Math.abs(getCurrentSlidedValue() - getSlideValue()) >=\n items.length * getCarouselItemWidth()\n ) {\n const currentWidth = getCarouselItemWidth() * items.length\n slideToItem({\n from: getCurrentSlidedValue() + currentWidth,\n customTo: getCurrentSlidedValue() + currentWidth - getSlideValue(),\n })\n } else if (slideFluidEndReached.current) {\n return\n } else if (willGoAfterLastFluidItem) {\n slideFluidEndReached.current = true\n slideToItem({\n customTo: -fluidTotalWrapperScrollValue.current,\n })\n } else {\n slideToItem({\n customTo: getCurrentSlidedValue() - getSlideValue(),\n })\n }\n } else {\n if (\n (!withLoop && getCurrentActiveItem() === internalItems.length - 1) ||\n windowIsHidden.current\n ) {\n return\n }\n\n if (getIsLastItem()) {\n slideToItem({\n from: getCurrentSlidedValue() + getSlideValue() * items.length,\n to: 0,\n })\n } else {\n slideToItem({\n to: getNextItem(),\n })\n }\n }\n }\n function _slideToItem(item: string | number) {\n let itemIndex = 0\n\n if (typeof item === 'string') {\n itemIndex = items.findIndex(_item => _item.id === item)\n } else {\n itemIndex = item\n }\n\n if (itemIndex >= items.length) {\n throw Error(\n `The item you want to slide to doesn't exist. This could be due to the fact that \n you provide a wrong id or a higher numeric index.`,\n )\n }\n if (itemIndex === getCurrentActiveItem()) {\n return\n }\n\n const currentItem = findItemIndex(items[getCurrentActiveItem()].id)\n const newActiveItem = findItemIndex(items[itemIndex].id)\n\n if (newActiveItem > currentItem) {\n setSlideActionType('next')\n } else {\n setSlideActionType('prev')\n }\n\n slideToItem({\n to: itemIndex,\n })\n }\n\n const contextProps = {\n useListenToCustomEvent,\n getIsFullscreen,\n enterFullscreen,\n exitFullscreen,\n getIsAnimating,\n getIsDragging,\n getIsNextItem,\n getIsPrevItem,\n slideToPrevItem,\n slideToNextItem,\n ...(typeof itemsPerSlide === 'number'\n ? {\n slideToItem: _slideToItem,\n getIsActiveItem: (id: string) => {\n return findItemIndex(id) === getCurrentActiveItem()\n },\n getCurrentActiveItem: () => ({\n id: items[getCurrentActiveItem()].id,\n index: getCurrentActiveItem(),\n }),\n }\n : {}),\n }\n function getItemStyles() {\n if (typeof itemsPerSlide === 'number') {\n return {\n ...(carouselSlideAxis === 'x'\n ? { marginRight: `${gutter}px` }\n : { marginBottom: `${gutter}px` }),\n flex: `1 0 calc(100% / ${itemsPerSlide} - ${\n (gutter * (itemsPerSlide - 1)) / itemsPerSlide\n }px)`,\n }\n }\n return {\n ...(carouselSlideAxis === 'x'\n ? { marginRight: `${gutter}px` }\n : { marginBottom: `${gutter}px` }),\n }\n }\n function getAnimatedWrapperStyles() {\n const percentValue = `calc(100% - ${startEndGutter * 2}px)`\n return {\n width: carouselSlideAxis === 'x' ? percentValue : '100%',\n height: carouselSlideAxis === 'y' ? percentValue : '100%',\n }\n }\n function handleCarouselFragmentRef(ref: HTMLDivElement | null) {\n if (ref) {\n carouselTrackWrapperRef.current = ref\n adjustCarouselWrapperPosition(ref)\n }\n }\n function getOverflowStyles() {\n if (freeScroll) {\n if (carouselSlideAxis === 'x') {\n return {\n overflowX: 'auto',\n }\n }\n return {\n overflowY: 'auto',\n }\n }\n return {}\n }\n function getWheelEvent() {\n if (freeScroll) {\n return {\n onWheel() {\n carouselStyles[carouselSlideAxis].stop()\n },\n }\n }\n return {}\n }\n function getTouchAction() {\n if (!touchAction) {\n if (carouselSlideAxis === 'x') {\n return 'pan-y'\n }\n return 'pan-x'\n }\n return touchAction\n }\n const carouselFragment = (\n <UseSpringCarouselContext.Provider value={contextProps}>\n <div\n ref={mainCarouselWrapperRef}\n className=\"use-spring-carousel-main-wrapper\"\n data-testid=\"use-spring-carousel-wrapper\"\n {...getWheelEvent()}\n // @ts-ignore\n style={{\n display: 'flex',\n position: 'relative',\n width: '100%',\n height: '100%',\n ...getOverflowStyles(),\n }}\n >\n <animated.div\n {...bindDrag()}\n className=\"use-spring-carousel-track-wrapper\"\n data-testid=\"use-spring-carousel-animated-wrapper\"\n ref={handleCarouselFragmentRef}\n style={{\n display: 'flex',\n position: 'relative',\n touchAction: getTouchAction(),\n flexDirection: carouselSlideAxis === 'x' ? 'row' : 'column',\n ...getAnimatedWrapperStyles(),\n ...(freeScroll ? {} : carouselStyles),\n }}\n >\n {internalItems.map(({ id, renderItem }, index) => {\n return (\n <div\n key={`${id}-${index}`}\n className=\"use-spring-carousel-item\"\n data-testid=\"use-spring-carousel-item-wrapper\"\n style={{\n display: 'flex',\n position: 'relative',\n ...getItemStyles(),\n }}\n >\n {renderItem}\n </div>\n )\n })}\n </animated.div>\n </div>\n </UseSpringCarouselContext.Provider>\n )\n const thumbsFragment = (\n <UseSpringCarouselContext.Provider value={contextProps}>\n {_thumbsFragment}\n </UseSpringCarouselContext.Provider>\n )\n\n return {\n ...(contextProps as ReturnHook<T>),\n carouselFragment,\n thumbsFragment,\n }\n}\n\nexport function useSpringCarouselContext<T>() {\n const context = useContext(UseSpringCarouselContext)\n if (!context) {\n throw new Error(\n 'useSpringCarouselContext must be used only inside a component that is rendered inside the Carousel.',\n )\n }\n return context as ReturnHook<T>\n}\n","import { createContext, useRef, useState, useContext } from 'react'\nimport { useTransition, animated, config } from 'react-spring'\nimport { useDrag } from '@use-gesture/react'\nimport { useCustomEventsModule, useThumbsModule, useFullscreenModule } from './modules'\nimport {\n UseTransitionCarouselContextProps,\n UseTransitionCarouselProps,\n SlideActionType,\n} from './types'\n\nconst UseTransitionCarouselContext = createContext<\n UseTransitionCarouselContextProps | undefined\n>(undefined)\n\nexport function useTransitionCarouselContext() {\n const context = useContext(UseTransitionCarouselContext)\n\n if (!context) {\n throw new Error(`useTransitionCarouselContext isn't being used within the useTransitionCarousel context; \n use the context only inside a component that is rendered within the Carousel.`)\n }\n\n return context\n}\n\nexport default function useTransitionCarousel({\n items,\n withLoop = false,\n withThumbs = false,\n springConfig = config.default,\n thumbsSlideAxis = 'x',\n enableThumbsWrapperScroll = true,\n draggingSlideTreshold = 50,\n prepareThumbsData,\n toPrevItemSpringProps,\n toNextItemSpringProps,\n disableGestures = false,\n CustomThumbsWrapperComponent,\n springAnimationProps = {\n initial: {\n opacity: 1,\n position: 'relative',\n },\n from: {\n opacity: 0,\n position: 'absolute',\n },\n enter: {\n opacity: 1,\n position: 'relative',\n },\n leave: {\n opacity: 0,\n position: 'absolute',\n },\n },\n}: UseTransitionCarouselProps) {\n const slideActionType = useRef<SlideActionType>('next')\n const mainCarouselWrapperRef = useRef<HTMLDivElement | null>(null)\n const isAnimating = useRef(false)\n const [activeItem, setActiveItem] = useState(0)\n\n const { emitObservable, useListenToCustomEvent } = useCustomEventsModule()\n const { enterFullscreen, exitFullscreen, getIsFullscreen } = useFullscreenModule({\n emitObservable,\n mainCarouselWrapperRef,\n })\n const { thumbsFragment: _thumbsFragment, handleThumbsScroll } = useThumbsModule({\n items,\n withThumbs,\n thumbsSlideAxis,\n springConfig,\n prepareThumbsData,\n CustomThumbsWrapperComponent,\n })\n\n const bindSwipe = useDrag(\n ({ last, movement: [mx] }) => {\n if (getIsAnimating()) {\n return\n }\n\n if (last) {\n const prevItemTreshold = mx > draggingSlideTreshold\n const nextItemTreshold = mx < -draggingSlideTreshold\n const isFirstItem = activeItem === 0\n const isLastItem = activeItem === items.length - 1\n\n if (nextItemTreshold) {\n if (!withLoop && isLastItem) {\n return\n }\n\n slideToNextItem()\n emitObservable({\n eventName: 'onLeftSwipe',\n })\n } else if (prevItemTreshold) {\n if (!withLoop && isFirstItem) {\n return\n }\n\n slideToPrevItem()\n emitObservable({\n eventName: 'onRightSwipe',\n })\n }\n }\n },\n {\n enabled: !disableGestures,\n },\n )\n\n function getTransitionConfig() {\n const slideActionType = getSlideActionType()\n\n if (slideActionType === 'prev' && toPrevItemSpringProps) {\n return {\n initial: {\n ...springAnimationProps.initial,\n },\n from: {\n ...toPrevItemSpringProps.from,\n },\n enter: {\n ...toPrevItemSpringProps.enter,\n },\n leave: {\n ...toPrevItemSpringProps.leave,\n },\n }\n }\n\n if (slideActionType === 'next' && toNextItemSpringProps) {\n return {\n initial: {\n ...springAnimationProps.initial,\n },\n from: {\n ...toNextItemSpringProps.from,\n },\n enter: {\n ...toNextItemSpringProps.enter,\n },\n leave: {\n ...toNextItemSpringProps.leave,\n },\n }\n }\n\n return {\n initial: {\n ...springAnimationProps.initial,\n },\n from: {\n ...springAnimationProps.from,\n },\n enter: {\n ...springAnimationProps.enter,\n },\n leave: {\n ...springAnimationProps.leave,\n },\n }\n }\n\n const transitions = useTransition(activeItem, {\n config: springConfig,\n ...getTransitionConfig(),\n onStart: () => setIsAnimating(true),\n keys: null,\n onRest: val => {\n if (val.finished) {\n setIsAnimating(false)\n emitObservable({\n eventName: 'onSlideChange',\n slideActionType: getSlideActionType(),\n currentItem: {\n index: activeItem,\n id: items[activeItem].id,\n },\n })\n }\n },\n })\n const itemsFragment = transitions((styles, item) => (\n <animated.div\n style={{\n ...styles,\n flex: '1 0 100%',\n width: '100%',\n height: '100%',\n }}\n >\n {items[item].renderItem}\n </animated.div>\n ))\n\n function getIsAnimating() {\n return isAnimating.current\n }\n function setIsAnimating(val: boolean) {\n isAnimating.current = val\n }\n function setSlideActionType(type: SlideActionType) {\n slideActionType.current = type\n }\n function getSlideActionType() {\n return slideActionType.current\n }\n function slideToItem(item: string | number) {\n let itemIndex = 0\n\n if (typeof item === 'string') {\n itemIndex = items.findIndex(_item => _item.id === item)\n } else {\n itemIndex = item\n }\n\n if (itemIndex >= items.length) {\n throw Error(\n `The item you want to slide to doesn't exist. This could be due to the fact that \n you provide a wrong id or a higher numeric index.`,\n )\n }\n\n if (itemIndex === activeItem) {\n return\n }\n\n const currentItem = findItemIndex(items[activeItem].id)\n const newActiveItem = findItemIndex(items[itemIndex].id)\n\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: newActiveItem,\n id: items[itemIndex].id,\n },\n })\n\n if (newActiveItem > currentItem) {\n setSlideActionType('next')\n } else {\n setSlideActionType('prev')\n }\n\n setActiveItem(itemIndex)\n\n if (enableThumbsWrapperScroll && withThumbs) {\n handleThumbsScroll(itemIndex)\n }\n }\n function slideToNextItem() {\n const isLastItem = activeItem === items.length - 1\n\n if (withLoop) {\n setSlideActionType('next')\n if (isLastItem) {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: 0,\n id: items[0].id,\n },\n })\n setActiveItem(0)\n } else {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem + 1,\n id: items[activeItem + 1].id,\n },\n })\n setActiveItem(activeItem + 1)\n }\n } else {\n if (!isLastItem) {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem + 1,\n id: items[activeItem + 1].id,\n },\n })\n setSlideActionType('next')\n setActiveItem(activeItem + 1)\n }\n }\n }\n function slideToPrevItem() {\n const isFirstItem = activeItem === 0\n\n if (withLoop) {\n setSlideActionType('prev')\n if (isFirstItem) {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem - 1,\n id: items[activeItem - 1].id,\n },\n })\n setActiveItem(items.length - 1)\n } else {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem - 1,\n id: items[activeItem - 1].id,\n },\n })\n setActiveItem(activeItem - 1)\n }\n } else {\n if (!isFirstItem) {\n setSlideActionType('prev')\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem - 1,\n id: items[activeItem - 1].id,\n },\n })\n setActiveItem(activeItem - 1)\n }\n }\n }\n function findItemIndex(id: string) {\n return items.findIndex(item => item.id === id)\n }\n function getIsNextItem(id: string) {\n const itemIndex = findItemIndex(id)\n\n if (withLoop && activeItem === items.length - 1) {\n return itemIndex === 0\n }\n\n return itemIndex === activeItem + 1\n }\n function getIsPrevItem(id: string) {\n const itemIndex = findItemIndex(id)\n\n if (withLoop && activeItem === 0) {\n return itemIndex === items.length - 1\n }\n\n return itemIndex === activeItem - 1\n }\n\n const contextProps: UseTransitionCarouselContextProps = {\n activeItem,\n slideToItem,\n slideToNextItem,\n slideToPrevItem,\n enterFullscreen,\n exitFullscreen,\n useListenToCustomEvent,\n getIsNextItem,\n getIsPrevItem,\n getIsAnimating,\n getIsFullscreen,\n getIsActiveItem: id => {\n return findItemIndex(id) === activeItem\n },\n getCurrentActiveItem: () => ({\n id: items[activeItem].id,\n index: activeItem,\n }),\n }\n\n const carouselFragment = (\n <UseTransitionCarouselContext.Provider value={contextProps}>\n <div\n ref={mainCarouselWrapperRef}\n {...bindSwipe()}\n style={{\n display: 'flex',\n position: 'relative',\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n }}\n >\n {itemsFragment}\n </div>\n </UseTransitionCarouselContext.Provider>\n )\n\n const thumbsFragment = (\n <UseTransitionCarouselContext.Provider value={contextProps}>\n {_thumbsFragment}\n </UseTransitionCarouselContext.Provider>\n )\n\n return {\n carouselFragment,\n thumbsFragment,\n ...contextProps,\n }\n}\n"],"names":["_jsx"],"mappings":"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"}
|
package/dist/index.umd.js
CHANGED
|
@@ -480,14 +480,12 @@
|
|
|
480
480
|
const movement = props.movement[carouselSlideAxis === 'x' ? 0 : 1];
|
|
481
481
|
function resetAnimation() {
|
|
482
482
|
if (itemsPerSlide === 'fluid') {
|
|
483
|
-
if (getIfItemsNotFillTheCarousel()
|
|
483
|
+
if (getIfItemsNotFillTheCarousel() ||
|
|
484
|
+
(getIsFirstItem() && getSlideActionType() === 'prev')) {
|
|
484
485
|
setCarouselStyles.start({
|
|
485
486
|
[carouselSlideAxis]: 0,
|
|
486
487
|
});
|
|
487
488
|
}
|
|
488
|
-
else if (getIsFirstItem()) {
|
|
489
|
-
slideToPrevItem();
|
|
490
|
-
}
|
|
491
489
|
else if (slideFluidEndReached.current) {
|
|
492
490
|
setCarouselStyles.start({
|
|
493
491
|
[carouselSlideAxis]: -fluidTotalWrapperScrollValue.current,
|
|
@@ -511,8 +509,14 @@
|
|
|
511
509
|
eventName: 'onDrag',
|
|
512
510
|
...props,
|
|
513
511
|
});
|
|
512
|
+
const direction = props.direction[carouselSlideAxis === 'x' ? 0 : 1];
|
|
513
|
+
if (direction > 0) {
|
|
514
|
+
setSlideActionType('prev');
|
|
515
|
+
}
|
|
516
|
+
else {
|
|
517
|
+
setSlideActionType('next');
|
|
518
|
+
}
|
|
514
519
|
if (freeScroll) {
|
|
515
|
-
const direction = props.direction[carouselSlideAxis === 'x' ? 0 : 1];
|
|
516
520
|
if (getWrapperScrollDirection() === 0 && direction > 0) {
|
|
517
521
|
props.cancel();
|
|
518
522
|
}
|
|
@@ -577,6 +581,7 @@
|
|
|
577
581
|
}
|
|
578
582
|
}, {
|
|
579
583
|
enabled: !disableGestures,
|
|
584
|
+
preventScrollAxis: 'x',
|
|
580
585
|
});
|
|
581
586
|
// Perform some check on first mount
|
|
582
587
|
useMount(() => {
|
|
@@ -647,6 +652,9 @@
|
|
|
647
652
|
}
|
|
648
653
|
}
|
|
649
654
|
}, [carouselSlideAxis]);
|
|
655
|
+
react.useEffect(() => {
|
|
656
|
+
setTimeout(() => adjustCarouselWrapperPosition(carouselTrackWrapperRef.current), 150);
|
|
657
|
+
}, [adjustCarouselWrapperPosition, carouselSlideAxis, itemsPerSlide]);
|
|
650
658
|
function setSlideActionType(type) {
|
|
651
659
|
slideActionType.current = type;
|
|
652
660
|
}
|
|
@@ -712,8 +720,8 @@
|
|
|
712
720
|
eventName: 'onSlideStartChange',
|
|
713
721
|
slideActionType: getSlideActionType(),
|
|
714
722
|
nextItem: {
|
|
715
|
-
index: to,
|
|
716
|
-
id: items[to].id,
|
|
723
|
+
index: itemsPerSlide === 'fluid' ? -1 : to,
|
|
724
|
+
id: itemsPerSlide === 'fluid' ? '' : items[to].id,
|
|
717
725
|
},
|
|
718
726
|
});
|
|
719
727
|
}
|
|
@@ -751,8 +759,8 @@
|
|
|
751
759
|
eventName: 'onSlideChange',
|
|
752
760
|
slideActionType: getSlideActionType(),
|
|
753
761
|
currentItem: {
|
|
754
|
-
index: getCurrentActiveItem(),
|
|
755
|
-
id: items[getCurrentActiveItem()].id,
|
|
762
|
+
index: itemsPerSlide === 'fluid' ? -1 : getCurrentActiveItem(),
|
|
763
|
+
id: itemsPerSlide === 'fluid' ? '' : items[getCurrentActiveItem()].id,
|
|
756
764
|
},
|
|
757
765
|
});
|
|
758
766
|
}
|
package/dist/index.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.js","sources":["../src/modules/useCustomEventsModule.tsx","../src/modules/useFullscreenModule.tsx","../src/utils.ts","../src/modules/useThumbsModule.tsx","../src/useSpringCarousel.tsx","../src/useTransitionCarousel.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react'\nimport { Subject } from 'rxjs'\nimport { EventsObservableProps, ObservableCallbackFn, EmitObservableFn } from '../types'\n\nexport function useCustomEventsModule() {\n const eventsObserverRef = useRef(new Subject<EventsObservableProps>())\n\n function useListenToCustomEvent(fn: ObservableCallbackFn) {\n useEffect(() => {\n const subscribe = eventsObserverRef.current.subscribe(fn)\n return () => subscribe.unsubscribe()\n }, [fn])\n }\n\n const emitObservable: EmitObservableFn = data => {\n eventsObserverRef.current.next(data)\n }\n\n return {\n useListenToCustomEvent,\n emitObservable,\n }\n}\n","import { useRef, MutableRefObject, useEffect } from 'react'\nimport screenfull from 'screenfull'\nimport { EmitObservableFn } from '../types'\n\ntype FullscreenModule = {\n mainCarouselWrapperRef: MutableRefObject<HTMLDivElement | null>\n emitObservable: EmitObservableFn\n handleResize?(): void\n}\n\nexport function useFullscreenModule({\n mainCarouselWrapperRef,\n emitObservable,\n handleResize,\n}: FullscreenModule) {\n const isFullscreen = useRef(false)\n\n useEffect(() => {\n function handleFullscreenChange() {\n if (document.fullscreenElement) {\n setIsFullscreen(true)\n emitObservable({\n eventName: 'onFullscreenChange',\n isFullscreen: true,\n })\n\n handleResize && handleResize()\n }\n\n if (!document.fullscreenElement) {\n setIsFullscreen(false)\n emitObservable({\n eventName: 'onFullscreenChange',\n isFullscreen: false,\n })\n handleResize && handleResize()\n }\n }\n\n if (screenfull.isEnabled) {\n screenfull.on('change', handleFullscreenChange)\n return () => {\n if (screenfull.isEnabled) {\n screenfull.off('change', handleFullscreenChange)\n }\n }\n }\n })\n\n function setIsFullscreen(_isFullscreen: boolean) {\n isFullscreen.current = _isFullscreen\n }\n\n function getIsFullscreen() {\n return isFullscreen.current\n }\n\n function enterFullscreen(elementRef?: HTMLElement) {\n if (screenfull.isEnabled) {\n screenfull.request((elementRef || mainCarouselWrapperRef.current) as Element)\n }\n }\n\n function exitFullscreen() {\n screenfull.isEnabled && screenfull.exit()\n }\n\n return {\n enterFullscreen,\n exitFullscreen,\n getIsFullscreen,\n }\n}\n","import { useRef, useEffect } from 'react'\n\ntype Callback = () => void | (() => void)\n\nexport function useMount(callback: Callback) {\n const isMounted = useRef(false)\n\n useEffect(() => {\n if (!isMounted.current) {\n const clean = callback()\n isMounted.current = true\n\n return () => {\n clean && clean()\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n}\n\nexport function getIsBrowser() {\n return typeof window !== 'undefined'\n}\n","import { forwardRef, HTMLAttributes, useRef } from 'react'\nimport { useSpring, SpringConfig, animated } from 'react-spring'\nimport { useMount } from 'src/utils'\nimport {\n UseSpringCarouselProps,\n ReactSpringThumbItem,\n PrepareThumbsData,\n UseSpringCarouselItems,\n SlideActionType,\n} from '../types'\n\ntype OffsetDimension = 'offsetWidth' | 'offsetHeight'\ntype OffsetDirection = 'offsetLeft' | 'offsetTop'\ntype ScrollDirection = 'scrollLeft' | 'scrollTop'\n\ntype Props = {\n items: UseSpringCarouselItems['items']\n withThumbs: boolean\n thumbsSlideAxis: UseSpringCarouselProps['thumbsSlideAxis']\n springConfig: SpringConfig\n prepareThumbsData?: PrepareThumbsData\n itemsPerSlide?: UseSpringCarouselProps['itemsPerSlide']\n CustomThumbsWrapperComponent?: UseSpringCarouselProps['CustomThumbsWrapperComponent']\n getFluidWrapperScrollValue?(): number\n getSlideValue?(): number\n}\n\ntype WrapperProps = {\n children: React.ReactNode\n} & HTMLAttributes<HTMLDivElement>\n\nconst InternalWrapper = forwardRef<HTMLDivElement, WrapperProps>(\n ({ children, ...rest }, ref) => {\n return (\n <animated.div {...rest} ref={ref}>\n {children}\n </animated.div>\n )\n },\n)\n\nexport function useThumbsModule({\n items,\n withThumbs,\n thumbsSlideAxis = 'x',\n springConfig,\n prepareThumbsData,\n itemsPerSlide,\n getFluidWrapperScrollValue = () => 0,\n getSlideValue = () => 0,\n CustomThumbsWrapperComponent,\n}: Props) {\n const internalThumbsWrapperRef = useRef<HTMLDivElement | null>(null)\n const [thumbListStyles, setThumbListStyles] = useSpring(() => ({\n x: 0,\n y: 0,\n config: springConfig,\n onChange: ({ value }) => {\n if (internalThumbsWrapperRef.current) {\n internalThumbsWrapperRef.current[\n thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ] = Math.abs(value[thumbsSlideAxis])\n }\n },\n }))\n\n useMount(() => {\n if (withThumbs && !internalThumbsWrapperRef.current) {\n throw new Error(\n \"The thumbs wrapper is not defined. If you've passed a Functional component, be sure to wrap your component in forwardRef.\",\n )\n }\n })\n\n function getCurrentThumbScrollValue() {\n return internalThumbsWrapperRef.current![\n thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ]\n }\n function getThumbsTotalScrollableValue() {\n return Math.round(\n Number(\n internalThumbsWrapperRef.current?.[\n thumbsSlideAxis === 'x' ? 'scrollWidth' : 'scrollHeight'\n ],\n ) -\n internalThumbsWrapperRef.current!.getBoundingClientRect()[\n thumbsSlideAxis === 'x' ? 'width' : 'height'\n ],\n )\n }\n\n function getThumbSlideValue() {\n const thumbSlideTotal = Math.round(getFluidWrapperScrollValue() / getSlideValue())\n const totalScrollableValue = getThumbsTotalScrollableValue()\n return totalScrollableValue / thumbSlideTotal\n }\n\n function handleThumbsScroll(activeItem: number, actionType?: SlideActionType) {\n if (itemsPerSlide === 'fluid') {\n const totalScrollableValue = getThumbsTotalScrollableValue()\n\n if (actionType === 'next') {\n const nextValue = getCurrentThumbScrollValue() + getThumbSlideValue()\n setThumbListStyles.start({\n from: {\n [thumbsSlideAxis]: getCurrentThumbScrollValue(),\n },\n to: {\n [thumbsSlideAxis]:\n nextValue > totalScrollableValue ? totalScrollableValue : nextValue,\n },\n })\n }\n if (actionType === 'prev') {\n const nextValue = getCurrentThumbScrollValue() - getThumbSlideValue()\n setThumbListStyles.start({\n from: {\n [thumbsSlideAxis]: getCurrentThumbScrollValue(),\n },\n to: {\n [thumbsSlideAxis]: nextValue < 0 ? 0 : nextValue,\n },\n })\n }\n } else {\n function getOffsetDirection() {\n return thumbsSlideAxis === 'x' ? 'offsetLeft' : 'offsetTop'\n }\n function getOffsetDimension() {\n return thumbsSlideAxis === 'x' ? 'offsetWidth' : 'offsetHeight'\n }\n function getScrollDirecton() {\n return thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n }\n function getThumbNode() {\n return internalThumbsWrapperRef.current!.querySelector(\n `#thumb-${items[activeItem].id}`,\n ) as HTMLElement\n }\n function getThumbOffsetPosition({\n thumbNode,\n offsetDirection,\n offsetDimension,\n }: {\n thumbNode: HTMLElement\n offsetDirection: OffsetDirection\n offsetDimension: OffsetDimension\n }) {\n return thumbNode[offsetDirection] + thumbNode[offsetDimension] / 2\n }\n function getThumbScrollDimension({\n thumbWrapper,\n offsetDimension,\n }: {\n thumbWrapper: HTMLDivElement\n offsetDimension: OffsetDimension\n }) {\n return thumbWrapper[offsetDimension] / 2\n }\n function getScrollFromValue({\n thumbWrapper,\n scrollDirection,\n }: {\n thumbWrapper: HTMLDivElement\n scrollDirection: ScrollDirection\n }) {\n return thumbWrapper[scrollDirection]\n }\n function getScrollToValue({\n thumbWrapper,\n thumbOffsetPosition,\n thumbScrollDimension,\n offsetDimension,\n }: {\n thumbWrapper: HTMLDivElement\n thumbOffsetPosition: number\n thumbScrollDimension: number\n offsetDimension: OffsetDimension\n }) {\n const scrollDimensionProperty =\n thumbsSlideAxis === 'x' ? 'scrollWidth' : 'scrollHeight'\n\n if (\n activeItem === items.length - 1 ||\n thumbOffsetPosition - thumbScrollDimension >\n thumbWrapper[scrollDimensionProperty] - thumbWrapper[offsetDimension]\n ) {\n return thumbWrapper[scrollDimensionProperty] - thumbWrapper[offsetDimension]\n }\n if (activeItem === 0) {\n return 0\n }\n\n return thumbOffsetPosition - thumbScrollDimension\n }\n\n const thumbNode = getThumbNode()\n\n if (thumbNode) {\n const thumbWrapper = internalThumbsWrapperRef.current!\n const offsetDirection = getOffsetDirection()\n const offsetDimension = getOffsetDimension()\n const scrollDirection = getScrollDirecton()\n const thumbOffsetPosition = getThumbOffsetPosition({\n thumbNode,\n offsetDimension,\n offsetDirection,\n })\n const thumbScrollDimension = getThumbScrollDimension({\n thumbWrapper,\n offsetDimension,\n })\n\n setThumbListStyles.start({\n from: {\n [thumbsSlideAxis]: getScrollFromValue({\n thumbWrapper,\n scrollDirection,\n }),\n },\n to: {\n [thumbsSlideAxis]: getScrollToValue({\n thumbWrapper,\n thumbOffsetPosition,\n thumbScrollDimension,\n offsetDimension,\n }),\n },\n onChange: val => {\n if (thumbsSlideAxis === 'x') {\n // @ts-ignore\n internalThumbsWrapperRef!.current!.scrollLeft = val.x\n } else {\n // @ts-ignore\n internalThumbsWrapperRef!.current!.scrollTop = val.y\n }\n },\n })\n }\n }\n }\n function handlePrepareThumbsDate() {\n function getPreparedItems(\n _items: UseSpringCarouselItems['items'],\n ): ReactSpringThumbItem[] {\n return _items.map(i => ({\n id: i.id,\n renderThumb: i.renderThumb,\n }))\n }\n\n if (prepareThumbsData) {\n return prepareThumbsData(getPreparedItems(items))\n }\n return getPreparedItems(items)\n }\n\n const Wrapper = CustomThumbsWrapperComponent\n ? animated(CustomThumbsWrapperComponent)\n : InternalWrapper\n\n const thumbsFragment = withThumbs ? (\n <Wrapper\n ref={internalThumbsWrapperRef}\n className=\"use-spring-carousel-thumbs-wrapper\"\n onWheel={() => {\n thumbListStyles[thumbsSlideAxis].stop()\n }}\n style={{\n display: 'flex',\n flex: 1,\n position: 'relative',\n flexDirection: thumbsSlideAxis === 'x' ? 'row' : 'column',\n ...(thumbsSlideAxis === 'x'\n ? { overflowX: 'auto' }\n : {\n overflowY: 'auto',\n maxHeight: '100%',\n }),\n }}\n >\n {handlePrepareThumbsDate().map(({ id, renderThumb }) => {\n const thumbId = `thumb-${id}`\n return (\n <div key={thumbId} id={thumbId}>\n {renderThumb}\n </div>\n )\n })}\n </Wrapper>\n ) : null\n\n return {\n thumbsFragment,\n handleThumbsScroll,\n }\n}\n","import { useRef, createContext, useCallback, useContext, useEffect } from 'react'\nimport { useSpring, config, animated } from 'react-spring'\nimport { useDrag } from '@use-gesture/react'\nimport { useCustomEventsModule, useFullscreenModule, useThumbsModule } from './modules'\nimport {\n UseSpringCarouselProps,\n SlideToItemFnProps,\n SlideActionType,\n UseSpringDafaultTypeReturnProps,\n UseSpringFluidTypeReturnProps,\n} from './types'\nimport { useMount } from './utils'\nimport { getIsBrowser } from './utils'\n\ntype ReturnHook<T> = T extends 'fluid'\n ? UseSpringFluidTypeReturnProps\n : UseSpringDafaultTypeReturnProps\n\nconst UseSpringCarouselContext = createContext<\n (UseSpringFluidTypeReturnProps | UseSpringDafaultTypeReturnProps) | undefined\n>(undefined)\n\nexport default function useSpringCarousel<T>({\n itemsPerSlide = 1,\n items,\n withLoop = false,\n draggingSlideTreshold = 140,\n springConfig = config.default,\n shouldResizeOnWindowResize = true,\n withThumbs = false,\n enableThumbsWrapperScroll = true,\n carouselSlideAxis = 'x',\n thumbsSlideAxis = 'x',\n prepareThumbsData,\n initialActiveItem = 0,\n initialStartingPosition = 'start',\n disableGestures = false,\n gutter = 0,\n startEndGutter = 0,\n touchAction,\n slideAmount,\n freeScroll = false,\n CustomThumbsWrapperComponent,\n}: UseSpringCarouselProps): ReturnHook<T> & {\n carouselFragment: JSX.Element\n thumbsFragment: JSX.Element\n} {\n function getItems() {\n if (withLoop) {\n return [...items, ...items, ...items]\n }\n return items\n }\n const slideActionType = useRef<SlideActionType>('initial')\n const internalItems = getItems()\n const activeItem = useRef(initialActiveItem)\n const mainCarouselWrapperRef = useRef<HTMLDivElement | null>(null)\n const carouselTrackWrapperRef = useRef<HTMLDivElement | null>(null)\n const isDragging = useRef(false)\n const isAnimating = useRef(false)\n const windowIsHidden = useRef(false)\n const currentWindowWidth = useRef(0)\n const fluidTotalWrapperScrollValue = useRef(0)\n const slideFluidEndReached = useRef(false)\n const initialWindowWidth = useRef(0)\n\n const [carouselStyles, setCarouselStyles] = useSpring(() => ({\n y: 0,\n x: 0,\n config: springConfig,\n onChange: ({ value }) => {\n if (mainCarouselWrapperRef.current && freeScroll) {\n mainCarouselWrapperRef.current[\n carouselSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ] = Math.abs(value[carouselSlideAxis])\n }\n },\n }))\n function getCarouselItem() {\n return carouselTrackWrapperRef.current?.querySelector('.use-spring-carousel-item')\n }\n const getMainCarouselWrapperWidth = useCallback(() => {\n if (!mainCarouselWrapperRef.current) {\n throw new Error('mainCarouselWrapperRef is not available')\n }\n return mainCarouselWrapperRef.current.getBoundingClientRect()[\n carouselSlideAxis === 'x' ? 'width' : 'height'\n ]\n }, [carouselSlideAxis])\n const getCarouselItemWidth = useCallback(() => {\n const carouselItem = getCarouselItem()\n if (!carouselItem) {\n throw Error('No carousel items available!')\n }\n return (\n carouselItem.getBoundingClientRect()[\n carouselSlideAxis === 'x' ? 'width' : 'height'\n ] + gutter\n )\n }, [carouselSlideAxis, gutter])\n const getCurrentSlidedValue = useCallback(() => {\n return carouselStyles[carouselSlideAxis].get()\n }, [carouselSlideAxis, carouselStyles])\n const getIfItemsNotFillTheCarousel = useCallback(() => {\n return getCarouselItemWidth() * items.length < getMainCarouselWrapperWidth()\n }, [getCarouselItemWidth, getMainCarouselWrapperWidth, items.length])\n const getFluidWrapperScrollValue = useCallback(() => {\n return Math.round(\n Number(\n carouselTrackWrapperRef.current?.[\n carouselSlideAxis === 'x' ? 'scrollWidth' : 'scrollHeight'\n ],\n ) -\n carouselTrackWrapperRef.current!.getBoundingClientRect()[\n carouselSlideAxis === 'x' ? 'width' : 'height'\n ],\n )\n }, [carouselSlideAxis])\n const getIsFirstItem = useCallback(() => {\n return getCurrentActiveItem() === 0\n }, [])\n const getSlideValue = useCallback(() => {\n if (!carouselTrackWrapperRef.current) {\n return 0\n }\n const itemVal = getCarouselItemWidth()\n\n if (itemsPerSlide === 'fluid' && typeof slideAmount === 'number') {\n if (slideAmount < itemVal) {\n throw new Error('slideAmount must be greater than the width of a single item.')\n }\n return slideAmount\n }\n return itemVal\n }, [getCarouselItemWidth, itemsPerSlide, slideAmount])\n const adjustCarouselWrapperPosition = useCallback(\n (ref: HTMLDivElement) => {\n const positionProperty = carouselSlideAxis === 'x' ? 'left' : 'top'\n function getDefaultPositionValue() {\n return getCarouselItemWidth() * items.length\n }\n function setPosition(v: number) {\n ref.style.top = '0px'\n ref.style.left = '0px'\n if (withLoop) {\n ref.style[positionProperty] = `-${v - startEndGutter}px`\n }\n }\n function setStartPosition() {\n setPosition(getDefaultPositionValue())\n }\n\n if (itemsPerSlide !== 'fluid' && typeof itemsPerSlide === 'number') {\n function setCenterPosition() {\n setPosition(\n getDefaultPositionValue() -\n getSlideValue() * Math.round(((itemsPerSlide as number) - 1) / 2),\n )\n }\n function setEndPosition() {\n setPosition(\n getDefaultPositionValue() -\n getSlideValue() * Math.round((itemsPerSlide as number) - 1),\n )\n }\n\n if (itemsPerSlide > 1) {\n switch (initialStartingPosition) {\n default:\n case 'start': {\n setStartPosition()\n break\n }\n case 'center': {\n setCenterPosition()\n break\n }\n case 'end': {\n setEndPosition()\n break\n }\n }\n } else {\n setStartPosition()\n }\n } else {\n setStartPosition()\n }\n },\n [\n carouselSlideAxis,\n itemsPerSlide,\n getCarouselItemWidth,\n items.length,\n startEndGutter,\n getSlideValue,\n initialStartingPosition,\n withLoop,\n ],\n )\n\n const handleResize = useCallback(() => {\n if (window.innerWidth === currentWindowWidth.current || freeScroll) {\n return\n }\n currentWindowWidth.current = window.innerWidth\n\n if (itemsPerSlide === 'fluid') {\n if (getIfItemsNotFillTheCarousel()) {\n setCarouselStyles.start({\n immediate: true,\n [carouselSlideAxis]: 0,\n })\n return\n }\n fluidTotalWrapperScrollValue.current = getFluidWrapperScrollValue()\n const diff = currentWindowWidth.current - initialWindowWidth.current\n\n if (slideFluidEndReached.current) {\n const nextValue = -fluidTotalWrapperScrollValue.current\n setCarouselStyles.start({\n immediate: true,\n [carouselSlideAxis]: nextValue,\n })\n } else {\n const nextValue = getCurrentSlidedValue() + diff\n setCarouselStyles.start({\n immediate: true,\n [carouselSlideAxis]: nextValue,\n })\n }\n\n initialWindowWidth.current = window.innerWidth\n } else {\n setCarouselStyles.start({\n immediate: true,\n x: 0,\n y: 0,\n })\n setCarouselStyles.start({\n immediate: true,\n [carouselSlideAxis]: -(getSlideValue() * getCurrentActiveItem()),\n })\n }\n adjustCarouselWrapperPosition(carouselTrackWrapperRef.current!)\n }, [\n itemsPerSlide,\n getIfItemsNotFillTheCarousel,\n getFluidWrapperScrollValue,\n freeScroll,\n setCarouselStyles,\n carouselSlideAxis,\n getCurrentSlidedValue,\n getSlideValue,\n adjustCarouselWrapperPosition,\n ])\n // Custom modules\n const { useListenToCustomEvent, emitObservable } = useCustomEventsModule()\n const { enterFullscreen, exitFullscreen, getIsFullscreen } = useFullscreenModule({\n mainCarouselWrapperRef,\n emitObservable,\n handleResize,\n })\n const { thumbsFragment: _thumbsFragment, handleThumbsScroll } = useThumbsModule({\n withThumbs,\n items,\n thumbsSlideAxis,\n springConfig,\n prepareThumbsData,\n itemsPerSlide,\n getFluidWrapperScrollValue,\n getSlideValue,\n CustomThumbsWrapperComponent,\n })\n\n function getWrapperScrollDirection() {\n if (!mainCarouselWrapperRef.current) {\n throw new Error('Missing mainCarouselWrapperRef.current')\n }\n return mainCarouselWrapperRef.current[\n carouselSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ]\n }\n\n const bindDrag = useDrag(\n props => {\n const isDragging = props.dragging\n const movement = props.movement[carouselSlideAxis === 'x' ? 0 : 1]\n function resetAnimation() {\n if (itemsPerSlide === 'fluid') {\n if (getIfItemsNotFillTheCarousel()) {\n setCarouselStyles.start({\n [carouselSlideAxis]: 0,\n })\n } else if (getIsFirstItem()) {\n slideToPrevItem()\n } else if (slideFluidEndReached.current) {\n setCarouselStyles.start({\n [carouselSlideAxis]: -fluidTotalWrapperScrollValue.current,\n })\n } else {\n setCarouselStyles.start({\n [carouselSlideAxis]: getCurrentSlidedValue(),\n })\n }\n } else {\n setCarouselStyles.start({\n [carouselSlideAxis]: -(getCurrentActiveItem() * getSlideValue()),\n })\n }\n }\n\n if (isDragging) {\n setIsDragging(true)\n emitObservable({\n eventName: 'onDrag',\n ...props,\n })\n\n if (freeScroll) {\n const direction = props.direction[carouselSlideAxis === 'x' ? 0 : 1]\n if (getWrapperScrollDirection() === 0 && direction > 0) {\n props.cancel()\n } else {\n setCarouselStyles.start({\n from: {\n [carouselSlideAxis]: getWrapperScrollDirection(),\n },\n to: {\n [carouselSlideAxis]:\n direction > 0\n ? getWrapperScrollDirection() - Math.abs(movement)\n : getWrapperScrollDirection() + Math.abs(movement),\n },\n })\n }\n } else {\n setCarouselStyles.start({\n [carouselSlideAxis]: getCurrentSlidedValue() + movement,\n })\n }\n\n const prevItemTreshold = movement > draggingSlideTreshold\n const nextItemTreshold = movement < -draggingSlideTreshold\n\n if (\n mainCarouselWrapperRef.current!.getBoundingClientRect().width >=\n items.length * getSlideValue()\n ) {\n slideFluidEndReached.current = true\n }\n\n if ((prevItemTreshold || nextItemTreshold) && getIfItemsNotFillTheCarousel()) {\n props.cancel()\n resetAnimation()\n return\n }\n\n if (slideFluidEndReached.current && movement < 0) {\n if (nextItemTreshold) {\n props.cancel()\n setCarouselStyles.start({\n [carouselSlideAxis]: -fluidTotalWrapperScrollValue.current,\n })\n }\n } else if (nextItemTreshold) {\n props.cancel()\n if (!withLoop && getIsLastItem()) {\n resetAnimation()\n } else {\n slideToNextItem()\n }\n } else if (prevItemTreshold) {\n props.cancel()\n if (!withLoop && getIsFirstItem()) {\n resetAnimation()\n } else {\n slideToPrevItem()\n }\n }\n }\n if (props.last && !props.pressed && !freeScroll) {\n resetAnimation()\n }\n },\n {\n enabled: !disableGestures,\n },\n )\n\n // Perform some check on first mount\n useMount(() => {\n if (itemsPerSlide !== 'fluid' && !Number.isInteger(itemsPerSlide)) {\n throw new Error(`itemsPerSlide should be an integer.`)\n }\n if (itemsPerSlide > items.length) {\n throw new Error(\n `The itemsPerSlide prop can't be greater than the total length of the items you provide.`,\n )\n }\n if (itemsPerSlide < 1) {\n throw new Error(`The itemsPerSlide prop can't be less than 1.`)\n }\n if (!shouldResizeOnWindowResize) {\n console.warn(\n 'You set shouldResizeOnWindowResize={false}; be aware that the carousel could behave in a strange way if you also use the fullscreen functionality or if you change the mobile orientation.',\n )\n }\n if (initialActiveItem < 0) {\n console.warn('The initialActiveItem cannot be less than 0.')\n }\n if (initialActiveItem > items.length) {\n console.warn(\n 'The initialActiveItem cannot be greater than the total length of the items you provide.',\n )\n }\n })\n useMount(() => {\n fluidTotalWrapperScrollValue.current = getFluidWrapperScrollValue()\n function handleVisibilityChange() {\n if (document.hidden) {\n windowIsHidden.current = true\n } else {\n windowIsHidden.current = false\n }\n }\n if (getIsBrowser()) {\n document.addEventListener('visibilitychange', handleVisibilityChange)\n return () => {\n document.removeEventListener('visibilitychange', handleVisibilityChange)\n }\n }\n })\n useMount(() => {\n initialWindowWidth.current = window.innerWidth\n if (initialActiveItem > 0 && initialActiveItem <= items.length) {\n slideToItem({\n to: initialActiveItem,\n immediate: true,\n })\n setActiveItem(initialActiveItem)\n }\n })\n useEffect(() => {\n function resize() {\n setTimeout(handleResize)\n }\n if (shouldResizeOnWindowResize) {\n window.addEventListener('resize', resize)\n return () => {\n window.removeEventListener('resize', resize)\n }\n }\n }, [handleResize, shouldResizeOnWindowResize])\n useEffect(() => {\n if (carouselTrackWrapperRef.current) {\n if (carouselSlideAxis === 'x') {\n carouselTrackWrapperRef.current.style.top = '0px'\n }\n if (carouselSlideAxis === 'y') {\n carouselTrackWrapperRef.current.style.left = '0px'\n }\n }\n }, [carouselSlideAxis])\n\n function setSlideActionType(type: SlideActionType) {\n slideActionType.current = type\n }\n function getSlideActionType() {\n return slideActionType.current\n }\n function setActiveItem(newItem: number) {\n activeItem.current = newItem\n }\n function getCurrentActiveItem() {\n return activeItem.current\n }\n function getIsAnimating() {\n return isAnimating.current\n }\n function setIsAnimating(val: boolean) {\n isAnimating.current = val\n }\n function setIsDragging(val: boolean) {\n isDragging.current = val\n }\n function getIsDragging() {\n return isDragging.current\n }\n function getPrevItem() {\n const currentActiveItem = getCurrentActiveItem()\n if (currentActiveItem === 0) {\n return items.length - 1\n }\n return currentActiveItem - 1\n }\n function getNextItem() {\n const currentActiveItem = getCurrentActiveItem()\n if (currentActiveItem === items.length - 1) {\n return 0\n }\n return currentActiveItem + 1\n }\n function getIsNextItem(id: string) {\n const itemIndex = findItemIndex(id)\n const activeItem = getCurrentActiveItem()\n if (withLoop && activeItem === items.length - 1) {\n return itemIndex === 0\n }\n return itemIndex === activeItem + 1\n }\n function getIsPrevItem(id: string) {\n const itemIndex = findItemIndex(id)\n const activeItem = getCurrentActiveItem()\n if (withLoop && activeItem === 0) {\n return itemIndex === items.length - 1\n }\n return itemIndex === activeItem - 1\n }\n function findItemIndex(id: string) {\n return items.findIndex(item => item.id === id)\n }\n function slideToItem({\n from,\n to = -1,\n customTo,\n immediate = false,\n onRest = () => {},\n }: SlideToItemFnProps) {\n if (!immediate) {\n setActiveItem(to)\n setIsAnimating(true)\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: to,\n id: items[to].id,\n },\n })\n }\n\n function getFromValue() {\n if (typeof from === 'number') {\n return {\n from: {\n [carouselSlideAxis]: from,\n },\n }\n }\n return {}\n }\n function getToValue() {\n if (typeof customTo === 'number') {\n return {\n [carouselSlideAxis]: customTo,\n }\n }\n return {\n [carouselSlideAxis]: -(getSlideValue() * to),\n }\n }\n\n setCarouselStyles.start({\n ...getFromValue(),\n to: getToValue(),\n immediate,\n onRest: val => {\n if (val.finished) {\n setIsDragging(false)\n setIsAnimating(false)\n onRest()\n if (!immediate) {\n emitObservable({\n eventName: 'onSlideChange',\n slideActionType: getSlideActionType(),\n currentItem: {\n index: getCurrentActiveItem(),\n id: items[getCurrentActiveItem()].id,\n },\n })\n }\n }\n },\n })\n if (enableThumbsWrapperScroll && withThumbs && !immediate) {\n handleThumbsScroll(to, getSlideActionType())\n }\n }\n function getIsLastItem() {\n return getCurrentActiveItem() === items.length - 1\n }\n function slideToPrevItem() {\n setSlideActionType('prev')\n\n if (itemsPerSlide === 'fluid') {\n if (getIfItemsNotFillTheCarousel()) {\n return\n }\n const nextPrevValue = getCurrentSlidedValue() + getSlideValue() + 200\n\n if (freeScroll) {\n const nextValue = mainCarouselWrapperRef.current!.scrollLeft - getSlideValue()\n slideToItem({\n customTo: nextValue < 0 ? 0 : nextValue,\n from: mainCarouselWrapperRef.current!.scrollLeft,\n })\n } else if (nextPrevValue >= 0) {\n if (withLoop) {\n slideToItem({\n from: getCurrentSlidedValue() - getCarouselItemWidth() * items.length,\n customTo:\n getCurrentSlidedValue() -\n getCarouselItemWidth() * items.length +\n getSlideValue(),\n })\n } else {\n slideToItem({\n customTo: 0,\n })\n }\n } else {\n slideToItem({\n customTo: getCurrentSlidedValue() + getSlideValue(),\n })\n }\n if (slideFluidEndReached.current) {\n slideFluidEndReached.current = false\n }\n } else {\n if ((!withLoop && getCurrentActiveItem() === 0) || windowIsHidden.current) {\n return\n }\n\n if (getIsFirstItem()) {\n slideToItem({\n from: getCurrentSlidedValue() - getSlideValue() * items.length,\n to: items.length - 1,\n })\n } else {\n slideToItem({\n to: getPrevItem(),\n })\n }\n }\n }\n function slideToNextItem() {\n setSlideActionType('next')\n\n if (itemsPerSlide === 'fluid') {\n if (getIfItemsNotFillTheCarousel()) {\n return\n }\n const willGoAfterLastFluidItem =\n Math.abs(getCurrentSlidedValue() - getSlideValue()) + 100 >=\n fluidTotalWrapperScrollValue.current\n\n if (freeScroll) {\n slideToItem({\n customTo: mainCarouselWrapperRef.current!.scrollLeft + getSlideValue(),\n from: mainCarouselWrapperRef.current!.scrollLeft,\n })\n } else if (\n withLoop &&\n Math.abs(getCurrentSlidedValue() - getSlideValue()) >=\n items.length * getCarouselItemWidth()\n ) {\n const currentWidth = getCarouselItemWidth() * items.length\n slideToItem({\n from: getCurrentSlidedValue() + currentWidth,\n customTo: getCurrentSlidedValue() + currentWidth - getSlideValue(),\n })\n } else if (slideFluidEndReached.current) {\n return\n } else if (willGoAfterLastFluidItem) {\n slideFluidEndReached.current = true\n slideToItem({\n customTo: -fluidTotalWrapperScrollValue.current,\n })\n } else {\n slideToItem({\n customTo: getCurrentSlidedValue() - getSlideValue(),\n })\n }\n } else {\n if (\n (!withLoop && getCurrentActiveItem() === internalItems.length - 1) ||\n windowIsHidden.current\n ) {\n return\n }\n\n if (getIsLastItem()) {\n slideToItem({\n from: getCurrentSlidedValue() + getSlideValue() * items.length,\n to: 0,\n })\n } else {\n slideToItem({\n to: getNextItem(),\n })\n }\n }\n }\n function _slideToItem(item: string | number) {\n let itemIndex = 0\n\n if (typeof item === 'string') {\n itemIndex = items.findIndex(_item => _item.id === item)\n } else {\n itemIndex = item\n }\n\n if (itemIndex >= items.length) {\n throw Error(\n `The item you want to slide to doesn't exist. This could be due to the fact that \n you provide a wrong id or a higher numeric index.`,\n )\n }\n if (itemIndex === getCurrentActiveItem()) {\n return\n }\n\n const currentItem = findItemIndex(items[getCurrentActiveItem()].id)\n const newActiveItem = findItemIndex(items[itemIndex].id)\n\n if (newActiveItem > currentItem) {\n setSlideActionType('next')\n } else {\n setSlideActionType('prev')\n }\n\n slideToItem({\n to: itemIndex,\n })\n }\n\n const contextProps = {\n useListenToCustomEvent,\n getIsFullscreen,\n enterFullscreen,\n exitFullscreen,\n getIsAnimating,\n getIsDragging,\n getIsNextItem,\n getIsPrevItem,\n slideToPrevItem,\n slideToNextItem,\n ...(typeof itemsPerSlide === 'number'\n ? {\n slideToItem: _slideToItem,\n getIsActiveItem: (id: string) => {\n return findItemIndex(id) === getCurrentActiveItem()\n },\n getCurrentActiveItem: () => ({\n id: items[getCurrentActiveItem()].id,\n index: getCurrentActiveItem(),\n }),\n }\n : {}),\n }\n function getItemStyles() {\n if (typeof itemsPerSlide === 'number') {\n return {\n ...(carouselSlideAxis === 'x'\n ? { marginRight: `${gutter}px` }\n : { marginBottom: `${gutter}px` }),\n flex: `1 0 calc(100% / ${itemsPerSlide} - ${\n (gutter * (itemsPerSlide - 1)) / itemsPerSlide\n }px)`,\n }\n }\n return {\n ...(carouselSlideAxis === 'x'\n ? { marginRight: `${gutter}px` }\n : { marginBottom: `${gutter}px` }),\n }\n }\n function getAnimatedWrapperStyles() {\n const percentValue = `calc(100% - ${startEndGutter * 2}px)`\n return {\n width: carouselSlideAxis === 'x' ? percentValue : '100%',\n height: carouselSlideAxis === 'y' ? percentValue : '100%',\n }\n }\n function handleCarouselFragmentRef(ref: HTMLDivElement | null) {\n if (ref) {\n carouselTrackWrapperRef.current = ref\n adjustCarouselWrapperPosition(ref)\n }\n }\n function getOverflowStyles() {\n if (freeScroll) {\n if (carouselSlideAxis === 'x') {\n return {\n overflowX: 'auto',\n }\n }\n return {\n overflowY: 'auto',\n }\n }\n return {}\n }\n function getWheelEvent() {\n if (freeScroll) {\n return {\n onWheel() {\n carouselStyles[carouselSlideAxis].stop()\n },\n }\n }\n return {}\n }\n function getTouchAction() {\n if (!touchAction) {\n if (carouselSlideAxis === 'x') {\n return 'pan-y'\n }\n return 'pan-x'\n }\n return touchAction\n }\n const carouselFragment = (\n <UseSpringCarouselContext.Provider value={contextProps}>\n <div\n ref={mainCarouselWrapperRef}\n className=\"use-spring-carousel-main-wrapper\"\n data-testid=\"use-spring-carousel-wrapper\"\n {...getWheelEvent()}\n // @ts-ignore\n style={{\n display: 'flex',\n position: 'relative',\n width: '100%',\n height: '100%',\n ...getOverflowStyles(),\n }}\n >\n <animated.div\n {...bindDrag()}\n className=\"use-spring-carousel-track-wrapper\"\n data-testid=\"use-spring-carousel-animated-wrapper\"\n ref={handleCarouselFragmentRef}\n style={{\n display: 'flex',\n position: 'relative',\n touchAction: getTouchAction(),\n flexDirection: carouselSlideAxis === 'x' ? 'row' : 'column',\n ...getAnimatedWrapperStyles(),\n ...(freeScroll ? {} : carouselStyles),\n }}\n >\n {internalItems.map(({ id, renderItem }, index) => {\n return (\n <div\n key={`${id}-${index}`}\n className=\"use-spring-carousel-item\"\n data-testid=\"use-spring-carousel-item-wrapper\"\n style={{\n display: 'flex',\n position: 'relative',\n ...getItemStyles(),\n }}\n >\n {renderItem}\n </div>\n )\n })}\n </animated.div>\n </div>\n </UseSpringCarouselContext.Provider>\n )\n const thumbsFragment = (\n <UseSpringCarouselContext.Provider value={contextProps}>\n {_thumbsFragment}\n </UseSpringCarouselContext.Provider>\n )\n\n return {\n ...(contextProps as ReturnHook<T>),\n carouselFragment,\n thumbsFragment,\n }\n}\n\nexport function useSpringCarouselContext<T>() {\n const context = useContext(UseSpringCarouselContext)\n if (!context) {\n throw new Error(\n 'useSpringCarouselContext must be used only inside a component that is rendered inside the Carousel.',\n )\n }\n return context as ReturnHook<T>\n}\n","import { createContext, useRef, useState, useContext } from 'react'\nimport { useTransition, animated, config } from 'react-spring'\nimport { useDrag } from '@use-gesture/react'\nimport { useCustomEventsModule, useThumbsModule, useFullscreenModule } from './modules'\nimport {\n UseTransitionCarouselContextProps,\n UseTransitionCarouselProps,\n SlideActionType,\n} from './types'\n\nconst UseTransitionCarouselContext = createContext<\n UseTransitionCarouselContextProps | undefined\n>(undefined)\n\nexport function useTransitionCarouselContext() {\n const context = useContext(UseTransitionCarouselContext)\n\n if (!context) {\n throw new Error(`useTransitionCarouselContext isn't being used within the useTransitionCarousel context; \n use the context only inside a component that is rendered within the Carousel.`)\n }\n\n return context\n}\n\nexport default function useTransitionCarousel({\n items,\n withLoop = false,\n withThumbs = false,\n springConfig = config.default,\n thumbsSlideAxis = 'x',\n enableThumbsWrapperScroll = true,\n draggingSlideTreshold = 50,\n prepareThumbsData,\n toPrevItemSpringProps,\n toNextItemSpringProps,\n disableGestures = false,\n CustomThumbsWrapperComponent,\n springAnimationProps = {\n initial: {\n opacity: 1,\n position: 'relative',\n },\n from: {\n opacity: 0,\n position: 'absolute',\n },\n enter: {\n opacity: 1,\n position: 'relative',\n },\n leave: {\n opacity: 0,\n position: 'absolute',\n },\n },\n}: UseTransitionCarouselProps) {\n const slideActionType = useRef<SlideActionType>('next')\n const mainCarouselWrapperRef = useRef<HTMLDivElement | null>(null)\n const isAnimating = useRef(false)\n const [activeItem, setActiveItem] = useState(0)\n\n const { emitObservable, useListenToCustomEvent } = useCustomEventsModule()\n const { enterFullscreen, exitFullscreen, getIsFullscreen } = useFullscreenModule({\n emitObservable,\n mainCarouselWrapperRef,\n })\n const { thumbsFragment: _thumbsFragment, handleThumbsScroll } = useThumbsModule({\n items,\n withThumbs,\n thumbsSlideAxis,\n springConfig,\n prepareThumbsData,\n CustomThumbsWrapperComponent,\n })\n\n const bindSwipe = useDrag(\n ({ last, movement: [mx] }) => {\n if (getIsAnimating()) {\n return\n }\n\n if (last) {\n const prevItemTreshold = mx > draggingSlideTreshold\n const nextItemTreshold = mx < -draggingSlideTreshold\n const isFirstItem = activeItem === 0\n const isLastItem = activeItem === items.length - 1\n\n if (nextItemTreshold) {\n if (!withLoop && isLastItem) {\n return\n }\n\n slideToNextItem()\n emitObservable({\n eventName: 'onLeftSwipe',\n })\n } else if (prevItemTreshold) {\n if (!withLoop && isFirstItem) {\n return\n }\n\n slideToPrevItem()\n emitObservable({\n eventName: 'onRightSwipe',\n })\n }\n }\n },\n {\n enabled: !disableGestures,\n },\n )\n\n function getTransitionConfig() {\n const slideActionType = getSlideActionType()\n\n if (slideActionType === 'prev' && toPrevItemSpringProps) {\n return {\n initial: {\n ...springAnimationProps.initial,\n },\n from: {\n ...toPrevItemSpringProps.from,\n },\n enter: {\n ...toPrevItemSpringProps.enter,\n },\n leave: {\n ...toPrevItemSpringProps.leave,\n },\n }\n }\n\n if (slideActionType === 'next' && toNextItemSpringProps) {\n return {\n initial: {\n ...springAnimationProps.initial,\n },\n from: {\n ...toNextItemSpringProps.from,\n },\n enter: {\n ...toNextItemSpringProps.enter,\n },\n leave: {\n ...toNextItemSpringProps.leave,\n },\n }\n }\n\n return {\n initial: {\n ...springAnimationProps.initial,\n },\n from: {\n ...springAnimationProps.from,\n },\n enter: {\n ...springAnimationProps.enter,\n },\n leave: {\n ...springAnimationProps.leave,\n },\n }\n }\n\n const transitions = useTransition(activeItem, {\n config: springConfig,\n ...getTransitionConfig(),\n onStart: () => setIsAnimating(true),\n keys: null,\n onRest: val => {\n if (val.finished) {\n setIsAnimating(false)\n emitObservable({\n eventName: 'onSlideChange',\n slideActionType: getSlideActionType(),\n currentItem: {\n index: activeItem,\n id: items[activeItem].id,\n },\n })\n }\n },\n })\n const itemsFragment = transitions((styles, item) => (\n <animated.div\n style={{\n ...styles,\n flex: '1 0 100%',\n width: '100%',\n height: '100%',\n }}\n >\n {items[item].renderItem}\n </animated.div>\n ))\n\n function getIsAnimating() {\n return isAnimating.current\n }\n function setIsAnimating(val: boolean) {\n isAnimating.current = val\n }\n function setSlideActionType(type: SlideActionType) {\n slideActionType.current = type\n }\n function getSlideActionType() {\n return slideActionType.current\n }\n function slideToItem(item: string | number) {\n let itemIndex = 0\n\n if (typeof item === 'string') {\n itemIndex = items.findIndex(_item => _item.id === item)\n } else {\n itemIndex = item\n }\n\n if (itemIndex >= items.length) {\n throw Error(\n `The item you want to slide to doesn't exist. This could be due to the fact that \n you provide a wrong id or a higher numeric index.`,\n )\n }\n\n if (itemIndex === activeItem) {\n return\n }\n\n const currentItem = findItemIndex(items[activeItem].id)\n const newActiveItem = findItemIndex(items[itemIndex].id)\n\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: newActiveItem,\n id: items[itemIndex].id,\n },\n })\n\n if (newActiveItem > currentItem) {\n setSlideActionType('next')\n } else {\n setSlideActionType('prev')\n }\n\n setActiveItem(itemIndex)\n\n if (enableThumbsWrapperScroll && withThumbs) {\n handleThumbsScroll(itemIndex)\n }\n }\n function slideToNextItem() {\n const isLastItem = activeItem === items.length - 1\n\n if (withLoop) {\n setSlideActionType('next')\n if (isLastItem) {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: 0,\n id: items[0].id,\n },\n })\n setActiveItem(0)\n } else {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem + 1,\n id: items[activeItem + 1].id,\n },\n })\n setActiveItem(activeItem + 1)\n }\n } else {\n if (!isLastItem) {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem + 1,\n id: items[activeItem + 1].id,\n },\n })\n setSlideActionType('next')\n setActiveItem(activeItem + 1)\n }\n }\n }\n function slideToPrevItem() {\n const isFirstItem = activeItem === 0\n\n if (withLoop) {\n setSlideActionType('prev')\n if (isFirstItem) {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem - 1,\n id: items[activeItem - 1].id,\n },\n })\n setActiveItem(items.length - 1)\n } else {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem - 1,\n id: items[activeItem - 1].id,\n },\n })\n setActiveItem(activeItem - 1)\n }\n } else {\n if (!isFirstItem) {\n setSlideActionType('prev')\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem - 1,\n id: items[activeItem - 1].id,\n },\n })\n setActiveItem(activeItem - 1)\n }\n }\n }\n function findItemIndex(id: string) {\n return items.findIndex(item => item.id === id)\n }\n function getIsNextItem(id: string) {\n const itemIndex = findItemIndex(id)\n\n if (withLoop && activeItem === items.length - 1) {\n return itemIndex === 0\n }\n\n return itemIndex === activeItem + 1\n }\n function getIsPrevItem(id: string) {\n const itemIndex = findItemIndex(id)\n\n if (withLoop && activeItem === 0) {\n return itemIndex === items.length - 1\n }\n\n return itemIndex === activeItem - 1\n }\n\n const contextProps: UseTransitionCarouselContextProps = {\n activeItem,\n slideToItem,\n slideToNextItem,\n slideToPrevItem,\n enterFullscreen,\n exitFullscreen,\n useListenToCustomEvent,\n getIsNextItem,\n getIsPrevItem,\n getIsAnimating,\n getIsFullscreen,\n getIsActiveItem: id => {\n return findItemIndex(id) === activeItem\n },\n getCurrentActiveItem: () => ({\n id: items[activeItem].id,\n index: activeItem,\n }),\n }\n\n const carouselFragment = (\n <UseTransitionCarouselContext.Provider value={contextProps}>\n <div\n ref={mainCarouselWrapperRef}\n {...bindSwipe()}\n style={{\n display: 'flex',\n position: 'relative',\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n }}\n >\n {itemsFragment}\n </div>\n </UseTransitionCarouselContext.Provider>\n )\n\n const thumbsFragment = (\n <UseTransitionCarouselContext.Provider value={contextProps}>\n {_thumbsFragment}\n </UseTransitionCarouselContext.Provider>\n )\n\n return {\n carouselFragment,\n thumbsFragment,\n ...contextProps,\n }\n}\n"],"names":["useRef","Subject","useEffect","screenfull","forwardRef","_jsx","animated","useSpring","createContext","config","useCallback","useDrag","useContext","useState","useTransition"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.umd.js","sources":["../src/modules/useCustomEventsModule.tsx","../src/modules/useFullscreenModule.tsx","../src/utils.ts","../src/modules/useThumbsModule.tsx","../src/useSpringCarousel.tsx","../src/useTransitionCarousel.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react'\nimport { Subject } from 'rxjs'\nimport { EventsObservableProps, ObservableCallbackFn, EmitObservableFn } from '../types'\n\nexport function useCustomEventsModule() {\n const eventsObserverRef = useRef(new Subject<EventsObservableProps>())\n\n function useListenToCustomEvent(fn: ObservableCallbackFn) {\n useEffect(() => {\n const subscribe = eventsObserverRef.current.subscribe(fn)\n return () => subscribe.unsubscribe()\n }, [fn])\n }\n\n const emitObservable: EmitObservableFn = data => {\n eventsObserverRef.current.next(data)\n }\n\n return {\n useListenToCustomEvent,\n emitObservable,\n }\n}\n","import { useRef, MutableRefObject, useEffect } from 'react'\nimport screenfull from 'screenfull'\nimport { EmitObservableFn } from '../types'\n\ntype FullscreenModule = {\n mainCarouselWrapperRef: MutableRefObject<HTMLDivElement | null>\n emitObservable: EmitObservableFn\n handleResize?(): void\n}\n\nexport function useFullscreenModule({\n mainCarouselWrapperRef,\n emitObservable,\n handleResize,\n}: FullscreenModule) {\n const isFullscreen = useRef(false)\n\n useEffect(() => {\n function handleFullscreenChange() {\n if (document.fullscreenElement) {\n setIsFullscreen(true)\n emitObservable({\n eventName: 'onFullscreenChange',\n isFullscreen: true,\n })\n\n handleResize && handleResize()\n }\n\n if (!document.fullscreenElement) {\n setIsFullscreen(false)\n emitObservable({\n eventName: 'onFullscreenChange',\n isFullscreen: false,\n })\n handleResize && handleResize()\n }\n }\n\n if (screenfull.isEnabled) {\n screenfull.on('change', handleFullscreenChange)\n return () => {\n if (screenfull.isEnabled) {\n screenfull.off('change', handleFullscreenChange)\n }\n }\n }\n })\n\n function setIsFullscreen(_isFullscreen: boolean) {\n isFullscreen.current = _isFullscreen\n }\n\n function getIsFullscreen() {\n return isFullscreen.current\n }\n\n function enterFullscreen(elementRef?: HTMLElement) {\n if (screenfull.isEnabled) {\n screenfull.request((elementRef || mainCarouselWrapperRef.current) as Element)\n }\n }\n\n function exitFullscreen() {\n screenfull.isEnabled && screenfull.exit()\n }\n\n return {\n enterFullscreen,\n exitFullscreen,\n getIsFullscreen,\n }\n}\n","import { useRef, useEffect } from 'react'\n\ntype Callback = () => void | (() => void)\n\nexport function useMount(callback: Callback) {\n const isMounted = useRef(false)\n\n useEffect(() => {\n if (!isMounted.current) {\n const clean = callback()\n isMounted.current = true\n\n return () => {\n clean && clean()\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n}\n\nexport function getIsBrowser() {\n return typeof window !== 'undefined'\n}\n","import { forwardRef, HTMLAttributes, useRef } from 'react'\nimport { useSpring, SpringConfig, animated } from 'react-spring'\nimport { useMount } from 'src/utils'\nimport {\n UseSpringCarouselProps,\n ReactSpringThumbItem,\n PrepareThumbsData,\n UseSpringCarouselItems,\n SlideActionType,\n} from '../types'\n\ntype OffsetDimension = 'offsetWidth' | 'offsetHeight'\ntype OffsetDirection = 'offsetLeft' | 'offsetTop'\ntype ScrollDirection = 'scrollLeft' | 'scrollTop'\n\ntype Props = {\n items: UseSpringCarouselItems['items']\n withThumbs: boolean\n thumbsSlideAxis: UseSpringCarouselProps['thumbsSlideAxis']\n springConfig: SpringConfig\n prepareThumbsData?: PrepareThumbsData\n itemsPerSlide?: UseSpringCarouselProps['itemsPerSlide']\n CustomThumbsWrapperComponent?: UseSpringCarouselProps['CustomThumbsWrapperComponent']\n getFluidWrapperScrollValue?(): number\n getSlideValue?(): number\n}\n\ntype WrapperProps = {\n children: React.ReactNode\n} & HTMLAttributes<HTMLDivElement>\n\nconst InternalWrapper = forwardRef<HTMLDivElement, WrapperProps>(\n ({ children, ...rest }, ref) => {\n return (\n <animated.div {...rest} ref={ref}>\n {children}\n </animated.div>\n )\n },\n)\n\nexport function useThumbsModule({\n items,\n withThumbs,\n thumbsSlideAxis = 'x',\n springConfig,\n prepareThumbsData,\n itemsPerSlide,\n getFluidWrapperScrollValue = () => 0,\n getSlideValue = () => 0,\n CustomThumbsWrapperComponent,\n}: Props) {\n const internalThumbsWrapperRef = useRef<HTMLDivElement | null>(null)\n const [thumbListStyles, setThumbListStyles] = useSpring(() => ({\n x: 0,\n y: 0,\n config: springConfig,\n onChange: ({ value }) => {\n if (internalThumbsWrapperRef.current) {\n internalThumbsWrapperRef.current[\n thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ] = Math.abs(value[thumbsSlideAxis])\n }\n },\n }))\n\n useMount(() => {\n if (withThumbs && !internalThumbsWrapperRef.current) {\n throw new Error(\n \"The thumbs wrapper is not defined. If you've passed a Functional component, be sure to wrap your component in forwardRef.\",\n )\n }\n })\n\n function getCurrentThumbScrollValue() {\n return internalThumbsWrapperRef.current![\n thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ]\n }\n function getThumbsTotalScrollableValue() {\n return Math.round(\n Number(\n internalThumbsWrapperRef.current?.[\n thumbsSlideAxis === 'x' ? 'scrollWidth' : 'scrollHeight'\n ],\n ) -\n internalThumbsWrapperRef.current!.getBoundingClientRect()[\n thumbsSlideAxis === 'x' ? 'width' : 'height'\n ],\n )\n }\n\n function getThumbSlideValue() {\n const thumbSlideTotal = Math.round(getFluidWrapperScrollValue() / getSlideValue())\n const totalScrollableValue = getThumbsTotalScrollableValue()\n return totalScrollableValue / thumbSlideTotal\n }\n\n function handleThumbsScroll(activeItem: number, actionType?: SlideActionType) {\n if (itemsPerSlide === 'fluid') {\n const totalScrollableValue = getThumbsTotalScrollableValue()\n\n if (actionType === 'next') {\n const nextValue = getCurrentThumbScrollValue() + getThumbSlideValue()\n setThumbListStyles.start({\n from: {\n [thumbsSlideAxis]: getCurrentThumbScrollValue(),\n },\n to: {\n [thumbsSlideAxis]:\n nextValue > totalScrollableValue ? totalScrollableValue : nextValue,\n },\n })\n }\n if (actionType === 'prev') {\n const nextValue = getCurrentThumbScrollValue() - getThumbSlideValue()\n setThumbListStyles.start({\n from: {\n [thumbsSlideAxis]: getCurrentThumbScrollValue(),\n },\n to: {\n [thumbsSlideAxis]: nextValue < 0 ? 0 : nextValue,\n },\n })\n }\n } else {\n function getOffsetDirection() {\n return thumbsSlideAxis === 'x' ? 'offsetLeft' : 'offsetTop'\n }\n function getOffsetDimension() {\n return thumbsSlideAxis === 'x' ? 'offsetWidth' : 'offsetHeight'\n }\n function getScrollDirecton() {\n return thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n }\n function getThumbNode() {\n return internalThumbsWrapperRef.current!.querySelector(\n `#thumb-${items[activeItem].id}`,\n ) as HTMLElement\n }\n function getThumbOffsetPosition({\n thumbNode,\n offsetDirection,\n offsetDimension,\n }: {\n thumbNode: HTMLElement\n offsetDirection: OffsetDirection\n offsetDimension: OffsetDimension\n }) {\n return thumbNode[offsetDirection] + thumbNode[offsetDimension] / 2\n }\n function getThumbScrollDimension({\n thumbWrapper,\n offsetDimension,\n }: {\n thumbWrapper: HTMLDivElement\n offsetDimension: OffsetDimension\n }) {\n return thumbWrapper[offsetDimension] / 2\n }\n function getScrollFromValue({\n thumbWrapper,\n scrollDirection,\n }: {\n thumbWrapper: HTMLDivElement\n scrollDirection: ScrollDirection\n }) {\n return thumbWrapper[scrollDirection]\n }\n function getScrollToValue({\n thumbWrapper,\n thumbOffsetPosition,\n thumbScrollDimension,\n offsetDimension,\n }: {\n thumbWrapper: HTMLDivElement\n thumbOffsetPosition: number\n thumbScrollDimension: number\n offsetDimension: OffsetDimension\n }) {\n const scrollDimensionProperty =\n thumbsSlideAxis === 'x' ? 'scrollWidth' : 'scrollHeight'\n\n if (\n activeItem === items.length - 1 ||\n thumbOffsetPosition - thumbScrollDimension >\n thumbWrapper[scrollDimensionProperty] - thumbWrapper[offsetDimension]\n ) {\n return thumbWrapper[scrollDimensionProperty] - thumbWrapper[offsetDimension]\n }\n if (activeItem === 0) {\n return 0\n }\n\n return thumbOffsetPosition - thumbScrollDimension\n }\n\n const thumbNode = getThumbNode()\n\n if (thumbNode) {\n const thumbWrapper = internalThumbsWrapperRef.current!\n const offsetDirection = getOffsetDirection()\n const offsetDimension = getOffsetDimension()\n const scrollDirection = getScrollDirecton()\n const thumbOffsetPosition = getThumbOffsetPosition({\n thumbNode,\n offsetDimension,\n offsetDirection,\n })\n const thumbScrollDimension = getThumbScrollDimension({\n thumbWrapper,\n offsetDimension,\n })\n\n setThumbListStyles.start({\n from: {\n [thumbsSlideAxis]: getScrollFromValue({\n thumbWrapper,\n scrollDirection,\n }),\n },\n to: {\n [thumbsSlideAxis]: getScrollToValue({\n thumbWrapper,\n thumbOffsetPosition,\n thumbScrollDimension,\n offsetDimension,\n }),\n },\n onChange: val => {\n if (thumbsSlideAxis === 'x') {\n // @ts-ignore\n internalThumbsWrapperRef!.current!.scrollLeft = val.x\n } else {\n // @ts-ignore\n internalThumbsWrapperRef!.current!.scrollTop = val.y\n }\n },\n })\n }\n }\n }\n function handlePrepareThumbsDate() {\n function getPreparedItems(\n _items: UseSpringCarouselItems['items'],\n ): ReactSpringThumbItem[] {\n return _items.map(i => ({\n id: i.id,\n renderThumb: i.renderThumb,\n }))\n }\n\n if (prepareThumbsData) {\n return prepareThumbsData(getPreparedItems(items))\n }\n return getPreparedItems(items)\n }\n\n const Wrapper = CustomThumbsWrapperComponent\n ? animated(CustomThumbsWrapperComponent)\n : InternalWrapper\n\n const thumbsFragment = withThumbs ? (\n <Wrapper\n ref={internalThumbsWrapperRef}\n className=\"use-spring-carousel-thumbs-wrapper\"\n onWheel={() => {\n thumbListStyles[thumbsSlideAxis].stop()\n }}\n style={{\n display: 'flex',\n flex: 1,\n position: 'relative',\n flexDirection: thumbsSlideAxis === 'x' ? 'row' : 'column',\n ...(thumbsSlideAxis === 'x'\n ? { overflowX: 'auto' }\n : {\n overflowY: 'auto',\n maxHeight: '100%',\n }),\n }}\n >\n {handlePrepareThumbsDate().map(({ id, renderThumb }) => {\n const thumbId = `thumb-${id}`\n return (\n <div key={thumbId} id={thumbId}>\n {renderThumb}\n </div>\n )\n })}\n </Wrapper>\n ) : null\n\n return {\n thumbsFragment,\n handleThumbsScroll,\n }\n}\n","import { useRef, createContext, useCallback, useContext, useEffect } from 'react'\nimport { useSpring, config, animated } from 'react-spring'\nimport { useDrag } from '@use-gesture/react'\nimport { useCustomEventsModule, useFullscreenModule, useThumbsModule } from './modules'\nimport {\n UseSpringCarouselProps,\n SlideToItemFnProps,\n SlideActionType,\n UseSpringDafaultTypeReturnProps,\n UseSpringFluidTypeReturnProps,\n} from './types'\nimport { useMount } from './utils'\nimport { getIsBrowser } from './utils'\n\ntype ReturnHook<T> = T extends 'fluid'\n ? UseSpringFluidTypeReturnProps\n : UseSpringDafaultTypeReturnProps\n\nconst UseSpringCarouselContext = createContext<\n (UseSpringFluidTypeReturnProps | UseSpringDafaultTypeReturnProps) | undefined\n>(undefined)\n\nexport default function useSpringCarousel<T>({\n itemsPerSlide = 1,\n items,\n withLoop = false,\n draggingSlideTreshold = 140,\n springConfig = config.default,\n shouldResizeOnWindowResize = true,\n withThumbs = false,\n enableThumbsWrapperScroll = true,\n carouselSlideAxis = 'x',\n thumbsSlideAxis = 'x',\n prepareThumbsData,\n initialActiveItem = 0,\n initialStartingPosition = 'start',\n disableGestures = false,\n gutter = 0,\n startEndGutter = 0,\n touchAction,\n slideAmount,\n freeScroll = false,\n CustomThumbsWrapperComponent,\n}: UseSpringCarouselProps): ReturnHook<T> & {\n carouselFragment: JSX.Element\n thumbsFragment: JSX.Element\n} {\n function getItems() {\n if (withLoop) {\n return [...items, ...items, ...items]\n }\n return items\n }\n const slideActionType = useRef<SlideActionType>('initial')\n const internalItems = getItems()\n const activeItem = useRef(initialActiveItem)\n const mainCarouselWrapperRef = useRef<HTMLDivElement | null>(null)\n const carouselTrackWrapperRef = useRef<HTMLDivElement | null>(null)\n const isDragging = useRef(false)\n const isAnimating = useRef(false)\n const windowIsHidden = useRef(false)\n const currentWindowWidth = useRef(0)\n const fluidTotalWrapperScrollValue = useRef(0)\n const slideFluidEndReached = useRef(false)\n const initialWindowWidth = useRef(0)\n\n const [carouselStyles, setCarouselStyles] = useSpring(() => ({\n y: 0,\n x: 0,\n config: springConfig,\n onChange: ({ value }) => {\n if (mainCarouselWrapperRef.current && freeScroll) {\n mainCarouselWrapperRef.current[\n carouselSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ] = Math.abs(value[carouselSlideAxis])\n }\n },\n }))\n function getCarouselItem() {\n return carouselTrackWrapperRef.current?.querySelector('.use-spring-carousel-item')\n }\n const getMainCarouselWrapperWidth = useCallback(() => {\n if (!mainCarouselWrapperRef.current) {\n throw new Error('mainCarouselWrapperRef is not available')\n }\n return mainCarouselWrapperRef.current.getBoundingClientRect()[\n carouselSlideAxis === 'x' ? 'width' : 'height'\n ]\n }, [carouselSlideAxis])\n const getCarouselItemWidth = useCallback(() => {\n const carouselItem = getCarouselItem()\n if (!carouselItem) {\n throw Error('No carousel items available!')\n }\n return (\n carouselItem.getBoundingClientRect()[\n carouselSlideAxis === 'x' ? 'width' : 'height'\n ] + gutter\n )\n }, [carouselSlideAxis, gutter])\n const getCurrentSlidedValue = useCallback(() => {\n return carouselStyles[carouselSlideAxis].get()\n }, [carouselSlideAxis, carouselStyles])\n const getIfItemsNotFillTheCarousel = useCallback(() => {\n return getCarouselItemWidth() * items.length < getMainCarouselWrapperWidth()\n }, [getCarouselItemWidth, getMainCarouselWrapperWidth, items.length])\n const getFluidWrapperScrollValue = useCallback(() => {\n return Math.round(\n Number(\n carouselTrackWrapperRef.current?.[\n carouselSlideAxis === 'x' ? 'scrollWidth' : 'scrollHeight'\n ],\n ) -\n carouselTrackWrapperRef.current!.getBoundingClientRect()[\n carouselSlideAxis === 'x' ? 'width' : 'height'\n ],\n )\n }, [carouselSlideAxis])\n const getIsFirstItem = useCallback(() => {\n return getCurrentActiveItem() === 0\n }, [])\n const getSlideValue = useCallback(() => {\n if (!carouselTrackWrapperRef.current) {\n return 0\n }\n const itemVal = getCarouselItemWidth()\n\n if (itemsPerSlide === 'fluid' && typeof slideAmount === 'number') {\n if (slideAmount < itemVal) {\n throw new Error('slideAmount must be greater than the width of a single item.')\n }\n return slideAmount\n }\n return itemVal\n }, [getCarouselItemWidth, itemsPerSlide, slideAmount])\n const adjustCarouselWrapperPosition = useCallback(\n (ref: HTMLDivElement) => {\n const positionProperty = carouselSlideAxis === 'x' ? 'left' : 'top'\n function getDefaultPositionValue() {\n return getCarouselItemWidth() * items.length\n }\n function setPosition(v: number) {\n ref.style.top = '0px'\n ref.style.left = '0px'\n if (withLoop) {\n ref.style[positionProperty] = `-${v - startEndGutter}px`\n }\n }\n function setStartPosition() {\n setPosition(getDefaultPositionValue())\n }\n\n if (itemsPerSlide !== 'fluid' && typeof itemsPerSlide === 'number') {\n function setCenterPosition() {\n setPosition(\n getDefaultPositionValue() -\n getSlideValue() * Math.round(((itemsPerSlide as number) - 1) / 2),\n )\n }\n function setEndPosition() {\n setPosition(\n getDefaultPositionValue() -\n getSlideValue() * Math.round((itemsPerSlide as number) - 1),\n )\n }\n\n if (itemsPerSlide > 1) {\n switch (initialStartingPosition) {\n default:\n case 'start': {\n setStartPosition()\n break\n }\n case 'center': {\n setCenterPosition()\n break\n }\n case 'end': {\n setEndPosition()\n break\n }\n }\n } else {\n setStartPosition()\n }\n } else {\n setStartPosition()\n }\n },\n [\n carouselSlideAxis,\n itemsPerSlide,\n getCarouselItemWidth,\n items.length,\n startEndGutter,\n getSlideValue,\n initialStartingPosition,\n withLoop,\n ],\n )\n\n const handleResize = useCallback(() => {\n if (window.innerWidth === currentWindowWidth.current || freeScroll) {\n return\n }\n currentWindowWidth.current = window.innerWidth\n\n if (itemsPerSlide === 'fluid') {\n if (getIfItemsNotFillTheCarousel()) {\n setCarouselStyles.start({\n immediate: true,\n [carouselSlideAxis]: 0,\n })\n return\n }\n fluidTotalWrapperScrollValue.current = getFluidWrapperScrollValue()\n const diff = currentWindowWidth.current - initialWindowWidth.current\n\n if (slideFluidEndReached.current) {\n const nextValue = -fluidTotalWrapperScrollValue.current\n setCarouselStyles.start({\n immediate: true,\n [carouselSlideAxis]: nextValue,\n })\n } else {\n const nextValue = getCurrentSlidedValue() + diff\n setCarouselStyles.start({\n immediate: true,\n [carouselSlideAxis]: nextValue,\n })\n }\n\n initialWindowWidth.current = window.innerWidth\n } else {\n setCarouselStyles.start({\n immediate: true,\n x: 0,\n y: 0,\n })\n setCarouselStyles.start({\n immediate: true,\n [carouselSlideAxis]: -(getSlideValue() * getCurrentActiveItem()),\n })\n }\n adjustCarouselWrapperPosition(carouselTrackWrapperRef.current!)\n }, [\n itemsPerSlide,\n getIfItemsNotFillTheCarousel,\n getFluidWrapperScrollValue,\n freeScroll,\n setCarouselStyles,\n carouselSlideAxis,\n getCurrentSlidedValue,\n getSlideValue,\n adjustCarouselWrapperPosition,\n ])\n // Custom modules\n const { useListenToCustomEvent, emitObservable } = useCustomEventsModule()\n const { enterFullscreen, exitFullscreen, getIsFullscreen } = useFullscreenModule({\n mainCarouselWrapperRef,\n emitObservable,\n handleResize,\n })\n const { thumbsFragment: _thumbsFragment, handleThumbsScroll } = useThumbsModule({\n withThumbs,\n items,\n thumbsSlideAxis,\n springConfig,\n prepareThumbsData,\n itemsPerSlide,\n getFluidWrapperScrollValue,\n getSlideValue,\n CustomThumbsWrapperComponent,\n })\n\n function getWrapperScrollDirection() {\n if (!mainCarouselWrapperRef.current) {\n throw new Error('Missing mainCarouselWrapperRef.current')\n }\n return mainCarouselWrapperRef.current[\n carouselSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ]\n }\n\n const bindDrag = useDrag(\n props => {\n const isDragging = props.dragging\n const movement = props.movement[carouselSlideAxis === 'x' ? 0 : 1]\n function resetAnimation() {\n if (itemsPerSlide === 'fluid') {\n if (\n getIfItemsNotFillTheCarousel() ||\n (getIsFirstItem() && getSlideActionType() === 'prev')\n ) {\n setCarouselStyles.start({\n [carouselSlideAxis]: 0,\n })\n } else if (slideFluidEndReached.current) {\n setCarouselStyles.start({\n [carouselSlideAxis]: -fluidTotalWrapperScrollValue.current,\n })\n } else {\n setCarouselStyles.start({\n [carouselSlideAxis]: getCurrentSlidedValue(),\n })\n }\n } else {\n setCarouselStyles.start({\n [carouselSlideAxis]: -(getCurrentActiveItem() * getSlideValue()),\n })\n }\n }\n\n if (isDragging) {\n setIsDragging(true)\n emitObservable({\n eventName: 'onDrag',\n ...props,\n })\n const direction = props.direction[carouselSlideAxis === 'x' ? 0 : 1]\n if (direction > 0) {\n setSlideActionType('prev')\n } else {\n setSlideActionType('next')\n }\n\n if (freeScroll) {\n if (getWrapperScrollDirection() === 0 && direction > 0) {\n props.cancel()\n } else {\n setCarouselStyles.start({\n from: {\n [carouselSlideAxis]: getWrapperScrollDirection(),\n },\n to: {\n [carouselSlideAxis]:\n direction > 0\n ? getWrapperScrollDirection() - Math.abs(movement)\n : getWrapperScrollDirection() + Math.abs(movement),\n },\n })\n }\n } else {\n setCarouselStyles.start({\n [carouselSlideAxis]: getCurrentSlidedValue() + movement,\n })\n }\n\n const prevItemTreshold = movement > draggingSlideTreshold\n const nextItemTreshold = movement < -draggingSlideTreshold\n\n if (\n mainCarouselWrapperRef.current!.getBoundingClientRect().width >=\n items.length * getSlideValue()\n ) {\n slideFluidEndReached.current = true\n }\n\n if ((prevItemTreshold || nextItemTreshold) && getIfItemsNotFillTheCarousel()) {\n props.cancel()\n resetAnimation()\n return\n }\n\n if (slideFluidEndReached.current && movement < 0) {\n if (nextItemTreshold) {\n props.cancel()\n setCarouselStyles.start({\n [carouselSlideAxis]: -fluidTotalWrapperScrollValue.current,\n })\n }\n } else if (nextItemTreshold) {\n props.cancel()\n if (!withLoop && getIsLastItem()) {\n resetAnimation()\n } else {\n slideToNextItem()\n }\n } else if (prevItemTreshold) {\n props.cancel()\n if (!withLoop && getIsFirstItem()) {\n resetAnimation()\n } else {\n slideToPrevItem()\n }\n }\n }\n\n if (props.last && !props.pressed && !freeScroll) {\n resetAnimation()\n }\n },\n {\n enabled: !disableGestures,\n preventScrollAxis: 'x',\n },\n )\n\n // Perform some check on first mount\n useMount(() => {\n if (itemsPerSlide !== 'fluid' && !Number.isInteger(itemsPerSlide)) {\n throw new Error(`itemsPerSlide should be an integer.`)\n }\n if (itemsPerSlide > items.length) {\n throw new Error(\n `The itemsPerSlide prop can't be greater than the total length of the items you provide.`,\n )\n }\n if (itemsPerSlide < 1) {\n throw new Error(`The itemsPerSlide prop can't be less than 1.`)\n }\n if (!shouldResizeOnWindowResize) {\n console.warn(\n 'You set shouldResizeOnWindowResize={false}; be aware that the carousel could behave in a strange way if you also use the fullscreen functionality or if you change the mobile orientation.',\n )\n }\n if (initialActiveItem < 0) {\n console.warn('The initialActiveItem cannot be less than 0.')\n }\n if (initialActiveItem > items.length) {\n console.warn(\n 'The initialActiveItem cannot be greater than the total length of the items you provide.',\n )\n }\n })\n useMount(() => {\n fluidTotalWrapperScrollValue.current = getFluidWrapperScrollValue()\n function handleVisibilityChange() {\n if (document.hidden) {\n windowIsHidden.current = true\n } else {\n windowIsHidden.current = false\n }\n }\n if (getIsBrowser()) {\n document.addEventListener('visibilitychange', handleVisibilityChange)\n return () => {\n document.removeEventListener('visibilitychange', handleVisibilityChange)\n }\n }\n })\n useMount(() => {\n initialWindowWidth.current = window.innerWidth\n if (initialActiveItem > 0 && initialActiveItem <= items.length) {\n slideToItem({\n to: initialActiveItem,\n immediate: true,\n })\n setActiveItem(initialActiveItem)\n }\n })\n useEffect(() => {\n function resize() {\n setTimeout(handleResize)\n }\n if (shouldResizeOnWindowResize) {\n window.addEventListener('resize', resize)\n return () => {\n window.removeEventListener('resize', resize)\n }\n }\n }, [handleResize, shouldResizeOnWindowResize])\n useEffect(() => {\n if (carouselTrackWrapperRef.current) {\n if (carouselSlideAxis === 'x') {\n carouselTrackWrapperRef.current.style.top = '0px'\n }\n if (carouselSlideAxis === 'y') {\n carouselTrackWrapperRef.current.style.left = '0px'\n }\n }\n }, [carouselSlideAxis])\n useEffect(() => {\n setTimeout(() => adjustCarouselWrapperPosition(carouselTrackWrapperRef.current!), 150)\n }, [adjustCarouselWrapperPosition, carouselSlideAxis, itemsPerSlide])\n\n function setSlideActionType(type: SlideActionType) {\n slideActionType.current = type\n }\n function getSlideActionType() {\n return slideActionType.current\n }\n function setActiveItem(newItem: number) {\n activeItem.current = newItem\n }\n function getCurrentActiveItem() {\n return activeItem.current\n }\n function getIsAnimating() {\n return isAnimating.current\n }\n function setIsAnimating(val: boolean) {\n isAnimating.current = val\n }\n function setIsDragging(val: boolean) {\n isDragging.current = val\n }\n function getIsDragging() {\n return isDragging.current\n }\n function getPrevItem() {\n const currentActiveItem = getCurrentActiveItem()\n if (currentActiveItem === 0) {\n return items.length - 1\n }\n return currentActiveItem - 1\n }\n function getNextItem() {\n const currentActiveItem = getCurrentActiveItem()\n if (currentActiveItem === items.length - 1) {\n return 0\n }\n return currentActiveItem + 1\n }\n function getIsNextItem(id: string) {\n const itemIndex = findItemIndex(id)\n const activeItem = getCurrentActiveItem()\n if (withLoop && activeItem === items.length - 1) {\n return itemIndex === 0\n }\n return itemIndex === activeItem + 1\n }\n function getIsPrevItem(id: string) {\n const itemIndex = findItemIndex(id)\n const activeItem = getCurrentActiveItem()\n if (withLoop && activeItem === 0) {\n return itemIndex === items.length - 1\n }\n return itemIndex === activeItem - 1\n }\n function findItemIndex(id: string) {\n return items.findIndex(item => item.id === id)\n }\n function slideToItem({\n from,\n to = -1,\n customTo,\n immediate = false,\n onRest = () => {},\n }: SlideToItemFnProps) {\n if (!immediate) {\n setActiveItem(to)\n setIsAnimating(true)\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: itemsPerSlide === 'fluid' ? -1 : to,\n id: itemsPerSlide === 'fluid' ? '' : items[to].id,\n },\n })\n }\n\n function getFromValue() {\n if (typeof from === 'number') {\n return {\n from: {\n [carouselSlideAxis]: from,\n },\n }\n }\n return {}\n }\n function getToValue() {\n if (typeof customTo === 'number') {\n return {\n [carouselSlideAxis]: customTo,\n }\n }\n return {\n [carouselSlideAxis]: -(getSlideValue() * to),\n }\n }\n\n setCarouselStyles.start({\n ...getFromValue(),\n to: getToValue(),\n immediate,\n onRest: val => {\n if (val.finished) {\n setIsDragging(false)\n setIsAnimating(false)\n onRest()\n if (!immediate) {\n emitObservable({\n eventName: 'onSlideChange',\n slideActionType: getSlideActionType(),\n currentItem: {\n index: itemsPerSlide === 'fluid' ? -1 : getCurrentActiveItem(),\n id: itemsPerSlide === 'fluid' ? '' : items[getCurrentActiveItem()].id,\n },\n })\n }\n }\n },\n })\n if (enableThumbsWrapperScroll && withThumbs && !immediate) {\n handleThumbsScroll(to, getSlideActionType())\n }\n }\n function getIsLastItem() {\n return getCurrentActiveItem() === items.length - 1\n }\n function slideToPrevItem() {\n setSlideActionType('prev')\n\n if (itemsPerSlide === 'fluid') {\n if (getIfItemsNotFillTheCarousel()) {\n return\n }\n const nextPrevValue = getCurrentSlidedValue() + getSlideValue() + 200\n\n if (freeScroll) {\n const nextValue = mainCarouselWrapperRef.current!.scrollLeft - getSlideValue()\n slideToItem({\n customTo: nextValue < 0 ? 0 : nextValue,\n from: mainCarouselWrapperRef.current!.scrollLeft,\n })\n } else if (nextPrevValue >= 0) {\n if (withLoop) {\n slideToItem({\n from: getCurrentSlidedValue() - getCarouselItemWidth() * items.length,\n customTo:\n getCurrentSlidedValue() -\n getCarouselItemWidth() * items.length +\n getSlideValue(),\n })\n } else {\n slideToItem({\n customTo: 0,\n })\n }\n } else {\n slideToItem({\n customTo: getCurrentSlidedValue() + getSlideValue(),\n })\n }\n if (slideFluidEndReached.current) {\n slideFluidEndReached.current = false\n }\n } else {\n if ((!withLoop && getCurrentActiveItem() === 0) || windowIsHidden.current) {\n return\n }\n\n if (getIsFirstItem()) {\n slideToItem({\n from: getCurrentSlidedValue() - getSlideValue() * items.length,\n to: items.length - 1,\n })\n } else {\n slideToItem({\n to: getPrevItem(),\n })\n }\n }\n }\n function slideToNextItem() {\n setSlideActionType('next')\n\n if (itemsPerSlide === 'fluid') {\n if (getIfItemsNotFillTheCarousel()) {\n return\n }\n const willGoAfterLastFluidItem =\n Math.abs(getCurrentSlidedValue() - getSlideValue()) + 100 >=\n fluidTotalWrapperScrollValue.current\n\n if (freeScroll) {\n slideToItem({\n customTo: mainCarouselWrapperRef.current!.scrollLeft + getSlideValue(),\n from: mainCarouselWrapperRef.current!.scrollLeft,\n })\n } else if (\n withLoop &&\n Math.abs(getCurrentSlidedValue() - getSlideValue()) >=\n items.length * getCarouselItemWidth()\n ) {\n const currentWidth = getCarouselItemWidth() * items.length\n slideToItem({\n from: getCurrentSlidedValue() + currentWidth,\n customTo: getCurrentSlidedValue() + currentWidth - getSlideValue(),\n })\n } else if (slideFluidEndReached.current) {\n return\n } else if (willGoAfterLastFluidItem) {\n slideFluidEndReached.current = true\n slideToItem({\n customTo: -fluidTotalWrapperScrollValue.current,\n })\n } else {\n slideToItem({\n customTo: getCurrentSlidedValue() - getSlideValue(),\n })\n }\n } else {\n if (\n (!withLoop && getCurrentActiveItem() === internalItems.length - 1) ||\n windowIsHidden.current\n ) {\n return\n }\n\n if (getIsLastItem()) {\n slideToItem({\n from: getCurrentSlidedValue() + getSlideValue() * items.length,\n to: 0,\n })\n } else {\n slideToItem({\n to: getNextItem(),\n })\n }\n }\n }\n function _slideToItem(item: string | number) {\n let itemIndex = 0\n\n if (typeof item === 'string') {\n itemIndex = items.findIndex(_item => _item.id === item)\n } else {\n itemIndex = item\n }\n\n if (itemIndex >= items.length) {\n throw Error(\n `The item you want to slide to doesn't exist. This could be due to the fact that \n you provide a wrong id or a higher numeric index.`,\n )\n }\n if (itemIndex === getCurrentActiveItem()) {\n return\n }\n\n const currentItem = findItemIndex(items[getCurrentActiveItem()].id)\n const newActiveItem = findItemIndex(items[itemIndex].id)\n\n if (newActiveItem > currentItem) {\n setSlideActionType('next')\n } else {\n setSlideActionType('prev')\n }\n\n slideToItem({\n to: itemIndex,\n })\n }\n\n const contextProps = {\n useListenToCustomEvent,\n getIsFullscreen,\n enterFullscreen,\n exitFullscreen,\n getIsAnimating,\n getIsDragging,\n getIsNextItem,\n getIsPrevItem,\n slideToPrevItem,\n slideToNextItem,\n ...(typeof itemsPerSlide === 'number'\n ? {\n slideToItem: _slideToItem,\n getIsActiveItem: (id: string) => {\n return findItemIndex(id) === getCurrentActiveItem()\n },\n getCurrentActiveItem: () => ({\n id: items[getCurrentActiveItem()].id,\n index: getCurrentActiveItem(),\n }),\n }\n : {}),\n }\n function getItemStyles() {\n if (typeof itemsPerSlide === 'number') {\n return {\n ...(carouselSlideAxis === 'x'\n ? { marginRight: `${gutter}px` }\n : { marginBottom: `${gutter}px` }),\n flex: `1 0 calc(100% / ${itemsPerSlide} - ${\n (gutter * (itemsPerSlide - 1)) / itemsPerSlide\n }px)`,\n }\n }\n return {\n ...(carouselSlideAxis === 'x'\n ? { marginRight: `${gutter}px` }\n : { marginBottom: `${gutter}px` }),\n }\n }\n function getAnimatedWrapperStyles() {\n const percentValue = `calc(100% - ${startEndGutter * 2}px)`\n return {\n width: carouselSlideAxis === 'x' ? percentValue : '100%',\n height: carouselSlideAxis === 'y' ? percentValue : '100%',\n }\n }\n function handleCarouselFragmentRef(ref: HTMLDivElement | null) {\n if (ref) {\n carouselTrackWrapperRef.current = ref\n adjustCarouselWrapperPosition(ref)\n }\n }\n function getOverflowStyles() {\n if (freeScroll) {\n if (carouselSlideAxis === 'x') {\n return {\n overflowX: 'auto',\n }\n }\n return {\n overflowY: 'auto',\n }\n }\n return {}\n }\n function getWheelEvent() {\n if (freeScroll) {\n return {\n onWheel() {\n carouselStyles[carouselSlideAxis].stop()\n },\n }\n }\n return {}\n }\n function getTouchAction() {\n if (!touchAction) {\n if (carouselSlideAxis === 'x') {\n return 'pan-y'\n }\n return 'pan-x'\n }\n return touchAction\n }\n const carouselFragment = (\n <UseSpringCarouselContext.Provider value={contextProps}>\n <div\n ref={mainCarouselWrapperRef}\n className=\"use-spring-carousel-main-wrapper\"\n data-testid=\"use-spring-carousel-wrapper\"\n {...getWheelEvent()}\n // @ts-ignore\n style={{\n display: 'flex',\n position: 'relative',\n width: '100%',\n height: '100%',\n ...getOverflowStyles(),\n }}\n >\n <animated.div\n {...bindDrag()}\n className=\"use-spring-carousel-track-wrapper\"\n data-testid=\"use-spring-carousel-animated-wrapper\"\n ref={handleCarouselFragmentRef}\n style={{\n display: 'flex',\n position: 'relative',\n touchAction: getTouchAction(),\n flexDirection: carouselSlideAxis === 'x' ? 'row' : 'column',\n ...getAnimatedWrapperStyles(),\n ...(freeScroll ? {} : carouselStyles),\n }}\n >\n {internalItems.map(({ id, renderItem }, index) => {\n return (\n <div\n key={`${id}-${index}`}\n className=\"use-spring-carousel-item\"\n data-testid=\"use-spring-carousel-item-wrapper\"\n style={{\n display: 'flex',\n position: 'relative',\n ...getItemStyles(),\n }}\n >\n {renderItem}\n </div>\n )\n })}\n </animated.div>\n </div>\n </UseSpringCarouselContext.Provider>\n )\n const thumbsFragment = (\n <UseSpringCarouselContext.Provider value={contextProps}>\n {_thumbsFragment}\n </UseSpringCarouselContext.Provider>\n )\n\n return {\n ...(contextProps as ReturnHook<T>),\n carouselFragment,\n thumbsFragment,\n }\n}\n\nexport function useSpringCarouselContext<T>() {\n const context = useContext(UseSpringCarouselContext)\n if (!context) {\n throw new Error(\n 'useSpringCarouselContext must be used only inside a component that is rendered inside the Carousel.',\n )\n }\n return context as ReturnHook<T>\n}\n","import { createContext, useRef, useState, useContext } from 'react'\nimport { useTransition, animated, config } from 'react-spring'\nimport { useDrag } from '@use-gesture/react'\nimport { useCustomEventsModule, useThumbsModule, useFullscreenModule } from './modules'\nimport {\n UseTransitionCarouselContextProps,\n UseTransitionCarouselProps,\n SlideActionType,\n} from './types'\n\nconst UseTransitionCarouselContext = createContext<\n UseTransitionCarouselContextProps | undefined\n>(undefined)\n\nexport function useTransitionCarouselContext() {\n const context = useContext(UseTransitionCarouselContext)\n\n if (!context) {\n throw new Error(`useTransitionCarouselContext isn't being used within the useTransitionCarousel context; \n use the context only inside a component that is rendered within the Carousel.`)\n }\n\n return context\n}\n\nexport default function useTransitionCarousel({\n items,\n withLoop = false,\n withThumbs = false,\n springConfig = config.default,\n thumbsSlideAxis = 'x',\n enableThumbsWrapperScroll = true,\n draggingSlideTreshold = 50,\n prepareThumbsData,\n toPrevItemSpringProps,\n toNextItemSpringProps,\n disableGestures = false,\n CustomThumbsWrapperComponent,\n springAnimationProps = {\n initial: {\n opacity: 1,\n position: 'relative',\n },\n from: {\n opacity: 0,\n position: 'absolute',\n },\n enter: {\n opacity: 1,\n position: 'relative',\n },\n leave: {\n opacity: 0,\n position: 'absolute',\n },\n },\n}: UseTransitionCarouselProps) {\n const slideActionType = useRef<SlideActionType>('next')\n const mainCarouselWrapperRef = useRef<HTMLDivElement | null>(null)\n const isAnimating = useRef(false)\n const [activeItem, setActiveItem] = useState(0)\n\n const { emitObservable, useListenToCustomEvent } = useCustomEventsModule()\n const { enterFullscreen, exitFullscreen, getIsFullscreen } = useFullscreenModule({\n emitObservable,\n mainCarouselWrapperRef,\n })\n const { thumbsFragment: _thumbsFragment, handleThumbsScroll } = useThumbsModule({\n items,\n withThumbs,\n thumbsSlideAxis,\n springConfig,\n prepareThumbsData,\n CustomThumbsWrapperComponent,\n })\n\n const bindSwipe = useDrag(\n ({ last, movement: [mx] }) => {\n if (getIsAnimating()) {\n return\n }\n\n if (last) {\n const prevItemTreshold = mx > draggingSlideTreshold\n const nextItemTreshold = mx < -draggingSlideTreshold\n const isFirstItem = activeItem === 0\n const isLastItem = activeItem === items.length - 1\n\n if (nextItemTreshold) {\n if (!withLoop && isLastItem) {\n return\n }\n\n slideToNextItem()\n emitObservable({\n eventName: 'onLeftSwipe',\n })\n } else if (prevItemTreshold) {\n if (!withLoop && isFirstItem) {\n return\n }\n\n slideToPrevItem()\n emitObservable({\n eventName: 'onRightSwipe',\n })\n }\n }\n },\n {\n enabled: !disableGestures,\n },\n )\n\n function getTransitionConfig() {\n const slideActionType = getSlideActionType()\n\n if (slideActionType === 'prev' && toPrevItemSpringProps) {\n return {\n initial: {\n ...springAnimationProps.initial,\n },\n from: {\n ...toPrevItemSpringProps.from,\n },\n enter: {\n ...toPrevItemSpringProps.enter,\n },\n leave: {\n ...toPrevItemSpringProps.leave,\n },\n }\n }\n\n if (slideActionType === 'next' && toNextItemSpringProps) {\n return {\n initial: {\n ...springAnimationProps.initial,\n },\n from: {\n ...toNextItemSpringProps.from,\n },\n enter: {\n ...toNextItemSpringProps.enter,\n },\n leave: {\n ...toNextItemSpringProps.leave,\n },\n }\n }\n\n return {\n initial: {\n ...springAnimationProps.initial,\n },\n from: {\n ...springAnimationProps.from,\n },\n enter: {\n ...springAnimationProps.enter,\n },\n leave: {\n ...springAnimationProps.leave,\n },\n }\n }\n\n const transitions = useTransition(activeItem, {\n config: springConfig,\n ...getTransitionConfig(),\n onStart: () => setIsAnimating(true),\n keys: null,\n onRest: val => {\n if (val.finished) {\n setIsAnimating(false)\n emitObservable({\n eventName: 'onSlideChange',\n slideActionType: getSlideActionType(),\n currentItem: {\n index: activeItem,\n id: items[activeItem].id,\n },\n })\n }\n },\n })\n const itemsFragment = transitions((styles, item) => (\n <animated.div\n style={{\n ...styles,\n flex: '1 0 100%',\n width: '100%',\n height: '100%',\n }}\n >\n {items[item].renderItem}\n </animated.div>\n ))\n\n function getIsAnimating() {\n return isAnimating.current\n }\n function setIsAnimating(val: boolean) {\n isAnimating.current = val\n }\n function setSlideActionType(type: SlideActionType) {\n slideActionType.current = type\n }\n function getSlideActionType() {\n return slideActionType.current\n }\n function slideToItem(item: string | number) {\n let itemIndex = 0\n\n if (typeof item === 'string') {\n itemIndex = items.findIndex(_item => _item.id === item)\n } else {\n itemIndex = item\n }\n\n if (itemIndex >= items.length) {\n throw Error(\n `The item you want to slide to doesn't exist. This could be due to the fact that \n you provide a wrong id or a higher numeric index.`,\n )\n }\n\n if (itemIndex === activeItem) {\n return\n }\n\n const currentItem = findItemIndex(items[activeItem].id)\n const newActiveItem = findItemIndex(items[itemIndex].id)\n\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: newActiveItem,\n id: items[itemIndex].id,\n },\n })\n\n if (newActiveItem > currentItem) {\n setSlideActionType('next')\n } else {\n setSlideActionType('prev')\n }\n\n setActiveItem(itemIndex)\n\n if (enableThumbsWrapperScroll && withThumbs) {\n handleThumbsScroll(itemIndex)\n }\n }\n function slideToNextItem() {\n const isLastItem = activeItem === items.length - 1\n\n if (withLoop) {\n setSlideActionType('next')\n if (isLastItem) {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: 0,\n id: items[0].id,\n },\n })\n setActiveItem(0)\n } else {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem + 1,\n id: items[activeItem + 1].id,\n },\n })\n setActiveItem(activeItem + 1)\n }\n } else {\n if (!isLastItem) {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem + 1,\n id: items[activeItem + 1].id,\n },\n })\n setSlideActionType('next')\n setActiveItem(activeItem + 1)\n }\n }\n }\n function slideToPrevItem() {\n const isFirstItem = activeItem === 0\n\n if (withLoop) {\n setSlideActionType('prev')\n if (isFirstItem) {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem - 1,\n id: items[activeItem - 1].id,\n },\n })\n setActiveItem(items.length - 1)\n } else {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem - 1,\n id: items[activeItem - 1].id,\n },\n })\n setActiveItem(activeItem - 1)\n }\n } else {\n if (!isFirstItem) {\n setSlideActionType('prev')\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem - 1,\n id: items[activeItem - 1].id,\n },\n })\n setActiveItem(activeItem - 1)\n }\n }\n }\n function findItemIndex(id: string) {\n return items.findIndex(item => item.id === id)\n }\n function getIsNextItem(id: string) {\n const itemIndex = findItemIndex(id)\n\n if (withLoop && activeItem === items.length - 1) {\n return itemIndex === 0\n }\n\n return itemIndex === activeItem + 1\n }\n function getIsPrevItem(id: string) {\n const itemIndex = findItemIndex(id)\n\n if (withLoop && activeItem === 0) {\n return itemIndex === items.length - 1\n }\n\n return itemIndex === activeItem - 1\n }\n\n const contextProps: UseTransitionCarouselContextProps = {\n activeItem,\n slideToItem,\n slideToNextItem,\n slideToPrevItem,\n enterFullscreen,\n exitFullscreen,\n useListenToCustomEvent,\n getIsNextItem,\n getIsPrevItem,\n getIsAnimating,\n getIsFullscreen,\n getIsActiveItem: id => {\n return findItemIndex(id) === activeItem\n },\n getCurrentActiveItem: () => ({\n id: items[activeItem].id,\n index: activeItem,\n }),\n }\n\n const carouselFragment = (\n <UseTransitionCarouselContext.Provider value={contextProps}>\n <div\n ref={mainCarouselWrapperRef}\n {...bindSwipe()}\n style={{\n display: 'flex',\n position: 'relative',\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n }}\n >\n {itemsFragment}\n </div>\n </UseTransitionCarouselContext.Provider>\n )\n\n const thumbsFragment = (\n <UseTransitionCarouselContext.Provider value={contextProps}>\n {_thumbsFragment}\n </UseTransitionCarouselContext.Provider>\n )\n\n return {\n carouselFragment,\n thumbsFragment,\n ...contextProps,\n }\n}\n"],"names":["useRef","Subject","useEffect","screenfull","forwardRef","_jsx","animated","useSpring","createContext","config","useCallback","useDrag","useContext","useState","useTransition"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-spring-carousel",
|
|
3
|
-
"version": "1.9.29-
|
|
3
|
+
"version": "1.9.29-beta19",
|
|
4
4
|
"description": "A new Carousel experience for the web",
|
|
5
5
|
"homepage": "https://react-spring-carousel-js.emilianobucci.com",
|
|
6
6
|
"repository": "https://github.com/Emiliano-Bucci/react-spring-carousel-js",
|