diff --git a/layouts/partials/nav/main.html b/layouts/partials/nav/main.html index 3b7ea4b..a96133d 100644 --- a/layouts/partials/nav/main.html +++ b/layouts/partials/nav/main.html @@ -18,7 +18,7 @@ {{ .Site.Params.logo.text }}
- diff --git a/src/app.js b/src/app.js index 3903015..12d4f4b 100644 --- a/src/app.js +++ b/src/app.js @@ -5,5 +5,4 @@ import './dark-mode'; import './navbar'; import './current-year'; import './contact-form'; -import './plausible-banner'; -import './set-dark-mode'; \ No newline at end of file +import './plausible-banner'; \ No newline at end of file diff --git a/src/set-dark-mode.js b/src/set-dark-mode.js deleted file mode 100644 index ca7ff7d..0000000 --- a/src/set-dark-mode.js +++ /dev/null @@ -1,4 +0,0 @@ -colorTheme = window.localStorage.getItem('color-theme'); -if (!colorTheme){ - window.localStorage.setItem('color-theme', 'dark'); -} \ No newline at end of file diff --git a/static/js/app.bundle.js b/static/js/app.bundle.js index 0be072d..abba3f0 100644 --- a/static/js/app.bundle.js +++ b/static/js/app.bundle.js @@ -1,2 +1,2 @@ -(()=>{var e,t={4:()=>{const e=document.getElementById("themeToggleDarkIcon"),t=document.getElementById("themeToggleLightIcon");e&&t&&("dark"===localStorage.getItem("color-theme")||!("color-theme"in localStorage)&&window.matchMedia("(prefers-color-scheme: dark)").matches?t.classList.remove("hidden"):e.classList.remove("hidden"));const o=document.getElementById("themeToggle");let n=new Event("dark-mode");o&&o.addEventListener("click",(function(){e.classList.toggle("hidden"),t.classList.toggle("hidden"),localStorage.getItem("color-theme")?"light"===localStorage.getItem("color-theme")?(document.documentElement.classList.add("dark"),localStorage.setItem("color-theme","dark")):(document.documentElement.classList.remove("dark"),localStorage.setItem("color-theme","light")):document.documentElement.classList.contains("dark")?(document.documentElement.classList.remove("dark"),localStorage.setItem("color-theme","light")):(document.documentElement.classList.add("dark"),localStorage.setItem("color-theme","dark")),document.dispatchEvent(n)}))},5:()=>{colorTheme=window.localStorage.getItem("color-theme"),colorTheme||window.localStorage.setItem("color-theme","dark")},127:(e,t,o)=>{"use strict";o(315),o(4),o(756),o(391),o(935),o(762),o(5)},391:()=>{document.addEventListener("DOMContentLoaded",(function(){const e=document.getElementById("currentYear");e&&(e.textContent=(new Date).getFullYear())}))},756:()=>{function e(){window.scrollY>0?t.setAttribute("data-sticky","true"):t.setAttribute("data-sticky","false")}const t=document.querySelector("#mainNavbar");t&&(e(),window.addEventListener("scroll",(function(){e()})))},762:()=>{window.addEventListener("load",(function(){var e=document.getElementById("plausible-switch"),t=window.localStorage.getItem("plausible_ignore");e.checked=null==t||!1===t})),window.addEventListener("load",(function(){var e=window.localStorage.getItem("hidePlausibleBanner"),t=document.getElementById("plausible-banner");e?t.classList.add("hidden"):t.classList.remove("hidden")})),document.getElementById("plausible-switch").addEventListener("change",(function(){this.checked?window.localStorage.removeItem("plausible_ignore"):window.localStorage.setItem("plausible_ignore","true")})),document.getElementById("plausible-ok").addEventListener("click",(function(){var e=document.getElementById("plausible-banner");window.localStorage.setItem("hidePlausibleBanner","true"),e.classList.add("hidden")}))},935:(e,t,o)=>{window.addEventListener("DOMContentLoaded",(async function(){const e=await o.e(96).then(o.bind(o,339)),t=await o.e(96).then(o.bind(o,239)),n=e.Filter;if("function"!=typeof n)return;const r=new n,a=document.querySelector("form[name='contact'] input[name='subject']");if(!a)return;const l=new URLSearchParams(window.location.search).get("topic")||"none";if("none"===l)return;const i=r.clean(l).substring(0,30),c=t.default.titleCase(i),d=a.value||"none";a.value=d.concat(" - ",c)}))}},o={};function n(e){var r=o[e];if(void 0!==r)return r.exports;var a=o[e]={exports:{}};return t[e](a,a.exports,n),a.exports}n.m=t,e=[],n.O=(t,o,r,a)=>{if(!o){var l=1/0;for(s=0;s=a)&&Object.keys(n.O).every((e=>n.O[e](o[c])))?o.splice(c--,1):(i=!1,a0&&e[s-1][2]>a;s--)e[s]=e[s-1];e[s]=[o,r,a]},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.e=()=>Promise.resolve(),n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={524:0};n.O.j=t=>0===e[t];var t=(t,o)=>{var r,a,[l,i,c]=o,d=0;if(l.some((t=>0!==e[t]))){for(r in i)n.o(i,r)&&(n.m[r]=i[r]);if(c)var s=c(n)}for(t&&t(o);dn(127)));r=n.O(r)})(); +(()=>{var e,t={4:()=>{const e=document.getElementById("themeToggleDarkIcon"),t=document.getElementById("themeToggleLightIcon");e&&t&&("dark"===localStorage.getItem("color-theme")||!("color-theme"in localStorage)&&window.matchMedia("(prefers-color-scheme: dark)").matches?t.classList.remove("hidden"):e.classList.remove("hidden"));const n=document.getElementById("themeToggle");let o=new Event("dark-mode");n&&n.addEventListener("click",(function(){e.classList.toggle("hidden"),t.classList.toggle("hidden"),localStorage.getItem("color-theme")?"light"===localStorage.getItem("color-theme")?(document.documentElement.classList.add("dark"),localStorage.setItem("color-theme","dark")):(document.documentElement.classList.remove("dark"),localStorage.setItem("color-theme","light")):document.documentElement.classList.contains("dark")?(document.documentElement.classList.remove("dark"),localStorage.setItem("color-theme","light")):(document.documentElement.classList.add("dark"),localStorage.setItem("color-theme","dark")),document.dispatchEvent(o)}))},127:(e,t,n)=>{"use strict";n(315),n(4),n(756),n(391),n(935),n(762)},391:()=>{document.addEventListener("DOMContentLoaded",(function(){const e=document.getElementById("currentYear");e&&(e.textContent=(new Date).getFullYear())}))},756:()=>{function e(){window.scrollY>0?t.setAttribute("data-sticky","true"):t.setAttribute("data-sticky","false")}const t=document.querySelector("#mainNavbar");t&&(e(),window.addEventListener("scroll",(function(){e()})))},762:()=>{window.addEventListener("load",(function(){var e=document.getElementById("plausible-switch"),t=window.localStorage.getItem("plausible_ignore");e.checked=null==t||!1===t})),window.addEventListener("load",(function(){var e=window.localStorage.getItem("hidePlausibleBanner"),t=document.getElementById("plausible-banner");e?t.classList.add("hidden"):t.classList.remove("hidden")})),document.getElementById("plausible-switch").addEventListener("change",(function(){this.checked?window.localStorage.removeItem("plausible_ignore"):window.localStorage.setItem("plausible_ignore","true")})),document.getElementById("plausible-ok").addEventListener("click",(function(){var e=document.getElementById("plausible-banner");window.localStorage.setItem("hidePlausibleBanner","true"),e.classList.add("hidden")}))},935:(e,t,n)=>{window.addEventListener("DOMContentLoaded",(async function(){const e=await n.e(96).then(n.bind(n,339)),t=await n.e(96).then(n.bind(n,239)),o=e.Filter;if("function"!=typeof o)return;const r=new o,a=document.querySelector("form[name='contact'] input[name='subject']");if(!a)return;const l=new URLSearchParams(window.location.search).get("topic")||"none";if("none"===l)return;const i=r.clean(l).substring(0,30),c=t.default.titleCase(i),d=a.value||"none";a.value=d.concat(" - ",c)}))}},n={};function o(e){var r=n[e];if(void 0!==r)return r.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,o),a.exports}o.m=t,e=[],o.O=(t,n,r,a)=>{if(!n){var l=1/0;for(s=0;s=a)&&Object.keys(o.O).every((e=>o.O[e](n[c])))?n.splice(c--,1):(i=!1,a0&&e[s-1][2]>a;s--)e[s]=e[s-1];e[s]=[n,r,a]},o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.e=()=>Promise.resolve(),o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={524:0};o.O.j=t=>0===e[t];var t=(t,n)=>{var r,a,[l,i,c]=n,d=0;if(l.some((t=>0!==e[t]))){for(r in i)o.o(i,r)&&(o.m[r]=i[r]);if(c)var s=c(o)}for(t&&t(n);do(127)));r=o.O(r)})(); //# sourceMappingURL=app.bundle.js.map \ No newline at end of file diff --git a/static/js/app.bundle.js.map b/static/js/app.bundle.js.map index b7021d8..88c59de 100644 --- a/static/js/app.bundle.js.map +++ b/static/js/app.bundle.js.map @@ -1 +1 @@ -{"version":3,"file":"app.bundle.js","mappings":"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","sources":["webpack:///webpack/runtime/chunk loaded","webpack:///./src/dark-mode.js","webpack:///./src/set-dark-mode.js","webpack:///./src/current-year.js","webpack:///./src/navbar.js","webpack:///./src/plausible-banner.js","webpack:///./src/contact-form.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/ensure chunk","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/jsonp chunk loading","webpack:///webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","const themeToggleDarkIcon = document.getElementById('themeToggleDarkIcon');\nconst themeToggleLightIcon = document.getElementById('themeToggleLightIcon');\n\nif (themeToggleDarkIcon && themeToggleLightIcon) {\n // Change the icons inside the button based on previous settings\n if (localStorage.getItem('color-theme') === 'dark' || (!('color-theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) {\n themeToggleLightIcon.classList.remove('hidden');\n } else {\n themeToggleDarkIcon.classList.remove('hidden');\n }\n}\n\nconst themeToggleBtn = document.getElementById('themeToggle');\n\nlet event = new Event('dark-mode');\n\nif (themeToggleBtn) {\n\n themeToggleBtn.addEventListener('click', function() {\n\n // toggle icons\n themeToggleDarkIcon.classList.toggle('hidden');\n themeToggleLightIcon.classList.toggle('hidden');\n\n // if set via local storage previously\n if (localStorage.getItem('color-theme')) {\n if (localStorage.getItem('color-theme') === 'light') {\n document.documentElement.classList.add('dark');\n localStorage.setItem('color-theme', 'dark');\n } else {\n document.documentElement.classList.remove('dark');\n localStorage.setItem('color-theme', 'light');\n }\n\n // if NOT set via local storage previously\n } else {\n if (document.documentElement.classList.contains('dark')) {\n document.documentElement.classList.remove('dark');\n localStorage.setItem('color-theme', 'light');\n } else {\n document.documentElement.classList.add('dark');\n localStorage.setItem('color-theme', 'dark');\n }\n }\n\n document.dispatchEvent(event);\n \n });\n\n}\n","colorTheme = window.localStorage.getItem('color-theme');\nif (!colorTheme){\n window.localStorage.setItem('color-theme', 'dark');\n}","document.addEventListener('DOMContentLoaded', function () {\n const $currentYearText = document.getElementById('currentYear');\n if ($currentYearText) {\n $currentYearText.textContent = new Date().getFullYear();\n }\n});\n","function toggleStickyNavbar() {\n if (window.scrollY > 0) {\n navbar.setAttribute('data-sticky', 'true');\n } else {\n navbar.setAttribute('data-sticky', 'false');\n }\n}\n\nconst navbar = document.querySelector(\"#mainNavbar\");\n\nif(navbar) {\n toggleStickyNavbar();\n window.addEventListener(\"scroll\", function () {\n toggleStickyNavbar();\n });\n}\n","// Plausible Exclude\nwindow.addEventListener('load', function(){\n var plausibleSwitch = document.getElementById('plausible-switch');\n var plausibleStatus = window.localStorage.getItem('plausible_ignore');\n if (plausibleStatus === null || plausibleStatus === undefined || plausibleStatus === false ){\n plausibleSwitch.checked = true;\n } else {\n plausibleSwitch.checked = false;\n }\n})\n\nwindow.addEventListener('load', function(){\n var hidePlausibleBanner = window.localStorage.getItem('hidePlausibleBanner');\n var bannerEl = document.getElementById('plausible-banner');\n\n if ( hidePlausibleBanner ){\n bannerEl.classList.add('hidden');\n } else {\n bannerEl.classList.remove('hidden');\n }\n})\n\n\ndocument.getElementById('plausible-switch').addEventListener('change', function(){\n if (this.checked) {\n window.localStorage.removeItem('plausible_ignore');\n } else {\n window.localStorage.setItem('plausible_ignore', 'true');\n }\n})\n\ndocument.getElementById('plausible-ok').addEventListener('click', function() {\n var bannerEl = document.getElementById('plausible-banner');\n window.localStorage.setItem('hidePlausibleBanner', 'true');\n bannerEl.classList.add('hidden');\n})\n","/*\nThis grabs a querystring named topic and puts it in the subject of an email via the web form.\n\nIt goes through a few checks prior to inserting it.\n - Filters out bad words\n - Truncates to a maximum of 30 characters\n\nTODO: Optionally check for allowed topics.\n*/\n\nwindow.addEventListener('DOMContentLoaded', async function () {\n const FilterModule = await import('bad-words');\n const voca = await import('voca');\n const Filter = FilterModule.Filter;\n\n if (typeof Filter !== 'function') {\n console.error(\"bad-words: named export 'Filter' is not a constructor:\", FilterModule);\n return;\n }\n\n const filter = new Filter();\n\n const subjectEl = document.querySelector(\"form[name='contact'] input[name='subject']\");\n if (!subjectEl) return;\n\n const topicParam = new URLSearchParams(window.location.search).get('topic') || 'none';\n if (topicParam === 'none') return;\n\n // Clean and truncate\n const cleanedTopic = filter.clean(topicParam).substring(0, 30);\n\n // Title case the cleaned topic\n const titledTopic = voca.default.titleCase(cleanedTopic);\n\n const currentSubject = subjectEl.value || 'none';\n subjectEl.value = currentSubject.concat(\" - \", titledTopic);\n});","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = () => (Promise.resolve());","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkflowbite_pro_marketing_ui_pages\"] = self[\"webpackChunkflowbite_pro_marketing_ui_pages\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [96], () => (__webpack_require__(127)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","themeToggleDarkIcon","document","getElementById","themeToggleLightIcon","localStorage","getItem","window","matchMedia","matches","classList","remove","themeToggleBtn","event","Event","addEventListener","toggle","documentElement","add","setItem","contains","dispatchEvent","colorTheme","$currentYearText","textContent","Date","getFullYear","toggleStickyNavbar","scrollY","navbar","setAttribute","querySelector","plausibleSwitch","plausibleStatus","checked","hidePlausibleBanner","bannerEl","this","removeItem","async","FilterModule","voca","Filter","filter","subjectEl","topicParam","URLSearchParams","location","search","get","cleanedTopic","clean","substring","titledTopic","default","titleCase","currentSubject","value","concat","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","e","Promise","resolve","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","id","chunkLoadingGlobal","self","forEach","bind","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"app.bundle.js","mappings":"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","sources":["webpack:///webpack/runtime/chunk loaded","webpack:///./src/dark-mode.js","webpack:///./src/current-year.js","webpack:///./src/navbar.js","webpack:///./src/plausible-banner.js","webpack:///./src/contact-form.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/ensure chunk","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/jsonp chunk loading","webpack:///webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","const themeToggleDarkIcon = document.getElementById('themeToggleDarkIcon');\nconst themeToggleLightIcon = document.getElementById('themeToggleLightIcon');\n\nif (themeToggleDarkIcon && themeToggleLightIcon) {\n // Change the icons inside the button based on previous settings\n if (localStorage.getItem('color-theme') === 'dark' || (!('color-theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) {\n themeToggleLightIcon.classList.remove('hidden');\n } else {\n themeToggleDarkIcon.classList.remove('hidden');\n }\n}\n\nconst themeToggleBtn = document.getElementById('themeToggle');\n\nlet event = new Event('dark-mode');\n\nif (themeToggleBtn) {\n\n themeToggleBtn.addEventListener('click', function() {\n\n // toggle icons\n themeToggleDarkIcon.classList.toggle('hidden');\n themeToggleLightIcon.classList.toggle('hidden');\n\n // if set via local storage previously\n if (localStorage.getItem('color-theme')) {\n if (localStorage.getItem('color-theme') === 'light') {\n document.documentElement.classList.add('dark');\n localStorage.setItem('color-theme', 'dark');\n } else {\n document.documentElement.classList.remove('dark');\n localStorage.setItem('color-theme', 'light');\n }\n\n // if NOT set via local storage previously\n } else {\n if (document.documentElement.classList.contains('dark')) {\n document.documentElement.classList.remove('dark');\n localStorage.setItem('color-theme', 'light');\n } else {\n document.documentElement.classList.add('dark');\n localStorage.setItem('color-theme', 'dark');\n }\n }\n\n document.dispatchEvent(event);\n \n });\n\n}\n","document.addEventListener('DOMContentLoaded', function () {\n const $currentYearText = document.getElementById('currentYear');\n if ($currentYearText) {\n $currentYearText.textContent = new Date().getFullYear();\n }\n});\n","function toggleStickyNavbar() {\n if (window.scrollY > 0) {\n navbar.setAttribute('data-sticky', 'true');\n } else {\n navbar.setAttribute('data-sticky', 'false');\n }\n}\n\nconst navbar = document.querySelector(\"#mainNavbar\");\n\nif(navbar) {\n toggleStickyNavbar();\n window.addEventListener(\"scroll\", function () {\n toggleStickyNavbar();\n });\n}\n","// Plausible Exclude\nwindow.addEventListener('load', function(){\n var plausibleSwitch = document.getElementById('plausible-switch');\n var plausibleStatus = window.localStorage.getItem('plausible_ignore');\n if (plausibleStatus === null || plausibleStatus === undefined || plausibleStatus === false ){\n plausibleSwitch.checked = true;\n } else {\n plausibleSwitch.checked = false;\n }\n})\n\nwindow.addEventListener('load', function(){\n var hidePlausibleBanner = window.localStorage.getItem('hidePlausibleBanner');\n var bannerEl = document.getElementById('plausible-banner');\n\n if ( hidePlausibleBanner ){\n bannerEl.classList.add('hidden');\n } else {\n bannerEl.classList.remove('hidden');\n }\n})\n\n\ndocument.getElementById('plausible-switch').addEventListener('change', function(){\n if (this.checked) {\n window.localStorage.removeItem('plausible_ignore');\n } else {\n window.localStorage.setItem('plausible_ignore', 'true');\n }\n})\n\ndocument.getElementById('plausible-ok').addEventListener('click', function() {\n var bannerEl = document.getElementById('plausible-banner');\n window.localStorage.setItem('hidePlausibleBanner', 'true');\n bannerEl.classList.add('hidden');\n})\n","/*\nThis grabs a querystring named topic and puts it in the subject of an email via the web form.\n\nIt goes through a few checks prior to inserting it.\n - Filters out bad words\n - Truncates to a maximum of 30 characters\n\nTODO: Optionally check for allowed topics.\n*/\n\nwindow.addEventListener('DOMContentLoaded', async function () {\n const FilterModule = await import('bad-words');\n const voca = await import('voca');\n const Filter = FilterModule.Filter;\n\n if (typeof Filter !== 'function') {\n console.error(\"bad-words: named export 'Filter' is not a constructor:\", FilterModule);\n return;\n }\n\n const filter = new Filter();\n\n const subjectEl = document.querySelector(\"form[name='contact'] input[name='subject']\");\n if (!subjectEl) return;\n\n const topicParam = new URLSearchParams(window.location.search).get('topic') || 'none';\n if (topicParam === 'none') return;\n\n // Clean and truncate\n const cleanedTopic = filter.clean(topicParam).substring(0, 30);\n\n // Title case the cleaned topic\n const titledTopic = voca.default.titleCase(cleanedTopic);\n\n const currentSubject = subjectEl.value || 'none';\n subjectEl.value = currentSubject.concat(\" - \", titledTopic);\n});","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = () => (Promise.resolve());","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkflowbite_pro_marketing_ui_pages\"] = self[\"webpackChunkflowbite_pro_marketing_ui_pages\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [96], () => (__webpack_require__(127)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","themeToggleDarkIcon","document","getElementById","themeToggleLightIcon","localStorage","getItem","window","matchMedia","matches","classList","remove","themeToggleBtn","event","Event","addEventListener","toggle","documentElement","add","setItem","contains","dispatchEvent","$currentYearText","textContent","Date","getFullYear","toggleStickyNavbar","scrollY","navbar","setAttribute","querySelector","plausibleSwitch","plausibleStatus","checked","hidePlausibleBanner","bannerEl","this","removeItem","async","FilterModule","voca","Filter","filter","subjectEl","topicParam","URLSearchParams","location","search","get","cleanedTopic","clean","substring","titledTopic","default","titleCase","currentSubject","value","concat","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","e","Promise","resolve","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","id","chunkLoadingGlobal","self","forEach","bind","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file