mirror of
https://github.com/foo-dogsquared/website.git
synced 2025-01-30 22:57:59 +00:00
Remove asciidoctor-tabs assets
This commit is contained in:
parent
ccad9a17b9
commit
f5fb6fdd2f
@ -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 });
|
||||
}
|
||||
})();
|
@ -5,12 +5,6 @@
|
||||
{{ end }}
|
||||
<link rel="stylesheet" href="{{ $highlighter.RelPermalink }}"/>
|
||||
|
||||
{{ $asciidoctorTabs := resources.Get "css/asciidoctor-tabs.css" | resources.ToCSS }}
|
||||
<link rel="stylesheet" href="{{ $asciidoctorTabs.RelPermalink }}"/>
|
||||
|
||||
{{ $asciidoctorTabsJS := resources.Get "js/asciidoctor-tabs.js" }}
|
||||
<script defer src="{{ $asciidoctorTabsJS.RelPermalink }}"></script>
|
||||
|
||||
{{- /* medium-zoom */ -}}
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/medium-zoom@1.0.7/dist/medium-zoom.min.js"></script>
|
||||
<script>window.addEventListener('load', () => mediumZoom('article img', { 'background': 'rgba(0, 0, 0, 0.75)' }))</script>
|
||||
|
Loading…
Reference in New Issue
Block a user