diff options
Diffstat (limited to 'docs/_static/sphinx_design.js')
-rw-r--r-- | docs/_static/sphinx_design.js | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/docs/_static/sphinx_design.js b/docs/_static/sphinx_design.js new file mode 100644 index 0000000000..260460bbcd --- /dev/null +++ b/docs/_static/sphinx_design.js @@ -0,0 +1,72 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +(function () { + "use strict"; + + var dropdownClassName = "sd-dropdown"; + + function getDropdownElement() { + var dropdownId = window.location.hash; + if (!dropdownId) { + return false; + } + + var dropdownElement = document.getElementById(dropdownId.substring(1)); + if ( + !dropdownElement || + !dropdownElement.classList.contains(dropdownClassName) + ) { + return false; + } + + return dropdownElement; + } + + function setupDropdownLink() { + var dropdowns = document.getElementsByClassName(dropdownClassName); + for (var i = 0; i < dropdowns.length; i++) { + for (var j = 0; j < dropdowns[i].classList.length; j++) { + if (dropdowns[i].classList[j].startsWith("anchor-id-")) { + dropdowns[i].id = dropdowns[i].classList[j].replace("anchor-id-", ""); + } + } + + var aTag = document.createElement("a"); + aTag.setAttribute("href", "#" + dropdowns[i].id); + aTag.classList.add("dropdown-link"); + aTag.innerHTML = "ΒΆ"; + + var summaryElement = + dropdowns[i].getElementsByClassName("sd-summary-title")[0]; + summaryElement.insertBefore( + aTag, + summaryElement.getElementsByClassName("docutils")[0] + ); + } + } + + function scrollToDropdown() { + var dropdownElement = getDropdownElement(); + if (dropdownElement) { + dropdownElement.open = true; + dropdownElement.scrollIntoView(true); + } + } + + // Initialize dropdown link + window.addEventListener("DOMContentLoaded", () => { + if (document.getElementsByClassName(dropdownClassName).length) { + setupDropdownLink(); + window.onhashchange = scrollToDropdown; + } + }); + + // Scroll to and open the dropdown direct links + window.onload = () => { + if (document.getElementsByClassName(dropdownClassName).length) { + scrollToDropdown(); + } + }; +})(); |