1 line
2.9 KiB
JSON
1 line
2.9 KiB
JSON
{"ast":null,"code":"import { PLATFORM_ID } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\nimport * as i0 from \"@angular/core\";\nexport class ColorModeService {\n constructor(platformId, rendererFactory, document) {\n this.platformId = platformId;\n this.rendererFactory = rendererFactory;\n this.document = document;\n this.themeSubject = new BehaviorSubject(GetLocalTheme());\n this.themeChanges$ = this.themeSubject.asObservable();\n this.renderer = rendererFactory.createRenderer(null, null);\n }\n setTheme(theme) {\n localStorage.setItem('theme', theme);\n this.updateTheme();\n }\n updateTheme() {\n let theme = GetLocalTheme();\n this.themeSubject.next(GetLocalTheme());\n this.themeSubject.next(GetLocalTheme());\n switch (theme) {\n case Theme.Dark:\n case Theme.Auto:\n this.renderer.addClass(this.document.body, \"mat-color-scheme-dark\");\n this.renderer.removeClass(this.document.body, \"mat-color-scheme-light\");\n break;\n case Theme.Light:\n this.renderer.addClass(this.document.body, \"mat-color-scheme-light\");\n this.renderer.removeClass(this.document.body, \"mat-color-scheme-dark\");\n break;\n }\n ColorModeService.ThemeChangeSubscribers.forEach(sbc => sbc(theme));\n const element = this.document.documentElement;\n if (theme === Theme.Auto) {\n const preferredTheme = window.matchMedia('(prefers-color-scheme: dark)').matches ? Theme.Dark : Theme.Light;\n this.renderer.setAttribute(element, 'data-bs-theme', preferredTheme);\n } else {\n this.renderer.setAttribute(element, 'data-bs-theme', theme);\n }\n }\n static #_ = this.ThemeChangeSubscribers = new Array();\n static #_2 = this.ɵfac = function ColorModeService_Factory(t) {\n return new (t || ColorModeService)(i0.ɵɵinject(PLATFORM_ID), i0.ɵɵinject(i0.RendererFactory2), i0.ɵɵinject(DOCUMENT));\n };\n static #_3 = this.ɵprov = /*@__PURE__*/i0.ɵɵdefineInjectable({\n token: ColorModeService,\n factory: ColorModeService.ɵfac,\n providedIn: 'root'\n });\n}\nexport var Theme = /*#__PURE__*/function (Theme) {\n Theme[\"Dark\"] = \"dark\";\n Theme[\"Light\"] = \"light\";\n Theme[\"Auto\"] = \"auto\";\n return Theme;\n}(Theme || {});\nexport const ParseTheme = value => {\n switch (value) {\n case Theme.Dark:\n return Theme.Dark;\n case Theme.Light:\n return Theme.Light;\n case Theme.Auto:\n return Theme.Auto;\n default:\n return undefined;\n }\n};\nexport function GetLocalTheme() {\n let sTheme = localStorage.getItem('theme');\n if (sTheme === null) return Theme.Dark;\n return ParseTheme(sTheme) ?? Theme.Dark;\n}\nexport const GetWinDefaultTheme = () => window.matchMedia('(prefers-color-scheme: dark)').matches ? Theme.Dark : Theme.Light;","map":null,"metadata":{},"sourceType":"module","externalDependencies":[]} |