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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
import delegate from 'delegate-it';
import * as pageDetect from 'github-url-detection';
import features from '../feature-manager.js';
import clickAll from '../helpers/click-all.js';
function minimizedCommentsSelector(clickedItem: HTMLElement): string {
const open = (clickedItem.parentElement as HTMLDetailsElement).open ? '[open]' : ':not([open])';
return `.minimized-comment > details${open} > summary`;
}
const diffsSelector = '.js-file .js-diff-load';
function resolvedCommentsSelector(clickedItem: HTMLElement): string {
return `.js-resolvable-thread-toggler[aria-expanded="${clickedItem.getAttribute('aria-expanded')!}"]:not(.d-none)`;
}
const expandSelector = '.js-file .js-expand-full';
const collapseSelector = '.js-file .js-collapse-diff';
const commitMessageSelector = '.TimelineItem .ellipsis-expander';
function markdownCommentSelector(clickedItem: HTMLElement): string {
const {id} = clickedItem.closest('.TimelineItem-body[id]')!;
return `#${id} .markdown-body details > summary`;
}
function init(signal: AbortSignal): void {
// Collapsed comments in PR conversations and files
delegate('.minimized-comment details summary', 'click', clickAll(minimizedCommentsSelector), {signal});
// "Load diff" buttons in PR files
delegate(diffsSelector, 'click', clickAll(diffsSelector), {signal});
// Review comments in PR
delegate('.js-file .js-resolvable-thread-toggler', 'click', clickAll(resolvedCommentsSelector), {signal});
// "Expand all" and "Collapse expanded lines" buttons in commit files
delegate(expandSelector, 'click', clickAll(expandSelector), {signal});
delegate(collapseSelector, 'click', clickAll(collapseSelector), {signal});
// Commit message buttons in commit lists and PR conversations
delegate(commitMessageSelector, 'click', clickAll(commitMessageSelector), {signal});
// <details> elements in issue/PR comment Markdown content
delegate('.TimelineItem-body[id] .markdown-body details > summary', 'click', clickAll(markdownCommentSelector), {signal});
}
void features.add(import.meta.url, {
include: [
pageDetect.isConversation,
pageDetect.hasFiles,
pageDetect.isCommitList,
],
init,
});
|