/*! ***************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */ function __decorate(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; } /** * @license * Copyright 2019 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ const t$2=window.ShadowRoot&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,e$3=Symbol(),n$4=new Map;class s$3{constructor(t,n){if(this._$cssResult$=!0,n!==e$3)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t;}get styleSheet(){let e=n$4.get(this.cssText);return t$2&&void 0===e&&(n$4.set(this.cssText,e=new CSSStyleSheet),e.replaceSync(this.cssText)),e}toString(){return this.cssText}}const o$3=t=>new s$3("string"==typeof t?t:t+"",e$3),r$2=(t,...n)=>{const o=1===t.length?t[0]:n.reduce(((e,n,s)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(n)+t[s+1]),t[0]);return new s$3(o,e$3)},i$2=(e,n)=>{t$2?e.adoptedStyleSheets=n.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):n.forEach((t=>{const n=document.createElement("style"),s=window.litNonce;void 0!==s&&n.setAttribute("nonce",s),n.textContent=t.cssText,e.appendChild(n);}));},S$1=t$2?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const n of t.cssRules)e+=n.cssText;return o$3(e)})(t):t; /** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause */var s$2;const e$2=window.trustedTypes,r$1=e$2?e$2.emptyScript:"",h$1=window.reactiveElementPolyfillSupport,o$2={toAttribute(t,i){switch(i){case Boolean:t=t?r$1:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t);}return t},fromAttribute(t,i){let s=t;switch(i){case Boolean:s=null!==t;break;case Number:s=null===t?null:Number(t);break;case Object:case Array:try{s=JSON.parse(t);}catch(t){s=null;}}return s}},n$3=(t,i)=>i!==t&&(i==i||t==t),l$2={attribute:!0,type:String,converter:o$2,reflect:!1,hasChanged:n$3};class a$1 extends HTMLElement{constructor(){super(),this._$Et=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Ei=null,this.o();}static addInitializer(t){var i;null!==(i=this.l)&&void 0!==i||(this.l=[]),this.l.push(t);}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach(((i,s)=>{const e=this._$Eh(s,i);void 0!==e&&(this._$Eu.set(e,s),t.push(e));})),t}static createProperty(t,i=l$2){if(i.state&&(i.attribute=!1),this.finalize(),this.elementProperties.set(t,i),!i.noAccessor&&!this.prototype.hasOwnProperty(t)){const s="symbol"==typeof t?Symbol():"__"+t,e=this.getPropertyDescriptor(t,s,i);void 0!==e&&Object.defineProperty(this.prototype,t,e);}}static getPropertyDescriptor(t,i,s){return {get(){return this[i]},set(e){const r=this[t];this[i]=e,this.requestUpdate(t,r,s);},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||l$2}static finalize(){if(this.hasOwnProperty("finalized"))return !1;this.finalized=!0;const t=Object.getPrototypeOf(this);if(t.finalize(),this.elementProperties=new Map(t.elementProperties),this._$Eu=new Map,this.hasOwnProperty("properties")){const t=this.properties,i=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const s of i)this.createProperty(s,t[s]);}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(i){const s=[];if(Array.isArray(i)){const e=new Set(i.flat(1/0).reverse());for(const i of e)s.unshift(S$1(i));}else void 0!==i&&s.push(S$1(i));return s}static _$Eh(t,i){const s=i.attribute;return !1===s?void 0:"string"==typeof s?s:"string"==typeof t?t.toLowerCase():void 0}o(){var t;this._$Ep=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$Em(),this.requestUpdate(),null===(t=this.constructor.l)||void 0===t||t.forEach((t=>t(this)));}addController(t){var i,s;(null!==(i=this._$Eg)&&void 0!==i?i:this._$Eg=[]).push(t),void 0!==this.renderRoot&&this.isConnected&&(null===(s=t.hostConnected)||void 0===s||s.call(t));}removeController(t){var i;null===(i=this._$Eg)||void 0===i||i.splice(this._$Eg.indexOf(t)>>>0,1);}_$Em(){this.constructor.elementProperties.forEach(((t,i)=>{this.hasOwnProperty(i)&&(this._$Et.set(i,this[i]),delete this[i]);}));}createRenderRoot(){var t;const s=null!==(t=this.shadowRoot)&&void 0!==t?t:this.attachShadow(this.constructor.shadowRootOptions);return i$2(s,this.constructor.elementStyles),s}connectedCallback(){var t;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostConnected)||void 0===i?void 0:i.call(t)}));}enableUpdating(t){}disconnectedCallback(){var t;null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostDisconnected)||void 0===i?void 0:i.call(t)}));}attributeChangedCallback(t,i,s){this._$AK(t,s);}_$ES(t,i,s=l$2){var e,r;const h=this.constructor._$Eh(t,s);if(void 0!==h&&!0===s.reflect){const n=(null!==(r=null===(e=s.converter)||void 0===e?void 0:e.toAttribute)&&void 0!==r?r:o$2.toAttribute)(i,s.type);this._$Ei=t,null==n?this.removeAttribute(h):this.setAttribute(h,n),this._$Ei=null;}}_$AK(t,i){var s,e,r;const h=this.constructor,n=h._$Eu.get(t);if(void 0!==n&&this._$Ei!==n){const t=h.getPropertyOptions(n),l=t.converter,a=null!==(r=null!==(e=null===(s=l)||void 0===s?void 0:s.fromAttribute)&&void 0!==e?e:"function"==typeof l?l:null)&&void 0!==r?r:o$2.fromAttribute;this._$Ei=n,this[n]=a(i,t.type),this._$Ei=null;}}requestUpdate(t,i,s){let e=!0;void 0!==t&&(((s=s||this.constructor.getPropertyOptions(t)).hasChanged||n$3)(this[t],i)?(this._$AL.has(t)||this._$AL.set(t,i),!0===s.reflect&&this._$Ei!==t&&(void 0===this._$EC&&(this._$EC=new Map),this._$EC.set(t,s))):e=!1),!this.isUpdatePending&&e&&(this._$Ep=this._$E_());}async _$E_(){this.isUpdatePending=!0;try{await this._$Ep;}catch(t){Promise.reject(t);}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Et&&(this._$Et.forEach(((t,i)=>this[i]=t)),this._$Et=void 0);let i=!1;const s=this._$AL;try{i=this.shouldUpdate(s),i?(this.willUpdate(s),null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostUpdate)||void 0===i?void 0:i.call(t)})),this.update(s)):this._$EU();}catch(t){throw i=!1,this._$EU(),t}i&&this._$AE(s);}willUpdate(t){}_$AE(t){var i;null===(i=this._$Eg)||void 0===i||i.forEach((t=>{var i;return null===(i=t.hostUpdated)||void 0===i?void 0:i.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t);}_$EU(){this._$AL=new Map,this.isUpdatePending=!1;}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$Ep}shouldUpdate(t){return !0}update(t){void 0!==this._$EC&&(this._$EC.forEach(((t,i)=>this._$ES(i,this[i],t))),this._$EC=void 0),this._$EU();}updated(t){}firstUpdated(t){}}a$1.finalized=!0,a$1.elementProperties=new Map,a$1.elementStyles=[],a$1.shadowRootOptions={mode:"open"},null==h$1||h$1({ReactiveElement:a$1}),(null!==(s$2=globalThis.reactiveElementVersions)&&void 0!==s$2?s$2:globalThis.reactiveElementVersions=[]).push("1.3.1"); /** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ var t$1;const i$1=globalThis.trustedTypes,s$1=i$1?i$1.createPolicy("lit-html",{createHTML:t=>t}):void 0,e$1=`lit$${(Math.random()+"").slice(9)}$`,o$1="?"+e$1,n$2=`<${o$1}>`,l$1=document,h=(t="")=>l$1.createComment(t),r=t=>null===t||"object"!=typeof t&&"function"!=typeof t,d=Array.isArray,u=t=>{var i;return d(t)||"function"==typeof(null===(i=t)||void 0===i?void 0:i[Symbol.iterator])},c=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,v=/-->/g,a=/>/g,f=/>|[ \n \r](?:([^\s"'>=/]+)([ \n \r]*=[ \n \r]*(?:[^ \n \r"'`<>=]|("|')|))|$)/g,_=/'/g,m=/"/g,g=/^(?:script|style|textarea|title)$/i,p=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),$=p(1),b=Symbol.for("lit-noChange"),w=Symbol.for("lit-nothing"),T=new WeakMap,x=(t,i,s)=>{var e,o;const n=null!==(e=null==s?void 0:s.renderBefore)&&void 0!==e?e:i;let l=n._$litPart$;if(void 0===l){const t=null!==(o=null==s?void 0:s.renderBefore)&&void 0!==o?o:null;n._$litPart$=l=new N(i.insertBefore(h(),t),t,void 0,null!=s?s:{});}return l._$AI(t),l},A=l$1.createTreeWalker(l$1,129,null,!1),C=(t,i)=>{const o=t.length-1,l=[];let h,r=2===i?"":"",d=c;for(let i=0;i"===u[0]?(d=null!=h?h:c,p=-1):void 0===u[1]?p=-2:(p=d.lastIndex-u[2].length,o=u[1],d=void 0===u[3]?f:'"'===u[3]?m:_):d===m||d===_?d=f:d===v||d===a?d=c:(d=f,h=void 0);const y=d===f&&t[i+1].startsWith("/>")?" ":"";r+=d===c?s+n$2:p>=0?(l.push(o),s.slice(0,p)+"$lit$"+s.slice(p)+e$1+y):s+e$1+(-2===p?(l.push(void 0),i):y);}const u=r+(t[o]||"")+(2===i?"":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return [void 0!==s$1?s$1.createHTML(u):u,l]};class E{constructor({strings:t,_$litType$:s},n){let l;this.parts=[];let r=0,d=0;const u=t.length-1,c=this.parts,[v,a]=C(t,s);if(this.el=E.createElement(v,n),A.currentNode=this.el.content,2===s){const t=this.el.content,i=t.firstChild;i.remove(),t.append(...i.childNodes);}for(;null!==(l=A.nextNode())&&c.length0){l.textContent=i$1?i$1.emptyScript:"";for(let i=0;i2||""!==s[0]||""!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=w;}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,i=this,s,e){const o=this.strings;let n=!1;if(void 0===o)t=P(this,t,i,0),n=!r(t)||t!==this._$AH&&t!==b,n&&(this._$AH=t);else {const e=t;let l,h;for(t=o[0],l=0;l"method"===e.kind&&e.descriptor&&!("value"in e.descriptor)?{...e,finisher(n){n.createProperty(e.key,i);}}:{kind:"field",key:Symbol(),placement:"own",descriptor:{},originalKey:e.key,initializer(){"function"==typeof e.initializer&&(this[e.key]=e.initializer.call(this));},finisher(n){n.createProperty(e.key,i);}};function e(e){return (n,t)=>void 0!==t?((i,e,n)=>{e.constructor.createProperty(n,i);})(e,n,t):i(e,n)} /** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause */function t(t){return e({...t,state:!0})} /** * @license * Copyright 2021 Google LLC * SPDX-License-Identifier: BSD-3-Clause */var n;null!=(null===(n=window.HTMLSlotElement)||void 0===n?void 0:n.prototype.assignedElements)?(o,n)=>o.assignedElements(n):(o,n)=>o.assignedNodes(n).filter((o=>o.nodeType===Node.ELEMENT_NODE)); // Loads in ha-config-dashboard which is used to copy styling // Also provides ha-settings-row const loadDevTools = async () => { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l; if (customElements.get("ha-config-dashboard")) return; await customElements.whenDefined("partial-panel-resolver"); const ppResolver = document.createElement("partial-panel-resolver"); const routes = ppResolver.getRoutes([ { component_name: "config", url_path: "a", }, ]); await ((_c = (_b = (_a = routes === null || routes === void 0 ? void 0 : routes.routes) === null || _a === void 0 ? void 0 : _a.a) === null || _b === void 0 ? void 0 : _b.load) === null || _c === void 0 ? void 0 : _c.call(_b)); await customElements.whenDefined("ha-panel-config"); const configRouter = document.createElement("ha-panel-config"); await ((_g = (_f = (_e = (_d = configRouter === null || configRouter === void 0 ? void 0 : configRouter.routerOptions) === null || _d === void 0 ? void 0 : _d.routes) === null || _e === void 0 ? void 0 : _e.dashboard) === null || _f === void 0 ? void 0 : _f.load) === null || _g === void 0 ? void 0 : _g.call(_f)); // Load ha-config-dashboard await ((_l = (_k = (_j = (_h = configRouter === null || configRouter === void 0 ? void 0 : configRouter.routerOptions) === null || _h === void 0 ? void 0 : _h.routes) === null || _j === void 0 ? void 0 : _j.cloud) === null || _k === void 0 ? void 0 : _k.load) === null || _l === void 0 ? void 0 : _l.call(_k)); // Load ha-settings-row await customElements.whenDefined("ha-config-dashboard"); }; class BrowserModSettingsCard extends s { constructor() { super(...arguments); this._selectedTab = 0; } firstUpdated() { window.browser_mod.addEventListener("browser-mod-config-update", () => this.requestUpdate()); } _handleSwitchTab(ev) { this._selectedTab = parseInt(ev.detail.index, 10); } render() { const level = ["browser", "user", "global"][this._selectedTab]; return $ `
${this._render_settings(level)}
`; } _render_settings(level) { const global = window.browser_mod.global_settings; const user = window.browser_mod.user_settings; const browser = window.browser_mod.browser_settings; const current = { global, user, browser }[level]; const DESC_BOOLEAN = (val) => ({ true: "Enabled", false: "Disabled", undefined: "unset" }[String(val)]); const DESC_SET_UNSET = (val) => (val === undefined ? "Unset" : "Set"); const OVERRIDDEN = (key) => { if (level !== "browser" && browser[key] !== undefined) return $ `
Overridden by browser setting`; if (level === "global" && user[key] !== undefined) return $ `
Overridden by user setting`; }; return $ ` Kiosk mode Hide sidebar and header Currenty: ${DESC_BOOLEAN(current.kiosk)} ${OVERRIDDEN("kiosk")} window.browser_mod.set_setting("kiosk", true, level)} > Enable window.browser_mod.set_setting("kiosk", false, level)} > Disable window.browser_mod.set_setting("kiosk", undefined, level)} > Clear Sidebar order Order and visibility of sidebar buttons Currenty: ${DESC_SET_UNSET(current.sidebarPanelOrder)} ${OVERRIDDEN("sidebarPanelOrder")} { window.browser_mod.set_setting("sidebarPanelOrder", localStorage.getItem("sidebarPanelOrder"), level); window.browser_mod.set_setting("sidebarHiddenPanels", localStorage.getItem("sidebarHiddenPanels"), level); }} > Set { window.browser_mod.set_setting("sidebarPanelOrder", undefined, level); window.browser_mod.set_setting("sidebarHiddenPanels", undefined, level); }} > Clear `; } _render_user() { return $ ` User Kiosk mode Hide sidebar and header Currenty: Overridden Set screensaver Set screensaver card Enable Disable Clear `; } _render_browser() { return $ ` Browser Kiosk mode Hide sidebar and header Currenty: Overridden Set screensaver Set screensaver card Enable Disable Clear `; } } __decorate([ e() ], BrowserModSettingsCard.prototype, "hass", void 0); __decorate([ t() ], BrowserModSettingsCard.prototype, "_selectedTab", void 0); customElements.define("browser-mod-settings-card", BrowserModSettingsCard); const bmWindow = window; loadDevTools().then(() => { class BrowserModPanel extends s { constructor() { super(...arguments); this.dirty = false; } toggleRegister() { var _a; if (!((_a = window.browser_mod) === null || _a === void 0 ? void 0 : _a.connected)) return; window.browser_mod.registered = !window.browser_mod.registered; this.dirty = true; } changeBrowserID(ev) { window.browser_mod.browserID = ev.target.value; this.dirty = true; } toggleCameraEnabled() { window.browser_mod.cameraEnabled = !window.browser_mod.cameraEnabled; this.dirty = true; } unregister_browser(ev) { const browserID = ev.currentTarget.browserID; const unregisterCallback = () => { console.log(browserID, window.browser_mod.browserID); if (browserID === window.browser_mod.browserID) { console.log("Unregister self"); window.browser_mod.registered = false; } else { window.browser_mod.connection.sendMessage({ type: "browser_mod/unregister", browserID, }); } }; window.browser_mod.showPopup("Unregister browser", `Are you sure you want to unregister browser ${browserID}?`, { right_button: "Yes", right_button_action: unregisterCallback, left_button: "No", }); } firstUpdated() { window.browser_mod.addEventListener("browser-mod-config-update", () => this.requestUpdate()); } getFullySettings() { if (!window.browser_mod.fully) return null; const retval = []; const wcs = []; // Web Content Settings // Autoplay Videos if (window.fully.getBooleanSetting("autoplayVideos") !== "true") wcs.push($ `
  • Autoplay Videos
  • `); // Autoplay Audio if (window.fully.getBooleanSetting("autoplayAudio") !== "true") wcs.push($ `
  • Autoplay Audio
  • `); // Enable Webcam Access (PLUS) if (window.fully.getBooleanSetting("webcamAccess") !== "true") wcs.push($ `
  • Enable Webcam Access (PLUS)
  • `); if (wcs.length !== 0) { retval.push($ `
  • Web Content Settings
    • ${wcs}
    `); } // Advanced Web Settings // Enable JavaScript Interface (PLUS) if (window.fully.getBooleanSetting("websiteIntegration") !== "true") retval.push($ `
  • Advanced Web Settings
    • Enable JavaScript Interface (PLUS)
    `); // Device Management // Keep Screen On if (window.fully.getBooleanSetting("keepScreenOn") !== "true") retval.push($ `
  • Device Management
    • Keep Screen On
    `); // Power Settings // Prevent from Sleep while Screen Off if (window.fully.getBooleanSetting("preventSleepWhileScreenOff") !== "true") retval.push($ `
  • Power Settings
    • Prevent from Sleep while Screen Off
    `); const md = []; // Motion Detection (PLUS) // Enable Visual Motion Detection if (window.fully.getBooleanSetting("motionDetection") !== "true") md.push($ `
  • Enable Visual Motion Detection
  • `); // Turn Screen On on Motion if (window.fully.getBooleanSetting("screenOnOnMotion") !== "true") md.push($ `
  • Turn Screen On on Motion
  • `); // Exit Screensaver on Motion if (window.fully.getBooleanSetting("stopScreensaverOnMotion") !== "true") md.push($ `
  • Exit Screensaver on Motion
  • `); if (md.length !== 0) { retval.push($ `
  • Motion Detection (PLUS)
    • ${md}
    `); } // Remote Administration (PLUS) // Enable Remote Administration if (window.fully.getBooleanSetting("remoteAdmin") !== "true") retval.push($ `
  • Remote Administration (PLUS)
    • Enable Remote Administration
    `); return retval.length ? retval : null; } render() { var _a, _b, _c, _d, _e, _f; return $ `
    Browser Mod Settings

    This Browser
    ${((_a = bmWindow.browser_mod) === null || _a === void 0 ? void 0 : _a.connected) ? $ ` ` : $ ` `}

    Settings that apply to this browser.

    ${this.dirty ? $ ` It is strongly recommended to refresh your browser window after changing any of the settings in this box. ` : ""}
    Enable Enable this browser as a Device in Home Assistant BrowserID A unique identifier for this browser-device combination. ${((_d = window.browser_mod) === null || _d === void 0 ? void 0 : _d.registered) ? $ ` ${this.hass.suspendWhenHidden ? $ ` Home Assistant will close the websocket connection to the server automatically after 5 minutes of inactivity.

    While decreasing network trafic and memory usage, this may cause problems for browser_mod operation.

    If you find that some things stop working for this Browser after a time, try going to your Profile Settings and disabling the option "${this.hass.localize("ui.panel.profile.suspend.header") || "Automatically close connection"}".
    ` : ""} Enable camera Get camera input from this browser (hardware dependent) For security reasons many browsers require the user to interact with a webpage before allowing audio playback or video capture. This may affect the media_player and camera components of Browser Mod.

    If you ever see a symbol at the bottom right corner of the screen, please tap or click anywhere on the page. This should allow Browser Mod to work again.
    ${((_f = window.browser_mod) === null || _f === void 0 ? void 0 : _f.fully) && this.getFullySettings() ? $ ` You are using FullyKiosk Browser. It is recommended to enable the following settings:
      ${this.getFullySettings()}
    ` : ""} ` : ""}
    ${Object.keys(window.browser_mod.browsers).map((d) => $ ` ${d} Last connected: `)}
    `; } static get styles() { var _a, _b; return [ ...((_b = (_a = customElements.get("ha-config-dashboard")) === null || _a === void 0 ? void 0 : _a.styles) !== null && _b !== void 0 ? _b : []), r$2 ` :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; } `, ]; } } __decorate([ e() ], BrowserModPanel.prototype, "hass", void 0); __decorate([ e() ], BrowserModPanel.prototype, "narrow", void 0); __decorate([ e() ], BrowserModPanel.prototype, "connection", void 0); __decorate([ e() ], BrowserModPanel.prototype, "dirty", void 0); customElements.define("browser-mod-panel", BrowserModPanel); });