vue-carousel-lite
Version:
Fast, Lightweight Vue Carousel With Touch, Mouse, Keyboard, Wheel & SSR support
60 lines (58 loc) • 1.97 kB
TypeScript
import { CarouselProps } from '../types';
import { ComputedRef, Ref } from 'vue';
interface UseCarouselOptions {
props: CarouselProps;
slideWidth: Ref<number>;
slideHeight: Ref<number>;
itemsToShow: ComputedRef<number>;
}
export declare function useCarousel({ props, slideWidth, slideHeight, itemsToShow }: UseCarouselOptions): {
carouselTrack: Ref<HTMLElement, HTMLElement>;
carouselContainer: Ref<HTMLElement, HTMLElement>;
state: {
readonly currentIndex: number;
readonly isTransitioning: boolean;
readonly isDragging: boolean;
readonly isHovered: boolean;
readonly isWheeling: boolean;
};
canGoNext: ComputedRef<boolean>;
canGoPrev: ComputedRef<boolean>;
progress: ComputedRef<number>;
visibleSlideIndices: ComputedRef<number[]>;
renderedSlideIndices: ComputedRef<number[]>;
virtualOffset: ComputedRef<number>;
goToSlide: (index: number, smooth?: boolean) => void;
goNext: (smooth?: boolean) => void;
goPrev: (smooth?: boolean) => void;
goNextPage: (smooth?: boolean) => void;
goPrevPage: (smooth?: boolean) => void;
trackStyle: ComputedRef<{
transform: string;
transition: string;
}>;
dragComposable: {
isDragging: Readonly<Ref<boolean, boolean>>;
deltaX: Readonly<Ref<number, number>>;
deltaY: Readonly<Ref<number, number>>;
};
wheelComposable: {
isWheeling: Readonly<Ref<boolean, boolean>>;
};
hoverComposable: {
isHovered: Readonly<Ref<boolean, boolean>>;
};
keyboardComposable: {
focus: () => void;
};
autoplayComposable: {
isAutoplayActive: Readonly<Ref<boolean, boolean>>;
isAutoplayPaused: Readonly<Ref<boolean, boolean>>;
startAutoplay: () => void;
stopAutoplay: () => void;
pauseAutoplay: () => void;
resumeAutoplay: () => void;
restartAutoplay: () => void;
};
};
export {};