UNPKG

iobroker.lovelace

Version:

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

25 lines 37.6 kB
export const __rspack_esm_id=97500;export const __rspack_esm_ids=[97500];export const __webpack_modules__={25240(t,i,e){e.a(t,async function(t,i){try{e(74423);var a=e(62826),s=e(5124),n=e(22441),r=e(46190),o=e(69093),c=e(28978),h=e(22675),l=e(88360),d=(e(6),e(26300)),u=e(59646),p=t([d,u]);[d,u]=p.then?(await p)():p;const g="M7,2V13H10V22L17,10H13L17,2H7Z",f="M17,10H13L17,2H7V4.18L15.46,12.64M3.27,3L2,4.27L7,9.27V13H10V22L13.58,15.86L17.73,20L19,18.73L3.27,3Z",_=t=>void 0!==t&&!r.jj.includes(t.state)&&t.state!==h.Hh&&t.state!==h.HV;class y extends s.WF{render(){if(!this.stateObj)return s.qy`<ha-switch disabled="disabled"></ha-switch> `;if(this.stateObj.attributes.assumed_state||this.stateObj.state===h.HV)return s.qy` <ha-icon-button .label="${`Turn ${(0,c.u)(this.stateObj)} off`}" .path="${f}" .disabled="${this.stateObj.state===h.Hh}" @click="${this._turnOff}" class="${this._isOn||this.stateObj.state===h.HV?"":"state-active"}"></ha-icon-button> <ha-icon-button .label="${`Turn ${(0,c.u)(this.stateObj)} on`}" .path="${g}" .disabled="${this.stateObj.state===h.Hh}" @click="${this._turnOn}" class="${this._isOn?"state-active":""}"></ha-icon-button> `;const t=s.qy`<ha-switch aria-label="${`Toggle ${(0,c.u)(this.stateObj)} ${this._isOn?"off":"on"}`}" .checked="${this._isOn}" .disabled="${this.stateObj.state===h.Hh}" @change="${this._toggleChanged}"></ha-switch>`;return this.label?s.qy` <ha-formfield .label="${this.label}">${t}</ha-formfield> `:t}firstUpdated(t){super.firstUpdated(t),this.addEventListener("click",t=>t.stopPropagation())}willUpdate(t){super.willUpdate(t),t.has("stateObj")&&(this._isOn=_(this.stateObj))}_toggleChanged(t){const i=t.target.checked;i!==this._isOn&&this._callService(i)}_turnOn(){this._callService(!0)}_turnOff(){this._callService(!1)}async _callService(t){if(!this.hass||!this.stateObj)return;(0,l.j)(this,"light");const i=(0,o.t)(this.stateObj);let e,a;"lock"===i?(e="lock",a=t?"unlock":"lock"):"cover"===i?(e="cover",a=t?"open_cover":"close_cover"):"valve"===i?(e="valve",a=t?"open_valve":"close_valve"):"group"===i?(e="homeassistant",a=t?"turn_on":"turn_off"):(e=i,a=t?"turn_on":"turn_off");const s=this.stateObj;this._isOn=t;try{await this.hass.callService(e,a,{entity_id:this.stateObj.entity_id})}finally{setTimeout(async()=>{this.stateObj===s&&(this._isOn=_(this.stateObj))},2e3)}}constructor(...t){super(...t),this._isOn=!1}}y.styles=s.AH`:host{display:flex;align-items:center;white-space:nowrap}ha-switch{--ha-switch-width:var(--ha-entity-toggle-switch-width, 38px);--ha-switch-size:var(--ha-entity-toggle-switch-size, 20px);--ha-switch-thumb-size:var(--ha-entity-toggle-switch-thumb-size, 14px)}ha-icon-button{--ha-icon-button-size:40px;color:var(--ha-icon-button-inactive-color,var(--primary-text-color));transition:color .5s}ha-icon-button.state-active{color:var(--ha-icon-button-active-color,var(--primary-color))}`,(0,a.Cg)([(0,n.MZ)({attribute:!1})],y.prototype,"stateObj",void 0),(0,a.Cg)([(0,n.MZ)()],y.prototype,"label",void 0),(0,a.Cg)([(0,n.wk)()],y.prototype,"_isOn",void 0),y=(0,a.Cg)([(0,n.EM)("ha-entity-toggle")],y),i()}catch(t){i(t)}})},44328(t,i,e){e(18111),e(22489),e(61701),e(13579),e(14603),e(47566),e(98721);var a=e(62826),s=e(5124),n=e(22441),r=e(91450);class o extends s.WF{render(){if(!this.stateObj)return s.s6;const t=this.stateObj.attributes[this.attribute];if("string"==typeof t&&t.startsWith("http"))try{const i=new URL(t);if("http:"===i.protocol||"https:"===i.protocol)return s.qy` <a target="_blank" rel="noopener noreferrer" href="${t}"> ${t} </a> `}catch{}if(Array.isArray(t)&&t.some(t=>t instanceof Object)||!Array.isArray(t)&&t instanceof Object){const i=e.e(85010).then(e.bind(e,53289)).then(({dump:i})=>i(t));return s.qy`<pre>${(0,r.T)(i,"")}</pre>`}if(this.hideUnit){return this.hass.formatEntityAttributeValueToParts(this.stateObj,this.attribute).filter(t=>"value"===t.type).map(t=>t.value).join("")}return this.hass.formatEntityAttributeValue(this.stateObj,this.attribute)}constructor(...t){super(...t),this.hideUnit=!1}}o.styles=s.AH`pre{font-family:inherit;font-size:inherit;margin:0;overflow-wrap:break-word;white-space:pre-line}`,(0,a.Cg)([(0,n.MZ)({attribute:!1})],o.prototype,"hass",void 0),(0,a.Cg)([(0,n.MZ)({attribute:!1})],o.prototype,"stateObj",void 0),(0,a.Cg)([(0,n.MZ)()],o.prototype,"attribute",void 0),(0,a.Cg)([(0,n.MZ)({type:Boolean,attribute:"hide-unit"})],o.prototype,"hideUnit",void 0),o=(0,a.Cg)([(0,n.EM)("ha-attribute-value")],o)},30716(t,i,e){var a=e(62826),s=e(72274),n=e(34875),r=e(7731),o=e(5124),c=e(22441),h=e(1087);const l=t=>t.preventDefault();var d=e(57237);e(9503);class u extends s.h{async onChange(t){t.stopPropagation(),super.onChange(t),(0,h.r)(this,t.type)}render(){const t=this.renderText(),i=this.graphic&&"control"!==this.graphic&&!this.left?this.renderGraphic():o.s6,e=this.hasMeta&&this.left?this.renderMeta():o.s6,a=this.renderRipple();return o.qy` ${a} ${i} ${this.left?"":t} <ha-checkbox tabindex="${this.separateCheckboxClick?this.tabindex:-1}" .checked="${this.selected}" .indeterminate="${this.indeterminate}" ?disabled="${this.disabled||this.checkboxDisabled}" @change="${this.onChange}" @click="${this.separateCheckboxClick?d.d:l}" class="${this.left?"left":""}"> </ha-checkbox> ${this.left?t:""} ${e}`}constructor(...t){super(...t),this.checkboxDisabled=!1,this.indeterminate=!1,this.separateCheckboxClick=!1}}u.styles=[r.R,n.R,o.AH`:host{--mdc-theme-secondary:var(--primary-color)}:host([graphic=avatar]) .mdc-deprecated-list-item__graphic,:host([graphic=control]) .mdc-deprecated-list-item__graphic,:host([graphic=large]) .mdc-deprecated-list-item__graphic,:host([graphic=medium]) .mdc-deprecated-list-item__graphic{margin-inline-end:var(--mdc-list-item-graphic-margin,16px);margin-inline-start:0px;direction:var(--direction)}ha-checkbox{flex-shrink:0;direction:var(--direction);margin-inline-start:auto;margin-inline-end:0;height:100%;justify-content:center}ha-checkbox.left{margin-inline-start:0}.mdc-deprecated-list-item__graphic{margin-top:var(--check-list-item-graphic-margin-top)}:host([graphic=icon]) .mdc-deprecated-list-item__graphic{margin-inline-start:0;margin-inline-end:var(--mdc-list-item-graphic-margin,32px)}`],(0,a.Cg)([(0,c.MZ)({type:Boolean,attribute:"checkbox-disabled"})],u.prototype,"checkboxDisabled",void 0),(0,a.Cg)([(0,c.MZ)({type:Boolean})],u.prototype,"indeterminate",void 0),(0,a.Cg)([(0,c.MZ)({type:Boolean,attribute:"separate-checkbox-click"})],u.prototype,"separateCheckboxClick",void 0),u=(0,a.Cg)([(0,c.EM)("ha-check-list-item")],u)},6(t,i,e){var a=e(62826),s=e(68462),n=e(38627),r=e(5124),o=e(22441),c=e(6412),h=e(1087);class l extends s.M{render(){const t={"mdc-form-field--align-end":this.alignEnd,"mdc-form-field--space-between":this.spaceBetween,"mdc-form-field--nowrap":this.nowrap};return r.qy` <div class="mdc-form-field ${(0,c.H)(t)}"> <slot></slot> <label class="mdc-label" @click="${this._labelClick}"> <slot name="label">${this.label}</slot> </label> </div>`}_labelClick(){const t=this.input;if(t&&(t.focus(),!t.disabled))if("HA-CHECKBOX"===t.tagName)t.checked=!t.checked,(0,h.r)(t,"change");else t.click()}constructor(...t){super(...t),this.disabled=!1}}l.styles=[n.R,r.AH`:host(:not([alignEnd])) ::slotted(ha-switch){margin-right:10px;margin-inline-end:10px;margin-inline-start:initial}.mdc-form-field{align-items:var(--ha-formfield-align-items,center);gap:var(--ha-space-1)}.mdc-form-field>label{direction:var(--direction);margin-inline-start:0;margin-inline-end:auto;padding:0}:host([disabled]) label{color:var(--disabled-text-color)}`],(0,a.Cg)([(0,o.MZ)({type:Boolean,reflect:!0})],l.prototype,"disabled",void 0),l=(0,a.Cg)([(0,o.EM)("ha-formfield")],l)},70759(t,i,e){e.a(t,async function(t,i){try{var a=e(62826),s=e(60346),n=e(5124),r=e(22441),o=e(63091),c=t([s]);s=(c.then?(await c)():c)[0];class h extends s.A{connectedCallback(){super.connectedCallback(),this.dir=o.G.document.dir}static get styles(){return[s.A.styles,n.AH`:host{--track-size:var(--ha-slider-track-size, 4px);--marker-height:calc(var(--ha-slider-track-size, 4px) / 2);--marker-width:calc(var(--ha-slider-track-size, 4px) / 2);--wa-color-surface-default:var(--card-background-color);--wa-color-neutral-fill-normal:var( --ha-slider-track-color, var(--disabled-color) );--wa-tooltip-background-color:var( --ha-tooltip-background-color, var(--secondary-background-color) );--wa-tooltip-content-color:var( --ha-tooltip-text-color, var(--primary-text-color) );--wa-tooltip-font-family:var( --ha-tooltip-font-family, var(--ha-font-family-body) );--wa-tooltip-font-size:var( --ha-tooltip-font-size, var(--ha-font-size-s) );--wa-tooltip-font-weight:var( --ha-tooltip-font-weight, var(--ha-font-weight-normal) );--wa-tooltip-line-height:var( --ha-tooltip-line-height, var(--ha-line-height-condensed) );--wa-tooltip-padding:var(--ha-tooltip-padding, var(--ha-space-2));--wa-tooltip-border-radius:var( --ha-tooltip-border-radius, var(--ha-border-radius-sm) );--wa-tooltip-arrow-size:var(--ha-tooltip-arrow-size, 0px);--wa-tooltip-border-width:0px;--wa-z-index-tooltip:1000;min-width:100px;min-inline-size:100px;width:200px}#slider{padding-block:14px;margin-block:-14px}#thumb{border:none;background-color:var(--ha-slider-thumb-color,var(--primary-color));overflow:hidden}#thumb:after{content:"";border-radius:50%;position:absolute;width:calc(var(--thumb-width) * 2 + 8px);height:calc(var(--thumb-height) * 2 + 8px);left:calc(-50% - 4px);top:calc(-50% - 4px);cursor:pointer}#slider:focus-visible:not(.disabled) #thumb,#slider:focus-visible:not(.disabled) #thumb-max,#slider:focus-visible:not(.disabled) #thumb-min{outline:var(--wa-focus-ring)}#track:after{content:"";position:absolute;top:calc(-50% - 4px);left:0;width:100%;height:calc(var(--track-size) * 2 + 8px);cursor:pointer}#indicator{background-color:var(--ha-slider-indicator-color,var(--primary-color))}:host([size=medium]){--thumb-width:20px;--thumb-height:20px}:host([size=small]){--thumb-width:16px;--thumb-height:16px}`]}constructor(...t){super(...t),this.size="small",this.withTooltip=!0}}(0,a.Cg)([(0,r.MZ)({reflect:!0})],h.prototype,"size",void 0),(0,a.Cg)([(0,r.MZ)({type:Boolean,attribute:"with-tooltip"})],h.prototype,"withTooltip",void 0),h=(0,a.Cg)([(0,r.EM)("ha-slider")],h),i()}catch(t){i(t)}})},34884(t,i,e){e.d(i,{$4:()=>l,C6:()=>c,CB:()=>o,Tx:()=>r,ac:()=>s,qL:()=>u,tK:()=>h,w$:()=>d});var a=e(91926);const s=66649!=e.j?["binary_sensor","button","configuration","device_tracker","event","image_processing","infrared","input_button","persistent_notification","person","radio_frequency","scene","schedule","script","sensor","sun","update","weather","zone"]:null;let n;const r=(t,i)=>{n={config:t,areaId:i},(0,a.oo)("/config/scene/edit/new")},o=()=>{const t=n;return n=void 0,t},c=(t,i)=>t.callService("scene","turn_on",{entity_id:i}),h=(t,i)=>t.callService("scene","apply",{entities:i}),l=(t,i)=>t.callApi("GET",`config/scene/config/${i}`),d=(t,i,e)=>t.callApi("POST",`config/scene/config/${i}`,e),u=(t,i)=>t.callApi("DELETE",`config/scene/config/${i}`)},52069(t,i,e){e.d(i,{EF:()=>r,S_:()=>a,Xv:()=>o,ni:()=>n,u1:()=>c,z3:()=>h});const a=(t,i)=>t.callApi("POST","tts_get_url",i),s="media-source://tts/",n=t=>t.startsWith(s),r=t=>t.substring(19),o=(t,i,e)=>t.callWS({type:"tts/engine/list",language:i,country:e}),c=(t,i)=>t.callWS({type:"tts/engine/get",engine_id:i}),h=(t,i,e)=>t.callWS({type:"tts/engine/voices",engine_id:i,language:e})},4397(t,i,e){e.r(i),e.d(i,{HuiErrorCard:()=>o});var a=e(62826),s=e(5124),n=e(22441);e(76776),e(67094);const r={warning:"M12,2L1,21H23M12,6L19.53,19H4.47M11,10V14H13V10M11,16V18H13V16",error:"M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z"};class o extends s.WF{getCardSize(){return 1}getGridOptions(){return{columns:6,rows:this.preview?"auto":1,min_rows:1,min_columns:6}}setConfig(t){this._config=t,this.severity=t.severity||"error"}render(){const t=this._config?.error||"warning"===this.severity&&this.hass?.localize("ui.errors.config.configuration_warning")||this.hass?.localize("ui.errors.config.configuration_error"),i=void 0===this.hass||this.hass?.user?.is_admin||this.preview,e=this.preview;return s.qy` <ha-card class="${this.severity} ${i?"":"no-title"}"> <div class="header"> <div class="icon"> <slot name="icon"> <ha-svg-icon .path="${r[this.severity]}"></ha-svg-icon> </slot> </div> ${i?s.qy`<div class="title"><slot>${t}</slot></div>`:s.s6} </div> ${e&&this._config?.message?s.qy`<div class="message">${this._config.message}</div>`:s.s6} </ha-card> `}constructor(...t){super(...t),this.preview=!1,this.severity="error"}}o.styles=s.AH`ha-card{height:100%;border-width:0}ha-card::after{position:absolute;top:0;right:0;bottom:0;left:0;opacity:.12;pointer-events:none;content:"";border-radius:var(--ha-card-border-radius,var(--ha-border-radius-lg))}.header{display:flex;align-items:center;gap:var(--ha-space-2);padding:16px}.message{padding:0 16px 16px 16px}.no-title{justify-content:center}.title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:var(--ha-font-weight-bold)}ha-card.warning .icon{color:var(--warning-color)}ha-card.warning::after{background-color:var(--warning-color)}ha-card.error .icon{color:var(--error-color)}ha-card.error::after{background-color:var(--error-color)}`,(0,a.Cg)([(0,n.MZ)({attribute:!1})],o.prototype,"hass",void 0),(0,a.Cg)([(0,n.MZ)({attribute:!1})],o.prototype,"preview",void 0),(0,a.Cg)([(0,n.MZ)({attribute:"severity"})],o.prototype,"severity",void 0),(0,a.Cg)([(0,n.wk)()],o.prototype,"_config",void 0),o=(0,a.Cg)([(0,n.EM)("hui-error-card")],o)},99936(t,i,e){e.d(i,{f:()=>s});e(18111),e(13579);var a=e(65063);const s=async(t,i,e,s)=>!(!e.exemptions||!e.exemptions.some(t=>t.user===i.user?.id))||(0,a.dk)(t,{text:e.text||i.localize("ui.panel.lovelace.cards.actions.action_confirmation",{action:s}),title:e.title,dismissText:e.dismiss_text,confirmText:e.confirm_text})},784(t,i,e){e.d(i,{LX:()=>o,pY:()=>c,xP:()=>s});e(18111),e(13579);var a=e(20939);function s(t,i){if(i.has("_config"))return!0;if(!i.has("hass"))return!1;const e=i.get("hass");return!e||(e.connected!==t.hass.connected||e.themes!==t.hass.themes||e.locale!==t.hass.locale||e.localize!==t.hass.localize||e.formatEntityState!==t.hass.formatEntityState||e.formatEntityAttributeName!==t.hass.formatEntityAttributeName||e.formatEntityAttributeValue!==t.hass.formatEntityAttributeValue||e.config.state!==t.hass.config.state)}function n(t,i,e){return t.states[e]!==i.states[e]}function r(t,i,e){const a=t.entities[e],s=i.entities[e];return a?.display_precision!==s?.display_precision}function o(t,i){if(s(t,i))return!0;if(!i.has("hass"))return!1;const e=i.get("hass"),a=t.hass;return n(e,a,t._config.entity)||r(e,a,t._config.entity)}function c(t,i){if(s(t,i))return!0;if(!i.has("hass"))return!1;const e=i.get("hass"),o=t.hass;return(0,a.L)(t._config.entities,!1).some(t=>"entity"in t&&(n(e,o,t.entity)||r(e,o,t.entity)))}},62688(t,i,e){e.a(t,async function(t,i){try{e(74423);var a=e(62826),s=e(5124),n=e(22441),r=e(72487),o=e(95747),c=e(30162),h=e(98975),l=e(52943),d=t([r,o,c,h]);[r,o,c,h]=d.then?(await d)():d;const u={date:r.Yq,datetime:o.r6,time:c.fU},p=["relative","total"];class g extends s.WF{connectedCallback(){super.connectedCallback(),this._connected=!0,this._startInterval()}disconnectedCallback(){super.disconnectedCallback(),this._connected=!1,this._clearInterval()}render(){if(!this.ts||!this.hass)return s.s6;if(isNaN(this.ts.getTime()))return s.qy`${this.hass.localize("ui.panel.lovelace.components.timestamp-display.invalid")}`;const t=this._format;return p.includes(t)?s.qy` ${this._relative} `:t in u?s.qy` ${u[t](this.ts,this.hass.locale,this.hass.config)} `:s.qy`${this.hass.localize("ui.panel.lovelace.components.timestamp-display.invalid_format")}`}updated(t){super.updated(t),t.has("format")&&this._connected&&(p.includes("relative")?this._startInterval():this._clearInterval())}get _format(){return this.format||"relative"}_startInterval(){this._clearInterval(),this._connected&&p.includes(this._format)&&(this._updateRelative(),this._interval=window.setInterval(()=>this._updateRelative(),1e3))}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=void 0)}_updateRelative(){this.ts&&this.hass?.localize&&(this._relative="relative"===this._format?(0,h.K)(this.ts,this.hass.locale):(0,h.K)(new Date,this.hass.locale,this.ts,!1),this._relative=this.capitalize?(0,l.Z)(this._relative):this._relative)}constructor(...t){super(...t),this.capitalize=!1}}(0,a.Cg)([(0,n.MZ)({attribute:!1})],g.prototype,"hass",void 0),(0,a.Cg)([(0,n.MZ)({attribute:!1})],g.prototype,"ts",void 0),(0,a.Cg)([(0,n.MZ)()],g.prototype,"format",void 0),(0,a.Cg)([(0,n.MZ)({type:Boolean})],g.prototype,"capitalize",void 0),(0,a.Cg)([(0,n.wk)()],g.prototype,"_relative",void 0),g=(0,a.Cg)([(0,n.EM)("hui-timestamp-display")],g),i()}catch(t){i(t)}})},85979(t,i,e){e.a(t,async function(t,a){try{e.d(i,{j:()=>l});var s=e(62826),n=e(58888),r=e(5124),o=e(22441),c=e(38962),h=(e(4397),t([c]));c=(h.then?(await h)():h)[0];const l=(t,i)=>t.config.state!==n.m2?t.localize("ui.card.common.entity_not_found"):t.localize("ui.panel.lovelace.warning.starting");class d extends r.WF{render(){return r.qy`<hui-error-card .hass="${this.hass}" severity="warning"><slot></slot></hui-error-card>`}}(0,s.Cg)([(0,o.MZ)({attribute:!1})],d.prototype,"hass",void 0),d=(0,s.Cg)([(0,o.EM)("hui-warning")],d),a()}catch(t){a(t)}})},99799(t,i,e){e.a(t,async function(t,a){try{e.r(i);var s=e(62826),n=e(5124),r=e(22441),o=e(22675),c=e(19037),h=e(22064),l=e(97176),d=e(784),u=e(79757),p=e(62688),g=e(85979),f=t([u,p,g]);[u,p,g]=f.then?(await f)():f;class _ extends n.WF{setConfig(t){if(!t)throw new Error("Invalid configuration");this._config=t}shouldUpdate(t){return(0,d.LX)(this,t)}render(){if(!this._config||!this.hass)return n.s6;const t=this.hass.states[this._config.entity];if(!t)return n.qy` <hui-warning .hass="${this.hass}"> ${(0,g.j)(this.hass,this._config.entity)} </hui-warning> `;const i=t.state===o.Hh||t.state===o.HV;return n.qy` <hui-generic-entity-row .hass="${this.hass}" .config="${this._config}" .catchInteraction="${!1}"> <div @action="${this._handleAction}" .actionHandler="${(0,c.T)({hasHold:(0,l.h)(this._config.hold_action),hasDoubleClick:(0,l.h)(this._config.double_tap_action)})}"> <div class="when"> ${i?this.hass.formatEntityState(t):n.qy`<hui-timestamp-display .hass="${this.hass}" .ts="${new Date(t.state)}" .format="${this._config.format}" capitalize></hui-timestamp-display>`} </div> <div class="what"> ${i?n.s6:this.hass.formatEntityAttributeValue(t,"event_type")} </div> </div> </hui-generic-entity-row> `}_handleAction(t){t.preventDefault(),t.stopPropagation(),(0,h.$)(this,this.hass,this._config,t.detail.action)}}_.styles=n.AH`div{text-align:right}.when{color:var(--primary-text-color)}.what{color:var(--secondary-text-color)}`,(0,s.Cg)([(0,r.MZ)({attribute:!1})],_.prototype,"hass",void 0),(0,s.Cg)([(0,r.wk)()],_.prototype,"_config",void 0),_=(0,s.Cg)([(0,r.EM)("hui-event-entity-row")],_),a()}catch(t){a(t)}})},29003(t,i,e){e.a(t,async function(t,i){try{var a=e(62826),s=e(5124),n=e(22441),r=e(47129),o=e(82286),c=e(9899),h=e(26300),l=e(70759),d=e(22675),u=e(53072),p=e(784),g=e(79757),f=e(85979),_=t([h,l,g,f]);[h,l,g,f]=_.then?(await _)():_;const y="M14,19H18V5H14M6,19H10V5H6V19Z",v="M8,5.14V19.14L19,12.14L8,5.14Z",m="M3,5V19L11,12M13,19H16V5H13M18,5V19H21V5",b="M13,3H11V13H13V3M17.83,5.17L16.41,6.59C18.05,7.91 19,9.9 19,12A7,7 0 0,1 12,19C8.14,19 5,15.88 5,12C5,9.91 5.95,7.91 7.58,6.58L6.17,5.17C2.38,8.39 1.92,14.07 5.14,17.86C8.36,21.64 14.04,22.1 17.83,18.88C19.85,17.17 21,14.65 21,12C21,9.37 19.84,6.87 17.83,5.17Z",w="M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M12,19A7,7 0 0,1 5,12A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19Z",$="M11,3H13V21H11V3Z",C="M16,18H18V6H16M6,18L14.5,12L6,6V18Z",x="M6,18V6H8V18H6M9.5,12L18,6V18L9.5,12Z",k="M18,18H6V6H18V18Z",M="M14,3.23V5.29C16.89,6.15 19,8.83 19,12C19,15.17 16.89,17.84 14,18.7V20.77C18,19.86 21,16.28 21,12C21,7.72 18,4.14 14,3.23M16.5,12C16.5,10.23 15.5,8.71 14,7.97V16C15.5,15.29 16.5,13.76 16.5,12M3,9V15H7L12,20V4L7,9H3Z",E="M3,9H7L12,4V20L7,15H3V9M14,11H22V13H14V11Z",H="M12,4L9.91,6.09L12,8.18M4.27,3L3,4.27L7.73,9H3V15H7L12,20V13.27L16.25,17.53C15.58,18.04 14.83,18.46 14,18.7V20.77C15.38,20.45 16.63,19.82 17.68,18.96L19.73,21L21,19.73L12,10.73M19,12C19,12.94 18.8,13.82 18.46,14.64L19.97,16.15C20.62,14.91 21,13.5 21,12C21,7.72 18,4.14 14,3.23V5.29C16.89,6.15 19,8.83 19,12M16.5,12C16.5,10.23 15.5,8.71 14,7.97V10.18L16.45,12.63C16.5,12.43 16.5,12.21 16.5,12Z",V="M3,9H7L12,4V20L7,15H3V9M14,11H17V8H19V11H22V13H19V16H17V13H14V11Z";class O extends s.WF{setConfig(t){if(!t||!t.entity)throw new Error("Entity must be specified");this._config=t}connectedCallback(){super.connectedCallback(),this._attachObserver()}disconnectedCallback(){super.disconnectedCallback(),this._resizeObserver?.unobserve(this)}willUpdate(){this.hasUpdated||this._measureCard()}firstUpdated(){this._attachObserver()}shouldUpdate(t){return(0,p.LX)(this,t)||t.size>1||!t.has("hass")}render(){if(!this.hass||!this._config)return s.s6;const t=this.hass.states[this._config.entity];if(!t)return s.qy` <hui-warning .hass="${this.hass}"> ${(0,f.j)(this.hass,this._config.entity)} </hui-warning> `;const i=t.state,e=this._computeControlButton(t),a=!0===t.attributes.assumed_state,n=s.qy` ${this._narrow||"playing"!==i&&!a||!(0,o.$)(t,u.vj.PREVIOUS_TRACK)?"":s.qy` <ha-icon-button .path="${x}" .label="${this.hass.localize("ui.card.media_player.media_previous_track")}" @click="${this._previousTrack}"></ha-icon-button> `} ${!a&&("playing"===i&&((0,o.$)(t,u.vj.PAUSE)||(0,o.$)(t,u.vj.STOP))||("paused"===i||"idle"===i)&&(0,o.$)(t,u.vj.PLAY)||"on"===i&&((0,o.$)(t,u.vj.PLAY)||(0,o.$)(t,u.vj.PAUSE)))?s.qy` <ha-icon-button .path="${e.icon}" .label="${this.hass.localize(`ui.card.media_player.${e.action}`)}" @click="${this._playPauseStop}"></ha-icon-button> `:""} ${a&&(0,o.$)(t,u.vj.PLAY)?s.qy` <ha-icon-button .path="${v}" .label="${this.hass.localize("ui.card.media_player.media_play")}" @click="${this._play}"></ha-icon-button> `:""} ${a&&(0,o.$)(t,u.vj.PAUSE)?s.qy` <ha-icon-button .path="${y}" .label="${this.hass.localize("ui.card.media_player.media_pause")}" @click="${this._pause}"></ha-icon-button> `:""} ${a&&(0,o.$)(t,u.vj.STOP)&&!(0,o.$)(t,u.vj.VOLUME_SET)?s.qy` <ha-icon-button .path="${k}" .label="${this.hass.localize("ui.card.media_player.media_stop")}" @click="${this._stop}"></ha-icon-button> `:""} ${("playing"===i||a&&!(0,o.$)(t,u.vj.VOLUME_SET))&&(0,o.$)(t,u.vj.NEXT_TRACK)?s.qy` <ha-icon-button .path="${C}" .label="${this.hass.localize("ui.card.media_player.media_next_track")}" @click="${this._nextTrack}"></ha-icon-button> `:""} `,c=(0,u.mm)(t);return s.qy` <hui-generic-entity-row .hass="${this.hass}" .config="${this._config}" .secondaryText="${c||this.hass.formatEntityState(t)}"> <div class="controls"> ${!(0,o.$)(t,u.vj.TURN_ON)||(0,r.a)(t)&&!a||i===d.Hh?"":s.qy` <ha-icon-button .path="${a?$:b}" .label="${this.hass.localize("ui.card.media_player.turn_on")}" @click="${this._turnOn}"></ha-icon-button> `} ${(0,o.$)(t,u.vj.VOLUME_SET)||(0,o.$)(t,u.vj.VOLUME_STEP)||!(0,r.a)(t)&&!a&&(0,o.$)(t,u.vj.TURN_ON)&&i!==d.Hh?"":n} ${(0,o.$)(t,u.vj.TURN_OFF)&&((0,r.a)(t)||a)?s.qy` <ha-icon-button .path="${a?w:b}" .label="${this.hass.localize("ui.card.media_player.turn_off")}" @click="${this._turnOff}"></ha-icon-button> `:""} </div> </hui-generic-entity-row> ${((0,o.$)(t,u.vj.VOLUME_STEP)||(0,o.$)(t,u.vj.VOLUME_SET))&&(0,r.a)(t)?s.qy` <div class="flex"> <div class="volume"> ${(0,o.$)(t,u.vj.VOLUME_MUTE)?s.qy` <ha-icon-button .path="${t.attributes.is_volume_muted?H:M}" .label="${this.hass.localize("ui.card.media_player."+(t.attributes.is_volume_muted?"media_volume_mute":"media_volume_unmute"))}" @click="${this._toggleMute}"></ha-icon-button> `:""} ${!this._veryNarrow&&(0,o.$)(t,u.vj.VOLUME_SET)?s.qy` <ha-slider labeled .value="${100*Number(t.attributes.volume_level)}" @change="${this._selectedValueChanged}" id="input"></ha-slider> `:!this._veryNarrow&&(0,o.$)(t,u.vj.VOLUME_STEP)?s.qy` <ha-icon-button .path="${E}" .label="${this.hass.localize("ui.card.media_player.media_volume_down")}" @click="${this._volumeDown}"></ha-icon-button> <ha-icon-button .path="${V}" .label="${this.hass.localize("ui.card.media_player.media_volume_up")}" @click="${this._volumeUp}"></ha-icon-button> `:""} </div> <div class="controls">${n}</div> </div> `:""} `}async _attachObserver(){this._resizeObserver||(this._resizeObserver=new ResizeObserver((0,c.s)(()=>this._measureCard(),250,!1))),this._resizeObserver.observe(this)}_measureCard(){this.isConnected&&(this._narrow=(this.clientWidth||0)<300,this._veryNarrow=(this.clientWidth||0)<225)}_computeControlButton(t){return"on"===t.state?{icon:m,action:"media_play_pause"}:"playing"!==t.state?{icon:v,action:"media_play"}:(0,o.$)(t,u.vj.PAUSE)?{icon:y,action:"media_pause"}:{icon:k,action:"media_stop"}}_turnOn(){this.hass.callService("media_player","turn_on",{entity_id:this._config.entity})}_turnOff(){this.hass.callService("media_player","turn_off",{entity_id:this._config.entity})}_playPauseStop(){const t=this.hass.states[this._config.entity],i="playing"!==t.state?"media_play":(0,o.$)(t,u.vj.PAUSE)?"media_pause":"media_stop";this.hass.callService("media_player",i,{entity_id:this._config.entity})}_play(){this.hass.callService("media_player","media_play",{entity_id:this._config.entity})}_pause(){this.hass.callService("media_player","media_pause",{entity_id:this._config.entity})}_stop(){this.hass.callService("media_player","media_stop",{entity_id:this._config.entity})}_previousTrack(){this.hass.callService("media_player","media_previous_track",{entity_id:this._config.entity})}_nextTrack(){this.hass.callService("media_player","media_next_track",{entity_id:this._config.entity})}_toggleMute(){this.hass.callService("media_player","volume_mute",{entity_id:this._config.entity,is_volume_muted:!this.hass.states[this._config.entity].attributes.is_volume_muted})}_volumeDown(){this.hass.callService("media_player","volume_down",{entity_id:this._config.entity})}_volumeUp(){this.hass.callService("media_player","volume_up",{entity_id:this._config.entity})}_selectedValueChanged(t){this.hass.callService("media_player","volume_set",{entity_id:this._config.entity,volume_level:t.target.value/100})}constructor(...t){super(...t),this._narrow=!1,this._veryNarrow=!1}}O.styles=s.AH`:host{display:block}.flex{display:flex;align-items:center;justify-content:space-between}.volume{display:flex;align-items:center;flex-grow:2;flex-shrink:2}.controls{white-space:nowrap;direction:ltr}ha-slider{flex-grow:2;flex-shrink:2;width:100%;margin:1px}`,(0,a.Cg)([(0,n.MZ)({attribute:!1})],O.prototype,"hass",void 0),(0,a.Cg)([(0,n.wk)()],O.prototype,"_config",void 0),(0,a.Cg)([(0,n.wk)()],O.prototype,"_narrow",void 0),(0,a.Cg)([(0,n.wk)()],O.prototype,"_veryNarrow",void 0),O=(0,a.Cg)([(0,n.EM)("hui-media-player-entity-row")],O),i()}catch(t){i(t)}})},92055(t,i,e){e.a(t,async function(t,i){try{var a=e(62826),s=e(5124),n=e(22441),r=e(25240),o=e(18350),c=e(22675),h=e(34884),l=e(99936),d=e(784),u=e(79757),p=e(85979),g=t([r,o,u,p]);[r,o,u,p]=g.then?(await g)():g;class f extends s.WF{setConfig(t){if(!t)throw new Error("Invalid configuration");this._config=t}shouldUpdate(t){return(0,d.LX)(this,t)}render(){if(!this._config||!this.hass)return s.s6;const t=this.hass.states[this._config.entity];return t?s.qy` <hui-generic-entity-row .hass="${this.hass}" .config="${this._config}"> <ha-button appearance="plain" size="small" @click="${this._callService}" .disabled="${t.state===c.Hh}" class="text-content"> ${this._config.action_name||this.hass.localize("ui.card.scene.activate")} </ha-button> </hui-generic-entity-row> `:s.qy` <hui-warning .hass="${this.hass}"> ${(0,p.j)(this.hass,this._config.entity)} </hui-warning> `}async _callService(t){t.stopPropagation(),this._config?.confirmation&&!await(0,l.f)(this,this.hass,this._config.confirmation,this._config.action_name||this.hass.localize("ui.card.scene.activate"))||(0,h.C6)(this.hass,this._config.entity)}}f.styles=s.AH`ha-button{margin-right:-.57em;margin-inline-end:-.57em;margin-inline-start:initial}`,(0,a.Cg)([(0,n.MZ)({attribute:!1})],f.prototype,"hass",void 0),(0,a.Cg)([(0,n.wk)()],f.prototype,"_config",void 0),f=(0,a.Cg)([(0,n.EM)("hui-scene-entity-row")],f),i()}catch(t){i(t)}})},19396(t,i,e){e.a(t,async function(t,i){try{var a=e(62826),s=e(5124),n=e(22441),r=e(18350),o=e(22675),c=e(84025),h=e(42269),l=e(99936),d=e(784),u=e(79757),p=e(85979),g=t([r,u,p]);[r,u,p]=g.then?(await g)():g;class f extends s.WF{setConfig(t){if(!t)throw new Error("Invalid configuration");this._config=t}shouldUpdate(t){return(0,d.LX)(this,t)}render(){if(!this._config||!this.hass)return s.s6;const t=this.hass.states[this._config.entity];return t?s.qy` <hui-generic-entity-row .hass="${this.hass}" .config="${this._config}"> ${"on"===t.state?s.qy`<ha-button appearance="plain" size="small" variant="danger" @click="${this._cancelScript}"> ${"single"!==t.attributes.mode&&t.attributes.current&&t.attributes.current>0?this.hass.localize("ui.card.script.cancel_multiple",{number:t.attributes.current}):this.hass.localize("ui.card.script.cancel")} </ha-button>`:s.s6} ${"off"===t.state||t.attributes.max?s.qy`<ha-button appearance="plain" size="small" @click="${this._runScript}" .disabled="${t.state===o.Hh||!(0,c.Q2)(t)}"> ${this._config.action_name||this.hass.localize("ui.card.script.run")} </ha-button>`:s.s6} </hui-generic-entity-row> `:s.qy` <hui-warning .hass="${this.hass}"> ${(0,p.j)(this.hass,this._config.entity)} </hui-warning> `}_cancelScript(t){t.stopPropagation(),this._callService("turn_off")}async _runScript(t){t.stopPropagation(),(0,c.TP)(this.hass,this._config.entity)?(0,h.p)(this,{entityId:this._config.entity}):this._config?.confirmation&&!await(0,l.f)(this,this.hass,this._config.confirmation,this._config.action_name||this.hass.localize("ui.card.script.run"))||this._callService("turn_on")}_callService(t){this.hass.callService("script",t,{entity_id:this._config.entity})}}f.styles=s.AH`ha-button:last-child{margin-right:-.57em;margin-inline-end:-.57em;margin-inline-start:initial}`,(0,a.Cg)([(0,n.MZ)({attribute:!1})],f.prototype,"hass",void 0),(0,a.Cg)([(0,n.wk)()],f.prototype,"_config",void 0),f=(0,a.Cg)([(0,n.EM)("hui-script-entity-row")],f),i()}catch(t){i(t)}})},74323(t,i,e){e.a(t,async function(t,i){try{e(74423);var a=e(62826),s=e(5124),n=e(22441),r=e(22675),o=e(64808),c=e(784),h=e(79757),l=e(62688),d=e(85979),u=t([h,l,d]);[h,l,d]=u.then?(await u)():u;class p extends s.WF{setConfig(t){if(!t)throw new Error("Invalid configuration");this._config=t}shouldUpdate(t){return(0,c.LX)(this,t)}render(){if(!this._config||!this.hass)return s.s6;const t=this.hass.states[this._config.entity];return t?s.qy` <hui-generic-entity-row .hass="${this.hass}" .config="${this._config}"> ${o.G6.includes(t.attributes.device_class)&&t.state!==r.Hh&&t.state!==r.HV?s.qy` <hui-timestamp-display .hass="${this.hass}" .ts="${new Date(t.state)}" .format="${this._config.format??("uptime"===t.attributes.device_class?"total":void 0)}" capitalize></hui-timestamp-display> `:this.hass.formatEntityState(t)} </hui-generic-entity-row> `:s.qy` <hui-warning .hass="${this.hass}"> ${(0,d.j)(this.hass,this._config.entity)} </hui-warning> `}}(0,a.Cg)([(0,n.MZ)({attribute:!1})],p.prototype,"hass",void 0),(0,a.Cg)([(0,n.wk)()],p.prototype,"_config",void 0),p=(0,a.Cg)([(0,n.EM)("hui-sensor-entity-row")],p),i()}catch(t){i(t)}})},51199(t,i,e){e.a(t,async function(t,i){try{var a=e(62826),s=e(5124),n=e(22441),r=e(784),o=e(79757),c=e(85979),h=t([o,c]);[o,c]=h.then?(await h)():h;class l extends s.WF{setConfig(t){if(!t)throw new Error("Invalid configuration");this._config=t}shouldUpdate(t){return(0,r.LX)(this,t)}render(){if(!this._config||!this.hass)return s.s6;const t=this.hass.states[this._config.entity];return t?s.qy` <hui-generic-entity-row .hass="${this.hass}" .config="${this._config}"> ${this.hass.formatEntityState(t)} </hui-generic-entity-row> `:s.qy` <hui-warning .hass="${this.hass}"> ${(0,c.j)(this.hass,this._config.entity)} </hui-warning> `}}l.styles=s.AH`div{text-align:right}`,(0,a.Cg)([(0,n.MZ)({attribute:!1})],l.prototype,"hass",void 0),(0,a.Cg)([(0,n.wk)()],l.prototype,"_config",void 0),l=(0,a.Cg)([(0,n.EM)("hui-simple-entity-row")],l),i()}catch(t){i(t)}})},43721(t,i,e){e.a(t,async function(t,i){try{var a=e(62826),s=e(5124),n=e(22441),r=e(25240),o=e(22675),c=e(784),h=e(79757),l=e(85979),d=t([r,h,l]);[r,h,l]=d.then?(await d)():d;class u extends s.WF{setConfig(t){if(!t)throw new Error("Invalid configuration");this._config=t}shouldUpdate(t){return(0,c.LX)(this,t)}render(){if(!this._config||!this.hass)return s.s6;const t=this.hass.states[this._config.entity];if(!t)return s.qy` <hui-warning .hass="${this.hass}"> ${(0,l.j)(this.hass,this._config.entity)} </hui-warning> `;const i="on"===t.state||"off"===t.state||t.state===o.Hh||t.state===o.HV;return s.qy` <hui-generic-entity-row .hass="${this.hass}" .config="${this._config}" .catchInteraction="${!i}"> ${i?s.qy` <ha-entity-toggle .hass="${this.hass}" .stateObj="${t}"></ha-entity-toggle> `:s.qy` <div class="text-content"> ${this.hass.formatEntityState(t)} </div> `} </hui-generic-entity-row> `}}(0,a.Cg)([(0,n.MZ)({attribute:!1})],u.prototype,"hass",void 0),(0,a.Cg)([(0,n.wk)()],u.prototype,"_config",void 0),u=(0,a.Cg)([(0,n.EM)("hui-toggle-entity-row")],u),i()}catch(t){i(t)}})},65509(t,i,e){e.a(t,async function(t,a){try{e.r(i);var s=e(62826),n=e(5124),r=e(22441),o=e(80785),c=(e(44328),e(784)),h=e(79757),l=e(62688),d=e(85979),u=t([h,l,d]);[h,l,d]=u.then?(await u)():u;class p extends n.WF{setConfig(t){if(!t)throw new Error("Invalid configuration");if(!t.entity)throw new Error("Entity not specified");if(!t.attribute)throw new Error("Attribute not specified");this._config=t}shouldUpdate(t){return(0,c.LX)(this,t)}render(){if(!this._config||!this.hass)return n.s6;const t=this.hass.states[this._config.entity];if(!t)return n.qy` <hui-warning .hass="${this.hass}"> ${(0,d.j)(this.hass,this._config.entity)} </hui-warning> `;const i=t.attributes[this._config.attribute];let e;return this._config.format&&(e=new Date(i)),n.qy` <hui-generic-entity-row .hass="${this.hass}" .config="${this._config}"> ${this._config.prefix} ${this._config.format&&(0,o.A)(e)?n.qy` <hui-timestamp-display .hass="${this.hass}" .ts="${e}" .format="${this._config.format}" capitalize></hui-timestamp-display>`:void 0!==i?n.qy` <ha-attribute-value .hideUnit="${void 0!==this._config.suffix&&""!==this._config.suffix}" .hass="${this.hass}" .stateObj="${t}" .attribute="${this._config.attribute}"> </ha-attribute-value> `:"—"} ${this._config.suffix} </hui-generic-entity-row> `}}p.styles=n.AH`div{text-align:right}`,(0,s.Cg)([(0,r.MZ)({attribute:!1})],p.prototype,"hass",void 0),(0,s.Cg)([(0,r.wk)()],p.prototype,"_config",void 0),p=(0,s.Cg)([(0,r.EM)("hui-attribute-row")],p),a()}catch(t){a(t)}})},21659(t,i,e){e.a(t,async function(t,a){try{e.d(i,{t:()=>_});var s=e(62826),n=e(5124),r=e(22441),o=e(46190),c=e(71727),h=e(18350),l=e(93367),d=e(19037),u=e(22064),p=e(97176),g=t([h,l]);[h,l]=g.then?(await g)():g;const f={state:"unavailable",attributes:{friendly_name:""},entity_id:"___.empty",context:{id:"",parent_id:null,user_id:null},last_changed:"",last_updated:""};class _ extends n.WF{setConfig(t){if(!t)throw new Error("Invalid configuration");if(!t.name&&!t.entity)throw new Error("No name and no entity specified");this._config={tap_action:{action:t.entity&&o.FD.has((0,c.m)(t.entity))?"toggle":"more-info"},hold_action:{action:"more-info"},...t}}render(){if(!this._config)return n.s6;const t=this._config.entity&&this.hass?this.hass.states[this._config.entity]:void 0,i=this.hass.formatEntityName(t||f,this._config.name);return n.qy` <ha-state-icon .icon="${this._config.icon}" .stateObj="${t}"> </ha-state-icon> <div class="flex"> <div .title="${i}">${i}</div> <ha-button appearance="filled" size="small" @action="${this._handleAction}" .actionHandler="${(0,d.T)({hasHold:(0,p.h)(this._config.hold_action),hasDoubleClick:(0,p.h)(this._config.double_tap_action)})}">${this._config.action_name?this._config.action_name:this.hass.localize("ui.card.service.run")}</ha-button> </div> `}_handleAction(t){(0,u.$)(this,this.hass,this._config,t.detail.action)}}_.styles=n.AH`:host{display:flex;align-items:center}ha-state-icon{padding:8px;color:var(--state-icon-color)}.flex{flex:1;overflow:hidden;margin-left:16px;margin-inline-start:16px;margin-inline-end:initial;display:flex;justify-content:space-between;align-items:center}.flex div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}`,(0,s.Cg)([(0,r.wk)()],_.prototype,"_config",void 0),_=(0,s.Cg)([(0,r.EM)("hui-button-row")],_),a()}catch(t){a(t)}})},82525(t,i,e){e.a(t,async function(t,i){try{var a=e(62826),s=e(22441),n=e(21659),r=t([n]);n=(r.then?(await r)():r)[0];class o extends n.t{setConfig(t){const i=t;if(!i)throw new Error("Invalid configuration");if(!i.name)throw new Error("No name specified");if(!i.action&&!i.service)throw new Error("No action specified");super.setConfig({tap_action:{action:"perform-action",perform_action:i.action||i.service,data:i.data||i.service_data},...i,type:"button"})}}o=(0,a.Cg)([(0,s.EM)("hui-call-service-row")],o),i()}catch(t){i(t)}})}};