iobroker.lovelace
Version:
With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI
1 lines • 11.2 kB
JavaScript
export const __rspack_esm_id=36810;export const __rspack_esm_ids=[36810];export const __webpack_modules__={45010(e,t,i){i.d(t,{U:()=>s});i(74423),i(18111),i(22489),i(61701);function s(e,t){const i=t.filter(t=>t in e).map(t=>[t,e[t]]),s=Object.entries(e).filter(([e])=>!t.includes(e));return Object.fromEntries([...i,...s])}},58548(e,t,i){i.d(t,{A:()=>n});const s=e=>{const t=parseFloat(e);if(isNaN(t))throw new Error(`${e} is not a number`);return t};function n(e){if(!e)return null;try{if(e.endsWith("%"))return{w:100,h:s(e.slice(0,-1))};const t=e.replace(":","x").split("x");return 0===t.length?null:1===t.length?{w:s(t[0]),h:1}:{w:s(t[0]),h:s(t[1])}}catch(e){}return null}},17022(e,t,i){i.d(t,{A1:()=>s,CY:()=>o,Fn:()=>n,Jz:()=>l,St:()=>r,VA:()=>h,WI:()=>c,iY:()=>d,xw:()=>a});const s=(e,t)=>e.callWS({type:"media_source/resolve_media",media_content_id:t}),n=(e,t)=>e.callWS({type:"media_source/browse_media",media_content_id:t}),a="__MANUAL_ENTRY__",o=e=>e.startsWith(a),r=e=>e.startsWith("media-source://"),l=e=>e.startsWith("media-source://media_source"),d=e=>e.startsWith("media-source://image_upload"),h=async(e,t,i)=>{const s=new FormData;s.append("media_content_id",t),s.append("file",i);const n=await e.fetchWithAuth("/api/media_source/local_source/upload",{method:"POST",body:s});if(413===n.status)throw new Error(`Uploaded file is too large (${i.name})`);if(200!==n.status)throw new Error("Unknown error");return n.json()},c=async(e,t)=>e.callWS({type:"media_source/local_source/remove",media_content_id:t})},30592(e,t,i){i.a(e,async function(e,t){try{i(18111),i(61701),i(88454),i(29452);var s=i(62826),n=i(5124),a=i(22441),o=i(75751),r=i(1087),l=i(81816),d=i(15638),h=i(82474),c=i(26300),m=(i(85938),e([h,c]));[h,c]=m.then?(await m)():m;const _="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",u="M21 11H3V9H21V11M21 13H3V15H21V13Z",p="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";class g extends n.WF{_getKey(e){return this._entityKeys.has(e)||this._entityKeys.set(e,Math.random().toString()),this._entityKeys.get(e)}_renderItem(e,t){const i=this.hass.states[e.entity],s=i&&(0,l.es)(i,this.hass.entities,this.hass.devices),a=(0,d.qC)(this.hass.language,this.hass.translationMetadata.translations),o=i&&this.hass.formatEntityName(i,s?{type:"device"}:{type:"entity"})||e.entity,r=i&&this.hass.formatEntityName(i,s?[{type:"area"}]:[{type:"area"},{type:"device"}],{separator:a?" ◂ ":" ▸ "});return n.qy` <ha-md-list-item class="item"> <ha-svg-icon class="handle" .path="${u}" slot="start"></ha-svg-icon> <div slot="headline" class="label">${o}</div> ${r?n.qy`<div slot="supporting-text" class="description"> ${r} </div>`:n.s6} <ha-icon-button slot="end" .item="${e}" .index="${t}" .label="${this.hass.localize("ui.common.edit")}" .path="${p}" ="${this._editItem}"></ha-icon-button> <ha-icon-button slot="end" .index="${t}" .label="${this.hass.localize("ui.common.delete")}" .path="${_}" ="${this._deleteItem}"></ha-icon-button> </ha-md-list-item> `}_editItem(e){const t=e.currentTarget.index;(0,r.r)(this,"edit-detail-element",{subElementConfig:{index:t,type:"row",elementConfig:this.entities[t]}})}_deleteItem(e){const t=e.target.index,i=this.entities.slice(0,t).concat(this.entities.slice(t+1));(0,r.r)(this,"entities-changed",{entities:i})}render(){return this.entities?n.qy` <h3> ${this.label||`${this.hass.localize("ui.panel.lovelace.editor.card.generic.entities")}${this.required?` (${this.hass.localize("ui.panel.lovelace.editor.card.config.required")})`:""}`} </h3> ${this.canEdit?n.qy` <div class="items-container"> <ha-sortable handle-selector=".handle" draggable-selector=".item" -moved="${this._entityMoved}"> <ha-md-list> ${this.entities.map((e,t)=>this._renderItem(e,t))} </ha-md-list> </ha-sortable> </div> `:n.qy`<ha-sortable handle-selector=".handle" -moved="${this._entityMoved}"> <div class="entities"> ${(0,o.u)(this.entities,e=>this._getKey(e),(e,t)=>n.qy` <div class="entity" data-entity-id="${e.entity}"> <div class="handle"> <ha-svg-icon .path="${u}"></ha-svg-icon> </div> <ha-entity-picker .hass="${this.hass}" .value="${e.entity}" .index="${t}" .entityFilter="${this.entityFilter}" -changed="${this._valueChanged}"></ha-entity-picker> </div> `)} </div> </ha-sortable>`} <ha-entity-picker .hass="${this.hass}" .entityFilter="${this.entityFilter}" -changed="${this._addEntity}" add-button></ha-entity-picker> `:n.s6}async _addEntity(e){const t=e.detail.value;if(""===t)return;const i=this.entities.concat({entity:t});e.target.value="",(0,r.r)(this,"entities-changed",{entities:i})}_entityMoved(e){e.stopPropagation();const{oldIndex:t,newIndex:i}=e.detail,s=this.entities.concat();s.splice(i,0,s.splice(t,1)[0]),(0,r.r)(this,"entities-changed",{entities:s})}_valueChanged(e){const t=e.detail.value,i=e.target.index,s=this.entities.concat();""===t||void 0===t?s.splice(i,1):s[i]={...s[i],entity:t},(0,r.r)(this,"entities-changed",{entities:s})}constructor(...e){super(...e),this.required=!0,this._entityKeys=new WeakMap}}g.styles=n.AH`.entity{display:flex;align-items:center}.entity .handle{padding-right:8px;cursor:move;cursor:grab;padding-inline-end:8px;padding-inline-start:initial;direction:var(--direction)}.entity .handle>*{pointer-events:none}.entity ha-entity-picker{flex-grow:1}ha-md-list{gap:8px;padding-top:0;display:flex;flex-direction:column}ha-md-list:has(> *){margin-bottom:var(--ha-space-2)}ha-md-list-item{border:1px solid var(--divider-color);border-radius:8px;--ha-md-list-item-gap:0;--md-list-item-top-space:0;--md-list-item-bottom-space:0;--md-list-item-leading-space:12px;--md-list-item-trailing-space:4px;--md-list-item-two-line-container-height:48px;--md-list-item-one-line-container-height:48px}.handle{cursor:move;padding:8px;margin-inline-start:-8px}label{margin-bottom:8px;display:block}ha-md-list-item .description,ha-md-list-item .label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}`,(0,s.Cg)([(0,a.MZ)({attribute:!1})],g.prototype,"hass",void 0),(0,s.Cg)([(0,a.MZ)({attribute:!1})],g.prototype,"entities",void 0),(0,s.Cg)([(0,a.MZ)({attribute:!1})],g.prototype,"entityFilter",void 0),(0,s.Cg)([(0,a.MZ)()],g.prototype,"label",void 0),(0,s.Cg)([(0,a.MZ)({type:Boolean})],g.prototype,"required",void 0),(0,s.Cg)([(0,a.MZ)({attribute:"can-edit",type:Boolean})],g.prototype,"canEdit",void 0),g=(0,s.Cg)([(0,a.EM)("hui-entity-editor")],g),t()}catch(e){t(e)}})},67801(e,t,i){i.a(e,async function(e,s){try{i.r(t),i.d(t,{HuiHistoryGraphCardEditor:()=>$});var n=i(62826),a=i(5124),o=i(22441),r=i(22786),l=i(63533),d=i(1087),h=i(71727),c=i(20058),m=i(52763),_=i(41544),u=i(30592),p=i(81287),g=i(88170),y=i(84698),b=i(20507),f=i(27538),v=e([m,u,p,_,c]);[m,u,p,_,c]=v.then?(await v)():v;const x=(0,l.kp)(y.H,(0,l.Ik)({entities:(0,l.YO)(b.z),title:(0,l.lq)((0,l.Yj)()),hours_to_show:(0,l.lq)((0,l.ai)()),refresh_interval:(0,l.lq)((0,l.ai)()),show_names:(0,l.lq)((0,l.zM)()),logarithmic_scale:(0,l.lq)((0,l.zM)()),expand_legend:(0,l.lq)((0,l.zM)()),min_y_axis:(0,l.lq)((0,l.ai)()),max_y_axis:(0,l.lq)((0,l.ai)()),fit_y_data:(0,l.lq)((0,l.zM)())}));class $ extends a.WF{setConfig(e){(0,l.vA)(e,x),this._config=e}render(){if(!this.hass||!this._config)return a.s6;if(this._subElementEditorConfig){const e=this._subElementEditorConfig.elementConfig.entity;return a.qy` <hui-sub-element-editor .hass="${this.hass}" .config="${this._subElementEditorConfig}" .form="${this._subForm(this.hass.localize,e)}" -back="${this._goBack}" -changed="${this._handleSubEntityChanged}"> </hui-sub-element-editor> `}const e=this._schema(void 0!==this._config.min_y_axis||void 0!==this._config.max_y_axis),t=this._config.entities?(0,g._)(this._config.entities):[];return a.qy` <ha-form .hass="${this.hass}" .data="${this._config}" .schema="${e}" .computeLabel="${this._computeLabelCallback}" -changed="${this._valueChanged}"></ha-form> <hui-entity-editor .hass="${this.hass}" .entities="${t}" can-edit -changed="${this._entitiesChanged}" -detail-element="${this._editDetailElement}"></hui-entity-editor> `}_goBack(){this._subElementEditorConfig=void 0}_editDetailElement(e){this._subElementEditorConfig=e.detail.subElementConfig}_handleSubEntityChanged(e){e.stopPropagation();let t=e.detail.config;const i=t.entity;this._shouldDisableColorOption(i)&&(t=this._deleteColorOption(t));const s=this._subElementEditorConfig.index,n=[...this._config.entities];n[s]=t;let a=this._config;a={...a,entities:n},a=this._orderProperties(a),this._config=a,this._subElementEditorConfig={...this._subElementEditorConfig,elementConfig:{...this._config.entities[s]}},(0,d.r)(this,"config-changed",{config:a})}_valueChanged(e){const t=this._orderProperties(e.detail.value);(0,d.r)(this,"config-changed",{config:t})}_entitiesChanged(e){let t=this._config;t={...t,entities:e.detail.entities},t=this._orderProperties(t),(0,d.r)(this,"config-changed",{config:t})}_deleteColorOption(e){const{color:t,...i}=e;return i}_orderProperties(e){return(0,f.i)(e,x)}constructor(...e){super(...e),this._schema=(0,r.A)(e=>[{name:"title",selector:{text:{}}},{name:"",type:"grid",schema:[{name:"hours_to_show",default:_.DEFAULT_HOURS_TO_SHOW,selector:{number:{min:0,step:"any",mode:"box"}}},{name:"show_names",default:!0,required:!1,selector:{boolean:{}}},{name:"logarithmic_scale",required:!1,selector:{boolean:{}}},{name:"expand_legend",required:!1,selector:{boolean:{}}}]},{name:"",type:"grid",schema:[{name:"min_y_axis",required:!1,selector:{number:{mode:"box",step:"any"}}},{name:"max_y_axis",required:!1,selector:{number:{mode:"box",step:"any"}}}]},...e?[{name:"fit_y_data",required:!1,selector:{boolean:{}}}]:[]]),this._subForm=(0,r.A)((e,t)=>({schema:[{name:"entity",selector:{entity:{}},required:!0},{name:"name",selector:{entity_name:{}},context:{entity:"entity"}},{name:"color",disabled:this._shouldDisableColorOption(t),selector:{ui_color:{}}}],computeLabel:t=>{if("color"===t.name)return e(`ui.panel.lovelace.editor.card.generic.${t.name}`)}})),this._shouldDisableColorOption=e=>{const t=(0,h.m)(e),i="counter"===t||"number"===t||"input_number"===t,s=this.hass.states[e],n=s?.attributes;return!(0,c.ty)(n)&&!i},this._computeLabelCallback=e=>{switch(e.name){case"show_names":case"logarithmic_scale":case"expand_legend":case"min_y_axis":case"max_y_axis":case"fit_y_data":return this.hass.localize(`ui.panel.lovelace.editor.card.history-graph.${e.name}`);default:return this.hass.localize(`ui.panel.lovelace.editor.card.generic.${e.name}`)}}}}$.styles=a.AH`ha-form{margin-bottom:24px}`,(0,n.Cg)([(0,o.MZ)({attribute:!1})],$.prototype,"hass",void 0),(0,n.Cg)([(0,o.wk)()],$.prototype,"_config",void 0),(0,n.Cg)([(0,o.wk)()],$.prototype,"_subElementEditorConfig",void 0),$=(0,n.Cg)([(0,o.EM)("hui-history-graph-card-editor")],$),s()}catch(e){s(e)}})},27538(e,t,i){i.d(t,{i:()=>n});i(18111),i(61701);var s=i(45010);const n=(e,t)=>{const i=Object.keys(t.schema),n=["entity","name","color"];let a={...(0,s.U)(e,i)};const o=e.entities.map(e=>"string"!=typeof e?(0,s.U)(e,n):e);return a={...a,entities:o},a}}};