-
Notifications
You must be signed in to change notification settings - Fork 36
/
tocScript.html
66 lines (55 loc) · 1.88 KB
/
tocScript.html
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
58
59
60
61
62
63
64
65
66
<!-- Start _includes/tocScript.html -->
<script>
(function () {
var findLineItem = function (path) {
return document.querySelector(`[href="${path}"]`);
};
var highlighLineItem = function (element) {
element.classList.add('highlight');
};
var checkHasClass = function (element, className) {
return element.className.split(' ').find(function (item) { return item === className || '' })
}
var findAllCollapseParents = function (element) {
var collapseMenus = [];
var elementPointer = element;
while (elementPointer !== document.body) {
if (checkHasClass(elementPointer, 'collapse')) {
collapseMenus.push(elementPointer);
}
elementPointer = elementPointer.parentElement
}
return collapseMenus
};
var findMatchingCollapseMenu = function (collapseItem) {
return document.querySelector(`[href="#${collapseItem.id}"]`);
};
var findAllParentMenus = function (element) {
var parentMenus = []
var elementPointer = element;
while (elementPointer !== document.body) {
if (elementPointer.className.split(' ').indexOf('menu') > -1) {
parentMenus.push(elementPointer);
}
elementPointer = elementPointer.parentElement;
}
return parentMenus;
}
var openMenuItem = function (element) {
element.click();
};
var openAllFromList = function (elementList) {
elementList.forEach(function (element) {
console.log(element)
openMenuItem(findMatchingCollapseMenu(element))
});
};
var highlightAndOpenMenu = function () {
var currentLineItem = findLineItem(document.location.pathname);
highlighLineItem(currentLineItem)
openAllFromList(findAllCollapseParents(currentLineItem));
};
$(highlightAndOpenMenu);
}());
</script>
<!-- End _includes/tocScript.html -->