2 const comments
= document
.querySelectorAll("tr.comtr");
3 const morelink
= document
.querySelectorAll("a.morelink");
5 const elements
= [...Array
.from(comments
), ...Array
.from(morelink
)]
8 let selectedComment
= elements
[elementsIndex
]
9 selectedComment
.style
.outline
= '1px dashed black';
11 const visible
= (element
) => {
12 let bounds
= element
.getBoundingClientRect();
13 return bounds
.top
>= 0 && bounds
.bottom
<= window
.innerHeight
;
16 const changeWithVisibleCallback
= (comment
, callback
) => {
17 if (comment
== null) {
20 selectedComment
.style
.outline
= '';
21 selectedComment
= comment
;
22 selectedComment
.style
.outline
= '1px dashed black';
23 if (!visible(comment
)) {
28 const change
= (comment
) => {
29 elementsIndex
= elements
.indexOf(comment
);
30 changeWithVisibleCallback(comment
, () => {});
33 // Curry callback for moving downpage
34 const changeDownpage
= () => {
35 elementsIndex
= Math
.min(elementsIndex
+ 1, elements
.length
);
36 changeWithVisibleCallback(elements
[elementsIndex
], () => {window
.scrollTo(0, window
.scrollY
+ selectedComment
.offsetHeight
)});
39 // Curry callback for moving up page
40 const changeUppage
= () => {
41 elementsIndex
= Math
.max(elementsIndex
- 1, 0);
42 changeWithVisibleCallback(elements
[elementsIndex
], () => {window
.scrollTo(0, window
.scrollY
- selectedComment
.offsetHeight
)});
45 document
.addEventListener("click", (e
) => {
46 change(e
.target
.closest("tr.athing"));
48 document
.addEventListener("keydown", (e
) => {
56 } while (selectedComment
.classList
.contains("noshow"));
61 } while (selectedComment
.classList
.contains("noshow"));
65 let togg
= selectedComment
.querySelector(".togg");
69 else if (elementsIndex
== elements
.length
- 1) {
70 selectedComment
.click();
74 while (selectedComment
.querySelector("td.ind").firstElementChild
.width
!= 0) {