window.onload = function() { show_lang_selector(); var container = document.querySelector('#toc-aside'); if (container != null) { resize_toc(container); toc_scroll_position(container); window.onscroll = function() { toc_scroll_position(container) }; } } function resize_toc(container) { var containerHeight = container.clientHeight; var resize = function() { if (containerHeight > document.documentElement.clientHeight - 100) { container.classList.add('coarse'); } else { container.classList.remove('coarse'); } }; resize(); var resizeId; window.onresize = function() { clearTimeout(resizeId); resizeId = setTimeout(resize, 300); }; } function toc_scroll_position(container) { if (container.offsetParent === null) { // skip computation if ToC is not visible return; } var items = container.querySelectorAll("li") // remove active class for all items for (item of container.querySelectorAll("li")) { item.classList.remove("active"); } // look for active item var site_offset = document.documentElement.scrollTop; var current_toc_item = null; for (item of container.querySelectorAll("li")) { if (item.offsetParent === null) { // skip items that are not visible continue; } var anchor = item.firstElementChild.getAttribute("href"); var heading = document.querySelector(anchor); if (heading.offsetTop <= (site_offset + document.documentElement.clientHeight / 3)) { current_toc_item = item; } else { break; } } // set active class for current ToC item if (current_toc_item != null) { current_toc_item.classList.add("active"); } } function show_lang_selector() { var show_lang_selector = false; for (language_selector of document.querySelectorAll('#language-selector li')) { var lang = language_selector.getAttribute("data-lang-switch-to"); if (this.navigator.languages.includes(lang)) { language_selector.classList.remove("hidden"); show_lang_selector = true } } if (show_lang_selector) { document.querySelector("#language-selector").classList.remove("hidden") } }