react-spring-carousel 3.0.0-beta090.23 → 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,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("./useThumbsModule-09d1d442.cjs"),g=require("@react-spring/web"),K=require("@use-gesture/react"),o=require("react"),c={initial:{opacity:1,position:"relative"},from:{opacity:0,position:"relative"},enter:{position:"relative",opacity:1},leave:{opacity:1,position:"absolute"}};function Q({init:l=!0,disableGestures:q=!1,items:r,springConfig:M=g.config.default,exitBeforeEnter:N=!1,trail:_,withLoop:s=!1,activeItem:a,toPrevItemSpringProps:h=c,toNextItemSpringProps:v=c,draggingSlideTreshold:b=50,thumbsSlideAxis:$="x"}){const d=o.useRef("next"),p=o.useRef("initial"),S=o.useRef(null),[n,R]=o.useState(a??0),{emitEvent:x,useListenToCustomEvent:I}=u.useEventsModule(),{handleScroll:A,thumbsFragment:D}=u.useThumbsModule({thumbsSlideAxis:$,items:r,renderThumbFnProps:{getIsNextItem:w,getIsPrevItem:k,useListenToCustomEvent:I,activeItem:{index:n,id:r[n].id}}});function O(){return d.current==="prev"?{initial:{...h.initial},from:{...h.from},enter:{...h.enter},leave:{...h.leave}}:d.current==="next"?{initial:{...v.initial},from:{...v.from},enter:{...v.enter},leave:{...v.leave}}:{initial:{...c.initial},from:{...c.from},enter:{...c.enter},leave:{...c.leave}}}o.useEffect(()=>{typeof a=="number"&&a!==n&&R(a)},[a]);function T({to:e,slideType:t,slideMode:i}){d.current=t,p.current=i,x({eventName:"onSlideStartChange",slideActionType:d.current,slideMode:p.current,nextItem:{index:e,id:r[e].id,startReached:e===0,endReached:e===r.length-1}}),R(e),A(n)}function E(e){if(!l)return;const t=n===0;!s&&t||T(s&&t?{to:r.length-1,slideType:"prev",slideMode:e}:{to:n-1,slideType:"prev",slideMode:e})}function j(e){if(!l)return;const t=n===r.length-1;!s&&t||T(s&&t?{to:0,slideType:"next",slideMode:e}:{to:n+1,slideType:"next",slideMode:e})}const W=g.useTransition(n,{config:M,key:null,trail:_,exitBeforeEnter:N,...O(),onRest(e,t,i){e.finished&&i===n&&x({eventName:"onSlideChange",slideActionType:d.current,slideMode:p.current,currentItem:{index:n,id:r[n].id,startReached:n===0,endReached:n===r.length-1}})}}),z=K.useDrag(({last:e,movement:[t]})=>{if(e){const i=t>b,f=t<-b,m=n===0,J=n===r.length-1;if(f){if(!s&&J)return;x({eventName:"onLeftSwipe"}),j("swipe")}else if(i){if(!s&&m)return;x({eventName:"onRightSwipe"}),E("swipe")}}},{enabled:!q});function F(e,t){let i=0;if(typeof e=="string"?i=r.findIndex(f=>f.id===e):i=e,i<0||i>=r.length){if(t)throw new Error(t);console.error(`The item doesn't exist; check that the id provided - ${e} - is correct.`),i=-1}return i}function w(e){const t=F(e,"The item doesn't exist; check the provided id."),i=n;return s&&i===r.length-1?t===0:t===i+1}function k(e){const t=F(e,"The item doesn't exist; check the provided id."),i=n;return s&&i===0?t===r.length-1:t===i-1}const B=W((e,t,i,f)=>{const m=r[t].renderItem;return u.jsxRuntimeExports.jsx(g.a.div,{id:`use-transition-carousel-item-${f}`,className:"use-transition-carousel-item",style:{...e,flex:"1 0 100%",width:"100%",height:"100%"},children:typeof m=="function"?m({useListenToCustomEvent:I,getIsNextItem:w,getIsPrevItem:k,activeItem:{index:n,id:r[n].id}}):m})}),y={useListenToCustomEvent:I,slideToPrevItem:()=>E("click"),slideToNextItem:()=>j("click")},G=u.jsxRuntimeExports.jsx(C.Provider,{value:y,children:D}),H=u.jsxRuntimeExports.jsx(C.Provider,{value:y,children:u.jsxRuntimeExports.jsx("div",{ref:S,...z(),style:{display:"flex",position:"relative",width:"100%",height:"100%",overflow:"hidden"},children:B})});return{...y,carouselFragment:H,thumbsFragment:G}}const C=o.createContext(void 0);function U(){const l=o.useContext(C);if(!l)throw new Error("useTransitionCarouselContext must be used within the carousel.");return l}exports.useTransitionCarousel=Q;exports.useTransitionCarouselContext=U;
2
- //# sourceMappingURL=index.cjs3.js.map
@@ -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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"}