@splidejs/splide
Version:
Splide is a lightweight, flexible and accessible slider/carousel. No dependencies, no Lighthouse errors.
47 lines (40 loc) • 974 B
text/typescript
import { includes, toArray } from '../../utils';
/**
* The interface for the State object.
*
* @since 3.0.0
*/
export interface StateObject {
set( state: number ): void;
is( states: number | number[] ): boolean;
}
/**
* The function providing a super simple state system.
*
* @param initialState - Specifies the initial state.
*/
export function State( initialState: number ): StateObject {
/**
* The current state.
*/
let state = initialState;
/**
* Sets a new state.
*
* @param value - A new state value.
*/
function set( value: number ): void {
state = value;
}
/**
* Checks if the current state matches the provided one.
*
* @param states - A state to check.
*
* @return `true` if the current state is the provided one.
*/
function is( states: number | number[] ): boolean {
return includes( toArray( states ), state );
}
return { set, is };
}