1 | import { Validator, Requireable, PureComponent } from 'react';
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 | export const IS_SCROLLING_TIMEOUT = 150;
|
8 |
|
9 | export type WindowScrollerChildProps = {
|
10 | height: number;
|
11 | width: number;
|
12 | isScrolling: boolean;
|
13 | scrollTop: number;
|
14 | scrollLeft: number;
|
15 | onChildScroll: (params: { scrollTop: number }) => void;
|
16 | registerChild: (element?: React.ReactNode) => void;
|
17 | };
|
18 |
|
19 | export type WindowScrollerProps = {
|
20 | |
21 |
|
22 |
|
23 |
|
24 |
|
25 | children: (params: WindowScrollerChildProps) => React.ReactNode;
|
26 |
|
27 |
|
28 | onResize?: (params: { height: number; width: number }) => void;
|
29 |
|
30 |
|
31 | onScroll?: (params: { scrollLeft: number; scrollTop: number }) => void;
|
32 |
|
33 |
|
34 | scrollElement?: typeof window | Element;
|
35 | |
36 |
|
37 |
|
38 | scrollingResetTimeInterval?: number;
|
39 |
|
40 |
|
41 | serverHeight?: number;
|
42 |
|
43 |
|
44 | serverWidth?: number;
|
45 | |
46 |
|
47 |
|
48 |
|
49 |
|
50 |
|
51 |
|
52 | [key: string]: any;
|
53 | };
|
54 |
|
55 | export type WindowScrollerState = {
|
56 | height: number;
|
57 | width: number;
|
58 | isScrolling: boolean;
|
59 | scrollLeft: number;
|
60 | scrollTop: number;
|
61 | };
|
62 |
|
63 | export class WindowScroller extends PureComponent<WindowScrollerProps, WindowScrollerState> {
|
64 | static defaultProps: {
|
65 | onResize: () => void;
|
66 | onScroll: () => void;
|
67 | scrollingResetTimeInterval: typeof IS_SCROLLING_TIMEOUT;
|
68 | scrollElement: Window | undefined;
|
69 | serverHeight: 0;
|
70 | serverWidth: 0;
|
71 | };
|
72 |
|
73 | updatePosition(scrollElement?: HTMLElement): void;
|
74 | }
|
75 |
|
76 | export default WindowScroller;
|