@xiee/utils
Version:
Miscellaneous tools and utilities to manipulate HTML pages
2 lines • 997 B
JavaScript
(e=>{let t;[".article",".body","article",".main","body"].forEach((n=>{t||(t=e.querySelector(n))}));const n=t.querySelectorAll([1,2,3,4,5,6].map((e=>`:scope > h${e}`)).join(","));if(0===n.length)return;let r,i,l=e.getElementById("TOC")||e.getElementById("TableOfContents");l?l.innerHTML="":(l=e.createElement("div"),l.id="TOC");let a,d=l,o=0;if(n.forEach((t=>{if(a=parseInt(t.tagName.replace(/^h/i,"")),r=e.createElement("li"),a>o)i=e.createElement("ul"),i.appendChild(r),d.appendChild(i);else if(a<o)for(let e=0;e<o-a;e++)d=d.parentNode.parentNode;a<=o&&d.parentNode.appendChild(r),d=r;const n=e.createElement("a");if(n.innerHTML=t.innerHTML,t.id)n.href="#"+t.id;else{const e=t.parentNode;e.classList.contains("section")&&e.id&&(n.href="#"+e.id)}d.appendChild(n),o=a})),!l.parentNode){const e=t.querySelector("header");e?e.after(l):t.insertBefore(l,t.firstChild)}l.querySelector("span.section-number")&&l.firstElementChild.classList.add("numbered")})(document);
//# sourceMappingURL=toc.min.js.map