react-spring-carousel 3.0.0-beta070 → 3.0.0-beta071

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.
Files changed (30) hide show
  1. package/dist/declarations/modules/index.d.ts +1 -0
  2. package/dist/declarations/modules/useEventsModule.d.ts +5 -0
  3. package/dist/{modules → declarations/modules}/useFullscreenModule.d.ts +1 -7
  4. package/dist/{types → declarations/types}/common.d.ts +1 -1
  5. package/dist/{types → declarations/types}/index.d.ts +0 -1
  6. package/dist/{modules/useEventsModule.d.ts → declarations/types/useEventsModule.types.d.ts} +11 -16
  7. package/dist/declarations/types/useFullscreenModule.types.d.ts +6 -0
  8. package/dist/{types → declarations/types}/useSpringCarousel.types.d.ts +1 -1
  9. package/dist/{types → declarations/types}/useTransitionCarousel.types.d.ts +1 -1
  10. package/dist/index.cjs +1 -1
  11. package/dist/index.js +8 -11
  12. package/dist/index2.cjs +1 -1
  13. package/dist/index2.js +2 -6
  14. package/dist/useEventsModule-0feadbf7.cjs +1 -0
  15. package/dist/useEventsModule-538b90c9.js +33 -0
  16. package/dist/useSpringCarousel.cjs +1 -1
  17. package/dist/useSpringCarousel.js +308 -301
  18. package/dist/useThumbsModule-57ac2128.cjs +27 -0
  19. package/dist/{useThumbsModule-db93025f.js → useThumbsModule-f5b73ecb.js} +242 -272
  20. package/dist/useTransitionCarousel.cjs +1 -1
  21. package/dist/useTransitionCarousel.js +20 -22
  22. package/package.json +1 -1
  23. package/dist/modules/index.d.ts +0 -3
  24. package/dist/useFullscreenModule-55ea7b9d.js +0 -38
  25. package/dist/useFullscreenModule-be189d5b.cjs +0 -1
  26. package/dist/useThumbsModule-0c05dcf5.cjs +0 -27
  27. /package/dist/{index.d.ts → declarations/index.d.ts} +0 -0
  28. /package/dist/{modules → declarations/modules}/useThumbsModule.d.ts +0 -0
  29. /package/dist/{useSpringCarousel.d.ts → declarations/useSpringCarousel.d.ts} +0 -0
  30. /package/dist/{useTransitionCarousel.d.ts → declarations/useTransitionCarousel.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ export * from './useThumbsModule';
@@ -0,0 +1,5 @@
1
+ import { EventHandler, Events } from '../types/useEventsModule.types';
2
+ export declare function useEventsModule<T extends 'use-spring' | 'use-transition'>(): {
3
+ useListenToCustomEvent: (eventHandler: EventHandler<T>) => void;
4
+ emitEvent: (event: Events<T>) => void;
5
+ };
@@ -1,12 +1,6 @@
1
- import { MutableRefObject } from 'react';
2
- type FullscreenModule = {
3
- mainCarouselWrapperRef: MutableRefObject<HTMLDivElement | null>;
4
- handleResize?(): void;
5
- onFullScreenChange(isFullscreen: boolean): void;
6
- };
1
+ import { FullscreenModule } from '../types/useFullscreenModule.types';
7
2
  export declare function useFullscreenModule({ mainCarouselWrapperRef, onFullScreenChange, handleResize, }: FullscreenModule): {
8
3
  enterFullscreen: (elementRef?: HTMLElement) => void;
9
4
  exitFullscreen: () => void;
10
5
  getIsFullscreen: () => boolean;
11
6
  };
12
- export {};
@@ -1,6 +1,6 @@
1
1
  import { ReactNode } from 'react';
2
- import { UseListenToCustomEvent } from '../modules/useEventsModule';
3
2
  import { UseSpringReturnType } from './useSpringCarousel.types';
3
+ import { UseListenToCustomEvent } from './useEventsModule.types';
4
4
  export type SlideActionType = 'prev' | 'next' | 'initial';
5
5
  export type SlideMode = 'drag' | 'click' | 'initial';
6
6
  export type TransitionSlideMode = 'swipe' | 'click' | 'initial';
@@ -1,4 +1,3 @@
1
1
  export * from './common';
2
2
  export * from './useSpringCarousel.types';
3
3
  export * from './useTransitionCarousel.types';
4
- export * from '../modules';
@@ -1,6 +1,6 @@
1
1
  import { FullGestureState } from '@use-gesture/react';
2
- import { SlideActionType, SlideMode, TransitionSlideMode } from '../types/common';
3
- type OnSlideStartChange<T> = {
2
+ import { SlideActionType, SlideMode, TransitionSlideMode } from './common';
3
+ export type OnSlideStartChange<T> = {
4
4
  eventName: 'onSlideStartChange';
5
5
  slideActionType: SlideActionType;
6
6
  slideMode: T extends 'use-spring' ? SlideMode : TransitionSlideMode;
@@ -11,7 +11,7 @@ type OnSlideStartChange<T> = {
11
11
  endReached: boolean;
12
12
  };
13
13
  };
14
- type OnSlideChange<T> = {
14
+ export type OnSlideChange<T> = {
15
15
  eventName: 'onSlideChange';
16
16
  slideActionType: SlideActionType;
17
17
  slideMode: T extends 'use-spring' ? SlideMode : TransitionSlideMode;
@@ -22,30 +22,25 @@ type OnSlideChange<T> = {
22
22
  endReached: boolean;
23
23
  };
24
24
  };
25
- type OnFullscreenChange = {
25
+ export type OnFullscreenChange = {
26
26
  eventName: 'onFullscreenChange';
27
27
  isFullscreen: boolean;
28
28
  };
29
- type OnDrag = Omit<FullGestureState<'drag'>, 'event'> & {
29
+ export type OnDrag = Omit<FullGestureState<'drag'>, 'event'> & {
30
30
  eventName: 'onDrag';
31
31
  slideActionType: SlideActionType;
32
32
  };
33
- type OnLeftSwipe = {
33
+ export type OnLeftSwipe = {
34
34
  eventName: 'onLeftSwipe';
35
35
  };
36
- type OnRightSwipe = {
36
+ export type OnRightSwipe = {
37
37
  eventName: 'onRightSwipe';
38
38
  };
39
- type SpringCarouselEvents<T> = OnSlideStartChange<T> | OnSlideChange<T> | OnDrag | OnFullscreenChange;
40
- type TransitionCarouselEvents<T> = OnSlideStartChange<T> | OnSlideChange<T> | OnFullscreenChange | OnLeftSwipe | OnRightSwipe;
41
- type Events<T> = T extends 'use-spring' ? SpringCarouselEvents<'use-spring'> : TransitionCarouselEvents<'use-transition'>;
42
- type EventHandler<T> = (props: Events<T>) => void;
39
+ export type SpringCarouselEvents<T> = OnSlideStartChange<T> | OnSlideChange<T> | OnDrag | OnFullscreenChange;
40
+ export type TransitionCarouselEvents<T> = OnSlideStartChange<T> | OnSlideChange<T> | OnFullscreenChange | OnLeftSwipe | OnRightSwipe;
41
+ export type Events<T> = T extends 'use-spring' ? SpringCarouselEvents<'use-spring'> : TransitionCarouselEvents<'use-transition'>;
42
+ export type EventHandler<T> = (props: Events<T>) => void;
43
43
  export type UseListenToCustomEvent<T> = {
44
44
  useListenToCustomEvent: (eventHandler: EventHandler<T>) => void;
45
45
  emitEvent: (event: Events<T>) => void;
46
46
  };
47
- export declare function useEventsModule<T extends 'use-spring' | 'use-transition'>(): {
48
- useListenToCustomEvent: (eventHandler: EventHandler<T>) => void;
49
- emitEvent: (event: Events<T>) => void;
50
- };
51
- export {};
@@ -0,0 +1,6 @@
1
+ import { MutableRefObject } from 'react';
2
+ export type FullscreenModule = {
3
+ mainCarouselWrapperRef: MutableRefObject<HTMLDivElement | null>;
4
+ handleResize?(): void;
5
+ onFullScreenChange(isFullscreen: boolean): void;
6
+ };
@@ -1,6 +1,6 @@
1
1
  import { ReactNode } from 'react';
2
- import { UseListenToCustomEvent } from '../modules/useEventsModule';
3
2
  import { ItemWithThumb, ItemWithNoThumb, PrepareThumbsData } from '../types';
3
+ import { UseListenToCustomEvent } from './useEventsModule.types';
4
4
  export type UseSpringReturnType = {
5
5
  carouselFragment: ReactNode;
6
6
  thumbsFragment: ReactNode;
@@ -1,7 +1,7 @@
1
1
  import { SpringConfig, TransitionFrom, TransitionTo } from '@react-spring/web';
2
2
  import { ItemWithNoThumb, ItemWithThumb, SpringCarouselWithNoThumbs, SpringCarouselWithThumbs } from '../types';
3
3
  import { ReactNode } from 'react';
4
- import { UseListenToCustomEvent } from '../modules';
4
+ import { UseListenToCustomEvent } from './useEventsModule.types';
5
5
  type Item = ItemWithThumb<'use-transition'> | ItemWithNoThumb<'use-transition'>;
6
6
  export type SpringAnimationProps = {
7
7
  initial: TransitionFrom<Item>;
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./useSpringCarousel.cjs"),u=require("./useTransitionCarousel.cjs"),s=require("./useThumbsModule-0c05dcf5.cjs"),r=require("./useFullscreenModule-be189d5b.cjs");require("@react-spring/web");require("react");require("@use-gesture/react");require("resize-observer-polyfill");require("screenfull");exports.useSpringCarousel=e.useSpringCarousel;exports.useSpringCarouselContext=e.useSpringCarouselContext;exports.useTransitionCarousel=u.useTransitionCarousel;exports.useTransitionCarouselContext=u.useTransitionCarouselContext;exports.useEventsModule=s.useEventsModule;exports.useThumbsModule=s.useThumbsModule;exports.useFullscreenModule=r.useFullscreenModule;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./useSpringCarousel.cjs"),r=require("./useTransitionCarousel.cjs");require("./useThumbsModule-57ac2128.cjs");require("react");require("@react-spring/web");require("./useEventsModule-0feadbf7.cjs");require("@use-gesture/react");require("resize-observer-polyfill");require("screenfull");exports.useSpringCarousel=e.useSpringCarousel;exports.useSpringCarouselContext=e.useSpringCarouselContext;exports.useTransitionCarousel=r.useTransitionCarousel;exports.useTransitionCarouselContext=r.useTransitionCarouselContext;
package/dist/index.js CHANGED
@@ -1,18 +1,15 @@
1
- import { useSpringCarousel as p, useSpringCarouselContext as a } from "./useSpringCarousel.js";
2
- import { useTransitionCarousel as n, useTransitionCarouselContext as l } from "./useTransitionCarousel.js";
3
- import { u as C, a as f } from "./useThumbsModule-db93025f.js";
4
- import { u as M } from "./useFullscreenModule-55ea7b9d.js";
5
- import "@react-spring/web";
1
+ import { useSpringCarousel as u, useSpringCarouselContext as a } from "./useSpringCarousel.js";
2
+ import { useTransitionCarousel as l, useTransitionCarouselContext as x } from "./useTransitionCarousel.js";
3
+ import "./useThumbsModule-f5b73ecb.js";
6
4
  import "react";
5
+ import "@react-spring/web";
6
+ import "./useEventsModule-538b90c9.js";
7
7
  import "@use-gesture/react";
8
8
  import "resize-observer-polyfill";
9
9
  import "screenfull";
10
10
  export {
11
- C as useEventsModule,
12
- M as useFullscreenModule,
13
- p as useSpringCarousel,
11
+ u as useSpringCarousel,
14
12
  a as useSpringCarouselContext,
15
- f as useThumbsModule,
16
- n as useTransitionCarousel,
17
- l as useTransitionCarouselContext
13
+ l as useTransitionCarousel,
14
+ x as useTransitionCarouselContext
18
15
  };
package/dist/index2.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./useThumbsModule-0c05dcf5.cjs"),u=require("./useFullscreenModule-be189d5b.cjs");require("react");require("@react-spring/web");require("screenfull");exports.useEventsModule=e.useEventsModule;exports.useThumbsModule=e.useThumbsModule;exports.useFullscreenModule=u.useFullscreenModule;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./useThumbsModule-57ac2128.cjs");require("react");require("@react-spring/web");exports.useThumbsModule=e.useThumbsModule;
package/dist/index2.js CHANGED
@@ -1,10 +1,6 @@
1
- import { u as m, a as t } from "./useThumbsModule-db93025f.js";
2
- import { u as p } from "./useFullscreenModule-55ea7b9d.js";
1
+ import { u as e } from "./useThumbsModule-f5b73ecb.js";
3
2
  import "react";
4
3
  import "@react-spring/web";
5
- import "screenfull";
6
4
  export {
7
- m as useEventsModule,
8
- p as useFullscreenModule,
9
- t as useThumbsModule
5
+ e as useThumbsModule
10
6
  };
@@ -0,0 +1 @@
1
+ "use strict";const s=require("react"),u="RSC::Event";function o(){const e=s.useRef(null);function c(t){s.useEffect(()=>{e.current||(e.current=document.createElement("div"));function n(r){t(r.detail)}if(e.current)return e.current.addEventListener(u,n,!1),()=>{var r;(r=e.current)==null||r.removeEventListener(u,n,!1)}},[t])}function i(t){if(e.current){const n=new CustomEvent(u,{detail:t});e.current.dispatchEvent(n)}}return{useListenToCustomEvent:c,emitEvent:i}}exports.useEventsModule=o;
@@ -0,0 +1,33 @@
1
+ import { useRef as i, useEffect as o } from "react";
2
+ const u = "RSC::Event";
3
+ function v() {
4
+ const e = i(null);
5
+ function c(t) {
6
+ o(() => {
7
+ e.current || (e.current = document.createElement("div"));
8
+ function n(r) {
9
+ t(r.detail);
10
+ }
11
+ if (e.current)
12
+ return e.current.addEventListener(u, n, !1), () => {
13
+ var r;
14
+ (r = e.current) == null || r.removeEventListener(u, n, !1);
15
+ };
16
+ }, [t]);
17
+ }
18
+ function s(t) {
19
+ if (e.current) {
20
+ const n = new CustomEvent(u, {
21
+ detail: t
22
+ });
23
+ e.current.dispatchEvent(n);
24
+ }
25
+ }
26
+ return {
27
+ useListenToCustomEvent: c,
28
+ emitEvent: s
29
+ };
30
+ }
31
+ export {
32
+ v as u
33
+ };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const C=require("./useThumbsModule-0c05dcf5.cjs"),$=require("@react-spring/web"),u=require("react"),qe=require("@use-gesture/react"),Ve=require("./useFullscreenModule-be189d5b.cjs"),De=require("resize-observer-polyfill");require("screenfull");function ze({items:n,init:p=!0,withThumbs:oe,thumbsSlideAxis:me="x",itemsPerSlide:se=1,slideType:E="fixed",gutter:F=0,withLoop:s=!1,startEndGutter:w=0,carouselSlideAxis:i="x",disableGestures:le=!1,draggingSlideTreshold:Q,slideWhenThresholdIsReached:fe=!1,freeScroll:c,enableFreeScrollDrag:he,initialStartingPosition:U,prepareThumbsData:pe,initialActiveItem:T=0,animateWhenActiveItemChange:xe=!0,getControllerRef:Z}){const b=se>n.length?n.length:se,B=u.useRef(!1),O=u.useRef(Q??0),R=u.useRef("initial"),_=u.useRef("initial"),G=u.useRef("initial"),m=u.useRef(T),f=u.useRef(T===0),l=u.useRef(E==="fixed"&&T===n.length-1),a=u.useRef(null),h=u.useRef(null),L=u.useRef(!0),A=u.useRef(0),S=u.useRef(0),d=u.useRef(0),ye=u.useRef(s),Ie=u.useRef(E),Te=u.useRef(c),N=u.useRef(!1),H=u.useCallback(()=>s?[...n.map(e=>({...e,id:`prev-repeated-item-${e.id}`})),...n,...n.map(e=>({...e,id:`next-repeated-item-${e.id}`}))]:[...n],[n,s])(),[k,x]=$.useSpring(()=>({val:0,pause:!p,onChange:({value:e})=>{c&&a.current?(i==="x"?a.current.scrollLeft=Math.abs(e.val):a.current.scrollTop=Math.abs(e.val),K()):h.current&&(i==="x"?h.current.style.transform=`translate3d(${e.val}px, 0px,0px)`:h.current.style.transform=`translate3d(0px,${e.val}px,0px)`)}}),[c]),{emitEvent:X,useListenToCustomEvent:Y}=C.useEventsModule(),{thumbsFragment:be,handleScroll:Re}=C.useThumbsModule({withThumbs:!!oe,thumbsSlideAxis:me,prepareThumbsData:pe,items:n,renderThumbFnProps:{getIsActiveItem:ue,getIsPrevItem:ce,useListenToCustomEvent:Y,getIsNextItem:ne}}),{enterFullscreen:ae,exitFullscreen:de,getIsFullscreen:ge}=Ve.useFullscreenModule({mainCarouselWrapperRef:a,handleResize:()=>J(),onFullScreenChange:e=>{X({eventName:"onFullscreenChange",isFullscreen:e})}});function Me(e){return E==="fixed"&&!c?{marginRight:`${e?0:F}px`,flex:`1 0 calc(100% / ${b} - ${F*(b-1)/b}px)`}:{marginRight:`${e?0:F}px`}}function g(){var r;const e=(r=a.current)==null?void 0:r.querySelector(".use-spring-carousel-item");if(!e)throw Error("No carousel items available!");return e.getBoundingClientRect()[i==="x"?"width":"height"]+F}function j({from:e,to:r,nextActiveItem:t,immediate:o=!1,slideMode:I}){_.current=I,typeof t=="number"&&(c||(m.current=t),X({eventName:"onSlideStartChange",slideActionType:R.current,slideMode:_.current,nextItem:{startReached:f.current,endReached:l.current,index:c?-1:m.current,id:c?"":n[m.current].id}})),d.current=r,x.start({immediate:o,from:{val:e},to:{val:r},config:{...$.config.default,velocity:k.val.velocity},onRest(V){!o&&V.finished&&X({eventName:"onSlideChange",slideActionType:R.current,slideMode:_.current,currentItem:{startReached:f.current,endReached:l.current,index:c?-1:m.current,id:c?"":n[m.current].id}})}}),oe&&!o&&Re(m.current)}function v(){var e;return s?g()*n.length:Math.round(Number((e=h.current)==null?void 0:e[i==="x"?"scrollWidth":"scrollHeight"])-h.current.getBoundingClientRect()[i==="x"?"width":"height"]-w*2)}function Ce(){const e=`calc(100% - ${w*2}px)`;return{width:i==="x"?e:"100%",height:i==="y"?e:"100%"}}function ee(){var r;const e=(r=h.current)==null?void 0:r.querySelector(".use-spring-carousel-item");if(!e)throw Error("No carousel items available!");return e.getBoundingClientRect()[i==="x"?"width":"height"]+F}function te(e){const r=i==="x"?"left":"top",t=h.current;t&&(s?(t.style.top="0px",t.style.left="0px",t.style[r]=`-${e-w}px`,f.current=!1,l.current=!1):(t.style.left="0px",t.style.top="0px"))}function J(e=!1){if(h.current&&e&&(h.current.style.transform="translate3d(0px, 0px,0px)",h.current.style.left="0",h.current.style.top="0"),E==="fixed"&&te(U==="center"?ee()*n.length-g()*Math.round((b-1)/2):U==="end"?ee()*n.length-g()*Math.round(b-1):ee()*n.length),E==="fluid"){if(l.current&&v()!==Math.abs(d.current)&&!s){const r=-v();d.current=r,x.start({immediate:!0,val:d.current});return}if(Math.abs(d.current)>0&&v()!==Math.abs(d.current)&&!s&&!c&&G.current==="backward"){const r=A.current-v(),t=d.current+r;return x.start({immediate:!0,val:t}),()=>{d.current=t}}return}if(!c&&E==="fixed"){const r=-(g()*m.current);if(Math.abs(r)>v()&&!s){const t=-v();l.current=!0,d.current=t,x.start({immediate:!0,val:d.current})}else d.current=r,x.start({immediate:!0,val:r});setTimeout(()=>{B.current=!1},0)}}function M(){return c&&a.current?a.current[i==="x"?"scrollLeft":"scrollTop"]:k.val.get()}function z(e,r){if(c&&e==="next"){const t=d.current+g();return t>v()?v():t}if(c&&e==="prev"){const t=d.current-g();return t<0?0:t}return e==="next"?typeof r=="number"?-(r*g()):d.current-g():typeof r=="number"?-(r*g()):d.current+g()}function P({type:e,index:r,immediate:t}){if(!p||N.current||f.current&&!s)return;l.current&&(G.current="backward"),R.current="prev",l.current=!1;const o=typeof r=="number"?r:m.current-1;if(c&&K(),!s){const I=c?z("prev",r)-g()/3<0:z("prev",r)+g()/3>0;if(f.current)return;if(I){f.current=!0,l.current=!1,j({slideMode:e,from:M(),to:0,nextActiveItem:0,immediate:t});return}}if(s&&(f.current||o<0)){f.current=!1,l.current=!0,j({slideMode:e,from:M()-g()*n.length,to:-(g()*n.length)+g(),nextActiveItem:n.length-1,immediate:t});return}o===0&&(f.current=!0),(o===n.length-1||o===-1)&&(l.current=!0),j({slideMode:e,from:M(),to:z("prev",r),nextActiveItem:o,immediate:t})}function W({type:e,index:r,immediate:t}){if(!p||N.current||l.current&&!s)return;f.current&&(G.current="forward"),R.current="next",f.current=!1;const o=r||m.current+1;if(c&&K(),!s){const I=Math.abs(z("next",r))>v()-g()/3;if(l.current)return;if(I){f.current=!1,l.current=!0,j({slideMode:e,from:M(),to:c?v():-v(),nextActiveItem:o,immediate:t});return}}if(s&&(l.current||o>n.length-1)){l.current=!1,f.current=!0,j({slideMode:e,from:M()+g()*n.length,to:0,nextActiveItem:0,immediate:t});return}o===0&&(f.current=!0),o===n.length-1&&(l.current=!0),j({slideMode:e,from:M(),to:z("next",r),nextActiveItem:o,immediate:t})}function we(){Q?O.current=Q:O.current=Math.floor(g()/2/2)}function ve(){!L.current&&h.current&&(A.current=v(),ye.current=s,Ie.current=E,Te.current=c,S.current=window.innerWidth,d.current=0,re({id:0,immediate:!0,shouldReset:!0}),we(),J())}const Ee=p&&!le&&!c||!!c&&!!he,ke=qe.useDrag(e=>{const r=e.dragging,t=e.offset[i==="x"?0:1],o=e.movement[i==="x"?0:1],I=e.direction[i==="x"?0:1],V=o>O.current,D=o<-O.current,We=v();if(r){if(I>0?R.current="prev":R.current="next",X({...e,eventName:"onDrag",slideActionType:R.current}),c){if(t>0){x.start({from:{val:M()},to:{val:0},config:{velocity:e.velocity,friction:50,tension:1e3}}),e.cancel();return}x.start({from:{val:M()},to:{val:-t},config:{velocity:e.velocity,friction:50,tension:1e3}});return}x.start({val:t,config:{velocity:e.velocity,friction:50,tension:1e3}}),fe&&D?(W({type:"drag"}),e.cancel()):fe&&V&&(P({type:"drag"}),e.cancel()),We-Math.abs(t)<-(g()*2)&&e.cancel();return}if(e.last&&c&&t>0){x.start({from:{val:M()},to:{val:0},config:{velocity:e.velocity,friction:50,tension:1e3}});return}e.last&&!e.canceled&&c&&(R.current==="prev"&&P({type:"drag"}),R.current==="next"&&W({type:"drag"})),e.last&&!e.canceled&&!c&&(D?!s&&l.current?x.start({val:-v(),config:{...$.config.default,velocity:e.velocity}}):W({type:"drag"}):V?!s&&f.current?x.start({val:0,config:{...$.config.default,velocity:e.velocity}}):P({type:"drag"}):x.start({val:d.current,config:{...$.config.default,velocity:e.velocity}})),e.last&&e.canceled&&x.start({val:d.current,config:{...$.config.default,velocity:e.velocity}})},{enabled:Ee,axis:i,from:()=>c&&a.current?[-a.current.scrollLeft,-a.current.scrollTop]:i==="x"?[k.val.get(),k.val.get()]:[k.val.get(),k.val.get()]});function $e(){return c?i==="x"?{overflowX:"auto"}:{overflowY:"auto"}:{}}function K(){a.current&&(d.current=a.current[i==="x"?"scrollLeft":"scrollTop"],a.current[i==="x"?"scrollLeft":"scrollTop"]===0&&(f.current=!0,l.current=!1),a.current[i==="x"?"scrollLeft":"scrollTop"]>0&&a.current[i==="x"?"scrollLeft":"scrollTop"]<v()&&(f.current=!1,l.current=!1),a.current[i==="x"?"scrollLeft":"scrollTop"]===v()&&(f.current=!1,l.current=!0))}function Fe(){return c?{onWheel(){k.val.stop(),K()}}:{}}function q(e,r){let t=0;if(typeof e=="string"?t=n.findIndex(o=>o.id===e):t=e,t<0||t>=n.length){if(r)throw new Error(r);console.error(`The item doesn't exist; check that the id provided - ${e} - is correct.`),t=-1}return t}function re({id:e,immediate:r,shouldReset:t,type:o}){if(!p||N.current)return;f.current=!1,l.current=!1;const I=q(e,"The item you want to slide to doesn't exist; check the provided id.");if(I===m.current&&!t)return;const V=q(n[m.current].id),D=q(n[I].id);D>V?W({type:o||t?"initial":"click",index:D,immediate:r}):P({type:o||t?"initial":"click",index:D,immediate:r})}function ne(e){const r=q(e,"The item doesn't exist; check the provided id."),t=m.current;return s&&t===n.length-1?r===0:r===t+1}function ce(e){const r=q(e,"The item doesn't exist; check the provided id."),t=m.current;return s&&t===0?r===n.length-1:r===t-1}function ue(e){return q(e,"The item you want to check doesn't exist; check the provided id.")===m.current}function Ne(){return le?"unset":i==="x"?"pan-y":"pan-x"}const y=c?{useListenToCustomEvent:Y,enterFullscreen:ae,exitFullscreen:de,getIsFullscreen:ge,slideToPrevItem:(e=!0)=>{P({type:"click",immediate:!e})},slideToNextItem:(e=!0)=>{W({type:"click",immediate:!e})}}:{useListenToCustomEvent:Y,enterFullscreen:ae,exitFullscreen:de,getIsFullscreen:ge,slideToPrevItem:(e=!0)=>{P({type:"click",immediate:!e})},slideToNextItem:(e=!0)=>{W({type:"click",immediate:!e})},slideToItem:(e,r=!0)=>{re({id:e,immediate:!r})},getIsNextItem:ne,getIsPrevItem:ce,getIsActiveItem:ue};$.useIsomorphicLayoutEffect(()=>{h.current&&p&&(B.current=!0,ve())},[p]),u.useEffect(()=>{m.current!==T&&re({id:T,immediate:!xe})},[T]),u.useEffect(()=>{if(p){if(T>n.length-1)throw new Error(`initialActiveItem (${T}) is greater than the total quantity available items (${n.length}).`);b>n.length&&console.warn(`itemsPerSlide (${b}) is greater than the total quantity available items (${n.length}). Fallback to ${n.length})`)}},[T,n.length,b,p]),u.useEffect(()=>{S.current=window.innerWidth},[]),u.useEffect(()=>{p&&(B.current=!0,ve())},[U,b,w,F,p,s]),u.useEffect(()=>{if(!p)return;function e(){document.hidden?N.current=!0:N.current=!1}return document.addEventListener("visibilitychange",e),()=>{document.removeEventListener("visibilitychange",e)}},[p]),u.useEffect(()=>{if(a.current){let e;const r=new De(()=>{if(L.current){L.current=!1;return}if(!N.current&&!B.current){S.current=window.innerWidth;const t=J();window.clearTimeout(e),e=setTimeout(()=>{A.current=v(),typeof t=="function"&&t()},100)}});return r.observe(a.current),()=>{r.disconnect()}}},[J,v]),u.useEffect(()=>{Z&&Z({slideToNextItem:y.slideToNextItem,slideToPrevItem:y.slideToPrevItem,slideToItem:y==null?void 0:y.slideToItem})},[Z,y.slideToItem,y.slideToNextItem,y.slideToPrevItem]);const je=C.jsxRuntimeExports.jsx(ie.Provider,{value:y,children:be}),Pe=C.jsxRuntimeExports.jsx(ie.Provider,{value:y,children:C.jsxRuntimeExports.jsx("div",{className:"use-spring-carousel-main-wrapper",ref:a,...Fe(),style:{display:"flex",position:"relative",width:"100%",height:"100%",...$e()},children:C.jsxRuntimeExports.jsxs("div",{className:"use-spring-carousel-track-wrapper",ref:h,...ke(),style:{position:"relative",display:"flex",flexDirection:i==="x"?"row":"column",touchAction:Ne(),...Ce()},children:[(c||!s)&&w?C.jsxRuntimeExports.jsx("div",{style:{flexShrink:0,width:w}}):null,H.map((e,r)=>C.jsxRuntimeExports.jsx("div",{className:"use-spring-carousel-item","data-testid":"use-spring-carousel-item-wrapper",style:{display:"flex",position:"relative",flex:"1",...Me(r===H.findIndex(t=>t.id===H[H.length-1].id))},children:typeof e.renderItem=="function"?e.renderItem({getIsActiveItem:ue,getIsNextItem:ne,getIsPrevItem:ce,useListenToCustomEvent:Y}):e.renderItem},`${e.id}-${r}`)),(c||!s)&&w?C.jsxRuntimeExports.jsx("div",{style:{flexShrink:0,width:w}}):null]})})});return{...y,carouselFragment:Pe,thumbsFragment:je}}const ie=u.createContext(void 0);function Be(){const n=u.useContext(ie);if(!n)throw new Error("useSpringCarouselContext must be used within the carousel.");return n}exports.useSpringCarousel=ze;exports.useSpringCarouselContext=Be;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const F=require("./useThumbsModule-57ac2128.cjs"),j=require("@react-spring/web"),c=require("react"),Ve=require("./useEventsModule-0feadbf7.cjs"),De=require("@use-gesture/react"),Be=require("resize-observer-polyfill"),k=require("screenfull");function Oe({mainCarouselWrapperRef:n,onFullScreenChange:m,handleResize:$}){const X=c.useRef(!1);c.useEffect(()=>{function h(){document.fullscreenElement&&(H(!0),m(!0),$&&$()),document.fullscreenElement||(H(!1),m(!1),$&&$())}if(k.isEnabled)return k.on("change",h),()=>{k.isEnabled&&k.off("change",h)}},[]);function H(h){X.current=h}function b(){return X.current}function w(h){k.isEnabled&&k.request(h||n.current)}function i(){k.isEnabled&&k.exit()}return{enterFullscreen:w,exitFullscreen:i,getIsFullscreen:b}}function He({items:n,init:m=!0,withThumbs:$,thumbsSlideAxis:X="x",itemsPerSlide:H=1,slideType:b="fixed",gutter:w=0,withLoop:i=!1,startEndGutter:h=0,carouselSlideAxis:s="x",disableGestures:ae=!1,draggingSlideTreshold:G,slideWhenThresholdIsReached:de=!1,freeScroll:u,enableFreeScrollDrag:xe,initialStartingPosition:L,prepareThumbsData:pe,initialActiveItem:R=0,animateWhenActiveItemChange:ye=!0,getControllerRef:A}){const E=H>n.length?n.length:H,Y=c.useRef(!1),J=c.useRef(G??0),M=c.useRef("initial"),S=c.useRef("initial"),ee=c.useRef("initial"),x=c.useRef(R),f=c.useRef(R===0),l=c.useRef(b==="fixed"&&R===n.length-1),a=c.useRef(null),p=c.useRef(null),te=c.useRef(!0),re=c.useRef(0),ne=c.useRef(0),d=c.useRef(0),Ie=c.useRef(i),Te=c.useRef(b),be=c.useRef(u),P=c.useRef(!1),K=c.useCallback(()=>i?[...n.map(e=>({...e,id:`prev-repeated-item-${e.id}`})),...n,...n.map(e=>({...e,id:`next-repeated-item-${e.id}`}))]:[...n],[n,i])(),[N,y]=j.useSpring(()=>({val:0,pause:!m,onChange:({value:e})=>{u&&a.current?(s==="x"?a.current.scrollLeft=Math.abs(e.val):a.current.scrollTop=Math.abs(e.val),_()):p.current&&(s==="x"?p.current.style.transform=`translate3d(${e.val}px, 0px,0px)`:p.current.style.transform=`translate3d(0px,${e.val}px,0px)`)}}),[u]),{emitEvent:Q,useListenToCustomEvent:U}=Ve.useEventsModule(),{thumbsFragment:Re,handleScroll:Ee}=F.useThumbsModule({withThumbs:!!$,thumbsSlideAxis:X,prepareThumbsData:pe,items:n,renderThumbFnProps:{getIsActiveItem:le,getIsPrevItem:oe,useListenToCustomEvent:U,getIsNextItem:se}}),{enterFullscreen:ge,exitFullscreen:ve,getIsFullscreen:me}=Oe({mainCarouselWrapperRef:a,handleResize:()=>Z(),onFullScreenChange:e=>{Q({eventName:"onFullscreenChange",isFullscreen:e})}});function Me(e){return b==="fixed"&&!u?{marginRight:`${e?0:w}px`,flex:`1 0 calc(100% / ${E} - ${w*(E-1)/E}px)`}:{marginRight:`${e?0:w}px`}}function g(){var r;const e=(r=a.current)==null?void 0:r.querySelector(".use-spring-carousel-item");if(!e)throw Error("No carousel items available!");return e.getBoundingClientRect()[s==="x"?"width":"height"]+w}function W({from:e,to:r,nextActiveItem:t,immediate:o=!1,slideMode:T}){S.current=T,typeof t=="number"&&(u||(x.current=t),Q({eventName:"onSlideStartChange",slideActionType:M.current,slideMode:S.current,nextItem:{startReached:f.current,endReached:l.current,index:u?-1:x.current,id:u?"":n[x.current].id}})),d.current=r,y.start({immediate:o,from:{val:e},to:{val:r},config:{...j.config.default,velocity:N.val.velocity},onRest(B){!o&&B.finished&&Q({eventName:"onSlideChange",slideActionType:M.current,slideMode:S.current,currentItem:{startReached:f.current,endReached:l.current,index:u?-1:x.current,id:u?"":n[x.current].id}})}}),$&&!o&&Ee(x.current)}function v(){var e;return i?g()*n.length:Math.round(Number((e=p.current)==null?void 0:e[s==="x"?"scrollWidth":"scrollHeight"])-p.current.getBoundingClientRect()[s==="x"?"width":"height"]-h*2)}function Ce(){const e=`calc(100% - ${h*2}px)`;return{width:s==="x"?e:"100%",height:s==="y"?e:"100%"}}function ue(){var r;const e=(r=p.current)==null?void 0:r.querySelector(".use-spring-carousel-item");if(!e)throw Error("No carousel items available!");return e.getBoundingClientRect()[s==="x"?"width":"height"]+w}function ce(e){const r=s==="x"?"left":"top",t=p.current;t&&(i?(t.style.top="0px",t.style.left="0px",t.style[r]=`-${e-h}px`,f.current=!1,l.current=!1):(t.style.left="0px",t.style.top="0px"))}function Z(e=!1){if(p.current&&e&&(p.current.style.transform="translate3d(0px, 0px,0px)",p.current.style.left="0",p.current.style.top="0"),b==="fixed"&&ce(L==="center"?ue()*n.length-g()*Math.round((E-1)/2):L==="end"?ue()*n.length-g()*Math.round(E-1):ue()*n.length),b==="fluid"){if(l.current&&v()!==Math.abs(d.current)&&!i){const r=-v();d.current=r,y.start({immediate:!0,val:d.current});return}if(Math.abs(d.current)>0&&v()!==Math.abs(d.current)&&!i&&!u&&ee.current==="backward"){const r=re.current-v(),t=d.current+r;return y.start({immediate:!0,val:t}),()=>{d.current=t}}return}if(!u&&b==="fixed"){const r=-(g()*x.current);if(Math.abs(r)>v()&&!i){const t=-v();l.current=!0,d.current=t,y.start({immediate:!0,val:d.current})}else d.current=r,y.start({immediate:!0,val:r});setTimeout(()=>{Y.current=!1},0)}}function C(){return u&&a.current?a.current[s==="x"?"scrollLeft":"scrollTop"]:N.val.get()}function z(e,r){if(u&&e==="next"){const t=d.current+g();return t>v()?v():t}if(u&&e==="prev"){const t=d.current-g();return t<0?0:t}return e==="next"?typeof r=="number"?-(r*g()):d.current-g():typeof r=="number"?-(r*g()):d.current+g()}function q({type:e,index:r,immediate:t}){if(!m||P.current||f.current&&!i)return;l.current&&(ee.current="backward"),M.current="prev",l.current=!1;const o=typeof r=="number"?r:x.current-1;if(u&&_(),!i){const T=u?z("prev",r)-g()/3<0:z("prev",r)+g()/3>0;if(f.current)return;if(T){f.current=!0,l.current=!1,W({slideMode:e,from:C(),to:0,nextActiveItem:0,immediate:t});return}}if(i&&(f.current||o<0)){f.current=!1,l.current=!0,W({slideMode:e,from:C()-g()*n.length,to:-(g()*n.length)+g(),nextActiveItem:n.length-1,immediate:t});return}o===0&&(f.current=!0),(o===n.length-1||o===-1)&&(l.current=!0),W({slideMode:e,from:C(),to:z("prev",r),nextActiveItem:o,immediate:t})}function V({type:e,index:r,immediate:t}){if(!m||P.current||l.current&&!i)return;f.current&&(ee.current="forward"),M.current="next",f.current=!1;const o=r||x.current+1;if(u&&_(),!i){const T=Math.abs(z("next",r))>v()-g()/3;if(l.current)return;if(T){f.current=!1,l.current=!0,W({slideMode:e,from:C(),to:u?v():-v(),nextActiveItem:o,immediate:t});return}}if(i&&(l.current||o>n.length-1)){l.current=!1,f.current=!0,W({slideMode:e,from:C()+g()*n.length,to:0,nextActiveItem:0,immediate:t});return}o===0&&(f.current=!0),o===n.length-1&&(l.current=!0),W({slideMode:e,from:C(),to:z("next",r),nextActiveItem:o,immediate:t})}function we(){G?J.current=G:J.current=Math.floor(g()/2/2)}function he(){!te.current&&p.current&&(re.current=v(),Ie.current=i,Te.current=b,be.current=u,ne.current=window.innerWidth,d.current=0,ie({id:0,immediate:!0,shouldReset:!0}),we(),Z())}const Fe=m&&!ae&&!u||!!u&&!!xe,ke=De.useDrag(e=>{const r=e.dragging,t=e.offset[s==="x"?0:1],o=e.movement[s==="x"?0:1],T=e.direction[s==="x"?0:1],B=o>J.current,O=o<-J.current,qe=v();if(r){if(T>0?M.current="prev":M.current="next",Q({...e,eventName:"onDrag",slideActionType:M.current}),u){if(t>0){y.start({from:{val:C()},to:{val:0},config:{velocity:e.velocity,friction:50,tension:1e3}}),e.cancel();return}y.start({from:{val:C()},to:{val:-t},config:{velocity:e.velocity,friction:50,tension:1e3}});return}y.start({val:t,config:{velocity:e.velocity,friction:50,tension:1e3}}),de&&O?(V({type:"drag"}),e.cancel()):de&&B&&(q({type:"drag"}),e.cancel()),qe-Math.abs(t)<-(g()*2)&&e.cancel();return}if(e.last&&u&&t>0){y.start({from:{val:C()},to:{val:0},config:{velocity:e.velocity,friction:50,tension:1e3}});return}e.last&&!e.canceled&&u&&(M.current==="prev"&&q({type:"drag"}),M.current==="next"&&V({type:"drag"})),e.last&&!e.canceled&&!u&&(O?!i&&l.current?y.start({val:-v(),config:{...j.config.default,velocity:e.velocity}}):V({type:"drag"}):B?!i&&f.current?y.start({val:0,config:{...j.config.default,velocity:e.velocity}}):q({type:"drag"}):y.start({val:d.current,config:{...j.config.default,velocity:e.velocity}})),e.last&&e.canceled&&y.start({val:d.current,config:{...j.config.default,velocity:e.velocity}})},{enabled:Fe,axis:s,from:()=>u&&a.current?[-a.current.scrollLeft,-a.current.scrollTop]:s==="x"?[N.val.get(),N.val.get()]:[N.val.get(),N.val.get()]});function $e(){return u?s==="x"?{overflowX:"auto"}:{overflowY:"auto"}:{}}function _(){a.current&&(d.current=a.current[s==="x"?"scrollLeft":"scrollTop"],a.current[s==="x"?"scrollLeft":"scrollTop"]===0&&(f.current=!0,l.current=!1),a.current[s==="x"?"scrollLeft":"scrollTop"]>0&&a.current[s==="x"?"scrollLeft":"scrollTop"]<v()&&(f.current=!1,l.current=!1),a.current[s==="x"?"scrollLeft":"scrollTop"]===v()&&(f.current=!1,l.current=!0))}function Ne(){return u?{onWheel(){N.val.stop(),_()}}:{}}function D(e,r){let t=0;if(typeof e=="string"?t=n.findIndex(o=>o.id===e):t=e,t<0||t>=n.length){if(r)throw new Error(r);console.error(`The item doesn't exist; check that the id provided - ${e} - is correct.`),t=-1}return t}function ie({id:e,immediate:r,shouldReset:t,type:o}){if(!m||P.current)return;f.current=!1,l.current=!1;const T=D(e,"The item you want to slide to doesn't exist; check the provided id.");if(T===x.current&&!t)return;const B=D(n[x.current].id),O=D(n[T].id);O>B?V({type:o||t?"initial":"click",index:O,immediate:r}):q({type:o||t?"initial":"click",index:O,immediate:r})}function se(e){const r=D(e,"The item doesn't exist; check the provided id."),t=x.current;return i&&t===n.length-1?r===0:r===t+1}function oe(e){const r=D(e,"The item doesn't exist; check the provided id."),t=x.current;return i&&t===0?r===n.length-1:r===t-1}function le(e){return D(e,"The item you want to check doesn't exist; check the provided id.")===x.current}function je(){return ae?"unset":s==="x"?"pan-y":"pan-x"}const I=u?{useListenToCustomEvent:U,enterFullscreen:ge,exitFullscreen:ve,getIsFullscreen:me,slideToPrevItem:(e=!0)=>{q({type:"click",immediate:!e})},slideToNextItem:(e=!0)=>{V({type:"click",immediate:!e})}}:{useListenToCustomEvent:U,enterFullscreen:ge,exitFullscreen:ve,getIsFullscreen:me,slideToPrevItem:(e=!0)=>{q({type:"click",immediate:!e})},slideToNextItem:(e=!0)=>{V({type:"click",immediate:!e})},slideToItem:(e,r=!0)=>{ie({id:e,immediate:!r})},getIsNextItem:se,getIsPrevItem:oe,getIsActiveItem:le};j.useIsomorphicLayoutEffect(()=>{p.current&&m&&(Y.current=!0,he())},[m]),c.useEffect(()=>{x.current!==R&&ie({id:R,immediate:!ye})},[R]),c.useEffect(()=>{if(m){if(R>n.length-1)throw new Error(`initialActiveItem (${R}) is greater than the total quantity available items (${n.length}).`);E>n.length&&console.warn(`itemsPerSlide (${E}) is greater than the total quantity available items (${n.length}). Fallback to ${n.length})`)}},[R,n.length,E,m]),c.useEffect(()=>{ne.current=window.innerWidth},[]),c.useEffect(()=>{m&&(Y.current=!0,he())},[L,E,h,w,m,i]),c.useEffect(()=>{if(!m)return;function e(){document.hidden?P.current=!0:P.current=!1}return document.addEventListener("visibilitychange",e),()=>{document.removeEventListener("visibilitychange",e)}},[m]),c.useEffect(()=>{if(a.current){let e;const r=new Be(()=>{if(te.current){te.current=!1;return}if(!P.current&&!Y.current){ne.current=window.innerWidth;const t=Z();window.clearTimeout(e),e=setTimeout(()=>{re.current=v(),typeof t=="function"&&t()},100)}});return r.observe(a.current),()=>{r.disconnect()}}},[Z,v]),c.useEffect(()=>{A&&A({slideToNextItem:I.slideToNextItem,slideToPrevItem:I.slideToPrevItem,slideToItem:I==null?void 0:I.slideToItem})},[A,I.slideToItem,I.slideToNextItem,I.slideToPrevItem]);const Pe=F.jsxRuntimeExports.jsx(fe.Provider,{value:I,children:Re}),We=F.jsxRuntimeExports.jsx(fe.Provider,{value:I,children:F.jsxRuntimeExports.jsx("div",{className:"use-spring-carousel-main-wrapper",ref:a,...Ne(),style:{display:"flex",position:"relative",width:"100%",height:"100%",...$e()},children:F.jsxRuntimeExports.jsxs("div",{className:"use-spring-carousel-track-wrapper",ref:p,...ke(),style:{position:"relative",display:"flex",flexDirection:s==="x"?"row":"column",touchAction:je(),...Ce()},children:[(u||!i)&&h?F.jsxRuntimeExports.jsx("div",{style:{flexShrink:0,width:h}}):null,K.map((e,r)=>F.jsxRuntimeExports.jsx("div",{className:"use-spring-carousel-item","data-testid":"use-spring-carousel-item-wrapper",style:{display:"flex",position:"relative",flex:"1",...Me(r===K.findIndex(t=>t.id===K[K.length-1].id))},children:typeof e.renderItem=="function"?e.renderItem({getIsActiveItem:le,getIsNextItem:se,getIsPrevItem:oe,useListenToCustomEvent:U}):e.renderItem},`${e.id}-${r}`)),(u||!i)&&h?F.jsxRuntimeExports.jsx("div",{style:{flexShrink:0,width:h}}):null]})})});return{...I,carouselFragment:We,thumbsFragment:Pe}}const fe=c.createContext(void 0);function ze(){const n=c.useContext(fe);if(!n)throw new Error("useSpringCarouselContext must be used within the carousel.");return n}exports.useSpringCarousel=He;exports.useSpringCarouselContext=ze;