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))
 | |
| }
 |