UNPKG

iobroker.lovelace

Version:

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

1 lines 15.1 kB
"use strict";(self.rspackChunkhome_assistant_frontend=self.rspackChunkhome_assistant_frontend||[]).push([[80715],{81816:function(e,t,a){a.d(t,{aH:function(){return o},cx:function(){return r},es:function(){return d}});var i=a(37981),n=a(28978),s=a(79461);const o=(e,t,a)=>{const i=t[e.entity_id];return i?r(i,a):(0,n.u)(e)},r=(e,t,a)=>{const o=e.name||("original_name"in e&&null!=e.original_name?String(e.original_name):void 0),r=e.device_id?t[e.device_id]:void 0;if(!r)return o||(a?(0,n.u)(a):void 0);const d=(0,i.xn)(r);return d!==o?d&&o&&(0,s.p)(o,d)||o:void 0},d=(e,t,a)=>!o(e,t,a)},74705:function(e,t,a){a.d(t,{Bj:function(){return p},Cf:function(){return g},uU:function(){return h}});a(18111),a(81148),a(22489),a(61701),a(13579),a(62953);if(66649!=a.j)var i=a(44537);var n=a(15638),s=a(65522),o=a(37981),r=a(81816),d=a(55931),l=a(28978),c=a(28455);const h=(e,t,a,n,s,o,d)=>{var c;if("string"==typeof t)return t;if(!t)return(0,l.u)(e);let h=(0,i.e)(t);const p=null!==(c=null==d?void 0:d.separator)&&void 0!==c?c:" ";if(h.every(e=>"text"===e.type))return h.map(e=>e.text).join(p);if((0,r.es)(e,a,n)){h.some(e=>"device"===e.type)||(h=h.map(e=>"entity"===e.type?{type:"device"}:e))}const u=g(e,h,a,n,s,o);return 1===u.length?u[0]||"":u.filter(e=>e).join(p)},g=(e,t,a,i,n,l)=>{const{device:h,area:g,floor:p}=(0,c.ln)(e,a,i,n,l);return t.map(t=>{switch(t.type){case"entity":return(0,r.aH)(e,a,i);case"device":return h?(0,o.xn)(h):void 0;case"area":return g?(0,s.A)(g):void 0;case"floor":return p?(0,d.X)(p):void 0;case"text":return t.text;default:return""}})},p=(e,t)=>{const[a,i,s]=g(t,[{type:"entity"},{type:"device"},{type:"area"}],e.entities,e.devices,e.areas,e.floors),o=(0,n.qC)(e.language,e.translationMetadata.translations);return{primary:a||i||t.entity_id,secondary:[s,a?i:void 0].filter(Boolean).join(o?" ◂ ":" ▸ ")||void 0}}},85938:function(e,t,a){a(18111),a(22489),a(3362),a(46058),a(62953);var i=a(40445),n=a(5124),s=a(67576),o=a(1087);let r,d=e=>e;class l extends n.WF{updated(e){e.has("disabled")&&(this.disabled?this._destroySortable():this._createSortable())}disconnectedCallback(){super.disconnectedCallback(),this._shouldBeDestroy=!0,setTimeout(()=>{this._shouldBeDestroy&&(this._destroySortable(),this._shouldBeDestroy=!1)},1)}connectedCallback(){super.connectedCallback(),this._shouldBeDestroy=!1,this.hasUpdated&&!this.disabled&&this._createSortable()}createRenderRoot(){return this}render(){return this.noStyle?n.s6:(0,n.qy)(r||(r=d` <style>.sortable-fallback{display:none!important}.sortable-ghost{box-shadow:0 0 0 2px var(--primary-color);background:rgba(var(--rgb-primary-color),.25);border-radius:var(--ha-border-radius-sm);opacity:.4}.sortable-drag{border-radius:var(--ha-border-radius-sm);opacity:1;background:var(--card-background-color);box-shadow:0px 4px 8px 3px #00000026;cursor:grabbing}</style> `))}async _createSortable(){if(this._sortable)return;const e=this.children[0];if(!e)return;const t=(await Promise.all([a.e(85283),a.e(70322)]).then(a.bind(a,80745))).default,i=Object.assign(Object.assign({scroll:!0,forceAutoScrollFallback:!0,scrollSpeed:20,animation:150},this.options),{},{onChoose:this._handleChoose,onStart:this._handleStart,onEnd:this._handleEnd,onUpdate:this._handleUpdate,onAdd:this._handleAdd,onRemove:this._handleRemove});this.draggableSelector&&(i.draggable=this.draggableSelector),this.handleSelector&&(i.handle=this.handleSelector),void 0!==this.invertSwap&&(i.invertSwap=this.invertSwap),this.group&&(i.group=this.group),this.filter&&(i.filter=this.filter),this._sortable=new t(e,i)}_destroySortable(){this._sortable&&(this._sortable.destroy(),this._sortable=void 0)}constructor(...e){super(...e),this.disabled=!1,this.noStyle=!1,this.invertSwap=!1,this.rollback=!0,this._shouldBeDestroy=!1,this._handleUpdate=e=>{(0,o.r)(this,"item-moved",{newIndex:e.newIndex,oldIndex:e.oldIndex})},this._handleAdd=e=>{(0,o.r)(this,"item-added",{index:e.newIndex,data:e.item.sortableData,item:e.item})},this._handleRemove=e=>{(0,o.r)(this,"item-removed",{index:e.oldIndex})},this._handleEnd=async e=>{(0,o.r)(this,"drag-end"),this.rollback&&e.item.placeholder&&(e.item.placeholder.replaceWith(e.item),delete e.item.placeholder)},this._handleStart=()=>{(0,o.r)(this,"drag-start")},this._handleChoose=e=>{this.rollback&&(e.item.placeholder=document.createComment("sort-placeholder"),e.item.after(e.item.placeholder))}}}(0,i.Cg)([(0,s.MZ)({type:Boolean})],l.prototype,"disabled",void 0),(0,i.Cg)([(0,s.MZ)({type:Boolean,attribute:"no-style"})],l.prototype,"noStyle",void 0),(0,i.Cg)([(0,s.MZ)({type:String,attribute:"draggable-selector"})],l.prototype,"draggableSelector",void 0),(0,i.Cg)([(0,s.MZ)({type:String,attribute:"handle-selector"})],l.prototype,"handleSelector",void 0),(0,i.Cg)([(0,s.MZ)({type:String,attribute:"filter"})],l.prototype,"filter",void 0),(0,i.Cg)([(0,s.MZ)({type:String})],l.prototype,"group",void 0),(0,i.Cg)([(0,s.MZ)({type:Boolean,attribute:"invert-swap"})],l.prototype,"invertSwap",void 0),(0,i.Cg)([(0,s.MZ)({attribute:!1})],l.prototype,"options",void 0),(0,i.Cg)([(0,s.MZ)({type:Boolean})],l.prototype,"rollback",void 0),l=(0,i.Cg)([(0,s.EM)("ha-sortable")],l)},96044:function(e,t,a){a.a(e,async function(e,t){try{a(18111),a(22489),a(3362),a(88454),a(29452),a(62953);var i=a(40445),n=a(5124),s=a(67576),o=a(6412),r=a(75751),d=a(1087),l=a(74705),c=a(15638),h=a(12587),g=a(18350),p=a(29823),u=(a(70947),a(26300)),b=(a(85938),a(67094),a(72669)),v=e([g,p,u,b]);[g,p,u,b]=v.then?(await v)():v;let y,_,f,m,x,C,$,H,w,M,B,S,V=e=>e;const k="M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z",q="M21 11H3V9H21V11M21 13H3V15H21V13Z",z="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z",L="M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z",A=["entity","button"];class Z extends n.WF{_getKey(e){return this._badgesKeys.has(e)||this._badgesKeys.set(e,Math.random().toString()),this._badgesKeys.get(e)}_getBadgeTypeLabel(e){return this.hass.localize(`ui.panel.lovelace.editor.heading-badges.types.${e}.label`)||e}render(){var e;return this.hass?(0,n.qy)(y||(y=V` ${0} <ha-dropdown @wa-select="${0}"> <ha-button slot="trigger" appearance="filled" size="small"> <ha-svg-icon .path="${0}" slot="start"></ha-svg-icon> ${0} </ha-button> ${0} </ha-dropdown> `),null!==(e=this.badges)&&void 0!==e&&e.length?(0,n.qy)(_||(_=V` <ha-sortable handle-selector=".handle" @item-moved="${0}"> <div class="badges"> ${0} </div> </ha-sortable> `),this._badgeMoved,(0,r.u)(this.badges.filter(Boolean),e=>this._getKey(e),(e,t)=>this._renderBadgeItem(e,t))):n.s6,this._addBadge,L,this.hass.localize("ui.panel.lovelace.editor.heading-badges.add"),A.map(e=>(0,n.qy)(f||(f=V` <ha-dropdown-item .value="${0}"> ${0} </ha-dropdown-item> `),e,this._getBadgeTypeLabel(e)))):n.s6}_renderBadgeItem(e,t){var a;const i=null!==(a=e.type)&&void 0!==a?a:"entity",s=e,r=!("entity"!==i||s.entity&&this.hass.states[s.entity]);return(0,n.qy)(m||(m=V` <div class="${0}"> <div class="handle"> <ha-svg-icon .path="${0}"></ha-svg-icon> </div> ${0} <ha-icon-button .label="${0}" .path="${0}" class="edit-icon" .index="${0}" @click="${0}"></ha-icon-button> <ha-icon-button .label="${0}" .path="${0}" class="remove-icon" .index="${0}" @click="${0}"></ha-icon-button> </div> `),(0,o.H)({badge:!0,warning:r}),q,"entity"===i?this._renderEntityBadge(s):"button"===i?this._renderButtonBadge(e):this._renderUnknownBadge(i),this.hass.localize("ui.panel.lovelace.editor.badges.edit"),z,t,this._editBadge,this.hass.localize("ui.panel.lovelace.editor.badges.remove"),k,t,this._removeBadge)}_renderEntityBadge(e){const t=e.entity,a=t?this.hass.states[t]:void 0;if(!t)return(0,n.qy)(x||(x=V` <div class="badge-content"> <div> <span>${0}</span> <span class="secondary">${0}</span> </div> </div> `),this._getBadgeTypeLabel("entity"),this.hass.localize("ui.panel.lovelace.editor.heading-badges.no_entity"));if(!a)return(0,n.qy)(C||(C=V` <div class="badge-content"> <div> <span>${0}</span> <span class="secondary">${0}</span> </div> </div> `),t,this.hass.localize("ui.panel.lovelace.editor.heading-badges.entity_not_found"));const[i,s,o]=(0,l.Cf)(a,[{type:"entity"},{type:"device"},{type:"area"}],this.hass.entities,this.hass.devices,this.hass.areas,this.hass.floors),r=(0,c.qC)(this.hass.language,this.hass.translationMetadata.translations),d=i||s||t,h=[i?s:void 0,o].filter(Boolean).join(r?" ◂ ":" ▸ ");return(0,n.qy)($||($=V` <div class="badge-content"> <div> <span>${0}</span> ${0} </div> </div> `),d,h?(0,n.qy)(H||(H=V`<span class="secondary">${0}</span>`),h):n.s6)}_renderButtonBadge(e){return(0,n.qy)(w||(w=V` <div class="badge-content"> <div> <span>${0}</span> ${0} </div> </div> `),this._getBadgeTypeLabel("button"),e.text?(0,n.qy)(M||(M=V`<span class="secondary">${0}</span>`),e.text):n.s6)}_renderUnknownBadge(e){return(0,n.qy)(B||(B=V` <div class="badge-content"> <div> <span>${0}</span> </div> </div> `),e)}async _addBadge(e){const t=e.detail.item.value;if(!t)return;const a=await(0,b.U)(t);let i;i=a&&a.getStubConfig?a.getStubConfig(this.hass):{type:t};const n=[...this.badges||[],i];(0,d.r)(this,"heading-badges-changed",{badges:n}),await(0,h.E)(),(0,d.r)(this,"edit-heading-badge",{index:n.length-1})}_badgeMoved(e){e.stopPropagation();const{oldIndex:t,newIndex:a}=e.detail,i=[...this.badges||[]];i.splice(a,0,i.splice(t,1)[0]),(0,d.r)(this,"heading-badges-changed",{badges:i})}_removeBadge(e){const t=e.currentTarget.index,a=[...this.badges||[]];a.splice(t,1),(0,d.r)(this,"heading-badges-changed",{badges:a})}_editBadge(e){const t=e.currentTarget.index;(0,d.r)(this,"edit-heading-badge",{index:t})}constructor(...e){super(...e),this._badgesKeys=new WeakMap}}Z.styles=(0,n.AH)(S||(S=V`:host{display:flex!important;flex-direction:column}ha-dropdown{display:inline-block;align-self:flex-start;margin-top:var(--ha-space-2)}.badges{display:flex;flex-direction:column;gap:var(--ha-space-2)}.badge{display:flex;align-items:center}.badge .handle{cursor:move;cursor:grab;padding-right:var(--ha-space-2);padding-inline-end:var(--ha-space-2);padding-inline-start:initial;direction:var(--direction)}.badge .handle>*{pointer-events:none}.badge-content{height:var(--ha-space-12);font-size:var(--ha-font-size-m);display:flex;align-items:center;justify-content:space-between;flex-grow:1}.badge-content div{display:flex;flex-direction:column}.edit-icon,.remove-icon{--ha-icon-button-size:var(--ha-space-9);color:var(--secondary-text-color)}.secondary{font-size:var(--ha-font-size-s);color:var(--secondary-text-color)}.badge.warning{background-color:var(--ha-color-fill-warning-quiet-resting);border-radius:var(--ha-border-radius-sm);overflow:hidden}.badge.warning .secondary{color:var(--ha-color-on-warning-normal)}li[divider]{border-bottom-color:var(--divider-color)}`)),(0,i.Cg)([(0,s.MZ)({attribute:!1})],Z.prototype,"hass",void 0),(0,i.Cg)([(0,s.MZ)({attribute:!1})],Z.prototype,"badges",void 0),Z=(0,i.Cg)([(0,s.EM)("hui-heading-badges-editor")],Z),t()}catch(y){t(y)}})},44774:function(e,t,a){a.a(e,async function(e,i){try{a.r(t),a.d(t,{HuiHeadingCardEditor:function(){return w}});a(62953);var n=a(40445),s=a(5124),o=a(67576),r=a(22786),d=a(63533),l=a(1087),c=(a(11382),a(52763)),h=(a(67094),a(75201)),g=a(999),p=a(91408),u=a(84698),b=a(7382),v=a(96044),y=e([c,v,h,g]);[c,v,h,g]=y.then?(await y)():y;let _,f,m=e=>e;const x="M10,9A1,1 0 0,1 11,8A1,1 0 0,1 12,9V13.47L13.21,13.6L18.15,15.79C18.68,16.03 19,16.56 19,17.14V21.5C18.97,22.32 18.32,22.97 17.5,23H11C10.62,23 10.26,22.85 10,22.57L5.1,18.37L5.84,17.6C6.03,17.39 6.3,17.28 6.58,17.28H6.8L10,19V9M11,5A4,4 0 0,1 15,9C15,10.5 14.2,11.77 13,12.46V11.24C13.61,10.69 14,9.89 14,9A3,3 0 0,0 11,6A3,3 0 0,0 8,9C8,9.89 8.39,10.69 9,11.24V12.46C7.8,11.77 7,10.5 7,9A4,4 0 0,1 11,5Z",C="M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M7 7H9V9H7V7M7 11H9V13H7V11M7 15H9V17H7V15M17 17H11V15H17V17M17 13H11V11H17V13M17 9H11V7H17V9Z",$=["navigate","url","perform-action","none"],H=(0,d.kp)(u.H,(0,d.Ik)({heading_style:(0,d.lq)((0,d.vP)(["title","subtitle"])),heading:(0,d.lq)((0,d.Yj)()),icon:(0,d.lq)((0,d.Yj)()),tap_action:(0,d.lq)(p.kn),badges:(0,d.lq)((0,d.YO)((0,d.bz)()))}));class w extends s.WF{setConfig(e){this._config=(0,h._)(e),(0,d.vA)(this._config,H)}render(){if(!this.hass||!this._config)return s.s6;const e=Object.assign({},this._config);e.heading_style||(e.heading_style="title");const t=this._schema(this.hass.localize);return(0,s.qy)(_||(_=m` <ha-form .hass="${0}" .data="${0}" .schema="${0}" .computeLabel="${0}" @value-changed="${0}"></ha-form> <ha-expansion-panel outlined> <ha-svg-icon slot="leading-icon" .path="${0}"></ha-svg-icon> <h3 slot="header"> ${0} </h3> <div class="content"> <hui-heading-badges-editor .hass="${0}" .badges="${0}" @heading-badges-changed="${0}" @edit-heading-badge="${0}"> </hui-heading-badges-editor> </div> </ha-expansion-panel> `),this.hass,e,t,this._computeLabelCallback,this._valueChanged,C,this.hass.localize("ui.panel.lovelace.editor.card.heading.badges"),this.hass,this._badges(this._config.badges),this._badgesChanged,this._editBadge)}_badgesChanged(e){if(e.stopPropagation(),!this._config||!this.hass)return;const t=Object.assign(Object.assign({},this._config),{},{badges:e.detail.badges});(0,l.r)(this,"config-changed",{config:t})}_valueChanged(e){if(e.stopPropagation(),!this._config||!this.hass)return;const t=e.detail.value;(0,l.r)(this,"config-changed",{config:t})}_editBadge(e){e.stopPropagation();const t=e.detail.index,a=this._badges(this._config.badges)[t];(0,l.r)(this,"edit-sub-element",{config:a,saveConfig:e=>this._updateBadge(t,e),type:"heading-badge"})}_updateBadge(e,t){const a=this._config.badges.concat();a[e]=t;const i=Object.assign(Object.assign({},this._config),{},{badges:a});(0,l.r)(this,"config-changed",{config:i})}static get styles(){return[b.U,(0,s.AH)(f||(f=m`.container{display:flex;flex-direction:column}ha-form{display:block;margin-bottom:var(--ha-space-6)}`))]}constructor(...e){super(...e),this._schema=(0,r.A)(e=>[{name:"heading_style",selector:{select:{mode:"list",options:["title","subtitle"].map(t=>({label:e(`ui.panel.lovelace.editor.card.heading.heading_style_options.${t}`),value:t}))}}},{name:"heading",selector:{text:{}}},{name:"icon",selector:{icon:{}}},{name:"interactions",type:"expandable",flatten:!0,iconPath:x,schema:[{name:"tap_action",selector:{ui_action:{default_action:"none",actions:$}},context:g.Tq}]}]),this._badges=(0,r.A)(e=>e||[]),this._computeLabelCallback=e=>{switch(e.name){case"heading_style":case"heading":return this.hass.localize(`ui.panel.lovelace.editor.card.heading.${e.name}`);default:return this.hass.localize(`ui.panel.lovelace.editor.card.generic.${e.name}`)}}}}(0,n.Cg)([(0,o.MZ)({attribute:!1})],w.prototype,"hass",void 0),(0,n.Cg)([(0,o.wk)()],w.prototype,"_config",void 0),w=(0,n.Cg)([(0,o.EM)("hui-heading-card-editor")],w),i()}catch(_){i(_)}})},84698:function(e,t,a){a.d(t,{H:function(){return n}});var i=a(63533);const n=(0,i.Ik)({type:(0,i.Yj)(),view_layout:(0,i.bz)(),layout_options:(0,i.bz)(),grid_options:(0,i.bz)(),visibility:(0,i.bz)(),disabled:(0,i.lq)((0,i.zM)())})}}]);