///
import { SpringConfig, TransitionFrom, TransitionTo } from 'react-spring';
export declare type ReactSpringThumbItem = {
id: string;
renderThumb: React.ReactNode;
};
export declare type ReactSpringCarouselItem = {
id: string;
renderItem: React.ReactNode;
renderThumb?: React.ReactNode;
};
declare type BaseCarouselSharedProps = {
withLoop?: boolean;
withThumbs?: boolean;
disableGestures?: boolean;
enableThumbsWrapperScroll?: boolean;
draggingSlideTreshold?: number;
prepareThumbsData?: PrepareThumbsData;
springConfig?: SpringConfig;
items: ReactSpringCarouselItem[];
thumbsSlideAxis?: 'x' | 'y';
};
export declare type UseSpringCarouselProps = BaseCarouselSharedProps & {
shouldResizeOnWindowResize?: boolean;
carouselSlideAxis?: 'x' | 'y';
thumbsWrapperRef?: React.MutableRefObject;
itemsPerSlide?: number;
initialActiveItem?: number;
initialStartingPosition?: 'start' | 'center' | 'end';
};
export declare type PrepareThumbsData = (items: ReactSpringThumbItem[]) => ReactSpringThumbItem[];
export declare type SlideToItemFnProps = {
from?: number;
to: number;
newIndex?: number;
immediate?: boolean;
onRest?(): void;
};
export declare type SpringAnimationProps = {
initial: TransitionFrom;
from: TransitionFrom;
enter: TransitionTo;
leave: TransitionTo;
};
export declare type UseTransitionCarouselProps = BaseCarouselSharedProps & {
toPrevItemSpringProps?: SpringAnimationProps;
toNextItemSpringProps?: SpringAnimationProps;
springAnimationProps?: SpringAnimationProps;
};
declare type BaseContextSharedProps = {
getIsFullscreen(): boolean;
getIsPrevItem(id: string): boolean;
getIsNextItem(id: string): boolean;
enterFullscreen(elementRef?: HTMLElement): void;
exitFullscreen(): void;
slideToNextItem(): void;
slideToPrevItem(): void;
getIsAnimating(): boolean;
slideToItem(item: string | number): void;
getIsActiveItem(id: string): boolean;
getCurrentActiveItem(): {
id: string;
index: number;
};
useListenToCustomEvent: UseListenToCustomEvent;
};
export declare type UseSpringCarouselContextProps = BaseContextSharedProps & {
getIsDragging(): boolean;
};
export declare type UseTransitionCarouselContextProps = BaseContextSharedProps & {
activeItem: number;
};
import { FullGestureState } from '@use-gesture/react';
export declare type SlideActionType = 'prev' | 'next';
declare type OnSlideStartChange = {
eventName: 'onSlideStartChange';
nextItem: number;
slideActionType: SlideActionType;
};
declare type OnSlideChange = {
eventName: 'onSlideChange';
currentItem: number;
slideActionType: SlideActionType;
};
declare type OnDrag = Omit, 'event'> & {
eventName: 'onDrag';
};
declare type OnFullscreenChange = {
eventName: 'onFullscreenChange';
isFullscreen: boolean;
};
declare type OnLeftSwipe = {
eventName: 'onLeftSwipe';
};
declare type OnRightSwipe = {
eventName: 'onRightSwipe';
};
export declare type EmitObservableFn = (data: OnSlideStartChange | OnSlideChange | OnDrag | OnFullscreenChange | OnLeftSwipe | OnRightSwipe) => void;
export declare type EventsObservableProps = OnSlideStartChange | OnSlideChange | OnDrag | OnFullscreenChange | OnLeftSwipe | OnRightSwipe;
export declare type ObservableCallbackFn = (data: EventsObservableProps) => void;
export declare type UseListenToCustomEvent = (fn: ObservableCallbackFn) => void;
export {};