UNPKG

only-scrollbar

Version:
98 lines (97 loc) 4.26 kB
import { Attributes, ClassNames, Direction, ElementOrSelector, OnlyScrollbarEvents, OnlyScrollbarOptions } from "./types"; declare class OnlyScrollbar { /** * @description Объект со всеми css-классами, которые используются в скроле */ static ClassNames: ClassNames; static Attributes: Attributes; static Events: { readonly start: "os:start"; readonly stop: "os:stop"; readonly change: "os:change"; readonly reachEnd: "os:reachEnd"; readonly reachStart: "os:reachStart"; readonly lock: "os:lock"; readonly unlock: "os:unlock"; }; /** * @description HTML-элемент, который будет являться контейнером для скрола * @description Для корректной работы размеры контейнера должны быть ограничены */ readonly scrollContainer: HTMLElement; /** * @description HTML-элемент, на который будут применяться все события * @default OnlyScrollbar.scrollContainer */ readonly eventContainer: HTMLElement | Window; readonly options: Required<OnlyScrollbarOptions>; /** * @description Состояние, отображающее блокировку скрола */ isLocked: boolean; position: number; isStart: boolean; isEnd: boolean; isScrolling: boolean; private targetPosition; private prevTickTime; private lastPosition; private syncTo?; private rafID; private lastDirection; private fields; constructor(element: ElementOrSelector | null | undefined, options?: OnlyScrollbarOptions); /** * @description Последнее направление скрола в числовом представлении * @description 1 = Forward, -1 = Back */ get direction(): Direction; /** * Остановка анимации скрола на текущей позиции */ stop(): void; /** * @description Плавный скрол до конкретной позиции, с применением стандартных расчетов для вычисления промежуточных значений * @param position */ scrollTo(position: number): void; scrollIntoView(element: HTMLElement, offset?: number): void; /** * @description Установка конкретного значения скрол позиции, без применения каких-либо анимаций * @param value {number} - Числовое значение целевой позиции скрола */ setValue(value: number): void; /** * @description Блокирует скрол * @description Блокировка также прервет запущенные процессы по перерасчету позиции */ lock(): void; /** * @description Разблокирует скрол, запускает перерасчет позиции скрола */ unlock(): void; addEventListener(type: OnlyScrollbarEvents | keyof HTMLElementEventMap, listener: EventListenerOrEventListenerObject, options?: AddEventListenerOptions): void; removeEventListener(type: OnlyScrollbarEvents | keyof HTMLElementEventMap, listener: EventListenerOrEventListenerObject): void; destroy(): void; private init; /** @todo: Проверить. В логике были ошибки, если передать eventContainer */ private initEvents; private handleCustomAnchors; private handleNativeAnchors; private onScroll; private onWheel; private overscrollPropagation; private wheelCalculate; private setTargetPosition; /** * @description Обновление направления скрола. Также устанавливает на scrollContainer атрибут data-os-direction */ private updateDirection; private toggleDirectionAttr; private tick; private onFirstTick; private sync; private checkSyncTo; private checkEdges; } export default OnlyScrollbar;