// Populate the sidebar // // This is a script, and not included directly in the page, to control the total size of the book. // The TOC contains an entry for each page, so if each page includes a copy of the TOC, // the total size of the page becomes O(n**2). class MDBookSidebarScrollbox extends HTMLElement { constructor() { super(); } connectedCallback() { this.innerHTML = '
  1. Introduction
    1. Build
      1. Build for Android on Windows
      2. Maven Release
    2. Contribute
    3. Coding Style
  2. Core Concepts
    1. Filament
    2. Materials
  3. Tutorials and Samples
    1. iOS Tutorial
    2. Web Tutorial
  4. Technical Notes
    1. Material Properties
    2. Versioning
      1. Branching
      2. Release Guide
    3. Documentation
    4. Debugging
      1. Metal
      2. Vulkan
      3. SPIR-V
      4. Running with ASAN and UBSAN
      5. Using Instruments on macOS
      6. Code coverage analysis
      7. Performance analysis
    5. Framegraph
    6. Tests
      1. renderdiff
    7. Libraries
      1. bluegl
      2. bluevk
      3. fgviewer
      4. filamat
      5. gltfio
      6. iblprefilter
      7. matdbg
      8. uberz
    8. Tools
      1. beamsplitter
      2. cmgen
      3. cso-lut
      4. filamesh
      5. normal-blending
      6. mipgen
      7. matinfo
      8. roughness-prefilter
      9. specular-color
      10. zbloat
'; // Set the current, active page, and reveal it if it's hidden let current_page = document.location.href.toString(); if (current_page.endsWith("/")) { current_page += "index.html"; } var links = Array.prototype.slice.call(this.querySelectorAll("a")); var l = links.length; for (var i = 0; i < l; ++i) { var link = links[i]; var href = link.getAttribute("href"); if (href && !href.startsWith("#") && !/^(?:[a-z+]+:)?\/\//.test(href)) { link.href = path_to_root + href; } // The "index" page is supposed to alias the first chapter in the book. if (link.href === current_page || (i === 0 && path_to_root === "" && current_page.endsWith("/index.html"))) { link.classList.add("active"); var parent = link.parentElement; if (parent && parent.classList.contains("chapter-item")) { parent.classList.add("expanded"); } while (parent) { if (parent.tagName === "LI" && parent.previousElementSibling) { if (parent.previousElementSibling.classList.contains("chapter-item")) { parent.previousElementSibling.classList.add("expanded"); } } parent = parent.parentElement; } } } // Track and set sidebar scroll position this.addEventListener('click', function(e) { if (e.target.tagName === 'A') { sessionStorage.setItem('sidebar-scroll', this.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 this.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' }); } } // Toggle buttons var sidebarAnchorToggles = document.querySelectorAll('#sidebar a.toggle'); function toggleSection(ev) { ev.currentTarget.parentElement.classList.toggle('expanded'); } Array.from(sidebarAnchorToggles).forEach(function (el) { el.addEventListener('click', toggleSection); }); } } window.customElements.define("mdbook-sidebar-scrollbox", MDBookSidebarScrollbox);