type AutomataConfig = { loop: boolean; slidesToShow: number; slidesToScroll: number; }; /** media specific configuration for blaze-slider */ interface MediaConfig extends AutomataConfig { /** * slide gap between two slides in any css length unit * Example: 20px / 1em / 3rem etc.. * * default: `"20px"` */ slideGap: string; /** enable or disable pagination * * default: `true` */ enablePagination: boolean; /** enable or disable autoplay * * default: `false` */ enableAutoplay: boolean; /** * scrolls the slider at given intervals in milliseconds * * default: `3000` * */ autoplayInterval: number; /** autoplay direction * * specify whether the autoplay should scroll the slides * `"to right"` or `"to left"` * * default: `"to left"` */ autoplayDirection: "to right" | "to left"; /** * stop the autoplay when user interacts with the slider * either give `true` or `false` * or specify the amount of time in milliseconds after which the slider should resume autoplay after stopping * * default: `true` */ stopAutoplayOnInteraction: boolean | number; /** * css transition duration for the scroll effect in milliseconds * * default: `500` * */ transitionDuration: number; /** * css transition timing function for the scroll effect * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/transition-timing-function} * * default: `"ease"` * * */ transitionTimingFunction: string; /** * Allow dragging the slider via mouse or touch * * * default: `true` */ draggable: boolean; } /** blaze slider configuration */ type BlazeConfig = Record>; /** Indicates which sliders it shows by storing a range from startIndex to endIndex */ type Page = [ start: number, end: number ]; type State = { page: Page; /** information of next state */ next: { /** index of next state */ stateIndex: number; /** number of slides need to be moved to go to next state */ moveSlides: number; }; /** information of previous state */ prev: { /** index of previous state */ stateIndex: number; /** number of slides need to be moved to go to prev state */ moveSlides: number; }; }; type SlideChangeCallback = (page: number, firstSlideIndex: number, lastSlideIndex: number) => void; type Transition = [ oldStateIndex: number, slideCount: number ]; declare class Automata { config: AutomataConfig; // state stateIndex: number; // states states: State[]; // data totalSlides: number; isTransitioning: boolean; // slider is static if number of slides are less than config.slidesToShow isStatic: boolean; constructor(totalSlides: number, config: AutomataConfig); next(pages?: number): Transition | void; prev(pages?: number): Transition | void; } declare class BlazeSlider extends Automata { el: HTMLElement; slides: HTMLCollection; track: HTMLElement; offset: number; dragged: number; config: MediaConfig; isDragging: boolean; paginationButtons: HTMLButtonElement[] | undefined; passedConfig?: BlazeConfig; autoplayTimer?: any; onSlideCbs?: Set; constructor(blazeSliderEl: HTMLElement, blazeConfig?: BlazeConfig); next(count?: number): void; prev(count?: number): void; stopAutoplay(): void; destroy(): void; refresh(): void; /** * Subscribe for slide change event * Returns a function to unsubscribe from slide change event */ onSlide(cb: SlideChangeCallback): () => boolean; } export type { BlazeConfig, MediaConfig }; export { BlazeSlider as default };