1 line
7.2 KiB
JSON
1 line
7.2 KiB
JSON
{"ast":null,"code":"import { DOCUMENT } from '@angular/common';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\nimport * as i0 from \"@angular/core\";\nexport class ColorModeService {\n constructor(rendererFactory, document) {\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 this.themeSubject.next(GetLocalTheme());\n let theme = GetLocalTheme();\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(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":["DOCUMENT","BehaviorSubject","ColorModeService","constructor","rendererFactory","document","themeSubject","GetLocalTheme","themeChanges$","asObservable","renderer","createRenderer","setTheme","theme","localStorage","setItem","updateTheme","next","ThemeChangeSubscribers","forEach","sbc","element","documentElement","Theme","Auto","preferredTheme","window","matchMedia","matches","Dark","Light","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 } 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<Theme>(GetLocalTheme());\r\n public themeChanges$ = this.themeSubject.asObservable();\r\n\r\n constructor(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 this.themeSubject.next(GetLocalTheme());\r\n\r\n let theme: Theme = GetLocalTheme();\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":"AACA,SAASA,QAAQ,QAAQ,iBAAiB;AAC1C,SAASC,eAAe,QAAQ,+BAA+B;;AAK/D,OAAM,MAAOC,gBAAgB;EAO3BC,YAAoBC,eAAiC,EAA2BC,QAAkB;IAA9E,KAAAD,eAAe,GAAfA,eAAe;IAA6C,KAAAC,QAAQ,GAARA,QAAQ;IAHhF,KAAAC,YAAY,GAAG,IAAIL,eAAe,CAAQM,aAAa,EAAE,CAAC;IAC3D,KAAAC,aAAa,GAAG,IAAI,CAACF,YAAY,CAACG,YAAY,EAAE;IAGrD,IAAI,CAACC,QAAQ,GAAGN,eAAe,CAACO,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC;EAC5D;EAEAC,QAAQA,CAACC,KAAY;IACnBC,YAAY,CAACC,OAAO,CAAC,OAAO,EAAEF,KAAK,CAAC;IACpC,IAAI,CAACG,WAAW,EAAE;EACpB;EAEAA,WAAWA,CAAA;IACT,IAAI,CAACV,YAAY,CAACW,IAAI,CAACV,aAAa,EAAE,CAAC;IAEvC,IAAIM,KAAK,GAAUN,aAAa,EAAE;IAElCL,gBAAgB,CAACgB,sBAAsB,CAACC,OAAO,CAACC,GAAG,IAAIA,GAAG,CAACP,KAAK,CAAC,CAAC;IAElE,MAAMQ,OAAO,GAAG,IAAI,CAAChB,QAAQ,CAACiB,eAAe;IAC7C,IAAIT,KAAK,KAAKU,KAAK,CAACC,IAAI,EAAE;MACxB,MAAMC,cAAc,GAAGC,MAAM,CAACC,UAAU,CAAC,8BAA8B,CAAC,CAACC,OAAO,GAAGL,KAAK,CAACM,IAAI,GAAGN,KAAK,CAACO,KAAK;MAC3G,IAAI,CAACpB,QAAQ,CAACqB,YAAY,CAACV,OAAO,EAAE,eAAe,EAAEI,cAAc,CAAC;KACrE,MAAM;MAEL,IAAI,CAACf,QAAQ,CAACqB,YAAY,CAACV,OAAO,EAAE,eAAe,EAAER,KAAK,CAAC;;EAE/D;EAAC,QAAAmB,CAAA,GAEc,KAAAd,sBAAsB,GAAkC,IAAIe,KAAK,EAAE;EAAA,QAAAC,EAAA,G;qBAjCvEhC,gBAAgB,EAAAiC,EAAA,CAAAC,QAAA,CAAAD,EAAA,CAAAE,gBAAA,GAAAF,EAAA,CAAAC,QAAA,CAOoCpC,QAAQ;EAAA;EAAA,QAAAsC,EAAA,G;WAP5DpC,gBAAgB;IAAAqC,OAAA,EAAhBrC,gBAAgB,CAAAsC,IAAA;IAAAC,UAAA,EAFf;EAAM;;AAsCpB,WAAYlB,KAIX;AAJD,WAAYA,KAAK;EACfA,KAAA,iBAAa;EACbA,KAAA,mBAAe;EACfA,KAAA,iBAAa;AACf,CAAC,EAJWA,KAAK,KAALA,KAAK;AAMjB,OAAO,MAAMmB,UAAU,GAA0CC,KAAa,IAAI;EAChF,QAAQA,KAAK;IACX,KAAKpB,KAAK,CAACM,IAAI;MACb,OAAON,KAAK,CAACM,IAAI;IACnB,KAAKN,KAAK,CAACO,KAAK;MACd,OAAOP,KAAK,CAACO,KAAK;IACpB,KAAKP,KAAK,CAACC,IAAI;MACb,OAAOD,KAAK,CAACC,IAAI;IACnB;MACE,OAAOoB,SAAS;;AAEtB,CAAC;AAED,OAAM,SAAUrC,aAAaA,CAAA;EAC3B,IAAIsC,MAAM,GAAkB/B,YAAY,CAACgC,OAAO,CAAC,OAAO,CAAC;EAEzD,IAAID,MAAM,KAAK,IAAI,EACjB,OAAOtB,KAAK,CAACM,IAAI;EAEnB,OAAOa,UAAU,CAACG,MAAM,CAAC,IAAItB,KAAK,CAACM,IAAI;AACzC;AAEA,OAAO,MAAMkB,kBAAkB,GAAGA,CAAA,KAAMrB,MAAM,CAACC,UAAU,CAAC,8BAA8B,CAAC,CAACC,OAAO,GAAGL,KAAK,CAACM,IAAI,GAAGN,KAAK,CAACO,KAAK","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]} |