@better-scroll/core
Version:
Minimalistic core scrolling for BetterScroll, it is pure and tiny
71 lines (70 loc) • 2.08 kB
TypeScript
import { EventEmitter } from '@better-scroll/shared-utils';
export declare type Bounces = [boolean, boolean];
export declare type Rect = {
size: string;
position: string;
};
export interface Options {
scrollable: boolean;
momentum: boolean;
momentumLimitTime: number;
momentumLimitDistance: number;
deceleration: number;
swipeBounceTime: number;
swipeTime: number;
bounces: Bounces;
rect: Rect;
outOfBoundaryDampingFactor: number;
specifiedIndexAsContent: number;
[key: string]: number | boolean | Bounces | Rect;
}
export declare type Boundary = {
minScrollPos: number;
maxScrollPos: number;
};
export declare class Behavior {
wrapper: HTMLElement;
options: Options;
content: HTMLElement;
currentPos: number;
startPos: number;
absStartPos: number;
dist: number;
minScrollPos: number;
maxScrollPos: number;
hasScroll: boolean;
direction: number;
movingDirection: number;
relativeOffset: number;
wrapperSize: number;
contentSize: number;
hooks: EventEmitter;
constructor(wrapper: HTMLElement, content: HTMLElement, options: Options);
start(): void;
move(delta: number): number;
setMovingDirection(delta: number): void;
setDirection(delta: number): void;
performDampingAlgorithm(delta: number, dampingFactor: number): number;
end(duration: number): {
destination?: number | undefined;
duration?: number | undefined;
};
private momentum;
updateDirection(): void;
refresh(content: HTMLElement): void;
private setContent;
private resetState;
computeBoundary(): void;
updatePosition(pos: number): void;
getCurrentPos(): number;
checkInBoundary(): {
position: number;
inBoundary: boolean;
};
adjustPosition(pos: number): number;
updateStartPos(): void;
updateAbsStartPos(): void;
resetStartPos(): void;
getAbsDist(delta: number): number;
destroy(): void;
}