react-spring-carousel 1.9.29-beta34 → 1.9.29-beta35
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.
- package/dist/index.js +11 -4
- package/dist/index.js.map +1 -1
- package/dist/modules/useCustomEventsModule.js +9 -5
- package/dist/modules/useCustomEventsModule.js.map +1 -1
- package/dist/modules/useFullscreenModule.js +20 -12
- package/dist/modules/useFullscreenModule.js.map +1 -1
- package/dist/modules/useThumbsModule.js +17 -13
- package/dist/modules/useThumbsModule.js.map +1 -1
- package/dist/useSpringCarousel.js +53 -48
- package/dist/useSpringCarousel.js.map +1 -1
- package/dist/useTransitionCarousel.js +28 -23
- package/dist/useTransitionCarousel.js.map +1 -1
- package/dist/utils.js +9 -4
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var useSpringCarousel = require('./useSpringCarousel.js');
|
|
6
|
+
var useTransitionCarousel = require('./useTransitionCarousel.js');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
exports.useSpringCarousel = useSpringCarousel;
|
|
11
|
+
exports.useTransitionCarousel = useTransitionCarousel;
|
|
5
12
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var react = require('react');
|
|
6
|
+
var rxjs = require('rxjs');
|
|
3
7
|
|
|
4
8
|
function useCustomEventsModule() {
|
|
5
|
-
const eventsObserverRef = useRef(new Subject());
|
|
9
|
+
const eventsObserverRef = react.useRef(new rxjs.Subject());
|
|
6
10
|
function useListenToCustomEvent(fn) {
|
|
7
|
-
useEffect(() => {
|
|
11
|
+
react.useEffect(() => {
|
|
8
12
|
const subscribe = eventsObserverRef.current.subscribe(fn);
|
|
9
13
|
return () => subscribe.unsubscribe();
|
|
10
14
|
}, [fn]);
|
|
@@ -18,5 +22,5 @@ function useCustomEventsModule() {
|
|
|
18
22
|
};
|
|
19
23
|
}
|
|
20
24
|
|
|
21
|
-
|
|
25
|
+
exports.useCustomEventsModule = useCustomEventsModule;
|
|
22
26
|
//# sourceMappingURL=useCustomEventsModule.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCustomEventsModule.js","sources":["../../src/modules/useCustomEventsModule.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react'\nimport { Subject } from 'rxjs'\nimport { EventsObservableProps, ObservableCallbackFn, EmitObservableFn } from '../types'\n\nexport function useCustomEventsModule() {\n const eventsObserverRef = useRef(new Subject<EventsObservableProps>())\n\n function useListenToCustomEvent(fn: ObservableCallbackFn) {\n useEffect(() => {\n const subscribe = eventsObserverRef.current.subscribe(fn)\n return () => subscribe.unsubscribe()\n }, [fn])\n }\n\n const emitObservable: EmitObservableFn = data => {\n eventsObserverRef.current.next(data)\n }\n\n return {\n useListenToCustomEvent,\n emitObservable,\n }\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useCustomEventsModule.js","sources":["../../src/modules/useCustomEventsModule.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react'\nimport { Subject } from 'rxjs'\nimport { EventsObservableProps, ObservableCallbackFn, EmitObservableFn } from '../types'\n\nexport function useCustomEventsModule() {\n const eventsObserverRef = useRef(new Subject<EventsObservableProps>())\n\n function useListenToCustomEvent(fn: ObservableCallbackFn) {\n useEffect(() => {\n const subscribe = eventsObserverRef.current.subscribe(fn)\n return () => subscribe.unsubscribe()\n }, [fn])\n }\n\n const emitObservable: EmitObservableFn = data => {\n eventsObserverRef.current.next(data)\n }\n\n return {\n useListenToCustomEvent,\n emitObservable,\n }\n}\n"],"names":["useRef","Subject","useEffect"],"mappings":";;;;;;;SAIgB,qBAAqB;IACnC,MAAM,iBAAiB,GAAGA,YAAM,CAAC,IAAIC,YAAO,EAAyB,CAAC,CAAA;IAEtE,SAAS,sBAAsB,CAAC,EAAwB;QACtDC,eAAS,CAAC;YACR,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;YACzD,OAAO,MAAM,SAAS,CAAC,WAAW,EAAE,CAAA;SACrC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;KACT;IAED,MAAM,cAAc,GAAqB,IAAI;QAC3C,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;KACrC,CAAA;IAED,OAAO;QACL,sBAAsB;QACtB,cAAc;KACf,CAAA;AACH;;;;"}
|
|
@@ -1,9 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var react = require('react');
|
|
6
|
+
var screenfull = require('screenfull');
|
|
7
|
+
|
|
8
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
|
+
|
|
10
|
+
var screenfull__default = /*#__PURE__*/_interopDefaultLegacy(screenfull);
|
|
3
11
|
|
|
4
12
|
function useFullscreenModule({ mainCarouselWrapperRef, emitObservable, handleResize, }) {
|
|
5
|
-
const isFullscreen = useRef(false);
|
|
6
|
-
useEffect(() => {
|
|
13
|
+
const isFullscreen = react.useRef(false);
|
|
14
|
+
react.useEffect(() => {
|
|
7
15
|
function handleFullscreenChange() {
|
|
8
16
|
if (document.fullscreenElement) {
|
|
9
17
|
setIsFullscreen(true);
|
|
@@ -22,11 +30,11 @@ function useFullscreenModule({ mainCarouselWrapperRef, emitObservable, handleRes
|
|
|
22
30
|
handleResize && handleResize();
|
|
23
31
|
}
|
|
24
32
|
}
|
|
25
|
-
if (
|
|
26
|
-
|
|
33
|
+
if (screenfull__default["default"].isEnabled) {
|
|
34
|
+
screenfull__default["default"].on('change', handleFullscreenChange);
|
|
27
35
|
return () => {
|
|
28
|
-
if (
|
|
29
|
-
|
|
36
|
+
if (screenfull__default["default"].isEnabled) {
|
|
37
|
+
screenfull__default["default"].off('change', handleFullscreenChange);
|
|
30
38
|
}
|
|
31
39
|
};
|
|
32
40
|
}
|
|
@@ -38,12 +46,12 @@ function useFullscreenModule({ mainCarouselWrapperRef, emitObservable, handleRes
|
|
|
38
46
|
return isFullscreen.current;
|
|
39
47
|
}
|
|
40
48
|
function enterFullscreen(elementRef) {
|
|
41
|
-
if (
|
|
42
|
-
|
|
49
|
+
if (screenfull__default["default"].isEnabled) {
|
|
50
|
+
screenfull__default["default"].request((elementRef || mainCarouselWrapperRef.current));
|
|
43
51
|
}
|
|
44
52
|
}
|
|
45
53
|
function exitFullscreen() {
|
|
46
|
-
|
|
54
|
+
screenfull__default["default"].isEnabled && screenfull__default["default"].exit();
|
|
47
55
|
}
|
|
48
56
|
return {
|
|
49
57
|
enterFullscreen,
|
|
@@ -52,5 +60,5 @@ function useFullscreenModule({ mainCarouselWrapperRef, emitObservable, handleRes
|
|
|
52
60
|
};
|
|
53
61
|
}
|
|
54
62
|
|
|
55
|
-
|
|
63
|
+
exports.useFullscreenModule = useFullscreenModule;
|
|
56
64
|
//# sourceMappingURL=useFullscreenModule.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFullscreenModule.js","sources":["../../src/modules/useFullscreenModule.tsx"],"sourcesContent":["import { useRef, MutableRefObject, useEffect } from 'react'\nimport screenfull from 'screenfull'\nimport { EmitObservableFn } from '../types'\n\ntype FullscreenModule = {\n mainCarouselWrapperRef: MutableRefObject<HTMLDivElement | null>\n emitObservable: EmitObservableFn\n handleResize?(): void\n}\n\nexport function useFullscreenModule({\n mainCarouselWrapperRef,\n emitObservable,\n handleResize,\n}: FullscreenModule) {\n const isFullscreen = useRef(false)\n\n useEffect(() => {\n function handleFullscreenChange() {\n if (document.fullscreenElement) {\n setIsFullscreen(true)\n emitObservable({\n eventName: 'onFullscreenChange',\n isFullscreen: true,\n })\n\n handleResize && handleResize()\n }\n\n if (!document.fullscreenElement) {\n setIsFullscreen(false)\n emitObservable({\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((elementRef || mainCarouselWrapperRef.current) as Element)\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":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useFullscreenModule.js","sources":["../../src/modules/useFullscreenModule.tsx"],"sourcesContent":["import { useRef, MutableRefObject, useEffect } from 'react'\nimport screenfull from 'screenfull'\nimport { EmitObservableFn } from '../types'\n\ntype FullscreenModule = {\n mainCarouselWrapperRef: MutableRefObject<HTMLDivElement | null>\n emitObservable: EmitObservableFn\n handleResize?(): void\n}\n\nexport function useFullscreenModule({\n mainCarouselWrapperRef,\n emitObservable,\n handleResize,\n}: FullscreenModule) {\n const isFullscreen = useRef(false)\n\n useEffect(() => {\n function handleFullscreenChange() {\n if (document.fullscreenElement) {\n setIsFullscreen(true)\n emitObservable({\n eventName: 'onFullscreenChange',\n isFullscreen: true,\n })\n\n handleResize && handleResize()\n }\n\n if (!document.fullscreenElement) {\n setIsFullscreen(false)\n emitObservable({\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((elementRef || mainCarouselWrapperRef.current) as Element)\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":["useRef","useEffect","screenfull"],"mappings":";;;;;;;;;;;SAUgB,mBAAmB,CAAC,EAClC,sBAAsB,EACtB,cAAc,EACd,YAAY,GACK;IACjB,MAAM,YAAY,GAAGA,YAAM,CAAC,KAAK,CAAC,CAAA;IAElCC,eAAS,CAAC;QACR,SAAS,sBAAsB;YAC7B,IAAI,QAAQ,CAAC,iBAAiB,EAAE;gBAC9B,eAAe,CAAC,IAAI,CAAC,CAAA;gBACrB,cAAc,CAAC;oBACb,SAAS,EAAE,oBAAoB;oBAC/B,YAAY,EAAE,IAAI;iBACnB,CAAC,CAAA;gBAEF,YAAY,IAAI,YAAY,EAAE,CAAA;aAC/B;YAED,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE;gBAC/B,eAAe,CAAC,KAAK,CAAC,CAAA;gBACtB,cAAc,CAAC;oBACb,SAAS,EAAE,oBAAoB;oBAC/B,YAAY,EAAE,KAAK;iBACpB,CAAC,CAAA;gBACF,YAAY,IAAI,YAAY,EAAE,CAAA;aAC/B;SACF;QAED,IAAIC,8BAAU,CAAC,SAAS,EAAE;YACxBA,8BAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAA;YAC/C,OAAO;gBACL,IAAIA,8BAAU,CAAC,SAAS,EAAE;oBACxBA,8BAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAA;iBACjD;aACF,CAAA;SACF;KACF,CAAC,CAAA;IAEF,SAAS,eAAe,CAAC,aAAsB;QAC7C,YAAY,CAAC,OAAO,GAAG,aAAa,CAAA;KACrC;IAED,SAAS,eAAe;QACtB,OAAO,YAAY,CAAC,OAAO,CAAA;KAC5B;IAED,SAAS,eAAe,CAAC,UAAwB;QAC/C,IAAIA,8BAAU,CAAC,SAAS,EAAE;YACxBA,8BAAU,CAAC,OAAO,EAAE,UAAU,IAAI,sBAAsB,CAAC,OAAO,EAAa,CAAA;SAC9E;KACF;IAED,SAAS,cAAc;QACrBA,8BAAU,CAAC,SAAS,IAAIA,8BAAU,CAAC,IAAI,EAAE,CAAA;KAC1C;IAED,OAAO;QACL,eAAe;QACf,cAAc;QACd,eAAe;KAChB,CAAA;AACH;;;;"}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
import { forwardRef, useRef } from 'react';
|
|
3
|
-
import { animated, useSpring } from 'react-spring';
|
|
4
|
-
import { useMount } from '../utils.js';
|
|
1
|
+
'use strict';
|
|
5
2
|
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
var react = require('react');
|
|
7
|
+
var reactSpring = require('react-spring');
|
|
8
|
+
var utils = require('../utils.js');
|
|
9
|
+
|
|
10
|
+
const InternalWrapper = react.forwardRef(({ children, ...rest }, ref) => {
|
|
11
|
+
return (jsxRuntime.jsx(reactSpring.animated.div, Object.assign({}, rest, { ref: ref }, { children: children }), void 0));
|
|
8
12
|
});
|
|
9
13
|
function useThumbsModule({ items, withThumbs, thumbsSlideAxis = 'x', springConfig, prepareThumbsData, itemsPerSlide, getFluidWrapperScrollValue = () => 0, getSlideValue = () => 0, CustomThumbsWrapperComponent, }) {
|
|
10
|
-
const internalThumbsWrapperRef = useRef(null);
|
|
11
|
-
const [thumbListStyles, setThumbListStyles] = useSpring(() => ({
|
|
14
|
+
const internalThumbsWrapperRef = react.useRef(null);
|
|
15
|
+
const [thumbListStyles, setThumbListStyles] = reactSpring.useSpring(() => ({
|
|
12
16
|
x: 0,
|
|
13
17
|
y: 0,
|
|
14
18
|
config: springConfig,
|
|
@@ -18,7 +22,7 @@ function useThumbsModule({ items, withThumbs, thumbsSlideAxis = 'x', springConfi
|
|
|
18
22
|
}
|
|
19
23
|
},
|
|
20
24
|
}));
|
|
21
|
-
useMount(() => {
|
|
25
|
+
utils.useMount(() => {
|
|
22
26
|
if (withThumbs && !internalThumbsWrapperRef.current) {
|
|
23
27
|
throw new Error("The thumbs wrapper is not defined. If you've passed a Functional component, be sure to wrap your component in forwardRef.");
|
|
24
28
|
}
|
|
@@ -152,9 +156,9 @@ function useThumbsModule({ items, withThumbs, thumbsSlideAxis = 'x', springConfi
|
|
|
152
156
|
return getPreparedItems(items);
|
|
153
157
|
}
|
|
154
158
|
const Wrapper = CustomThumbsWrapperComponent
|
|
155
|
-
? animated(CustomThumbsWrapperComponent)
|
|
159
|
+
? reactSpring.animated(CustomThumbsWrapperComponent)
|
|
156
160
|
: InternalWrapper;
|
|
157
|
-
const thumbsFragment = withThumbs ? (jsx(Wrapper, Object.assign({ ref: internalThumbsWrapperRef, className: "use-spring-carousel-thumbs-wrapper", onWheel: () => {
|
|
161
|
+
const thumbsFragment = withThumbs ? (jsxRuntime.jsx(Wrapper, Object.assign({ ref: internalThumbsWrapperRef, className: "use-spring-carousel-thumbs-wrapper", onWheel: () => {
|
|
158
162
|
thumbListStyles[thumbsSlideAxis].stop();
|
|
159
163
|
}, style: {
|
|
160
164
|
display: 'flex',
|
|
@@ -169,7 +173,7 @@ function useThumbsModule({ items, withThumbs, thumbsSlideAxis = 'x', springConfi
|
|
|
169
173
|
}),
|
|
170
174
|
} }, { children: handlePrepareThumbsDate().map(({ id, renderThumb }) => {
|
|
171
175
|
const thumbId = `thumb-${id}`;
|
|
172
|
-
return (jsx("div", Object.assign({ id: thumbId }, { children: renderThumb }), thumbId));
|
|
176
|
+
return (jsxRuntime.jsx("div", Object.assign({ id: thumbId }, { children: renderThumb }), thumbId));
|
|
173
177
|
}) }), void 0)) : null;
|
|
174
178
|
return {
|
|
175
179
|
thumbsFragment,
|
|
@@ -177,5 +181,5 @@ function useThumbsModule({ items, withThumbs, thumbsSlideAxis = 'x', springConfi
|
|
|
177
181
|
};
|
|
178
182
|
}
|
|
179
183
|
|
|
180
|
-
|
|
184
|
+
exports.useThumbsModule = useThumbsModule;
|
|
181
185
|
//# sourceMappingURL=useThumbsModule.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useThumbsModule.js","sources":["../../src/modules/useThumbsModule.tsx"],"sourcesContent":["import { forwardRef, HTMLAttributes, useRef } from 'react'\nimport { useSpring, SpringConfig, animated } from 'react-spring'\nimport { useMount } from 'src/utils'\nimport {\n UseSpringCarouselProps,\n ReactSpringThumbItem,\n PrepareThumbsData,\n UseSpringCarouselItems,\n SlideActionType,\n} from '../types'\n\ntype OffsetDimension = 'offsetWidth' | 'offsetHeight'\ntype OffsetDirection = 'offsetLeft' | 'offsetTop'\ntype ScrollDirection = 'scrollLeft' | 'scrollTop'\n\ntype Props = {\n items: UseSpringCarouselItems['items']\n withThumbs: boolean\n thumbsSlideAxis: UseSpringCarouselProps['thumbsSlideAxis']\n springConfig: SpringConfig\n prepareThumbsData?: PrepareThumbsData\n itemsPerSlide?: UseSpringCarouselProps['itemsPerSlide']\n CustomThumbsWrapperComponent?: UseSpringCarouselProps['CustomThumbsWrapperComponent']\n getFluidWrapperScrollValue?(): number\n getSlideValue?(): number\n}\n\ntype WrapperProps = {\n children: React.ReactNode\n} & HTMLAttributes<HTMLDivElement>\n\nconst InternalWrapper = forwardRef<HTMLDivElement, WrapperProps>(\n ({ children, ...rest }, ref) => {\n return (\n <animated.div {...rest} ref={ref}>\n {children}\n </animated.div>\n )\n },\n)\n\nexport function useThumbsModule({\n items,\n withThumbs,\n thumbsSlideAxis = 'x',\n springConfig,\n prepareThumbsData,\n itemsPerSlide,\n getFluidWrapperScrollValue = () => 0,\n getSlideValue = () => 0,\n CustomThumbsWrapperComponent,\n}: Props) {\n const internalThumbsWrapperRef = useRef<HTMLDivElement | null>(null)\n const [thumbListStyles, setThumbListStyles] = useSpring(() => ({\n x: 0,\n y: 0,\n config: springConfig,\n onChange: ({ value }) => {\n if (internalThumbsWrapperRef.current) {\n internalThumbsWrapperRef.current[\n thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ] = Math.abs(value[thumbsSlideAxis])\n }\n },\n }))\n\n useMount(() => {\n if (withThumbs && !internalThumbsWrapperRef.current) {\n throw new Error(\n \"The thumbs wrapper is not defined. If you've passed a Functional component, be sure to wrap your component in forwardRef.\",\n )\n }\n })\n\n function getCurrentThumbScrollValue() {\n return internalThumbsWrapperRef.current![\n thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ]\n }\n function getThumbsTotalScrollableValue() {\n return Math.round(\n Number(\n internalThumbsWrapperRef.current?.[\n thumbsSlideAxis === 'x' ? 'scrollWidth' : 'scrollHeight'\n ],\n ) -\n internalThumbsWrapperRef.current!.getBoundingClientRect()[\n thumbsSlideAxis === 'x' ? 'width' : 'height'\n ],\n )\n }\n\n function getThumbSlideValue() {\n const thumbSlideTotal = Math.round(getFluidWrapperScrollValue() / getSlideValue())\n const totalScrollableValue = getThumbsTotalScrollableValue()\n return totalScrollableValue / thumbSlideTotal\n }\n\n function handleThumbsScroll(activeItem: number, actionType?: SlideActionType) {\n if (itemsPerSlide === 'fluid') {\n const totalScrollableValue = getThumbsTotalScrollableValue()\n\n if (actionType === 'next') {\n const nextValue = getCurrentThumbScrollValue() + getThumbSlideValue()\n setThumbListStyles.start({\n from: {\n [thumbsSlideAxis]: getCurrentThumbScrollValue(),\n },\n to: {\n [thumbsSlideAxis]:\n nextValue > totalScrollableValue ? totalScrollableValue : nextValue,\n },\n })\n }\n if (actionType === 'prev') {\n const nextValue = getCurrentThumbScrollValue() - getThumbSlideValue()\n setThumbListStyles.start({\n from: {\n [thumbsSlideAxis]: getCurrentThumbScrollValue(),\n },\n to: {\n [thumbsSlideAxis]: nextValue < 0 ? 0 : nextValue,\n },\n })\n }\n } else {\n function getOffsetDirection() {\n return thumbsSlideAxis === 'x' ? 'offsetLeft' : 'offsetTop'\n }\n function getOffsetDimension() {\n return thumbsSlideAxis === 'x' ? 'offsetWidth' : 'offsetHeight'\n }\n function getScrollDirecton() {\n return thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n }\n function getThumbNode() {\n return internalThumbsWrapperRef.current!.querySelector(\n `#thumb-${items[activeItem].id}`,\n ) as HTMLElement\n }\n function getThumbOffsetPosition({\n thumbNode,\n offsetDirection,\n offsetDimension,\n }: {\n thumbNode: HTMLElement\n offsetDirection: OffsetDirection\n offsetDimension: OffsetDimension\n }) {\n return thumbNode[offsetDirection] + thumbNode[offsetDimension] / 2\n }\n function getThumbScrollDimension({\n thumbWrapper,\n offsetDimension,\n }: {\n thumbWrapper: HTMLDivElement\n offsetDimension: OffsetDimension\n }) {\n return thumbWrapper[offsetDimension] / 2\n }\n function getScrollFromValue({\n thumbWrapper,\n scrollDirection,\n }: {\n thumbWrapper: HTMLDivElement\n scrollDirection: ScrollDirection\n }) {\n return thumbWrapper[scrollDirection]\n }\n function getScrollToValue({\n thumbWrapper,\n thumbOffsetPosition,\n thumbScrollDimension,\n offsetDimension,\n }: {\n thumbWrapper: HTMLDivElement\n thumbOffsetPosition: number\n thumbScrollDimension: number\n offsetDimension: OffsetDimension\n }) {\n const scrollDimensionProperty =\n thumbsSlideAxis === 'x' ? 'scrollWidth' : 'scrollHeight'\n\n if (\n activeItem === items.length - 1 ||\n thumbOffsetPosition - thumbScrollDimension >\n thumbWrapper[scrollDimensionProperty] - thumbWrapper[offsetDimension]\n ) {\n return thumbWrapper[scrollDimensionProperty] - thumbWrapper[offsetDimension]\n }\n if (activeItem === 0) {\n return 0\n }\n\n return thumbOffsetPosition - thumbScrollDimension\n }\n\n const thumbNode = getThumbNode()\n\n if (thumbNode) {\n const thumbWrapper = internalThumbsWrapperRef.current!\n const offsetDirection = getOffsetDirection()\n const offsetDimension = getOffsetDimension()\n const scrollDirection = getScrollDirecton()\n const thumbOffsetPosition = getThumbOffsetPosition({\n thumbNode,\n offsetDimension,\n offsetDirection,\n })\n const thumbScrollDimension = getThumbScrollDimension({\n thumbWrapper,\n offsetDimension,\n })\n\n setThumbListStyles.start({\n from: {\n [thumbsSlideAxis]: getScrollFromValue({\n thumbWrapper,\n scrollDirection,\n }),\n },\n to: {\n [thumbsSlideAxis]: getScrollToValue({\n thumbWrapper,\n thumbOffsetPosition,\n thumbScrollDimension,\n offsetDimension,\n }),\n },\n onChange: val => {\n if (thumbsSlideAxis === 'x') {\n // @ts-ignore\n internalThumbsWrapperRef!.current!.scrollLeft = val.x\n } else {\n // @ts-ignore\n internalThumbsWrapperRef!.current!.scrollTop = val.y\n }\n },\n })\n }\n }\n }\n function handlePrepareThumbsDate() {\n function getPreparedItems(\n _items: UseSpringCarouselItems['items'],\n ): ReactSpringThumbItem[] {\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 Wrapper = CustomThumbsWrapperComponent\n ? animated(CustomThumbsWrapperComponent)\n : InternalWrapper\n\n const thumbsFragment = withThumbs ? (\n <Wrapper\n ref={internalThumbsWrapperRef}\n className=\"use-spring-carousel-thumbs-wrapper\"\n onWheel={() => {\n thumbListStyles[thumbsSlideAxis].stop()\n }}\n style={{\n display: 'flex',\n flex: 1,\n position: 'relative',\n flexDirection: thumbsSlideAxis === 'x' ? 'row' : 'column',\n ...(thumbsSlideAxis === 'x'\n ? { overflowX: 'auto' }\n : {\n overflowY: 'auto',\n maxHeight: '100%',\n }),\n }}\n >\n {handlePrepareThumbsDate().map(({ id, renderThumb }) => {\n const thumbId = `thumb-${id}`\n return (\n <div key={thumbId} id={thumbId}>\n {renderThumb}\n </div>\n )\n })}\n </Wrapper>\n ) : null\n\n return {\n thumbsFragment,\n handleThumbsScroll,\n }\n}\n"],"names":["_jsx"],"mappings":";;;;;AA+BA,MAAM,eAAe,GAAG,UAAU,CAChC,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG;IACzB,QACEA,IAAC,QAAQ,CAAC,GAAG,oBAAK,IAAI,IAAE,GAAG,EAAE,GAAG,gBAC7B,QAAQ,YACI,EAChB;AACH,CAAC,CACF,CAAA;SAEe,eAAe,CAAC,EAC9B,KAAK,EACL,UAAU,EACV,eAAe,GAAG,GAAG,EACrB,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,0BAA0B,GAAG,MAAM,CAAC,EACpC,aAAa,GAAG,MAAM,CAAC,EACvB,4BAA4B,GACtB;IACN,MAAM,wBAAwB,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAA;IACpE,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,SAAS,CAAC,OAAO;QAC7D,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,MAAM,EAAE,YAAY;QACpB,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE;YAClB,IAAI,wBAAwB,CAAC,OAAO,EAAE;gBACpC,wBAAwB,CAAC,OAAO,CAC9B,eAAe,KAAK,GAAG,GAAG,YAAY,GAAG,WAAW,CACrD,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAA;aACrC;SACF;KACF,CAAC,CAAC,CAAA;IAEH,QAAQ,CAAC;QACP,IAAI,UAAU,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE;YACnD,MAAM,IAAI,KAAK,CACb,2HAA2H,CAC5H,CAAA;SACF;KACF,CAAC,CAAA;IAEF,SAAS,0BAA0B;QACjC,OAAO,wBAAwB,CAAC,OAAQ,CACtC,eAAe,KAAK,GAAG,GAAG,YAAY,GAAG,WAAW,CACrD,CAAA;KACF;IACD,SAAS,6BAA6B;QACpC,OAAO,IAAI,CAAC,KAAK,CACf,MAAM,CACJ,wBAAwB,CAAC,OAAO,GAC9B,eAAe,KAAK,GAAG,GAAG,aAAa,GAAG,cAAc,CACzD,CACF;YACC,wBAAwB,CAAC,OAAQ,CAAC,qBAAqB,EAAE,CACvD,eAAe,KAAK,GAAG,GAAG,OAAO,GAAG,QAAQ,CAC7C,CACJ,CAAA;KACF;IAED,SAAS,kBAAkB;QACzB,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,aAAa,EAAE,CAAC,CAAA;QAClF,MAAM,oBAAoB,GAAG,6BAA6B,EAAE,CAAA;QAC5D,OAAO,oBAAoB,GAAG,eAAe,CAAA;KAC9C;IAED,SAAS,kBAAkB,CAAC,UAAkB,EAAE,UAA4B;QAC1E,IAAI,aAAa,KAAK,OAAO,EAAE;YAC7B,MAAM,oBAAoB,GAAG,6BAA6B,EAAE,CAAA;YAE5D,IAAI,UAAU,KAAK,MAAM,EAAE;gBACzB,MAAM,SAAS,GAAG,0BAA0B,EAAE,GAAG,kBAAkB,EAAE,CAAA;gBACrE,kBAAkB,CAAC,KAAK,CAAC;oBACvB,IAAI,EAAE;wBACJ,CAAC,eAAe,GAAG,0BAA0B,EAAE;qBAChD;oBACD,EAAE,EAAE;wBACF,CAAC,eAAe,GACd,SAAS,GAAG,oBAAoB,GAAG,oBAAoB,GAAG,SAAS;qBACtE;iBACF,CAAC,CAAA;aACH;YACD,IAAI,UAAU,KAAK,MAAM,EAAE;gBACzB,MAAM,SAAS,GAAG,0BAA0B,EAAE,GAAG,kBAAkB,EAAE,CAAA;gBACrE,kBAAkB,CAAC,KAAK,CAAC;oBACvB,IAAI,EAAE;wBACJ,CAAC,eAAe,GAAG,0BAA0B,EAAE;qBAChD;oBACD,EAAE,EAAE;wBACF,CAAC,eAAe,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS;qBACjD;iBACF,CAAC,CAAA;aACH;SACF;aAAM;YACL,SAAS,kBAAkB;gBACzB,OAAO,eAAe,KAAK,GAAG,GAAG,YAAY,GAAG,WAAW,CAAA;aAC5D;YACD,SAAS,kBAAkB;gBACzB,OAAO,eAAe,KAAK,GAAG,GAAG,aAAa,GAAG,cAAc,CAAA;aAChE;YACD,SAAS,iBAAiB;gBACxB,OAAO,eAAe,KAAK,GAAG,GAAG,YAAY,GAAG,WAAW,CAAA;aAC5D;YACD,SAAS,YAAY;gBACnB,OAAO,wBAAwB,CAAC,OAAQ,CAAC,aAAa,CACpD,UAAU,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAClB,CAAA;aACjB;YACD,SAAS,sBAAsB,CAAC,EAC9B,SAAS,EACT,eAAe,EACf,eAAe,GAKhB;gBACC,OAAO,SAAS,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;aACnE;YACD,SAAS,uBAAuB,CAAC,EAC/B,YAAY,EACZ,eAAe,GAIhB;gBACC,OAAO,YAAY,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;aACzC;YACD,SAAS,kBAAkB,CAAC,EAC1B,YAAY,EACZ,eAAe,GAIhB;gBACC,OAAO,YAAY,CAAC,eAAe,CAAC,CAAA;aACrC;YACD,SAAS,gBAAgB,CAAC,EACxB,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,GAMhB;gBACC,MAAM,uBAAuB,GAC3B,eAAe,KAAK,GAAG,GAAG,aAAa,GAAG,cAAc,CAAA;gBAE1D,IACE,UAAU,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC;oBAC/B,mBAAmB,GAAG,oBAAoB;wBACxC,YAAY,CAAC,uBAAuB,CAAC,GAAG,YAAY,CAAC,eAAe,CAAC,EACvE;oBACA,OAAO,YAAY,CAAC,uBAAuB,CAAC,GAAG,YAAY,CAAC,eAAe,CAAC,CAAA;iBAC7E;gBACD,IAAI,UAAU,KAAK,CAAC,EAAE;oBACpB,OAAO,CAAC,CAAA;iBACT;gBAED,OAAO,mBAAmB,GAAG,oBAAoB,CAAA;aAClD;YAED,MAAM,SAAS,GAAG,YAAY,EAAE,CAAA;YAEhC,IAAI,SAAS,EAAE;gBACb,MAAM,YAAY,GAAG,wBAAwB,CAAC,OAAQ,CAAA;gBACtD,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAA;gBAC5C,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAA;gBAC5C,MAAM,eAAe,GAAG,iBAAiB,EAAE,CAAA;gBAC3C,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;oBACjD,SAAS;oBACT,eAAe;oBACf,eAAe;iBAChB,CAAC,CAAA;gBACF,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;oBACnD,YAAY;oBACZ,eAAe;iBAChB,CAAC,CAAA;gBAEF,kBAAkB,CAAC,KAAK,CAAC;oBACvB,IAAI,EAAE;wBACJ,CAAC,eAAe,GAAG,kBAAkB,CAAC;4BACpC,YAAY;4BACZ,eAAe;yBAChB,CAAC;qBACH;oBACD,EAAE,EAAE;wBACF,CAAC,eAAe,GAAG,gBAAgB,CAAC;4BAClC,YAAY;4BACZ,mBAAmB;4BACnB,oBAAoB;4BACpB,eAAe;yBAChB,CAAC;qBACH;oBACD,QAAQ,EAAE,GAAG;wBACX,IAAI,eAAe,KAAK,GAAG,EAAE;;4BAE3B,wBAAyB,CAAC,OAAQ,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAA;yBACtD;6BAAM;;4BAEL,wBAAyB,CAAC,OAAQ,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAA;yBACrD;qBACF;iBACF,CAAC,CAAA;aACH;SACF;KACF;IACD,SAAS,uBAAuB;QAC9B,SAAS,gBAAgB,CACvB,MAAuC;YAEvC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK;gBACtB,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,WAAW,EAAE,CAAC,CAAC,WAAW;aAC3B,CAAC,CAAC,CAAA;SACJ;QAED,IAAI,iBAAiB,EAAE;YACrB,OAAO,iBAAiB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAA;SAClD;QACD,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAA;KAC/B;IAED,MAAM,OAAO,GAAG,4BAA4B;UACxC,QAAQ,CAAC,4BAA4B,CAAC;UACtC,eAAe,CAAA;IAEnB,MAAM,cAAc,GAAG,UAAU,IAC/BA,IAAC,OAAO,kBACN,GAAG,EAAE,wBAAwB,EAC7B,SAAS,EAAC,oCAAoC,EAC9C,OAAO,EAAE;YACP,eAAe,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,CAAA;SACxC,EACD,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,CAAC;YACP,QAAQ,EAAE,UAAU;YACpB,aAAa,EAAE,eAAe,KAAK,GAAG,GAAG,KAAK,GAAG,QAAQ;YACzD,IAAI,eAAe,KAAK,GAAG;kBACvB,EAAE,SAAS,EAAE,MAAM,EAAE;kBACrB;oBACE,SAAS,EAAE,MAAM;oBACjB,SAAS,EAAE,MAAM;iBAClB,CAAC;SACP,gBAEA,uBAAuB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE;YACjD,MAAM,OAAO,GAAG,SAAS,EAAE,EAAE,CAAA;YAC7B,QACEA,2BAAmB,EAAE,EAAE,OAAO,gBAC3B,WAAW,KADJ,OAAO,CAEX,EACP;SACF,CAAC,YACM,IACR,IAAI,CAAA;IAER,OAAO;QACL,cAAc;QACd,kBAAkB;KACnB,CAAA;AACH;;;;"}
|
|
1
|
+
{"version":3,"file":"useThumbsModule.js","sources":["../../src/modules/useThumbsModule.tsx"],"sourcesContent":["import { forwardRef, HTMLAttributes, useRef } from 'react'\nimport { useSpring, SpringConfig, animated } from 'react-spring'\nimport { useMount } from 'src/utils'\nimport {\n UseSpringCarouselProps,\n ReactSpringThumbItem,\n PrepareThumbsData,\n UseSpringCarouselItems,\n SlideActionType,\n} from '../types'\n\ntype OffsetDimension = 'offsetWidth' | 'offsetHeight'\ntype OffsetDirection = 'offsetLeft' | 'offsetTop'\ntype ScrollDirection = 'scrollLeft' | 'scrollTop'\n\ntype Props = {\n items: UseSpringCarouselItems['items']\n withThumbs: boolean\n thumbsSlideAxis: UseSpringCarouselProps['thumbsSlideAxis']\n springConfig: SpringConfig\n prepareThumbsData?: PrepareThumbsData\n itemsPerSlide?: UseSpringCarouselProps['itemsPerSlide']\n CustomThumbsWrapperComponent?: UseSpringCarouselProps['CustomThumbsWrapperComponent']\n getFluidWrapperScrollValue?(): number\n getSlideValue?(): number\n}\n\ntype WrapperProps = {\n children: React.ReactNode\n} & HTMLAttributes<HTMLDivElement>\n\nconst InternalWrapper = forwardRef<HTMLDivElement, WrapperProps>(\n ({ children, ...rest }, ref) => {\n return (\n <animated.div {...rest} ref={ref}>\n {children}\n </animated.div>\n )\n },\n)\n\nexport function useThumbsModule({\n items,\n withThumbs,\n thumbsSlideAxis = 'x',\n springConfig,\n prepareThumbsData,\n itemsPerSlide,\n getFluidWrapperScrollValue = () => 0,\n getSlideValue = () => 0,\n CustomThumbsWrapperComponent,\n}: Props) {\n const internalThumbsWrapperRef = useRef<HTMLDivElement | null>(null)\n const [thumbListStyles, setThumbListStyles] = useSpring(() => ({\n x: 0,\n y: 0,\n config: springConfig,\n onChange: ({ value }) => {\n if (internalThumbsWrapperRef.current) {\n internalThumbsWrapperRef.current[\n thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ] = Math.abs(value[thumbsSlideAxis])\n }\n },\n }))\n\n useMount(() => {\n if (withThumbs && !internalThumbsWrapperRef.current) {\n throw new Error(\n \"The thumbs wrapper is not defined. If you've passed a Functional component, be sure to wrap your component in forwardRef.\",\n )\n }\n })\n\n function getCurrentThumbScrollValue() {\n return internalThumbsWrapperRef.current![\n thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ]\n }\n function getThumbsTotalScrollableValue() {\n return Math.round(\n Number(\n internalThumbsWrapperRef.current?.[\n thumbsSlideAxis === 'x' ? 'scrollWidth' : 'scrollHeight'\n ],\n ) -\n internalThumbsWrapperRef.current!.getBoundingClientRect()[\n thumbsSlideAxis === 'x' ? 'width' : 'height'\n ],\n )\n }\n\n function getThumbSlideValue() {\n const thumbSlideTotal = Math.round(getFluidWrapperScrollValue() / getSlideValue())\n const totalScrollableValue = getThumbsTotalScrollableValue()\n return totalScrollableValue / thumbSlideTotal\n }\n\n function handleThumbsScroll(activeItem: number, actionType?: SlideActionType) {\n if (itemsPerSlide === 'fluid') {\n const totalScrollableValue = getThumbsTotalScrollableValue()\n\n if (actionType === 'next') {\n const nextValue = getCurrentThumbScrollValue() + getThumbSlideValue()\n setThumbListStyles.start({\n from: {\n [thumbsSlideAxis]: getCurrentThumbScrollValue(),\n },\n to: {\n [thumbsSlideAxis]:\n nextValue > totalScrollableValue ? totalScrollableValue : nextValue,\n },\n })\n }\n if (actionType === 'prev') {\n const nextValue = getCurrentThumbScrollValue() - getThumbSlideValue()\n setThumbListStyles.start({\n from: {\n [thumbsSlideAxis]: getCurrentThumbScrollValue(),\n },\n to: {\n [thumbsSlideAxis]: nextValue < 0 ? 0 : nextValue,\n },\n })\n }\n } else {\n function getOffsetDirection() {\n return thumbsSlideAxis === 'x' ? 'offsetLeft' : 'offsetTop'\n }\n function getOffsetDimension() {\n return thumbsSlideAxis === 'x' ? 'offsetWidth' : 'offsetHeight'\n }\n function getScrollDirecton() {\n return thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n }\n function getThumbNode() {\n return internalThumbsWrapperRef.current!.querySelector(\n `#thumb-${items[activeItem].id}`,\n ) as HTMLElement\n }\n function getThumbOffsetPosition({\n thumbNode,\n offsetDirection,\n offsetDimension,\n }: {\n thumbNode: HTMLElement\n offsetDirection: OffsetDirection\n offsetDimension: OffsetDimension\n }) {\n return thumbNode[offsetDirection] + thumbNode[offsetDimension] / 2\n }\n function getThumbScrollDimension({\n thumbWrapper,\n offsetDimension,\n }: {\n thumbWrapper: HTMLDivElement\n offsetDimension: OffsetDimension\n }) {\n return thumbWrapper[offsetDimension] / 2\n }\n function getScrollFromValue({\n thumbWrapper,\n scrollDirection,\n }: {\n thumbWrapper: HTMLDivElement\n scrollDirection: ScrollDirection\n }) {\n return thumbWrapper[scrollDirection]\n }\n function getScrollToValue({\n thumbWrapper,\n thumbOffsetPosition,\n thumbScrollDimension,\n offsetDimension,\n }: {\n thumbWrapper: HTMLDivElement\n thumbOffsetPosition: number\n thumbScrollDimension: number\n offsetDimension: OffsetDimension\n }) {\n const scrollDimensionProperty =\n thumbsSlideAxis === 'x' ? 'scrollWidth' : 'scrollHeight'\n\n if (\n activeItem === items.length - 1 ||\n thumbOffsetPosition - thumbScrollDimension >\n thumbWrapper[scrollDimensionProperty] - thumbWrapper[offsetDimension]\n ) {\n return thumbWrapper[scrollDimensionProperty] - thumbWrapper[offsetDimension]\n }\n if (activeItem === 0) {\n return 0\n }\n\n return thumbOffsetPosition - thumbScrollDimension\n }\n\n const thumbNode = getThumbNode()\n\n if (thumbNode) {\n const thumbWrapper = internalThumbsWrapperRef.current!\n const offsetDirection = getOffsetDirection()\n const offsetDimension = getOffsetDimension()\n const scrollDirection = getScrollDirecton()\n const thumbOffsetPosition = getThumbOffsetPosition({\n thumbNode,\n offsetDimension,\n offsetDirection,\n })\n const thumbScrollDimension = getThumbScrollDimension({\n thumbWrapper,\n offsetDimension,\n })\n\n setThumbListStyles.start({\n from: {\n [thumbsSlideAxis]: getScrollFromValue({\n thumbWrapper,\n scrollDirection,\n }),\n },\n to: {\n [thumbsSlideAxis]: getScrollToValue({\n thumbWrapper,\n thumbOffsetPosition,\n thumbScrollDimension,\n offsetDimension,\n }),\n },\n onChange: val => {\n if (thumbsSlideAxis === 'x') {\n // @ts-ignore\n internalThumbsWrapperRef!.current!.scrollLeft = val.x\n } else {\n // @ts-ignore\n internalThumbsWrapperRef!.current!.scrollTop = val.y\n }\n },\n })\n }\n }\n }\n function handlePrepareThumbsDate() {\n function getPreparedItems(\n _items: UseSpringCarouselItems['items'],\n ): ReactSpringThumbItem[] {\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 Wrapper = CustomThumbsWrapperComponent\n ? animated(CustomThumbsWrapperComponent)\n : InternalWrapper\n\n const thumbsFragment = withThumbs ? (\n <Wrapper\n ref={internalThumbsWrapperRef}\n className=\"use-spring-carousel-thumbs-wrapper\"\n onWheel={() => {\n thumbListStyles[thumbsSlideAxis].stop()\n }}\n style={{\n display: 'flex',\n flex: 1,\n position: 'relative',\n flexDirection: thumbsSlideAxis === 'x' ? 'row' : 'column',\n ...(thumbsSlideAxis === 'x'\n ? { overflowX: 'auto' }\n : {\n overflowY: 'auto',\n maxHeight: '100%',\n }),\n }}\n >\n {handlePrepareThumbsDate().map(({ id, renderThumb }) => {\n const thumbId = `thumb-${id}`\n return (\n <div key={thumbId} id={thumbId}>\n {renderThumb}\n </div>\n )\n })}\n </Wrapper>\n ) : null\n\n return {\n thumbsFragment,\n handleThumbsScroll,\n }\n}\n"],"names":["forwardRef","_jsx","animated","useRef","useSpring","useMount"],"mappings":"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"}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
import { createContext, useRef, useCallback, useEffect, useContext } from 'react';
|
|
3
|
-
import { config, useSpring, animated } from 'react-spring';
|
|
4
|
-
import { useDrag } from '@use-gesture/react';
|
|
5
|
-
import { useCustomEventsModule } from './modules/useCustomEventsModule.js';
|
|
6
|
-
import { useFullscreenModule } from './modules/useFullscreenModule.js';
|
|
7
|
-
import { useThumbsModule } from './modules/useThumbsModule.js';
|
|
8
|
-
import { useMount, getIsBrowser } from './utils.js';
|
|
1
|
+
'use strict';
|
|
9
2
|
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
var react = require('react');
|
|
7
|
+
var reactSpring = require('react-spring');
|
|
8
|
+
var react$1 = require('@use-gesture/react');
|
|
9
|
+
var useCustomEventsModule = require('./modules/useCustomEventsModule.js');
|
|
10
|
+
var useFullscreenModule = require('./modules/useFullscreenModule.js');
|
|
11
|
+
var useThumbsModule = require('./modules/useThumbsModule.js');
|
|
12
|
+
var utils = require('./utils.js');
|
|
13
|
+
|
|
14
|
+
const UseSpringCarouselContext = react.createContext(undefined);
|
|
15
|
+
function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggingSlideTreshold = 140, springConfig = reactSpring.config.default, shouldResizeOnWindowResize = true, withThumbs = false, enableThumbsWrapperScroll = true, carouselSlideAxis = 'x', thumbsSlideAxis = 'x', prepareThumbsData, initialActiveItem = 0, initialStartingPosition = 'start', disableGestures = false, gutter = 0, startEndGutter = 0, touchAction, slideAmount, freeScroll = false, CustomThumbsWrapperComponent, }) {
|
|
12
16
|
function getItems() {
|
|
13
17
|
if (withLoop) {
|
|
14
18
|
if (items.length === itemsPerSlide) {
|
|
@@ -18,19 +22,19 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
|
|
|
18
22
|
}
|
|
19
23
|
return items;
|
|
20
24
|
}
|
|
21
|
-
const slideActionType = useRef('initial');
|
|
25
|
+
const slideActionType = react.useRef('initial');
|
|
22
26
|
const internalItems = getItems();
|
|
23
|
-
const activeItem = useRef(initialActiveItem);
|
|
24
|
-
const mainCarouselWrapperRef = useRef(null);
|
|
25
|
-
const carouselTrackWrapperRef = useRef(null);
|
|
26
|
-
const isDragging = useRef(false);
|
|
27
|
-
const isAnimating = useRef(false);
|
|
28
|
-
const windowIsHidden = useRef(false);
|
|
29
|
-
const currentWindowWidth = useRef(0);
|
|
30
|
-
const fluidTotalWrapperScrollValue = useRef(0);
|
|
31
|
-
const slideFluidEndReached = useRef(false);
|
|
32
|
-
const initialWindowWidth = useRef(0);
|
|
33
|
-
const [carouselStyles, setCarouselStyles] = useSpring(() => ({
|
|
27
|
+
const activeItem = react.useRef(initialActiveItem);
|
|
28
|
+
const mainCarouselWrapperRef = react.useRef(null);
|
|
29
|
+
const carouselTrackWrapperRef = react.useRef(null);
|
|
30
|
+
const isDragging = react.useRef(false);
|
|
31
|
+
const isAnimating = react.useRef(false);
|
|
32
|
+
const windowIsHidden = react.useRef(false);
|
|
33
|
+
const currentWindowWidth = react.useRef(0);
|
|
34
|
+
const fluidTotalWrapperScrollValue = react.useRef(0);
|
|
35
|
+
const slideFluidEndReached = react.useRef(false);
|
|
36
|
+
const initialWindowWidth = react.useRef(0);
|
|
37
|
+
const [carouselStyles, setCarouselStyles] = reactSpring.useSpring(() => ({
|
|
34
38
|
y: 0,
|
|
35
39
|
x: 0,
|
|
36
40
|
config: springConfig,
|
|
@@ -43,33 +47,33 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
|
|
|
43
47
|
function getCarouselItem() {
|
|
44
48
|
return carouselTrackWrapperRef.current?.querySelector('.use-spring-carousel-item');
|
|
45
49
|
}
|
|
46
|
-
const getMainCarouselWrapperWidth = useCallback(() => {
|
|
50
|
+
const getMainCarouselWrapperWidth = react.useCallback(() => {
|
|
47
51
|
if (!mainCarouselWrapperRef.current) {
|
|
48
52
|
throw new Error('mainCarouselWrapperRef is not available');
|
|
49
53
|
}
|
|
50
54
|
return mainCarouselWrapperRef.current.getBoundingClientRect()[carouselSlideAxis === 'x' ? 'width' : 'height'];
|
|
51
55
|
}, [carouselSlideAxis]);
|
|
52
|
-
const getCarouselItemWidth = useCallback(() => {
|
|
56
|
+
const getCarouselItemWidth = react.useCallback(() => {
|
|
53
57
|
const carouselItem = getCarouselItem();
|
|
54
58
|
if (!carouselItem) {
|
|
55
59
|
throw Error('No carousel items available!');
|
|
56
60
|
}
|
|
57
61
|
return (carouselItem.getBoundingClientRect()[carouselSlideAxis === 'x' ? 'width' : 'height'] + gutter);
|
|
58
62
|
}, [carouselSlideAxis, gutter]);
|
|
59
|
-
const getCurrentSlidedValue = useCallback(() => {
|
|
63
|
+
const getCurrentSlidedValue = react.useCallback(() => {
|
|
60
64
|
return carouselStyles[carouselSlideAxis].get();
|
|
61
65
|
}, [carouselSlideAxis, carouselStyles]);
|
|
62
|
-
const getIfItemsNotFillTheCarousel = useCallback(() => {
|
|
66
|
+
const getIfItemsNotFillTheCarousel = react.useCallback(() => {
|
|
63
67
|
return getCarouselItemWidth() * items.length < getMainCarouselWrapperWidth();
|
|
64
68
|
}, [getCarouselItemWidth, getMainCarouselWrapperWidth, items.length]);
|
|
65
|
-
const getFluidWrapperScrollValue = useCallback(() => {
|
|
69
|
+
const getFluidWrapperScrollValue = react.useCallback(() => {
|
|
66
70
|
return Math.round(Number(carouselTrackWrapperRef.current?.[carouselSlideAxis === 'x' ? 'scrollWidth' : 'scrollHeight']) -
|
|
67
71
|
carouselTrackWrapperRef.current.getBoundingClientRect()[carouselSlideAxis === 'x' ? 'width' : 'height']);
|
|
68
72
|
}, [carouselSlideAxis]);
|
|
69
|
-
const getIsFirstItem = useCallback(() => {
|
|
73
|
+
const getIsFirstItem = react.useCallback(() => {
|
|
70
74
|
return getCurrentActiveItem() === 0;
|
|
71
75
|
}, []);
|
|
72
|
-
const getSlideValue = useCallback(() => {
|
|
76
|
+
const getSlideValue = react.useCallback(() => {
|
|
73
77
|
if (!carouselTrackWrapperRef.current) {
|
|
74
78
|
return 0;
|
|
75
79
|
}
|
|
@@ -82,7 +86,7 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
|
|
|
82
86
|
}
|
|
83
87
|
return itemVal;
|
|
84
88
|
}, [getCarouselItemWidth, itemsPerSlide, slideAmount]);
|
|
85
|
-
const adjustCarouselWrapperPosition = useCallback((ref) => {
|
|
89
|
+
const adjustCarouselWrapperPosition = react.useCallback((ref) => {
|
|
86
90
|
const positionProperty = carouselSlideAxis === 'x' ? 'left' : 'top';
|
|
87
91
|
function getDefaultPositionValue() {
|
|
88
92
|
return getCarouselItemWidth() * items.length;
|
|
@@ -140,7 +144,7 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
|
|
|
140
144
|
initialStartingPosition,
|
|
141
145
|
withLoop,
|
|
142
146
|
]);
|
|
143
|
-
const handleResize = useCallback(() => {
|
|
147
|
+
const handleResize = react.useCallback(() => {
|
|
144
148
|
if (window.innerWidth === currentWindowWidth.current || freeScroll) {
|
|
145
149
|
return;
|
|
146
150
|
}
|
|
@@ -195,13 +199,13 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
|
|
|
195
199
|
adjustCarouselWrapperPosition,
|
|
196
200
|
]);
|
|
197
201
|
// Custom modules
|
|
198
|
-
const { useListenToCustomEvent, emitObservable } = useCustomEventsModule();
|
|
199
|
-
const { enterFullscreen, exitFullscreen, getIsFullscreen } = useFullscreenModule({
|
|
202
|
+
const { useListenToCustomEvent, emitObservable } = useCustomEventsModule.useCustomEventsModule();
|
|
203
|
+
const { enterFullscreen, exitFullscreen, getIsFullscreen } = useFullscreenModule.useFullscreenModule({
|
|
200
204
|
mainCarouselWrapperRef,
|
|
201
205
|
emitObservable,
|
|
202
206
|
handleResize,
|
|
203
207
|
});
|
|
204
|
-
const { thumbsFragment: _thumbsFragment, handleThumbsScroll } = useThumbsModule({
|
|
208
|
+
const { thumbsFragment: _thumbsFragment, handleThumbsScroll } = useThumbsModule.useThumbsModule({
|
|
205
209
|
withThumbs,
|
|
206
210
|
items,
|
|
207
211
|
thumbsSlideAxis,
|
|
@@ -218,7 +222,7 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
|
|
|
218
222
|
}
|
|
219
223
|
return mainCarouselWrapperRef.current[carouselSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'];
|
|
220
224
|
}
|
|
221
|
-
const bindDrag = useDrag(props => {
|
|
225
|
+
const bindDrag = react$1.useDrag(props => {
|
|
222
226
|
const isDragging = props.dragging;
|
|
223
227
|
const movement = props.offset[carouselSlideAxis === 'x' ? 0 : 1];
|
|
224
228
|
const currentMovement = props.movement[carouselSlideAxis === 'x' ? 0 : 1];
|
|
@@ -340,7 +344,7 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
|
|
|
340
344
|
from: () => [carouselStyles.x.get(), carouselStyles.y.get()],
|
|
341
345
|
});
|
|
342
346
|
// Perform some check on first mount
|
|
343
|
-
useMount(() => {
|
|
347
|
+
utils.useMount(() => {
|
|
344
348
|
if (itemsPerSlide !== 'fluid' && !Number.isInteger(itemsPerSlide)) {
|
|
345
349
|
throw new Error(`itemsPerSlide should be an integer.`);
|
|
346
350
|
}
|
|
@@ -360,7 +364,7 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
|
|
|
360
364
|
console.warn('The initialActiveItem cannot be greater than the total length of the items you provide.');
|
|
361
365
|
}
|
|
362
366
|
});
|
|
363
|
-
useMount(() => {
|
|
367
|
+
utils.useMount(() => {
|
|
364
368
|
fluidTotalWrapperScrollValue.current = getFluidWrapperScrollValue();
|
|
365
369
|
function handleVisibilityChange() {
|
|
366
370
|
if (document.hidden) {
|
|
@@ -370,14 +374,14 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
|
|
|
370
374
|
windowIsHidden.current = false;
|
|
371
375
|
}
|
|
372
376
|
}
|
|
373
|
-
if (getIsBrowser()) {
|
|
377
|
+
if (utils.getIsBrowser()) {
|
|
374
378
|
document.addEventListener('visibilitychange', handleVisibilityChange);
|
|
375
379
|
return () => {
|
|
376
380
|
document.removeEventListener('visibilitychange', handleVisibilityChange);
|
|
377
381
|
};
|
|
378
382
|
}
|
|
379
383
|
});
|
|
380
|
-
useMount(() => {
|
|
384
|
+
utils.useMount(() => {
|
|
381
385
|
initialWindowWidth.current = window.innerWidth;
|
|
382
386
|
if (initialActiveItem > 0 && initialActiveItem <= items.length) {
|
|
383
387
|
slideToItem({
|
|
@@ -387,7 +391,7 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
|
|
|
387
391
|
setActiveItem(initialActiveItem);
|
|
388
392
|
}
|
|
389
393
|
});
|
|
390
|
-
useEffect(() => {
|
|
394
|
+
react.useEffect(() => {
|
|
391
395
|
function resize() {
|
|
392
396
|
setTimeout(handleResize);
|
|
393
397
|
}
|
|
@@ -398,7 +402,7 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
|
|
|
398
402
|
};
|
|
399
403
|
}
|
|
400
404
|
}, [handleResize, shouldResizeOnWindowResize]);
|
|
401
|
-
useEffect(() => {
|
|
405
|
+
react.useEffect(() => {
|
|
402
406
|
if (carouselTrackWrapperRef.current) {
|
|
403
407
|
if (carouselSlideAxis === 'x') {
|
|
404
408
|
carouselTrackWrapperRef.current.style.top = '0px';
|
|
@@ -408,7 +412,7 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
|
|
|
408
412
|
}
|
|
409
413
|
}
|
|
410
414
|
}, [carouselSlideAxis]);
|
|
411
|
-
useEffect(() => {
|
|
415
|
+
react.useEffect(() => {
|
|
412
416
|
setTimeout(() => adjustCarouselWrapperPosition(carouselTrackWrapperRef.current), 150);
|
|
413
417
|
}, [adjustCarouselWrapperPosition, carouselSlideAxis, itemsPerSlide]);
|
|
414
418
|
function setSlideActionType(type) {
|
|
@@ -752,7 +756,7 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
|
|
|
752
756
|
}
|
|
753
757
|
return touchAction;
|
|
754
758
|
}
|
|
755
|
-
const carouselFragment = (jsx(UseSpringCarouselContext.Provider, Object.assign({ value: contextProps }, { children: jsx("div", Object.assign({ ref: mainCarouselWrapperRef, className: "use-spring-carousel-main-wrapper", "data-testid": "use-spring-carousel-wrapper" }, getWheelEvent(), {
|
|
759
|
+
const carouselFragment = (jsxRuntime.jsx(UseSpringCarouselContext.Provider, Object.assign({ value: contextProps }, { children: jsxRuntime.jsx("div", Object.assign({ ref: mainCarouselWrapperRef, className: "use-spring-carousel-main-wrapper", "data-testid": "use-spring-carousel-wrapper" }, getWheelEvent(), {
|
|
756
760
|
// @ts-ignore
|
|
757
761
|
style: {
|
|
758
762
|
display: 'flex',
|
|
@@ -760,7 +764,7 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
|
|
|
760
764
|
width: '100%',
|
|
761
765
|
height: '100%',
|
|
762
766
|
...getOverflowStyles(),
|
|
763
|
-
} }, { children: jsx(animated.div, Object.assign({}, bindDrag(), { className: "use-spring-carousel-track-wrapper", "data-testid": "use-spring-carousel-animated-wrapper", ref: handleCarouselFragmentRef, style: {
|
|
767
|
+
} }, { children: jsxRuntime.jsx(reactSpring.animated.div, Object.assign({}, bindDrag(), { className: "use-spring-carousel-track-wrapper", "data-testid": "use-spring-carousel-animated-wrapper", ref: handleCarouselFragmentRef, style: {
|
|
764
768
|
display: 'flex',
|
|
765
769
|
position: 'relative',
|
|
766
770
|
touchAction: getTouchAction(),
|
|
@@ -768,13 +772,13 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
|
|
|
768
772
|
...getAnimatedWrapperStyles(),
|
|
769
773
|
...(freeScroll ? {} : carouselStyles),
|
|
770
774
|
} }, { children: internalItems.map(({ id, renderItem }, index) => {
|
|
771
|
-
return (jsx("div", Object.assign({ className: "use-spring-carousel-item", "data-testid": "use-spring-carousel-item-wrapper", style: {
|
|
775
|
+
return (jsxRuntime.jsx("div", Object.assign({ className: "use-spring-carousel-item", "data-testid": "use-spring-carousel-item-wrapper", style: {
|
|
772
776
|
display: 'flex',
|
|
773
777
|
position: 'relative',
|
|
774
778
|
...getItemStyles(),
|
|
775
779
|
} }, { children: renderItem }), `${id}-${index}`));
|
|
776
780
|
}) }), void 0) }), void 0) }), void 0));
|
|
777
|
-
const thumbsFragment = (jsx(UseSpringCarouselContext.Provider, Object.assign({ value: contextProps }, { children: _thumbsFragment }), void 0));
|
|
781
|
+
const thumbsFragment = (jsxRuntime.jsx(UseSpringCarouselContext.Provider, Object.assign({ value: contextProps }, { children: _thumbsFragment }), void 0));
|
|
778
782
|
return {
|
|
779
783
|
...contextProps,
|
|
780
784
|
carouselFragment,
|
|
@@ -782,12 +786,13 @@ function useSpringCarousel({ itemsPerSlide = 1, items, withLoop = false, draggin
|
|
|
782
786
|
};
|
|
783
787
|
}
|
|
784
788
|
function useSpringCarouselContext() {
|
|
785
|
-
const context = useContext(UseSpringCarouselContext);
|
|
789
|
+
const context = react.useContext(UseSpringCarouselContext);
|
|
786
790
|
if (!context) {
|
|
787
791
|
throw new Error('useSpringCarouselContext must be used only inside a component that is rendered inside the Carousel.');
|
|
788
792
|
}
|
|
789
793
|
return context;
|
|
790
794
|
}
|
|
791
795
|
|
|
792
|
-
|
|
796
|
+
exports.useSpringCarousel = useSpringCarousel;
|
|
797
|
+
exports.useSpringCarouselContext = useSpringCarouselContext;
|
|
793
798
|
//# sourceMappingURL=useSpringCarousel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSpringCarousel.js","sources":["../src/useSpringCarousel.tsx"],"sourcesContent":["import { useRef, createContext, useCallback, useContext, useEffect } from 'react'\nimport { useSpring, config, animated } from 'react-spring'\nimport { useDrag } from '@use-gesture/react'\nimport { useCustomEventsModule, useFullscreenModule, useThumbsModule } from './modules'\nimport {\n UseSpringCarouselProps,\n SlideToItemFnProps,\n SlideActionType,\n UseSpringDafaultTypeReturnProps,\n UseSpringFluidTypeReturnProps,\n} from './types'\nimport { useMount } from './utils'\nimport { getIsBrowser } from './utils'\n\ntype ReturnHook<T> = T extends 'fluid'\n ? UseSpringFluidTypeReturnProps\n : UseSpringDafaultTypeReturnProps\n\nconst UseSpringCarouselContext = createContext<\n (UseSpringFluidTypeReturnProps | UseSpringDafaultTypeReturnProps) | undefined\n>(undefined)\n\nexport function useSpringCarousel<T>({\n itemsPerSlide = 1,\n items,\n withLoop = false,\n draggingSlideTreshold = 140,\n springConfig = config.default,\n shouldResizeOnWindowResize = true,\n withThumbs = false,\n enableThumbsWrapperScroll = true,\n carouselSlideAxis = 'x',\n thumbsSlideAxis = 'x',\n prepareThumbsData,\n initialActiveItem = 0,\n initialStartingPosition = 'start',\n disableGestures = false,\n gutter = 0,\n startEndGutter = 0,\n touchAction,\n slideAmount,\n freeScroll = false,\n CustomThumbsWrapperComponent,\n}: UseSpringCarouselProps): ReturnHook<T> & {\n carouselFragment: JSX.Element\n thumbsFragment: JSX.Element\n} {\n function getItems() {\n if (withLoop) {\n if (items.length === itemsPerSlide) {\n return [...items, ...items, ...items, ...items, ...items]\n }\n return [...items, ...items, ...items]\n }\n return items\n }\n const slideActionType = useRef<SlideActionType>('initial')\n const internalItems = getItems()\n const activeItem = useRef(initialActiveItem)\n const mainCarouselWrapperRef = useRef<HTMLDivElement | null>(null)\n const carouselTrackWrapperRef = useRef<HTMLDivElement | null>(null)\n const isDragging = useRef(false)\n const isAnimating = useRef(false)\n const windowIsHidden = useRef(false)\n const currentWindowWidth = useRef(0)\n const fluidTotalWrapperScrollValue = useRef(0)\n const slideFluidEndReached = useRef(false)\n const initialWindowWidth = useRef(0)\n\n const [carouselStyles, setCarouselStyles] = useSpring(() => ({\n y: 0,\n x: 0,\n config: springConfig,\n onChange: ({ value }) => {\n if (mainCarouselWrapperRef.current && freeScroll) {\n mainCarouselWrapperRef.current[\n carouselSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ] = Math.abs(value[carouselSlideAxis])\n }\n },\n }))\n function getCarouselItem() {\n return carouselTrackWrapperRef.current?.querySelector('.use-spring-carousel-item')\n }\n const getMainCarouselWrapperWidth = useCallback(() => {\n if (!mainCarouselWrapperRef.current) {\n throw new Error('mainCarouselWrapperRef is not available')\n }\n return mainCarouselWrapperRef.current.getBoundingClientRect()[\n carouselSlideAxis === 'x' ? 'width' : 'height'\n ]\n }, [carouselSlideAxis])\n const getCarouselItemWidth = useCallback(() => {\n const carouselItem = getCarouselItem()\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 }, [carouselSlideAxis, gutter])\n const getCurrentSlidedValue = useCallback(() => {\n return carouselStyles[carouselSlideAxis].get()\n }, [carouselSlideAxis, carouselStyles])\n const getIfItemsNotFillTheCarousel = useCallback(() => {\n return getCarouselItemWidth() * items.length < getMainCarouselWrapperWidth()\n }, [getCarouselItemWidth, getMainCarouselWrapperWidth, items.length])\n const getFluidWrapperScrollValue = useCallback(() => {\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 }, [carouselSlideAxis])\n const getIsFirstItem = useCallback(() => {\n return getCurrentActiveItem() === 0\n }, [])\n const getSlideValue = useCallback(() => {\n if (!carouselTrackWrapperRef.current) {\n return 0\n }\n const itemVal = getCarouselItemWidth()\n\n if (itemsPerSlide === 'fluid' && typeof slideAmount === 'number') {\n if (slideAmount < itemVal) {\n throw new Error('slideAmount must be greater than the width of a single item.')\n }\n return slideAmount\n }\n return itemVal\n }, [getCarouselItemWidth, itemsPerSlide, slideAmount])\n const adjustCarouselWrapperPosition = useCallback(\n (ref: HTMLDivElement) => {\n const positionProperty = carouselSlideAxis === 'x' ? 'left' : 'top'\n function getDefaultPositionValue() {\n return getCarouselItemWidth() * items.length\n }\n function setPosition(v: number) {\n ref.style.top = '0px'\n ref.style.left = '0px'\n if (withLoop) {\n ref.style[positionProperty] = `-${v - startEndGutter}px`\n }\n }\n function setStartPosition() {\n setPosition(getDefaultPositionValue())\n }\n\n if (itemsPerSlide !== 'fluid' && typeof itemsPerSlide === 'number') {\n function setCenterPosition() {\n setPosition(\n getDefaultPositionValue() -\n getSlideValue() * Math.round(((itemsPerSlide as number) - 1) / 2),\n )\n }\n function setEndPosition() {\n setPosition(\n getDefaultPositionValue() -\n getSlideValue() * Math.round((itemsPerSlide as number) - 1),\n )\n }\n\n if (itemsPerSlide > 1) {\n switch (initialStartingPosition) {\n default:\n case 'start': {\n setStartPosition()\n break\n }\n case 'center': {\n setCenterPosition()\n break\n }\n case 'end': {\n setEndPosition()\n break\n }\n }\n } else {\n setStartPosition()\n }\n } else {\n setStartPosition()\n }\n },\n [\n carouselSlideAxis,\n itemsPerSlide,\n getCarouselItemWidth,\n items.length,\n startEndGutter,\n getSlideValue,\n initialStartingPosition,\n withLoop,\n ],\n )\n\n const handleResize = useCallback(() => {\n if (window.innerWidth === currentWindowWidth.current || freeScroll) {\n return\n }\n currentWindowWidth.current = window.innerWidth\n\n if (itemsPerSlide === 'fluid') {\n if (getIfItemsNotFillTheCarousel()) {\n setCarouselStyles.start({\n immediate: true,\n [carouselSlideAxis]: 0,\n })\n return\n }\n fluidTotalWrapperScrollValue.current = getFluidWrapperScrollValue()\n const diff = currentWindowWidth.current - initialWindowWidth.current\n\n if (slideFluidEndReached.current) {\n const nextValue = -fluidTotalWrapperScrollValue.current\n setCarouselStyles.start({\n immediate: true,\n [carouselSlideAxis]: nextValue,\n })\n } else {\n const nextValue = getCurrentSlidedValue() + diff\n setCarouselStyles.start({\n immediate: true,\n [carouselSlideAxis]: nextValue,\n })\n }\n\n initialWindowWidth.current = window.innerWidth\n } else {\n setCarouselStyles.start({\n immediate: true,\n x: 0,\n y: 0,\n })\n setCarouselStyles.start({\n immediate: true,\n [carouselSlideAxis]: -(getSlideValue() * getCurrentActiveItem()),\n })\n }\n adjustCarouselWrapperPosition(carouselTrackWrapperRef.current!)\n }, [\n itemsPerSlide,\n getIfItemsNotFillTheCarousel,\n getFluidWrapperScrollValue,\n freeScroll,\n setCarouselStyles,\n carouselSlideAxis,\n getCurrentSlidedValue,\n getSlideValue,\n adjustCarouselWrapperPosition,\n ])\n // Custom modules\n const { useListenToCustomEvent, emitObservable } = useCustomEventsModule()\n const { enterFullscreen, exitFullscreen, getIsFullscreen } = useFullscreenModule({\n mainCarouselWrapperRef,\n emitObservable,\n handleResize,\n })\n const { thumbsFragment: _thumbsFragment, handleThumbsScroll } = useThumbsModule({\n withThumbs,\n items,\n thumbsSlideAxis,\n springConfig,\n prepareThumbsData,\n itemsPerSlide,\n getFluidWrapperScrollValue,\n getSlideValue,\n CustomThumbsWrapperComponent,\n })\n\n function getWrapperScrollDirection() {\n if (!mainCarouselWrapperRef.current) {\n throw new Error('Missing mainCarouselWrapperRef.current')\n }\n return mainCarouselWrapperRef.current[\n carouselSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ]\n }\n\n const bindDrag = useDrag(\n props => {\n const isDragging = props.dragging\n const movement = props.offset[carouselSlideAxis === 'x' ? 0 : 1]\n const currentMovement = props.movement[carouselSlideAxis === 'x' ? 0 : 1]\n function cancelDrag() {\n props.cancel()\n }\n function resetAnimation() {\n if (itemsPerSlide === 'fluid') {\n if (\n getIfItemsNotFillTheCarousel() ||\n (getIsFirstItem() && getSlideActionType() === 'prev')\n ) {\n setCarouselStyles.start({\n [carouselSlideAxis]: 0,\n })\n } else if (slideFluidEndReached.current) {\n setCarouselStyles.start({\n [carouselSlideAxis]: -fluidTotalWrapperScrollValue.current,\n })\n } else {\n setCarouselStyles.start({\n [carouselSlideAxis]: getCurrentSlidedValue(),\n })\n }\n } else {\n setCarouselStyles.start({\n [carouselSlideAxis]: -(getCurrentActiveItem() * getSlideValue()),\n })\n }\n }\n\n if (isDragging) {\n setIsDragging(true)\n emitObservable({\n eventName: 'onDrag',\n slideActionType: getSlideActionType(),\n ...props,\n })\n const direction = props.direction[carouselSlideAxis === 'x' ? 0 : 1]\n if (direction > 0) {\n setSlideActionType('prev')\n } else {\n setSlideActionType('next')\n }\n\n if (freeScroll) {\n if (getWrapperScrollDirection() === 0 && direction > 0) {\n cancelDrag()\n } else {\n setCarouselStyles.start({\n from: {\n [carouselSlideAxis]: getWrapperScrollDirection(),\n },\n to: {\n [carouselSlideAxis]:\n direction > 0\n ? getWrapperScrollDirection() - Math.abs(movement)\n : getWrapperScrollDirection() + Math.abs(movement),\n },\n })\n }\n } else {\n setCarouselStyles.start({\n [carouselSlideAxis]: movement,\n })\n }\n\n const prevItemTreshold = currentMovement > draggingSlideTreshold\n const nextItemTreshold = currentMovement < -draggingSlideTreshold\n\n if (\n mainCarouselWrapperRef.current!.getBoundingClientRect().width >=\n items.length * getSlideValue() &&\n itemsPerSlide === 'fluid'\n ) {\n slideFluidEndReached.current = true\n }\n\n if (\n (prevItemTreshold || nextItemTreshold) &&\n getIfItemsNotFillTheCarousel() &&\n itemsPerSlide === 'fluid'\n ) {\n cancelDrag()\n resetAnimation()\n return\n }\n\n if (slideFluidEndReached.current && movement < 0) {\n if (nextItemTreshold) {\n cancelDrag()\n setCarouselStyles.start({\n [carouselSlideAxis]: -fluidTotalWrapperScrollValue.current,\n })\n }\n } else if (nextItemTreshold) {\n cancelDrag()\n if (!withLoop && getIsLastItem()) {\n resetAnimation()\n } else {\n slideToNextItem()\n }\n } else if (prevItemTreshold) {\n cancelDrag()\n if (!withLoop && getIsFirstItem()) {\n resetAnimation()\n } else {\n slideToPrevItem()\n }\n }\n }\n\n if (props.last && !props.pressed && !freeScroll) {\n resetAnimation()\n emitObservable({\n eventName: 'onDrag',\n slideActionType: getSlideActionType(),\n ...props,\n })\n }\n },\n {\n enabled: !disableGestures,\n from: () => [carouselStyles.x.get(), carouselStyles.y.get()],\n },\n )\n\n // Perform some check on first mount\n useMount(() => {\n if (itemsPerSlide !== 'fluid' && !Number.isInteger(itemsPerSlide)) {\n throw new Error(`itemsPerSlide should be an integer.`)\n }\n if (itemsPerSlide > items.length) {\n throw new Error(\n `The itemsPerSlide prop can't be greater than the total length of the items you provide.`,\n )\n }\n if (itemsPerSlide < 1) {\n throw new Error(`The itemsPerSlide prop can't be less than 1.`)\n }\n if (!shouldResizeOnWindowResize) {\n console.warn(\n 'You set shouldResizeOnWindowResize={false}; be aware that the carousel could behave in a strange way if you also use the fullscreen functionality or if you change the mobile orientation.',\n )\n }\n if (initialActiveItem < 0) {\n console.warn('The initialActiveItem cannot be less than 0.')\n }\n if (initialActiveItem > items.length) {\n console.warn(\n 'The initialActiveItem cannot be greater than the total length of the items you provide.',\n )\n }\n })\n useMount(() => {\n fluidTotalWrapperScrollValue.current = getFluidWrapperScrollValue()\n function handleVisibilityChange() {\n if (document.hidden) {\n windowIsHidden.current = true\n } else {\n windowIsHidden.current = false\n }\n }\n if (getIsBrowser()) {\n document.addEventListener('visibilitychange', handleVisibilityChange)\n return () => {\n document.removeEventListener('visibilitychange', handleVisibilityChange)\n }\n }\n })\n useMount(() => {\n initialWindowWidth.current = window.innerWidth\n if (initialActiveItem > 0 && initialActiveItem <= items.length) {\n slideToItem({\n to: initialActiveItem,\n immediate: true,\n })\n setActiveItem(initialActiveItem)\n }\n })\n useEffect(() => {\n function resize() {\n setTimeout(handleResize)\n }\n if (shouldResizeOnWindowResize) {\n window.addEventListener('resize', resize)\n return () => {\n window.removeEventListener('resize', resize)\n }\n }\n }, [handleResize, shouldResizeOnWindowResize])\n useEffect(() => {\n if (carouselTrackWrapperRef.current) {\n if (carouselSlideAxis === 'x') {\n carouselTrackWrapperRef.current.style.top = '0px'\n }\n if (carouselSlideAxis === 'y') {\n carouselTrackWrapperRef.current.style.left = '0px'\n }\n }\n }, [carouselSlideAxis])\n useEffect(() => {\n setTimeout(() => adjustCarouselWrapperPosition(carouselTrackWrapperRef.current!), 150)\n }, [adjustCarouselWrapperPosition, carouselSlideAxis, itemsPerSlide])\n\n function setSlideActionType(type: SlideActionType) {\n slideActionType.current = type\n }\n function getSlideActionType() {\n return slideActionType.current\n }\n function setActiveItem(newItem: number) {\n activeItem.current = newItem\n }\n function getCurrentActiveItem() {\n return activeItem.current\n }\n function getIsAnimating() {\n return isAnimating.current\n }\n function setIsAnimating(val: boolean) {\n isAnimating.current = val\n }\n function setIsDragging(val: boolean) {\n isDragging.current = val\n }\n function getIsDragging() {\n return isDragging.current\n }\n function getPrevItem() {\n const currentActiveItem = getCurrentActiveItem()\n if (currentActiveItem === 0) {\n return items.length - 1\n }\n return currentActiveItem - 1\n }\n function getNextItem() {\n const currentActiveItem = getCurrentActiveItem()\n if (currentActiveItem === items.length - 1) {\n return 0\n }\n return currentActiveItem + 1\n }\n function getIsNextItem(id: string) {\n const itemIndex = findItemIndex(id)\n const activeItem = getCurrentActiveItem()\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 = getCurrentActiveItem()\n if (withLoop && activeItem === 0) {\n return itemIndex === items.length - 1\n }\n return itemIndex === activeItem - 1\n }\n function findItemIndex(id: string) {\n return items.findIndex(item => item.id === id)\n }\n function slideToItem({\n from,\n to = -1,\n customTo,\n immediate = false,\n onRest = () => {},\n }: SlideToItemFnProps) {\n if (!immediate) {\n setActiveItem(to)\n setIsAnimating(true)\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: itemsPerSlide === 'fluid' ? -1 : to,\n id: itemsPerSlide === 'fluid' ? '' : items[to].id,\n },\n })\n }\n\n function getFromValue() {\n if (typeof from === 'number') {\n return {\n from: {\n [carouselSlideAxis]: from,\n },\n }\n }\n return {}\n }\n function getToValue() {\n if (typeof customTo === 'number') {\n return {\n [carouselSlideAxis]: customTo,\n }\n }\n return {\n [carouselSlideAxis]: -(getSlideValue() * to),\n }\n }\n\n setCarouselStyles.start({\n ...getFromValue(),\n to: getToValue(),\n immediate,\n onRest: val => {\n if (val.finished) {\n setIsDragging(false)\n setIsAnimating(false)\n onRest()\n if (!immediate) {\n emitObservable({\n eventName: 'onSlideChange',\n slideActionType: getSlideActionType(),\n currentItem: {\n index: itemsPerSlide === 'fluid' ? -1 : getCurrentActiveItem(),\n id: itemsPerSlide === 'fluid' ? '' : items[getCurrentActiveItem()].id,\n },\n })\n }\n }\n },\n })\n if (enableThumbsWrapperScroll && withThumbs && !immediate) {\n handleThumbsScroll(to, getSlideActionType())\n }\n }\n function getIsLastItem() {\n return getCurrentActiveItem() === items.length - 1\n }\n function slideToPrevItem() {\n setSlideActionType('prev')\n\n if (itemsPerSlide === 'fluid') {\n if (getIfItemsNotFillTheCarousel()) {\n return\n }\n const nextPrevValue = getCurrentSlidedValue() + getSlideValue() + 200\n\n if (freeScroll) {\n const nextValue = mainCarouselWrapperRef.current!.scrollLeft - getSlideValue()\n slideToItem({\n customTo: nextValue < 0 ? 0 : nextValue,\n from: mainCarouselWrapperRef.current!.scrollLeft,\n })\n } else if (nextPrevValue >= 0) {\n if (withLoop) {\n slideToItem({\n from: getCurrentSlidedValue() - getCarouselItemWidth() * items.length,\n customTo:\n getCurrentSlidedValue() -\n getCarouselItemWidth() * items.length +\n getSlideValue(),\n })\n } else {\n slideToItem({\n customTo: 0,\n })\n }\n } else {\n slideToItem({\n customTo: getCurrentSlidedValue() + getSlideValue(),\n })\n }\n if (slideFluidEndReached.current) {\n slideFluidEndReached.current = false\n }\n } else {\n if ((!withLoop && getCurrentActiveItem() === 0) || windowIsHidden.current) {\n return\n }\n\n if (getIsFirstItem()) {\n slideToItem({\n from: getCurrentSlidedValue() - getSlideValue() * items.length,\n to: items.length - 1,\n })\n } else {\n slideToItem({\n to: getPrevItem(),\n })\n }\n }\n }\n function slideToNextItem() {\n setSlideActionType('next')\n\n if (itemsPerSlide === 'fluid') {\n if (getIfItemsNotFillTheCarousel()) {\n return\n }\n const willGoAfterLastFluidItem =\n Math.abs(getCurrentSlidedValue() - getSlideValue()) + 100 >=\n fluidTotalWrapperScrollValue.current\n\n if (freeScroll) {\n slideToItem({\n customTo: mainCarouselWrapperRef.current!.scrollLeft + getSlideValue(),\n from: mainCarouselWrapperRef.current!.scrollLeft,\n })\n } else if (\n withLoop &&\n Math.abs(getCurrentSlidedValue() - getSlideValue()) >=\n items.length * getCarouselItemWidth()\n ) {\n const currentWidth = getCarouselItemWidth() * items.length\n slideToItem({\n from: getCurrentSlidedValue() + currentWidth,\n customTo: getCurrentSlidedValue() + currentWidth - getSlideValue(),\n })\n } else if (slideFluidEndReached.current) {\n return\n } else if (willGoAfterLastFluidItem) {\n slideFluidEndReached.current = true\n slideToItem({\n customTo: -fluidTotalWrapperScrollValue.current,\n })\n } else {\n slideToItem({\n customTo: getCurrentSlidedValue() - getSlideValue(),\n })\n }\n } else {\n if (\n (!withLoop && getCurrentActiveItem() === internalItems.length - 1) ||\n windowIsHidden.current\n ) {\n return\n }\n\n if (getIsLastItem()) {\n slideToItem({\n from: getCurrentSlidedValue() + getSlideValue() * items.length,\n to: 0,\n })\n } else {\n slideToItem({\n to: getNextItem(),\n })\n }\n }\n }\n function _slideToItem(item: string | number) {\n let itemIndex = 0\n\n if (typeof item === 'string') {\n itemIndex = items.findIndex(_item => _item.id === item)\n } else {\n itemIndex = item\n }\n\n if (itemIndex >= items.length) {\n throw Error(\n `The item you want to slide to doesn't exist. This could be due to the fact that \n you provide a wrong id or a higher numeric index.`,\n )\n }\n if (itemIndex === getCurrentActiveItem()) {\n return\n }\n\n const currentItem = findItemIndex(items[getCurrentActiveItem()].id)\n const newActiveItem = findItemIndex(items[itemIndex].id)\n\n if (newActiveItem > currentItem) {\n setSlideActionType('next')\n } else {\n setSlideActionType('prev')\n }\n\n slideToItem({\n to: itemIndex,\n })\n }\n\n const contextProps = {\n useListenToCustomEvent,\n getIsFullscreen,\n enterFullscreen,\n exitFullscreen,\n getIsAnimating,\n getIsDragging,\n getIsNextItem,\n getIsPrevItem,\n slideToPrevItem,\n slideToNextItem,\n ...(typeof itemsPerSlide === 'number'\n ? {\n slideToItem: _slideToItem,\n getIsActiveItem: (id: string) => {\n return findItemIndex(id) === getCurrentActiveItem()\n },\n getCurrentActiveItem: () => ({\n id: items[getCurrentActiveItem()].id,\n index: getCurrentActiveItem(),\n }),\n }\n : {}),\n }\n function getItemStyles() {\n if (typeof itemsPerSlide === 'number') {\n return {\n ...(carouselSlideAxis === 'x'\n ? { marginRight: `${gutter}px` }\n : { marginBottom: `${gutter}px` }),\n flex: `1 0 calc(100% / ${itemsPerSlide} - ${\n (gutter * (itemsPerSlide - 1)) / itemsPerSlide\n }px)`,\n }\n }\n return {\n ...(carouselSlideAxis === 'x'\n ? { marginRight: `${gutter}px` }\n : { marginBottom: `${gutter}px` }),\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 function handleCarouselFragmentRef(ref: HTMLDivElement | null) {\n if (ref) {\n carouselTrackWrapperRef.current = ref\n adjustCarouselWrapperPosition(ref)\n }\n }\n function getOverflowStyles() {\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 function getWheelEvent() {\n if (freeScroll) {\n return {\n onWheel() {\n carouselStyles[carouselSlideAxis].stop()\n },\n }\n }\n return {}\n }\n function getTouchAction() {\n if (!touchAction) {\n if (carouselSlideAxis === 'x') {\n return 'pan-y'\n }\n return 'pan-x'\n }\n return touchAction\n }\n const carouselFragment = (\n <UseSpringCarouselContext.Provider value={contextProps}>\n <div\n ref={mainCarouselWrapperRef}\n className=\"use-spring-carousel-main-wrapper\"\n data-testid=\"use-spring-carousel-wrapper\"\n {...getWheelEvent()}\n // @ts-ignore\n style={{\n display: 'flex',\n position: 'relative',\n width: '100%',\n height: '100%',\n ...getOverflowStyles(),\n }}\n >\n <animated.div\n {...bindDrag()}\n className=\"use-spring-carousel-track-wrapper\"\n data-testid=\"use-spring-carousel-animated-wrapper\"\n ref={handleCarouselFragmentRef}\n style={{\n display: 'flex',\n position: 'relative',\n touchAction: getTouchAction(),\n flexDirection: carouselSlideAxis === 'x' ? 'row' : 'column',\n ...getAnimatedWrapperStyles(),\n ...(freeScroll ? {} : carouselStyles),\n }}\n >\n {internalItems.map(({ id, renderItem }, index) => {\n return (\n <div\n key={`${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 ...getItemStyles(),\n }}\n >\n {renderItem}\n </div>\n )\n })}\n </animated.div>\n </div>\n </UseSpringCarouselContext.Provider>\n )\n const thumbsFragment = (\n <UseSpringCarouselContext.Provider value={contextProps}>\n {_thumbsFragment}\n </UseSpringCarouselContext.Provider>\n )\n\n return {\n ...(contextProps as ReturnHook<T>),\n carouselFragment,\n thumbsFragment,\n }\n}\n\nexport function useSpringCarouselContext<T>() {\n const context = useContext(UseSpringCarouselContext)\n if (!context) {\n throw new Error(\n 'useSpringCarouselContext must be used only inside a component that is rendered inside the Carousel.',\n )\n }\n return context as ReturnHook<T>\n}\n"],"names":["_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useSpringCarousel.js","sources":["../src/useSpringCarousel.tsx"],"sourcesContent":["import { useRef, createContext, useCallback, useContext, useEffect } from 'react'\nimport { useSpring, config, animated } from 'react-spring'\nimport { useDrag } from '@use-gesture/react'\nimport { useCustomEventsModule, useFullscreenModule, useThumbsModule } from './modules'\nimport {\n UseSpringCarouselProps,\n SlideToItemFnProps,\n SlideActionType,\n UseSpringDafaultTypeReturnProps,\n UseSpringFluidTypeReturnProps,\n} from './types'\nimport { useMount } from './utils'\nimport { getIsBrowser } from './utils'\n\ntype ReturnHook<T> = T extends 'fluid'\n ? UseSpringFluidTypeReturnProps\n : UseSpringDafaultTypeReturnProps\n\nconst UseSpringCarouselContext = createContext<\n (UseSpringFluidTypeReturnProps | UseSpringDafaultTypeReturnProps) | undefined\n>(undefined)\n\nexport function useSpringCarousel<T>({\n itemsPerSlide = 1,\n items,\n withLoop = false,\n draggingSlideTreshold = 140,\n springConfig = config.default,\n shouldResizeOnWindowResize = true,\n withThumbs = false,\n enableThumbsWrapperScroll = true,\n carouselSlideAxis = 'x',\n thumbsSlideAxis = 'x',\n prepareThumbsData,\n initialActiveItem = 0,\n initialStartingPosition = 'start',\n disableGestures = false,\n gutter = 0,\n startEndGutter = 0,\n touchAction,\n slideAmount,\n freeScroll = false,\n CustomThumbsWrapperComponent,\n}: UseSpringCarouselProps): ReturnHook<T> & {\n carouselFragment: JSX.Element\n thumbsFragment: JSX.Element\n} {\n function getItems() {\n if (withLoop) {\n if (items.length === itemsPerSlide) {\n return [...items, ...items, ...items, ...items, ...items]\n }\n return [...items, ...items, ...items]\n }\n return items\n }\n const slideActionType = useRef<SlideActionType>('initial')\n const internalItems = getItems()\n const activeItem = useRef(initialActiveItem)\n const mainCarouselWrapperRef = useRef<HTMLDivElement | null>(null)\n const carouselTrackWrapperRef = useRef<HTMLDivElement | null>(null)\n const isDragging = useRef(false)\n const isAnimating = useRef(false)\n const windowIsHidden = useRef(false)\n const currentWindowWidth = useRef(0)\n const fluidTotalWrapperScrollValue = useRef(0)\n const slideFluidEndReached = useRef(false)\n const initialWindowWidth = useRef(0)\n\n const [carouselStyles, setCarouselStyles] = useSpring(() => ({\n y: 0,\n x: 0,\n config: springConfig,\n onChange: ({ value }) => {\n if (mainCarouselWrapperRef.current && freeScroll) {\n mainCarouselWrapperRef.current[\n carouselSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ] = Math.abs(value[carouselSlideAxis])\n }\n },\n }))\n function getCarouselItem() {\n return carouselTrackWrapperRef.current?.querySelector('.use-spring-carousel-item')\n }\n const getMainCarouselWrapperWidth = useCallback(() => {\n if (!mainCarouselWrapperRef.current) {\n throw new Error('mainCarouselWrapperRef is not available')\n }\n return mainCarouselWrapperRef.current.getBoundingClientRect()[\n carouselSlideAxis === 'x' ? 'width' : 'height'\n ]\n }, [carouselSlideAxis])\n const getCarouselItemWidth = useCallback(() => {\n const carouselItem = getCarouselItem()\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 }, [carouselSlideAxis, gutter])\n const getCurrentSlidedValue = useCallback(() => {\n return carouselStyles[carouselSlideAxis].get()\n }, [carouselSlideAxis, carouselStyles])\n const getIfItemsNotFillTheCarousel = useCallback(() => {\n return getCarouselItemWidth() * items.length < getMainCarouselWrapperWidth()\n }, [getCarouselItemWidth, getMainCarouselWrapperWidth, items.length])\n const getFluidWrapperScrollValue = useCallback(() => {\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 }, [carouselSlideAxis])\n const getIsFirstItem = useCallback(() => {\n return getCurrentActiveItem() === 0\n }, [])\n const getSlideValue = useCallback(() => {\n if (!carouselTrackWrapperRef.current) {\n return 0\n }\n const itemVal = getCarouselItemWidth()\n\n if (itemsPerSlide === 'fluid' && typeof slideAmount === 'number') {\n if (slideAmount < itemVal) {\n throw new Error('slideAmount must be greater than the width of a single item.')\n }\n return slideAmount\n }\n return itemVal\n }, [getCarouselItemWidth, itemsPerSlide, slideAmount])\n const adjustCarouselWrapperPosition = useCallback(\n (ref: HTMLDivElement) => {\n const positionProperty = carouselSlideAxis === 'x' ? 'left' : 'top'\n function getDefaultPositionValue() {\n return getCarouselItemWidth() * items.length\n }\n function setPosition(v: number) {\n ref.style.top = '0px'\n ref.style.left = '0px'\n if (withLoop) {\n ref.style[positionProperty] = `-${v - startEndGutter}px`\n }\n }\n function setStartPosition() {\n setPosition(getDefaultPositionValue())\n }\n\n if (itemsPerSlide !== 'fluid' && typeof itemsPerSlide === 'number') {\n function setCenterPosition() {\n setPosition(\n getDefaultPositionValue() -\n getSlideValue() * Math.round(((itemsPerSlide as number) - 1) / 2),\n )\n }\n function setEndPosition() {\n setPosition(\n getDefaultPositionValue() -\n getSlideValue() * Math.round((itemsPerSlide as number) - 1),\n )\n }\n\n if (itemsPerSlide > 1) {\n switch (initialStartingPosition) {\n default:\n case 'start': {\n setStartPosition()\n break\n }\n case 'center': {\n setCenterPosition()\n break\n }\n case 'end': {\n setEndPosition()\n break\n }\n }\n } else {\n setStartPosition()\n }\n } else {\n setStartPosition()\n }\n },\n [\n carouselSlideAxis,\n itemsPerSlide,\n getCarouselItemWidth,\n items.length,\n startEndGutter,\n getSlideValue,\n initialStartingPosition,\n withLoop,\n ],\n )\n\n const handleResize = useCallback(() => {\n if (window.innerWidth === currentWindowWidth.current || freeScroll) {\n return\n }\n currentWindowWidth.current = window.innerWidth\n\n if (itemsPerSlide === 'fluid') {\n if (getIfItemsNotFillTheCarousel()) {\n setCarouselStyles.start({\n immediate: true,\n [carouselSlideAxis]: 0,\n })\n return\n }\n fluidTotalWrapperScrollValue.current = getFluidWrapperScrollValue()\n const diff = currentWindowWidth.current - initialWindowWidth.current\n\n if (slideFluidEndReached.current) {\n const nextValue = -fluidTotalWrapperScrollValue.current\n setCarouselStyles.start({\n immediate: true,\n [carouselSlideAxis]: nextValue,\n })\n } else {\n const nextValue = getCurrentSlidedValue() + diff\n setCarouselStyles.start({\n immediate: true,\n [carouselSlideAxis]: nextValue,\n })\n }\n\n initialWindowWidth.current = window.innerWidth\n } else {\n setCarouselStyles.start({\n immediate: true,\n x: 0,\n y: 0,\n })\n setCarouselStyles.start({\n immediate: true,\n [carouselSlideAxis]: -(getSlideValue() * getCurrentActiveItem()),\n })\n }\n adjustCarouselWrapperPosition(carouselTrackWrapperRef.current!)\n }, [\n itemsPerSlide,\n getIfItemsNotFillTheCarousel,\n getFluidWrapperScrollValue,\n freeScroll,\n setCarouselStyles,\n carouselSlideAxis,\n getCurrentSlidedValue,\n getSlideValue,\n adjustCarouselWrapperPosition,\n ])\n // Custom modules\n const { useListenToCustomEvent, emitObservable } = useCustomEventsModule()\n const { enterFullscreen, exitFullscreen, getIsFullscreen } = useFullscreenModule({\n mainCarouselWrapperRef,\n emitObservable,\n handleResize,\n })\n const { thumbsFragment: _thumbsFragment, handleThumbsScroll } = useThumbsModule({\n withThumbs,\n items,\n thumbsSlideAxis,\n springConfig,\n prepareThumbsData,\n itemsPerSlide,\n getFluidWrapperScrollValue,\n getSlideValue,\n CustomThumbsWrapperComponent,\n })\n\n function getWrapperScrollDirection() {\n if (!mainCarouselWrapperRef.current) {\n throw new Error('Missing mainCarouselWrapperRef.current')\n }\n return mainCarouselWrapperRef.current[\n carouselSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'\n ]\n }\n\n const bindDrag = useDrag(\n props => {\n const isDragging = props.dragging\n const movement = props.offset[carouselSlideAxis === 'x' ? 0 : 1]\n const currentMovement = props.movement[carouselSlideAxis === 'x' ? 0 : 1]\n function cancelDrag() {\n props.cancel()\n }\n function resetAnimation() {\n if (itemsPerSlide === 'fluid') {\n if (\n getIfItemsNotFillTheCarousel() ||\n (getIsFirstItem() && getSlideActionType() === 'prev')\n ) {\n setCarouselStyles.start({\n [carouselSlideAxis]: 0,\n })\n } else if (slideFluidEndReached.current) {\n setCarouselStyles.start({\n [carouselSlideAxis]: -fluidTotalWrapperScrollValue.current,\n })\n } else {\n setCarouselStyles.start({\n [carouselSlideAxis]: getCurrentSlidedValue(),\n })\n }\n } else {\n setCarouselStyles.start({\n [carouselSlideAxis]: -(getCurrentActiveItem() * getSlideValue()),\n })\n }\n }\n\n if (isDragging) {\n setIsDragging(true)\n emitObservable({\n eventName: 'onDrag',\n slideActionType: getSlideActionType(),\n ...props,\n })\n const direction = props.direction[carouselSlideAxis === 'x' ? 0 : 1]\n if (direction > 0) {\n setSlideActionType('prev')\n } else {\n setSlideActionType('next')\n }\n\n if (freeScroll) {\n if (getWrapperScrollDirection() === 0 && direction > 0) {\n cancelDrag()\n } else {\n setCarouselStyles.start({\n from: {\n [carouselSlideAxis]: getWrapperScrollDirection(),\n },\n to: {\n [carouselSlideAxis]:\n direction > 0\n ? getWrapperScrollDirection() - Math.abs(movement)\n : getWrapperScrollDirection() + Math.abs(movement),\n },\n })\n }\n } else {\n setCarouselStyles.start({\n [carouselSlideAxis]: movement,\n })\n }\n\n const prevItemTreshold = currentMovement > draggingSlideTreshold\n const nextItemTreshold = currentMovement < -draggingSlideTreshold\n\n if (\n mainCarouselWrapperRef.current!.getBoundingClientRect().width >=\n items.length * getSlideValue() &&\n itemsPerSlide === 'fluid'\n ) {\n slideFluidEndReached.current = true\n }\n\n if (\n (prevItemTreshold || nextItemTreshold) &&\n getIfItemsNotFillTheCarousel() &&\n itemsPerSlide === 'fluid'\n ) {\n cancelDrag()\n resetAnimation()\n return\n }\n\n if (slideFluidEndReached.current && movement < 0) {\n if (nextItemTreshold) {\n cancelDrag()\n setCarouselStyles.start({\n [carouselSlideAxis]: -fluidTotalWrapperScrollValue.current,\n })\n }\n } else if (nextItemTreshold) {\n cancelDrag()\n if (!withLoop && getIsLastItem()) {\n resetAnimation()\n } else {\n slideToNextItem()\n }\n } else if (prevItemTreshold) {\n cancelDrag()\n if (!withLoop && getIsFirstItem()) {\n resetAnimation()\n } else {\n slideToPrevItem()\n }\n }\n }\n\n if (props.last && !props.pressed && !freeScroll) {\n resetAnimation()\n emitObservable({\n eventName: 'onDrag',\n slideActionType: getSlideActionType(),\n ...props,\n })\n }\n },\n {\n enabled: !disableGestures,\n from: () => [carouselStyles.x.get(), carouselStyles.y.get()],\n },\n )\n\n // Perform some check on first mount\n useMount(() => {\n if (itemsPerSlide !== 'fluid' && !Number.isInteger(itemsPerSlide)) {\n throw new Error(`itemsPerSlide should be an integer.`)\n }\n if (itemsPerSlide > items.length) {\n throw new Error(\n `The itemsPerSlide prop can't be greater than the total length of the items you provide.`,\n )\n }\n if (itemsPerSlide < 1) {\n throw new Error(`The itemsPerSlide prop can't be less than 1.`)\n }\n if (!shouldResizeOnWindowResize) {\n console.warn(\n 'You set shouldResizeOnWindowResize={false}; be aware that the carousel could behave in a strange way if you also use the fullscreen functionality or if you change the mobile orientation.',\n )\n }\n if (initialActiveItem < 0) {\n console.warn('The initialActiveItem cannot be less than 0.')\n }\n if (initialActiveItem > items.length) {\n console.warn(\n 'The initialActiveItem cannot be greater than the total length of the items you provide.',\n )\n }\n })\n useMount(() => {\n fluidTotalWrapperScrollValue.current = getFluidWrapperScrollValue()\n function handleVisibilityChange() {\n if (document.hidden) {\n windowIsHidden.current = true\n } else {\n windowIsHidden.current = false\n }\n }\n if (getIsBrowser()) {\n document.addEventListener('visibilitychange', handleVisibilityChange)\n return () => {\n document.removeEventListener('visibilitychange', handleVisibilityChange)\n }\n }\n })\n useMount(() => {\n initialWindowWidth.current = window.innerWidth\n if (initialActiveItem > 0 && initialActiveItem <= items.length) {\n slideToItem({\n to: initialActiveItem,\n immediate: true,\n })\n setActiveItem(initialActiveItem)\n }\n })\n useEffect(() => {\n function resize() {\n setTimeout(handleResize)\n }\n if (shouldResizeOnWindowResize) {\n window.addEventListener('resize', resize)\n return () => {\n window.removeEventListener('resize', resize)\n }\n }\n }, [handleResize, shouldResizeOnWindowResize])\n useEffect(() => {\n if (carouselTrackWrapperRef.current) {\n if (carouselSlideAxis === 'x') {\n carouselTrackWrapperRef.current.style.top = '0px'\n }\n if (carouselSlideAxis === 'y') {\n carouselTrackWrapperRef.current.style.left = '0px'\n }\n }\n }, [carouselSlideAxis])\n useEffect(() => {\n setTimeout(() => adjustCarouselWrapperPosition(carouselTrackWrapperRef.current!), 150)\n }, [adjustCarouselWrapperPosition, carouselSlideAxis, itemsPerSlide])\n\n function setSlideActionType(type: SlideActionType) {\n slideActionType.current = type\n }\n function getSlideActionType() {\n return slideActionType.current\n }\n function setActiveItem(newItem: number) {\n activeItem.current = newItem\n }\n function getCurrentActiveItem() {\n return activeItem.current\n }\n function getIsAnimating() {\n return isAnimating.current\n }\n function setIsAnimating(val: boolean) {\n isAnimating.current = val\n }\n function setIsDragging(val: boolean) {\n isDragging.current = val\n }\n function getIsDragging() {\n return isDragging.current\n }\n function getPrevItem() {\n const currentActiveItem = getCurrentActiveItem()\n if (currentActiveItem === 0) {\n return items.length - 1\n }\n return currentActiveItem - 1\n }\n function getNextItem() {\n const currentActiveItem = getCurrentActiveItem()\n if (currentActiveItem === items.length - 1) {\n return 0\n }\n return currentActiveItem + 1\n }\n function getIsNextItem(id: string) {\n const itemIndex = findItemIndex(id)\n const activeItem = getCurrentActiveItem()\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 = getCurrentActiveItem()\n if (withLoop && activeItem === 0) {\n return itemIndex === items.length - 1\n }\n return itemIndex === activeItem - 1\n }\n function findItemIndex(id: string) {\n return items.findIndex(item => item.id === id)\n }\n function slideToItem({\n from,\n to = -1,\n customTo,\n immediate = false,\n onRest = () => {},\n }: SlideToItemFnProps) {\n if (!immediate) {\n setActiveItem(to)\n setIsAnimating(true)\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: itemsPerSlide === 'fluid' ? -1 : to,\n id: itemsPerSlide === 'fluid' ? '' : items[to].id,\n },\n })\n }\n\n function getFromValue() {\n if (typeof from === 'number') {\n return {\n from: {\n [carouselSlideAxis]: from,\n },\n }\n }\n return {}\n }\n function getToValue() {\n if (typeof customTo === 'number') {\n return {\n [carouselSlideAxis]: customTo,\n }\n }\n return {\n [carouselSlideAxis]: -(getSlideValue() * to),\n }\n }\n\n setCarouselStyles.start({\n ...getFromValue(),\n to: getToValue(),\n immediate,\n onRest: val => {\n if (val.finished) {\n setIsDragging(false)\n setIsAnimating(false)\n onRest()\n if (!immediate) {\n emitObservable({\n eventName: 'onSlideChange',\n slideActionType: getSlideActionType(),\n currentItem: {\n index: itemsPerSlide === 'fluid' ? -1 : getCurrentActiveItem(),\n id: itemsPerSlide === 'fluid' ? '' : items[getCurrentActiveItem()].id,\n },\n })\n }\n }\n },\n })\n if (enableThumbsWrapperScroll && withThumbs && !immediate) {\n handleThumbsScroll(to, getSlideActionType())\n }\n }\n function getIsLastItem() {\n return getCurrentActiveItem() === items.length - 1\n }\n function slideToPrevItem() {\n setSlideActionType('prev')\n\n if (itemsPerSlide === 'fluid') {\n if (getIfItemsNotFillTheCarousel()) {\n return\n }\n const nextPrevValue = getCurrentSlidedValue() + getSlideValue() + 200\n\n if (freeScroll) {\n const nextValue = mainCarouselWrapperRef.current!.scrollLeft - getSlideValue()\n slideToItem({\n customTo: nextValue < 0 ? 0 : nextValue,\n from: mainCarouselWrapperRef.current!.scrollLeft,\n })\n } else if (nextPrevValue >= 0) {\n if (withLoop) {\n slideToItem({\n from: getCurrentSlidedValue() - getCarouselItemWidth() * items.length,\n customTo:\n getCurrentSlidedValue() -\n getCarouselItemWidth() * items.length +\n getSlideValue(),\n })\n } else {\n slideToItem({\n customTo: 0,\n })\n }\n } else {\n slideToItem({\n customTo: getCurrentSlidedValue() + getSlideValue(),\n })\n }\n if (slideFluidEndReached.current) {\n slideFluidEndReached.current = false\n }\n } else {\n if ((!withLoop && getCurrentActiveItem() === 0) || windowIsHidden.current) {\n return\n }\n\n if (getIsFirstItem()) {\n slideToItem({\n from: getCurrentSlidedValue() - getSlideValue() * items.length,\n to: items.length - 1,\n })\n } else {\n slideToItem({\n to: getPrevItem(),\n })\n }\n }\n }\n function slideToNextItem() {\n setSlideActionType('next')\n\n if (itemsPerSlide === 'fluid') {\n if (getIfItemsNotFillTheCarousel()) {\n return\n }\n const willGoAfterLastFluidItem =\n Math.abs(getCurrentSlidedValue() - getSlideValue()) + 100 >=\n fluidTotalWrapperScrollValue.current\n\n if (freeScroll) {\n slideToItem({\n customTo: mainCarouselWrapperRef.current!.scrollLeft + getSlideValue(),\n from: mainCarouselWrapperRef.current!.scrollLeft,\n })\n } else if (\n withLoop &&\n Math.abs(getCurrentSlidedValue() - getSlideValue()) >=\n items.length * getCarouselItemWidth()\n ) {\n const currentWidth = getCarouselItemWidth() * items.length\n slideToItem({\n from: getCurrentSlidedValue() + currentWidth,\n customTo: getCurrentSlidedValue() + currentWidth - getSlideValue(),\n })\n } else if (slideFluidEndReached.current) {\n return\n } else if (willGoAfterLastFluidItem) {\n slideFluidEndReached.current = true\n slideToItem({\n customTo: -fluidTotalWrapperScrollValue.current,\n })\n } else {\n slideToItem({\n customTo: getCurrentSlidedValue() - getSlideValue(),\n })\n }\n } else {\n if (\n (!withLoop && getCurrentActiveItem() === internalItems.length - 1) ||\n windowIsHidden.current\n ) {\n return\n }\n\n if (getIsLastItem()) {\n slideToItem({\n from: getCurrentSlidedValue() + getSlideValue() * items.length,\n to: 0,\n })\n } else {\n slideToItem({\n to: getNextItem(),\n })\n }\n }\n }\n function _slideToItem(item: string | number) {\n let itemIndex = 0\n\n if (typeof item === 'string') {\n itemIndex = items.findIndex(_item => _item.id === item)\n } else {\n itemIndex = item\n }\n\n if (itemIndex >= items.length) {\n throw Error(\n `The item you want to slide to doesn't exist. This could be due to the fact that \n you provide a wrong id or a higher numeric index.`,\n )\n }\n if (itemIndex === getCurrentActiveItem()) {\n return\n }\n\n const currentItem = findItemIndex(items[getCurrentActiveItem()].id)\n const newActiveItem = findItemIndex(items[itemIndex].id)\n\n if (newActiveItem > currentItem) {\n setSlideActionType('next')\n } else {\n setSlideActionType('prev')\n }\n\n slideToItem({\n to: itemIndex,\n })\n }\n\n const contextProps = {\n useListenToCustomEvent,\n getIsFullscreen,\n enterFullscreen,\n exitFullscreen,\n getIsAnimating,\n getIsDragging,\n getIsNextItem,\n getIsPrevItem,\n slideToPrevItem,\n slideToNextItem,\n ...(typeof itemsPerSlide === 'number'\n ? {\n slideToItem: _slideToItem,\n getIsActiveItem: (id: string) => {\n return findItemIndex(id) === getCurrentActiveItem()\n },\n getCurrentActiveItem: () => ({\n id: items[getCurrentActiveItem()].id,\n index: getCurrentActiveItem(),\n }),\n }\n : {}),\n }\n function getItemStyles() {\n if (typeof itemsPerSlide === 'number') {\n return {\n ...(carouselSlideAxis === 'x'\n ? { marginRight: `${gutter}px` }\n : { marginBottom: `${gutter}px` }),\n flex: `1 0 calc(100% / ${itemsPerSlide} - ${\n (gutter * (itemsPerSlide - 1)) / itemsPerSlide\n }px)`,\n }\n }\n return {\n ...(carouselSlideAxis === 'x'\n ? { marginRight: `${gutter}px` }\n : { marginBottom: `${gutter}px` }),\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 function handleCarouselFragmentRef(ref: HTMLDivElement | null) {\n if (ref) {\n carouselTrackWrapperRef.current = ref\n adjustCarouselWrapperPosition(ref)\n }\n }\n function getOverflowStyles() {\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 function getWheelEvent() {\n if (freeScroll) {\n return {\n onWheel() {\n carouselStyles[carouselSlideAxis].stop()\n },\n }\n }\n return {}\n }\n function getTouchAction() {\n if (!touchAction) {\n if (carouselSlideAxis === 'x') {\n return 'pan-y'\n }\n return 'pan-x'\n }\n return touchAction\n }\n const carouselFragment = (\n <UseSpringCarouselContext.Provider value={contextProps}>\n <div\n ref={mainCarouselWrapperRef}\n className=\"use-spring-carousel-main-wrapper\"\n data-testid=\"use-spring-carousel-wrapper\"\n {...getWheelEvent()}\n // @ts-ignore\n style={{\n display: 'flex',\n position: 'relative',\n width: '100%',\n height: '100%',\n ...getOverflowStyles(),\n }}\n >\n <animated.div\n {...bindDrag()}\n className=\"use-spring-carousel-track-wrapper\"\n data-testid=\"use-spring-carousel-animated-wrapper\"\n ref={handleCarouselFragmentRef}\n style={{\n display: 'flex',\n position: 'relative',\n touchAction: getTouchAction(),\n flexDirection: carouselSlideAxis === 'x' ? 'row' : 'column',\n ...getAnimatedWrapperStyles(),\n ...(freeScroll ? {} : carouselStyles),\n }}\n >\n {internalItems.map(({ id, renderItem }, index) => {\n return (\n <div\n key={`${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 ...getItemStyles(),\n }}\n >\n {renderItem}\n </div>\n )\n })}\n </animated.div>\n </div>\n </UseSpringCarouselContext.Provider>\n )\n const thumbsFragment = (\n <UseSpringCarouselContext.Provider value={contextProps}>\n {_thumbsFragment}\n </UseSpringCarouselContext.Provider>\n )\n\n return {\n ...(contextProps as ReturnHook<T>),\n carouselFragment,\n thumbsFragment,\n }\n}\n\nexport function useSpringCarouselContext<T>() {\n const context = useContext(UseSpringCarouselContext)\n if (!context) {\n throw new Error(\n 'useSpringCarouselContext must be used only inside a component that is rendered inside the Carousel.',\n )\n }\n return context as ReturnHook<T>\n}\n"],"names":["createContext","config","useRef","useSpring","useCallback","useCustomEventsModule","useFullscreenModule","useThumbsModule","useDrag","useMount","getIsBrowser","useEffect","_jsx","animated","useContext"],"mappings":"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"}
|
|
@@ -1,21 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
import { createContext, useContext, useRef, useState } from 'react';
|
|
3
|
-
import { config, useTransition, animated } from 'react-spring';
|
|
4
|
-
import { useDrag } from '@use-gesture/react';
|
|
5
|
-
import { useCustomEventsModule } from './modules/useCustomEventsModule.js';
|
|
6
|
-
import { useFullscreenModule } from './modules/useFullscreenModule.js';
|
|
7
|
-
import { useThumbsModule } from './modules/useThumbsModule.js';
|
|
1
|
+
'use strict';
|
|
8
2
|
|
|
9
|
-
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
var react = require('react');
|
|
7
|
+
var reactSpring = require('react-spring');
|
|
8
|
+
var react$1 = require('@use-gesture/react');
|
|
9
|
+
var useCustomEventsModule = require('./modules/useCustomEventsModule.js');
|
|
10
|
+
var useFullscreenModule = require('./modules/useFullscreenModule.js');
|
|
11
|
+
var useThumbsModule = require('./modules/useThumbsModule.js');
|
|
12
|
+
|
|
13
|
+
const UseTransitionCarouselContext = react.createContext(undefined);
|
|
10
14
|
function useTransitionCarouselContext() {
|
|
11
|
-
const context = useContext(UseTransitionCarouselContext);
|
|
15
|
+
const context = react.useContext(UseTransitionCarouselContext);
|
|
12
16
|
if (!context) {
|
|
13
17
|
throw new Error(`useTransitionCarouselContext isn't being used within the useTransitionCarousel context;
|
|
14
18
|
use the context only inside a component that is rendered within the Carousel.`);
|
|
15
19
|
}
|
|
16
20
|
return context;
|
|
17
21
|
}
|
|
18
|
-
function useTransitionCarousel({ items, withLoop = false, withThumbs = false, springConfig = config.default, thumbsSlideAxis = 'x', enableThumbsWrapperScroll = true, draggingSlideTreshold = 50, prepareThumbsData, toPrevItemSpringProps, toNextItemSpringProps, disableGestures = false, CustomThumbsWrapperComponent, springAnimationProps = {
|
|
22
|
+
function useTransitionCarousel({ items, withLoop = false, withThumbs = false, springConfig = reactSpring.config.default, thumbsSlideAxis = 'x', enableThumbsWrapperScroll = true, draggingSlideTreshold = 50, prepareThumbsData, toPrevItemSpringProps, toNextItemSpringProps, disableGestures = false, CustomThumbsWrapperComponent, springAnimationProps = {
|
|
19
23
|
initial: {
|
|
20
24
|
opacity: 1,
|
|
21
25
|
position: 'relative',
|
|
@@ -33,16 +37,16 @@ function useTransitionCarousel({ items, withLoop = false, withThumbs = false, sp
|
|
|
33
37
|
position: 'absolute',
|
|
34
38
|
},
|
|
35
39
|
}, }) {
|
|
36
|
-
const slideActionType = useRef('next');
|
|
37
|
-
const mainCarouselWrapperRef = useRef(null);
|
|
38
|
-
const isAnimating = useRef(false);
|
|
39
|
-
const [activeItem, setActiveItem] = useState(0);
|
|
40
|
-
const { emitObservable, useListenToCustomEvent } = useCustomEventsModule();
|
|
41
|
-
const { enterFullscreen, exitFullscreen, getIsFullscreen } = useFullscreenModule({
|
|
40
|
+
const slideActionType = react.useRef('next');
|
|
41
|
+
const mainCarouselWrapperRef = react.useRef(null);
|
|
42
|
+
const isAnimating = react.useRef(false);
|
|
43
|
+
const [activeItem, setActiveItem] = react.useState(0);
|
|
44
|
+
const { emitObservable, useListenToCustomEvent } = useCustomEventsModule.useCustomEventsModule();
|
|
45
|
+
const { enterFullscreen, exitFullscreen, getIsFullscreen } = useFullscreenModule.useFullscreenModule({
|
|
42
46
|
emitObservable,
|
|
43
47
|
mainCarouselWrapperRef,
|
|
44
48
|
});
|
|
45
|
-
const { thumbsFragment: _thumbsFragment, handleThumbsScroll } = useThumbsModule({
|
|
49
|
+
const { thumbsFragment: _thumbsFragment, handleThumbsScroll } = useThumbsModule.useThumbsModule({
|
|
46
50
|
items,
|
|
47
51
|
withThumbs,
|
|
48
52
|
thumbsSlideAxis,
|
|
@@ -50,7 +54,7 @@ function useTransitionCarousel({ items, withLoop = false, withThumbs = false, sp
|
|
|
50
54
|
prepareThumbsData,
|
|
51
55
|
CustomThumbsWrapperComponent,
|
|
52
56
|
});
|
|
53
|
-
const bindSwipe = useDrag(({ last, movement: [mx] }) => {
|
|
57
|
+
const bindSwipe = react$1.useDrag(({ last, movement: [mx] }) => {
|
|
54
58
|
if (getIsAnimating()) {
|
|
55
59
|
return;
|
|
56
60
|
}
|
|
@@ -130,7 +134,7 @@ function useTransitionCarousel({ items, withLoop = false, withThumbs = false, sp
|
|
|
130
134
|
},
|
|
131
135
|
};
|
|
132
136
|
}
|
|
133
|
-
const transitions = useTransition(activeItem, {
|
|
137
|
+
const transitions = reactSpring.useTransition(activeItem, {
|
|
134
138
|
config: springConfig,
|
|
135
139
|
...getTransitionConfig(),
|
|
136
140
|
onStart: () => setIsAnimating(true),
|
|
@@ -149,7 +153,7 @@ function useTransitionCarousel({ items, withLoop = false, withThumbs = false, sp
|
|
|
149
153
|
}
|
|
150
154
|
},
|
|
151
155
|
});
|
|
152
|
-
const itemsFragment = transitions((styles, item) => (jsx(animated.div, Object.assign({ style: {
|
|
156
|
+
const itemsFragment = transitions((styles, item) => (jsxRuntime.jsx(reactSpring.animated.div, Object.assign({ style: {
|
|
153
157
|
...styles,
|
|
154
158
|
flex: '1 0 100%',
|
|
155
159
|
width: '100%',
|
|
@@ -324,14 +328,14 @@ function useTransitionCarousel({ items, withLoop = false, withThumbs = false, sp
|
|
|
324
328
|
index: activeItem,
|
|
325
329
|
}),
|
|
326
330
|
};
|
|
327
|
-
const carouselFragment = (jsx(UseTransitionCarouselContext.Provider, Object.assign({ value: contextProps }, { children: jsx("div", Object.assign({ ref: mainCarouselWrapperRef }, bindSwipe(), { style: {
|
|
331
|
+
const carouselFragment = (jsxRuntime.jsx(UseTransitionCarouselContext.Provider, Object.assign({ value: contextProps }, { children: jsxRuntime.jsx("div", Object.assign({ ref: mainCarouselWrapperRef }, bindSwipe(), { style: {
|
|
328
332
|
display: 'flex',
|
|
329
333
|
position: 'relative',
|
|
330
334
|
width: '100%',
|
|
331
335
|
height: '100%',
|
|
332
336
|
overflow: 'hidden',
|
|
333
337
|
} }, { children: itemsFragment }), void 0) }), void 0));
|
|
334
|
-
const thumbsFragment = (jsx(UseTransitionCarouselContext.Provider, Object.assign({ value: contextProps }, { children: _thumbsFragment }), void 0));
|
|
338
|
+
const thumbsFragment = (jsxRuntime.jsx(UseTransitionCarouselContext.Provider, Object.assign({ value: contextProps }, { children: _thumbsFragment }), void 0));
|
|
335
339
|
return {
|
|
336
340
|
carouselFragment,
|
|
337
341
|
thumbsFragment,
|
|
@@ -339,5 +343,6 @@ function useTransitionCarousel({ items, withLoop = false, withThumbs = false, sp
|
|
|
339
343
|
};
|
|
340
344
|
}
|
|
341
345
|
|
|
342
|
-
|
|
346
|
+
exports.useTransitionCarousel = useTransitionCarousel;
|
|
347
|
+
exports.useTransitionCarouselContext = useTransitionCarouselContext;
|
|
343
348
|
//# sourceMappingURL=useTransitionCarousel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTransitionCarousel.js","sources":["../src/useTransitionCarousel.tsx"],"sourcesContent":["import { createContext, useRef, useState, useContext } from 'react'\nimport { useTransition, animated, config } from 'react-spring'\nimport { useDrag } from '@use-gesture/react'\nimport { useCustomEventsModule, useThumbsModule, useFullscreenModule } from './modules'\nimport {\n UseTransitionCarouselContextProps,\n UseTransitionCarouselProps,\n SlideActionType,\n} from './types'\n\nconst UseTransitionCarouselContext = createContext<\n UseTransitionCarouselContextProps | undefined\n>(undefined)\n\nexport function useTransitionCarouselContext() {\n const context = useContext(UseTransitionCarouselContext)\n\n if (!context) {\n throw new Error(`useTransitionCarouselContext isn't being used within the useTransitionCarousel context; \n use the context only inside a component that is rendered within the Carousel.`)\n }\n\n return context\n}\n\nexport function useTransitionCarousel({\n items,\n withLoop = false,\n withThumbs = false,\n springConfig = config.default,\n thumbsSlideAxis = 'x',\n enableThumbsWrapperScroll = true,\n draggingSlideTreshold = 50,\n prepareThumbsData,\n toPrevItemSpringProps,\n toNextItemSpringProps,\n disableGestures = false,\n CustomThumbsWrapperComponent,\n springAnimationProps = {\n initial: {\n opacity: 1,\n position: 'relative',\n },\n from: {\n opacity: 0,\n position: 'absolute',\n },\n enter: {\n opacity: 1,\n position: 'relative',\n },\n leave: {\n opacity: 0,\n position: 'absolute',\n },\n },\n}: UseTransitionCarouselProps) {\n const slideActionType = useRef<SlideActionType>('next')\n const mainCarouselWrapperRef = useRef<HTMLDivElement | null>(null)\n const isAnimating = useRef(false)\n const [activeItem, setActiveItem] = useState(0)\n\n const { emitObservable, useListenToCustomEvent } = useCustomEventsModule()\n const { enterFullscreen, exitFullscreen, getIsFullscreen } = useFullscreenModule({\n emitObservable,\n mainCarouselWrapperRef,\n })\n const { thumbsFragment: _thumbsFragment, handleThumbsScroll } = useThumbsModule({\n items,\n withThumbs,\n thumbsSlideAxis,\n springConfig,\n prepareThumbsData,\n CustomThumbsWrapperComponent,\n })\n\n const bindSwipe = useDrag(\n ({ last, movement: [mx] }) => {\n if (getIsAnimating()) {\n return\n }\n\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) {\n return\n }\n\n slideToNextItem()\n emitObservable({\n eventName: 'onLeftSwipe',\n })\n } else if (prevItemTreshold) {\n if (!withLoop && isFirstItem) {\n return\n }\n\n slideToPrevItem()\n emitObservable({\n eventName: 'onRightSwipe',\n })\n }\n }\n },\n {\n enabled: !disableGestures,\n },\n )\n\n function getTransitionConfig() {\n const slideActionType = getSlideActionType()\n\n if (slideActionType === 'prev' && toPrevItemSpringProps) {\n return {\n initial: {\n ...springAnimationProps.initial,\n },\n from: {\n ...toPrevItemSpringProps.from,\n },\n enter: {\n ...toPrevItemSpringProps.enter,\n },\n leave: {\n ...toPrevItemSpringProps.leave,\n },\n }\n }\n\n if (slideActionType === 'next' && toNextItemSpringProps) {\n return {\n initial: {\n ...springAnimationProps.initial,\n },\n from: {\n ...toNextItemSpringProps.from,\n },\n enter: {\n ...toNextItemSpringProps.enter,\n },\n leave: {\n ...toNextItemSpringProps.leave,\n },\n }\n }\n\n return {\n initial: {\n ...springAnimationProps.initial,\n },\n from: {\n ...springAnimationProps.from,\n },\n enter: {\n ...springAnimationProps.enter,\n },\n leave: {\n ...springAnimationProps.leave,\n },\n }\n }\n\n const transitions = useTransition(activeItem, {\n config: springConfig,\n ...getTransitionConfig(),\n onStart: () => setIsAnimating(true),\n keys: null,\n onRest: val => {\n if (val.finished) {\n setIsAnimating(false)\n emitObservable({\n eventName: 'onSlideChange',\n slideActionType: getSlideActionType(),\n currentItem: {\n index: activeItem,\n id: items[activeItem].id,\n },\n })\n }\n },\n })\n const itemsFragment = transitions((styles, item) => (\n <animated.div\n style={{\n ...styles,\n flex: '1 0 100%',\n width: '100%',\n height: '100%',\n }}\n >\n {items[item].renderItem}\n </animated.div>\n ))\n\n function getIsAnimating() {\n return isAnimating.current\n }\n function setIsAnimating(val: boolean) {\n isAnimating.current = val\n }\n function setSlideActionType(type: SlideActionType) {\n slideActionType.current = type\n }\n function getSlideActionType() {\n return slideActionType.current\n }\n function slideToItem(item: string | number) {\n let itemIndex = 0\n\n if (typeof item === 'string') {\n itemIndex = items.findIndex(_item => _item.id === item)\n } else {\n itemIndex = item\n }\n\n if (itemIndex >= items.length) {\n throw Error(\n `The item you want to slide to doesn't exist. This could be due to the fact that \n you provide a wrong id or a higher numeric index.`,\n )\n }\n\n if (itemIndex === activeItem) {\n return\n }\n\n const currentItem = findItemIndex(items[activeItem].id)\n const newActiveItem = findItemIndex(items[itemIndex].id)\n\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: newActiveItem,\n id: items[itemIndex].id,\n },\n })\n\n if (newActiveItem > currentItem) {\n setSlideActionType('next')\n } else {\n setSlideActionType('prev')\n }\n\n setActiveItem(itemIndex)\n\n if (enableThumbsWrapperScroll && withThumbs) {\n handleThumbsScroll(itemIndex)\n }\n }\n function slideToNextItem() {\n const isLastItem = activeItem === items.length - 1\n\n if (withLoop) {\n setSlideActionType('next')\n if (isLastItem) {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: 0,\n id: items[0].id,\n },\n })\n setActiveItem(0)\n } else {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem + 1,\n id: items[activeItem + 1].id,\n },\n })\n setActiveItem(activeItem + 1)\n }\n } else {\n if (!isLastItem) {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem + 1,\n id: items[activeItem + 1].id,\n },\n })\n setSlideActionType('next')\n setActiveItem(activeItem + 1)\n }\n }\n }\n function slideToPrevItem() {\n const isFirstItem = activeItem === 0\n\n if (withLoop) {\n setSlideActionType('prev')\n if (isFirstItem) {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem - 1,\n id: items[activeItem - 1].id,\n },\n })\n setActiveItem(items.length - 1)\n } else {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem - 1,\n id: items[activeItem - 1].id,\n },\n })\n setActiveItem(activeItem - 1)\n }\n } else {\n if (!isFirstItem) {\n setSlideActionType('prev')\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem - 1,\n id: items[activeItem - 1].id,\n },\n })\n setActiveItem(activeItem - 1)\n }\n }\n }\n function findItemIndex(id: string) {\n return items.findIndex(item => item.id === id)\n }\n function getIsNextItem(id: string) {\n const itemIndex = findItemIndex(id)\n\n if (withLoop && activeItem === items.length - 1) {\n return itemIndex === 0\n }\n\n return itemIndex === activeItem + 1\n }\n function getIsPrevItem(id: string) {\n const itemIndex = findItemIndex(id)\n\n if (withLoop && activeItem === 0) {\n return itemIndex === items.length - 1\n }\n\n return itemIndex === activeItem - 1\n }\n\n const contextProps: UseTransitionCarouselContextProps = {\n activeItem,\n slideToItem,\n slideToNextItem,\n slideToPrevItem,\n enterFullscreen,\n exitFullscreen,\n useListenToCustomEvent,\n getIsNextItem,\n getIsPrevItem,\n getIsAnimating,\n getIsFullscreen,\n getIsActiveItem: id => {\n return findItemIndex(id) === activeItem\n },\n getCurrentActiveItem: () => ({\n id: items[activeItem].id,\n index: activeItem,\n }),\n }\n\n const carouselFragment = (\n <UseTransitionCarouselContext.Provider value={contextProps}>\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 </UseTransitionCarouselContext.Provider>\n )\n\n const thumbsFragment = (\n <UseTransitionCarouselContext.Provider value={contextProps}>\n {_thumbsFragment}\n </UseTransitionCarouselContext.Provider>\n )\n\n return {\n carouselFragment,\n thumbsFragment,\n ...contextProps,\n }\n}\n"],"names":["_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useTransitionCarousel.js","sources":["../src/useTransitionCarousel.tsx"],"sourcesContent":["import { createContext, useRef, useState, useContext } from 'react'\nimport { useTransition, animated, config } from 'react-spring'\nimport { useDrag } from '@use-gesture/react'\nimport { useCustomEventsModule, useThumbsModule, useFullscreenModule } from './modules'\nimport {\n UseTransitionCarouselContextProps,\n UseTransitionCarouselProps,\n SlideActionType,\n} from './types'\n\nconst UseTransitionCarouselContext = createContext<\n UseTransitionCarouselContextProps | undefined\n>(undefined)\n\nexport function useTransitionCarouselContext() {\n const context = useContext(UseTransitionCarouselContext)\n\n if (!context) {\n throw new Error(`useTransitionCarouselContext isn't being used within the useTransitionCarousel context; \n use the context only inside a component that is rendered within the Carousel.`)\n }\n\n return context\n}\n\nexport function useTransitionCarousel({\n items,\n withLoop = false,\n withThumbs = false,\n springConfig = config.default,\n thumbsSlideAxis = 'x',\n enableThumbsWrapperScroll = true,\n draggingSlideTreshold = 50,\n prepareThumbsData,\n toPrevItemSpringProps,\n toNextItemSpringProps,\n disableGestures = false,\n CustomThumbsWrapperComponent,\n springAnimationProps = {\n initial: {\n opacity: 1,\n position: 'relative',\n },\n from: {\n opacity: 0,\n position: 'absolute',\n },\n enter: {\n opacity: 1,\n position: 'relative',\n },\n leave: {\n opacity: 0,\n position: 'absolute',\n },\n },\n}: UseTransitionCarouselProps) {\n const slideActionType = useRef<SlideActionType>('next')\n const mainCarouselWrapperRef = useRef<HTMLDivElement | null>(null)\n const isAnimating = useRef(false)\n const [activeItem, setActiveItem] = useState(0)\n\n const { emitObservable, useListenToCustomEvent } = useCustomEventsModule()\n const { enterFullscreen, exitFullscreen, getIsFullscreen } = useFullscreenModule({\n emitObservable,\n mainCarouselWrapperRef,\n })\n const { thumbsFragment: _thumbsFragment, handleThumbsScroll } = useThumbsModule({\n items,\n withThumbs,\n thumbsSlideAxis,\n springConfig,\n prepareThumbsData,\n CustomThumbsWrapperComponent,\n })\n\n const bindSwipe = useDrag(\n ({ last, movement: [mx] }) => {\n if (getIsAnimating()) {\n return\n }\n\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) {\n return\n }\n\n slideToNextItem()\n emitObservable({\n eventName: 'onLeftSwipe',\n })\n } else if (prevItemTreshold) {\n if (!withLoop && isFirstItem) {\n return\n }\n\n slideToPrevItem()\n emitObservable({\n eventName: 'onRightSwipe',\n })\n }\n }\n },\n {\n enabled: !disableGestures,\n },\n )\n\n function getTransitionConfig() {\n const slideActionType = getSlideActionType()\n\n if (slideActionType === 'prev' && toPrevItemSpringProps) {\n return {\n initial: {\n ...springAnimationProps.initial,\n },\n from: {\n ...toPrevItemSpringProps.from,\n },\n enter: {\n ...toPrevItemSpringProps.enter,\n },\n leave: {\n ...toPrevItemSpringProps.leave,\n },\n }\n }\n\n if (slideActionType === 'next' && toNextItemSpringProps) {\n return {\n initial: {\n ...springAnimationProps.initial,\n },\n from: {\n ...toNextItemSpringProps.from,\n },\n enter: {\n ...toNextItemSpringProps.enter,\n },\n leave: {\n ...toNextItemSpringProps.leave,\n },\n }\n }\n\n return {\n initial: {\n ...springAnimationProps.initial,\n },\n from: {\n ...springAnimationProps.from,\n },\n enter: {\n ...springAnimationProps.enter,\n },\n leave: {\n ...springAnimationProps.leave,\n },\n }\n }\n\n const transitions = useTransition(activeItem, {\n config: springConfig,\n ...getTransitionConfig(),\n onStart: () => setIsAnimating(true),\n keys: null,\n onRest: val => {\n if (val.finished) {\n setIsAnimating(false)\n emitObservable({\n eventName: 'onSlideChange',\n slideActionType: getSlideActionType(),\n currentItem: {\n index: activeItem,\n id: items[activeItem].id,\n },\n })\n }\n },\n })\n const itemsFragment = transitions((styles, item) => (\n <animated.div\n style={{\n ...styles,\n flex: '1 0 100%',\n width: '100%',\n height: '100%',\n }}\n >\n {items[item].renderItem}\n </animated.div>\n ))\n\n function getIsAnimating() {\n return isAnimating.current\n }\n function setIsAnimating(val: boolean) {\n isAnimating.current = val\n }\n function setSlideActionType(type: SlideActionType) {\n slideActionType.current = type\n }\n function getSlideActionType() {\n return slideActionType.current\n }\n function slideToItem(item: string | number) {\n let itemIndex = 0\n\n if (typeof item === 'string') {\n itemIndex = items.findIndex(_item => _item.id === item)\n } else {\n itemIndex = item\n }\n\n if (itemIndex >= items.length) {\n throw Error(\n `The item you want to slide to doesn't exist. This could be due to the fact that \n you provide a wrong id or a higher numeric index.`,\n )\n }\n\n if (itemIndex === activeItem) {\n return\n }\n\n const currentItem = findItemIndex(items[activeItem].id)\n const newActiveItem = findItemIndex(items[itemIndex].id)\n\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: newActiveItem,\n id: items[itemIndex].id,\n },\n })\n\n if (newActiveItem > currentItem) {\n setSlideActionType('next')\n } else {\n setSlideActionType('prev')\n }\n\n setActiveItem(itemIndex)\n\n if (enableThumbsWrapperScroll && withThumbs) {\n handleThumbsScroll(itemIndex)\n }\n }\n function slideToNextItem() {\n const isLastItem = activeItem === items.length - 1\n\n if (withLoop) {\n setSlideActionType('next')\n if (isLastItem) {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: 0,\n id: items[0].id,\n },\n })\n setActiveItem(0)\n } else {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem + 1,\n id: items[activeItem + 1].id,\n },\n })\n setActiveItem(activeItem + 1)\n }\n } else {\n if (!isLastItem) {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem + 1,\n id: items[activeItem + 1].id,\n },\n })\n setSlideActionType('next')\n setActiveItem(activeItem + 1)\n }\n }\n }\n function slideToPrevItem() {\n const isFirstItem = activeItem === 0\n\n if (withLoop) {\n setSlideActionType('prev')\n if (isFirstItem) {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem - 1,\n id: items[activeItem - 1].id,\n },\n })\n setActiveItem(items.length - 1)\n } else {\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem - 1,\n id: items[activeItem - 1].id,\n },\n })\n setActiveItem(activeItem - 1)\n }\n } else {\n if (!isFirstItem) {\n setSlideActionType('prev')\n emitObservable({\n eventName: 'onSlideStartChange',\n slideActionType: getSlideActionType(),\n nextItem: {\n index: activeItem - 1,\n id: items[activeItem - 1].id,\n },\n })\n setActiveItem(activeItem - 1)\n }\n }\n }\n function findItemIndex(id: string) {\n return items.findIndex(item => item.id === id)\n }\n function getIsNextItem(id: string) {\n const itemIndex = findItemIndex(id)\n\n if (withLoop && activeItem === items.length - 1) {\n return itemIndex === 0\n }\n\n return itemIndex === activeItem + 1\n }\n function getIsPrevItem(id: string) {\n const itemIndex = findItemIndex(id)\n\n if (withLoop && activeItem === 0) {\n return itemIndex === items.length - 1\n }\n\n return itemIndex === activeItem - 1\n }\n\n const contextProps: UseTransitionCarouselContextProps = {\n activeItem,\n slideToItem,\n slideToNextItem,\n slideToPrevItem,\n enterFullscreen,\n exitFullscreen,\n useListenToCustomEvent,\n getIsNextItem,\n getIsPrevItem,\n getIsAnimating,\n getIsFullscreen,\n getIsActiveItem: id => {\n return findItemIndex(id) === activeItem\n },\n getCurrentActiveItem: () => ({\n id: items[activeItem].id,\n index: activeItem,\n }),\n }\n\n const carouselFragment = (\n <UseTransitionCarouselContext.Provider value={contextProps}>\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 </UseTransitionCarouselContext.Provider>\n )\n\n const thumbsFragment = (\n <UseTransitionCarouselContext.Provider value={contextProps}>\n {_thumbsFragment}\n </UseTransitionCarouselContext.Provider>\n )\n\n return {\n carouselFragment,\n thumbsFragment,\n ...contextProps,\n }\n}\n"],"names":["createContext","useContext","config","useRef","useState","useCustomEventsModule","useFullscreenModule","useThumbsModule","useDrag","useTransition","_jsx","animated"],"mappings":"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"}
|
package/dist/utils.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var react = require('react');
|
|
2
6
|
|
|
3
7
|
function useMount(callback) {
|
|
4
|
-
const isMounted = useRef(false);
|
|
5
|
-
useEffect(() => {
|
|
8
|
+
const isMounted = react.useRef(false);
|
|
9
|
+
react.useEffect(() => {
|
|
6
10
|
if (!isMounted.current) {
|
|
7
11
|
const clean = callback();
|
|
8
12
|
isMounted.current = true;
|
|
@@ -17,5 +21,6 @@ function getIsBrowser() {
|
|
|
17
21
|
return typeof window !== 'undefined';
|
|
18
22
|
}
|
|
19
23
|
|
|
20
|
-
|
|
24
|
+
exports.getIsBrowser = getIsBrowser;
|
|
25
|
+
exports.useMount = useMount;
|
|
21
26
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../src/utils.ts"],"sourcesContent":["import { useRef, useEffect } from 'react'\n\ntype Callback = () => void | (() => void)\n\nexport function useMount(callback: Callback) {\n const isMounted = useRef(false)\n\n useEffect(() => {\n if (!isMounted.current) {\n const clean = callback()\n isMounted.current = true\n\n return () => {\n clean && clean()\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n}\n\nexport function getIsBrowser() {\n return typeof window !== 'undefined'\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../src/utils.ts"],"sourcesContent":["import { useRef, useEffect } from 'react'\n\ntype Callback = () => void | (() => void)\n\nexport function useMount(callback: Callback) {\n const isMounted = useRef(false)\n\n useEffect(() => {\n if (!isMounted.current) {\n const clean = callback()\n isMounted.current = true\n\n return () => {\n clean && clean()\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n}\n\nexport function getIsBrowser() {\n return typeof window !== 'undefined'\n}\n"],"names":["useRef","useEffect"],"mappings":";;;;;;SAIgB,QAAQ,CAAC,QAAkB;IACzC,MAAM,SAAS,GAAGA,YAAM,CAAC,KAAK,CAAC,CAAA;IAE/BC,eAAS,CAAC;QACR,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YACtB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;YACxB,SAAS,CAAC,OAAO,GAAG,IAAI,CAAA;YAExB,OAAO;gBACL,KAAK,IAAI,KAAK,EAAE,CAAA;aACjB,CAAA;SACF;;KAEF,EAAE,EAAE,CAAC,CAAA;AACR,CAAC;SAEe,YAAY;IAC1B,OAAO,OAAO,MAAM,KAAK,WAAW,CAAA;AACtC;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-spring-carousel",
|
|
3
|
-
"version": "1.9.29-
|
|
3
|
+
"version": "1.9.29-beta35",
|
|
4
4
|
"description": "A new Carousel experience for the web",
|
|
5
5
|
"homepage": "https://react-spring-carousel-js.emilianobucci.com",
|
|
6
6
|
"repository": "https://github.com/Emiliano-Bucci/react-spring-carousel-js",
|