diff --git a/generated/js/styleSwitcher.min.js b/generated/js/styleSwitcher.min.js index 178b1137b6..9805877fbc 100644 --- a/generated/js/styleSwitcher.min.js +++ b/generated/js/styleSwitcher.min.js @@ -1,5 +1,5 @@ const click="click",mouseenter="mouseenter",mouseleave="mouseleave",active="active"; "use strict";const escapeChars={"¢":"cent","£":"pound","¥":"yen","€":"euro","©":"copy","®":"reg","<":"lt",">":"gt",'"':"quot","&":"amp","'":"#39"},regex=/[¢£¥€©®<>"&']/g;function escapeHTML(a){return a.replace(regex,function(a){return"&"+escapeChars[a]+";"})}function saveFile(a,b){const c=document.createElement("a");c.setAttribute("href","data:text/text;charset=utf-8,"+encodeURI(b)),c.setAttribute("download",a),c.click()}function printText(a){const b=window.open("","","left=0,top=0,width=100,height=100,toolbar=0,scrollbars=0,status=0,location=0,menubar=0",!1);b.document.write("
"+a+"
"),b.document.close(),b.focus(),b.print(),b.close()}function navigateToUrlOrRoot(a){const b=new XMLHttpRequest;b.open("GET",a,!0),b.onreadystatechange=()=>{if(4===b.readyState&&404===b.status){const b=new URL(a);b.pathname="",a=b.toString()}window.location.href=a},b.send()}function onDOMLoaded(a){listen(document,"DOMContentLoaded",a)}function getById(a){return document.getElementById(a)}function query(a,b){return a.querySelector(b)}function queryAll(a,b){return a.querySelectorAll(b)}function listen(a,b,c){a.addEventListener(b,c)} -"use strict";const darkThemeClass="dark-theme",darkTheme="Dark Theme",darkThemeItem="dark-theme-item",lightTheme="Light Theme",lightThemeItem="light-theme-item",styleCookie="style";function applyStyleSheet(a){a===darkTheme?document.body.classList.add(darkThemeClass):document.body.classList.remove(darkThemeClass);let b=getById(lightThemeItem);b&&(a===lightTheme?b.classList.add(active):b.classList.remove(active)),b=getById(darkThemeItem),b&&(a===darkTheme?b.classList.add(active):b.classList.remove(active))}function createCookie(a,b,c){let d="";if(c){const a=new Date;a.setTime(a.getTime()+1e3*(60*(60*(24*c)))),d="; expires="+a.toGMTString()}document.cookie=a+"="+b+d+"; path=/"}function readCookie(a){const b=a+"=",d=document.cookie.split(";");for(let e,c=0;c{function a(a){applyStyleSheet(a),createCookie(styleCookie,a)}loadActiveStyleSheet(),listen(getById(lightThemeItem),click,()=>(a(lightTheme),!1)),listen(getById(darkThemeItem),click,()=>(a(darkTheme),!1))}); +"use strict";const darkThemeClass="dark-theme",darkTheme="Dark Theme",darkThemeItem="dark-theme-item",lightTheme="Light Theme",lightThemeItem="light-theme-item",styleCookie="style";function applyStyleSheet(a){a===darkTheme?document.body.classList.add(darkThemeClass):document.body.classList.remove(darkThemeClass);let b=getById(lightThemeItem);b&&(a===darkTheme?b.classList.remove(active):b.classList.add(active)),b=getById(darkThemeItem),b&&(a===darkTheme?b.classList.add(active):b.classList.remove(active))}function createCookie(a,b,c){let d="";if(c){const a=new Date;a.setTime(a.getTime()+1e3*(60*(60*(24*c)))),d="; expires="+a.toGMTString()}document.cookie=a+"="+b+d+"; path=/"}function readCookie(a){const b=a+"=",d=document.cookie.split(";");for(let e,c=0;c{applyStyleSheet(cookieValue),listen(getById(lightThemeItem),click,()=>(applyStyleSheet(lightTheme),createCookie(styleCookie,lightTheme),!1)),listen(getById(darkThemeItem),click,()=>(applyStyleSheet(darkTheme),createCookie(styleCookie,darkTheme),!1))}); //# sourceMappingURL=styleSwitcher.min.js.map \ No newline at end of file diff --git a/generated/js/styleSwitcher.min.js.map b/generated/js/styleSwitcher.min.js.map index f98ca26d7d..2ffb4bff06 100644 --- a/generated/js/styleSwitcher.min.js.map +++ b/generated/js/styleSwitcher.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../src/js/constants.js","../../src/js/utils.js","../../src/js/styleSwitcher.js"],"names":[],"mappings":"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","file":"styleSwitcher.min.js","sourcesContent":["const click = 'click';\nconst mouseenter = 'mouseenter';\nconst mouseleave = 'mouseleave';\nconst active = 'active';\n","\"use strict\";\n\nconst escapeChars = {\n '¢': 'cent',\n '£': 'pound',\n '¥': 'yen',\n '€': 'euro',\n '©': 'copy',\n '®': 'reg',\n '<': 'lt',\n '>': 'gt',\n '\"': 'quot',\n '&': 'amp',\n '\\'': '#39'\n};\n\nconst regex = new RegExp(\"[¢£¥€©®<>\\\"&']\", 'g');\n\n// Escapes special characters into HTML entities\nfunction escapeHTML(str) {\n return str.replace(regex, function(m) {\n return '&' + escapeChars[m] + ';';\n });\n}\n\n// Saves a string to a particular client-side file\nfunction saveFile(filename, text) {\n const element = document.createElement('a');\n element.setAttribute('href', 'data:text/text;charset=utf-8,' + encodeURI(text));\n element.setAttribute('download', filename);\n element.click();\n}\n\n// Sends a string to the printer\nfunction printText(text) {\n const html = \"
\" + text + \"
\";\n\n const printWin = window.open('', '', 'left=0,top=0,width=100,height=100,toolbar=0,scrollbars=0,status=0,location=0,menubar=0', false);\n printWin.document.write(html);\n printWin.document.close();\n printWin.focus();\n printWin.print();\n printWin.close();\n}\n\n// Navigate to the given URL if possible. If the page doesn't exist then navigate to the\n// root of the target site instead.\nfunction navigateToUrlOrRoot(url) {\n const request = new XMLHttpRequest();\n request.open('GET', url, true);\n request.onreadystatechange = () => {\n if (request.readyState === 4 && request.status === 404) {\n const u = new URL(url);\n u.pathname = '';\n url = u.toString();\n }\n\n // go!\n window.location.href = url;\n };\n\n request.send();\n}\n\nfunction onDOMLoaded(cb) {\n listen(document, \"DOMContentLoaded\", cb);\n}\n\nfunction getById(id) {\n return document.getElementById(id);\n}\n\nfunction query(o, s) {\n return o.querySelector(s);\n}\n\nfunction queryAll(o, s) {\n return o.querySelectorAll(s);\n}\n\nfunction listen(o, e, f) {\n o.addEventListener(e, f);\n}\n","\"use strict\";\r\rconst darkThemeClass = 'dark-theme';\rconst darkTheme = 'Dark Theme';\rconst darkThemeItem = 'dark-theme-item';\rconst lightTheme = 'Light Theme';\rconst lightThemeItem = 'light-theme-item';\rconst styleCookie = 'style';\r\rfunction applyStyleSheet(title) {\r if (title === darkTheme) {\r document.body.classList.add(darkThemeClass);\r } else {\r document.body.classList.remove(darkThemeClass);\r }\r\r // set the active theme menu item\r\r let item = getById(lightThemeItem);\r if (item) {\r if (title === lightTheme) {\r item.classList.add(active);\r } else {\r item.classList.remove(active);\r }\r }\r\r item = getById(darkThemeItem);\r if (item) {\r if (title === darkTheme) {\r item.classList.add(active);\r } else {\r item.classList.remove(active);\r }\r }\r}\r\rfunction createCookie(name, value, days) {\r let expires = \"\";\r if (days) {\r const date = new Date();\r date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\r expires = \"; expires=\" + date.toGMTString();\r }\r document.cookie = name + \"=\" + value + expires + \"; path=/\";\r}\r\rfunction readCookie(name) {\r const nameEQ = name + \"=\";\r const ca = document.cookie.split(';');\r for (let i = 0; i < ca.length; i++) {\r let c = ca[i];\r while (c.charAt(0) === ' ') {\r c = c.substring(1, c.length);\r }\r\r if (c.indexOf(nameEQ) === 0) {\r let result = c.substring(nameEQ.length, c.length);\r\r // convert legacy cookie values\r if (result === \"light\") {\r result = lightTheme;\r } else if (result === \"dark\") {\r result = darkTheme;\r }\r\r return result;\r }\r }\r return null;\r}\r\rfunction loadActiveStyleSheet() {\r let cookie = readCookie(styleCookie);\r if (cookie !== null) {\r applyStyleSheet(cookie);\r }\r}\r\rloadActiveStyleSheet();\r\ronDOMLoaded(() => {\r loadActiveStyleSheet();\r\r function setActiveStyleSheet(title) {\r applyStyleSheet(title);\r createCookie(styleCookie, title);\r }\r\r listen(getById(lightThemeItem), click, () => {\r setActiveStyleSheet(lightTheme);\r return false;\r });\r\r listen(getById(darkThemeItem), click, () => {\r setActiveStyleSheet(darkTheme);\r return false;\r });\r});\r"]} \ No newline at end of file +{"version":3,"sources":["../../src/js/constants.js","../../src/js/utils.js","../../src/js/styleSwitcher.js"],"names":[],"mappings":"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","file":"styleSwitcher.min.js","sourcesContent":["const click = 'click';\nconst mouseenter = 'mouseenter';\nconst mouseleave = 'mouseleave';\nconst active = 'active';\n","\"use strict\";\n\nconst escapeChars = {\n '¢': 'cent',\n '£': 'pound',\n '¥': 'yen',\n '€': 'euro',\n '©': 'copy',\n '®': 'reg',\n '<': 'lt',\n '>': 'gt',\n '\"': 'quot',\n '&': 'amp',\n '\\'': '#39'\n};\n\nconst regex = new RegExp(\"[¢£¥€©®<>\\\"&']\", 'g');\n\n// Escapes special characters into HTML entities\nfunction escapeHTML(str) {\n return str.replace(regex, function(m) {\n return '&' + escapeChars[m] + ';';\n });\n}\n\n// Saves a string to a particular client-side file\nfunction saveFile(filename, text) {\n const element = document.createElement('a');\n element.setAttribute('href', 'data:text/text;charset=utf-8,' + encodeURI(text));\n element.setAttribute('download', filename);\n element.click();\n}\n\n// Sends a string to the printer\nfunction printText(text) {\n const html = \"
\" + text + \"
\";\n\n const printWin = window.open('', '', 'left=0,top=0,width=100,height=100,toolbar=0,scrollbars=0,status=0,location=0,menubar=0', false);\n printWin.document.write(html);\n printWin.document.close();\n printWin.focus();\n printWin.print();\n printWin.close();\n}\n\n// Navigate to the given URL if possible. If the page doesn't exist then navigate to the\n// root of the target site instead.\nfunction navigateToUrlOrRoot(url) {\n const request = new XMLHttpRequest();\n request.open('GET', url, true);\n request.onreadystatechange = () => {\n if (request.readyState === 4 && request.status === 404) {\n const u = new URL(url);\n u.pathname = '';\n url = u.toString();\n }\n\n // go!\n window.location.href = url;\n };\n\n request.send();\n}\n\nfunction onDOMLoaded(cb) {\n listen(document, \"DOMContentLoaded\", cb);\n}\n\nfunction getById(id) {\n return document.getElementById(id);\n}\n\nfunction query(o, s) {\n return o.querySelector(s);\n}\n\nfunction queryAll(o, s) {\n return o.querySelectorAll(s);\n}\n\nfunction listen(o, e, f) {\n o.addEventListener(e, f);\n}\n","\"use strict\";\r\rconst darkThemeClass = 'dark-theme';\rconst darkTheme = 'Dark Theme';\rconst darkThemeItem = 'dark-theme-item';\rconst lightTheme = 'Light Theme';\rconst lightThemeItem = 'light-theme-item';\rconst styleCookie = 'style';\r\rfunction applyStyleSheet(title) {\r if (title === darkTheme) {\r document.body.classList.add(darkThemeClass);\r } else {\r document.body.classList.remove(darkThemeClass);\r }\r\r // set the active theme menu item\r\r let item = getById(lightThemeItem);\r if (item) {\r if (title === darkTheme) {\r item.classList.remove(active);\r } else {\r item.classList.add(active);\r }\r }\r\r item = getById(darkThemeItem);\r if (item) {\r if (title === darkTheme) {\r item.classList.add(active);\r } else {\r item.classList.remove(active);\r }\r }\r}\r\rfunction createCookie(name, value, days) {\r let expires = \"\";\r if (days) {\r const date = new Date();\r date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\r expires = \"; expires=\" + date.toGMTString();\r }\r document.cookie = name + \"=\" + value + expires + \"; path=/\";\r}\r\rfunction readCookie(name) {\r const nameEQ = name + \"=\";\r const ca = document.cookie.split(';');\r for (let i = 0; i < ca.length; i++) {\r let c = ca[i];\r while (c.charAt(0) === ' ') {\r c = c.substring(1, c.length);\r }\r\r if (c.indexOf(nameEQ) === 0) {\r let result = c.substring(nameEQ.length, c.length);\r\r // convert legacy cookie values\r if (result === \"light\") {\r result = lightTheme;\r } else if (result === \"dark\") {\r result = darkTheme;\r }\r\r return result;\r }\r }\r return null;\r}\r\rlet cookieValue = readCookie(styleCookie);\rapplyStyleSheet(cookieValue);\r\ronDOMLoaded(() => {\r applyStyleSheet(cookieValue);\r\r listen(getById(lightThemeItem), click, () => {\r applyStyleSheet(lightTheme);\r createCookie(styleCookie, lightTheme);\r return false;\r });\r\r listen(getById(darkThemeItem), click, () => {\r applyStyleSheet(darkTheme);\r createCookie(styleCookie, darkTheme);\r return false;\r });\r});\r"]} \ No newline at end of file diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html index 576d41414f..ded103c0ea 100644 --- a/layouts/_default/baseof.html +++ b/layouts/_default/baseof.html @@ -80,15 +80,6 @@ - - @@ -110,7 +101,7 @@ - + @@ -122,8 +113,26 @@ {{ end }} + + + + + + + + + + + {{ partial "header.html" . }} {{ block "main" . }}{{ end }} {{ partial "footer.html" . }} @@ -158,12 +167,5 @@ {{ end }} - - - - - - - diff --git a/src/js/styleSwitcher.js b/src/js/styleSwitcher.js index a90a5c4bde..f0578fa63d 100644 --- a/src/js/styleSwitcher.js +++ b/src/js/styleSwitcher.js @@ -1 +1 @@ -"use strict"; const darkThemeClass = 'dark-theme'; const darkTheme = 'Dark Theme'; const darkThemeItem = 'dark-theme-item'; const lightTheme = 'Light Theme'; const lightThemeItem = 'light-theme-item'; const styleCookie = 'style'; function applyStyleSheet(title) { if (title === darkTheme) { document.body.classList.add(darkThemeClass); } else { document.body.classList.remove(darkThemeClass); } // set the active theme menu item let item = getById(lightThemeItem); if (item) { if (title === lightTheme) { item.classList.add(active); } else { item.classList.remove(active); } } item = getById(darkThemeItem); if (item) { if (title === darkTheme) { item.classList.add(active); } else { item.classList.remove(active); } } } function createCookie(name, value, days) { let expires = ""; if (days) { const date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); expires = "; expires=" + date.toGMTString(); } document.cookie = name + "=" + value + expires + "; path=/"; } function readCookie(name) { const nameEQ = name + "="; const ca = document.cookie.split(';'); for (let i = 0; i < ca.length; i++) { let c = ca[i]; while (c.charAt(0) === ' ') { c = c.substring(1, c.length); } if (c.indexOf(nameEQ) === 0) { let result = c.substring(nameEQ.length, c.length); // convert legacy cookie values if (result === "light") { result = lightTheme; } else if (result === "dark") { result = darkTheme; } return result; } } return null; } function loadActiveStyleSheet() { let cookie = readCookie(styleCookie); if (cookie !== null) { applyStyleSheet(cookie); } } loadActiveStyleSheet(); onDOMLoaded(() => { loadActiveStyleSheet(); function setActiveStyleSheet(title) { applyStyleSheet(title); createCookie(styleCookie, title); } listen(getById(lightThemeItem), click, () => { setActiveStyleSheet(lightTheme); return false; }); listen(getById(darkThemeItem), click, () => { setActiveStyleSheet(darkTheme); return false; }); }); \ No newline at end of file +"use strict"; const darkThemeClass = 'dark-theme'; const darkTheme = 'Dark Theme'; const darkThemeItem = 'dark-theme-item'; const lightTheme = 'Light Theme'; const lightThemeItem = 'light-theme-item'; const styleCookie = 'style'; function applyStyleSheet(title) { if (title === darkTheme) { document.body.classList.add(darkThemeClass); } else { document.body.classList.remove(darkThemeClass); } // set the active theme menu item let item = getById(lightThemeItem); if (item) { if (title === darkTheme) { item.classList.remove(active); } else { item.classList.add(active); } } item = getById(darkThemeItem); if (item) { if (title === darkTheme) { item.classList.add(active); } else { item.classList.remove(active); } } } function createCookie(name, value, days) { let expires = ""; if (days) { const date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); expires = "; expires=" + date.toGMTString(); } document.cookie = name + "=" + value + expires + "; path=/"; } function readCookie(name) { const nameEQ = name + "="; const ca = document.cookie.split(';'); for (let i = 0; i < ca.length; i++) { let c = ca[i]; while (c.charAt(0) === ' ') { c = c.substring(1, c.length); } if (c.indexOf(nameEQ) === 0) { let result = c.substring(nameEQ.length, c.length); // convert legacy cookie values if (result === "light") { result = lightTheme; } else if (result === "dark") { result = darkTheme; } return result; } } return null; } let cookieValue = readCookie(styleCookie); applyStyleSheet(cookieValue); onDOMLoaded(() => { applyStyleSheet(cookieValue); listen(getById(lightThemeItem), click, () => { applyStyleSheet(lightTheme); createCookie(styleCookie, lightTheme); return false; }); listen(getById(darkThemeItem), click, () => { applyStyleSheet(darkTheme); createCookie(styleCookie, darkTheme); return false; }); }); \ No newline at end of file