iobroker.lovelace
Version:
With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI
1 lines • 13.4 kB
JavaScript
export const __rspack_esm_id=8697;export const __rspack_esm_ids=[8697];export const __webpack_modules__={92288(e,t,i){i.a(e,async function(e,t){try{i(74423),i(44114),i(18111),i(22489),i(20116),i(61701),i(13579);var s=i(62826),a=i(35211),n=i(5124),r=i(22441),o=i(6412),h=i(22786),c=i(1087),l=i(65522),d=i(37981),p=i(71727),y=i(81816),m=i(28455),u=i(15638),v=i(77423),_=i(22792),f=i(95350),b=i(88555),g=i(42269),$=i(14503),C=i(44144),x=i(18198),L=i(26300),I=i(93367),M=(i(67094),i(28170),i(1671),i(89081)),k=e([L,I]);[L,I]=k.then?(await k)():k;const H="M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z",E="M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z",D="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",V="M3 6H21V4H3C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H7V18H3V6M13 12H9V13.78C8.39 14.33 8 15.11 8 16C8 16.89 8.39 17.67 9 18.22V20H13V18.22C13.61 17.67 14 16.88 14 16S13.61 14.33 13 13.78V12M11 17.5C10.17 17.5 9.5 16.83 9.5 16S10.17 14.5 11 14.5 12.5 15.17 12.5 16 11.83 17.5 11 17.5M22 8H16C15.5 8 15 8.5 15 9V19C15 19.5 15.5 20 16 20H22C22.5 20 23 19.5 23 19V9C23 8.5 22.5 8 22 8M21 18H17V10H21V18Z",w="M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z",q="M17.63,5.84C17.27,5.33 16.67,5 16,5H5A2,2 0 0,0 3,7V17A2,2 0 0,0 5,19H16C16.67,19 17.27,18.66 17.63,18.15L22,12L17.63,5.84Z",F="M17,13H7V11H17M19,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",Z="M20 2H4C2.9 2 2 2.9 2 4V20C2 21.11 2.9 22 4 22H20C21.11 22 22 21.11 22 20V4C22 2.9 21.11 2 20 2M4 6L6 4H10.9L4 10.9V6M4 13.7L13.7 4H18.6L4 18.6V13.7M20 18L18 20H13.1L20 13.1V18M20 10.3L10.3 20H5.4L20 5.4V10.3Z";class z extends n.WF{willUpdate(e){!this.subEntry&&e.has("itemId")&&this._updateItemData()}render(){const{name:e,context:t,iconPath:i,fallbackIconPath:s,stateObject:a,notFound:r}=this._itemData(this.type,this.itemId),h="entity"!==this.type&&!r,c=this.parentEntries||this._entries;if(this.subEntry&&"entity"!==this.type&&(!c||0===c.referenced_entities.length))return n.s6;const l=!this.subEntry&&!this.expand,d=n.qy` <div class="icon" slot="start"> ${i?n.qy`<ha-icon .icon="${i}"></ha-icon>`:this._iconImg?n.qy`<img alt="${this._domainName||""}" crossorigin="anonymous" referrerpolicy="no-referrer" src="${this._iconImg}">`:s?n.qy`<ha-svg-icon .path="${s}"></ha-svg-icon>`:"entity"===this.type?n.qy` <ha-state-icon .stateObj="${a||{entity_id:this.itemId,attributes:{}}}"> </ha-state-icon> `:n.s6} </div> <div slot="headline">${e}</div> ${r||t&&!this.hideContext?n.qy`<span slot="supporting-text">${r?this.hass.localize(`ui.components.target-picker.${this.type}_not_found`):t}</span>`:n.s6} ${a&&this.subEntry?n.qy`<span slot="supporting-text" class="state">${this.hass.formatEntityState(a)}</span>`:n.s6} ${!this.subEntry&&c&&h?n.qy` <div slot="end" class="summary"> ${h&&!this.expand&&c?.referenced_entities.length?n.qy`<button class="main link" ="${this._openDetails}"> ${this.hass.localize("ui.components.target-picker.entities_count",{count:c?.referenced_entities.length})} </button>`:h?n.qy`<span class="main"> ${this.hass.localize("ui.components.target-picker.entities_count",{count:c?.referenced_entities.length})} </span>`:n.s6} </div> `:n.s6} ${this.expand||this.subEntry?this.subEntry&&"entity"===this.type?n.qy` <ha-svg-icon .path="${(0,u.qC)(this.hass.language,this.hass.translationMetadata.translations)?H:E}" slot="end"></ha-svg-icon> `:n.s6:n.qy` <ha-icon-button .path="${D}" slot="end" ="${this._removeItem}"></ha-icon-button> `} `;let p;return p=l||this.subEntry&&"entity"===this.type?n.qy` <ha-list-item-button class="${(0,o.H)({error:r,replaceable:l})}" ="${l?this._replaceItem:this.subEntry&&"entity"===this.type?this._openMoreInfo:void 0}"> ${d} </ha-list-item-button> `:n.qy` <ha-list-item-base class="${(0,o.H)({error:r})}"> ${d} </ha-list-item-base> `,n.qy` ${p} ${this.expand&&c&&c.referenced_entities?this._renderEntries():n.s6} `}_renderEntries(){const e=this.parentEntries||this._entries;if(!e||0===e.referenced_entities.length)return this._renderEmptyEntries();let t="floor"===this.type?"area":"area"===this.type?"device":"entity";"label"===this.type&&(e?.referenced_areas.length?t="area":e?.referenced_devices.length&&(t="device"));const i=("area"===t?e?.referenced_areas:"device"===t&&"label"!==this.type?e?.referenced_devices:"label"!==this.type?e?.referenced_entities:[])||[],s=[],a="entity"===t?void 0:i.map(i=>{const a={referenced_areas:[],referenced_devices:[],referenced_entities:[]};return"area"===t?(a.referenced_devices=e?.referenced_devices.filter(t=>this.hass.devices?.[t]?.area_id===i&&e?.referenced_entities.some(e=>this.hass.entities?.[e]?.device_id===t))||[],s.push(...a.referenced_devices),a.referenced_entities=e?.referenced_entities.filter(e=>{const t=this.hass.entities[e];return t.area_id===i||!t.device_id||a.referenced_devices.includes(t.device_id)})||[],a):(a.referenced_entities=e?.referenced_entities.filter(e=>this.hass.entities?.[e]?.device_id===i)||[],a)}),r="label"===this.type&&e?e.referenced_entities.filter(t=>{const i=this.hass.entities[t];return i.labels.includes(this.itemId)&&!e.referenced_devices.includes(i.device_id||"")}):"device"===t&&e?e.referenced_entities.filter(e=>this.hass.entities[e].area_id===this.itemId):[],o="label"===this.type&&e?e.referenced_devices.filter(e=>!s.includes(e)&&this.hass.devices[e].labels.includes(this.itemId)):[],h=0===o.length?void 0:o.map(t=>({referenced_areas:[],referenced_devices:[],referenced_entities:e?.referenced_entities.filter(e=>this.hass.entities?.[e]?.device_id===t)||[]})),c=this.subLevel+1;return n.qy` ${i.map((e,i)=>n.qy` <ha-target-picker-item-row sub-entry .subLevel="${c}" style="${`--sub-entry-indent: calc(${c} * var(--ha-space-10));`}" .hass="${this.hass}" .type="${t}" .itemId="${e}" .parentEntries="${a?.[i]}" .hideContext="${this.hideContext||"label"!==this.type}" expand></ha-target-picker-item-row> `)} ${o.map((e,t)=>n.qy` <ha-target-picker-item-row sub-entry .subLevel="${c}" style="${`--sub-entry-indent: calc(${c} * var(--ha-space-10));`}" .hass="${this.hass}" type="device" .itemId="${e}" .parentEntries="${h?.[t]}" .hideContext="${this.hideContext||"label"!==this.type}" expand></ha-target-picker-item-row> `)} ${r.map(e=>n.qy` <ha-target-picker-item-row sub-entry .subLevel="${c}" style="${`--sub-entry-indent: calc(${c} * var(--ha-space-10));`}" .hass="${this.hass}" type="entity" .itemId="${e}" .hideContext="${this.hideContext||"label"!==this.type}"></ha-target-picker-item-row> `)} `}_renderEmptyEntries(){return n.qy`<ha-list-item-base> <ha-svg-icon .path="${F}" slot="start" class="icon"></ha-svg-icon> <span slot="headline">${this.hass.localize("ui.components.target-picker.no_targets")}</span> </ha-list-item-base>`}async _updateItemData(){if("entity"!==this.type)try{const e=await(0,b.F7)(this.hass.callWS,{[`${this.type}_id`]:[this.itemId]},!1,this.primaryEntitiesOnly),t=[];"floor"!==this.type&&"label"!==this.type||(e.referenced_areas=e.referenced_areas.filter(e=>{const i=this.hass.areas[e];return!("floor"!==this.type&&!i.labels.includes(this.itemId)||!(0,b.Kx)(i,this.hass.devices,this.hass.entities,this.deviceFilter,this.includeDomains,this.includeDeviceClasses,this.hass.states,this.entityFilter,!this.primaryEntitiesOnly))||(t.push(e),!1)}));const i=[];"floor"!==this.type&&"area"!==this.type&&"label"!==this.type||(e.referenced_devices=e.referenced_devices.filter(e=>{const s=this.hass.devices[e];return!(t.includes(s.area_id||"")||!(0,b.Ly)(s,this.hass.entities,this.deviceFilter,this.includeDomains,this.includeDeviceClasses,this.hass.states,this.entityFilter,!this.primaryEntitiesOnly))||(i.push(e),!1)})),e.referenced_entities=e.referenced_entities.filter(t=>{const s=this.hass.entities[t];return!i.includes(s.device_id||"")&&(!!("area"===this.type&&s.area_id===this.itemId||"floor"===this.type&&s.area_id&&e.referenced_areas.includes(s.area_id)||"label"===this.type&&s.labels.includes(this.itemId)||e.referenced_devices.includes(s.device_id||""))&&(0,b.YK)(s,"label"===this.type||!this.primaryEntitiesOnly,this.includeDomains,this.includeDeviceClasses,this.hass.states,this.entityFilter))}),this._entries=e}catch(e){console.error("Failed to extract target",e)}else this._entries=void 0}_setDomainName(e){this._domainName=(0,f.p$)(this.hass.localize,e)}_removeItem(e){e.stopPropagation(),(0,c.r)(this,"remove-target-item",{type:this.type,id:this.itemId})}async _getDeviceDomain(e){try{const t=(await(0,v.Vx)(this.hass,e)).config_entry.domain;this._iconImg=(0,C.MR)({domain:t,type:"icon",darkOptimized:this.hass.themes?.darkMode},this.hass.auth.data.hassUrl),this._setDomainName(t)}catch{}}_replaceItem(e){e.stopPropagation(),(0,c.r)(this,"replace-target-item",{type:this.type,id:this.itemId})}_openDetails(e){e.stopPropagation(),(0,M.D)(this,{title:this._itemData(this.type,this.itemId).name,type:this.type,itemId:this.itemId,deviceFilter:this.deviceFilter,entityFilter:this.entityFilter,includeDomains:this.includeDomains,includeDeviceClasses:this.includeDeviceClasses,primaryEntitiesOnly:this.primaryEntitiesOnly})}constructor(...e){super(...e),this.expand=!1,this.subEntry=!1,this.subLevel=0,this.hideContext=!1,this._itemData=(0,h.A)((e,t)=>{if("floor"===e){const e=this.hass.floors?.[t];return{name:e?.name||t,iconPath:e?.icon,fallbackIconPath:e?(0,x.Si)(e):w,notFound:!e}}if("area"===e){const e=this.hass.areas?.[t];return{name:e?.name||t,context:e?.floor_id&&this.hass.floors?.[e.floor_id]?.name,iconPath:e?.icon,fallbackIconPath:Z,notFound:!e}}if("device"===e){const e=this.hass.devices?.[t];return e?.primary_config_entry&&this._getDeviceDomain(e.primary_config_entry),{name:e?(0,d.T)(e,this.hass.localize,this.hass.states):t,context:e?.area_id&&this.hass.areas?.[e.area_id]?.name,fallbackIconPath:V,notFound:!e}}if("entity"===e){this._setDomainName((0,p.m)(t));const e=this.hass.states[t],i=e?(0,y.aH)(e,this.hass.entities,this.hass.devices):t,{area:s,device:a}=e?(0,m.ln)(e,this.hass.entities,this.hass.devices,this.hass.areas,this.hass.floors):{area:void 0,device:void 0},n=a?(0,d.xn)(a):void 0,r=[s?(0,l.A)(s):void 0,i?n:void 0].filter(Boolean).join((0,u.qC)(this.hass.language,this.hass.translationMetadata.translations)?" ◂ ":" ▸ ");return{name:i||n||t,context:r,stateObject:e,notFound:!e&&"all"!==t&&"none"!==t}}const i=this._labelRegistry.find(e=>e.label_id===t);return{name:i?.name||t,iconPath:i?.icon,fallbackIconPath:q,notFound:!i}}),this._openMoreInfo=()=>{(0,g.p)(this,{entityId:this.itemId})}}}z.styles=[$.og,n.AH`:host{--md-list-item-top-space:0;--md-list-item-bottom-space:0;--md-list-item-leading-space:var(--ha-space-2);--md-list-item-trailing-space:var(--ha-space-2);--md-list-item-two-line-container-height:56px}.error{background:var(--ha-color-fill-warning-quiet-resting)}.error [slot=supporting-text]{color:var(--ha-color-on-warning-normal)}.replaceable{cursor:pointer}.replaceable:hover{background-color:var(--ha-color-fill-neutral-quiet-hover)}state-badge{color:var(--ha-color-on-neutral-quiet)}.icon{width:24px;display:flex;color:var(--ha-color-on-neutral-normal)}img{width:24px;height:24px;z-index:1}ha-icon-button{--ha-icon-button-size:32px}.summary{display:flex;flex-direction:column;align-items:flex-end;line-height:var(--ha-line-height-condensed)}:host([sub-entry]) .summary{margin-inline-start:var(--ha-space-12)}.summary .main{font-weight:var(--ha-font-weight-medium)}:host([expand]) .summary .main{color:var(--ha-color-text-secondary);font-size:var(--ha-font-size-s);font-weight:var(--ha-font-weight-normal)}.summary .secondary{font-size:var(--ha-font-size-s);color:var(--secondary-text-color)}button.link{text-decoration:none;color:var(--primary-color)}button.link:focus,button.link:hover{text-decoration:underline}.state{width:fit-content;font-size:var(--ha-font-size-s);color:var(--ha-color-text-secondary)}ha-list-item-button::part(end){gap:var(--ha-space-2)}:host([sub-entry]) ha-list-item-base::part(base),:host([sub-entry]) ha-list-item-button::part(base){padding-inline-start:var(--sub-entry-indent)}`],(0,s.Cg)([(0,r.MZ)({attribute:!1})],z.prototype,"hass",void 0),(0,s.Cg)([(0,r.MZ)({reflect:!0})],z.prototype,"type",void 0),(0,s.Cg)([(0,r.MZ)({attribute:"item-id"})],z.prototype,"itemId",void 0),(0,s.Cg)([(0,r.MZ)({type:Boolean})],z.prototype,"expand",void 0),(0,s.Cg)([(0,r.MZ)({type:Boolean,attribute:"sub-entry",reflect:!0})],z.prototype,"subEntry",void 0),(0,s.Cg)([(0,r.MZ)({attribute:!1})],z.prototype,"subLevel",void 0),(0,s.Cg)([(0,r.MZ)({type:Boolean,attribute:"hide-context"})],z.prototype,"hideContext",void 0),(0,s.Cg)([(0,r.MZ)({attribute:!1})],z.prototype,"parentEntries",void 0),(0,s.Cg)([(0,r.MZ)({attribute:!1})],z.prototype,"deviceFilter",void 0),(0,s.Cg)([(0,r.MZ)({attribute:!1})],z.prototype,"entityFilter",void 0),(0,s.Cg)([(0,r.MZ)({type:Array,attribute:"include-domains"})],z.prototype,"includeDomains",void 0),(0,s.Cg)([(0,r.MZ)({type:Array,attribute:"include-device-classes"})],z.prototype,"includeDeviceClasses",void 0),(0,s.Cg)([(0,r.MZ)({type:Boolean,attribute:"primary-entities-only"})],z.prototype,"primaryEntitiesOnly",void 0),(0,s.Cg)([(0,r.wk)()],z.prototype,"_iconImg",void 0),(0,s.Cg)([(0,r.wk)()],z.prototype,"_domainName",void 0),(0,s.Cg)([(0,r.wk)()],z.prototype,"_entries",void 0),(0,s.Cg)([(0,r.wk)(),(0,a.Fg)({context:_.HD,subscribe:!0})],z.prototype,"_labelRegistry",void 0),z=(0,s.Cg)([(0,r.EM)("ha-target-picker-item-row")],z),t()}catch(e){t(e)}})}};