blob: e0d8df5553c92d22b868f35950a10148f1f6ec9c [file] [log] [blame]
{{ partial "page-meta-links.html" . }}
{{ if not .Params.notoc }}
{{ with .TableOfContents }}
{{ if ge (len .) 200 }}
{{ . }}
{{ end }}
{{ end }}
{{ end }}
<script>
$(function () {
var $toc = $("#TableOfContents");
if (!$toc || !$toc.length) {
return;
}
var top = $toc.offset().top;
$(window).on("scroll", debounce(setTop, 100))
$(window).on("scroll", debounce(addActive, 30))
function addActive() {
var scrollValue = $(window).scrollTop();
var topEle = null;
$.each($('main h1, main h2, main h3'), function (index, item) {
if ($(item).offset().top - 70 > scrollValue) {
return
}
if (!topEle) {
topEle = item
} else if ($(item).offset().top >= $(topEle).offset().top) {
topEle = item
}
if (topEle) {
var id = $(item).attr('id');
$toc.find('a').removeClass("active").end().find('a[href="' + '#' + id + '"]').addClass("active")
}
})
}
function setTop() {
var scrollValue = $(window).scrollTop();
if (scrollValue >= top - 70) {
$toc.addClass('fixed')
} else {
$toc.removeClass('fixed')
}
}
function debounce(fn, wait) {
var timeout = null;
return function () {
clearTimeout(timeout);
timeout = setTimeout(() => {
fn.apply(this, arguments);
}, wait);
};
}
})
</script>