/*! Fiesta 1.1.0 | MPL-2.0 | https://fiesta.rastrillo.org */ (function () { "use strict"; if (window.fiestaShim) return; window.fiestaShim = true; var root = document.documentElement, KEY = "fiesta-scheme", SCHEME = "[rst-scheme],.rst-scheme"; var remembers = root.getAttribute("data-rst-scheme-store") === "local"; function stored() { if (!remembers) return null; try { return localStorage.getItem(KEY); } catch (e) { return null; } } function remember(s) { if (!remembers) return; try { if (s === "system") localStorage.removeItem(KEY); else localStorage.setItem(KEY, s); } catch (e) {} } function apply(s) { if (s === "system") root.removeAttribute("data-theme"); else root.setAttribute("data-theme", s); } function mark(m, s) { m.querySelectorAll("button").forEach(function (b) { var f = b.form, v = f && f.elements.scheme && f.elements.scheme.value; if (v === s) b.setAttribute("aria-current", "true"); else b.removeAttribute("aria-current"); }); } function ready(fn) { if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", fn); else fn(); } var kept = root.hasAttribute("data-theme") ? null : stored(); if (kept === "light" || kept === "dark") { apply(kept); ready(function () { document.querySelectorAll(SCHEME).forEach(function (m) { mark(m, kept); }); }); } var MENUS = "[rst-dropdown][open],[rst-menu-group][open],[rst-row-menu][open]"; MENUS += "," + MENUS.replace(/\[(rst[-\w]+)\]/g, ".$1"); MENUS += ",[rst-shell-topbar] [rst-shell-menu][open],[rst-shell-console~=page] [rst-shell-menu][open],[rst-shell-console~=index] [rst-shell-menu][open]"; MENUS += ",.rst-shell-topbar .rst-shell__menu[open],.rst-shell-console--page .rst-shell__menu[open],.rst-shell-console--index .rst-shell__menu[open]"; var TAIL = "[rst-shell-tail],.rst-shell__tail"; function menuAround(node) { var d = node.closest(MENUS), t, s; if (d) return d; t = node.closest(TAIL); d = t && t.previousElementSibling; s = d && d.matches(MENUS) && d.querySelector("summary"); return s && s.getClientRects().length ? d : null; } function closeMenus(except) { var keep = [], m; for (m = except && except.closest && menuAround(except); m; m = m.parentElement && menuAround(m.parentElement)) keep.push(m); document.querySelectorAll(MENUS).forEach(function (d) { if (keep.indexOf(d) < 0 && !(except && d.contains(except))) d.open = false; }); } function dismissMenus(e) { if (e.type === "click") { closeMenus(e.target); return; } if (e.key !== "Escape") return; var el = document.activeElement; var host = el && el.closest ? menuAround(el) : null; while (host && host.parentElement && menuAround(host.parentElement)) { host = menuAround(host.parentElement); } closeMenus(null); if (host) { var summary = host.querySelector("summary"); if (summary) summary.focus(); } } document.addEventListener("click", dismissMenus, true); document.addEventListener("keydown", dismissMenus, true); var TRACK = "[rst-switch-track],.rst-switch__track", drag = null, after = null, settling = null, settleT = 0, releasing = false; function unsettle() { if (settling) settling.removeAttribute("data-rst-settle"); settling = null; clearTimeout(settleT); } function settle(l) { unsettle(); settling = l; l.setAttribute("data-rst-settle", ""); settleT = setTimeout(unsettle, 300); } document.addEventListener("change", function (e) { if (settling && !releasing && settling.contains(e.target)) unsettle(); }, true); document.addEventListener("pointerdown", function (e) { if (drag && e.pointerId !== drag.id) return; var t = e.target.closest && e.target.closest(TRACK), l = t && t.closest("[rst-switch],.rst-switch,[rst-tblock-head],.rst-tblock__head"), box = l && l.querySelector("input"); if (drag) drop({ type: "lost", pointerId: drag.id }); after = null; if (!box || box.matches(":disabled") || e.button) return; var r = t.getBoundingClientRect(), max = r.width - r.height; drag = { l: l, t: t, box: box, id: e.pointerId, x: e.clientX, max: max, at: box.checked ? max : 0, pos: -1, dir: getComputedStyle(t).direction === "rtl" ? -1 : 1 }; }); document.addEventListener("pointermove", function (e) { var g = drag, d; if (!g || e.pointerId !== g.id) return; d = (e.clientX - g.x) * g.dir; if (g.pos < 0) { if (Math.abs(d) < 4) return; if (settling === g.l) unsettle(); g.l.setAttribute("data-rst-drag", ""); g.t.setPointerCapture(e.pointerId); } g.pos = Math.min(g.max, Math.max(0, g.at + d)); d = g.pos / g.max; g.t.style.setProperty("--rst-switch-p", d); g.t.style.setProperty("--rst-switch-on", d * 100 + "%"); }); function drop(e) { var g = drag; if (!g || e.pointerId !== g.id) return; drag = null; if (g.pos < 0) return; g.l.removeAttribute("data-rst-drag"); settle(g.l); g.t.style.removeProperty("--rst-switch-p"); g.t.style.removeProperty("--rst-switch-on"); after = g.l; releasing = true; if (e.type === "pointerup" && !g.box.matches(":disabled") && g.pos >= g.max / 2 !== g.box.checked) g.box.click(); releasing = false; } document.addEventListener("pointerup", drop); document.addEventListener("pointercancel", drop); document.addEventListener("lostpointercapture", drop); document.addEventListener("click", function (e) { if (after && after.contains(e.target) && e.target.tagName !== "INPUT") { e.preventDefault(); after = null; } }, true); document.addEventListener("touchstart", function () {}, { passive: true }); document.addEventListener("submit", function (e) { var f = e.target, m = f.closest(SCHEME), s = m && f.elements.scheme && f.elements.scheme.value; if (!s) return; e.preventDefault(); if (s !== "light" && s !== "dark") s = "system"; apply(s); land(); remember(s); mark(m, s); m.open = false; f.dispatchEvent(new CustomEvent("rst-scheme", { bubbles: true, detail: { scheme: s } })); }, true); function land() { if (!document.getAnimations) return; document.getAnimations().forEach(function (a) { if (typeof a.transitionProperty === "string") a.cancel(); }); } var osScheme = window.matchMedia && matchMedia("(prefers-color-scheme: dark)"); if (osScheme) osScheme.onchange = function () { if (!root.hasAttribute("data-theme")) land(); }; })();