iobroker.lovelace
Version:
With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI
1 lines • 14.4 kB
JavaScript
export const __rspack_esm_id=80715;export const __rspack_esm_ids=[80715];export const __webpack_modules__={81816(e,t,a){a.d(t,{aH:()=>o,cx:()=>d,es:()=>r});var i=a(37981),s=a(28978),n=a(79461);const o=(e,t,a)=>{const i=t[e.entity_id];return i?d(i,a):(0,s.u)(e)},d=(e,t,a)=>{const o=e.name||("original_name"in e&&null!=e.original_name?String(e.original_name):void 0),d=e.device_id?t[e.device_id]:void 0;if(!d)return o||(a?(0,s.u)(a):void 0);const r=(0,i.xn)(d);return r!==o?r&&o&&(0,n.p)(o,r)||o:void 0},r=(e,t,a)=>!o(e,t,a)},74705(e,t,a){a.d(t,{Bj:()=>p,Cf:()=>g,uU:()=>c});a(18111),a(81148),a(22489),a(61701),a(13579);if(66649!=a.j)var i=a(44537);var s=a(15638),n=a(65522),o=a(37981),d=a(81816),r=a(55931);if(66649!=a.j)var l=a(28978);var h=a(28455);const c=(e,t,a,s,n,o,r)=>{if("string"==typeof t)return t;if(!t)return(0,l.u)(e);let h=(0,i.e)(t);const c=r?.separator??" ";if(h.every(e=>"text"===e.type))return h.map(e=>e.text).join(c);if((0,d.es)(e,a,s)){h.some(e=>"device"===e.type)||(h=h.map(e=>"entity"===e.type?{type:"device"}:e))}const p=g(e,h,a,s,n,o);return 1===p.length?p[0]||"":p.filter(e=>e).join(c)},g=(e,t,a,i,s,l)=>{const{device:c,area:g,floor:p}=(0,h.ln)(e,a,i,s,l);return t.map(t=>{switch(t.type){case"entity":return(0,d.aH)(e,a,i);case"device":return c?(0,o.xn)(c):void 0;case"area":return g?(0,n.A)(g):void 0;case"floor":return p?(0,r.X)(p):void 0;case"text":return t.text;default:return""}})},p=(e,t)=>{const[a,i,n]=g(t,[{type:"entity"},{type:"device"},{type:"area"}],e.entities,e.devices,e.areas,e.floors),o=(0,s.qC)(e.language,e.translationMetadata.translations);return{primary:a||i||t.entity_id,secondary:[n,a?i:void 0].filter(Boolean).join(o?" ◂ ":" ▸ ")||void 0}}},85938(e,t,a){a(18111),a(22489),a(46058);var i=a(62826),s=a(5124),n=a(22441),o=a(1087);class d extends s.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?s.s6:s.qy` <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={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,n.MZ)({type:Boolean})],d.prototype,"disabled",void 0),(0,i.Cg)([(0,n.MZ)({type:Boolean,attribute:"no-style"})],d.prototype,"noStyle",void 0),(0,i.Cg)([(0,n.MZ)({type:String,attribute:"draggable-selector"})],d.prototype,"draggableSelector",void 0),(0,i.Cg)([(0,n.MZ)({type:String,attribute:"handle-selector"})],d.prototype,"handleSelector",void 0),(0,i.Cg)([(0,n.MZ)({type:String,attribute:"filter"})],d.prototype,"filter",void 0),(0,i.Cg)([(0,n.MZ)({type:String})],d.prototype,"group",void 0),(0,i.Cg)([(0,n.MZ)({type:Boolean,attribute:"invert-swap"})],d.prototype,"invertSwap",void 0),(0,i.Cg)([(0,n.MZ)({attribute:!1})],d.prototype,"options",void 0),(0,i.Cg)([(0,n.MZ)({type:Boolean})],d.prototype,"rollback",void 0),d=(0,i.Cg)([(0,n.EM)("ha-sortable")],d)},96044(e,t,a){a.a(e,async function(e,t){try{a(18111),a(22489),a(88454),a(29452);var i=a(62826),s=a(5124),n=a(22441),o=a(6412),d=a(75751),r=a(1087),l=a(74705),h=a(15638),c=a(12587),g=a(18350),p=a(29823),b=(a(70947),a(26300)),u=(a(85938),a(67094),a(72669)),v=e([g,p,b,u]);[g,p,b,u]=v.then?(await v)():v;const y="M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z",_="M21 11H3V9H21V11M21 13H3V15H21V13Z",m="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",f="M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z",x=["entity","button"];class C extends s.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(){return this.hass?s.qy` ${this.badges?.length?s.qy` <ha-sortable handle-selector=".handle" -moved="${this._badgeMoved}"> <div class="badges"> ${(0,d.u)(this.badges.filter(Boolean),e=>this._getKey(e),(e,t)=>this._renderBadgeItem(e,t))} </div> </ha-sortable> `:s.s6} <ha-dropdown -select="${this._addBadge}"> <ha-button slot="trigger" appearance="filled" size="small"> <ha-svg-icon .path="${f}" slot="start"></ha-svg-icon> ${this.hass.localize("ui.panel.lovelace.editor.heading-badges.add")} </ha-button> ${x.map(e=>s.qy` <ha-dropdown-item .value="${e}"> ${this._getBadgeTypeLabel(e)} </ha-dropdown-item> `)} </ha-dropdown> `:s.s6}_renderBadgeItem(e,t){const a=e.type??"entity",i=e,n=!("entity"!==a||i.entity&&this.hass.states[i.entity]);return s.qy` <div class="${(0,o.H)({badge:!0,warning:n})}"> <div class="handle"> <ha-svg-icon .path="${_}"></ha-svg-icon> </div> ${"entity"===a?this._renderEntityBadge(i):"button"===a?this._renderButtonBadge(e):this._renderUnknownBadge(a)} <ha-icon-button .label="${this.hass.localize("ui.panel.lovelace.editor.badges.edit")}" .path="${m}" class="edit-icon" .index="${t}" ="${this._editBadge}"></ha-icon-button> <ha-icon-button .label="${this.hass.localize("ui.panel.lovelace.editor.badges.remove")}" .path="${y}" class="remove-icon" .index="${t}" ="${this._removeBadge}"></ha-icon-button> </div> `}_renderEntityBadge(e){const t=e.entity,a=t?this.hass.states[t]:void 0;if(!t)return s.qy` <div class="badge-content"> <div> <span>${this._getBadgeTypeLabel("entity")}</span> <span class="secondary">${this.hass.localize("ui.panel.lovelace.editor.heading-badges.no_entity")}</span> </div> </div> `;if(!a)return s.qy` <div class="badge-content"> <div> <span>${t}</span> <span class="secondary">${this.hass.localize("ui.panel.lovelace.editor.heading-badges.entity_not_found")}</span> </div> </div> `;const[i,n,o]=(0,l.Cf)(a,[{type:"entity"},{type:"device"},{type:"area"}],this.hass.entities,this.hass.devices,this.hass.areas,this.hass.floors),d=(0,h.qC)(this.hass.language,this.hass.translationMetadata.translations),r=i||n||t,c=[i?n:void 0,o].filter(Boolean).join(d?" ◂ ":" ▸ ");return s.qy` <div class="badge-content"> <div> <span>${r}</span> ${c?s.qy`<span class="secondary">${c}</span>`:s.s6} </div> </div> `}_renderButtonBadge(e){return s.qy` <div class="badge-content"> <div> <span>${this._getBadgeTypeLabel("button")}</span> ${e.text?s.qy`<span class="secondary">${e.text}</span>`:s.s6} </div> </div> `}_renderUnknownBadge(e){return s.qy` <div class="badge-content"> <div> <span>${e}</span> </div> </div> `}async _addBadge(e){const t=e.detail.item.value;if(!t)return;const a=await(0,u.U)(t);let i;i=a&&a.getStubConfig?a.getStubConfig(this.hass):{type:t};const s=[...this.badges||[],i];(0,r.r)(this,"heading-badges-changed",{badges:s}),await(0,c.E)(),(0,r.r)(this,"edit-heading-badge",{index:s.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,r.r)(this,"heading-badges-changed",{badges:i})}_removeBadge(e){const t=e.currentTarget.index,a=[...this.badges||[]];a.splice(t,1),(0,r.r)(this,"heading-badges-changed",{badges:a})}_editBadge(e){const t=e.currentTarget.index;(0,r.r)(this,"edit-heading-badge",{index:t})}constructor(...e){super(...e),this._badgesKeys=new WeakMap}}C.styles=s.AH`: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,n.MZ)({attribute:!1})],C.prototype,"hass",void 0),(0,i.Cg)([(0,n.MZ)({attribute:!1})],C.prototype,"badges",void 0),C=(0,i.Cg)([(0,n.EM)("hui-heading-badges-editor")],C),t()}catch(e){t(e)}})},44774(e,t,a){a.a(e,async function(e,i){try{a.r(t),a.d(t,{HuiHeadingCardEditor:()=>C});var s=a(62826),n=a(5124),o=a(22441),d=a(22786),r=a(63533),l=a(1087),h=(a(11382),a(52763)),c=(a(67094),a(75201)),g=a(999),p=a(91408),b=a(84698),u=a(7382),v=a(96044),y=e([h,v,c,g]);[h,v,c,g]=y.then?(await y)():y;const _="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",m="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",f=["navigate","url","perform-action","none"],x=(0,r.kp)(b.H,(0,r.Ik)({heading_style:(0,r.lq)((0,r.vP)(["title","subtitle"])),heading:(0,r.lq)((0,r.Yj)()),icon:(0,r.lq)((0,r.Yj)()),tap_action:(0,r.lq)(p.kn),badges:(0,r.lq)((0,r.YO)((0,r.bz)()))}));class C extends n.WF{setConfig(e){this._config=(0,c._)(e),(0,r.vA)(this._config,x)}render(){if(!this.hass||!this._config)return n.s6;const e={...this._config};e.heading_style||(e.heading_style="title");const t=this._schema(this.hass.localize);return n.qy` <ha-form .hass="${this.hass}" .data="${e}" .schema="${t}" .computeLabel="${this._computeLabelCallback}" -changed="${this._valueChanged}"></ha-form> <ha-expansion-panel outlined> <ha-svg-icon slot="leading-icon" .path="${m}"></ha-svg-icon> <h3 slot="header"> ${this.hass.localize("ui.panel.lovelace.editor.card.heading.badges")} </h3> <div class="content"> <hui-heading-badges-editor .hass="${this.hass}" .badges="${this._badges(this._config.badges)}" -badges-changed="${this._badgesChanged}" -heading-badge="${this._editBadge}"> </hui-heading-badges-editor> </div> </ha-expansion-panel> `}_badgesChanged(e){if(e.stopPropagation(),!this._config||!this.hass)return;const t={...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={...this._config,badges:a};(0,l.r)(this,"config-changed",{config:i})}static get styles(){return[u.U,n.AH`.container{display:flex;flex-direction:column}ha-form{display:block;margin-bottom:var(--ha-space-6)}`]}constructor(...e){super(...e),this._schema=(0,d.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:_,schema:[{name:"tap_action",selector:{ui_action:{default_action:"none",actions:f}},context:g.Tq}]}]),this._badges=(0,d.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,s.Cg)([(0,o.MZ)({attribute:!1})],C.prototype,"hass",void 0),(0,s.Cg)([(0,o.wk)()],C.prototype,"_config",void 0),C=(0,s.Cg)([(0,o.EM)("hui-heading-card-editor")],C),i()}catch(e){i(e)}})},84698(e,t,a){a.d(t,{H:()=>s});var i=a(63533);const s=(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)())})}};