UNPKG

iobroker.lovelace

Version:

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

7 lines 56 kB
"use strict";(self.rspackChunkhome_assistant_frontend=self.rspackChunkhome_assistant_frontend||[]).push([[89765],{91069:function(t,e,a){a.a(t,async function(t,i){try{a.d(e,{EO:function(){return w},Yq:function(){return C},_U:function(){return $},eE:function(){return k},fU:function(){return x},ol:function(){return b},xo:function(){return f}});var s=a(78016),r=a(31810),n=a(87950),o=a(81977),l=a(36307),h=a(35932),d=a(73983),c=a(6946),u=a(92913),p=a(83339),v=a(77972),m=a(31886),_=a(46927),y=t([m]);m=(y.then?(await y)():y)[0];const g=(t,e,a,i)=>{const s=a(new m.BB(t,e),i);return s instanceof Date?new Date(s.getTime()):s},b=(t,e,a,i,s)=>a.time_zone===_.Wj.server?g(t,i.time_zone,e,s):e(t,s),f=(t,e,a,i,s)=>a.time_zone===_.Wj.server?g(t,i.time_zone,e,s):e(t,s),w=(t,e,a,i,s)=>f(t,a,i,s,i.time_zone===_.Wj.server?new m.BB(e,s.time_zone):e),k=(t,e,a,i,m)=>{let _,y;if(f(t,s.e,i,m)&&f(e,r.c,i,m)){const s=(w(e,t,n.W,i,m)+1)*(a?1:-1);_=b(t,o.P,i,m,s),y=b(b(e,o.P,i,m,s),l.p,i,m)}else if(f(t,t=>(0,h.o)(t).getMilliseconds()===t.getMilliseconds(),i,m)&&f(e,t=>(0,d.D)(t).getMilliseconds()===t.getMilliseconds(),i,m)){const s=(w(e,t,c.c,i,m)+1)*(a?1:-1);_=b(t,u.f,i,m,s),y=b(e,u.f,i,m,s)}else{const s=w(e,t,p.b,i,m)*(a?1:-1);_=b(t,v.A,i,m,s),y=b(e,v.A,i,m,s)}return{start:_,end:y}},$=(t,e)=>{const a=new m.BB(t,e);return new Date(a.getTime())},C=(t,e)=>new m.BB(t,e).toISOString().split("T")[0],x=(t,e)=>new m.BB(t,e).toISOString().split("T")[1].split(".")[0];i()}catch(g){i(g)}})},81816:function(t,e,a){a.d(e,{aH:function(){return n},cx:function(){return o},es:function(){return l}});var i=a(37981),s=a(28978),r=a(79461);const n=(t,e,a)=>{const i=e[t.entity_id];return i?o(i,a):(0,s.u)(t)},o=(t,e,a)=>{const n=t.name||("original_name"in t&&null!=t.original_name?String(t.original_name):void 0),o=t.device_id?e[t.device_id]:void 0;if(!o)return n||(a?(0,s.u)(a):void 0);const l=(0,i.xn)(o);return l!==n?l&&n&&(0,r.p)(n,l)||n:void 0},l=(t,e,a)=>!n(t,e,a)},74705:function(t,e,a){a.d(e,{Bj:function(){return p},Cf:function(){return u},uU:function(){return c}});a(18111),a(81148),a(22489),a(61701),a(13579),a(62953);if(66649!=a.j)var i=a(44537);var s=a(15638),r=a(65522),n=a(37981),o=a(81816),l=a(55931),h=a(28978),d=a(28455);const c=(t,e,a,s,r,n,l)=>{var d;if("string"==typeof e)return e;if(!e)return(0,h.u)(t);let c=(0,i.e)(e);const p=null!==(d=null==l?void 0:l.separator)&&void 0!==d?d:" ";if(c.every(t=>"text"===t.type))return c.map(t=>t.text).join(p);if((0,o.es)(t,a,s)){c.some(t=>"device"===t.type)||(c=c.map(t=>"entity"===t.type?{type:"device"}:t))}const v=u(t,c,a,s,r,n);return 1===v.length?v[0]||"":v.filter(t=>t).join(p)},u=(t,e,a,i,s,h)=>{const{device:c,area:u,floor:p}=(0,d.ln)(t,a,i,s,h);return e.map(e=>{switch(e.type){case"entity":return(0,o.aH)(t,a,i);case"device":return c?(0,n.xn)(c):void 0;case"area":return u?(0,r.A)(u):void 0;case"floor":return p?(0,l.X)(p):void 0;case"text":return e.text;default:return""}})},p=(t,e)=>{const[a,i,r]=u(e,[{type:"entity"},{type:"device"},{type:"area"}],t.entities,t.devices,t.areas,t.floors),n=(0,s.qC)(t.language,t.translationMetadata.translations);return{primary:a||i||e.entity_id,secondary:[r,a?i:void 0].filter(Boolean).join(n?" ◂ ":" ▸ ")||void 0}}},78649:function(t,e,a){a.d(e,{n:function(){return s}});a(27495);const i=/^(\w+)\.(\w+)$/,s=t=>i.test(t)},5745:function(t,e,a){var i=a(40445),s=a(99731),r=a(67576);class n extends s.Y{}n=(0,i.Cg)([(0,r.EM)("ha-chip-set")],n)},82474:function(t,e,a){a.a(t,async function(t,e){try{a(13609),a(18111),a(20116),a(61701),a(3362),a(62953);var i=a(40445),s=a(5124),r=a(67576),n=a(22786),o=a(1087),l=a(74705),h=a(78649),d=a(53756),c=a(95350),u=a(24367),p=a(19711),v=(a(75064),a(38508)),m=(a(47680),a(67094),a(74281)),_=t([v,m]);[v,m]=_.then?(await _)():_;let y,g,b,f,w,k,$,C,x,z,q,E,D,M,I,S=t=>t;const T="M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z",R="M11,13.5V21.5H3V13.5H11M12,2L17.5,11H6.5L12,2M17.5,13C20,13 22,15 22,17.5C22,20 20,22 17.5,22C15,22 13,20 13,17.5C13,15 15,13 17.5,13Z",A="___create-new-entity___";class Z extends s.WF{willUpdate(t){var e;this._pendingEntityId&&t.has("hass")&&this.hass.states!==(null===(e=t.get("hass"))||void 0===e?void 0:e.states)&&this.hass.states[this._pendingEntityId]&&(this._setValue(this._pendingEntityId),this._pendingEntityId=void 0)}firstUpdated(t){super.firstUpdated(t),this.hass.loadBackendTranslation("title")}_findExtraOption(t){var e;return t?null===(e=this.extraOptions)||void 0===e?void 0:e.find(e=>e.id===t):void 0}_renderExtraOptionStart(t){const e=t.entity_id?this.hass.states[t.entity_id]:void 0;return e?(0,s.qy)(y||(y=S` <state-badge slot="start" .stateObj="${0}" .hass="${0}"></state-badge> `),e,this.hass):t.icon_path?(0,s.qy)(g||(g=S` <ha-svg-icon slot="start" .path="${0}" style="margin:0 4px"></ha-svg-icon> `),t.icon_path):t.icon?(0,s.qy)(b||(b=S`<ha-icon slot="start" .icon="${0}"></ha-icon>`),t.icon):s.s6}get _showEntityId(){var t;return this.showEntityId||(null===(t=this.hass.userData)||void 0===t?void 0:t.showEntityIdPicker)}_shouldHideClearIcon(){var t;return!(null===(t=this._findExtraOption(this.value))||void 0===t||!t.hide_clear)}render(){var t,e;const a=null!==(t=this.placeholder)&&void 0!==t?t:this.hass.localize("ui.components.entity.entity-picker.placeholder");return(0,s.qy)(f||(f=S` <ha-generic-picker .hass="${0}" .disabled="${0}" .autofocus="${0}" .allowCustomValue="${0}" .required="${0}" .label="${0}" .placeholder="${0}" .helper="${0}" .value="${0}" .searchLabel="${0}" .notFoundLabel="${0}" .rowRenderer="${0}" .getItems="${0}" .getAdditionalItems="${0}" .hideClearIcon="${0}" .searchFn="${0}" .valueRenderer="${0}" .searchKeys="${0}" use-top-label .addButtonLabel="${0}" .unknownItemText="${0}" @value-changed="${0}"> </ha-generic-picker> `),this.hass,this.disabled,this.autofocus,this.allowCustomEntity,this.required,this.label,a,this.helper,this.addButton?void 0:this.value,this.searchLabel,this._notFoundLabel,this._rowRenderer,this._getItems,this._getAdditionalItems,this.hideClearIcon||this._shouldHideClearIcon(),this._searchFn,this._valueRenderer,d.t,this.addButton?null!==(e=this.addButtonLabel)&&void 0!==e?e:this.hass.localize("ui.components.entity.entity-picker.add"):void 0,this.hass.localize("ui.components.entity.entity-picker.unknown"),this._valueChanged)}async open(){var t;await this.updateComplete,await(null===(t=this._picker)||void 0===t?void 0:t.open())}_valueChanged(t){t.stopPropagation();const e=t.detail.value;if(e){if(e.startsWith(A)){const t=e.substring(A.length);return void(0,p.$)(this,{domain:t,dialogClosedCallback:t=>{t.entityId&&(this.hass.states[t.entityId]?this._setValue(t.entityId):this._pendingEntityId=t.entityId)}})}((0,h.n)(e)||this._findExtraOption(e))&&this._setValue(e)}else this._setValue(void 0)}_setValue(t){this.value=t,(0,o.r)(this,"value-changed",{value:t}),(0,o.r)(this,"change")}constructor(...t){super(...t),this.autofocus=!1,this.disabled=!1,this.required=!1,this.showEntityId=!1,this.hideClearIcon=!1,this.addButton=!1,this._valueRenderer=t=>{const e=t||"",a=this._findExtraOption(e);if(a)return(0,s.qy)(w||(w=S` ${0} <span slot="headline">${0}</span> ${0} `),this._renderExtraOptionStart(a),a.primary,a.secondary?(0,s.qy)(k||(k=S`<span slot="supporting-text">${0}</span>`),a.secondary):s.s6);const i=this.hass.states[e];if(!i)return(0,s.qy)($||($=S` <ha-svg-icon slot="start" .path="${0}" style="margin:0 4px"></ha-svg-icon> <span slot="headline">${0}</span> `),R,e);const{primary:r,secondary:n}=(0,l.Bj)(this.hass,i);return(0,s.qy)(C||(C=S` <state-badge .hass="${0}" .stateObj="${0}" slot="start"></state-badge> <span slot="headline">${0}</span> <span slot="supporting-text">${0}</span> `),this.hass,i,r,n)},this._rowRenderer=(t,e)=>{const a=this._showEntityId;return(0,s.qy)(x||(x=S` <ha-combo-box-item type="button" compact="compact" .borderTop="${0}"> ${0} <span slot="headline">${0}</span> ${0} ${0} ${0} </ha-combo-box-item> `),0!==e,t.icon_path?(0,s.qy)(z||(z=S` <ha-svg-icon slot="start" style="margin:0 4px" .path="${0}"></ha-svg-icon> `),t.icon_path):(0,s.qy)(q||(q=S` <state-badge slot="start" .stateObj="${0}" .hass="${0}"></state-badge> `),t.stateObj,this.hass),t.primary,t.secondary?(0,s.qy)(E||(E=S`<span slot="supporting-text">${0}</span>`),t.secondary):s.s6,t.stateObj&&a?(0,s.qy)(D||(D=S` <span slot="supporting-text" class="code"> ${0} </span> `),t.stateObj.entity_id):s.s6,t.domain_name&&!a?(0,s.qy)(M||(M=S` <div slot="trailing-supporting-text" class="domain"> ${0} </div> `),t.domain_name):s.s6)},this._getAdditionalItems=()=>this._getCreateItems(this.hass.localize,this.createDomains),this._getCreateItems=(0,n.A)((t,e)=>null!=e&&e.length?(this.hass.loadFragmentTranslation("config"),e.map(e=>{const a=t("ui.components.entity.entity-picker.create_helper",{domain:(0,u.z)(e)?t(`ui.panel.config.helpers.types.${e}`)||e:(0,c.p$)(t,e)});return{id:A+e,primary:a,secondary:t("ui.components.entity.entity-picker.new_entity"),icon_path:T}})):[]),this._getEntitiesMemoized=(0,n.A)(d.w),this._getItems=()=>{var t;const e=this._getEntitiesMemoized(this.hass,this.includeDomains,this.excludeDomains,this.entityFilter,this.includeDeviceClasses,this.includeUnitOfMeasurement,this.includeEntities,this.excludeEntities,this.value);if(null!==(t=this.extraOptions)&&void 0!==t&&t.length){return[...this.extraOptions.map(t=>Object.assign(Object.assign({},t),{},{stateObj:t.entity_id?this.hass.states[t.entity_id]:void 0})),...e]}return e},this._searchFn=(t,e)=>{const a=e.findIndex(e=>{var a;return(null===(a=e.stateObj)||void 0===a?void 0:a.entity_id)===t});if(-1===a)return e;const[i]=e.splice(a,1);return e.unshift(i),e},this._notFoundLabel=t=>this.hass.localize("ui.components.entity.entity-picker.no_match",{term:(0,s.qy)(I||(I=S`<b>‘${0}’</b>`),t)})}}(0,i.Cg)([(0,r.MZ)({attribute:!1})],Z.prototype,"hass",void 0),(0,i.Cg)([(0,r.MZ)({type:Boolean})],Z.prototype,"autofocus",void 0),(0,i.Cg)([(0,r.MZ)({type:Boolean})],Z.prototype,"disabled",void 0),(0,i.Cg)([(0,r.MZ)({type:Boolean})],Z.prototype,"required",void 0),(0,i.Cg)([(0,r.MZ)({type:Boolean,attribute:"allow-custom-entity"})],Z.prototype,"allowCustomEntity",void 0),(0,i.Cg)([(0,r.MZ)({type:Boolean,attribute:"show-entity-id"})],Z.prototype,"showEntityId",void 0),(0,i.Cg)([(0,r.MZ)()],Z.prototype,"label",void 0),(0,i.Cg)([(0,r.MZ)()],Z.prototype,"value",void 0),(0,i.Cg)([(0,r.MZ)()],Z.prototype,"helper",void 0),(0,i.Cg)([(0,r.MZ)()],Z.prototype,"placeholder",void 0),(0,i.Cg)([(0,r.MZ)({type:String,attribute:"search-label"})],Z.prototype,"searchLabel",void 0),(0,i.Cg)([(0,r.MZ)({attribute:!1})],Z.prototype,"createDomains",void 0),(0,i.Cg)([(0,r.MZ)({type:Array,attribute:"include-domains"})],Z.prototype,"includeDomains",void 0),(0,i.Cg)([(0,r.MZ)({type:Array,attribute:"exclude-domains"})],Z.prototype,"excludeDomains",void 0),(0,i.Cg)([(0,r.MZ)({type:Array,attribute:"include-device-classes"})],Z.prototype,"includeDeviceClasses",void 0),(0,i.Cg)([(0,r.MZ)({type:Array,attribute:"include-unit-of-measurement"})],Z.prototype,"includeUnitOfMeasurement",void 0),(0,i.Cg)([(0,r.MZ)({type:Array,attribute:"include-entities"})],Z.prototype,"includeEntities",void 0),(0,i.Cg)([(0,r.MZ)({type:Array,attribute:"exclude-entities"})],Z.prototype,"excludeEntities",void 0),(0,i.Cg)([(0,r.MZ)({attribute:!1})],Z.prototype,"entityFilter",void 0),(0,i.Cg)([(0,r.MZ)({attribute:!1})],Z.prototype,"extraOptions",void 0),(0,i.Cg)([(0,r.MZ)({attribute:"hide-clear-icon",type:Boolean})],Z.prototype,"hideClearIcon",void 0),(0,i.Cg)([(0,r.MZ)({attribute:"add-button",type:Boolean})],Z.prototype,"addButton",void 0),(0,i.Cg)([(0,r.MZ)({attribute:"add-button-label"})],Z.prototype,"addButtonLabel",void 0),(0,i.Cg)([(0,r.P)("ha-generic-picker")],Z.prototype,"_picker",void 0),(0,i.Cg)([(0,r.wk)()],Z.prototype,"_pendingEntityId",void 0),Z=(0,i.Cg)([(0,r.EM)("ha-entity-picker")],Z),e()}catch(y){e(y)}})},99611:function(t,e,a){a.a(t,async function(t,e){try{a(18111),a(13579),a(3362),a(17642),a(58004),a(33853),a(45876),a(32475),a(15024),a(31698),a(62953);var i=a(40445),s=a(1126),r=a(35211),n=a(5124),o=a(67576),l=a(1087),h=a(60353),d=a(22792),c=a(59992),u=a(14503),p=a(22348),v=t([s,c]);[s,c]=v.then?(await v)():v;let m,_,y=t=>t;const g=300,b=new Set(["ha-control-slider","ha-slider","ha-control-switch","ha-control-circular-slider","ha-hs-color-picker","ha-map","ha-more-info-control-select-container","ha-filter-chip"]),f=new Set(["volume-slider-container","forecast"]);class w extends((0,c.V)(n.WF)){get scrollableElement(){return this._bodyElement}connectedCallback(){super.connectedCallback(),this.addEventListener("slider-interaction-start",this._handleSliderInteractionStart,{capture:!0}),this.addEventListener("slider-interaction-stop",this._handleSliderInteractionStop,{capture:!0})}updated(t){super.updated(t),t.has("open")&&(this._drawerOpen=this.open)}render(){return(0,n.qy)(m||(m=y` <wa-drawer id="drawer" placement="bottom" .open="${0}" .lightDismiss="${0}" .ariaLabelledby="${0}" .ariaDescribedby="${0}" @keydown="${0}" @wa-show="${0}" @wa-after-show="${0}" @wa-hide="${0}" @wa-after-hide="${0}" @click="${0}" without-header @touchstart="${0}"> <div class="handle-wrapper" aria-hidden="true"> <div class="handle"></div> </div> <slot name="header"></slot> <div class="content-wrapper"> <div id="body" class="body ha-scrollbar"> <slot></slot> </div> ${0} </div> <slot name="footer"></slot> </wa-drawer> `),this._drawerOpen,!this.preventScrimClose,this.ariaLabelledBy,this.ariaDescribedBy,this._handleKeyDown,this._handleShow,this._handleAfterShow,this._handleHide,this._handleAfterHide,this._handleCloseAction,this._handleTouchStart,this.renderScrollableFades())}_startResizing(t){document.addEventListener("touchmove",this._handleTouchMove,{passive:!1}),document.addEventListener("touchend",this._handleTouchEnd),document.addEventListener("touchcancel",this._handleTouchEnd),this._gestureRecognizer.start(t)}_animateSnapBack(){this.style.setProperty("--dialog-transition",`transform ${g}ms ease-out`),this.style.removeProperty("--dialog-transform"),setTimeout(()=>{this.style.removeProperty("--dialog-transition")},g)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("slider-interaction-start",this._handleSliderInteractionStart,{capture:!0}),this.removeEventListener("slider-interaction-stop",this._handleSliderInteractionStop,{capture:!0}),this._unregisterResizeHandlers(),this._isDragging=!1}static get styles(){return[...super.styles,u.dp,(0,n.AH)(_||(_=y`wa-drawer{--wa-color-surface-raised:transparent;--spacing:0;--size:var(--ha-bottom-sheet-height, auto);--show-duration:${0}ms;--hide-duration:${0}ms}wa-drawer::part(dialog){max-height:min(var(--ha-bottom-sheet-max-height,90vh),calc(100vh - max(var(--safe-area-inset-top),48px)));max-height:min(var(--ha-bottom-sheet-max-height,90dvh),calc(100dvh - max(var(--safe-area-inset-top),48px)));align-items:center;transform:var(--dialog-transform);transition:var(--dialog-transition)}@media (prefers-reduced-motion:reduce){wa-drawer{--wa-color-surface-raised:transparent;--spacing:0;--size:var(--ha-bottom-sheet-height, auto);--show-duration:1ms;--hide-duration:1ms}wa-drawer::part(dialog){transition:1ms}}wa-drawer::part(dialog)::backdrop{-webkit-backdrop-filter:var(--ha-bottom-sheet-scrim-backdrop-filter,var(--ha-dialog-scrim-backdrop-filter,var(--dialog-backdrop-filter,none)));backdrop-filter:var(--ha-bottom-sheet-scrim-backdrop-filter,var(--ha-dialog-scrim-backdrop-filter,var(--dialog-backdrop-filter,none)));background-color:var(--ha-bottom-sheet-scrim-color,var(--mdc-dialog-scrim-color,none))}wa-drawer::part(body){max-width:var(--ha-bottom-sheet-max-width);width:100%;position:relative;border-top-left-radius:var(--ha-bottom-sheet-border-radius,var(--ha-dialog-border-radius,var(--ha-border-radius-2xl)));border-top-right-radius:var(--ha-bottom-sheet-border-radius,var(--ha-dialog-border-radius,var(--ha-border-radius-2xl)));background-color:var(--ha-bottom-sheet-surface-background,var(--ha-dialog-surface-background,var(--card-background-color,var(--ha-color-surface-default))));-webkit-backdrop-filter:var(--ha-bottom-sheet-surface-backdrop-filter,var(--ha-dialog-surface-backdrop-filter,none));backdrop-filter:var(--ha-bottom-sheet-surface-backdrop-filter,var(--ha-dialog-surface-backdrop-filter,none));padding:var(--ha-bottom-sheet-padding,0 var(--safe-area-inset-right) var(--safe-area-inset-bottom) var(--safe-area-inset-left))}:host([flexcontent]) wa-drawer::part(body){display:flex;flex-direction:column}:host([prevent-scrim-close]) .handle-wrapper{display:none}.handle-wrapper{position:absolute;top:0;inset-inline-start:0;width:100%;padding-bottom:2px;display:flex;justify-content:center;align-items:center;pointer-events:none;z-index:1}.handle-wrapper .handle{height:16px;width:200px;display:flex;justify-content:center;align-items:center}.handle-wrapper .handle::after{content:"";border-radius:var(--ha-border-radius-md);height:4px;background:var(--ha-bottom-sheet-handle-color,var(--divider-color));width:40px}.content-wrapper{position:relative;flex:1;display:flex;flex-direction:column;min-height:0}.body{padding:var(--ha-bottom-sheet-content-padding,0);box-sizing:border-box}:host([flexcontent]) .body{flex:1;max-width:100%;display:flex;flex-direction:column;padding:var(--ha-bottom-sheet-content-padding,var(--ha-bottom-sheet-padding,0 var(--safe-area-inset-right) var(--safe-area-inset-bottom) var(--safe-area-inset-left)));box-sizing:border-box}slot[name=footer]{display:block;padding:0}::slotted([slot=footer]){display:flex;padding:var(--ha-space-3) var(--ha-space-4) var(--ha-space-4) var(--ha-space-4);gap:var(--ha-space-3);justify-content:flex-end;align-items:center;width:100%;box-sizing:border-box}:host([flexcontent]) slot[name=footer]{flex-shrink:0}`),g,g)]}constructor(...t){super(...t),this.open=!1,this.flexContent=!1,this.preventScrimClose=!1,this._drawerOpen=!1,this._sliderInteractionActive=!1,this._gestureRecognizer=new h.u,this._isDragging=!1,this._escapePressed=!1,this._handleShow=async()=>{this._drawerOpen=!0,this.open=!0,(0,l.r)(this,"opened"),await this.updateComplete,requestAnimationFrame(()=>{var t;const e=this._autofocusElement;null!==(t=this._hassConfig)&&void 0!==t&&t.auth.external&&(0,p.V)(this._hassConfig.auth.external)?e&&(e.id||(e.id="ha-bottom-sheet-autofocus"),this._hassConfig.auth.external.fireMessage({type:"focus_element",payload:{element_id:e.id}})):null==e||e.focus()})},this._handleAfterShow=()=>{(0,l.r)(this,"after-show")},this._handleSliderInteractionStart=()=>{this._sliderInteractionActive=!0},this._handleSliderInteractionStop=()=>{this._sliderInteractionActive=!1},this._handleAfterHide=t=>{if(this._sliderInteractionActive)return this._drawerOpen=!0,void(this.open=!0);t.eventPhase===Event.AT_TARGET&&(this.open=!1,this._drawerOpen=!1,(0,l.r)(this,"closed"))},this._handleHide=t=>{if(t.eventPhase!==Event.AT_TARGET)return;const e=t.detail.source===t.target.drawer;if(this._sliderInteractionActive)return t.preventDefault(),this._drawerOpen=!0,this.open=!0,void(this._escapePressed=!1);this.preventScrimClose&&this._escapePressed&&e&&t.preventDefault(),this._escapePressed=!1},this._handleKeyDown=t=>{"Escape"===t.key&&(this._escapePressed=!0,this.preventScrimClose&&t.preventDefault(),t.stopPropagation(),t.currentTarget.open=!1)},this._handleCloseAction=t=>{t.composedPath().some(t=>t instanceof HTMLElement&&("close"===t.getAttribute("data-dialog")||"close"===t.getAttribute("data-drawer")))&&(this._drawerOpen=!1)},this._handleTouchStart=t=>{if(this.preventScrimClose)return;const e=t.composedPath();for(const a of e){if(a===this._drawer)break;if(a instanceof HTMLElement&&(a.scrollTop>0||b.has(a.localName)||Array.from(a.classList).some(t=>f.has(t))))return}t.stopPropagation(),this._startResizing(t.touches[0].clientY)},this._handleTouchMove=t=>{const e=t.touches[0].clientY,a=this._gestureRecognizer.move(e);a<0&&(t.preventDefault(),this._isDragging=!0,requestAnimationFrame(()=>{this._isDragging&&this.style.setProperty("--dialog-transform",`translateY(${-1*a}px)`)}))},this._handleTouchEnd=()=>{var t;this._unregisterResizeHandlers(),this._isDragging=!1;const e=this._gestureRecognizer.end();if(e.isSwipe)return void(e.isDownwardSwipe?this._drawerOpen=!1:this._animateSnapBack());const a=null===(t=this._drawer.shadowRoot)||void 0===t?void 0:t.querySelector('[part="body"]'),i=(null==a?void 0:a.offsetHeight)||0;i>0&&e.delta<0&&Math.abs(e.delta)>.5*i?this._drawerOpen=!1:this._animateSnapBack()},this._unregisterResizeHandlers=()=>{document.removeEventListener("touchmove",this._handleTouchMove),document.removeEventListener("touchend",this._handleTouchEnd),document.removeEventListener("touchcancel",this._handleTouchEnd)}}}(0,i.Cg)([(0,o.MZ)({attribute:"aria-labelledby"})],w.prototype,"ariaLabelledBy",void 0),(0,i.Cg)([(0,o.MZ)({attribute:"aria-describedby"})],w.prototype,"ariaDescribedBy",void 0),(0,i.Cg)([(0,o.MZ)({type:Boolean})],w.prototype,"open",void 0),(0,i.Cg)([(0,o.MZ)({type:Boolean,reflect:!0,attribute:"flexcontent"})],w.prototype,"flexContent",void 0),(0,i.Cg)([(0,o.MZ)({type:Boolean,reflect:!0,attribute:"prevent-scrim-close"})],w.prototype,"preventScrimClose",void 0),(0,i.Cg)([(0,o.wk)()],w.prototype,"_drawerOpen",void 0),(0,i.Cg)([(0,o.wk)()],w.prototype,"_sliderInteractionActive",void 0),(0,i.Cg)([(0,o.wk)(),(0,r.Fg)({context:d.WF,subscribe:!0})],w.prototype,"_hassConfig",void 0),(0,i.Cg)([(0,o.P)("#drawer")],w.prototype,"_drawer",void 0),(0,i.Cg)([(0,o.P)("#body")],w.prototype,"_bodyElement",void 0),(0,i.Cg)([(0,o.P)("[autofocus]")],w.prototype,"_autofocusElement",void 0),w=(0,i.Cg)([(0,o.EM)("ha-bottom-sheet")],w),e()}catch(m){e(m)}})},6:function(t,e,a){a(62953);var i=a(40445),s=a(68462),r=a(38627),n=a(5124),o=a(67576),l=a(6412),h=a(1087);let d,c,u=t=>t;class p 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(0,n.qy)(d||(d=u` <div class="mdc-form-field ${0}"> <slot></slot> <label class="mdc-label" @click="${0}"> <slot name="label">${0}</slot> </label> </div>`),(0,l.H)(t),this._labelClick,this.label)}_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}}p.styles=[r.R,(0,n.AH)(c||(c=u`: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,i.Cg)([(0,o.MZ)({type:Boolean,reflect:!0})],p.prototype,"disabled",void 0),p=(0,i.Cg)([(0,o.EM)("ha-formfield")],p)},59646:function(t,e,a){a.a(t,async function(t,e){try{a(62953);var i=a(40445),s=a(29344),r=a(5124),n=a(67576),o=a(88360),l=t([s]);s=(l.then?(await l)():l)[0];let h,d=t=>t;class c extends s.A{updated(t){super.updated(t),t.has("haptic")&&(this.haptic?this.addEventListener("change",this._forwardHaptic):this.removeEventListener("change",this._forwardHaptic))}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("change",this._forwardHaptic)}static get styles(){return[s.A.styles,(0,r.AH)(h||(h=d`:host{--wa-form-control-toggle-size:var(--ha-switch-size, 24px);--wa-form-control-required-content:var(
            --ha-switch-required-marker,
            var(--ha-input-required-marker, "*")
          );--wa-form-control-required-content-offset:var(
            --ha-switch-required-marker-offset,
            0.1rem
          );--thumb-size:var(--ha-switch-thumb-size, 18px);--width:var(--ha-switch-width, 48px)}label{position:relative;height:max(var(--thumb-size),var(--wa-form-control-toggle-size))}label::before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:100%;height:100%;min-width:var(--ha-switch-min-touch-size,40px);min-height:var(--ha-switch-min-touch-size,40px)}label.disabled::before{pointer-events:none}.switch{background-color:var(--ha-switch-background-color,var(--ha-color-fill-disabled-quiet-resting));border-color:var(--ha-switch-border-color,var(--ha-color-border-neutral-normal))}label:not(.disabled) .input:focus-visible~.switch,label:not(.disabled):hover .switch{background-color:var(--ha-switch-background-color-hover,var(--ha-switch-background-color,var(--ha-color-fill-disabled-quiet-hover)))}.checked .switch{background-color:var(--ha-switch-checked-background-color,var(--ha-color-fill-primary-normal-resting));border-color:var(--ha-switch-checked-border-color,var(--ha-color-border-primary-loud))}label:not(.disabled).checked .input:focus-visible~.switch,label:not(.disabled).checked:hover .switch{background-color:var(--ha-switch-checked-background-color-hover,var(--ha-switch-checked-background-color,var(--ha-color-fill-primary-normal-hover)));border-color:var(--ha-switch-checked-border-color-hover,var(--ha-switch-checked-border-color,var(--ha-color-border-primary-loud)))}.switch .thumb{background-color:var(--ha-switch-thumb-background-color,var(--ha-color-on-neutral-normal));border-color:var(--ha-switch-thumb-border-color,var(--ha-color-on-neutral-normal));border-style:var(--wa-form-control-border-style);border-width:var(--wa-form-control-border-width);box-shadow:var(--ha-switch-thumb-box-shadow,var(--ha-box-shadow-s))}label:not(.disabled) .input:focus-visible~.switch .thumb,label:not(.disabled):hover .switch .thumb{background-color:var(--ha-switch-thumb-background-color-hover,var(--ha-switch-thumb-background-color,var(--ha-color-on-neutral-normal)));border-color:var(--ha-switch-thumb-border-color-hover,var(--ha-switch-thumb-border-color,var(--ha-color-on-neutral-normal)))}.checked .switch .thumb{background-color:var(--ha-switch-checked-thumb-background-color,var(--ha-color-on-primary-normal));border-color:var(--ha-switch-checked-thumb-border-color,var(--ha-color-on-primary-normal))}label:not(.disabled).checked .input:focus-visible~.switch .thumb,label:not(.disabled).checked:hover .switch .thumb{background-color:var(--ha-switch-checked-thumb-background-color-hover,var(--ha-switch-checked-thumb-background-color,var(--ha-color-on-primary-normal)));border-color:var(--ha-switch-checked-thumb-border-color-hover,var(--ha-switch-checked-thumb-border-color,var(--ha-color-on-primary-normal)))}label.disabled{opacity:var(--ha-switch-disabled-opacity, .3);cursor:not-allowed}label:not(.disabled) .input:focus-visible~.switch .thumb{outline:0;outline-offset:none}label:not(.disabled) .input:focus-visible~.switch{outline:var(--wa-focus-ring);outline-offset:var(--wa-focus-ring-offset)}:host(:empty) slot.label{display:none}`))]}constructor(...t){super(...t),this.haptic=!1,this._forwardHaptic=()=>{(0,o.j)(this,"light")}}}(0,i.Cg)([(0,n.MZ)({type:Boolean})],c.prototype,"haptic",void 0),c=(0,i.Cg)([(0,n.EM)("ha-switch")],c),e()}catch(h){e(h)}})},56304:function(t,e,a){a.a(t,async function(t,e){try{a(3362),a(27495),a(62953),a(49255);var i=a(40445),s=a(99324),r=a(92070),n=a(5124),o=a(67576),l=a(6412),h=a(63672),d=a(57237),c=a(53305),u=t([s]);s=(u.then?(await u)():u)[0];let p,v,m,_,y=t=>t;class g extends((0,c.w)(n.WF)){get _formControl(){return this._textarea}setFocused(t){t?this.toggleAttribute("focused",!0):this.removeAttribute("focused")}connectedCallback(){super.connectedCallback(),this.addEventListener("keydown",d.d)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("keydown",d.d)}async firstUpdated(t){var e,a;(super.firstUpdated(t),this.autofocus)&&(await(null===(e=this._textarea)||void 0===e?void 0:e.updateComplete),null===(a=this._textarea)||void 0===a||a.focus())}focus(t){var e;null===(e=this._textarea)||void 0===e||e.focus(t)}render(){var t,e,a;const i=!this.label&&this._hasSlotController.test("label"),s=!this.hint&&this._hasSlotController.test("hint");return(0,n.qy)(p||(p=y` <wa-textarea .value="${0}" .placeholder="${0}" .readonly="${0}" .required="${0}" .rows="${0}" .resize="${0}" .disabled="${0}" name="${0}" autocapitalize="${0}" autocomplete="${0}" .autofocus="${0}" .spellcheck="${0}" inputmode="${0}" enterkeyhint="${0}" minlength="${0}" maxlength="${0}" class="${0}" @input="${0}" @change="${0}" @blur="${0}" @wa-invalid="${0}" exportparts="base:wa-base, hint:wa-hint, textarea:wa-textarea"> ${0} <div slot="hint" class="${0}" role="${0}" aria-live="polite"> ${0} </div> </wa-textarea> `),null!==(t=this.value)&&void 0!==t?t:null,this.placeholder,this.readonly,this.required,null!==(e=this.rows)&&void 0!==e?e:4,this.resize,this.disabled,(0,h.J)(this.name),(0,h.J)(this.autocapitalize||void 0),(0,h.J)(this.autocomplete),this.autofocus,this.spellcheck,(0,h.J)(this.inputmode||void 0),(0,h.J)(this.enterkeyhint||void 0),(0,h.J)(this.minlength),(0,h.J)(this.maxlength),(0,l.H)({input:!0,invalid:this.invalid||this._invalid,"label-raised":void 0!==this.value&&""!==this.value||this.label&&this.placeholder,"no-label":!this.label,"hint-hidden":!(this.hint||s||this.required||this._invalid||this.invalid)}),this._handleInput,this._handleChange,this._handleBlur,this._handleInvalid,this.label||i?(0,n.qy)(v||(v=y`<slot name="label" slot="label">${0}</slot>`),this.label?this._renderLabel(this.label,this.required):n.s6):n.s6,(0,l.H)({error:this.invalid||this._invalid}),(0,h.J)(this.invalid||this._invalid?"alert":void 0),this._invalid||this.invalid?this.validationMessage||(null===(a=this._textarea)||void 0===a?void 0:a.validationMessage):this.hint||(s?(0,n.qy)(m||(m=y`<slot name="hint"></slot>`)):n.s6))}constructor(...t){super(...t),this.resize="none",this._hasSlotController=new r.X(this,"label","hint"),this._requiredMarkerCSSVar="--ha-textarea-required-marker"}}g.styles=[c.N,(0,n.AH)(_||(_=y`:host{display:flex;align-items:flex-start;padding-bottom:var(--ha-textarea-padding-bottom)}wa-textarea::part(label){width:calc(100% - var(--ha-space-2));background-color:var(--ha-color-form-background);transition:all var(--wa-transition-normal) ease-in-out,background-color var(--wa-transition-normal) ease-in-out;padding-inline-start:var(--ha-space-3);padding-inline-end:var(--ha-space-3);margin:var(--ha-space-1) var(--ha-space-1) 0;padding-top:var(--ha-space-4);white-space:nowrap;overflow:hidden}:host(:focus-within) wa-textarea::part(label),:host([focused]) wa-textarea::part(label){color:var(--primary-color)}:host(:focus-within) wa-textarea::part(label),:host([focused]) wa-textarea::part(label),wa-textarea.label-raised::part(label){padding-top:var(--ha-space-2);font-size:var(--ha-font-size-xs)}wa-textarea.no-label::part(label){height:0;padding:0}wa-textarea::part(base){min-height:56px;padding-top:var(--ha-space-6);padding-bottom:var(--ha-space-2)}wa-textarea.no-label::part(base){padding-top:var(--ha-space-3)}wa-textarea::part(base)::after{content:"";position:absolute;bottom:0;left:0;right:0;height:1px;background-color:var(--ha-color-border-neutral-loud);transition:height var(--wa-transition-normal) ease-in-out,background-color var(--wa-transition-normal) ease-in-out}:host(:focus-within) wa-textarea::part(base)::after,:host([focused]) wa-textarea::part(base)::after{height:2px;background-color:var(--primary-color)}:host(:focus-within) wa-textarea.invalid::part(base)::after,wa-textarea.invalid:not([disabled])::part(base)::after{background-color:var(--ha-color-border-danger-normal)}wa-textarea::part(textarea){padding:0 var(--ha-space-4);font-family:var(--ha-font-family-body);font-size:var(--ha-font-size-m)}:host([resize=auto]) wa-textarea::part(textarea){max-height:var(--ha-textarea-max-height,200px);overflow-y:auto}wa-textarea:hover::part(base),wa-textarea:hover::part(label){background-color:var(--ha-color-form-background-hover)}wa-textarea[disabled]::part(textarea){cursor:not-allowed}wa-textarea[disabled]::part(base),wa-textarea[disabled]::part(label){background-color:var(--ha-color-form-background-disabled)}`))],(0,i.Cg)([(0,o.MZ)({type:Number})],g.prototype,"rows",void 0),(0,i.Cg)([(0,o.MZ)()],g.prototype,"resize",void 0),(0,i.Cg)([(0,o.P)("wa-textarea")],g.prototype,"_textarea",void 0),g=(0,i.Cg)([(0,o.EM)("ha-textarea")],g),e()}catch(p){e(p)}})},36866:function(t,e,a){a.a(t,async function(t,e){try{a(62953);var i=a(40445),s=a(5124),r=a(67576),n=a(91485),o=t([n]);n=(o.then?(await o)():o)[0];let l,h,d=t=>t;const c="M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z";class u extends n.U{willUpdate(t){var e,a;(super.willUpdate(t),this.label||this.placeholder||this.hasUpdated&&!t.has("_i18n"))||(this.placeholder=(null===(e=this.i18n)||void 0===e||null===(a=e.localize)||void 0===a?void 0:a.call(e,"ui.common.search"))||"Search")}renderStartDefault(){return(0,s.qy)(l||(l=d`<ha-svg-icon slot="start" .path="${0}"></ha-svg-icon>`),c)}constructor(){super(),this.withClear=!0,this.autocomplete=this.autocomplete||"off"}}u.styles=[...n.U.styles,(0,s.AH)(h||(h=d`:host([appearance=outlined]) wa-input.no-label::part(base){height:40px}`))],u=(0,i.Cg)([(0,r.EM)("ha-input-search")],u),e()}catch(l){e(l)}})},53756:function(t,e,a){a.d(e,{t:function(){return l},w:function(){return h}});a(74423),a(18111),a(22489),a(61701),a(62953);var i=a(71727),s=a(74705),r=a(28978),n=a(15638),o=a(95350);const l=[{name:"search_labels.entityName",weight:10},{name:"search_labels.friendlyName",weight:8},{name:"search_labels.deviceName",weight:7},{name:"search_labels.areaName",weight:6},{name:"search_labels.domainName",weight:6},{name:"search_labels.entityId",weight:3}],h=(t,e,a,l,h,d,c,u,p,v="")=>{let m,_=Object.keys(t.states);return c&&(_=_.filter(t=>c.includes(t))),u&&(_=_.filter(t=>!u.includes(t))),e&&(_=_.filter(t=>e.includes((0,i.m)(t)))),a&&(_=_.filter(t=>!a.includes((0,i.m)(t)))),m=_.map(e=>{const a=t.states[e],l=(0,r.u)(a),[h,d,c]=(0,s.Cf)(a,[{type:"entity"},{type:"device"},{type:"area"}],t.entities,t.devices,t.areas,t.floors),u=(0,o.p$)(t.localize,(0,i.m)(e)),p=(0,n.qC)(t.language,t.translationMetadata.translations),m=h||d||e,_=[c,h?d:void 0].filter(Boolean).join(p?" ◂ ":" ▸ ");return{id:`${v}${e}`,primary:m,secondary:_,domain_name:u,sorting_label:[m,_].filter(Boolean).join("_"),search_labels:{entityName:h||null,deviceName:d||null,areaName:c||null,domainName:u||null,friendlyName:l||null,entityId:e},stateObj:a}}),h&&(m=m.filter(t=>{var e;return t.id===p||(null===(e=t.stateObj)||void 0===e?void 0:e.attributes.device_class)&&h.includes(t.stateObj.attributes.device_class)})),d&&(m=m.filter(t=>{var e;return t.id===p||(null===(e=t.stateObj)||void 0===e?void 0:e.attributes.unit_of_measurement)&&d.includes(t.stateObj.attributes.unit_of_measurement)})),l&&(m=m.filter(t=>t.id===p||t.stateObj&&l(t.stateObj))),m}},62938:function(t,e,a){a.a(t,async function(t,i){try{a.r(e);a(89463),a(18111),a(20116),a(3362),a(62953);var s=a(40445),r=a(92913),n=a(71566),o=a(57279),l=a(83339),h=a(77972),d=a(5124),c=a(67576),u=a(22786),p=a(91069),v=a(8480),m=a(1087),_=a(69093),y=a(82286),g=a(22682),b=a(82474),f=a(38962),w=a(18350),k=a(19463),$=a(72554),C=(a(93444),a(6),a(59646)),x=a(56304),z=a(50286),q=a(91485),E=a(55156),D=a(14503),M=a(79757),I=a(36863),S=a(50954),T=t([b,f,w,k,$,C,x,z,q,M,I,v,p]);[b,f,w,k,$,C,x,z,q,M,I,v,p]=T.then?(await T)():T;let R,A,Z,B,O,L,H,j,U,P=t=>t;const W=["calendar"];class V extends d.WF{showDialog(t){var e;if(this._error=void 0,this._info=void 0,this._params=t,this._open=!0,this._calendarId=t.calendarId||(null===(e=Object.values(this.hass.states).find(t=>"calendar"===(0,_.t)(t)&&(0,y.$)(t,E.at.CREATE_EVENT)))||void 0===e?void 0:e.entity_id),this._timeZone=(0,v.wj)(this.hass.locale.time_zone,this.hass.config.time_zone),t.entry){const e=t.entry;this._allDay=(0,g.$)(e.dtstart),this._summary=e.summary,this._description=e.description,e.location&&(this._hasLocation=!0,this._location=e.location),this._rrule=e.rrule,this._allDay?(this._dtstart=new Date(e.dtstart+"T00:00:00"),this._dtend=(0,r.f)(new Date(e.dtend+"T00:00:00"),-1)):(this._dtstart=new Date(e.dtstart),this._dtend=new Date(e.dtend))}else this._allDay=!1,this._dtstart=(0,n.Q)(t.selectedDate?t.selectedDate:new Date),this._dtend=(0,o.L)(this._dtstart,1)}closeDialog(){this._open=!1}render(){if(!this._params)return d.s6;const t=void 0===this._params.entry,{startDate:e,startTime:a,endDate:i,endTime:s}=this._getLocaleStrings(this._dtstart,this._dtend);return(0,d.qy)(R||(R=P` <ha-dialog .open="${0}" header-title="${0}" prevent-scrim-close @closed="${0}"> <div class="content"> ${0} ${0} <ha-input class="summary" name="summary" .label="${0}" .value="${0}" required @input="${0}" .validationMessage="${0}" autofocus></ha-input> <ha-input class="location" name="location" .label="${0}" .value="${0}" @change="${0}"></ha-input> <ha-textarea class="description" name="description" .label="${0}" .value="${0}" @change="${0}" resize="auto"></ha-textarea> <ha-entity-picker name="calendar" .hass="${0}" .label="${0}" .value="${0}" .includeDomains="${0}" .entityFilter="${0}" .disabled="${0}" required @value-changed="${0}"></ha-entity-picker> <ha-formfield .label="${0}"> <ha-switch id="all_day" .checked="${0}" @change="${0}"></ha-switch> </ha-formfield> <div> <span class="label">${0}:</span> <div class="flex"> <ha-date-input .value="${0}" .locale="${0}" @value-changed="${0}"></ha-date-input> ${0} </div> </div> <div> <span class="label">${0}:</span> <div class="flex"> <ha-date-input .value="${0}" .min="${0}" .locale="${0}" @value-changed="${0}"></ha-date-input> ${0} </div> </div> <ha-recurrence-rule-editor .hass="${0}" .dtstart="${0}" .allDay="${0}" .locale="${0}" .timezone="${0}" .value="${0}" @value-changed="${0}"> </ha-recurrence-rule-editor> </div> <ha-dialog-footer slot="footer"> ${0} </ha-dialog-footer> </ha-dialog> `),this._open,this.hass.localize("ui.components.calendar.event."+(t?"add":"edit")),this._dialogClosed,this._error?(0,d.qy)(A||(A=P`<ha-alert alert-type="error">${0}</ha-alert>`),this._error):"",this._info?(0,d.qy)(Z||(Z=P`<ha-alert alert-type="info" dismissable @alert-dismissed-clicked="${0}">${0}</ha-alert>`),this._clearInfo,this._info):"",this.hass.localize("ui.components.calendar.event.summary"),this._summary,this._handleSummaryChanged,this.hass.localize("ui.common.error_required"),this.hass.localize("ui.components.calendar.event.location"),this._location,this._handleLocationChanged,this.hass.localize("ui.components.calendar.event.description"),this._description,this._handleDescriptionChanged,this.hass,this.hass.localize("ui.components.calendar.label"),this._calendarId,W,this._isEditableCalendar,!t,this._handleCalendarChanged,this.hass.localize("ui.components.calendar.event.all_day"),this._allDay,this._allDayToggleChanged,this.hass.localize("ui.components.calendar.event.start"),e,this.hass.locale,this._startDateChanged,this._allDay?"":(0,d.qy)(B||(B=P`<ha-time-input .value="${0}" .locale="${0}" @value-changed="${0}"></ha-time-input>`),a,this.hass.locale,this._startTimeChanged),this.hass.localize("ui.components.calendar.event.end"),i,e,this.hass.locale,this._endDateChanged,this._allDay?"":(0,d.qy)(O||(O=P`<ha-time-input .value="${0}" .locale="${0}" @value-changed="${0}"></ha-time-input>`),s,this.hass.locale,this._endTimeChanged),this.hass,this._dtstart,this._allDay,this.hass.locale,this.hass.config.time_zone,this._rrule||"",this._handleRRuleChanged,t?(0,d.qy)(L||(L=P` <ha-button slot="primaryAction" @click="${0}" .disabled="${0}"> ${0} </ha-button> `),this._createEvent,this._submitting,this.hass.localize("ui.components.calendar.event.add")):(0,d.qy)(H||(H=P` ${0} <ha-button slot="primaryAction" @click="${0}" .disabled="${0}"> ${0} </ha-button> `),this._params.canDelete?(0,d.qy)(j||(j=P` <ha-button slot="secondaryAction" appearance="plain" variant="danger" @click="${0}" .disabled="${0}"> ${0} </ha-button> `),this._deleteEvent,this._submitting,this.hass.localize("ui.components.calendar.event.delete")):"",this._saveEvent,this._submitting,this.hass.localize("ui.components.calendar.event.save")))}_dialogClosed(){this._params&&(this._calendarId=void 0,this._params=void 0,this._dtstart=void 0,this._dtend=void 0,this._summary="",this._description="",this._location="",this._hasLocation=!1,this._rrule=void 0,this._open=!1,(0,m.r)(this,"dialog-closed",{dialog:this.localName}))}_clearInfo(){this._info=void 0}_handleSummaryChanged(t){this._summary=t.target.value}_handleDescriptionChanged(t){this._description=t.target.value}_handleLocationChanged(t){this._location=t.target.value}_handleRRuleChanged(t){this._rrule=t.detail.value}_allDayToggleChanged(t){this._allDay=t.target.checked,this._allDay&&this._dtstart&&this._dtend&&(this._dtstart=new Date((0,p.Yq)(this._dtstart,this._timeZone)+"T00:00:00"),this._dtend=new Date((0,p.Yq)(this._dtend,this._timeZone)+"T00:00:00"))}_startDateChanged(t){const e=(0,l.b)(this._dtend,this._dtstart);this._dtstart=(0,p._U)(`${t.detail.value}T${(0,p.fU)(this._dtstart,this._timeZone)}`,this._timeZone),this._dtend<=this._dtstart&&(this._dtend=(0,h.A)(this._dtstart,e),this._info=this.hass.localize("ui.components.calendar.event.end_auto_adjusted"))}_endDateChanged(t){this._dtend=(0,p._U)(`${t.detail.value}T${(0,p.fU)(this._dtend,this._timeZone)}`,this._timeZone)}_startTimeChanged(t){const e=(0,l.b)(this._dtend,this._dtstart);this._dtstart=(0,p._U)(`${(0,p.Yq)(this._dtstart,this._timeZone)}T${t.detail.value}`,this._timeZone),this._dtend<=this._dtstart&&(this._dtend=(0,h.A)(new Date(this._dtstart),e),this._info=this.hass.localize("ui.components.calendar.event.end_auto_adjusted"))}_endTimeChanged(t){this._dtend=(0,p._U)(`${(0,p.Yq)(this._dtend,this._timeZone)}T${t.detail.value}`,this._timeZone)}_calculateData(){const t={summary:this._summary,description:this._description,location:this._location||(this._hasLocation?"":void 0),rrule:this._rrule||void 0,dtstart:"",dtend:""};return this._allDay?(t.dtstart=(0,p.Yq)(this._dtstart,this._timeZone),t.dtend=(0,p.Yq)((0,r.f)(this._dtend,1),this._timeZone)):(t.dtstart=`${(0,p.Yq)(this._dtstart,this.hass.config.time_zone)}T${(0,p.fU)(this._dtstart,this.hass.config.time_zone)}`,t.dtend=`${(0,p.Yq)(this._dtend,this.hass.config.time_zone)}T${(0,p.fU)(this._dtend,this.hass.config.time_zone)}`),t}_handleCalendarChanged(t){this._calendarId=t.detail.value}_isValidStartEnd(){return this._allDay?this._dtend>=this._dtstart:this._dtend>this._dtstart}async _createEvent(){if(this._summary&&this._calendarId)if(this._isValidStartEnd()){this._submitting=!0;try{await(0,E.pO)(this.hass,this._calendarId,this._calculateData())}catch(t){return void(this._error=t?t.message:"Unknown error")}finally{this._submitting=!1}await this._params.updated(),this.closeDialog()}else this._error=this.hass.localize("ui.components.calendar.event.invalid_duration");else this._error=this.hass.localize("ui.components.calendar.event.not_all_required_fields")}async _saveEvent(){if(!this._summary||!this._calendarId)return void(this._error=this.hass.localize("ui.components.calendar.event.not_all_required_fields"));if(!this._isValidStartEnd())return void(this._error=this.hass.localize("ui.components.calendar.event.invalid_duration"));this._submitting=!0;const t=this._params.entry;let e=E.kt.THISEVENT;if(t.recurrence_id&&(e=await(0,S.Q)(this,{title:this.hass.localize("ui.components.calendar.event.confirm_update.update"),text:this.hass.localize("ui.components.calendar.event.confirm_update.recurring_prompt"),confirmText:this.hass.localize("ui.components.calendar.event.confirm_update.update_this"),confirmFutureText:this.hass.localize("ui.components.calendar.event.confirm_update.update_future")})),void 0===e)return void(this._submitting=!1);const a=this._calculateData();t.rrule&&a.rrule&&e===E.kt.THISEVENT&&(a.rrule=void 0);try{await(0,E._1)(this.hass,this._calendarId,t.uid,a,t.recurrence_id||"",e)}catch(i){return void(this._error=i?i.message:"Unknown error")}finally{this._submitting=!1}await this._params.updated(),this.closeDialog()}async _deleteEvent(){this._submitting=!0;const t=this._params.entry,e=await(0,S.Q)(this,{title:this.hass.localize("ui.components.calendar.event.confirm_delete.delete"),text:t.recurrence_id?this.hass.localize("ui.components.calendar.event.confirm_delete.recurring_prompt"):this.hass.localize("ui.components.calendar.event.confirm_delete.prompt"),confirmText:t.recurrence_id?this.hass.localize("ui.components.calendar.event.confirm_delete.delete_this"):this.hass.localize("ui.components.calendar.event.confirm_delete.delete"),confirmFutureText:t.recurrence_id?this.hass.localize("ui.components.calendar.event.confirm_delete.delete_future"):void 0});if(void 0!==e){try{await(0,E.At)(this.hass,this._calendarId,t.uid,t.recurrence_id||"",e)}catch(a){return void(this._error=a?a.message:"Unknown error")}finally{this._submitting=!1}await this._params.updated(),this.closeDialog()}else this._submitting=!1}static get styles(){return[D.nA,(0,d.AH)(U||(U=P`state-info{line-height:40px}ha-alert{display:block;margin-bottom:16px}ha-textarea{display:block}ha-textarea{margin-bottom:16px}ha-formfield{display:block;padding:16px 0}ha-date-input{flex-grow:1}ha-time-input{margin-left:16px;margin-inline-start:16px;margin-inline-end:initial}ha-recurrence-rule-editor{display:block;margin-top:16px}.flex{display:flex;justify-content:space-between}.label{font-size:var(--ha-font-size-s);font-weight:var(--ha-font-weight-medium);color:var(--input-label-ink-color)}.date-range-details-content{display:inline-block}ha-rrule{display:block}ha-svg-icon{width:40px;margin-right:8px;margin-inline-end:8px;margin-inline-start:initial;direction:var(--direction);vertical-align:top}ha-rrule{display:inline-block}.key{display:inline-block;vertical-align:top}.value{display:inline-block;vertical-align:top}`))]}constructor(...t){super(...t),this._open=!1,this._summary="",this._description="",this._location="",this._allDay=!1,this._submitting=!1,this._hasLocation=!1,this._isEditableCalendar=t=>(0,y.$)(t,E.at.CREATE_EVENT),this._getLocaleStrings=(0,u.A)((t,e)=>({startDate:(0,p.Yq)(t,this._timeZone),startTime:(0,p.fU)(t,this._timeZone),endDate:(0,p.Yq)(e,this._timeZone),endTime:(0,p.fU)(e,this._timeZone)}))}}(0,s.Cg)([(0,c.MZ)({attribute:!1})],V.prototype,"hass",void 0),(0,s.Cg)([(0,c.wk)()],V.prototype,"_error",void 0),(0,s.Cg)([(0,c.wk)()],V.prototype,"_info",void 0),(0,s.Cg)([(0,c.wk)()],V.prototype,"_params",void 0),(0,s.Cg)([(0,c.wk)()],V.prototype,"_open",void 0),(0,s.Cg)([(0,c.wk)()],V.prototype,"_calendarId",void 0),(0,s.Cg)([(0,c.wk)()],V.prototype,"_summary",void 0),(0,s.Cg)([(0,c.wk)()],V.prototype,"_description",void 0),(0,s.Cg)([(0,c.wk)()],V.prototype,"_location",void 0),(0,s.Cg)([(0,c.wk)()],V.prototype,"_rrule",void 0),(0,s.Cg)([(0,c.wk)()],V.prototype,"_allDay",void 0),(0,s.Cg)([(0,c.wk)()],V.prototype,"_dtstart",void 0),(0,s.Cg)([(0,c.wk)()],V.prototype,"_dtend",void 0),(0,s.Cg)([(0,c.wk)()],V.prototype,"_submitting",void 0),V=(0,s.Cg)([(0,c.EM)("dialog-calendar-event-editor")],V),i()}catch(R){i(R)}})},36863:function(t,e,a){a.a(t,async function(t,e){try{a(18111),a(20116),a(61701),a(27495),a(17642),a(58004),a(33853),a(45876),a(32475),a(15024),a(31698),a(25440),a(62953);var i=a(40445),s=a(31886),r=a(5124),n=a(67576),o=a(41821),l=a(91069),h=a(380),d=(a(5745),a(32023),a(19463)),c=a(606),u=a(91485),p=a(55666),v=t([d,c,u,h,p,o,s,l]);[d,c,u,h,p,o,s,l]=v.then?(await v)():v;let m,_,y,g,b,f,w,k,$,C,x,z=t=>t;class q extends r.WF{willUpdate(t){if(super.willUpdate(t),t.has("locale")&&(this._allWeekdays=(0,p.cH)((0,h.P)(this.locale)).map(t=>t.toString())),(t.has("dtstart")||t.has("_interval"))&&(this._monthlyRepeatItems=this.dtstart?(0,p.jz)(this.hass,this._interval,this.dtstart):[],this._computeWeekday()),!t.has("value")&&(t.has("dtstart")||t.has("timezone")||t.has("_freq")||t.has("_interval")||t.has("_weekday")||t.has("_monthlyRepeatWeekday")||t.has("_monthday")||t.has("_end")||t.has("_count")||t.has("_untilDay")))return void this._updateRule();if(this._computedRRule===this.value)return;if(this._interval=1,this._weekday.clear(),this._monthlyRepeat=void 0,this._monthday=void 0,this._monthlyRepeatWeekday=void 0,this._end="never",this._count=void 0,this._untilDay=void 0,this._computedRRule=this.value,""===this.value)return void(this._freq="none");let e;try{e=o.p3.parseString(this.value)}catch(a){return void(this._freq=void 0)}this._freq=(0,p.mH)(e.freq),e.interval&&(this._interval=e.interval),this._monthlyRepeatWeekday=(0,p.j9)(e),this._monthlyRepeatWeekday&&(this._monthlyRepeat=`BYDAY=${this._monthlyRepeatWeekday.toString()}`),this._monthday=(0,p.Wt)(e),this._monthday&&(this._monthlyRepeat=`BYMONTHDAY=${this._monthday}`),"weekly"===this._freq&&e.byweekday&&Array.isArray(e.byweekday)&&(this._weekday=new Set(e.byweekday.map(t=>t.toString()))),e.until?(this._end="on",this._untilDay=new Date(new s.BB(e.until,this.timezone).getTime())):e.count&&(this._end="after",this._count=e.count)}renderRepeat(){return(0,r.qy)(m||(m=z` <ha-select id="freq" label="${0}" @selected="${0}" .value="${0}" .options="${0}"></ha-select> `),this.hass.localize("ui.components.calendar.event.repeat.label"),this._onRepeatSelected,this._freq,["none","yearly","monthly","weekly","daily"].map(t=>({value:t,label:this.hass.localize(`ui.components.calendar.event.repeat.freq.${t}`)})))}renderMonthly(){var t;return(0,r.qy)(_||(_=z` ${0} ${0} `),this.renderInterval(),this._monthlyRepeatItems.length>0?(0,r.qy)(y||(y=z`<ha-select id="monthly" label="${0}" @selected="${0}" .value="${0}" .options="${0}"></ha-select>`),this.hass.localize("ui.components.calendar.event.repeat.monthly.label"),this._onMonthlyDetailSelected,this._monthlyRepeat||(null===(t=this._monthlyRepeatItems[0])||void 0===t?void 0:t.value),this._monthlyRepeatItems):r.s6)}renderWeekly(){return(0,r.qy)(g||(g=z` ${0} <ha-chip-set class="weekdays"> ${0} </ha-chip-set> `),this.renderInterval(),this._allWeekdays.map(t=>(0,r.qy)(b||(b=z` <ha-filter-chip no-leading-icon .value="${0}" .selected="${0}" @click="${0}" .label="${0}"> </ha-filter-chip> `),t,this._weekday.has(t),this._onWeekdayToggle,this.hass.localize(`ui.components.calendar.event.repeat.weekly.weekday.${t.toLowerCase()}`))))}renderDaily(){return this.renderInterval()}renderInterval(){return(0,r.qy)(f||(f=z` <ha-input id="interval" label="${0}" type="number" min="1" .value="${0}" @change="${0}"> <span slot="end"> ${0} </span> </ha-input> `),this.hass.localize("ui.components.calendar.event.repeat.interval.label"),this._interval,this._onIntervalChange,this.hass.localize(`ui.components.calendar.event.repeat.interval.${this._freq}`))}renderEnd(){return(0,r.qy)(w||(w=z` <ha-select id="end" label="${0}" .value="${0}" @selected="${0}" .options="${0}"> </ha-select> ${0} ${0} `),this.hass.localize("ui.components.calendar.event.repeat.end.label"),this._end,this._onEndSelected,["never","after","on"].map(t=>({value:t,label:this.hass.localize(`ui.components.calendar.event.repeat.end.${t}`)})),"after"===this._end?(0,r.qy)(k||(k=z` <ha-input id="after" label="${0}" type="number" min="1" .value="${0}" @change="${0}"> <span slot="end"> ${0} </span> </ha-input> `),this.hass.localize("ui.components.calendar.event.repeat.end_after.label"),this._count,this._onCountChange,this.hass.localize("ui.components.calendar.event.repeat.end_after.ocurrences")):r.s6,"on"===this._end?(0,r.qy)($||($=z` <ha-date-input id="on" label="${0}" .locale="${0}" .value="${0}" @value-changed="${0}"></ha-date-input> `),this.hass.localize("ui.components.calendar.event.repeat.end_on.label"),this.locale,(0,l.Yq)(this._untilDay,this.timezone),this._onUntilChange):r.s6)}render(){return(0,r.qy)(C||(C=z` ${0} ${0} ${0} ${0} ${0} `),this.renderRepeat(),"monthly"===this._freq?this.renderMonthly():r.s6,"weekly"===this._freq?this.renderWeekly():r.s6,"daily"===this._freq?this.renderDaily():r.s6,"none"!==this._freq?this.renderEnd():r.s6)}_onIntervalChange(t){this._interval=t.target.value}_onRepeatSelected(t){this._freq=t.detail.value,"yearly"===this._freq&&(this._interval=1),"weekly"!==this._freq&&(this._weekday.clear(),this._computeWeekday())}_onMonthlyDetailSelected(t){const e=this._monthlyRepeatItems.find(e=>e.value===t.detail.value);e&&(this._monthlyRepeat=e.value,this._monthlyRepeatWeekday=e.byday,this._monthday=e.bymonthday)}_onWeekdayToggle(t){const e=t.currentTarget.value;this._weekday.has(e)?this._weekday.delete(e):this._weekday.add(e),this.requestUpdate("_weekday")}_onEndSelected(t){const e=t.detail.value;if(e!==this._end){switch(this._end=e,this._end){case"after":this._count=p.et[this._freq],this._untilDay=void 0;break;case"on":this._count=void 0,this._untilDay=(0,p.AZ)(this._freq);break;default:this._count=void 0,this._untilDay=void 0}t.stopPropagation()}}_onCountChange(t){this._count=t.target.value}_onUntilChange(t){t.stopPropagation(),this._untilDay=new Date(new s.BB(t.detail.value+"T00:00:00",this.timezone).getTime())}_computeWeekday(){if(this.dtstart&&this._weekday.size<=1){const t=(0,p.VJ)(this.dtstart);this._weekday.clear(),this._weekday.add(new o.Bw(t).toString())}}_computeRRule(){if(void 0===this._freq||"none"===this._freq)return"";let t,e;"monthly"===this._freq&&void 0!==this._monthlyRepeatWeekday?t=[this._monthlyRepeatWeekday]:"monthly"===this._freq&&void 0!==this._monthday?e=this._monthday:"weekly"===this._freq&&(t=(0,p.OS)(this._weekday));const a={freq:(0,p.zw)(this._freq),interval:this._interval>1?this._interval:void 0,count:this._count,byweekday:t,bymonthday:e};let i=o.p3.optionsToString(a);if(this._untilDay){const t=new s.BB((0,l.Yq)(this._untilDay,this.timezone)+"T"+(0,l.fU)(this.dtstart,this.timezone),this.timezone);let e;e=this.allDay?t.toISOString().split("T")[0].replace(/-/g,""):t.toISOString().replace(/[-:]/g,"").split(".")[0],i+=`;UNTIL=${e}`}return i.slice(6)}_updateRule(){const t=this._computeRRule();t!==this._computedRRule&&(this._computedRRule=t,this.dispatchEvent(new CustomEvent("value-changed",{detail:{value:t}})))}constructor(...t){super(...t),this.disabled=!1,this.value="",this.allDay=!1,this._computedRRule="",this._freq="none",this._interval=1,this._weekday=new Set,this._end="never",this._monthlyRepeatItems=[]}}q.styles=(0,r.AH)(x||(x=z`ha-input,ha-select{display:block;margin-bottom:16px;--ha-input-padding-bottom:0}.weekdays{margin-bottom:16px}.weekdays:last-child,ha-input:last-child,ha-select:last-child{margin-bottom:0}`)),(0,i.Cg)([(0,n.MZ)({attribute:!1})],q.prototype,"hass",void 0),(0,i.Cg)([(0,n.MZ)({type:Boolean})],q.prototype,"disabled",void 0),(0,i.Cg)([(0,n.MZ)()],q.prototype,"value",void 0),(0,i.Cg)([(0,n.MZ)({attribute:!1})],q.prototype,"dtstart",void 0),(0,i.Cg)([(0,n.MZ)({attribute:"all-day",type:Boolean})],q.prototype,"allDay",void 0),(0,i.Cg)([(0,n.MZ)({attribute:!1})],q.prototype,"locale",void 0),(0,i.Cg)([(0,n.MZ)()],q.prototype,"timezone",void 0),(0,i.Cg)([(0,n.wk)()],q.prototype,"_computedRRule",void 0),(0,i.Cg)([(0,n.wk)()],q.prototype,"_freq",void 0),(0,i.Cg)([(0,n.wk)()],q.prototype,"_interval",void 0),(0,i.Cg)([(0,n.wk)()],q.prototype,"_weekday",void 0),(0,i.Cg)([(0,n.wk)()],q.prototype,"_monthlyRepeat",void 0),(0,i.Cg)([(0,n.wk)()],q.prototype,"_monthlyRepeatWeekday",void 0),(0,i.Cg)([(0,n.wk)()],q.prototype,"_monthday",void 0),(0,i.Cg)([(0,n.wk)()],q.prototype,"_end",void 0),(0,i.Cg)([(0,n.wk)()],q.prototype,"_count",void 0),(0,i.Cg)([(0,n.wk)()],q.prototype,"_untilDay",void 0),q=(0,i.Cg)([(0,n.EM)("ha-recurrence-rule-editor")],q),e()}catch(m){e(m)}})},24367:function(t,e,a){a.d(e,{L:function(){return s},z:function(){return r}});var i=a(23832);const s=["input_boolean","input_button","input_text","input_number","input_datetime","input_select","counter","timer","schedule"],r=(0,i.g)(s)},19711:function(t,e,a){a.d(e,{$:function(){return r}});a(3362),a(62953);var i=a(1087);const s=()=>Promise.all([a.e(80131),a.e(70183),a.e(47677)]).then(a.bind(a,79029)),r=(t,e)=>{(0,i.r)(t,"show-dialog",{dialogTag:"dialog-helper-detail",dialogImport:s,dialogParams:e})}},85614:function(t,e,a){a.d(e,{i:function(){return i}});a(3362),a(62953);const i=async()=>{await Promise.all([a.e(38085),a.e(22309)]).then(a.bind(a,40772))}}}]);