react-spring-carousel 3.0.0-beta090.24 → 3.0.0-beta090.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs3.js","sources":["../src/useTransitionCarousel.tsx"],"sourcesContent":["import { a, config, useTransition } from '@react-spring/web'\nimport { useDrag } from '@use-gesture/react'\nimport { createContext, useContext, useEffect, useRef, useState } from 'react'\n\nimport { useThumbsModule } from './modules'\nimport { useEventsModule } from './modules/useEventsModule'\nimport {\n ItemWithThumb,\n SlideActionType,\n TransitionSlideMode,\n UseTransitionCarouselProps,\n UseTransitionCarouselReturnProps,\n} from './types'\n\nconst defaultAnimationProps = {\n initial: {\n opacity: 1,\n position: 'relative',\n },\n from: {\n opacity: 0,\n position: 'relative',\n },\n enter: {\n position: 'relative',\n opacity: 1,\n },\n leave: {\n opacity: 1,\n position: 'absolute',\n },\n}\n\nfunction useTransitionCarousel({\n init = true,\n disableGestures = false,\n items,\n springConfig = config.default,\n exitBeforeEnter = false,\n trail,\n withLoop = false,\n activeItem: externalActiveItem,\n toPrevItemSpringProps = defaultAnimationProps,\n toNextItemSpringProps = defaultAnimationProps,\n draggingSlideTreshold = 50,\n thumbsSlideAxis = 'x',\n}: UseTransitionCarouselProps): UseTransitionCarouselReturnProps {\n const slideActionType = useRef<SlideActionType>('next')\n const slideModeType = useRef<TransitionSlideMode>('initial')\n const mainCarouselWrapperRef = useRef<HTMLDivElement | null>(null)\n const [activeItem, setActiveItem] = useState(externalActiveItem ?? 0)\n const { emitEvent, useListenToCustomEvent } = useEventsModule<'use-transition'>()\n const { handleScroll, thumbsFragment } = useThumbsModule<'use-transition'>({\n thumbsSlideAxis,\n items: items as ItemWithThumb<'use-transition'>[],\n renderThumbFnProps: {\n getIsNextItem,\n getIsPrevItem,\n useListenToCustomEvent,\n activeItem: {\n index: activeItem,\n id: items[activeItem].id,\n },\n },\n })\n\n function getConfig() {\n if (slideActionType.current === 'prev') {\n return {\n initial: {\n ...toPrevItemSpringProps.initial,\n },\n from: {\n ...toPrevItemSpringProps.from,\n },\n enter: {\n ...toPrevItemSpringProps.enter,\n },\n leave: {\n ...toPrevItemSpringProps.leave,\n },\n }\n }\n if (slideActionType.current === 'next') {\n return {\n initial: {\n ...toNextItemSpringProps.initial,\n },\n from: {\n ...toNextItemSpringProps.from,\n },\n enter: {\n ...toNextItemSpringProps.enter,\n },\n leave: {\n ...toNextItemSpringProps.leave,\n },\n }\n }\n return {\n initial: {\n ...defaultAnimationProps.initial,\n },\n from: {\n ...defaultAnimationProps.from,\n },\n enter: {\n ...defaultAnimationProps.enter,\n },\n leave: {\n ...defaultAnimationProps.leave,\n },\n }\n }\n\n useEffect(() => {\n if (typeof externalActiveItem === 'number' && externalActiveItem !== activeItem) {\n setActiveItem(externalActiveItem)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [externalActiveItem])\n\n type SlideToItem = {\n to: number\n slideType: SlideActionType\n slideMode: TransitionSlideMode\n }\n\n function slideToItem({ to, slideType, slideMode }: SlideToItem) {\n slideActionType.current = slideType\n slideModeType.current = slideMode\n emitEvent({\n eventName: 'onSlideStartChange',\n slideActionType: slideActionType.current,\n slideMode: slideModeType.current,\n nextItem: {\n index: to,\n id: items[to].id,\n startReached: to === 0,\n endReached: to === items.length - 1,\n },\n })\n setActiveItem(to)\n handleScroll(activeItem)\n }\n\n function slideToPrevItem(slideMode: TransitionSlideMode) {\n if (!init) return\n const isFirstItem = activeItem === 0\n\n if (!withLoop && isFirstItem) return\n\n if (withLoop && isFirstItem) {\n slideToItem({\n to: items.length - 1,\n slideType: 'prev',\n slideMode,\n })\n } else {\n slideToItem({\n to: activeItem - 1,\n slideType: 'prev',\n slideMode,\n })\n }\n }\n function slideToNextItem(slideMode: TransitionSlideMode) {\n if (!init) return\n const isLastItem = activeItem === items.length - 1\n\n if (!withLoop && isLastItem) return\n\n if (withLoop && isLastItem) {\n slideToItem({\n to: 0,\n slideType: 'next',\n slideMode,\n })\n } else {\n slideToItem({\n to: activeItem + 1,\n slideType: 'next',\n slideMode,\n })\n }\n }\n\n const transitions = useTransition(activeItem, {\n config: springConfig,\n key: null,\n trail,\n exitBeforeEnter,\n ...getConfig(),\n onRest(value, _, index) {\n if (value.finished && index === activeItem) {\n emitEvent({\n eventName: 'onSlideChange',\n slideActionType: slideActionType.current,\n slideMode: slideModeType.current,\n currentItem: {\n index: activeItem,\n id: items[activeItem].id,\n startReached: activeItem === 0,\n endReached: activeItem === items.length - 1,\n },\n })\n }\n },\n })\n\n const bindSwipe = useDrag(\n ({ last, movement: [mx] }) => {\n if (last) {\n const prevItemTreshold = mx > draggingSlideTreshold\n const nextItemTreshold = mx < -draggingSlideTreshold\n const isFirstItem = activeItem === 0\n const isLastItem = activeItem === items.length - 1\n\n if (nextItemTreshold) {\n if (!withLoop && isLastItem) return\n\n emitEvent({\n eventName: 'onLeftSwipe',\n })\n slideToNextItem('swipe')\n } else if (prevItemTreshold) {\n if (!withLoop && isFirstItem) return\n\n emitEvent({\n eventName: 'onRightSwipe',\n })\n slideToPrevItem('swipe')\n }\n }\n },\n {\n enabled: !disableGestures,\n },\n )\n\n function findItemIndex(id: string | number, error?: string) {\n let itemIndex = 0\n\n if (typeof id === 'string') {\n itemIndex = items.findIndex((item) => item.id === id)\n } else {\n itemIndex = id\n }\n if (itemIndex < 0 || itemIndex >= items.length) {\n if (error) {\n throw new Error(error)\n }\n console.error(`The item doesn't exist; check that the id provided - ${id} - is correct.`)\n itemIndex = -1\n }\n\n return itemIndex\n }\n function getIsNextItem(id: string | number) {\n const itemIndex = findItemIndex(id, \"The item doesn't exist; check the provided id.\")\n const _activeItem = activeItem\n if (withLoop && _activeItem === items.length - 1) {\n return itemIndex === 0\n }\n return itemIndex === _activeItem + 1\n }\n function getIsPrevItem(id: string | number) {\n const itemIndex = findItemIndex(id, \"The item doesn't exist; check the provided id.\")\n const _activeItem = activeItem\n if (withLoop && _activeItem === 0) {\n return itemIndex === items.length - 1\n }\n return itemIndex === _activeItem - 1\n }\n\n const itemsFragment = transitions((styles, item, _, indx) => {\n const renderItem = items[item].renderItem\n return (\n <a.div\n id={`use-transition-carousel-item-${indx}`}\n className=\"use-transition-carousel-item\"\n style={{\n ...styles,\n flex: '1 0 100%',\n width: '100%',\n height: '100%',\n }}\n >\n {typeof renderItem === 'function'\n ? renderItem({\n useListenToCustomEvent,\n getIsNextItem,\n getIsPrevItem,\n activeItem: {\n index: activeItem,\n id: items[activeItem].id,\n },\n })\n : renderItem}\n </a.div>\n )\n })\n\n const result = {\n useListenToCustomEvent,\n slideToPrevItem: () => slideToPrevItem('click'),\n slideToNextItem: () => slideToNextItem('click'),\n }\n\n const _thumbsFragment = <Context.Provider value={result}>{thumbsFragment}</Context.Provider>\n const carouselFragment = (\n <Context.Provider value={result}>\n <div\n ref={mainCarouselWrapperRef}\n {...bindSwipe()}\n style={{\n display: 'flex',\n position: 'relative',\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n }}\n >\n {itemsFragment}\n </div>\n </Context.Provider>\n )\n\n return {\n ...result,\n carouselFragment,\n thumbsFragment: _thumbsFragment,\n }\n}\n\ntype ContextProps = Omit<UseTransitionCarouselReturnProps, 'carouselFragment' | 'thumbsFragment'>\n\nconst Context = createContext<ContextProps | undefined>(undefined)\n\nfunction useTransitionCarouselContext() {\n const context = useContext(Context)\n if (!context) {\n throw new Error('useTransitionCarouselContext must be used within the carousel.')\n }\n return context\n}\n\nexport { useTransitionCarousel, useTransitionCarouselContext }\n"],"names":["defaultAnimationProps","useTransitionCarousel","init","disableGestures","items","springConfig","config","exitBeforeEnter","trail","withLoop","externalActiveItem","toPrevItemSpringProps","toNextItemSpringProps","draggingSlideTreshold","thumbsSlideAxis","slideActionType","useRef","slideModeType","mainCarouselWrapperRef","activeItem","setActiveItem","useState","emitEvent","useListenToCustomEvent","useEventsModule","handleScroll","thumbsFragment","useThumbsModule","getIsNextItem","getIsPrevItem","getConfig","useEffect","slideToItem","to","slideType","slideMode","slideToPrevItem","isFirstItem","slideToNextItem","isLastItem","transitions","useTransition","value","_","index","bindSwipe","useDrag","last","mx","prevItemTreshold","nextItemTreshold","findItemIndex","id","error","itemIndex","item","_activeItem","itemsFragment","styles","indx","renderItem","jsx","a","result","_thumbsFragment","Context","carouselFragment","createContext","useTransitionCarouselContext","context","useContext"],"mappings":"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"}