iobroker.lovelace
Version:
With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI
1 lines • 39.2 kB
JavaScript
export const __rspack_esm_id=50672;export const __rspack_esm_ids=[50672];export const __webpack_modules__={89020(i,t,e){e.d(t,{P:()=>m,x:()=>_});e(18111),e(22489);var n=e(5124),o=e(77423),a=e(95350),s=e(95093),r=e(77763),l=e(65063),d=e(90676),c=e(44919),h=e(36918),g=e(36312),p=e(91926);const _=["zha","zwave_js","matter"],m=async(i,t,e,_)=>{if(_?.domain){const i=await t.loadBackendTranslation("title",_.domain);_.domain=(0,a.p$)(i,_.domain)}if(_?.brand){const i=await(0,s.O)(t);_.brand=i.core.integration[_.brand]?.name||_.brand}if("zwave_js"===e){const a=_?.config_entry?void 0:(await(0,o.VN)(t,{domain:e})).filter(i=>!i.disabled_by);if(!(0,g.x)(t.config,"zwave_js")||!_?.config_entry&&!a?.length)return void(0,l.dk)(i,{title:t.localize("ui.panel.config.integrations.config_flow.missing_zwave_zigbee_title",{integration:"Z-Wave"}),text:t.localize("ui.panel.config.integrations.config_flow.missing_zwave_zigbee",{integration:"Z-Wave",brand:_?.brand||_?.domain||"Z-Wave",supported_hardware_link:n.qy`<a href="${(0,h.o)(t,"/docs/z-wave/controllers")}" target="_blank" rel="noreferrer">${t.localize("ui.panel.config.integrations.config_flow.supported_hardware")}</a>`}),confirmText:t.localize("ui.panel.config.integrations.config_flow.proceed"),confirm:()=>{(0,r.W)(i,{startFlowHandler:"zwave_js"})}});(0,c.X)(i,{entry_id:_?.config_entry||a[0].entry_id})}else if("zha"===e){const a=_?.config_entry?void 0:(await(0,o.VN)(t,{domain:e})).filter(i=>!i.disabled_by);if(!(0,g.x)(t.config,"zha")||!_?.config_entry&&!a?.length)return void(0,l.dk)(i,{title:t.localize("ui.panel.config.integrations.config_flow.missing_zwave_zigbee_title",{integration:"Zigbee"}),text:t.localize("ui.panel.config.integrations.config_flow.missing_zwave_zigbee",{integration:"Zigbee",brand:_?.brand||_?.domain||"Zigbee",supported_hardware_link:n.qy`<a href="${(0,h.o)(t,"/integrations/zha/#known-working-zigbee-radio-modules")}" target="_blank" rel="noreferrer">${t.localize("ui.panel.config.integrations.config_flow.supported_hardware")}</a>`}),confirmText:t.localize("ui.panel.config.integrations.config_flow.proceed"),confirm:()=>{(0,r.W)(i,{startFlowHandler:"zha"})}});(0,p.oo)("/config/zha/add")}else if("matter"===e){const a=_?.config_entry?void 0:(await(0,o.VN)(t,{domain:e})).filter(i=>!i.disabled_by);if(!(0,g.x)(t.config,e)||!_?.config_entry&&!a?.length)return void(0,l.dk)(i,{title:t.localize("ui.panel.config.integrations.config_flow.missing_zwave_zigbee_title",{integration:"Matter"}),text:t.localize("ui.panel.config.integrations.config_flow.missing_matter",{integration:"Matter",brand:_?.brand||_?.domain||"Matter",supported_hardware_link:n.qy`<a href="${(0,h.o)(t,"/integrations/matter")}" target="_blank" rel="noreferrer">${t.localize("ui.panel.config.integrations.config_flow.supported_hardware")}</a>`}),confirmText:t.localize("ui.panel.config.integrations.config_flow.proceed"),confirm:()=>{(0,r.W)(i,{startFlowHandler:"matter"})}});(0,d.g)(i)}}},77090(i,t,e){e.d(t,{s:()=>n});const n=i=>!(!i.detail.selected||"property"!==i.detail.source)&&(i.currentTarget.selected=!1,!0)},45100(i,t,e){e.a(i,async function(i,n){try{e.r(t),e.d(t,{HaIconButtonPrev:()=>g});var o=e(62826),a=e(5124),s=e(22441),r=e(63091),l=e(26300),d=i([l]);l=(d.then?(await d)():d)[0];const c="M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z",h="M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z";class g extends a.WF{render(){return a.qy` <ha-icon-button .disabled="${this.disabled}" .label="${this.label||this.hass?.localize("ui.common.back")||"Back"}" .path="${this._icon}" .href="${this.href}" .target="${this.target}" .rel="${this.rel}" .download="${this.download}"></ha-icon-button> `}constructor(...i){super(...i),this.disabled=!1,this._icon="rtl"===r.G.document.dir?h:c}}(0,o.Cg)([(0,s.MZ)({attribute:!1})],g.prototype,"hass",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean})],g.prototype,"disabled",void 0),(0,o.Cg)([(0,s.MZ)()],g.prototype,"label",void 0),(0,o.Cg)([(0,s.MZ)()],g.prototype,"href",void 0),(0,o.Cg)([(0,s.MZ)()],g.prototype,"target",void 0),(0,o.Cg)([(0,s.MZ)()],g.prototype,"rel",void 0),(0,o.Cg)([(0,s.MZ)()],g.prototype,"download",void 0),(0,o.Cg)([(0,s.wk)()],g.prototype,"_icon",void 0),g=(0,o.Cg)([(0,s.EM)("ha-icon-button-prev")],g),n()}catch(i){n(i)}})},43661(i,t,e){e.r(t),e.d(t,{HaIconNext:()=>r});var n=e(62826),o=e(22441),a=e(63091),s=e(67094);class r extends s.HaSvgIcon{constructor(...i){super(...i),this.path="rtl"===a.G.document.dir?"M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z":"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z"}}(0,n.Cg)([(0,o.MZ)()],r.prototype,"path",void 0),r=(0,n.Cg)([(0,o.EM)("ha-icon-next")],r)},28732(i,t,e){var n=e(62826),o=e(27686),a=e(7731),s=e(5124),r=e(22441);class l extends o.J{renderRipple(){return this.noninteractive?"":super.renderRipple()}static get styles(){return[a.R,s.AH`: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?s.AH`span.material-icons:first-of-type,span.material-icons:last-of-type{direction:rtl!important;--direction:rtl}`:s.AH``]}}l=(0,n.Cg)([(0,r.EM)("ha-list-item")],l)},26571(i,t,e){e.d(t,{Al:()=>a,KY:()=>o,PN:()=>l,dG:()=>c,jm:()=>d,m7:()=>m,sR:()=>h,t1:()=>r,t2:()=>p,x:()=>_,yu:()=>g});var n=e(95350);const o=["bluetooth","dhcp","discovery","esphome","hardware","hassio","homekit","integration_discovery","mqtt","ssdp","unignore","usb","zeroconf"],a=66649!=e.j?["reauth"]:null,s={"HA-Frontend-Base":`${location.protocol}//${location.host}`},r=(i,t,e)=>i.callApi("POST","config/config_entries/flow",{handler:t,entry_id:e},s),l=(i,t)=>i.callApi("GET",`config/config_entries/flow/${t}`,void 0,s),d=(i,t,e)=>i.callApi("POST",`config/config_entries/flow/${t}`,e,s),c=(i,t,e)=>i.callWS({type:"config_entries/ignore_flow",flow_id:t,title:e}),h=(i,t)=>i.callApi("DELETE",`config/config_entries/flow/${t}`),g=(i,t)=>i.callApi("GET","config/config_entries/flow_handlers"+(t?`?type=${t}`:"")),p=i=>i.sendMessagePromise({type:"config_entries/flow/progress"}),_=(i,t)=>i.connection.subscribeMessage(i=>t(i),{type:"config_entries/flow/subscribe"}),m=(i,t)=>t.context.title_placeholders&&0!==Object.keys(t.context.title_placeholders).length?i(`component.${t.handler}.config.flow_title`,t.context.title_placeholders)||("name"in t.context.title_placeholders?t.context.title_placeholders.name:(0,n.p$)(i,t.handler)):(0,n.p$)(i,t.handler)},95093(i,t,e){e.d(t,{O:()=>n,s:()=>o});const n=i=>i.callWS({type:"integration/descriptions"}),o=(i,t)=>{if(i){if(t in i){const e=i[t];if("integration_type"in e)return e}for(const e of Object.values(i))if("integrations"in e&&e.integrations&&t in e.integrations)return e.integrations[t]}}},77763(i,t,e){e.d(t,{W:()=>r});var n=e(5124),o=e(26571),a=e(95350),s=e(29094);const r=(i,t)=>(0,s.g)(i,t,{flowType:"config_flow",showDevices:!0,createFlow:async(i,e)=>{const[n]=await Promise.all([(0,o.t1)(i,e,t.entryId),i.loadFragmentTranslation("config"),i.loadBackendTranslation("config",e),i.loadBackendTranslation("selector",e),i.loadBackendTranslation("title",e)]);return n},fetchFlow:async(i,t)=>{const[e]=await Promise.all([(0,o.PN)(i,t),i.loadFragmentTranslation("config")]);return await Promise.all([i.loadBackendTranslation("config",e.handler),i.loadBackendTranslation("selector",e.handler),i.loadBackendTranslation("title",e.handler)]),e},handleFlowStep:o.jm,deleteFlow:o.sR,renderAbortDescription(i,t){const e=i.localize(`component.${t.translation_domain||t.handler}.config.abort.${t.reason}`,t.description_placeholders);return e?n.qy` <ha-markdown allow-svg breaks .content="${e}"></ha-markdown> `:t.reason},renderShowFormStepHeader:(i,t)=>i.localize(`component.${t.translation_domain||t.handler}.config.step.${t.step_id}.title`,t.description_placeholders)||i.localize(`component.${t.handler}.title`),renderShowFormStepDescription(i,t){const e=i.localize(`component.${t.translation_domain||t.handler}.config.step.${t.step_id}.description`,t.description_placeholders);return e?n.qy` <ha-markdown .allowDataUrl="${"zwave_js"===t.handler}" allow-svg breaks .content="${e}"></ha-markdown> `:""},renderShowFormStepFieldLabel(i,t,e,n){if("expandable"===e.type)return i.localize(`component.${t.handler}.config.step.${t.step_id}.sections.${e.name}.name`,t.description_placeholders)||e.name;const o=n?.path?.[0]?`sections.${n.path[0]}.`:"";return i.localize(`component.${t.handler}.config.step.${t.step_id}.${o}data.${e.name}`,t.description_placeholders)||e.name},renderShowFormStepFieldHelper(i,t,e,o){if("expandable"===e.type)return i.localize(`component.${t.translation_domain||t.handler}.config.step.${t.step_id}.sections.${e.name}.description`,t.description_placeholders);const a=o?.path?.[0]?`sections.${o.path[0]}.`:"",s=i.localize(`component.${t.translation_domain||t.handler}.config.step.${t.step_id}.${a}data_description.${e.name}`,t.description_placeholders);return s?n.qy`<ha-markdown breaks .content="${s}"></ha-markdown>`:""},renderShowFormStepFieldError:(i,t,e)=>i.localize(`component.${t.translation_domain||t.translation_domain||t.handler}.config.error.${e}`,t.description_placeholders)||e,renderShowFormStepFieldLocalizeValue:(i,t,e)=>i.localize(`component.${t.handler}.selector.${e}`),renderShowFormStepSubmitButton:(i,t)=>i.localize(`component.${t.handler}.config.step.${t.step_id}.submit`)||i.localize("ui.panel.config.integrations.config_flow."+(!1===t.last_step?"next":"submit")),renderExternalStepHeader:(i,t)=>i.localize(`component.${t.handler}.config.step.${t.step_id}.title`)||i.localize("ui.panel.config.integrations.config_flow.external_step.open_site"),renderExternalStepDescription(i,t){const e=i.localize(`component.${t.translation_domain||t.handler}.config.${t.step_id}.description`,t.description_placeholders);return n.qy` <p> ${i.localize("ui.panel.config.integrations.config_flow.external_step.description")} </p> ${e?n.qy` <ha-markdown allow-svg breaks .content="${e}"></ha-markdown> `:""} `},renderCreateEntryDescription(i,t){const e=i.localize(`component.${t.translation_domain||t.handler}.config.create_entry.${t.description||"default"}`,t.description_placeholders);return n.qy` ${e?n.qy` <ha-markdown allow-svg breaks .content="${e}"></ha-markdown> `:n.s6} `},renderShowFormProgressHeader:(i,t)=>i.localize(`component.${t.handler}.config.step.${t.step_id}.title`)||i.localize(`component.${t.handler}.title`),renderShowFormProgressDescription(i,t){const e=i.localize(`component.${t.translation_domain||t.handler}.config.progress.${t.progress_action}`,t.description_placeholders);return e?n.qy` <ha-markdown allow-svg breaks .content="${e}"></ha-markdown> `:""},renderMenuHeader:(i,t)=>i.localize(`component.${t.handler}.config.step.${t.step_id}.title`)||i.localize(`component.${t.handler}.title`),renderMenuDescription(i,t){const e=i.localize(`component.${t.translation_domain||t.handler}.config.step.${t.step_id}.description`,t.description_placeholders);return e?n.qy` <ha-markdown allow-svg breaks .content="${e}"></ha-markdown> `:""},renderMenuOption:(i,t,e)=>i.localize(`component.${t.translation_domain||t.handler}.config.step.${t.step_id}.menu_options.${e}`,t.description_placeholders),renderMenuOptionDescription:(i,t,e)=>i.localize(`component.${t.translation_domain||t.handler}.config.step.${t.step_id}.menu_option_descriptions.${e}`,t.description_placeholders),renderLoadingDescription(i,t,e,n){if("loading_flow"!==t&&"loading_step"!==t)return"";const o=n?.handler||e;return i.localize(`ui.panel.config.integrations.config_flow.loading.${t}`,{integration:o?(0,a.p$)(i.localize,o):i.localize("ui.panel.config.integrations.config_flow.loading.fallback_title")})}})},29094(i,t,e){e.d(t,{g:()=>a});var n=e(1087);const o=()=>Promise.all([e.e(4801),e.e(39763),e.e(32450),e.e(46095),e.e(7305),e.e(92769),e.e(3283),e.e(80131),e.e(58416),e.e(54066),e.e(84038),e.e(69205),e.e(26092),e.e(48531),e.e(92411),e.e(44642)]).then(e.bind(e,78314)),a=(i,t,e)=>{(0,n.r)(i,"show-dialog",{dialogTag:"dialog-data-entry-flow",dialogImport:o,dialogParams:{...t,flowConfig:e,dialogParentElement:i}})}},60051(i,t,e){e.a(i,async function(i,n){try{e.r(t);e(74423),e(44114),e(18111),e(22489),e(7588),e(61701),e(17642),e(58004),e(33853),e(45876),e(32475),e(15024),e(31698);var o=e(62826),a=e(78648),s=e(5124),r=e(22441),l=e(89784),d=e(22786),c=e(36312),h=e(1087),g=e(89020),p=e(91926),_=e(52220),m=e(72554),f=e(45100),u=(e(8630),e(65829)),w=e(36866),v=e(77423),y=e(26571),$=e(95350),b=e(95093),k=e(77763),x=e(65063),z=e(14503),C=e(85614),M=e(73132),L=e(3631),P=e(76559),F=e(73875),H=i([m,f,u,w,M,L]);[m,f,u,w,M,L]=H.then?(await H)():H;class B extends s.WF{async showDialog(i){const t=this._load();if(i?.domain){await t;if(!this._getFlowsInProgressForDomains([i.domain]).length)return void await this._createFlow(i.domain)}"_discovered"===i?.brand&&(await t,this._showDiscovered=!0),this._open=!0,this._pickedBrand="_discovered"===i?.brand?void 0:i?.domain||i?.brand,this._openedDirectly=!(!i?.brand&&!i?.domain),this._initialFilter=i?.initialFilter,this._navigateToResult=i?.navigateToResult??!1,this._narrow=matchMedia("all and (max-width: 450px), all and (max-height: 500px)").matches}closeDialog(){this._open=!1}_dialogClosed(){this._open=!1,this._integrations=void 0,this._helpers=void 0,this._pickedBrand=void 0,this._prevPickedBrand=void 0,this._flowsInProgress=void 0,this._showDiscovered=!1,this._openedDirectly=!1,this._navigateToResult=!1,this._filter=void 0,this._width=void 0,this._height=void 0,(0,h.r)(this,"dialog-closed",{dialog:this.localName})}willUpdate(i){if(super.willUpdate(i),this.hasUpdated||(0,C.i)(),void 0===this._filter&&void 0!==this._initialFilter&&(this._filter=this._initialFilter),void 0!==this._initialFilter&&""===this._filter)this._initialFilter=void 0,this._filter=void 0,this._width=void 0,this._height=void 0;else if(this.hasUpdated&&i.has("_filter")&&!i.has("_open")&&(!this._width||!this._height)){const i=this.shadowRoot.querySelector("ha-list")?.getBoundingClientRect();this._width=i?.width,this._height=i?.height}}_getIntegrations(){return this._filterIntegrations(this._integrations,this._helpers,this.hass.config.components,this.hass.localize,this._flowsInProgress?.length??0,this._filter)}render(){if(!this._open&&!this._integrations&&!this._helpers)return s.s6;const i=this._integrations?this._getIntegrations():void 0,t=this._pickedBrand?this._integrations?.[this._pickedBrand]||(0,b.s)(this._integrations,this._pickedBrand):void 0,e=this._pickedBrand&&(!this._integrations||t)||this._showDiscovered,n=e?this._getFlowsForCurrentView(t):[],o=e?this._getBrandHeading(t,n):this.hass.localize("ui.panel.config.integrations.new");return s.qy`<ha-dialog .open="${this._open}" header-title="${o}" @closed="${this._dialogClosed}"> ${e?s.qy` ${this._openedDirectly?s.s6:s.qy` <ha-icon-button-prev slot="headerNavigationIcon" @click="${this._prevClicked}"></ha-icon-button-prev> `} ${this._renderBrandView(t,n)} `:this._renderAll(i)} </ha-dialog>`}_getFlowsForCurrentView(i){if(this._showDiscovered)return this._flowsInProgress||[];if(!this._pickedBrand||!i)return[];let t;return"integrations"in i&&i.integrations?(t=Object.keys(i.integrations),"apple"===this._pickedBrand&&(t=t.filter(i=>"homekit_controller"!==i))):t=[this._pickedBrand],this._getFlowsInProgressForDomains(t)}_getBrandHeading(i,t){return!i?.iot_standards||"integrations"in i||t.length?i&&!i?.iot_standards&&!("integrations"in i)&&t.length?this.hass.localize("ui.panel.config.integrations.confirm_add_discovered"):this.hass.localize("ui.panel.config.integrations.what_to_add"):this.hass.localize("ui.panel.config.integrations.what_device_type")}_renderBrandView(i,t){return s.qy`<ha-domain-integrations .hass="${this.hass}" .domain="${this._pickedBrand}" .integration="${i}" .flowsInProgress="${t}" .navigateToResult="${this._navigateToResult}" .showManageLink="${this._showDiscovered}" style="${(0,l.W)({minWidth:`${this._width}px`,minHeight:"581px"})}" @close-dialog="${this.closeDialog}" @supported-by="${this._handleSupportedByEvent}" @select-brand="${this._handleSelectBrandEvent}"></ha-domain-integrations>`}_handleSelectBrandEvent(i){this._prevPickedBrand=this._pickedBrand,this._pickedBrand=i.detail.brand}_handleSupportedByEvent(i){this._supportedBy(i.detail.integration)}_supportedBy(i){const t=(0,b.s)(this._integrations,i.supported_by);(0,x.dk)(this,{text:this.hass.localize("ui.panel.config.integrations.config_flow.supported_brand_flow",{supported_brand:i.name||(0,$.p$)(this.hass.localize,i.domain),flow_domain_name:t?.name||(0,$.p$)(this.hass.localize,i.supported_by)}),confirm:()=>{this.closeDialog(),g.x.includes(i.supported_by)?(0,g.P)(this,this.hass,i.supported_by):t?this._handleIntegrationPicked({domain:i.supported_by,name:t.name||(0,$.p$)(this.hass.localize,i.supported_by),config_flow:t.config_flow,iot_standards:t.iot_standards}):(0,x.showAlertDialog)(this,{text:"Integration not found",warning:!0})}})}_renderAll(i){return s.qy`<ha-input-search appearance="outlined" ?autofocus="${!this._narrow}" .value="${this._filter}" @input="${this._filterChanged}" .placeholder="${this.hass.localize("ui.panel.config.integrations.search_brand")}" @keypress="${this._maybeSubmit}"></ha-input-search> ${i?s.qy`<ha-list ?autofocus="${this._narrow}"> <lit-virtualizer scroller tabindex="-1" class="ha-scrollbar" style="${(0,l.W)({width:`${this._width}px`,height:this._narrow?"calc(100vh - 184px - var(--safe-area-inset-top, 0px) - var(--safe-area-inset-bottom, 0px))":"500px"})}" @click="${this._integrationPicked}" @keypress="${this._handleKeyPress}" .items="${i}" .keyFunction="${this._keyFunction}" .renderItem="${this._renderRow}"> </lit-virtualizer> </ha-list>`:s.qy`<div class="flex center"> <ha-spinner></ha-spinner> </div>`} `}async _load(){const[i,t]=await Promise.all([(0,b.O)(this.hass),(0,y.t2)(this.hass.connection)]);if(this._flowsInProgress=t.filter(i=>y.KY.includes(i.context.source)),this._flowsInProgress.length){const i=[...new Set(this._flowsInProgress.map(i=>i.handler))];await this.hass.loadBackendTranslation("title",i,!0)}for(const t in i.custom.integration)Object.prototype.hasOwnProperty.call(i.custom.integration,t)&&(i.custom.integration[t].is_built_in=!1);this._integrations={...i.core.integration,...i.custom.integration};for(const t in i.custom.helper)Object.prototype.hasOwnProperty.call(i.custom.helper,t)&&(i.custom.helper[t].is_built_in=!1);this._helpers={...i.core.helper,...i.custom.helper},this.hass.loadBackendTranslation("title",i.core.translated_name,!0)}async _filterChanged(i){this._filter=i.target.value??""}_integrationPicked(i){const t=i.target.closest("ha-integration-list-item");t&&this._handleIntegrationPicked(t.integration)}_handleKeyPress(i){"Enter"===i.key&&this._integrationPicked(i)}async _handleIntegrationPicked(i){if(i.supported_by)return void this._supportedBy(i);if(i.is_discovered)return void(this._showDiscovered=!0);if(i.is_add)return(0,g.P)(this,this.hass,i.domain),void this.closeDialog();if(i.is_helper)return this.closeDialog(),void(0,p.oo)(`/config/helpers/add?domain=${i.domain}`);if(i.integrations)return void(this._pickedBrand=i.domain);if(g.x.includes(i.domain)&&(0,c.x)(this.hass.config,i.domain))return void(this._pickedBrand=i.domain);if(i.iot_standards)return void(this._pickedBrand=i.domain);if(i.single_config_entry){if((await(0,v.VN)(this.hass,{domain:i.domain})).length>0)return this.closeDialog(),void(0,F.C)(this,{domain:i.domain})}if(i.config_flow)return void this._createFlow(i.domain);if("cloud"===i.domain&&(0,c.x)(this.hass.config,"cloud"))return this.closeDialog(),void(0,p.oo)("/config/cloud");if(["google_assistant","alexa"].includes(i.domain)&&(0,c.x)(this.hass.config,"cloud"))return this.closeDialog(),void(0,p.oo)("/config/voice-assistants/assistants");const t=await(0,$.QC)(this.hass,i.domain);(0,P.n)(this,{manifest:t})}async _createFlow(i){if(this._getFlowsInProgressForDomains([i]).length)return void(this._pickedBrand=i);const t=await(0,$.QC)(this.hass,i);this.closeDialog(),(0,k.W)(this,{startFlowHandler:i,manifest:t,navigateToResult:this._navigateToResult})}_getFlowsInProgressForDomains(i){return this._flowsInProgress?this._flowsInProgress.filter(t=>i.includes(t.handler)||"alternative_domain"in t.context&&i.includes(t.context.alternative_domain)):[]}_maybeSubmit(i){if("Enter"!==i.key)return;const t=this._getIntegrations();t.length>0&&this._handleIntegrationPicked(t[0])}_prevClicked(){this._showDiscovered?this._showDiscovered=!1:(this._pickedBrand=this._prevPickedBrand,this._prevPickedBrand=void 0)}constructor(...i){super(...i),this._showDiscovered=!1,this._openedDirectly=!1,this._navigateToResult=!1,this._open=!1,this._narrow=!1,this._filterIntegrations=(0,d.A)((i,t,e,n,o,s)=>{const r=o>0?[{name:n("ui.panel.config.integrations.discovered_devices",{count:o}),domain:"_discovered",config_flow:!0,is_built_in:!0,is_discovered:!0}]:[],l=g.x.filter(i=>e.includes(i)).map(i=>({name:n(`ui.panel.config.integrations.add_${i}_device`),domain:i,config_flow:!0,is_built_in:!0,is_add:!0})).sort((i,t)=>(0,_.SH)(i.name,t.name,this.hass.locale.language)),d=[],c=[];if(Object.entries(i).forEach(([i,t])=>{if(!("integration_type"in t)||"hardware"!==t.integration_type)if("integration_type"in t&&(t.config_flow||t.iot_standards||t.supported_by)){const e=t.supported_by?(0,b.s)(this._integrations,t.supported_by):t;if(!e)return;d.push({domain:i,name:t.name||(0,$.p$)(n,i),config_flow:e.config_flow,iot_standards:e.iot_standards,supported_by:t.supported_by,is_built_in:!1!==e.is_built_in,overwrites_built_in:t.overwrites_built_in,cloud:e.iot_class?.startsWith("cloud_"),single_config_entry:t.single_config_entry})}else"integration_type"in t||!("iot_standards"in t)&&!("integrations"in t)?s&&"integration_type"in t&&c.push({domain:i,name:t.name||(0,$.p$)(n,i),config_flow:t.config_flow,is_built_in:!1!==t.is_built_in,overwrites_built_in:t.overwrites_built_in,cloud:t.iot_class?.startsWith("cloud_")}):d.push({domain:i,name:t.name||(0,$.p$)(n,i),iot_standards:t.iot_standards,integrations:t.integrations?Object.entries(t.integrations).map(([i,t])=>t.name||(0,$.p$)(n,i)):void 0,domains:t.integrations?Object.keys(t.integrations):void 0,is_built_in:!1!==t.is_built_in,overwrites_built_in:t.overwrites_built_in})}),s){const i={keys:[{name:"name",weight:5},{name:"domain",weight:5},{name:"integrations",weight:2},"supported_by","iot_standards"],isCaseSensitive:!1,minMatchCharLength:Math.min(s.length,2),threshold:.2,ignoreDiacritics:!0},e=Object.entries(t).map(([i,t])=>({domain:i,name:t.name||(0,$.p$)(n,i),config_flow:t.config_flow,is_helper:!0,is_built_in:!1!==t.is_built_in,cloud:t.iot_class?.startsWith("cloud_")}));return[...new a.A(d,i).search(s).map(i=>i.item),...new a.A(c,i).search(s).map(i=>i.item),...new a.A(e,i).search(s).map(i=>i.item)]}return[...r,...l,...d.sort((i,t)=>(0,_.SH)(i.name||"",t.name||"",this.hass.locale.language))]}),this._keyFunction=i=>i.domain,this._renderRow=i=>i?s.qy` <ha-integration-list-item .hass="${this.hass}" .integration="${i}" tabindex="0"> </ha-integration-list-item> `:s.s6}}B.styles=[z.dp,z.nA,s.AH`ha-dialog{--dialog-content-padding:0}ha-input-search{margin:0 var(--ha-space-4) var(--ha-space-3)}.divider{border-bottom-color:var(--divider-color)}p{text-align:center;padding:16px;margin:0}p>a{color:var(--primary-color)}.flex.center{display:flex;justify-content:center;align-items:center}ha-spinner{margin:24px 0}ha-list{position:relative}lit-virtualizer{contain:size layout!important}ha-integration-list-item{width:100%}`],(0,o.Cg)([(0,r.wk)()],B.prototype,"_integrations",void 0),(0,o.Cg)([(0,r.wk)()],B.prototype,"_helpers",void 0),(0,o.Cg)([(0,r.wk)()],B.prototype,"_initialFilter",void 0),(0,o.Cg)([(0,r.wk)()],B.prototype,"_filter",void 0),(0,o.Cg)([(0,r.wk)()],B.prototype,"_pickedBrand",void 0),(0,o.Cg)([(0,r.wk)()],B.prototype,"_prevPickedBrand",void 0),(0,o.Cg)([(0,r.wk)()],B.prototype,"_flowsInProgress",void 0),(0,o.Cg)([(0,r.wk)()],B.prototype,"_showDiscovered",void 0),(0,o.Cg)([(0,r.wk)()],B.prototype,"_openedDirectly",void 0),(0,o.Cg)([(0,r.wk)()],B.prototype,"_navigateToResult",void 0),(0,o.Cg)([(0,r.wk)()],B.prototype,"_open",void 0),(0,o.Cg)([(0,r.wk)()],B.prototype,"_narrow",void 0),B=(0,o.Cg)([(0,r.EM)("dialog-add-integration")],B),n()}catch(i){n(i)}})},73132(i,t,e){e.a(i,async function(i,t){try{e(74423),e(18111),e(22489),e(61701);var n=e(62826),o=e(5124),a=e(22441),s=e(36312),r=e(1087),l=e(89020),d=e(77090),c=e(91926),h=e(52220),g=(e(8630),e(28732),e(26571)),p=e(95350),_=e(77763),m=e(14503),f=e(44144),u=e(3631),w=e(76559),v=i([u]);u=(v.then?(await v)():v)[0];const y={zigbee:"zha",zwave:"zwave_js"};class $ extends o.WF{render(){return o.qy`<ha-list> ${this.flowsInProgress?.length?o.qy`<h3> ${this.hass.localize("ui.panel.config.integrations.discovered")} </h3> ${this.flowsInProgress.map(i=>o.qy`<ha-list-item graphic="medium" twoLine .flow="${i}" @request-selected="${this._flowInProgressPicked}" hasMeta> <img alt="" slot="graphic" loading="lazy" src="${(0,f.MR)({domain:i.handler,type:"icon",darkOptimized:this.hass.themes?.darkMode},this.hass.auth.data.hassUrl)}" crossorigin="anonymous" referrerpolicy="no-referrer"> <span>${(0,g.m7)(this.hass.localize,i)}</span> <span slot="secondary">${(0,p.p$)(this.hass.localize,i.handler)}</span> <ha-icon-next slot="meta"></ha-icon-next> </ha-list-item>`)} <li divider role="separator"></li> ${this.integration&&"integrations"in this.integration&&this.integration.integrations?o.qy`<h3> ${this.hass.localize("ui.panel.config.integrations.available_integrations")} </h3>`:o.s6}`:o.s6} ${this.integration?.iot_standards?this.integration.iot_standards.filter(i=>l.x.includes(y[i]||i)).map(i=>{const t=y[i]||i;return o.qy`<ha-list-item graphic="medium" .domain="${t}" @request-selected="${this._standardPicked}" hasMeta> <img slot="graphic" loading="lazy" alt="" src="${(0,f.MR)({domain:t,type:"icon",darkOptimized:this.hass.themes?.darkMode},this.hass.auth.data.hassUrl)}" crossorigin="anonymous" referrerpolicy="no-referrer"> <span>${this.hass.localize(`ui.panel.config.integrations.add_${t}_device`)}</span> <ha-icon-next slot="meta"></ha-icon-next> </ha-list-item>`}):""} ${this.integration&&"integrations"in this.integration&&this.integration.integrations?Object.entries(this.integration.integrations).filter(([,i])=>"hardware"!==i.integration_type).sort((i,t)=>i[1].config_flow&&!t[1].config_flow?-1:t[1].config_flow&&!i[1].config_flow?0:(0,h.SH)(i[1].name||(0,p.p$)(this.hass.localize,i[0]),t[1].name||(0,p.p$)(this.hass.localize,t[0]),this.hass.locale.language)).map(([i,t])=>o.qy`<ha-integration-list-item .hass="${this.hass}" .domain="${i}" .integration="${{...t,domain:i,name:t.name||(0,p.p$)(this.hass.localize,i),is_built_in:!1!==t.is_built_in,cloud:t.iot_class?.startsWith("cloud_")}}" @request-selected="${this._integrationPicked}"> </ha-integration-list-item>`):""} ${l.x.includes(this.domain)?o.qy`<ha-list-item graphic="medium" .domain="${this.domain}" @request-selected="${this._standardPicked}" hasMeta> <img slot="graphic" loading="lazy" alt="" src="${(0,f.MR)({domain:this.domain,type:"icon",darkOptimized:this.hass.themes?.darkMode},this.hass.auth.data.hassUrl)}" crossorigin="anonymous" referrerpolicy="no-referrer"> <span>${this.hass.localize(`ui.panel.config.integrations.add_${this.domain}_device`)}</span> <ha-icon-next slot="meta"></ha-icon-next> </ha-list-item>`:""} ${this.integration&&"config_flow"in this.integration&&this.integration.config_flow?o.qy`${this.flowsInProgress?.length?o.qy`<ha-list-item .domain="${this.domain}" @request-selected="${this._integrationPicked}" .integration="${{...this.integration,domain:this.domain,name:this.integration.name||(0,p.p$)(this.hass.localize,this.domain),is_built_in:!1!==this.integration.is_built_in,cloud:this.integration.iot_class?.startsWith("cloud_")}}" hasMeta> ${this.hass.localize("ui.panel.config.integrations.new_flow",{integration:this.integration.name||(0,p.p$)(this.hass.localize,this.domain)})} <ha-icon-next slot="meta"></ha-icon-next> </ha-list-item>`:o.qy`<ha-integration-list-item .hass="${this.hass}" .domain="${this.domain}" .integration="${{...this.integration,domain:this.domain,name:this.integration.name||(0,p.p$)(this.hass.localize,this.domain),is_built_in:!1!==this.integration.is_built_in,cloud:this.integration.iot_class?.startsWith("cloud_")}}" @request-selected="${this._integrationPicked}"> </ha-integration-list-item>`}`:""} ${this.showManageLink&&!location.pathname.startsWith("/config/integrations")?o.qy`<ha-list-item twoLine @request-selected="${this._manageDiscovered}" hasMeta> <span>${this.hass.localize("ui.panel.config.integrations.manage_discovered")}</span> <span slot="secondary">${this.hass.localize("ui.panel.config.integrations.manage_discovered_description")}</span> <ha-icon-next slot="meta"></ha-icon-next> </ha-list-item>`:o.s6} </ha-list> `}async _integrationPicked(i){if(!(0,d.s)(i))return;const t=i.currentTarget.domain;if(["cloud","google_assistant","alexa"].includes(t)&&(0,s.x)(this.hass.config,"cloud"))return void(0,c.oo)("/config/cloud");const e=i.currentTarget.integration;if(e.supported_by)return void(0,r.r)(this,"supported-by",{integration:e});if(e.iot_standards)return void(0,r.r)(this,"select-brand",{brand:e.domain});if(t===this.domain&&("integration_type"in this.integration&&!this.integration.config_flow||!("integration_type"in this.integration)&&(!this.integration.integrations||!(t in this.integration.integrations)))||!("integration_type"in this.integration)&&!this.integration.integrations?.[t]?.config_flow){const i=await(0,p.QC)(this.hass,t);return void(0,w.n)(this,{manifest:i})}const n=this.getRootNode();(0,_.W)(n instanceof ShadowRoot?n.host:this,{startFlowHandler:t,navigateToResult:this.navigateToResult,manifest:await(0,p.QC)(this.hass,t)}),(0,r.r)(this,"close-dialog")}async _flowInProgressPicked(i){if(!(0,d.s)(i))return;const t=i.currentTarget.flow,e=this.getRootNode();(0,_.W)(e instanceof ShadowRoot?e.host:this,{continueFlowId:t.flow_id,navigateToResult:this.navigateToResult,manifest:await(0,p.QC)(this.hass,t.handler)}),(0,r.r)(this,"close-dialog")}_manageDiscovered(i){(0,d.s)(i)&&((0,r.r)(this,"close-dialog"),(0,c.oo)("/config/integrations/dashboard?historyBack=1"))}_standardPicked(i){if(!(0,d.s)(i))return;const t=i.currentTarget.domain,e=this.getRootNode();(0,r.r)(this,"close-dialog"),(0,l.P)(e instanceof ShadowRoot?e.host:this,this.hass,t,{brand:this.domain})}constructor(...i){super(...i),this.navigateToResult=!1,this.showManageLink=!1}}$.styles=[m.RF,o.AH`:host{display:block;--mdc-list-item-graphic-size:40px;--mdc-list-side-padding:24px}h3{margin:8px 24px 0;color:var(--secondary-text-color);font-size:var(--ha-font-size-m);font-weight:var(--ha-font-weight-medium)}h3:first-of-type{margin-top:0}img{width:40px;height:40px}li[divider]{margin-top:8px}`],(0,n.Cg)([(0,a.MZ)()],$.prototype,"domain",void 0),(0,n.Cg)([(0,a.MZ)({attribute:!1})],$.prototype,"integration",void 0),(0,n.Cg)([(0,a.MZ)({attribute:!1})],$.prototype,"flowsInProgress",void 0),(0,n.Cg)([(0,a.MZ)({attribute:!1})],$.prototype,"navigateToResult",void 0),(0,n.Cg)([(0,a.MZ)({attribute:!1})],$.prototype,"showManageLink",void 0),$=(0,n.Cg)([(0,a.EM)("ha-domain-integrations")],$),t()}catch(i){t(i)}})},3631(i,t,e){e.a(i,async function(i,t){try{var n=e(62826),o=e(27686),a=e(7731),s=e(5124),r=e(22441),l=e(6412),d=e(95350),c=e(44144),h=(e(67094),e(43661),e(34127)),g=i([h]);h=(g.then?(await g)():g)[0];const p="M3 6H21V4H3C1.9 4 1 4.9 1 6V18C1 19.1 1.9 20 3 20H7V18H3V6M13 12H9V13.78C8.39 14.33 8 15.11 8 16C8 16.89 8.39 17.67 9 18.22V20H13V18.22C13.61 17.67 14 16.88 14 16S13.61 14.33 13 13.78V12M11 17.5C10.17 17.5 9.5 16.83 9.5 16S10.17 14.5 11 14.5 12.5 15.17 12.5 16 11.83 17.5 11 17.5M22 8H16C15.5 8 15 8.5 15 9V19C15 19.5 15.5 20 16 20H22C22.5 20 23 19.5 23 19V9C23 8.5 22.5 8 22 8M21 18H17V10H21V18Z",_="M14 2H6C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H18C19.11 22 20 21.11 20 20V8L14 2M18 20H6V4H13V9H18V20M9.54 15.65L11.63 17.74L10.35 19L7 15.65L10.35 12.3L11.63 13.56L9.54 15.65M17 15.65L13.65 19L12.38 17.74L14.47 15.65L12.38 13.56L13.65 12.3L17 15.65Z",m="M2,10.96C1.5,10.68 1.35,10.07 1.63,9.59L3.13,7C3.24,6.8 3.41,6.66 3.6,6.58L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.66,6.72 20.82,6.88 20.91,7.08L22.36,9.6C22.64,10.08 22.47,10.69 22,10.96L21,11.54V16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V10.96C2.7,11.13 2.32,11.14 2,10.96M12,4.15V4.15L12,10.85V10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V12.69L14,15.59C13.67,15.77 13.3,15.76 13,15.6V19.29L19,15.91M13.85,13.36L20.13,9.73L19.55,8.72L13.27,12.35L13.85,13.36Z",f="M16.36,14C16.44,13.34 16.5,12.68 16.5,12C16.5,11.32 16.44,10.66 16.36,10H19.74C19.9,10.64 20,11.31 20,12C20,12.69 19.9,13.36 19.74,14M14.59,19.56C15.19,18.45 15.65,17.25 15.97,16H18.92C17.96,17.65 16.43,18.93 14.59,19.56M14.34,14H9.66C9.56,13.34 9.5,12.68 9.5,12C9.5,11.32 9.56,10.65 9.66,10H14.34C14.43,10.65 14.5,11.32 14.5,12C14.5,12.68 14.43,13.34 14.34,14M12,19.96C11.17,18.76 10.5,17.43 10.09,16H13.91C13.5,17.43 12.83,18.76 12,19.96M8,8H5.08C6.03,6.34 7.57,5.06 9.4,4.44C8.8,5.55 8.35,6.75 8,8M5.08,16H8C8.35,17.25 8.8,18.45 9.4,19.56C7.57,18.93 6.03,17.65 5.08,16M4.26,14C4.1,13.36 4,12.69 4,12C4,11.31 4.1,10.64 4.26,10H7.64C7.56,10.66 7.5,11.32 7.5,12C7.5,12.68 7.56,13.34 7.64,14M12,4.03C12.83,5.23 13.5,6.57 13.91,8H10.09C10.5,6.57 11.17,5.23 12,4.03M18.92,8H15.97C15.65,6.75 15.19,5.55 14.59,4.44C16.43,5.07 17.96,6.34 18.92,8M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z";class u extends o.J{renderSingleLine(){return this.integration?s.qy`${this.integration.name||(0,d.p$)(this.hass.localize,this.integration.domain)} ${this.integration.is_helper?" (helper)":""}`:s.s6}renderGraphic(){if(!this.integration)return s.s6;const i={multi:this.multipleGraphics};return s.qy` <span class="mdc-deprecated-list-item__graphic material-icons ${(0,l.H)(i)}"> ${this.integration.is_discovered?s.qy`<ha-svg-icon class="discovered-icon" .path="${p}"></ha-svg-icon>`:s.qy`<img alt="" loading="lazy" src="${(0,c.MR)({domain:this.integration.domain,type:"icon",darkOptimized:this.hass.themes?.darkMode},this.hass.auth.data.hassUrl)}" crossorigin="anonymous" referrerpolicy="no-referrer">`} </span>`}renderMeta(){return this.integration?s.qy`<span class="mdc-deprecated-list-item__meta material-icons"> ${this.integration.cloud?s.qy` <ha-svg-icon id="icon-cloud" .path="${f}"></ha-svg-icon> <ha-tooltip for="icon-cloud" placement="left">${this.hass.localize("ui.panel.config.integrations.config_entry.depends_on_cloud")} </ha-tooltip>`:s.s6} ${this.integration.is_built_in?s.s6:s.qy`<span class="${this.integration.overwrites_built_in?"overwrites":"custom"}"> <ha-svg-icon id="icon-custom" .path="${m}"></ha-svg-icon> <ha-tooltip for="icon-custom" placement="left">${this.hass.localize(this.integration.overwrites_built_in?"ui.panel.config.integrations.config_entry.custom_overwrites_core":"ui.panel.config.integrations.config_entry.custom_integration")}</ha-tooltip></span>`} ${this.integration.config_flow||this.integration.integrations||this.integration.iot_standards?s.qy`<ha-icon-next></ha-icon-next>`:s.qy` <ha-svg-icon id="icon-yaml" .path="${_}" class="open-in-new"></ha-svg-icon> <ha-tooltip for="icon-yaml" placement="left"> ${this.hass.localize("ui.panel.config.integrations.config_entry.yaml_only")} </ha-tooltip>`} </span>`:s.s6}static get styles(){return[a.R,s.AH`:host{--mdc-list-side-padding:24px;--mdc-list-item-graphic-size:40px}: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)}span.material-icons:last-of-type{margin-inline-start:auto!important;margin-inline-end:0px!important;direction:var(--direction)}img{width:40px;height:40px}.discovered-icon{--mdc-icon-size:40px;color:var(--primary-color)}.mdc-deprecated-list-item__meta{width:auto;white-space:nowrap}.mdc-deprecated-list-item__meta>*{margin-right:8px;margin-inline-end:8px;margin-inline-start:initial}.mdc-deprecated-list-item__meta>:last-child{margin-right:0px;margin-inline-end:0px;margin-inline-start:initial}ha-icon-next{margin-right:8px;margin-inline-end:8px;margin-inline-start:initial}.open-in-new{--mdc-icon-size:22px;padding:1px}.custom{color:var(--warning-color)}.overwrites{color:var(--error-color)}`]}constructor(...i){super(...i),this.graphic="medium",this.hasMeta=!0}}(0,n.Cg)([(0,r.MZ)({attribute:!1})],u.prototype,"integration",void 0),(0,n.Cg)([(0,r.MZ)({type:String,reflect:!0})],u.prototype,"graphic",void 0),(0,n.Cg)([(0,r.MZ)({type:Boolean})],u.prototype,"hasMeta",void 0),u=(0,n.Cg)([(0,r.EM)("ha-integration-list-item")],u),t()}catch(i){t(i)}})},90676(i,t,e){e.d(t,{g:()=>a});var n=e(1087);const o=()=>Promise.all([e.e(4801),e.e(39763),e.e(32450),e.e(46095),e.e(7305),e.e(92769),e.e(34995),e.e(3283),e.e(80131),e.e(35764),e.e(47417),e.e(26092),e.e(8851),e.e(12009),e.e(66201),e.e(2513),e.e(40551)]).then(e.bind(e,7664)),a=i=>{(0,n.r)(i,"show-dialog",{dialogTag:"dialog-matter-add-device",dialogImport:o,dialogParams:{}})}},44919(i,t,e){e.d(t,{X:()=>a});var n=e(1087);const o=()=>Promise.all([e.e(4801),e.e(39763),e.e(32450),e.e(46095),e.e(34995),e.e(75613),e.e(64366)]).then(e.bind(e,54985)),a=(i,t)=>{(0,n.r)(i,"show-dialog",{dialogTag:"dialog-zwave_js-add-node",dialogImport:o,dialogParams:t})}},73875(i,t,e){e.d(t,{C:()=>o});var n=e(1087);const o=(i,t)=>(0,n.r)(i,"show-dialog",{dialogTag:"dialog-single-config-entry-warning",dialogParams:t,dialogImport:()=>e.e(38187).then(e.bind(e,53766))})}};