123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- /* 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));
- }
|