react-vscrollview
Version:
Enhanced scroll-view component for ReactJS.
99 lines (98 loc) • 3.19 kB
TypeScript
import React, { WheelEventHandler, KeyboardEventHandler } from "react";
import { Component } from "react";
import { Vector2i } from "./Utils.js";
import { RenderSource } from "react-vextensions";
export declare enum ScrollSource {
User_MouseWheel = 0,
User_MouseDrag = 1,
User_Keyboard = 2,
Code = 3
}
declare class Div extends Component<{
shouldUpdate: any;
} & React.HTMLProps<HTMLDivElement>, {}> {
shouldComponentUpdate(nextProps: any, nextState: any): any;
render(): React.JSX.Element;
}
export type ScrollViewProps = {
backgroundDrag?: boolean;
backgroundDragMatchFunc?: (element: HTMLElement) => boolean;
bufferScrollEventsBy?: number;
scrollH_pos?: number;
scrollV_pos?: number;
className?: string;
style?: any;
contentOuterStyle?: any;
contentStyle?: any;
scrollHBarStyle?: any;
scrollVBarStyle?: any;
flex?: boolean;
contentOuter_onMouseDown?: any;
contentOuter_onClick?: any;
content_onClick?: any;
onWheel?: WheelEventHandler<HTMLDivElement>;
onKeyDown?: KeyboardEventHandler<HTMLDivElement>;
onScroll?: (event: React.UIEvent<HTMLDivElement>, source: ScrollSource, pos: Vector2i) => void;
onScroll_addTabIndex?: boolean;
onScrollEnd?: (pos: Vector2i) => void;
} & Omit<React.HTMLProps<HTMLDivElement>, "onScroll">;
declare const ScrollView_base: (new (..._: any) => import("react-vextensions").BaseComponent<ScrollViewProps, {
containerWidth: number;
contentWidth: number;
scrollH_active: boolean;
scrollH_pos: number;
scrollHBar_hovered: boolean;
containerHeight: number;
contentHeight: number;
scrollV_active: boolean;
scrollV_pos: number;
scrollVBar_hovered: boolean;
scrollOp_bar: HTMLElement;
}, object>) & {
renderCount: number;
lastRenderTime: number;
};
export declare class ScrollView extends ScrollView_base {
root: HTMLDivElement;
contentOuter: Div;
get ContentOuterDOM(): HTMLDivElement;
content: HTMLDivElement;
scrollHBar: HTMLDivElement;
scrollVBar: HTMLDivElement;
lastMouseWheelTime: number;
lastKeyEventTime: number;
render(): React.JSX.Element;
resizeObserver_container: ResizeObserver;
resizeObserver_content: ResizeObserver;
ComponentDidMount(): void;
ComponentDidUpdate(): void;
LoadScroll(): void;
PostRender(source: RenderSource): void;
ComponentWillUnmount(): void;
propsJustChanged: boolean;
get PropsJustChanged(): boolean;
ComponentWillReceiveProps(nextProps: any): void;
sizeJustChanged: boolean;
get SizeJustChanged(): boolean;
RespondToSizeChanges: () => void;
private HandleScroll;
UpdateScrolls(): void;
private OnContentMouseDown;
private OnScrollbarMouseDown;
scroll_startMousePos: Vector2i;
scroll_startScrollPos: Vector2i;
private StartScrolling;
hScrollableDOM: Element;
vScrollableDOM: Element;
private OnMouseMove;
private OnMouseUp;
private OnTouchEnd;
private OnScrollEnd;
GetScroll(): {
x: number;
y: number;
};
SetScroll(scrollPos: Vector2i): void;
ScrollBy(scrollPosOffset: Vector2i): void;
}
export {};