forked from goonstation/goonstation
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdmdoc.js
52 lines (47 loc) · 1.85 KB
/
dmdoc.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
52
// ----------------------------------------------------------------------------
// Index page tree browsing
document.addEventListener("DOMContentLoaded", function() {
var items = document.getElementsByClassName("index-tree");
var nodes = [];
for (var i = 0; i < items.length; ++i) {
var node = items[i];
var parent = node.parentElement;
if (!parent || parent.tagName.toLowerCase() != "li") {
continue;
}
node.hidden = true;
parent.style.listStyle = "none";
var expander = document.createElement("span");
expander.className = "expander";
expander.textContent = "\u2795";
expander.addEventListener("click", function(node) {
return function(event) {
if (event.target.tagName.toLowerCase() == "a") {
return;
}
event.preventDefault();
event.stopPropagation(true);
node.hidden = !node.hidden;
this.textContent = node.hidden ? "\u2795" : "\u2796";
};
}(node));
parent.insertBefore(expander, parent.firstChild);
nodes.push([node, expander]);
}
if (nodes.length) {
var toggle = document.createElement("a");
toggle.href = "#";
toggle.appendChild(document.createTextNode("Toggle All"));
toggle.addEventListener("click", function(event) {
event.preventDefault();
var hidden = !nodes[0][0].hidden;
for (var i = 0; i < nodes.length; ++i) {
nodes[i][0].hidden = hidden;
nodes[i][1].textContent = hidden ? "\u2795" : "\u2796";
}
});
var header = document.getElementsByTagName("header")[0];
header.appendChild(document.createTextNode(" \u2014 "));
header.appendChild(toggle);
}
});