import { LitElement, html, css } from "lit"; import { property } from "lit/decorators.js"; import { loadDevTools } from "./helpers"; const bmWindow = window as any; loadDevTools().then(() => { class BrowserModPanel extends LitElement { @property() hass; @property() narrow; @property() connection; toggleRegister() { if (!window.browser_mod?.connected) return; window.browser_mod.registered = !window.browser_mod.registered; } changeDeviceID(ev) { window.browser_mod.deviceID = ev.target.value; } toggleCameraEnabled() { window.browser_mod.cameraEnabled = !window.browser_mod.cameraEnabled; } unregister_device(ev) { const deviceID = ev.currentTarget.deviceID; const unregisterCallback = () => { console.log(deviceID, window.browser_mod.deviceID); if (deviceID === window.browser_mod.deviceID) { console.log("Unregister self"); window.browser_mod.registered = false; } else { window.browser_mod.connection.sendMessage({ type: "browser_mod/unregister", deviceID, }); } }; window.browser_mod.showPopup( "Unregister device", `Are you sure you want to unregister device ${deviceID}?`, { dismissable: false, primary_action: { label: "Yes", callback: unregisterCallback, }, secondary_action: { label: "No", }, } ); } firstUpdated() { window.browser_mod.addEventListener("browser-mod-config-update", () => this.requestUpdate() ); } render() { return html`
Browser Mod Settings

This Browser
${bmWindow.browser_mod?.connected ? html` ` : html` `}

Settings that apply to this browser.

It is strongly recommended to refresh your browser window after any change to those settings.

Enable Enable this browser as a Device in Home Assistant DeviceID A unique identifier for this browser-device combination. Enable camera Get camera input from this device (hardware dependent)
${Object.keys(window.browser_mod.devices).map( (d) => html` ${d} Last connected: ` )}
User sidebar Save sidebar as default for current user (${this.hass.user.name}) Save Global sidebar Save sidebar as default for all users Save
`; } static get styles() { return [ ...((customElements.get("ha-config-dashboard") as any)?.styles ?? []), css` :host { --app-header-background-color: var(--sidebar-background-color); --app-header-text-color: var(--sidebar-text-color); --app-header-border-bottom: 1px solid var(--divider-color); --ha-card-border-radius: var(--ha-config-card-border-radius, 8px); } .card-header { display: flex; justify-content: space-between; } .card-actions { display: flex; } .spacer { flex-grow: 1; } ha-textfield { width: 250px; display: block; margin-top: 8px; } .option { display: flex; margin-top: 16px; } .option h3 { flex-grow: 1; margin: 0; } .option ha-switch { margin-top: 0.25em; margin-right: 7px; margin-left: 0.5em; } ha-icon-button > * { display: flex; } `, ]; } } customElements.define("browser-mod-panel", BrowserModPanel); });