react-spring-carousel 1.9.29-beta33 → 1.9.29-beta34
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 +4 -5
- package/dist/index.js.map +1 -1
- package/dist/modules/useCustomEventsModule.js +21 -1
- package/dist/modules/useCustomEventsModule.js.map +1 -1
- package/dist/modules/useFullscreenModule.js +55 -1
- package/dist/modules/useFullscreenModule.js.map +1 -1
- package/dist/modules/useThumbsModule.js +180 -1
- package/dist/modules/useThumbsModule.js.map +1 -1
- package/dist/useSpringCarousel.js +792 -1
- package/dist/useSpringCarousel.js.map +1 -1
- package/dist/useTransitionCarousel.js +342 -1
- package/dist/useTransitionCarousel.js.map +1 -1
- package/dist/utils.js +20 -1
- package/dist/utils.js.map +1 -1
- package/package.json +1 -2
package/dist/index.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
;(exports.useSpringCarousel = e), (exports.useTransitionCarousel = r)
|
|
1
|
+
import * as useSpringCarousel from './useSpringCarousel.js';
|
|
2
|
+
export { useSpringCarousel };
|
|
3
|
+
import * as useTransitionCarousel from './useTransitionCarousel.js';
|
|
4
|
+
export { useTransitionCarousel };
|
|
6
5
|
//# 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,2 +1,22 @@
|
|
|
1
|
-
|
|
1
|
+
import { useRef, useEffect } from 'react';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
|
|
4
|
+
function useCustomEventsModule() {
|
|
5
|
+
const eventsObserverRef = useRef(new Subject());
|
|
6
|
+
function useListenToCustomEvent(fn) {
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
const subscribe = eventsObserverRef.current.subscribe(fn);
|
|
9
|
+
return () => subscribe.unsubscribe();
|
|
10
|
+
}, [fn]);
|
|
11
|
+
}
|
|
12
|
+
const emitObservable = data => {
|
|
13
|
+
eventsObserverRef.current.next(data);
|
|
14
|
+
};
|
|
15
|
+
return {
|
|
16
|
+
useListenToCustomEvent,
|
|
17
|
+
emitObservable,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export { useCustomEventsModule };
|
|
2
22
|
//# 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":[
|
|
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":";;;SAIgB,qBAAqB;IACnC,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,OAAO,EAAyB,CAAC,CAAA;IAEtE,SAAS,sBAAsB,CAAC,EAAwB;QACtD,SAAS,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,2 +1,56 @@
|
|
|
1
|
-
|
|
1
|
+
import { useRef, useEffect } from 'react';
|
|
2
|
+
import screenfull from 'screenfull';
|
|
3
|
+
|
|
4
|
+
function useFullscreenModule({ mainCarouselWrapperRef, emitObservable, handleResize, }) {
|
|
5
|
+
const isFullscreen = useRef(false);
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
function handleFullscreenChange() {
|
|
8
|
+
if (document.fullscreenElement) {
|
|
9
|
+
setIsFullscreen(true);
|
|
10
|
+
emitObservable({
|
|
11
|
+
eventName: 'onFullscreenChange',
|
|
12
|
+
isFullscreen: true,
|
|
13
|
+
});
|
|
14
|
+
handleResize && handleResize();
|
|
15
|
+
}
|
|
16
|
+
if (!document.fullscreenElement) {
|
|
17
|
+
setIsFullscreen(false);
|
|
18
|
+
emitObservable({
|
|
19
|
+
eventName: 'onFullscreenChange',
|
|
20
|
+
isFullscreen: false,
|
|
21
|
+
});
|
|
22
|
+
handleResize && handleResize();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (screenfull.isEnabled) {
|
|
26
|
+
screenfull.on('change', handleFullscreenChange);
|
|
27
|
+
return () => {
|
|
28
|
+
if (screenfull.isEnabled) {
|
|
29
|
+
screenfull.off('change', handleFullscreenChange);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
function setIsFullscreen(_isFullscreen) {
|
|
35
|
+
isFullscreen.current = _isFullscreen;
|
|
36
|
+
}
|
|
37
|
+
function getIsFullscreen() {
|
|
38
|
+
return isFullscreen.current;
|
|
39
|
+
}
|
|
40
|
+
function enterFullscreen(elementRef) {
|
|
41
|
+
if (screenfull.isEnabled) {
|
|
42
|
+
screenfull.request((elementRef || mainCarouselWrapperRef.current));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function exitFullscreen() {
|
|
46
|
+
screenfull.isEnabled && screenfull.exit();
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
enterFullscreen,
|
|
50
|
+
exitFullscreen,
|
|
51
|
+
getIsFullscreen,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export { useFullscreenModule };
|
|
2
56
|
//# 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":[
|
|
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":";;;SAUgB,mBAAmB,CAAC,EAClC,sBAAsB,EACtB,cAAc,EACd,YAAY,GACK;IACjB,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAElC,SAAS,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,IAAI,UAAU,CAAC,SAAS,EAAE;YACxB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAA;YAC/C,OAAO;gBACL,IAAI,UAAU,CAAC,SAAS,EAAE;oBACxB,UAAU,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,IAAI,UAAU,CAAC,SAAS,EAAE;YACxB,UAAU,CAAC,OAAO,EAAE,UAAU,IAAI,sBAAsB,CAAC,OAAO,EAAa,CAAA;SAC9E;KACF;IAED,SAAS,cAAc;QACrB,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,IAAI,EAAE,CAAA;KAC1C;IAED,OAAO;QACL,eAAe;QACf,cAAc;QACd,eAAe;KAChB,CAAA;AACH;;;;"}
|
|
@@ -1,2 +1,181 @@
|
|
|
1
|
-
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { forwardRef, useRef } from 'react';
|
|
3
|
+
import { animated, useSpring } from 'react-spring';
|
|
4
|
+
import { useMount } from '../utils.js';
|
|
5
|
+
|
|
6
|
+
const InternalWrapper = forwardRef(({ children, ...rest }, ref) => {
|
|
7
|
+
return (jsx(animated.div, Object.assign({}, rest, { ref: ref }, { children: children }), void 0));
|
|
8
|
+
});
|
|
9
|
+
function useThumbsModule({ items, withThumbs, thumbsSlideAxis = 'x', springConfig, prepareThumbsData, itemsPerSlide, getFluidWrapperScrollValue = () => 0, getSlideValue = () => 0, CustomThumbsWrapperComponent, }) {
|
|
10
|
+
const internalThumbsWrapperRef = useRef(null);
|
|
11
|
+
const [thumbListStyles, setThumbListStyles] = useSpring(() => ({
|
|
12
|
+
x: 0,
|
|
13
|
+
y: 0,
|
|
14
|
+
config: springConfig,
|
|
15
|
+
onChange: ({ value }) => {
|
|
16
|
+
if (internalThumbsWrapperRef.current) {
|
|
17
|
+
internalThumbsWrapperRef.current[thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'] = Math.abs(value[thumbsSlideAxis]);
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
}));
|
|
21
|
+
useMount(() => {
|
|
22
|
+
if (withThumbs && !internalThumbsWrapperRef.current) {
|
|
23
|
+
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
|
+
}
|
|
25
|
+
});
|
|
26
|
+
function getCurrentThumbScrollValue() {
|
|
27
|
+
return internalThumbsWrapperRef.current[thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'];
|
|
28
|
+
}
|
|
29
|
+
function getThumbsTotalScrollableValue() {
|
|
30
|
+
return Math.round(Number(internalThumbsWrapperRef.current?.[thumbsSlideAxis === 'x' ? 'scrollWidth' : 'scrollHeight']) -
|
|
31
|
+
internalThumbsWrapperRef.current.getBoundingClientRect()[thumbsSlideAxis === 'x' ? 'width' : 'height']);
|
|
32
|
+
}
|
|
33
|
+
function getThumbSlideValue() {
|
|
34
|
+
const thumbSlideTotal = Math.round(getFluidWrapperScrollValue() / getSlideValue());
|
|
35
|
+
const totalScrollableValue = getThumbsTotalScrollableValue();
|
|
36
|
+
return totalScrollableValue / thumbSlideTotal;
|
|
37
|
+
}
|
|
38
|
+
function handleThumbsScroll(activeItem, actionType) {
|
|
39
|
+
if (itemsPerSlide === 'fluid') {
|
|
40
|
+
const totalScrollableValue = getThumbsTotalScrollableValue();
|
|
41
|
+
if (actionType === 'next') {
|
|
42
|
+
const nextValue = getCurrentThumbScrollValue() + getThumbSlideValue();
|
|
43
|
+
setThumbListStyles.start({
|
|
44
|
+
from: {
|
|
45
|
+
[thumbsSlideAxis]: getCurrentThumbScrollValue(),
|
|
46
|
+
},
|
|
47
|
+
to: {
|
|
48
|
+
[thumbsSlideAxis]: nextValue > totalScrollableValue ? totalScrollableValue : nextValue,
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
if (actionType === 'prev') {
|
|
53
|
+
const nextValue = getCurrentThumbScrollValue() - getThumbSlideValue();
|
|
54
|
+
setThumbListStyles.start({
|
|
55
|
+
from: {
|
|
56
|
+
[thumbsSlideAxis]: getCurrentThumbScrollValue(),
|
|
57
|
+
},
|
|
58
|
+
to: {
|
|
59
|
+
[thumbsSlideAxis]: nextValue < 0 ? 0 : nextValue,
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
function getOffsetDirection() {
|
|
66
|
+
return thumbsSlideAxis === 'x' ? 'offsetLeft' : 'offsetTop';
|
|
67
|
+
}
|
|
68
|
+
function getOffsetDimension() {
|
|
69
|
+
return thumbsSlideAxis === 'x' ? 'offsetWidth' : 'offsetHeight';
|
|
70
|
+
}
|
|
71
|
+
function getScrollDirecton() {
|
|
72
|
+
return thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop';
|
|
73
|
+
}
|
|
74
|
+
function getThumbNode() {
|
|
75
|
+
return internalThumbsWrapperRef.current.querySelector(`#thumb-${items[activeItem].id}`);
|
|
76
|
+
}
|
|
77
|
+
function getThumbOffsetPosition({ thumbNode, offsetDirection, offsetDimension, }) {
|
|
78
|
+
return thumbNode[offsetDirection] + thumbNode[offsetDimension] / 2;
|
|
79
|
+
}
|
|
80
|
+
function getThumbScrollDimension({ thumbWrapper, offsetDimension, }) {
|
|
81
|
+
return thumbWrapper[offsetDimension] / 2;
|
|
82
|
+
}
|
|
83
|
+
function getScrollFromValue({ thumbWrapper, scrollDirection, }) {
|
|
84
|
+
return thumbWrapper[scrollDirection];
|
|
85
|
+
}
|
|
86
|
+
function getScrollToValue({ thumbWrapper, thumbOffsetPosition, thumbScrollDimension, offsetDimension, }) {
|
|
87
|
+
const scrollDimensionProperty = thumbsSlideAxis === 'x' ? 'scrollWidth' : 'scrollHeight';
|
|
88
|
+
if (activeItem === items.length - 1 ||
|
|
89
|
+
thumbOffsetPosition - thumbScrollDimension >
|
|
90
|
+
thumbWrapper[scrollDimensionProperty] - thumbWrapper[offsetDimension]) {
|
|
91
|
+
return thumbWrapper[scrollDimensionProperty] - thumbWrapper[offsetDimension];
|
|
92
|
+
}
|
|
93
|
+
if (activeItem === 0) {
|
|
94
|
+
return 0;
|
|
95
|
+
}
|
|
96
|
+
return thumbOffsetPosition - thumbScrollDimension;
|
|
97
|
+
}
|
|
98
|
+
const thumbNode = getThumbNode();
|
|
99
|
+
if (thumbNode) {
|
|
100
|
+
const thumbWrapper = internalThumbsWrapperRef.current;
|
|
101
|
+
const offsetDirection = getOffsetDirection();
|
|
102
|
+
const offsetDimension = getOffsetDimension();
|
|
103
|
+
const scrollDirection = getScrollDirecton();
|
|
104
|
+
const thumbOffsetPosition = getThumbOffsetPosition({
|
|
105
|
+
thumbNode,
|
|
106
|
+
offsetDimension,
|
|
107
|
+
offsetDirection,
|
|
108
|
+
});
|
|
109
|
+
const thumbScrollDimension = getThumbScrollDimension({
|
|
110
|
+
thumbWrapper,
|
|
111
|
+
offsetDimension,
|
|
112
|
+
});
|
|
113
|
+
setThumbListStyles.start({
|
|
114
|
+
from: {
|
|
115
|
+
[thumbsSlideAxis]: getScrollFromValue({
|
|
116
|
+
thumbWrapper,
|
|
117
|
+
scrollDirection,
|
|
118
|
+
}),
|
|
119
|
+
},
|
|
120
|
+
to: {
|
|
121
|
+
[thumbsSlideAxis]: getScrollToValue({
|
|
122
|
+
thumbWrapper,
|
|
123
|
+
thumbOffsetPosition,
|
|
124
|
+
thumbScrollDimension,
|
|
125
|
+
offsetDimension,
|
|
126
|
+
}),
|
|
127
|
+
},
|
|
128
|
+
onChange: val => {
|
|
129
|
+
if (thumbsSlideAxis === 'x') {
|
|
130
|
+
// @ts-ignore
|
|
131
|
+
internalThumbsWrapperRef.current.scrollLeft = val.x;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
// @ts-ignore
|
|
135
|
+
internalThumbsWrapperRef.current.scrollTop = val.y;
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
function handlePrepareThumbsDate() {
|
|
143
|
+
function getPreparedItems(_items) {
|
|
144
|
+
return _items.map(i => ({
|
|
145
|
+
id: i.id,
|
|
146
|
+
renderThumb: i.renderThumb,
|
|
147
|
+
}));
|
|
148
|
+
}
|
|
149
|
+
if (prepareThumbsData) {
|
|
150
|
+
return prepareThumbsData(getPreparedItems(items));
|
|
151
|
+
}
|
|
152
|
+
return getPreparedItems(items);
|
|
153
|
+
}
|
|
154
|
+
const Wrapper = CustomThumbsWrapperComponent
|
|
155
|
+
? animated(CustomThumbsWrapperComponent)
|
|
156
|
+
: InternalWrapper;
|
|
157
|
+
const thumbsFragment = withThumbs ? (jsx(Wrapper, Object.assign({ ref: internalThumbsWrapperRef, className: "use-spring-carousel-thumbs-wrapper", onWheel: () => {
|
|
158
|
+
thumbListStyles[thumbsSlideAxis].stop();
|
|
159
|
+
}, style: {
|
|
160
|
+
display: 'flex',
|
|
161
|
+
flex: 1,
|
|
162
|
+
position: 'relative',
|
|
163
|
+
flexDirection: thumbsSlideAxis === 'x' ? 'row' : 'column',
|
|
164
|
+
...(thumbsSlideAxis === 'x'
|
|
165
|
+
? { overflowX: 'auto' }
|
|
166
|
+
: {
|
|
167
|
+
overflowY: 'auto',
|
|
168
|
+
maxHeight: '100%',
|
|
169
|
+
}),
|
|
170
|
+
} }, { children: handlePrepareThumbsDate().map(({ id, renderThumb }) => {
|
|
171
|
+
const thumbId = `thumb-${id}`;
|
|
172
|
+
return (jsx("div", Object.assign({ id: thumbId }, { children: renderThumb }), thumbId));
|
|
173
|
+
}) }), void 0)) : null;
|
|
174
|
+
return {
|
|
175
|
+
thumbsFragment,
|
|
176
|
+
handleThumbsScroll,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export { useThumbsModule };
|
|
2
181
|
//# 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":["InternalWrapper","forwardRef","children","rest","ref","_jsx","animated","div","items","withThumbs","thumbsSlideAxis","springConfig","prepareThumbsData","itemsPerSlide","getFluidWrapperScrollValue","getSlideValue","CustomThumbsWrapperComponent","internalThumbsWrapperRef","useRef","thumbListStyles","setThumbListStyles","useSpring","x","y","config","onChange","value","current","Math","abs","getCurrentThumbScrollValue","getThumbsTotalScrollableValue","round","Number","getBoundingClientRect","getThumbSlideValue","thumbSlideTotal","useMount","Error","Wrapper","thumbsFragment","className","onWheel","stop","style","display","flex","position","flexDirection","overflowX","overflowY","maxHeight","getPreparedItems","_items","map","i","id","renderThumb","handlePrepareThumbsDate","thumbId","handleThumbsScroll","activeItem","actionType","totalScrollableValue","nextValue","start","from","[object Object]","to","thumbNode","querySelector","thumbWrapper","offsetDimension","scrollDirection","thumbOffsetPosition","offsetDirection","getThumbOffsetPosition","thumbScrollDimension","getThumbScrollDimension","getScrollFromValue","scrollDimensionProperty","length","getScrollToValue","val","scrollLeft","scrollTop"],"mappings":"6KA+BA,MAAMA,EAAkBC,cACtB,EAAGC,SAAAA,KAAaC,GAAQC,IAEpBC,MAACC,WAASC,qBAAQJ,GAAMC,IAAKA,aAC1BF,gDAMuBM,MAC9BA,EAAKC,WACLA,EAAUC,gBACVA,EAAkB,IAAGC,aACrBA,EAAYC,kBACZA,EAAiBC,cACjBA,EAAaC,2BACbA,EAA6B,KAAM,GAACC,cACpCA,EAAgB,KAAM,GAACC,6BACvBA,IAEA,MAAMC,EAA2BC,SAA8B,OACxDC,EAAiBC,GAAsBC,aAAU,MACtDC,EAAG,EACHC,EAAG,EACHC,OAAQb,EACRc,SAAU,EAAGC,MAAAA,MACPT,EAAyBU,UAC3BV,EAAyBU,QACH,MAApBjB,EAA0B,aAAe,aACvCkB,KAAKC,IAAIH,EAAMhB,UAazB,SAASoB,IACP,OAAOb,EAAyBU,QACV,MAApBjB,EAA0B,aAAe,aAG7C,SAASqB,IACP,OAAOH,KAAKI,MACVC,OACEhB,EAAyBU,UACH,MAApBjB,EAA0B,cAAgB,iBAG5CO,EAAyBU,QAASO,wBACZ,MAApBxB,EAA0B,QAAU,WAK5C,SAASyB,IACP,MAAMC,EAAkBR,KAAKI,MAAMlB,IAA+BC,KAElE,OAD6BgB,IACCK,EA7BhCC,YAAS,KACP,GAAI5B,IAAeQ,EAAyBU,QAC1C,MAAM,IAAIW,MACR,gIA6LN,MAAMC,EAAUvB,EACZV,WAASU,GACThB,EAiCJ,MAAO,CACLwC,eAhCqB/B,EACrBJ,MAACkC,iBACCnC,IAAKa,EACLwB,UAAU,qCACVC,QAAS,KACPvB,EAAgBT,GAAiBiC,QAEnCC,MAAO,CACLC,QAAS,OACTC,KAAM,EACNC,SAAU,WACVC,cAAmC,MAApBtC,EAA0B,MAAQ,YACzB,MAApBA,EACA,CAAEuC,UAAW,QACb,CACEC,UAAW,OACXC,UAAW,oBApCvB,WACE,SAASC,EACPC,GAEA,OAAOA,EAAOC,KAAIC,KAChBC,GAAID,EAAEC,GACNC,YAAaF,EAAEE,gBAInB,OAAI7C,EACKA,EAAkBwC,EAAiB5C,IAErC4C,EAAiB5C,GA2BrBkD,GAA0BJ,KAAI,EAAGE,GAAAA,EAAIC,YAAAA,MACpC,MAAME,EAAU,SAASH,IACzB,OACEnD,2BAAmBmD,GAAIG,aACpBF,IADOE,gBAMd,KAIFC,mBArMF,SAA4BC,EAAoBC,GAC9C,GAAsB,UAAlBjD,EAA2B,CAC7B,MAAMkD,EAAuBhC,IAE7B,GAAmB,SAAf+B,EAAuB,CACzB,MAAME,EAAYlC,IAA+BK,IACjDf,EAAmB6C,MAAM,CACvBC,KAAM,CACJC,CAACzD,GAAkBoB,KAErBsC,GAAI,CACFD,CAACzD,GACCsD,EAAYD,EAAuBA,EAAuBC,KAIlE,GAAmB,SAAfF,EAAuB,CACzB,MAAME,EAAYlC,IAA+BK,IACjDf,EAAmB6C,MAAM,CACvBC,KAAM,CACJC,CAACzD,GAAkBoB,KAErBsC,GAAI,CACFD,CAACzD,GAAkBsD,EAAY,EAAI,EAAIA,UAIxC,CAwEL,MAAMK,EA7DGpD,EAAyBU,QAAS2C,cACvC,UAAU9D,EAAMqD,GAAYL,MA8DhC,GAAIa,EAAW,CACb,MAAME,EAAetD,EAAyBU,QAExC6C,EAxEqB,MAApB9D,EAA0B,cAAgB,eAyE3C+D,EAtEqB,MAApB/D,EAA0B,aAAe,YAuE1CgE,EAhER,UAAgCL,UAC9BA,EAASM,gBACTA,EAAeH,gBACfA,IAMA,OAAOH,EAAUM,GAAmBN,EAAUG,GAAmB,EAuDrCI,CAAuB,CACjDP,UAAAA,EACAG,gBAAAA,EACAG,gBAhFyB,MAApBjE,EAA0B,aAAe,cAkF1CmE,EA1DR,UAAiCN,aAC/BA,EAAYC,gBACZA,IAKA,OAAOD,EAAaC,GAAmB,EAmDVM,CAAwB,CACnDP,aAAAA,EACAC,gBAAAA,IAGFpD,EAAmB6C,MAAM,CACvBC,KAAM,CACJC,CAACzD,GAxDP,UAA4B6D,aAC1BA,EAAYE,gBACZA,IAKA,OAAOF,EAAaE,GAiDGM,CAAmB,CACpCR,aAAAA,EACAE,gBAAAA,KAGJL,GAAI,CACFD,CAACzD,GArDP,UAA0B6D,aACxBA,EAAYG,oBACZA,EAAmBG,qBACnBA,EAAoBL,gBACpBA,IAOA,MAAMQ,EACgB,MAApBtE,EAA0B,cAAgB,eAE5C,OACEmD,IAAerD,EAAMyE,OAAS,GAC9BP,EAAsBG,EACpBN,EAAaS,GAA2BT,EAAaC,GAEhDD,EAAaS,GAA2BT,EAAaC,GAE3C,IAAfX,EACK,EAGFa,EAAsBG,EA4BNK,CAAiB,CAClCX,aAAAA,EACAG,oBAAAA,EACAG,qBAAAA,EACAL,gBAAAA,KAGJ/C,SAAU0D,IACgB,MAApBzE,EAEFO,EAA0BU,QAASyD,WAAaD,EAAI7D,EAGpDL,EAA0BU,QAAS0D,UAAYF,EAAI5D"}
|
|
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;;;;"}
|