{"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;\n(function (Theme) {\n Theme[\"Dark\"] = \"dark\";\n Theme[\"Light\"] = \"light\";\n Theme[\"Auto\"] = \"auto\";\n})(Theme || (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":{"version":3,"names":["PLATFORM_ID","DOCUMENT","BehaviorSubject","ColorModeService","constructor","platformId","rendererFactory","document","themeSubject","GetLocalTheme","themeChanges$","asObservable","renderer","createRenderer","setTheme","theme","localStorage","setItem","updateTheme","next","Theme","Dark","Auto","addClass","body","removeClass","Light","ThemeChangeSubscribers","forEach","sbc","element","documentElement","preferredTheme","window","matchMedia","matches","setAttribute","_","Array","_2","i0","ɵɵinject","RendererFactory2","_3","factory","ɵfac","providedIn","ParseTheme","value","undefined","sTheme","getItem","GetWinDefaultTheme"],"sources":["E:\\TekH\\Visual Studio\\WebUserManager\\DigitalData.UserManager.NgWebUI\\ClientApp\\src\\app\\services\\color-mode.service.ts"],"sourcesContent":["import { Injectable, Inject, Renderer2, RendererFactory2, PLATFORM_ID } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ColorModeService {\r\n\r\n private readonly renderer: Renderer2;\r\n\r\n private themeSubject = new BehaviorSubject(GetLocalTheme());\r\n public themeChanges$ = this.themeSubject.asObservable();\r\n\r\n constructor(@Inject(PLATFORM_ID) private platformId: object, private rendererFactory: RendererFactory2, @Inject(DOCUMENT) public document: Document) {\r\n this.renderer = rendererFactory.createRenderer(null, null);\r\n }\r\n\r\n setTheme(theme: Theme) {\r\n localStorage.setItem('theme', theme)\r\n this.updateTheme();\r\n }\r\n\r\n updateTheme() {\r\n let theme: Theme = GetLocalTheme();\r\n\r\n this.themeSubject.next(GetLocalTheme());\r\n\r\n this.themeSubject.next(GetLocalTheme());\r\n\r\n switch(theme) {\r\n case Theme.Dark: \r\n case Theme.Auto:\r\n this.renderer.addClass(this.document.body, \"mat-color-scheme-dark\")\r\n this.renderer.removeClass(this.document.body, \"mat-color-scheme-light\")\r\n break;\r\n case Theme.Light:\r\n this.renderer.addClass(this.document.body, \"mat-color-scheme-light\")\r\n this.renderer.removeClass(this.document.body, \"mat-color-scheme-dark\")\r\n break;\r\n }\r\n \r\n\r\n ColorModeService.ThemeChangeSubscribers.forEach(sbc => sbc(theme));\r\n\r\n const element = this.document.documentElement;\r\n if (theme === Theme.Auto) {\r\n const preferredTheme = window.matchMedia('(prefers-color-scheme: dark)').matches ? Theme.Dark : Theme.Light;\r\n this.renderer.setAttribute(element, 'data-bs-theme', preferredTheme);\r\n } else {\r\n\r\n this.renderer.setAttribute(element, 'data-bs-theme', theme);\r\n }\r\n }\r\n\r\n private static ThemeChangeSubscribers: Array<(theme: Theme) => void> = new Array();\r\n}\r\n\r\nexport enum Theme {\r\n Dark = 'dark',\r\n Light = 'light',\r\n Auto = 'auto'\r\n}\r\n\r\nexport const ParseTheme: (value: string) => Theme | undefined = (value: string) => {\r\n switch (value) {\r\n case Theme.Dark:\r\n return Theme.Dark;\r\n case Theme.Light:\r\n return Theme.Light;\r\n case Theme.Auto:\r\n return Theme.Auto;\r\n default:\r\n return undefined;\r\n }\r\n}\r\n\r\nexport function GetLocalTheme(): Theme {\r\n let sTheme: string | null = localStorage.getItem('theme');\r\n\r\n if (sTheme === null)\r\n return Theme.Dark;\r\n\r\n return ParseTheme(sTheme) ?? Theme.Dark;\r\n}\r\n\r\nexport const GetWinDefaultTheme = () => window.matchMedia('(prefers-color-scheme: dark)').matches ? Theme.Dark : Theme.Light;"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}