UNPKG

iobroker.lovelace

Version:

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

43 lines 132 kB
export const __rspack_esm_id=11314;export const __rspack_esm_ids=[11314];export const __webpack_modules__={63708(t,e,a){a.d(e,{fW:()=>s});a(18111),a(13579);var o=a(44537),i=a(36312);const s=(t,e)=>(l(e)||r(t,e))&&n(t,e),r=(t,e)=>!e.component||(0,o.e)(e.component).some(e=>(0,i.x)(t.config,e)),n=(t,e)=>!e.not_component||!(0,o.e)(e.not_component).some(e=>(0,i.x)(t.config,e)),l=t=>t.core},76830(t,e,a){a.d(e,{d:()=>o});a(18111),a(20116);const o=(t,e=!0)=>{if(t.defaultPrevented||0!==t.button||t.metaKey||t.ctrlKey||t.shiftKey)return;const a=t.composedPath().find(t=>"A"===t.tagName);if(!a||a.target||a.hasAttribute("download")||"external"===a.getAttribute("rel"))return;let o=a.href;if(!o||-1!==o.indexOf("mailto:"))return;const i=window.location,s=i.origin||i.protocol+"//"+i.host;return o.startsWith(s)&&(o=o.slice(s.length),"#"!==o)?(e&&t.preventDefault(),o):void 0}},69093(t,e,a){a.d(e,{t:()=>i});var o=a(71727);const i=t=>(0,o.m)(t.entity_id)},82286(t,e,a){a.d(e,{$:()=>o});const o=(t,e)=>i(t.attributes,e),i=(t,e)=>0!==(t.supported_features&e)},52943(t,e,a){a.d(e,{Z:()=>o});const o=t=>t.charAt(0).toUpperCase()+t.slice(1)},63130(t,e,a){a.d(e,{l:()=>i});var o=a(50248);const i=async(t,e)=>{if(navigator.clipboard)try{return void await navigator.clipboard.writeText(t)}catch{}const a=e||(0,o.n)()?.getRootNode()||document.body,i=document.createElement("textarea");i.value=t,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)}},89300(t,e,a){a.a(t,async function(t,e){try{var o=a(62826),i=a(5124),s=a(22441),r=a(6412),n=a(18350),l=a(65829),c=(a(67094),t([n,l]));[n,l]=c.then?(await c)():c;const d="M2.2,16.06L3.88,12L2.2,7.94L6.26,6.26L7.94,2.2L12,3.88L16.06,2.2L17.74,6.26L21.8,7.94L20.12,12L21.8,16.06L17.74,17.74L16.06,21.8L12,20.12L7.94,21.8L6.26,17.74L2.2,16.06M13,17V15H11V17H13M13,13V7H11V13H13Z",h="M9,20.42L2.79,14.21L5.62,11.38L9,14.77L18.88,4.88L21.71,7.71L9,20.42Z";class p extends i.WF{render(){const t=this.progress||this._result?"accent":this.appearance;return i.qy` <ha-button .appearance="${t}" .disabled="${this.disabled}" .loading="${this.progress}" .variant="${"success"===this._result?"success":"error"===this._result?"danger":this.variant}" class="${(0,r.H)({result:!!this._result,success:"success"===this._result,error:"error"===this._result})}"> ${this.iconPath?i.qy`<ha-svg-icon .path="${this.iconPath}" slot="start"></ha-svg-icon>`:i.s6} <slot>${this.label}</slot> </ha-button> ${this._result?i.qy` <div class="progress"> ${"success"===this._result?i.qy`<ha-svg-icon .path="${h}"></ha-svg-icon>`:"error"===this._result?i.qy`<ha-svg-icon .path="${d}"></ha-svg-icon>`:i.s6} </div> `:i.s6} `}actionSuccess(){this._setResult("success")}actionError(){this._setResult("error")}_setResult(t){this._result=t,setTimeout(()=>{this._result=void 0},2e3)}constructor(...t){super(...t),this.disabled=!1,this.progress=!1,this.appearance="accent",this.variant="brand"}}p.styles=i.AH`:host{outline:0;display:inline-block;position:relative}:host([progress]){pointer-events:none}.progress{bottom:0;display:flex;justify-content:center;align-items:center;position:absolute;top:0;width:100%}ha-button{width:100%}ha-button.result::part(caret),ha-button.result::part(end),ha-button.result::part(label),ha-button.result::part(spinner),ha-button.result::part(start){visibility:hidden}:host([appearance=brand]) ha-svg-icon{color:var(--white-color)}`,(0,o.Cg)([(0,s.MZ)()],p.prototype,"label",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean})],p.prototype,"disabled",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,reflect:!0})],p.prototype,"progress",void 0),(0,o.Cg)([(0,s.MZ)()],p.prototype,"appearance",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],p.prototype,"iconPath",void 0),(0,o.Cg)([(0,s.MZ)()],p.prototype,"variant",void 0),(0,o.Cg)([(0,s.wk)()],p.prototype,"_result",void 0),p=(0,o.Cg)([(0,s.EM)("ha-progress-button")],p),e()}catch(t){e(t)}})},34296(t,e,a){var o=a(62826),i=a(96229),s=a(26069),r=a(91735),n=a(42034),l=a(5124),c=a(22441);class d extends i.k{renderOutline(){return this.filled?l.qy`<span class="filled"></span>`:super.renderOutline()}getContainerClasses(){return{...super.getContainerClasses(),active:this.active}}renderPrimaryContent(){return l.qy` <span class="leading icon" aria-hidden="true"> ${this.renderLeadingIcon()} </span> <span class="label">${this.label}</span> <span class="touch"></span> <span class="trailing leading icon" aria-hidden="true"> ${this.renderTrailingIcon()} </span> `}renderTrailingIcon(){return l.qy`<slot name="trailing-icon"></slot>`}constructor(...t){super(...t),this.filled=!1,this.active=!1}}d.styles=[r.R,n.R,s.R,l.AH`:host{--md-sys-color-primary:var(--primary-text-color);--md-sys-color-on-surface:var(--primary-text-color);--md-assist-chip-container-shape:var(
          --ha-assist-chip-container-shape,
          16px
        );--md-assist-chip-outline-color:var(--outline-color);--md-assist-chip-label-text-weight:400}.filled{display:flex;pointer-events:none;border-radius:inherit;inset:0;position:absolute;background-color:var(--ha-assist-chip-filled-container-color)}::slotted([slot=icon]),::slotted([slot=trailing-icon]){display:flex;--mdc-icon-size:var(--md-input-chip-icon-size, 18px);font-size:var(--_label-text-size)!important}.trailing.icon ::slotted(*),.trailing.icon svg{margin-inline-end:unset;margin-inline-start:var(--_icon-label-space)}::before{background:var(--ha-assist-chip-container-color,transparent);opacity:var(--ha-assist-chip-container-opacity, 1)}:where(.active)::before{background:var(--ha-assist-chip-active-container-color);opacity:var(--ha-assist-chip-active-container-opacity)}.label{font-family:var(--ha-font-family-body)}`],(0,o.Cg)([(0,c.MZ)({type:Boolean,reflect:!0})],d.prototype,"filled",void 0),(0,o.Cg)([(0,c.MZ)({type:Boolean})],d.prototype,"active",void 0),d=(0,o.Cg)([(0,c.EM)("ha-assist-chip")],d)},5745(t,e,a){var o=a(62826),i=a(99731),s=a(22441);class r extends i.Y{}r=(0,o.Cg)([(0,s.EM)("ha-chip-set")],r)},13513(t,e,a){var o=a(62826),i=a(5124),s=a(22441),r=a(36240);class n extends i.WF{render(){const t=(0,r.gN)((0,r.NN)((0,r.S8)(this.value,this.min,this.max),this.min,this.max));return i.JW` <svg> <g> <rect/> <rect width="${t}%"/> </g> </svg> `}constructor(...t){super(...t),this.min=0,this.max=100}}n.styles=i.AH`rect{height:100%}rect:first-child{width:100%;fill:var(--ha-bar-background-color,var(--secondary-background-color))}rect:last-child{fill:var(--ha-bar-primary-color,var(--primary-color))}svg{border-radius:var(--ha-bar-border-radius,var(--ha-border-radius-sm));height:12px;width:100%}`,(0,o.Cg)([(0,s.MZ)({type:Number})],n.prototype,"min",void 0),(0,o.Cg)([(0,s.MZ)({type:Number})],n.prototype,"max",void 0),(0,o.Cg)([(0,s.MZ)({type:Number})],n.prototype,"value",void 0),n=(0,o.Cg)([(0,s.EM)("ha-bar")],n)},75064(t,e,a){var o=a(62826),i=a(5124),s=a(22441),r=a(2846);class n extends r.G{constructor(...t){super(...t),this.borderTop=!1}}n.styles=[...r.J,i.AH`:host{--md-list-item-one-line-container-height:48px;--md-list-item-two-line-container-height:64px}:host([border-top]) md-item{border-top:1px solid var(--divider-color)}[slot=start]{--state-icon-color:var(--secondary-text-color)}[slot=overline]{line-height:1.15rem;font-size:calc(var(--mdc-typography-subtitle1-font-size, 1rem) * .75);font-weight:var(--mdc-typography-subtitle1-font-weight,400);font-family:var(
          --mdc-typography-subtitle1-font-family,
          var(--mdc-typography-font-family)
        );color:var(--mdc-select-label-ink-color,rgba(0,0,0,.6))}[slot=headline]{line-height:var(--ha-line-height-normal);font-size:var(--ha-font-size-m);white-space:nowrap}[slot=supporting-text]{line-height:var(--ha-line-height-normal);font-size:var(--ha-font-size-s);white-space:nowrap}::slotted(img),::slotted(state-badge){width:32px;height:32px}::slotted(.code){font-family:var(--ha-font-family-code);font-size:var(--ha-font-size-xs)}::slotted(.domain){font-size:var(--ha-font-size-s);font-weight:var(--ha-font-weight-normal);line-height:var(--ha-line-height-normal);align-self:flex-end;max-width:30%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}`],(0,o.Cg)([(0,s.MZ)({type:Boolean,reflect:!0,attribute:"border-top"})],n.prototype,"borderTop",void 0),n=(0,o.Cg)([(0,s.EM)("ha-combo-box-item")],n)},70947(t,e,a){var o=a(62826),i=a(50759),s=(a(38625),a(5124)),r=a(22441);a(67094);class n extends i.A{renderCheckboxIcon(){return s.qy` <ha-svg-icon id="check" part="checkmark" .path="${this.checked?"M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z":"M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z"}"></ha-svg-icon> `}static get styles(){return[i.A.styles,s.AH`:host{min-height:var(--ha-space-10)}#check{visibility:visible;flex-shrink:0}#icon ::slotted(*){color:var(--ha-color-on-neutral-normal)}:host([variant=danger]) #icon ::slotted(*){color:var(--ha-color-on-danger-quiet)}:host([selected]){font-weight:var(--ha-font-weight-medium);color:var(--primary-color);background-color:var(--ha-color-fill-primary-quiet-resting);--icon-primary-color:var(--primary-color)}:host([selected]:hover){background-color:var(--ha-color-fill-primary-quiet-hover)}`]}constructor(...t){super(...t),this.selected=!1}}(0,o.Cg)([(0,r.MZ)({type:Boolean,reflect:!0})],n.prototype,"selected",void 0),n=(0,o.Cg)([(0,r.EM)("ha-dropdown-item")],n)},29823(t,e,a){a.a(t,async function(t,e){try{var o=a(62826),i=a(52254),s=a(5124),r=a(22441),n=t([i]);i=(n.then?(await n)():n)[0];class l extends i.A{get anchorElement(){return this.popup?.anchor}set anchorElement(t){this.popup&&(this.popup.anchor&&"ha-icon-button"===this.popup.anchor.localName&&(this.popup.anchor.selected=!1),this.popup.anchor=t)}getTrigger(){return this.anchorElement?this.anchorElement:super.getTrigger()}async showMenu(){await super.showMenu();const t=this.getTrigger();t&&"ha-icon-button"===t.localName&&(t.selected=!0)}async hideMenu(){const t=this.getTrigger();t&&"ha-icon-button"===t.localName&&(t.selected=!1),await super.hideMenu()}static get styles(){return[i.A.styles,s.AH`:host{font-size:var(--ha-dropdown-font-size, var(--ha-font-size-m));--wa-color-surface-raised:var(
            --card-background-color,
            var(--ha-dialog-surface-background, var(--mdc-theme-surface, #fff)),
          )}#menu{padding:var(--ha-space-1)}wa-popup::part(popup){z-index:200}`]}constructor(...t){super(...t),this.dropdownTag="ha-dropdown",this.dropdownItemTag="ha-dropdown-item"}}(0,o.Cg)([(0,r.MZ)({attribute:!1})],l.prototype,"dropdownTag",void 0),(0,o.Cg)([(0,r.MZ)({attribute:!1})],l.prototype,"dropdownItemTag",void 0),l=(0,o.Cg)([(0,r.EM)("ha-dropdown")],l),e()}catch(t){e(t)}})},6(t,e,a){var o=a(62826),i=a(68462),s=a(38627),r=a(5124),n=a(22441),l=a(6412),c=a(1087);class d extends i.M{render(){const t={"mdc-form-field--align-end":this.alignEnd,"mdc-form-field--space-between":this.spaceBetween,"mdc-form-field--nowrap":this.nowrap};return r.qy` <div class="mdc-form-field ${(0,l.H)(t)}"> <slot></slot> <label class="mdc-label" @click="${this._labelClick}"> <slot name="label">${this.label}</slot> </label> </div>`}_labelClick(){const t=this.input;if(t&&(t.focus(),!t.disabled))if("HA-CHECKBOX"===t.tagName)t.checked=!t.checked,(0,c.r)(t,"change");else t.click()}constructor(...t){super(...t),this.disabled=!1}}d.styles=[s.R,r.AH`:host(:not([alignEnd])) ::slotted(ha-switch){margin-right:10px;margin-inline-end:10px;margin-inline-start:initial}.mdc-form-field{align-items:var(--ha-formfield-align-items,center);gap:var(--ha-space-1)}.mdc-form-field>label{direction:var(--direction);margin-inline-start:0;margin-inline-end:auto;padding:0}:host([disabled]) label{color:var(--disabled-text-color)}`],(0,o.Cg)([(0,n.MZ)({type:Boolean,reflect:!0})],d.prototype,"disabled",void 0),d=(0,o.Cg)([(0,n.EM)("ha-formfield")],d)},47680(t,e,a){a.r(e),a.d(e,{HaIcon:()=>C});a(74423);var o=a(62826),i=a(5124),s=a(22441),r=a(1087),n=a(9899),l=a(700),c=(a(44114),a(18111),a(7588),a(95192)),d=a(7553);const h=JSON.parse('{"version":"7.4.47","parts":[{"file":"7a7139d465f1f41cb26ab851a17caa21a9331234"},{"start":"account-supervisor-circle-","file":"9561286c4c1021d46b9006596812178190a7cc1c"},{"start":"alpha-r-c","file":"eb466b7087fb2b4d23376ea9bc86693c45c500fa"},{"start":"arrow-decision-o","file":"4b3c01b7e0723b702940c5ac46fb9e555646972b"},{"start":"baby-f","file":"2611401d85450b95ab448ad1d02c1a432b409ed2"},{"start":"battery-hi","file":"89bcd31855b34cd9d31ac693fb073277e74f1f6a"},{"start":"blur-r","file":"373709cd5d7e688c2addc9a6c5d26c2d57c02c48"},{"start":"briefcase-account-","file":"a75956cf812ee90ee4f656274426aafac81e1053"},{"start":"calendar-question-","file":"3253f2529b5ebdd110b411917bacfacb5b7063e6"},{"start":"car-lig","file":"74566af3501ad6ae58ad13a8b6921b3cc2ef879d"},{"start":"cellphone-co","file":"7677f1cfb2dd4f5562a2aa6d3ae43a2e6997b21a"},{"start":"circle-slice-2","file":"70d08c50ec4522dd75d11338db57846588263ee2"},{"start":"cloud-co","file":"141d2bfa55ca4c83f4bae2812a5da59a84fec4ff"},{"start":"cog-s","file":"5a640365f8e47c609005d5e098e0e8104286d120"},{"start":"cookie-l","file":"dd85b8eb8581b176d3acf75d1bd82e61ca1ba2fc"},{"start":"currency-eur-","file":"15362279f4ebfc3620ae55f79d2830ad86d5213e"},{"start":"delete-o","file":"239434ab8df61237277d7599ebe066c55806c274"},{"start":"draw-","file":"5605918a592070803ba2ad05a5aba06263da0d70"},{"start":"emoticon-po","file":"a838cfcec34323946237a9f18e66945f55260f78"},{"start":"fan","file":"effd56103b37a8c7f332e22de8e4d67a69b70db7"},{"start":"file-question-","file":"b2424b50bd465ae192593f1c3d086c5eec893af8"},{"start":"flask-off-","file":"3b76295cde006a18f0301dd98eed8c57e1d5a425"},{"start":"food-s","file":"1c6941474cbeb1755faaaf5771440577f4f1f9c6"},{"start":"gamepad-u","file":"c6efe18db6bc9654ae3540c7dee83218a5450263"},{"start":"google-f","file":"df341afe6ad4437457cf188499cb8d2df8ac7b9e"},{"start":"head-c","file":"282121c9e45ed67f033edcc1eafd279334c00f46"},{"start":"home-pl","file":"27e8e38fc7adcacf2a210802f27d841b49c8c508"},{"start":"inbox-","file":"0f0316ec7b1b7f7ce3eaabce26c9ef619b5a1694"},{"start":"key-v","file":"ea33462be7b953ff1eafc5dac2d166b210685a60"},{"start":"leaf-circle-","file":"33db9bbd66ce48a2db3e987fdbd37fb0482145a4"},{"start":"lock-p","file":"b89e27ed39e9d10c44259362a4b57f3c579d3ec8"},{"start":"message-s","file":"7b5ab5a5cadbe06e3113ec148f044aa701eac53a"},{"start":"moti","file":"01024d78c248d36805b565e343dd98033cc3bcaf"},{"start":"newspaper-variant-o","file":"22a6ec4a4fdd0a7c0acaf805f6127b38723c9189"},{"start":"on","file":"c73d55b412f394e64632e2011a59aa05e5a1f50d"},{"start":"paw-ou","file":"3f669bf26d16752dc4a9ea349492df93a13dcfbf"},{"start":"pigg","file":"0c24edb27eb1c90b6e33fc05f34ef3118fa94256"},{"start":"printer-pos-sy","file":"41a55cda866f90b99a64395c3bb18c14983dcf0a"},{"start":"read","file":"c7ed91552a3a64c9be88c85e807404cf705b7edf"},{"start":"robot-vacuum-variant-o","file":"917d2a35d7268c0ea9ad9ecab2778060e19d90e0"},{"start":"sees","file":"6e82d9861d8fac30102bafa212021b819f303bdb"},{"start":"shoe-f","file":"e2fe7ce02b5472301418cc90a0e631f187b9f238"},{"start":"snowflake-m","file":"a28ba9f5309090c8b49a27ca20ff582a944f6e71"},{"start":"st","file":"7e92d03f095ec27e137b708b879dfd273bd735ab"},{"start":"su","file":"61c74913720f9de59a379bdca37f1d2f0dc1f9db"},{"start":"tag-plus-","file":"8f3184156a4f38549cf4c4fffba73a6a941166ae"},{"start":"timer-a","file":"baab470d11cfb3a3cd3b063ee6503a77d12a80d0"},{"start":"transit-d","file":"8561c0d9b1ac03fab360fd8fe9729c96e8693239"},{"start":"vector-arrange-b","file":"c9a3439257d4bab33d3355f1f2e11842e8171141"},{"start":"water-ou","file":"02dbccfb8ca35f39b99f5a085b095fc1275005a0"},{"start":"webc","file":"57bafd4b97341f4f2ac20a609d023719f23a619c"},{"start":"zip","file":"65ae094e8263236fa50486584a08c03497a38d93"}]}');let p;const u=()=>(p||(p=g().catch(t=>{throw p=void 0,t})),p),g=async()=>{const t=(0,c.y$)("hass-icon-db","mdi-icon-store"),e=await(0,c.Jt)("_version",t);return e?e!==h.version&&(await(0,c.IU)(t),(0,c.hZ)("_version",h.version,t)):(0,c.hZ)("_version",h.version,t),t},b=["mdi","hass","hassio","hademo"];let v=[];a(67094);const m={},f={},y=(0,n.s)(()=>(async t=>{const e=Object.keys(t),a=await Promise.allSettled(Object.values(t));(await u())("readwrite",o=>{a.forEach((a,i)=>{"fulfilled"===a.status&&Object.entries(a.value).forEach(([t,e])=>{o.put(e,t)}),delete t[e[i]]})})})(f),2e3),_={},w={"home-assistant":()=>a.e(58781).then(a.bind(a,53580)).then(t=>t.mdiHomeAssistant),"music-assistant":()=>a.e(56009).then(a.bind(a,10576)).then(t=>t.mdiMusicAssistant),esphome:()=>a.e(88800).then(a.bind(a,45091)).then(t=>t.mdiEsphomeLogo)};class C extends i.WF{willUpdate(t){super.willUpdate(t),t.has("icon")&&(this._path=void 0,this._secondaryPath=void 0,this._viewBox=void 0,this._loadIcon())}render(){return this.icon?this._legacy?i.qy` <iron-icon .icon="${this.icon}"></iron-icon>`:i.qy`<ha-svg-icon .path="${this._path}" .secondaryPath="${this._secondaryPath}" .viewBox="${this._viewBox}"></ha-svg-icon>`:i.s6}async _loadIcon(){if(!this.icon)return;const t=this.icon,[e,a]=this.icon.split(":",2);let o,i=a;if(!e||!i)return;if(!b.includes(e)){const a=l.y[e];return a?void(a&&"function"==typeof a.getIcon&&this._setCustomPath(a.getIcon(i),t)):void(this._legacy=!0)}if(this._legacy=!1,i in m){const t=m[i];let a;t.newName?(a=`Icon ${e}:${i} was renamed to ${e}:${t.newName}, please change your config, it will be removed in version ${t.removeIn}.`,i=t.newName):a=`Icon ${e}:${i} was removed from MDI, please replace this icon with an other icon in your config, it will be removed in version ${t.removeIn}.`,console.warn(a),(0,r.r)(this,"write_log",{level:"warning",message:a})}if(i in _)return void(this._path=_[i]);if(i in w){const e=await w[i]();return this.icon===t&&(this._path=e),void(_[i]=e)}try{o=await(t=>new Promise((e,a)=>{if(v.push([t,e,a]),v.length>1)return;const o=u();(0,d.h)(1e3,(async()=>{(await o)("readonly",t=>{for(const[e,a,o]of v)(0,c.Yd)(t.get(e)).then(t=>a(t)).catch(t=>o(t));v=[]})})()).catch(t=>{for(const[,,e]of v)e(t);v=[]})}))(i)}catch(t){o=void 0}if(o)return this.icon===t&&(this._path=o),void(_[i]=o);const s=(t=>{let e;for(const a of h.parts){if(void 0!==a.start&&t<a.start)break;e=a}return e.file})(i);if(s in f)return void this._setPath(f[s],i,t);const n=fetch(`/static/mdi/${s}.json`).then(t=>t.json());f[s]=n,this._setPath(n,i,t),n.catch(()=>{delete f[s]}),y()}async _setCustomPath(t,e){const a=await t;this.icon===e&&(this._path=a.path,this._secondaryPath=a.secondaryPath,this._viewBox=a.viewBox)}async _setPath(t,e,a){try{const o=await t;this.icon===a&&(this._path=o[e]),_[e]=o[e]}catch(t){}}constructor(...t){super(...t),this._legacy=!1}}C.styles=i.AH`:host{fill:currentcolor}`,(0,o.Cg)([(0,s.MZ)()],C.prototype,"icon",void 0),(0,o.Cg)([(0,s.wk)()],C.prototype,"_path",void 0),(0,o.Cg)([(0,s.wk)()],C.prototype,"_secondaryPath",void 0),(0,o.Cg)([(0,s.wk)()],C.prototype,"_viewBox",void 0),(0,o.Cg)([(0,s.wk)()],C.prototype,"_legacy",void 0),C=(0,o.Cg)([(0,s.EM)("ha-icon")],C)},3449(t,e,a){var o=a(62826),i=a(5124),s=a(22441);class r extends i.WF{render(){return i.qy`<slot></slot>`}constructor(...t){super(...t),this.disabled=!1}}r.styles=i.AH`:host{display:block;color:var(--mdc-text-field-label-ink-color,rgba(0,0,0,.6));font-size:var(--ha-font-size-s);padding-left:16px;padding-right:16px;padding-inline-start:16px;padding-inline-end:16px;letter-spacing:var(
        --mdc-typography-caption-letter-spacing,
        .0333333333em
      );line-height:normal}:host([disabled]){color:var(--mdc-text-field-disabled-ink-color,rgba(0,0,0,.6))}`,(0,o.Cg)([(0,s.MZ)({type:Boolean,reflect:!0})],r.prototype,"disabled",void 0),r=(0,o.Cg)([(0,s.EM)("ha-input-helper-text")],r)},38377(t,e,a){a(74423),a(18111),a(22489),a(61701),a(18237);var o=a(62826),i=a(5124),s=a(22441),r=a(20889),n=a(30015),l=a.n(n),c=a(1087),d=(a(14603),a(47566),a(98721),a(2209));let h;var p=a(996);const u=t=>i.qy`${t}`,g=new p.G(1e3),b={reType:/(?<input>(\[!(?<type>caution|important|note|tip|warning)\])(?:\s|\\n)?)/i,typeToHaAlert:{caution:"error",important:"info",note:"info",tip:"success",warning:"warning"}};class v extends i.mN{disconnectedCallback(){if(super.disconnectedCallback(),this.cache){const t=this._computeCacheKey();g.set(t,this.innerHTML)}}createRenderRoot(){return this}update(t){super.update(t),void 0!==this.content&&(this._renderPromise=this._render())}async getUpdateComplete(){return await super.getUpdateComplete(),await this._renderPromise,!0}willUpdate(t){if(!this.innerHTML&&this.cache){const t=this._computeCacheKey();g.has(t)&&((0,i.XX)(u((0,r._)(g.get(t))),this.renderRoot),this._resize())}}_computeCacheKey(){return l()({content:this.content,allowSvg:this.allowSvg,allowDataUrl:this.allowDataUrl,breaks:this.breaks})}async _render(){const t=await(async(t,e,o)=>(h||(h=(0,d.LV)(new Worker(new URL(a.p+a.u(55640),a.b)))),h.renderMarkdown(t,e,o)))(String(this.content),{breaks:this.breaks,gfm:!0},{allowSvg:this.allowSvg,allowDataUrl:this.allowDataUrl});(0,i.XX)(u((0,r._)(t.join(""))),this.renderRoot),this._resize();const e=document.createTreeWalker(this,NodeFilter.SHOW_ELEMENT,null);for(;e.nextNode();){const t=e.currentNode;if(t instanceof HTMLAnchorElement&&t.host!==document.location.host)t.target="_blank",t.rel="noreferrer noopener";else if(t instanceof HTMLImageElement)this.lazyImages&&(t.loading="lazy"),t.addEventListener("load",this._resize);else if(t instanceof HTMLQuoteElement){const a=t.firstElementChild?.firstChild?.textContent&&b.reType.exec(t.firstElementChild.firstChild.textContent);if(a){const{type:o}=a.groups,i=document.createElement("ha-alert");i.alertType=b.typeToHaAlert[o.toLowerCase()],i.append(...Array.from(t.childNodes).map(t=>{const e=Array.from(t.childNodes);if(!this.breaks&&e.length){const t=e[0];t.nodeType===Node.TEXT_NODE&&t.textContent===a.input&&t.textContent?.includes("\n")&&(t.textContent=t.textContent.split("\n").slice(1).join("\n"))}return e}).reduce((t,e)=>t.concat(e),[]).filter(t=>t.textContent&&t.textContent!==a.input)),e.parentNode().replaceChild(i,t)}}else t instanceof HTMLElement&&["ha-alert","ha-qr-code","ha-icon","ha-svg-icon"].includes(t.localName)&&a(62003)(`./${t.localName}`)}}constructor(...t){super(...t),this.allowSvg=!1,this.allowDataUrl=!1,this.breaks=!1,this.lazyImages=!1,this.cache=!1,this._renderPromise=Promise.resolve(),this._resize=()=>(0,c.r)(this,"content-resize")}}(0,o.Cg)([(0,s.MZ)()],v.prototype,"content",void 0),(0,o.Cg)([(0,s.MZ)({attribute:"allow-svg",type:Boolean})],v.prototype,"allowSvg",void 0),(0,o.Cg)([(0,s.MZ)({attribute:"allow-data-url",type:Boolean})],v.prototype,"allowDataUrl",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean})],v.prototype,"breaks",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,attribute:"lazy-images"})],v.prototype,"lazyImages",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean})],v.prototype,"cache",void 0),v=(0,o.Cg)([(0,s.EM)("ha-markdown-element")],v)},3587(t,e,a){var o=a(62826),i=a(5124),s=a(22441);a(38377);class r extends i.WF{async getUpdateComplete(){const t=await super.getUpdateComplete();return await(this._markdownElement?.updateComplete),t}render(){return this.content?i.qy`<ha-markdown-element .content="${this.content}" .allowSvg="${this.allowSvg}" .allowDataUrl="${this.allowDataUrl}" .breaks="${this.breaks}" .lazyImages="${this.lazyImages}" .cache="${this.cache}"></ha-markdown-element>`:i.s6}constructor(...t){super(...t),this.allowSvg=!1,this.allowDataUrl=!1,this.breaks=!1,this.lazyImages=!1,this.cache=!1}}r.styles=i.AH`:host{display:block}ha-markdown-element{-ms-user-select:text;-webkit-user-select:text;-moz-user-select:text}ha-markdown-element>:first-child{margin-top:0}ha-markdown-element>:last-child{margin-bottom:0}ha-alert{display:block;margin:var(--ha-space-1) 0}a{color:var(--markdown-link-color,var(--primary-color))}img{background-color:var(--markdown-image-background-color);border-radius:var(--markdown-image-border-radius);max-width:100%}p:first-child>img:first-child{vertical-align:top}p:first-child>img:last-child{vertical-align:top}ha-markdown-element>:is(ol,ul){padding-inline-start:var(--markdown-list-indent,revert)}li:has(input[type=checkbox]){list-style:none}li:has(input[type=checkbox])>input[type=checkbox]{margin-left:0}svg{background-color:var(--markdown-svg-background-color,none);color:var(--markdown-svg-color,none)}code,pre{background-color:var(--markdown-code-background-color,none);border-radius:var(--ha-border-radius-sm);color:var(--markdown-code-text-color,inherit)}code{font-size:var(--ha-font-size-s);padding:.2em .4em}pre code{padding:0}pre{padding:var(--ha-space-4);overflow:auto;line-height:var(--ha-line-height-condensed);font-family:var(--ha-font-family-code)}h1,h2,h3,h4,h5,h6{line-height:initial}h2{font-size:var(--ha-font-size-xl);font-weight:var(--ha-font-weight-bold)}hr{border-color:var(--divider-color);border-bottom:none;margin:var(--ha-space-4) 0}table[role=presentation]{--markdown-table-border-collapse:separate;--markdown-table-border-width:0;--markdown-table-padding-inline:0;--markdown-table-padding-block:0}table[role=presentation] td,table[role=presentation] th{vertical-align:middle}table[role=presentation] td[valign=top],table[role=presentation] th[valign=top]{vertical-align:top}table[role=presentation] td[valign=middle],table[role=presentation] th[valign=middle]{vertical-align:middle}table[role=presentation] td[valign=bottom],table[role=presentation] th[valign=bottom]{vertical-align:bottom}table[role=presentation] td[valign=baseline],table[role=presentation] th[valign=baseline]{vertical-align:baseline}@supports (border-width:attr(border px,0)){table[role=presentation]{--markdown-table-border-width:attr(border px, 0)}table[role=presentation] td,table[role=presentation] th{vertical-align:attr(valign,middle)}}table[role=presentation][border="0"]{--markdown-table-border-width:0}table[role=presentation][border="1"]{--markdown-table-border-width:1px}table[role=presentation][border="2"]{--markdown-table-border-width:2px}table[role=presentation][border="3"]{--markdown-table-border-width:3px}table{border-collapse:var(--markdown-table-border-collapse,collapse)}div:has(> table){overflow:auto}th{text-align:var(--markdown-table-text-align,start)}td,th{border-width:var(--markdown-table-border-width,1px);border-style:var(--markdown-table-border-style,solid);border-color:var(--markdown-table-border-color,var(--divider-color));padding-inline:var(--markdown-table-padding-inline,0.5em);padding-block:var(--markdown-table-padding-block,0.25em)}blockquote{border-left:4px solid var(--divider-color);margin-inline:0;padding-inline:1em}`,(0,o.Cg)([(0,s.MZ)()],r.prototype,"content",void 0),(0,o.Cg)([(0,s.MZ)({attribute:"allow-svg",type:Boolean})],r.prototype,"allowSvg",void 0),(0,o.Cg)([(0,s.MZ)({attribute:"allow-data-url",type:Boolean})],r.prototype,"allowDataUrl",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean})],r.prototype,"breaks",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,attribute:"lazy-images"})],r.prototype,"lazyImages",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean})],r.prototype,"cache",void 0),(0,o.Cg)([(0,s.P)("ha-markdown-element")],r.prototype,"_markdownElement",void 0),r=(0,o.Cg)([(0,s.EM)("ha-markdown")],r)},2846(t,e,a){a.d(e,{G:()=>c,J:()=>l});var o=a(62826),i=a(58168),s=a(82553),r=a(5124),n=a(22441);a(54276);const l=[s.R,r.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?r.s6:r.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)},88285(t,e,a){a.a(t,async function(t,e){try{var o=a(62826),i=a(35211),s=a(5124),r=a(22441),n=a(63672),l=a(1087),c=a(22792),d=a(17894),h=(a(75064),a(47680),a(26300)),p=t([h]);h=(p.then?(await p)():p)[0];const u="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z",g="M7,10L12,15L17,10H7Z";class b extends((0,d.c)(s.WF)){async focus(){await this.updateComplete,await(this.item?.focus())}render(){const t=!!this.value,e=!(!this.value||this.required||this.disabled||this.hideClearIcon),a=this.placeholder??this.label,o=this.label&&t?s.qy`<span slot="overline">${this.label}${this.required?" *":""}</span>`:s.s6,i=t?this.valueRenderer?this.valueRenderer(this.value??""):s.qy`<span slot="headline">${this.value}</span>`:a?s.qy`<span slot="headline" class="placeholder"> ${a}${this.required?" *":""} </span>`:s.s6;return s.qy` <ha-combo-box-item aria-label="${(0,n.J)(this.label||this.placeholder)}" .disabled="${this.disabled}" type="button" compact="compact"> ${this.image?s.qy`<img alt="${this.label??""}" slot="start" .src="${this.image}" crossorigin="anonymous" referrerpolicy="no-referrer">`:this.icon?s.qy`<ha-icon slot="start" .icon="${this.icon}"></ha-icon>`:s.qy`<slot name="start"></slot>`} ${o}${i} ${this.unknown?s.qy`<div slot="supporting-text" class="unknown"> ${this.unknownItemText||this._i18n?.localize("ui.components.combo-box.unknown_item")} </div>`:s.s6} ${e?s.qy` <ha-icon-button class="clear" slot="end" @click="${this._clear}" .path="${u}"></ha-icon-button> `:s.s6} <ha-svg-icon class="arrow" slot="end" .path="${g}"></ha-svg-icon> </ha-combo-box-item> `}_clear(t){t.stopPropagation(),(0,l.r)(this,"clear")}static get styles(){return[s.AH`ha-combo-box-item[disabled]{background-color:var(--ha-color-form-background-disabled);--md-list-item-disabled-opacity:0.5;opacity:.5;cursor:not-allowed}ha-combo-box-item{position:relative;background-color:var(--ha-color-form-background);border-radius:var(--ha-border-radius-sm);border-end-end-radius:0;border-end-start-radius:0;--md-list-item-one-line-container-height:56px;--md-list-item-two-line-container-height:56px;--md-list-item-top-space:0px;--md-list-item-bottom-space:0px;--md-list-item-leading-space:var(--ha-space-4);--md-list-item-trailing-space:var(--ha-space-2);--ha-md-list-item-gap:var(--ha-space-2);--md-focus-ring-width:0px;--md-focus-ring-duration:0s}ha-combo-box-item:after{display:block;content:"";position:absolute;pointer-events:none;bottom:0;left:0;right:0;height:1px;width:100%;background-color:var(--ha-color-border-neutral-loud);transform:height 180ms ease-in-out,background-color 180ms ease-in-out}ha-combo-box-item:focus:after{height:2px;background-color:var(--mdc-theme-primary)}:host([unknown]) ha-combo-box-item{background-color:var(--ha-color-fill-warning-quiet-resting)}:host([invalid]) ha-combo-box-item:after{height:2px;background-color:var(--mdc-theme-error,var(--error-color,#b00020))}.clear{margin:0 -8px;--ha-icon-button-size:32px;--ha-icon-button-padding-inline:var(--ha-space-1)}.arrow{--mdc-icon-size:20px;width:32px}.placeholder{color:var(--secondary-text-color)}:host([invalid]) .placeholder{color:var(--mdc-theme-error,var(--error-color,#b00020))}.unknown{color:var(--ha-color-on-warning-normal)}`]}constructor(...t){super(...t),this.invalid=!1}}(0,o.Cg)([(0,r.MZ)({type:Boolean,reflect:!0})],b.prototype,"invalid",void 0),(0,o.Cg)([(0,r.P)("ha-combo-box-item",!0)],b.prototype,"item",void 0),(0,o.Cg)([(0,r.wk)(),(0,i.Fg)({context:c.D5,subscribe:!0})],b.prototype,"_i18n",void 0),b=(0,o.Cg)([(0,r.EM)("ha-picker-field")],b),e()}catch(t){e(t)}})},54276(t,e,a){var o=a(62826),i=a(76482),s=a(91382),r=a(96245),n=a(5124),l=a(22441);class c extends s.n{attach(t){super.attach(t),this.attachableTouchController.attach(t)}disconnectedCallback(){super.disconnectedCallback(),this.hovered=!1,this.pressed=!1}detach(){super.detach(),this.attachableTouchController.detach()}_onTouchControlChange(t,e){t?.removeEventListener("touchend",this._handleTouchEnd),e?.addEventListener("touchend",this._handleTouchEnd)}constructor(...t){super(...t),this.attachableTouchController=new i.i(this,this._onTouchControlChange.bind(this)),this._handleTouchEnd=()=>{this.disabled||super.endPressAnimation()}}}c.styles=[r.R,n.AH`:host{--md-ripple-hover-opacity:var(--ha-ripple-hover-opacity, 0.08);--md-ripple-pressed-opacity:var(--ha-ripple-pressed-opacity, 0.12);--md-ripple-hover-color:var(
          --ha-ripple-hover-color,
          var(--ha-ripple-color, var(--secondary-text-color))
        );--md-ripple-pressed-color:var(
          --ha-ripple-pressed-color,
          var(--ha-ripple-color, var(--secondary-text-color))
        )}`],c=(0,o.Cg)([(0,l.EM)("ha-ripple")],c)},606(t,e,a){a.a(t,async function(t,e){try{a(74423),a(18111),a(61701);var o=a(62826),i=a(5124),s=a(22441),r=a(63672),n=a(22786),l=a(1087),c=a(29823),d=(a(70947),a(3449),a(88285)),h=(a(67094),t([c,d]));[c,d]=h.then?(await h)():h;class p extends i.WF{render(){return this.disabled?i.qy`${this._renderField()}${this._renderHelper()}`:i.qy` <ha-dropdown placement="bottom" @wa-select="${this._handleSelect}" @wa-show="${this._handleShow}" @wa-hide="${this._handleHide}"> ${this._renderField()} ${this.options?this.options.map(t=>{const e=["string","number"].includes(typeof t);return i.qy` <ha-dropdown-item .value="${e?t:t.value}" .disabled="${!e&&(t.disabled??!1)}" .selected="${this.value===(e?t:t.value)}"> ${t.iconPath?i.qy`<ha-svg-icon slot="icon" .path="${t.iconPath}"></ha-svg-icon>`:i.s6} <div class="content"> ${e?t:t.label||t.value} ${t.secondary?i.qy`<div class="secondary">${t.secondary}</div>`:i.s6} </div> </ha-dropdown-item> `}):i.qy`<slot></slot>`} </ha-dropdown> ${this._renderHelper()} `}_renderField(){const t=this._getValueLabel(this.options,this.value);return i.qy` <ha-picker-field slot="trigger" type="button" class="${this._opened?"opened":""}" compact="compact" aria-label="${(0,r.J)(this.label)}" @clear="${this._clearValue}" .label="${this.label}" .value="${t}" .required="${this.required}" .disabled="${this.disabled}" .hideClearIcon="${!this.clearable||this.required||this.disabled||!String(this.value)}"> </ha-picker-field> `}_renderHelper(){return this.helper?i.qy`<ha-input-helper-text .disabled="${this.disabled}">${this.helper}</ha-input-helper-text>`:i.s6}_handleSelect(t){t.stopPropagation();const e=t.detail.item.value;e!==this.value&&(0,l.r)(this,"selected",{value:e})}_clearValue(){!this.disabled&&this.value&&(0,l.r)(this,"selected",{value:void 0})}_handleShow(){this.style.setProperty("--select-menu-width",`${this._triggerField.offsetWidth}px`),this._opened=!0}_handleHide(){this._opened=!1}constructor(...t){super(...t),this.clearable=!1,this.required=!1,this.disabled=!1,this._opened=!1,this._getValueLabel=(0,n.A)((t,e)=>{const a=void 0!==e?String(e):void 0;if(!t||!a)return a;for(const e of t){const t=["string","number"].includes(typeof e);if(t&&e===a||!t&&String(e.value)===a)return t?e:e.label||e.value}return a})}}p.styles=i.AH`:host{position:relative}ha-picker-field.opened{--mdc-text-field-idle-line-color:var(--primary-color)}ha-dropdown-item .content{display:flex;gap:var(--ha-space-1);flex-direction:column}ha-dropdown-item .secondary{font-size:var(--ha-font-size-s);color:var(--ha-color-text-secondary)}ha-dropdown::part(menu){min-width:var(--select-menu-width)}ha-input-helper-text{display:block;margin:var(--ha-space-2) 0 0}`,(0,o.Cg)([(0,s.MZ)({type:Boolean})],p.prototype,"clearable",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],p.prototype,"options",void 0),(0,o.Cg)([(0,s.MZ)()],p.prototype,"label",void 0),(0,o.Cg)([(0,s.MZ)()],p.prototype,"helper",void 0),(0,o.Cg)([(0,s.MZ)()],p.prototype,"value",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean})],p.prototype,"required",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean})],p.prototype,"disabled",void 0),(0,o.Cg)([(0,s.wk)()],p.prototype,"_opened",void 0),(0,o.Cg)([(0,s.P)("ha-picker-field")],p.prototype,"_triggerField",void 0),p=(0,o.Cg)([(0,s.EM)("ha-select")],p),e()}catch(t){e(t)}})},59646(t,e,a){a.a(t,async function(t,e){try{var o=a(62826),i=a(29344),s=a(5124),r=a(22441),n=a(88360),l=t([i]);i=(l.then?(await l)():l)[0];class c extends i.A{updated(t){super.updated(t),t.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,s.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(...t){super(...t),this.haptic=!1,this._forwardHaptic=()=>{(0,n.j)(this,"light")}}}(0,o.Cg)([(0,r.MZ)({type:Boolean})],c.prototype,"haptic",void 0),c=(0,o.Cg)([(0,r.EM)("ha-switch")],c),e()}catch(t){e(t)}})},43831(t,e,a){var o=a(62826),i=a(5124),s=a(22441),r=a(63672);a(54276);class n extends i.WF{render(){return i.qy` <div tabindex="0" role="tab" aria-selected="${this.active}" aria-label="${(0,r.J)(this.name)}" @keydown="${this._handleKeyDown}"> <slot name="icon"></slot> <span class="name">${this.name}</span> <ha-ripple></ha-ripple> </div> `}_handleKeyDown(t){"Enter"===t.key&&t.target.click()}constructor(...t){super(...t),this.active=!1,this.narrow=!1}}n.styles=i.AH`div{padding:0 32px;display:flex;flex-direction:column;text-align:center;box-sizing:border-box;align-items:center;justify-content:center;width:100%;height:var(--header-height);cursor:pointer;position:relative;outline:0}:host(:not([narrow])) div{flex-direction:row;gap:var(--ha-space-2)}.name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}:host([active]){color:var(--primary-color)}:host(:not([narrow])[active]) div{border-bottom:2px solid var(--primary-color)}:host([narrow]){min-width:0;display:flex;justify-content:center;overflow:hidden}:host([narrow]) div{padding:0 4px}::slotted([slot=icon]){margin-bottom:var(--ha-space-1)}:host(:not([narrow])) ::slotted([slot=icon]){margin-bottom:0}div:focus-visible:before{position:absolute;display:block;content:"";inset:0;background-color:var(--secondary-text-color);opacity:.08}`,(0,o.Cg)([(0,s.MZ)({type:Boolean,reflect:!0})],n.prototype,"active",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,reflect:!0})],n.prototype,"narrow",void 0),(0,o.Cg)([(0,s.MZ)()],n.prototype,"name",void 0),n=(0,o.Cg)([(0,s.EM)("ha-tab")],n)},10763(t,e,a){a.a(t,async function(t,e){try{var o=a(62826),i=a(53289),s=a(5124),r=a(22441),n=a(35211),l=a(1087),c=a(63130),d=a(14503),h=a(81619),p=a(18350),u=a(15717),g=a(22792),b=t([p,u]);[p,u]=b.then?(await b)():b;const v=t=>{if("object"!=typeof t||null===t)return!1;for(const e in t)if(Object.prototype.hasOwnProperty.call(t,e))return!1;return!0};class m extends s.WF{setValue(t){try{this._yaml=v(t)?"":(0,i.dump)(t,{schema:this.yamlSchema,quotingType:'"',noRefs:!0})}catch(e){console.error(e,t),alert(`There was an error converting to YAML: ${e}`)}}firstUpdated(){void 0!==this.defaultValue&&this.setValue(this.defaultValue)}willUpdate(t){super.willUpdate(t),this.autoUpdate&&t.has("value")&&this.setValue(this.value)}focus(){this._codeEditor?.codemirror&&this._codeEditor?.codemirror.focus()}disableCodeEditorFullscreen(){this.disableFullscreen=!0,this._codeEditor&&(this._codeEditor.disableFullscreen=!0)}render(){return void 0===this._yaml?s.s6:s.qy` ${this.label?s.qy`<p>${this.label}${this.required?" *":""}</p>`:s.s6} <ha-code-editor .value="${this._yaml}" .readOnly="${this.readOnly}" .disableFullscreen="${this.disableFullscreen}" .inDialog="${this.inDialog}" mode="yaml" lint autocomplete-entities autocomplete-icons .error="${!1===this.isValid}" @value-changed="${this._onChange}" @editor-save="${this._onEditorSave}" dir="ltr"></ha-code-editor> ${this.copyClipboard||this.hasExtraActions?s.qy` <div class="card-actions"> ${this.copyClipboard?s.qy` <ha-button appearance="plain" @click="${this._copyYaml}"> ${this._i18n.localize("ui.components.yaml-editor.copy_to_clipboard")} </ha-button> `:s.s6} <slot name="extra-actions"></slot> </div> `:s.s6} `}_onChange(t){let e;t.stopPropagation(),this._yaml=t.detail.value;let a,o=!0,s=null;if(this._yaml)try{e=(0,i.Hh)(this._yaml,{schema:this.yamlSchema})}catch(t){o=!1,s=t,a=`${this._i18n.localize("ui.components.yaml-editor.error",{reason:t.reason})}${t.mark?` (${this._i18n.localize("ui.components.yaml-editor.error_location",{line:t.mark.line+1,column:t.mark.column+1})})`:""}`}else e={};this._codeEditor?.setYamlError(s),this.value=e,this.isValid=o,(0,l.r)(this,"value-changed",{value:e,isValid:o,errorMsg:a})}get yaml(){return this._yaml}get codemirror(){return this._codeEditor?.codemirror}get hasComments(){return this._codeEditor?.hasComments??!1}_onEditorSave(t){(0,l.r)(this,"editor-save"),t.stopPropagation()}async _copyYaml(){this.yaml&&(await(0,c.l)(this.yaml),(0,h.P)(this,{message:this._i18n.localize("ui.common.copied_clipboard")}))}static get styles(){return[d.RF,s.AH`.card-actions{border-radius:var(--actions-border-radius,var(--ha-border-radius-square) var(--ha-border-radius-square) var(--ha-card-border-radius,var(--ha-border-radius-lg)) var(--ha-card-border-radius,var(--ha-border-radius-lg)));border:1px solid var(--divider-color);padding:5px 16px}ha-code-editor{flex-grow:1;min-height:0}`]}constructor(...t){super(...t),this.yamlSchema=i.my,this.isValid=!0,this.autoUpdate=!1,this.readOnly=!1,this.disableFullscreen=!1,this.inDialog=!1,this.required=!1,this.copyClipboard=!1,this.hasExtraActions=!1,this._yaml=""}}(0,o.Cg)([(0,r.MZ)()],m.prototype,"value",void 0),(0,o.Cg)([(0,r.MZ)({attribute:!1})],m.prototype,"yamlSchema",void 0),(0,o.Cg)([(0,r.MZ)({attribute:!1})],m.prototype,"defaultValue",void 0),(0,o.Cg)([(0,r.MZ)({attribute:"is-valid",type:Boolean})],m.prototype,"isValid",void 0),(0,o.Cg)([(0,r.MZ)()],m.prototype,"label",void 0),(0,o.Cg)([(0,r.MZ)({attribute:"auto-update",type:Boolean})],m.prototype,"autoUpdate",void 0),(0,o.Cg)([(0,r.MZ)({attribute:"read-only",type:Boolean})],m.prototype,"readOnly",void 0),(0,o.Cg)([(0,r.MZ)({type:Boolean,attribute:"disable-fullscreen"})],m.prototype,"disableFullscreen",void 0),(0,o.Cg)([(0,r.MZ)({type:Boolean,attribute:"in-dialog"})],m.prototype,"inDialog",void 0),(0,o.Cg)([(0,r.MZ)({type:Boolean})],m.prototype,"required",void 0),(0,o.Cg)([(0,r.MZ)({attribute:"copy-clipboard",type:Boolean})],m.prototype,"copyClipboard",void 0),(0,o.Cg)([(0,r.MZ)({attribute:"has-extra-actions",type:Boolean})],m.prototype,"hasExtraActions",void 0),(0,o.Cg)([(0,r.wk)()],m.prototype,"_yaml",void 0),(0,o.Cg)([(0,r.wk)(),(0,n.Fg)({context:g.D5,subscribe:!0})],m.prototype,"_i18n",void 0),(0,o.Cg)([(0,r.P)("ha-code-editor")],m.prototype,"_codeEditor",void 0),m=(0,o.Cg)([(0,r.EM)("ha-yaml-editor")],m),e()}catch(t){e(t)}})},83892(t,e,a){a.d(e,{x:()=>n});a(18111),a(13579);var o=a(62826),i=a(92070),s=a(5124),r=a(22441);class n extends s.WF{_onSlotChange(t){return e=>{const a=e.target.assignedNodes({flatten:!0}).some(t=>t.nodeType===Node.ELEMENT_NODE||t.nodeType===Node.TEXT_NODE&&""!==t.textContent?.trim());"start"===t?this._hasStart=a:this._hasEnd=a}}render(){return this._renderBase(this._renderInner())}_renderBase(t){return s.qy`<div part="base" class="base" id="item">${t}</div>`}_renderInner(){const t=this._slotController.test("content");return s.qy` <div part="start" class="start" ?hidden="${!this._hasStart}"> <slot name="start" @slotchange="${this._onSlotChange("start")}"></slot> </div> <div part="content" class="content"> ${t?s.qy`<slot name="content"></slot>`:this._renderDefaultContent()} </div> <div part="end" class="end" ?hidden="${!this._hasEnd}"> <slot name="end" @slotchange="${this._onSlotChange("end")}"></slot> </div> `}_renderDefaultContent(){const t=this._slotController.test("headline"),e=this._slotController.test("supporting-text"),a=t||void 0!==this.headline,o=e||void 0!==this.supportingText;return s.qy` ${a?s.qy`<div part="headline" class="headline"> <slot name="headline">${this.headline??s.s6}</slot> </div>`:s.s6} ${o?s.qy`<div part="supporting-text" class="supporting"> <slot name="supporting-text">${this.supportingText??s.s6}</slot> </div>`:s.s6} `}constructor(...t){super(...t),this.disabled=!1,this._slotController=new i.X(this,"headline","supporting-text","content"),this._hasStart=!1,this._hasEnd=!1}}n.styles=s.AH`:host{display:block;color:var(--primary-text-color);font-size:var(--ha-font-size-m);line-height:var(--ha-line-height-normal)}:host([disabled]){color:var(--disabled-text-color);pointer-events:none}.base{position:relative;display:flex;flex-direction:row;align-items:center;gap:var(--ha-row-item-gap,var(--ha-space-4));padding-block:var(--ha-row-item-padding-block,var(--ha-space-3));padding-inline:var(--ha-row-item-padding-inline,var(--ha-space-4));min-height:var(--ha-row-item-min-height,48px);box-sizing:border-box}.content{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;justify-content:center}.end,.start{display:flex;align-items:center;flex:0 0 auto}.end[hidden],.start[hidden]{display:none}.headline{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.supporting{color:var(--secondary-text-color);font-size:var(--ha-font-size-s);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}`,(0,o.Cg)([(0,r.MZ)({type:String})],n.prototype,"headline",void 0),(0,o.Cg)([(0,r.MZ)({type:String,attribute:"supporting-text"})],n.prototype,"supportingText",void 0),(0,o.Cg)([(0,r.MZ)({type:Boolean,reflect:!0})],n.prototype,"disabled",void 0),(0,o.Cg)([(0,r.wk)()],n.prototype,"_hasStart",void 0),(0,o.Cg)([(0,r.wk)()],n.prototype,"_hasEnd",void 0),n=(0,o.Cg)([(0,r.EM)("ha-row-item")],n)},82e3(t,e,a){a.d(e,{D5:()=>o,Fy:()=>r,Gk:()=>c,Hg:()=>i,Y_:()=>d,ds:()=>l,e0:()=>s,ec:()=>n});a(74423),a(18111),a(61701),a(33110);const o=14881==a.j?`${location.protocol}//${location.host}`:null,i=t=>t.map(t=>{if("string"!==t.type)return t;switch(t.name){case"username":return{...t,autocomplete:"username",autofocus:!0};case"password":return{...t,autocomplete:"current-password"};case"code":return{...t,autocomplete:"one-time-code",autofocus:!0};default:return t}}),s=(t,e)=>t.callWS({type:"auth/sign_path",path:e}),r=async(t,e,a,o)=>t.callWS({type:"config/auth_provider/homeassistant/create",user_id:e,username:a,password:o}),n=(t,e,a)=>t.callWS({type:"config/auth_provider/homeassistant/change_password",current_password:e,new_password:a}),l=(t,e,a)=>t.callWS({type:"config/auth_provider/homeassistant/admin_change_password",user_id:e,password:a}),c=(t,e,a)=>t.callWS({type:"config/auth_provider/homeassistant/admin_change_username",user_id:e,username:a}),d=(t,e,a)=>t.callWS({type:"auth/delete_all_refresh_tokens",token_type:e,delete_current_token:a})},700(t,e,a){a.d(e,{y:()=>r});const o=window;"customIconsets"in o||(o.customIconsets={});const i=o.customIconsets,s=window;"customIcons"in s||(s.customIcons={});const r=new Proxy(s.customIcons,{get:(t,e)=>t[e]??(i[e]?{getIcon:i[e]}:void 0)})},92158(t,e,a){a.d(e,{G:()=>s,m:()=>r});var o=a(62384),i=a(47351);const s=async t=>(0,o.v)(t.config.version,2021,2,4)?t.callWS({type:"supervisor/api",endpoint:"/hardware/audio",method:"get"}):(0,i.PS)(await t.callApi("GET","hassio/hardware/audio")),r=async t=>(0,o.v)(t.config.version,2021,2,4)?t.callWS({type:"supervisor/api",endpoint:"/hardware/info",method:"get"}):(0,i.PS)(await t.callApi("GET","hassio/hardware/info"))},81562(t,e,a){a.r(e),a.d(e,{addStoreRepository:()=>r,fetchStoreRepositories:()=>s,fetchSupervisorStore:()=>i,removeStoreRepository:()=>n});var o=a(35541);const i=async t=>(0,o.X)(t,"/store"),s=async t=>(0,o.X)(t,"/store/repositories"),r=async(t,e)=>(0,o.X)(t,"/store/repositories",{method:"post",data:{repository:e}}),n=async(t,e)=>(0,o.X)(t,`/store/repositories/${e}`,{method:"delete"})},42269(t,e,a){a.d(e,{p:()=>i});var o=a(1087);const i=(t,e)=>(0,o.r)(t,"hass-more-info",e)},40511(t,e,a){a.a(t,async function(t,e){try{a(18111),a(22489),a(20116),a(61701),a(14603),a(47566),a(98721);var o=a(62826),i=a(5124),s=a(22441),r=a(6412),n=a(22786),l=a(63708),c=a(26218),d=a(76830),h=a(91926),p=a(90248),u=a(2054),g=(a(67094),a(43831),a(14503)),b=t([p,u]);[p,u]=b.then?(await b)():b;const v=t=>t.endsWith("/")&&t.length>1?t.slice(0,-1):t;class m extends i.WF{willUpdate(t){if(t.has("route")){const t=`${this.route.prefix}${this.route.path}`;this._activeTab=this.tabs.find(e=>this._isActiveTabPath(e.path,t))}super.willUpdate(t)}render(){const t=this._getTabs(this.tabs,this._activeTab,this.hass.config.components,this.hass.language,this.hass.userData,this.narrow,this.localizeFunc||this.hass.localize);return i.qy` <div class="toolbar ${(0,r.H)({narrow:this.narrow})}"> <slot name="toolbar"> <div class="toolbar-content"> ${this.mainPage||!this.backPath&&history.state?.root?i.qy` <ha-menu-button .hass="${this.hass}" .narrow="${this.narrow}"></ha-menu-button> `:this.backPath?i.qy` <ha-icon-button-arrow-prev .href="${this.backPath}" .hass="${this.hass}"></ha-icon-button-arrow-prev> `:i.qy` <ha-icon-button-arrow-prev .hass="${this.hass}" @click="${this._backTapped}"></ha-icon-button-arrow-prev> `} ${this.narrow||!this.showTabs?i.qy`<div class="main-title"> <slot name="header">${this.showTabs?"":t[0]}</slot> </div>`:""} ${this.showTabs&&!this.narrow?i.qy`<div id="tabbar">${t}</div>`:""} <div id="toolbar-icon"> <slot name="toolbar-icon"></slot> </div> </div> </slot> ${this.showTabs&&this.narrow?i.qy`<div id="tabbar" class="bottom-bar">${t}</div>`:""} </div> <div class="container"> ${this.pane?i.qy`<div class="pane"> <div class="shadow-container"></div> <div class="ha-scrollbar"> <slot name="pane"></slot> </div> </div>`:i.s6} <div class="content ha-scrollbar" @scroll="${this._saveScrollPos}"> <slot></slot> ${this.hasFab?i.qy`<div class="fab-bottom-space"></div>`:i.s6} </div> </div> <div id="fab"> <slot name="fab"></slot> </div> `}_saveScrollPos(t){this._savedScrollPos=t.target.scrollTop}focusContentScroller(){this._content&&(this._content.style.outline="none",this._content.focus({preventScroll:!0}))}_backTapped(){this.backCallback?this.backCallback():(0,h.OE)()}_isActiveTabPath(t,e){try{const a=new URL(t,window.location.origin),o=new URL(e,window.location.origin),i=v(a.pathname),s=v(o.pathname);return!(s!==i&&!s.startsWith(`${i}/`))}catch(a){return e===t||e.startsWith(`${t}/`)}}async _tabClicked(t){const e=(0,d.d)(t);e&&await(0,h.oo)(e,{replace:!0})}static get styles(){return[g.dp,i.AH`:host{display:block;height:100%;background-color:var(--primary-background-color)}:host([narrow]){width:100%;position:fixed}.container{display:flex;height:calc(100% - var(--header-height,0px) - var(--safe-area-inset-top,0px))}ha-menu-button{margin-right:24px;margin-inline-end:24px;margin-inline-start:initial}.toolbar{font-size:var(--ha-font-size-xl);height:calc(var(--header-height,0px) + var(--safe-area-inset-top,0px));padding-top:var(--safe-area-inset-top);padding-right:var(--safe-area-inset-right);background-color:var(--sidebar-background-color);font-weight:var(--ha-font-weight-normal);border-bottom:1px solid var(--divider-color);box-sizing:border-box}:host([narrow]) .toolbar{padding-left:var(--safe-area-inset-left)}.toolbar-content{padding:8px 12px;display:flex;align-items:center;height:100%;box-sizing:border-box}:host([narrow]) .toolbar-content{padding:4px}.toolbar a{color:var(--sidebar-text-color);text-decoration:none}.bottom-bar a{width:25%}#tabbar{display:flex;font-size:var(--ha-font-size-m);overflow:hidden}#tabbar>a{overflow:hidden;max-width:45%}#tabbar.bottom-bar{position:absolute;bottom:0;left:0;padding:0 16px;box-sizing:border-box;background-color:var(--sidebar-background-color);border-top:1px solid var(--divider-color);justify-content:space-around;z-index:2;font-size:var(--ha-font-size-s);width:100%;padding-bottom:var(--safe-area-inset-bottom)}#tabbar:not(.bottom-bar){flex:1;justify-content:center}:host(:not([narrow])) #toolbar-icon{min-width:40px}::slotted([slot=toolbar-icon]),ha-icon-button-arrow-prev,ha-menu-button{display:flex;flex-shrink:0;pointer-events:auto;color:var(--sidebar-icon-color)}.main-title{min-width:0;flex:1;max-height:var(--header-height);line-height:var(--ha-line-height-normal);color:var(--sidebar-text-color);margin-inline-start:var(--main-title-margin,var(--ha-space-6))}.narrow .main-title{margin-inline-start:var(--main-title-margin,var(--ha-space-2))}.content{position:relative;width:100%;margin-right:var(--safe-area-inset-right);margin-inline-end:var(--safe-area-inset-right);overflow:auto;-webkit-overflow-scrolling:touch}:host([narrow]) .content{margin-left:var(--safe-area-inset-left);margin-inline-start:var(--safe-area-inset-left)}:host([narrow][show-tabs]) .content{margin-bottom:calc(var(--header-height,0px) + var(--safe-area-inset-bottom,0px))}.content .fab-bottom-space{height:calc(64px + var(--safe-area-inset-bottom,0px))}:host([narrow][show-tabs]) .content .fab-bottom-space{height:calc(80px + var(--safe-area-inset-bottom,0px))}#fab{position:fixed;right:calc(16px + var(--safe-area-inset-right,0px));inset-inline-end:calc(16px + var(--safe-area-inset-right));inset-inline-start:initial;bottom:calc(16px + var(--safe-area-inset-bottom,0px));z-index:1;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--ha-space-2);--ha-button-box-shadow:var(--ha-box-shadow-l)}:host([narrow][show-tabs]) #fab{bottom:calc(84px + var(--safe-area-inset-bottom,0px))}#fab[is-wide]{bottom:24px;right:24px;inset-inline-end:24px;inset-inline-start:initial}.pane{border-right:1px solid var(--divider-color);border-inline-end:1px solid var(--divider-color);border-inline-start:initial;box-sizing:border-box;display:flex;flex:0 0 var(--sidepane-width,250px);width:var(--sidepane-width,250px);flex-direction:column;position:relative}.pane .ha-scrollbar{flex:1}`]}constructor(...t){super(...t),this.mainPage=!1,this.narrow=!1,this.isWide=!1,this.pane=!1,this.hasFab=!1,this.showTabs=!1,this._getTabs=(0,n.A)((t,e,a,o,s,r,n)=>{const c=t.filter(t=>(0,l.fW)(this.hass,t));if(c.length<2){if(this.showTabs=!1,1===c.length){const t=c[0];return[t.translationKey?n(t.translationKey):t.name]}return[""]}return this.showTabs=!0,c.map(t=>i.qy` <a href="${t.path}" @click="${this._tabClicked}"> <ha-tab .active="${t.path===e?.path}" .narrow="${this.narrow}" .name="${t.translationKey?n(t.translationKey):t.name}"> ${t.iconPath?i.qy`<ha-svg-icon slot="icon" .path="${t.iconPath}"></ha-svg-icon>`:""} </ha-tab> </a> `)})}}(0,o.Cg)([(0,s.MZ)({attribute:!1})],m.prototype,"hass",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],m.prototype,"localizeFunc",void 0),(0,o.Cg)([(0,s.MZ)({type:String,attribute:"back-path"})],m.prototype,"backPath",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],m.prototype,"backCallback",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,attribute:"main-page"})],m.prototype,"mainPage",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],m.prototype,"route",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],m.prototype,"tabs",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,reflect:!0})],m.prototype,"narrow",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,reflect:!0,attribute:"is-wide"})],m.prototype,"isWide",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean})],m.prototype,"pane",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,attribute:"has-fab"})],m.prototype,"hasFab",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,attribute:"show-tabs",reflect:!0})],m.prototype,"showTabs",void 0),(0,o.Cg)([(0,s.wk)()],m.prototype,"_activeTab",void 0),(0,o.Cg)([(0,s.P)(".content")],m.prototype,"_content",void 0),(0,o.Cg)([(0,c.a)(".content")],m.prototype,"_savedScrollPos",void 0),(0,o.Cg)([(0,s.Ls)({passive:!0})],m.prototype,"_saveScrollPos",null),m=(0,o.Cg)([(0,s.EM)("hass-tabs-subpage")],m),e()}catch(t){e(t)}})},48949(t,e,a){a.d(e,{Q:()=>n});var o=a(62826),i=a(22441),s=a(71769),r=a(84187);const n=t=>{class e extends t{connectedCallback(){super.connectedCallback(),this._unsubMql=(0,s.m)(this.mobileSizeQuery,t=>{this._isMobileSize=t})}disconnectedCallback(){super.disconnectedCallback(),this._unsubMql?.(),this._unsubMql=void 0}constructor(...t){super(...t),this._isMobileSize=!1,this._isMobileClient=r.M,this.mobileSizeQuery="all and (max-width: 450px), all and (max-height: 500px)"}}return(0,o.Cg)([(0,i.wk)()],e.prototype,"_isMobileSize",void 0),e}},17894(t,e,a){a.d(e,{c:()=>s});var o=a(62826),i=a(22441);const s=t=>{class e extends t{constructor(...t){super(...t),this.disabled=!1,this.required=!1,this.unknown=!1,this.hideClearIcon=!1}}return(0,o.Cg)([(0,i.MZ)({type:Boolean})],e.prototype,"disabled",void 0),(0,o.Cg)([(0,i.MZ)({type:Boolean})],e.prototype,"required",void 0),(0,o.Cg)([(0,i.MZ)()],e.prototype,"icon",void 0),(0,o.Cg)([(0,i.MZ)()],e.prototype,"image",void 0),(0,o.Cg)([(0,i.MZ)()],e.prototype,"label",void 0),(0,o.Cg)([(0,i.MZ)()],e.prototype,"placeholder",void 0),(0,o.Cg)([(0,i.MZ)()],e.prototype,"helper",void 0),(0,o.Cg)([(0,i.MZ)()],e.prototype,"value",void 0),(0,o.Cg)([(0,i.MZ)({type:Boolean,reflect:!0})],e.prototype,"unknown",void 0),(0,o.Cg)([(0,i.MZ)({attribute:"unknown-item-text"})],e.prototype,"unknownItemText",void 0),(0,o.Cg)([(0,i.MZ)({attribute:"hide-clear-icon",type:Boolean})],e.prototype,"hideClearIcon",void 0),(0,o.Cg)([(0,i.MZ)({attribute:!1})],e.prototype,"valueRenderer",void 0),e}},49987(t,e,a){var o=a(62826),i=a(5124),s=a(22441),r=a(6412),n=(a(13513),a(83892),a(36240));class l extends i.WF{render(){const t=(0,n.gN)(this.value);return i.qy`<ha-row-item empty> <span slot="headline"> ${this.description} </span> <div slot="supporting-text" .title="${this.tooltip??""}"> <span class="value"> ${t} % </span> <ha-bar class="${(0,r.H)({"target-warning":t>50,"target-critical":t>85})}" .value="${this.value}"></ha-bar> </div> </ha-row-item>`}}l.styles=i.AH`ha-row-item{width:100%}ha-row-item>div[slot=supporting-text]{white-space:normal;color:var(--secondary-text-color);display:flex;justify-content:space-between}ha-bar{--ha-bar-primary-color:var(--hassio-bar-ok-color, var(--success-color))}.target-warning{--ha-bar-primary-color:var(
        --hassio-bar-warning-color,
        var(--warning-color)
      )}.target-critical{--ha-bar-primary-color:var(
        --hassio-bar-critical-color,
        var(--error-color)
      )}.value{width:48px;padding-right:var(--ha-space-1);padding-inline-start:initial;padding-inline-end:var(--ha-space-1);flex-shrink:0}`,(0,o.Cg)([(0,s.MZ)({type:Number})],l.prototype,"value",void 0),(0,o.Cg)([(0,s.MZ)({type:String})],l.prototype,"description",void 0),(0,o.Cg)([(0,s.MZ)({type:String})],l.prototype,"tooltip",void 0),l=(0,o.Cg)([(0,s.EM)("supervisor-app-metric")],l)},98179(t,e,a){a.a(t,async function(t,e){try{a(18111),a(61701);var o=a(62826),i=a(5124),s=a(22441),r=a(89300),n=a(38962),l=(a(76776),a(606)),c=a(22130),d=a(92158),h=a(14503),p=a(93560),u=a(2495),g=t([r,n,l]);[r,n,l]=g.then?(await g)():g;class b extends i.WF{render(){return i.qy` <ha-card outlined .header="${this.hass.localize("ui.panel.config.apps.configuration.audio.header")}"> <div class="card-content"> ${this._error?i.qy`<ha-alert alert-type="error">${this._error}</ha-alert>`:i.s6} ${this._inputDevices&&i.qy`<ha-select .label="${this.hass.localize("ui.panel.config.apps.configuration.audio.input")}" @selected="${this._setInputDevice}" .value="${this._selectedInput}" .disabled="${this.disabled}" .options="${this._inputDevices.map(t=>({value:t.device||"",label:t.name}))}"> </ha-select>`} ${this._outputDevices&&i.qy`<ha-select .label="${this.hass.localize("ui.panel.config.apps.configuration.audio.output")}" @selected="${this._setOutputDevice}" .value="${this._selectedOutput}" .disabled="${this.disabled}" .options="${this._outputDevices.map(t=>({value:t.device||"",label:t.name}))}"> </ha-select>`} </div> <div class="card-actions"> <ha-progress-button .disabled="${this.disabled}" @click="${this._saveSettings}"> ${this.hass.localize("ui.common.save")} </ha-progress-button> </div> </ha-card> `}static get styles(){return[h.RF,p.g,i.AH`:host,ha-card{display:block}.card-actions{text-align:right}ha-select{width:100%;display:block}ha-select:last-child{margin-top:var(--ha-space-2)}`]}willUpdate(t){super.willUpdate(t),t.has("addon")&&this._addonChanged()}_setInputDevice(t){const e=t.detail.value;this._selectedInput=e??null}_setOutputDevice(t){const e=t.detail.value;this._selectedOutput=e??null}async _addonChanged(){if(this._selectedInput=null===this.addon.audio_input?"default":this.addon.audio_input,this._selectedOutput=null===this.addon.audio_output?"default":this.addon.audio_output,this._outputDevices)return;const t={device:"default",name:this.hass.localize("ui.panel.config.apps.configuration.audio.default")};try{const{audio:e}=await(0,d.G)(this.hass),a=Object.keys(e.input).map(t=>({device:t,name:e.input[t]})),o=Object.keys(e.output).map(t=>({device:t,name:e.output[t]}));this._inputDevices=[t,...a],this._outputDevices=[t,...o]}catch{this._error=this.hass.localize("ui.panel.config.apps.configuration.audio.failed_to_load_hardware"),this._inputDevices=[t],this._outputDevices=[t]}}async _saveSettings(t){if(this.disabled)return;const e=t.currentTarget;e.progress=!0,this._error=void 0;const a={audio_input:"default"===this._selectedInput?null:this._selectedInput,audio_output:"default"===this._selectedOutput?null:this._selectedOutput};try{await(0,c.setHassioAddonOption)(this.hass.callWS,this.addon.slug,a),"started"===this.addon?.state&&await(0,u.z)(this,this.hass,this.addon)}catch{this._error=this.hass.localize("ui.panel.config.apps.configuration.audio.failed_to_save")}e.progress=!1}constructor(...t){super(...t),this.disabled=!1}}(0,o.Cg)([(0,s.MZ)({attribute:!1})],b.prototype,"hass",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],b.prototype,"addon",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean})],b.prototype,"disabled",void 0),(0,o.Cg)([(0,s.wk)()],b.prototype,"_error",void 0),(0,o.Cg)([(0,s.wk)()],b.prototype,"_inputDevices",void 0),(0,o.Cg)([(0,s.wk)()],b.prototype,"_outputDevices",void 0),(0,o.Cg)([(0,s.wk)()],b.prototype,"_selectedInput",void 0),(0,o.Cg)([(0,s.wk)()],b.prototype,"_selectedOutput",void 0),b=(0,o.Cg)([(0,s.EM)("supervisor-app-audio")],b),e()}catch(t){e(t)}})},87057(t,e,a){a.a(t,async function(t,e){try{var o=a(62826),i=a(5124),s=a(22441),r=a(65829),n=a(14503),l=a(93560),c=a(36382),d=a(98179),h=a(17063),p=a(14127),u=t([r,c,d,h,p]);[r,c,d,h,p]=u.then?(await u)():u;class g extends i.WF{render(){if(!this.addon)return i.qy`<ha-spinner></ha-spinner>`;const t=this.addon.options&&Object.keys(this.addon.options).length||this.addon.schema&&Object.keys(this.addon.schema).length;return i.qy` <div class="content"> ${this.addon.system_managed&&(t||this.addon.network||this.addon.audio)?i.qy` <supervisor-app-system-managed .hass="${this.hass}" .narrow="${this.narrow}" .hideButton="${this.controlEnabled}"></supervisor-app-system-managed> `:i.s6} ${t||this.addon.network||this.addon.audio?i.qy` ${t?i.qy` <supervisor-app-config .hass="${this.hass}" .addon="${this.addon}" .disabled="${this.addon.system_managed&&!this.controlEnabled}"></supervisor-app-config> `:i.s6} ${this.addon.network?i.qy` <supervisor-app-network .hass="${this.hass}" .addon="${this.addon}" .disabled="${this.addon.system_managed&&!this.controlEnabled}"></supervisor-app-network> `:i.s6} ${this.addon.audio?i.qy` <supervisor-app-audio .hass="${this.hass}" .addon="${this.addon}" .disabled="${this.addon.system_managed&&!this.controlEnabled}"></supervisor-app-audio> `:i.s6} `:this.hass.localize("ui.panel.config.apps.configuration.no_configuration")} </div> `}static get styles(){return[n.RF,l.g,i.AH`.content{margin:auto;padding:var(--ha-space-2);max-width:1024px}supervisor-app-audio,supervisor-app-config,supervisor-app-network{margin-bottom:var(--ha-space-6)}`]}constructor(...t){super(...t),this.narrow=!1,this.controlEnabled=!1}}(0,o.Cg)([(0,s.MZ)({attribute:!1})],g.prototype,"hass",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],g.prototype,"addon",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean})],g.prototype,"narrow",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,attribute:"control-enabled"})],g.prototype,"controlEnabled",void 0),g=(0,o.Cg)([(0,s.EM)("supervisor-app-config-tab")],g),e()}catch(t){e(t)}})},17063(t,e,a){a.a(t,async function(t,e){try{a(74423),a(18111),a(22489),a(20116),a(61701),a(33110);var o=a(62826),i=a(53289),s=a(5124),r=a(22441),n=a(22786),l=a(1087),c=a(89300),d=a(38962),h=(a(76776),a(29823)),p=(a(70947),a(52763)),u=(a(6),a(26300)),g=a(59646),b=a(10763),v=a(22130),m=a(47351),f=a(65063),y=a(14503),_=a(93560),w=a(2495),C=t([c,d,h,p,u,g,b]);[c,d,h,p,u,g,b]=C.then?(await C)():C;const $="M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z",x=["string","select","boolean","integer","float","schema"],k=i.my.extend([new i.ZU("!secret",{kind:"scalar",construct:t=>`!secret ${t}`})]),M=["password","secret","token"];class A extends s.WF{_getTranslationEntry(t,e,a){let o=this.addon.translations[t]?.configuration;if(o){if(a?.path)for(const t of a.path)if(o=o[t]?.fields,!o)return;return o[e.name]}}_convertSchemaElements(t,e,a,o=[]){return t.map(t=>this._convertSchemaElement(t,e,a,o))}_convertSchemaElement(t,e,a,o){if("schema"===t.type&&!t.multiple)return{name:t.name,type:"expandable",required:t.required,schema:this._convertSchemaElements(t.schema,e,a,[...o,t.name])};const i=this._convertSchemaElementToSelector(t,!1,e,a,o);return i?{name:t.name,required:t.required,selector:i}:t}_convertSchemaElementToSelector(t,e,a,o,i){if("select"===t.type)return{select:{options:t.options,multiple:t.multiple}};if("string"===t.type)return t.multiple?{select:{options:[],multiple:!0,custom_value:!0}}:{text:{type:t.format?t.format:M.includes(t.name)?"password":"text"}};if("boolean"===t.type)return{boolean:{}};if("schema"===t.type){const e={},s=[...i,t.name];for(const i of t.schema){const t=this._getTranslationEntry(a,i,{path:s})||this._getTranslationEntry("en",i,{path:s});e[i.name]={required:i.required,label:t?.name,description:t?.description,selector:this._convertSchemaElementToSelector(i,!0,a,o,s)}}return{object:{multiple:t.multiple,fields:e}}}return"float"===t.type||"integer"===t.type?{number:{mode:"box",step:"float"===t.type?"any":void 0}}:e?{object:{}}:null}render(){const t=!this._yamlMode&&this._canShowSchema&&this.addon.schema,e=t&&JSON.stringify(this.addon.schema)!==JSON.stringify(this._filteredSchema(this.addon.options,this.addon.schema));return s.qy` <h1>${this.addon.name}</h1> <ha-card outlined> <div class="header"> <h2> ${this.hass.localize("ui.panel.config.apps.configuration.options.header")} </h2> <div class="card-menu"> <ha-dropdown @wa-select="${this._handleAction}"> <ha-icon-button .label="${this.hass.localize("ui.common.menu")}" .path="${$}" slot="trigger"></ha-icon-button> <ha-dropdown-item value="toggle_yaml" .disabled="${!this._canShowSchema||this.disabled}"> ${this._yamlMode?this.hass.localize("ui.panel.config.apps.configuration.options.edit_in_ui"):this.hass.localize("ui.panel.config.apps.configuration.options.edit_in_yaml")} </ha-dropdown-item> <ha-dropdown-item value="reset" .variant="${this.disabled?"default":"danger"}" .disabled="${this.disabled}"> ${this.hass.localize("ui.panel.config.apps.configuration.reset_defaults")} </ha-dropdown-item> </ha-dropdown> </div> </div> <div class="card-content"> ${t?s.qy`<ha-form .hass="${this.hass}" .disabled="${this.disabled}" .data="${this._options}" @value-changed="${this._configChanged}" .computeLabel="${this.computeLabel}" .computeHelper="${this.computeHelper}" .schema="${this._convertSchema(this._showOptional?this.addon.schema:this._filteredSchema(this.addon.options,this.addon.schema),this.hass.language,this.addon.translations)}"></ha-form>`:s.qy`<ha-yaml-editor @value-changed="${this._configChanged}" .yamlSchema="${k}"></ha-yaml-editor>`} ${this._error?s.qy`<ha-alert alert-type="error">${this._error}</ha-alert>`:""} ${!this._yamlMode||this._canShowSchema&&this.addon.schema||this._valid?"":s.qy` <ha-alert alert-type="error"> ${this.hass.localize("ui.panel.config.apps.configuration.options.invalid_yaml")} </ha-alert> `} </div> ${e?s.qy`<ha-formfield class="show-additional" .label="${this.hass.localize("ui.panel.config.apps.configuration.options.show_unused_optional")}"> <ha-switch @change="${this._toggleOptional}" .checked="${this._showOptional}"> </ha-switch> </ha-formfield>`:""} <div class="card-actions right"> <ha-progress-button @click="${this._saveTapped}" .disabled="${this.disabled||!this._configHasChanged||!this._valid}"> ${this.hass.localize("ui.common.save")} </ha-progress-button> </div> </ha-card> `}firstUpdated(t){super.firstUpdated(t),this._canShowSchema=null!==this.addon.schema&&!this.addon.schema.find(t=>!x.includes(t.type)),this._yamlMode=!this._canShowSchema}updated(t){if(t.has("addon")&&(this._options={...this.addon.options}),super.updated(t),(t.has("_yamlMode")||t.has("_options"))&&this._yamlMode){const t=this._editor;t&&t.setValue(this._options)}}_handleAction(t){const e=t.detail.item.value;if(e)switch(e){case"toggle_yaml":return void(this._yamlMode=!this._yamlMode);case"reset":this._resetTapped(t)}}_toggleOptional(){this._showOptional=!this._showOptional}_configChanged(t){this.addon.schema&&this._canShowSchema&&!this._yamlMode?(this._valid=!0,this._configHasChanged=!0,this._options=t.detail.value):(this._configHasChanged=!0,this._valid=t.detail.isValid)}async _resetTapped(t){const e=t.currentTarget;e.progress=!0;if(!await(0,f.dk)(this,{title:this.hass.localize("ui.panel.config.apps.configuration.confirm.reset_options.title"),text:this.hass.localize("ui.panel.config.apps.configuration.confirm.reset_options.text"),confirmText:this.hass.localize("ui.common.reset_options"),dismissText:this.hass.localize("ui.common.cancel"),destructive:!0}))return void(e.progress=!1);this._error=void 0;const a={options:null};try{await(0,v.setHassioAddonOption)(this.hass.callWS,this.addon.slug,a),this._configHasChanged=!1;const t={success:!0,response:void 0,path:"options"};(0,l.r)(this,"hass-api-called",t)}catch(t){this._error=this.hass.localize("ui.panel.config.apps.dashboard.failed_to_reset",{error:(0,m.VR)(t)})}e.progress=!1}async _saveTapped(t){if(this.disabled||!this._configHasChanged||!this._valid)return;const e=t.currentTarget,a=this._yamlMode?this._editor?.value:this._options,o={success:!0,response:void 0,path:"options"};e.progress=!0,this._error=void 0;try{const t=await(0,v.validateHassioAddonOption)(this.hass.callWS,this.addon.slug,a);if(!t.valid)throw Error(t.message);await(0,v.setHassioAddonOption)(this.hass.callWS,this.addon.slug,{options:a}),this._configHasChanged=!1,"started"===this.addon?.state&&await(0,w.z)(this,this.hass,this.addon)}catch(t){this._error=this.hass.localize("ui.panel.config.apps.dashboard.failed_to_save",{error:(0,m.VR)(t)}),o.success=!1}e.progress=!1,(0,l.r)(this,"hass-api-called",o)}static get styles(){return[y.RF,_.g,s.AH`:host{display:block}ha-card{display:block}.card-actions{display:flex;justify-content:space-between}.card-menu{float:right;z-index:3;--mdc-theme-text-primary-on-background:var(--primary-text-color)}ha-dropdown-item[disabled]{--mdc-theme-text-primary-on-background:var(--disabled-text-color)}.header{display:flex;justify-content:space-between}.header h2{color:var(--ha-card-header-color,var(--primary-text-color));font-family:var(--ha-card-header-font-family, inherit);font-size:var(--ha-card-header-font-size, var(--ha-font-size-2xl));letter-spacing:-.012em;line-height:var(--ha-line-height-expanded);padding:12px 16px 16px;display:block;margin-block:0px;font-weight:var(--ha-font-weight-normal)}.card-actions.right{justify-content:flex-end}.show-additional{padding:16px}`]}constructor(...t){super(...t),this.disabled=!1,this._configHasChanged=!1,this._valid=!0,this._canShowSchema=!1,this._showOptional=!1,this._yamlMode=!1,this.computeLabel=(t,e,a)=>this._getTranslationEntry(this.hass.language,t,a)?.name||this._getTranslationEntry("en",t,a)?.name||t.name,this.computeHelper=(t,e)=>this._getTranslationEntry(this.hass.language,t,e)?.description||this._getTranslationEntry("en",t,e)?.description||"",this._convertSchema=(0,n.A)((t,e,a)=>this._convertSchemaElements(t,e,a)),this._filteredSchema=(0,n.A)((t,e)=>e.filter(e=>e.name in t||e.required))}}(0,o.Cg)([(0,r.MZ)({attribute:!1})],A.prototype,"addon",void 0),(0,o.Cg)([(0,r.MZ)({attribute:!1})],A.prototype,"hass",void 0),(0,o.Cg)([(0,r.MZ)({type:Boolean})],A.prototype,"disabled",void 0),(0,o.Cg)([(0,r.wk)()],A.prototype,"_configHasChanged",void 0),(0,o.Cg)([(0,r.wk)()],A.prototype,"_valid",void 0),(0,o.Cg)([(0,r.wk)()],A.prototype,"_canShowSchema",void 0),(0,o.Cg)([(0,r.wk)()],A.prototype,"_showOptional",void 0),(0,o.Cg)([(0,r.wk)()],A.prototype,"_error",void 0),(0,o.Cg)([(0,r.wk)()],A.prototype,"_options",void 0),(0,o.Cg)([(0,r.wk)()],A.prototype,"_yamlMode",void 0),(0,o.Cg)([(0,r.P)("ha-yaml-editor")],A.prototype,"_editor",void 0),A=(0,o.Cg)([(0,r.EM)("supervisor-app-config")],A),e()}catch(t){e(t)}})},14127(t,e,a){a.a(t,async function(t,e){try{a(18111),a(22489),a(20116),a(7588),a(61701);var o=a(62826),i=a(5124),s=a(22441),r=a(22786),n=a(1087),l=a(89300),c=a(38962),d=(a(76776),a(52763)),h=(a(6),a(22130)),p=a(47351),u=a(14503),g=a(93560),b=a(2495),v=t([l,c,d]);[l,c,d]=v.then?(await v)():v;class m extends i.WF{render(){if(!this._config)return i.s6;const t=Object.keys(this._config).find(t=>null===this._config[t]);return i.qy` <ha-card outlined .header="${this.hass.localize("ui.panel.config.apps.configuration.network.header")}"> <div class="card-content"> <p> ${this.hass.localize("ui.panel.config.apps.configuration.network.introduction")} </p> ${this._error?i.qy`<ha-alert alert-type="error">${this._error}</ha-alert>`:i.s6} <ha-form .disabled="${this.disabled}" .data="${this._config}" @value-changed="${this._configChanged}" .computeLabel="${this._computeLabel}" .computeHelper="${this._computeHelper}" .schema="${this._createSchema(this._config,this._showOptional)}"></ha-form> </div> ${t?i.qy`<ha-formfield class="show-optional" .label="${this.hass.localize("ui.panel.config.apps.configuration.network.show_disabled")}"> <ha-switch @change="${this._toggleOptional}" .checked="${this._showOptional}"> </ha-switch> </ha-formfield>`:i.s6} <div class="card-actions"> <ha-progress-button variant="danger" appearance="plain" .disabled="${this.disabled}" @click="${this._resetTapped}"> ${this.hass.localize("ui.panel.config.apps.configuration.network.reset_defaults")} </ha-progress-button> <ha-progress-button @click="${this._saveTapped}" .disabled="${!this._configHasChanged||this.disabled}"> ${this.hass.localize("ui.common.save")} </ha-progress-button> </div> </ha-card> `}willUpdate(t){super.willUpdate(t),t.has("addon")&&this._setNetworkConfig()}_setNetworkConfig(){this._config=this.addon.network||{}}async _configChanged(t){this._configHasChanged=!0,this._config=t.detail.value}async _resetTapped(t){if(this.disabled)return;const e=t.currentTarget,a={network:null};try{await(0,h.setHassioAddonOption)(this.hass.callWS,this.addon.slug,a),this._configHasChanged=!1;const t={success:!0,response:void 0,path:"option"};e.actionSuccess(),(0,n.r)(this,"hass-api-called",t),"started"===this.addon?.state&&await(0,b.z)(this,this.hass,this.addon)}catch(t){this._error=this.hass.localize("ui.panel.config.apps.dashboard.failed_to_reset",{error:(0,p.VR)(t)}),e.actionError()}}_toggleOptional(){this._showOptional=!this._showOptional}async _saveTapped(t){if(!this._configHasChanged||this.disabled)return;const e=t.currentTarget;this._error=void 0;const a={};Object.entries(this._config).forEach(([t,e])=>{a[t]=e??null});const o={network:a};try{await(0,h.setHassioAddonOption)(this.hass.callWS,this.addon.slug,o),this._configHasChanged=!1;const t={success:!0,response:void 0,path:"option"};e.actionSuccess(),(0,n.r)(this,"hass-api-called",t),"started"===this.addon?.state&&await(0,b.z)(this,this.hass,this.addon)}catch(t){this._error=this.hass.localize("ui.panel.config.apps.dashboard.failed_to_save",{error:(0,p.VR)(t)}),e.actionError()}}static get styles(){return[u.RF,g.g,i.AH`:host{display:block}ha-card{display:block}.card-actions{display:flex;justify-content:space-between}.show-optional{padding:16px}`]}constructor(...t){super(...t),this.disabled=!1,this._showOptional=!1,this._configHasChanged=!1,this._createSchema=(0,r.A)((t,e)=>(e?Object.keys(t):Object.keys(t).filter(e=>null!==t[e])).map(t=>({name:t,selector:{number:{mode:"box",min:0,max:65535,unit_of_measurement:t}}}))),this._computeLabel=t=>"",this._computeHelper=t=>this.addon.translations[this.hass.language]?.network?.[t.name]||this.addon.translations.en?.network?.[t.name]||this.addon.network_description?.[t.name]||t.name}}(0,o.Cg)([(0,s.MZ)({attribute:!1})],m.prototype,"hass",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],m.prototype,"addon",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean})],m.prototype,"disabled",void 0),(0,o.Cg)([(0,s.wk)()],m.prototype,"_showOptional",void 0),(0,o.Cg)([(0,s.wk)()],m.prototype,"_configHasChanged",void 0),(0,o.Cg)([(0,s.wk)()],m.prototype,"_error",void 0),(0,o.Cg)([(0,s.wk)()],m.prototype,"_config",void 0),m=(0,o.Cg)([(0,s.EM)("supervisor-app-network")],m),e()}catch(t){e(t)}})},2495(t,e,a){a.d(e,{z:()=>r});var o=a(22130),i=a(47351),s=a(65063);const r=async(t,e,a)=>{if(await(0,s.dk)(t,{title:e.localize("ui.panel.config.apps.dashboard.restart_dialog.title",{name:a.name}),text:e.localize("ui.panel.config.apps.dashboard.restart_dialog.text"),confirmText:e.localize("ui.panel.config.apps.dashboard.restart_dialog.restart"),dismissText:e.localize("ui.common.cancel")}))try{await(0,o.restartHassioAddon)(e.callWS,a.slug)}catch(o){(0,s.showAlertDialog)(t,{title:e.localize("ui.panel.config.apps.dashboard.failed_to_restart",{name:a.name}),text:(0,i.VR)(o)})}}},83173(t,e,a){a.a(t,async function(t,e){try{var o=a(62826),i=(a(76776),a(5124)),s=a(38962),r=a(65829),n=(a(3587),a(22441)),l=a(22130),c=a(47351),d=a(23296),h=a(14503),p=a(93560),u=t([s,r,d]);[s,r,d]=u.then?(await u)():u;class g extends i.WF{async connectedCallback(){super.connectedCallback(),await this._loadData()}render(){return this.addon?i.qy` <div class="content"> <ha-card outlined> ${this._error?i.qy`<ha-alert alert-type="error">${this._error}</ha-alert>`:""} <div class="card-content"> ${this._content?i.qy`<ha-markdown .content="${this._content}" lazy-images></ha-markdown>`:i.qy`<hass-loading-screen no-toolbar></hass-loading-screen>`} </div> </ha-card> </div> `:i.qy`<ha-spinner></ha-spinner>`}static get styles(){return[h.RF,p.g,i.AH`ha-card{display:block}.content{margin:auto;padding:var(--ha-space-2);max-width:1024px;direction:ltr}ha-markdown{padding:var(--ha-space-4)}`]}async _loadData(){this._error=void 0;try{this._content=await(0,l.fetchHassioAddonDocumentation)(this.hass,this.addon.slug)}catch(t){this._error=this.hass.localize("ui.panel.config.apps.documentation.get_documentation",{error:(0,c.VR)(t)})}}}(0,o.Cg)([(0,n.MZ)({attribute:!1})],g.prototype,"hass",void 0),(0,o.Cg)([(0,n.MZ)({attribute:!1})],g.prototype,"addon",void 0),(0,o.Cg)([(0,n.wk)()],g.prototype,"_error",void 0),(0,o.Cg)([(0,n.wk)()],g.prototype,"_content",void 0),g=(0,o.Cg)([(0,n.EM)("supervisor-app-documentation-tab")],g),e()}catch(t){e(t)}})},42997(t,e,a){a.a(t,async function(t,e){try{var o=a(62826),i=a(5124),s=a(22441),r=a(65829),n=a(14503),l=a(93560),c=a(23019),d=t([r,c]);[r,c]=d.then?(await d)():d;class h extends i.WF{render(){return this.addon?i.qy` <div class="content"> <supervisor-app-info .narrow="${this.narrow}" .route="${this.route}" .addon="${this.addon}" .controlEnabled="${this.controlEnabled}"></supervisor-app-info> </div> `:i.qy`<ha-spinner></ha-spinner>`}static get styles(){return[n.RF,l.g,i.AH`.content{margin:auto;padding:var(--ha-space-4);max-width:1200px}`]}constructor(...t){super(...t),this.narrow=!1,this.controlEnabled=!1}}(0,o.Cg)([(0,s.MZ)({type:Boolean})],h.prototype,"narrow",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],h.prototype,"route",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],h.prototype,"hass",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],h.prototype,"addon",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,attribute:"control-enabled"})],h.prototype,"controlEnabled",void 0),h=(0,o.Cg)([(0,s.EM)("supervisor-app-info-tab")],h),e()}catch(t){e(t)}})},23019(t,e,a){a.a(t,async function(t,e){try{a(74423),a(18111),a(20116),a(13579);var o=a(62826),i=(a(68825),a(35211)),s=a(5124),r=a(22441),n=a(6412),l=a(63672),c=a(22786),d=a(93421),h=a(1087),p=a(71727),u=a(91926),g=a(52943),b=a(89300),v=(a(34296),a(5745),a(38962)),m=a(18350),f=(a(76776),a(29823)),y=(a(70947),a(6),a(3587),a(65829)),_=(a(67094),a(59646)),w=(a(83892),a(22792)),C=a(22130),$=a(47351),x=a(65063),k=a(42269),M=a(48949),A=a(53580),H=a(14503),L=a(46187),z=a(67398),V=(a(94969),a(55380)),q=(a(49987),a(97198)),S=a(36382),E=t([b,v,m,f,y,_,V,S]);[b,v,m,f,y,_,V,S]=E.then?(await E)():E;const Z="M1 12H10.8L8.3 9.5L9.7 8.1L14.6 13L9.7 17.9L8.3 16.5L10.8 14H1V12M21 2H3C1.9 2 1 2.9 1 4V10.1H3V6H21V20H3V16H1V20C1 21.1 1.9 22 3 22H21C22.1 22 23 21.1 23 20V4C23 2.9 22.1 2 21 2",T="M12,7L17,12H14V16H10V12H7L12,7M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20Z",I="M6,4H18V5H21V7H18V9H21V11H18V13H21V15H18V17H21V19H18V20H6V19H3V17H6V15H3V13H6V11H3V9H6V7H3V5H6V4M11,15V18H12V15H11M13,15V18H14V15H13M15,15V18H16V15H15Z",B="M11.5,11L17.88,16.37L17,16.55L16.36,16.67C15.73,16.8 15.37,17.5 15.65,18.07L15.92,18.65L17.28,21.59L15.86,22.25L14.5,19.32L14.24,18.74C13.97,18.15 13.22,17.97 12.72,18.38L12.21,18.78L11.5,19.35V11M10.76,8.69A0.76,0.76 0 0,0 10,9.45V20.9C10,21.32 10.34,21.66 10.76,21.66C10.95,21.66 11.11,21.6 11.24,21.5L13.15,19.95L14.81,23.57C14.94,23.84 15.21,24 15.5,24C15.61,24 15.72,24 15.83,23.92L18.59,22.64C18.97,22.46 19.15,22 18.95,21.63L17.28,18L19.69,17.55C19.85,17.5 20,17.43 20.12,17.29C20.39,16.97 20.35,16.5 20,16.21L11.26,8.86L11.25,8.87C11.12,8.76 10.95,8.69 10.76,8.69M15,10V8H20V10H15M13.83,4.76L16.66,1.93L18.07,3.34L15.24,6.17L13.83,4.76M10,0H12V5H10V0M3.93,14.66L6.76,11.83L8.17,13.24L5.34,16.07L3.93,14.66M3.93,3.34L5.34,1.93L8.17,4.76L6.76,6.17L3.93,3.34M7,10H2V8H7V10",O="M21.81 10.25C21.75 10.21 21.25 9.82 20.17 9.82C19.89 9.82 19.61 9.85 19.33 9.9C19.12 8.5 17.95 7.79 17.9 7.76L17.61 7.59L17.43 7.86C17.19 8.22 17 8.63 16.92 9.05C16.72 9.85 16.84 10.61 17.25 11.26C16.76 11.54 15.96 11.61 15.79 11.61H2.62C2.28 11.61 2 11.89 2 12.24C2 13.39 2.18 14.54 2.58 15.62C3.03 16.81 3.71 17.69 4.58 18.23C5.56 18.83 7.17 19.17 9 19.17C9.79 19.17 10.61 19.1 11.42 18.95C12.54 18.75 13.62 18.36 14.61 17.79C15.43 17.32 16.16 16.72 16.78 16C17.83 14.83 18.45 13.5 18.9 12.35H19.09C20.23 12.35 20.94 11.89 21.33 11.5C21.59 11.26 21.78 10.97 21.92 10.63L22 10.39L21.81 10.25M3.85 11.24H5.61C5.69 11.24 5.77 11.17 5.77 11.08V9.5C5.77 9.42 5.7 9.34 5.61 9.34H3.85C3.76 9.34 3.69 9.41 3.69 9.5V11.08C3.7 11.17 3.76 11.24 3.85 11.24M6.28 11.24H8.04C8.12 11.24 8.2 11.17 8.2 11.08V9.5C8.2 9.42 8.13 9.34 8.04 9.34H6.28C6.19 9.34 6.12 9.41 6.12 9.5V11.08C6.13 11.17 6.19 11.24 6.28 11.24M8.75 11.24H10.5C10.6 11.24 10.67 11.17 10.67 11.08V9.5C10.67 9.42 10.61 9.34 10.5 9.34H8.75C8.67 9.34 8.6 9.41 8.6 9.5V11.08C8.6 11.17 8.66 11.24 8.75 11.24M11.19 11.24H12.96C13.04 11.24 13.11 11.17 13.11 11.08V9.5C13.11 9.42 13.05 9.34 12.96 9.34H11.19C11.11 9.34 11.04 9.41 11.04 9.5V11.08C11.04 11.17 11.11 11.24 11.19 11.24M6.28 9H8.04C8.12 9 8.2 8.91 8.2 8.82V7.25C8.2 7.16 8.13 7.09 8.04 7.09H6.28C6.19 7.09 6.12 7.15 6.12 7.25V8.82C6.13 8.91 6.19 9 6.28 9M8.75 9H10.5C10.6 9 10.67 8.91 10.67 8.82V7.25C10.67 7.16 10.61 7.09 10.5 7.09H8.75C8.67 7.09 8.6 7.15 8.6 7.25V8.82C8.6 8.91 8.66 9 8.75 9M11.19 9H12.96C13.04 9 13.11 8.91 13.11 8.82V7.25C13.11 7.16 13.04 7.09 12.96 7.09H11.19C11.11 7.09 11.04 7.15 11.04 7.25V8.82C11.04 8.91 11.11 9 11.19 9M11.19 6.72H12.96C13.04 6.72 13.11 6.65 13.11 6.56V5C13.11 4.9 13.04 4.83 12.96 4.83H11.19C11.11 4.83 11.04 4.89 11.04 5V6.56C11.04 6.64 11.11 6.72 11.19 6.72M13.65 11.24H15.41C15.5 11.24 15.57 11.17 15.57 11.08V9.5C15.57 9.42 15.5 9.34 15.41 9.34H13.65C13.57 9.34 13.5 9.41 13.5 9.5V11.08C13.5 11.17 13.57 11.24 13.65 11.24",P="M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z",W="M2 19.63L13.43 8.2L12.72 7.5L14.14 6.07L12 3.89C13.2 2.7 15.09 2.7 16.27 3.89L19.87 7.5L18.45 8.91H21.29L22 9.62L18.45 13.21L17.74 12.5V9.62L16.27 11.04L15.56 10.33L4.13 21.76L2 19.63Z",D="M7 14C5.9 14 5 13.1 5 12S5.9 10 7 10 9 10.9 9 12 8.1 14 7 14M12.6 10C11.8 7.7 9.6 6 7 6C3.7 6 1 8.7 1 12S3.7 18 7 18C9.6 18 11.8 16.3 12.6 14H16V18H20V14H23V10H12.6Z",R="M23 16V15.5A2.5 2.5 0 0 0 18 15.5V16A1 1 0 0 0 17 17V21A1 1 0 0 0 18 22H23A1 1 0 0 0 24 21V17A1 1 0 0 0 23 16M22 16H19V15.5A1.5 1.5 0 0 1 22 15.5M7 8.9H11V7H7A5 5 0 0 0 7 17H11V15.1H7A3.1 3.1 0 0 1 7 8.9M8 11V13H16V11M13 15.1V17H15V15.1M17 7H13V8.9H17A3.09 3.09 0 0 1 19.94 11A5.12 5.12 0 0 1 20.5 11H21.9A5 5 0 0 0 17 7Z",F="M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z",U="M13 15.6C13.3 15.8 13.7 15.8 14 15.6L19 12.7V13C19.7 13 20.4 13.1 21 13.4V11.6L22 11C22.5 10.7 22.6 10.1 22.4 9.6L20.9 7.1C20.8 6.9 20.7 6.7 20.5 6.6L12.6 2.2C12.4 2.1 12.2 2 12 2S11.6 2.1 11.4 2.2L3.6 6.6C3.4 6.7 3.2 6.8 3.1 7L1.6 9.6C1.3 10.1 1.5 10.7 2 11C2.3 11.2 2.7 11.2 3 11V16.5C3 16.9 3.2 17.2 3.5 17.4L11.4 21.8C11.6 21.9 11.8 22 12 22S12.4 21.9 12.6 21.8L13.5 21.3C13.2 20.7 13.1 20 13 19.3M11 19.3L5 15.9V9.2L11 12.6V19.3M20.1 9.7L13.8 13.3L13.2 12.3L19.5 8.7L20.1 9.7M12 10.8V4.2L18 7.5L12 10.8M22.5 16.9L20.4 19L22.5 21.1L21.1 22.5L19 20.4L16.9 22.5L15.5 21.1L17.6 19L15.5 16.9L16.9 15.5L19 17.6L21.1 15.5L22.5 16.9Z",N="M8,5.14V19.14L19,12.14L8,5.14Z",j="M5.41,21L6.12,17H2.12L2.47,15H6.47L7.53,9H3.53L3.88,7H7.88L8.59,3H10.59L9.88,7H15.88L16.59,3H18.59L17.88,7H21.88L21.53,9H17.53L16.47,15H20.47L20.12,17H16.12L15.41,21H13.41L14.12,17H8.12L7.41,21H5.41M9.53,9L8.47,15H14.47L15.53,9H9.53Z",K="M12,4C14.1,4 16.1,4.8 17.6,6.3C20.7,9.4 20.7,14.5 17.6,17.6C15.8,19.5 13.3,20.2 10.9,19.9L11.4,17.9C13.1,18.1 14.9,17.5 16.2,16.2C18.5,13.9 18.5,10.1 16.2,7.7C15.1,6.6 13.5,6 12,6V10.6L7,5.6L12,0.6V4M6.3,17.6C3.7,15 3.3,11 5.1,7.9L6.6,9.4C5.5,11.6 5.9,14.4 7.8,16.2C8.3,16.7 8.9,17.1 9.6,17.4L9,19.4C8,19 7.1,18.4 6.3,17.6Z",J="M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1Z",X="M18,18H6V6H18V18Z",G={stable:"M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M10 17L5 12L6.41 10.59L10 14.17L17.59 6.58L19 8L10 17Z",experimental:"M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6M5,19A1,1 0 0,0 6,20H18A1,1 0 0,0 19,19C19,18.79 18.93,18.59 18.82,18.43L16.53,14.47L14,17L8.93,11.93L5.18,18.43C5.07,18.59 5,18.79 5,19M13,10A1,1 0 0,0 12,11A1,1 0 0,0 13,12A1,1 0 0,0 14,11A1,1 0 0,0 13,10Z",deprecated:"M10 3H14V14H10V3M10 21V17H14V21H10Z"},Y={1:"M10,7V9H12V17H14V7H10Z",2:"M9,7V9H13V11H11A2,2 0 0,0 9,13V17H11L15,17V15H11V13H13A2,2 0 0,0 15,11V9A2,2 0 0,0 13,7H9Z",3:"M15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H9V9H13V11H11V13H13V15H9V17H13A2,2 0 0,0 15,15",4:"M9,7V13H13V17H15V7H13V11H11V7H9Z",5:"M9,7V13H13V15H9V17H13A2,2 0 0,0 15,15V13A2,2 0 0,0 13,11H11V9H15V7H9Z",6:"M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V13A2,2 0 0,0 13,11H11V9H15V7H11M11,13H13V15H11V13Z",7:"M11,17L15,9V7H9V9H13L9,17",8:"M11,13H13V15H11M11,9H13V11H11M11,17H13A2,2 0 0,0 15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H11A2,2 0 0,0 9,9V10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 9,13.5V15C9,16.11 9.9,17 11,17"},Q=5;class tt extends((0,M.Q)(s.WF)){get _currentAddon(){return this._addon||this.addon}connectedCallback(){super.connectedCallback(),this._computeUpdateEntityId(),this._startPolling()}disconnectedCallback(){super.disconnectedCallback(),this._stopPolling()}_renderInfoCard(){const t=this._isSystemManaged(this._currentAddon);return s.qy` <ha-card outlined> <div class="card-content"> <div class="addon-header"> <div class="title"> ${this._currentAddon.logo?s.qy` <img class="logo" alt="" src="/api/hassio/addons/${this._currentAddon.slug}/logo"> `:s.s6} ${this.narrow?s.s6:(0,z.z)(this._currentAddon.name,this._currentAddon.stage)} <div class="description"> ${this._currentAddon.version?s.qy` ${this.i18n.localize("ui.panel.config.apps.dashboard.current_version",{version:this._currentAddon.version})} <div class="changelog" @click="${this._openChangelog}"> (<span class="changelog-link">${this.i18n.localize("ui.panel.config.apps.dashboard.changelog")}</span>) </div> `:s.qy`${this._currentAddon.version_latest} <span class="changelog-link" @click="${this._openChangelog}">${this.i18n.localize("ui.panel.config.apps.dashboard.changelog")}</span>`} </div> </div> ${this._currentAddon.update_available||this._updateState?.attributes?.in_progress?s.qy`<supervisor-apps-tag variant="brand" .iconPath="${T}" .label="${this.i18n.localize("ui.panel.config.apps.state."+(this._updateState?.attributes?.in_progress?"updating":"update_available"))}"></supervisor-apps-tag>`:s.s6} ${this._currentAddon.version?s.qy`<supervisor-apps-state .state="${this._currentAddon.state}"></supervisor-apps-state>`:s.s6} </div> <ha-chip-set class="capabilities"> ${"stable"!==this._currentAddon.stage?s.qy` <ha-assist-chip filled class="${(0,n.H)({yellow:"experimental"===this._currentAddon.stage,red:"deprecated"===this._currentAddon.stage})}" @click="${this._showMoreInfo}" id="stage" .label="${(0,g.Z)(this.i18n.localize(`ui.panel.config.apps.dashboard.capability.stages.${this._currentAddon.stage}`))}"> <ha-svg-icon slot="icon" .path="${G[this._currentAddon.stage]}"> </ha-svg-icon> </ha-assist-chip> `:s.s6} <ha-assist-chip filled class="${(0,n.H)({green:Number(this._currentAddon.rating)>=6,yellow:[3,4,5].includes(Number(this._currentAddon.rating)),red:Number(this._currentAddon.rating)<=2})}" @click="${this._showMoreInfo}" id="rating" .label="${(0,g.Z)(this.i18n.localize("ui.panel.config.apps.dashboard.capability.label.rating"))}"> <ha-svg-icon slot="icon" .path="${Y[this._currentAddon.rating]}"> </ha-svg-icon> </ha-assist-chip> ${this._currentAddon.host_network?s.qy` <ha-assist-chip filled @click="${this._showMoreInfo}" id="host_network" .label="${(0,g.Z)(this.i18n.localize("ui.panel.config.apps.dashboard.capability.label.host"))}"> <ha-svg-icon slot="icon" .path="${F}"> </ha-svg-icon> </ha-assist-chip> `:s.s6} ${this._currentAddon.full_access?s.qy` <ha-assist-chip filled @click="${this._showMoreInfo}" id="full_access" .label="${(0,g.Z)(this.i18n.localize("ui.panel.config.apps.dashboard.capability.label.hardware"))}"> <ha-svg-icon slot="icon" .path="${I}"></ha-svg-icon> </ha-assist-chip> `:s.s6} ${this._currentAddon.homeassistant_api?s.qy` <ha-assist-chip filled @click="${this._showMoreInfo}" id="homeassistant_api" .label="${(0,g.Z)(this.i18n.localize("ui.panel.config.apps.dashboard.capability.label.core"))}"> <ha-svg-icon slot="icon" .path="${A.mdiHomeAssistant}"></ha-svg-icon> </ha-assist-chip> `:s.s6} ${this._computeHassioApi?s.qy` <ha-assist-chip filled @click="${this._showMoreInfo}" id="hassio_api" .label="${(0,g.Z)(this.i18n.localize(`ui.panel.config.apps.dashboard.capability.role.${this._currentAddon.hassio_role}`)||this._currentAddon.hassio_role)}"> <ha-svg-icon slot="icon" .path="${A.mdiHomeAssistant}"></ha-svg-icon> </ha-assist-chip> `:s.s6} ${this._currentAddon.docker_api?s.qy` <ha-assist-chip filled @click="${this._showMoreInfo}" id="docker_api" .label="${(0,g.Z)(this.i18n.localize("ui.panel.config.apps.dashboard.capability.label.docker"))}"> <ha-svg-icon slot="icon" .path="${O}"></ha-svg-icon> </ha-assist-chip> `:s.s6} ${this._currentAddon.host_pid?s.qy` <ha-assist-chip filled @click="${this._showMoreInfo}" id="host_pid" .label="${(0,g.Z)(this.i18n.localize("ui.panel.config.apps.dashboard.capability.label.host_pid"))}"> <ha-svg-icon slot="icon" .path="${j}"></ha-svg-icon> </ha-assist-chip> `:s.s6} ${"default"!==this._currentAddon.apparmor?s.qy` <ha-assist-chip filled @click="${this._showMoreInfo}" class="${this._computeApparmorClassName}" id="apparmor" .label="${(0,g.Z)(this.i18n.localize("ui.panel.config.apps.dashboard.capability.label.apparmor"))}"> <ha-svg-icon slot="icon" .path="${J}"></ha-svg-icon> </ha-assist-chip> `:s.s6} ${this._currentAddon.auth_api?s.qy` <ha-assist-chip filled @click="${this._showMoreInfo}" id="auth_api" .label="${(0,g.Z)(this.i18n.localize("ui.panel.config.apps.dashboard.capability.label.auth"))}"> <ha-svg-icon slot="icon" .path="${D}"></ha-svg-icon> </ha-assist-chip> `:s.s6} ${this._currentAddon.ingress?s.qy` <ha-assist-chip filled @click="${this._showMoreInfo}" id="ingress" .label="${(0,g.Z)(this.i18n.localize("ui.panel.config.apps.dashboard.capability.label.ingress"))}"> <ha-svg-icon slot="icon" .path="${B}"></ha-svg-icon> </ha-assist-chip> `:s.s6} ${this._currentAddon.signed?s.qy` <ha-assist-chip filled @click="${this._showMoreInfo}" id="signed" .label="${(0,g.Z)(this.i18n.localize("ui.panel.config.apps.dashboard.capability.label.signed"))}"> <ha-svg-icon slot="icon" .path="${R}"></ha-svg-icon> </ha-assist-chip> `:s.s6} ${t?s.qy` <ha-assist-chip filled @click="${this._showSystemManagedInfo}" id="system_managed" .label="${(0,g.Z)(this.i18n.localize("ui.panel.config.apps.dashboard.system_managed.badge"))}"> <ha-svg-icon slot="icon" .path="${A.mdiHomeAssistant}"></ha-svg-icon> </ha-assist-chip> `:s.s6} </ha-chip-set> <div class="description"> ${this._error?s.qy`<ha-alert alert-type="error">${this._error}</ha-alert>`:s.s6} ${this._currentAddon.description}.<br> ${this.i18n.localize("ui.panel.config.apps.dashboard.visit_app_page",{name:s.qy`<a href="${this._currentAddon.url}" target="_blank" rel="noreferrer">${(0,z.z)(this._currentAddon.name,this._currentAddon.stage)}</a>`})} </div> </div> ${this._currentAddon.update_available&&this._updateEntityId||this._computeShowWebUI||this._computeShowIngressUI||!this._currentAddon.version?s.qy` <div class="card-actions"> ${this._currentAddon.update_available&&this._updateEntityId?s.qy` <ha-button appearance="filled" @click="${this._openUpdate}"> <ha-svg-icon slot="start" .path="${T}"></ha-svg-icon> ${this.i18n.localize("ui.common.update")} </ha-button> `:s.s6} ${this._computeShowWebUI||this._computeShowIngressUI?s.qy` <ha-button href="${(0,l.J)(this._computeShowIngressUI?s.s6:this._pathWebui)}" target="${(0,l.J)(this._computeShowIngressUI?s.s6:"_blank")}" rel="${(0,l.J)(this._computeShowIngressUI?s.s6:"noopener")}" @click="${this._computeShowWebUI?void 0:this._openIngress}"> ${this.i18n.localize("ui.panel.config.apps.dashboard.open_web_ui")} </ha-button> `:s.s6} ${this._currentAddon.version?s.s6:s.qy` <ha-progress-button .disabled="${!this._currentAddon.available}" @click="${this._installClicked}" .iconPath="${Z}"> ${this.i18n.localize("ui.panel.config.apps.dashboard.install")} </ha-progress-button> `} </div> `:s.s6} </ha-card>`}_renderDescriptionCard(){return this.addon.long_description?s.qy` <ha-card class="long-description" outlined> <div class="card-content"> <ha-markdown .content="${this.addon.long_description}" lazy-images></ha-markdown> </div> </ha-card> `:s.s6}_renderControlsCard(){const t=this._isSystemManaged(this._currentAddon),e=[{description:this.i18n.localize("ui.panel.config.apps.dashboard.cpu_usage"),value:this._metrics?.cpu_percent},{description:this.i18n.localize("ui.panel.config.apps.dashboard.ram_usage"),value:this._metrics?.memory_percent,tooltip:`${(0,L.A)(this._metrics?.memory_usage)}/${(0,L.A)(this._metrics?.memory_limit)}`}];return s.qy` <ha-card class="controls" outlined> <div class="title"> <span> ${this.i18n.localize("ui.panel.config.apps.dashboard.controls")} </span> ${this._currentAddon.version?s.qy`<ha-dropdown placement="bottom-end"> <ha-icon-button slot="trigger" .label="${this.i18n.localize("ui.common.menu")}" .path="${P}"></ha-icon-button> <ha-dropdown-item variant="danger" appearance="plain" @click="${this._uninstallClicked}" .disabled="${t&&!this.controlEnabled||this._uninstalling}"> <ha-svg-icon slot="icon" .path="${U}"></ha-svg-icon> ${this.i18n.localize("ui.panel.config.apps.dashboard.uninstall")} </ha-dropdown-item> ${this._currentAddon.build?s.qy` <ha-dropdown-item variant="danger" @click="${this._rebuildClicked}"> <ha-svg-icon slot="icon" .path="${W}"></ha-svg-icon> ${this.i18n.localize("ui.panel.config.apps.dashboard.rebuild")} </ha-dropdown-item> `:s.s6} </ha-dropdown>`:s.s6} </div> <div class="content"> ${t?s.qy` <supervisor-app-system-managed .narrow="${this.narrow}" .hideButton="${this.controlEnabled}"></supervisor-app-system-managed> `:s.s6} ${this._uninstalling?s.qy` <ha-alert alert-type="error" .title="${this.i18n.localize("ui.panel.config.apps.dashboard.uninstalling")}"> <ha-spinner size="small" slot="icon" indeterminate></ha-spinner> </ha-alert> `:s.s6} <div class="actions"> ${this._computeIsRunning?s.qy`<ha-progress-button variant="danger" @click="${this._stopClicked}" .disabled="${t&&!this.controlEnabled||this._uninstalling}" .iconPath="${X}"> ${this.i18n.localize("ui.panel.config.apps.dashboard.stop")} </ha-progress-button> <ha-progress-button variant="danger" appearance="filled" @click="${this._restartClicked}" .disabled="${t&&!this.controlEnabled||this._uninstalling}" .iconPath="${K}"> ${this.i18n.localize("ui.panel.config.apps.dashboard.restart")} </ha-progress-button> `:s.qy`<ha-progress-button @click="${this._startClicked}" .progress="${"startup"===this._currentAddon.state}" .iconPath="${N}"> ${this.i18n.localize("ui.panel.config.apps.dashboard.start")} </ha-progress-button>`} </div> ${this._currentAddon.version?s.qy` <wa-divider></wa-divider> <ha-row-item> <span slot="headline"> ${this.i18n.localize("ui.panel.config.apps.dashboard.option.boot.title")} </span> <span slot="supporting-text"> ${this.i18n.localize("ui.panel.config.apps.dashboard.option.boot.description")} </span> <ha-switch slot="end" .disabled="${t&&!this.controlEnabled||this._uninstalling}" @change="${this._startOnBootToggled}" .checked="${"auto"===this._currentAddon.boot}" haptic></ha-switch> </ha-row-item> ${"once"!==this._currentAddon.startup?s.qy` <ha-row-item> <span slot="headline"> ${this.i18n.localize("ui.panel.config.apps.dashboard.option.watchdog.title")} </span> <span slot="supporting-text"> ${this.i18n.localize("ui.panel.config.apps.dashboard.option.watchdog.description")} </span> <ha-switch slot="end" .disabled="${t&&!this.controlEnabled||this._uninstalling}" @change="${this._watchdogToggled}" .checked="${this._currentAddon.watchdog||!1}" haptic></ha-switch> </ha-row-item> `:s.s6} <ha-row-item> <span slot="headline"> ${this.i18n.localize("ui.panel.config.apps.dashboard.option.auto_update.title")} </span> <span slot="supporting-text"> ${this.i18n.localize("ui.panel.config.apps.dashboard.option.auto_update.description")} </span> <ha-switch slot="end" .disabled="${t&&!this.controlEnabled||this._uninstalling}" @change="${this._autoUpdateToggled}" .checked="${this._currentAddon.auto_update}" haptic></ha-switch> </ha-row-item> ${!this._computeCannotIngressSidebar&&this._currentAddon.ingress?s.qy` <ha-row-item> <span slot="headline"> ${this.i18n.localize("ui.panel.config.apps.dashboard.option.ingress_panel.title")} </span> <span slot="supporting-text"> ${this.i18n.localize("ui.panel.config.apps.dashboard.option.ingress_panel.description")} </span> <ha-switch slot="end" .disabled="${t&&!this.controlEnabled||this._uninstalling}" @change="${this._panelToggled}" .checked="${this._currentAddon.ingress_panel}" haptic></ha-switch> </ha-row-item> `:s.s6} ${this._computeUsesProtectedOptions?s.qy` <ha-row-item> <span slot="headline"> ${this.i18n.localize("ui.panel.config.apps.dashboard.option.protected.title")} </span> <span slot="supporting-text"> ${this.i18n.localize("ui.panel.config.apps.dashboard.option.protected.description")} </span> <ha-switch slot="end" .disabled="${t&&!this.controlEnabled||this._uninstalling}" @change="${this._protectionToggled}" .checked="${this._currentAddon.protected}" haptic></ha-switch> </ha-row-item> `:s.s6} `:s.s6} ${this._currentAddon.version&&"started"===this._currentAddon.state?s.qy`<wa-divider></wa-divider> <ha-row-item> <span slot="supporting-text"> ${this.i18n.localize("ui.panel.config.apps.dashboard.hostname")} </span> <code slot="headline"> ${this._currentAddon.hostname} </code> </ha-row-item> ${e.map(t=>s.qy` <supervisor-app-metric .description="${t.description}" .value="${t.value??0}" .tooltip="${t.tooltip}"></supervisor-app-metric> `)}`:s.s6} </div> </ha-card> `}render(){return s.qy` ${"protected"in this._currentAddon&&!this._currentAddon.protected?s.qy` <ha-alert alert-type="error" .title="${this.i18n.localize("ui.panel.config.apps.dashboard.protection_mode.title")}"> ${this.i18n.localize("ui.panel.config.apps.dashboard.protection_mode.content")} <ha-button variant="danger" slot="action" @click="${this._protectionToggled}"> ${this.i18n.localize("ui.panel.config.apps.dashboard.protection_mode.enable")} </ha-button> </ha-alert> `:s.s6} <div class="app ${this._isMobileSize||!this._currentAddon.version?"column":""}"> ${this._isMobileSize||!this._currentAddon.version?s.qy` ${this._renderInfoCard()} ${this._currentAddon.version?this._renderControlsCard():s.s6} ${this._renderDescriptionCard()} `:s.qy`<div class="info-column"> ${this._renderInfoCard()} ${this._renderDescriptionCard()} </div> <div class="control-column">${this._renderControlsCard()}</div>`} </div> `}updated(t){super.updated(t),t.has("addon")&&this._loadMetrics()}_startPolling(){this._pollInterval||(this._pollInterval=window.setInterval(()=>{this._refreshAddonInfo()},1e3*Q))}_stopPolling(){this._pollInterval&&(clearInterval(this._pollInterval),this._pollInterval=void 0)}async _refreshAddonInfo(){const t=this._currentAddon;if(t?.slug)try{this._addon=await(0,C.fetchHassioAddonInfo)(this.api.callWS,t.slug)}catch(t){console.error("Failed to fetch addon info",t)}}async _loadMetrics(){const t=this._currentAddon;"state"in t&&"started"===t.state&&(this._metrics=await(0,$.lE)(this.api.callWS,`addons/${t.slug}`))}get _computeHassioApi(){const t=this._currentAddon;return t.hassio_api&&("manager"===t.hassio_role||"admin"===t.hassio_role)}get _computeApparmorClassName(){const t=this._currentAddon;return"profile"===t.apparmor?"green":"disable"===t.apparmor?"red":""}_showMoreInfo(t){const e=t.currentTarget.id;(0,x.showAlertDialog)(this,{title:this.i18n.localize(`ui.panel.config.apps.dashboard.capability.${e}.title`),text:this.i18n.localize(`ui.panel.config.apps.dashboard.capability.${e}.description`)})}_showSystemManagedInfo(){(0,x.showAlertDialog)(this,{title:this.i18n.localize("ui.panel.config.apps.dashboard.system_managed.title"),text:this.i18n.localize("ui.panel.config.apps.dashboard.system_managed.description")})}get _computeIsRunning(){const t=this._currentAddon;return"started"===t?.state}get _pathWebui(){return this._currentAddon.webui.replace("[HOST]",document.location.hostname)}get _computeShowWebUI(){const t=this._currentAddon;return!t.ingress&&t.webui&&this._computeIsRunning}_openIngress(){(0,u.oo)(`/app/${this.addon.slug}`)}get _computeShowIngressUI(){return this._currentAddon.ingress&&this._computeIsRunning}get _computeCannotIngressSidebar(){return!this._currentAddon.ingress}get _computeUsesProtectedOptions(){const t=this._currentAddon;return t.docker_api||t.full_access||t.host_pid}async _startOnBootToggled(){this._error=void 0;const t=this._currentAddon,e={boot:"auto"===t.boot?"manual":"auto"};try{await(0,C.setHassioAddonOption)(this.api.callWS,t.slug,e);const a={success:!0,response:void 0,path:"option"};(0,h.r)(this,"hass-api-called",a)}catch(t){this._error=this.i18n.localize("ui.panel.config.apps.dashboard.failed_to_save",{error:(0,$.VR)(t)})}}async _watchdogToggled(){this._error=void 0;const t=this._currentAddon,e={watchdog:!t.watchdog};try{await(0,C.setHassioAddonOption)(this.api.callWS,t.slug,e);const a={success:!0,response:void 0,path:"option"};(0,h.r)(this,"hass-api-called",a)}catch(t){this._error=this.i18n.localize("ui.panel.config.apps.dashboard.failed_to_save",{error:(0,$.VR)(t)})}}async _autoUpdateToggled(){this._error=void 0;const t=this._currentAddon,e={auto_update:!t.auto_update};try{await(0,C.setHassioAddonOption)(this.api.callWS,t.slug,e);const a={success:!0,response:void 0,path:"option"};(0,h.r)(this,"hass-api-called",a)}catch(t){this._error=this.i18n.localize("ui.panel.config.apps.dashboard.failed_to_save",{error:(0,$.VR)(t)})}}async _protectionToggled(){this._error=void 0;const t=this._currentAddon,e={protected:!t.protected};try{await(0,C.setHassioAddonSecurity)(this.api.callWS,t.slug,e);const a={success:!0,response:void 0,path:"security"};(0,h.r)(this,"hass-api-called",a)}catch(t){this._error=this.i18n.localize("ui.panel.config.apps.dashboard.failed_to_save",{error:(0,$.VR)(t)})}}async _panelToggled(){this._error=void 0;const t=this._currentAddon,e={ingress_panel:!t.ingress_panel};try{await(0,C.setHassioAddonOption)(this.api.callWS,t.slug,e);const a={success:!0,response:void 0,path:"option"};(0,h.r)(this,"hass-api-called",a)}catch(t){this._error=this.i18n.localize("ui.panel.config.apps.dashboard.failed_to_save",{error:(0,$.VR)(t)})}}async _openChangelog(){try{const t=this._currentAddon,e=await(0,C.fetchHassioAddonChangelog)(this.api,t.slug);(0,x.showAlertDialog)(this,{title:this.i18n.localize("ui.panel.config.apps.dashboard.changelog"),text:s.qy`<ha-markdown .content="${(0,q.C)(t,e)}"></ha-markdown>`})}catch(t){(0,x.showAlertDialog)(this,{title:this.i18n.localize("ui.panel.config.apps.dashboard.action_error.get_changelog"),text:(0,$.VR)(t)})}}async _installClicked(t){const e=t.currentTarget;e.progress=!0;const a=this._currentAddon;try{await(0,C.installHassioAddon)(this.api.callWS,a.slug);const t={success:!0,response:void 0,path:"install"};(0,h.r)(this,"hass-api-called",t)}catch(t){(0,x.dk)(this,{title:this.i18n.localize("ui.panel.config.apps.dashboard.action_error.install"),text:(0,$.VR)(t),confirmText:this.i18n.localize("ui.common.ok"),dismissText:this.i18n.localize("ui.panel.config.apps.dashboard.action_error.view_supervisor_logs"),cancel:()=>(0,u.oo)("/config/logs?provider=supervisor")})}e.progress=!1,this._refreshAddonInfo()}async _stopClicked(t){const e=this._currentAddon;if(this._isSystemManaged(e)&&!this.controlEnabled)return;const a=t.currentTarget;a.progress=!0;try{await(0,C.stopHassioAddon)(this.api.callWS,e.slug);const t={success:!0,response:void 0,path:"stop"};(0,h.r)(this,"hass-api-called",t)}catch(t){(0,x.showAlertDialog)(this,{title:this.i18n.localize("ui.panel.config.apps.dashboard.action_error.stop"),text:(0,$.VR)(t)})}a.progress=!1,this._refreshAddonInfo()}async _restartClicked(t){const e=this._currentAddon;if(this._isSystemManaged(e)&&!this.controlEnabled)return;const a=t.currentTarget;a.progress=!0;try{await(0,C.restartHassioAddon)(this.api.callWS,e.slug);const t={success:!0,response:void 0,path:"restart"};(0,h.r)(this,"hass-api-called",t)}catch(t){(0,x.showAlertDialog)(this,{title:this.i18n.localize("ui.panel.config.apps.dashboard.action_error.restart"),text:(0,$.VR)(t)})}a.progress=!1,this._refreshAddonInfo()}async _rebuildClicked(t){const e=t.currentTarget;e.progress=!0;const a=this._currentAddon;try{await(0,C.rebuildLocalAddon)(this.api.callWS,a.slug)}catch(t){(0,x.showAlertDialog)(this,{title:this.i18n.localize("ui.panel.config.apps.dashboard.action_error.rebuild"),text:(0,$.VR)(t)})}e.progress=!1,this._refreshAddonInfo()}async _startClicked(t){const e=t.currentTarget;e.progress=!0;const a=this._currentAddon;try{const t=await(0,C.validateHassioAddonOption)(this.api.callWS,a.slug);if(!t.valid)return await(0,x.dk)(this,{title:this.i18n.localize("ui.panel.config.apps.dashboard.action_error.start_invalid_config"),text:t.message.split(" Got ")[0],confirm:()=>this._openConfiguration(),confirmText:this.i18n.localize("ui.panel.config.apps.dashboard.action_error.go_to_config"),dismissText:this.i18n.localize("ui.common.cancel")}),e.actionError(),void(e.progress=!1)}catch(t){return e.actionError(),e.progress=!1,void(0,x.showAlertDialog)(this,{title:this.i18n.localize("ui.panel.config.apps.dashboard.action_error.validate_config"),text:(0,$.VR)(t)})}try{await(0,C.startHassioAddon)(this.api.callWS,a.slug),this._addon=await(0,C.fetchHassioAddonInfo)(this.api.callWS,a.slug);const t={success:!0,response:void 0,path:"start"};(0,h.r)(this,"hass-api-called",t)}catch(t){return e.actionError(),e.progress=!1,void(0,x.showAlertDialog)(this,{title:this.i18n.localize("ui.panel.config.apps.dashboard.action_error.start"),text:(0,$.VR)(t)})}e.actionSuccess(),e.progress=!1,this._refreshAddonInfo()}_openConfiguration(){const t=this._currentAddon;(0,u.oo)(`/config/app/${t.slug}/config`)}async _uninstallClicked(){const t=this._currentAddon;if(this._isSystemManaged(t)&&!this.controlEnabled)return;let e=!1;if(await(0,x.dk)(this,{title:this.i18n.localize("ui.panel.config.apps.dashboard.uninstall_dialog.title",{name:(0,z.z)(t.name,t.stage)}),text:s.qy` <ha-formfield .label="${s.qy`<p> ${this.i18n.localize("ui.panel.config.apps.dashboard.uninstall_dialog.remove_data")} </p>`}"> <ha-switch @change="${t=>{e=t.target.checked}}" .checked="${e}" haptic></ha-switch> </ha-formfield> `,confirmText:this.i18n.localize("ui.panel.config.apps.dashboard.uninstall_dialog.uninstall"),dismissText:this.i18n.localize("ui.common.cancel"),destructive:!0})){this._uninstalling=!0,this._error=void 0;try{await(0,C.uninstallHassioAddon)(this.api.callWS,t.slug,e);const a={success:!0,response:void 0,path:"uninstall"};(0,h.r)(this,"hass-api-called",a)}catch(t){(0,x.showAlertDialog)(this,{title:this.i18n.localize("ui.panel.config.apps.dashboard.action_error.uninstall"),text:(0,$.VR)(t)})}finally{this._uninstalling=!1,this._refreshAddonInfo()}}}_computeUpdateEntityId(){const t=this._currentAddon,e=Object.values(this.registries.devices).find(e=>e.identifiers.some(([e,a])=>"hassio"===e&&a===t.slug));if(!e)return;const a=Object.values(this.registries.entities).find(t=>t.device_id===e.id&&"update"===(0,p.m)(t.entity_id));a&&(this._updateEntityId=a.entity_id)}_openUpdate(){(0,k.p)(this,{entityId:this._updateEntityId})}static get styles(){return[H.RF,s.AH`:host{display:block}.app{display:flex;gap:var(--ha-space-4);max-width:1200px}.app.column{flex-direction:column;gap:var(--ha-space-2)}@media (max-width:1120px){.app{flex-direction:column;gap:var(--ha-space-2)}}.info-column{display:flex;flex-direction:column;gap:var(--ha-space-4);flex:2;min-width:0}.control-column{flex:1;min-width:min(480px,100%)}.controls .title{display:flex}.controls .title span{flex:1;font-size:var(--ha-font-size-l);font-weight:var(--ha-font-weight-medium);padding:var(--ha-space-3) var(--ha-space-4) 0;color:var(--ha-color-text-secondary)}.controls ha-row-item::part(supporting-text){white-space:normal}.controls .content{display:flex;flex-direction:column}.controls .content .actions{display:flex;justify-content:flex-start;padding-inline:var(--ha-space-4);gap:var(--ha-space-3)}wa-divider{margin-inline:var(--ha-space-4)}ha-card{display:block}.addon-header{display:flex;font-size:var(--ha-font-size-2xl);color:var(--ha-card-header-color,var(--primary-text-color));align-items:center;gap:var(--ha-space-2);flex-wrap:wrap;margin-bottom:var(--ha-space-4)}.addon-header .title{flex:1;margin-inline-end:var(--ha-space-4)}.addon-header .title .description{font-size:var(--ha-font-size-s)}.addon-header supervisor-apps-state,.addon-header supervisor-apps-tag{align-self:start;display:inline-flex;height:24px;align-items:center}.errors{color:var(--error-color);margin-bottom:var(--ha-space-4)}.description a{color:var(--primary-color)}img.logo{max-width:100%;max-height:40px;display:block;margin-bottom:var(--ha-space-2)}ha-assist-chip{--md-sys-color-primary:var(--text-primary-color);--md-sys-color-on-surface:var(--text-primary-color);--ha-assist-chip-filled-container-color:var(--primary-color)}ha-assist-chip.red{--ha-assist-chip-filled-container-color:var(
            --label-badge-red,
            #df4c1e
          )}ha-assist-chip.blue{--ha-assist-chip-filled-container-color:var(
            --label-badge-blue,
            #039be5
          )}ha-assist-chip.green{--ha-assist-chip-filled-container-color:var(
            --label-badge-green,
            #0da035
          )}ha-assist-chip.yellow{--ha-assist-chip-filled-container-color:var(
            --label-badge-yellow,
            #f4b400
          )}.capabilities{margin-bottom:var(--ha-space-4)}.card-actions{justify-content:flex-end;display:flex;gap:var(--ha-space-2)}.changelog{display:contents}.changelog-link{color:var(--primary-color);text-decoration:underline;cursor:pointer}ha-markdown{padding:var(--ha-space-4);--markdown-image-background-color:transparent;--markdown-image-border-radius:0;--markdown-image-min-height:auto;--markdown-image-text-indent:0;--markdown-image-transition:none}ha-alert{display:block;margin-bottom:var(--ha-space-4)}ha-alert ha-button{--mdc-theme-primary:var(--primary-text-color)}a{text-decoration:none}`]}constructor(...t){super(...t),this.narrow=!1,this.controlEnabled=!1,this._uninstalling=!1,this.mobileSizeQuery="all and (max-width: 1120px), all and (max-height: 500px)",this._isSystemManaged=(0,c.A)(t=>"system_managed"in t&&t.system_managed)}}(0,o.Cg)([(0,r.MZ)({type:Boolean})],tt.prototype,"narrow",void 0),(0,o.Cg)([(0,r.MZ)({attribute:!1})],tt.prototype,"route",void 0),(0,o.Cg)([(0,r.MZ)({attribute:!1})],tt.prototype,"addon",void 0),(0,o.Cg)([(0,r.MZ)({type:Boolean,attribute:"control-enabled"})],tt.prototype,"controlEnabled",void 0),(0,o.Cg)([(0,r.wk)(),(0,i.Fg)({context:w.D5,subscribe:!0})],tt.prototype,"i18n",void 0),(0,o.Cg)([(0,i.Fg)({context:w.Hd,subscribe:!0})],tt.prototype,"registries",void 0),(0,o.Cg)([(0,i.Fg)({context:w.Ie,subscribe:!0})],tt.prototype,"api",void 0),(0,o.Cg)([(0,r.wk)()],tt.prototype,"_metrics",void 0),(0,o.Cg)([(0,r.wk)()],tt.prototype,"_error",void 0),(0,o.Cg)([(0,r.wk)()],tt.prototype,"_addon",void 0),(0,o.Cg)([(0,r.wk)()],tt.prototype,"_updateEntityId",void 0),(0,o.Cg)([(0,r.wk)()],tt.prototype,"_uninstalling",void 0),(0,o.Cg)([(0,r.wk)(),(0,d.fI)({entityIdPath:["_updateEntityId"]})],tt.prototype,"_updateState",void 0),tt=(0,o.Cg)([(0,r.EM)("supervisor-app-info")],tt),e()}catch(t){e(t)}})},36382(t,e,a){a.a(t,async function(t,e){try{var o=a(62826),i=a(35211),s=a(5124),r=a(22441),n=a(1087),l=a(38962),c=a(18350),d=a(22792),h=t([l,c]);[l,c]=h.then?(await h)():h;class p extends s.WF{render(){return s.qy` <ha-alert alert-type="warning" .title="${this.i18n.localize("ui.panel.config.apps.dashboard.system_managed.title")}" .narrow="${this.narrow}"> ${this.i18n.localize("ui.panel.config.apps.dashboard.system_managed.description")} ${this.hideButton?s.s6:s.qy` <ha-button slot="action" @click="${this._takeControl}"> ${this.i18n.localize("ui.panel.config.apps.dashboard.system_managed.take_control")} </ha-button> `} </ha-alert> `}_takeControl(){(0,n.r)(this,"system-managed-take-control")}constructor(...t){super(...t),this.narrow=!1,this.hideButton=!1}}p.styles=s.AH`ha-alert{display:block;margin-bottom:16px}ha-button{white-space:nowrap}`,(0,o.Cg)([(0,r.MZ)({type:Boolean})],p.prototype,"narrow",void 0),(0,o.Cg)([(0,r.wk)(),(0,i.Fg)({context:d.D5,subscribe:!0})],p.prototype,"i18n",void 0),(0,o.Cg)([(0,r.MZ)({type:Boolean,attribute:"hide-button"})],p.prototype,"hideButton",void 0),p=(0,o.Cg)([(0,r.EM)("supervisor-app-system-managed")],p),e()}catch(t){e(t)}})},45993(t,e,a){a.a(t,async function(t,e){try{var o=a(62826),i=a(5124),s=a(22441),r=a(6030),n=a(65829),l=a(36866),c=a(14503),d=a(22828),h=a(93560),p=t([n,l,d]);[n,l,d]=p.then?(await p)():p;class u extends i.WF{render(){return this.addon?i.qy` <div class="search"> <ha-input-search appearance="outlined" @input="${this._filterChanged}" .value="${this._filter}" .placeholder="${this.hass.localize("ui.panel.config.logs.search")}"></ha-input-search> </div> <div class="content"> <error-log-card .hass="${this.hass}" .header="${this.addon.name}" .provider="${this.addon.slug}" .filter="${this._filter}"> </error-log-card> </div> `:i.qy` <ha-spinner></ha-spinner> `}async _filterChanged(t){this._filter=t.target.value}static get styles(){return[c.RF,h.g,i.AH`.content{margin:auto;padding:var(--ha-space-2)}.search{position:sticky;top:0;z-index:2}ha-input-search{padding:var(--ha-space-3) var(--ha-space-2);background:var(--sidebar-background-color);border-bottom:1px solid var(--divider-color)}@media all and (max-width:870px){:host{--error-log-card-height:calc(100vh - 304px)}}`]}constructor(...t){super(...t),this._filter=(0,r.p9)("filter")||""}}(0,o.Cg)([(0,s.MZ)({attribute:!1})],u.prototype,"hass",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],u.prototype,"addon",void 0),(0,o.Cg)([(0,s.wk)()],u.prototype,"_filter",void 0),u=(0,o.Cg)([(0,s.EM)("supervisor-app-log-tab")],u),e()}catch(t){e(t)}})},45285(t,e,a){a.a(t,async function(t,e){try{var o=a(62826),i=a(22441),s=a(324),r=a(87057),n=a(83173),l=a(42997),c=a(45993),d=t([r,n,l,c]);[r,n,l,c]=d.then?(await d)():d;class h extends s.a{updatePageEl(t){t.route=this.routeTail,t.hass=this.hass,t.addon=this.addon,t.narrow=this.narrow,t.controlEnabled=this.controlEnabled}constructor(...t){super(...t),this.narrow=!1,this.controlEnabled=!1,this.routerOptions={defaultPage:"info",showLoading:!0,routes:{info:{tag:"supervisor-app-info-tab"},documentation:{tag:"supervisor-app-documentation-tab"},config:{tag:"supervisor-app-config-tab"},logs:{tag:"supervisor-app-log-tab"}}}}}(0,o.Cg)([(0,i.MZ)({type:Boolean})],h.prototype,"narrow",void 0),(0,o.Cg)([(0,i.MZ)({attribute:!1})],h.prototype,"hass",void 0),(0,o.Cg)([(0,i.MZ)({attribute:!1})],h.prototype,"addon",void 0),(0,o.Cg)([(0,i.MZ)({type:Boolean,attribute:"control-enabled"})],h.prototype,"controlEnabled",void 0),h=(0,o.Cg)([(0,i.EM)("supervisor-app-router")],h),e()}catch(t){e(t)}})},97198(t,e,a){a.d(e,{C:()=>o});a(74423),a(18111),a(13579);(0,a(22786).A)((t,e)=>e.some(e=>t.includes(e)));const o=(t,e)=>{if(e.startsWith("# Changelog")&&(e=e.substring(12)),e.includes(`# ${t.version}`)&&e.includes(`# ${t.version_latest}`)){const a=e.split(`# ${t.version}`)[0];a.includes(`# ${t.version_latest}`)&&(e=a)}return e}},31200(t,e,a){a.a(t,async function(t,o){try{a.r(e);a(74423),a(44114),a(18111),a(22489),a(13579);var i=a(62826),s=a(5124),r=a(22441),n=a(22786),l=a(1087),c=a(91926),d=a(6030),h=a(22130),p=a(47351),u=a(81562),g=a(65063),b=a(28794),v=a(23296),m=a(40511),f=a(14503),y=a(45285),_=t([b,v,m,y]);[b,v,m,y]=_.then?(await _)():_;const w="M15.9,18.45C17.25,18.45 18.35,17.35 18.35,16C18.35,14.65 17.25,13.55 15.9,13.55C14.54,13.55 13.45,14.65 13.45,16C13.45,17.35 14.54,18.45 15.9,18.45M21.1,16.68L22.58,17.84C22.71,17.95 22.75,18.13 22.66,18.29L21.26,20.71C21.17,20.86 21,20.92 20.83,20.86L19.09,20.16C18.73,20.44 18.33,20.67 17.91,20.85L17.64,22.7C17.62,22.87 17.47,23 17.3,23H14.5C14.32,23 14.18,22.87 14.15,22.7L13.89,20.85C13.46,20.67 13.07,20.44 12.71,20.16L10.96,20.86C10.81,20.92 10.62,20.86 10.54,20.71L9.14,18.29C9.05,18.13 9.09,17.95 9.22,17.84L10.7,16.68L10.65,16L10.7,15.31L9.22,14.16C9.09,14.05 9.05,13.86 9.14,13.71L10.54,11.29C10.62,11.13 10.81,11.07 10.96,11.13L12.71,11.84C13.07,11.56 13.46,11.32 13.89,11.15L14.15,9.29C14.18,9.13 14.32,9 14.5,9H17.3C17.47,9 17.62,9.13 17.64,9.29L17.91,11.15C18.33,11.32 18.73,11.56 19.09,11.84L20.83,11.13C21,11.07 21.17,11.13 21.26,11.29L22.66,13.71C22.75,13.86 22.71,14.05 22.58,14.16L21.1,15.31L21.15,16L21.1,16.68M6.69,8.07C7.56,8.07 8.26,7.37 8.26,6.5C8.26,5.63 7.56,4.92 6.69,4.92A1.58,1.58 0 0,0 5.11,6.5C5.11,7.37 5.82,8.07 6.69,8.07M10.03,6.94L11,7.68C11.07,7.75 11.09,7.87 11.03,7.97L10.13,9.53C10.08,9.63 9.96,9.67 9.86,9.63L8.74,9.18L8,9.62L7.81,10.81C7.79,10.92 7.7,11 7.59,11H5.79C5.67,11 5.58,10.92 5.56,10.81L5.4,9.62L4.64,9.18L3.5,9.63C3.41,9.67 3.3,9.63 3.24,9.53L2.34,7.97C2.28,7.87 2.31,7.75 2.39,7.68L3.34,6.94L3.31,6.5L3.34,6.06L2.39,5.32C2.31,5.25 2.28,5.13 2.34,5.03L3.24,3.47C3.3,3.37 3.41,3.33 3.5,3.37L4.63,3.82L5.4,3.38L5.56,2.19C5.58,2.08 5.67,2 5.79,2H7.59C7.7,2 7.79,2.08 7.81,2.19L8,3.38L8.74,3.82L9.86,3.37C9.96,3.33 10.08,3.37 10.13,3.47L11.03,5.03C11.09,5.13 11.07,5.25 11,5.32L10.03,6.06L10.06,6.5L10.03,6.94Z",C="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M15,18V16H6V18H15M18,14V12H6V14H18Z",$="M13.5,4A1.5,1.5 0 0,0 12,5.5A1.5,1.5 0 0,0 13.5,7A1.5,1.5 0 0,0 15,5.5A1.5,1.5 0 0,0 13.5,4M13.14,8.77C11.95,8.87 8.7,11.46 8.7,11.46C8.5,11.61 8.56,11.6 8.72,11.88C8.88,12.15 8.86,12.17 9.05,12.04C9.25,11.91 9.58,11.7 10.13,11.36C12.25,10 10.47,13.14 9.56,18.43C9.2,21.05 11.56,19.7 12.17,19.3C12.77,18.91 14.38,17.8 14.54,17.69C14.76,17.54 14.6,17.42 14.43,17.17C14.31,17 14.19,17.12 14.19,17.12C13.54,17.55 12.35,18.45 12.19,17.88C12,17.31 13.22,13.4 13.89,10.71C14,10.07 14.3,8.67 13.14,8.77Z",x="M5,3C3.89,3 3,3.89 3,5V19C3,20.11 3.89,21 5,21H19C20.11,21 21,20.11 21,19V5C21,3.89 20.11,3 19,3H5M5,5H19V19H5V5M7,7V9H17V7H7M7,11V13H17V11H7M7,15V17H14V15H7Z";class k extends s.WF{async firstUpdated(){this._fromStore="true"===(0,d.p9)("store");const t=(0,d.p9)("repository_url");t&&(0,c.oo)(`/config/app/${this.route.path.split("/")[1]}`,{replace:!0}),await this._loadAddon(t),this.addEventListener("hass-api-called",t=>this._apiCalled(t)),this._loading=!1}updated(t){if(t.has("route")&&this.route){const e=t.get("route"),a=e?.path.split("/")[1],o=this.route.path.split("/")[1];a!==o&&o&&!this._loading&&this._loadAddon()}}render(){if(this._error)return s.qy`<hass-error-screen .hass="${this.hass}" .error="${this._error}"></hass-error-screen>`;if(!this._addon)return s.qy`<hass-loading-screen .hass="${this.hass}" .narrow="${this.narrow}"></hass-loading-screen>`;const t=[{translationKey:"ui.panel.config.apps.panel.info",path:`/config/app/${this._addon.slug}/info`,iconPath:$}];this._addon.documentation&&t.push({translationKey:"ui.panel.config.apps.panel.documentation",path:`/config/app/${this._addon.slug}/documentation`,iconPath:C}),this._addon.version&&t.push({translationKey:"ui.panel.config.apps.panel.configuration",path:`/config/app/${this._addon.slug}/config`,iconPath:w},{translationKey:"ui.panel.config.apps.panel.log",path:`/config/app/${this._addon.slug}/logs`,iconPath:x});const e=this._computeTail(this.route);return s.qy` <hass-tabs-subpage .hass="${this.hass}" .narrow="${this.narrow}" .route="${e}" .tabs="${t}" back-path="${this._fromStore?"/config/apps/available":"/config/apps"}"> <span slot="header">${this._addon.name}</span> <supervisor-app-router .route="${e}" .narrow="${this.narrow}" .hass="${this.hass}" .addon="${this._addon}" .controlEnabled="${this._controlEnabled}" @system-managed-take-control="${this._enableControl}"></supervisor-app-router> </hass-tabs-subpage> `}async _loadAddon(t){const e=this.route.path.split("/")[1];if(e)try{this._addon=await(0,h.fetchHassioAddonInfo)(this.hass.callWS,e)}catch(a){if(t)try{if(await this._handleMissingRepository(e,t),this._addon)return void(this._error=void 0)}catch(t){return void(this._error=(0,p.VR)(t))}this._error=`Error loading app: ${(0,p.VR)(a)}`}else this._error="No addon specified"}async _handleMissingRepository(t,e){(await(0,u.fetchSupervisorStore)(this.hass)).repositories.some(t=>t.source===e)||(await(0,g.dk)(this,{title:this.hass.localize("ui.panel.config.apps.my.add_repository_title"),text:this.hass.localize("ui.panel.config.apps.my.add_repository_description",{repository:e}),confirmText:this.hass.localize("ui.common.add"),dismissText:this.hass.localize("ui.common.cancel")})?(await(0,u.addStoreRepository)(this.hass,e),this._addon=await(0,h.fetchHassioAddonInfo)(this.hass.callWS,t)):this._error=this.hass.localize("ui.panel.config.apps.my.error_repository_not_found"))}async _apiCalled(t){if(!t.detail.success)return;const e=t.detail.path?.split("/");if(!e||0===e.length)return;const a=e[e.length-1];["uninstall","install","update","start","stop"].includes(a)&&(0,l.r)(this,"apps-collection-refresh",{collection:"addon"}),"uninstall"===a?(0,c.OE)(this._fromStore?"/config/apps/available":"/config/apps"):await this._loadAddon()}_enableControl(){this._controlEnabled=!0}static get styles(){return[f.RF,s.AH`:host{color:var(--primary-text-color)}.content{padding:var(--ha-space-6) 0 var(--ha-space-8);display:flex;flex-direction:column;align-items:center}`]}constructor(...t){super(...t),this.narrow=!1,this._controlEnabled=!1,this._fromStore=!1,this._loading=!0,this._computeTail=(0,n.A)(t=>{const e=t.path.split("/").filter(Boolean),a=e[0]||"",o=e.slice(1).join("/");return{prefix:t.prefix+"/"+a,path:o?"/"+o:""}})}}(0,i.Cg)([(0,r.MZ)({attribute:!1})],k.prototype,"hass",void 0),(0,i.Cg)([(0,r.MZ)({attribute:!1})],k.prototype,"route",void 0),(0,i.Cg)([(0,r.MZ)({type:Boolean})],k.prototype,"narrow",void 0),(0,i.Cg)([(0,r.wk)()],k.prototype,"_addon",void 0),(0,i.Cg)([(0,r.wk)()],k.prototype,"_error",void 0),(0,i.Cg)([(0,r.wk)()],k.prototype,"_controlEnabled",void 0),(0,i.Cg)([(0,r.wk)()],k.prototype,"_fromStore",void 0),(0,i.Cg)([(0,r.wk)()],k.prototype,"_loading",void 0),k=(0,i.Cg)([(0,r.EM)("ha-config-app-dashboard")],k),o()}catch(t){o(t)}})},24367(t,e,a){a.d(e,{L:()=>i,z:()=>s});var o=a(23832);const i=["input_boolean","input_button","input_text","input_number","input_datetime","input_select","counter","timer","schedule"],s=(0,o.g)(i)},53580(t,e,a){a.d(e,{mdiHomeAssistant:()=>o});const o="m12.151 1.5882c-.3262 0-.6523.1291-.8996.3867l-8.3848 8.7354c-.0619.0644-.1223.1368-.1807.2154-.0588.0789-.1151.1638-.1688.2534-.2593.4325-.4552.9749-.5232 1.4555-.0026.018-.0076.0369-.0094.0548-.0121.0987-.0184.1944-.0184.2857v8.0124a1.2731 1.2731 0 001.2731 1.2731h7.8313l-3.4484-3.593a1.7399 1.7399 0 111.0803-1.125l2.6847 2.7972v-10.248a1.7399 1.7399 0 111.5276-0v7.187l2.6702-2.782a1.7399 1.7399 0 111.0566 1.1505l-3.7269 3.8831v2.7299h8.174a1.2471 1.2471 0 001.2471-1.2471v-8.0375c0-.0912-.0059-.1868-.0184-.2855-.0603-.4935-.2636-1.0617-.5326-1.5105-.0537-.0896-.1101-.1745-.1684-.253-.0588-.079-.1191-.1513-.181-.2158l-8.3848-8.7363c-.2473-.2577-.5735-.3866-.8995-.3864"},46187(t,e,a){a.d(e,{A:()=>o});const o=(t=0,e=2)=>{if(0===t)return"0 Bytes";e=e<0?0:e;const a=Math.floor(Math.log(t)/Math.log(1024));return`${parseFloat((t/1024**a).toFixed(e))} ${["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"][a]}`}},996(t,e,a){a.d(e,{G:()=>o});a(45367),a(92731);class o{get(t){return this._cache.get(t)}set(t,e){this._cache.set(t,e),this._expiration&&window.setTimeout(()=>this._cache.delete(t),this._expiration)}has(t){return this._cache.has(t)}constructor(t){this._cache=new Map,this._expiration=t}}},36240(t,e,a){a.d(e,{NN:()=>i,S8:()=>o,gN:()=>s});const o=(t,e,a)=>isNaN(t)||isNaN(e)||isNaN(a)?0:t>a?a:t<e?e:t,i=(t,e,a)=>100*(t-e)/(a-e),s=t=>Math.round(10*t)/10},36918(t,e,a){a.d(e,{o:()=>o});const o=(t,e)=>`https://www.iobroker.net/#${t.language&&t.language.split("-")[0]||"en"}/adapters/adapterref/iobroker.lovelace/README.md#`},84187(t,e,a){a.d(e,{M:()=>o});const o=/(?:iphone|android|ipad)/i.test(navigator.userAgent)},46571(t){function e(t){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}e.keys=()=>[],e.resolve=e,e.id=46571,t.exports=e},62003(t,e,a){var o={"./ha-icon-prev":["89133",[61982]],"./ha-icon-button-toolbar":["9882",[39763,76775]],"./ha-alert":["38962",[19695]],"./ha-icon-button-toggle":["62501",[77254]],"./ha-svg-icon.ts":["67094",[]],"./ha-alert.ts":["38962",[19695]],"./ha-icon":["47680",[44889]],"./ha-icon-next.ts":["43661",[63902]],"./ha-qr-code.ts":["60543",[51343,62740]],"./ha-icon-overflow-menu.ts":["75248",[39763,34995,85545]],"./ha-icon-button-toggle.ts":["62501",[77254]],"./ha-icon-button-group":["39826",[13647]],"./ha-svg-icon":["67094",[]],"./ha-icon-button-prev":["45100",[99197]],"./ha-icon-button.ts":["26300",[]],"./ha-icon-overflow-menu":["75248",[39763,34995,85545]],"./ha-icon-button-arrow-next":["99028",[54101]],"./ha-icon-button-prev.ts":["45100",[99197]],"./ha-icon-picker":["64138",[39763,32450,46095,7305,92769,3283,26092,71749]],"./ha-icon-button-toolbar.ts":["9882",[39763,76775]],"./ha-icon-button-arrow-prev.ts":["90248",[17041]],"./ha-icon-button-next":["25440",[81049]],"./ha-icon-next":["43661",[63902]],"./ha-icon-picker.ts":["64138",[39763,32450,46095,7305,92769,3283,26092,71749]],"./ha-icon-prev.ts":["89133",[61982]],"./ha-icon-button-arrow-prev":["90248",[17041]],"./ha-icon-button-next.ts":["25440",[81049]],"./ha-icon.ts":["47680",[44889]],"./ha-qr-code":["60543",[51343,62740]],"./ha-icon-button":["26300",[]],"./ha-icon-button-group.ts":["39826",[13647]],"./ha-icon-button-arrow-next.ts":["99028",[54101]]};function i(t){if(!a.o(o,t))return Promise.resolve().then(()=>{var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e});var e=o[t],i=e[0];return Promise.all(e[1].map(a.e)).then(()=>a(i))}i.keys=()=>Object.keys(o),i.id=62003,t.exports=i}};