function visitListItem()

in theme/src/main/assets/assets/javascripts/paradox-material-theme.js [59:121]


    function visitListItem(item, path, level) {
      item.classList.add('md-nav__item')

      var link = item.querySelector(':scope > a')
      if (link) {
        link.classList.add('md-nav__link')
        link.classList.remove('page')
        if (link.classList.contains('active')) {
          item.classList.add('md-nav__item--active')
          link.classList.add('md-nav__link--active')
        }
        link.setAttribute('data-md-state', '')
      }

      var nestedNav = null
      var nestedRoot = item.querySelector(':scope > ul')
      if (nestedRoot) {
        var active = item.querySelector(':scope a.active') != null
        item.classList.add('md-nav__item--nested')
        var nestedNav = document.createElement('nav')
        nestedNav.classList.add('md-nav')
        nestedNav.setAttribute('data-md-component', 'collapsible')
        nestedNav.setAttribute('data-md-level', level)

        var input = createNavToggle(path, active)

        var label = createNavLabel(path, false, link)
        if (link)
          link.classList.remove('md-nav__link')

        var labelInner = document.createElement('label')
        labelInner.classList.add('md-nav__title')
        labelInner.setAttribute('for', path)
        labelInner.textContent = link ? link.textContent : '???'

        nestedNav.appendChild(labelInner)
        nestedNav.appendChild(nestedRoot)
        item.appendChild(input)
        item.appendChild(label)
        item.appendChild(nestedNav)
        visitList(nestedRoot, path, level + 1)
      }

      if (link && link.classList.contains('active')) {
        var toc = document.querySelector('nav.md-nav--primary > .md-nav--secondary')
        if (toc && toc.children.length > 0) {
          var input = createNavToggle('__toc', false)
          var labelText = nestedNav ? 'Table of contents' : link ? link.textContent : '???'
          var label = createNavLabel('__toc', true, document.createTextNode(labelText))

          if (nestedNav) {
            var node = nestedNav.children[1]
            nestedNav.insertBefore(input, node)
            nestedNav.insertBefore(label, node)
            nestedNav.appendChild(toc)
          } else if (link) {
            item.insertBefore(input, link)
            item.insertBefore(label, link)
            item.appendChild(toc)
          }
        }
      }
    }