UNPKG

@xiee/utils

Version:

Miscellaneous tools and utilities to manipulate HTML pages

2 lines 1.76 kB
document.querySelectorAll(".tabset").forEach((e=>{const t=[...e.querySelectorAll(":scope > .tab-link")],n=[...e.querySelectorAll(":scope > .tab-pane")];let r=0;function a(e){function a(e,t){e.forEach(((e,n)=>e.classList[n===t?"add":"remove"]("active")))}r=e,a(t,e),a(n,e)}function i(e,t){const n=document.createElement(e);return n.className=t,n}function c(e){return/^H[1-6]$/.test(e.tagName)}function o(e){return""===e.innerHTML.trim()}let l,s=-1,d=c(e)||o(e)?e.nextElementSibling:e.firstElementChild;if(0===t.length&&"UL"===d?.tagName&&([...d.children].forEach((e=>{const r=e.firstElementChild;if(!r)return;const a=i("div","tab-link");a.append(r),r.outerHTML=r.innerHTML,/<!--active-->/.test(a.innerHTML)&&a.classList.add("active"),d.before(a);const c=i("div","tab-pane");a.after(c),[...e.children].forEach((e=>c.append(e))),t.push(a),n.push(c)})),d.remove()),0===t.length)for(;d&&("#comment"!==d.nodeName||d.nodeValue.trim()!==`tabset:${e.id}`);){if(c(d)){const e=+d.tagName.replace("H","");if(e<=s)break;if(s<0&&(s=e-1),e===s+1){l=i("div","tab-pane"),d.after(l),d.classList.add("tab-link"),d.querySelector(".anchor")?.remove(),d.outerHTML=d.outerHTML.replace(/^<h[1-6](.*)h[1-6]>$/,"<div$1div>"),d=l.previousElementSibling,t.push(d),n.push(l),d=l.nextSibling;continue}}l&&(l.append(d),d=l),d=d.nextSibling}const u=t.length;if(!u)return;o(e)&&(t.forEach((t=>e.append(t))),n.forEach((t=>e.append(t)))),t.forEach(((e,n)=>{n>0&&t[n-1].after(e),e.onclick=()=>a(n),e.classList.contains("active")&&(r=n)}));const f=t[0].parentNode;f.hasAttribute("tabIndex")||(f.tabIndex="0"),f.addEventListener("keyup",(e=>{const t=["ArrowLeft","ArrowRight"].indexOf(e.key);if(t<0)return;const n=r+(t?1:-1);a(n<0?u-1:n>u-1?0:n)})),a(r)})); //# sourceMappingURL=tabsets.min.js.map