const Cookie = { get: name => { const c = document.cookie.match(`(?:(?:^|.*; *)${name} *= *([^;]*).*$)|^.*$`)[1]; if(c) return decodeURIComponent(c); }, set: (name, value, opts = {}) => { if(opts.days) { opts['max-age'] = opts.days * 60 * 60 * 24; delete opts.days; } opts = Object.entries(opts).reduce((accumulatedStr, [k, v]) => `${accumulatedStr}; ${k}=${v}`, ''); document.cookie = name + '=' + encodeURIComponent(value) + opts } }; (() => { const acttheme = Cookie.get('theme') ?? "f0ck"; const themecontainer = document.querySelector("li#themes > ul.dropdown-menu"); const themes = [...themecontainer.querySelectorAll("li > a")].map(t => t.innerText.toLowerCase()); if(acttheme !== document.documentElement.getAttribute("theme") && themes.includes(acttheme)) document.documentElement.setAttribute("theme", acttheme); [...themecontainer.querySelectorAll("li > a")].forEach(t => t.addEventListener("click", e => { e.preventDefault(); const _theme = e.target.innerText.toLowerCase(); document.documentElement.setAttribute("theme", _theme); document.querySelector("#themes > a").setAttribute("content", _theme); Cookie.set("theme", _theme, { path: "/", days: 360 }); return false; })); document.addEventListener("keydown", e => { if(e.target.tagName === "INPUT") return; const acttheme = Cookie.get('theme') ?? "f0ck"; const themes = [...themecontainer.querySelectorAll("li > a")].map(t => t.innerText.toLowerCase()); const k = e.key; if(k === "t") { e.preventDefault(); let i = themes.indexOf(acttheme); if(++i >= themes.length) i = 0; document.documentElement.setAttribute("theme", themes[i]); document.querySelector("#themes > a").setAttribute("content", themes[i]); Cookie.set("theme", themes[i], { path: "/", days: 360 }); } }); })();