-
Notifications
You must be signed in to change notification settings - Fork 62
/
Copy pathreader-mode-initial.js
51 lines (42 loc) · 1.5 KB
/
reader-mode-initial.js
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
ReaderMode = {
active: false,
readerModeTitleNote: " (reader mode)",
/* Overridable default mode.
*/
defaultMode: "auto",
/* Returns current (saved) mode (on, off, or auto).
*/
currentMode: () => {
return (localStorage.getItem("reader-mode-setting") ?? ReaderMode.defaultMode);
},
/* Returns true if reader mode is set to be enabled for the current page,
false otherwise.
*/
enabled: () => {
let currentMode = ReaderMode.currentMode();
return ( currentMode == "on"
|| ( currentMode == "auto"
&& document.body.classList.contains("reader-mode")))
},
/* Masks links and hide other elements, as appropriate. This will hide
linkicons and pop-frame indicators, and will thus cause reflow.
*/
// Called by: ReaderMode.setMode
activate: () => {
GWLog("ReaderMode.activate", "reader-mode-initial.js", 1);
// Add body classes.
document.body.classList.add("reader-mode-active", "masked-links-hidden");
// Update document title.
document.title += ReaderMode.readerModeTitleNote;
}
};
// Activate saved mode, once the <body> element is loaded (and classes known).
doWhenBodyExists(() => {
// Activate (if needed).
if (ReaderMode.enabled() == true)
ReaderMode.activate();
});
// Once .setMode() is available, set the mode.
GW.notificationCenter.addHandlerForEvent("ReaderMode.didLoad", (eventInfo) => {
ReaderMode.setMode();
}, { once: true });