iobroker.lovelace
Version:
With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI
1 lines • 57.4 kB
JavaScript
export const __rspack_esm_id=21956;export const __rspack_esm_ids=[21956];export const __webpack_modules__={57673(t,e,i){i.d(e,{z:()=>s});const s=t=>{if(void 0===t)return;if("object"!=typeof t){if("string"==typeof t||isNaN(t)){const e=t?.toString().split(":")||[];if(1===e.length)return{seconds:Number(e[0])};if(e.length>3)return;const i=Number(e[2])||0,s=Math.floor(i);return{hours:Number(e[0])||0,minutes:Number(e[1])||0,seconds:s,milliseconds:Math.floor(1e3*Number((i-s).toFixed(4)))}}return{seconds:t}}if(!("days"in t))return t;const{days:e,minutes:i,seconds:s,milliseconds:a}=t;let o=t.hours||0;return o=(o||0)+24*(e||0),{hours:o,minutes:i,seconds:s,milliseconds:a}}},84446(t,e,i){i.d(e,{p:()=>o,z:()=>a});i(17642),i(58004),i(33853),i(45876),i(32475),i(15024),i(31698);var s=i(71727);const a=t=>t.include_domains.length+t.include_entities.length+t.exclude_domains.length+t.exclude_entities.length===0,o=(t,e,i,a)=>{const o=new Set(t),n=new Set(e),l=new Set(i),r=new Set(a),d=o.size>0||n.size>0,h=l.size>0||r.size>0;return d||h?d&&!h?t=>n.has(t)||o.has((0,s.m)(t)):!d&&h?t=>!r.has(t)&&!l.has((0,s.m)(t)):o.size?t=>o.has((0,s.m)(t))?!r.has(t):n.has(t):l.size?t=>l.has((0,s.m)(t))?n.has(t):!r.has(t):t=>n.has(t):()=>!0}},832(t,e,i){i.a(t,async function(t,e){try{var s=i(62826),a=i(5124),o=i(22441),n=i(1087),l=i(26613),r=t([l]);l=(r.then?(await r)():r)[0];class d extends a.WF{render(){return this.aliases?a.qy` <ha-input-multi .value="${this.aliases}" .disabled="${this.disabled}" .sortable="${this.sortable}" update-on-blur .label="${this.hass.localize("ui.dialogs.aliases.label")}" .removeLabel="${this.hass.localize("ui.dialogs.aliases.remove")}" .addLabel="${this.hass.localize("ui.dialogs.aliases.add")}" item-index @value-changed="${this._aliasesChanged}"> </ha-input-multi> `:a.s6}_aliasesChanged(t){t.stopPropagation(),(0,n.r)(this,"value-changed",{value:t.detail.value})}constructor(...t){super(...t),this.disabled=!1,this.sortable=!1}}(0,s.Cg)([(0,o.MZ)({attribute:!1})],d.prototype,"hass",void 0),(0,s.Cg)([(0,o.MZ)({type:Array})],d.prototype,"aliases",void 0),(0,s.Cg)([(0,o.MZ)({type:Boolean})],d.prototype,"disabled",void 0),(0,s.Cg)([(0,o.MZ)({type:Boolean})],d.prototype,"sortable",void 0),d=(0,s.Cg)([(0,o.EM)("ha-aliases-editor")],d),e()}catch(t){e(t)}})},26613(t,e,i){i.a(t,async function(t,e){try{var s=i(62826),a=i(35211),o=i(5124),n=i(22441),l=i(75751),r=i(1087),d=i(22792),h=i(14503),c=i(18350),u=i(26300),p=(i(3449),i(85938),i(91485)),g=t([c,u,p]);[c,u,p]=g.then?(await g)():g;const _="M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19M8,9H16V19H8V9M15.5,4L14.5,3H9.5L8.5,4H5V6H19V4H15.5Z",m="M21 11H3V9H21V11M21 13H3V15H21V13Z",v="M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z";class y extends o.WF{render(){return o.qy` <ha-sortable handle-selector=".handle" draggable-selector=".row" .disabled="${!this.sortable||this.disabled}" @item-moved="${this._itemMoved}"> <div class="items"> ${(0,l.u)(this._items,(t,e)=>`${t}-${e}`,(t,e)=>{const i=""+(this.itemIndex?` ${e+1}`:"");return o.qy` <div class="layout horizontal center-center row"> <ha-input .type="${this.inputType}" .autocomplete="${this.autocomplete}" .disabled="${this.disabled}" dialogInitialFocus="${e}" .index="${e}" class="flex-auto" .label="${""+(this.label?`${this.label}${i}`:"")}" .value="${t}" ?data-last="${e===this._items.length-1}" @input="${this._editItem}" @change="${this._editItem}" @keydown="${this._keyDown}"> ${this.inputPrefix?o.qy`<span slot="start">${this.inputPrefix}</span>`:o.s6} ${this.inputSuffix?o.qy`<span slot="end">${this.inputSuffix}</span>`:o.s6} </ha-input> <ha-icon-button .disabled="${this.disabled}" .index="${e}" slot="navigationIcon" .label="${this.removeLabel??this._i18n?.localize("ui.common.remove")??"Remove"}" @click="${this._removeItem}" .path="${_}"></ha-icon-button> ${this.sortable?o.qy`<ha-svg-icon class="handle" .path="${m}"></ha-svg-icon>`:o.s6} </div> `})} </div> </ha-sortable> <div class="layout horizontal"> <ha-button size="small" appearance="filled" @click="${this._addItem}" .disabled="${this.disabled||null!=this.max&&this._items.length>=this.max}"> <ha-svg-icon slot="start" .path="${v}"></ha-svg-icon> ${this.addLabel??(this.label?this._i18n?.localize("ui.components.multi-textfield.add_item",{item:this.label}):this._i18n?.localize("ui.common.add"))??"Add"} </ha-button> </div> ${this.helper?o.qy`<ha-input-helper-text .disabled="${this.disabled}">${this.helper}</ha-input-helper-text>`:o.s6} `}get _items(){return this.value??[]}async _addItem(){if(null!=this.max&&this._items.length>=this.max)return;const t=[...this._items,""];this._fireChanged(t),await this.updateComplete,this._lastInput?.focus()}async _editItem(t){if(this.updateOnBlur&&"input"===t.type)return;if(!this.updateOnBlur&&"change"===t.type)return;const e=t.target.index,i=[...this._items];i[e]=t.target.value,this._fireChanged(i)}async _keyDown(t){"Enter"===t.key&&(t.stopPropagation(),this._addItem())}_itemMoved(t){t.stopPropagation();const{oldIndex:e,newIndex:i}=t.detail,s=[...this._items],[a]=s.splice(e,1);s.splice(i,0,a),this._fireChanged(s)}async _removeItem(t){const e=t.target.index,i=[...this._items];i.splice(e,1),this._fireChanged(i)}_fireChanged(t){this.value=t,(0,r.r)(this,"value-changed",{value:t})}static get styles(){return[h.RF,o.AH`.row{margin-bottom:8px;--ha-input-padding-bottom:0}ha-icon-button{display:block}.handle{cursor:grab;padding:8px;margin:-8px}`]}constructor(...t){super(...t),this.disabled=!1,this.itemIndex=!1,this.sortable=!1,this.updateOnBlur=!1}}(0,s.Cg)([(0,n.MZ)({attribute:!1})],y.prototype,"value",void 0),(0,s.Cg)([(0,n.MZ)({type:Boolean})],y.prototype,"disabled",void 0),(0,s.Cg)([(0,n.MZ)()],y.prototype,"label",void 0),(0,s.Cg)([(0,n.MZ)()],y.prototype,"helper",void 0),(0,s.Cg)([(0,n.MZ)({attribute:"input-type"})],y.prototype,"inputType",void 0),(0,s.Cg)([(0,n.MZ)({attribute:"input-suffix"})],y.prototype,"inputSuffix",void 0),(0,s.Cg)([(0,n.MZ)({attribute:"input-prefix"})],y.prototype,"inputPrefix",void 0),(0,s.Cg)([(0,n.MZ)()],y.prototype,"autocomplete",void 0),(0,s.Cg)([(0,n.MZ)({attribute:"add-label"})],y.prototype,"addLabel",void 0),(0,s.Cg)([(0,n.MZ)({attribute:"remove-label"})],y.prototype,"removeLabel",void 0),(0,s.Cg)([(0,n.MZ)({attribute:"item-index",type:Boolean})],y.prototype,"itemIndex",void 0),(0,s.Cg)([(0,n.MZ)({type:Number})],y.prototype,"max",void 0),(0,s.Cg)([(0,n.MZ)({type:Boolean})],y.prototype,"sortable",void 0),(0,s.Cg)([(0,n.MZ)({type:Boolean,attribute:"update-on-blur"})],y.prototype,"updateOnBlur",void 0),(0,s.Cg)([(0,n.wk)(),(0,a.Fg)({context:d.D5,subscribe:!0})],y.prototype,"_i18n",void 0),(0,s.Cg)([(0,n.P)("ha-input[data-last]")],y.prototype,"_lastInput",void 0),y=(0,s.Cg)([(0,n.EM)("ha-input-multi")],y),e()}catch(t){e(t)}})},61037(t,e,i){var s=i(62826),a=i(22441),o=i(5124),n=i(14503),l=i(14782),r=i(44144);class d extends o.WF{render(){return o.qy` <img class="logo" alt="${l.aK[this.voiceAssistantId].name}" src="${(0,r.MR)({domain:l.aK[this.voiceAssistantId].domain,type:"icon",darkOptimized:this.hass.themes?.darkMode},this.hass.auth.data.hassUrl)}" crossorigin="anonymous" referrerpolicy="no-referrer"> `}static get styles(){return[n.RF,o.AH`:host{display:inline}.logo{position:relative;vertical-align:middle;height:24px}`]}}(0,s.Cg)([(0,a.MZ)({attribute:!1})],d.prototype,"hass",void 0),(0,s.Cg)([(0,a.MZ)({attribute:!1})],d.prototype,"voiceAssistantId",void 0),d=(0,s.Cg)([(0,a.EM)("voice-assistant-brand-icon")],d)},53211(t,e,i){i.d(e,{Gk:()=>a,Gq:()=>s});const s=t=>t.callWS({type:"cloud/alexa/entities"}),a=(t,e)=>t.callWS({type:"cloud/alexa/entities/get",entity_id:e})},21016(t,e,i){i.d(e,{Pu:()=>a,SB:()=>n,mk:()=>o,r1:()=>s});const s=t=>t.callWS({type:"counter/list"}),a=(t,e)=>t.callWS({type:"counter/create",...e}),o=(t,e,i)=>t.callWS({type:"counter/update",counter_id:e,...i}),n=(t,e)=>t.callWS({type:"counter/delete",counter_id:e})},14782(t,e,i){i.d(e,{Gw:()=>n,Ow:()=>r,YH:()=>o,aK:()=>a,hB:()=>d,ij:()=>l});i(18111),i(22489);var s=i(59241);const a={conversation:{domain:"assist_pipeline",name:"Assist"},"cloud.alexa":{domain:"alexa",name:"Amazon Alexa"},"cloud.google_assistant":{domain:"google_assistant",name:"Google Assistant"}},o=(t,e,i)=>t.callWS({type:"homeassistant/expose_new_entities/set",assistant:e,expose_new:i}),n=(t,e)=>t.callWS({type:"homeassistant/expose_new_entities/get",assistant:e}),l=(t,e,i,s)=>t.callWS({type:"homeassistant/expose_entity",assistants:e,entity_ids:i,should_expose:s}),r=t=>t.callWS({type:"homeassistant/expose_entity/list"}),d=(t,e)=>{const i=(0,s.Ox)(t)[e];return Object.keys(a).filter(t=>i?.options?.[t]?.should_expose)}},56982(t,e,i){i.d(e,{ig:()=>s,kz:()=>a});const s=t=>t.callWS({type:"cloud/google_assistant/entities"}),a=(t,e)=>t.callWS({type:"cloud/google_assistant/entities/get",entity_id:e})},41656(t,e,i){i.d(e,{n:()=>u});var s=i(21016),a=i(2279),o=i(42575),n=i(77738),l=i(6922),r=i(33687),d=i(12284),h=i(2247),c=i(49141);const u={input_boolean:{fetch:a.tT,update:a.iE,delete:a.e1},input_button:{fetch:o.vF,update:o.mC,delete:o.C1},input_text:{fetch:d.MG,update:d.BJ,delete:d.d_},input_number:{fetch:l.kF,update:l.Tv,delete:l.$I},input_datetime:{fetch:n.a2,update:n.fJ,delete:n.Bj},input_select:{fetch:r.HV,update:r.EJ,delete:r.O3},counter:{fetch:s.r1,update:s.mk,delete:s.SB},timer:{fetch:c.kL,update:c.r9,delete:c.pZ},schedule:{fetch:h.YA,update:h.Fs,delete:h.VD}}},2279(t,e,i){i.d(e,{e1:()=>n,iE:()=>o,nr:()=>a,tT:()=>s});const s=t=>t.callWS({type:"input_boolean/list"}),a=(t,e)=>t.callWS({type:"input_boolean/create",...e}),o=(t,e,i)=>t.callWS({type:"input_boolean/update",input_boolean_id:e,...i}),n=(t,e)=>t.callWS({type:"input_boolean/delete",input_boolean_id:e})},42575(t,e,i){i.d(e,{C1:()=>n,L6:()=>a,mC:()=>o,vF:()=>s});const s=t=>t.callWS({type:"input_button/list"}),a=(t,e)=>t.callWS({type:"input_button/create",...e}),o=(t,e,i)=>t.callWS({type:"input_button/update",input_button_id:e,...i}),n=(t,e)=>t.callWS({type:"input_button/delete",input_button_id:e})},77738(t,e,i){i.d(e,{Bj:()=>r,TB:()=>a,a2:()=>o,fJ:()=>l,ke:()=>n,rv:()=>s});const s=t=>`${t.attributes.year||"1970"}-${String(t.attributes.month||"01").padStart(2,"0")}-${String(t.attributes.day||"01").padStart(2,"0")}T${String(t.attributes.hour||"00").padStart(2,"0")}:${String(t.attributes.minute||"00").padStart(2,"0")}:${String(t.attributes.second||"00").padStart(2,"0")}`,a=(t,e,i=void 0,s=void 0)=>{const a={entity_id:e,time:i,date:s};t.callService("input_datetime","set_datetime",a)},o=t=>t.callWS({type:"input_datetime/list"}),n=(t,e)=>t.callWS({type:"input_datetime/create",...e}),l=(t,e,i)=>t.callWS({type:"input_datetime/update",input_datetime_id:e,...i}),r=(t,e)=>t.callWS({type:"input_datetime/delete",input_datetime_id:e})},6922(t,e,i){i.d(e,{$I:()=>n,Tv:()=>o,gO:()=>a,kF:()=>s});const s=t=>t.callWS({type:"input_number/list"}),a=(t,e)=>t.callWS({type:"input_number/create",...e}),o=(t,e,i)=>t.callWS({type:"input_number/update",input_number_id:e,...i}),n=(t,e)=>t.callWS({type:"input_number/delete",input_number_id:e})},2247(t,e,i){i.d(e,{Fs:()=>n,VD:()=>l,YA:()=>a,mx:()=>s,sF:()=>o});const s=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],a=t=>t.callWS({type:"schedule/list"}),o=(t,e)=>t.callWS({type:"schedule/create",...e}),n=(t,e,i)=>t.callWS({type:"schedule/update",schedule_id:e,...i}),l=(t,e)=>t.callWS({type:"schedule/delete",schedule_id:e})},55981(t,e,i){i.a(t,async function(t,s){try{i.r(e),i.d(e,{EntitySettingsHelperTab:()=>I});i(18111),i(20116),i(33110);var a=i(62826),o=i(5124),n=i(22441),l=i(36312),r=i(69558),d=i(1087),h=i(81816),c=i(18350),u=i(59241),p=i(41656),g=i(65063),_=i(14503),m=i(46963),v=i(89269),y=i(37018),b=i(837),f=i(76901),$=i(22514),x=i(8431),C=i(84226),w=i(14872),k=i(95341),z=i(72373),M=i(32064),S=t([c,m,v,y,b,f,$,x,C,w,k,z,M]);[c,m,v,y,b,f,$,x,C,w,k,z,M]=S.then?(await S)():S;class I extends o.WF{firstUpdated(t){super.firstUpdated(t),this._componentLoaded=(0,l.x)(this.hass.config,this.entry.platform)}updated(t){super.updated(t),t.has("entry")&&(this._error=void 0,this.entry.unique_id!==t.get("entry")?.unique_id&&(this._item=void 0),this._getItem())}render(){if(void 0===this._item)return o.s6;const t=this.hass.states[this.entry.entity_id];return o.qy` <div class="form"> ${this._error?o.qy`<ha-alert alert-type="error">${this._error}</ha-alert>`:""} ${null===this._item?o.qy`<ha-alert alert-type="info">${this.hass.localize("ui.dialogs.helper_settings.yaml_not_editable")}</ha-alert>`:o.s6} ${this._componentLoaded?o.qy` <span @value-changed="${this._valueChanged}"> ${(0,r._)(`ha-${this.entry.platform}-form`,{hass:this.hass,item:this._item,entry:this.entry,disabled:null===this._item})} </span> `:this.hass.localize("ui.dialogs.helper_settings.platform_not_loaded",{platform:this.entry.platform})} <entity-registry-settings-editor .hass="${this.hass}" .entry="${this.entry}" .disabled="${!!this._submitting}" @change="${this._entityRegistryChanged}" hide-name hide-icon></entity-registry-settings-editor> </div> <div class="buttons"> <ha-button variant="danger" appearance="plain" @click="${this._confirmDeleteItem}" .disabled="${this._submitting||!this._item&&!t?.attributes.restored}"> ${this.hass.localize("ui.dialogs.entity_registry.editor.delete")} </ha-button> <ha-button @click="${this._updateItem}" .disabled="${!this._dirty||!!this._submitting||!(!this._item||this._item.name)}"> ${this.hass.localize("ui.dialogs.entity_registry.editor.update")} </ha-button> </div> `}get _isHelperDirty(){return!(!this._item||!this._originalItemJson)&&JSON.stringify(this._item)!==this._originalItemJson}_updateDirty(){this._dirty=(this._registryEditor?.dirty??!1)||this._isHelperDirty}_entityRegistryChanged(){this._error=void 0,this._updateDirty()}_valueChanged(t){null!==this._item&&(this._error=void 0,this._item=t.detail.value,this._updateDirty())}async _getItem(){const t=await p.n[this.entry.platform].fetch(this.hass);this._item=t.find(t=>t.id===this.entry.unique_id)||null,this._originalItemJson=this._item?JSON.stringify(this._item):void 0}async _updateItem(){this._submitting=!0;try{this._componentLoaded&&this._item&&await p.n[this.entry.platform].update(this.hass,this._item.id,this._item);(await this._registryEditor.updateEntry()).close&&(0,d.r)(this,"close-dialog")}catch(t){this._error=t.message||"Unknown error"}finally{this._submitting=!1}}async _confirmDeleteItem(){const t=(0,h.cx)(this.entry,this.hass.devices),e=await(0,M.e)(this.hass,this.entry,t);if(await(0,g.dk)(this,{title:this.hass.localize("ui.dialogs.entity_registry.editor.confirm_delete_title"),text:e,confirmText:this.hass.localize("ui.common.delete"),dismissText:this.hass.localize("ui.common.cancel"),destructive:!0})){this._submitting=!0;try{if(this._componentLoaded&&this._item)await p.n[this.entry.platform].delete(this.hass,this._item.id);else{const t=this.hass.states[this.entry.entity_id];if(!t?.attributes.restored)return;await(0,u.bg)(this.hass,this.entry.entity_id)}(0,d.r)(this,"close-dialog")}finally{this._submitting=!1}}}static get styles(){return[_.RF,o.AH`:host{display:block;padding:0!important}ha-alert{display:block;margin-bottom:var(--ha-space-4)}.form{padding:20px 24px}.buttons{box-sizing:border-box;display:flex;justify-content:space-between;padding:16px;background-color:var(--mdc-theme-surface,#fff)}.error{color:var(--error-color);margin-bottom:8px}.row{margin-top:8px;color:var(--primary-text-color)}.secondary{color:var(--secondary-text-color)}`]}constructor(...t){super(...t),this._submitting=!1,this._dirty=!1}}(0,a.Cg)([(0,n.MZ)({attribute:!1})],I.prototype,"hass",void 0),(0,a.Cg)([(0,n.MZ)({attribute:!1})],I.prototype,"entry",void 0),(0,a.Cg)([(0,n.wk)()],I.prototype,"_error",void 0),(0,a.Cg)([(0,n.wk)()],I.prototype,"_item",void 0),(0,a.Cg)([(0,n.wk)()],I.prototype,"_submitting",void 0),(0,a.Cg)([(0,n.wk)()],I.prototype,"_dirty",void 0),(0,a.Cg)([(0,n.wk)()],I.prototype,"_componentLoaded",void 0),(0,a.Cg)([(0,n.P)("entity-registry-settings-editor")],I.prototype,"_registryEditor",void 0),I=(0,a.Cg)([(0,n.EM)("entity-settings-helper-tab")],I),s()}catch(t){s(t)}})},46963(t,e,i){i.a(t,async function(t,s){try{i.r(e);var a=i(62826),o=i(5124),n=i(22441),l=i(1087),r=(i(11382),i(64138)),d=i(59646),h=i(91485),c=i(14503),u=t([r,d,h]);[r,d,h]=u.then?(await u)():u;class p extends o.WF{set item(t){this._item=t,t?(this._name=t.name||"",this._icon=t.icon||"",this._maximum=t.maximum??void 0,this._minimum=t.minimum??void 0,this._restore=t.restore??!0,this._step=t.step??1,this._initial=t.initial??0):(this._name="",this._icon="",this._maximum=void 0,this._minimum=void 0,this._restore=!0,this._step=1,this._initial=0)}focus(){this.updateComplete.then(()=>this._focusElement?.focus())}render(){return this.hass?o.qy` <div class="form"> <ha-input .value="${this._name}" .configValue="${"name"}" @input="${this._valueChanged}" .label="${this.hass.localize("ui.dialogs.helper_settings.generic.name")}" auto-validate required .validationMessage="${this.hass.localize("ui.dialogs.helper_settings.required_error_msg")}" dialogInitialFocus .disabled="${this.disabled}"></ha-input> <ha-icon-picker .value="${this._icon}" .configValue="${"icon"}" @value-changed="${this._valueChanged}" .label="${this.hass.localize("ui.dialogs.helper_settings.generic.icon")}" .disabled="${this.disabled}"></ha-icon-picker> <ha-input .value="${void 0!==this._minimum?String(this._minimum):""}" .configValue="${"minimum"}" type="number" @input="${this._valueChanged}" .label="${this.hass.localize("ui.dialogs.helper_settings.counter.minimum")}" .disabled="${this.disabled}"></ha-input> <ha-input .value="${void 0!==this._maximum?String(this._maximum):""}" .configValue="${"maximum"}" type="number" @input="${this._valueChanged}" .label="${this.hass.localize("ui.dialogs.helper_settings.counter.maximum")}" .disabled="${this.disabled}"></ha-input> <ha-input .value="${void 0!==this._initial?String(this._initial):""}" .configValue="${"initial"}" type="number" @input="${this._valueChanged}" .label="${this.hass.localize("ui.dialogs.helper_settings.counter.initial")}" .disabled="${this.disabled}"></ha-input> <ha-expansion-panel header="${this.hass.localize("ui.dialogs.helper_settings.generic.advanced_settings")}" outlined> <ha-input .value="${void 0!==this._step?String(this._step):""}" .configValue="${"step"}" type="number" @input="${this._valueChanged}" .label="${this.hass.localize("ui.dialogs.helper_settings.counter.step")}" .disabled="${this.disabled}"></ha-input> <div class="row"> <ha-switch .checked="${this._restore}" .configValue="${"restore"}" @change="${this._valueChanged}" .disabled="${this.disabled}"> </ha-switch> <div> ${this.hass.localize("ui.dialogs.helper_settings.counter.restore")} </div> </div> </ha-expansion-panel> </div> `:o.s6}_valueChanged(t){if(!this.new&&!this._item)return;t.stopPropagation();const e=t.target,i=e.configValue,s="number"===e.type?""!==e.value?Number(e.value):void 0:"ha-switch"===e.localName?t.target.checked:t.detail?.value||e.value;if(this[`_${i}`]===s)return;const a={...this._item};void 0===s||""===s?delete a[i]:a[i]=s,(0,l.r)(this,"value-changed",{value:a})}static get styles(){return[c.RF,o.AH`.form{color:var(--primary-text-color)}.row{margin-top:12px;margin-bottom:12px;color:var(--primary-text-color);display:flex;align-items:center}.row div{margin-left:16px;margin-inline-start:16px;margin-inline-end:initial}ha-input{margin:var(--ha-space-2) 0}`]}constructor(...t){super(...t),this.new=!1,this.disabled=!1}}(0,a.Cg)([(0,n.MZ)({attribute:!1})],p.prototype,"hass",void 0),(0,a.Cg)([(0,n.MZ)({type:Boolean})],p.prototype,"new",void 0),(0,a.Cg)([(0,n.MZ)({type:Boolean})],p.prototype,"disabled",void 0),(0,a.Cg)([(0,n.wk)()],p.prototype,"_name",void 0),(0,a.Cg)([(0,n.wk)()],p.prototype,"_icon",void 0),(0,a.Cg)([(0,n.wk)()],p.prototype,"_maximum",void 0),(0,a.Cg)([(0,n.wk)()],p.prototype,"_minimum",void 0),(0,a.Cg)([(0,n.wk)()],p.prototype,"_restore",void 0),(0,a.Cg)([(0,n.wk)()],p.prototype,"_initial",void 0),(0,a.Cg)([(0,n.wk)()],p.prototype,"_step",void 0),(0,a.Cg)([(0,n.P)("[dialogInitialFocus]")],p.prototype,"_focusElement",void 0),p=(0,a.Cg)([(0,n.EM)("ha-counter-form")],p),s()}catch(t){s(t)}})},89269(t,e,i){i.a(t,async function(t,s){try{i.r(e);var a=i(62826),o=i(5124),n=i(22441),l=i(1087),r=i(64138),d=i(91485),h=i(14503),c=t([r,d]);[r,d]=c.then?(await c)():c;class u extends o.WF{set item(t){this._item=t,t?(this._name=t.name||"",this._icon=t.icon||""):(this._name="",this._icon="")}focus(){this.updateComplete.then(()=>this._focusElement?.focus())}render(){return this.hass?o.qy` <div class="form"> <ha-input .value="${this._name}" .configValue="${"name"}" @input="${this._valueChanged}" .label="${this.hass.localize("ui.dialogs.helper_settings.generic.name")}" auto-validate required .validationMessage="${this.hass.localize("ui.dialogs.helper_settings.required_error_msg")}" dialogInitialFocus .disabled="${this.disabled}"></ha-input> <ha-icon-picker .value="${this._icon}" .configValue="${"icon"}" @value-changed="${this._valueChanged}" .label="${this.hass.localize("ui.dialogs.helper_settings.generic.icon")}" .disabled="${this.disabled}"></ha-icon-picker> </div> `:o.s6}_valueChanged(t){if(!this.new&&!this._item)return;t.stopPropagation();const e=t.target.configValue,i=t.detail?.value||t.target.value;if(this[`_${e}`]===i)return;const s={...this._item};i?s[e]=i:delete s[e],(0,l.r)(this,"value-changed",{value:s})}static get styles(){return[h.RF,o.AH`.form{color:var(--primary-text-color)}.row{padding:var(--ha-space-4) 0}ha-input{margin:var(--ha-space-2) 0}`]}constructor(...t){super(...t),this.new=!1,this.disabled=!1}}(0,a.Cg)([(0,n.MZ)({attribute:!1})],u.prototype,"hass",void 0),(0,a.Cg)([(0,n.MZ)({type:Boolean})],u.prototype,"new",void 0),(0,a.Cg)([(0,n.MZ)({type:Boolean})],u.prototype,"disabled",void 0),(0,a.Cg)([(0,n.wk)()],u.prototype,"_name",void 0),(0,a.Cg)([(0,n.wk)()],u.prototype,"_icon",void 0),(0,a.Cg)([(0,n.P)("[dialogInitialFocus]")],u.prototype,"_focusElement",void 0),u=(0,a.Cg)([(0,n.EM)("ha-input_boolean-form")],u),s()}catch(t){s(t)}})},37018(t,e,i){i.a(t,async function(t,s){try{i.r(e);var a=i(62826),o=i(5124),n=i(22441),l=i(1087),r=i(64138),d=i(91485),h=i(14503),c=t([r,d]);[r,d]=c.then?(await c)():c;class u extends o.WF{set item(t){this._item=t,t?(this._name=t.name||"",this._icon=t.icon||""):(this._name="",this._icon="")}focus(){this.updateComplete.then(()=>this._focusElement?.focus())}render(){return this.hass?o.qy` <div class="form"> <ha-input .value="${this._name}" .configValue="${"name"}" @input="${this._valueChanged}" .label="${this.hass.localize("ui.dialogs.helper_settings.generic.name")}" auto-validate required .validationMessage="${this.hass.localize("ui.dialogs.helper_settings.required_error_msg")}" dialogInitialFocus .disabled="${this.disabled}"></ha-input> <ha-icon-picker .hass="${this.hass}" .value="${this._icon}" .configValue="${"icon"}" @value-changed="${this._valueChanged}" .label="${this.hass.localize("ui.dialogs.helper_settings.generic.icon")}" .disabled="${this.disabled}"></ha-icon-picker> </div> `:o.s6}_valueChanged(t){if(!this.new&&!this._item)return;t.stopPropagation();const e=t.target.configValue,i=t.detail?.value||t.target.value;if(this[`_${e}`]===i)return;const s={...this._item};i?s[e]=i:delete s[e],(0,l.r)(this,"value-changed",{value:s})}static get styles(){return[h.RF,o.AH`.form{color:var(--primary-text-color)}.row{padding:var(--ha-space-4) 0}ha-input{margin:var(--ha-space-2) 0}`]}constructor(...t){super(...t),this.new=!1,this.disabled=!1}}(0,a.Cg)([(0,n.MZ)({attribute:!1})],u.prototype,"hass",void 0),(0,a.Cg)([(0,n.MZ)({type:Boolean})],u.prototype,"new",void 0),(0,a.Cg)([(0,n.MZ)({type:Boolean})],u.prototype,"disabled",void 0),(0,a.Cg)([(0,n.wk)()],u.prototype,"_name",void 0),(0,a.Cg)([(0,n.wk)()],u.prototype,"_icon",void 0),(0,a.Cg)([(0,n.P)("[dialogInitialFocus]")],u.prototype,"_focusElement",void 0),u=(0,a.Cg)([(0,n.EM)("ha-input_button-form")],u),s()}catch(t){s(t)}})},837(t,e,i){i.a(t,async function(t,s){try{i.r(e);i(74423);var a=i(62826),o=i(5124),n=i(22441),l=i(1087),r=i(64138),d=i(91485),h=(i(64013),i(92677),i(14503)),c=t([r,d]);[r,d]=c.then?(await c)():c;class u extends o.WF{set item(t){this._item=t,t?(this._name=t.name||"",this._icon=t.icon||"",this._mode=t.has_time&&t.has_date?"datetime":t.has_time?"time":"date",this._item.has_date=!t.has_date&&!t.has_time||t.has_date):(this._name="",this._icon="",this._mode="date")}focus(){this.updateComplete.then(()=>this._focusElement?.focus())}render(){return this.hass?o.qy` <div class="form"> <ha-input .value="${this._name}" .configValue="${"name"}" @input="${this._valueChanged}" .label="${this.hass.localize("ui.dialogs.helper_settings.generic.name")}" auto-validate required .validationMessage="${this.hass.localize("ui.dialogs.helper_settings.required_error_msg")}" dialogInitialFocus .disabled="${this.disabled}"></ha-input> <ha-icon-picker .hass="${this.hass}" .value="${this._icon}" .configValue="${"icon"}" @value-changed="${this._valueChanged}" .label="${this.hass.localize("ui.dialogs.helper_settings.generic.icon")}" .disabled="${this.disabled}"></ha-icon-picker> <ha-radio-group .label="${this.hass.localize("ui.dialogs.helper_settings.input_datetime.mode")}" .value="${this._mode}" .disabled="${this.disabled}" name="mode" @change="${this._modeChanged}"> <ha-radio-option value="date"> ${this.hass.localize("ui.dialogs.helper_settings.input_datetime.date")} </ha-radio-option> <ha-radio-option value="time"> ${this.hass.localize("ui.dialogs.helper_settings.input_datetime.time")} </ha-radio-option> <ha-radio-option value="datetime"> ${this.hass.localize("ui.dialogs.helper_settings.input_datetime.datetime")} </ha-radio-option> </ha-radio-group> </div> `:o.s6}_modeChanged(t){const e=String(t.currentTarget.value);(0,l.r)(this,"value-changed",{value:{...this._item,has_time:["time","datetime"].includes(e),has_date:["date","datetime"].includes(e)}})}_valueChanged(t){if(!this.new&&!this._item)return;t.stopPropagation();const e=t.target.configValue,i=t.detail?.value||t.target.value;if(this[`_${e}`]===i)return;const s={...this._item};i?s[e]=i:delete s[e],(0,l.r)(this,"value-changed",{value:s})}static get styles(){return[h.RF,o.AH`.form{color:var(--primary-text-color)}.row{padding:var(--ha-space-4) 0}ha-input{margin:var(--ha-space-2) 0}ha-radio-group{margin-top:var(--ha-space-5)}`]}constructor(...t){super(...t),this.new=!1,this.disabled=!1}}(0,a.Cg)([(0,n.MZ)({attribute:!1})],u.prototype,"hass",void 0),(0,a.Cg)([(0,n.MZ)({type:Boolean})],u.prototype,"new",void 0),(0,a.Cg)([(0,n.MZ)({type:Boolean})],u.prototype,"disabled",void 0),(0,a.Cg)([(0,n.wk)()],u.prototype,"_name",void 0),(0,a.Cg)([(0,n.wk)()],u.prototype,"_icon",void 0),(0,a.Cg)([(0,n.wk)()],u.prototype,"_mode",void 0),(0,a.Cg)([(0,n.P)("[dialogInitialFocus]")],u.prototype,"_focusElement",void 0),u=(0,a.Cg)([(0,n.EM)("ha-input_datetime-form")],u),s()}catch(t){s(t)}})},22514(t,e,i){i.a(t,async function(t,s){try{i.r(e);var a=i(62826),o=i(5124),n=i(22441),l=i(75751),r=i(1087),d=i(18350),h=i(26300),c=i(64138),u=(i(8630),i(28732),i(85938),i(67094),i(91485)),p=i(65063),g=i(14503),_=t([d,h,c,u]);[d,h,c,u]=_.then?(await _)():_;const m="M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z",v="M21 11H3V9H21V11M21 13H3V15H21V13Z",y="M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z";class b extends o.WF{_optionMoved(t){t.stopPropagation();const{oldIndex:e,newIndex:i}=t.detail,s=this._options.concat(),a=s.splice(e,1)[0];s.splice(i,0,a),(0,r.r)(this,"value-changed",{value:{...this._item,options:s}})}set item(t){this._item=t,t?(this._name=t.name||"",this._icon=t.icon||"",this._options=t.options||[]):(this._name="",this._icon="",this._options=[])}focus(){this.updateComplete.then(()=>this._focusElement?.focus())}render(){return this.hass?o.qy` <div class="form"> <ha-input dialogInitialFocus auto-validate required .validationMessage="${this.hass.localize("ui.dialogs.helper_settings.required_error_msg")}" .value="${this._name}" .label="${this.hass.localize("ui.dialogs.helper_settings.generic.name")}" .configValue="${"name"}" @input="${this._valueChanged}" .disabled="${this.disabled}"></ha-input> <ha-icon-picker .value="${this._icon}" .configValue="${"icon"}" @value-changed="${this._valueChanged}" .label="${this.hass.localize("ui.dialogs.helper_settings.generic.icon")}" .disabled="${this.disabled}"></ha-icon-picker> <div class="header"> ${this.hass.localize("ui.dialogs.helper_settings.input_select.options")}: </div> <ha-sortable @item-moved="${this._optionMoved}" handle-selector=".handle" .disabled="${this.disabled}"> <ha-list class="options"> ${this._options.length?(0,l.u)(this._options,t=>t,(t,e)=>o.qy` <ha-list-item class="option" hasMeta> <div class="optioncontent"> <div class="handle"> <ha-svg-icon .path="${v}"></ha-svg-icon> </div> ${t} </div> <ha-icon-button slot="meta" .index="${e}" .label="${this.hass.localize("ui.dialogs.helper_settings.input_select.remove_option")}" @click="${this._removeOption}" .disabled="${this.disabled}" .path="${m}"></ha-icon-button> </ha-list-item> `):o.s6} </ha-list> </ha-sortable> <div class="layout horizontal center"> <ha-input class="flex-auto" id="option_input" .label="${this.hass.localize("ui.dialogs.helper_settings.input_select.add_option")}" @keydown="${this._handleKeyAdd}" .disabled="${this.disabled}"></ha-input> <ha-button size="small" appearance="filled" @click="${this._addOption}" .disabled="${this.disabled}">${this.hass.localize("ui.dialogs.helper_settings.input_select.add")} <ha-svg-icon slot="start" .path="${y}"></ha-svg-icon> </ha-button> </div> </div> `:o.s6}_handleKeyAdd(t){t.stopPropagation(),"Enter"===t.key&&this._addOption()}_addOption(){const t=this._optionInput;t?.value&&((0,r.r)(this,"value-changed",{value:{...this._item,options:[...this._options,t.value]}}),t.value="")}async _removeOption(t){const e=t.target.index;if(!await(0,p.dk)(this,{title:this.hass.localize("ui.dialogs.helper_settings.input_select.confirm_delete.delete"),text:this.hass.localize("ui.dialogs.helper_settings.input_select.confirm_delete.prompt"),destructive:!0}))return;const i=[...this._options];i.splice(e,1),(0,r.r)(this,"value-changed",{value:{...this._item,options:i}})}_valueChanged(t){if(!this.new&&!this._item)return;t.stopPropagation();const e=t.target.configValue,i=t.detail?.value||t.target.value;if(this[`_${e}`]===i)return;const s={...this._item};i?s[e]=i:delete s[e],(0,r.r)(this,"value-changed",{value:s})}static get styles(){return[g.RF,o.AH`.form{color:var(--primary-text-color)}.option{border:1px solid var(--divider-color);border-radius:var(--ha-border-radius-sm);margin-top:var(--ha-space-1);--ha-icon-button-size:24px;--mdc-ripple-color:transparent;--mdc-list-side-padding:var(--ha-space-4);cursor:default;background-color:var(--card-background-color)}ha-input{--ha-input-padding-bottom:0}#option_input{margin-top:var(--ha-space-2)}.header{margin-top:var(--ha-space-2)}.handle{cursor:move;cursor:grab;padding-right:var(--ha-space-3);padding-inline-end:var(--ha-space-3);padding-inline-start:initial}.handle ha-svg-icon{pointer-events:none;height:24px}.optioncontent{display:flex;align-items:center}ha-icon-picker{display:block;margin-bottom:var(--ha-space-5)}ha-button{margin-inline-start:var(--ha-space-3);margin-top:var(--ha-space-1)}`]}constructor(...t){super(...t),this.new=!1,this.disabled=!1,this._options=[]}}(0,a.Cg)([(0,n.MZ)({attribute:!1})],b.prototype,"hass",void 0),(0,a.Cg)([(0,n.MZ)({type:Boolean})],b.prototype,"new",void 0),(0,a.Cg)([(0,n.MZ)({type:Boolean})],b.prototype,"disabled",void 0),(0,a.Cg)([(0,n.wk)()],b.prototype,"_name",void 0),(0,a.Cg)([(0,n.wk)()],b.prototype,"_icon",void 0),(0,a.Cg)([(0,n.wk)()],b.prototype,"_options",void 0),(0,a.Cg)([(0,n.P)("#option_input",!0)],b.prototype,"_optionInput",void 0),(0,a.Cg)([(0,n.P)("[dialogInitialFocus]")],b.prototype,"_focusElement",void 0),b=(0,a.Cg)([(0,n.EM)("ha-input_select-form")],b),s()}catch(t){s(t)}})},8431(t,e,i){i.a(t,async function(t,s){try{i.r(e);var a=i(62826),o=i(5124),n=i(22441),l=i(1087),r=(i(11382),i(52763)),d=i(64138),h=(i(64013),i(92677),i(91485)),c=i(14503),u=t([r,d,h]);[r,d,h]=u.then?(await u)():u;class p extends o.WF{set item(t){this._item=t,t?(this._name=t.name||"",this._icon=t.icon||"",this._max=t.max||100,this._min=t.min||0,this._mode=t.mode||"text",this._pattern=t.pattern):(this._name="",this._icon="",this._max=100,this._min=0,this._mode="text")}focus(){this.updateComplete.then(()=>this._focusElement?.focus())}render(){return this.hass?o.qy` <div class="form"> <ha-input .value="${this._name}" .configValue="${"name"}" @input="${this._valueChanged}" .label="${this.hass.localize("ui.dialogs.helper_settings.generic.name")}" auto-validate required .validationMessage="${this.hass.localize("ui.dialogs.helper_settings.required_error_msg")}" dialogInitialFocus .disabled="${this.disabled}"></ha-input> <ha-icon-picker .hass="${this.hass}" .value="${this._icon}" .configValue="${"icon"}" @value-changed="${this._valueChanged}" .label="${this.hass.localize("ui.dialogs.helper_settings.generic.icon")}" .disabled="${this.disabled}"></ha-icon-picker> <ha-expansion-panel header="${this.hass.localize("ui.dialogs.helper_settings.generic.advanced_settings")}" outlined> <ha-input .value="${void 0!==this._min?String(this._min):""}" .configValue="${"min"}" type="number" min="0" max="255" @input="${this._valueChanged}" .label="${this.hass.localize("ui.dialogs.helper_settings.input_text.min")}" .disabled="${this.disabled}"></ha-input> <ha-input .value="${void 0!==this._max?String(this._max):""}" .configValue="${"max"}" min="0" max="255" type="number" @input="${this._valueChanged}" .label="${this.hass.localize("ui.dialogs.helper_settings.input_text.max")}"></ha-input> <ha-radio-group orientation="horizontal" .label="${this.hass.localize("ui.dialogs.helper_settings.input_text.mode")}" .value="${this._mode}" .disabled="${this.disabled}" name="mode" @change="${this._modeChanged}"> <ha-radio-option value="text"> ${this.hass.localize("ui.dialogs.helper_settings.input_text.text")} </ha-radio-option> <ha-radio-option value="password"> ${this.hass.localize("ui.dialogs.helper_settings.input_text.password")} </ha-radio-option> </ha-radio-group> <ha-input .value="${this._pattern||""}" .configValue="${"pattern"}" @input="${this._valueChanged}" .label="${this.hass.localize("ui.dialogs.helper_settings.input_text.pattern_label")}" .hint="${this.hass.localize("ui.dialogs.helper_settings.input_text.pattern_helper")}" .disabled="${this.disabled}"></ha-input> </ha-expansion-panel> </div> `:o.s6}_modeChanged(t){(0,l.r)(this,"value-changed",{value:{...this._item,mode:t.currentTarget.value}})}_valueChanged(t){if(!this.new&&!this._item)return;t.stopPropagation();const e=t.target.configValue,i=t.detail?.value||t.target.value;if(this[`_${e}`]===i)return;const s={...this._item};i?s[e]=i:delete s[e],(0,l.r)(this,"value-changed",{value:s})}static get styles(){return[c.RF,o.AH`.form{color:var(--primary-text-color)}.row{padding:16px 0}ha-input{--ha-input-padding-bottom:0}ha-icon-picker,ha-input:not([required]){display:block;margin-bottom:var(--ha-space-5)}ha-expansion-panel ha-input:first-child{margin-top:var(--ha-space-4)}`]}constructor(...t){super(...t),this.new=!1,this.disabled=!1}}(0,a.Cg)([(0,n.MZ)({attribute:!1})],p.prototype,"hass",void 0),(0,a.Cg)([(0,n.MZ)({type:Boolean})],p.prototype,"new",void 0),(0,a.Cg)([(0,n.MZ)({type:Boolean})],p.prototype,"disabled",void 0),(0,a.Cg)([(0,n.wk)()],p.prototype,"_name",void 0),(0,a.Cg)([(0,n.wk)()],p.prototype,"_icon",void 0),(0,a.Cg)([(0,n.wk)()],p.prototype,"_max",void 0),(0,a.Cg)([(0,n.wk)()],p.prototype,"_min",void 0),(0,a.Cg)([(0,n.wk)()],p.prototype,"_mode",void 0),(0,a.Cg)([(0,n.wk)()],p.prototype,"_pattern",void 0),(0,a.Cg)([(0,n.P)("[dialogInitialFocus]")],p.prototype,"_focusElement",void 0),p=(0,a.Cg)([(0,n.EM)("ha-input_text-form")],p),s()}catch(t){s(t)}})},84226(t,e,i){i.a(t,async function(t,s){try{i.r(e);i(44114),i(18111),i(7588);var a=i(62826),o=i(3398),n=i(78871),l=i(29851),r=i(93464),d=i(66360),h=i(63723),c=i(92913),u=i(83309),p=i(5124),g=i(22441),_=i(380),m=i(30162),v=i(69543),y=i(1087),b=i(64138),f=i(91485),$=i(2247),x=i(46927),C=i(14503),w=i(18625),k=t([b,f,r,l,o,m]);[b,f,r,l,o,m]=k.then?(await k)():k;const z={plugins:[r.A,l.Ay],headerToolbar:!1,initialView:"timeGridWeek",editable:!0,selectable:!0,selectMirror:!0,selectOverlap:!1,eventOverlap:!1,allDaySlot:!1,height:"parent",locales:n.A,firstDay:1,dayHeaderFormat:{weekday:"short",month:void 0,day:void 0}};class M extends p.WF{set item(t){this._item=t,t?(this._name=t.name||"",this._icon=t.icon||"",this._monday=t.monday||[],this._tuesday=t.tuesday||[],this._wednesday=t.wednesday||[],this._thursday=t.thursday||[],this._friday=t.friday||[],this._saturday=t.saturday||[],this._sunday=t.sunday||[]):(this._name="",this._icon="",this._monday=[],this._tuesday=[],this._wednesday=[],this._thursday=[],this._friday=[],this._saturday=[],this._sunday=[])}disconnectedCallback(){super.disconnectedCallback(),this.calendar?.destroy(),this.calendar=void 0,this._fullCalendarStyle?.remove()}connectedCallback(){super.connectedCallback(),this.hasUpdated&&!this.calendar&&this._setupCalendar()}focus(){this.updateComplete.then(()=>this._focusElement?.focus())}render(){return this.hass?p.qy` <div class="form"> <ha-input .value="${this._name}" .configValue="${"name"}" @input="${this._valueChanged}" .label="${this.hass.localize("ui.dialogs.helper_settings.generic.name")}" auto-validate required .validationMessage="${this.hass.localize("ui.dialogs.helper_settings.required_error_msg")}" dialogInitialFocus .disabled="${this.disabled}"></ha-input> <ha-icon-picker .value="${this._icon}" .configValue="${"icon"}" @value-changed="${this._valueChanged}" .label="${this.hass.localize("ui.dialogs.helper_settings.generic.icon")}" .disabled="${this.disabled}"></ha-icon-picker> ${this.disabled?p.s6:p.qy`<div id="calendar"></div>`} </div> `:p.s6}willUpdate(t){if(super.willUpdate(t),!this.calendar)return;(t.has("_sunday")||t.has("_monday")||t.has("_tuesday")||t.has("_wednesday")||t.has("_thursday")||t.has("_friday")||t.has("_saturday")||t.has("calendar"))&&(this.calendar.removeAllEventSources(),this.calendar.addEventSource(this._events));const e=t.get("hass");e&&e.language!==this.hass.language&&this.calendar.setOption("locale",this.hass.language)}firstUpdated(){this.disabled||this._setupCalendar()}_setupCalendar(){const t={...z,locale:this.hass.language,firstDay:(0,_.P)(this.hass.locale),slotLabelFormat:{hour:"numeric",minute:void 0,hour12:(0,v.J)(this.hass.locale),meridiem:!!(0,v.J)(this.hass.locale)&&"narrow"},eventTimeFormat:{hour:(0,v.J)(this.hass.locale)?"numeric":"2-digit",minute:(0,v.J)(this.hass.locale)?"numeric":"2-digit",hour12:(0,v.J)(this.hass.locale),meridiem:!!(0,v.J)(this.hass.locale)&&"narrow"}};t.eventClick=t=>this._handleEventClick(t),t.select=t=>this._handleSelect(t),t.eventResize=t=>this._handleEventResize(t),t.eventDrop=t=>this._handleEventDrop(t),this.calendar=new o.Vv(this.shadowRoot.getElementById("calendar"),t),this.calendar.render()}get _events(){const t=[];for(const[e,i]of $.mx.entries())this[`_${i}`].length&&this[`_${i}`].forEach((s,a)=>{let o=(0,d.s)(new Date,e);(0,h.R)(o,new Date,{weekStartsOn:(0,_.P)(this.hass.locale)})||(o=(0,c.f)(o,-7));const n=new Date(o),l=s.from.split(":");n.setHours(parseInt(l[0]),parseInt(l[1]),0,0);const r=new Date(o),u=s.to.split(":");r.setHours(parseInt(u[0]),parseInt(u[1]),0,0),t.push({id:`${i}-${a}`,start:n.toISOString(),end:r.toISOString()})});return t}_handleSelect(t){const{start:e,end:i}=t,s=$.mx[e.getDay()],a=[...this[`_${s}`]],o={...this._item},n=(0,m.LW)(i,{...this.hass.locale,time_zone:x.Wj.local},this.hass.config);a.push({from:(0,m.LW)(e,{...this.hass.locale,time_zone:x.Wj.local},this.hass.config),to:(0,u.r)(e,i)&&"0:00"!==n?n:"24:00"}),o[s]=a,(0,y.r)(this,"value-changed",{value:o}),(0,u.r)(e,i)||this.calendar.unselect()}_handleEventResize(t){const{id:e,start:i,end:s}=t.event,[a,o]=e.split("-"),n=this[`_${a}`][parseInt(o)],l={...this._item},r=(0,m.LW)(s,this.hass.locale,this.hass.config);l[a][o]={...l[a][o],from:n.from,to:(0,u.r)(i,s)&&"0:00"!==r?r:"24:00"},(0,y.r)(this,"value-changed",{value:l}),(0,u.r)(i,s)||(this.requestUpdate(`_${a}`),t.revert())}_handleEventDrop(t){const{id:e,start:i,end:s}=t.event,[a,o]=e.split("-"),n=$.mx[i.getDay()],l={...this._item},r=(0,m.LW)(s,this.hass.locale,this.hass.config),d={...l[a][o],from:(0,m.LW)(i,this.hass.locale,this.hass.config),to:(0,u.r)(i,s)&&"0:00"!==r?r:"24:00"};if(n===a)l[a][o]=d;else{l[a].splice(o,1);const t=[...this[`_${n}`]];t.push(d),l[n]=t}(0,y.r)(this,"value-changed",{value:l}),(0,u.r)(i,s)||(this.requestUpdate(`_${a}`),t.revert())}async _handleEventClick(t){const[e,i]=t.event.id.split("-"),s=[...this[`_${e}`]][i];(0,w.c)(this,{block:s,updateBlock:t=>this._updateBlock(e,i,t),deleteBlock:()=>this._deleteBlock(e,i)})}_updateBlock(t,e,i){const[s,a,o]=i.from.split(":");i.from=`${s}:${a}`;const[n,l,r]=i.to.split(":");i.to=`${n}:${l}`,0===Number(n)&&0===Number(l)&&(i.to="24:00");const d={...this._item};d[t]=[...this._item[t]],d[t][e]=i,(0,y.r)(this,"value-changed",{value:d})}_deleteBlock(t,e){const i=[...this[`_${t}`]],s={...this._item};i.splice(parseInt(e),1),s[t]=i,(0,y.r)(this,"value-changed",{value:s})}_valueChanged(t){if(!this.new&&!this._item)return;t.stopPropagation();const e=t.target.configValue,i=t.detail?.value||t.target.value;if(this[`_${e}`]===i)return;const s={...this._item};i?s[e]=i:delete s[e],(0,y.r)(this,"value-changed",{value:s})}static get styles(){return[C.RF,p.AH`.form{color:var(--primary-text-color)}ha-input{margin:var(--ha-space-2) 0;--ha-input-padding-bottom:0}#calendar{margin:var(--ha-space-2) 0;height:450px;width:100%;-webkit-user-select:none;-ms-user-select:none;user-select:none;--fc-border-color:var(--divider-color);--fc-event-border-color:var(--divider-color)}.fc-v-event .fc-event-time{white-space:inherit}.fc-theme-standard .fc-scrollgrid{border:1px solid var(--divider-color);border-radius:var(--mdc-shape-small,4px)}.fc-scrollgrid-section-header td{border:none}:host([narrow]) .fc-scrollgrid-sync-table{overflow:hidden}table.fc-scrollgrid-sync-table tbody tr:first-child .fc-daygrid-day-top{padding-top:0}.fc-scroller::-webkit-scrollbar{width:.4rem;height:.4rem}.fc-scroller::-webkit-scrollbar-thumb{border-radius:var(--ha-border-radius-sm);background:var(--scrollbar-thumb-color)}.fc-scroller{overflow-y:auto;scrollbar-color:var(--scrollbar-thumb-color) transparent;scrollbar-width:thin}.fc-timegrid-event-short .fc-event-time:after{content:""}a{color:inherit!important}th.fc-col-header-cell.fc-day{background-color:var(--table-header-background-color);color:var(--primary-text-color);font-size:var(--ha-font-size-xs);font-weight:var(--ha-font-weight-bold);text-transform:uppercase}`]}constructor(...t){super(...t),this.new=!1,this.disabled=!1}}(0,a.Cg)([(0,g.MZ)({attribute:!1})],M.prototype,"hass",void 0),(0,a.Cg)([(0,g.MZ)({type:Boolean})],M.prototype,"new",void 0),(0,a.Cg)([(0,g.MZ)({type:Boolean})],M.prototype,"disabled",void 0),(0,a.Cg)([(0,g.wk)()],M.prototype,"_name",void 0),(0,a.Cg)([(0,g.wk)()],M.prototype,"_icon",void 0),(0,a.Cg)([(0,g.wk)()],M.prototype,"_monday",void 0),(0,a.Cg)([(0,g.wk)()],M.prototype,"_tuesday",void 0),(0,a.Cg)([(0,g.wk)()],M.prototype,"_wednesday",void 0),(0,a.Cg)([(0,g.wk)()],M.prototype,"_thursday",void 0),(0,a.Cg)([(0,g.wk)()],M.prototype,"_friday",void 0),(0,a.Cg)([(0,g.wk)()],M.prototype,"_saturday",void 0),(0,a.Cg)([(0,g.wk)()],M.prototype,"_sunday",void 0),(0,a.Cg)([(0,g.wk)()],M.prototype,"calendar",void 0),(0,a.Cg)([(0,g.P)("style[data-fullcalendar]")],M.prototype,"_fullCalendarStyle",void 0),(0,a.Cg)([(0,g.P)("[dialogInitialFocus]")],M.prototype,"_focusElement",void 0),M=(0,a.Cg)([(0,g.EM)("ha-schedule-form")],M),s()}catch(t){s(t)}})},14872(t,e,i){i.a(t,async function(t,s){try{i.r(e);var a=i(62826),o=i(5124),n=i(22441),l=i(57673),r=i(1087),d=(i(9503),i(39927)),h=i(64138),c=i(91485),u=i(14503),p=t([d,h,c]);[d,h,c]=p.then?(await p)():p;class g extends o.WF{set item(t){this._item=t,t?(this._name=t.name||"",this._icon=t.icon||"",this._duration=t.duration||"00:00:00",this._restore=t.restore||!1):(this._name="",this._icon="",this._duration="00:00:00",this._restore=!1),this._setDurationData()}focus(){this.updateComplete.then(()=>this._focusElement?.focus())}render(){return this.hass?o.qy` <div class="form"> <ha-input .value="${this._name}" .configValue="${"name"}" @input="${this._valueChanged}" .label="${this.hass.localize("ui.dialogs.helper_settings.generic.name")}" auto-validate required .validationMessage="${this.hass.localize("ui.dialogs.helper_settings.required_error_msg")}" dialogInitialFocus .disabled="${this.disabled}"></ha-input> <ha-icon-picker .hass="${this.hass}" .value="${this._icon}" .configValue="${"icon"}" @value-changed="${this._valueChanged}" .label="${this.hass.localize("ui.dialogs.helper_settings.generic.icon")}" .disabled="${this.disabled}"></ha-icon-picker> <ha-duration-input .configValue="${"duration"}" .data="${this._duration_data}" @value-changed="${this._valueChanged}" .disabled="${this.disabled}"></ha-duration-input> <ha-checkbox .configValue="${"restore"}" .checked="${this._restore}" @change="${this._toggleRestore}" .disabled="${this.disabled}"> ${this.hass.localize("ui.dialogs.helper_settings.timer.restore")} </ha-checkbox> </div> `:o.s6}_valueChanged(t){if(!this.new&&!this._item)return;t.stopPropagation();const e=t.target.configValue,i=t.detail?.value||t.target.value;if(this[`_${e}`]===i)return;const s={...this._item};i?s[e]=i:delete s[e],(0,r.r)(this,"value-changed",{value:s})}_toggleRestore(t){this._restore=t.target.checked,(0,r.r)(this,"value-changed",{value:{...this._item,restore:this._restore}})}_setDurationData(){let t;if("object"==typeof this._duration&&null!==this._duration){const e=this._duration;t={hours:"string"==typeof e.hours?parseFloat(e.hours):e.hours,minutes:"string"==typeof e.minutes?parseFloat(e.minutes):e.minutes,seconds:"string"==typeof e.seconds?parseFloat(e.seconds):e.seconds}}else t=this._duration;this._duration_data=(0,l.z)(t)}static get styles(){return[u.RF,o.AH`.form{color:var(--primary-text-color)}ha-duration-input{display:block;margin:8px 0}ha-checkbox{min-height:40px;justify-content:center}`]}constructor(...t){super(...t),this.new=!1,this.disabled=!1}}(0,a.Cg)([(0,n.MZ)({attribute:!1})],g.prototype,"hass",void 0),(0,a.Cg)([(0,n.MZ)({type:Boolean})],g.prototype,"new",void 0),(0,a.Cg)([(0,n.MZ)({type:Boolean})],g.prototype,"disabled",void 0),(0,a.Cg)([(0,n.wk)()],g.prototype,"_name",void 0),(0,a.Cg)([(0,n.wk)()],g.prototype,"_icon",void 0),(0,a.Cg)([(0,n.wk)()],g.prototype,"_duration",void 0),(0,a.Cg)([(0,n.wk)()],g.prototype,"_duration_data",void 0),(0,a.Cg)([(0,n.wk)()],g.prototype,"_restore",void 0),(0,a.Cg)([(0,n.P)("[dialogInitialFocus]")],g.prototype,"_focusElement",void 0),g=(0,a.Cg)([(0,n.EM)("ha-timer-form")],g),s()}catch(t){s(t)}})},18625(t,e,i){i.d(e,{c:()=>o});var s=i(1087);const a=()=>i.e(81476).then(i.bind(i,70319)),o=(t,e)=>{(0,s.r)(t,"show-dialog",{dialogTag:"dialog-schedule-block-info",dialogImport:a,dialogParams:e})}},95341(t,e,i){i.a(t,async function(t,e){try{i(74423),i(18111),i(22489),i(61701);var s=i(62826),a=i(5124),o=i(22441),n=i(22786),l=i(36312),r=i(1087),d=i(28978),h=i(84446),c=i(38962),u=i(832),p=(i(9503),i(2846),i(59646)),g=(i(61037),i(53211)),_=i(71117),m=i(59241),v=i(14782),y=i(56982),b=i(54706),f=i(14503),$=i(36918),x=t([c,u,p]);[c,u,p]=x.then?(await x)():x;const C="M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z";class w extends((0,b.E)(a.WF)){willUpdate(t){(0,l.x)(this.hass.config,"cloud")&&(t.has("entityId")&&this.entityId&&this._fetchEntities(),this.hasUpdated||(0,_.eN)(this.hass).then(t=>{this._cloudStatus=t}))}async _fetchEntities(){try{const t=await(0,y.kz)(this.hass,this.entityId);this._googleEntity=t,this.requestUpdate("_googleEntity")}catch(t){"not_supported"===t.code&&(this._unsupported["cloud.google_assistant"]=!0,this.requestUpdate("_unsupported"))}try{await(0,g.Gk)(this.hass,this.entityId)}catch(t){"not_supported"===t.code&&(this._unsupported["cloud.alexa"]=!0,this.requestUpdate("_unsupported"))}}render(){const t=!0===this._cloudStatus?.logged_in&&!0===this._cloudStatus.prefs.google_enabled,e=!0===this._cloudStatus?.logged_in&&!0===this._cloudStatus.prefs.alexa_enabled,i=[...Object.keys(v.aK)],s=[...i],o=e&&!(0,h.z)(this._cloudStatus.alexa_entities),n=t&&!(0,h.z)(this._cloudStatus.google_entities);t?n&&s.splice(s.indexOf("cloud.google_assistant"),1):(i.splice(i.indexOf("cloud.google_assistant"),1),s.splice(i.indexOf("cloud.google_assistant"),1)),e?o&&s.splice(s.indexOf("cloud.alexa"),1):(i.splice(i.indexOf("cloud.alexa"),1),s.splice(s.indexOf("cloud.alexa"),1));const l=s.some(t=>this.exposed[t]);let r;(o||n)&&(r=this._getEntityFilterFuncs(this._cloudStatus.google_entities,this._cloudStatus.alexa_entities));const c=o&&r.alexa(this.entityId),u=n&&r.google(this.entityId),p=l||c||u;return a.qy` <ha-md-list-item> <h3 slot="headline"> ${this.hass.localize("ui.dialogs.voice-settings.expose_header")} </h3> <ha-switch slot="end" @change="${this._toggleAll}" .assistants="${s}" .checked="${p}"></ha-switch> </ha-md-list-item> ${p?i.map(t=>{const e=!this._unsupported[t],i=o&&"cloud.alexa"===t?c:n&&"cloud.google_assistant"===t?u:this.exposed[t],s=o&&"cloud.alexa"===t||n&&"cloud.google_assistant"===t,l="cloud.google_assistant"===t&&!n&&e&&this._googleEntity?.might_2fa;return a.qy` <ha-md-list-item> <voice-assistant-brand-icon slot="start" .voiceAssistantId="${t}" .hass="${this.hass}"> </voice-assistant-brand-icon> <span slot="headline">${v.aK[t].name}</span> ${e?a.s6:a.qy`<div slot="supporting-text" class="unsupported"> <ha-svg-icon .path="${C}"></ha-svg-icon> ${this.hass.localize("ui.dialogs.voice-settings.unsupported")} </div>`} ${s?a.qy` <div slot="supporting-text"> ${this.hass.localize("ui.dialogs.voice-settings.manual_config")} </div> `:a.s6} ${l?a.qy` <ha-checkbox slot="supporting-text" .checked="${!this._googleEntity.disable_2fa}" @change="${this._2faChanged}"> ${this.hass.localize("ui.dialogs.voice-settings.ask_pin")} </ha-checkbox> `:a.s6} <ha-switch slot="end" .assistant="${t}" @change="${this._toggleAssistant}" .disabled="${s||!i&&!e}" .checked="${i}"></ha-switch> </ha-md-list-item> `}):a.s6} <h3 class="header"> ${this.hass.localize("ui.dialogs.voice-settings.aliases_header")} </h3> <p class="description"> ${this.hass.localize("ui.dialogs.voice-settings.aliases_description")} </p> ${this.entry?a.qy` <ha-md-list-item> <span slot="headline"> ${this.hass.states[this.entityId]?(0,d.u)(this.hass.states[this.entityId]):this.entityId} </span> <span slot="supporting-text"> ${this.hass.localize("ui.dialogs.voice-settings.entity_name_alias_description")} </span> <ha-switch slot="end" .checked="${(this._aliases??this.entry.aliases).includes(null)}" @change="${this._toggleEntityNameAlias}"></ha-switch> </ha-md-list-item> <ha-aliases-editor .hass="${this.hass}" .aliases="${(this._aliases??this.entry.aliases).filter(t=>null!==t)}" sortable @value-changed="${this._aliasesChanged}"></ha-aliases-editor> `:a.qy`<ha-alert alert-type="warning"> ${this.hass.localize("ui.dialogs.voice-settings.aliases_no_unique_id",{faq_link:a.qy`<a href="${(0,$.o)(this.hass,"/faq/unique_id")}" target="_blank" rel="noreferrer">${this.hass.localize("ui.dialogs.entity_registry.faq")}</a>`})} </ha-alert>`} `}async _toggleEntityNameAlias(t){const e=t.target.checked,i=this._aliases??this.entry?.aliases??[];this._aliases=e?[null,...i.filter(t=>null!==t)]:i.filter(t=>null!==t),await this._saveAliases()}_aliasesChanged(t){const e=(this._aliases??this.entry?.aliases??[]).includes(null)?[null]:[],i=t.detail.value;this._aliases=[...e,...i],this._saveAliases()}async _2faChanged(t){try{await(0,_.p1)(this.hass,this.entityId,!t.target.checked)}catch(e){t.target.checked=!t.target.checked}}async _saveAliases(){if(!this._aliases)return;const t=this._aliases.includes(null)?[null]:[],e=this._aliases.filter(t=>null!==t).map(t=>t.trim()).filter(t=>t),i=await(0,m.G_)(this.hass,this.entityId,{aliases:[...t,...e]});(0,r.r)(this,"entity-entry-updated",i.entity_entry)}async _toggleAssistant(t){if((0,v.ij)(this.hass,[t.target.assistant],[this.entityId],t.target.checked),this.entry){const t=await(0,m.v)(this.hass,this.entityId);(0,r.r)(this,"entity-entry-updated",t)}(0,r.r)(this,"exposed-entities-changed")}async _toggleAll(t){const e=t.target.checked?t.target.assistants.filter(t=>!this._unsupported[t]):t.target.assistants;if((0,v.ij)(this.hass,e,[this.entityId],t.target.checked),this.entry){const t=await(0,m.v)(this.hass,this.entityId);(0,r.r)(this,"entity-entry-updated",t)}(0,r.r)(this,"exposed-entities-changed")}static get styles(){return[f.RF,a.AH`:host{display:block;margin:32px;margin-top:0}ha-md-list-item{--md-list-item-leading-space:0;--md-list-item-trailing-space:0;--md-item-overflow:visible}img{height:32px;width:32px;margin-right:16px;margin-inline-end:16px;margin-inline-start:initial}ha-aliases-editor{display:block}ha-alert{display:block;margin-top:16px}.unsupported{display:flex;align-items:center}.unsupported ha-svg-icon{color:var(--error-color);--mdc-icon-size:16px;margin-right:4px;margin-inline-end:4px;margin-inline-start:initial}.header{margin-top:8px;margin-bottom:4px}.description{color:var(--secondary-text-color);font-size:var(--ha-font-size-m);line-height:var(--ha-line-height-condensed);margin-top:0;margin-bottom:16px}`]}constructor(...t){super(...t),this._unsupported={},this._getEntityFilterFuncs=(0,n.A)((t,e)=>({google:(0,h.p)(t.include_domains,t.include_entities,t.exclude_domains,t.exclude_entities),alexa:(0,h.p)(e.include_domains,e.include_entities,e.exclude_domains,e.exclude_entities)}))}}(0,s.Cg)([(0,o.MZ)({attribute:!1})],w.prototype,"hass",void 0),(0,s.Cg)([(0,o.MZ)({attribute:!1})],w.prototype,"entityId",void 0),(0,s.Cg)([(0,o.MZ)({attribute:!1})],w.prototype,"exposed",void 0),(0,s.Cg)([(0,o.MZ)({attribute:!1})],w.prototype,"entry",void 0),(0,s.Cg)([(0,o.wk)()],w.prototype,"_cloudStatus",void 0),(0,s.Cg)([(0,o.wk)()],w.prototype,"_aliases",void 0),(0,s.Cg)([(0,o.wk)()],w.prototype,"_googleEntity",void 0),(0,s.Cg)([(0,o.wk)()],w.prototype,"_unsupported",void 0),w=(0,s.Cg)([(0,o.EM)("entity-voice-settings")],w),e()}catch(t){e(t)}})},22395(t,e,i){var s=i(5124),a=i(22441),o=i(717),n=s.AH`:host{display:inline-flex}.button-group{display:flex;position:relative;isolation:isolate;flex-wrap:wrap}@media (hover:hover){.button-group::slotted(:hover),.button-group>:hover{z-index:1}}.button-group::slotted(:focus),.button-group::slotted([aria-checked=true]),.button-group::slotted([checked]),.button-group>:focus,.button-group>[aria-checked=true],.button-group>[checked]{z-index:2!important}:host([orientation=horizontal]) .button-group{flex-direction:row}:host([orientation=vertical]) .button-group{flex-direction:column}:host([orientation=horizontal]){--_button-horizontal-indent:var(--wa-form-control-border-width);--_button-horizontal-indent-outlined:calc(var(--wa-form-control-border-width) * -1)}:host([orientation=vertical]){--_button-vertical-indent:var(--wa-form-control-border-width);--_button-vertical-indent-outlined:calc(var(--wa-form-control-border-width) * -1)}::slotted(:not(:first-child):not(:last-child)){--_button-start-start-radius:0;--_button-start-end-radius:0;--_button-end-start-radius:0;--_button-end-end-radius:0}:host([orientation=horizontal]) ::slotted(:first-child:not(:last-child)){--_button-start-end-radius:0;--_button-end-end-radius:0}:host([orientation=horizontal]) ::slotted(:last-child:not(:first-child)){--_button-start-start-radius:0;--_button-end-start-radius:0}:host([orientation=vertical]) ::slotted(:first-child:not(:last-child)){--_button-end-start-radius:0;--_button-end-end-radius:0}:host([orientation=vertical]) ::slotted(:last-child:not(:first-child)){--_button-start-start-radius:0;--_button-start-end-radius:0}`,l=Object.defineProperty,r=Object.getOwnPropertyDescriptor,d=(t,e,i,s)=>{for(var a,o=s>1?void 0:s?r(e,i):e,n=t.length-1;n>=0;n--)(a=t[n])&&(o=(s?a(e,i,o):a(o))||o);return s&&o&&l(e,i,o),o};let h=class extends o.A{updated(t){super.updated(t),t.has("orientation")&&this.setAttribute("aria-orientation",this.orientation)}handleFocus(t){const e=c(t.target,this.childSelector);e?.classList.add("button-focus")}handleBlur(t){const e=c(t.target,this.childSelector);e?.classList.remove("button-focus")}handleMouseOver(t){const e=c(t.target,this.childSelector);e?.classList.add("button-hover")}handleMouseOut(t){const e=c(t.target,this.childSelector);e?.classList.remove("button-hover")}render(){return s.qy` <slot part="base" class="button-group" role="${this.disableRole?"presentation":"group"}" aria-label="${this.label}" aria-orientation="${this.orientation}" @focusout="${this.handleBlur}" @focusin="${this.handleFocus}" @mouseover="${this.handleMouseOver}" @mouseout="${this.handleMouseOut}"></slot> `}constructor(){super(...arguments),this.disableRole=!1,this.hasOutlined=!1,this.label="",this.orientation="horizontal",this.childSelector="wa-button, wa-radio-button"}};function c(t,e){return t.closest(e)??t.querySelector(e)}h.css=[n],d([(0,a.P)("slot")],h.prototype,"defaultSlot",2),d([(0,a.wk)()],h.prototype,"disableRole",2),d([(0,a.wk)()],h.prototype,"hasOutlined",2),d([(0,a.MZ)()],h.prototype,"label",2),d([(0,a.MZ)({reflect:!0})],h.prototype,"orientation",2),d([(0,a.MZ)()],h.prototype,"childSelector",2),h=d([(0,a.EM)("wa-button-group")],h)}};