UNPKG

docsjs

Version:

HTML/Markdown-only documentation generator

1,121 lines (1,090 loc) 149 kB
// JavaScript Document // Planned for future releases: allow topics and sections to be embedded in e-g/e-x, documentation search, menu as a popup on mobile (make other things popup on mobile), Jump to minimized topic will maximize /* MIT License Copyright (c) 2017 Hailiax Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ ////////////////////// /////// Basics /////// ////////////////////// var DocsJS = {}; DocsJS.aceTheme = { Hailaxian: 'chrome', Minimal: 'clouds' }; DocsJS.apply = function (func){ 'use strict'; var docs = document.getElementsByTagName('docs-js'); for (var docIndex = 0; docIndex < docs.length; docIndex++){ func(docs[docIndex], docIndex); } }; DocsJS.forEach = function(nodes,callback){ 'use strict'; for (var n = 0; n < nodes.length; n++){ callback(nodes[n],n); } }; DocsJS.origin = document.getElementsByTagName('script')[document.getElementsByTagName('script').length - 1].src; DocsJS.init = function(callback){ 'use strict'; // *** console.log('DocsJS: init started @',performance.now()); // Convert markdown showdown.setOption('omitExtraWLInCodeBlocks', true); showdown.setOption('noHeaderId', true); showdown.setOption('parseImgDimensions', true); showdown.setOption('strikethrough', true); showdown.setOption('tables', true); showdown.setOption('tasklists', true); showdown.setOption('openLinksInNewWindow', true); showdown.setOption('backslashEscapesHTMLTags', true); DocsJS.apply(function(doc){ if (doc.getAttribute('mode') === 'markdown'){ var converter = new showdown.Converter(), text = doc.innerHTML.replace(/<!--/g,'').replace(/-->/g,''), html = converter.makeHtml(text); doc.innerHTML = html; var nodes = doc.querySelectorAll('*'); var open = []; for (var index = 0; index < nodes.length; index++){ var node = nodes[index]; switch (node.tagName.toUpperCase()){ case 'H1': node.outerHTML = '<!--</t-x></s-c><s-c>\r\n<h-d>\r\n<t-l>-->'+node.innerHTML+'<!--</t-l>\r\n<t-x>-->'; open.push(['s-c',1]); open.push(['h-d',1]); open.push(['t-x',1]); break; case 'H2': node.outerHTML = '<!--</'+open[open.length-1][0]+'>\r\n</'+open[open.length-2][0]+'>\r\n<t-p>\r\n<t-l>-->'+node.innerHTML+'<!--</t-l>\r\n<t-x>-->'; open.pop(); open.pop(); open.push(['t-p',2]); open.push(['t-x',2]); break; case 'PRE': var mode = node.querySelector('code').className.split(' ')[0] || 'plain_text'; mode = mode.toLowerCase(); switch (mode){ case 'js': mode = 'javascript'; break; case 'bash': mode = 'sh'; break; case 'cpp': mode = 'c_cpp'; break; } node.outerHTML = '<!--</t-x>\r\n<e-g>\r\n--><c-d docsjs-lang="'+mode+'">'+node.querySelector('code').innerHTML+'</c-d><!--\r\n</e-g>\r\n<t-x>-->'; break; } } for (var unclosed = open.length; unclosed > 0; unclosed--){ doc.innerHTML += '<!--\r\n</'+open[unclosed-1][0]+'>-->'; } doc.innerHTML = doc.innerHTML.replace(/<!--/g,'').replace(/-->/g,''); var selector = 'docs-js>*'; nodes = document.querySelectorAll(selector); var depth = 0; while (nodes.length > 0){ for (var n = 0; n < nodes.length; n++){ nodes = document.querySelectorAll(selector); var tabs = ''; for (var d = 0; d < depth; d++){ tabs += '<!--\t-->'; } var split = nodes[n].outerHTML.split('\n'); if (split[split.length-1].charAt(0) === '<' && split[split.length-1].charAt(1) === '/'){ split[split.length-1] = tabs + split[split.length-1]; } nodes[n].outerHTML = tabs+split.join('\n'); } depth++; selector += '>*'; nodes = document.querySelectorAll(selector); } doc.innerHTML = doc.innerHTML.replace(/<!--/g,'').replace(/-->/g,''); if (!DocsJS.doNotLogConvertedMarkdown){ console.log(doc.innerHTML); console.log('See your converted Markdown above.\n\nIf you switch to regular DocsJS syntax, make sure to remove mode="markdown" on your <docs-js> tag.\n\nTo disable this message, set DocsJS.doNotLogConvertedMarkdown = true;'); } DocsJS.eg.name = 'Code'; } }); // Set theme if (document.getElementById('DocsJS-theme') !== null){ DocsJS.theme = document.getElementById('DocsJS-theme').href.split('/'); DocsJS.theme = DocsJS.theme[DocsJS.theme.length-1].split('.')[0]; if (DocsJS.aceTheme[DocsJS.theme] === undefined){ console.error(DocsJS.theme + ' is not a theme used by DocsJS. DocsJS will assume the theme (DocsJS.theme =) "Hailaxian" and will use the Ace c-d theme (DocsJS.cd.theme =) "chrome".'); DocsJS.theme = 'Hailaxian'; } } // Add essential compenents DocsJS.apply(function(doc){ doc.innerHTML = '<main role="main"><s-c><button role="button" docsjs-tag="accessibility-button" tabindex="0" onclick="DocsJS.toggleRecommendedAccessibility(this)" onkeydown="DocsJS.accessButtonSpaceClick(this,event)">Accessibility Mode</button><div docsjs-tag="header"></div></s-c><s-c style="display:none;"><button role="button" docsjs-tag="accessibility-button" tabindex="0" onclick="DocsJS.toggleExtendedAccessibility()" onkeydown="DocsJS.accessButtonSpaceClick(this,event)">Extended Accessibility Mode</button></s-c>'+doc.innerHTML+'</main>'; }); DocsJS.apply(function(doc){ doc.style.fontSize = DocsJS.fontsize._value + 'px'; doc.innerHTML += '<div></div>'+ '<div docsjs-tag="menu" style="display: none;"></div>' + '<div docsjs-tag="column-left" docsjs-state="none" style="position:fixed;">'+DocsJS.column.choice(-1)+'</div>' + '<div docsjs-tag="column-right" docsjs-state="none" style="left:100%;position:fixed;">'+DocsJS.column.choice(1)+'</div>' + '<div docsjs-extras="learnmore" style="position: relative; width: 100%; height: 1.25em; line-height:1.25em; text-align: center; font-size: 0.75em; opacity: 0.5; text-shadow: -0.04em -0.04em 0.12em #fff,0.04em 0.04em 0.12em #fff,-0.04em 0.04em 0.12em #fff,0.04em -0.04em 0.12em #fff;"><a href="https://hailiax.io/docsjs/" target="_blank" style="text-decoration: none; color: #000; line-height: 1.25em;">– Powered by Docs.JS –</a></div><div docsjs-tag="bg" docsjs-extra="invert"></div>'; }); DocsJS.fontsize._init = DocsJS.fontsize._value; // Finish initiation var finish = function(){ // *** console.log('DocsJS: DocsJS.refresh() done @',performance.now()); window.setTimeout(function(){ // Watch events DocsJS.addEvent(window,'scroll',DocsJS.scrolled); DocsJS.addEvent(window,'resize',DocsJS.resized); DocsJS.addEvent(window,'hashchange',DocsJS.hashchanged); DocsJS.resized(); // Check for min and max var duration = DocsJS.animation.duration; DocsJS.animation.duration = 0; DocsJS.apply(function(doc){ DocsJS.forEach(doc.querySelectorAll('[docsjs-state="max"]'),function(el){ if (el.tagName.toUpperCase() === 'E-X' || el.tagName.toUpperCase() === 'E-G'){ el.setAttribute('docsjs-internal-default','max'); DocsJS.rotate(el.previousSibling.querySelector('[docsjs-tag="button-ebefore"]'),90); } else if (el.tagName.toUpperCase() === 'T-P' || el.tagName.toUpperCase() === 'H-D'){ el.setAttribute('docsjs-internal-default','max'); } else if (el.tagName.toUpperCase() === 'S-C'){ el.setAttribute('docsjs-internal-default','max'); } }); DocsJS.forEach(doc.querySelectorAll('[docsjs-state="min"]'),function(el){ if (el.tagName.toUpperCase() === 'E-X' || el.tagName.toUpperCase() === 'E-G'){ el.setAttribute('docsjs-internal-default','min'); el.docsjs.state = 'max'; el.previousSibling.onclick(); } else if (el.tagName.toUpperCase() === 'T-P' || el.tagName.toUpperCase() === 'H-D'){ el.setAttribute('docsjs-internal-default','min'); el.docsjs.state = 'max'; el.querySelector('t-l').onclick({target:{docsjs:{tag:'T-L'}}}); } else if (el.tagName.toUpperCase() === 'S-C'){ el.setAttribute('docsjs-internal-default','min'); el.docsjs.state = 'max'; el.querySelector('[docsjs-tag="button-minimize"]').onclick(); } }); }); // Accessibility styles var accessStyle = document.createElement('style'); (document.head || document.getElementsByTagName("head")[0]).appendChild(accessStyle); var accessStyleText = '[docsjs-tag=accessibility-mode-content] h1,[docsjs-tag=accessibility-mode-content] h2,[docsjs-tag=accessibility-mode-content] h3,[docsjs-tag=accessibility-mode-content] h4,[docsjs-tag=accessibility-mode-content] h5,[docsjs-tag=accessibility-mode-content] h6{line-height:2em;font-weight:bold;text-decoration:underline;margin:0}[docsjs-tag=accessibility-mode-wrapper]{position:fixed;width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch;z-index:999999999999;padding:1em;box-sizing:border-box;background:#eaeaea}[docsjs-tag=accessibility-mode-content]{position:relative;width:100%;left:0;right:0;margin-left:auto;margin-right:auto;padding:1em;background-color:'+DocsJS.getStyle(document.querySelector('t-x'),'background-color')+';color:'+DocsJS.getStyle(document.querySelector('t-x'),'color')+';box-shadow:0 5px 20px 3px rgba(0,0,0,.3);box-sizing:border-box;overflow:hidden;font-size:1.2em}[docsjs-tag=accessibility-mode-content] p[docsjs-tag=textNode]{display:inline;margin-top:0;margin-bottom:0}[docsjs-tag=accessibility-mode-content] h1{font-size:2.5em}[docsjs-tag=accessibility-mode-content] h2{font-size:2em}[docsjs-tag=accessibility-mode-content] h3{font-size:1.6em}[docsjs-tag=accessibility-mode-content] h4{font-size:1.4em}[docsjs-tag=accessibility-mode-content] h5{font-size:1.2em}[docsjs-tag=accessibility-mode-content] h6{font-size:1.2em; font-weight: regular;}'; if (typeof accessStyle.styleSheet === 'undefined'){ accessStyle.innerHTML = accessStyleText; } else{ accessStyle.styleSheet.cssText = accessStyleText; } // *** console.log('DocsJS: layout done @',performance.now()); window.setTimeout(function(){ // Init cd DocsJS.cd.refresh(); // *** console.log('DocsJS: Ace done @',performance.now()); if (callback === undefined){callback = function(){};} DocsJS.cache.initiated = true; DocsJS.scrolled(); // Apply sidebars option var sidebars = document.querySelector('docs-js').getAttribute('sidebars'); var menuCompensation = 200; if (sidebars !== null){ sidebars = sidebars.split(' '); switch (sidebars[0]){ case 'choice': break; case 'none': document.querySelector('[docsjs-tag="column-left"]').style.display = 'none'; break; case 'menu': if (DocsJS.window.width() > DocsJS.width.min + 500){ DocsJS.cache.events.columnchoice = 'menu'; DocsJS.cache.events.oncolumn = -1; DocsJS.column.start(-1); menuCompensation = 0; } break; case 'e-g': if (DocsJS.window.width() > DocsJS.width.max - menuCompensation){ DocsJS.cache.events.columnchoice = 'e-g'; DocsJS.cache.events.oncolumn = -1; DocsJS.column.start(-1); } break; case 'e-x': if (DocsJS.window.width() > DocsJS.width.max - menuCompensation){ DocsJS.cache.events.columnchoice = 'e-x'; DocsJS.cache.events.oncolumn = -1; DocsJS.column.start(-1); } break; } switch (sidebars[1]){ case 'choice': break; case 'none': document.querySelector('[docsjs-tag="column-right"]').style.display = 'none'; break; case 'menu': if (menuCompensation > 0){ if (DocsJS.window.width() > DocsJS.width.min + 500){ DocsJS.cache.events.columnchoice = 'menu'; DocsJS.cache.events.oncolumn = 1; DocsJS.column.start(1); menuCompensation = 0; } } break; case 'e-g': if (DocsJS.window.width() > DocsJS.width.max - menuCompensation){ DocsJS.cache.events.columnchoice = 'e-g'; DocsJS.cache.events.oncolumn = 1; DocsJS.column.start(1); } else{ menuCompensation = 400; if (DocsJS.window.width() > DocsJS.width.max - menuCompensation){ DocsJS.column.stop(-1); DocsJS.cache.events.columnchoice = 'e-g'; DocsJS.cache.events.oncolumn = 1; DocsJS.column.start(1); } } break; case 'e-x': if (DocsJS.window.width() > DocsJS.width.max - menuCompensation){ DocsJS.cache.events.columnchoice = 'e-x'; DocsJS.cache.events.oncolumn = 1; DocsJS.column.start(1); } else{ menuCompensation = 400; if (DocsJS.window.width() > DocsJS.width.max - menuCompensation){ DocsJS.column.stop(-1); DocsJS.cache.events.columnchoice = 'e-x'; DocsJS.cache.events.oncolumn = 1; DocsJS.column.start(1); } } break; } } // Done DocsJS.hashchanged(); DocsJS.cd.refresh(); DocsJS.animation.duration = duration; callback(); DocsJS.events.ready(); // *** console.log('DocsJS: ready @',performance.now()); },0); },0); }; // *** console.log('DocsJS: Essentials rendered @',performance.now()); window.setTimeout(function(){ DocsJS.refresh(finish); },0); }; window.html5 = { 'elements': 's-c h-d t-p t-l t-x e-g e-x c-d docs-js main nav code button' }; DocsJS.refresh = function(callback){ 'use strict'; // Set theme if (DocsJS.cache.initiated){ document.getElementsByTagName('head')[0].removeChild(document.getElementById('DocsJS-theme')); if (DocsJS.theme !== null){ var themeSheetSrc = DocsJS.origin.split('/'); themeSheetSrc.pop(); themeSheetSrc = themeSheetSrc.join('/') + '/themes/'+DocsJS.theme+'.min.css'; var themeSheet = document.createElement('link'); themeSheet.rel = 'stylesheet'; themeSheet.href = themeSheetSrc; themeSheet.id = 'DocsJS-theme'; document.getElementsByTagName('head')[0].appendChild(themeSheet); } } // Process varible tags DocsJS.apply(function(doc){ doc.outerHTML = doc.outerHTML .replace(/<v-r (.*?)\W/g,'<v-r docsjs-tag="v-r" aria-hidden="true" docsjs-name="$1"'); }); DocsJS.apply(function(doc){ var varHolder = {}; DocsJS.forEach(doc.querySelectorAll('[docsjs-tag="v-r"]'),function(el){ if (JSON.stringify(el.innerHTML).replace(/\\[\s\S]/g,'').length > 2){ varHolder[el.docsjs.name] = el.innerHTML; el.style.display = 'none'; } else{ el.outerHTML = varHolder[el.docsjs.name]; } }); }); // Add buttons and formatting DocsJS.apply(function(doc){ var recurse; recurse = function(s){ DocsJS.forEach(s.querySelectorAll('h-d > t-l'),function(el){ el.parentElement.setAttribute('aria-labelledby','docsjs-aria-section-'+el.textContent.replace(/\W+/g,'_')); el.setAttribute('docsjs-arialabel','docsjs-aria-section-'+el.textContent.replace(/\W+/g,'_')); var minimizeButton = document.createElement('div'); minimizeButton.setAttribute('docsjs-tag','button-minimize'); minimizeButton.innerHTML = DocsJS.buttons.minimize.html(); el.appendChild(minimizeButton); recurse(el); }); }; recurse(doc); var tpCounter = 0; var state = 'active'; recurse = function(s){ tpCounter++; DocsJS.forEach(s.querySelectorAll('t-p > t-l'),function(el){ el.parentElement.setAttribute('aria-labelledby','docsjs-aria-topic-'+el.textContent.replace(/\W+/g,'_')+tpCounter); el.setAttribute('docsjs-arialabel','docsjs-aria-topic-'+el.textContent.replace(/\W+/g,'_')+tpCounter); var minimizeButton = document.createElement('div'); minimizeButton.setAttribute('docsjs-tag','button-menu'); minimizeButton.setAttribute('docsjs-state',state); minimizeButton.setAttribute('docsjs-internal','menuHidden'); minimizeButton.innerHTML = DocsJS.buttons.menu.html(); el.appendChild(minimizeButton); state = 'inactive'; recurse(el); }); }; recurse(doc); var egCounter = 0; recurse = function(s){ egCounter++; DocsJS.forEach(s.querySelectorAll('e-g'),function(el){ el.setAttribute('labelledby','docsjs-aria-eg-'+(el.docsjs.name === undefined? DocsJS.eg.name.replace(/\W+/g,'_')+egCounter : el.docsjs.name.replace(/\W+/g,'_')+egCounter)); if (el.docsjs.state === undefined){ el.setAttribute('docsjs-state',DocsJS.eg.defaultState); } if (el.previousSibling === null || el.previousSibling.docsjs === undefined || (el.previousSibling.tagName.toUpperCase() !== 'ebefore' && el.parentElement.tagName.toUpperCase() !== 'column-content')){ el.insertAdjacentHTML( 'beforeBegin', '<div docsjs-tag="ebefore" role="button" tabindex="0" id="docsjs-aria-eg-'+(el.docsjs.name === undefined? DocsJS.eg.name.replace(/\W+/g,'_')+egCounter : el.docsjs.name.replace(/\W+/g,'_')+egCounter)+'"><div docsjs-tag="button-ebefore" >'+DocsJS.buttons.eg.html()+'</div>'+(el.docsjs.name === undefined? DocsJS.eg.name : el.docsjs.name)+'</div>' ); } recurse(el); }); }; recurse(doc); var exCounter = 0; recurse = function(s){ exCounter++; DocsJS.forEach(s.querySelectorAll('e-x'),function(el){ el.setAttribute('labelledby','docsjs-aria-ex-'+(el.docsjs.name === undefined? DocsJS.eg.name.replace(/\W+/g,'_')+exCounter : el.docsjs.name.replace(/\W+/g,'_')+exCounter)); if (el.docsjs.state === undefined){ el.setAttribute('docsjs-state',DocsJS.ex.defaultState); } if (el.previousSibling === null || el.previousSibling.docsjs === undefined || el.previousSibling.tagName.toUpperCase() !== 'ebefore'){ el.insertAdjacentHTML( 'beforeBegin', '<div docsjs-tag="ebefore" role="button" tabindex="0" id="docsjs-aria-ex-'+(el.docsjs.name === undefined? DocsJS.ex.name.replace(/\W+/g,'_')+exCounter : el.docsjs.name.replace(/\W+/g,'_')+exCounter)+'"><div docsjs-tag="button-ebefore" >'+DocsJS.buttons.ex.html()+'</div>'+(el.docsjs.name === undefined? DocsJS.ex.name : el.docsjs.name)+'</div>' ); } recurse(el); }); }; recurse(doc); recurse = function(s){ DocsJS.forEach(s.querySelectorAll('t-p,h-d'),function(el){ el.innerHTML += '<div docsjs-tag="efiller" docsjs-side="left" aria-hidden="true"></div><div docsjs-tag="efiller" docsjs-side="right" aria-hidden="true"></div>'; if (el.docsjs.state === undefined){ el.setAttribute('docsjs-state','max'); } recurse(el); }); }; recurse(doc); recurse = function(s){ DocsJS.forEach(s.querySelectorAll('s-c'),function(el){ if (el.querySelector('h-d') !== null){ el.setAttribute('aria-labelledby','docsjs-aria-section-'+el.querySelector('h-d').querySelector('t-l').textContent.replace(/\W+/g,'_')); } if (el.docsjs.state === undefined){ el.setAttribute('docsjs-state','max'); } recurse(el); }); }; recurse(doc); }); // Generate accessiblity DocsJS.apply(function(doc){ var access = ''; DocsJS.forEach(doc.querySelectorAll('docs-js>main>s-c'),function(el){ var read = function(el, level){ if (level > 6){level = 6;} DocsJS.forEach(el.childNodes,function(el){ if (el.nodeType === 1){ switch (el.hasAttribute('docsjs-tag')? el.tagName.toUpperCase(): el.tagName.toUpperCase()){ case 'H-D': read(el,(level+1)); level++; break; case 'T-P': read(el,(level+1)); break; case 'S-C': read(el,level); break; case 'T-L': el.innerHTML = '<h'+(level+1)+' id="'+el.docsjs.arialabel+'">'+el.innerHTML+'</h'+(level+1)+'>'; access += '<h'+level+'>'+el.textContent+'</h'+level+'>'; break; case 'T-X': read(el,level);break; case 'E-G': access += '<h'+(level+1)+'>'+(el.hasAttribute('docsjs-name')? el.docsjs.name: DocsJS.eg.name)+'</h'+(level+1)+'>'; read(el,level);break; case 'E-X': access += '<h'+(level+1)+'>'+(el.hasAttribute('docsjs-name')? el.docsjs.name: DocsJS.ex.name)+'</h'+(level+1)+'>'; read(el,level);break; case 'C-D': access += '<pre style="position:relative; display:block; overflow:auto;"><code>'+el.innerHTML+'</code></pre>'; break; case 'ebefore': case 'efiller': break; default: access += el.outerHTML; break; } } else if (el.nodeType === 3){ access += '<p docsjs-tag="textNode">'+el.nodeValue.replace(/[\u00A0-\u9999<>\&]/gim, function(i) { return '&#'+i.charCodeAt(0)+';' + '</p>'; }); } }); }; read(el, -1); }); DocsJS.cache.accessibility = '<main role="main" docsjs-tag="accessibility"><div docsjs-tag="accessibility-mode-wrapper"><div docsjs-tag="accessibility-mode-background"></div><div docsjs-tag="accessibility-mode-content" style="max-width:'+DocsJS.width.max+'px;">'+access+'</div></div></main>'; }); // Generate menu DocsJS.apply(function(doc,index){ var menu = doc.querySelector('[docsjs-tag="menu"]'); var readStructure = function(parent, location){ var structure = ''; var contents = parent.querySelectorAll('s-c,t-p'); if (contents.length !== 0){ var sub = 0; for (var i = 0; i < contents.length; i++){ if (contents[i].nodeType === 1 && contents[i].parentElement === parent){ var newLocation = location + ',' + (i-sub); contents[i].setAttribute('docsjs-location','['+newLocation+']'); var title = (contents[i].querySelector('t-l') || contents[i].querySelector('h-d > t-l') || undefined); if (title !== undefined){ structure += '<div docsjs-tag="menu-item" docsjs-state="max" onclick="'+"if ((event.target || (event.srcElement || event.originalTarget)) === this){if (this.docsjs.state === 'min'){this.docsjs.state = 'max';} else{this.docsjs.state = 'min';}}"+'"><div docsjs-tag="menu-title" role="button" tabindex="0" aria-labelledby="Navigate to '+title.innerText+'" docsjs-state="" docsjs-menu-location="['+newLocation+']" onkeyup="DocsJS.spaceClick(this,event)" onclick="DocsJS._menuClicked(this,['+newLocation+']);" docsjs-menu-destination="'+contents[i].tagName.toUpperCase()+'">'+title.innerText+'</div>'+readStructure(contents[i],newLocation)+'</div>'; } } else{ sub++; } } return structure; } else{ return ''; } }; menu.innerHTML = '<div docsjs-tag="menu-preferences"><div docsjs-tag="menu-preferences-item" docsjs-pref="aA" role="button" tabindex="0" aria-label="Increase Font-size">'+DocsJS.buttons.fontplus()+'</div><div docsjs-tag="menu-preferences-item" docsjs-pref="Aa" role="button" tabindex="0" aria-label="Decrease Font-size">'+DocsJS.buttons.fontminus()+'</div><div docsjs-tag="menu-preferences-item" docsjs-pref="O" role="button" tabindex="0" aria-label="Minimize everything">'+DocsJS.buttons.menuminimized()+'</div>'+/*'<div docsjs-tag="menu-preferences-item" docsjs-pref="CM" role="button" tabindex="0" aria-label="Expand summaries and minimize everything else">'+DocsJS.buttons.partialminimize()+'</div>'+*/'<div docsjs-tag="menu-preferences-item" docsjs-pref="C" role="button" tabindex="0" aria-label="Expand everything">'+DocsJS.buttons.menuminimize()+'</div><div docsjs-tag="menu-preferences-item" docsjs-pref="Iv" role="button" tabindex="0" aria-label="Invert colors">'+DocsJS.buttons.invert()+'</div>'+/*'<div docsjs-tag="menu-preferences-item" docsjs-pref="GPU" role="button" tabindex="0" aria-label="Remove animations">'+DocsJS.buttons.gpu()+'</div>'+*/'<div docsjs-tag="menu-preferences-item" docsjs-pref="Rs">'+DocsJS.buttons.reset()+'</div></div>'+ '<div docsjs-tag="menu-item"><div docsjs-tag="menu-title" docsjs-state="youarehere" docsjs-menu-internal="top" onclick="DocsJS._menuClicked(this,true);">'+DocsJS.menu.top+'</div></div>'+ readStructure(doc.querySelector('main') || doc, index)+ '<div docsjs-tag="menu-item"><div docsjs-tag="menu-title" docsjs-state="" docsjs-menu-internal="btm" onclick="DocsJS._menuClicked(this,false);">'+DocsJS.menu.bottom+'</div></div>'; doc.querySelector('[docsjs-tag="header"]').innerHTML = ''; DocsJS.forEach(doc.querySelectorAll('main>s-c'),function(el){ try{doc.querySelector('[docsjs-tag="header"]').innerHTML += '<span onclick="DocsJS.scroll('+el.docsjs.location+')">' + el.querySelector('t-l').textContent + '</span> ';}catch(e){} }); }); // Bind buttons DocsJS.apply(function(doc){ DocsJS.bindPrefs(); DocsJS.forEach(doc.querySelectorAll('[docsjs-tag="button-minimize"]'),function(el){ var click = function(){ el.onclick = function(){}; var d = (el.parentElement.parentElement.parentElement.parentElement.docsjs.state === 'max')? 1 : 0; var tl = el.parentElement.parentElement; var hd = el.parentElement.parentElement.parentElement; var sc = el.parentElement.parentElement.parentElement.parentElement; var tlHeight = parseInt(DocsJS.getStyle(tl,'height')) + parseInt(DocsJS.getStyle(tl,'padding-top')) + parseInt(DocsJS.getStyle(tl,'padding-bottom')) + parseInt(DocsJS.getStyle(tl,'border-top-width')) + parseInt(DocsJS.getStyle(tl,'border-bottom-width')) + parseInt(DocsJS.getStyle(sc,'padding-top')) + parseInt(DocsJS.getStyle(sc,'padding-bottom')) + parseInt(DocsJS.getStyle(sc,'border-top-width')) + parseInt(DocsJS.getStyle(sc,'border-bottom-width')); var scStyle = sc.style.height; sc.style.height = ''; var hdStyle = hd.style.height; hd.style.height = ''; var scHeight = parseInt(DocsJS.getStyle(sc,'height')); sc.style.height = scStyle; hd.style.height = hdStyle; DocsJS.animate({ from: d, to: 1-d, duration: DocsJS.animation.duration, easing: DocsJS.easings.easeOutQuart, pass: [el,d,scHeight,tlHeight], step: function(now, pass){ DocsJS.buttons.minimize.animation(pass[0].querySelector('[docsjs-tag="button-parent"]'),now); pass[0].parentElement.parentElement.parentElement.parentElement.style.height = (pass[2]-pass[3])*now + pass[3] + 'px'; }, callback: function(pass){ if (pass[1] === 0){ pass[0].parentElement.parentElement.parentElement.parentElement.style.height = ''; } else{ pass[0].parentElement.parentElement.parentElement.parentElement.style.height = pass[3] + 'px'; } pass[0].onclick = click; DocsJS.scrolled(); DocsJS.column.align(doc); } }); if (d === 0){ el.parentElement.parentElement.parentElement.parentElement.docsjs.state = 'max'; if (el.parentElement.parentElement.parentElement.docsjs.state === 'min'){ el.parentElement.parentElement.onclick({target:{docsjs:{tag:'_change'}}}); } } else{ el.parentElement.parentElement.parentElement.parentElement.docsjs.state = 'min'; if (el.parentElement.parentElement.parentElement.docsjs.state === 'max'){ el.parentElement.parentElement.onclick({target:{docsjs:{tag:'_change'}}}); } } DocsJS.forEach(doc.querySelectorAll('[docsjs-menu-location="'+el.parentElement.parentElement.parentElement.parentElement.docsjs.location+'"]'),function(el){ el.parentElement.docsjs.state = d === 0? 'max' : 'min'; }); DocsJS.events.sectionToggle(el.parentElement.parentElement.parentElement.parentElement); }; el.onclick = click; }); DocsJS.forEach(doc.querySelectorAll('[docsjs-tag="button-menu"]'),function(el){ var click = function(){ el.onclick = function(){}; var d = (el.docsjs.internal === 'menuHidden')? 1 : 0; if (d === 1){ var menu = doc.querySelector('[docsjs-tag="menu"]').cloneNode(true); menu.style.display = 'block'; el.parentElement.parentElement.parentElement.insertBefore(menu,el.parentElement.parentElement.nextElementSibling); if (el.parentElement.parentElement.parentElement.docsjs.state === 'min'){ el.parentElement.parentElement.onclick({target:{docsjs:{tag:'T-L'}}}); } el.docsjs.internal = 'menuVisible'; } else{ el.docsjs.internal = 'menuHidden'; } DocsJS.bindPrefs(); DocsJS.animate({ from: d, to: 1-d, duration: DocsJS.animation.duration, easing: DocsJS.easings.easeOutQuart, pass: [el,d,parseInt(DocsJS.getStyle(el.parentElement.parentElement.parentElement.querySelector('[docsjs-tag="menu"]'),'height')),parseInt(DocsJS.getStyle(el.parentElement.parentElement.parentElement.querySelector('[docsjs-tag="menu"]'),'padding-top')),parseInt(DocsJS.getStyle(el.parentElement.parentElement.parentElement.querySelector('[docsjs-tag="menu"]'),'padding-bottom')),parseInt(DocsJS.getStyle(el.parentElement.parentElement.parentElement.querySelector('[docsjs-tag="menu"]'),'border-top-width')),parseInt(DocsJS.getStyle(el.parentElement.parentElement.parentElement.querySelector('[docsjs-tag="menu"]'),'border-bottom-width'))], step: function(now, pass){ now = 1-now; DocsJS.buttons.menu.animation(pass[0].querySelector('[docsjs-tag="button-parent"]'),now); var mn = pass[0].parentElement.parentElement.parentElement.querySelector('[docsjs-tag="menu"]'); mn.style.height = pass[2]*now+'px'; mn.style.paddingTop = pass[3]*now+'px'; mn.style.paddingBottom = pass[4]*now+'px'; mn.style.borderTopWidth = pass[5]*now+'px'; mn.style.borderBottomWidth = pass[6]*now+'px'; }, callback: function(pass){ if (pass[1] === 0){ pass[0].parentElement.parentElement.parentElement.removeChild(pass[0].parentElement.parentElement.parentElement.querySelector('[docsjs-tag="menu"]')); } else{ var menu = pass[0].parentElement.parentElement.parentElement.querySelector('[docsjs-tag="menu"]'); menu.style.height = 'auto'; menu.style.padding = menu.style.paddingTop = menu.style.paddingBottom = menu.style.borderTopWidth = menu.style.borderBottomWidth = ''; } pass[0].onclick = click; DocsJS.column.align(doc); } }); DocsJS.events.menuToggle(el.parentElement.parentElement.parentElement.querySelector('[docsjs-tag="menu"]')); }; el.onclick = click; }); DocsJS.forEach(doc.querySelectorAll('t-l'),function(el){ var click = function(e){ if ((e.target || (e.srcElement || e.originalTarget)).tagName === 'T-L' || (e.target || (e.srcElement || e.originalTarget)).tagName === 't-l' || (e.target || (e.srcElement || e.originalTarget)).docsjs.tag === 'T-L' || (e.target || (e.srcElement || e.originalTarget)).docsjs.tag === '_change' || (e.target || (e.srcElement || e.originalTarget)).tagName.toUpperCase().charAt(0) === 'H'){ if (el.parentElement.tagName.toUpperCase() === 'H-D' && el.parentElement.parentElement.docsjs.state === 'min' && el.parentElement.docsjs.state === 'min'){ el.querySelector('[docsjs-tag="button-minimize"]').onclick(); } else{ el.onclick = function(){}; var d = (el.parentElement.docsjs.state === 'max')? 1 : 0; var heightBackup = el.parentElement.style.height; el.parentElement.style.height = ''; var tpHeight = parseInt(DocsJS.getStyle(el.parentElement,'height')); el.parentElement.style.height = heightBackup; var tlHeight = parseInt(DocsJS.getStyle(el,'height'))+parseInt(DocsJS.getStyle(el,'padding-top'))+parseInt(DocsJS.getStyle(el,'padding-bottom'))+parseInt(DocsJS.getStyle(el,'border-top-width'))+parseInt(DocsJS.getStyle(el,'border-bottom-width')); DocsJS.animate({ from: d, to: 1-d, duration: DocsJS.animation.duration, easing: DocsJS.easings.easeOutQuart, pass: [el,d,tpHeight-tlHeight,tlHeight], step: function(now, pass){ pass[0].parentElement.style.height = (pass[2])*now + pass[3] + 'px'; }, callback: function(pass){ if (pass[1] === 0){pass[0].parentElement.style.height = 'auto';} DocsJS.column.align(doc); pass[0].parentElement.docsjs.state = (pass[1] === 0)? 'max' : 'min'; pass[0].onclick = click; } }); if (el.parentElement.tagName.toUpperCase() === 'T-P'){ DocsJS.forEach(doc.querySelectorAll('[docsjs-menu-location="'+el.parentElement.docsjs.location+'"]'),function(el){ if (el.parentElement.childNodes.length > 1){ el.parentElement.docsjs.state = d === 0? 'max' : 'min'; } }); } DocsJS.events.topicToggle(el.parentElement.parentElement); } } }; el.onclick = click; }); DocsJS.forEach(doc.querySelectorAll('[docsjs-tag="ebefore"]'),function(el){ var click = function(){ el.onclick = function(){}; var d = (el.nextSibling.docsjs.state === 'max')? 1 : 0; var x = el.nextSibling.style.height; var y = el.nextSibling.style.paddingTop; var z = el.nextSibling.style.paddingBottom; el.nextSibling.style.height = ''; el.nextSibling.style.paddingTop = ''; el.nextSibling.style.paddingBottom = ''; var a = parseInt(DocsJS.getStyle(el.nextSibling,'height')); var b = parseInt(DocsJS.getStyle(el.nextSibling,'padding-top')); var c = parseInt(DocsJS.getStyle(el.nextSibling,'padding-bottom')); var e = parseInt(DocsJS.getStyle(el.nextSibling,'border-top-width')); var f = parseInt(DocsJS.getStyle(el.nextSibling,'border-bottom-width')); el.nextSibling.style.height = x; el.nextSibling.style.paddingTop = y; el.nextSibling.style.paddingBottom = z; DocsJS.animate({ from: d, to: 1-d, duration: DocsJS.animation.duration, easing: DocsJS.easings.easeOutQuart, pass: [el.nextSibling,d,a,b,c,e,f], step: function(now, pass){ pass[0].style.height = pass[2]*now+'px'; pass[0].style.paddingTop = pass[3]*now+'px'; pass[0].style.paddingBottom = pass[4]*now+'px'; pass[0].style.borderTopWidth = pass[5]*now+'px'; pass[0].style.borderBottomWidth = pass[6]*now+'px'; if (pass[0].tagName.toUpperCase() === 'E-X'){ DocsJS.buttons.ex.animation(pass[0].previousSibling.querySelector('[docsjs-tag="button-ebefore"]'),now); } else if (pass[0].tagName.toUpperCase() === 'E-G'){ DocsJS.buttons.eg.animation(pass[0].previousSibling.querySelector('[docsjs-tag="button-ebefore"]'),now); } }, callback: function(pass){ pass[0].docsjs.state = (pass[1] === 0)? 'max' : 'min'; if (pass[1] === 0){ pass[0].style.height = pass[0].style.paddingTop = pass[0].style.paddingBottom = pass[0].style.borderTopWidth = pass[0].style.borderBottomWidth = ''; } else{ pass[0].style.height = pass[0].style.paddingTop = pass[0].style.paddingBottom = pass[0].style.borderTopWidth = pass[0].style.borderBottomWidth = '0px'; } pass[0].previousSibling.onclick = click; DocsJS.scrolled(); DocsJS.column.align(doc); } }); DocsJS.events.eToggle(el.nextSibling); }; el.onclick = click; el.onkeyup = function(e){ var keyCode = e.which || e.keyCode; if (keyCode === 32 || keyCode === 13){ click(); } }; }); }); // Watch column drags DocsJS.apply(function(doc){ var mousedown = function(e){ if (DocsJS.cache.events.oncolumn !== 0){ DocsJS.removeEvent(doc,'mousedown',mousedown); var start = e.clientX; var mousemove = function(e){ var delta = DocsJS.cache.events.oncolumn*(start - e.clientX); start = e.clientX; DocsJS.columnOffsets[(DocsJS.cache.events.oncolumn < 0 ? 'left' : 'right')] += delta; DocsJS.resized(); }; DocsJS.addEvent(doc,'mousemove',mousemove); var mouseup = function(){ DocsJS.column.align(doc); DocsJS.removeEvent(doc,'mousemove',mousemove); DocsJS.removeEvent(doc,'mouseup',mouseup); DocsJS.cache.events.oncolumn = 0; DocsJS.resized(); DocsJS.addEvent(doc,'mousedown',mousedown); }; DocsJS.addEvent(doc,'mouseup',mouseup); } }; DocsJS.addEvent(doc,'mousedown',mousedown); var touchstart = function(e){ if (DocsJS.cache.events.oncolumn !== 0){ DocsJS.removeEvent(doc,'touchstart',touchstart); exposeClose(1); var start = e.touches[0].pageX; var touchmove = function(e){ var delta = DocsJS.cache.events.oncolumn*(start - e.touches[0].pageX); start = e.touches[0].pageX; DocsJS.columnOffsets[(DocsJS.cache.events.oncolumn < 0 ? 'left' : 'right')] += delta; DocsJS.resized(); }; DocsJS.addEvent(doc,'touchmove',touchmove,DocsJS.supports.passive? {passive: true} : false); var touchend = function(){ exposeClose(0); DocsJS.column.align(doc); DocsJS.removeEvent(doc,'touchmove',touchmove); DocsJS.removeEvent(doc,'touchend',touchend); DocsJS.cache.events.oncolumn = 0; DocsJS.resized(); doc.ontouchstart = touchstart; }; DocsJS.addEvent(doc,'touchend',touchend,DocsJS.supports.passive? {passive: true} : false); } }; DocsJS.addEvent(doc,'touchstart',touchstart,DocsJS.supports.passive? {passive: true} : false); }); // Pass c-d tags to c9 ace if (DocsJS.cache.initiated){ DocsJS.cd.refresh(); } // Done if (typeof callback === 'function'){ callback(); } return 1; }; ////////////////////// /////// Events /////// ////////////////////// DocsJS.hashchanged = function(){ 'use strict'; if (!DocsJS.cache.hashChanged){ var location = decodeURIComponent(window.location.hash.substr(1)); if (location !== ''){ try{location = JSON.parse(location);}catch(e){} DocsJS.scroll(location); } } else{ DocsJS.cache.hashChanged = false; } }; DocsJS.scrolled = function(){ 'use strict'; if (DocsJS.cache.initiated && !DocsJS.cache.scrollDebounce){ DocsJS.cache.scrollDebounce = window.setTimeout(function(){ var topEl = false; var nextTopEl = false; var scrollTop = DocsJS.window.scrollTop(); var height = DocsJS.window.height(); var scrollHeight = document.documentElement.scrollHeight; var vals = []; var tps = document.querySelectorAll('t-p,h-d'); DocsJS.forEach(tps,function(el){ var tlRect = el.querySelector('t-l').getBoundingClientRect(); vals.push((tlRect.top+tlRect.bottom)/2); }); DocsJS.forEach(tps,function(el,index){ if (el.tagName.toUpperCase() === 'T-P'){ if (nextTopEl === true){ nextTopEl = index; } } var top = vals[index]; if (top > 0 && el.parentElement.docsjs.state === 'max' && !topEl){ topEl = index; nextTopEl = true; } }); topEl = tps[topEl] || tps[0]; nextTopEl = tps[nextTopEl] || document.querySelector('div[docsjs-tag="button-menu"]').parentElement; document.querySelector('div[docsjs-state="active"]').docsjs.state = 'inactive'; if (topEl.tagName.toUpperCase() === 'T-P'){ topEl.querySelector('div[docsjs-tag="button-menu"]').docsjs.state = 'active'; } else{ nextTopEl.querySelector('div[docsjs-tag="button-menu"]').docsjs.state = 'active'; } topEl = topEl.docsjs.location || topEl.parentElement.docsjs.location; document.querySelector('div[docsjs-state="youarehere"]').docsjs.state = ''; if (scrollTop === 0){ document.querySelector('div[docsjs-menu-internal="top"]').docsjs.state = 'youarehere'; } else if (scrollTop === scrollHeight - height){ document.querySelector('div[docsjs-menu-internal="btm"]').docsjs.state = 'youarehere'; } else{ document.querySelector('div[docsjs-menu-location="'+topEl+'"]').docsjs.state = 'youarehere'; } var hash = encodeURIComponent(document.querySelector('div[docsjs-state="youarehere"]').docsjs.menuLocation || scrollTop === 0); if (hash !== window.location.hash.substr(1)){ if (!!(window.history && history.pushState)){ history.replaceState(undefined, undefined, "#"+hash); } DocsJS.forEach(document.querySelectorAll('div[docsjs-state="youarehere"]'),function(ti){ ti.docsjs.state = ''; }); if (scrollTop === 0){ DocsJS.forEach(document.querySelectorAll('div[docsjs-menu-internal="top"]'),function(ti){ ti.docsjs.state = 'youarehere'; }); } else if (scrollTop === scrollHeight - height){ DocsJS.forEach(document.querySelectorAll('div[docsjs-menu-internal="btm"]'),function(ti){ ti.docsjs.state = 'youarehere'; }); } else{ DocsJS.forEach(document.querySelectorAll('div[docsjs-menu-location="'+topEl+'"]'),function(ti){ ti.docsjs.state = 'youarehere'; }); } DocsJS.forEach(document.querySelectorAll('div[docsjs-tag="column-left"] div[docsjs-state="youarehere"]'),function(yr){ var yrRect = yr.getBoundingClientRect(); var diffBtm = height - yrRect.bottom; var tp = document.querySelector('div[docsjs-tag="column-left"] div[docsjs-tag="menu"]'); var diffTop = yrRect.top - parseInt(DocsJS.getStyle(tp,'margin-top')) - parseInt(DocsJS.getStyle(tp,'padding-top')) - parseInt(DocsJS.getStyle(tp,'border-top-width')); if (diffBtm < 0){ yr.offsetParent.parentElement.scrollTop -= diffBtm; } else if (diffTop < 0){ yr.offsetParent.parentElement.scrollTop += diffTop; } }); } DocsJS.cache.scrollDebounce = false; },150); } }; DocsJS.resized = function(){ 'use strict'; var docWidth, docMargin, rc, lc; DocsJS.apply(function(doc){ rc = doc.querySelector('[docsjs-tag="column-right"]'); lc = doc.querySelector('[docsjs-tag="column-left"]'); }); DocsJS.cache.extraWidth = 0; var minWidth = 100; var fullWidth = DocsJS.window.width(); if (fullWidth > DocsJS.width.max + 200){ DocsJS.fontsize._scalar = 1; DocsJS.apply(function(doc){ doc.style.fontSize = DocsJS.fontsize._value+'px'; var width = (fullWidth - DocsJS.width.max)/2; DocsJS.cache.extraWidth = width-100; minWidth = (width-200)*-1; lc.style.width = width+DocsJS.columnOffsets.left+'px'; rc.style.width = width+DocsJS.columnOffsets.right+'px'; rc.style.marginLeft = -1*width-DocsJS.columnOffsets.right+'px'; DocsJS.forEach(doc.querySelectorAll('main > s-c'),function(el){ el.style.width = doc.querySelector('[docsjs-extras="learnmore"]').style.width = docWidth = DocsJS.width.max-DocsJS.columnOffsets.left-DocsJS.columnOffsets.right+'px'; el.style.marginLeft = doc.querySelector('[docsjs-extras="learnmore"]').style.marginLeft = docMargin = width+DocsJS.columnOffsets.left+'px'; }); }); if (DocsJS.width.max-DocsJS.columnOffsets.left-DocsJS.columnOffsets.right < DocsJS.width.min){ if (DocsJS.columnOffsets.left > DocsJS.columnOffsets.right){ DocsJS.columnOffsets.left-=DocsJS.width.min - DocsJS.width.max+DocsJS.columnOffsets.left+DocsJS.columnOffsets.right; } else{ DocsJS.columnOffsets.right-=DocsJS.width.min - DocsJS.width.max+DocsJS.columnOffsets.left+DocsJS.columnOffsets.right; } } if (DocsJS.columnOffsets.right < minWidth){ DocsJS.columnOffsets.right = minWidth; } if (DocsJS.columnOffsets.left < minWidth){ DocsJS.columnOffsets.left = minWidth; } } else if (fullWidth > DocsJS.width.min + 200){ DocsJS.fontsize._scalar = 1; if (DocsJS.column.state[0] === 'none' && fullWidth-DocsJS.width.min < 400){ DocsJS.columnOffsets.left = -25.8765; } else if (fullWidth-DocsJS.width.min > 400){ if (DocsJS.columnOffsets.left === -25.8765){ DocsJS.columnOffsets.left = 0; } } if (DocsJS.column.state[1] === 'none' && fullWidth-DocsJS.width.min < 400){ DocsJS.columnOffsets.right = -25.8765; } else if (fullWidth-DocsJS.width.min > 400){ if (DocsJS.columnOffsets.right === -25.8765){ DocsJS.columnOffsets.right = 0; } } if (DocsJS.columnOffsets.left > 0 && DocsJS.column.state[0] === 'none'){ DocsJS.columnOffsets.left = 0; } if (DocsJS.columnOffsets.right > 0 && DocsJS.column.state[1] === 'none'){ DocsJS.columnOffsets.right = 0; } DocsJS.apply(function(doc){ doc.style.fontSize = DocsJS.fontsize._value+'px'; lc.style.width = 100+DocsJS.columnOffsets.left+'px'; rc.style.width = 100+DocsJS.columnOffsets.right+'px'; rc.style.marginLeft = -1*100-DocsJS.columnOffsets.right+'px'; DocsJS.forEach(doc.querySelectorAll('main > s-c'),function(el){ el.style.width = fullWidth-200-DocsJS.columnOffsets.left-DocsJS.columnOffsets.right+'px'; el.style.marginLeft = 100+DocsJS.columnOffsets.left+'px'; }); }); if (DocsJS.columnOffsets.left < minWidth && DocsJS.column.state[0] !== 'none'){ DocsJS.columnOffsets.left = minWidth; } if (DocsJS.columnOffsets.right < minWidth && DocsJS.column.state[1] !== 'none'){ DocsJS.columnOffsets.right = minWidth; } } else{ DocsJS.apply(function(doc){ DocsJS.fontsize._scalar = Math.sqrt(fullWidth/(DocsJS.width.min+200)); doc.style.fontSize = DocsJS.fontsize._value*DocsJS.fontsize._scalar+'px'; DocsJS.column.stop(1); DocsJS.column.stop(-1); lc.style.width = rc.style.width = rc.style.marginLeft = '0'; DocsJS.forEach(doc.querySelectorAll('main > s-c'),function(el){ el.style.width = '100%'; el.style.marginLeft = '0'; }); }); } if (DocsJS.cache.initiated){ DocsJS.cd.resize(); if (DocsJS.cache.events.oncolumn === 0){ DocsJS.scrolled(); DocsJS.apply(function(doc){ DocsJS.column.align(doc); }); } } DocsJS.forEach(document.querySelectorAll('[docsjs-tag="column-header"]'),function(hd){ hd.style.width = hd.parentElement.style.width; }); }; DocsJS._menuClicked = function(el, loc){ 'use strict'; if (el.offsetParent.parentElement.tagName.toUpperCase() === 'T-P'){ el.offsetParent.parentElement.querySelector('[docsjs-tag="button-menu"]').onclick(); window.setTimeout(function(){ DocsJS.scroll(loc); },DocsJS.animation.duration); } else{ DocsJS.scroll(loc); } }; DocsJS.bindPrefs = function(){ 'use strict'; DocsJS.apply(function(doc){ DocsJS.forEach(doc.querySelectorAll('[docsjs-pref="aA"]'),function(el){ el.onclick = function(){ DocsJS.fontsize._value++; DocsJS.resized(); DocsJS.column.align(doc); DocsJS.scrolled(); DocsJS.events.preferenceChanged('Fontsize up'); }; el.onkeyup = function(e){ var keyCode = e.which || e.keyCode; if (keyCode === 32 || keyCode === 13){ el.onclick(); } }; }); DocsJS.forEach(doc.querySelectorAll('[docsjs-pref="Aa"]'),function(el){ el.onclick = function(){ DocsJS.fontsize._value--; DocsJS.resized(); DocsJS.column.align(doc); DocsJS.scrolled(); DocsJS.events.preferenceChanged('Fontsize down'); }; el.onkeyup = function(e){ var keyCode = e.which || e.keyCode; if (keyCode === 32 || keyCode === 13){ el.onclick(); } }; }); DocsJS.forEach(doc.querySelectorAll('[docsjs-pref="O"]'),function(el){ el.onclick = function(){ DocsJS.forEach(doc.querySelectorAll('t-l'),function(el){ if (el.parentElement.docsjs.state === 'max'){ el.onclick({target:{docsjs:{tag:'T-L'}}}); } }); window.setTimeout(function(){ DocsJS.forEach(doc.querySelectorAll('[docsjs-tag="button-minimize"]'),function(el){ if (el.parentElement.parentElement.parentElement.parentElement.docsjs.state === 'max'){ el.onclick(); } }); DocsJS.forEach(doc.querySelectorAll('[docsjs-tag="ebefore"]'),function(el){ if (el.nextElementSibling.docsjs.state === 'max'){ el.onclick(); } }); DocsJS.forEach(doc.querySelectorAll('[docsjs-tag="button-menu"]'),function(el){ if (el.docsjs.internal === 'menuVisible'){ el.onclick(); } }); window.setTimeout(function(){ DocsJS.scrolled(); DocsJS.events.preferenceChanged('Minimize all'); },DocsJS.animation.duration); },DocsJS.animation.duration); }; el.onkeyup = function(e){ var keyCode = e.which || e.keyCode; if (keyCode === 32 || keyCode === 13){ el.onclick(); } }; }); DocsJS.forEach(doc.querySelectorAll('[docsjs-pref="CM"]'),function(el){ el.onclick = function(){ DocsJS.forEach(doc.querySelectorAll('[docsjs-tag="button-minimize"]'),function(el){ if (el.parentElement.parentElement.parentElement.parentElement.docsjs.state === 'min'){ el.onclick(); } }); window.setTimeout(function(){ DocsJS.forEach(doc.querySelectorAll('t-l'),function(el){ if (el.parentElement.docsjs.state === 'min'){ el.onclick({target:{docsjs:{tag:'T-L'}}}); } }); window.setTimeout(function(){ DocsJS.scrolled(); DocsJS.events.preferenceChanged('Minimize half'); },DocsJS.animation.duration); },DocsJS.animation.duration); DocsJS.forEach(doc.querySelectorAll('[docsjs-tag="button-menu"]'),function(el){ if (el.docsjs.internal === 'menuVisible'){ el.onclick(); } }); DocsJS.forEach(doc.querySelectorAll('[docsjs-tag="ebefore"]'),function(el){ if (el.nextElementSibling.docsjs.state === 'max'){ el.onclick(); } }); }; el.onkeyup = function(e){ var keyCode = e.which || e.keyCode; if (keyCode === 32 || keyCode === 13){ el.onclick(); } }; }); DocsJS.forEach(doc.querySelectorAll('[docsjs-pref="C"]'),function(el){ el.onclick = function(){ DocsJS.forEach(doc.querySelectorAll('[docsjs-tag="button-minimize"]'),function(el){ if (el.parentElement.parentElement.parentElement.parentElement.docsjs.state === 'min'){ el.onclick(); } }); DocsJS.forEach(doc.querySelectorAll('[docsjs-tag="ebefore"]'),function(el){ if (el.nextElementSibling.docsjs.state === 'min'){ el.onclick();