iobroker.lovelace
Version:
With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI
1 lines • 16.7 kB
JavaScript
"use strict";(self.rspackChunkhome_assistant_frontend=self.rspackChunkhome_assistant_frontend||[]).push([[92524],{47351:function(a,t,e){e.d(t,{PS:function(){return o},Tv:function(){return r},VR:function(){return i},lE:function(){return n}});e(74423),e(3362),e(17642),e(58004),e(33853),e(45876),e(32475),e(15024),e(31698),e(62953);const o=a=>a.data,i=a=>"object"==typeof a?"object"==typeof a.body?a.body.message||"Unknown error, see supervisor logs":a.body||a.message||"Unknown error, see supervisor logs":a,s=new Set([502,503,504]),r=a=>!!(a&&a.status_code&&s.has(a.status_code))||!(!a||!a.message||!a.message.includes("ERR_CONNECTION_CLOSED")&&!a.message.includes("ERR_CONNECTION_RESET")),n=async(a,t)=>a({type:"supervisor/api",endpoint:`/${t}/stats`,method:"get"})},81310:function(a,t,e){e.a(a,async function(a,t){try{e(62953);var o=e(40445),i=e(5124),s=e(67576),r=e(6412),n=e(26218),l=e(91926),c=e(90248),p=e(2054),h=e(14503),d=a([c,p]);[c,p]=d.then?(await d)():d;let v,g,u,b,f,y=a=>a;class m extends i.WF{render(){var a;return(0,i.qy)(v||(v=y` <div class="toolbar ${0}"> <div class="toolbar-content"> ${0} <div class="main-title"> <slot name="header">${0}</slot> </div> <slot name="toolbar-icon"></slot> </div> </div> <div class="${0}" ="${0}"> <slot></slot> </div> <div id="fab"> <slot name="fab"></slot> </div> `),(0,r.H)({narrow:this.narrow}),this.mainPage||null!==(a=history.state)&&void 0!==a&&a.root?(0,i.qy)(g||(g=y` <ha-menu-button .hass="${0}" .narrow="${0}"></ha-menu-button> `),this.hass,this.narrow):this.backPath?(0,i.qy)(u||(u=y` <ha-icon-button-arrow-prev href="${0}" .hass="${0}"></ha-icon-button-arrow-prev> `),this.backPath,this.hass):(0,i.qy)(b||(b=y` <ha-icon-button-arrow-prev .hass="${0}" ="${0}"></ha-icon-button-arrow-prev> `),this.hass,this._backTapped),this.header,(0,r.H)({content:!0,"ha-scrollbar":this.scrollable,"not-scrollable":!this.scrollable}),this._saveScrollPos)}_saveScrollPos(a){this._savedScrollPos=a.target.scrollTop}_backTapped(){this.backCallback?this.backCallback():(0,l.OE)()}static get styles(){return[h.dp,(0,i.AH)(f||(f=y`:host{display:block;height:100%;background-color:var(--primary-background-color);overflow:hidden;position:relative}:host([narrow]){width:100%;position:fixed}.toolbar{background-color:var(--app-header-background-color);padding-top:var(--safe-area-inset-top);padding-right:var(--safe-area-inset-right)}:host([narrow]) .toolbar{padding-left:var(--safe-area-inset-left)}.toolbar-content{display:flex;align-items:center;font-size:var(--ha-font-size-xl);height:var(--header-height);font-weight:var(--ha-font-weight-normal);color:var(--app-header-text-color,#fff);border-bottom:var(--app-header-border-bottom,none);box-sizing:border-box;padding:8px 12px}.toolbar a{color:var(--sidebar-text-color);text-decoration:none}::slotted([slot=toolbar-icon]),ha-icon-button-arrow-prev,ha-menu-button{display:flex;align-items:center;pointer-events:auto;color:var(--sidebar-icon-color)}.main-title{margin-inline-start:var(--ha-space-6);line-height:var(--ha-line-height-normal);min-width:0;flex-grow:1;overflow-wrap:break-word;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.narrow .main-title{margin-inline-start:var(--ha-space-2)}.content{position:relative;width:calc(100% - var(--safe-area-inset-right,0px));height:calc(100% - 1px - var(--header-height,0px) - var(--safe-area-inset-top,0px) - var(--safe-area-inset-bottom,0px));padding-bottom:var(--safe-area-inset-bottom,0px);margin-right:var(--safe-area-inset-right);overflow-y:auto;overflow:auto;-webkit-overflow-scrolling:touch}.content.not-scrollable{overflow:hidden;display:flex;flex-direction:column}:host([narrow]) .content{width:calc(100% - var(--safe-area-inset-left,0px) - var(--safe-area-inset-right,0px));margin-left:var(--safe-area-inset-left)}#fab{position:absolute;right:calc(16px + var(--safe-area-inset-right,0px));inset-inline-end:calc(16px + var(--safe-area-inset-right,0px));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]) #fab.tabs{bottom:calc(84px + var(--safe-area-inset-bottom,0px))}#fab[is-wide]{bottom:calc(24px + var(--safe-area-inset-bottom,0px));right:calc(24px + var(--safe-area-inset-right,0px));inset-inline-end:calc(24px + var(--safe-area-inset-right,0px));inset-inline-start:initial}`))]}constructor(...a){super(...a),this.mainPage=!1,this.narrow=!1,this.scrollable=!0}}(0,o.Cg)([(0,s.MZ)({attribute:!1})],m.prototype,"hass",void 0),(0,o.Cg)([(0,s.MZ)()],m.prototype,"header",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,attribute:"main-page"})],m.prototype,"mainPage",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,reflect:!0})],m.prototype,"narrow",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean})],m.prototype,"scrollable",void 0),(0,o.Cg)([(0,n.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-subpage")],m),t()}catch(v){t(v)}})},80888:function(a,t,e){e.a(a,async function(a,t){try{e(89463),e(18111),e(61701),e(62953);var o=e(40445),i=e(10058),s=e(5124),r=e(67576),n=(e(67094),e(67398)),l=(e(94969),e(55380)),c=a([i,l]);[i,l]=c.then?(await c)():c;let p,h,d,v,g,u,b,f,y,m,w=a=>a;const x="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",C="M11,18H13V16H11V18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,6A4,4 0 0,0 8,10H10A2,2 0 0,1 12,8A2,2 0 0,1 14,10C14,12 11,11.75 11,15H13C13,12.75 16,12.5 16,10A4,4 0 0,0 12,6Z";class L extends s.WF{render(){var a,t,e;return(0,s.qy)(p||(p=w` <div class="app"> <div class="icon-wrapper"> ${0} </div> <div> <div class="title-row"> <div class="title"> ${0} </div> </div> <div class="addition"> ${0} ${0} </div> </div> </div> ${0} `),this.iconImage?(0,s.qy)(h||(h=w` <img class="icon-image" src="${0}" .title="${0}" alt="${0}"> `),this.iconImage,this.iconTitle,null!==(a=this.iconTitle)&&void 0!==a?a:""):(0,s.qy)(d||(d=w` <ha-svg-icon class="app-icon" .path="${0}" .title="${0}"></ha-svg-icon> `),this.icon,this.iconTitle),(0,n.z)(this.title,this.stage),this.description,!1===this.available?" (Not available)":"",null!==(t=this.tags)&&void 0!==t&&t.length||void 0!==this.state||this.installed?(0,s.qy)(v||(v=w` <div class="footer"> ${0} ${0} </div> `),void 0!==this.state?(0,s.qy)(g||(g=w`<supervisor-apps-state .state="${0}"></supervisor-apps-state>`),this.state||"unknown"):this.installed?(0,s.qy)(u||(u=w`<div class="installed"> <ha-svg-icon .path="${0}"></ha-svg-icon> <span>${0}</span> </div>`),x,this.hass.localize("ui.panel.config.apps.state.installed")):(0,s.qy)(b||(b=w`<span></span>`)),null!==(e=this.tags)&&void 0!==e&&e.length?(0,s.qy)(f||(f=w`<div class="tags"> ${0} </div>`),this.tags.map(a=>(0,s.qy)(y||(y=w`<supervisor-apps-tag .variant="${0}" .iconPath="${0}" .label="${0}"></supervisor-apps-tag>`),a.variant,a.iconPath,a.label))):s.s6):s.s6)}constructor(...a){super(...a),this.stage="stable",this.installed=!1,this.available=!0,this.icon=C}}L.styles=(0,s.AH)(m||(m=w`.app{margin-bottom:var(--ha-space-2);gap:var(--ha-space-4);display:flex}.icon-wrapper{position:relative;margin-top:var(--ha-space-1);width:40px;height:40px;flex-shrink:0}.app-icon{margin-left:var(--ha-space-2);margin-top:var(--ha-space-2);color:var(--secondary-text-color)}.icon-image{max-height:40px;max-width:40px}.title{flex:1;min-width:0;color:var(--primary-text-color);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.title-row{display:flex;align-items:center;gap:var(--ha-space-2);min-width:0}.addition{color:var(--secondary-text-color);margin-top:var(--ha-space-1);overflow:hidden;position:relative;height:2.4em;line-height:var(--ha-line-height-condensed)}.footer{border-top:var(--ha-border-width-sm) solid var(--ha-color-border-neutral-quiet);padding-top:var(--ha-space-2);display:flex;gap:var(--ha-space-2);flex-wrap:wrap;justify-content:space-between}.tags{display:flex;gap:var(--ha-space-2)}.installed{display:inline-flex;align-items:center;gap:var(--ha-space-2);color:var(--ha-color-text-secondary);font-size:var(--ha-font-size-m)}.installed ha-svg-icon{--mdc-icon-size:16px;color:var(--ha-color-on-success-normal)}`)),(0,o.Cg)([(0,r.MZ)({attribute:!1})],L.prototype,"hass",void 0),(0,o.Cg)([(0,r.MZ)()],L.prototype,"title",void 0),(0,o.Cg)([(0,r.MZ)()],L.prototype,"stage",void 0),(0,o.Cg)([(0,r.MZ)()],L.prototype,"state",void 0),(0,o.Cg)([(0,r.MZ)({type:Boolean})],L.prototype,"installed",void 0),(0,o.Cg)([(0,r.MZ)()],L.prototype,"description",void 0),(0,o.Cg)([(0,r.MZ)({type:Boolean})],L.prototype,"available",void 0),(0,o.Cg)([(0,r.MZ)({attribute:!1})],L.prototype,"tags",void 0),(0,o.Cg)([(0,r.MZ)({attribute:!1})],L.prototype,"iconTitle",void 0),(0,o.Cg)([(0,r.MZ)({attribute:!1})],L.prototype,"iconClass",void 0),(0,o.Cg)([(0,r.MZ)()],L.prototype,"icon",void 0),(0,o.Cg)([(0,r.MZ)({attribute:!1})],L.prototype,"iconImage",void 0),L=(0,o.Cg)([(0,r.EM)("supervisor-apps-card-content")],L),t()}catch(p){t(p)}})},58503:function(a,t,e){e.a(a,async function(a,o){try{e.r(t),e.d(t,{HaConfigAppsInstalled:function(){return E}});e(89463),e(74423),e(44114),e(26910),e(18111),e(22489),e(61701),e(3362),e(62953);var i=e(40445),s=e(5124),r=e(67576),n=e(22786),l=e(91926),c=e(52220),p=e(18350),h=(e(76776),e(26300)),d=(e(67094),e(36866)),v=e(22130),g=e(47351),u=e(65063),b=e(28794),f=e(23296),y=e(81310),m=e(67398),w=e(80888),x=e(93560),C=a([p,h,d,b,f,y,w]);[p,h,d,b,f,y,w]=C.then?(await C)():C;let L,$,_,A,k,M,H=a=>a;const V="M23,12L20.56,14.78L20.9,18.46L17.29,19.28L15.4,22.46L12,21L8.6,22.47L6.71,19.29L3.1,18.47L3.44,14.78L1,12L3.44,9.21L3.1,5.53L6.71,4.72L8.6,1.54L12,3L15.4,1.54L17.29,4.72L20.9,5.54L20.56,9.22L23,12M20.33,12L18.5,9.89L18.74,7.1L16,6.5L14.58,4.07L12,5.18L9.42,4.07L8,6.5L5.26,7.09L5.5,9.88L3.67,12L5.5,14.1L5.26,16.9L8,17.5L9.42,19.93L12,18.81L14.58,19.92L16,17.5L18.74,16.89L18.5,14.1L20.33,12M11,15H13V17H11V15M11,7H13V13H11V7",Z="M12,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,7L7,12H10V16H14V12H17L12,7Z",z="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",q="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",T="M20.5,11H19V7C19,5.89 18.1,5 17,5H13V3.5A2.5,2.5 0 0,0 10.5,1A2.5,2.5 0 0,0 8,3.5V5H4A2,2 0 0,0 2,7V10.8H3.5C5,10.8 6.2,12 6.2,13.5C6.2,15 5,16.2 3.5,16.2H2V20A2,2 0 0,0 4,22H7.8V20.5C7.8,19 9,17.8 10.5,17.8C12,17.8 13.2,19 13.2,20.5V22H17A2,2 0 0,0 19,20V16H20.5A2.5,2.5 0 0,0 23,13.5A2.5,2.5 0 0,0 20.5,11Z",P="M17.65,6.35C16.2,4.9 14.21,4 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C15.73,20 18.84,17.45 19.73,14H17.65C16.83,16.33 14.61,18 12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.66,6 15.14,6.69 16.22,7.78L13,11H20V4L17.65,6.35Z",S="M4 4V6H20V4M4 7L3 12V14H4V20H13C12.95 19.66 12.92 19.31 12.92 18.95C12.92 17.73 13.3 16.53 14 15.53V14H15.54C16.54 13.33 17.71 12.96 18.91 12.96C19.62 12.96 20.33 13.09 21 13.34V12L20 7M6 14H12V18H6M18 15V18H15V20H18V23H20V20H23V18H20V15";class E extends s.WF{firstUpdated(){this._loadData()}render(){if(this._error)return(0,s.qy)(L||(L=H` <hass-error-screen .hass="${0}" .error="${0}"></hass-error-screen> `),this.hass,this._error);if(!this._addonInfo)return(0,s.qy)($||($=H` <hass-loading-screen .hass="${0}" .narrow="${0}"></hass-loading-screen> `),this.hass,this.narrow);const a=this._getAddons(this._addonInfo.addons,this._filter);return(0,s.qy)(_||(_=H` <hass-subpage .hass="${0}" .narrow="${0}" .route="${0}" back-path="/config" .header="${0}"> <ha-icon-button slot="toolbar-icon" ="${0}" .path="${0}" .label="${0}"></ha-icon-button> <div class="search"> <ha-input-search appearance="outlined" .value="${0}" ="${0}"> </ha-input-search> </div> <div class="content"> ${0} </div> <ha-button size="large" href="/config/apps/available"> <ha-svg-icon slot="start" .path="${0}"></ha-svg-icon> ${0} </ha-button> </hass-subpage> `),this.hass,this.narrow,this.route,this.hass.localize("ui.panel.config.apps.caption"),this._handleCheckUpdates,P,this.hass.localize("ui.panel.config.apps.store.check_updates"),this._filter,this._handleSearchChange,0===a.length?(0,s.qy)(A||(A=H` <ha-card outlined> <div class="card-content"> <button class="link" ="${0}"> ${0} </button> </div> </ha-card> `),this._openStore,this.hass.localize("ui.panel.config.apps.installed.no_apps")):a.map(a=>(0,s.qy)(k||(k=H` <ha-card role="button" tabindex="0" outlined .addon="${0}" ="${0}" aria-label="${0}"> <div class="card-content"> <supervisor-apps-card-content .hass="${0}" .title="${0}" .stage="${0}" .description="${0}" available .tags="${0}" .state="${0}" .icon="${0}" .iconTitle="${0}" .iconImage="${0}"></supervisor-apps-card-content> </div> </ha-card> `),a,this._addonTapped,(0,m.z)(a.name,a.stage),this.hass,a.name,a.stage,a.description,this._getAppTags(a),a.state,a.update_available?Z:T,"started"!==a.state?this.hass.localize("ui.panel.config.apps.installed.app_stopped"):a.update_available?this.hass.localize("ui.panel.config.apps.installed.app_update_available"):this.hass.localize("ui.panel.config.apps.installed.app_running"),a.icon?`/api/hassio/addons/${a.slug}/icon`:void 0)),S,this.hass.localize("ui.panel.config.apps.installed.add_app"))}_handleSearchChange(a){this._filter=a.target.value}async _loadData(){try{this._addonInfo=await(0,v.fetchHassioAddonsInfo)(this.hass)}catch(a){this._error=a.message||this.hass.localize("ui.panel.config.apps.error_loading")}}async _handleCheckUpdates(){try{await(0,v.reloadHassioAddons)(this.hass)}catch(a){(0,u.showAlertDialog)(this,{text:(0,g.VR)(a)})}finally{this._loadData()}}_addonTapped(a){const t=a.currentTarget.addon;(0,l.oo)(`/config/app/${t.slug}/info`)}_openStore(){(0,l.oo)("/config/apps/available")}_getAppTags(a){const t=[];return a.update_available&&t.push({label:this.hass.localize("ui.panel.config.apps.state.update_available"),variant:"brand",iconPath:z}),"stable"!==a.stage&&t.push({label:this.hass.localize(`ui.panel.config.apps.dashboard.capability.stages.${a.stage}`),variant:"experimental"===a.stage?"warning":"danger",iconPath:"experimental"===a.stage?q:V}),t}constructor(...a){super(...a),this.narrow=!1,this._getAddons=(0,n.A)((a,t)=>{let e=a;if(t){const o=t.toLowerCase();e=a.filter(a=>a.name.toLowerCase().includes(o)||a.description.toLowerCase().includes(o)||a.slug.toLowerCase().includes(o))}return e.sort((a,t)=>(0,c.SH)(a.name,t.name,this.hass.locale.language))})}}E.styles=[x.g,(0,s.AH)(M||(M=H`:host{display:block;height:100%;background-color:var(--primary-background-color)}ha-card{cursor:pointer;overflow:hidden}ha-card:hover{background-color:var(--ha-color-fill-neutral-quiet-resting)}.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)}.content{padding:var(--ha-space-4);margin-bottom:var(--ha-space-18);gap:var(--ha-space-4);display:grid;grid-template-columns:repeat(auto-fill,minmax(min(336px,100%),1fr))}.card-content{padding:var(--ha-space-4) var(--ha-space-4) var(--ha-space-2)}button.link{color:var(--primary-color);background:0 0;border:none;padding:0;font:inherit;text-align:left;text-decoration:underline;cursor:pointer}ha-button[size=large]{position:fixed;right:calc(var(--ha-space-4) + var(--safe-area-inset-right));bottom:calc(var(--ha-space-4) + var(--safe-area-inset-bottom));inset-inline-end:calc(var(--ha-space-4) + var(--safe-area-inset-right));inset-inline-start:initial;z-index:1;--ha-button-box-shadow:var(--ha-box-shadow-l)}`))],(0,i.Cg)([(0,r.MZ)({attribute:!1})],E.prototype,"hass",void 0),(0,i.Cg)([(0,r.MZ)({type:Boolean})],E.prototype,"narrow",void 0),(0,i.Cg)([(0,r.MZ)({attribute:!1})],E.prototype,"route",void 0),(0,i.Cg)([(0,r.wk)()],E.prototype,"_addonInfo",void 0),(0,i.Cg)([(0,r.wk)()],E.prototype,"_filter",void 0),(0,i.Cg)([(0,r.wk)()],E.prototype,"_error",void 0),E=(0,i.Cg)([(0,r.EM)("ha-config-apps-installed")],E),o()}catch(L){o(L)}})}}]);