UNPKG

iobroker.lovelace

Version:

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

1 lines 16.7 kB
"use strict";(self.rspackChunkhome_assistant_frontend=self.rspackChunkhome_assistant_frontend||[]).push([[13837],{15090:function(e,t,i){i.d(t,{nP:function(){return l},vB:function(){return r}});i(44114),i(26910),i(18111),i(22489),i(61701),i(17642),i(58004),i(33853),i(45876),i(32475),i(15024),i(31698),i(62953);var a=i(22675),n=i(52220),s=i(71727),o=i(69093);const r={alarm_control_panel:["armed_away","armed_custom_bypass","armed_home","armed_night","armed_vacation","arming","disarmed","disarming","pending","triggered"],alert:["on","off","idle"],assist_satellite:["idle","listening","responding","processing"],automation:["on","off"],binary_sensor:["on","off"],button:[],calendar:["on","off"],camera:["idle","recording","streaming"],cover:["closed","closing","open","opening"],device_tracker:["home","not_home"],fan:["on","off"],humidifier:["on","off"],infrared:[],input_boolean:["on","off"],input_button:[],lawn_mower:["error","paused","mowing","returning","docked"],light:["on","off"],lock:["jammed","locked","locking","unlocked","unlocking","opening","open"],media_player:["off","on","idle","playing","paused","standby","buffering"],person:["home","not_home"],plant:["ok","problem"],radio_frequency:[],remote:["on","off"],scene:[],schedule:["on","off"],script:["on","off"],siren:["on","off"],sun:["above_horizon","below_horizon"],switch:["on","off"],timer:["active","idle","paused"],update:["on","off"],vacuum:["cleaning","docked","error","idle","paused","returning"],valve:["closed","closing","open","opening"],weather:["clear-night","cloudy","exceptional","fog","hail","lightning-rainy","lightning","partlycloudy","pouring","rainy","snowy-rainy","snowy","sunny","windy-variant","windy"]},c={alarm_control_panel:{code_format:["number","text"]},binary_sensor:{device_class:["battery","battery_charging","co","cold","connectivity","door","garage_door","gas","heat","light","lock","moisture","motion","moving","occupancy","opening","plug","power","presence","problem","running","safety","smoke","sound","tamper","update","vibration","window"]},button:{device_class:["restart","update"]},camera:{frontend_stream_type:["hls","web_rtc"]},climate:{hvac_action:["off","idle","preheating","defrosting","heating","cooling","drying","fan"]},cover:{device_class:["awning","blind","curtain","damper","door","garage","gate","shade","shutter","window"]},device_tracker:{source_type:["bluetooth","bluetooth_le","gps","router"]},fan:{direction:["forward","reverse"]},humidifier:{device_class:["humidifier","dehumidifier"],action:["off","idle","humidifying","drying"]},media_player:{device_class:["tv","speaker","receiver"],media_content_type:["album","app","artist","channel","channels","composer","contributing_artist","episode","game","genre","image","movie","music","playlist","podcast","season","track","tvshow","url","video"],repeat:["off","one","all"]},number:{device_class:["temperature"]},sensor:{device_class:["apparent_power","aqi","battery","carbon_dioxide","carbon_monoxide","current","date","duration","energy","frequency","gas","humidity","illuminance","monetary","nitrogen_dioxide","nitrogen_monoxide","nitrous_oxide","ozone","ph","pm1","pm10","pm25","pm4","power_factor","power","pressure","reactive_power","signal_strength","sulphur_dioxide","temperature","timestamp","uptime","volatile_organic_compounds","volatile_organic_compounds_parts","voltage","volume_flow_rate"],state_class:["measurement","total","total_increasing"]},switch:{device_class:["outlet","switch"]},update:{device_class:["firmware"]},water_heater:{away_mode:["on","off"]}},l=(e,t,i=void 0)=>{const l=(0,o.t)(t),d=[];switch(d.push(...((e,t,i)=>{const o=[];switch(i||o.push(a.Hh,a.HV),!i&&t in r?o.push(...r[t]):i&&t in c&&i in c[t]&&o.push(...c[t][i]),t){case"device_tracker":case"person":i||o.push(...Object.entries(e.states).filter(([e,t])=>"zone"===(0,s.m)(e)&&"zone.home"!==e&&t.attributes.friendly_name).map(([e,t])=>t.attributes.friendly_name).sort((t,i)=>(0,n.xL)(t,i,e.locale.language)))}return o})(e,l,i)),l){case"climate":i?"fan_mode"===i?d.push(...t.attributes.fan_modes):"preset_mode"===i?d.push(...t.attributes.preset_modes):"swing_mode"===i?d.push(...t.attributes.swing_modes):"swing_horizontal_mode"===i&&d.push(...t.attributes.swing_horizontal_modes):d.push(...t.attributes.hvac_modes);break;case"event":"event_type"===i&&d.push(...t.attributes.event_types);break;case"fan":"preset_mode"===i&&d.push(...t.attributes.preset_modes);break;case"humidifier":"mode"===i&&d.push(...t.attributes.available_modes);break;case"input_select":case"select":i||d.push(...t.attributes.options);break;case"light":"effect"===i&&t.attributes.effect_list?d.push(...t.attributes.effect_list):"color_mode"===i&&t.attributes.supported_color_modes&&d.push(...t.attributes.supported_color_modes);break;case"media_player":"sound_mode"===i?d.push(...t.attributes.sound_mode_list):"source"===i&&d.push(...t.attributes.source_list);break;case"remote":"current_activity"===i&&d.push(...t.attributes.activity_list);break;case"sensor":i||"enum"!==t.attributes.device_class||d.push(...t.attributes.options);break;case"vacuum":"fan_speed"===i&&d.push(...t.attributes.fan_speed_list);break;case"water_heater":i&&"operation_mode"!==i||d.push(...t.attributes.operation_list)}return[...new Set(d)]}},30592:function(e,t,i){i.a(e,async function(e,t){try{i(18111),i(61701),i(3362),i(88454),i(29452),i(62953);var a=i(40445),n=i(5124),s=i(67576),o=i(75751),r=i(1087),c=i(81816),l=i(15638),d=i(82474),h=i(26300),m=(i(85938),e([d,h]));[d,h]=m.then?(await m)():m;let p,u,_,g,f,y,v,b=e=>e;const w="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",k="M21 11H3V9H21V11M21 13H3V15H21V13Z",$="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 C 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],a=i&&(0,c.es)(i,this.hass.entities,this.hass.devices),s=(0,l.qC)(this.hass.language,this.hass.translationMetadata.translations),o=i&&this.hass.formatEntityName(i,a?{type:"device"}:{type:"entity"})||e.entity,r=i&&this.hass.formatEntityName(i,a?[{type:"area"}]:[{type:"area"},{type:"device"}],{separator:s?" ◂ ":" ▸ "});return(0,n.qy)(p||(p=b` <ha-md-list-item class="item"> <ha-svg-icon class="handle" .path="${0}" slot="start"></ha-svg-icon> <div slot="headline" class="label">${0}</div> ${0} <ha-icon-button slot="end" .item="${0}" .index="${0}" .label="${0}" .path="${0}" @click="${0}"></ha-icon-button> <ha-icon-button slot="end" .index="${0}" .label="${0}" .path="${0}" @click="${0}"></ha-icon-button> </ha-md-list-item> `),k,o,r?(0,n.qy)(u||(u=b`<div slot="supporting-text" class="description"> ${0} </div>`),r):n.s6,e,t,this.hass.localize("ui.common.edit"),$,this._editItem,t,this.hass.localize("ui.common.delete"),w,this._deleteItem)}_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?(0,n.qy)(_||(_=b` <h3> ${0} </h3> ${0} <ha-entity-picker .hass="${0}" .entityFilter="${0}" @value-changed="${0}" add-button></ha-entity-picker> `),this.label||`${this.hass.localize("ui.panel.lovelace.editor.card.generic.entities")}${this.required?` (${this.hass.localize("ui.panel.lovelace.editor.card.config.required")})`:""}`,this.canEdit?(0,n.qy)(g||(g=b` <div class="items-container"> <ha-sortable handle-selector=".handle" draggable-selector=".item" @item-moved="${0}"> <ha-md-list> ${0} </ha-md-list> </ha-sortable> </div> `),this._entityMoved,this.entities.map((e,t)=>this._renderItem(e,t))):(0,n.qy)(f||(f=b`<ha-sortable handle-selector=".handle" @item-moved="${0}"> <div class="entities"> ${0} </div> </ha-sortable>`),this._entityMoved,(0,o.u)(this.entities,e=>this._getKey(e),(e,t)=>(0,n.qy)(y||(y=b` <div class="entity" data-entity-id="${0}"> <div class="handle"> <ha-svg-icon .path="${0}"></ha-svg-icon> </div> <ha-entity-picker .hass="${0}" .value="${0}" .index="${0}" .entityFilter="${0}" @value-changed="${0}"></ha-entity-picker> </div> `),e.entity,k,this.hass,e.entity,t,this.entityFilter,this._valueChanged))),this.hass,this.entityFilter,this._addEntity):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,a=this.entities.concat();a.splice(i,0,a.splice(t,1)[0]),(0,r.r)(this,"entities-changed",{entities:a})}_valueChanged(e){const t=e.detail.value,i=e.target.index,a=this.entities.concat();""===t||void 0===t?a.splice(i,1):a[i]=Object.assign(Object.assign({},a[i]),{},{entity:t}),(0,r.r)(this,"entities-changed",{entities:a})}constructor(...e){super(...e),this.required=!0,this._entityKeys=new WeakMap}}C.styles=(0,n.AH)(v||(v=b`.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,a.Cg)([(0,s.MZ)({attribute:!1})],C.prototype,"hass",void 0),(0,a.Cg)([(0,s.MZ)({attribute:!1})],C.prototype,"entities",void 0),(0,a.Cg)([(0,s.MZ)({attribute:!1})],C.prototype,"entityFilter",void 0),(0,a.Cg)([(0,s.MZ)()],C.prototype,"label",void 0),(0,a.Cg)([(0,s.MZ)({type:Boolean})],C.prototype,"required",void 0),(0,a.Cg)([(0,s.MZ)({attribute:"can-edit",type:Boolean})],C.prototype,"canEdit",void 0),C=(0,a.Cg)([(0,s.EM)("hui-entity-editor")],C),t()}catch(p){t(p)}})},92469:function(e,t,i){i.a(e,async function(e,a){try{i.r(t),i.d(t,{HuiPictureGlanceCardEditor:function(){return q}});i(62953);var n=i(40445),s=i(5124),o=i(67576),r=i(22786),c=i(63533),l=i(1087),d=i(52763),h=i(81287),m=i(30592),p=i(999),u=i(88170),_=i(91408),g=i(84698),f=i(20507),y=i(7382),v=i(46190),b=i(71727),w=e([d,h,m,p]);[d,h,m,p]=w.then?(await w)():w;let k,$,C=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",E=(0,c.kp)(g.H,(0,c.Ik)({title:(0,c.lq)((0,c.Yj)()),entity:(0,c.lq)((0,c.Yj)()),image:(0,c.lq)((0,c.KC)([(0,c.Yj)(),(0,c.Ik)()])),image_entity:(0,c.lq)((0,c.Yj)()),camera_image:(0,c.lq)((0,c.Yj)()),camera_view:(0,c.lq)((0,c.vP)(["auto","live"])),aspect_ratio:(0,c.lq)((0,c.Yj)()),tap_action:(0,c.lq)(_.kn),hold_action:(0,c.lq)(_.kn),double_tap_action:(0,c.lq)(_.kn),entities:(0,c.YO)(f.l),theme:(0,c.lq)((0,c.Yj)()),fit_mode:(0,c.lq)((0,c.vP)(["cover","contain","fill"]))}));class q extends s.WF{setConfig(e){(0,c.vA)(e,E),this._config=e,this._configEntities=(0,u._)(e.entities)}render(){return this.hass&&this._config?this._subElementEditorConfig?(0,s.qy)(k||(k=C` <hui-sub-element-editor .hass="${0}" .config="${0}" .form="${0}" @go-back="${0}" @config-changed="${0}"> </hui-sub-element-editor> `),this.hass,this._subElementEditorConfig,this._subForm(this._subElementEditorConfig.elementConfig.entity),this._goBack,this._handleSubEntityChanged):(0,s.qy)($||($=C` <ha-form .hass="${0}" .data="${0}" .schema="${0}" .computeLabel="${0}" .computeHelper="${0}" @value-changed="${0}"></ha-form> <div class="card-config"> <hui-entity-editor .hass="${0}" can-edit .entities="${0}" @entities-changed="${0}" @edit-detail-element="${0}"></hui-entity-editor> </div> `),this.hass,this._processData(this._config),this._schema(this.hass.localize),this._computeLabelCallback,this._computeHelperCallback,this._valueChanged,this.hass,this._configEntities,this._changed,this._editDetailElement):s.s6}_goBack(){this._subElementEditorConfig=void 0}_editDetailElement(e){this._subElementEditorConfig=e.detail.subElementConfig}_handleSubEntityChanged(e){e.stopPropagation();const t=this._subElementEditorConfig.index,i=this._configEntities.concat(),a=e.detail.config;this._subElementEditorConfig=Object.assign(Object.assign({},this._subElementEditorConfig),{},{elementConfig:a}),i[t]=a;let n=this._config;n=Object.assign(Object.assign({},n),{},{entities:i}),this._config=n,this._configEntities=(0,u._)(n.entities),(0,l.r)(this,"config-changed",{config:n})}_valueChanged(e){(0,l.r)(this,"config-changed",{config:e.detail.value})}_changed(e){this._config&&this.hass&&(e.detail&&e.detail.entities&&(this._config=Object.assign(Object.assign({},this._config),{},{entities:e.detail.entities}),this._configEntities=(0,u._)(this._config.entities)),(0,l.r)(this,"config-changed",{config:this._config}))}constructor(...e){super(...e),this._schema=(0,r.A)(e=>[{name:"title",selector:{text:{}}},{name:"image",selector:{media:{accept:["image/*"],clearable:!0,image_upload:!0,hide_content_type:!0,content_id_helper:e("ui.panel.lovelace.editor.card.picture.content_id_helper")}}},{name:"image_entity",selector:{entity:{domain:["image","person"]}}},{name:"camera_image",selector:{entity:{domain:"camera"}}},{name:"",type:"grid",schema:[{name:"camera_view",required:!0,selector:{select:{options:["auto","live"].map(t=>({value:t,label:e(`ui.panel.lovelace.editor.card.generic.camera_view_options.${t}`)})),mode:"dropdown"}}},{name:"fit_mode",required:!0,selector:{select:{options:["cover","contain","fill"].map(t=>({value:t,label:e(`ui.panel.lovelace.editor.card.generic.fit_mode_options.${t}`)})),mode:"dropdown"}}},{name:"aspect_ratio",selector:{text:{}}}]},{name:"entity",selector:{entity:{}}},{name:"theme",selector:{theme:{}}},{name:"interactions",type:"expandable",flatten:!0,iconPath:x,schema:[{name:"tap_action",selector:{ui_action:{default_action:"more-info"}},context:p.Tq},{name:"",type:"optional_actions",flatten:!0,schema:[{name:"hold_action",selector:{ui_action:{default_action:"none"}},context:p.Tq},{name:"double_tap_action",selector:{ui_action:{default_action:"none"}},context:p.Tq}]}]}]),this._subForm=(0,r.A)(e=>({schema:[{name:"entity",selector:{entity:{}},required:!0},{type:"grid",name:"",schema:[{name:"icon",selector:{icon:{}},context:{icon_entity:"entity"}},{name:"show_state",selector:{boolean:{}}}]},{name:"tap_action",selector:{ui_action:{default_action:v.FD.has((0,b.m)(e))?"toggle":"more-info"}},context:p.Tq},{name:"",type:"optional_actions",flatten:!0,schema:["hold_action","double_tap_action"].map(e=>({name:e,selector:{ui_action:{default_action:"none"}},context:p.Tq}))}]})),this._processData=(0,r.A)(e=>Object.assign(Object.assign({camera_view:"auto",fit_mode:"cover"},e),"string"==typeof e.image?{image:{media_content_id:e.image}}:{})),this._computeLabelCallback=e=>{switch(e.name){case"theme":case"tap_action":case"hold_action":case"double_tap_action":return`${this.hass.localize(`ui.panel.lovelace.editor.card.generic.${e.name}`)} (${this.hass.localize("ui.panel.lovelace.editor.card.config.optional")})`;case"entity":return this.hass.localize("ui.panel.lovelace.editor.card.picture-glance.state_entity");default:return this.hass.localize(`ui.panel.lovelace.editor.card.generic.${e.name}`)}},this._computeHelperCallback=e=>{var t;return"aspect_ratio"===e.name&&"number"==typeof(null===(t=this._config)||void 0===t||null===(t=t.grid_options)||void 0===t?void 0:t.rows)?this.hass.localize("ui.panel.lovelace.editor.card.generic.aspect_ratio_ignored"):""}}}q.styles=y.U,(0,n.Cg)([(0,o.MZ)({attribute:!1})],q.prototype,"hass",void 0),(0,n.Cg)([(0,o.wk)()],q.prototype,"_config",void 0),(0,n.Cg)([(0,o.wk)()],q.prototype,"_subElementEditorConfig",void 0),(0,n.Cg)([(0,o.wk)()],q.prototype,"_configEntities",void 0),q=(0,n.Cg)([(0,o.EM)("hui-picture-glance-card-editor")],q),a()}catch(k){a(k)}})}}]);