Skip to content

Commit 4713c86

Browse files
committed
upd: theme
1 parent 72388c1 commit 4713c86

File tree

2 files changed

+39
-22
lines changed

2 files changed

+39
-22
lines changed

docs/theme/pagetoc.css

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
1-
:root {
2-
/* change this value to adjust TOC width */
1+
:root {
32
--toc-width: 310px;
4-
5-
/* use this value to center both text and the TOC */
6-
--content-shift: calc(-1 * var(--toc-width) / 2)
7-
8-
/* --content-shift: 0 */
3+
--center-content-toc-shift: calc(-1 * var(--toc-width) / 2);
4+
--center-content-shift: 0;
95
}
106

117
.nav-chapters {
8+
/* adjust width of buttons that bring to the previous or the next page */
129
min-width: 50px;
1310
}
1411

1512
.previous {
13+
/*
14+
adjust the space between the left sidebar or the left side of the screen
15+
and the button that leads to the previous page
16+
*/
1617
margin-left: var(--page-padding);
1718
}
1819

@@ -25,7 +26,11 @@
2526
@media only screen and (min-width: 1440px) {
2627
main {
2728
position: relative;
28-
left: var(--content-shift);
29+
/* center the text */
30+
/* left: var(--center-content-shift); */
31+
32+
/* or, center both the text and the TOC */
33+
left: var(--center-content-toc-shift);
2934
display: flex;
3035
}
3136
.content-wrap {
@@ -39,6 +44,7 @@
3944
}
4045
.pagetoc {
4146
position: fixed;
47+
/* adjust TOC width */
4248
width: var(--toc-width);
4349
height: calc(100vh - var(--menu-bar-height) - 0.67em * 4);
4450
overflow: auto;
@@ -77,4 +83,4 @@
7783
.sidetoc {
7884
display: none;
7985
}
80-
}
86+
}

docs/theme/pagetoc.js

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,16 @@ function forEach(elems, fun) {
22
Array.prototype.forEach.call(elems, fun);
33
}
44

5+
function getPagetoc(){
6+
return document.getElementsByClassName("pagetoc")[0]
7+
}
8+
59
function getPagetocElems() {
6-
return document.getElementsByClassName("pagetoc")[0].children;
10+
return getPagetoc().children;
11+
}
12+
13+
function getHeaders(){
14+
return document.getElementsByClassName("header")
715
}
816

917
// Un-active everything when you click it
@@ -38,19 +46,22 @@ var updateFunction = function (elem = undefined) {
3846
}
3947

4048
if (!id) {
41-
var elements = document.getElementsByClassName("header");
42-
let menuBottom = getRect(document.getElementById("menu-bar")).bottom;
43-
let contentCenter = window.innerHeight / 2;
44-
let margin = contentCenter / 3;
49+
var elements = getHeaders();
50+
let margin = window.innerHeight / 3;
4551

4652
forEach(elements, function (el, i, arr) {
47-
if (!id && getRect(el).bottom >= menuBottom) {
48-
if (getRect(el).top >= contentCenter + margin) {
49-
id = arr[Math.max(0, i - 1)];
50-
} else {
53+
if (!id && getRect(el).top >= 0) {
54+
if (getRect(el).top < margin) {
5155
id = el;
56+
} else {
57+
id = arr[Math.max(0, i - 1)];
5258
}
5359
}
60+
// a very long last section
61+
// its heading is over the screen
62+
if (!id && i == arr.length - 1) {
63+
id = el
64+
}
5465
});
5566
}
5667

@@ -63,7 +74,7 @@ var updateFunction = function (elem = undefined) {
6374
forPagetocElem(function (el) {
6475
if (id.href.localeCompare(el.href) == 0) {
6576
el.classList.add("active");
66-
let pagetoc = document.getElementsByClassName("pagetoc")[0];
77+
let pagetoc = getPagetoc();
6778
if (overflowTop(pagetoc, el) > 0) {
6879
pagetoc.scrollTop = el.offsetTop;
6980
}
@@ -74,13 +85,13 @@ var updateFunction = function (elem = undefined) {
7485
});
7586
};
7687

77-
var elements = document.getElementsByClassName("header");
88+
let elements = getHeaders();
7889

7990
if (elements.length > 1) {
8091
// Populate sidebar on load
8192
window.addEventListener("load", function () {
82-
var pagetoc = document.getElementsByClassName("pagetoc")[0];
83-
var elements = document.getElementsByClassName("header");
93+
var pagetoc = getPagetoc();
94+
var elements = getHeaders();
8495
forEach(elements, function (el) {
8596
var link = document.createElement("a");
8697
link.appendChild(document.createTextNode(el.text));

0 commit comments

Comments
 (0)