react-spring-carousel 3.0.0-beta002 → 3.0.0-beta003

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 +1 @@
1
- {"version":3,"file":"useSpringCarousel.js","sources":["../../src/useSpringCarousel.tsx"],"sourcesContent":["import { config, useSpring } from \"@react-spring/web\";\nimport React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n} from \"react\";\n\nimport { SlideActionType, SlideMode } from \"./types/common\";\nimport { useEventsModule } from \"./modules/useEventsModule\";\nimport { useDrag } from \"@use-gesture/react\";\nimport { useFullscreenModule } from \"./modules/useFullscreenModule\";\nimport { useThumbsModule } from \"./modules/useThumbsModule\";\nimport {\n UseSpringReturnType,\n UseSpringCarouselWithThumbs,\n UseSpringCarouselComplete,\n UseSpringCarouselWithNoThumbs,\n UseSpringCarouselWithFixedItems,\n UseSpringCarouselWithNoFixedItems,\n SpringCarouselWithThumbs,\n} from \"./types/internals\";\n\nfunction useSpringCarousel(\n props: UseSpringCarouselWithThumbs\n): UseSpringReturnType;\nfunction useSpringCarousel(\n props: UseSpringCarouselWithNoThumbs\n): UseSpringReturnType;\nfunction useSpringCarousel(\n props: UseSpringCarouselWithFixedItems\n): UseSpringReturnType;\nfunction useSpringCarousel(\n props: UseSpringCarouselWithNoFixedItems\n): UseSpringReturnType;\n\nfunction useSpringCarousel({\n items,\n init = true,\n withThumbs,\n thumbsSlideAxis = \"x\",\n 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}: UseSpringCarouselComplete) {\n const prevWindowWidth = useRef(0);\n const draggingSlideTreshold = useRef(_draggingSlideTreshold ?? 0);\n const slideActionType = useRef<SlideActionType>(\"initial\");\n const slideModeType = useRef<SlideMode>(\"initial\");\n const prevSlidedValue = useRef(0);\n const [spring, setSpring] = useSpring(() => ({\n val: 0,\n pause: !init,\n onChange({ value }) {\n if (freeScroll && mainCarouselWrapperRef.current) {\n setStartEndItemReachedOnFreeScroll();\n if (carouselSlideAxis === \"x\") {\n mainCarouselWrapperRef.current.scrollLeft = Math.abs(value.val);\n } else {\n mainCarouselWrapperRef.current.scrollTop = Math.abs(value.val);\n }\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 const activeItem = useRef(initialActiveItem);\n const firstItemReached = useRef(initialActiveItem === 0);\n const lastItemReached = useRef(false);\n const mainCarouselWrapperRef = useRef<HTMLDivElement | null>(null);\n const carouselTrackWrapperRef = useRef<HTMLDivElement | null>(null);\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 { emitEvent, useListenToCustomEvent } = useEventsModule();\n const { thumbsFragment, handleScroll } = useThumbsModule({\n withThumbs: !!withThumbs,\n thumbsSlideAxis,\n prepareThumbsData,\n items: items as SpringCarouselWithThumbs[\"items\"],\n });\n const { enterFullscreen, exitFullscreen, getIsFullscreen } =\n useFullscreenModule({\n mainCarouselWrapperRef,\n emitEvent,\n handleResize: () => adjustCarouselWrapperPosition(),\n });\n\n function getItemStyles() {\n if (slideType === \"fixed\" && !freeScroll) {\n return {\n marginRight: `${gutter}px`,\n flex: `1 0 calc(100% / ${itemsPerSlide} - ${\n (gutter * (itemsPerSlide - 1)) / itemsPerSlide\n }px)`,\n };\n }\n return {\n ...{ marginRight: `${gutter}px` },\n };\n }\n\n function getSlideValue() {\n const carouselItem = mainCarouselWrapperRef.current?.querySelector(\n \".use-spring-carousel-item\"\n );\n\n if (!carouselItem) {\n throw Error(\"No carousel items available!\");\n }\n\n return (\n carouselItem.getBoundingClientRect()[\n carouselSlideAxis === \"x\" ? \"width\" : \"height\"\n ] + gutter\n );\n }\n\n type SlideToItem = {\n from: number;\n to: number;\n nextActiveItem?: number;\n immediate?: boolean;\n slideMode: \"click\" | \"drag\";\n };\n\n function slideToItem({\n from,\n to,\n nextActiveItem,\n immediate = false,\n slideMode,\n }: 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\n function getTotalScrollValue() {\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 );\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\n function getCarouselItemWidth() {\n const carouselItem = carouselTrackWrapperRef.current?.querySelector(\n \".use-spring-carousel-item\"\n );\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 }\n function adjustCarouselWrapperPosition() {\n const positionProperty = carouselSlideAxis === \"x\" ? \"left\" : \"top\";\n\n function setPosition(v: number) {\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 } else {\n ref.style.left = \"0px\";\n ref.style.top = \"0px\";\n }\n }\n\n const currentFromValue = Math.abs(getFromValue());\n\n if (currentFromValue < getTotalScrollValue() && lastItemReached.current) {\n lastItemReached.current = false;\n }\n if (currentFromValue > getTotalScrollValue()) {\n const val = -getTotalScrollValue();\n lastItemReached.current = true;\n prevSlidedValue.current = val;\n setSpring.start({\n immediate: true,\n val,\n });\n return;\n }\n\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 -\n getSlideValue() * Math.round(itemsPerSlide - 1)\n );\n } else {\n setPosition(getCarouselItemWidth() * items.length);\n }\n\n if (!freeScroll && slideType === \"fixed\") {\n const val = -(getSlideValue() * activeItem.current);\n prevSlidedValue.current = val;\n setSpring.start({\n immediate: true,\n val,\n });\n }\n }\n\n function getFromValue() {\n if (freeScroll && mainCarouselWrapperRef.current) {\n return mainCarouselWrapperRef.current[\n carouselSlideAxis === \"x\" ? \"scrollLeft\" : \"scrollTop\"\n ];\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 (index) {\n return -(index * getSlideValue());\n }\n return prevSlidedValue.current - getSlideValue();\n }\n\n if (index) {\n return -(index * getSlideValue());\n }\n return prevSlidedValue.current + getSlideValue();\n }\n function slideToPrevItem(\n type: Exclude<SlideMode, \"initial\"> = \"click\",\n index?: number\n ) {\n if (!init || (firstItemReached.current && !withLoop)) return;\n\n slideActionType.current = \"prev\";\n lastItemReached.current = false;\n\n const nextItem = index || activeItem.current - 1;\n\n if (!withLoop) {\n const nextItemWillExceed =\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 });\n return;\n }\n }\n if (withLoop && firstItemReached.current) {\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 });\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 });\n }\n function slideToNextItem(\n type: Exclude<SlideMode, \"initial\"> = \"click\",\n index?: number\n ) {\n if (!init || (lastItemReached.current && !withLoop)) return;\n\n slideActionType.current = \"next\";\n firstItemReached.current = false;\n\n const nextItem = index || activeItem.current + 1;\n\n if (!withLoop) {\n const nextItemWillExceed =\n Math.abs(getToValue(\"next\", index)) >\n 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: -getTotalScrollValue(),\n nextActiveItem: nextItem,\n });\n return;\n }\n }\n if (withLoop && lastItemReached.current) {\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 });\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 });\n }\n\n useEffect(() => {\n prevWindowWidth.current = window.innerWidth;\n }, []);\n useEffect(() => {\n adjustCarouselWrapperPosition();\n }, [\n initialStartingPosition,\n itemsPerSlide,\n withLoop,\n startEndGutter,\n gutter,\n freeScroll,\n slideType,\n init,\n ]);\n useLayoutEffect(() => {\n /**\n * Set initial track position\n */\n if (carouselTrackWrapperRef.current) {\n adjustCarouselWrapperPosition();\n }\n }, []);\n useEffect(() => {\n if (_draggingSlideTreshold) {\n draggingSlideTreshold.current = _draggingSlideTreshold;\n } else {\n draggingSlideTreshold.current = Math.floor(getSlideValue() / 2 / 2);\n }\n }, [_draggingSlideTreshold]);\n useEffect(() => {\n function handleResize() {\n if (window.innerWidth === prevWindowWidth.current) return;\n prevWindowWidth.current = window.innerWidth;\n adjustCarouselWrapperPosition();\n }\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\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\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 (slideActionType.current === \"prev\" && movement > 0) {\n state.cancel();\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\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(\"drag\");\n state.cancel();\n } else if (slideWhenThresholdIsReached && prevItemTreshold) {\n slideToPrevItem(\"drag\");\n state.cancel();\n }\n return;\n }\n\n if (state.last && !state.canceled && freeScroll) {\n if (slideActionType.current === \"prev\") {\n slideToPrevItem(\"drag\");\n }\n if (slideActionType.current === \"next\") {\n slideToNextItem(\"drag\");\n }\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(\"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(\"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 },\n {\n enabled:\n (init && !disableGestures && !freeScroll) ||\n (!!freeScroll && !!enableFreeScrollDrag),\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\n function setStartEndItemReachedOnFreeScroll() {\n if (mainCarouselWrapperRef.current) {\n prevSlidedValue.current =\n mainCarouselWrapperRef.current[\n carouselSlideAxis === \"x\" ? \"scrollLeft\" : \"scrollTop\"\n ];\n if (\n mainCarouselWrapperRef.current[\n carouselSlideAxis === \"x\" ? \"scrollLeft\" : \"scrollTop\"\n ] === 0\n ) {\n firstItemReached.current = true;\n lastItemReached.current = false;\n }\n if (\n mainCarouselWrapperRef.current[\n carouselSlideAxis === \"x\" ? \"scrollLeft\" : \"scrollTop\"\n ] > 0 &&\n mainCarouselWrapperRef.current[\n carouselSlideAxis === \"x\" ? \"scrollLeft\" : \"scrollTop\"\n ] < getTotalScrollValue()\n ) {\n firstItemReached.current = false;\n lastItemReached.current = false;\n }\n if (\n mainCarouselWrapperRef.current[\n 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) {\n return items.findIndex((item) => item.id === id);\n }\n function findItemIndexById(id: string | number, error: string) {\n let itemIndex = 0;\n if (typeof id === \"string\") {\n itemIndex = items.findIndex((_item) => _item.id === id);\n } else {\n itemIndex = id;\n }\n\n if (itemIndex < 0 || itemIndex >= items.length) {\n throw new Error(error);\n }\n\n return itemIndex;\n }\n function internalSlideToItem(id: string | number) {\n if (!init) return;\n\n firstItemReached.current = false;\n lastItemReached.current = false;\n\n const itemIndex = findItemIndexById(\n id,\n \"The item you want to slide to doesn't exist; please check che item id or the index you're passing to.\"\n );\n\n if (itemIndex === activeItem.current) {\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(\"click\", newActiveItem);\n } else {\n slideToPrevItem(\"click\", newActiveItem);\n }\n }\n function getIsNextItem(id: string) {\n const itemIndex = findItemIndex(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) {\n const itemIndex = findItemIndex(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\n const carouselFragment = (\n <div\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 ref={carouselTrackWrapperRef}\n {...bindDrag()}\n style={{\n position: \"relative\",\n display: \"flex\",\n flexDirection: carouselSlideAxis === \"x\" ? \"row\" : \"column\",\n touchAction: \"none\",\n ...getAnimatedWrapperStyles(),\n }}\n >\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 }}\n >\n {item.renderItem}\n </div>\n );\n })}\n </div>\n </div>\n );\n\n return {\n useListenToCustomEvent,\n carouselFragment,\n enterFullscreen,\n exitFullscreen,\n getIsFullscreen,\n thumbsFragment,\n slideToItem: internalSlideToItem,\n getIsNextItem,\n getIsPrevItem,\n slideToPrevItem: () => slideToPrevItem(),\n slideToNextItem: () => slideToNextItem(),\n getIsActiveItem: (id: string | number) => {\n return (\n findItemIndexById(id, \"The item you want to check doesn't exist\") ===\n activeItem.current\n );\n },\n };\n}\n\nconst Context =\n createContext<\n Omit<UseSpringReturnType, \"carouselFragment\" | \"thumbsFragment\"> | undefined\n >(undefined);\n\nfunction useSpringCarouselContext() {\n const context = useContext(Context);\n if (!context) {\n throw new Error(\n \"useSpringCarouselContext must be used within the carousel.\"\n );\n }\n return context;\n}\n\nexport { useSpringCarousel, useSpringCarouselContext };\n"],"names":["useSpringCarousel","items","init","withThumbs","thumbsSlideAxis","itemsPerSlide","slideType","gutter","withLoop","startEndGutter","carouselSlideAxis","disableGestures","draggingSlideTreshold","_draggingSlideTreshold","slideWhenThresholdIsReached","freeScroll","enableFreeScrollDrag","initialStartingPosition","prepareThumbsData","initialActiveItem","prevWindowWidth","useRef","slideActionType","slideModeType","prevSlidedValue","spring","setSpring","useSpring","val","pause","onChange","value","mainCarouselWrapperRef","current","setStartEndItemReachedOnFreeScroll","scrollLeft","Math","abs","scrollTop","carouselTrackWrapperRef","style","transform","activeItem","firstItemReached","lastItemReached","internalItems","useCallback","map","i","Object","assign","id","getItems","emitEvent","useListenToCustomEvent","useEventsModule","thumbsFragment","handleScroll","useThumbsModule","enterFullscreen","exitFullscreen","getIsFullscreen","useFullscreenModule","handleResize","adjustCarouselWrapperPosition","getSlideValue","carouselItem","_a","querySelector","Error","getBoundingClientRect","slideToItem","from","to","nextActiveItem","immediate","slideMode","eventName","nextItem","startReached","endReached","index","start","config","default","velocity","onRest","finished","currentItem","getTotalScrollValue","length","round","Number","getCarouselItemWidth","positionProperty","setPosition","v","ref","top","left","currentFromValue","getFromValue","get","getToValue","type","next","slideToPrevItem","nextItemWillExceed","slideToNextItem","useEffect","window","innerWidth","useLayoutEffect","floor","addEventListener","removeEventListener","bindDrag","useDrag","state","isDragging","dragging","movement","offset","currentMovement","direction","prevItemTreshold","nextItemTreshold","cancel","friction","tension","last","canceled","enabled","axis","findItemIndex","findIndex","item","findItemIndexById","error","itemIndex","_item","carouselFragment","_jsx","onWheel","stop","display","position","width","height","overflowX","overflowY","flexDirection","touchAction","percentValue","getAnimatedWrapperStyles","children","className","flex","marginRight","renderItem","newActiveItem","getIsNextItem","_activeItem","getIsPrevItem","getIsActiveItem","Context","createContext","undefined","useSpringCarouselContext","context","useContext"],"mappings":"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"}
1
+ {"version":3,"file":"useSpringCarousel.js","sources":["../../src/useSpringCarousel.tsx"],"sourcesContent":["import { config, useSpring } from \"@react-spring/web\";\nimport React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n} from \"react\";\n\nimport { SlideActionType, SlideMode } from \"./types/common\";\nimport { useEventsModule } from \"./modules/useEventsModule\";\nimport { useDrag } from \"@use-gesture/react\";\nimport { useFullscreenModule } from \"./modules/useFullscreenModule\";\nimport { useThumbsModule } from \"./modules/useThumbsModule\";\nimport {\n UseSpringReturnType,\n UseSpringCarouselWithThumbs,\n UseSpringCarouselComplete,\n UseSpringCarouselWithNoThumbs,\n UseSpringCarouselWithFixedItems,\n UseSpringCarouselWithNoFixedItems,\n SpringCarouselWithThumbs,\n} from \"./types/internals\";\n\nfunction useSpringCarousel(\n props: UseSpringCarouselWithThumbs\n): UseSpringReturnType;\nfunction useSpringCarousel(\n props: UseSpringCarouselWithNoThumbs\n): UseSpringReturnType;\nfunction useSpringCarousel(\n props: UseSpringCarouselWithFixedItems\n): UseSpringReturnType;\nfunction useSpringCarousel(\n props: UseSpringCarouselWithNoFixedItems\n): UseSpringReturnType;\n\nfunction useSpringCarousel({\n items,\n init = true,\n withThumbs,\n thumbsSlideAxis = \"x\",\n 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}: UseSpringCarouselComplete) {\n const prevWindowWidth = useRef(0);\n const draggingSlideTreshold = useRef(_draggingSlideTreshold ?? 0);\n const slideActionType = useRef<SlideActionType>(\"initial\");\n const slideModeType = useRef<SlideMode>(\"initial\");\n const prevSlidedValue = useRef(0);\n const [spring, setSpring] = useSpring(() => ({\n val: 0,\n pause: !init,\n onChange({ value }) {\n if (freeScroll && mainCarouselWrapperRef.current) {\n setStartEndItemReachedOnFreeScroll();\n if (carouselSlideAxis === \"x\") {\n mainCarouselWrapperRef.current.scrollLeft = Math.abs(value.val);\n } else {\n mainCarouselWrapperRef.current.scrollTop = Math.abs(value.val);\n }\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 const activeItem = useRef(initialActiveItem);\n const firstItemReached = useRef(initialActiveItem === 0);\n const lastItemReached = useRef(false);\n const mainCarouselWrapperRef = useRef<HTMLDivElement | null>(null);\n const carouselTrackWrapperRef = useRef<HTMLDivElement | null>(null);\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 { emitEvent, useListenToCustomEvent } = useEventsModule();\n const { thumbsFragment, handleScroll } = useThumbsModule({\n withThumbs: !!withThumbs,\n thumbsSlideAxis,\n prepareThumbsData,\n items: items as SpringCarouselWithThumbs[\"items\"],\n });\n const { enterFullscreen, exitFullscreen, getIsFullscreen } =\n useFullscreenModule({\n mainCarouselWrapperRef,\n emitEvent,\n handleResize: () => adjustCarouselWrapperPosition(),\n });\n\n function getItemStyles() {\n if (slideType === \"fixed\" && !freeScroll) {\n return {\n marginRight: `${gutter}px`,\n flex: `1 0 calc(100% / ${itemsPerSlide} - ${\n (gutter * (itemsPerSlide - 1)) / itemsPerSlide\n }px)`,\n };\n }\n return {\n ...{ marginRight: `${gutter}px` },\n };\n }\n\n function getSlideValue() {\n const carouselItem = mainCarouselWrapperRef.current?.querySelector(\n \".use-spring-carousel-item\"\n );\n\n if (!carouselItem) {\n throw Error(\"No carousel items available!\");\n }\n\n return (\n carouselItem.getBoundingClientRect()[\n carouselSlideAxis === \"x\" ? \"width\" : \"height\"\n ] + gutter\n );\n }\n\n type SlideToItem = {\n from: number;\n to: number;\n nextActiveItem?: number;\n immediate?: boolean;\n slideMode: \"click\" | \"drag\";\n };\n\n function slideToItem({\n from,\n to,\n nextActiveItem,\n immediate = false,\n slideMode,\n }: 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\n function getTotalScrollValue() {\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 );\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\n function getCarouselItemWidth() {\n const carouselItem = carouselTrackWrapperRef.current?.querySelector(\n \".use-spring-carousel-item\"\n );\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 }\n function adjustCarouselWrapperPosition() {\n const positionProperty = carouselSlideAxis === \"x\" ? \"left\" : \"top\";\n\n function setPosition(v: number) {\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 } else {\n ref.style.left = \"0px\";\n ref.style.top = \"0px\";\n }\n }\n\n const currentFromValue = Math.abs(getFromValue());\n\n if (currentFromValue < getTotalScrollValue() && lastItemReached.current) {\n lastItemReached.current = false;\n }\n if (currentFromValue > getTotalScrollValue()) {\n const val = -getTotalScrollValue();\n lastItemReached.current = true;\n prevSlidedValue.current = val;\n setSpring.start({\n immediate: true,\n val,\n });\n return;\n }\n\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 -\n getSlideValue() * Math.round(itemsPerSlide - 1)\n );\n } else {\n setPosition(getCarouselItemWidth() * items.length);\n }\n\n if (!freeScroll && slideType === \"fixed\") {\n const val = -(getSlideValue() * activeItem.current);\n prevSlidedValue.current = val;\n setSpring.start({\n immediate: true,\n val,\n });\n }\n }\n\n function getFromValue() {\n if (freeScroll && mainCarouselWrapperRef.current) {\n return mainCarouselWrapperRef.current[\n carouselSlideAxis === \"x\" ? \"scrollLeft\" : \"scrollTop\"\n ];\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 (index) {\n return -(index * getSlideValue());\n }\n return prevSlidedValue.current - getSlideValue();\n }\n\n if (index) {\n return -(index * getSlideValue());\n }\n return prevSlidedValue.current + getSlideValue();\n }\n function slideToPrevItem(\n type: Exclude<SlideMode, \"initial\"> = \"click\",\n index?: number\n ) {\n if (!init || (firstItemReached.current && !withLoop)) return;\n\n slideActionType.current = \"prev\";\n lastItemReached.current = false;\n\n const nextItem = index || activeItem.current - 1;\n\n if (!withLoop) {\n const nextItemWillExceed =\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 });\n return;\n }\n }\n if (withLoop && firstItemReached.current) {\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 });\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 });\n }\n function slideToNextItem(\n type: Exclude<SlideMode, \"initial\"> = \"click\",\n index?: number\n ) {\n if (!init || (lastItemReached.current && !withLoop)) return;\n\n slideActionType.current = \"next\";\n firstItemReached.current = false;\n\n const nextItem = index || activeItem.current + 1;\n\n if (!withLoop) {\n const nextItemWillExceed =\n Math.abs(getToValue(\"next\", index)) >\n 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: -getTotalScrollValue(),\n nextActiveItem: nextItem,\n });\n return;\n }\n }\n if (withLoop && lastItemReached.current) {\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 });\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 });\n }\n\n useEffect(() => {\n prevWindowWidth.current = window.innerWidth;\n }, []);\n useEffect(() => {\n adjustCarouselWrapperPosition();\n }, [\n initialStartingPosition,\n itemsPerSlide,\n withLoop,\n startEndGutter,\n gutter,\n freeScroll,\n slideType,\n init,\n ]);\n useLayoutEffect(() => {\n /**\n * Set initial track position\n */\n if (carouselTrackWrapperRef.current) {\n adjustCarouselWrapperPosition();\n }\n }, []);\n useEffect(() => {\n if (_draggingSlideTreshold) {\n draggingSlideTreshold.current = _draggingSlideTreshold;\n } else {\n draggingSlideTreshold.current = Math.floor(getSlideValue() / 2 / 2);\n }\n }, [_draggingSlideTreshold]);\n useEffect(() => {\n function handleResize() {\n if (window.innerWidth === prevWindowWidth.current) return;\n prevWindowWidth.current = window.innerWidth;\n adjustCarouselWrapperPosition();\n }\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\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\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 (slideActionType.current === \"prev\" && movement > 0) {\n state.cancel();\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\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(\"drag\");\n state.cancel();\n } else if (slideWhenThresholdIsReached && prevItemTreshold) {\n slideToPrevItem(\"drag\");\n state.cancel();\n }\n return;\n }\n\n if (state.last && !state.canceled && freeScroll) {\n if (slideActionType.current === \"prev\") {\n slideToPrevItem(\"drag\");\n }\n if (slideActionType.current === \"next\") {\n slideToNextItem(\"drag\");\n }\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(\"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(\"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 },\n {\n enabled:\n (init && !disableGestures && !freeScroll) ||\n (!!freeScroll && !!enableFreeScrollDrag),\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\n function setStartEndItemReachedOnFreeScroll() {\n if (mainCarouselWrapperRef.current) {\n prevSlidedValue.current =\n mainCarouselWrapperRef.current[\n carouselSlideAxis === \"x\" ? \"scrollLeft\" : \"scrollTop\"\n ];\n if (\n mainCarouselWrapperRef.current[\n carouselSlideAxis === \"x\" ? \"scrollLeft\" : \"scrollTop\"\n ] === 0\n ) {\n firstItemReached.current = true;\n lastItemReached.current = false;\n }\n if (\n mainCarouselWrapperRef.current[\n carouselSlideAxis === \"x\" ? \"scrollLeft\" : \"scrollTop\"\n ] > 0 &&\n mainCarouselWrapperRef.current[\n carouselSlideAxis === \"x\" ? \"scrollLeft\" : \"scrollTop\"\n ] < getTotalScrollValue()\n ) {\n firstItemReached.current = false;\n lastItemReached.current = false;\n }\n if (\n mainCarouselWrapperRef.current[\n 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) {\n return items.findIndex((item) => item.id === id);\n }\n function findItemIndexById(id: string | number, error: string) {\n let itemIndex = 0;\n if (typeof id === \"string\") {\n itemIndex = items.findIndex((_item) => _item.id === id);\n } else {\n itemIndex = id;\n }\n\n if (itemIndex < 0 || itemIndex >= items.length) {\n throw new Error(error);\n }\n\n return itemIndex;\n }\n function internalSlideToItem(id: string | number) {\n if (!init) return;\n\n firstItemReached.current = false;\n lastItemReached.current = false;\n\n const itemIndex = findItemIndexById(\n id,\n \"The item you want to slide to doesn't exist; please check che item id or the index you're passing to.\"\n );\n\n if (itemIndex === activeItem.current) {\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(\"click\", newActiveItem);\n } else {\n slideToPrevItem(\"click\", newActiveItem);\n }\n }\n function getIsNextItem(id: string) {\n const itemIndex = findItemIndex(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) {\n const itemIndex = findItemIndex(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\n const carouselFragment = (\n <div\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 ref={carouselTrackWrapperRef}\n {...bindDrag()}\n style={{\n position: \"relative\",\n display: \"flex\",\n flexDirection: carouselSlideAxis === \"x\" ? \"row\" : \"column\",\n touchAction: \"none\",\n ...getAnimatedWrapperStyles(),\n }}\n >\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 }}\n >\n {item.renderItem}\n </div>\n );\n })}\n </div>\n </div>\n );\n\n return {\n useListenToCustomEvent,\n carouselFragment,\n enterFullscreen,\n exitFullscreen,\n getIsFullscreen,\n thumbsFragment,\n slideToItem: internalSlideToItem,\n getIsNextItem,\n getIsPrevItem,\n slideToPrevItem: () => slideToPrevItem(),\n slideToNextItem: () => slideToNextItem(),\n getIsActiveItem: (id: string | number) => {\n return (\n findItemIndexById(id, \"The item you want to check doesn't exist\") ===\n activeItem.current\n );\n },\n };\n}\n\nconst Context =\n createContext<\n Omit<UseSpringReturnType, \"carouselFragment\" | \"thumbsFragment\"> | undefined\n >(undefined);\n\nfunction useSpringCarouselContext() {\n const context = useContext(Context);\n if (!context) {\n throw new Error(\n \"useSpringCarouselContext must be used within the carousel.\"\n );\n }\n return context;\n}\n\nexport { useSpringCarousel, useSpringCarouselContext };\n"],"names":["_jsx"],"mappings":"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"}
@@ -0,0 +1,168 @@
1
+ import { useRef, useEffect } from 'react';
2
+ import screenfull from 'screenfull';
3
+ import { jsx } from 'react/jsx-runtime';
4
+ import { useSpring } from '@react-spring/web';
5
+
6
+ const eventLabel = "RSC::Event";
7
+ function useEventsModule() {
8
+ const targetEvent = useRef(null);
9
+ useEffect(() => {
10
+ targetEvent.current = document.createElement("div");
11
+ }, []);
12
+ function useListenToCustomEvent(eventHandler) {
13
+ useEffect(() => {
14
+ function handleEvent(event) {
15
+ eventHandler(event.detail);
16
+ }
17
+ if (targetEvent.current) {
18
+ // @ts-ignore
19
+ targetEvent.current.addEventListener(eventLabel, handleEvent, false);
20
+ return () => {
21
+ var _a;
22
+ // @ts-ignore
23
+ (_a = targetEvent.current) === null || _a === void 0 ? void 0 : _a.removeEventListener(eventLabel, handleEvent, false);
24
+ };
25
+ }
26
+ }, []);
27
+ }
28
+ function emitEvent(event) {
29
+ if (targetEvent.current) {
30
+ const newEvent = new CustomEvent(eventLabel, {
31
+ detail: event,
32
+ });
33
+ targetEvent.current.dispatchEvent(newEvent);
34
+ }
35
+ }
36
+ return {
37
+ useListenToCustomEvent,
38
+ emitEvent,
39
+ };
40
+ }
41
+
42
+ function useFullscreenModule({ mainCarouselWrapperRef, emitEvent, handleResize, }) {
43
+ const isFullscreen = useRef(false);
44
+ useEffect(() => {
45
+ function handleFullscreenChange() {
46
+ if (document.fullscreenElement) {
47
+ setIsFullscreen(true);
48
+ emitEvent({
49
+ eventName: "onFullscreenChange",
50
+ isFullscreen: true,
51
+ });
52
+ handleResize && handleResize();
53
+ }
54
+ if (!document.fullscreenElement) {
55
+ setIsFullscreen(false);
56
+ emitEvent({
57
+ eventName: "onFullscreenChange",
58
+ isFullscreen: false,
59
+ });
60
+ handleResize && handleResize();
61
+ }
62
+ }
63
+ if (screenfull.isEnabled) {
64
+ screenfull.on("change", handleFullscreenChange);
65
+ return () => {
66
+ if (screenfull.isEnabled) {
67
+ screenfull.off("change", handleFullscreenChange);
68
+ }
69
+ };
70
+ }
71
+ }, []);
72
+ function setIsFullscreen(_isFullscreen) {
73
+ isFullscreen.current = _isFullscreen;
74
+ }
75
+ function getIsFullscreen() {
76
+ return isFullscreen.current;
77
+ }
78
+ function enterFullscreen(elementRef) {
79
+ if (screenfull.isEnabled) {
80
+ screenfull.request((elementRef || mainCarouselWrapperRef.current));
81
+ }
82
+ }
83
+ function exitFullscreen() {
84
+ screenfull.isEnabled && screenfull.exit();
85
+ }
86
+ return {
87
+ enterFullscreen,
88
+ exitFullscreen,
89
+ getIsFullscreen,
90
+ };
91
+ }
92
+
93
+ function isInViewport(el) {
94
+ const rect = el.getBoundingClientRect();
95
+ return (rect.top >= 0 &&
96
+ rect.left >= 0 &&
97
+ rect.bottom <=
98
+ (window.innerHeight || document.documentElement.clientHeight) &&
99
+ rect.right <= (window.innerWidth || document.documentElement.clientWidth));
100
+ }
101
+ function useThumbsModule({ thumbsSlideAxis = "x", withThumbs = false, prepareThumbsData, items, }) {
102
+ const wrapperRef = useRef(null);
103
+ const [spring, setSpring] = useSpring(() => ({
104
+ val: 0,
105
+ }));
106
+ function getTotalScrollValue() {
107
+ var _a;
108
+ return Math.round(Number((_a = wrapperRef.current) === null || _a === void 0 ? void 0 : _a[thumbsSlideAxis === "x" ? "scrollWidth" : "scrollHeight"]) -
109
+ wrapperRef.current.getBoundingClientRect()[thumbsSlideAxis === "x" ? "width" : "height"]);
110
+ }
111
+ function handleScroll(activeItem) {
112
+ var _a, _b;
113
+ function getThumbNode() {
114
+ if (wrapperRef.current) {
115
+ return wrapperRef.current.querySelector(`#thumb-item-${items[activeItem].id}`);
116
+ }
117
+ return null;
118
+ }
119
+ const thumbNode = getThumbNode();
120
+ if (thumbNode && wrapperRef.current) {
121
+ if (!isInViewport(thumbNode)) {
122
+ const offset = thumbNode.offsetLeft;
123
+ const val = offset > getTotalScrollValue() ? getTotalScrollValue() : offset;
124
+ setSpring.start({
125
+ from: {
126
+ val: (_b = (_a = wrapperRef.current) === null || _a === void 0 ? void 0 : _a[thumbsSlideAxis === "x" ? "scrollLeft" : "scrollTop"]) !== null && _b !== void 0 ? _b : 0,
127
+ },
128
+ to: {
129
+ val,
130
+ },
131
+ onChange: ({ value }) => {
132
+ if (wrapperRef.current) {
133
+ wrapperRef.current[thumbsSlideAxis === "x" ? "scrollLeft" : "scrollTop"] = Math.abs(value.val);
134
+ }
135
+ },
136
+ });
137
+ }
138
+ }
139
+ }
140
+ function handlePrepareThumbsData() {
141
+ function getPreparedItems(_items) {
142
+ return _items.map((i) => ({
143
+ id: i.id,
144
+ renderThumb: i.renderThumb,
145
+ }));
146
+ }
147
+ if (prepareThumbsData) {
148
+ return prepareThumbsData(getPreparedItems(items));
149
+ }
150
+ return getPreparedItems(items);
151
+ }
152
+ const thumbsFragment = withThumbs ? (jsx("div", Object.assign({ className: "use-spring-carousel-thumbs-wrapper", ref: wrapperRef, onWheel: () => spring.val.stop(), style: Object.assign({ display: "flex", flex: "1", position: "relative", width: "100%", height: "100%", flexDirection: thumbsSlideAxis === "x" ? "row" : "column" }, (thumbsSlideAxis === "x"
153
+ ? { overflowX: "auto" }
154
+ : {
155
+ overflowY: "auto",
156
+ maxHeight: "100%",
157
+ })) }, { children: handlePrepareThumbsData().map(({ id, renderThumb }) => {
158
+ const thumbId = `thumb-item-${id}`;
159
+ return (jsx("div", Object.assign({ id: thumbId, className: "thumb-item" }, { children: renderThumb }), thumbId));
160
+ }) }))) : null;
161
+ return {
162
+ thumbsFragment,
163
+ handleScroll,
164
+ };
165
+ }
166
+
167
+ export { useThumbsModule as a, useFullscreenModule as b, useEventsModule as u };
168
+ //# sourceMappingURL=useThumbsModule-12c81348.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useThumbsModule-ce69c348.js","sources":["../../src/modules/useEventsModule.ts","../../src/modules/useFullscreenModule.ts","../../src/modules/useThumbsModule.tsx"],"sourcesContent":["import { FullGestureState } from \"@use-gesture/react\";\nimport { useEffect, useRef } from \"react\";\nimport { SlideActionType, SlideMode } from \"../types/common\";\n\nconst eventLabel = \"RSC::Event\";\n\ntype OnSlideStartChange = {\n eventName: \"onSlideStartChange\";\n slideActionType: SlideActionType;\n slideMode: SlideMode;\n nextItem: {\n index: number;\n id: string;\n startReached: boolean;\n endReached: boolean;\n };\n};\ntype OnSlideChange = {\n eventName: \"onSlideChange\";\n slideActionType: SlideActionType;\n slideMode: SlideMode;\n currentItem: {\n index: number;\n id: string;\n startReached: boolean;\n endReached: boolean;\n };\n};\ntype OnFullscreenChange = {\n eventName: \"onFullscreenChange\";\n isFullscreen: boolean;\n};\ntype OnDrag = Omit<FullGestureState<\"drag\">, \"event\"> & {\n eventName: \"onDrag\";\n slideActionType: SlideActionType;\n};\n\ntype Events = OnSlideStartChange | OnSlideChange | OnDrag | OnFullscreenChange;\n\ntype EventHandler = (props: Events) => void;\n\nexport type EmitEvent = (event: Events) => void;\nexport type UseListenToCustomEvent = {\n useListenToCustomEvent: (eventHandler: EventHandler) => void;\n emitEvent: (event: Events) => void;\n};\n\nexport function useEventsModule() {\n const targetEvent = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n targetEvent.current = document.createElement(\"div\");\n }, []);\n\n function useListenToCustomEvent(eventHandler: EventHandler) {\n useEffect(() => {\n function handleEvent(event: CustomEvent<Events>) {\n eventHandler(event.detail);\n }\n\n if (targetEvent.current) {\n // @ts-ignore\n targetEvent.current.addEventListener(eventLabel, handleEvent, false);\n return () => {\n // @ts-ignore\n targetEvent.current?.removeEventListener(\n eventLabel,\n handleEvent,\n false\n );\n };\n }\n }, []);\n }\n function emitEvent(event: Events) {\n if (targetEvent.current) {\n const newEvent = new CustomEvent(eventLabel, {\n detail: event,\n });\n targetEvent.current.dispatchEvent(newEvent);\n }\n }\n\n return {\n useListenToCustomEvent,\n emitEvent,\n };\n}\n","import { useRef, MutableRefObject, useEffect } from \"react\";\nimport screenfull from \"screenfull\";\nimport { EmitEvent } from \"./useEventsModule\";\n\ntype FullscreenModule = {\n mainCarouselWrapperRef: MutableRefObject<HTMLDivElement | null>;\n emitEvent: EmitEvent;\n handleResize?(): void;\n};\n\nexport function useFullscreenModule({\n mainCarouselWrapperRef,\n emitEvent,\n handleResize,\n}: FullscreenModule) {\n const isFullscreen = useRef(false);\n\n useEffect(() => {\n function handleFullscreenChange() {\n if (document.fullscreenElement) {\n setIsFullscreen(true);\n emitEvent({\n eventName: \"onFullscreenChange\",\n isFullscreen: true,\n });\n\n handleResize && handleResize();\n }\n\n if (!document.fullscreenElement) {\n setIsFullscreen(false);\n emitEvent({\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(\n (elementRef || mainCarouselWrapperRef.current) as Element\n );\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 { useSpring } from \"@react-spring/web\";\nimport { useRef } from \"react\";\nimport {\n SpringCarouselWithThumbs,\n PrepareThumbsData,\n} from \"src/types/internals\";\n\ntype Props = {\n withThumbs?: boolean;\n thumbsSlideAxis: SpringCarouselWithThumbs[\"thumbsSlideAxis\"];\n prepareThumbsData?: PrepareThumbsData;\n items: SpringCarouselWithThumbs[\"items\"];\n};\n\nfunction isInViewport(el: HTMLElement) {\n const rect = el.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <=\n (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n}\n\nexport function useThumbsModule({\n thumbsSlideAxis = \"x\",\n withThumbs = false,\n prepareThumbsData,\n items,\n}: Props) {\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n const [spring, setSpring] = useSpring(() => ({\n val: 0,\n }));\n\n function getTotalScrollValue() {\n return Math.round(\n Number(\n wrapperRef.current?.[\n thumbsSlideAxis === \"x\" ? \"scrollWidth\" : \"scrollHeight\"\n ]\n ) -\n wrapperRef.current!.getBoundingClientRect()[\n thumbsSlideAxis === \"x\" ? \"width\" : \"height\"\n ]\n );\n }\n\n function handleScroll(activeItem: number) {\n function getThumbNode() {\n if (wrapperRef.current) {\n return wrapperRef.current.querySelector(\n `#thumb-item-${items[activeItem].id}`\n ) as HTMLElement;\n }\n return null;\n }\n\n const thumbNode = getThumbNode();\n if (thumbNode && wrapperRef.current) {\n if (!isInViewport(thumbNode)) {\n const offset = thumbNode.offsetLeft;\n const val =\n offset > getTotalScrollValue() ? getTotalScrollValue() : offset;\n\n setSpring.start({\n from: {\n val:\n wrapperRef.current?.[\n thumbsSlideAxis === \"x\" ? \"scrollLeft\" : \"scrollTop\"\n ] ?? 0,\n },\n to: {\n val,\n },\n onChange: ({ value }) => {\n if (wrapperRef.current) {\n wrapperRef.current[\n thumbsSlideAxis === \"x\" ? \"scrollLeft\" : \"scrollTop\"\n ] = Math.abs(value.val);\n }\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 <div\n className=\"use-spring-carousel-thumbs-wrapper\"\n ref={wrapperRef}\n onWheel={() => spring.val.stop()}\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-item-${id}`;\n return (\n <div key={thumbId} id={thumbId} className=\"thumb-item\">\n {renderThumb}\n </div>\n );\n })}\n </div>\n ) : null;\n\n return {\n thumbsFragment,\n handleScroll,\n };\n}\n"],"names":["useEventsModule","targetEvent","useRef","useEffect","current","document","createElement","useListenToCustomEvent","eventHandler","handleEvent","event","detail","addEventListener","_a","removeEventListener","emitEvent","newEvent","CustomEvent","dispatchEvent","useFullscreenModule","mainCarouselWrapperRef","handleResize","isFullscreen","setIsFullscreen","_isFullscreen","handleFullscreenChange","fullscreenElement","eventName","screenfull","isEnabled","on","off","enterFullscreen","elementRef","request","exitFullscreen","exit","getIsFullscreen","useThumbsModule","thumbsSlideAxis","withThumbs","prepareThumbsData","items","wrapperRef","spring","setSpring","useSpring","val","getTotalScrollValue","Math","round","Number","getBoundingClientRect","thumbsFragment","_jsx","Object","assign","className","ref","onWheel","stop","style","display","flex","position","width","height","flexDirection","overflowX","overflowY","maxHeight","children","getPreparedItems","_items","map","i","id","renderThumb","handlePrepareThumbsData","thumbId","handleScroll","activeItem","thumbNode","querySelector","el","rect","top","left","bottom","window","innerHeight","documentElement","clientHeight","right","innerWidth","clientWidth","isInViewport","offset","offsetLeft","start","from","to","onChange","value","abs"],"mappings":"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"}
1
+ {"version":3,"file":"useThumbsModule-12c81348.js","sources":["../../src/modules/useEventsModule.ts","../../src/modules/useFullscreenModule.ts","../../src/modules/useThumbsModule.tsx"],"sourcesContent":["import { FullGestureState } from \"@use-gesture/react\";\nimport { useEffect, useRef } from \"react\";\nimport { SlideActionType, SlideMode } from \"../types/common\";\n\nconst eventLabel = \"RSC::Event\";\n\ntype OnSlideStartChange = {\n eventName: \"onSlideStartChange\";\n slideActionType: SlideActionType;\n slideMode: SlideMode;\n nextItem: {\n index: number;\n id: string;\n startReached: boolean;\n endReached: boolean;\n };\n};\ntype OnSlideChange = {\n eventName: \"onSlideChange\";\n slideActionType: SlideActionType;\n slideMode: SlideMode;\n currentItem: {\n index: number;\n id: string;\n startReached: boolean;\n endReached: boolean;\n };\n};\ntype OnFullscreenChange = {\n eventName: \"onFullscreenChange\";\n isFullscreen: boolean;\n};\ntype OnDrag = Omit<FullGestureState<\"drag\">, \"event\"> & {\n eventName: \"onDrag\";\n slideActionType: SlideActionType;\n};\n\ntype Events = OnSlideStartChange | OnSlideChange | OnDrag | OnFullscreenChange;\n\ntype EventHandler = (props: Events) => void;\n\nexport type EmitEvent = (event: Events) => void;\nexport type UseListenToCustomEvent = {\n useListenToCustomEvent: (eventHandler: EventHandler) => void;\n emitEvent: (event: Events) => void;\n};\n\nexport function useEventsModule() {\n const targetEvent = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n targetEvent.current = document.createElement(\"div\");\n }, []);\n\n function useListenToCustomEvent(eventHandler: EventHandler) {\n useEffect(() => {\n function handleEvent(event: CustomEvent<Events>) {\n eventHandler(event.detail);\n }\n\n if (targetEvent.current) {\n // @ts-ignore\n targetEvent.current.addEventListener(eventLabel, handleEvent, false);\n return () => {\n // @ts-ignore\n targetEvent.current?.removeEventListener(\n eventLabel,\n handleEvent,\n false\n );\n };\n }\n }, []);\n }\n function emitEvent(event: Events) {\n if (targetEvent.current) {\n const newEvent = new CustomEvent(eventLabel, {\n detail: event,\n });\n targetEvent.current.dispatchEvent(newEvent);\n }\n }\n\n return {\n useListenToCustomEvent,\n emitEvent,\n };\n}\n","import { useRef, MutableRefObject, useEffect } from \"react\";\nimport screenfull from \"screenfull\";\nimport { EmitEvent } from \"./useEventsModule\";\n\ntype FullscreenModule = {\n mainCarouselWrapperRef: MutableRefObject<HTMLDivElement | null>;\n emitEvent: EmitEvent;\n handleResize?(): void;\n};\n\nexport function useFullscreenModule({\n mainCarouselWrapperRef,\n emitEvent,\n handleResize,\n}: FullscreenModule) {\n const isFullscreen = useRef(false);\n\n useEffect(() => {\n function handleFullscreenChange() {\n if (document.fullscreenElement) {\n setIsFullscreen(true);\n emitEvent({\n eventName: \"onFullscreenChange\",\n isFullscreen: true,\n });\n\n handleResize && handleResize();\n }\n\n if (!document.fullscreenElement) {\n setIsFullscreen(false);\n emitEvent({\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(\n (elementRef || mainCarouselWrapperRef.current) as Element\n );\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 { useSpring } from \"@react-spring/web\";\nimport { useRef } from \"react\";\nimport {\n SpringCarouselWithThumbs,\n PrepareThumbsData,\n} from \"src/types/internals\";\n\ntype Props = {\n withThumbs?: boolean;\n thumbsSlideAxis: SpringCarouselWithThumbs[\"thumbsSlideAxis\"];\n prepareThumbsData?: PrepareThumbsData;\n items: SpringCarouselWithThumbs[\"items\"];\n};\n\nfunction isInViewport(el: HTMLElement) {\n const rect = el.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <=\n (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n}\n\nexport function useThumbsModule({\n thumbsSlideAxis = \"x\",\n withThumbs = false,\n prepareThumbsData,\n items,\n}: Props) {\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n const [spring, setSpring] = useSpring(() => ({\n val: 0,\n }));\n\n function getTotalScrollValue() {\n return Math.round(\n Number(\n wrapperRef.current?.[\n thumbsSlideAxis === \"x\" ? \"scrollWidth\" : \"scrollHeight\"\n ]\n ) -\n wrapperRef.current!.getBoundingClientRect()[\n thumbsSlideAxis === \"x\" ? \"width\" : \"height\"\n ]\n );\n }\n\n function handleScroll(activeItem: number) {\n function getThumbNode() {\n if (wrapperRef.current) {\n return wrapperRef.current.querySelector(\n `#thumb-item-${items[activeItem].id}`\n ) as HTMLElement;\n }\n return null;\n }\n\n const thumbNode = getThumbNode();\n if (thumbNode && wrapperRef.current) {\n if (!isInViewport(thumbNode)) {\n const offset = thumbNode.offsetLeft;\n const val =\n offset > getTotalScrollValue() ? getTotalScrollValue() : offset;\n\n setSpring.start({\n from: {\n val:\n wrapperRef.current?.[\n thumbsSlideAxis === \"x\" ? \"scrollLeft\" : \"scrollTop\"\n ] ?? 0,\n },\n to: {\n val,\n },\n onChange: ({ value }) => {\n if (wrapperRef.current) {\n wrapperRef.current[\n thumbsSlideAxis === \"x\" ? \"scrollLeft\" : \"scrollTop\"\n ] = Math.abs(value.val);\n }\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 <div\n className=\"use-spring-carousel-thumbs-wrapper\"\n ref={wrapperRef}\n onWheel={() => spring.val.stop()}\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-item-${id}`;\n return (\n <div key={thumbId} id={thumbId} className=\"thumb-item\">\n {renderThumb}\n </div>\n );\n })}\n </div>\n ) : null;\n\n return {\n thumbsFragment,\n handleScroll,\n };\n}\n"],"names":["_jsx"],"mappings":"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"}