Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'book/theme/index.hbs')
| -rw-r--r-- | book/theme/index.hbs | 55 |
1 files changed, 18 insertions, 37 deletions
diff --git a/book/theme/index.hbs b/book/theme/index.hbs index 0a0bc550..0a46ac64 100644 --- a/book/theme/index.hbs +++ b/book/theme/index.hbs @@ -1,5 +1,5 @@ <!DOCTYPE HTML> -<html lang="{{ language }}" class="{{ default_theme }}" dir="{{ text_direction }}"> +<html lang="{{ language }}" class="{{ default_theme }} sidebar-visible" dir="{{ text_direction }}"> <head> <!-- Book generated using mdBook --> <meta charset="UTF-8"> @@ -52,15 +52,17 @@ <!-- MathJax --> <script async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> {{/if}} - </head> - <body class="sidebar-visible no-js"> - <div id="body-container"> + <!-- Provide site root to javascript --> <script> var path_to_root = "{{ path_to_root }}"; var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "{{ preferred_dark_theme }}" : "{{ default_theme }}"; </script> - + <!-- Start loading toc.js asap --> + <script src="{{ path_to_root }}toc.js"></script> + </head> + <body> + <div id="body-container"> <!-- Work around some values being stored in localStorage wrapped in quotes --> <script> try { @@ -82,19 +84,16 @@ var theme; try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { } if (theme === null || theme === undefined) { theme = default_theme; } - var html = document.querySelector('html'); + const html = document.documentElement; html.classList.remove('{{ default_theme }}') html.classList.add(theme); - var body = document.querySelector('body'); - body.classList.remove('no-js') - body.classList.add('js'); + html.classList.add("js"); </script> <input type="checkbox" id="sidebar-toggle-anchor" class="hidden"> <!-- Hide / unhide sidebar before it is displayed --> <script> - var body = document.querySelector('body'); var sidebar = null; var sidebar_toggle = document.getElementById("sidebar-toggle-anchor"); if (document.body.clientWidth >= 1080) { @@ -104,39 +103,21 @@ sidebar = 'hidden'; } sidebar_toggle.checked = sidebar === 'visible'; - body.classList.remove('sidebar-visible'); - body.classList.add("sidebar-" + sidebar); + html.classList.remove('sidebar-visible'); + html.classList.add("sidebar-" + sidebar); </script> <nav id="sidebar" class="sidebar" aria-label="Table of contents"> - <div class="sidebar-scrollbox"> - {{#toc}}{{/toc}} + <!-- populated by js --> + <mdbook-sidebar-scrollbox class="sidebar-scrollbox"></mdbook-sidebar-scrollbox> + <noscript> + <iframe class="sidebar-iframe-outer" src="{{ path_to_root }}toc.html"></iframe> + </noscript> + <div id="sidebar-resize-handle" class="sidebar-resize-handle"> + <div class="sidebar-resize-indicator"></div> </div> - <div id="sidebar-resize-handle" class="sidebar-resize-handle"></div> </nav> - <!-- Track and set sidebar scroll position --> - <script> - var sidebarScrollbox = document.querySelector('#sidebar .sidebar-scrollbox'); - sidebarScrollbox.addEventListener('click', function(e) { - if (e.target.tagName === 'A') { - sessionStorage.setItem('sidebar-scroll', sidebarScrollbox.scrollTop); - } - }, { passive: true }); - var sidebarScrollTop = sessionStorage.getItem('sidebar-scroll'); - sessionStorage.removeItem('sidebar-scroll'); - if (sidebarScrollTop) { - // preserve sidebar scroll position when navigating via links within sidebar - sidebarScrollbox.scrollTop = sidebarScrollTop; - } else { - // scroll sidebar to current active section when navigating via "next/previous chapter" buttons - var activeSection = document.querySelector('#sidebar .active'); - if (activeSection) { - activeSection.scrollIntoView({ block: 'center' }); - } - } - </script> - <div id="page-wrapper" class="page-wrapper"> <div class="page"> |