react-spring-carousel 3.0.0-beta077 → 3.0.0-beta079

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/index.d.ts +3 -0
  2. package/dist/types/src/index.d.ts +3 -0
  3. package/dist/types/src/index.js +4 -0
  4. package/dist/types/src/index.js.map +1 -0
  5. package/dist/types/src/mockedItems.d.ts +2 -0
  6. package/dist/types/src/mockedItems.js +46 -0
  7. package/dist/types/src/mockedItems.js.map +1 -0
  8. package/dist/types/src/modules/index.d.ts +1 -0
  9. package/dist/types/src/modules/index.js +2 -0
  10. package/dist/types/src/modules/index.js.map +1 -0
  11. package/dist/types/src/modules/useEventsModule.d.ts +5 -0
  12. package/dist/types/src/modules/useEventsModule.js +36 -0
  13. package/dist/types/src/modules/useEventsModule.js.map +1 -0
  14. package/dist/types/src/modules/useFullscreenModule.d.ts +6 -0
  15. package/dist/types/src/modules/useFullscreenModule.js +48 -0
  16. package/dist/types/src/modules/useFullscreenModule.js.map +1 -0
  17. package/dist/types/src/modules/useThumbsModule.d.ts +6 -0
  18. package/dist/types/src/modules/useThumbsModule.js +82 -0
  19. package/dist/types/src/modules/useThumbsModule.js.map +1 -0
  20. package/dist/types/src/types/common.d.ts +34 -0
  21. package/dist/types/src/types/common.js +2 -0
  22. package/dist/types/src/types/common.js.map +1 -0
  23. package/dist/types/src/types/index.d.ts +3 -0
  24. package/dist/types/src/types/index.js +4 -0
  25. package/dist/types/src/types/index.js.map +1 -0
  26. package/dist/types/src/types/useEventsModule.types.d.ts +46 -0
  27. package/dist/types/src/types/useEventsModule.types.js +2 -0
  28. package/dist/types/src/types/useEventsModule.types.js.map +1 -0
  29. package/dist/types/src/types/useFullscreenModule.types.d.ts +6 -0
  30. package/dist/types/src/types/useFullscreenModule.types.js +2 -0
  31. package/dist/types/src/types/useFullscreenModule.types.js.map +1 -0
  32. package/dist/types/src/types/useSpringCarousel.types.d.ts +102 -0
  33. package/dist/types/src/types/useSpringCarousel.types.js +2 -0
  34. package/dist/types/src/types/useSpringCarousel.types.js.map +1 -0
  35. package/dist/types/src/types/useThumbsModule.types.d.ts +8 -0
  36. package/dist/types/src/types/useThumbsModule.types.js +2 -0
  37. package/dist/types/src/types/useThumbsModule.types.js.map +1 -0
  38. package/dist/types/src/types/useTransitionCarousel.types.d.ts +33 -0
  39. package/dist/types/src/types/useTransitionCarousel.types.js +2 -0
  40. package/dist/types/src/types/useTransitionCarousel.types.js.map +1 -0
  41. package/dist/types/src/useSpringCarousel.d.ts +18 -0
  42. package/dist/types/src/useSpringCarousel.js +917 -0
  43. package/dist/types/src/useSpringCarousel.js.map +1 -0
  44. package/dist/types/src/useTransitionCarousel.d.ts +5 -0
  45. package/dist/types/src/useTransitionCarousel.js +285 -0
  46. package/dist/types/src/useTransitionCarousel.js.map +1 -0
  47. package/dist/types/tsconfig.tsbuildinfo +1 -0
  48. package/dist/types/useFullscreenModule.types.d.ts +6 -0
  49. package/dist/types/useThumbsModule.types.d.ts +8 -0
  50. package/package.json +6 -6
@@ -0,0 +1,3 @@
1
+ export * from './useSpringCarousel';
2
+ export * from './useTransitionCarousel';
3
+ export * from './types';
@@ -0,0 +1,3 @@
1
+ export * from './useSpringCarousel';
2
+ export * from './useTransitionCarousel';
3
+ export * from './types';
@@ -0,0 +1,4 @@
1
+ export * from './useSpringCarousel';
2
+ export * from './useTransitionCarousel';
3
+ export * from './types';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,SAAS,CAAA"}
@@ -0,0 +1,2 @@
1
+ import { ItemWithNoThumb } from './types/common';
2
+ export declare const mockedItems: ItemWithNoThumb<'use-transition'>[];
@@ -0,0 +1,46 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export const mockedItems = [
3
+ {
4
+ id: 'item-1',
5
+ renderItem: (_jsx("div", { style: {
6
+ flex: '1',
7
+ background: '#1ABC9C',
8
+ }, children: "div 1" })),
9
+ },
10
+ {
11
+ id: 'item-2',
12
+ renderItem: (_jsx("div", { style: {
13
+ flex: '1',
14
+ background: '#F1C40F',
15
+ }, children: "div 2" })),
16
+ },
17
+ {
18
+ id: 'item-3',
19
+ renderItem: (_jsx("div", { style: {
20
+ flex: '1',
21
+ background: '#2ECC71',
22
+ }, children: "div 3" })),
23
+ },
24
+ {
25
+ id: 'item-4',
26
+ renderItem: (_jsx("div", { style: {
27
+ flex: '1',
28
+ background: '#E67E22',
29
+ }, children: "div 4" })),
30
+ },
31
+ {
32
+ id: 'item-5',
33
+ renderItem: (_jsx("div", { style: {
34
+ flex: '5',
35
+ background: '#3498DB',
36
+ }, children: "div 5" })),
37
+ },
38
+ {
39
+ id: 'item-6',
40
+ renderItem: (_jsx("div", { style: {
41
+ flex: '6',
42
+ background: 'red',
43
+ }, children: "div 6" })),
44
+ },
45
+ ];
46
+ //# sourceMappingURL=mockedItems.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockedItems.js","sourceRoot":"","sources":["../../../src/mockedItems.tsx"],"names":[],"mappings":";AACA,MAAM,CAAC,MAAM,WAAW,GAAwC;IAC9D;QACE,EAAE,EAAE,QAAQ;QACZ,UAAU,EAAE,CACV,cACE,KAAK,EAAE;gBACL,IAAI,EAAE,GAAG;gBACT,UAAU,EAAE,SAAS;aACtB,sBAGG,CACP;KACF;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,UAAU,EAAE,CACV,cACE,KAAK,EAAE;gBACL,IAAI,EAAE,GAAG;gBACT,UAAU,EAAE,SAAS;aACtB,sBAGG,CACP;KACF;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,UAAU,EAAE,CACV,cACE,KAAK,EAAE;gBACL,IAAI,EAAE,GAAG;gBACT,UAAU,EAAE,SAAS;aACtB,sBAGG,CACP;KACF;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,UAAU,EAAE,CACV,cACE,KAAK,EAAE;gBACL,IAAI,EAAE,GAAG;gBACT,UAAU,EAAE,SAAS;aACtB,sBAGG,CACP;KACF;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,UAAU,EAAE,CACV,cACE,KAAK,EAAE;gBACL,IAAI,EAAE,GAAG;gBACT,UAAU,EAAE,SAAS;aACtB,sBAGG,CACP;KACF;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,UAAU,EAAE,CACV,cACE,KAAK,EAAE;gBACL,IAAI,EAAE,GAAG;gBACT,UAAU,EAAE,KAAK;aAClB,sBAGG,CACP;KACF;CACF,CAAA"}
@@ -0,0 +1 @@
1
+ export * from './useThumbsModule';
@@ -0,0 +1,2 @@
1
+ export * from './useThumbsModule';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/index.tsx"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { EventHandler, Events } from '../types/useEventsModule.types';
2
+ export declare function useEventsModule<T extends 'use-spring' | 'use-transition'>(): {
3
+ useListenToCustomEvent: (eventHandler: EventHandler<T>) => void;
4
+ emitEvent: (event: Events<T>) => void;
5
+ };
@@ -0,0 +1,36 @@
1
+ import { useEffect, useRef } from 'react';
2
+ const eventLabel = 'RSC::Event';
3
+ export function useEventsModule() {
4
+ const targetEvent = useRef(null);
5
+ function useListenToCustomEvent(eventHandler) {
6
+ useEffect(() => {
7
+ if (!targetEvent.current) {
8
+ targetEvent.current = document.createElement('div');
9
+ }
10
+ function handleEvent(event) {
11
+ eventHandler(event.detail);
12
+ }
13
+ if (targetEvent.current) {
14
+ // @ts-ignore
15
+ targetEvent.current.addEventListener(eventLabel, handleEvent, false);
16
+ return () => {
17
+ // @ts-ignore
18
+ targetEvent.current?.removeEventListener(eventLabel, handleEvent, false);
19
+ };
20
+ }
21
+ }, [eventHandler]);
22
+ }
23
+ function emitEvent(event) {
24
+ if (targetEvent.current) {
25
+ const newEvent = new CustomEvent(eventLabel, {
26
+ detail: event,
27
+ });
28
+ targetEvent.current.dispatchEvent(newEvent);
29
+ }
30
+ }
31
+ return {
32
+ useListenToCustomEvent,
33
+ emitEvent,
34
+ };
35
+ }
36
+ //# sourceMappingURL=useEventsModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEventsModule.js","sourceRoot":"","sources":["../../../../src/modules/useEventsModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAIzC,MAAM,UAAU,GAAG,YAAY,CAAA;AAE/B,MAAM,UAAU,eAAe;IAC7B,MAAM,WAAW,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAA;IAEvD,SAAS,sBAAsB,CAAC,YAA6B;QAC3D,SAAS,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;gBACxB,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;aACpD;YAED,SAAS,WAAW,CAAC,KAA6B;gBAChD,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YAC5B,CAAC;YAED,IAAI,WAAW,CAAC,OAAO,EAAE;gBACvB,aAAa;gBACb,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,CAAC,CAAA;gBACpE,OAAO,GAAG,EAAE;oBACV,aAAa;oBACb,WAAW,CAAC,OAAO,EAAE,mBAAmB,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,CAAC,CAAA;gBAC1E,CAAC,CAAA;aACF;QACH,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAA;IACpB,CAAC;IACD,SAAS,SAAS,CAAC,KAAgB;QACjC,IAAI,WAAW,CAAC,OAAO,EAAE;YACvB,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,UAAU,EAAE;gBAC3C,MAAM,EAAE,KAAK;aACd,CAAC,CAAA;YACF,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;SAC5C;IACH,CAAC;IAED,OAAO;QACL,sBAAsB;QACtB,SAAS;KACV,CAAA;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { FullscreenModule } from '../types/useFullscreenModule.types';
2
+ export declare function useFullscreenModule({ mainCarouselWrapperRef, onFullScreenChange, handleResize, }: FullscreenModule): {
3
+ enterFullscreen: (elementRef?: HTMLElement) => void;
4
+ exitFullscreen: () => void;
5
+ getIsFullscreen: () => boolean;
6
+ };
@@ -0,0 +1,48 @@
1
+ import { useRef, useEffect } from 'react';
2
+ import screenfull from 'screenfull';
3
+ export function useFullscreenModule({ mainCarouselWrapperRef, onFullScreenChange, handleResize, }) {
4
+ const isFullscreen = useRef(false);
5
+ useEffect(() => {
6
+ function handleFullscreenChange() {
7
+ if (document.fullscreenElement) {
8
+ setIsFullscreen(true);
9
+ onFullScreenChange(true);
10
+ handleResize && handleResize();
11
+ }
12
+ if (!document.fullscreenElement) {
13
+ setIsFullscreen(false);
14
+ onFullScreenChange(false);
15
+ handleResize && handleResize();
16
+ }
17
+ }
18
+ if (screenfull.isEnabled) {
19
+ screenfull.on('change', handleFullscreenChange);
20
+ return () => {
21
+ if (screenfull.isEnabled) {
22
+ screenfull.off('change', handleFullscreenChange);
23
+ }
24
+ };
25
+ }
26
+ // eslint-disable-next-line react-hooks/exhaustive-deps
27
+ }, []);
28
+ function setIsFullscreen(_isFullscreen) {
29
+ isFullscreen.current = _isFullscreen;
30
+ }
31
+ function getIsFullscreen() {
32
+ return isFullscreen.current;
33
+ }
34
+ function enterFullscreen(elementRef) {
35
+ if (screenfull.isEnabled) {
36
+ screenfull.request((elementRef || mainCarouselWrapperRef.current));
37
+ }
38
+ }
39
+ function exitFullscreen() {
40
+ screenfull.isEnabled && screenfull.exit();
41
+ }
42
+ return {
43
+ enterFullscreen,
44
+ exitFullscreen,
45
+ getIsFullscreen,
46
+ };
47
+ }
48
+ //# sourceMappingURL=useFullscreenModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFullscreenModule.js","sourceRoot":"","sources":["../../../../src/modules/useFullscreenModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,UAAU,MAAM,YAAY,CAAA;AAGnC,MAAM,UAAU,mBAAmB,CAAC,EAClC,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,GACK;IACjB,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAElC,SAAS,CAAC,GAAG,EAAE;QACb,SAAS,sBAAsB;YAC7B,IAAI,QAAQ,CAAC,iBAAiB,EAAE;gBAC9B,eAAe,CAAC,IAAI,CAAC,CAAA;gBACrB,kBAAkB,CAAC,IAAI,CAAC,CAAA;gBACxB,YAAY,IAAI,YAAY,EAAE,CAAA;aAC/B;YAED,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE;gBAC/B,eAAe,CAAC,KAAK,CAAC,CAAA;gBACtB,kBAAkB,CAAC,KAAK,CAAC,CAAA;gBACzB,YAAY,IAAI,YAAY,EAAE,CAAA;aAC/B;QACH,CAAC;QAED,IAAI,UAAU,CAAC,SAAS,EAAE;YACxB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAA;YAC/C,OAAO,GAAG,EAAE;gBACV,IAAI,UAAU,CAAC,SAAS,EAAE;oBACxB,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAA;iBACjD;YACH,CAAC,CAAA;SACF;QACD,uDAAuD;IACzD,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,SAAS,eAAe,CAAC,aAAsB;QAC7C,YAAY,CAAC,OAAO,GAAG,aAAa,CAAA;IACtC,CAAC;IAED,SAAS,eAAe;QACtB,OAAO,YAAY,CAAC,OAAO,CAAA;IAC7B,CAAC;IAED,SAAS,eAAe,CAAC,UAAwB;QAC/C,IAAI,UAAU,CAAC,SAAS,EAAE;YACxB,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,IAAI,sBAAsB,CAAC,OAAO,CAAY,CAAC,CAAA;SAC9E;IACH,CAAC;IAED,SAAS,cAAc;QACrB,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,IAAI,EAAE,CAAA;IAC3C,CAAC;IAED,OAAO;QACL,eAAe;QACf,cAAc;QACd,eAAe;KAChB,CAAA;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ import { UseThumbsModule } from '../types/useThumbsModule.types';
3
+ export declare function useThumbsModule<T extends 'use-spring' | 'use-transition'>({ thumbsSlideAxis, withThumbs, prepareThumbsData, items, renderThumbFnProps, }: UseThumbsModule<T>): {
4
+ thumbsFragment: JSX.Element | null;
5
+ handleScroll: (activeItem: number) => void;
6
+ };
@@ -0,0 +1,82 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useSpring } from '@react-spring/web';
3
+ import { useRef } from 'react';
4
+ function isInViewport(el) {
5
+ const rect = el.getBoundingClientRect();
6
+ return (rect.top >= 0 &&
7
+ rect.left >= 0 &&
8
+ rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
9
+ rect.right <= (window.innerWidth || document.documentElement.clientWidth));
10
+ }
11
+ export function useThumbsModule({ thumbsSlideAxis = 'x', withThumbs = false, prepareThumbsData, items, renderThumbFnProps, }) {
12
+ const wrapperRef = useRef(null);
13
+ const [spring, setSpring] = useSpring(() => ({
14
+ val: 0,
15
+ }));
16
+ function getTotalScrollValue() {
17
+ return Math.round(Number(wrapperRef.current?.[thumbsSlideAxis === 'x' ? 'scrollWidth' : 'scrollHeight']) -
18
+ wrapperRef.current.getBoundingClientRect()[thumbsSlideAxis === 'x' ? 'width' : 'height']);
19
+ }
20
+ function handleScroll(activeItem) {
21
+ function getThumbNode() {
22
+ if (wrapperRef.current) {
23
+ return wrapperRef.current.querySelector(`#thumb-item-${items[activeItem].id}`);
24
+ }
25
+ return null;
26
+ }
27
+ const thumbNode = getThumbNode();
28
+ if (thumbNode && wrapperRef.current) {
29
+ if (!isInViewport(thumbNode)) {
30
+ const offset = thumbNode.offsetLeft;
31
+ const val = offset > getTotalScrollValue() ? getTotalScrollValue() : offset;
32
+ setSpring.start({
33
+ from: {
34
+ val: wrapperRef.current?.[thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'] ?? 0,
35
+ },
36
+ to: {
37
+ val,
38
+ },
39
+ onChange: ({ value }) => {
40
+ if (wrapperRef.current) {
41
+ wrapperRef.current[thumbsSlideAxis === 'x' ? 'scrollLeft' : 'scrollTop'] = Math.abs(value.val);
42
+ }
43
+ },
44
+ });
45
+ }
46
+ }
47
+ }
48
+ function handlePrepareThumbsData() {
49
+ function getPreparedItems(_items) {
50
+ return _items.map((i) => ({
51
+ id: i.id,
52
+ renderThumb: i.renderThumb,
53
+ }));
54
+ }
55
+ if (prepareThumbsData) {
56
+ return prepareThumbsData(getPreparedItems(items));
57
+ }
58
+ return getPreparedItems(items);
59
+ }
60
+ const thumbsFragment = withThumbs ? (_jsx("div", { className: "use-spring-carousel-thumbs-wrapper", ref: wrapperRef, onWheel: () => spring.val.stop(), style: {
61
+ display: 'flex',
62
+ flex: '1',
63
+ position: 'relative',
64
+ width: '100%',
65
+ height: '100%',
66
+ flexDirection: thumbsSlideAxis === 'x' ? 'row' : 'column',
67
+ ...(thumbsSlideAxis === 'x'
68
+ ? { overflowX: 'auto' }
69
+ : {
70
+ overflowY: 'auto',
71
+ maxHeight: '100%',
72
+ }),
73
+ }, children: handlePrepareThumbsData().map(({ id, renderThumb }) => {
74
+ const thumbId = `thumb-item-${id}`;
75
+ return (_jsx("div", { id: thumbId, className: "thumb-item", children: typeof renderThumb === 'function' ? renderThumb(renderThumbFnProps) : renderThumb }, thumbId));
76
+ }) })) : null;
77
+ return {
78
+ thumbsFragment,
79
+ handleScroll,
80
+ };
81
+ }
82
+ //# sourceMappingURL=useThumbsModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useThumbsModule.js","sourceRoot":"","sources":["../../../../src/modules/useThumbsModule.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { ReactNode } from 'react';
2
+ import { UseSpringReturnType } from './useSpringCarousel.types';
3
+ import { UseListenToCustomEvent } from './useEventsModule.types';
4
+ export type SlideActionType = 'prev' | 'next' | 'initial';
5
+ export type SlideMode = 'drag' | 'click' | 'initial';
6
+ export type TransitionSlideMode = 'swipe' | 'click' | 'initial';
7
+ type SpringRenderItem = {
8
+ useListenToCustomEvent: UseListenToCustomEvent<'use-spring'>['useListenToCustomEvent'];
9
+ getIsActiveItem: UseSpringReturnType['getIsActiveItem'];
10
+ getIsPrevItem: UseSpringReturnType['getIsPrevItem'];
11
+ getIsNextItem: UseSpringReturnType['getIsNextItem'];
12
+ };
13
+ type TransitionRenderItem = {
14
+ getIsPrevItem: UseSpringReturnType['getIsPrevItem'];
15
+ getIsNextItem: UseSpringReturnType['getIsNextItem'];
16
+ useListenToCustomEvent: UseListenToCustomEvent<'use-transition'>['useListenToCustomEvent'];
17
+ activeItem: {
18
+ index: number;
19
+ id: string;
20
+ };
21
+ };
22
+ export type RenderItemProps<T> = T extends 'use-spring' ? SpringRenderItem : TransitionRenderItem;
23
+ type RenderItemFn<T> = (props: RenderItemProps<T>) => JSX.Element;
24
+ export type ItemWithThumb<T extends 'use-spring' | 'use-transition'> = {
25
+ id: string;
26
+ renderItem: ReactNode | RenderItemFn<T>;
27
+ renderThumb: ReactNode | RenderItemFn<T>;
28
+ };
29
+ export type ItemWithNoThumb<T extends 'use-spring' | 'use-transition'> = {
30
+ id: string;
31
+ renderItem: ReactNode | RenderItemFn<T>;
32
+ };
33
+ export type PrepareThumbsData<T extends 'use-spring' | 'use-transition'> = (items: Omit<ItemWithThumb<T>, 'renderItem'>[]) => Omit<ItemWithThumb<T>, 'renderItem'>[];
34
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/types/common.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export * from './common';
2
+ export * from './useSpringCarousel.types';
3
+ export * from './useTransitionCarousel.types';
@@ -0,0 +1,4 @@
1
+ export * from './common';
2
+ export * from './useSpringCarousel.types';
3
+ export * from './useTransitionCarousel.types';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,2BAA2B,CAAA;AACzC,cAAc,+BAA+B,CAAA"}
@@ -0,0 +1,46 @@
1
+ import { FullGestureState } from '@use-gesture/react';
2
+ import { SlideActionType, SlideMode, TransitionSlideMode } from './common';
3
+ export type OnSlideStartChange<T> = {
4
+ eventName: 'onSlideStartChange';
5
+ slideActionType: SlideActionType;
6
+ slideMode: T extends 'use-spring' ? SlideMode : TransitionSlideMode;
7
+ nextItem: {
8
+ index: number;
9
+ id: string;
10
+ startReached: boolean;
11
+ endReached: boolean;
12
+ };
13
+ };
14
+ export type OnSlideChange<T> = {
15
+ eventName: 'onSlideChange';
16
+ slideActionType: SlideActionType;
17
+ slideMode: T extends 'use-spring' ? SlideMode : TransitionSlideMode;
18
+ currentItem: {
19
+ index: number;
20
+ id: string;
21
+ startReached: boolean;
22
+ endReached: boolean;
23
+ };
24
+ };
25
+ export type OnFullscreenChange = {
26
+ eventName: 'onFullscreenChange';
27
+ isFullscreen: boolean;
28
+ };
29
+ export type OnDrag = Omit<FullGestureState<'drag'>, 'event'> & {
30
+ eventName: 'onDrag';
31
+ slideActionType: SlideActionType;
32
+ };
33
+ export type OnLeftSwipe = {
34
+ eventName: 'onLeftSwipe';
35
+ };
36
+ export type OnRightSwipe = {
37
+ eventName: 'onRightSwipe';
38
+ };
39
+ export type SpringCarouselEvents<T> = OnSlideStartChange<T> | OnSlideChange<T> | OnDrag | OnFullscreenChange;
40
+ export type TransitionCarouselEvents<T> = OnSlideStartChange<T> | OnSlideChange<T> | OnFullscreenChange | OnLeftSwipe | OnRightSwipe;
41
+ export type Events<T> = T extends 'use-spring' ? SpringCarouselEvents<'use-spring'> : TransitionCarouselEvents<'use-transition'>;
42
+ export type EventHandler<T> = (props: Events<T>) => void;
43
+ export type UseListenToCustomEvent<T> = {
44
+ useListenToCustomEvent: (eventHandler: EventHandler<T>) => void;
45
+ emitEvent: (event: Events<T>) => void;
46
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useEventsModule.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEventsModule.types.js","sourceRoot":"","sources":["../../../../src/types/useEventsModule.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { MutableRefObject } from 'react';
2
+ export type FullscreenModule = {
3
+ mainCarouselWrapperRef: MutableRefObject<HTMLDivElement | null>;
4
+ handleResize?(): void;
5
+ onFullScreenChange(isFullscreen: boolean): void;
6
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useFullscreenModule.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFullscreenModule.types.js","sourceRoot":"","sources":["../../../../src/types/useFullscreenModule.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,102 @@
1
+ import { ReactNode } from 'react';
2
+ import { ItemWithThumb, ItemWithNoThumb, PrepareThumbsData } from '../types';
3
+ import { UseListenToCustomEvent } from './useEventsModule.types';
4
+ export type UseSpringReturnType = {
5
+ carouselFragment: ReactNode;
6
+ thumbsFragment: ReactNode;
7
+ useListenToCustomEvent: UseListenToCustomEvent<'use-spring'>['useListenToCustomEvent'];
8
+ getIsFullscreen(): boolean;
9
+ enterFullscreen(ref?: HTMLElement): void;
10
+ exitFullscreen(): void;
11
+ slideToNextItem(animate?: boolean): void;
12
+ slideToPrevItem(animate?: boolean): void;
13
+ slideToItem(item: string | number, animate?: boolean): void;
14
+ getIsActiveItem(id: string): boolean;
15
+ getIsNextItem(id: string | number): boolean;
16
+ getIsPrevItem(id: string | number): boolean;
17
+ };
18
+ export type UseSpringFreeScrollReturnType = {
19
+ carouselFragment: ReactNode;
20
+ thumbsFragment: ReactNode;
21
+ useListenToCustomEvent: UseListenToCustomEvent<'use-spring'>['useListenToCustomEvent'];
22
+ getIsFullscreen(): boolean;
23
+ enterFullscreen(ref?: HTMLElement): void;
24
+ exitFullscreen(): void;
25
+ slideToNextItem(animate?: boolean): void;
26
+ slideToPrevItem(animate?: boolean): void;
27
+ };
28
+ export type SlideType = 'fixed' | 'fluid';
29
+ export type SpringCarouselWithThumbs<T extends 'use-spring' | 'use-transition' = 'use-spring'> = {
30
+ withThumbs: true;
31
+ thumbsSlideAxis?: 'x' | 'y';
32
+ items: ItemWithThumb<T>[];
33
+ prepareThumbsData?: PrepareThumbsData<T>;
34
+ };
35
+ export type SpringCarouselWithNoThumbs<T extends 'use-spring' | 'use-transition' = 'use-spring'> = {
36
+ withThumbs?: false | undefined;
37
+ thumbsSlideAxis?: never;
38
+ items: ItemWithNoThumb<T>[];
39
+ prepareThumbsData?: never;
40
+ };
41
+ export type SpringCarouselWithFixedItems = {
42
+ slideType?: SlideType[0];
43
+ itemsPerSlide?: number;
44
+ startEndGutter?: number;
45
+ initialActiveItem?: number;
46
+ };
47
+ export type SpringCarouselWithNoFixedItems = {
48
+ slideType?: SlideType[1];
49
+ itemsPerSlide?: never;
50
+ startEndGutter?: never;
51
+ initialActiveItem?: never;
52
+ };
53
+ export type SpringCarouselWithLoop = {
54
+ withLoop: true;
55
+ initialStartingPosition?: 'start' | 'center' | 'end';
56
+ };
57
+ export type SpringCarouselWithNoLoop = {
58
+ withLoop?: false | undefined;
59
+ initialStartingPosition?: never;
60
+ };
61
+ export type SpringCarouselFreeScroll = {
62
+ freeScroll: true;
63
+ withLoop?: never;
64
+ slideType?: never;
65
+ enableFreeScrollDrag?: true | false;
66
+ initialActiveItem?: never;
67
+ itemsPerSlide?: never;
68
+ animateWhenActiveItemChange?: never;
69
+ slideWhenThresholdIsReached?: never;
70
+ };
71
+ export type SpringCarouselNoFreeScroll = {
72
+ freeScroll?: never | false | undefined;
73
+ withLoop?: boolean;
74
+ slideType?: SlideType;
75
+ enableFreeScrollDrag?: never;
76
+ initialActiveItem?: number;
77
+ itemsPerSlide?: number;
78
+ animateWhenActiveItemChange?: boolean;
79
+ slideWhenThresholdIsReached?: boolean;
80
+ };
81
+ export type ControllerRef = {
82
+ slideToNextItem: UseSpringReturnType['slideToNextItem'];
83
+ slideToPrevItem: UseSpringReturnType['slideToPrevItem'];
84
+ slideToItem?: UseSpringReturnType['slideToItem'];
85
+ };
86
+ export type BaseProps = {
87
+ init?: boolean;
88
+ gutter?: number;
89
+ carouselSlideAxis?: 'x' | 'y';
90
+ draggingSlideTreshold?: number;
91
+ disableGestures?: boolean;
92
+ startEndGutter?: number;
93
+ getControllerRef?(ref: ControllerRef): void;
94
+ };
95
+ type ScrollType<T> = T extends true ? SpringCarouselFreeScroll : SpringCarouselNoFreeScroll;
96
+ export type UseSpringCarouselWithThumbs<T> = BaseProps & SpringCarouselWithThumbs & ScrollType<T> & (SpringCarouselWithFixedItems | SpringCarouselWithNoFixedItems) & (SpringCarouselWithLoop | SpringCarouselWithNoLoop);
97
+ export type UseSpringCarouselWithNoThumbs<T> = BaseProps & SpringCarouselWithNoThumbs & ScrollType<T> & (SpringCarouselWithFixedItems | SpringCarouselWithNoFixedItems) & (SpringCarouselWithLoop | SpringCarouselWithNoLoop);
98
+ export type UseSpringCarouselWithFixedItems<T> = BaseProps & SpringCarouselWithFixedItems & ScrollType<T> & (SpringCarouselWithThumbs | SpringCarouselWithNoThumbs) & (SpringCarouselWithLoop | SpringCarouselWithNoLoop);
99
+ export type UseSpringCarouselWithNoFixedItems<T> = BaseProps & SpringCarouselWithNoFixedItems & ScrollType<T> & (SpringCarouselWithThumbs | SpringCarouselWithNoThumbs) & (SpringCarouselWithLoop | SpringCarouselWithNoLoop);
100
+ export type UseSpringCarouselWithFreeScroll = BaseProps & SpringCarouselFreeScroll & (SpringCarouselWithThumbs | SpringCarouselWithNoThumbs);
101
+ export type UseSpringCarouselComplete = BaseProps & (SpringCarouselWithThumbs | SpringCarouselWithNoThumbs) & (SpringCarouselWithFixedItems | SpringCarouselWithNoFixedItems) & (SpringCarouselWithLoop | SpringCarouselWithNoLoop) & (SpringCarouselFreeScroll | SpringCarouselNoFreeScroll);
102
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useSpringCarousel.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSpringCarousel.types.js","sourceRoot":"","sources":["../../../../src/types/useSpringCarousel.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import { ItemWithThumb, PrepareThumbsData, RenderItemProps, SpringCarouselWithThumbs } from '../types';
2
+ export type UseThumbsModule<T extends 'use-spring' | 'use-transition'> = {
3
+ withThumbs?: boolean;
4
+ thumbsSlideAxis: SpringCarouselWithThumbs['thumbsSlideAxis'];
5
+ prepareThumbsData?: PrepareThumbsData<T>;
6
+ items: ItemWithThumb<T>[];
7
+ renderThumbFnProps: RenderItemProps<T>;
8
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useThumbsModule.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useThumbsModule.types.js","sourceRoot":"","sources":["../../../../src/types/useThumbsModule.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,33 @@
1
+ import { SpringConfig, TransitionFrom, TransitionTo } from '@react-spring/web';
2
+ import { ItemWithNoThumb, ItemWithThumb, SpringCarouselWithNoThumbs, SpringCarouselWithThumbs } from '../types';
3
+ import { ReactNode } from 'react';
4
+ import { UseListenToCustomEvent } from './useEventsModule.types';
5
+ type Item = ItemWithThumb<'use-transition'> | ItemWithNoThumb<'use-transition'>;
6
+ export type SpringAnimationProps = {
7
+ initial: TransitionFrom<Item>;
8
+ from: TransitionFrom<Item>;
9
+ enter: TransitionTo<Item>;
10
+ leave: TransitionTo<Item>;
11
+ };
12
+ type BaseProps = {
13
+ init?: boolean;
14
+ disableGestures?: boolean;
15
+ springConfig?: Omit<SpringConfig, 'velocity'>;
16
+ toPrevItemSpringProps?: SpringAnimationProps;
17
+ toNextItemSpringProps?: SpringAnimationProps;
18
+ exitBeforeEnter?: boolean;
19
+ trail?: number;
20
+ withLoop?: boolean;
21
+ draggingSlideTreshold?: number;
22
+ thumbsSlideAxis?: 'x' | 'y';
23
+ activeItem?: number;
24
+ };
25
+ export type UseTransitionCarouselProps = BaseProps & (SpringCarouselWithThumbs<'use-transition'> | SpringCarouselWithNoThumbs<'use-transition'>);
26
+ export type UseTransitionCarouselReturnProps = {
27
+ useListenToCustomEvent: UseListenToCustomEvent<'use-transition'>['useListenToCustomEvent'];
28
+ carouselFragment: ReactNode;
29
+ thumbsFragment: ReactNode;
30
+ slideToPrevItem(): void;
31
+ slideToNextItem(): void;
32
+ };
33
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useTransitionCarousel.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTransitionCarousel.types.js","sourceRoot":"","sources":["../../../../src/types/useTransitionCarousel.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import { UseSpringCarouselWithFreeScroll, UseSpringCarouselWithThumbs, UseSpringCarouselWithNoThumbs, UseSpringCarouselWithNoFixedItems, UseSpringCarouselWithFixedItems, UseSpringFreeScrollReturnType, UseSpringReturnType } from './types';
2
+ type ReturnType<T> = T extends true ? UseSpringFreeScrollReturnType : UseSpringReturnType;
3
+ /**
4
+ * With free scroll
5
+ */
6
+ declare function useSpringCarousel(props: UseSpringCarouselWithFreeScroll): ReturnType<true>;
7
+ declare function useSpringCarousel(props: UseSpringCarouselWithThumbs<true>): ReturnType<true>;
8
+ declare function useSpringCarousel(props: UseSpringCarouselWithNoThumbs<true>): ReturnType<true>;
9
+ /**
10
+ * No free scroll
11
+ */
12
+ declare function useSpringCarousel(props: UseSpringCarouselWithThumbs<false>): ReturnType<false>;
13
+ declare function useSpringCarousel(props: UseSpringCarouselWithNoThumbs<false>): ReturnType<false>;
14
+ declare function useSpringCarousel(props: UseSpringCarouselWithFixedItems<false>): ReturnType<false>;
15
+ declare function useSpringCarousel(props: UseSpringCarouselWithNoFixedItems<false>): ReturnType<false>;
16
+ type ContextProps<T = undefined> = Omit<ReturnType<T extends 'free-scroll' ? true : false>, 'carouselFragment' | 'thumbsFragment'>;
17
+ declare function useSpringCarouselContext<T>(): ContextProps<T>;
18
+ export { useSpringCarousel, useSpringCarouselContext };