react-spring-carousel 3.0.0-beta001 → 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":"index.js","sources":["../../src/modules/useEventsModule.ts","../../src/modules/useThumbsModule.tsx","../../src/useSpringCarousel.tsx","../../src/modules/useFullscreenModule.ts"],"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 { 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","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","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"],"names":["eventLabel","useThumbsModule","thumbsSlideAxis","withThumbs","prepareThumbsData","items","wrapperRef","useRef","spring","setSpring","useSpring","val","getTotalScrollValue","Math","round","Number","_a","current","getBoundingClientRect","thumbsFragment","_jsx","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","document","documentElement","clientHeight","right","innerWidth","clientWidth","isInViewport","offset","offsetLeft","start","from","to","onChange","value","abs","Context","createContext","undefined","init","itemsPerSlide","slideType","gutter","withLoop","startEndGutter","carouselSlideAxis","disableGestures","draggingSlideTreshold","_draggingSlideTreshold","slideWhenThresholdIsReached","freeScroll","enableFreeScrollDrag","initialStartingPosition","initialActiveItem","prevWindowWidth","slideActionType","slideModeType","prevSlidedValue","pause","mainCarouselWrapperRef","setStartEndItemReachedOnFreeScroll","scrollLeft","scrollTop","carouselTrackWrapperRef","transform","firstItemReached","lastItemReached","internalItems","useCallback","getItems","emitEvent","useListenToCustomEvent","targetEvent","useEffect","createElement","eventHandler","handleEvent","event","detail","addEventListener","removeEventListener","newEvent","CustomEvent","dispatchEvent","useEventsModule","enterFullscreen","exitFullscreen","getIsFullscreen","handleResize","isFullscreen","setIsFullscreen","_isFullscreen","handleFullscreenChange","fullscreenElement","eventName","screenfull","isEnabled","on","off","elementRef","request","exit","useFullscreenModule","adjustCarouselWrapperPosition","getSlideValue","carouselItem","Error","slideToItem","nextActiveItem","immediate","slideMode","nextItem","startReached","endReached","index","config","default","velocity","onRest","finished","currentItem","length","getCarouselItemWidth","positionProperty","setPosition","v","currentFromValue","getFromValue","get","getToValue","type","next","slideToPrevItem","nextItemWillExceed","slideToNextItem","useLayoutEffect","floor","bindDrag","useDrag","state","isDragging","dragging","movement","currentMovement","direction","prevItemTreshold","nextItemTreshold","cancel","friction","tension","last","canceled","enabled","axis","findItemIndex","findIndex","item","findItemIndexById","error","itemIndex","_item","carouselFragment","touchAction","percentValue","getAnimatedWrapperStyles","marginRight","renderItem","newActiveItem","getIsNextItem","_activeItem","getIsPrevItem","getIsActiveItem","context","useContext"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/modules/useEventsModule.ts","../../src/modules/useFullscreenModule.ts","../../src/modules/useThumbsModule.tsx","../../src/useSpringCarousel.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","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":["useRef","useEffect","useSpring","_jsx","useCallback","config","useLayoutEffect","useDrag","createContext","useContext"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-spring-carousel",
3
- "version": "3.0.0-beta001",
3
+ "version": "3.0.0-beta003",
4
4
  "description": "A new <Carousel /> experience for the web",
5
5
  "homepage": "https://react-spring-carousel.emilianobucci.com",
6
6
  "repository": "https://github.com/Emiliano-Bucci/react-spring-carousel",
@@ -9,6 +9,7 @@
9
9
  "main": "./dist/cjs/index.js",
10
10
  "module": "./dist/esm",
11
11
  "type": "module",
12
+ "types": "./dist/types/index.d.ts",
12
13
  "files": [
13
14
  "dist"
14
15
  ],
@@ -39,6 +40,8 @@
39
40
  },
40
41
  "devDependencies": {
41
42
  "@babel/core": "^7.19.3",
43
+ "@rollup/plugin-commonjs": "^21.0.2",
44
+ "@rollup/plugin-node-resolve": "^13.1.3",
42
45
  "@storybook/addon-actions": "^6.5.12",
43
46
  "@storybook/addon-essentials": "^6.5.12",
44
47
  "@storybook/addon-interactions": "^6.5.12",
@@ -61,7 +64,6 @@
61
64
  "react-dom": "^18.2.0",
62
65
  "rimraf": "^3.0.2",
63
66
  "rollup": "^3.1.0",
64
- "typescript": "^4.8.4",
65
67
  "rollup-plugin-babel": "^4.4.0",
66
68
  "rollup-plugin-exclude-dependencies-from-bundle": "^1.1.22",
67
69
  "rollup-plugin-filesize": "^9.1.2",
@@ -69,15 +71,15 @@
69
71
  "rollup-plugin-terser": "^7.0.2",
70
72
  "rollup-plugin-typescript2": "^0.34.1",
71
73
  "rollup-plugin-visualizer": "^5.8.2",
72
- "@rollup/plugin-commonjs": "^21.0.2",
73
- "@rollup/plugin-node-resolve": "^13.1.3"
74
+ "typescript": "^4.8.4",
75
+ "react-spring-carousel": "^3.0.0-beta002"
74
76
  },
75
77
  "peerDependencies": {
76
78
  "react": "^18.2.0",
77
- "react-dom": "^18.2.0"
79
+ "react-dom": "^18.2.0",
80
+ "@react-spring/web": "^9.5.5"
78
81
  },
79
82
  "dependencies": {
80
- "@react-spring/web": "^9.5.5",
81
83
  "@use-gesture/react": "^10.2.20",
82
84
  "screenfull": "^5.2.0"
83
85
  }
@@ -1,2 +0,0 @@
1
- import{useRef as e,useEffect as n}from"react";import t from"screenfull";import{jsx as r}from"react/jsx-runtime";import{useSpring as i}from"@react-spring/web";function u(){const t=e(null);return n((()=>{t.current=document.createElement("div")}),[]),{useListenToCustomEvent:function(e){n((()=>{function n(n){e(n.detail)}if(t.current)return t.current.addEventListener("RSC::Event",n,!1),()=>{var e;null===(e=t.current)||void 0===e||e.removeEventListener("RSC::Event",n,!1)}}),[])},emitEvent:function(e){if(t.current){const n=new CustomEvent("RSC::Event",{detail:e});t.current.dispatchEvent(n)}}}}function l({mainCarouselWrapperRef:r,emitEvent:i,handleResize:u}){const l=e(!1);function o(e){l.current=e}return n((()=>{function e(){document.fullscreenElement&&(o(!0),i({eventName:"onFullscreenChange",isFullscreen:!0}),u&&u()),document.fullscreenElement||(o(!1),i({eventName:"onFullscreenChange",isFullscreen:!1}),u&&u())}if(t.isEnabled)return t.on("change",e),()=>{t.isEnabled&&t.off("change",e)}}),[]),{enterFullscreen:function(e){t.isEnabled&&t.request(e||r.current)},exitFullscreen:function(){t.isEnabled&&t.exit()},getIsFullscreen:function(){return l.current}}}function o({thumbsSlideAxis:n="x",withThumbs:t=!1,prepareThumbsData:u,items:l}){const o=e(null),[c,s]=i((()=>({val:0})));function a(){var e;return Math.round(Number(null===(e=o.current)||void 0===e?void 0:e["x"===n?"scrollWidth":"scrollHeight"])-o.current.getBoundingClientRect()["x"===n?"width":"height"])}return{thumbsFragment:t?r("div",Object.assign({className:"use-spring-carousel-thumbs-wrapper",ref:o,onWheel:()=>c.val.stop(),style:Object.assign({display:"flex",flex:"1",position:"relative",width:"100%",height:"100%",flexDirection:"x"===n?"row":"column"},"x"===n?{overflowX:"auto"}:{overflowY:"auto",maxHeight:"100%"})},{children:function(){function e(e){return e.map((e=>({id:e.id,renderThumb:e.renderThumb})))}return u?u(e(l)):e(l)}().map((({id:e,renderThumb:n})=>{const t=`thumb-item-${e}`;return r("div",Object.assign({id:t,className:"thumb-item"},{children:n}),t)}))})):null,handleScroll:function(e){var t,r;const i=o.current?o.current.querySelector(`#thumb-item-${l[e].id}`):null;if(i&&o.current&&!function(e){const n=e.getBoundingClientRect();return n.top>=0&&n.left>=0&&n.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&n.right<=(window.innerWidth||document.documentElement.clientWidth)}(i)){const e=i.offsetLeft,u=e>a()?a():e;s.start({from:{val:null!==(r=null===(t=o.current)||void 0===t?void 0:t["x"===n?"scrollLeft":"scrollTop"])&&void 0!==r?r:0},to:{val:u},onChange:({value:e})=>{o.current&&(o.current["x"===n?"scrollLeft":"scrollTop"]=Math.abs(e.val))}})}}}}export{o as a,l as b,u};
2
- //# sourceMappingURL=useThumbsModule-ce69c348.js.map