class WallPanelPanel extends HTMLElement { constructor() { super(); this._hass = null; this._panel = null; this._narrow = false; this.attachShadow({ mode: 'open' }); } set hass(hass) { this._hass = hass; this._render(); } set panel(panel) { this._panel = panel; this._render(); } set narrow(narrow) { this._narrow = Boolean(narrow); this._render(); } connectedCallback() { this._render(); } _resolveUrl(rawUrl) { const value = String(rawUrl || '').trim(); if (!value) { return ''; } try { const url = new URL(value, window.location.href); if (!url.searchParams.has('embed')) { url.searchParams.set('embed', '1'); } if (!url.searchParams.has('mode')) { url.searchParams.set('mode', 'ha'); } return url.toString(); } catch (error) { return value; } } _render() { if (!this.shadowRoot) { return; } const config = this._panel?.config || {}; const customConfig = config._panel_custom || {}; const payload = customConfig.config || customConfig || config; const panelUrl = this._resolveUrl( payload.panel_url || config.panel_url || customConfig.panel_url || '' ); this.shadowRoot.innerHTML = `
`; const wrap = this.shadowRoot.querySelector('.wrap'); if (!wrap) { return; } if (!panelUrl) { wrap.innerHTML = `