@opensig/opendesign
Version:
40 lines (39 loc) • 1.46 kB
TypeScript
import { PointMoveT } from '../../_utils/types';
export interface EffectT {
active: (slideIndex: number) => Promise<null | number>;
destroyed: () => void;
}
export interface EffectOptionT {
activeClass?: string | {
[k: string]: boolean;
} | Array<{
[k: string]: boolean;
} | string>;
onTouchstart?: () => void;
onTouchend?: () => void;
onBeforeChange?: (from: number, to: number) => boolean | void;
onChanged?: (from: number, to: number) => void;
}
export default abstract class Effect {
total: number;
currentIndex: number;
activeClass?: string | {
[k: string]: boolean;
} | Array<{
[k: string]: boolean;
} | string>;
onTouchstart: (() => void) | undefined;
onTouchend: (() => void) | undefined;
onBeforeChange: ((to: number, from: number) => boolean | void) | undefined;
onChanged: ((to: number, from: number) => void) | undefined;
private isTouchStart;
private containerEl;
constructor(slideElList: HTMLElement[], slideContainer: HTMLElement, options?: EffectOptionT);
abstract handleTouchStart(): void;
abstract handleTouchMove(pos: PointMoveT, e: TouchEvent): void;
abstract handleTouchEnd(pos: PointMoveT, e: TouchEvent): number | void;
abstract active(toIndex: number, animate?: boolean, force?: boolean): Promise<null | number>;
abstract destroyed(): void;
fixIndex(idx: number): number;
handleTouch(): void;
}