react-spring-carousel 1.9.29-beta18 → 1.9.29-beta21

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
@@ -268,6 +268,9 @@ const UseSpringCarouselContext = createContext(undefined);
268
268
  function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggingSlideTreshold = 140, springConfig = config.default, shouldResizeOnWindowResize = true, withThumbs = false, enableThumbsWrapperScroll = true, carouselSlideAxis = 'x', thumbsSlideAxis = 'x', prepareThumbsData, initialActiveItem = 0, initialStartingPosition = 'start', disableGestures = false, gutter = 0, startEndGutter = 0, touchAction, slideAmount, freeScroll = false, CustomThumbsWrapperComponent, }) {
269
269
  function getItems() {
270
270
  if (withLoop) {
271
+ if (items.length === itemsPerSlide) {
272
+ return [...items, ...items, ...items, ...items, ...items];
273
+ }
271
274
  return [...items, ...items, ...items];
272
275
  }
273
276
  return items;
@@ -475,16 +478,17 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
475
478
  const bindDrag = useDrag(props => {
476
479
  const isDragging = props.dragging;
477
480
  const movement = props.movement[carouselSlideAxis === 'x' ? 0 : 1];
481
+ function cancelDrag() {
482
+ props.cancel();
483
+ }
478
484
  function resetAnimation() {
479
485
  if (itemsPerSlide === 'fluid') {
480
- if (getIfItemsNotFillTheCarousel()) {
486
+ if (getIfItemsNotFillTheCarousel() ||
487
+ (getIsFirstItem() && getSlideActionType() === 'prev')) {
481
488
  setCarouselStyles.start({
482
489
  [carouselSlideAxis]: 0,
483
490
  });
484
491
  }
485
- else if (getIsFirstItem()) {
486
- slideToPrevItem();
487
- }
488
492
  else if (slideFluidEndReached.current) {
489
493
  setCarouselStyles.start({
490
494
  [carouselSlideAxis]: -fluidTotalWrapperScrollValue.current,
@@ -508,10 +512,16 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
508
512
  eventName: 'onDrag',
509
513
  ...props,
510
514
  });
515
+ const direction = props.direction[carouselSlideAxis === 'x' ? 0 : 1];
516
+ if (direction > 0) {
517
+ setSlideActionType('prev');
518
+ }
519
+ else {
520
+ setSlideActionType('next');
521
+ }
511
522
  if (freeScroll) {
512
- const direction = props.direction[carouselSlideAxis === 'x' ? 0 : 1];
513
523
  if (getWrapperScrollDirection() === 0 && direction > 0) {
514
- props.cancel();
524
+ cancelDrag();
515
525
  }
516
526
  else {
517
527
  setCarouselStyles.start({
@@ -534,24 +544,27 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
534
544
  const prevItemTreshold = movement > draggingSlideTreshold;
535
545
  const nextItemTreshold = movement < -draggingSlideTreshold;
536
546
  if (mainCarouselWrapperRef.current.getBoundingClientRect().width >=
537
- items.length * getSlideValue()) {
547
+ items.length * getSlideValue() &&
548
+ itemsPerSlide === 'fluid') {
538
549
  slideFluidEndReached.current = true;
539
550
  }
540
- if ((prevItemTreshold || nextItemTreshold) && getIfItemsNotFillTheCarousel()) {
541
- props.cancel();
551
+ if ((prevItemTreshold || nextItemTreshold) &&
552
+ getIfItemsNotFillTheCarousel() &&
553
+ itemsPerSlide === 'fluid') {
554
+ cancelDrag();
542
555
  resetAnimation();
543
556
  return;
544
557
  }
545
558
  if (slideFluidEndReached.current && movement < 0) {
546
559
  if (nextItemTreshold) {
547
- props.cancel();
560
+ cancelDrag();
548
561
  setCarouselStyles.start({
549
562
  [carouselSlideAxis]: -fluidTotalWrapperScrollValue.current,
550
563
  });
551
564
  }
552
565
  }
553
566
  else if (nextItemTreshold) {
554
- props.cancel();
567
+ cancelDrag();
555
568
  if (!withLoop && getIsLastItem()) {
556
569
  resetAnimation();
557
570
  }
@@ -560,7 +573,7 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
560
573
  }
561
574
  }
562
575
  else if (prevItemTreshold) {
563
- props.cancel();
576
+ cancelDrag();
564
577
  if (!withLoop && getIsFirstItem()) {
565
578
  resetAnimation();
566
579
  }
@@ -574,6 +587,7 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
574
587
  }
575
588
  }, {
576
589
  enabled: !disableGestures,
590
+ preventScrollAxis: 'x',
577
591
  });
578
592
  // Perform some check on first mount
579
593
  useMount(() => {
@@ -644,6 +658,9 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
644
658
  }
645
659
  }
646
660
  }, [carouselSlideAxis]);
661
+ useEffect(() => {
662
+ setTimeout(() => adjustCarouselWrapperPosition(carouselTrackWrapperRef.current), 150);
663
+ }, [adjustCarouselWrapperPosition, carouselSlideAxis, itemsPerSlide]);
647
664
  function setSlideActionType(type) {
648
665
  slideActionType.current = type;
649
666
  }
@@ -709,8 +726,8 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
709
726
  eventName: 'onSlideStartChange',
710
727
  slideActionType: getSlideActionType(),
711
728
  nextItem: {
712
- index: to,
713
- id: items[to].id,
729
+ index: itemsPerSlide === 'fluid' ? -1 : to,
730
+ id: itemsPerSlide === 'fluid' ? '' : items[to].id,
714
731
  },
715
732
  });
716
733
  }
@@ -748,8 +765,8 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
748
765
  eventName: 'onSlideChange',
749
766
  slideActionType: getSlideActionType(),
750
767
  currentItem: {
751
- index: getCurrentActiveItem(),
752
- id: items[getCurrentActiveItem()].id,
768
+ index: itemsPerSlide === 'fluid' ? -1 : getCurrentActiveItem(),
769
+ id: itemsPerSlide === 'fluid' ? '' : items[getCurrentActiveItem()].id,
753
770
  },
754
771
  });
755
772
  }
@@ -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 if (items.length === itemsPerSlide) {\n return [...items, ...items, ...items, ...items, ...items]\n }\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 cancelDrag() {\n props.cancel()\n }\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 cancelDrag()\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 itemsPerSlide === 'fluid'\n ) {\n slideFluidEndReached.current = true\n }\n\n if (\n (prevItemTreshold || nextItemTreshold) &&\n getIfItemsNotFillTheCarousel() &&\n itemsPerSlide === 'fluid'\n ) {\n cancelDrag()\n resetAnimation()\n return\n }\n\n if (slideFluidEndReached.current && movement < 0) {\n if (nextItemTreshold) {\n cancelDrag()\n setCarouselStyles.start({\n [carouselSlideAxis]: -fluidTotalWrapperScrollValue.current,\n })\n }\n } else if (nextItemTreshold) {\n cancelDrag()\n if (!withLoop && getIsLastItem()) {\n resetAnimation()\n } else {\n slideToNextItem()\n }\n } else if (prevItemTreshold) {\n cancelDrag()\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
@@ -271,6 +271,9 @@
271
271
  function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggingSlideTreshold = 140, springConfig = reactSpring.config.default, shouldResizeOnWindowResize = true, withThumbs = false, enableThumbsWrapperScroll = true, carouselSlideAxis = 'x', thumbsSlideAxis = 'x', prepareThumbsData, initialActiveItem = 0, initialStartingPosition = 'start', disableGestures = false, gutter = 0, startEndGutter = 0, touchAction, slideAmount, freeScroll = false, CustomThumbsWrapperComponent, }) {
272
272
  function getItems() {
273
273
  if (withLoop) {
274
+ if (items.length === itemsPerSlide) {
275
+ return [...items, ...items, ...items, ...items, ...items];
276
+ }
274
277
  return [...items, ...items, ...items];
275
278
  }
276
279
  return items;
@@ -478,16 +481,17 @@
478
481
  const bindDrag = react$1.useDrag(props => {
479
482
  const isDragging = props.dragging;
480
483
  const movement = props.movement[carouselSlideAxis === 'x' ? 0 : 1];
484
+ function cancelDrag() {
485
+ props.cancel();
486
+ }
481
487
  function resetAnimation() {
482
488
  if (itemsPerSlide === 'fluid') {
483
- if (getIfItemsNotFillTheCarousel()) {
489
+ if (getIfItemsNotFillTheCarousel() ||
490
+ (getIsFirstItem() && getSlideActionType() === 'prev')) {
484
491
  setCarouselStyles.start({
485
492
  [carouselSlideAxis]: 0,
486
493
  });
487
494
  }
488
- else if (getIsFirstItem()) {
489
- slideToPrevItem();
490
- }
491
495
  else if (slideFluidEndReached.current) {
492
496
  setCarouselStyles.start({
493
497
  [carouselSlideAxis]: -fluidTotalWrapperScrollValue.current,
@@ -511,10 +515,16 @@
511
515
  eventName: 'onDrag',
512
516
  ...props,
513
517
  });
518
+ const direction = props.direction[carouselSlideAxis === 'x' ? 0 : 1];
519
+ if (direction > 0) {
520
+ setSlideActionType('prev');
521
+ }
522
+ else {
523
+ setSlideActionType('next');
524
+ }
514
525
  if (freeScroll) {
515
- const direction = props.direction[carouselSlideAxis === 'x' ? 0 : 1];
516
526
  if (getWrapperScrollDirection() === 0 && direction > 0) {
517
- props.cancel();
527
+ cancelDrag();
518
528
  }
519
529
  else {
520
530
  setCarouselStyles.start({
@@ -537,24 +547,27 @@
537
547
  const prevItemTreshold = movement > draggingSlideTreshold;
538
548
  const nextItemTreshold = movement < -draggingSlideTreshold;
539
549
  if (mainCarouselWrapperRef.current.getBoundingClientRect().width >=
540
- items.length * getSlideValue()) {
550
+ items.length * getSlideValue() &&
551
+ itemsPerSlide === 'fluid') {
541
552
  slideFluidEndReached.current = true;
542
553
  }
543
- if ((prevItemTreshold || nextItemTreshold) && getIfItemsNotFillTheCarousel()) {
544
- props.cancel();
554
+ if ((prevItemTreshold || nextItemTreshold) &&
555
+ getIfItemsNotFillTheCarousel() &&
556
+ itemsPerSlide === 'fluid') {
557
+ cancelDrag();
545
558
  resetAnimation();
546
559
  return;
547
560
  }
548
561
  if (slideFluidEndReached.current && movement < 0) {
549
562
  if (nextItemTreshold) {
550
- props.cancel();
563
+ cancelDrag();
551
564
  setCarouselStyles.start({
552
565
  [carouselSlideAxis]: -fluidTotalWrapperScrollValue.current,
553
566
  });
554
567
  }
555
568
  }
556
569
  else if (nextItemTreshold) {
557
- props.cancel();
570
+ cancelDrag();
558
571
  if (!withLoop && getIsLastItem()) {
559
572
  resetAnimation();
560
573
  }
@@ -563,7 +576,7 @@
563
576
  }
564
577
  }
565
578
  else if (prevItemTreshold) {
566
- props.cancel();
579
+ cancelDrag();
567
580
  if (!withLoop && getIsFirstItem()) {
568
581
  resetAnimation();
569
582
  }
@@ -577,6 +590,7 @@
577
590
  }
578
591
  }, {
579
592
  enabled: !disableGestures,
593
+ preventScrollAxis: 'x',
580
594
  });
581
595
  // Perform some check on first mount
582
596
  useMount(() => {
@@ -647,6 +661,9 @@
647
661
  }
648
662
  }
649
663
  }, [carouselSlideAxis]);
664
+ react.useEffect(() => {
665
+ setTimeout(() => adjustCarouselWrapperPosition(carouselTrackWrapperRef.current), 150);
666
+ }, [adjustCarouselWrapperPosition, carouselSlideAxis, itemsPerSlide]);
650
667
  function setSlideActionType(type) {
651
668
  slideActionType.current = type;
652
669
  }
@@ -712,8 +729,8 @@
712
729
  eventName: 'onSlideStartChange',
713
730
  slideActionType: getSlideActionType(),
714
731
  nextItem: {
715
- index: to,
716
- id: items[to].id,
732
+ index: itemsPerSlide === 'fluid' ? -1 : to,
733
+ id: itemsPerSlide === 'fluid' ? '' : items[to].id,
717
734
  },
718
735
  });
719
736
  }
@@ -751,8 +768,8 @@
751
768
  eventName: 'onSlideChange',
752
769
  slideActionType: getSlideActionType(),
753
770
  currentItem: {
754
- index: getCurrentActiveItem(),
755
- id: items[getCurrentActiveItem()].id,
771
+ index: itemsPerSlide === 'fluid' ? -1 : getCurrentActiveItem(),
772
+ id: itemsPerSlide === 'fluid' ? '' : items[getCurrentActiveItem()].id,
756
773
  },
757
774
  });
758
775
  }
@@ -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 if (items.length === itemsPerSlide) {\n return [...items, ...items, ...items, ...items, ...items]\n }\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 cancelDrag() {\n props.cancel()\n }\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 cancelDrag()\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 itemsPerSlide === 'fluid'\n ) {\n slideFluidEndReached.current = true\n }\n\n if (\n (prevItemTreshold || nextItemTreshold) &&\n getIfItemsNotFillTheCarousel() &&\n itemsPerSlide === 'fluid'\n ) {\n cancelDrag()\n resetAnimation()\n return\n }\n\n if (slideFluidEndReached.current && movement < 0) {\n if (nextItemTreshold) {\n cancelDrag()\n setCarouselStyles.start({\n [carouselSlideAxis]: -fluidTotalWrapperScrollValue.current,\n })\n }\n } else if (nextItemTreshold) {\n cancelDrag()\n if (!withLoop && getIsLastItem()) {\n resetAnimation()\n } else {\n slideToNextItem()\n }\n } else if (prevItemTreshold) {\n cancelDrag()\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-beta21",
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",