UNPKG

iobroker.lovelace

Version:

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

1 lines 20 kB
export const __rspack_esm_id=3025;export const __rspack_esm_ids=[3025];export const __webpack_modules__={27167(e,t,a){a.d(t,{A:()=>o});const i=e=>e<10?`0${e}`:e;function o(e){const t=Math.floor(e/3600),a=Math.floor(e%3600/60),o=Math.floor(e%3600%60);return t>0?`${t}:${i(a)}:${i(o)}`:a>0?`${a}:${i(o)}`:o>0?""+o:null}},15090(e,t,a){a.d(t,{nP:()=>c,vB:()=>n});a(44114),a(18111),a(22489),a(61701),a(17642),a(58004),a(33853),a(45876),a(32475),a(15024),a(31698);var i=a(22675),o=a(52220),r=a(71727),s=a(69093);const n={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"]},l={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"]}},c=(e,t,a=void 0)=>{const c=(0,s.t)(t),d=[];switch(d.push(...((e,t,a)=>{const s=[];switch(a||s.push(i.Hh,i.HV),!a&&t in n?s.push(...n[t]):a&&t in l&&a in l[t]&&s.push(...l[t][a]),t){case"device_tracker":case"person":a||s.push(...Object.entries(e.states).filter(([e,t])=>"zone"===(0,r.m)(e)&&"zone.home"!==e&&t.attributes.friendly_name).map(([e,t])=>t.attributes.friendly_name).sort((t,a)=>(0,o.xL)(t,a,e.locale.language)))}return s})(e,c,a)),c){case"climate":a?"fan_mode"===a?d.push(...t.attributes.fan_modes):"preset_mode"===a?d.push(...t.attributes.preset_modes):"swing_mode"===a?d.push(...t.attributes.swing_modes):"swing_horizontal_mode"===a&&d.push(...t.attributes.swing_horizontal_modes):d.push(...t.attributes.hvac_modes);break;case"event":"event_type"===a&&d.push(...t.attributes.event_types);break;case"fan":"preset_mode"===a&&d.push(...t.attributes.preset_modes);break;case"humidifier":"mode"===a&&d.push(...t.attributes.available_modes);break;case"input_select":case"select":a||d.push(...t.attributes.options);break;case"light":"effect"===a&&t.attributes.effect_list?d.push(...t.attributes.effect_list):"color_mode"===a&&t.attributes.supported_color_modes&&d.push(...t.attributes.supported_color_modes);break;case"media_player":"sound_mode"===a?d.push(...t.attributes.sound_mode_list):"source"===a&&d.push(...t.attributes.source_list);break;case"remote":"current_activity"===a&&d.push(...t.attributes.activity_list);break;case"sensor":a||"enum"!==t.attributes.device_class||d.push(...t.attributes.options);break;case"vacuum":"fan_speed"===a&&d.push(...t.attributes.fan_speed_list);break;case"water_heater":a&&"operation_mode"!==a||d.push(...t.attributes.operation_list)}return[...new Set(d)]}},58234(e,t,a){a.a(e,async function(e,t){try{a(18111),a(20116);var i=a(62826),o=a(5124),r=a(22441),s=a(6412),n=a(23832),l=a(27167),c=a(69093),d=a(28978),h=a(15090),g=a(22675),p=a(49141),b=(a(58388),a(93367)),u=e([b]);b=(u.then?(await u)():u)[0];const m="M13 14H11V9H13M13 18H11V16H13M1 21H23L12 2L1 21Z",_=["alarm_control_panel","device_tracker","person"],f=(e,t)=>(0,n.g)(_)(e)&&(0,n.g)(h.vB[e])(t)?`${e}.${t}`:null;class v extends o.WF{connectedCallback(){super.connectedCallback(),this._connected=!0,this._startInterval(this.state)}disconnectedCallback(){super.disconnectedCallback(),this._connected=!1,this._clearInterval()}render(){const e=this.state;if(!e)return o.qy` <ha-label-badge class="warning" label="${this.hass.localize("state_badge.default.error")}" description="${this.hass.localize("state_badge.default.entity_not_found")}"> <ha-svg-icon .path="${m}"></ha-svg-icon> </ha-label-badge> `;const t=(0,c.t)(e),a=this.hass?.entities[e.entity_id],i=this.icon||this._computeShowIcon(t,e,a),r=this.icon?"":this.image?this.image:e.attributes.entity_picture_local||e.attributes.entity_picture,n=r||i?void 0:this._computeValue(t,e,a);return o.qy` <ha-label-badge class="${(0,s.H)({[t]:!0,"has-unit_of_measurement":"unit_of_measurement"in e.attributes})}" .image="${r}" .label="${this._computeLabel(t,e,this._timerTimeRemaining)}" .description="${this.showName?this.name??(0,d.u)(e):void 0}"> ${!r&&i?o.qy`<ha-state-icon .icon="${this.icon}" .stateObj="${e}"></ha-state-icon>`:""} ${!n||r||i?"":o.qy`<span class="${n&&n.length>4?"big":""}">${n}</span>`} </ha-label-badge> `}updated(e){super.updated(e),this._connected&&e.has("state")&&this._startInterval(this.state)}_computeValue(e,t,a){switch(e){case"alarm_control_panel":case"binary_sensor":case"device_tracker":case"person":case"scene":case"sun":case"timer":return null;case"sensor":if("moon"===a?.platform)return null;default:return t.state===g.Hh||t.state===g.HV?"—":this.hass.formatEntityStateToParts(t).find(e=>"value"===e.type)?.value}}_computeShowIcon(e,t,a){if(t.state===g.Hh)return!1;switch(e){case"alarm_control_panel":case"binary_sensor":case"device_tracker":case"person":case"scene":case"sun":case"timer":return!0;case"sensor":return"moon"===a?.platform;default:return!1}}_computeLabel(e,t,a=0){if(t.state===g.Hh||t.state===g.HV)return this.hass.localize(`state_badge.default.${t.state}`);const i=f(e,t.state);return i?this.hass.localize(`state_badge.${i}`):"person"===e||"device_tracker"===e?t.state:"timer"===e?(0,l.A)(a):this.hass.formatEntityStateToParts(t).find(e=>"unit"===e.type)?.value||null}_clearInterval(){this._updateRemaining&&(clearInterval(this._updateRemaining),this._updateRemaining=void 0)}_startInterval(e){this._clearInterval(),e&&"timer"===(0,c.t)(e)&&(this._calculateTimerRemaining(e),"active"===e.state&&(this._updateRemaining=window.setInterval(()=>this._calculateTimerRemaining(this.state),1e3)))}_calculateTimerRemaining(e){this._timerTimeRemaining=(0,p.ls)(e)}constructor(...e){super(...e),this.showName=!1}}v.styles=o.AH`:host{cursor:pointer}.big{font-size:var(--ha-font-size-xs)}ha-label-badge{--ha-label-badge-color:var(--label-badge-red)}ha-label-badge.has-unit_of_measurement{--ha-label-badge-label-text-transform:none}ha-label-badge.binary_sensor{--ha-label-badge-color:var(--label-badge-blue)}.red{--ha-label-badge-color:var(--label-badge-red)}.blue{--ha-label-badge-color:var(--label-badge-blue)}.green{--ha-label-badge-color:var(--label-badge-green)}.yellow{--ha-label-badge-color:var(--label-badge-yellow)}.grey{--ha-label-badge-color:var(--label-badge-grey)}.warning{--ha-label-badge-color:var(--label-badge-yellow)}`,(0,i.Cg)([(0,r.MZ)({attribute:!1})],v.prototype,"hass",void 0),(0,i.Cg)([(0,r.MZ)({attribute:!1})],v.prototype,"state",void 0),(0,i.Cg)([(0,r.MZ)()],v.prototype,"name",void 0),(0,i.Cg)([(0,r.MZ)()],v.prototype,"icon",void 0),(0,i.Cg)([(0,r.MZ)()],v.prototype,"image",void 0),(0,i.Cg)([(0,r.MZ)({attribute:"show-name",type:Boolean})],v.prototype,"showName",void 0),(0,i.Cg)([(0,r.wk)()],v.prototype,"_timerTimeRemaining",void 0),v=(0,i.Cg)([(0,r.EM)("ha-state-label-badge")],v),t()}catch(e){t(e)}})},24671(e,t,a){var i=a(62826),o=a(5124),r=a(22441),s=a(6412),n=a(63672);a(54276);class l extends o.WF{render(){const e=this.label;return o.qy` <div class="badge ${(0,s.H)({"icon-only":this.iconOnly})}" role="${(0,n.J)("button"===this.type?"button":void 0)}" tabindex="${(0,n.J)("button"===this.type?"0":void 0)}"> <ha-ripple .disabled="${"button"!==this.type}"></ha-ripple> <slot name="icon"></slot> ${this.iconOnly?o.s6:o.qy`<span class="info"> ${e?o.qy`<span class="label">${e}</span>`:o.s6} <span class="content"><slot></slot></span> </span>`} </div> `}constructor(...e){super(...e),this.type="badge",this.iconOnly=!1}}l.styles=o.AH`:host{--badge-color:var(--secondary-text-color);-webkit-tap-highlight-color:transparent}.badge{position:relative;--ha-ripple-color:var(--badge-color);--ha-ripple-hover-opacity:0.04;--ha-ripple-pressed-opacity:0.12;transition:box-shadow 180ms ease-in-out,border-color 180ms ease-in-out;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:var(--ha-space-2);height:var(--ha-badge-size,36px);min-width:var(--ha-badge-size,36px);padding:0px 12px;box-sizing:border-box;width:auto;border-radius:var(--ha-badge-border-radius,calc(var(--ha-badge-size,36px)/ 2));background:var(--ha-card-background,var(--card-background-color,#fff));-webkit-backdrop-filter:var(--ha-card-backdrop-filter,none);backdrop-filter:var(--ha-card-backdrop-filter,none);border-width:var(--ha-card-border-width,1px);box-shadow:var(--ha-card-box-shadow,none);border-style:solid;border-color:var(--ha-card-border-color,var(--divider-color,#e0e0e0))}.badge:focus-visible{--shadow-default:var(--ha-card-box-shadow, 0 0 0 0 transparent);--shadow-focus:0 0 0 1px var(--badge-color);border-color:var(--badge-color);box-shadow:var(--shadow-default),var(--shadow-focus)}[role=button]{cursor:pointer}[role=button]:focus{outline:0}.info{display:flex;flex-direction:column;align-items:flex-start;padding-inline-start:initial;text-align:center}.label{font-size:var(--ha-font-size-xs);font-style:normal;font-weight:var(--ha-font-weight-medium);line-height:10px;letter-spacing:.1px;color:var(--secondary-text-color)}.content{font-size:var(--ha-badge-font-size, var(--ha-font-size-s));font-style:normal;font-weight:var(--ha-font-weight-medium);line-height:var(--ha-line-height-condensed);letter-spacing:.1px;color:var(--primary-text-color)}::slotted([slot=icon]){--mdc-icon-size:var(--ha-badge-icon-size, 18px);color:var(--badge-color);line-height:0;margin-left:-4px;margin-right:0;margin-inline-start:-4px;margin-inline-end:0}::slotted(img[slot=icon]){width:30px;height:30px;border-radius:var(--ha-border-radius-circle);object-fit:cover;overflow:hidden;margin-left:-10px;margin-right:0;margin-inline-start:-10px;margin-inline-end:0}.badge.icon-only{padding:0}.badge.icon-only ::slotted([slot=icon]){margin-left:0;margin-right:0;margin-inline-start:0;margin-inline-end:0}`,(0,i.Cg)([(0,r.MZ)()],l.prototype,"type",void 0),(0,i.Cg)([(0,r.MZ)()],l.prototype,"label",void 0),(0,i.Cg)([(0,r.MZ)({type:Boolean,attribute:"icon-only"})],l.prototype,"iconOnly",void 0),l=(0,i.Cg)([(0,r.EM)("ha-badge")],l)},58388(e,t,a){var i=a(62826),o=a(5124),r=a(22441),s=a(6412);class n extends o.WF{render(){return o.qy` <div class="badge-container"> <div class="label-badge" id="badge"> <div class="value"> <slot></slot> </div> ${this.label?o.qy` <div class="${(0,s.H)({label:!0,big:this.label.length>5})}"> <span>${this.label}</span> </div> `:""} </div> ${this.description?o.qy`<div class="title">${this.description}</div>`:""} </div> `}static get styles(){return[o.AH`.badge-container{display:inline-block;text-align:center;vertical-align:top;padding:var(--ha-label-badge-padding,0 0 0 0)}.label-badge{position:relative;display:block;margin:0 auto;width:var(--ha-label-badge-size,2.5em);text-align:center;height:var(--ha-label-badge-size,2.5em);line-height:var(--ha-label-badge-size, 2.5em);font-size:var(--ha-label-badge-font-size, 1.5em);border-radius:var(--ha-label-badge-border-radius,50%);border:.1em solid var(--ha-label-badge-color,var(--primary-color));color:var(--label-badge-text-color,#4c4c4c);white-space:nowrap;background-color:var(--label-badge-background-color,#fff);background-size:cover;transition:border .3s ease-in-out}.label-badge .label.big span{font-size:90%;padding:10% 12% 7% 12%}.label-badge .value{font-size:90%;overflow:hidden;text-overflow:ellipsis}.label-badge .label{position:absolute;bottom:-1em;left:-.2em;right:-.2em;line-height:1em;font-size:.5em}.label-badge .label span{box-sizing:border-box;max-width:100%;display:inline-block;background-color:var(--ha-label-badge-color,var(--primary-color));color:var(--ha-label-badge-label-color,#fff);border-radius:var(--ha-border-radius-lg);padding:9% 16% 8% 16%;font-weight:var(--ha-font-weight-medium);overflow:hidden;text-transform:uppercase;text-overflow:ellipsis;transition:background-color .3s ease-in-out;text-transform:var(--ha-label-badge-label-text-transform,uppercase)}.badge-container .title{margin-top:1em;font-size:var(--ha-label-badge-title-font-size, .9em);width:var(--ha-label-badge-title-width,5em);font-weight:var(--ha-label-badge-title-font-weight,var(--ha-font-weight-normal));overflow:hidden;text-overflow:ellipsis;line-height:normal}`]}updated(e){super.updated(e),e.has("image")&&(this.shadowRoot.getElementById("badge").style.backgroundImage=this.image?`url(${this.image})`:"")}}(0,i.Cg)([(0,r.MZ)()],n.prototype,"label",void 0),(0,i.Cg)([(0,r.MZ)()],n.prototype,"description",void 0),(0,i.Cg)([(0,r.MZ)()],n.prototype,"image",void 0),n=(0,i.Cg)([(0,r.EM)("ha-label-badge")],n)},17022(e,t,a){a.d(t,{A1:()=>i,CY:()=>s,Fn:()=>o,Jz:()=>l,St:()=>n,VA:()=>d,WI:()=>h,iY:()=>c,xw:()=>r});const i=(e,t)=>e.callWS({type:"media_source/resolve_media",media_content_id:t}),o=(e,t)=>e.callWS({type:"media_source/browse_media",media_content_id:t}),r="__MANUAL_ENTRY__",s=e=>e.startsWith(r),n=e=>e.startsWith("media-source://"),l=e=>e.startsWith("media-source://media_source"),c=e=>e.startsWith("media-source://image_upload"),d=async(e,t,a)=>{const i=new FormData;i.append("media_content_id",t),i.append("file",a);const o=await e.fetchWithAuth("/api/media_source/local_source/upload",{method:"POST",body:i});if(413===o.status)throw new Error(`Uploaded file is too large (${a.name})`);if(200!==o.status)throw new Error("Unknown error");return o.json()},h=async(e,t)=>e.callWS({type:"media_source/local_source/remove",media_content_id:t})},49141(e,t,a){a.d(t,{CR:()=>s,PF:()=>d,kL:()=>r,ls:()=>c,pZ:()=>l,r9:()=>n});var i=a(90409),o=a(27167);const r=e=>e.callWS({type:"timer/list"}),s=(e,t)=>e.callWS({type:"timer/create",...t}),n=(e,t,a)=>e.callWS({type:"timer/update",timer_id:t,...a}),l=(e,t)=>e.callWS({type:"timer/delete",timer_id:t}),c=e=>{if(!e.attributes.remaining)return;let t=(0,i.A)(e.attributes.remaining);if("active"===e.state){const a=(new Date).getTime(),i=new Date(e.attributes.finishes_at).getTime();t=Math.max((i-a)/1e3,0)}return t},d=(e,t,a)=>{if(!t)return null;if("idle"===t.state||0===a)return e.formatEntityState(t);let i=(0,o.A)(a||0)||"0";return"paused"===t.state&&(i=`${i} (${e.formatEntityState(t)})`),i}},67066(e,t,a){a.a(e,async function(e,i){try{a.d(t,{P8:()=>C,PV:()=>z,rU:()=>$,x2:()=>M});var o=a(62826),r=a(5124),s=a(22441),n=a(6412),l=a(89784),c=a(22786),d=a(78870),h=a(79468),g=a(71727),p=a(69093),b=a(47129),u=a(52658),m=(a(24671),a(54276),a(93367)),_=(a(67094),a(10897)),f=a(19037),v=a(13632),y=a(22064),w=a(97176),x=e([m]);m=(x.then?(await x)():x)[0];const k="M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z",$=["minimal","standard","complete"],z={type:"entity",show_name:!1,show_state:!0,show_icon:!0},C=e=>{const t={...e};return e.display_type&&(void 0===e.show_name&&"complete"===e.display_type&&(t.show_name=!0),void 0===e.show_state&&"minimal"===e.display_type&&(t.show_state=!1),delete t.display_type),t};class M extends r.WF{static async getConfigElement(){return await Promise.all([a.e(64442),a.e(35905)]).then(a.bind(a,93048)),document.createElement("hui-entity-badge-editor")}static getStubConfig(e,t,a){return{type:"entity",entity:(0,v.B)(e,1,t,a,["sensor","light","switch"])[0]||""}}setConfig(e){this._config={...z,...C(e)}}get hasAction(){return!this._config?.tap_action||(0,w.h)(this._config?.tap_action)||(0,w.h)(this._config?.hold_action)||(0,w.h)(this._config?.double_tap_action)}_getImageUrl(e){const t=e.attributes.entity_picture_local||e.attributes.entity_picture;if(!t)return;let a=this.hass.hassUrl(t);return"camera"===(0,p.t)(e)&&(a=(0,_.su)(a,32,32)),a}render(){if(!this._config||!this.hass)return r.s6;const e=this._config.entity,t=e?this.hass.states[e]:void 0;if(!t)return r.qy` <ha-badge .label="${e}" class="error"> <ha-svg-icon slot="icon" .path="${k}"></ha-svg-icon> ${this.hass.localize("ui.badge.entity.not_found")} </ha-badge> `;const a=(0,b.a)(t),i={"--badge-color":this._computeStateColor(t,this._config.color)},o=this.hass.formatEntityName(t,this._config.name),s=r.qy` <state-display .stateObj="${t}" .hass="${this.hass}" .content="${this._config.state_content}" .name="${o}"> </state-display> `,c=this._config.show_state,d=this._config.show_name,h=this._config.show_icon,g=this._config.show_entity_picture?this._getImageUrl(t):void 0,p=c&&d?o:void 0,u=c?s:d?o:void 0;return r.qy` <ha-badge .type="${this.hasAction?"button":"badge"}" @action="${this._handleAction}" .actionHandler="${(0,f.T)({hasHold:(0,w.h)(this._config.hold_action),hasDoubleClick:(0,w.h)(this._config.double_tap_action)})}" .label="${p}" .iconOnly="${!u}" style="${(0,l.W)(i)}" class="${(0,n.H)({active:a})}"> ${h?g?r.qy`<img slot="icon" src="${g}" aria-hidden>`:r.qy` <ha-state-icon slot="icon" .stateObj="${t}" .icon="${this._config.icon}"></ha-state-icon> `:r.s6} ${u} </ha-badge> `}_handleAction(e){(0,y.$)(this,this.hass,this._config,e.detail.action)}constructor(...e){super(...e),this._computeStateColor=(0,c.A)((e,t)=>{if(t)return(0,b.a)(e)?(0,d.MP)(t):void 0;if("light"===(0,g.m)(e.entity_id)&&e.attributes.rgb_color){const t=(0,h.bi)(e.attributes.rgb_color);return t[1]<.4&&(t[1]<.1?t[2]=225:t[1]=.4),(0,h.v2)((0,h.hT)(t))}return(0,u.Se)(e)})}}M.styles=r.AH`ha-badge{--badge-color:var(--state-inactive-color)}ha-badge.error{--badge-color:var(--red-color)}ha-badge.active{--badge-color:var(--primary-color)}`,(0,o.Cg)([(0,s.MZ)({attribute:!1})],M.prototype,"hass",void 0),(0,o.Cg)([(0,s.wk)()],M.prototype,"_config",void 0),M=(0,o.Cg)([(0,s.EM)("hui-entity-badge")],M),i()}catch(e){i(e)}})}};