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 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
  }
@@ -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
  }
@@ -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-beta18",
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",