flashlang/src/frontend/popup/popup.ts

50 lines
1 KiB
TypeScript
Raw Normal View History

2020-08-07 13:45:32 +02:00
import { Communicator } from "../../communication";
import "./popup.scss";
const con = new Communicator();
class ExtensionToggle extends HTMLButtonElement {
isON: boolean = false;
textContent: string = "OFF";
public set on(v: boolean) {
if (this.isON == v) {
return;
}
this.isON = v;
this.render();
}
public get on(): boolean {
return this.isON;
}
public render() {
this.textContent = this.on ? "ON" : "OFF";
}
constructor() {
super();
this.addEventListener("click", () => {
this.on = !this.on;
const toggleEvent = new CustomEvent("extensionToggled", {
detail: this.on,
});
this.dispatchEvent(toggleEvent);
});
}
}
customElements.define("extension-toggle", ExtensionToggle, {
extends: "button",
});
const toggle = <ExtensionToggle>(
document.querySelector("button[is=extension-toggle]")
);
toggle.addEventListener("extensionToggled", (e: CustomEvent) =>
Communicator.setEnabled(e.detail)
);
con.setEnabledCallback = (v) => (toggle.on = v);
Communicator.getEnabled().then((v) => (toggle.on = v));