react-spring-carousel 3.0.0-beta090.5 → 3.0.0-beta090.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.es2.js","sources":["../src/modules/useFullscreenModule.ts","../src/useSpringCarousel.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react'\nimport screenfull from 'screenfull'\n\nimport { FullscreenModule } from '../types/useFullscreenModule.types'\n\nexport function useFullscreenModule({\n mainCarouselWrapperRef,\n onFullScreenChange,\n handleResize,\n}: FullscreenModule) {\n const isFullscreen = useRef(false)\n\n useEffect(() => {\n function handleFullscreenChange() {\n if (document.fullscreenElement) {\n setIsFullscreen(true)\n onFullScreenChange(true)\n handleResize && handleResize()\n }\n\n if (!document.fullscreenElement) {\n setIsFullscreen(false)\n onFullScreenChange(false)\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 // eslint-disable-next-line react-hooks/exhaustive-deps\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 { config, useIsomorphicLayoutEffect, useSpring } from '@react-spring/web'\nimport { useDrag } from '@use-gesture/react'\nimport React, { createContext, useCallback, useContext, useEffect, useRef } from 'react'\nimport ResizeObserver from 'resize-observer-polyfill'\n\nimport { useEventsModule } from './modules/useEventsModule'\nimport { useFullscreenModule } from './modules/useFullscreenModule'\nimport { useThumbsModule } from './modules/useThumbsModule'\nimport {\n ItemWithThumb,\n SlideActionType,\n SlideMode,\n SlideType,\n UseSpringCarouselComplete,\n UseSpringCarouselWithFixedItems,\n UseSpringCarouselWithFreeScroll,\n UseSpringCarouselWithNoFixedItems,\n UseSpringCarouselWithNoThumbs,\n UseSpringCarouselWithThumbs,\n UseSpringFreeScrollReturnType,\n UseSpringReturnType,\n} from './types'\n\ntype ReturnType<T> = T extends true ? UseSpringFreeScrollReturnType : UseSpringReturnType\n\n/**\n * With free scroll\n */\nfunction useSpringCarousel(props: UseSpringCarouselWithFreeScroll): ReturnType<true>\nfunction useSpringCarousel(props: UseSpringCarouselWithThumbs<true>): ReturnType<true>\nfunction useSpringCarousel(props: UseSpringCarouselWithNoThumbs<true>): ReturnType<true>\n/**\n * No free scroll\n */\nfunction useSpringCarousel(props: UseSpringCarouselWithThumbs<false>): ReturnType<false>\nfunction useSpringCarousel(props: UseSpringCarouselWithNoThumbs<false>): ReturnType<false>\nfunction useSpringCarousel(props: UseSpringCarouselWithFixedItems<false>): ReturnType<false>\nfunction useSpringCarousel(props: UseSpringCarouselWithNoFixedItems<false>): ReturnType<false>\n\nfunction useSpringCarousel({\n items,\n init = true,\n withThumbs,\n thumbsSlideAxis = 'x',\n itemsPerSlide: _itemsPerSlide = 1,\n slideType = 'fixed',\n gutter = 0,\n withLoop = false,\n startEndGutter = 0,\n carouselSlideAxis = 'x',\n disableGestures = false,\n draggingSlideTreshold: _draggingSlideTreshold,\n slideWhenThresholdIsReached = false,\n freeScroll,\n enableFreeScrollDrag,\n initialStartingPosition,\n prepareThumbsData,\n initialActiveItem = 0,\n animateWhenActiveItemChange = true,\n getControllerRef,\n slideGroupOfItems = false,\n}: UseSpringCarouselComplete): ReturnType<typeof freeScroll> {\n const itemsPerSlide = _itemsPerSlide > items.length ? items.length : _itemsPerSlide\n const resizeByPropChange = useRef(false)\n const draggingSlideTreshold = useRef(_draggingSlideTreshold ?? 0)\n const slideActionType = useRef<SlideActionType>('initial')\n const slideModeType = useRef<SlideMode>('initial')\n\n /**\n * After the user hits start/end edges of the carousel,\n * we check where the user is going. This is useful\n * to correctly resize the carousel when the carousel is going\n * backward after reaching the last item in fluid slide mode\n */\n const directionAfterReachingEdges = useRef<'forward' | 'backward' | 'initial'>('initial')\n\n const activeItem = useRef(initialActiveItem)\n const firstItemReached = useRef(initialActiveItem === 0)\n const lastItemReached = useRef(slideType === 'fixed' && initialActiveItem === items.length - 1)\n const mainCarouselWrapperRef = useRef<HTMLDivElement | null>(null)\n const carouselTrackWrapperRef = useRef<HTMLDivElement | null>(null)\n\n const prevTotalScrollValue = useRef(0)\n const prevWindowWidth = useRef(0)\n const prevSlidedValue = useRef(0)\n const prevWithLoop = useRef(withLoop)\n const prevSlideType = useRef(slideType)\n const prevFreeScroll = useRef(freeScroll)\n const windowIsHidden = useRef(false)\n\n const getItems = useCallback(() => {\n if (withLoop) {\n return [\n ...items.map((i) => ({\n ...i,\n id: `prev-repeated-item-${i.id}`,\n })),\n ...items,\n ...items.map((i) => ({\n ...i,\n id: `next-repeated-item-${i.id}`,\n })),\n ]\n }\n return [...items]\n }, [items, withLoop])\n const internalItems = getItems()\n\n const [spring, setSpring] = useSpring(\n () => ({\n val: 0,\n pause: !init,\n onChange: ({ value }) => {\n if (freeScroll && mainCarouselWrapperRef.current) {\n if (carouselSlideAxis === 'x') {\n mainCarouselWrapperRef.current.scrollLeft = Math.abs(value.val)\n } else {\n mainCarouselWrapperRef.current.scrollTop = Math.abs(value.val)\n }\n setStartEndItemReachedOnFreeScroll()\n } else if (carouselTrackWrapperRef.current) {\n if (carouselSlideAxis === 'x') {\n carouselTrackWrapperRef.current.style.transform = `translate3d(${value.val}px, 0px,0px)`\n } else {\n carouselTrackWrapperRef.current.style.transform = `translate3d(0px,${value.val}px,0px)`\n }\n }\n },\n }),\n [freeScroll],\n )\n const { emitEvent, useListenToCustomEvent } = useEventsModule<'use-spring'>()\n const { thumbsFragment, handleScroll } = useThumbsModule<'use-spring'>({\n withThumbs: !!withThumbs,\n thumbsSlideAxis,\n prepareThumbsData,\n items: items as ItemWithThumb<'use-spring'>[],\n renderThumbFnProps: {\n getIsActiveItem,\n getIsPrevItem,\n useListenToCustomEvent,\n getIsNextItem,\n },\n })\n const { enterFullscreen, exitFullscreen, getIsFullscreen } = useFullscreenModule({\n mainCarouselWrapperRef,\n handleResize: () => adjustCarouselWrapperPosition(),\n onFullScreenChange: (val) => {\n emitEvent({\n eventName: 'onFullscreenChange',\n isFullscreen: val,\n })\n },\n })\n\n function getItemStyles(isLastItem: boolean) {\n if (slideType === 'fixed' && !freeScroll) {\n return {\n marginRight: `${isLastItem ? 0 : gutter}px`,\n flex: `1 0 calc(100% / ${itemsPerSlide} - ${\n (gutter * (itemsPerSlide - 1)) / itemsPerSlide\n }px)`,\n }\n }\n return {\n ...{ marginRight: `${isLastItem ? 0 : gutter}px` },\n }\n }\n const getSlideValue = useCallback(() => {\n const carouselItem = slideGroupOfItems\n ? mainCarouselWrapperRef.current\n : mainCarouselWrapperRef.current?.querySelector('.use-spring-carousel-item')\n\n if (!carouselItem) {\n throw Error('No carousel items available!')\n }\n\n return (\n carouselItem.getBoundingClientRect()[carouselSlideAxis === 'x' ? 'width' : 'height'] + gutter\n )\n }, [carouselSlideAxis, gutter, slideGroupOfItems])\n\n type SlideToItem = {\n from: number\n to: number\n nextActiveItem?: number\n immediate?: boolean\n slideMode: SlideMode\n }\n\n function slideToItem({ from, to, nextActiveItem, immediate = false, slideMode }: SlideToItem) {\n slideModeType.current = slideMode\n\n if (typeof nextActiveItem === 'number') {\n if (!freeScroll) {\n activeItem.current = nextActiveItem\n }\n emitEvent({\n eventName: 'onSlideStartChange',\n slideActionType: slideActionType.current,\n slideMode: slideModeType.current,\n nextItem: {\n startReached: firstItemReached.current,\n endReached: lastItemReached.current,\n index: freeScroll ? -1 : activeItem.current,\n id: freeScroll ? '' : items[activeItem.current].id,\n },\n })\n }\n\n prevSlidedValue.current = to\n setSpring.start({\n immediate,\n from: {\n val: from,\n },\n to: {\n val: to,\n },\n config: {\n ...config.default,\n velocity: spring.val.velocity,\n },\n onRest(value) {\n if (!immediate && value.finished) {\n emitEvent({\n eventName: 'onSlideChange',\n slideActionType: slideActionType.current,\n slideMode: slideModeType.current,\n currentItem: {\n startReached: firstItemReached.current,\n endReached: lastItemReached.current,\n index: freeScroll ? -1 : activeItem.current,\n id: freeScroll ? '' : items[activeItem.current].id,\n },\n })\n }\n },\n })\n if (withThumbs && !immediate) {\n handleScroll(activeItem.current)\n }\n }\n const getTotalScrollValue = useCallback(() => {\n if (!carouselTrackWrapperRef.current) return 0\n if (withLoop) {\n return getSlideValue() * items.length\n }\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 startEndGutter * 2,\n )\n }, [carouselSlideAxis, getSlideValue, items.length, startEndGutter, withLoop])\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\n const getCarouselItemWidth = useCallback(() => {\n const carouselItem = carouselTrackWrapperRef.current?.querySelector('.use-spring-carousel-item')\n if (!carouselItem) {\n throw Error('No carousel items available!')\n }\n return (\n carouselItem.getBoundingClientRect()[carouselSlideAxis === 'x' ? 'width' : 'height'] + gutter\n )\n }, [carouselSlideAxis, gutter])\n\n const setPosition = useCallback(\n (v: number) => {\n const positionProperty = carouselSlideAxis === 'x' ? 'left' : 'top'\n const ref = carouselTrackWrapperRef.current\n if (!ref) return\n\n if (withLoop) {\n ref.style.top = '0px'\n ref.style.left = '0px'\n ref.style[positionProperty] = `-${v - startEndGutter}px`\n\n firstItemReached.current = false\n lastItemReached.current = false\n } else {\n ref.style.left = '0px'\n ref.style.top = '0px'\n }\n },\n [carouselSlideAxis, startEndGutter, withLoop],\n )\n\n const adjustCarouselWrapperPosition = useCallback(\n (shouldResetPosition = false) => {\n if (carouselTrackWrapperRef.current && shouldResetPosition) {\n carouselTrackWrapperRef.current.style.transform = `translate3d(0px, 0px,0px)`\n carouselTrackWrapperRef.current.style.left = `0`\n carouselTrackWrapperRef.current.style.top = `0`\n }\n\n if (slideType === 'fixed') {\n if (initialStartingPosition === 'center') {\n setPosition(\n getCarouselItemWidth() * items.length -\n getSlideValue() * Math.round((itemsPerSlide - 1) / 2),\n )\n } else if (initialStartingPosition === 'end') {\n setPosition(\n getCarouselItemWidth() * items.length - getSlideValue() * Math.round(itemsPerSlide - 1),\n )\n } else {\n setPosition(getCarouselItemWidth() * items.length)\n }\n }\n\n if (slideType === 'fluid') {\n setPosition(getCarouselItemWidth() * items.length)\n /**\n * User reached the last item and now is resizing the container that becomes smaller/bigger.\n * Example: on mobile devices the user rotates the device\n */\n if (\n lastItemReached.current &&\n getTotalScrollValue() !== Math.abs(prevSlidedValue.current) &&\n !withLoop\n ) {\n const newVal = -getTotalScrollValue()\n prevSlidedValue.current = newVal\n setSpring.start({\n immediate: true,\n val: prevSlidedValue.current,\n })\n return\n }\n\n if (\n Math.abs(prevSlidedValue.current) > 0 &&\n getTotalScrollValue() !== Math.abs(prevSlidedValue.current) &&\n !withLoop &&\n !freeScroll &&\n directionAfterReachingEdges.current === 'backward'\n ) {\n const diff = prevTotalScrollValue.current - getTotalScrollValue()\n const next = prevSlidedValue.current + diff\n\n setSpring.start({\n immediate: true,\n val: next,\n })\n\n return () => {\n prevSlidedValue.current = next\n }\n }\n\n console.log('here')\n return\n }\n\n if (!freeScroll && slideType === 'fixed') {\n const nextValue = -(getSlideValue() * activeItem.current)\n\n /**\n * Here we make sure to always show the latest item as the\n * latest item visible in the carousel viewport.\n */\n if (Math.abs(nextValue) > getTotalScrollValue() && !withLoop) {\n const val = -getTotalScrollValue()\n lastItemReached.current = true\n prevSlidedValue.current = val\n setSpring.start({\n immediate: true,\n val: prevSlidedValue.current,\n })\n } else {\n prevSlidedValue.current = nextValue\n setSpring.start({\n immediate: true,\n val: nextValue,\n })\n }\n\n setTimeout(() => {\n resizeByPropChange.current = false\n }, 0)\n }\n },\n [\n freeScroll,\n getCarouselItemWidth,\n getSlideValue,\n getTotalScrollValue,\n initialStartingPosition,\n items.length,\n itemsPerSlide,\n setPosition,\n setSpring,\n slideType,\n withLoop,\n ],\n )\n function getFromValue() {\n if (freeScroll && mainCarouselWrapperRef.current) {\n return mainCarouselWrapperRef.current[carouselSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop']\n }\n return spring.val.get()\n }\n function getToValue(type: 'next' | 'prev', index?: number) {\n if (freeScroll && type === 'next') {\n const next = prevSlidedValue.current + getSlideValue()\n if (next > getTotalScrollValue()) {\n return getTotalScrollValue()\n }\n return next\n }\n\n if (freeScroll && type === 'prev') {\n const next = prevSlidedValue.current - getSlideValue()\n if (next < 0) {\n return 0\n }\n return next\n }\n\n if (type === 'next') {\n if (typeof index === 'number') {\n return -(index * getSlideValue())\n }\n return prevSlidedValue.current - getSlideValue()\n }\n\n if (typeof index === 'number') {\n return -(index * getSlideValue())\n }\n return prevSlidedValue.current + getSlideValue()\n }\n\n type SlideToPrevNextItem = {\n type: SlideMode\n index?: number\n immediate?: boolean\n }\n function slideToPrevItem({ type, index, immediate }: SlideToPrevNextItem) {\n if (!init || windowIsHidden.current || (firstItemReached.current && !withLoop)) return\n\n if (lastItemReached.current) {\n directionAfterReachingEdges.current = 'backward'\n }\n\n slideActionType.current = 'prev'\n lastItemReached.current = false\n\n const nextItem = typeof index === 'number' ? index : activeItem.current - 1\n\n if (freeScroll) {\n setStartEndItemReachedOnFreeScroll()\n }\n\n if (!withLoop) {\n const nextItemWillExceed = freeScroll\n ? getToValue('prev', index) - getSlideValue() / 3 < 0\n : getToValue('prev', index) + getSlideValue() / 3 > 0\n\n if (firstItemReached.current) return\n if (nextItemWillExceed) {\n firstItemReached.current = true\n lastItemReached.current = false\n\n slideToItem({\n slideMode: type,\n from: getFromValue(),\n to: 0,\n nextActiveItem: 0,\n immediate,\n })\n return\n }\n }\n if (withLoop && (firstItemReached.current || nextItem < 0)) {\n firstItemReached.current = false\n lastItemReached.current = true\n slideToItem({\n slideMode: type,\n from: getFromValue() - getSlideValue() * items.length,\n to: -(getSlideValue() * items.length) + getSlideValue(),\n nextActiveItem: items.length - 1,\n immediate,\n })\n return\n }\n if (nextItem === 0) {\n firstItemReached.current = true\n }\n if (nextItem === items.length - 1 || nextItem === -1) {\n lastItemReached.current = true\n }\n slideToItem({\n slideMode: type,\n from: getFromValue(),\n to: getToValue('prev', index),\n nextActiveItem: nextItem,\n immediate,\n })\n }\n function slideToNextItem({ type, index, immediate }: SlideToPrevNextItem) {\n if (!init || windowIsHidden.current || (lastItemReached.current && !withLoop)) return\n\n if (firstItemReached.current) {\n directionAfterReachingEdges.current = 'forward'\n }\n\n slideActionType.current = 'next'\n firstItemReached.current = false\n\n const nextItem = index || activeItem.current + 1\n\n if (freeScroll) {\n setStartEndItemReachedOnFreeScroll()\n }\n\n if (!withLoop) {\n const nextItemWillExceed =\n Math.abs(getToValue('next', index)) > getTotalScrollValue() - getSlideValue() / 3\n\n if (lastItemReached.current) return\n if (nextItemWillExceed) {\n firstItemReached.current = false\n lastItemReached.current = true\n\n slideToItem({\n slideMode: type,\n from: getFromValue(),\n to: freeScroll ? getTotalScrollValue() : -getTotalScrollValue(),\n nextActiveItem: nextItem,\n immediate,\n })\n return\n }\n }\n if (withLoop && (lastItemReached.current || nextItem > items.length - 1)) {\n lastItemReached.current = false\n firstItemReached.current = true\n slideToItem({\n slideMode: type,\n from: getFromValue() + getSlideValue() * items.length,\n to: 0,\n nextActiveItem: 0,\n immediate,\n })\n return\n }\n if (nextItem === 0) {\n firstItemReached.current = true\n }\n if (nextItem === items.length - 1) {\n lastItemReached.current = true\n }\n slideToItem({\n slideMode: type,\n from: getFromValue(),\n to: getToValue('next', index),\n nextActiveItem: nextItem,\n immediate,\n })\n }\n function setDraggingSliderTreshold() {\n if (_draggingSlideTreshold) {\n draggingSlideTreshold.current = _draggingSlideTreshold\n } else {\n draggingSlideTreshold.current = Math.floor(getSlideValue() / 2 / 2)\n }\n }\n function initializeCarousel() {\n if (carouselTrackWrapperRef.current) {\n prevTotalScrollValue.current = getTotalScrollValue()\n prevWithLoop.current = withLoop\n prevSlideType.current = slideType\n prevFreeScroll.current = freeScroll\n prevWindowWidth.current = window.innerWidth\n prevSlidedValue.current = 0\n\n internalSlideToItem({ id: 0, immediate: true, shouldReset: true })\n setDraggingSliderTreshold()\n adjustCarouselWrapperPosition()\n }\n }\n\n const enableDrag =\n (init && !disableGestures && !freeScroll) || (!!freeScroll && !!enableFreeScrollDrag)\n\n const bindDrag = useDrag(\n (state) => {\n const isDragging = state.dragging\n const movement = state.offset[carouselSlideAxis === 'x' ? 0 : 1]\n const currentMovement = state.movement[carouselSlideAxis === 'x' ? 0 : 1]\n const direction = state.direction[carouselSlideAxis === 'x' ? 0 : 1]\n\n const prevItemTreshold = currentMovement > draggingSlideTreshold.current\n const nextItemTreshold = currentMovement < -draggingSlideTreshold.current\n const tot = getTotalScrollValue()\n\n if (isDragging) {\n if (direction > 0) {\n slideActionType.current = 'prev'\n } else {\n slideActionType.current = 'next'\n }\n\n emitEvent({\n ...state,\n eventName: 'onDrag',\n slideActionType: slideActionType.current,\n })\n\n if (freeScroll) {\n if (movement > 0) {\n setSpring.start({\n from: {\n val: getFromValue(),\n },\n to: {\n val: 0,\n },\n config: {\n velocity: state.velocity,\n friction: 50,\n tension: 1000,\n },\n })\n state.cancel()\n return\n }\n\n setSpring.start({\n from: {\n val: getFromValue(),\n },\n to: {\n val: -movement,\n },\n config: {\n velocity: state.velocity,\n friction: 50,\n tension: 1000,\n },\n })\n return\n }\n\n setSpring.start({\n val: movement,\n config: {\n velocity: state.velocity,\n friction: 50,\n tension: 1000,\n },\n })\n\n if (slideWhenThresholdIsReached && nextItemTreshold) {\n slideToNextItem({ type: 'drag' })\n state.cancel()\n } else if (slideWhenThresholdIsReached && prevItemTreshold) {\n slideToPrevItem({ type: 'drag' })\n state.cancel()\n }\n\n const res = tot - Math.abs(movement)\n\n if (res < -(getSlideValue() * 2)) {\n state.cancel()\n }\n\n return\n }\n\n if (state.last && freeScroll && movement > 0) {\n setSpring.start({\n from: {\n val: getFromValue(),\n },\n to: {\n val: 0,\n },\n config: {\n velocity: state.velocity,\n friction: 50,\n tension: 1000,\n },\n })\n return\n }\n if (state.last && !state.canceled && freeScroll) {\n if (slideActionType.current === 'prev') {\n slideToPrevItem({ type: 'drag' })\n }\n if (slideActionType.current === 'next') {\n slideToNextItem({ type: 'drag' })\n }\n }\n if (state.last && !state.canceled && !freeScroll) {\n if (nextItemTreshold) {\n if (!withLoop && lastItemReached.current) {\n setSpring.start({\n val: -getTotalScrollValue(),\n config: {\n ...config.default,\n velocity: state.velocity,\n },\n })\n } else {\n slideToNextItem({ type: 'drag' })\n }\n } else if (prevItemTreshold) {\n if (!withLoop && firstItemReached.current) {\n setSpring.start({\n val: 0,\n config: {\n ...config.default,\n velocity: state.velocity,\n },\n })\n } else {\n slideToPrevItem({ type: 'drag' })\n }\n } else {\n setSpring.start({\n val: prevSlidedValue.current,\n config: {\n ...config.default,\n velocity: state.velocity,\n },\n })\n }\n }\n if (state.last && state.canceled) {\n setSpring.start({\n val: prevSlidedValue.current,\n config: {\n ...config.default,\n velocity: state.velocity,\n },\n })\n }\n },\n {\n enabled: enableDrag,\n axis: carouselSlideAxis,\n from: () => {\n if (freeScroll && mainCarouselWrapperRef.current) {\n return [\n -mainCarouselWrapperRef.current.scrollLeft,\n -mainCarouselWrapperRef.current.scrollTop,\n ]\n }\n if (carouselSlideAxis === 'x') {\n return [spring.val.get(), spring.val.get()]\n }\n return [spring.val.get(), spring.val.get()]\n },\n },\n )\n\n function getWrapperOverflowStyles() {\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 setStartEndItemReachedOnFreeScroll() {\n if (mainCarouselWrapperRef.current) {\n prevSlidedValue.current =\n mainCarouselWrapperRef.current[carouselSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop']\n if (\n mainCarouselWrapperRef.current[carouselSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'] === 0\n ) {\n firstItemReached.current = true\n lastItemReached.current = false\n }\n if (\n mainCarouselWrapperRef.current[carouselSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'] >\n 0 &&\n mainCarouselWrapperRef.current[carouselSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'] <\n getTotalScrollValue()\n ) {\n firstItemReached.current = false\n lastItemReached.current = false\n }\n\n if (\n mainCarouselWrapperRef.current[carouselSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'] ===\n getTotalScrollValue()\n ) {\n firstItemReached.current = false\n lastItemReached.current = true\n }\n }\n }\n function getScrollHandlers() {\n if (freeScroll) {\n return {\n onWheel() {\n spring.val.stop()\n setStartEndItemReachedOnFreeScroll()\n },\n }\n }\n return {}\n }\n function findItemIndex(id: string | number, error?: string) {\n let itemIndex = 0\n\n if (typeof id === 'string') {\n itemIndex = items.findIndex((item) => item.id === id)\n } else {\n itemIndex = id\n }\n if (itemIndex < 0 || itemIndex >= items.length) {\n if (error) {\n throw new Error(error)\n }\n console.error(`The item doesn't exist; check that the id provided - ${id} - is correct.`)\n itemIndex = -1\n }\n\n return itemIndex\n }\n type InternalSlideToItem = {\n id: string | number\n immediate?: boolean\n shouldReset?: boolean\n type?: SlideType\n }\n function internalSlideToItem({ id, immediate, shouldReset, type }: InternalSlideToItem) {\n if (!init || windowIsHidden.current) return\n\n firstItemReached.current = false\n lastItemReached.current = false\n\n const itemIndex = findItemIndex(\n id,\n \"The item you want to slide to doesn't exist; check the provided id.\",\n )\n\n if (itemIndex === activeItem.current && !shouldReset) {\n return\n }\n\n const currentItem = findItemIndex(items[activeItem.current].id)\n const newActiveItem = findItemIndex(items[itemIndex].id)\n\n if (newActiveItem > currentItem) {\n slideToNextItem({\n type: type || shouldReset ? 'initial' : 'click',\n index: newActiveItem,\n immediate,\n })\n } else {\n slideToPrevItem({\n type: type || shouldReset ? 'initial' : 'click',\n index: newActiveItem,\n immediate,\n })\n }\n }\n function getIsNextItem(id: string | number) {\n const itemIndex = findItemIndex(id, \"The item doesn't exist; check the provided id.\")\n const _activeItem = activeItem.current\n if (withLoop && _activeItem === items.length - 1) {\n return itemIndex === 0\n }\n return itemIndex === _activeItem + 1\n }\n function getIsPrevItem(id: string | number) {\n const itemIndex = findItemIndex(id, \"The item doesn't exist; check the provided id.\")\n const _activeItem = activeItem.current\n if (withLoop && _activeItem === 0) {\n return itemIndex === items.length - 1\n }\n return itemIndex === _activeItem - 1\n }\n function getIsActiveItem(id: string | number) {\n return (\n findItemIndex(id, \"The item you want to check doesn't exist; check the provided id.\") ===\n activeItem.current\n )\n }\n function getTouchAction() {\n if (disableGestures) {\n return 'unset'\n }\n\n if (carouselSlideAxis === 'x') {\n return 'pan-y'\n }\n return 'pan-x'\n }\n\n const res = freeScroll\n ? {\n useListenToCustomEvent,\n enterFullscreen,\n exitFullscreen,\n getIsFullscreen,\n slideToPrevItem: (animate = true) => {\n slideToPrevItem({\n type: 'click',\n immediate: !animate,\n })\n },\n slideToNextItem: (animate = true) => {\n slideToNextItem({\n type: 'click',\n immediate: !animate,\n })\n },\n }\n : {\n useListenToCustomEvent,\n enterFullscreen,\n exitFullscreen,\n getIsFullscreen,\n slideToPrevItem: (animate = true) => {\n slideToPrevItem({\n type: 'click',\n immediate: !animate,\n })\n },\n slideToNextItem: (animate = true) => {\n slideToNextItem({\n type: 'click',\n immediate: !animate,\n })\n },\n slideToItem: (id: string | number, animate = true) => {\n internalSlideToItem({ id, immediate: !animate })\n },\n getIsNextItem,\n getIsPrevItem,\n getIsActiveItem,\n }\n\n // uwc-debug-below\n useIsomorphicLayoutEffect(() => {\n /**\n * Set initial track position when carousel is initialized\n */\n if (carouselTrackWrapperRef.current && init) {\n resizeByPropChange.current = true\n initializeCarousel()\n }\n }, [init])\n useEffect(() => {\n if (activeItem.current !== initialActiveItem) {\n resizeByPropChange.current = true\n internalSlideToItem({\n id: initialActiveItem,\n immediate: !animateWhenActiveItemChange,\n })\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [initialActiveItem])\n useEffect(() => {\n if (init) {\n if (initialActiveItem > items.length - 1) {\n throw new Error(\n `initialActiveItem (${initialActiveItem}) is greater than the total quantity available items (${items.length}).`,\n )\n }\n if (itemsPerSlide > items.length) {\n console.warn(\n `itemsPerSlide (${itemsPerSlide}) is greater than the total quantity available items (${items.length}). Fallback to ${items.length})`,\n )\n }\n }\n }, [initialActiveItem, items.length, itemsPerSlide, init])\n useEffect(() => {\n prevWindowWidth.current = window.innerWidth\n }, [])\n\n /**\n * When these props change we reset the carousel\n */\n useEffect(() => {\n if (init) {\n if (withLoop && freeScroll) {\n throw new Error(\"`withLoop` and `freeScroll` can't be used together.\")\n }\n if (freeScroll && slideType === 'fixed') {\n throw new Error(\"`freeScroll` can't be used when `scrollType=fixed`.\")\n }\n if (enableFreeScrollDrag && (slideType !== 'fluid' || !freeScroll)) {\n throw new Error(\n '`enableFreeScrollDrag` must be used with `slideType=fluid` and `freeScroll=true`',\n )\n }\n if (slideGroupOfItems && freeScroll) {\n throw new Error(\"`slideGroupOfItems` and `freeScroll` can't be used together.\")\n }\n\n resizeByPropChange.current = true\n initializeCarousel()\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n initialStartingPosition,\n itemsPerSlide,\n startEndGutter,\n gutter,\n init,\n withLoop,\n slideType,\n freeScroll,\n enableFreeScrollDrag,\n slideGroupOfItems,\n ])\n\n useEffect(() => {\n if (!init) return\n function handleVisibilityChange() {\n if (document.hidden) {\n windowIsHidden.current = true\n } else {\n windowIsHidden.current = false\n }\n }\n document.addEventListener('visibilitychange', handleVisibilityChange)\n return () => {\n document.removeEventListener('visibilitychange', handleVisibilityChange)\n }\n }, [init])\n\n useEffect(() => {\n if (mainCarouselWrapperRef.current) {\n let timer: NodeJS.Timeout\n const observer = new ResizeObserver(() => {\n if (windowIsHidden.current) return\n if (!resizeByPropChange.current) {\n prevWindowWidth.current = window.innerWidth\n const cb = adjustCarouselWrapperPosition()\n window.clearTimeout(timer)\n\n timer = setTimeout(() => {\n prevTotalScrollValue.current = getTotalScrollValue()\n if (typeof cb === 'function') {\n cb()\n }\n }, 100)\n }\n })\n observer.observe(mainCarouselWrapperRef.current)\n return () => {\n observer.disconnect()\n }\n }\n }, [adjustCarouselWrapperPosition, getTotalScrollValue])\n useEffect(() => {\n if (getControllerRef) {\n getControllerRef({\n slideToNextItem: res.slideToNextItem,\n slideToPrevItem: res.slideToPrevItem,\n slideToItem: res?.slideToItem,\n })\n }\n }, [getControllerRef, res.slideToItem, res.slideToNextItem, res.slideToPrevItem])\n\n const _thumbsFragment = <Context.Provider value={res}>{thumbsFragment}</Context.Provider>\n const carouselFragment = (\n <Context.Provider value={res}>\n <div\n className=\"use-spring-carousel-main-wrapper\"\n ref={mainCarouselWrapperRef}\n {...getScrollHandlers()}\n style={{\n display: 'flex',\n position: 'relative',\n width: '100%',\n height: '100%',\n ...(getWrapperOverflowStyles() as React.CSSProperties),\n }}\n >\n <div\n className=\"use-spring-carousel-track-wrapper\"\n ref={carouselTrackWrapperRef}\n {...bindDrag()}\n style={{\n position: 'relative',\n display: 'flex',\n flexDirection: carouselSlideAxis === 'x' ? 'row' : 'column',\n touchAction: getTouchAction(),\n ...getAnimatedWrapperStyles(),\n }}\n >\n {(freeScroll || !withLoop) && startEndGutter ? (\n <div\n style={{\n flexShrink: 0,\n width: startEndGutter,\n }}\n />\n ) : null}\n {internalItems.map((item, index) => {\n return (\n <div\n key={`${item.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 flex: '1',\n ...getItemStyles(\n index ===\n internalItems.findIndex(\n (i) => i.id === internalItems[internalItems.length - 1].id,\n ),\n ),\n }}\n >\n {typeof item.renderItem === 'function'\n ? item.renderItem({\n getIsActiveItem,\n getIsNextItem,\n getIsPrevItem,\n useListenToCustomEvent,\n })\n : item.renderItem}\n </div>\n )\n })}\n {(freeScroll || !withLoop) && startEndGutter ? (\n <div\n style={{\n flexShrink: 0,\n width: startEndGutter,\n }}\n />\n ) : null}\n </div>\n </div>\n </Context.Provider>\n )\n\n return { ...res, carouselFragment, thumbsFragment: _thumbsFragment }\n}\n\ntype ContextProps<T = undefined> = Omit<\n ReturnType<T extends 'free-scroll' ? true : false>,\n 'carouselFragment' | 'thumbsFragment'\n>\n\nconst Context = createContext<ContextProps | ContextProps<'free-scroll'> | undefined>(undefined)\n\nfunction useSpringCarouselContext<T>() {\n const context = useContext(Context)\n if (!context) {\n throw new Error('useSpringCarouselContext must be used within the carousel.')\n }\n return context as ContextProps<T>\n}\n\nexport { useSpringCarousel, useSpringCarouselContext }\n"],"names":["useFullscreenModule","mainCarouselWrapperRef","onFullScreenChange","handleResize","isFullscreen","useRef","useEffect","handleFullscreenChange","setIsFullscreen","screenfull","_isFullscreen","getIsFullscreen","enterFullscreen","elementRef","exitFullscreen","useSpringCarousel","items","init","withThumbs","thumbsSlideAxis","_itemsPerSlide","slideType","gutter","withLoop","startEndGutter","carouselSlideAxis","disableGestures","_draggingSlideTreshold","slideWhenThresholdIsReached","freeScroll","enableFreeScrollDrag","initialStartingPosition","prepareThumbsData","initialActiveItem","animateWhenActiveItemChange","getControllerRef","slideGroupOfItems","itemsPerSlide","resizeByPropChange","draggingSlideTreshold","slideActionType","slideModeType","directionAfterReachingEdges","activeItem","firstItemReached","lastItemReached","carouselTrackWrapperRef","prevTotalScrollValue","prevWindowWidth","prevSlidedValue","prevWithLoop","prevSlideType","prevFreeScroll","windowIsHidden","internalItems","useCallback","i","spring","setSpring","useSpring","value","setStartEndItemReachedOnFreeScroll","emitEvent","useListenToCustomEvent","useEventsModule","thumbsFragment","handleScroll","useThumbsModule","getIsActiveItem","getIsPrevItem","getIsNextItem","adjustCarouselWrapperPosition","val","getItemStyles","isLastItem","getSlideValue","carouselItem","_a","slideToItem","from","to","nextActiveItem","immediate","slideMode","config","getTotalScrollValue","getAnimatedWrapperStyles","percentValue","getCarouselItemWidth","setPosition","v","positionProperty","ref","shouldResetPosition","newVal","diff","next","nextValue","getFromValue","getToValue","type","index","slideToPrevItem","nextItem","nextItemWillExceed","slideToNextItem","setDraggingSliderTreshold","initializeCarousel","internalSlideToItem","bindDrag","useDrag","state","isDragging","movement","currentMovement","direction","prevItemTreshold","nextItemTreshold","tot","getWrapperOverflowStyles","getScrollHandlers","findItemIndex","id","error","itemIndex","item","shouldReset","currentItem","newActiveItem","_activeItem","getTouchAction","res","animate","useIsomorphicLayoutEffect","handleVisibilityChange","timer","observer","ResizeObserver","cb","_thumbsFragment","jsx","Context","carouselFragment","jsxs","createContext","useSpringCarouselContext","context","useContext"],"mappings":"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"}
package/dist/index.es3.js DELETED
@@ -1,255 +0,0 @@
1
- import { u as K, a as O, j as x } from "./useThumbsModule-4e4b7969.js";
2
- import { useTransition as Q, a as U, config as V } from "@react-spring/web";
3
- import { useDrag as X } from "@use-gesture/react";
4
- import { createContext as Y, useRef as y, useState as Z, useEffect as P, useContext as L } from "react";
5
- const o = {
6
- initial: {
7
- opacity: 1,
8
- position: "relative"
9
- },
10
- from: {
11
- opacity: 0,
12
- position: "relative"
13
- },
14
- enter: {
15
- position: "relative",
16
- opacity: 1
17
- },
18
- leave: {
19
- opacity: 1,
20
- position: "absolute"
21
- }
22
- };
23
- function re({
24
- init: c = !0,
25
- disableGestures: w = !1,
26
- items: r,
27
- springConfig: N = V.default,
28
- exitBeforeEnter: _ = !1,
29
- trail: M,
30
- withLoop: s = !1,
31
- activeItem: a,
32
- toPrevItemSpringProps: f = o,
33
- toNextItemSpringProps: m = o,
34
- draggingSlideTreshold: C = 50,
35
- thumbsSlideAxis: $ = "x"
36
- }) {
37
- const l = y("next"), p = y("initial"), A = y(null), [n, b] = Z(a ?? 0), { emitEvent: h, useListenToCustomEvent: T } = K(), { handleScroll: D, thumbsFragment: S } = O({
38
- thumbsSlideAxis: $,
39
- items: r,
40
- renderThumbFnProps: {
41
- getIsNextItem: j,
42
- getIsPrevItem: k,
43
- useListenToCustomEvent: T,
44
- activeItem: {
45
- index: n,
46
- id: r[n].id
47
- }
48
- }
49
- });
50
- function W() {
51
- return l.current === "prev" ? {
52
- initial: {
53
- ...f.initial
54
- },
55
- from: {
56
- ...f.from
57
- },
58
- enter: {
59
- ...f.enter
60
- },
61
- leave: {
62
- ...f.leave
63
- }
64
- } : l.current === "next" ? {
65
- initial: {
66
- ...m.initial
67
- },
68
- from: {
69
- ...m.from
70
- },
71
- enter: {
72
- ...m.enter
73
- },
74
- leave: {
75
- ...m.leave
76
- }
77
- } : {
78
- initial: {
79
- ...o.initial
80
- },
81
- from: {
82
- ...o.from
83
- },
84
- enter: {
85
- ...o.enter
86
- },
87
- leave: {
88
- ...o.leave
89
- }
90
- };
91
- }
92
- P(() => {
93
- typeof a == "number" && a !== n && b(a);
94
- }, [a]);
95
- function v({ to: e, slideType: t, slideMode: i }) {
96
- l.current = t, p.current = i, h({
97
- eventName: "onSlideStartChange",
98
- slideActionType: l.current,
99
- slideMode: p.current,
100
- nextItem: {
101
- index: e,
102
- id: r[e].id,
103
- startReached: e === 0,
104
- endReached: e === r.length - 1
105
- }
106
- }), b(e), D(n);
107
- }
108
- function R(e) {
109
- if (!c)
110
- return;
111
- const t = n === 0;
112
- !s && t || v(s && t ? {
113
- to: r.length - 1,
114
- slideType: "prev",
115
- slideMode: e
116
- } : {
117
- to: n - 1,
118
- slideType: "prev",
119
- slideMode: e
120
- });
121
- }
122
- function F(e) {
123
- if (!c)
124
- return;
125
- const t = n === r.length - 1;
126
- !s && t || v(s && t ? {
127
- to: 0,
128
- slideType: "next",
129
- slideMode: e
130
- } : {
131
- to: n + 1,
132
- slideType: "next",
133
- slideMode: e
134
- });
135
- }
136
- const q = Q(n, {
137
- config: N,
138
- key: null,
139
- trail: M,
140
- exitBeforeEnter: _,
141
- ...W(),
142
- onRest(e, t, i) {
143
- e.finished && i === n && h({
144
- eventName: "onSlideChange",
145
- slideActionType: l.current,
146
- slideMode: p.current,
147
- currentItem: {
148
- index: n,
149
- id: r[n].id,
150
- startReached: n === 0,
151
- endReached: n === r.length - 1
152
- }
153
- });
154
- }
155
- }), z = X(
156
- ({ last: e, movement: [t] }) => {
157
- if (e) {
158
- const i = t > C, u = t < -C, d = n === 0, J = n === r.length - 1;
159
- if (u) {
160
- if (!s && J)
161
- return;
162
- h({
163
- eventName: "onLeftSwipe"
164
- }), F("swipe");
165
- } else if (i) {
166
- if (!s && d)
167
- return;
168
- h({
169
- eventName: "onRightSwipe"
170
- }), R("swipe");
171
- }
172
- }
173
- },
174
- {
175
- enabled: !w
176
- }
177
- );
178
- function E(e, t) {
179
- let i = 0;
180
- if (typeof e == "string" ? i = r.findIndex((u) => u.id === e) : i = e, i < 0 || i >= r.length) {
181
- if (t)
182
- throw new Error(t);
183
- console.error(`The item doesn't exist; check that the id provided - ${e} - is correct.`), i = -1;
184
- }
185
- return i;
186
- }
187
- function j(e) {
188
- const t = E(e, "The item doesn't exist; check the provided id."), i = n;
189
- return s && i === r.length - 1 ? t === 0 : t === i + 1;
190
- }
191
- function k(e) {
192
- const t = E(e, "The item doesn't exist; check the provided id."), i = n;
193
- return s && i === 0 ? t === r.length - 1 : t === i - 1;
194
- }
195
- const B = q((e, t, i, u) => {
196
- const d = r[t].renderItem;
197
- return /* @__PURE__ */ x.jsx(
198
- U.div,
199
- {
200
- id: `use-transition-carousel-item-${u}`,
201
- className: "use-transition-carousel-item",
202
- style: {
203
- ...e,
204
- flex: "1 0 100%",
205
- width: "100%",
206
- height: "100%"
207
- },
208
- children: typeof d == "function" ? d({
209
- useListenToCustomEvent: T,
210
- getIsNextItem: j,
211
- getIsPrevItem: k,
212
- activeItem: {
213
- index: n,
214
- id: r[n].id
215
- }
216
- }) : d
217
- }
218
- );
219
- }), I = {
220
- useListenToCustomEvent: T,
221
- slideToPrevItem: () => R("click"),
222
- slideToNextItem: () => F("click")
223
- }, G = /* @__PURE__ */ x.jsx(g.Provider, { value: I, children: S }), H = /* @__PURE__ */ x.jsx(g.Provider, { value: I, children: /* @__PURE__ */ x.jsx(
224
- "div",
225
- {
226
- ref: A,
227
- ...z(),
228
- style: {
229
- display: "flex",
230
- position: "relative",
231
- width: "100%",
232
- height: "100%",
233
- overflow: "hidden"
234
- },
235
- children: B
236
- }
237
- ) });
238
- return {
239
- ...I,
240
- carouselFragment: H,
241
- thumbsFragment: G
242
- };
243
- }
244
- const g = Y(void 0);
245
- function se() {
246
- const c = L(g);
247
- if (!c)
248
- throw new Error("useTransitionCarouselContext must be used within the carousel.");
249
- return c;
250
- }
251
- export {
252
- re as useTransitionCarousel,
253
- se as useTransitionCarouselContext
254
- };
255
- //# sourceMappingURL=index.es3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.es3.js","sources":["../src/useTransitionCarousel.tsx"],"sourcesContent":["import { a, config, useTransition } from '@react-spring/web'\nimport { useDrag } from '@use-gesture/react'\nimport { createContext, useContext, useEffect, useRef, useState } from 'react'\n\nimport { useThumbsModule } from './modules'\nimport { useEventsModule } from './modules/useEventsModule'\nimport {\n ItemWithThumb,\n SlideActionType,\n TransitionSlideMode,\n UseTransitionCarouselProps,\n UseTransitionCarouselReturnProps,\n} from './types'\n\nconst defaultAnimationProps = {\n initial: {\n opacity: 1,\n position: 'relative',\n },\n from: {\n opacity: 0,\n position: 'relative',\n },\n enter: {\n position: 'relative',\n opacity: 1,\n },\n leave: {\n opacity: 1,\n position: 'absolute',\n },\n}\n\nfunction useTransitionCarousel({\n init = true,\n disableGestures = false,\n items,\n springConfig = config.default,\n exitBeforeEnter = false,\n trail,\n withLoop = false,\n activeItem: externalActiveItem,\n toPrevItemSpringProps = defaultAnimationProps,\n toNextItemSpringProps = defaultAnimationProps,\n draggingSlideTreshold = 50,\n thumbsSlideAxis = 'x',\n}: UseTransitionCarouselProps): UseTransitionCarouselReturnProps {\n const slideActionType = useRef<SlideActionType>('next')\n const slideModeType = useRef<TransitionSlideMode>('initial')\n const mainCarouselWrapperRef = useRef<HTMLDivElement | null>(null)\n const [activeItem, setActiveItem] = useState(externalActiveItem ?? 0)\n const { emitEvent, useListenToCustomEvent } = useEventsModule<'use-transition'>()\n const { handleScroll, thumbsFragment } = useThumbsModule<'use-transition'>({\n thumbsSlideAxis,\n items: items as ItemWithThumb<'use-transition'>[],\n renderThumbFnProps: {\n getIsNextItem,\n getIsPrevItem,\n useListenToCustomEvent,\n activeItem: {\n index: activeItem,\n id: items[activeItem].id,\n },\n },\n })\n\n function getConfig() {\n if (slideActionType.current === 'prev') {\n return {\n initial: {\n ...toPrevItemSpringProps.initial,\n },\n from: {\n ...toPrevItemSpringProps.from,\n },\n enter: {\n ...toPrevItemSpringProps.enter,\n },\n leave: {\n ...toPrevItemSpringProps.leave,\n },\n }\n }\n if (slideActionType.current === 'next') {\n return {\n initial: {\n ...toNextItemSpringProps.initial,\n },\n from: {\n ...toNextItemSpringProps.from,\n },\n enter: {\n ...toNextItemSpringProps.enter,\n },\n leave: {\n ...toNextItemSpringProps.leave,\n },\n }\n }\n return {\n initial: {\n ...defaultAnimationProps.initial,\n },\n from: {\n ...defaultAnimationProps.from,\n },\n enter: {\n ...defaultAnimationProps.enter,\n },\n leave: {\n ...defaultAnimationProps.leave,\n },\n }\n }\n\n useEffect(() => {\n if (typeof externalActiveItem === 'number' && externalActiveItem !== activeItem) {\n setActiveItem(externalActiveItem)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [externalActiveItem])\n\n type SlideToItem = {\n to: number\n slideType: SlideActionType\n slideMode: TransitionSlideMode\n }\n\n function slideToItem({ to, slideType, slideMode }: SlideToItem) {\n slideActionType.current = slideType\n slideModeType.current = slideMode\n emitEvent({\n eventName: 'onSlideStartChange',\n slideActionType: slideActionType.current,\n slideMode: slideModeType.current,\n nextItem: {\n index: to,\n id: items[to].id,\n startReached: to === 0,\n endReached: to === items.length - 1,\n },\n })\n setActiveItem(to)\n handleScroll(activeItem)\n }\n\n function slideToPrevItem(slideMode: TransitionSlideMode) {\n if (!init) return\n const isFirstItem = activeItem === 0\n\n if (!withLoop && isFirstItem) return\n\n if (withLoop && isFirstItem) {\n slideToItem({\n to: items.length - 1,\n slideType: 'prev',\n slideMode,\n })\n } else {\n slideToItem({\n to: activeItem - 1,\n slideType: 'prev',\n slideMode,\n })\n }\n }\n function slideToNextItem(slideMode: TransitionSlideMode) {\n if (!init) return\n const isLastItem = activeItem === items.length - 1\n\n if (!withLoop && isLastItem) return\n\n if (withLoop && isLastItem) {\n slideToItem({\n to: 0,\n slideType: 'next',\n slideMode,\n })\n } else {\n slideToItem({\n to: activeItem + 1,\n slideType: 'next',\n slideMode,\n })\n }\n }\n\n const transitions = useTransition(activeItem, {\n config: springConfig,\n key: null,\n trail,\n exitBeforeEnter,\n ...getConfig(),\n onRest(value, _, index) {\n if (value.finished && index === activeItem) {\n emitEvent({\n eventName: 'onSlideChange',\n slideActionType: slideActionType.current,\n slideMode: slideModeType.current,\n currentItem: {\n index: activeItem,\n id: items[activeItem].id,\n startReached: activeItem === 0,\n endReached: activeItem === items.length - 1,\n },\n })\n }\n },\n })\n\n const bindSwipe = useDrag(\n ({ last, movement: [mx] }) => {\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) return\n\n emitEvent({\n eventName: 'onLeftSwipe',\n })\n slideToNextItem('swipe')\n } else if (prevItemTreshold) {\n if (!withLoop && isFirstItem) return\n\n emitEvent({\n eventName: 'onRightSwipe',\n })\n slideToPrevItem('swipe')\n }\n }\n },\n {\n enabled: !disableGestures,\n },\n )\n\n function findItemIndex(id: string | number, error?: string) {\n let itemIndex = 0\n\n if (typeof id === 'string') {\n itemIndex = items.findIndex((item) => item.id === id)\n } else {\n itemIndex = id\n }\n if (itemIndex < 0 || itemIndex >= items.length) {\n if (error) {\n throw new Error(error)\n }\n console.error(`The item doesn't exist; check that the id provided - ${id} - is correct.`)\n itemIndex = -1\n }\n\n return itemIndex\n }\n function getIsNextItem(id: string | number) {\n const itemIndex = findItemIndex(id, \"The item doesn't exist; check the provided id.\")\n const _activeItem = activeItem\n if (withLoop && _activeItem === items.length - 1) {\n return itemIndex === 0\n }\n return itemIndex === _activeItem + 1\n }\n function getIsPrevItem(id: string | number) {\n const itemIndex = findItemIndex(id, \"The item doesn't exist; check the provided id.\")\n const _activeItem = activeItem\n if (withLoop && _activeItem === 0) {\n return itemIndex === items.length - 1\n }\n return itemIndex === _activeItem - 1\n }\n\n const itemsFragment = transitions((styles, item, _, indx) => {\n const renderItem = items[item].renderItem\n return (\n <a.div\n id={`use-transition-carousel-item-${indx}`}\n className=\"use-transition-carousel-item\"\n style={{\n ...styles,\n flex: '1 0 100%',\n width: '100%',\n height: '100%',\n }}\n >\n {typeof renderItem === 'function'\n ? renderItem({\n useListenToCustomEvent,\n getIsNextItem,\n getIsPrevItem,\n activeItem: {\n index: activeItem,\n id: items[activeItem].id,\n },\n })\n : renderItem}\n </a.div>\n )\n })\n\n const result = {\n useListenToCustomEvent,\n slideToPrevItem: () => slideToPrevItem('click'),\n slideToNextItem: () => slideToNextItem('click'),\n }\n\n const _thumbsFragment = <Context.Provider value={result}>{thumbsFragment}</Context.Provider>\n const carouselFragment = (\n <Context.Provider value={result}>\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 </Context.Provider>\n )\n\n return {\n ...result,\n carouselFragment,\n thumbsFragment: _thumbsFragment,\n }\n}\n\ntype ContextProps = Omit<UseTransitionCarouselReturnProps, 'carouselFragment' | 'thumbsFragment'>\n\nconst Context = createContext<ContextProps | undefined>(undefined)\n\nfunction useTransitionCarouselContext() {\n const context = useContext(Context)\n if (!context) {\n throw new Error('useTransitionCarouselContext must be used within the carousel.')\n }\n return context\n}\n\nexport { useTransitionCarousel, useTransitionCarouselContext }\n"],"names":["defaultAnimationProps","useTransitionCarousel","init","disableGestures","items","springConfig","config","exitBeforeEnter","trail","withLoop","externalActiveItem","toPrevItemSpringProps","toNextItemSpringProps","draggingSlideTreshold","thumbsSlideAxis","slideActionType","useRef","slideModeType","mainCarouselWrapperRef","activeItem","setActiveItem","useState","emitEvent","useListenToCustomEvent","useEventsModule","handleScroll","thumbsFragment","useThumbsModule","getIsNextItem","getIsPrevItem","getConfig","useEffect","slideToItem","to","slideType","slideMode","slideToPrevItem","isFirstItem","slideToNextItem","isLastItem","transitions","useTransition","value","_","index","bindSwipe","useDrag","last","mx","prevItemTreshold","nextItemTreshold","findItemIndex","id","error","itemIndex","item","_activeItem","itemsFragment","styles","indx","renderItem","jsx","a","result","_thumbsFragment","Context","carouselFragment","createContext","useTransitionCarouselContext","context","useContext"],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- "use strict";const L=require("react"),ir=require("@react-spring/web");exports.jsxRuntimeExports={};var ur={get exports(){return exports.jsxRuntimeExports},set exports(s){exports.jsxRuntimeExports=s}},W={};/**
2
- * @license React
3
- * react-jsx-runtime.production.min.js
4
- *
5
- * Copyright (c) Facebook, Inc. and its affiliates.
6
- *
7
- * This source code is licensed under the MIT license found in the
8
- * LICENSE file in the root directory of this source tree.
9
- */var xe;function sr(){if(xe)return W;xe=1;var s=L,E=Symbol.for("react.element"),O=Symbol.for("react.fragment"),h=Object.prototype.hasOwnProperty,_=s.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function j(w,d,P){var m,T={},v=null,b=null;P!==void 0&&(v=""+P),d.key!==void 0&&(v=""+d.key),d.ref!==void 0&&(b=d.ref);for(m in d)h.call(d,m)&&!c.hasOwnProperty(m)&&(T[m]=d[m]);if(w&&w.defaultProps)for(m in d=w.defaultProps,d)T[m]===void 0&&(T[m]=d[m]);return{$$typeof:E,type:w,key:v,ref:b,props:T,_owner:_.current}}return W.Fragment=O,W.jsx=j,W.jsxs=j,W}var $={};/**
10
- * @license React
11
- * react-jsx-runtime.development.js
12
- *
13
- * Copyright (c) Facebook, Inc. and its affiliates.
14
- *
15
- * This source code is licensed under the MIT license found in the
16
- * LICENSE file in the root directory of this source tree.
17
- */var Ce;function lr(){return Ce||(Ce=1,process.env.NODE_ENV!=="production"&&function(){var s=L,E=Symbol.for("react.element"),O=Symbol.for("react.portal"),h=Symbol.for("react.fragment"),_=Symbol.for("react.strict_mode"),c=Symbol.for("react.profiler"),j=Symbol.for("react.provider"),w=Symbol.for("react.context"),d=Symbol.for("react.forward_ref"),P=Symbol.for("react.suspense"),m=Symbol.for("react.suspense_list"),T=Symbol.for("react.memo"),v=Symbol.for("react.lazy"),b=Symbol.for("react.offscreen"),R=Symbol.iterator,Y="@@iterator";function N(e){if(e===null||typeof e!="object")return null;var r=R&&e[R]||e[Y];return typeof r=="function"?r:null}var S=s.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function p(e){{for(var r=arguments.length,t=new Array(r>1?r-1:0),n=1;n<r;n++)t[n-1]=arguments[n];Oe("error",e,t)}}function Oe(e,r,t){{var n=S.ReactDebugCurrentFrame,i=n.getStackAddendum();i!==""&&(r+="%s",t=t.concat([i]));var u=t.map(function(o){return String(o)});u.unshift("Warning: "+r),Function.prototype.apply.call(console[e],console,u)}}var Pe=!1,Se=!1,je=!1,ke=!1,De=!1,re;re=Symbol.for("react.module.reference");function Fe(e){return!!(typeof e=="string"||typeof e=="function"||e===h||e===c||De||e===_||e===P||e===m||ke||e===b||Pe||Se||je||typeof e=="object"&&e!==null&&(e.$$typeof===v||e.$$typeof===T||e.$$typeof===j||e.$$typeof===w||e.$$typeof===d||e.$$typeof===re||e.getModuleId!==void 0))}function Ie(e,r,t){var n=e.displayName;if(n)return n;var i=r.displayName||r.name||"";return i!==""?t+"("+i+")":t}function te(e){return e.displayName||"Context"}function x(e){if(e==null)return null;if(typeof e.tag=="number"&&p("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case h:return"Fragment";case O:return"Portal";case c:return"Profiler";case _:return"StrictMode";case P:return"Suspense";case m:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case w:var r=e;return te(r)+".Consumer";case j:var t=e;return te(t._context)+".Provider";case d:return Ie(e,e.render,"ForwardRef");case T:var n=e.displayName||null;return n!==null?n:x(e.type)||"Memo";case v:{var i=e,u=i._payload,o=i._init;try{return x(o(u))}catch{return null}}}return null}var k=Object.assign,I=0,ne,ae,oe,ie,ue,se,le;function ce(){}ce.__reactDisabledLog=!0;function Ae(){{if(I===0){ne=console.log,ae=console.info,oe=console.warn,ie=console.error,ue=console.group,se=console.groupCollapsed,le=console.groupEnd;var e={configurable:!0,enumerable:!0,value:ce,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}I++}}function We(){{if(I--,I===0){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:k({},e,{value:ne}),info:k({},e,{value:ae}),warn:k({},e,{value:oe}),error:k({},e,{value:ie}),group:k({},e,{value:ue}),groupCollapsed:k({},e,{value:se}),groupEnd:k({},e,{value:le})})}I<0&&p("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var J=S.ReactCurrentDispatcher,G;function M(e,r,t){{if(G===void 0)try{throw Error()}catch(i){var n=i.stack.trim().match(/\n( *(at )?)/);G=n&&n[1]||""}return`
18
- `+G+e}}var H=!1,V;{var $e=typeof WeakMap=="function"?WeakMap:Map;V=new $e}function fe(e,r){if(!e||H)return"";{var t=V.get(e);if(t!==void 0)return t}var n;H=!0;var i=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var u;u=J.current,J.current=null,Ae();try{if(r){var o=function(){throw Error()};if(Object.defineProperty(o.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(o,[])}catch(C){n=C}Reflect.construct(e,[],o)}else{try{o.call()}catch(C){n=C}e.call(o.prototype)}}else{try{throw Error()}catch(C){n=C}e()}}catch(C){if(C&&n&&typeof C.stack=="string"){for(var a=C.stack.split(`
19
- `),g=n.stack.split(`
20
- `),l=a.length-1,f=g.length-1;l>=1&&f>=0&&a[l]!==g[f];)f--;for(;l>=1&&f>=0;l--,f--)if(a[l]!==g[f]){if(l!==1||f!==1)do if(l--,f--,f<0||a[l]!==g[f]){var y=`
21
- `+a[l].replace(" at new "," at ");return e.displayName&&y.includes("<anonymous>")&&(y=y.replace("<anonymous>",e.displayName)),typeof e=="function"&&V.set(e,y),y}while(l>=1&&f>=0);break}}}finally{H=!1,J.current=u,We(),Error.prepareStackTrace=i}var F=e?e.displayName||e.name:"",we=F?M(F):"";return typeof e=="function"&&V.set(e,we),we}function Le(e,r,t){return fe(e,!1)}function Ye(e){var r=e.prototype;return!!(r&&r.isReactComponent)}function U(e,r,t){if(e==null)return"";if(typeof e=="function")return fe(e,Ye(e));if(typeof e=="string")return M(e);switch(e){case P:return M("Suspense");case m:return M("SuspenseList")}if(typeof e=="object")switch(e.$$typeof){case d:return Le(e.render);case T:return U(e.type,r,t);case v:{var n=e,i=n._payload,u=n._init;try{return U(u(i),r,t)}catch{}}}return""}var q=Object.prototype.hasOwnProperty,de={},ve=S.ReactDebugCurrentFrame;function B(e){if(e){var r=e._owner,t=U(e.type,e._source,r?r.type:null);ve.setExtraStackFrame(t)}else ve.setExtraStackFrame(null)}function Ne(e,r,t,n,i){{var u=Function.call.bind(q);for(var o in e)if(u(e,o)){var a=void 0;try{if(typeof e[o]!="function"){var g=Error((n||"React class")+": "+t+" type `"+o+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof e[o]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw g.name="Invariant Violation",g}a=e[o](r,o,n,t,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(l){a=l}a&&!(a instanceof Error)&&(B(i),p("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",n||"React class",t,o,typeof a),B(null)),a instanceof Error&&!(a.message in de)&&(de[a.message]=!0,B(i),p("Failed %s type: %s",t,a.message),B(null))}}}var Me=Array.isArray;function z(e){return Me(e)}function Ve(e){{var r=typeof Symbol=="function"&&Symbol.toStringTag,t=r&&e[Symbol.toStringTag]||e.constructor.name||"Object";return t}}function Ue(e){try{return pe(e),!1}catch{return!0}}function pe(e){return""+e}function he(e){if(Ue(e))return p("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",Ve(e)),pe(e)}var A=S.ReactCurrentOwner,qe={key:!0,ref:!0,__self:!0,__source:!0},me,ge,K;K={};function Be(e){if(q.call(e,"ref")){var r=Object.getOwnPropertyDescriptor(e,"ref").get;if(r&&r.isReactWarning)return!1}return e.ref!==void 0}function Je(e){if(q.call(e,"key")){var r=Object.getOwnPropertyDescriptor(e,"key").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function Ge(e,r){if(typeof e.ref=="string"&&A.current&&r&&A.current.stateNode!==r){var t=x(A.current.type);K[t]||(p('Component "%s" contains the string ref "%s". Support for string refs will be removed in a future major release. This case cannot be automatically converted to an arrow function. We ask you to manually fix this case by using useRef() or createRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref',x(A.current.type),e.ref),K[t]=!0)}}function He(e,r){{var t=function(){me||(me=!0,p("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",r))};t.isReactWarning=!0,Object.defineProperty(e,"key",{get:t,configurable:!0})}}function ze(e,r){{var t=function(){ge||(ge=!0,p("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",r))};t.isReactWarning=!0,Object.defineProperty(e,"ref",{get:t,configurable:!0})}}var Ke=function(e,r,t,n,i,u,o){var a={$$typeof:E,type:e,key:r,ref:t,props:o,_owner:u};return a._store={},Object.defineProperty(a._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(a,"_self",{configurable:!1,enumerable:!1,writable:!1,value:n}),Object.defineProperty(a,"_source",{configurable:!1,enumerable:!1,writable:!1,value:i}),Object.freeze&&(Object.freeze(a.props),Object.freeze(a)),a};function Xe(e,r,t,n,i){{var u,o={},a=null,g=null;t!==void 0&&(he(t),a=""+t),Je(r)&&(he(r.key),a=""+r.key),Be(r)&&(g=r.ref,Ge(r,i));for(u in r)q.call(r,u)&&!qe.hasOwnProperty(u)&&(o[u]=r[u]);if(e&&e.defaultProps){var l=e.defaultProps;for(u in l)o[u]===void 0&&(o[u]=l[u])}if(a||g){var f=typeof e=="function"?e.displayName||e.name||"Unknown":e;a&&He(o,f),g&&ze(o,f)}return Ke(e,a,g,i,n,A.current,o)}}var X=S.ReactCurrentOwner,Ee=S.ReactDebugCurrentFrame;function D(e){if(e){var r=e._owner,t=U(e.type,e._source,r?r.type:null);Ee.setExtraStackFrame(t)}else Ee.setExtraStackFrame(null)}var Z;Z=!1;function Q(e){return typeof e=="object"&&e!==null&&e.$$typeof===E}function be(){{if(X.current){var e=x(X.current.type);if(e)return`
22
-
23
- Check the render method of \``+e+"`."}return""}}function Ze(e){{if(e!==void 0){var r=e.fileName.replace(/^.*[\\\/]/,""),t=e.lineNumber;return`
24
-
25
- Check your code at `+r+":"+t+"."}return""}}var Re={};function Qe(e){{var r=be();if(!r){var t=typeof e=="string"?e:e.displayName||e.name;t&&(r=`
26
-
27
- Check the top-level render call using <`+t+">.")}return r}}function ye(e,r){{if(!e._store||e._store.validated||e.key!=null)return;e._store.validated=!0;var t=Qe(r);if(Re[t])return;Re[t]=!0;var n="";e&&e._owner&&e._owner!==X.current&&(n=" It was passed a child from "+x(e._owner.type)+"."),D(e),p('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',t,n),D(null)}}function _e(e,r){{if(typeof e!="object")return;if(z(e))for(var t=0;t<e.length;t++){var n=e[t];Q(n)&&ye(n,r)}else if(Q(e))e._store&&(e._store.validated=!0);else if(e){var i=N(e);if(typeof i=="function"&&i!==e.entries)for(var u=i.call(e),o;!(o=u.next()).done;)Q(o.value)&&ye(o.value,r)}}}function er(e){{var r=e.type;if(r==null||typeof r=="string")return;var t;if(typeof r=="function")t=r.propTypes;else if(typeof r=="object"&&(r.$$typeof===d||r.$$typeof===T))t=r.propTypes;else return;if(t){var n=x(r);Ne(t,e.props,"prop",n,e)}else if(r.PropTypes!==void 0&&!Z){Z=!0;var i=x(r);p("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",i||"Unknown")}typeof r.getDefaultProps=="function"&&!r.getDefaultProps.isReactClassApproved&&p("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function rr(e){{for(var r=Object.keys(e.props),t=0;t<r.length;t++){var n=r[t];if(n!=="children"&&n!=="key"){D(e),p("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",n),D(null);break}}e.ref!==null&&(D(e),p("Invalid attribute `ref` supplied to `React.Fragment`."),D(null))}}function Te(e,r,t,n,i,u){{var o=Fe(e);if(!o){var a="";(e===void 0||typeof e=="object"&&e!==null&&Object.keys(e).length===0)&&(a+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var g=Ze(i);g?a+=g:a+=be();var l;e===null?l="null":z(e)?l="array":e!==void 0&&e.$$typeof===E?(l="<"+(x(e.type)||"Unknown")+" />",a=" Did you accidentally export a JSX literal instead of a component?"):l=typeof e,p("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",l,a)}var f=Xe(e,r,t,i,u);if(f==null)return f;if(o){var y=r.children;if(y!==void 0)if(n)if(z(y)){for(var F=0;F<y.length;F++)_e(y[F],e);Object.freeze&&Object.freeze(y)}else p("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else _e(y,e)}return e===h?rr(f):er(f),f}}function tr(e,r,t){return Te(e,r,t,!0)}function nr(e,r,t){return Te(e,r,t,!1)}var ar=nr,or=tr;$.Fragment=h,$.jsx=ar,$.jsxs=or}()),$}(function(s){process.env.NODE_ENV==="production"?s.exports=sr():s.exports=lr()})(ur);const ee="RSC::Event";function cr(){const s=L.useRef(null);function E(h){L.useEffect(()=>{s.current||(s.current=document.createElement("div"));function _(c){h(c.detail)}if(s.current)return s.current.addEventListener(ee,_,!1),()=>{var c;(c=s.current)==null||c.removeEventListener(ee,_,!1)}},[h])}function O(h){if(s.current){const _=new CustomEvent(ee,{detail:h});s.current.dispatchEvent(_)}}return{useListenToCustomEvent:E,emitEvent:O}}function fr(s){const E=s.getBoundingClientRect();return E.top>=0&&E.left>=0&&E.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&E.right<=(window.innerWidth||document.documentElement.clientWidth)}function dr({thumbsSlideAxis:s="x",withThumbs:E=!1,prepareThumbsData:O,items:h,renderThumbFnProps:_}){const c=L.useRef(null),[j,w]=ir.useSpring(()=>({val:0}));function d(){var v;return c.current?Math.round(Number((v=c.current)==null?void 0:v[s==="x"?"scrollWidth":"scrollHeight"])-c.current.getBoundingClientRect()[s==="x"?"width":"height"]):0}function P(v){var Y;function b(){return c.current?c.current.querySelector(`#thumb-item-${h[v].id}`):null}const R=b();if(R&&c.current&&!fr(R)){const N=R.offsetLeft,S=N>d()?d():N;w.start({from:{val:((Y=c.current)==null?void 0:Y[s==="x"?"scrollLeft":"scrollTop"])??0},to:{val:S},onChange:({value:p})=>{c.current&&(c.current[s==="x"?"scrollLeft":"scrollTop"]=Math.abs(p.val))}})}}function m(){function v(b){return b.map(R=>({id:R.id,renderThumb:R.renderThumb}))}return O?O(v(h)):v(h)}return{thumbsFragment:E?exports.jsxRuntimeExports.jsx("div",{className:"use-spring-carousel-thumbs-wrapper",ref:c,onWheel:()=>j.val.stop(),style:{display:"flex",flex:"1",position:"relative",width:"100%",height:"100%",flexDirection:s==="x"?"row":"column",...s==="x"?{overflowX:"auto"}:{overflowY:"auto",maxHeight:"100%"}},children:m().map(({id:v,renderThumb:b})=>{const R=`thumb-item-${v}`;return exports.jsxRuntimeExports.jsx("div",{id:R,className:"thumb-item",children:typeof b=="function"?b(_):b},R)})}):null,handleScroll:P}}exports.useEventsModule=cr;exports.useThumbsModule=dr;
28
- //# sourceMappingURL=useThumbsModule-09d1d442.cjs.map