iobroker.lovelace
Version:
With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI
2 lines • 37.1 kB
JavaScript
export const __webpack_ids__=["88361"];export const __webpack_modules__={86431:function(e,i,t){t.d(i,{jL:()=>o,wZ:()=>n});var a=t(47194);const o=e=>(e.name_by_user||e.name)?.trim(),n=(e,i,t)=>o(e)||t&&d(i,t)||i.localize("ui.panel.config.devices.unnamed_device",{type:i.localize(`ui.panel.config.devices.type.${e.entry_type||"device"}`)}),d=(e,i)=>{for(const t of i||[]){const i="string"==typeof t?t:t.entity_id,o=e.states[i];if(o)return(0,a.C)(o)}}},98157:function(e,i,t){var a=t(44249),o=(t(9359),t(68107),t(56475),t(70104),t(52924),t(57243)),n=t(15093),d=t(27486),l=t(36522),s=t(86431),r=t(73850),c=t(1416),h=t(24360),u=t(46329);t(94279),t(7285);const v=e=>o.dy`<ha-list-item .twoline="${!!e.area}"> <span>${e.name}</span> <span slot="secondary">${e.area}</span> </ha-list-item>`;(0,a.Z)([(0,n.Mo)("ha-device-picker")],(function(e,i){return{F:class extends i{constructor(...i){super(...i),e(this)}},d:[{kind:"field",decorators:[(0,n.Cb)({attribute:!1})],key:"hass",value:void 0},{kind:"field",decorators:[(0,n.Cb)()],key:"label",value:void 0},{kind:"field",decorators:[(0,n.Cb)()],key:"value",value:void 0},{kind:"field",decorators:[(0,n.Cb)()],key:"helper",value:void 0},{kind:"field",decorators:[(0,n.Cb)({type:Array,attribute:"include-domains"})],key:"includeDomains",value:void 0},{kind:"field",decorators:[(0,n.Cb)({type:Array,attribute:"exclude-domains"})],key:"excludeDomains",value:void 0},{kind:"field",decorators:[(0,n.Cb)({type:Array,attribute:"include-device-classes"})],key:"includeDeviceClasses",value:void 0},{kind:"field",decorators:[(0,n.Cb)({type:Array,attribute:"exclude-devices"})],key:"excludeDevices",value:void 0},{kind:"field",decorators:[(0,n.Cb)({attribute:!1})],key:"deviceFilter",value:void 0},{kind:"field",decorators:[(0,n.Cb)({attribute:!1})],key:"entityFilter",value:void 0},{kind:"field",decorators:[(0,n.Cb)({type:Boolean})],key:"disabled",value:()=>!1},{kind:"field",decorators:[(0,n.Cb)({type:Boolean})],key:"required",value:()=>!1},{kind:"field",decorators:[(0,n.SB)()],key:"_opened",value:void 0},{kind:"field",decorators:[(0,n.IO)("ha-combo-box",!0)],key:"comboBox",value:void 0},{kind:"field",key:"_init",value:()=>!1},{kind:"field",key:"_getDevices",value(){return(0,d.Z)(((e,i,t,a,o,n,d,l,h)=>{if(!e.length)return[{id:"no_devices",area:"",name:this.hass.localize("ui.components.device-picker.no_devices"),strings:[]}];let v={};(a||o||n||l)&&(v=(0,u.R6)(t));let p=e.filter((e=>e.id===this.value||!e.disabled_by));a&&(p=p.filter((e=>{const i=v[e.id];return!(!i||!i.length)&&v[e.id].some((e=>a.includes((0,r.M)(e.entity_id))))}))),o&&(p=p.filter((e=>{const i=v[e.id];return!i||!i.length||t.every((e=>!o.includes((0,r.M)(e.entity_id))))}))),h&&(p=p.filter((e=>!h.includes(e.id)))),n&&(p=p.filter((e=>{const i=v[e.id];return!(!i||!i.length)&&v[e.id].some((e=>{const i=this.hass.states[e.entity_id];return!!i&&(i.attributes.device_class&&n.includes(i.attributes.device_class))}))}))),l&&(p=p.filter((e=>{const i=v[e.id];return!(!i||!i.length)&&i.some((e=>{const i=this.hass.states[e.entity_id];return!!i&&l(i)}))}))),d&&(p=p.filter((e=>e.id===this.value||d(e))));const f=p.map((e=>{const t=(0,s.wZ)(e,this.hass,v[e.id]);return{id:e.id,name:t||this.hass.localize("ui.components.device-picker.unnamed_device"),area:e.area_id&&i[e.area_id]?i[e.area_id].name:this.hass.localize("ui.components.device-picker.no_area"),strings:[t||""]}}));return f.length?1===f.length?f:f.sort(((e,i)=>(0,c.$K)(e.name||"",i.name||"",this.hass.locale.language))):[{id:"no_devices",area:"",name:this.hass.localize("ui.components.device-picker.no_match"),strings:[]}]}))}},{kind:"method",key:"open",value:async function(){await this.updateComplete,await(this.comboBox?.open())}},{kind:"method",key:"focus",value:async function(){await this.updateComplete,await(this.comboBox?.focus())}},{kind:"method",key:"updated",value:function(e){if(!this._init&&this.hass||this._init&&e.has("_opened")&&this._opened){this._init=!0;const e=this._getDevices(Object.values(this.hass.devices),this.hass.areas,Object.values(this.hass.entities),this.includeDomains,this.excludeDomains,this.includeDeviceClasses,this.deviceFilter,this.entityFilter,this.excludeDevices);this.comboBox.items=e,this.comboBox.filteredItems=e}}},{kind:"method",key:"render",value:function(){return o.dy` <ha-combo-box .hass="${this.hass}" .label="${void 0===this.label&&this.hass?this.hass.localize("ui.components.device-picker.device"):this.label}" .value="${this._value}" .helper="${this.helper}" .renderer="${v}" .disabled="${this.disabled}" .required="${this.required}" item-id-path="id" item-value-path="id" item-label-path="name" -changed="${this._openedChanged}" -changed="${this._deviceChanged}" -changed="${this._filterChanged}"></ha-combo-box> `}},{kind:"get",key:"_value",value:function(){return this.value||""}},{kind:"method",key:"_filterChanged",value:function(e){const i=e.target,t=e.detail.value.toLowerCase();i.filteredItems=t.length?(0,h.q)(t,i.items||[]):i.items}},{kind:"method",key:"_deviceChanged",value:function(e){e.stopPropagation();let i=e.detail.value;"no_devices"===i&&(i=""),i!==this._value&&this._setValue(i)}},{kind:"method",key:"_openedChanged",value:function(e){this._opened=e.detail.value}},{kind:"method",key:"_setValue",value:function(e){this.value=e,setTimeout((()=>{(0,l.B)(this,"value-changed",{value:e}),(0,l.B)(this,"change")}),0)}}]}}),o.oi)},34273:function(e,i,t){var a=t(44249),o=t(72621),n=(t(9359),t(31526),t(22997),t(57243)),d=t(15093),l=t(5111),s=t(76525);(0,a.Z)([(0,d.Mo)("ha-button-menu")],(function(e,i){class t extends i{constructor(...i){super(...i),e(this)}}return{F:t,d:[{kind:"field",key:s.gA,value:void 0},{kind:"field",decorators:[(0,d.Cb)()],key:"corner",value:()=>"BOTTOM_START"},{kind:"field",decorators:[(0,d.Cb)({attribute:"menu-corner"})],key:"menuCorner",value:()=>"START"},{kind:"field",decorators:[(0,d.Cb)({type:Number})],key:"x",value:()=>null},{kind:"field",decorators:[(0,d.Cb)({type:Number})],key:"y",value:()=>null},{kind:"field",decorators:[(0,d.Cb)({type:Boolean})],key:"multi",value:()=>!1},{kind:"field",decorators:[(0,d.Cb)({type:Boolean})],key:"activatable",value:()=>!1},{kind:"field",decorators:[(0,d.Cb)({type:Boolean})],key:"disabled",value:()=>!1},{kind:"field",decorators:[(0,d.Cb)({type:Boolean})],key:"fixed",value:()=>!1},{kind:"field",decorators:[(0,d.Cb)({type:Boolean,attribute:"no-anchor"})],key:"noAnchor",value:()=>!1},{kind:"field",decorators:[(0,d.IO)("mwc-menu",!0)],key:"_menu",value:void 0},{kind:"get",key:"items",value:function(){return this._menu?.items}},{kind:"get",key:"selected",value:function(){return this._menu?.selected}},{kind:"method",key:"focus",value:function(){this._menu?.open?this._menu.focusItemAtIndex(0):this._triggerButton?.focus()}},{kind:"method",key:"render",value:function(){return n.dy` <div ="${this._handleClick}"> <slot name="trigger" ="${this._setTriggerAria}"></slot> </div> <mwc-menu .corner="${this.corner}" .menuCorner="${this.menuCorner}" .fixed="${this.fixed}" .multi="${this.multi}" .activatable="${this.activatable}" .y="${this.y}" .x="${this.x}"> <slot></slot> </mwc-menu> `}},{kind:"method",key:"firstUpdated",value:function(e){(0,o.Z)(t,"firstUpdated",this,3)([e]),"rtl"===l.E.document.dir&&this.updateComplete.then((()=>{this.querySelectorAll("mwc-list-item").forEach((e=>{const i=document.createElement("style");i.innerHTML="span.material-icons:first-of-type { margin-left: var(--mdc-list-item-graphic-margin, 32px) !important; margin-right: 0px !important;}",e.shadowRoot.appendChild(i)}))}))}},{kind:"method",key:"_handleClick",value:function(){this.disabled||(this._menu.anchor=this.noAnchor?null:this,this._menu.show())}},{kind:"get",key:"_triggerButton",value:function(){return this.querySelector('ha-icon-button[slot="trigger"], mwc-button[slot="trigger"]')}},{kind:"method",key:"_setTriggerAria",value:function(){this._triggerButton&&(this._triggerButton.ariaHasPopup="menu")}},{kind:"field",static:!0,key:"styles",value:()=>n.iv`:host{display:inline-block;position:relative}::slotted([disabled]){color:var(--disabled-text-color)}`}]}}),n.oi)},83456:function(e,i,t){var a=t(44249),o=t(92444),n=t(76688),d=t(57243),l=t(15093);(0,a.Z)([(0,l.Mo)("ha-checkbox")],(function(e,i){return{F:class extends i{constructor(...i){super(...i),e(this)}},d:[{kind:"field",static:!0,key:"styles",value:()=>[n.W,d.iv`:host{--mdc-theme-secondary:var(--primary-color)}`]}]}}),o.A)},94279:function(e,i,t){var a=t(44249),o=t(72621),n=(t(9359),t(31526),t(2394)),d=(t(30080),t(43631)),l=t(57243),s=t(15093),r=t(20552),c=t(36522);t(23334),t(7285),t(83166);(0,d.hC)("vaadin-combo-box-item",l.iv`:host{padding:0!important}:host([focused]:not([disabled])){background-color:rgba(var(--rgb-primary-text-color,0,0,0),.12)}:host([selected]:not([disabled])){background-color:transparent;color:var(--mdc-theme-primary);--mdc-ripple-color:var(--mdc-theme-primary);--mdc-theme-text-primary-on-background:var(--mdc-theme-primary)}:host([selected]:not([disabled])):before{background-color:var(--mdc-theme-primary);opacity:.12;content:"";position:absolute;top:0;left:0;width:100%;height:100%}:host([selected][focused]:not([disabled])):before{opacity:.24}:host(:hover:not([disabled])){background-color:transparent}[part=content]{width:100%}[part=checkmark]{display:none}`);(0,a.Z)([(0,s.Mo)("ha-combo-box")],(function(e,i){class t extends i{constructor(...i){super(...i),e(this)}}return{F:t,d:[{kind:"field",decorators:[(0,s.Cb)({attribute:!1})],key:"hass",value:void 0},{kind:"field",decorators:[(0,s.Cb)()],key:"label",value:void 0},{kind:"field",decorators:[(0,s.Cb)()],key:"value",value:void 0},{kind:"field",decorators:[(0,s.Cb)()],key:"placeholder",value:void 0},{kind:"field",decorators:[(0,s.Cb)({attribute:!1})],key:"validationMessage",value:void 0},{kind:"field",decorators:[(0,s.Cb)()],key:"helper",value:void 0},{kind:"field",decorators:[(0,s.Cb)({attribute:"error-message"})],key:"errorMessage",value:void 0},{kind:"field",decorators:[(0,s.Cb)({type:Boolean})],key:"invalid",value:()=>!1},{kind:"field",decorators:[(0,s.Cb)({type:Boolean})],key:"icon",value:()=>!1},{kind:"field",decorators:[(0,s.Cb)({attribute:!1})],key:"items",value:void 0},{kind:"field",decorators:[(0,s.Cb)({attribute:!1})],key:"filteredItems",value:void 0},{kind:"field",decorators:[(0,s.Cb)({attribute:!1})],key:"dataProvider",value:void 0},{kind:"field",decorators:[(0,s.Cb)({attribute:"allow-custom-value",type:Boolean})],key:"allowCustomValue",value:()=>!1},{kind:"field",decorators:[(0,s.Cb)({attribute:"item-value-path"})],key:"itemValuePath",value:()=>"value"},{kind:"field",decorators:[(0,s.Cb)({attribute:"item-label-path"})],key:"itemLabelPath",value:()=>"label"},{kind:"field",decorators:[(0,s.Cb)({attribute:"item-id-path"})],key:"itemIdPath",value:void 0},{kind:"field",decorators:[(0,s.Cb)({attribute:!1})],key:"renderer",value:void 0},{kind:"field",decorators:[(0,s.Cb)({type:Boolean})],key:"disabled",value:()=>!1},{kind:"field",decorators:[(0,s.Cb)({type:Boolean})],key:"required",value:()=>!1},{kind:"field",decorators:[(0,s.Cb)({type:Boolean,reflect:!0})],key:"opened",value:()=>!1},{kind:"field",decorators:[(0,s.IO)("vaadin-combo-box-light",!0)],key:"_comboBox",value:void 0},{kind:"field",decorators:[(0,s.IO)("ha-textfield",!0)],key:"_inputElement",value:void 0},{kind:"field",key:"_overlayMutationObserver",value:void 0},{kind:"field",key:"_bodyMutationObserver",value:void 0},{kind:"method",key:"open",value:async function(){await this.updateComplete,this._comboBox?.open()}},{kind:"method",key:"focus",value:async function(){await this.updateComplete,await(this._inputElement?.updateComplete),this._inputElement?.focus()}},{kind:"method",key:"disconnectedCallback",value:function(){(0,o.Z)(t,"disconnectedCallback",this,3)([]),this._overlayMutationObserver&&(this._overlayMutationObserver.disconnect(),this._overlayMutationObserver=void 0),this._bodyMutationObserver&&(this._bodyMutationObserver.disconnect(),this._bodyMutationObserver=void 0)}},{kind:"get",key:"selectedItem",value:function(){return this._comboBox.selectedItem}},{kind:"method",key:"setInputValue",value:function(e){this._comboBox.value=e}},{kind:"method",key:"render",value:function(){return l.dy` <vaadin-combo-box-light .itemValuePath="${this.itemValuePath}" .itemIdPath="${this.itemIdPath}" .itemLabelPath="${this.itemLabelPath}" .items="${this.items}" .value="${this.value||""}" .filteredItems="${this.filteredItems}" .dataProvider="${this.dataProvider}" .allowCustomValue="${this.allowCustomValue}" .disabled="${this.disabled}" .required="${this.required}" ${(0,n.t)(this.renderer||this._defaultRowRenderer)} -changed="${this._openedChanged}" -changed="${this._filterChanged}" -changed="${this._valueChanged}" attr-for-value="value"> <ha-textfield label="${(0,r.o)(this.label)}" placeholder="${(0,r.o)(this.placeholder)}" ?disabled="${this.disabled}" ?required="${this.required}" validationMessage="${(0,r.o)(this.validationMessage)}" .errorMessage="${this.errorMessage}" class="input" autocapitalize="none" autocomplete="off" autocorrect="off" input-spellcheck="false" .suffix="${l.dy`<div style="width:28px" role="none presentation"></div>`}" .icon="${this.icon}" .invalid="${this.invalid}" .helper="${this.helper}" helperPersistent> <slot name="icon" slot="leadingIcon"></slot> </ha-textfield> ${this.value?l.dy`<ha-svg-icon role="button" tabindex="-1" aria-label="${(0,r.o)(this.hass?.localize("ui.common.clear"))}" class="clear-button" .path="${"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"}" ="${this._clearValue}"></ha-svg-icon>`:""} <ha-svg-icon role="button" tabindex="-1" aria-label="${(0,r.o)(this.label)}" aria-expanded="${this.opened?"true":"false"}" class="toggle-button" .path="${this.opened?"M7,15L12,10L17,15H7Z":"M7,10L12,15L17,10H7Z"}" ="${this._toggleOpen}"></ha-svg-icon> </vaadin-combo-box-light> `}},{kind:"field",key:"_defaultRowRenderer",value(){return e=>l.dy`<ha-list-item> ${this.itemLabelPath?e[this.itemLabelPath]:e} </ha-list-item>`}},{kind:"method",key:"_clearValue",value:function(e){e.stopPropagation(),(0,c.B)(this,"value-changed",{value:void 0})}},{kind:"method",key:"_toggleOpen",value:function(e){this.opened?(this._comboBox?.close(),e.stopPropagation()):this._comboBox?.inputElement.focus()}},{kind:"method",key:"_openedChanged",value:function(e){e.stopPropagation();const i=e.detail.value;if(setTimeout((()=>{this.opened=i}),0),(0,c.B)(this,"opened-changed",{value:e.detail.value}),i){const e=document.querySelector("vaadin-combo-box-overlay");e&&this._removeInert(e),this._observeBody()}else this._bodyMutationObserver?.disconnect(),this._bodyMutationObserver=void 0}},{kind:"method",key:"_observeBody",value:function(){"MutationObserver"in window&&!this._bodyMutationObserver&&(this._bodyMutationObserver=new MutationObserver((e=>{e.forEach((e=>{e.addedNodes.forEach((e=>{"VAADIN-COMBO-BOX-OVERLAY"===e.nodeName&&this._removeInert(e)})),e.removedNodes.forEach((e=>{"VAADIN-COMBO-BOX-OVERLAY"===e.nodeName&&(this._overlayMutationObserver?.disconnect(),this._overlayMutationObserver=void 0)}))}))})),this._bodyMutationObserver.observe(document.body,{childList:!0}))}},{kind:"method",key:"_removeInert",value:function(e){if(e.inert)return e.inert=!1,this._overlayMutationObserver?.disconnect(),void(this._overlayMutationObserver=void 0);"MutationObserver"in window&&!this._overlayMutationObserver&&(this._overlayMutationObserver=new MutationObserver((e=>{e.forEach((e=>{if("inert"===e.attributeName){const i=e.target;i.inert&&(this._overlayMutationObserver?.disconnect(),this._overlayMutationObserver=void 0,i.inert=!1)}}))})),this._overlayMutationObserver.observe(e,{attributes:!0}))}},{kind:"method",key:"_filterChanged",value:function(e){e.stopPropagation(),(0,c.B)(this,"filter-changed",{value:e.detail.value})}},{kind:"method",key:"_valueChanged",value:function(e){e.stopPropagation(),this.allowCustomValue||(this._comboBox._closeOnBlurIsPrevented=!0);const i=e.detail.value;i!==this.value&&(0,c.B)(this,"value-changed",{value:i||void 0})}},{kind:"field",static:!0,key:"styles",value:()=>l.iv`:host{display:block;width:100%}vaadin-combo-box-light{position:relative;--vaadin-combo-box-overlay-max-height:calc(45vh - 56px)}ha-textfield{width:100%}ha-textfield>ha-icon-button{--mdc-icon-button-size:24px;padding:2px;color:var(--secondary-text-color)}ha-svg-icon{color:var(--input-dropdown-icon-color);position:absolute;cursor:pointer}.toggle-button{right:12px;top:-10px;inset-inline-start:initial;inset-inline-end:12px;direction:var(--direction)}:host([opened]) .toggle-button{color:var(--primary-color)}.clear-button{--mdc-icon-size:20px;top:-7px;right:36px;inset-inline-start:initial;inset-inline-end:36px;direction:var(--direction)}`}]}}),l.oi)},55486:function(e,i,t){var a=t(44249),o=t(4918),n=t(6394),d=t(57243),l=t(15093),s=t(35359),r=t(36522);(0,a.Z)([(0,l.Mo)("ha-formfield")],(function(e,i){return{F:class extends i{constructor(...i){super(...i),e(this)}},d:[{kind:"field",decorators:[(0,l.Cb)({type:Boolean,reflect:!0})],key:"disabled",value:()=>!1},{kind:"method",key:"render",value:function(){const e={"mdc-form-field--align-end":this.alignEnd,"mdc-form-field--space-between":this.spaceBetween,"mdc-form-field--nowrap":this.nowrap};return d.dy` <div class="mdc-form-field ${(0,s.$)(e)}"> <slot></slot> <label class="mdc-label" ="${this._labelClick}"> <slot name="label">${this.label}</slot> </label> </div>`}},{kind:"method",key:"_labelClick",value:function(){const e=this.input;if(e&&(e.focus(),!e.disabled))switch(e.tagName){case"HA-CHECKBOX":e.checked=!e.checked,(0,r.B)(e,"change");break;case"HA-RADIO":e.checked=!0,(0,r.B)(e,"change");break;default:e.click()}}},{kind:"field",static:!0,key:"styles",value:()=>[n.W,d.iv`:host(:not([alignEnd])) ::slotted(ha-switch){margin-right:10px;margin-inline-end:10px;margin-inline-start:inline}.mdc-form-field{align-items:var(--ha-formfield-align-items,center);gap:4px}.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)}`]}]}}),o.a)},7285:function(e,i,t){t.d(i,{M:()=>r});var a=t(44249),o=t(72621),n=t(65703),d=t(46289),l=t(57243),s=t(15093);let r=(0,a.Z)([(0,s.Mo)("ha-list-item")],(function(e,i){class t extends i{constructor(...i){super(...i),e(this)}}return{F:t,d:[{kind:"method",key:"renderRipple",value:function(){return this.noninteractive?"":(0,o.Z)(t,"renderRipple",this,3)([])}},{kind:"get",static:!0,key:"styles",value:function(){return[d.W,l.iv`:host{padding-left:var(--mdc-list-side-padding-left,var(--mdc-list-side-padding,20px));padding-inline-start:var(--mdc-list-side-padding-left,var(--mdc-list-side-padding,20px));padding-right:var(--mdc-list-side-padding-right,var(--mdc-list-side-padding,20px));padding-inline-end:var(--mdc-list-side-padding-right,var(--mdc-list-side-padding,20px))}:host([graphic=avatar]:not([twoLine])),:host([graphic=icon]:not([twoLine])){height:48px}span.material-icons:first-of-type{margin-inline-start:0px!important;margin-inline-end:var(--mdc-list-item-graphic-margin,16px)!important;direction:var(--direction)!important}span.material-icons:last-of-type{margin-inline-start:auto!important;margin-inline-end:0px!important;direction:var(--direction)!important}.mdc-deprecated-list-item__meta{display:var(--mdc-list-item-meta-display);align-items:center;flex-shrink:0}:host([graphic=icon]:not([twoline])) .mdc-deprecated-list-item__graphic{margin-inline-end:var(--mdc-list-item-graphic-margin,20px)!important}:host([multiline-secondary]){height:auto}:host([multiline-secondary]) .mdc-deprecated-list-item__text{padding:8px 0}:host([multiline-secondary]) .mdc-deprecated-list-item__secondary-text{text-overflow:initial;white-space:normal;overflow:auto;display:inline-block;margin-top:10px}:host([multiline-secondary]) .mdc-deprecated-list-item__primary-text{margin-top:10px}:host([multiline-secondary]) .mdc-deprecated-list-item__secondary-text::before{display:none}:host([multiline-secondary]) .mdc-deprecated-list-item__primary-text::before{display:none}:host([disabled]){color:var(--disabled-text-color)}:host([noninteractive]){pointer-events:unset}`,"rtl"===document.dir?l.iv`span.material-icons:first-of-type,span.material-icons:last-of-type{direction:rtl!important;--direction:rtl}`:l.iv``]}}]}}),n.K)},83166:function(e,i,t){var a=t(44249),o=t(72621),n=t(1105),d=t(33990),l=t(57243),s=t(15093),r=t(5111);(0,a.Z)([(0,s.Mo)("ha-textfield")],(function(e,i){class t extends i{constructor(...i){super(...i),e(this)}}return{F:t,d:[{kind:"field",decorators:[(0,s.Cb)({type:Boolean})],key:"invalid",value:void 0},{kind:"field",decorators:[(0,s.Cb)({attribute:"error-message"})],key:"errorMessage",value:void 0},{kind:"field",decorators:[(0,s.Cb)({type:Boolean})],key:"icon",value:()=>!1},{kind:"field",decorators:[(0,s.Cb)({type:Boolean})],key:"iconTrailing",value:()=>!1},{kind:"field",decorators:[(0,s.Cb)()],key:"autocomplete",value:void 0},{kind:"field",decorators:[(0,s.Cb)()],key:"autocorrect",value:void 0},{kind:"field",decorators:[(0,s.Cb)({attribute:"input-spellcheck"})],key:"inputSpellcheck",value:void 0},{kind:"field",decorators:[(0,s.IO)("input")],key:"formElement",value:void 0},{kind:"method",key:"updated",value:function(e){(0,o.Z)(t,"updated",this,3)([e]),(e.has("invalid")||e.has("errorMessage"))&&(this.setCustomValidity(this.invalid?this.errorMessage||this.validationMessage||"Invalid":""),(this.invalid||this.validateOnInitialRender||e.has("invalid")&&void 0!==e.get("invalid"))&&this.reportValidity()),e.has("autocomplete")&&(this.autocomplete?this.formElement.setAttribute("autocomplete",this.autocomplete):this.formElement.removeAttribute("autocomplete")),e.has("autocorrect")&&(this.autocorrect?this.formElement.setAttribute("autocorrect",this.autocorrect):this.formElement.removeAttribute("autocorrect")),e.has("inputSpellcheck")&&(this.inputSpellcheck?this.formElement.setAttribute("spellcheck",this.inputSpellcheck):this.formElement.removeAttribute("spellcheck"))}},{kind:"method",key:"renderIcon",value:function(e,i=!1){const t=i?"trailing":"leading";return l.dy` <span class="mdc-text-field__icon mdc-text-field__icon--${t}" tabindex="${i?1:-1}"> <slot name="${t}Icon"></slot> </span> `}},{kind:"field",static:!0,key:"styles",value:()=>[d.W,l.iv`.mdc-text-field__input{width:var(--ha-textfield-input-width,100%)}.mdc-text-field:not(.mdc-text-field--with-leading-icon){padding:var(--text-field-padding,0px 16px)}.mdc-text-field__affix--suffix{padding-left:var(--text-field-suffix-padding-left,12px);padding-right:var(--text-field-suffix-padding-right,0px);padding-inline-start:var(--text-field-suffix-padding-left,12px);padding-inline-end:var(--text-field-suffix-padding-right,0px);direction:ltr}.mdc-text-field--with-leading-icon{padding-inline-start:var(--text-field-suffix-padding-left,0px);padding-inline-end:var(--text-field-suffix-padding-right,16px);direction:var(--direction)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:var(--text-field-suffix-padding-left,0px);padding-right:var(--text-field-suffix-padding-right,0px);padding-inline-start:var(--text-field-suffix-padding-left,0px);padding-inline-end:var(--text-field-suffix-padding-right,0px)}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--suffix{color:var(--secondary-text-color)}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon{color:var(--secondary-text-color)}.mdc-text-field__icon--leading{margin-inline-start:16px;margin-inline-end:8px;direction:var(--direction)}.mdc-text-field__icon--trailing{padding:var(--textfield-icon-trailing-padding,12px)}.mdc-floating-label:not(.mdc-floating-label--float-above){text-overflow:ellipsis;width:inherit;padding-right:30px;padding-inline-end:30px;padding-inline-start:initial;box-sizing:border-box;direction:var(--direction)}input{text-align:var(--text-field-text-align,start)}input[type=color]{height:20px}::-ms-reveal{display:none}:host([no-spinner]) input::-webkit-inner-spin-button,:host([no-spinner]) input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=color]::-webkit-color-swatch-wrapper{padding:0}:host([no-spinner]) input[type=number]{-moz-appearance:textfield}.mdc-text-field__ripple{overflow:hidden}.mdc-text-field{overflow:var(--text-field-overflow)}.mdc-floating-label{inset-inline-start:16px!important;inset-inline-end:initial!important;transform-origin:var(--float-start);direction:var(--direction);text-align:var(--float-start)}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 48px - var(--text-field-suffix-padding-left,0px));inset-inline-start:calc(48px + var(--text-field-suffix-padding-left,0px))!important;inset-inline-end:initial!important;direction:var(--direction)}.mdc-text-field__input[type=number]{direction:var(--direction)}.mdc-text-field__affix--prefix{padding-right:var(--text-field-prefix-padding-right,2px);padding-inline-end:var(--text-field-prefix-padding-right,2px);padding-inline-start:initial}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--prefix{color:var(--mdc-text-field-label-ink-color)}#helper-text ha-markdown{display:inline-block}`,"rtl"===r.E.document.dir?l.iv`.mdc-floating-label,.mdc-text-field--with-leading-icon,.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label,.mdc-text-field__icon--leading,.mdc-text-field__input[type=number]{direction:rtl;--direction:rtl}`:l.iv``]}]}}),n.P)},36841:function(e,i,t){var a=t(44249),o=(t(9359),t(56475),t(57243)),n=t(15093),d=(t(23334),t(37583),t(83166),t(36522));(0,a.Z)([(0,n.Mo)("search-input")],(function(e,i){return{F:class extends i{constructor(...i){super(...i),e(this)}},d:[{kind:"field",decorators:[(0,n.Cb)({attribute:!1})],key:"hass",value:void 0},{kind:"field",decorators:[(0,n.Cb)()],key:"filter",value:void 0},{kind:"field",decorators:[(0,n.Cb)({type:Boolean})],key:"suffix",value:()=>!1},{kind:"field",decorators:[(0,n.Cb)({type:Boolean})],key:"autofocus",value:()=>!1},{kind:"field",decorators:[(0,n.Cb)({type:String})],key:"label",value:void 0},{kind:"method",key:"focus",value:function(){this._input?.focus()}},{kind:"field",decorators:[(0,n.IO)("ha-textfield",!0)],key:"_input",value:void 0},{kind:"method",key:"render",value:function(){return o.dy` <ha-textfield .autofocus="${this.autofocus}" .label="${this.label||this.hass.localize("ui.common.search")}" .value="${this.filter||""}" icon .iconTrailing="${this.filter||this.suffix}" ="${this._filterInputChanged}"> <slot name="prefix" slot="leadingIcon"> <ha-svg-icon tabindex="-1" class="prefix" .path="${"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"}"></ha-svg-icon> </slot> <div class="trailing" slot="trailingIcon"> ${this.filter&&o.dy` <ha-icon-button ="${this._clearSearch}" .label="${this.hass.localize("ui.common.clear")}" .path="${"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"}" class="clear-button"></ha-icon-button> `} <slot name="suffix"></slot> </div> </ha-textfield> `}},{kind:"method",key:"_filterChanged",value:async function(e){(0,d.B)(this,"value-changed",{value:String(e)})}},{kind:"method",key:"_filterInputChanged",value:async function(e){this._filterChanged(e.target.value)}},{kind:"method",key:"_clearSearch",value:async function(){this._filterChanged("")}},{kind:"field",static:!0,key:"styles",value:()=>o.iv`:host{display:inline-flex}ha-icon-button,ha-svg-icon{color:var(--primary-text-color)}ha-svg-icon{outline:0}.clear-button{--mdc-icon-size:20px}ha-textfield{display:inherit}.trailing{display:flex;align-items:center}`}]}}),o.oi)},71220:function(e,i,t){t.d(i,{Dm:()=>l,jg:()=>n,p4:()=>o,pN:()=>d,xC:()=>a});const a=e=>{let i=e;return"string"==typeof e&&(i=parseInt(e,16)),"0x"+i.toString(16).padStart(4,"0")},o=e=>e.split(":").slice(-4).reverse().join(""),n=(e,i)=>{const t=e.user_given_name?e.user_given_name:e.name,a=i.user_given_name?i.user_given_name:i.name;return t.localeCompare(a)},d=(e,i)=>{const t=e.name,a=i.name;return t.localeCompare(a)},l=e=>`${e.name} (Endpoint id: ${e.endpoint_id}, Id: ${a(e.id)}, Type: ${e.type})`},67120:function(e,i,t){t.a(e,(async function(e,a){try{t.r(i),t.d(i,{ZHANetworkVisualizationPage:()=>p});var o=t(44249),n=t(72621),d=(t(92745),t(9359),t(31526),t(70104),t(31622),t(57243)),l=t(15093),s=t(21977),r=t(83523),c=(t(36841),t(98157),t(34273),t(83456),t(55486),t(74794)),h=(t(97546),t(71220)),u=t(34976),v=e([u]);u=(v.then?(await v)():v)[0];let p=(0,o.Z)([(0,l.Mo)("zha-network-visualization-page")],(function(e,i){class t extends i{constructor(...i){super(...i),e(this)}}return{F:t,d:[{kind:"field",decorators:[(0,l.Cb)({attribute:!1})],key:"hass",value:void 0},{kind:"field",decorators:[(0,l.Cb)({attribute:!1})],key:"route",value:void 0},{kind:"field",decorators:[(0,l.Cb)({type:Boolean,reflect:!0})],key:"narrow",value:()=>!1},{kind:"field",decorators:[(0,l.Cb)({attribute:"is-wide",type:Boolean})],key:"isWide",value:()=>!1},{kind:"field",decorators:[(0,l.Cb)({attribute:!1})],key:"zoomedDeviceIdFromURL",value:void 0},{kind:"field",decorators:[(0,l.SB)()],key:"zoomedDeviceId",value:void 0},{kind:"field",decorators:[(0,l.IO)("#visualization",!0)],key:"_visualization",value:void 0},{kind:"field",decorators:[(0,l.SB)()],key:"_devices",value:()=>new Map},{kind:"field",decorators:[(0,l.SB)()],key:"_devicesByDeviceId",value:()=>new Map},{kind:"field",decorators:[(0,l.SB)()],key:"_nodes",value:()=>[]},{kind:"field",decorators:[(0,l.SB)()],key:"_network",value:void 0},{kind:"field",decorators:[(0,l.SB)()],key:"_filter",value:void 0},{kind:"field",key:"_autoZoom",value:()=>!0},{kind:"field",key:"_enablePhysics",value:()=>!0},{kind:"method",key:"firstUpdated",value:function(e){(0,n.Z)(t,"firstUpdated",this,3)([e]),this.zoomedDeviceIdFromURL&&(this.zoomedDeviceId=this.zoomedDeviceIdFromURL),this.hass&&this._fetchData(),this._network=new s.Zc(this._visualization,{},{autoResize:!0,layout:{improvedLayout:!0},physics:{barnesHut:{springConstant:0,avoidOverlap:10,damping:.09}},nodes:{font:{multi:"html"}},edges:{smooth:{enabled:!0,type:"continuous",forceDirection:"none",roundness:.6}}}),this._network.on("doubleClick",(e=>{const i=e.nodes[0];if(i){const e=this._devices.get(i);e&&(0,r.c)(`/config/devices/device/${e.device_reg_id}`)}})),this._network.on("click",(e=>{const i=e.nodes[0];if(i){const e=this._devices.get(i);e&&this._autoZoom&&(this.zoomedDeviceId=e.device_reg_id,this._zoomToDevice())}})),this._network.on("stabilized",(()=>{this.zoomedDeviceId&&this._zoomToDevice()}))}},{kind:"method",key:"render",value:function(){return d.dy` <hass-tabs-subpage .tabs="${u.zhaTabs}" .hass="${this.hass}" .narrow="${this.narrow}" .isWide="${this.isWide}" .route="${this.route}" .header="${this.hass.localize("ui.panel.config.zha.visualization.header")}"> ${this.narrow?d.dy` <div slot="header"> <search-input .hass="${this.hass}" class="header" -changed="${this._handleSearchChange}" .filter="${this._filter}" .label="${this.hass.localize("ui.panel.config.zha.visualization.highlight_label")}"> </search-input> </div> `:""} <div class="header"> ${this.narrow?"":d.dy`<search-input .hass="${this.hass}" -changed="${this._handleSearchChange}" .filter="${this._filter}" .label="${this.hass.localize("ui.panel.config.zha.visualization.highlight_label")}"></search-input>`} <ha-device-picker .hass="${this.hass}" .value="${this.zoomedDeviceId}" .label="${this.hass.localize("ui.panel.config.zha.visualization.zoom_label")}" .deviceFilter="${this._filterDevices}" -changed="${this._onZoomToDevice}"></ha-device-picker> <div class="controls"> <ha-formfield .label="${this.hass.localize("ui.panel.config.zha.visualization.auto_zoom")}"> <ha-checkbox ="${this._handleAutoZoomCheckboxChange}" .checked="${this._autoZoom}"> </ha-checkbox> </ha-formfield> <ha-formfield .label="${this.hass.localize("ui.panel.config.zha.visualization.enable_physics")}"><ha-checkbox ="${this._handlePhysicsCheckboxChange}" .checked="${this._enablePhysics}"> </ha-checkbox></ha-formfield> <mwc-button ="${this._refreshTopology}"> ${this.hass.localize("ui.panel.config.zha.visualization.refresh_topology")} </mwc-button> </div> </div> <div id="visualization"></div> </hass-tabs-subpage> `}},{kind:"method",key:"_fetchData",value:async function(){const e=await(0,c.LO)(this.hass);this._devices=new Map(e.map((e=>[e.ieee,e]))),this._devicesByDeviceId=new Map(e.map((e=>[e.device_reg_id,e]))),this._updateDevices(e)}},{kind:"method",key:"_updateDevices",value:function(e){this._nodes=[];const i=[];e.forEach((e=>{this._nodes.push({id:e.ieee,label:this._buildLabel(e),shape:this._getShape(e),mass:this._getMass(e),fixed:"Coordinator"===e.device_type,color:{background:e.available?"#66FF99":"#FF9999"}}),e.neighbors&&e.neighbors.length>0&&e.neighbors.forEach((t=>{const a=i.findIndex((i=>e.ieee===i.to&&t.ieee===i.from));if(-1===a){const a=this._getEdgeOptions(parseInt(t.lqi));i.push({from:e.ieee,to:t.ieee,label:t.lqi+"",color:a.color,width:a.width,length:a.length,physics:a.physics,arrows:{from:{enabled:"Child"!==t.relationship}},dashes:"Child"!==t.relationship})}else{const e=this._getEdgeOptions(Math.min(parseInt(i[a].label),parseInt(t.lqi)));i[a].label+=" & "+t.lqi,i[a].color=e.color,i[a].width=e.width,i[a].length=e.length,i[a].physics=e.physics,delete i[a].arrows,delete i[a].dashes}}))})),this._network?.setData({nodes:this._nodes,edges:i})}},{kind:"method",key:"_getEdgeOptions",value:function(e){const i=2e3-4*e;return e>192?{color:{color:"#17ab00",highlight:"#17ab00"},width:e/20,length:i,physics:!1}:e>128?{color:{color:"#e6b402",highlight:"#e6b402"},width:9,length:i,physics:!1}:{color:{color:"#bfbfbf",highlight:"#bfbfbf"},width:1,length:i,physics:!1}}},{kind:"method",key:"_getMass",value:function(e){return e.available?"Coordinator"===e.device_type?2:"Router"===e.device_type?4:5:6}},{kind:"method",key:"_getShape",value:function(e){return"Coordinator"===e.device_type?"box":"Router"===e.device_type?"ellipse":"circle"}},{kind:"method",key:"_buildLabel",value:function(e){let i=null!==e.user_given_name?`<b>${e.user_given_name}</b>\n`:"";return i+=`<b>IEEE: </b>${e.ieee}`,i+=`\n<b>Device Type: </b>${e.device_type.replace("_"," ")}`,null!=e.nwk&&(i+=`\n<b>NWK: </b>${(0,h.xC)(e.nwk)}`),null!=e.manufacturer&&null!=e.model?i+=`\n<b>Device: </b>${e.manufacturer} ${e.model}`:i+="\n<b>Device is not in <i>'zigbee.db'</i></b>",e.area_id&&(i+=`\n<b>Area ID: </b>${e.area_id}`),i}},{kind:"method",key:"_handleSearchChange",value:function(e){this._filter=e.detail.value;const i=this._filter.toLowerCase();if(this._network)if(this._filter){const e=[];this._nodes.forEach((t=>{t.label&&t.label.toLowerCase().includes(i)&&e.push(t.id)})),this.zoomedDeviceId="",this._zoomOut(),this._network.selectNodes(e,!0)}else this._network.unselectAll()}},{kind:"method",key:"_onZoomToDevice",value:function(e){e.stopPropagation(),this.zoomedDeviceId=e.detail.value,this._network&&this._zoomToDevice()}},{kind:"method",key:"_zoomToDevice",value:function(){if(this._filter="",this.zoomedDeviceId){const e=this._devicesByDeviceId.get(this.zoomedDeviceId);e&&this._network.fit({nodes:[e.ieee],animation:{duration:500,easingFunction:"easeInQuad"}})}else this._zoomOut()}},{kind:"method",key:"_zoomOut",value:function(){this._network.fit({nodes:[],animation:{duration:500,easingFunction:"easeOutQuad"}})}},{kind:"method",key:"_refreshTopology",value:async function(){await(0,c.f3)(this.hass)}},{kind:"field",key:"_filterDevices",value(){return e=>{if(!this.hass)return!1;for(const i of e.identifiers)for(const e of i)if("zha"===e)return!0;return!1}}},{kind:"method",key:"_handleAutoZoomCheckboxChange",value:function(e){this._autoZoom=e.target.checked}},{kind:"method",key:"_handlePhysicsCheckboxChange",value:function(e){this._enablePhysics=e.target.checked,this._network.setOptions(this._enablePhysics?{physics:{enabled:!0}}:{physics:{enabled:!1}})}},{kind:"get",static:!0,key:"styles",value:function(){return[d.iv`.header{border-bottom:1px solid var(--divider-color);padding:0 8px;display:flex;align-items:center;justify-content:space-between;height:var(--header-height);box-sizing:border-box}.header>*{padding:0 8px}:host([narrow]) .header{flex-direction:column;align-items:stretch;height:var(--header-height) * 2}.search-toolbar{display:flex;align-items:center;color:var(--secondary-text-color);padding:0 16px}search-input{flex:1;display:block}search-input.header{color:var(--secondary-text-color)}ha-device-picker{flex:1}.controls{display:flex;align-items:center;justify-content:space-between}#visualization{height:calc(100% - var(--header-height));width:100%}:host([narrow]) #visualization{height:calc(100% - (var(--header-height) * 2))}`]}}]}}),d.oi);a()}catch(e){a(e)}}))}};
//# sourceMappingURL=88361.5433cd6f9dffb147.js.map