react-spring-carousel 2.0.5-beta1 → 2.0.6
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/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/{index.js/index.js → index.js} +0 -0
- package/dist/esm/{index.js/index.js.map → index.js.map} +0 -0
- package/dist/esm/index2.js +2 -0
- package/dist/esm/index2.js.map +1 -0
- package/dist/esm/{index.js/index3.js → index3.js} +0 -0
- package/dist/esm/index3.js.map +1 -0
- package/dist/esm/index4.js +2 -0
- package/dist/esm/index4.js.map +1 -0
- package/dist/esm/{index.js/useThumbsModule-4df61da5.js → useThumbsModule-4df61da5.js} +0 -0
- package/dist/esm/useThumbsModule-4df61da5.js.map +1 -0
- package/dist/types/useSpringCarousel/index.d.ts +5 -24
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/package.json +3 -3
- package/dist/esm/index.js/index2.js +0 -2
- package/dist/esm/index.js/index2.js.map +0 -1
- package/dist/esm/index.js/index3.js.map +0 -1
- package/dist/esm/index.js/useThumbsModule-4df61da5.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index3.js","sources":["../../../src/useTransitionCarousel/index.tsx"],"sourcesContent":["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 { SlideActionType } from '../types'\nimport {\n UseTransitionCarouselContextProps,\n UseTransitionCarouselProps,\n} from '../types/useTransitionCarousel'\nimport { ReactSpringCarouselItemWithThumbs } from '../types/useSpringCarousel'\n\nconst UseTransitionCarouselContext = createContext<\n UseTransitionCarouselContextProps | undefined\n>(undefined)\n\nfunction 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\nfunction 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 trail,\n exitBeforeEnter = false,\n springAnimationProps = {\n initial: {\n opacity: 1,\n position: 'absolute',\n },\n from: {\n opacity: 0,\n position: 'absolute',\n },\n enter: {\n opacity: 1,\n position: 'absolute',\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 } =\n useCustomEventsModule<'use-transition'>()\n const { enterFullscreen, exitFullscreen, getIsFullscreen } = useFullscreenModule({\n emitObservable,\n mainCarouselWrapperRef,\n })\n const { thumbsFragment: _thumbsFragment, handleThumbsScroll } = useThumbsModule({\n items: items as ReactSpringCarouselItemWithThumbs[],\n withThumbs,\n thumbsSlideAxis,\n springConfig,\n prepareThumbsData,\n slideType: 'fixed',\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 trail,\n exitBeforeEnter,\n key: items[activeItem].id,\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: items.length - 1,\n id: items[items.length - 1].id,\n },\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\nexport { useTransitionCarouselContext, useTransitionCarousel }\n"],"names":["UseTransitionCarouselContext","createContext","undefined","useTransitionCarouselContext","context","useContext","Error","useTransitionCarousel","items","withLoop","withThumbs","springConfig","config","default","thumbsSlideAxis","enableThumbsWrapperScroll","draggingSlideTreshold","prepareThumbsData","toPrevItemSpringProps","toNextItemSpringProps","disableGestures","trail","exitBeforeEnter","springAnimationProps","initial","opacity","position","from","enter","leave","slideActionType","useRef","mainCarouselWrapperRef","isAnimating","activeItem","setActiveItem","useState","emitObservable","useListenToCustomEvent","useCustomEventsModule","enterFullscreen","exitFullscreen","getIsFullscreen","useFullscreenModule","thumbsFragment","_thumbsFragment","handleThumbsScroll","useThumbsModule","slideType","bindSwipe","useDrag","last","movement","mx","getIsAnimating","prevItemTreshold","nextItemTreshold","isFirstItem","isLastItem","length","slideToNextItem","eventName","slideToPrevItem","enabled","itemsFragment","useTransition","getSlideActionType","getTransitionConfig","onStart","setIsAnimating","key","id","onRest","val","finished","currentItem","index","transitions","styles","item","_jsx","animated","div","style","flex","width","height","renderItem","current","setSlideActionType","type","nextItem","findItemIndex","findIndex","contextProps","slideToItem","itemIndex","_item","newActiveItem","getIsNextItem","getIsPrevItem","getIsActiveItem","getCurrentActiveItem","carouselFragment","Provider","value","ref","display","overflow"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useThumbsModule-4df61da5.js","sources":["../../../src/modules/useCustomEventsModule.tsx","../../../src/utils.ts","../../../src/modules/useFullscreenModule.tsx","../../../src/modules/useThumbsModule.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react'\nimport { Subject } from 'rxjs'\nimport {\n UseSpringCarouselEventsObservableProps,\n UseTransitionCarouselEventsObservableProps,\n ObservableCallbackFn,\n EmitObservableFn,\n} from '../types'\n\nexport function useCustomEventsModule<T>() {\n const eventsObserverRef = useRef(\n new Subject<\n T extends 'use-spring'\n ? UseSpringCarouselEventsObservableProps\n : UseTransitionCarouselEventsObservableProps\n >(),\n )\n\n function useListenToCustomEvent(fn: ObservableCallbackFn<T>) {\n useEffect(() => {\n const subscribe = eventsObserverRef.current.subscribe(fn)\n return () => subscribe.unsubscribe()\n }, [fn])\n }\n\n const emitObservable: EmitObservableFn<T> = data => {\n eventsObserverRef.current.next(data)\n }\n\n return {\n useListenToCustomEvent,\n emitObservable,\n }\n}\n","import { useRef, useLayoutEffect, useEffect } from 'react'\n\ntype Callback = () => void | (() => void)\n\nconst useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? useLayoutEffect : useEffect\n\nfunction useIsomorphicMount(callback: Callback) {\n const isMounted = useRef(false)\n\n useIsomorphicLayoutEffect(() => {\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 { useIsomorphicLayoutEffect, useIsomorphicMount }\n","import { useRef, MutableRefObject } from 'react'\nimport screenfull from 'screenfull'\nimport { EmitObservableFn } from '../types'\nimport { useIsomorphicMount } from '../utils'\n\ntype FullscreenModule<T> = {\n mainCarouselWrapperRef: MutableRefObject<HTMLDivElement | null>\n emitObservable: EmitObservableFn<T>\n handleResize?(): void\n}\n\nexport function useFullscreenModule<T>({\n mainCarouselWrapperRef,\n emitObservable,\n handleResize,\n}: FullscreenModule<T>) {\n const isFullscreen = useRef(false)\n\n useIsomorphicMount(() => {\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 } from 'react'\nimport { useSpring, SpringConfig, animated } from 'react-spring'\nimport { useIsomorphicMount } from 'src/utils'\nimport { UseSpringCarouselProps, SlideActionType } from '../types'\nimport { ReactSpringCarouselItemWithThumbs } from '../types/useSpringCarousel'\nimport { PrepareThumbsData } from '../types/index'\n\ntype OffsetDimension = 'offsetWidth' | 'offsetHeight'\ntype OffsetDirection = 'offsetLeft' | 'offsetTop'\ntype ScrollDirection = 'scrollLeft' | 'scrollTop'\n\ntype Props = {\n items: ReactSpringCarouselItemWithThumbs[]\n withThumbs: boolean\n slideType: UseSpringCarouselProps['slideType']\n thumbsSlideAxis: UseSpringCarouselProps['thumbsSlideAxis']\n springConfig: SpringConfig\n prepareThumbsData?: UseSpringCarouselProps['prepareThumbsData']\n getFluidWrapperScrollValue?(): number\n getSlideValue?(): number\n}\n\nexport function useThumbsModule({\n items,\n withThumbs,\n thumbsSlideAxis = 'x',\n springConfig,\n prepareThumbsData,\n getFluidWrapperScrollValue = () => 0,\n getSlideValue = () => 0,\n slideType,\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 && slideType === 'fluid') {\n internalThumbsWrapperRef.current[\n thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ] = Math.abs(value[thumbsSlideAxis])\n }\n },\n }))\n\n useIsomorphicMount(() => {\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 (slideType === '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 const fromValue = getScrollFromValue({\n thumbWrapper,\n scrollDirection,\n })\n const toValue = getScrollToValue({\n thumbWrapper,\n thumbOffsetPosition,\n thumbScrollDimension,\n offsetDimension,\n })\n\n setThumbListStyles.start({\n from: {\n [thumbsSlideAxis]: fromValue,\n },\n to: {\n [thumbsSlideAxis]: actionType === 'prev' && toValue < 0 ? 0 : toValue,\n },\n onChange: ({ value }) => {\n if (thumbsSlideAxis === 'x') {\n internalThumbsWrapperRef!.current!.scrollLeft = value.x\n } else {\n internalThumbsWrapperRef!.current!.scrollTop = value.y\n }\n },\n })\n }\n }\n }\n function handlePrepareThumbsData() {\n function getPreparedItems(\n _items: ReturnType<PrepareThumbsData>,\n ): ReturnType<PrepareThumbsData> {\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 thumbsFragment = withThumbs ? (\n <animated.div\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 width: '100%',\n height: '100%',\n flexDirection: thumbsSlideAxis === 'x' ? 'row' : 'column',\n ...(thumbsSlideAxis === 'x'\n ? { overflowX: 'auto' }\n : {\n overflowY: 'auto',\n maxHeight: '100%',\n }),\n }}\n >\n {handlePrepareThumbsData().map(({ id, renderThumb }) => {\n const thumbId = `thumb-${id}`\n return (\n <div key={thumbId} id={thumbId} className=\"thumb-item\">\n {renderThumb}\n </div>\n )\n })}\n </animated.div>\n ) : null\n\n return {\n thumbsFragment,\n handleThumbsScroll,\n }\n}\n"],"names":["useCustomEventsModule","eventsObserverRef","useRef","Subject","useListenToCustomEvent","fn","useEffect","subscribe","current","unsubscribe","emitObservable","data","next","useIsomorphicLayoutEffect","window","useLayoutEffect","useIsomorphicMount","callback","isMounted","clean","useFullscreenModule","mainCarouselWrapperRef","handleResize","isFullscreen","setIsFullscreen","_isFullscreen","handleFullscreenChange","document","fullscreenElement","eventName","screenfull","isEnabled","on","off","enterFullscreen","elementRef","request","exitFullscreen","exit","getIsFullscreen","useThumbsModule","items","withThumbs","thumbsSlideAxis","springConfig","prepareThumbsData","getFluidWrapperScrollValue","getSlideValue","slideType","internalThumbsWrapperRef","thumbListStyles","setThumbListStyles","useSpring","x","y","config","onChange","value","Math","abs","getCurrentThumbScrollValue","getThumbsTotalScrollableValue","round","Number","getBoundingClientRect","getThumbSlideValue","thumbSlideTotal","Error","thumbsFragment","_jsx","animated","div","ref","className","onWheel","stop","style","display","flex","position","width","height","flexDirection","overflowX","overflowY","maxHeight","getPreparedItems","_items","map","i","id","renderThumb","handlePrepareThumbsData","thumbId","handleThumbsScroll","activeItem","actionType","totalScrollableValue","nextValue","start","from","[object Object]","to","thumbNode","querySelector","thumbWrapper","offsetDimension","scrollDirection","thumbOffsetPosition","offsetDirection","getThumbOffsetPosition","thumbScrollDimension","getThumbScrollDimension","fromValue","getScrollFromValue","toValue","scrollDimensionProperty","length","getScrollToValue","scrollLeft","scrollTop"],"mappings":"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"}
|