diff --git a/assets/js/asciidoctor-tabs.js b/assets/js/asciidoctor-tabs.js deleted file mode 100644 index 5fef49f..0000000 --- a/assets/js/asciidoctor-tabs.js +++ /dev/null @@ -1,174 +0,0 @@ -(function () { - /*! Asciidoctor Tabs | Copyright (c) 2018-present Dan Allen | MIT License */ - "use strict"; - - var config = (document.currentScript || {}).dataset || {}; - var forEach = Array.prototype.forEach; - - init(document.querySelectorAll(".tabs")); - - function init(tabsBlocks) { - if (!tabsBlocks.length) return; - forEach.call(tabsBlocks, function (tabs) { - var syncIds = tabs.classList.contains("is-sync") ? {} : undefined; - var tablist = tabs.querySelector(".tablist ul"); - tablist.setAttribute("role", "tablist"); - var initial; - forEach.call(tablist.querySelectorAll("li"), function (tab, idx) { - tab.setAttribute("role", (tab.className = "tab")); // NOTE converter may not have set class on li - var id, anchor, syncId; - if (!(id = tab.id)) { - if (!(anchor = tab.querySelector("a[id]"))) return; // invalid state - tab.id = id = anchor.parentNode.removeChild(anchor).id; - } - var panel = tabs.querySelector( - '.tabpanel[aria-labelledby~="' + id + '"]' - ); - if (!panel) return; // invalid state - tab.tabIndex = -1; - syncIds && - ((syncId = tab.textContent.trim()) in syncIds - ? (syncId = undefined) - : true) && - (syncIds[(tab.dataset.syncId = syncId)] = tab); - idx || ((initial = { tab: tab, panel: panel }) && syncIds) - ? toggleHidden(panel, true) - : toggleSelected(tab, true); - tab.setAttribute("aria-controls", panel.id); - panel.setAttribute("role", "tabpanel"); - forEach.call( - panel.querySelectorAll("table.tableblock"), - function (table) { - var container = Object.assign(document.createElement("div"), { - className: "tablecontainer", - }); - table.parentNode.insertBefore(container, table).appendChild(table); - } - ); - var onClick = syncId === undefined ? activateTab : activateTabSync; - tab.addEventListener( - "click", - onClick.bind({ tabs: tabs, tab: tab, panel: panel }) - ); - }); - if (syncIds && initial) { - var syncGroupId; - for ( - var i = 0, lst = tabs.classList, len = lst.length, className; - i !== len; - i++ - ) { - if (!(className = lst.item(i)).startsWith("data-sync-group-id=")) - continue; - tabs.dataset.syncGroupId = syncGroupId = - lst.remove(className) || - className.slice(19).replace(/\u00a0/g, " "); - break; - } - if (syncGroupId === undefined) - tabs.dataset.syncGroupId = syncGroupId = Object.keys(syncIds) - .sort() - .join("|"); - var preferredSyncId = - "syncStorageKey" in config && - window[(config.syncStorageScope || "local") + "Storage"].getItem( - config.syncStorageKey + "-" + syncGroupId - ); - var tab = preferredSyncId && syncIds[preferredSyncId]; - tab && - Object.assign(initial, { - tab: tab, - panel: document.getElementById(tab.getAttribute("aria-controls")), - }); - toggleSelected(initial.tab, true) || toggleHidden(initial.panel, false); - } - }); - onHashChange(); - toggleClassOnEach(tabsBlocks, "is-loading", "remove"); - window.setTimeout( - toggleClassOnEach.bind(null, tabsBlocks, "is-loaded", "add"), - 0 - ); - window.addEventListener("hashchange", onHashChange); - } - - function activateTab(e) { - var tab = this.tab; - var tabs = this.tabs || (this.tabs = tab.closest(".tabs")); - var panel = - this.panel || - (this.panel = document.getElementById(tab.getAttribute("aria-controls"))); - forEach.call(tabs.querySelectorAll(".tablist .tab"), function (el) { - toggleSelected(el, el === tab); - }); - forEach.call(tabs.querySelectorAll(".tabpanel"), function (el) { - toggleHidden(el, el !== panel); - }); - if ( - !this.isSync && - "syncStorageKey" in config && - "syncGroupId" in tabs.dataset - ) { - var storageKey = config.syncStorageKey + "-" + tabs.dataset.syncGroupId; - window[(config.syncStorageScope || "local") + "Storage"].setItem( - storageKey, - tab.dataset.syncId - ); - } - if (!e) return; - var loc = window.location; - var hashIdx = loc.hash ? loc.href.indexOf("#") : -1; - if (~hashIdx) - window.history.replaceState(null, "", loc.href.slice(0, hashIdx)); - e.preventDefault(); - } - - function activateTabSync(e) { - activateTab.call(this, e); - var thisTabs = this.tabs; - var thisTab = this.tab; - var initialY = thisTabs.getBoundingClientRect().y; - forEach.call(document.querySelectorAll(".tabs"), function (tabs) { - if ( - tabs === thisTabs || - tabs.dataset.syncGroupId !== thisTabs.dataset.syncGroupId - ) - return; - forEach.call(tabs.querySelectorAll(".tablist .tab"), function (tab) { - if (tab.dataset.syncId === thisTab.dataset.syncId) - activateTab.call({ tabs: tabs, tab: tab, isSync: true }); - }); - }); - var shiftedBy = thisTabs.getBoundingClientRect().y - initialY; - if (shiftedBy && (shiftedBy = Math.round(shiftedBy))) - window.scrollBy({ top: shiftedBy, behavior: "instant" }); - } - - function toggleClassOnEach(elements, className, method) { - forEach.call(elements, function (el) { - el.classList[method](className); - }); - } - - function toggleHidden(el, state) { - el.classList[(el.hidden = state) ? "add" : "remove"]("is-hidden"); - } - - function toggleSelected(el, state) { - el.setAttribute("aria-selected", "" + state); - el.classList[state ? "add" : "remove"]("is-selected"); - el.tabIndex = state ? 0 : -1; - } - - function onHashChange() { - var id = window.location.hash.slice(1); - if (!id) return; - var tab = document.getElementById( - ~id.indexOf("%") ? decodeURIComponent(id) : id - ); - if (!(tab && tab.classList.contains("tab"))) return; - "syncId" in tab.dataset - ? activateTabSync.call({ tab: tab }) - : activateTab.call({ tab: tab }); - } -})(); diff --git a/layouts/partials/head_extended.html b/layouts/partials/head_extended.html index 2806aab..2f5aa22 100644 --- a/layouts/partials/head_extended.html +++ b/layouts/partials/head_extended.html @@ -5,12 +5,6 @@ {{ end }} -{{ $asciidoctorTabs := resources.Get "css/asciidoctor-tabs.css" | resources.ToCSS }} - - -{{ $asciidoctorTabsJS := resources.Get "js/asciidoctor-tabs.js" }} - - {{- /* medium-zoom */ -}}