100 lines
25 KiB
JavaScript
100 lines
25 KiB
JavaScript
/* https://github.com/madodig/wikijs-customization */
|
|
const CM_LNK_ACTIVE='mad-cm-lnk-active';const CM_LNK_ACTIVE2='mad-cm-lnk-active2';const CM_COLLAPSIBLE='mad-cm-collapsible';const CM_COLLAPSIBLE_ACTIVE='mad-cm-collapsible-active';const CM_COLLAPSIBLE_INACTIVE='mad-cm-collapsible-inactive';const CM_SECTION='mad-cm-section';const CM_SECTION_EXPANDED='expanded';const NO_LINE_NUMBERS_CLASS='next-codeblock-no-line-numbers';var menuItemType;var headerProcessed=navProcessed=mainProcessed=footerProcessed=false;var breadcrumbsHidden=false;var btnToTopProcessed=false;var btnToTopVisible=false;var curPathRel=window.location.pathname;var curPathAbs=window.location.href;var mo=new MutationObserver(moCallback);var moConfig={attributes:true,childList:true,subtree:true,characterDataOldValue:true,attributeOldValue:true};var moTarget=document;if(slidingMenu){var icon_pinOff="mdi-pin-off-outline";var icon_pinOn="mdi-pin-outline";var icon_menu="mdi-menu";var pmb=null;var pmbHolder=null;var mb=null;var mbHolder=null;var contentHolder=null;var backToTopHolder=null;var menuOpening=menuClosing=menuClosed=menuOpened=false;var pinMenu=getCookie(COOKIE_NAME);if(pinMenu==""){pinMenu=false;setCookie(COOKIE_NAME,pinMenu,COOKIE_DAYS);}else if(pinMenu==="false"){pinMenu=false;}else{pinMenu=true;}}else{var pinMenu=true;}
|
|
var header,navigation,main,footer;var btnToTop;var sideColumn,pageTitle,breadcrumbs,hideSideColumn;var sideColumnHidden=false;var mouseLeftEdgeOpensMenu;var isMouseOverNav=false;var menuFirstHover=true;var mobileDevice=isMobileDevice();moStart();function isMobileDevice(){if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)){return true;}else{return false;}}
|
|
function fixMobileDeviceNodeValue(node){var nodeValue=node.nodeValue;if(nodeValue){var parts=nodeValue.split("#");if(parts.length>1){if(isNumeric(parts[1])){level=parseInt(parts[1]);var text=nodeValue.replace("#"+parts[1]+"#","");}}else{var text=nodeValue;}
|
|
var parts=text.split("#");node.nodeValue=parts[0];}}
|
|
function moStart(){mo.observe(moTarget,moConfig);}
|
|
function moStop(){mo.disconnect();}
|
|
function moCallback(mutations,mutationObserver){for(const{addedNodes}of mutations){for(const n of addedNodes){if(n.tagName&&n.matches('NAV')&&n.style&&n.style.getPropertyValue('transform')){if(n.style.removeProperty){n.style.removeProperty('transform');}else{n.style.removeAttribute('transform');}}}}
|
|
header=document.querySelector("header[data-booted='true']");navigation=document.querySelector("nav[data-booted='true']");main=document.querySelector("main[data-booted='true']");footer=document.querySelector("footer[data-booted='true']");btnToTop=document.querySelector("i.mdi-arrow-up");btnToTopVisible=false;if(btnToTop){btnToTopVisible=true;btnToTop=btnToTop.closest("button");if(!pinMenu&&btnToTop.style.left!="5px"){btnToTop.style.left="5px";}}
|
|
if(header&&!headerProcessed){customizeHeader(header);headerProcessed=true;}
|
|
if(navigation&&!navProcessed){customizeNavigation(navigation);navProcessed=true;}
|
|
if(main&&!mainProcessed){customizeMainContent(main);mainProcessed=true;}
|
|
if(footer&&!footerProcessed){customizeFooter(footer);footerProcessed=true;}
|
|
if(mouseLeftEdgeOpensMenu){document.onmousemove=handleMouseMove;}}
|
|
function customizeHeader(header){if(addSiteTitleNavigation){var subHeading=header.querySelector("span.subheading");if(subHeading){subHeading.style.cssText="cursor: pointer;";subHeading.addEventListener('click',function(){window.location="/";});addSiteTitleNavigation=false;}}}
|
|
function customizeNavigation(navigation){if(slidingMenu){if(navigation.style.removeProperty){navigation.style.removeProperty('transform');}else{navigation.style.removeAttribute('transform');}}
|
|
if(collapsibleMenu){var menuItems=navigation.querySelector('.__view').children[0].children[1].childNodes;if(mobileDevice){menuItems.forEach(function(item){if(item.childNodes[0]){fixMobileDeviceNodeValue(item.childNodes[0]);}
|
|
if(item.childNodes[1]&&item.childNodes[1].childNodes[0]){fixMobileDeviceNodeValue(item.childNodes[1].childNodes[0]);}});}else{menuItems.forEach(function(item){var next=item.nextElementSibling;var prev=item.previousElementSibling;var sectionHeader=item.previousElementSibling;menuItemType=getMenuItemType(item);if(menuItemType=="DVD"&&hideDivider){item.style.display="none";}else if(getMenuItemInfo(item,"level")>getMenuItemInfo(sectionHeader,"level")){var newSection=groupItems(item);newSection.wrapGroup(CM_SECTION);sectionHeader.classList.add(CM_COLLAPSIBLE,CM_COLLAPSIBLE_INACTIVE);if(sectionContainsActivePage(newSection)){sectionHeader.classList.toggle(CM_COLLAPSIBLE_INACTIVE);}else if(sectionHeader.href==curPathAbs){sectionHeader.classList.add(CM_LNK_ACTIVE2);sectionHeader.nextElementSibling.classList.add(CM_SECTION_EXPANDED);sectionHeader.classList.toggle(CM_COLLAPSIBLE_ACTIVE);sectionHeader.classList.toggle(CM_COLLAPSIBLE_INACTIVE);}
|
|
if(getMenuItemType(sectionHeader)=="HDR"){sectionHeader.addEventListener('click',(ev)=>{const elm=ev.target;sectionState(sectionHeader.nextElementSibling,'toggle');},false);}}});menuItems.forEach(function(item){menuItemType=getMenuItemType(item);if(menuItemType=="HDR"){if(getMenuItemInfo(item,"icon")){headerAppendIcon(item,getMenuItemInfo(item,"icon"));item.childNodes[1].nodeValue=getMenuItemInfo(item,"text");}
|
|
item.childNodes[0].nodeValue=getMenuItemInfo(item,"text");}else if(menuItemType=="LNK"){item.childNodes[1].childNodes[0].nodeValue=getMenuItemInfo(item,"text");}});}}
|
|
if(!mobileDevice&&slidingMenu){pmbHolder=document.createElement('button');pmbHolder.className="v-btn v-btn--top v-btn--depressed v-btn--fab v-btn--fixed v-btn--left v-btn--round theme--dark v-size--small primary mad-pmb";pmbHolder.type="button";pmbHolder.insertAdjacentHTML('afterbegin','<span class="v-btn__content"><i aria-hidden="true" class="v-icon notranslate mdi theme--dark '+icon_pinOff+'" style="transform:rotate(0deg);"></i></span>');pmb=pmbHolder.querySelector('i');mbHolder=document.createElement('button');mbHolder.className="v-btn v-btn--top v-btn--depressed v-btn--fab v-btn--fixed v-btn--left v-btn--round theme--dark v-size--small primary mb";mbHolder.type="button";mbHolder.insertAdjacentHTML('afterbegin','<span class="v-btn__content"><i aria-hidden="true" class="v-icon notranslate mdi theme--dark '+icon_menu+'"></i></span>');navigation.parentNode.insertBefore(mbHolder,navigation);mb=mbHolder.querySelector('i');mbHolder.addEventListener('mouseenter',menuOpen);addListeners(navigation,"mouseenter mouseleave mouseover",navEvent);addListeners(pmbHolder,"mouseleave mouseup",pmbEvent);if(!pinMenu&&isMouseOverNav!==true){setTimeout(function(){menuClose()},100);}
|
|
menuOpening=false;menuOpened=true;if(pinMenu){pmb.classList.add(icon_pinOff);menuOpen();navigation.classList.add('mad-nav-visible');}else{pmb.classList.add(icon_pinOn);}}}
|
|
function customizeMainContent(main){breadcrumbs=main.querySelector("header");if(removeBreadcrumbs&&!breadcrumbsHidden){if(breadcrumbs){if(breadcrumbs.nextSibling){breadcrumbs.nextSibling.remove();}
|
|
breadcrumbs.remove();breadcrumbsHidden=true;}}
|
|
sideColumn=main.querySelector('div.flex.page-col-sd.lg3.xl2');if(sideColumn){hideSideColumn=(removeTocCard&&removeTagCard&&removeHistoryCard&&removeBookmarkCard);if(hideSideColumn||sideColumnPosition===false||sideColumnPosition==='false'){sideColumn.remove();sideColumnHidden=true;var pageHeader=main.querySelector('div.offset-lg-3.offset-xl-2');if(pageHeader){pageHeader.classList.remove('offset-lg-3','offset-xl-2');}
|
|
var pageContent=main.querySelector('div.flex.page-col-content');if(pageContent){pageContent.classList.remove('xs12','lg9','xl10');}}else if(sideColumnPosition===true){}else if(sideColumnPosition.toLowerCase()==="right"){insertAfter(sideColumn,sideColumn.nextElementSibling);var pageHeader=main.querySelector('div.offset-lg-3.offset-xl-2');if(pageHeader){pageHeader.classList.remove('offset-lg-3','offset-xl-2');}}}
|
|
if(!mobileDevice){pageTitle=main.querySelector('div.is-page-header');if(!pinMenu){if(breadcrumbs){breadcrumbs.querySelector("div").style.setProperty('padding-left','56px','important');}
|
|
if(pageTitle&&breadcrumbsHidden){pageTitle.style.setProperty('padding-left','56px','important')};if(sideColumn){sideColumn.style['padding-left']='16px';}
|
|
main.style.setProperty('padding-left',"0px","important");}else{main.style.setProperty('padding-left',"256px","important");}}
|
|
var vCards=main.querySelectorAll('div.v-card.v-sheet');Array.from(vCards).forEach((vCard)=>{if(removeTocCard&&vCard.querySelector('div[role=list]')){vCard.remove();removeTocCard=false;}
|
|
if(removeTagCard&&vCard.innerHTML.includes("mdi-tag")){vCard.remove();removeTagCard=false;}
|
|
if(removeBookmarkCard&&vCard.innerHTML.includes("mdi-bookmark")){vCard.remove();removeBookmarkCard=false;}
|
|
if(removeHistoryCard&&(vCard.innerHTML.includes("mdi-history")||(vCard.innerHTML.includes("caption")&&!vCard.innerHTML.includes('role="listitem"')&&!vCard.innerHTML.includes("mdi-tag")))){vCard.remove();removeHistoryCard=false;}});var nlnCodeBlocks=main.querySelectorAll('div.'+NO_LINE_NUMBERS_CLASS);Array.from(nlnCodeBlocks).forEach((nlncb)=>{removePrismJSLineNumbers(getNextSibling(nlncb,".code-toolbar"));});faccordion();if(customizeVideoPlayer){setupVideoElements();}}
|
|
function customizeFooter(footer){}
|
|
Array.prototype.wrapGroup=function(className){const wrapper=document.createElement('div');if(className!=""){wrapper.className=className;}
|
|
this.forEach((el)=>{el.parentNode.insertBefore(wrapper,el);wrapper.appendChild(el);});this.forEach((el)=>{el.childNodes[1].childNodes[0].nodeValue=getMenuItemInfo(el,"text");if(el.href==curPathAbs){el.classList.add(CM_LNK_ACTIVE);parent=el.parentNode;while(parent&&parent.classList.contains(CM_SECTION)){parent.classList.add(CM_SECTION_EXPANDED);var lastParent=parent;parent=parent.parentNode;}
|
|
lastParent.previousElementSibling.classList.toggle(CM_COLLAPSIBLE_ACTIVE);}});}
|
|
function isNumeric(num){return!isNaN(num)}
|
|
function headerAppendIcon(item,icon){var appendIcon=document.createElement("div");appendIcon.className="v-avatar v-list-item__avatar rounded-0 v-avatar--tile";appendIcon.style="height: 24px; min-width: 24px; width: 24px;";var iTag=document.createElement("i");iTag.className="v-icon notranslate mdi "+icon+" theme--dark";iTag.setAttribute("aria-hidden","true");appendIcon.insertBefore(iTag,appendIcon.firstChild);item.insertBefore(appendIcon,item.firstChild);}
|
|
function sectionContainsActivePage(section){if(Array.isArray(section)){var activeSection=Array.prototype.filter.call(section,function(el){return el.matches('.'+CM_LNK_ACTIVE);});if(activeSection&&activeSection.length>0){return true;}}else{var activeSection=section.querySelector('.'+CM_LNK_ACTIVE);if(activeSection){return true;}}
|
|
return false;}
|
|
const fnmap={'toggle':'toggle','show':'add','hide':'remove'};const sectionState=(section,cmd)=>{if(!sectionContainsActivePage(section)){var sectionHeader=section.previousElementSibling;var expanded=section.parentNode.querySelectorAll('.'+CM_SECTION+'.'+CM_SECTION_EXPANDED);expanded.forEach(function(expandedSection){var expandedHeader=expandedSection.previousElementSibling;if(expandedSection!=section&&!sectionContainsActivePage(expandedSection)&&expandedHeader.href!=curPathAbs){expandedSection.classList[fnmap[cmd]](CM_SECTION_EXPANDED);expandedSection.previousElementSibling.classList[fnmap[cmd]](CM_COLLAPSIBLE_ACTIVE);expandedSection.previousElementSibling.classList[fnmap[cmd]](CM_COLLAPSIBLE_INACTIVE);}});section.classList[fnmap[cmd]](CM_SECTION_EXPANDED);section.previousElementSibling.classList[fnmap[cmd]](CM_COLLAPSIBLE_ACTIVE);section.previousElementSibling.classList[fnmap[cmd]](CM_COLLAPSIBLE_INACTIVE);}}
|
|
function groupItems(sibling){var group=[];do{group.push(sibling);sibling=sibling.nextElementSibling;}while(sibling&&(getMenuItemInfo(sibling,"level")==getMenuItemInfo(sibling.previousElementSibling,"level")))
|
|
return group;}
|
|
function getMenuItemInfo(menuItem,filter){if(!menuItem){return null;}
|
|
filter=filter||"level";var menuItem=menuItem.innerText;var level=0;var icon=menuItem.match(/#(mdi|fa)([\s\S]*?)#/gs);if(icon){menuItem=menuItem.replace(icon[0],"");icon=icon[0].split("#")[1];}
|
|
var parts=menuItem.split("#");if(parts.length>1){if(isNumeric(parts[1])){level=parseInt(parts[1]);var text=menuItem.replace("#"+parts[1]+"#","");}}else{var text=menuItem;}
|
|
if(filter=="level"){return level;}
|
|
else if(filter=="text"){return text;}
|
|
else if(filter=="icon"){return icon;}
|
|
else{return menuItem;}}
|
|
function getMenuItemType(item){if(item.tagName){switch(item.tagName.toLowerCase()){case"div":return"HDR";break;case"a":return"LNK";break;case"hr":return"DVD";break;default:return null;}}else return null;}
|
|
function getLoggedInUser(){return parseJwt(getCookie("jwt")).email;}
|
|
function parseJwt(token){if(!token){return;};const base64Url=token.split('.')[1];const base64=base64Url.replace('-','+').replace('_','/');return JSON.parse(window.atob(base64));}
|
|
function setCookie(cName,cValue,cDays,cPath){if(!cPath||cPath==""){cPath="/";};if(!cDays||cDays==""){cDays=365;};document.cookie=cName+"="+cValue+"; path="+cPath+"; expires="+new Date(Date.now()+cDays*864e5);}
|
|
function getCookie(cName){cName+="=";var allCookieArray=document.cookie.split(';');for(var i=0;i<allCookieArray.length;i++){var temp=allCookieArray[i].trim();if(temp.indexOf(cName)==0){return temp.substring(cName.length,temp.length);}};return"";}
|
|
function removePrismJSLineNumbers(cb){[].forEach.call(cb.getElementsByClassName("prismjs"),function(pr){pr.classList.remove("line-numbers");pr.childNodes[0].setAttribute("style","margin-left: -2rem;");pr.querySelector("span[class='line-numbers-rows']").remove();});}
|
|
function insertAfter(el,referenceNode){referenceNode.parentNode.insertBefore(el,referenceNode.nextSibling);}
|
|
function insertBefore(el,referenceNode){referenceNode.parentNode.insertBefore(el,referenceNode);}
|
|
function addListeners(el,events,fn){events.split(' ').forEach(e=>el.addEventListener(e,fn,false));}
|
|
function menuClose(delay){if(!menuClosing&&!menuOpening&&isMouseOverNav!==true){menuClosing=true;menuOpened=false;if(typeof delay!="number"){delay=600;}
|
|
setTimeout(function(){navigation.classList.remove('mad-nav-visible');navigation.classList.add('mad-nav-hidden');if(sideColumn){sideColumn.style['padding-left']='16px';}
|
|
animatePmb("hide");if(!pinMenu){animateRtt("show");}},delay);setTimeout(function(){menuClosing=false;menuClosed=true;},delay+300);}}
|
|
function menuOpen(){if(!menuClosing&&!menuOpening){menuOpening=true;menuClosed=false;navigation.classList.remove('mad-nav-hidden');navigation.classList.add('mad-nav-visible');if(!pinMenu){animateRtt("hide");}
|
|
setTimeout(function(){animatePmb("show");},500);setTimeout(function(){if(!pinMenu&&isMouseOverNav!==true){setTimeout(function(){menuClose()},100);}
|
|
menuOpening=false;menuOpened=true;},800);}}
|
|
function pmbShow(){animatePmb("show");}
|
|
function pmbHide(){setTimeout(function(){animatePmb("hide");},500);}
|
|
function navEvent(){if(event.type==="mouseenter"){isMouseOverNav=true;}
|
|
else if(event.type==="mouseleave"){isMouseOverNav=false;}
|
|
else if(event.type==="mouseover"){isMouseOverNav=true;}
|
|
if(mbHolder.contains(event.relatedTarget)){}else if(!pmbHolder.contains(event.relatedTarget)){if(event.type==="mouseenter"){pmbShow();}
|
|
if(event.type==="mouseleave"){if(pinMenu){pmbHide();}else{menuClose();}}}}
|
|
function pmbEvent(){if(event.type==="mouseup"){toggleMenuPin();}else if(main.contains(event.relatedTarget)){if(event.type==="mouseleave"){if(pinMenu){pmbHide();}else{menuClose();}}}}
|
|
function toggleMenuPin(){if(document.activeElement){document.activeElement.blur();}
|
|
pinMenu=!pinMenu;setCookie(COOKIE_NAME,pinMenu,COOKIE_DAYS);if(pinMenu){menuOpen();if(breadcrumbs){breadcrumbs.querySelector("div").style.removeProperty('padding-left');}
|
|
if(pageTitle&&breadcrumbsHidden){pageTitle.style.removeProperty('padding-left')};pmb.classList.remove(icon_pinOn);pmb.classList.add(icon_pinOff);main.style.setProperty('padding-left',"256px","important");main.style['transition-timing-function']='ease-in';main.style.transition='0.5s padding ease-out';if(btnToTop&&btnToTop.style.left!="235px"){btnToTop.style.left="235px";}
|
|
if(btnToTopVisible){animateRtt("show");}}else{if(breadcrumbs){breadcrumbs.querySelector("div").style.setProperty('padding-left','56px','important');}
|
|
if(pageTitle&&breadcrumbsHidden){pageTitle.style.setProperty('padding-left','56px','important')};animateRtt("hide");pmb.classList.remove(icon_pinOff);pmb.classList.add(icon_pinOn);main.style.setProperty('padding-left',"0px","important");main.style['transition-timing-function']='ease-out';main.style.transition='0.5s padding ease-out';}}
|
|
function animatePmb(action){if(action.toLowerCase()=="show"){pmbHolder.classList.add('fab-transition-enter','fab-transition-enter-active');navigation.parentNode.insertBefore(pmbHolder,navigation.nextSibling);setTimeout(function(){pmbHolder.classList.remove('fab-transition-enter');pmbHolder.classList.add('fab-transition-enter-to');pmbHolder.classList.remove('fab-transition-enter-active','fab-transition-enter-to');},300);}else if(action.toLowerCase()=="hide"){pmbHolder.classList.add('fab-transition-leave','fab-transition-leave-active');pmbHolder.classList.remove('fab-transition-leave');pmbHolder.classList.add('fab-transition-leave-to');setTimeout(function(){pmbHolder.classList.remove('fab-transition-leave-active','fab-transition-leave-to');pmbHolder.remove();},300);}}
|
|
function animateRtt(action){btnToTop=document.querySelector("i.mdi-arrow-up");if(btnToTop){btnToTop=btnToTop.closest("button");if(action.toLowerCase()=="show"){setTimeout(function(){btnToTop.classList.remove('fab-transition-leave-active','fab-transition-leave-to');btnToTop.classList.add('fab-transition-enter','fab-transition-enter-active');setTimeout(function(){btnToTop.classList.remove('fab-transition-enter');btnToTop.classList.add('fab-transition-enter-to');btnToTop.classList.remove('fab-transition-enter-active','fab-transition-enter-to');},300);},300);}else if(action.toLowerCase()=="hide"){moStop();btnToTop.classList.add('fab-transition-leave','fab-transition-leave-active');btnToTop.classList.remove('fab-transition-leave');btnToTop.classList.add('fab-transition-leave-to');setTimeout(function(){moStart();},100);}}}
|
|
function handleMouseMove(event){var eventDoc,doc,body;event=event||window.event;if(event.pageX==null&&event.clientX!=null){eventDoc=(event.target&&event.target.ownerDocument)||document;doc=eventDoc.documentElement;body=eventDoc.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc&&doc.clientLeft||body&&body.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc&&doc.clientTop||body&&body.clientTop||0);}
|
|
var edge=leftEdge||2;if(navigation){if(event.pageX<edge&&!pinMenu&&mouseLeftEdgeOpensMenu&&!menuClosing&&!menuOpening&&!menuOpened){menuOpen();}
|
|
if(menuFirstHover){menuFirstHover=false;isMouseOverNav=isDescendant(navigation,document.elementFromPoint(event.pageX,event.pageY));}}}
|
|
var getNextSibling=function(elem,selector){var sibling=elem.nextElementSibling;if(!selector)return sibling;while(sibling){if(sibling.matches(selector))return sibling;sibling=sibling.nextElementSibling}};var getPreviousSibling=function(elem,selector){var sibling=elem.previousElementSibling;if(!selector)return sibling;while(sibling){if(sibling.matches(selector))return sibling;sibling=sibling.previousElementSibling;}};var setupVideoElements=function(){document.querySelectorAll("div.mad-wjsc-video").forEach(container=>{var video=container.querySelector("video");if(video.addEventListener){video.addEventListener('contextmenu',function(e){e.preventDefault();},false);}else{video.attachEvent('oncontextmenu',function(){window.event.returnValue=false;});}
|
|
if(video.addEventListener){video.addEventListener('selectstart',function(e){e.preventDefault();},false);}else{video.attachEvent('onselectstart',function(){window.event.returnValue=false;});}
|
|
if(video.addEventListener){video.addEventListener('dragstart',function(e){e.preventDefault();},false);}else{video.attachEvent('ondragstart',function(){window.event.returnValue=false;});}
|
|
video.controlsList="nodownload noremoteplayback";video.controls=true;});}
|
|
var disableGlobalContextMenu=function(){document.getElementById("root").addEventListener("contextmenu",function(e){e.preventDefault();});}
|
|
var faccordion=function(){if(!Element.prototype.matches){Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector;}
|
|
function slideToggle(t,e,o){0===t.clientHeight?j(t,e,o,!0):j(t,e,o)};function slideUp(t,e,o){j(t,e,o)};function slideDown(t,e,o){j(t,e,o,!0)};function j(t,e,o,i){void 0===e&&(e=400),void 0===i&&(i=!1),t.style.overflow="hidden",i&&(t.style.display="block");var p,l=window.getComputedStyle(t),n=parseFloat(l.getPropertyValue("height")),a=parseFloat(l.getPropertyValue("padding-top")),s=parseFloat(l.getPropertyValue("padding-bottom")),r=parseFloat(l.getPropertyValue("margin-top")),d=parseFloat(l.getPropertyValue("margin-bottom")),g=n/e,y=a/e,m=s/e,u=r/e,h=d/e;window.requestAnimationFrame(function l(x){void 0===p&&(p=x);var f=x-p;i?(t.style.height=g*f+"px",t.style.paddingTop=y*f+"px",t.style.paddingBottom=m*f+"px",t.style.marginTop=u*f+"px",t.style.marginBottom=h*f+"px"):(t.style.height=n-g*f+"px",t.style.paddingTop=a-y*f+"px",t.style.paddingBottom=s-m*f+"px",t.style.marginTop=r-u*f+"px",t.style.marginBottom=d-h*f+"px"),f>=e?(t.style.height="",t.style.paddingTop="",t.style.paddingBottom="",t.style.marginTop="",t.style.marginBottom="",t.style.overflow="",i||(t.style.display="none"),"function"==typeof o&&o()):window.requestAnimationFrame(l)})}
|
|
var is=function(elem,selector){if(selector.nodeType){return elem===selector;}var qa=(typeof(selector)==='string'?document.querySelectorAll(selector):selector),length=qa.length,returnArr=[];while(length--){if(qa[length]===elem){return true;}}return false;}
|
|
var siblings=function(el,selector){if(!Element.prototype.matches){Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector;}var siblings=[];for(let sibling of el.parentNode.children){if(sibling!==el&&sibling.matches(selector)){siblings.push(sibling);}}return siblings;}
|
|
var nextUntil=function(el,selector,filter){var siblings=[];el=el.nextElementSibling;while(el){if(el.matches(selector)){break};if(filter&&!el.matches(filter)){el=el.nextElementSibling;continue;}siblings.push(el);el=el.nextElementSibling;}return siblings;};var nextAll=function(el,selector){var next=[];let siblings=el.parentElement.children;let found=false;for(let i=0;i<siblings.length;i++){if(!found&&el===siblings[i]){found=true;continue;}else if(found&&siblings[i].matches(selector)){next.push(siblings[i]);}}return next;};var toggleElementVisibility=function(el){if(el&&el.classList){el.classList.toggle('show');slideToggle(el,350);}}
|
|
var hideElement=function(el){if(el&&el.classList){el.classList.remove('show');slideUp(el,350);}}
|
|
var toggleExpandIcon=function(el){if(el&&el.classList){el.classList.toggle('collapsed');el.classList.toggle('expanded');}}
|
|
document.querySelectorAll("div.faccordion").forEach(pel=>{pel.querySelectorAll("h1,h2,h3,h4,h5,h6").forEach(el=>{var target=document.createElement("div");target.classList.add('inner');nextUntil(el,'ul').forEach(next=>{next.parentNode.insertBefore(target,next);target.appendChild(next);});});pel.querySelectorAll("ul h1,h2,h3,h4,h5,h6").forEach(el=>{el.classList.remove('toc-header');});if(pel.querySelector("ul"))pel.querySelector("ul").classList.add('faccordion');pel.querySelectorAll("ul ul").forEach(el=>{el.classList.add('inner');});pel.querySelectorAll("ul h1,h2,h3,h4,h5,h6").forEach(el=>{el.classList.add('toggle','show');});pel.querySelectorAll("h1,h2,h3,h4,h5,h6").forEach(header=>{Array.prototype.slice.call(header.parentNode.children).forEach(child=>{if(child.parentNode.querySelectorAll("div .inner").length){header.classList.add('collapsed');}else{header.classList.add('single');}});});});document.querySelectorAll('.toggle').forEach(toggle=>{toggle.onclick=function(e){e.preventDefault();if(is(toggle.nextElementSibling,'div.inner')){toggleExpandIcon(toggle);let allNext=nextAll(toggle,':not(div)');if(allNext[0]&&allNext[0].classList.contains('show')){hideElement(allNext[0]);toggle.parentNode.querySelectorAll('.toggle.show.expanded').forEach(childToggle=>{let childAllNext=nextAll(childToggle,':not(div)');toggleExpandIcon(childToggle);toggleElementVisibility(childToggle.nextElementSibling);toggleElementVisibility(childAllNext[0]);});toggleElementVisibility(toggle.nextElementSibling);}else{siblings(toggle.closest('li'),'li').forEach(sibling=>{sibling.querySelectorAll('.inner').forEach(inner=>{hideElement(inner);});sibling.querySelectorAll('.toggle').forEach(inToggle=>{if(inToggle.classList.contains('expanded')){toggleExpandIcon(inToggle);}});});toggleElementVisibility(toggle.nextElementSibling);toggleElementVisibility(allNext[0]);}}else{if(toggle.nextElementSibling.classList.contains('show')){hideElement(toggle.nextElementSibling);}else{toggleElementVisibility(toggle.nextElementSibling);}}}});}
|
|
function jsSleep(ms){return new Promise(resolve=>setTimeout(resolve,ms));}
|
|
async function sleep(wait){await jsSleep(wait);}
|
|
function isDescendant(parent,child){var node=child.parentNode;while(node!=null){if(node==parent){return true;}node=node.parentNode;}return false;} |