44 lines
1.3 KiB
TypeScript
44 lines
1.3 KiB
TypeScript
import { LitElement } from 'lit-element';
|
|
import { DomTools } from './domtools.classes.domtools';
|
|
import * as plugins from './domtools.plugins';
|
|
|
|
export class ThemeManager {
|
|
public domtoolsRef: DomTools;
|
|
|
|
public goBrightBoolean = false;
|
|
|
|
constructor(domtoolsRefArg: DomTools) {
|
|
this.domtoolsRef = domtoolsRefArg;
|
|
this.domtoolsRef.elementInstrumenter.connectedElements.eventSubject.subscribe(async eventData => {
|
|
await this.setThemeStatusForElement(eventData.payload, this.goBrightBoolean);
|
|
});
|
|
}
|
|
|
|
private async setThemeStatusForElement (elementArg: LitElement, goBrightBool: boolean) {
|
|
const goBright = (elementArg as any).goBright;
|
|
if (typeof goBright === 'boolean') {
|
|
(elementArg as any).goBright = goBrightBool;
|
|
}
|
|
}
|
|
|
|
private async updateAllConnectedElements() {
|
|
this.domtoolsRef.elementInstrumenter.forEachelement(async elementArg => {
|
|
await this.setThemeStatusForElement(elementArg, this.goBrightBoolean);
|
|
});
|
|
}
|
|
|
|
public goBright() {
|
|
this.goBrightBoolean = true;
|
|
this.updateAllConnectedElements();
|
|
}
|
|
|
|
public goDark() {
|
|
this.goBrightBoolean = false;
|
|
this.updateAllConnectedElements();
|
|
}
|
|
|
|
public toggleDarkBright() {
|
|
this.goBrightBoolean = !this.goBrightBoolean;
|
|
this.updateAllConnectedElements();
|
|
}
|
|
} |