UNPKG

iobroker.lovelace

Version:

With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI

61 lines 57.4 kB
export const __rspack_esm_id=67991;export const __rspack_esm_ids=[67991];export const __webpack_modules__={26218(e,t,a){a.d(t,{a:()=>i});const o=(0,a(77796).n)(e=>{history.replaceState({scrollPosition:e},"")},300);function i(e){return(t,a)=>{if("object"==typeof a)throw new Error("This decorator does not support this compilation type.");const i=t.connectedCallback;t.connectedCallback=function(){i.call(this);const t=this[a];t&&this.updateComplete.then(()=>{const a=this.renderRoot.querySelector(e);a&&setTimeout(()=>{a.scrollTop=t},0)})};const r=Object.getOwnPropertyDescriptor(t,a);let s;if(void 0===r)s={get(){return this[`__${String(a)}`]||history.state?.scrollPosition},set(e){o(e),this[`__${String(a)}`]=e},configurable:!0,enumerable:!0};else{const e=r.set;s={...r,set(t){o(t),this[`__${String(a)}`]=t,e?.call(this,t)}}}Object.defineProperty(t,a,s)}}},92872(e,t,a){a.d(t,{w:()=>i});const o=/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,i=e=>o.test(e)},63130(e,t,a){a.d(t,{l:()=>i});var o=a(50248);const i=async(e,t)=>{if(navigator.clipboard)try{return void await navigator.clipboard.writeText(e)}catch{}const a=t||(0,o.n)()?.getRootNode()||document.body,i=document.createElement("textarea");i.value=e,i.setAttribute("readonly",""),i.style.position="fixed",i.style.top="0",i.style.left="0",i.style.opacity="0",a.appendChild(i),i.select(),document.execCommand("copy"),a.removeChild(i)}},77796(e,t,a){a.d(t,{n:()=>o});const o=(e,t,a=!0,o=!0)=>{let i,r=0;const s=(...s)=>{const n=()=>{r=!1===a?0:Date.now(),i=void 0,e(...s)},l=Date.now();r||!1!==a||(r=l);const c=t-(l-r);c<=0||c>t?(i&&(clearTimeout(i),i=void 0),r=l,e(...s)):i||!1===o||(i=window.setTimeout(n,c))};return s.cancel=()=>{clearTimeout(i),i=void 0,r=0},s}},9503(e,t,a){var o=a(62826),i=a(97577),r=a(5124),s=a(22441);class n extends i.A{get value(){return this._value??null}set value(e){this._value=e}static get styles(){return[i.A.styles,r.AH`:host{--wa-form-control-toggle-size:var(--ha-checkbox-size, 20px);--wa-form-control-border-color:var(
            --ha-checkbox-border-color,
            var(--ha-color-border-neutral-normal)
          );--wa-form-control-background-color:var(
            --ha-checkbox-background-color,
            var(--wa-form-control-background-color)
          );--checked-icon-color:var(
            --ha-checkbox-checked-icon-color,
            var(--wa-color-brand-on-loud)
          );--wa-form-control-activated-color:var(
            --ha-checkbox-checked-background-color,
            var(--ha-color-fill-primary-loud-resting)
          );-webkit-tap-highlight-color:transparent;--checked-icon-scale:var(--ha-checkbox-checked-icon-scale, 0.9);--wa-form-control-required-content:var(
            --ha-checkbox-required-marker,
            var(--ha-input-required-marker, "*")
          );--wa-form-control-required-content-offset:var(
            --ha-checkbox-required-marker-offset,
            0.1rem
          )}[part~=base]{align-items:center;gap:var(--ha-space-2)}[part~=control]{border-radius:var(--ha-checkbox-border-radius,var(--ha-border-radius-sm));border-width:var(--ha-checkbox-border-width,var(--ha-border-width-md));margin-inline-end:0}[part~=label]{line-height:1}#hint{font-size:var(--ha-font-size-xs);color:var(--ha-color-text-secondary)}label:has(input:not(:disabled)):hover{--wa-form-control-border-color:var(
            --ha-checkbox-border-color-hover,
            var(--ha-checkbox-border-color, var(--ha-color-border-neutral-loud))
          )}label:has(input:not(:disabled)):hover [part~=control]{background-color:var(--ha-checkbox-background-color-hover,var(--ha-color-form-background-hover))}label:has(input:checked:not(:disabled)):hover [part~=control],label:has(input:indeterminate:not(:disabled)):hover [part~=control]{background-color:var(--ha-checkbox-checked-background-color-hover,var(--ha-color-fill-primary-loud-hover));border-color:var(--ha-checkbox-checked-background-color-hover,var(--ha-color-fill-primary-loud-hover))}`]}}n=(0,o.Cg)([(0,s.EM)("ha-checkbox")],n)},11382(e,t,a){var o=a(62826),i=a(5124),r=a(22441),s=a(6412),n=a(1087),l=a(12587);a(67094);class c extends i.WF{render(){const e=this.noCollapse?i.s6:i.qy` <ha-svg-icon .path="${"M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z"}" class="summary-icon ${(0,s.H)({expanded:this.expanded})}"></ha-svg-icon> `;return i.qy` <div class="top ${(0,s.H)({expanded:this.expanded})}"> <div id="summary" class="${(0,s.H)({noCollapse:this.noCollapse})}" @click="${this._toggleContainer}" @keydown="${this._toggleContainer}" @focus="${this._focusChanged}" @blur="${this._focusChanged}" role="button" tabindex="${this.noCollapse?-1:0}" aria-expanded="${this.expanded}" aria-controls="sect1" part="summary"> ${this.leftChevron?e:i.s6} <slot name="leading-icon"></slot> <slot name="header"> <div class="header"> ${this.header} <slot class="secondary" name="secondary">${this.secondary}</slot> </div> </slot> <slot name="event"></slot> ${this.leftChevron?i.s6:e} <slot name="icons"></slot> </div> </div> <div class="container ${(0,s.H)({expanded:this.expanded})}" @transitionend="${this._handleTransitionEnd}" role="region" aria-labelledby="summary" aria-hidden="${!this.expanded}" tabindex="-1"> ${this._showContent?i.qy`<slot></slot>`:""} </div> `}willUpdate(e){super.willUpdate(e),e.has("expanded")&&(this._showContent=this.expanded,setTimeout(()=>{this._container.style.overflow=this.expanded?"initial":"hidden"},300))}_handleTransitionEnd(){this._container.style.removeProperty("height"),this._container.style.overflow=this.expanded?"initial":"hidden",this._showContent=this.expanded}async _toggleContainer(e){if(e.defaultPrevented)return;if("keydown"===e.type&&"Enter"!==e.key&&" "!==e.key)return;if(e.preventDefault(),this.noCollapse)return;const t=!this.expanded;(0,n.r)(this,"expanded-will-change",{expanded:t}),this._container.style.overflow="hidden",t&&(this._showContent=!0,await(0,l.E)());const a=this._container.scrollHeight;this._container.style.height=`${a}px`,t||setTimeout(()=>{this._container.style.height="0px"},0),this.expanded=t,(0,n.r)(this,"expanded-changed",{expanded:this.expanded})}_focusChanged(e){this.noCollapse||this.shadowRoot.querySelector(".top").classList.toggle("focused","focus"===e.type)}constructor(...e){super(...e),this.expanded=!1,this.outlined=!1,this.leftChevron=!1,this.noCollapse=!1,this._showContent=this.expanded}}c.styles=i.AH`:host{display:block}.top{display:flex;align-items:center;border-radius:var(--ha-card-border-radius,var(--ha-border-radius-lg))}.top.expanded{border-bottom-left-radius:0px;border-bottom-right-radius:0px}.top.focused{background:var(--input-fill-color)}:host([outlined]){box-shadow:none;border-width:1px;border-style:solid;border-color:var(--outline-color);border-radius:var(--ha-card-border-radius,var(--ha-border-radius-lg))}.summary-icon{transition:transform 150ms cubic-bezier(.4, 0, .2, 1);direction:var(--direction);margin-left:8px;margin-inline-start:8px;margin-inline-end:initial;border-radius:var(--ha-border-radius-circle)}#summary:focus-visible ha-svg-icon.summary-icon{background-color:var(--ha-color-fill-neutral-normal-active)}::slotted([slot=leading-icon]),:host([left-chevron]) .summary-icon{margin-left:0;margin-right:8px;margin-inline-start:0;margin-inline-end:8px}#summary{flex:1;display:flex;padding:var(--expansion-panel-summary-padding,0 8px);min-height:48px;align-items:center;cursor:pointer;overflow:hidden;font-weight:var(--ha-font-weight-medium);outline:0}#summary.noCollapse{cursor:default}.summary-icon.expanded{transform:rotate(180deg)}.header,::slotted([slot=header]){flex:1;overflow-wrap:anywhere;color:var(--primary-text-color)}.container{padding:var(--expansion-panel-content-padding,0 8px);overflow:hidden;transition:height .3s cubic-bezier(.4, 0, .2, 1);height:0px}.container.expanded{height:auto}.secondary{display:block;color:var(--secondary-text-color);font-size:var(--ha-font-size-s)}`,(0,o.Cg)([(0,r.MZ)({type:Boolean,reflect:!0})],c.prototype,"expanded",void 0),(0,o.Cg)([(0,r.MZ)({type:Boolean,reflect:!0})],c.prototype,"outlined",void 0),(0,o.Cg)([(0,r.MZ)({attribute:"left-chevron",type:Boolean,reflect:!0})],c.prototype,"leftChevron",void 0),(0,o.Cg)([(0,r.MZ)({attribute:"no-collapse",type:Boolean,reflect:!0})],c.prototype,"noCollapse",void 0),(0,o.Cg)([(0,r.MZ)()],c.prototype,"header",void 0),(0,o.Cg)([(0,r.MZ)()],c.prototype,"secondary",void 0),(0,o.Cg)([(0,r.wk)()],c.prototype,"_showContent",void 0),(0,o.Cg)([(0,r.P)(".container")],c.prototype,"_container",void 0),c=(0,o.Cg)([(0,r.EM)("ha-expansion-panel")],c)},43661(e,t,a){a.r(t),a.d(t,{HaIconNext:()=>n});var o=a(62826),i=a(22441),r=a(63091),s=a(67094);class n extends s.HaSvgIcon{constructor(...e){super(...e),this.path="rtl"===r.G.document.dir?"M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z":"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z"}}(0,o.Cg)([(0,i.MZ)()],n.prototype,"path",void 0),n=(0,o.Cg)([(0,i.EM)("ha-icon-next")],n)},8630(e,t,a){var o=a(62826),i=a(68618),r=a(11081),s=a(22441);class n extends i.iY{}n.styles=r.R,n=(0,o.Cg)([(0,s.EM)("ha-list")],n)},2846(e,t,a){a.d(t,{G:()=>c,J:()=>l});var o=a(62826),i=a(58168),r=a(82553),s=a(5124),n=a(22441);a(54276);const l=[r.R,s.AH`:host{--ha-icon-display:block;--md-sys-color-primary:var(--primary-text-color);--md-sys-color-secondary:var(--secondary-text-color);--md-sys-color-surface:var(--card-background-color);--md-sys-color-on-surface:var(--primary-text-color);--md-sys-color-on-surface-variant:var(--secondary-text-color)}md-item{overflow:var(--md-item-overflow,hidden);align-items:var(--md-item-align-items,center);gap:var(--ha-md-list-item-gap,16px)}`];class c extends i.n{renderRipple(){return"text"===this.type?s.s6:s.qy`<ha-ripple part="ripple" for="item" ?disabled="${this.disabled&&"link"!==this.type}"></ha-ripple>`}}c.styles=l,c=(0,o.Cg)([(0,n.EM)("ha-md-list-item")],c)},17308(e,t,a){var o=a(62826),i=a(49838),r=a(11245),s=a(5124),n=a(22441);class l extends i.B{}l.styles=[r.R,s.AH`:host{--md-sys-color-surface:var(--card-background-color)}`],l=(0,o.Cg)([(0,n.EM)("ha-md-list")],l)},34630(e,t,a){a(74423),a(44114),a(18111),a(61701);var o=a(62826),i=a(5124),r=a(22441),s=a(1087),n=a(14503);a(9503),a(8034),a(67094);const l=e=>i.qy`${e.map((t,a)=>[i.qy`<span>${t.address}/${t.network_prefix}</span>`,a<e.length-1?", ":i.s6])}`;class c extends i.WF{render(){if(void 0===this.networkConfig)return i.s6;const e=this.networkConfig.configured_adapters||[];return i.qy` <ha-checkbox @change="${this._handleAutoConfigureCheckboxClick}" .checked="${!e.length}" .hint="${e.length?"":this.hass.localize("ui.panel.config.network.adapter.auto_configure_manual_hint")}"> ${this.hass.localize("ui.panel.config.network.adapter.auto_configure")} <div class="description"> ${this.hass.localize("ui.panel.config.network.adapter.detected")}: ${t=this.networkConfig.adapters,t.map(e=>e.auto?i.qy`${e.name} (${l([...e.ipv4,...e.ipv6])})`:"")} </div> </ha-checkbox> ${e.length||this._expanded?this.networkConfig.adapters.map(t=>i.qy`<ha-checkbox id="${t.name}" @change="${this._handleAdapterCheckboxClick}" .checked="${e.includes(t.name)}" .adapter="${t.name}"> ${this.hass.localize("ui.panel.config.network.adapter.adapter")}: ${t.name} ${t.default?i.qy`<ha-svg-icon .path="${"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z"}"></ha-svg-icon> (${this.hass.localize("ui.common.default")})`:i.s6} <div class="description"> ${l([...t.ipv4,...t.ipv6])} </div> </ha-checkbox>`):i.s6} `;var t}_handleAutoConfigureCheckboxClick(e){const t=e.currentTarget;if(void 0===this.networkConfig)return;let a=[...this.networkConfig.configured_adapters];if(t.checked)this._expanded=!1,a=[];else{this._expanded=!0;for(const e of this.networkConfig.adapters)if(e.default){a=[e.name];break}}(0,s.r)(this,"network-config-changed",{configured_adapters:a})}_handleAdapterCheckboxClick(e){const t=e.currentTarget,a=t.id;if(void 0===this.networkConfig)return;const o=[...this.networkConfig.configured_adapters];if(t.checked)o.push(a);else{const e=o.indexOf(a,0);o.splice(e,1)}(0,s.r)(this,"network-config-changed",{configured_adapters:o})}static get styles(){return[n.RF,i.AH`.error{color:var(--error-color)}ha-checkbox:not(:last-child){margin-bottom:var(--ha-space-3)}ha-svg-icon{--mdc-icon-size:12px;margin-bottom:4px}.description{font-size:var(--ha-font-size-s);margin-top:var(--ha-space-1);color:var(--secondary-text-color)}`]}}(0,o.Cg)([(0,r.MZ)({attribute:!1})],c.prototype,"hass",void 0),(0,o.Cg)([(0,r.MZ)({attribute:!1})],c.prototype,"networkConfig",void 0),(0,o.Cg)([(0,r.wk)()],c.prototype,"_expanded",void 0),c=(0,o.Cg)([(0,r.EM)("ha-network")],c)},8034(e,t,a){var o=a(62826),i=a(92070),r=a(5124),s=a(22441);class n extends r.WF{render(){const e=this._hasSlotController.test("description");return r.qy` <div class="prefix-wrap"> <slot name="prefix"></slot> <div class="body" part="heading" ?two-line="${!this.threeLine&&e}" ?three-line="${this.threeLine}"> <slot name="heading"></slot> ${e?r.qy`<span class="secondary"><slot name="description"></slot></span>`:r.s6} </div> </div> <div class="content"> <slot></slot> </div> `}constructor(...e){super(...e),this.narrow=!1,this.slim=!1,this.threeLine=!1,this.wrapHeading=!1,this.empty=!1,this._hasSlotController=new i.X(this,"description")}}n.styles=r.AH`:host{display:flex;padding:0 var(--ha-space-4);align-content:normal;align-self:auto;align-items:center}.body{padding-top:var(--settings-row-body-padding-top,var(--ha-space-2));padding-bottom:var(--settings-row-body-padding-bottom,var(--ha-space-2));padding-left:0;padding-inline-start:0;padding-right:var(--ha-space-4);padding-inline-end:var(--ha-space-4);overflow:hidden;display:var(--layout-vertical_-_display,flex);flex-direction:var(--layout-vertical_-_flex-direction,column);justify-content:var(--layout-center-justified_-_justify-content,center);flex:var(--layout-flex_-_flex,1);flex-basis:var(--layout-flex_-_flex-basis,0.000000001px)}.body[three-line]{min-height:88px}:host(:not([wrap-heading])) body>*{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.body>.secondary{display:block;padding-top:var(--ha-space-1);font-family:var(
        --mdc-typography-body2-font-family,
        var(--mdc-typography-font-family, var(--ha-font-family-body))
      );font-size:var(--mdc-typography-body2-font-size, var(--ha-font-size-s));-webkit-font-smoothing:var(--ha-font-smoothing);-moz-osx-font-smoothing:var(--ha-moz-osx-font-smoothing);font-weight:var(--mdc-typography-body2-font-weight,var(--ha-font-weight-normal));line-height:normal;color:var(--secondary-text-color)}.body[two-line]{min-height:calc(72px - 16px);flex:1}.content{display:contents}:host(:not([narrow])) .content{display:var(--settings-row-content-display,flex);justify-content:flex-end;flex:1;min-width:0;padding:var(--settings-row-content-padding-block,var(--ha-space-4)) 0}:host([empty]) .content{display:none}.content ::slotted(*){width:var(--settings-row-content-width)}:host([narrow]){align-items:normal;flex-direction:column;border-top:1px solid var(--divider-color);padding-bottom:var(--ha-space-2)}::slotted(ha-switch){padding:var(--settings-row-switch-padding-block,var(--ha-space-4)) 0}.secondary{white-space:normal}.prefix-wrap{flex:var(--settings-row-prefix-flex,1);display:var(--settings-row-prefix-display)}:host([narrow]) .prefix-wrap{display:flex;align-items:center}:host([slim]),:host([slim]) .content,:host([slim]) ::slotted(ha-switch){padding:0}:host([slim]) .body{min-height:0}`,(0,o.Cg)([(0,s.MZ)({type:Boolean,reflect:!0})],n.prototype,"narrow",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,reflect:!0})],n.prototype,"slim",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,attribute:"three-line"})],n.prototype,"threeLine",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,attribute:"wrap-heading",reflect:!0})],n.prototype,"wrapHeading",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,reflect:!0})],n.prototype,"empty",void 0),n=(0,o.Cg)([(0,s.EM)("ha-settings-row")],n)},59646(e,t,a){a.a(e,async function(e,t){try{var o=a(62826),i=a(29344),r=a(5124),s=a(22441),n=a(88360),l=e([i]);i=(l.then?(await l)():l)[0];class c extends i.A{updated(e){super.updated(e),e.has("haptic")&&(this.haptic?this.addEventListener("change",this._forwardHaptic):this.removeEventListener("change",this._forwardHaptic))}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("change",this._forwardHaptic)}static get styles(){return[i.A.styles,r.AH`:host{--wa-form-control-toggle-size:var(--ha-switch-size, 24px);--wa-form-control-required-content:var(
            --ha-switch-required-marker,
            var(--ha-input-required-marker, "*")
          );--wa-form-control-required-content-offset:var(
            --ha-switch-required-marker-offset,
            0.1rem
          );--thumb-size:var(--ha-switch-thumb-size, 18px);--width:var(--ha-switch-width, 48px)}label{position:relative;height:max(var(--thumb-size),var(--wa-form-control-toggle-size))}label::before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:100%;height:100%;min-width:var(--ha-switch-min-touch-size,40px);min-height:var(--ha-switch-min-touch-size,40px)}label.disabled::before{pointer-events:none}.switch{background-color:var(--ha-switch-background-color,var(--ha-color-fill-disabled-quiet-resting));border-color:var(--ha-switch-border-color,var(--ha-color-border-neutral-normal))}label:not(.disabled) .input:focus-visible~.switch,label:not(.disabled):hover .switch{background-color:var(--ha-switch-background-color-hover,var(--ha-switch-background-color,var(--ha-color-fill-disabled-quiet-hover)))}.checked .switch{background-color:var(--ha-switch-checked-background-color,var(--ha-color-fill-primary-normal-resting));border-color:var(--ha-switch-checked-border-color,var(--ha-color-border-primary-loud))}label:not(.disabled).checked .input:focus-visible~.switch,label:not(.disabled).checked:hover .switch{background-color:var(--ha-switch-checked-background-color-hover,var(--ha-switch-checked-background-color,var(--ha-color-fill-primary-normal-hover)));border-color:var(--ha-switch-checked-border-color-hover,var(--ha-switch-checked-border-color,var(--ha-color-border-primary-loud)))}.switch .thumb{background-color:var(--ha-switch-thumb-background-color,var(--ha-color-on-neutral-normal));border-color:var(--ha-switch-thumb-border-color,var(--ha-color-on-neutral-normal));border-style:var(--wa-form-control-border-style);border-width:var(--wa-form-control-border-width);box-shadow:var(--ha-switch-thumb-box-shadow,var(--ha-box-shadow-s))}label:not(.disabled) .input:focus-visible~.switch .thumb,label:not(.disabled):hover .switch .thumb{background-color:var(--ha-switch-thumb-background-color-hover,var(--ha-switch-thumb-background-color,var(--ha-color-on-neutral-normal)));border-color:var(--ha-switch-thumb-border-color-hover,var(--ha-switch-thumb-border-color,var(--ha-color-on-neutral-normal)))}.checked .switch .thumb{background-color:var(--ha-switch-checked-thumb-background-color,var(--ha-color-on-primary-normal));border-color:var(--ha-switch-checked-thumb-border-color,var(--ha-color-on-primary-normal))}label:not(.disabled).checked .input:focus-visible~.switch .thumb,label:not(.disabled).checked:hover .switch .thumb{background-color:var(--ha-switch-checked-thumb-background-color-hover,var(--ha-switch-checked-thumb-background-color,var(--ha-color-on-primary-normal)));border-color:var(--ha-switch-checked-thumb-border-color-hover,var(--ha-switch-checked-thumb-border-color,var(--ha-color-on-primary-normal)))}label.disabled{opacity:var(--ha-switch-disabled-opacity, .3);cursor:not-allowed}label:not(.disabled) .input:focus-visible~.switch .thumb{outline:0;outline-offset:none}label:not(.disabled) .input:focus-visible~.switch{outline:var(--wa-focus-ring);outline-offset:var(--wa-focus-ring-offset)}:host(:empty) slot.label{display:none}`]}constructor(...e){super(...e),this.haptic=!1,this._forwardHaptic=()=>{(0,n.j)(this,"light")}}}(0,o.Cg)([(0,s.MZ)({type:Boolean})],c.prototype,"haptic",void 0),c=(0,o.Cg)([(0,s.EM)("ha-switch")],c),t()}catch(e){t(e)}})},62647(e,t,a){var o=a(62826),i=a(9866),r=a(5124),s=a(22441);class n extends i.A{static get styles(){return[i.A.styles,r.AH`:host{font-size:var(--ha-font-size-m);--wa-color-brand-on-quiet:var(
            --ha-tab-active-text-color,
            var(--primary-color)
          );--wa-color-neutral-on-quiet:var(--wa-color-brand-on-quiet);opacity:.8;color:inherit;--wa-space-l:16px}:host([active]:not([disabled])){opacity:1}@media (hover:hover){:host(:hover:not([disabled]):not([active])) .tab{color:var(--wa-color-brand-on-quiet)}}`]}}n=(0,o.Cg)([(0,s.EM)("ha-tab-group-tab")],n)},66289(e,t,a){a.a(e,async function(e,t){try{var o=a(62826),i=a(42814),r=a(5124),s=a(22441),n=a(36356),l=e([i]);i=(l.then?(await l)():l)[0];class c extends i.A{connectedCallback(){super.connectedCallback(),this.addEventListener("keydown",this._handleKeyDown,!0)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("keydown",this._handleKeyDown,!0)}handleClick(e){this._dragScrollController.scrolled||super.handleClick(e)}static get styles(){return[i.A.styles,r.AH`:host{--track-width:2px;--track-color:var(--ha-tab-track-color, var(--divider-color));--indicator-color:var(
            --ha-tab-indicator-color,
            var(--primary-color)
          );--wa-color-neutral-on-quiet:var(--indicator-color)}.tab-group-top ::slotted(ha-tab-group-tab[active]){border-block-end:solid var(--track-width) var(--indicator-color);margin-block-end:calc(-1 * var(--track-width))}.tab-group-start ::slotted(ha-tab-group-tab[active]){border-inline-end:solid var(--track-width) var(--indicator-color);margin-inline-end:calc(-1 * var(--track-width))}.tab-group-end ::slotted(ha-tab-group-tab[active]){border-inline-start:solid var(--track-width) var(--indicator-color);margin-inline-start:calc(-1 * var(--track-width))}.scroll-button::part(base):hover{background-color:transparent}`]}constructor(...e){super(...e),this._dragScrollController=new n.q(this,{selector:".nav"}),this.tabTag="ha-tab-group-tab",this.tabOnly=!0,this._handleKeyDown=e=>{(e.altKey||e.metaKey)&&e.stopPropagation()}}}(0,o.Cg)([(0,s.MZ)({attribute:"tab-tag"})],c.prototype,"tabTag",void 0),(0,o.Cg)([(0,s.MZ)({attribute:"tab-only",type:Boolean})],c.prototype,"tabOnly",void 0),c=(0,o.Cg)([(0,s.EM)("ha-tab-group")],c),t()}catch(e){t(e)}})},64013(e,t,a){var o=a(62826),i=a(97086),r=a(5124),s=a(22441);class n extends i.A{static get styles(){return[i.A.styles,r.AH`:host{--wa-form-control-required-content:var(
            --ha-radio-group-required-marker,
            var(--ha-input-required-marker, "*")
          );--wa-form-control-required-content-offset:var(
            --ha-radio-group-required-marker-offset,
            0.1rem
          )}`]}constructor(){super(),this.radioTag="ha-radio-option"}}n=(0,o.Cg)([(0,s.EM)("ha-radio-group")],n)},92677(e,t,a){var o=a(62826),i=a(17010),r=a(5124),s=a(22441);class n extends i.A{static get styles(){return[i.A.styles,r.AH`:host{--wa-form-control-activated-color:var(
            --ha-radio-option-active-color,
            var(--ha-color-fill-primary-loud-resting)
          );--wa-form-control-height:var(--ha-radio-option-height, 40px);--wa-form-control-toggle-size:var(
            --ha-radio-option-toggle-size,
            20px
          );--wa-form-control-border-width:var(
            --ha-radio-option-border-width,
            var(--ha-border-width-md)
          );--wa-form-control-border-color:var(
            --ha-radio-option-border-color,
            var(--ha-color-border-neutral-normal)
          );--wa-form-control-background-color:var(
            --ha-radio-option-background-color,
            var(--wa-form-control-background-color)
          );--checked-icon-color:var(
            --ha-radio-option-checked-icon-color,
            var(--wa-form-control-activated-color)
          );--checked-icon-scale:var(--ha-radio-option-checked-icon-scale, 0.7)}:host([appearance=default]) .control{margin:var(--ha-radio-option-control-margin,var(--ha-space-3) var(--ha-space-2) var(--ha-space-3) var(--ha-space-3))}:host(:not([aria-checked=true],[aria-disabled=true]):hover) .control{border-color:var(--ha-radio-option-border-color-hover,var(--ha-radio-option-border-color,var(--ha-color-border-neutral-loud)));background-color:var(--ha-radio-option-background-color-hover,var(--ha-color-fill-neutral-quiet-hover))}:host([aria-checked=true]) .control{background-color:var(--ha-radio-option-checked-background-color,var(--ha-color-fill-primary-normal-resting));color:var(--checked-icon-color);border-color:var(--checked-icon-color)}[part~=label]{display:inline-flex;align-items:center;cursor:pointer}:host([disabled]) [part~=label]{cursor:not-allowed}`]}}n=(0,o.Cg)([(0,s.EM)("ha-radio-option")],n)},18885(e,t,a){a.d(t,{Td:()=>o,iP:()=>r,pz:()=>i});const o=(e,t)=>e.callWS({type:"config/core/update",...t}),i=e=>e.callWS({type:"config/core/detect"}),r=e=>e.callApi("POST","config/core/check_config")},47351(e,t,a){a.d(t,{PS:()=>o,Tv:()=>s,VR:()=>i,lE:()=>n});a(74423),a(17642),a(58004),a(33853),a(45876),a(32475),a(15024),a(31698);const o=e=>e.data,i=e=>"object"==typeof e?"object"==typeof e.body?e.body.message||"Unknown error, see supervisor logs":e.body||e.message||"Unknown error, see supervisor logs":e,r=new Set([502,503,504]),s=e=>!!(e&&e.status_code&&r.has(e.status_code))||!(!e||!e.message||!e.message.includes("ERR_CONNECTION_CLOSED")&&!e.message.includes("ERR_CONNECTION_RESET")),n=async(e,t)=>e({type:"supervisor/api",endpoint:`/${t}/stats`,method:"get"})},15336(e,t,a){a.d(t,{He:()=>c,Ku:()=>r,PB:()=>s,Wq:()=>p,hu:()=>l,mZ:()=>n,v9:()=>h,xY:()=>d});var o=a(62384),i=a(47351);const r=async e=>{if((0,o.v)(e.config.version,2021,2,4))return e.callWS({type:"supervisor/api",endpoint:"/host/info",method:"get"});const t=await e.callApi("GET","hassio/host/info");return(0,i.PS)(t)},s=async e=>(0,o.v)(e.config.version,2021,2,4)?e.callWS({type:"supervisor/api",endpoint:"/os/info",method:"get"}):(0,i.PS)(await e.callApi("GET","hassio/os/info")),n=async e=>(0,o.v)(e.config.version,2021,2,4)?e.callWS({type:"supervisor/api",endpoint:"/host/reboot",method:"post",timeout:null}):e.callApi("POST","hassio/host/reboot"),l=async e=>(0,o.v)(e.config.version,2021,2,4)?e.callWS({type:"supervisor/api",endpoint:"/host/shutdown",method:"post",timeout:null}):e.callApi("POST","hassio/host/shutdown"),c=async(e,t)=>(0,o.v)(e.config.version,2021,2,4)?e.callWS({type:"supervisor/api",endpoint:"/host/options",method:"post",data:t}):e.callApi("POST","hassio/host/options",t),h=async(e,t)=>(0,o.v)(e.config.version,2021,2,4)?e.callWS({type:"supervisor/api",endpoint:"/os/datadisk/move",method:"post",timeout:null,data:{device:t}}):e.callApi("POST","hassio/os/datadisk/move"),d=async e=>(0,o.v)(e.config.version,2021,2,4)?e.callWS({type:"supervisor/api",endpoint:"/os/datadisk/list",method:"get",timeout:null}):(0,i.PS)(await e.callApi("GET","/os/datadisk/list")),p=async e=>(0,o.v)(e.config.version,2021,2,4)?e.callWS({type:"supervisor/api",endpoint:"/host/disks/default/usage",method:"get",timeout:3600,params:{max_depth:3}}):(0,i.PS)(await e.callApi("GET","hassio/host/disks/default/usage"))},72758(e,t,a){a.d(t,{$n:()=>s,M0:()=>c,jg:()=>r,or:()=>l,qr:()=>n});a(74423),a(18111),a(61701),a(18237);var o=a(62384),i=a(47351);const r=async e=>(0,o.v)(e.config.version,2021,2,4)?e.callWS({type:"supervisor/api",endpoint:"/network/info",method:"get"}):(0,i.PS)(await e.callApi("GET","hassio/network/info")),s=async(e,t,a)=>{(0,o.v)(e.config.version,2021,2,4)?await e.callWS({type:"supervisor/api",endpoint:`/network/interface/${t}/update`,method:"post",data:a,timeout:null}):await e.callApi("POST",`hassio/network/interface/${t}/update`,a)},n=async(e,t)=>(0,o.v)(e.config.version,2021,2,4)?e.callWS({type:"supervisor/api",endpoint:`/network/interface/${t}/accesspoints`,method:"get",timeout:null}):(0,i.PS)(await e.callApi("GET",`hassio/network/interface/${t}/accesspoints`)),l=e=>{const[t,a]=e.split("/"),o=t.includes(":");return{ip:t,mask:a?h(a,o):null,prefix:a}},c=(e,t)=>`${e}/${d(t)}`,h=(e,t=!1)=>{const a=parseInt(e,10);if(t){const e="ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",t=Math.floor(a/16),o=a%16,i=o?parseInt("1".repeat(o)+"0".repeat(16-o),2).toString(16):"";return e.split(":").slice(0,t).concat(i).concat(Array(8-t-(i?1:0)).fill("0")).join(":")}const o=~(2**(32-a)-1);return[o>>>24&255,o>>>16&255,o>>>8&255,255&o].join(".")},d=e=>e.includes(":")?e.split(":").map(e=>e?(parseInt(e,16).toString(2).match(/1/g)||[]).length:0).reduce((e,t)=>e+t,0):e.split(".").reduce((e,t)=>e+(parseInt(t,10).toString(2).match(/1/g)||[]).length,0)},59918(e,t,a){a.d(t,{PZ:()=>i,RY:()=>o,jh:()=>r});const o=e=>e.callWS({type:"network"}),i=(e,t)=>e.callWS({type:"network/configure",config:{configured_adapters:t}}),r=e=>e.callWS({type:"network/url"})},57304(e,t,a){a.a(e,async function(e,t){try{a(18111),a(22489),a(61701),a(17642),a(58004),a(33853),a(45876),a(32475),a(15024),a(31698);var o=a(62826),i=a(5124),r=a(22441),s=a(36312),n=a(38962),l=(a(76776),a(18350)),c=(a(34630),a(8034),a(72758)),h=a(59918),d=a(14503),p=e([n,l]);[n,l]=p.then?(await p)():p;class u extends i.WF{render(){return(0,s.x)(this.hass.config,"network")?i.qy` <ha-card outlined header="${this.hass.localize("ui.panel.config.network.network_adapter")}"> <div class="card-content"> ${this._error?i.qy` <ha-alert alert-type="error">${this._error.message||this._error.code}</ha-alert> `:""} <p> ${this.hass.localize("ui.panel.config.network.network_adapter_info")} </p> <ha-network @network-config-changed="${this._configChanged}" .hass="${this.hass}" .networkConfig="${this._networkConfig}"></ha-network> </div> <div class="card-actions"> <ha-button @click="${this._save}"> ${this.hass.localize("ui.panel.config.core.section.core.core_config.save_button")} </ha-button> </div> </ha-card> `:i.s6}firstUpdated(e){super.firstUpdated(e),(0,s.x)(this.hass.config,"network")&&this._load()}async _load(){this._error=void 0;try{const e=await(0,h.RY)(this.hass);if((0,s.x)(this.hass.config,"hassio")){const t=await(0,c.jg)(this.hass),a=new Set(t.interfaces.map(e=>e.interface));a.size&&(e.adapters=e.adapters.filter(e=>a.has(e.name)))}this._networkConfig=e}catch(e){this._error=e.message||e}}async _save(){this._error=void 0;try{await(0,h.PZ)(this.hass,this._networkConfig?.configured_adapters||[])}catch(e){this._error=e.message||e}}_configChanged(e){this._networkConfig={...this._networkConfig,configured_adapters:e.detail.configured_adapters}}static get styles(){return[d.RF,i.AH`.error{color:var(--error-color)}ha-settings-row{padding:0}.card-actions{display:flex;flex-direction:row-reverse;justify-content:space-between;align-items:center}`]}}(0,o.Cg)([(0,r.MZ)({attribute:!1})],u.prototype,"hass",void 0),(0,o.Cg)([(0,r.wk)()],u.prototype,"_networkConfig",void 0),(0,o.Cg)([(0,r.wk)()],u.prototype,"_error",void 0),u=(0,o.Cg)([(0,r.EM)("ha-config-network")],u),t()}catch(e){t(e)}})},61094(e,t,a){a.a(e,async function(e,o){try{a.r(t);var i=a(62826),r=a(5124),s=a(22441),n=a(36312),l=a(81310),c=(a(76776),a(17308),a(2846),a(43661),a(57304)),h=a(62086),d=a(39735),p=a(20642),u=e([l,c,h,d,p]);[l,c,h,d,p]=u.then?(await u)():u;const g=["dhcp","ssdp","zeroconf"];class v extends r.WF{render(){return r.qy` <hass-subpage back-path="/config/system" .hass="${this.hass}" .narrow="${this.narrow}" .header="${this.hass.localize("ui.panel.config.network.caption")}"> <div class="content"> ${(0,n.x)(this.hass.config,"hassio")?r.qy`<supervisor-hostname .hass="${this.hass}" .narrow="${this.narrow}"></supervisor-hostname> <supervisor-network .hass="${this.hass}"></supervisor-network>`:""} <ha-config-url-form .hass="${this.hass}"></ha-config-url-form> <ha-config-network .hass="${this.hass}"></ha-config-network> ${g.some(e=>(0,n.x)(this.hass.config,e))?r.qy` <ha-card outlined class="discovery-card" header="${this.hass.localize("ui.panel.config.network.discovery.title")}"> <ha-md-list> ${g.map(e=>r.qy` <ha-md-list-item type="link" href="/config/${e}"> <div slot="headline"> ${this.hass.localize(`ui.panel.config.network.discovery.${e}`)} </div> <div slot="supporting-text"> ${this.hass.localize(`ui.panel.config.network.discovery.${e}_info`)} </div> <ha-icon-next slot="end"></ha-icon-next> </ha-md-list-item> `)} </ha-md-list> </ha-card> `:""} </div> </hass-subpage> `}constructor(...e){super(...e),this.narrow=!1}}v.styles=r.AH`.content{padding:28px 20px 0;max-width:1040px;margin:0 auto}.discovery-card,ha-config-network,ha-config-url-form,supervisor-hostname,supervisor-network{display:block;margin:0 auto;margin-bottom:24px;max-width:600px}.discovery-card ha-md-list{padding-top:0}`,(0,i.Cg)([(0,s.MZ)({attribute:!1})],v.prototype,"hass",void 0),(0,i.Cg)([(0,s.MZ)({attribute:!1})],v.prototype,"route",void 0),(0,i.Cg)([(0,s.MZ)({type:Boolean})],v.prototype,"narrow",void 0),v=(0,i.Cg)([(0,s.EM)("ha-config-section-network")],v),o()}catch(e){o(e)}})},62086(e,t,a){a.a(e,async function(e,t){try{a(74423),a(14603),a(47566),a(98721);var o=a(62826),i=a(5124),r=a(22441),s=a(36312),n=a(92872),l=a(38962),c=a(18350),h=(a(76776),a(2846),a(59646)),d=a(43603),p=a(71117),u=a(18885),g=a(59918),v=a(54706),f=a(31381),m=e([l,c,h,d]);[l,c,h,d]=m.then?(await m)():m;class _ extends((0,v.E)(i.WF)){hassSubscribe(){return[this.hass.connection.subscribeEvents(()=>{this._fetchUrls()},"core_config_updated")]}render(){const e=["storage","default"].includes(this.hass.config.config_source),t=this._working||!e;if(void 0===this._cloudStatus||void 0===this._urls)return i.s6;const a=this._showCustomInternalUrl?this._internal_url:this._urls?.internal||"",o=this._showCustomExternalUrl?this._external_url:(this._cloudChecked?this._urls?.cloud:this._urls?.external)||"";let r,l,c;return null===this._cloudStatus?(r=!1,l=!1,c=!1):(c=this._cloudStatus.http_use_ssl,this._cloudStatus.logged_in?(r=!0,l=this._cloudStatus.active_subscription&&this._cloudStatus.prefs.remote_enabled):(r=!1,l=!1)),i.qy` <ha-card outlined .header="${this.hass.localize("ui.panel.config.url.caption")}"> <div class="card-content"> ${e?i.s6:i.qy` <ha-alert> ${this.hass.localize("ui.panel.config.core.section.core.core_config.edit_requires_storage")} </ha-alert> `} ${this._error?i.qy`<ha-alert alert-type="error">${this._error}</ha-alert>`:i.s6} <div class="description"> ${this.hass.localize("ui.panel.config.url.description")} </div> ${r?i.qy` <h4> ${this.hass.localize("ui.panel.config.url.external_url_label")} </h4> <ha-md-list-item> <span slot="headline">${this.hass.localize("ui.panel.config.url.external_use_ha_cloud")}</span> <ha-switch slot="end" .disabled="${t}" .checked="${this._cloudChecked}" @change="${this._toggleCloud}"></ha-switch> </ha-md-list-item> `:i.s6} <div class="url-container"> <ha-input-copy auto-validate .validationMessage="${this.hass.localize("ui.panel.config.url.invalid_url")}" data-name="external_url" type="url" .maskedToggle="${!(this._showCustomExternalUrl&&e)}" placeholder="https://example.duckdns.org:8123" .value="${o}" .maskedValue="${this._showCustomExternalUrl&&e?void 0:(0,f.w)(o)}" @change="${this._handleChange}" .readonly="${!this._showCustomExternalUrl}" .disabled="${t}"> </ha-input-copy> </div> ${r||!(0,s.x)(this.hass.config,"cloud")?i.s6:i.qy` <ha-alert alert-type="info"> ${this.hass.localize("ui.panel.config.url.external_get_ha_cloud")} <ha-button size="small" href="/config/cloud/register" slot="action"> <span class="no-wrap">${this.hass.localize("ui.panel.config.cloud.register.start_trial")}</span> </ha-button> </ha-alert> `} ${!this._showCustomExternalUrl&&r?i.qy` ${l?i.qy` <div class="row"> <div class="flex"></div> <a href="/config/cloud">${this.hass.localize("ui.panel.config.url.manage_ha_cloud")}</a> </div> `:i.qy` <ha-alert alert-type="error"> ${this.hass.localize("ui.panel.config.url.ha_cloud_remote_not_enabled")} <ha-button size="small" appearance="plain" href="/config/cloud" slot="action"> ${this.hass.localize("ui.panel.config.url.enable_remote")} </ha-button> </ha-alert> `} `:i.s6} <h4> ${this.hass.localize("ui.panel.config.url.internal_url_label")} </h4> <ha-md-list-item> <span slot="headline">${this.hass.localize("ui.panel.config.url.internal_url_automatic")}</span> <span slot="supporting-text">${this.hass.localize("ui.panel.config.url.internal_url_automatic_description")}</span> <ha-switch slot="end" .disabled="${t}" .checked="${!this._showCustomInternalUrl}" @change="${this._toggleInternalAutomatic}"></ha-switch> </ha-md-list-item> <div class="url-container"> <ha-input-copy auto-validate .validationMessage="${this.hass.localize("ui.panel.config.url.invalid_url")}" data-name="internal_url" .maskedToggle="${!(this._showCustomInternalUrl&&e)}" type="url" placeholder="${this.hass.localize("ui.panel.config.url.internal_url_placeholder")}" .value="${a}" .maskedValue="${this._showCustomInternalUrl&&e?void 0:(0,f.w)(a)}" @change="${this._handleChange}" .readonly="${!this._showCustomInternalUrl}" .disabled="${t}"> </ha-input-copy> </div> ${!c||a&&a.startsWith("https://")&&!(0,n.w)(new URL(a).hostname)?i.s6:i.qy` <ha-alert .alertType="${this._showCustomInternalUrl?"info":"warning"}" .title="${this.hass.localize("ui.panel.config.url.internal_url_https_error_title")}"> ${this.hass.localize("ui.panel.config.url.internal_url_https_error_description")} </ha-alert> `} </div> <div class="card-actions"> <ha-button @click="${this._save}" .disabled="${t}"> ${this.hass.localize("ui.panel.config.core.section.core.core_config.save_button")} </ha-button> </div> </ha-card> `}firstUpdated(e){super.firstUpdated(e),(0,s.x)(this.hass.config,"cloud")?(0,p.eN)(this.hass).then(e=>{this._cloudStatus=e,this._showCustomExternalUrl=!(this._cloudStatus.logged_in&&!this.hass.config.external_url)}):this._cloudStatus=null,this._fetchUrls()}_toggleCloud(e){this._cloudChecked=e.currentTarget.checked,this._showCustomExternalUrl=!this._cloudChecked}_toggleInternalAutomatic(e){this._showCustomInternalUrl=!e.currentTarget.checked}_handleChange(e){const t=e.currentTarget,a=e.composedPath()[0];this[`_${t.dataset.name}`]=a.value||""}async _save(){if(!1!==this._externalUrlField?.reportValidity()&&!1!==this._internalUrlField?.reportValidity()){this._working=!0,this._error=void 0;try{await(0,u.Td)(this.hass,{external_url:this._showCustomExternalUrl&&this._external_url||null,internal_url:this._showCustomInternalUrl&&this._internal_url||null})}catch(e){this._error=e.message||e}finally{this._working=!1}}}async _fetchUrls(){this._urls=await(0,g.jh)(this.hass),this._cloudChecked=this._urls?.cloud===this._urls?.external&&!this.hass.config.external_url,this._showCustomInternalUrl=!!this.hass.config.internal_url,this._showCustomExternalUrl=!(this._cloudStatus?.logged_in&&!this.hass.config.external_url),this._internal_url=this._urls?.internal??"",this._external_url=this._urls?.external??""}constructor(...e){super(...e),this._working=!1,this._external_url="",this._internal_url="",this._showCustomExternalUrl=!1,this._showCustomInternalUrl=!1,this._cloudChecked=!1}}_.styles=i.AH`.description{margin-bottom:1em}.row{display:flex;flex-direction:row;margin:0 -8px;align-items:center;padding:8px 0}.secondary{color:var(--secondary-text-color)}.flex{flex:1}.row>*{margin:0 8px}ha-alert{display:block;margin:16px calc(var(--ha-space-4) * -1)}.card-actions{display:flex;flex-direction:row-reverse}a{color:var(--primary-color);text-decoration:none}.url-container{display:flex;align-items:center;gap:var(--ha-space-2);margin-top:8px}ha-input-copy{flex:1}ha-md-list-item{--md-list-item-top-space:0;--md-list-item-bottom-space:0;--md-list-item-leading-space:0;--md-list-item-trailing-space:0;--md-list-item-two-line-container-height:48px}.no-wrap{white-space:nowrap}`,(0,o.Cg)([(0,r.MZ)({attribute:!1})],_.prototype,"hass",void 0),(0,o.Cg)([(0,r.wk)()],_.prototype,"_error",void 0),(0,o.Cg)([(0,r.wk)()],_.prototype,"_working",void 0),(0,o.Cg)([(0,r.wk)()],_.prototype,"_urls",void 0),(0,o.Cg)([(0,r.wk)()],_.prototype,"_external_url",void 0),(0,o.Cg)([(0,r.wk)()],_.prototype,"_internal_url",void 0),(0,o.Cg)([(0,r.wk)()],_.prototype,"_cloudStatus",void 0),(0,o.Cg)([(0,r.wk)()],_.prototype,"_showCustomExternalUrl",void 0),(0,o.Cg)([(0,r.wk)()],_.prototype,"_showCustomInternalUrl",void 0),(0,o.Cg)([(0,r.wk)()],_.prototype,"_cloudChecked",void 0),(0,o.Cg)([(0,r.P)('[data-name="external_url"]')],_.prototype,"_externalUrlField",void 0),(0,o.Cg)([(0,r.P)('[data-name="internal_url"]')],_.prototype,"_internalUrlField",void 0),_=(0,o.Cg)([(0,r.EM)("ha-config-url-form")],_),t()}catch(e){t(e)}})},39735(e,t,a){a.a(e,async function(e,t){try{var o=a(62826),i=a(5124),r=a(22441),s=a(38962),n=(a(76776),a(18350)),l=(a(11382),a(26300)),c=(a(8034),a(91485)),h=a(47351),d=a(15336),p=a(65063),u=e([s,n,l,c]);[s,n,l,c]=u.then?(await u)():u;class g extends i.WF{firstUpdated(){this._fetchHostInfo()}async _fetchHostInfo(){const e=await(0,d.Ku)(this.hass);this._hostname=e.hostname}render(){return this._hostname?i.qy` <ha-card class="no-padding" outlined .header="${this.hass.localize("ui.panel.config.network.supervisor.hostname.title")}"> <div class="card-content"> <p> ${this.hass.localize("ui.panel.config.network.supervisor.hostname.description")} </p> <ha-input .disabled="${this._processing}" .value="${this._hostname}" @change="${this._handleChange}" placeholder="homeassistant"> </ha-input> </div> <div class="card-actions"> <ha-button .loading="${this._processing}" @click="${this._save}" .disabled="${this._processing}"> ${this.hass.localize("ui.common.save")} </ha-button> </div> </ha-card> `:i.s6}_handleChange(e){this._hostname=e.target.value}async _save(){this._processing=!0;try{await(0,d.He)(this.hass,{hostname:this._hostname})}catch(e){(0,p.showAlertDialog)(this,{title:this.hass.localize("ui.panel.config.network.supervisor.hostname.failed_to_set_hostname"),text:(0,h.VR)(e)})}finally{this._processing=!1}}constructor(...e){super(...e),this.narrow=!1,this._processing=!1}}g.styles=i.AH`ha-input{width:100%}.card-actions{display:flex;flex-direction:row-reverse;justify-content:space-between;align-items:center}.card-content>p{padding-bottom:1em}`,(0,o.Cg)([(0,r.MZ)({attribute:!1})],g.prototype,"hass",void 0),(0,o.Cg)([(0,r.MZ)({type:Boolean})],g.prototype,"narrow",void 0),(0,o.Cg)([(0,r.wk)()],g.prototype,"_processing",void 0),(0,o.Cg)([(0,r.wk)()],g.prototype,"_hostname",void 0),g=(0,o.Cg)([(0,r.EM)("supervisor-hostname")],g),t()}catch(e){t(e)}})},20642(e,t,a){a.a(e,async function(e,t){try{a(74423),a(44114),a(18111),a(22489),a(20116),a(7588),a(61701);var o=a(62826),i=a(5124),r=a(22441),s=a(74985),n=a(38962),l=a(18350),c=(a(76776),a(29823)),h=(a(70947),a(11382),a(26300)),d=(a(8630),a(28732),a(64013),a(92677),a(65829)),p=a(66289),u=(a(62647),a(91485)),g=a(47351),v=a(72758),f=a(65063),m=e([n,l,c,h,d,p,u]);[n,l,c,h,d,p,u]=m.then?(await m)():m;const _="M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19M8,9H16V19H8V9M15.5,4L14.5,3H9.5L8.5,4H5V6H19V4H15.5Z",w="M7,10L12,15L17,10H7Z",y="M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z",b="M12,21L15.6,16.2C14.6,15.45 13.35,15 12,15C10.65,15 9.4,15.45 8.4,16.2L12,21M12,3C7.95,3 4.21,4.34 1.2,6.6L3,9C5.5,7.12 8.62,6 12,6C15.38,6 18.5,7.12 21,9L22.8,6.6C19.79,4.34 16.05,3 12,3M12,9C9.3,9 6.81,9.89 4.8,11.4L6.6,13.8C8.1,12.67 9.97,12 12,12C14.03,12 15.9,12.67 17.4,13.8L19.2,11.4C17.19,9.89 14.7,9 12,9Z",k=["ipv4","ipv6"],x={ipv4:{Cloudflare:["1.1.1.1","1.0.0.1"],Google:["8.8.8.8","8.8.4.4"],Quad9:["9.9.9.9","149.112.112.112"],NextDNS:["45.90.28.0","45.90.30.0"],AdGuard:["94.140.14.140","94.140.14.141"]},ipv6:{Cloudflare:["2606:4700:4700::1111","2606:4700:4700::1001"],Google:["2001:4860:4860::8888","2001:4860:4860::8844"],Quad9:["2620:fe::fe","2620:fe::9"],NextDNS:["2a05:d014:a000::","2a05:d014:a001::"],AdGuard:["94.140.14.140","94.140.14.141"]}};class $ extends i.WF{firstUpdated(){this._fetchNetworkInfo()}async _fetchNetworkInfo(){const e=await(0,v.jg)(this.hass);this._interfaces=e.interfaces.sort((e,t)=>e.primary>t.primary?-1:1),this._interface={...this._interfaces[this._curTabIndex]}}render(){return this._interface?i.qy` <ha-card outlined> <div class="card-header"> ${this.hass.localize("ui.panel.config.network.supervisor.title")} ${this._interfaces.length>1?i.qy` <ha-tab-group @wa-tab-show="${this._handleTabActivated}">${this._interfaces.map((e,t)=>i.qy`<ha-tab-group-tab slot="nav" .active="${this._curTabIndex===t}" .panel="${t.toString()}" .id="${e.interface}"> ${e.interface} </ha-tab-group-tab>`)} </ha-tab-group> `:i.s6} </div> ${(0,s.P)(this._renderTab())} </ha-card> `:i.s6}_renderTab(){return i.qy`<div class="card-content"> ${"wireless"===this._interface?.type?i.qy` <ha-expansion-panel .header="${this.hass.localize("ui.panel.config.network.supervisor.wifi")}" outlined .expanded="${!this._interface?.wifi?.ssid}"> ${this._interface?.wifi?.ssid?i.qy`<p> <ha-svg-icon slot="icon" .path="${b}"></ha-svg-icon> ${this.hass.localize("ui.panel.config.network.supervisor.connected_to",{ssid:this._interface?.wifi?.ssid})} </p>`:i.s6} <ha-button appearance="plain" class="scan" @click="${this._scanForAP}" .disabled="${this._scanning}" .loading="${this._scanning}"> ${this.hass.localize("ui.panel.config.network.supervisor.scan_ap")} <ha-svg-icon slot="start" .path="${b}"></ha-svg-icon> </ha-button> ${this._accessPoints.length?i.qy` <ha-list> ${this._accessPoints.map(e=>i.qy` <ha-list-item twoline @click="${this._selectAP}" .activated="${e.ssid===this._wifiConfiguration?.ssid}" .ap="${e}"> <span>${e.ssid}</span> <span slot="secondary"> ${e.mac} - ${this.hass.localize("ui.panel.config.network.supervisor.signal_strength")}: ${e.signal} </span> </ha-list-item> `)} </ha-list> `:i.s6} ${this._wifiConfiguration?i.qy` <ha-radio-group orientation="horizontal" .value="${this._wifiConfiguration.auth||"open"}" name="auth" @change="${this._handleRadioValueChangedAp}"> <ha-radio-option value="open"> ${this.hass.localize("ui.panel.config.network.supervisor.open")} </ha-radio-option> <ha-radio-option value="wep"> ${this.hass.localize("ui.panel.config.network.supervisor.wep")} </ha-radio-option> <ha-radio-option value="wpa-psk"> ${this.hass.localize("ui.panel.config.network.supervisor.wpa")} </ha-radio-option> </ha-radio-group> ${"wpa-psk"===this._wifiConfiguration.auth||"wep"===this._wifiConfiguration.auth?i.qy` <ha-input type="password" password-toggle id="psk" .label="${this.hass.localize("ui.panel.config.network.supervisor.wifi_password")}" .version="${"wifi"}" @change="${this._handleInputValueChangedWifi}"> </ha-input> `:i.s6} `:i.s6} </ha-expansion-panel> `:i.s6} ${k.map(e=>this._interface[e]?this._renderIPConfiguration(e):i.s6)} ${this._dirty?i.qy`<ha-alert alert-type="warning"> ${this.hass.localize("ui.panel.config.network.supervisor.warning")} </ha-alert>`:i.s6} </div> <div class="card-actions"> <ha-button .loading="${this._processing}" @click="${this._updateNetwork}" .disabled="${!this._dirty}"> ${this.hass.localize("ui.common.save")} </ha-button> <ha-button variant="danger" appearance="plain" @click="${this._clear}"> ${this.hass.localize("ui.panel.config.network.supervisor.reset")} </ha-button> </div>`}_selectAP(e){this._wifiConfiguration=e.currentTarget.ap,k.forEach(e=>{"disabled"===this._interface[e].method&&(this._interface[e].method="auto")}),this._dirty=!0}async _scanForAP(){if(this._interface){this._scanning=!0;try{const e=await(0,v.qr)(this.hass,this._interface.interface);this._accessPoints=[],e.accesspoints?.forEach(e=>{if(e.ssid){const t=this._accessPoints.find(t=>t.ssid===e.ssid);t?e.signal>t.signal&&(this._accessPoints=this._accessPoints.filter(t=>t.ssid!==e.ssid),this._accessPoints.push(e)):this._accessPoints.push(e)}})}catch(e){(0,f.showAlertDialog)(this,{title:"Failed to scan for accesspoints",text:(0,g.VR)(e)})}finally{this._scanning=!1}}}_renderIPConfiguration(e){if("wireless"===this._interface?.type&&!this._wifiConfiguration?.ssid&&!this._interface.wifi?.ssid)return i.s6;const t=this._interface[e]?.nameservers||[];0===t.length&&t.push("");const a="auto"===this._interface[e]?.method;return i.qy` <ha-expansion-panel .header="${`IPv${e.charAt(e.length-1)}`}" outlined> <ha-radio-group orientation="horizontal" .version="${e}" .value="${this._interface[e]?.method}" name="${e}method" @change="${this._handleRadioValueChanged}"> <ha-radio-option value="auto"> ${this.hass.localize("ui.panel.config.network.supervisor.auto")} </ha-radio-option> <ha-radio-option value="static"> ${this.hass.localize("ui.panel.config.network.supervisor.static")} </ha-radio-option> <ha-radio-option value="disabled"> ${this.hass.localize("ui.panel.config.network.supervisor.disabled")} </ha-radio-option> </ha-radio-group> ${["static","auto"].includes(this._interface[e].method)?i.qy` ${this._interface[e].address.map((t,o)=>{const{ip:r,mask:s,prefix:n}=(0,v.or)(t);return i.qy` <div class="address-row"> <ha-input id="address" .label="${this.hass.localize("ui.panel.config.network.supervisor.ip")}" .version="${e}" .value="${r}" .index="${o}" @change="${this._handleInputValueChanged}" .disabled="${a}"> </ha-input> ${"ipv6"===e?i.qy` <ha-input id="prefix" .label="${this.hass.localize("ui.panel.config.network.supervisor.prefix")}" .version="${e}" .value="${n||""}" .index="${o}" @change="${this._handleInputValueChanged}" .disabled="${a}"> </ha-input> `:i.qy` <ha-input id="netmask" .label="${this.hass.localize("ui.panel.config.network.supervisor.netmask")}" .version="${e}" .value="${s||""}" .index="${o}" @change="${this._handleInputValueChanged}" .disabled="${a}"> </ha-input> `} ${this._interface[e].address.length>1&&!a?i.qy` <ha-icon-button .label="${this.hass.localize("ui.common.delete")}" .path="${_}" .version="${e}" .index="${o}" @click="${this._removeAddress}"></ha-icon-button> `:i.s6} </div> `})} ${a?i.s6:i.qy` <ha-button @click="${this._addAddress}" .version="${e}" class="add-address" appearance="filled" size="small"> ${this.hass.localize("ui.panel.config.network.supervisor.add_address")} <ha-svg-icon slot="start" .path="${y}"></ha-svg-icon> </ha-button> `} <ha-input id="gateway" .label="${this.hass.localize("ui.panel.config.network.supervisor.gateway")}" .version="${e}" .value="${this._interface[e].gateway||""}" @change="${this._handleInputValueChanged}" .disabled="${a}"> </ha-input> <div class="nameservers"> ${t.map((t,a)=>i.qy` <div class="address-row"> <ha-input id="nameserver" .label="${`${this.hass.localize("ui.panel.config.network.supervisor.dns_server")}${this._getPredefinedDnsName(t,e)}`}" .version="${e}" .value="${t}" .index="${a}" @change="${this._handleInputValueChanged}"> </ha-input> ${this._interface[e].nameservers?.length>1?i.qy` <ha-icon-button slot="end" .label="${this.hass.localize("ui.common.delete")}" .path="${_}" .version="${e}" .index="${a}" @click="${this._removeNameserver}"></ha-icon-button> `:i.s6} </div> `)} </div> <ha-dropdown @wa-show="${this._handleDNSMenuOpened}" @wa-hide="${this._handleDNSMenuClosed}" .version="${e}" @wa-select="${this._handleDropdownSelect}" class="add-nameserver"> <ha-button appearance="filled" size="small" slot="trigger"> ${this.hass.localize("ui.panel.config.network.supervisor.add_dns_server")} <ha-svg-icon slot="start" .path="${this._dnsMenuOpen?w:y}"></ha-svg-icon> </ha-button> ${Object.entries(x[e]).map(([t,a])=>i.qy` <ha-dropdown-item value="add_predefined" .version="${e}" .addresses="${a}"> ${t} </ha-dropdown-item> `)} <ha-dropdown-item value="add_custom" .version="${e}"> ${this.hass.localize("ui.panel.config.network.supervisor.custom_dns")} </ha-dropdown-item> </ha-dropdown> `:i.s6} </ha-expansion-panel> `}_getPredefinedDnsName(e,t){for(const[a,o]of Object.entries(x[t]))if(o.includes(e))return` - ${a}`;return""}async _updateNetwork(){this._processing=!0;let e={};k.forEach(t=>{e[t]={method:this._interface[t]?.method||"auto",nameservers:this._interface[t]?.nameservers?.filter(e=>e.trim())},"static"===this._interface[t]?.method&&(e[t]={...e[t],address:this._interface[t]?.address?.filter(e=>e.trim()),gateway:this._interface[t]?.gateway})}),this._wifiConfiguration&&(e={...e,wifi:{ssid:this._wifiConfiguration.ssid,mode:this._wifiConfiguration.mode,auth:this._wifiConfiguration.auth||"open"}},"open"!==e.wifi.auth&&(e.wifi={...e.wifi,psk:this._wifiConfiguration.psk})),e.enabled=!("disabled"===e.ipv4?.method&&"disabled"===e.ipv6?.method||"wireless"===this._interface.type&&void 0===this._wifiConfiguration&&!this._interface.wifi);try{await(0,v.$n)(this.hass,this._interface.interface,e),this._dirty=!1,await this._fetchNetworkInfo()}catch(e){(0,f.showAlertDialog)(this,{title:this.hass.localize("ui.panel.config.network.supervisor.failed_to_change"),text:(0,g.VR)(e)})}finally{this._processing=!1}}async _clear(){await this._fetchNetworkInfo(),this._interface.ipv4.method="auto",this._interface.ipv4.nameservers=[],this._interface.ipv6.method="auto",this._interface.ipv6.nameservers=[],this._interface.wifi=null,this._wifiConfiguration=void 0,this._dirty=!0,this.requestUpdate("_interface")}async _handleTabActivated(e){if(this._dirty){if(!await(0,f.dk)(this,{text:this.hass.localize("ui.panel.config.network.supervisor.unsaved"),confirmText:this.hass.localize("ui.common.yes"),dismissText:this.hass.localize("ui.common.no")}))return void this.requestUpdate("_interface")}this._curTabIndex=Number(e.detail.name),this._interface={...this._interfaces[this._curTabIndex]}}_handleRadioValueChanged(e){const t=e.currentTarget,a=t.value,o=t.version;a&&this._interface&&this._interface[o].method!==a&&(this._dirty=!0,this._interface[o].method=a,this.requestUpdate("_interface"))}_handleRadioValueChangedAp(e){const t=e.currentTarget.value;this._wifiConfiguration.auth=t,this._dirty=!0,this.requestUpdate("_wifiConfiguration")}_handleInputValueChanged(e){const t=e.target,a=t.value,o=e.target.version,i=t.id;if(a&&this._interface?.[o])if(this._dirty=!0,"address"===i){const t=e.target.index,{mask:i}=(0,v.or)(this._interface[o].address[t]),{mask:r}=(0,v.or)(a);this._interface[o].address[t]=(0,v.M0)(a,r||i||""),this.requestUpdate("_interface")}else if("netmask"===i){const t=e.target.index,{ip:i}=(0,v.or)(this._interface[o].address[t]);this._interface[o].address[t]=(0,v.M0)(i,a),this.requestUpdate("_interface")}else if("prefix"===i){const t=e.target.index,{ip:i}=(0,v.or)(this._interface[o].address[t]);this._interface[o].address[t]=`${i}/${a}`,this.requestUpdate("_interface")}else if("nameserver"===i){const t=e.target.index;this._interface[o].nameservers[t]=a,this.requestUpdate("_interface")}else this._interface[o][i]=a;else t.reportValidity()}_handleInputValueChangedWifi(e){const t=e.target,a=t.value,o=t.id;a&&this._wifiConfiguration&&this._wifiConfiguration[o]!==a?(this._dirty=!0,this._wifiConfiguration[o]=a):t.reportValidity()}_addAddress(e){const t=e.target.version;this._interface[t].address.push("ipv4"===t?"0.0.0.0/24":"::/64"),this._dirty=!0,this.requestUpdate("_interface")}_removeAddress(e){const t=e.target,a=t.index,o=t.version;this._interface[o].address.splice(a,1),this._dirty=!0,this.requestUpdate("_interface")}_handleDNSMenuOpened(){this._dnsMenuOpen=!0}_handleDNSMenuClosed(){this._dnsMenuOpen=!1}_addPredefinedDNS(e,t){this._interface[e].nameservers||(this._interface[e].nameservers=[]),this._interface[e].nameservers.push(...t),this._dirty=!0,this.requestUpdate("_interface")}_addCustomDNS(e){this._interface[e].nameservers||(this._interface[e].nameservers=[]),this._interface[e].nameservers.push(""),this._dirty=!0,this.requestUpdate("_interface")}_removeNameserver(e){const t=e.target,a=t.index,o=t.version;this._interface[o].nameservers.splice(a,1),this._dirty=!0,this.requestUpdate("_interface")}_handleDropdownSelect(e){const t=e.detail?.item?.value;"add_predefined"!==t?"add_custom"===t&&this._addCustomDNS(e.detail.item.version):this._addPredefinedDNS(e.detail.item.version,e.detail.item.addresses)}static get styles(){return[i.AH`.content{display:block;padding:20px 24px}ha-button.scan{margin-left:8px;margin-inline-start:8px;margin-inline-end:initial}ha-expansion-panel{--expansion-panel-summary-padding:0 16px;margin:4px 0}.address-row{display:flex;flex-direction:row;gap:var(--ha-space-2);align-items:center}.address-row ha-input{flex:1}.address-row #prefix{flex:none;width:95px}ha-icon-button{color:var(--secondary-text-color)}.address-row ha-icon-button{--ha-icon-button-size:36px;margin-top:var(--ha-space-5)}ha-dropdown{display:block}.add-address,.add-nameserver{margin-top:16px}ha-list-item{--mdc-list-side-padding:10px}.card-actions{display:flex;flex-direction:row-reverse;justify-content:space-between;align-items:center}ha-expansion-panel>:last-child{margin-bottom:16px}ha-tab-group{line-height:var(--ha-line-height-normal)}ha-tab-group-tab{flex:1}ha-tab-group-tab::part(base){width:100%;justify-content:center}`]}constructor(...e){super(...e),this._accessPoints=[],this._curTabIndex=0,this._dirty=!1,this._processing=!1,this._scanning=!1,this._dnsMenuOpen=!1}}(0,o.Cg)([(0,r.MZ)({attribute:!1})],$.prototype,"hass",void 0),(0,o.Cg)([(0,r.wk)()],$.prototype,"_accessPoints",void 0),(0,o.Cg)([(0,r.wk)()],$.prototype,"_curTabIndex",void 0),(0,o.Cg)([(0,r.wk)()],$.prototype,"_dirty",void 0),(0,o.Cg)([(0,r.wk)()],$.prototype,"_interface",void 0),(0,o.Cg)([(0,r.wk)()],$.prototype,"_interfaces",void 0),(0,o.Cg)([(0,r.wk)()],$.prototype,"_processing",void 0),(0,o.Cg)([(0,r.wk)()],$.prototype,"_scanning",void 0),(0,o.Cg)([(0,r.wk)()],$.prototype,"_wifiConfiguration",void 0),(0,o.Cg)([(0,r.wk)()],$.prototype,"_dnsMenuOpen",void 0),$=(0,o.Cg)([(0,r.EM)("supervisor-network")],$),t()}catch(e){t(e)}})}};