{"version":3,"file":"js/lib/bs-theme.js","mappings":"MAyBA,SAASA,IACP,OAAOC,aAAaC,QAAQ,GAADC,OArBD,UAqB4B,iBAAkB,IAC1E,CAEA,SAASC,EAAWC,GAClBJ,aAAaK,QAAQ,GAADH,OAzBM,UAyBqB,eAAeE,EAChE,CAGA,IAAME,EAAYP,KA9BK,OAgCVQ,SAASC,cAAc,QAC/BC,QAAQC,QAAUJ,EACvBH,EAAWG,GAEX,IAAMK,EAAqBJ,SAASC,cAAc,uBAC5CI,EAAOb,IAEb,SAASc,EAAcD,GACR,SAATA,GACFD,EAAmBG,UAAY,6BAC/BH,EAAmBI,UAAUC,OAAO,aACpCL,EAAmBI,UAAUE,IAAI,cAGjCN,EAAmBG,UAAY,8BAC/BH,EAAmBI,UAAUC,OAAO,YACpCL,EAAmBI,UAAUE,IAAI,aAErC,CAaIN,IACFE,EAAcD,GACdD,EAAmBO,iBAAiB,SAbtC,WACE,IAAMC,EAAOZ,SAASC,cAAc,QAE9BI,EAAOO,EAAKV,QAAQC,QACLS,EAAKV,QAAQC,QAArB,SAATE,EAAwC,QAChB,OAE5BC,EAAcM,EAAKV,QAAQC,SAC3BP,EAAWgB,EAAKV,QAAQC,QAC1B,KAOAH,SAASW,iBAAiB,oBAAoB,WAC5C,IAAME,EAAoBb,SAASc,eAAe,sBAC5CC,EAAOf,SAASe,KAEtBF,EAAkBF,iBAAiB,SAAS,WAC1CI,EAAKP,UAAUQ,OAAO,YACxB,IAI6B,SADhBhB,SAASC,cAAc,QAC3BC,QAAQC,QACfY,EAAKP,UAAUE,IAAI,aAEnBK,EAAKP,UAAUC,OAAO,YAE1B,G","sources":["webpack://vp-website/./src/app/lib/bs-theme.js"],"sourcesContent":["// This script is used to change the theme of the website from dark to light and vice versa.\n\n\nconst THEMES = [\"light\", \"dark\"];\nconst PREFERED_THEME = \"dark\";\nconst LOCALSTORAGE_PREFIX = \"bsTheme\"\n\nfunction getPreferredTheme() {\n return PREFERED_THEME;\n}\n\nfunction getOtherTheme() {\n return THEMES.find((theme) => theme !== getPreferredTheme());\n}\n\nfunction getLocalStoragePrefix() {\n return LOCALSTORAGE_PREFIX || \"bsTheme\";\n}\n\nfunction getSystemTheme() {\n const preferdTheme = getPreferredTheme();\n const otherTheme = getOtherTheme();\n return window.matchMedia(`(prefers-color-scheme: ${preferdTheme})`).matches ? preferdTheme : otherTheme;\n}\n\nfunction getStoredTheme() {\n return localStorage.getItem(`${getLocalStoragePrefix()}-theme_mode`) || null;\n};\n\nfunction storeTheme(theme) {\n localStorage.setItem(`${getLocalStoragePrefix()}-theme_mode`, theme);\n}\n\n\nconst themeMode = getStoredTheme() || getPreferredTheme() || getSystemTheme();\n\nconst html = document.querySelector(\"html\");\nhtml.dataset.bsTheme = themeMode;\nstoreTheme(themeMode);\n\nconst triggerThemeChange = document.querySelector(\"#triggerThemeChange\");\nconst mode = getStoredTheme()\n\nfunction setButtonIcon(mode) {\n if (mode === \"dark\") {\n triggerThemeChange.innerHTML = '';\n triggerThemeChange.classList.remove(\"btn-light\");\n triggerThemeChange.classList.add(\"btn-dark\");\n }\n else {\n triggerThemeChange.innerHTML = '';\n triggerThemeChange.classList.remove(\"btn-dark\");\n triggerThemeChange.classList.add(\"btn-light\");\n }\n}\n\nfunction themeChangeHandler() {\n const html = document.querySelector(\"html\");\n\n const mode = html.dataset.bsTheme\n if (mode === \"dark\") html.dataset.bsTheme = \"light\";\n else html.dataset.bsTheme = \"dark\";\n\n setButtonIcon(html.dataset.bsTheme);\n storeTheme(html.dataset.bsTheme);\n}\n\nif (triggerThemeChange) {\n setButtonIcon(mode);\n triggerThemeChange.addEventListener(\"click\", themeChangeHandler);\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const themeToggleButton = document.getElementById('triggerThemeChange');\n const body = document.body;\n\n themeToggleButton.addEventListener('click', () => {\n body.classList.toggle('dark-mode');\n });\n\n // Ensure the dark mode class is applied correctly.\n const html = document.querySelector(\"html\");\n if (html.dataset.bsTheme === 'dark') {\n body.classList.add('dark-mode');\n } else {\n body.classList.remove('dark-mode');\n }\n});\n"],"names":["getStoredTheme","localStorage","getItem","concat","storeTheme","theme","setItem","themeMode","document","querySelector","dataset","bsTheme","triggerThemeChange","mode","setButtonIcon","innerHTML","classList","remove","add","addEventListener","html","themeToggleButton","getElementById","body","toggle"],"sourceRoot":""}