{"version":3,"file":"theme.js","mappings":"mBAAe,MAAMA,MACjB,iBAAOC,GACHC,KAAKC,SAASD,KAAKE,oBACvB,CACA,kBAAOC,GACH,GAAIC,OAAOC,WAAY,CACnB,MAAMA,EAAaD,OAAOC,WAAW,gCACjCA,EAAWC,kBACXD,EAAWC,iBAAiB,UAAU,KAClC,MAAMC,EAAcP,KAAKQ,iBACL,UAAhBD,GAA2C,SAAhBA,GAC3BP,KAAKC,SAASD,KAAKE,oBACvB,GAGZ,CACAE,OAAOE,iBAAiB,oBAAoB,KACxCN,KAAKS,gBAAgBT,KAAKE,qBAC1BQ,SAASC,iBAAiB,yBACrBC,SAAQC,IACTA,EAAOP,iBAAiB,SAAS,KAC7B,MAAMQ,EAAQD,EAAOE,aAAa,uBAClCf,KAAKgB,eAAeF,GACpBd,KAAKC,SAASa,GACdd,KAAKS,gBAAgBK,GAAO,EAAK,GACnC,GACJ,GAEV,CACA,qBAAON,GACH,OAAOS,aAAaC,QAAQ,QAChC,CACA,qBAAOF,CAAeF,GAClBG,aAAaE,QAAQ,QAASL,EAClC,CACA,wBAAOZ,GACH,MAAMK,EAAcP,KAAKQ,iBACzB,OAAID,IAGCH,OAAOC,YAGLD,OAAOC,WAAW,gCAAgCe,QAAU,OAFxD,QAGf,CACA,eAAOnB,CAASa,GACE,SAAVA,EACAJ,SAASW,gBAAgBC,aAAa,gBAAkBlB,OAAOC,WAAW,gCAAgCe,QAAU,OAAS,SAG7HV,SAASW,gBAAgBC,aAAa,gBAAiBR,EAE/D,CACA,sBAAOL,CAAgBK,EAAOS,GAAQ,GAClC,MAAMC,EAAgBd,SAASe,cAAc,aAC7C,IAAKD,EACD,OAEJ,MAAME,EAAoBhB,SAASe,cAAc,kBAC3CE,EAAcjB,SAASe,cAAc,+BAA+BX,OAC1EJ,SAASC,iBAAiB,+BAA+BC,SAAQgB,IAC7DA,EAAQC,UAAUC,OAAO,UACzBF,EAAQN,aAAa,eAAgB,QAAQ,IAEjDK,EAAYE,UAAUE,IAAI,UAC1BJ,EAAYL,aAAa,eAAgB,QACzC,MAAMU,EAAqB,UAAUL,EAAYM,QAAQC,gBACzDV,EAAcF,aAAa,aAAcU,GACzCN,EAAkBS,UAAYR,EAAYQ,UAAY,SAClDZ,GACAC,EAAcD,OAEtB,EAEJzB,MAAMC,aACND,MAAMK,a","sources":["webpack://logit/./Scripts/Shared/Theme.ts"],"sourcesContent":["export default class Theme {\n static setInitial() {\n this.setTheme(this.getPreferredTheme());\n }\n static setupEvents() {\n if (window.matchMedia) {\n const matchMedia = window.matchMedia('(prefers-color-scheme: dark)');\n if (matchMedia.addEventListener) {\n matchMedia.addEventListener('change', () => {\n const storedTheme = this.getStoredTheme();\n if (storedTheme !== 'light' && storedTheme !== 'dark') {\n this.setTheme(this.getPreferredTheme());\n }\n });\n }\n }\n window.addEventListener('DOMContentLoaded', () => {\n this.showActiveTheme(this.getPreferredTheme());\n document.querySelectorAll('[data-bs-theme-value]')\n .forEach(toggle => {\n toggle.addEventListener('click', () => {\n const theme = toggle.getAttribute('data-bs-theme-value');\n this.setStoredTheme(theme);\n this.setTheme(theme);\n this.showActiveTheme(theme, true);\n });\n });\n });\n }\n static getStoredTheme() {\n return localStorage.getItem('theme');\n }\n static setStoredTheme(theme) {\n localStorage.setItem('theme', theme);\n }\n static getPreferredTheme() {\n const storedTheme = this.getStoredTheme();\n if (storedTheme) {\n return storedTheme;\n }\n if (!window.matchMedia) {\n return 'light';\n }\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n static setTheme(theme) {\n if (theme === 'auto') {\n document.documentElement.setAttribute('data-bs-theme', (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'));\n }\n else {\n document.documentElement.setAttribute('data-bs-theme', theme);\n }\n }\n static showActiveTheme(theme, focus = false) {\n const themeSwitcher = document.querySelector('#bd-theme');\n if (!themeSwitcher) {\n return;\n }\n const themeSwitcherText = document.querySelector('#bd-theme-text');\n const btnToActive = document.querySelector(`button[data-bs-theme-value=\"${theme}\"]`);\n document.querySelectorAll('button[data-bs-theme-value]').forEach(element => {\n element.classList.remove('active');\n element.setAttribute('aria-pressed', 'false');\n });\n btnToActive.classList.add('active');\n btnToActive.setAttribute('aria-pressed', 'true');\n const themeSwitcherLabel = `Theme (${btnToActive.dataset.bsThemeValue})`;\n themeSwitcher.setAttribute('aria-label', themeSwitcherLabel);\n themeSwitcherText.innerHTML = btnToActive.innerHTML + ' Theme';\n if (focus) {\n themeSwitcher.focus();\n }\n }\n}\nTheme.setInitial();\nTheme.setupEvents();\n"],"names":["Theme","setInitial","this","setTheme","getPreferredTheme","setupEvents","window","matchMedia","addEventListener","storedTheme","getStoredTheme","showActiveTheme","document","querySelectorAll","forEach","toggle","theme","getAttribute","setStoredTheme","localStorage","getItem","setItem","matches","documentElement","setAttribute","focus","themeSwitcher","querySelector","themeSwitcherText","btnToActive","element","classList","remove","add","themeSwitcherLabel","dataset","bsThemeValue","innerHTML"],"sourceRoot":""}