/
index.min.js
1 lines (1 loc) · 1.54 KB
/
index.min.js
1
(function(root,generateTableOfContents){if(typeof module==="object"&&module.exports){module.exports=generateTableOfContents}else{root.generateTableOfContents=generateTableOfContents}})(this,function generateTableOfContents(element,options){if(!element||!element.nodeName||!element.querySelectorAll){throw new Error("First argument must be a DOM Element and browser must support querySelectorAll")}options=options||{};var startLevel=options.startLevel?options.startLevel-1:0;var endLevel=options.endLevel||6;var maxHeaderNumber=Math.min(6,endLevel);var levels=[];for(var headerNumber=startLevel;headerNumber<maxHeaderNumber;headerNumber+=1){levels.push("h"+headerNumber)}var headers=element.querySelectorAll(levels.join(","));var toc="";var currentLevel=startLevel;for(var index=0;index<headers.length;index++){var header=headers[index];var headerLevel=parseInt(header.tagName.charAt(1),10);if(headerLevel>currentLevel){while(headerLevel>currentLevel){currentLevel+=1;toc+='<ul class="table-of-contents-list table-of-contents-list-depth-'+currentLevel+'"><li class="table-of-contents-item">'}}else if(headerLevel<currentLevel){while(headerLevel<currentLevel){currentLevel-=1;toc+="</li></ul>"}toc+='</li><li class="table-of-contents-item">'}else{toc+='</li><li class="table-of-contents-item">'}console.log(currentLevel,headerLevel);toc+='<a class="table-of-contents-item-link" href="#'+header.id+'">'+header.textContent+"</a>"}toc+="</li></ul>";var tocElement=document.createElement("div");tocElement.className="table-of-contents";tocElement.innerHTML=toc;return tocElement});