UNPKG

iobroker.lovelace

Version:

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

1 lines 8.07 kB
"use strict";(self.rspackChunkhome_assistant_frontend=self.rspackChunkhome_assistant_frontend||[]).push([[37855],{58548:function(t,i,e){e.d(i,{A:function(){return a}});e(16280),e(27495),e(25440);const n=t=>{const i=parseFloat(t);if(isNaN(i))throw new Error(`${t} is not a number`);return i};function a(t){if(!t)return null;try{if(t.endsWith("%"))return{w:100,h:n(t.slice(0,-1))};const i=t.replace(":","x").split("x");return 0===i.length?null:1===i.length?{w:n(i[0]),h:1}:{w:n(i[0]),h:n(i[1])}}catch(i){}return null}},17022:function(t,i,e){e.d(i,{A1:function(){return n},CY:function(){return s},Fn:function(){return a},Jz:function(){return c},St:function(){return r},VA:function(){return l},WI:function(){return g},iY:function(){return h},xw:function(){return o}});e(16280),e(3362);const n=(t,i)=>t.callWS({type:"media_source/resolve_media",media_content_id:i}),a=(t,i)=>t.callWS({type:"media_source/browse_media",media_content_id:i}),o="__MANUAL_ENTRY__",s=t=>t.startsWith(o),r=t=>t.startsWith("media-source://"),c=t=>t.startsWith("media-source://media_source"),h=t=>t.startsWith("media-source://image_upload"),l=async(t,i,e)=>{const n=new FormData;n.append("media_content_id",i),n.append("file",e);const a=await t.fetchWithAuth("/api/media_source/local_source/upload",{method:"POST",body:n});if(413===a.status)throw new Error(`Uploaded file is too large (${e.name})`);if(200!==a.status)throw new Error("Unknown error");return a.json()},g=async(t,i)=>t.callWS({type:"media_source/local_source/remove",media_content_id:i})},78602:function(t,i,e){e.a(t,async function(t,n){try{e.r(i);e(16280),e(44114),e(18111),e(7588),e(61701),e(3362),e(62953);var a=e(40445),o=e(5124),s=e(67576),r=e(6412),c=e(63672),h=e(46190),l=e(42372),g=e(71727),d=e(28978),f=e(47129),u=(e(76776),e(26300)),_=e(93367),m=e(67013),p=e(19037),y=e(13632),b=e(22064),v=e(97176),w=e(784),$=e(20939),x=e(57914),k=e(85979),C=(e(47046),t([u,_,x,k]));[u,_,x,k]=C.then?(await C)():C;let E,A,T,W,z,D,S,q,H=t=>t;class j extends o.WF{static async getConfigElement(){return await Promise.all([e.e(66990),e.e(81804),e.e(38076),e.e(13837)]).then(e.bind(e,92469)),document.createElement("hui-picture-glance-card-editor")}static getStubConfig(t,i,e){return{type:"picture-glance",title:"Kitchen",image:"https://demo.home-assistant.io/stub_config/kitchen.png",entities:(0,y.B)(t,2,i,e,["sensor","binary_sensor"])}}getCardSize(){return 3}setConfig(t){if(!t||!t.entities||!Array.isArray(t.entities)||!(t.image||t.image_entity||t.camera_image||t.state_image)||t.state_image&&!t.entity)throw new Error("Invalid configuration");const i=(0,$.L)(t.entities);this._entitiesDialog=[],this._entitiesToggle=[],i.forEach(i=>{t.force_dialog||!h.FD.has((0,g.m)(i.entity))?this._entitiesDialog.push(i):this._entitiesToggle.push(i)}),this._config=t}shouldUpdate(t){if(!this._config||(0,w.LX)(this,t))return!0;if(!t.has("hass"))return!1;const i=t.get("hass");if(!i||i.themes!==this.hass.themes||i.locale!==this.hass.locale)return!0;if(this._config.image_entity&&i.states[this._config.image_entity]!==this.hass.states[this._config.image_entity])return!0;if(this._entitiesDialog)for(const e of this._entitiesDialog)if(i.states[e.entity]!==this.hass.states[e.entity])return!0;if(this._entitiesToggle)for(const e of this._entitiesToggle)if(i.states[e.entity]!==this.hass.states[e.entity])return!0;return!1}updated(t){if(super.updated(t),!this._config||!this.hass)return;const i=t.get("hass"),e=t.get("_config");i&&e&&i.themes===this.hass.themes&&e.theme===this._config.theme||(0,l.Q)(this,this.hass.themes,this._config.theme)}render(){var t,i;if(!this._config||!this.hass)return o.s6;let e="object"==typeof(null===(t=this._config)||void 0===t?void 0:t.image)&&this._config.image.media_content_id||this._config.image;if(this._config.image_entity){const t=this.hass.states[this._config.image_entity];switch((0,g.m)(this._config.image_entity)){case"image":e=(0,m.e)(t);break;case"person":t.attributes.entity_picture&&(e=t.attributes.entity_picture)}}const n="grid"===this.layout&&"number"==typeof(null===(i=this._config.grid_options)||void 0===i?void 0:i.rows),a=(0,v.h)(this._config.tap_action)||Boolean(!this._config.tap_action&&(this._config.camera_image||this._config.image_entity||this._config.entity));return(0,o.qy)(E||(E=H` <ha-card> <div class="image-container ${0}" @action="${0}" .actionHandler="${0}" tabindex="${0}" role="${0}" .config="${0}"> <hui-image .hass="${0}" .image="${0}" .stateImage="${0}" .stateFilter="${0}" .cameraImage="${0}" .cameraView="${0}" .entity="${0}" .fitMode="${0}" .aspectRatio="${0}"></hui-image> </div> <div class="box"> ${0} <div class="row"> ${0} </div> <div class="row"> ${0} </div> </div> </ha-card> `),(0,r.H)({clickable:a||(0,v.h)(this._config.hold_action)||(0,v.h)(this._config.double_tap_action)}),this._handleAction,(0,p.T)({hasTap:a,hasHold:(0,v.h)(this._config.hold_action),hasDoubleClick:(0,v.h)(this._config.double_tap_action)}),(0,c.J)(a?"0":void 0),(0,c.J)(a?"button":void 0),this._config,this.hass,e,this._config.state_image,this._config.state_filter,this._config.camera_image,this._config.camera_view,this._config.entity,this._config.fit_mode,n?void 0:this._config.aspect_ratio,this._config.title?(0,o.qy)(A||(A=H`<div class="title">${0}</div>`),this._config.title):"",this._entitiesDialog.map(t=>this._renderEntity(t,!0)),this._entitiesToggle.map(t=>this._renderEntity(t,!1)))}_renderEntity(t,i){const e=this.hass.states[t.entity];return t=Object.assign({tap_action:{action:i?"more-info":"toggle"},hold_action:{action:"more-info"}},t),e?(0,o.qy)(W||(W=H` <div class="wrapper"> <ha-icon-button @action="${0}" .actionHandler="${0}" tabindex="${0}" .disabled="${0}" .config="${0}" class="${0}" title="${0}"> <ha-state-icon .icon="${0}" .stateObj="${0}"></ha-state-icon> </ha-icon-button> ${0} </div> `),this._handleAction,(0,p.T)({hasHold:(0,v.h)(t.hold_action),hasDoubleClick:(0,v.h)(t.double_tap_action)}),(0,c.J)((0,v.h)(t.tap_action)?void 0:"-1"),!(0,v.h)(t.tap_action),t,(0,r.H)({"state-on":(0,f.a)(e)}),`${(0,d.u)(e)} : ${this.hass.formatEntityState(e)}`,t.icon,e,!0!==this._config.show_state&&!0!==t.show_state?(0,o.qy)(z||(z=H`<div class="state"></div>`)):(0,o.qy)(D||(D=H` <div class="state"> ${0} </div> `),t.attribute?(0,o.qy)(S||(S=H` ${0}${0}${0} `),t.prefix,e.attributes[t.attribute],t.suffix):this.hass.formatEntityState(e))):(0,o.qy)(T||(T=H` <hui-warning-element .label="${0}"></hui-warning-element> `),(0,k.j)(this.hass,t.entity))}_handleAction(t){const i=t.currentTarget.config;(0,b.$)(this,this.hass,i,t.detail.action)}}j.styles=(0,o.AH)(q||(q=H`ha-card{position:relative;min-height:48px;overflow:hidden;height:100%;box-sizing:border-box}.image-container{height:100%}.image-container.clickable{cursor:pointer}hui-image{pointer-events:none;height:100%}.box{position:absolute;left:0;right:0;bottom:0;background-color:var(--ha-picture-card-background-color,rgba(0,0,0,.3));padding:4px 8px;display:flex;justify-content:space-between;flex-direction:row}.box .title{font-weight:var(--ha-font-weight-medium);margin-left:8px;margin-inline-start:8px;margin-inline-end:initial;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-size:var(--ha-font-size-l);line-height:var(--ha-line-height-expanded);color:var(--ha-picture-card-text-color,#fff);align-self:center}ha-state-icon{font-size:0}ha-icon-button{--ha-icon-button-size:40px;--disabled-text-color:currentColor;color:var(--ha-picture-icon-button-color,#a9a9a9)}ha-icon-button.state-on{color:var(--ha-picture-icon-button-on-color,#fff)}hui-warning-element{padding:0 8px}.state{display:block;font-size:var(--ha-font-size-s);text-align:center;line-height:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ha-picture-card-text-color,#fff)}.row{display:flex;flex-direction:row}.wrapper{display:flex;flex-direction:column;width:40px}`)),(0,a.Cg)([(0,s.MZ)({attribute:!1})],j.prototype,"hass",void 0),(0,a.Cg)([(0,s.MZ)({attribute:!1})],j.prototype,"layout",void 0),(0,a.Cg)([(0,s.wk)()],j.prototype,"_config",void 0),j=(0,a.Cg)([(0,s.EM)("hui-picture-glance-card")],j),n()}catch(E){n(E)}})}}]);