blob: 8a2bd7a09c3ab9ae8e9e8a91d451bb452afa1449 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
import React from "react";
let on = false;
export default function useReverseScrollPositionRemember(): void {
React.useEffect(() => {
if (on) return;
on = true;
let scrollPosition =
document.documentElement.scrollHeight -
document.documentElement.scrollTop;
const scrollListener = (): void => {
scrollPosition = document.documentElement.scrollHeight - window.scrollY;
};
window.addEventListener("scroll", scrollListener);
const resizeObserver = new ResizeObserver(() => {
document.documentElement.scrollTop =
document.documentElement.scrollHeight - scrollPosition;
});
resizeObserver.observe(document.documentElement);
return () => {
window.removeEventListener("scroll", scrollListener);
resizeObserver.disconnect();
on = false;
};
}, []);
}
|