You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							109 lines
						
					
					
						
							2.9 KiB
						
					
					
				
			
		
		
	
	
							109 lines
						
					
					
						
							2.9 KiB
						
					
					
				/* global anchors */
 | 
						|
 | 
						|
// add anchor links to headers
 | 
						|
anchors.options.placement = 'left'
 | 
						|
anchors.add('h3')
 | 
						|
 | 
						|
// Filter UI
 | 
						|
var tocElements = document.getElementById('toc').getElementsByTagName('li')
 | 
						|
 | 
						|
document.getElementById('filter-input').addEventListener('keyup', function (e) {
 | 
						|
  var i, element, children
 | 
						|
 | 
						|
  // enter key
 | 
						|
  if (e.keyCode === 13) {
 | 
						|
    // go to the first displayed item in the toc
 | 
						|
    for (i = 0; i < tocElements.length; i++) {
 | 
						|
      element = tocElements[i]
 | 
						|
      if (!element.classList.contains('display-none')) {
 | 
						|
        location.replace(element.firstChild.href)
 | 
						|
        return e.preventDefault()
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  var match = function () {
 | 
						|
    return true
 | 
						|
  }
 | 
						|
 | 
						|
  var value = this.value.toLowerCase()
 | 
						|
 | 
						|
  if (!value.match(/^\s*$/)) {
 | 
						|
    match = function (element) {
 | 
						|
      return element.firstChild.innerHTML.toLowerCase().indexOf(value) !== -1
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  for (i = 0; i < tocElements.length; i++) {
 | 
						|
    element = tocElements[i]
 | 
						|
    children = Array.from(element.getElementsByTagName('li'))
 | 
						|
    if (match(element) || children.some(match)) {
 | 
						|
      element.classList.remove('display-none')
 | 
						|
    } else {
 | 
						|
      element.classList.add('display-none')
 | 
						|
    }
 | 
						|
  }
 | 
						|
})
 | 
						|
 | 
						|
var toggles = document.getElementsByClassName('toggle-step-sibling')
 | 
						|
for (var i = 0; i < toggles.length; i++) {
 | 
						|
  toggles[i].addEventListener('click', toggleStepSibling)
 | 
						|
}
 | 
						|
 | 
						|
function toggleStepSibling() {
 | 
						|
  var stepSibling = this.parentNode.parentNode.parentNode.getElementsByClassName('toggle-target')[0]
 | 
						|
  var klass = 'display-none'
 | 
						|
  if (stepSibling.classList.contains(klass)) {
 | 
						|
    stepSibling.classList.remove(klass)
 | 
						|
    stepSibling.innerHTML = '▾'
 | 
						|
  } else {
 | 
						|
    stepSibling.classList.add(klass)
 | 
						|
    stepSibling.innerHTML = '▸'
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
var items = document.getElementsByClassName('toggle-sibling')
 | 
						|
for (var j = 0; j < items.length; j++) {
 | 
						|
  items[j].addEventListener('click', toggleSibling)
 | 
						|
}
 | 
						|
 | 
						|
function toggleSibling() {
 | 
						|
  var stepSibling = this.parentNode.getElementsByClassName('toggle-target')[0]
 | 
						|
  var icon = this.getElementsByClassName('icon')[0]
 | 
						|
  var klass = 'display-none'
 | 
						|
  if (stepSibling.classList.contains(klass)) {
 | 
						|
    stepSibling.classList.remove(klass)
 | 
						|
    icon.innerHTML = '▾'
 | 
						|
  } else {
 | 
						|
    stepSibling.classList.add(klass)
 | 
						|
    icon.innerHTML = '▸'
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
function showHashTarget(targetId) {
 | 
						|
  var hashTarget = document.getElementById(targetId)
 | 
						|
  // new target is hidden
 | 
						|
  if (
 | 
						|
    hashTarget &&
 | 
						|
    hashTarget.offsetHeight === 0 &&
 | 
						|
    hashTarget.parentNode.parentNode.classList.contains('display-none')
 | 
						|
  ) {
 | 
						|
    hashTarget.parentNode.parentNode.classList.remove('display-none')
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
window.addEventListener('hashchange', function () {
 | 
						|
  showHashTarget(location.hash.substring(1))
 | 
						|
})
 | 
						|
 | 
						|
showHashTarget(location.hash.substring(1))
 | 
						|
 | 
						|
var toclinks = document.getElementsByClassName('pre-open')
 | 
						|
for (var k = 0; k < toclinks.length; k++) {
 | 
						|
  toclinks[k].addEventListener('mousedown', preOpen, false)
 | 
						|
}
 | 
						|
 | 
						|
function preOpen() {
 | 
						|
  showHashTarget(this.hash.substring(1))
 | 
						|
}
 |