{"version":3,"file":"initDarkmode.js","mappings":"YACA,IAAMA,EAAa,qBACbC,EAAkB,cAClBC,EAAiB,aAEjBC,EAAoBC,OAAOC,YAAcD,OAAOC,WAAW,gCAAgCC,QAE3FC,EAAiBC,SAASC,iBAHR,qBAIlBC,EAAcC,OAAO,qGACrBC,EAAiBD,OAAO,oBACxBE,EAAoBF,OAAO,yCAC3BG,EAAUH,OAAO,oBAMjBI,EAAmB,SAACC,GAAK,OAAKC,aAAaC,QAAQlB,EAAYgB,EAAM,EAGrEG,EAAuB,WAC3BX,SAASY,KAAKC,UAAUC,IAAIpB,GAC5BM,SAASY,KAAKC,UAAUE,OAAOtB,GAyCjC,WACE,IAAMuB,EAAkBd,EAAYe,KAAK,qBACzCf,EAAYe,KAAK,MAAOD,GAExB,IAAME,EAAqBd,EAAea,KAAK,qBAC/Cb,EAAea,KAAK,MAAOC,GAE3B,IAAMC,EAAwBd,EAAkBY,KAAK,wBACrDZ,EAAkBY,KAAK,MAAOE,EAChC,CAjDEC,EACF,EAEMC,EAAwB,WAC5BrB,SAASY,KAAKC,UAAUC,IAAIrB,GAC5BO,SAASY,KAAKC,UAAUE,OAAOrB,GA+CjC,WACE,IAAM4B,EAAiBpB,EAAYe,KAAK,oBACxCf,EAAYe,KAAK,MAAOK,GAExB,IAAMC,EAAoBnB,EAAea,KAAK,oBAC9Cb,EAAea,KAAK,MAAOM,GAE3B,IAAMC,EAAgBnB,EAAkBY,KAAK,uBAC7CZ,EAAkBY,KAAK,MAAOO,EAChC,CAvDEC,EACF,EAGMC,EAAoB,WACxB,IAAMC,EAAmB3B,SAASY,KAAKC,UAAUe,OAAOlC,GAEpDiC,GACFhB,IACAJ,EAAiBb,KAEjB2B,IACAd,EAAiBd,IAGnBM,EAAe8B,SAAQ,SAAAC,GAAI,OAAIA,EAAKjB,UAAUe,OAAO,SAAUD,EAAiB,GAClF,EAqDA5B,EAAe8B,SAAQ,SAAAE,GACrBA,EAAOC,iBAAiB,QAASN,EACnC,IAtF+BjB,aAAawB,QAAQzC,KAqC5BE,GACpBiB,IACAZ,EAAe8B,SAAQ,SAAAC,GAAI,OAAIA,EAAKjB,UAAUC,IAAI,SAAS,KAE3DO,IAgCJ,WACE,GAAI1B,EAAmB,CACrB,IAAMuC,EAAkB5B,EAAQW,KAAK,iBACrCX,EAAQW,KAAK,OAAQiB,EACvB,KAAO,CACL,IAAMC,EAAiB7B,EAAQW,KAAK,gBACpCX,EAAQW,KAAK,OAAQkB,EACvB,CACF,CApCEC,E","sources":["webpack://cabanaboiler/./src/scripts/init-dark-mode.js"],"sourcesContent":["// Constants\r\nconst storageKey = \"colorThemeDarkMode\";\r\nconst lightThemeClass = \"light-theme\";\r\nconst darkThemeClass = \"dark-theme\";\r\nconst themeSelectorId = \".jsDarkmodeToggle\";\r\nconst isDarkSystemTheme = window.matchMedia && window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\r\n\r\nconst themeSelectors = document.querySelectorAll(themeSelectorId);\r\nconst navbrandImg = jQuery(\".header__megamenu-extended .navbar__megamenu-extended .navbar__megamenu__header .navbar-brand img\");\r\nconst footerbrandImg = jQuery(\"footer .logo img\");\r\nconst footerSubbrandImg = jQuery(\"footer .logo img[data-defaultSubLogo]\");\r\nconst favicon = jQuery(\"link[rel='icon']\");\r\n\r\n// Get the theme preference (dark-theme, light-theme, or null)\r\nconst getSelectedTheme = () => localStorage.getItem(storageKey);\r\n\r\n// Set theme helper\r\nconst setSelectedTheme = (theme) => localStorage.setItem(storageKey, theme);\r\n\r\n// Functions to add/remove dark/light theme classes\r\nconst applyDarkModeClasses = () => {\r\n document.body.classList.add(darkThemeClass);\r\n document.body.classList.remove(lightThemeClass);\r\n setDarkmodeLogo();\r\n};\r\n\r\nconst applyLightModeClasses = () => {\r\n document.body.classList.add(lightThemeClass);\r\n document.body.classList.remove(darkThemeClass);\r\n setDefaultLogo();\r\n};\r\n\r\n// Handle theme toggle\r\nconst handleThemeToggle = () => {\r\n const isDarkModeActive = document.body.classList.toggle(darkThemeClass);\r\n\r\n if (isDarkModeActive) {\r\n applyDarkModeClasses();\r\n setSelectedTheme(darkThemeClass);\r\n } else {\r\n applyLightModeClasses();\r\n setSelectedTheme(lightThemeClass);\r\n }\r\n\r\n themeSelectors.forEach(item => item.classList.toggle('active', isDarkModeActive));\r\n};\r\n\r\n// Initialize the theme on mount\r\nconst initializeTheme = () => {\r\n const selectedTheme = getSelectedTheme();\r\n \r\n if (selectedTheme === darkThemeClass) {\r\n applyDarkModeClasses();\r\n themeSelectors.forEach(item => item.classList.add('active'));\r\n } else {\r\n applyLightModeClasses();\r\n }\r\n\r\n // Set favicon based on system dark mode preference\r\n setFaviconBasedOnSystemTheme();\r\n};\r\n\r\n// Set logos and favicon for dark mode\r\nfunction setDarkmodeLogo() {\r\n const darkmodeNavLogo = navbrandImg.attr(\"data-darkmodeLogo\");\r\n navbrandImg.attr(\"src\", darkmodeNavLogo);\r\n\r\n const darkmodeFooterLogo = footerbrandImg.attr(\"data-darkmodeLogo\");\r\n footerbrandImg.attr(\"src\", darkmodeFooterLogo);\r\n\r\n const darkmodeSubFooterLogo = footerSubbrandImg.attr(\"data-darkmodeSubLogo\");\r\n footerSubbrandImg.attr(\"src\", darkmodeSubFooterLogo);\r\n}\r\n\r\n// Set logos and favicon for light mode (default)\r\nfunction setDefaultLogo() {\r\n const defaultNavLogo = navbrandImg.attr(\"data-defaultLogo\");\r\n navbrandImg.attr(\"src\", defaultNavLogo);\r\n\r\n const defaultFooterLogo = footerbrandImg.attr(\"data-defaultLogo\");\r\n footerbrandImg.attr(\"src\", defaultFooterLogo);\r\n\r\n const subFooterLogo = footerSubbrandImg.attr(\"data-defaultSubLogo\");\r\n footerSubbrandImg.attr(\"src\", subFooterLogo);\r\n}\r\n\r\n// Set favicon based on system theme preference\r\nfunction setFaviconBasedOnSystemTheme() {\r\n if (isDarkSystemTheme) {\r\n const darkmodeFavicon = favicon.attr(\"data-darkmode\");\r\n favicon.attr(\"href\", darkmodeFavicon);\r\n } else {\r\n const defaultFavicon = favicon.attr(\"data-default\");\r\n favicon.attr(\"href\", defaultFavicon);\r\n }\r\n}\r\n\r\n// Event listener setup\r\nthemeSelectors.forEach(button => {\r\n button.addEventListener(\"click\", handleThemeToggle);\r\n});\r\n\r\n// Initialize on page load\r\ninitializeTheme();"],"names":["storageKey","lightThemeClass","darkThemeClass","isDarkSystemTheme","window","matchMedia","matches","themeSelectors","document","querySelectorAll","navbrandImg","jQuery","footerbrandImg","footerSubbrandImg","favicon","setSelectedTheme","theme","localStorage","setItem","applyDarkModeClasses","body","classList","add","remove","darkmodeNavLogo","attr","darkmodeFooterLogo","darkmodeSubFooterLogo","setDarkmodeLogo","applyLightModeClasses","defaultNavLogo","defaultFooterLogo","subFooterLogo","setDefaultLogo","handleThemeToggle","isDarkModeActive","toggle","forEach","item","button","addEventListener","getItem","darkmodeFavicon","defaultFavicon","setFaviconBasedOnSystemTheme"],"sourceRoot":""}