UNPKG

iobroker.lovelace

Version:

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

1 lines 7.03 kB
"use strict";(self.rspackChunkhome_assistant_frontend=self.rspackChunkhome_assistant_frontend||[]).push([[73842],{84329:function(t,a,i){i.a(t,async function(t,e){try{i.r(a),i.d(a,{ALARM_MODE_STATE_MAP:function(){return j},DEFAULT_STATES:function(){return R},filterSupportedAlarmStates:function(){return D}});i(16280),i(18111),i(22489),i(61701),i(13579),i(3362),i(62953);var s=i(40445),n=i(5124),r=i(67576),o=i(6412),c=i(89784),l=i(42372),h=i(1087),d=i(52658),u=i(82286),p=(i(34296),i(18350)),_=(i(76776),i(93367)),m=i(91485),y=i(9182),g=i(22675),f=i(59241),b=i(13632),v=i(85979),$=t([p,_,m,v]);[p,_,m,v]=$.then?(await $)():$;let k,x,w,E,C,L,z,A,q,M=t=>t;const S="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",T=["1","2","3","4","5","6","7","8","9","clear","0",""],R=["arm_home","arm_away"],j={arm_home:"armed_home",arm_away:"armed_away",arm_night:"armed_night",arm_vacation:"armed_vacation",arm_custom_bypass:"armed_custom_bypass"},D=(t,a)=>a.filter(a=>t&&(0,u.$)(t,y.t[j[a]].feature||0));class I extends n.WF{static async getConfigElement(){return await i.e(40731).then(i.bind(i,13654)),document.createElement("hui-alarm-panel-card-editor")}static getStubConfig(t,a,i){const e=(0,b.B)(t,1,a,i,["alarm_control_panel"])[0]||"",s=t.states[e];return{type:"alarm-panel",states:D(s,R),entity:e}}connectedCallback(){super.connectedCallback(),this._subscribeEntityEntry()}disconnectedCallback(){super.disconnectedCallback(),this._unsubscribeEntityRegistry()}async getCardSize(){if(!this._config||!this.hass)return 10;const t=this.hass.states[this._config.entity];return t&&"number"===t.attributes.code_format?10:4}setConfig(t){if(!t||!t.entity||"alarm_control_panel"!==t.entity.split(".")[0])throw new Error("Invalid configuration");this._config=Object.assign({},t),this._subscribeEntityEntry()}updated(t){if(super.updated(t),!this._config||!this.hass)return;const a=t.get("hass"),i=t.get("_config");a&&i&&a.themes===this.hass.themes&&i.theme===this._config.theme||(0,l.Q)(this,this.hass.themes,this._config.theme)}shouldUpdate(t){if(t.has("_config"))return!0;const a=t.get("hass");return!a||a.themes!==this.hass.themes||a.locale!==this.hass.locale||a.states[this._config.entity]!==this.hass.states[this._config.entity]}async _unsubscribeEntityRegistry(){this._unsubEntityRegistry&&(this._unsubEntityRegistry(),this._unsubEntityRegistry=void 0)}async _subscribeEntityEntry(){var t;if(null!==(t=this._config)&&void 0!==t&&t.entity)try{this._unsubEntityRegistry=(0,f.Bz)(this.hass.connection,async t=>{t.some(t=>t.entity_id===this._config.entity)&&(this._entry=await(0,f.v)(this.hass,this._config.entity))})}catch(a){this._entry=null}}render(){var t;if(!this._config||!this.hass)return n.s6;const a=this.hass.states[this._config.entity],i=this._config.states||D(a,R);if(!a)return(0,n.qy)(k||(k=M` <hui-warning .hass="${0}"> ${0} </hui-warning> `),this.hass,(0,v.j)(this.hass,this._config.entity));const e=this._stateDisplay(a.state),s=null===(t=this._entry)||void 0===t||null===(t=t.options)||void 0===t||null===(t=t.alarm_control_panel)||void 0===t?void 0:t.default_code,r=this.hass.formatEntityName(a,this._config.name);return(0,n.qy)(x||(x=M` <ha-card> <h1 class="card-header"> ${0} <ha-assist-chip filled style="${0}" class="${0}" @click="${0}" .label="${0}"> <ha-state-icon slot="icon" .stateObj="${0}"></ha-state-icon> </ha-assist-chip> </h1> <div id="armActions" class="actions"> ${0} </div> ${0} ${0} </ha-card> `),r,(0,c.W)({"--alarm-state-color":(0,d.Se)(a)}),(0,o.H)({[a.state]:!0}),this._handleMoreInfo,e,a,("disarmed"===a.state?i:["disarm"]).map(t=>(0,n.qy)(w||(w=M` <ha-button .action="${0}" @click="${0}" appearance="filled" size="small" variant="${0}"> ${0} </ha-button> `),t,this._handleActionClick,"disarm"===t?"danger":"brand",this._actionDisplay(t))),!a.attributes.code_format||s?n.s6:(0,n.qy)(E||(E=M` <ha-input .value="${0}" @input="${0}" .label="${0}" type="password" .inputmode="${0}"></ha-input> `),this._value||"",this._handleInput,this.hass.localize("ui.card.alarm_control_panel.code"),"number"===a.attributes.code_format?"numeric":"text"),"number"!==a.attributes.code_format||s?n.s6:(0,n.qy)(C||(C=M` <div class="keypad"> ${0} </div> `),T.map(t=>""===t?(0,n.qy)(L||(L=M`<span></span>`)):"clear"===t?(0,n.qy)(z||(z=M` <ha-control-button @click="${0}" class="clear" .value="${0}" .disabled="${0}" .label="${0}"> <ha-svg-icon path="${0}"></ha-svg-icon> </ha-control-button> `),this._handlePadClick,t,!this._value,this.hass.localize("ui.common.clear"),S):(0,n.qy)(A||(A=M` <ha-control-button .value="${0}" @click="${0}" .label="${0}"> ${0} </ha-control-button> `),t,this._handlePadClick,t,t))))}_actionDisplay(t){return this.hass.localize(`ui.card.alarm_control_panel.${t}`)}_stateDisplay(t){return t===g.Hh?this.hass.localize("state.default.unavailable"):this.hass.localize(`component.alarm_control_panel.entity_component._.state.${t}`)||t}_handleInput(t){this._value=t.currentTarget.value}_handlePadClick(t){const a=t.currentTarget.value;this._value="clear"===a?"":(this._value||"")+a}_handleActionClick(t){(0,y.kF)(this.hass,this._config.entity,t.currentTarget.action,this._value||void 0),this._value=void 0}_handleMoreInfo(){(0,h.r)(this,"hass-more-info",{entityId:this._config.entity})}}I.styles=(0,n.AH)(q||(q=M`ha-card{padding-bottom:16px;position:relative;height:100%;display:flex;flex-direction:column;align-items:center;box-sizing:border-box;--alarm-state-color:var(--state-inactive-color)}ha-assist-chip{--ha-assist-chip-filled-container-color:var(--alarm-state-color);--primary-text-color:var(--text-primary-color)}.card-header{display:flex;justify-content:space-between;align-items:center;width:100%;box-sizing:border-box}.arming,.pending,.triggered{animation:pulse 1s infinite}@keyframes pulse{0%{opacity:1}50%{opacity:0}100%{opacity:1}}ha-input{margin:var(--ha-space-2);max-width:150px;text-align:center;--ha-input-padding-bottom:0}.state{margin-left:var(--ha-space-4);margin-inline-start:var(--ha-space-4);margin-inline-end:initial;position:relative;bottom:var(--ha-space-4);color:var(--alarm-state-color);animation:none}.keypad{--keypad-columns:3;padding:var(--ha-space-3);display:grid;grid-template-columns:repeat(var(--keypad-columns),auto);grid-auto-rows:auto;grid-gap:var(--ha-space-4);justify-items:center;align-items:center;direction:ltr}ha-control-button{width:56px;height:56px;--control-button-border-radius:var(--ha-border-radius-4xl);--mdc-icon-size:24px;font-size:var(--ha-font-size-2xl)}.clear{--control-button-background-color:var(--red-color);--control-button-icon-color:var(--red-color)}.actions{margin:0;display:flex;flex-wrap:wrap;justify-content:center;align-items:center}.actions ha-button{margin:var(--ha-space-1)}`)),(0,s.Cg)([(0,r.MZ)({attribute:!1})],I.prototype,"hass",void 0),(0,s.Cg)([(0,r.wk)()],I.prototype,"_config",void 0),(0,s.Cg)([(0,r.wk)()],I.prototype,"_entry",void 0),(0,s.Cg)([(0,r.wk)()],I.prototype,"_value",void 0),I=(0,s.Cg)([(0,r.EM)("hui-alarm-panel-card")],I),e()}catch(k){e(k)}})}}]);