iobroker.lovelace
Version:
With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI
2 lines • 49.1 kB
JavaScript
/*! For license information please see 51212.822ac81bc26de087.js.LICENSE.txt */
export const __rspack_esm_id=51212;export const __rspack_esm_ids=[51212];export const __webpack_modules__={95747(t,e,a){a.a(t,async function(t,o){try{a.d(e,{CL:()=>w,GH:()=>$,Rl:()=>p,ZS:()=>_,aQ:()=>f,r6:()=>d,yg:()=>y});var i=a(74487),s=a(22786),n=a(72487),l=a(30162),r=a(8480),c=a(69543),h=t([i,r,n,l]);[i,r,n,l]=h.then?(await h)():h;const d=(t,e,a)=>u(e,a.time_zone).format(t),u=(0,s.A)((t,e)=>new Intl.DateTimeFormat(t.language,{year:"numeric",month:"long",day:"numeric",hour:(0,c.J)(t)?"numeric":"2-digit",minute:"2-digit",hourCycle:(0,c.J)(t)?"h12":"h23",timeZone:(0,r.wj)(t.time_zone,e)})),p=t=>g().format(t),g=(0,s.A)(()=>new Intl.DateTimeFormat(void 0,{year:"numeric",month:"long",day:"numeric",hour:"2-digit",minute:"2-digit"})),f=(t,e,a)=>m(e,a.time_zone).format(t),m=(0,s.A)((t,e)=>new Intl.DateTimeFormat(t.language,{year:"numeric",month:"short",day:"numeric",hour:(0,c.J)(t)?"numeric":"2-digit",minute:"2-digit",hourCycle:(0,c.J)(t)?"h12":"h23",timeZone:(0,r.wj)(t.time_zone,e)})),_=(t,e,a)=>v(e,a.time_zone).format(t),v=(0,s.A)((t,e)=>new Intl.DateTimeFormat(t.language,{month:"short",day:"numeric",hour:(0,c.J)(t)?"numeric":"2-digit",minute:"2-digit",hourCycle:(0,c.J)(t)?"h12":"h23",timeZone:(0,r.wj)(t.time_zone,e)})),w=(t,e,a)=>(new Date).getFullYear()===t.getFullYear()?_(t,e,a):f(t,e,a),y=(t,e,a)=>b(e,a.time_zone).format(t),b=(0,s.A)((t,e)=>new Intl.DateTimeFormat(t.language,{year:"numeric",month:"long",day:"numeric",hour:(0,c.J)(t)?"numeric":"2-digit",minute:"2-digit",second:"2-digit",hourCycle:(0,c.J)(t)?"h12":"h23",timeZone:(0,r.wj)(t.time_zone,e)})),$=(t,e,a)=>`${(0,n.zB)(t,e,a)}, ${(0,l.fU)(t,e,a)}`;o()}catch(t){o(t)}})},8480(t,e,a){a.a(t,async function(t,o){try{a.d(e,{fL:()=>h,n2:()=>d,wj:()=>u});var i=a(74487),s=a(29079),n=a(46927),l=t([i]);i=(l.then?(await l)():l)[0];const r=Intl.DateTimeFormat?.().resolvedOptions?.().timeZone,c=r&&("UTC"===r||"Etc/UTC"===r||r in s)?r:void 0,h=14881==a.j?void 0!==c:null,d=c??"UTC",u=(t,e)=>t===n.Wj.local&&c?d:e;o()}catch(t){o(t)}})},93905(t,e,a){a.d(e,{I:()=>s});a(44114),a(18111),a(7588),a(69112),a(33110);class o{addFromStorage(t){if(!this._storage[t]){const e=this.storage.getItem(t);e&&(this._storage[t]=JSON.parse(e))}}subscribeChanges(t,e){return this._listeners[t]?this._listeners[t].push(e):this._listeners[t]=[e],()=>{this.unsubscribeChanges(t,e)}}unsubscribeChanges(t,e){if(!(t in this._listeners))return;const a=this._listeners[t].indexOf(e);-1!==a&&this._listeners[t].splice(a,1)}hasKey(t){return t in this._storage}getValue(t){return this._storage[t]}setValue(t,e){const a=this._storage[t];this._storage[t]=e;try{void 0===e?this.storage.removeItem(t):this.storage.setItem(t,JSON.stringify(e))}catch(t){}finally{this._listeners[t]&&this._listeners[t].forEach(t=>t(a,e))}}constructor(t=window.localStorage){this._storage={},this._listeners={},this.storage=t,this.storage===window.localStorage&&window.addEventListener("storage",t=>{t.key&&this.hasKey(t.key)&&(this._storage[t.key]=t.newValue?JSON.parse(t.newValue):t.newValue,this._listeners[t.key]&&this._listeners[t.key].forEach(e=>e(t.oldValue?JSON.parse(t.oldValue):t.oldValue,this._storage[t.key])))})}}const i={};function s(t){return(e,a)=>{if("object"==typeof a)throw new Error("This decorator does not support this compilation type.");const s=t.storage||"localStorage";let n;s&&s in i?n=i[s]:(n=new o(window[s]),i[s]=n);const l=t.key||String(a);n.addFromStorage(l);const r=!1!==t.subscribe?t=>n.subscribeChanges(l,(e,o)=>{t.requestUpdate(a,e)}):void 0,c=()=>n.hasKey(l)?t.deserializer?t.deserializer(n.getValue(l)):n.getValue(l):void 0,h=(e,o)=>{let i;t.state&&(i=c()),n.setValue(l,t.serializer?t.serializer(o):o),t.state&&e.requestUpdate(a,i)},d=e.performUpdate;if(e.performUpdate=function(){this.__initialized=!0,d.call(this)},t.subscribe){const t=e.connectedCallback,a=e.disconnectedCallback;e.connectedCallback=function(){t.call(this);const e=this;e.__unbsubLocalStorage||(e.__unbsubLocalStorage=r?.(this))},e.disconnectedCallback=function(){a.call(this);this.__unbsubLocalStorage?.(),this.__unbsubLocalStorage=void 0}}const u=Object.getOwnPropertyDescriptor(e,a);let p;if(void 0===u)p={get:()=>c(),set(t){(this.__initialized||void 0===c())&&h(this,t)},configurable:!0,enumerable:!0};else{const t=u.set;p={...u,get:()=>c(),set(e){(this.__initialized||void 0===c())&&h(this,e),t?.call(this,e)}}}Object.defineProperty(e,a,p)}}},52943(t,e,a){a.d(e,{Z:()=>o});const o=t=>t.charAt(0).toUpperCase()+t.slice(1)},14927(t,e,a){a.a(t,async function(t,o){try{a.r(e),a.d(e,{HaLanguagePicker:()=>w,getLanguageOptions:()=>v});var i=a(74487),s=(a(18111),a(20116),a(61701),a(62826)),n=a(5124),l=a(22441),r=a(22786),c=a(1087),h=a(86198),d=a(52220),u=a(28684),p=a(18350),g=a(38508),f=t([i,p,g,h]);[i,p,g,h]=f.then?(await f)():f;const m="M7,10L12,15L17,10H7Z",_=[{name:"primary",weight:10},{name:"secondary",weight:8},{name:"search_labels.english",weight:5}],v=(t,e,a,o)=>{let i=[];const s={language:"en"};if(e){const e=u.P.translations;i=t.map(t=>{let a=e[t]?.nativeName;if(!a)try{a=new Intl.DisplayNames(t,{type:"language",fallback:"code"}).of(t)}catch(e){a=t}const i=(0,h.T)(t,o||{language:navigator.language}),n=(0,h.T)(t,s);return{id:t,primary:a,secondary:i!==a?i:void 0,search_labels:{english:n!==a?n:null}}})}else o&&(i=t.map(t=>{const e=(0,h.T)(t,o),a=(0,h.T)(t,s);return{id:t,primary:e,search_labels:{english:a!==e?a:null}}}));return!a&&o&&i.sort((t,e)=>(0,d.SH)(t.primary,e.primary,o.language)),i};class w extends n.WF{firstUpdated(t){super.firstUpdated(t),this._computeDefaultLanguageOptions()}_computeDefaultLanguageOptions(){this._defaultLanguages=Object.keys(u.P.translations)}render(){const t=this.label??(this.hass?.localize("ui.components.language-picker.language")||"Language"),e=this.value??(this.required&&!this.disabled?this._getItems()[0].id:this.value);return n.qy` <ha-generic-picker .hass="${this.hass}" .autofocus="${this.autofocus}" .notFoundLabel="${this._notFoundLabel}" .emptyLabel="${this.hass?.localize("ui.components.language-picker.no_languages")||"No languages available"}" .label="${t}" .value="${e}" .valueRenderer="${this._valueRenderer}" .disabled="${this.disabled}" .helper="${this.helper}" .getItems="${this._getItems}" .searchKeys="${_}" @value-changed="${this._changed}" hide-clear-icon> ${this.buttonStyle?n.qy`<ha-button slot="field" .disabled="${this.disabled}" @click="${this._openPicker}" appearance="plain" variant="neutral"> ${this._getLanguageName(e)} <ha-svg-icon slot="end" .path="${m}"></ha-svg-icon> </ha-button>`:n.s6} </ha-generic-picker> `}_openPicker(t){t.stopPropagation(),this.genericPicker.open()}_changed(t){t.stopPropagation(),this.value=t.detail.value,(0,c.r)(this,"value-changed",{value:this.value})}constructor(...t){super(...t),this.disabled=!1,this.required=!1,this.nativeName=!1,this.buttonStyle=!1,this.noSort=!1,this._defaultLanguages=[],this._getLanguagesOptions=(0,r.A)(v),this._getItems=()=>this._getLanguagesOptions(this.languages??this._defaultLanguages,this.nativeName,this.noSort,this.hass?.locale),this._getLanguageName=t=>this._getItems().find(e=>e.id===t)?.primary,this._valueRenderer=t=>n.qy`<span slot="headline">${this._getLanguageName(t)??t}</span> `,this._notFoundLabel=t=>{const e=n.qy`<b>‘${t}’</b>`;return this.hass?this.hass.localize("ui.components.language-picker.no_match",{term:e}):n.qy`No languages found for ${e}`}}}w.styles=n.AH`ha-generic-picker{width:100%;display:block}`,(0,s.Cg)([(0,l.MZ)()],w.prototype,"value",void 0),(0,s.Cg)([(0,l.MZ)()],w.prototype,"label",void 0),(0,s.Cg)([(0,l.MZ)({type:Array})],w.prototype,"languages",void 0),(0,s.Cg)([(0,l.MZ)({attribute:!1})],w.prototype,"hass",void 0),(0,s.Cg)([(0,l.MZ)({type:Boolean,reflect:!0})],w.prototype,"disabled",void 0),(0,s.Cg)([(0,l.MZ)({type:Boolean})],w.prototype,"required",void 0),(0,s.Cg)([(0,l.MZ)()],w.prototype,"helper",void 0),(0,s.Cg)([(0,l.MZ)({attribute:"native-name",type:Boolean})],w.prototype,"nativeName",void 0),(0,s.Cg)([(0,l.MZ)({type:Boolean,attribute:"button-style"})],w.prototype,"buttonStyle",void 0),(0,s.Cg)([(0,l.MZ)({attribute:"no-sort",type:Boolean})],w.prototype,"noSort",void 0),(0,s.Cg)([(0,l.wk)()],w.prototype,"_defaultLanguages",void 0),(0,s.Cg)([(0,l.P)("ha-generic-picker",!0)],w.prototype,"genericPicker",void 0),w=(0,s.Cg)([(0,l.EM)("ha-language-picker")],w),o()}catch(t){o(t)}})},67505(t,e,a){var o=a(62826),i=a(5124),s=a(22441),n=a(93421);a(67094);class l extends i.WF{render(){return this._localize?i.qy` <ha-svg-icon .path="${"M12,2A7,7 0 0,1 19,9C19,11.38 17.81,13.47 16,14.74V17A1,1 0 0,1 15,18H9A1,1 0 0,1 8,17V14.74C6.19,13.47 5,11.38 5,9A7,7 0 0,1 12,2M9,21V20H15V21A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21M12,4A5,5 0 0,0 7,9C7,11.05 8.23,12.81 10,13.58V16H14V13.58C15.77,12.81 17,11.05 17,9A5,5 0 0,0 12,4Z"}"></ha-svg-icon> <span class="prefix">${this._localize("ui.panel.config.tips.tip")}</span> <span class="text"><slot></slot></span> `:i.s6}}l.styles=i.AH`:host{display:block;text-align:center}.text{direction:var(--direction);margin-left:2px;margin-inline-start:2px;margin-inline-end:initial;color:var(--secondary-text-color)}.prefix{font-weight:var(--ha-font-weight-medium)}`,(0,o.Cg)([(0,s.wk)(),(0,n.IW)()],l.prototype,"_localize",void 0),l=(0,o.Cg)([(0,s.EM)("ha-tip")],l)},83892(t,e,a){a.d(e,{x:()=>l});a(18111),a(13579);var o=a(62826),i=a(92070),s=a(5124),n=a(22441);class l extends s.WF{_onSlotChange(t){return e=>{const a=e.target.assignedNodes({flatten:!0}).some(t=>t.nodeType===Node.ELEMENT_NODE||t.nodeType===Node.TEXT_NODE&&""!==t.textContent?.trim());"start"===t?this._hasStart=a:this._hasEnd=a}}render(){return this._renderBase(this._renderInner())}_renderBase(t){return s.qy`<div part="base" class="base" id="item">${t}</div>`}_renderInner(){const t=this._slotController.test("content");return s.qy` <div part="start" class="start" ?hidden="${!this._hasStart}"> <slot name="start" @slotchange="${this._onSlotChange("start")}"></slot> </div> <div part="content" class="content"> ${t?s.qy`<slot name="content"></slot>`:this._renderDefaultContent()} </div> <div part="end" class="end" ?hidden="${!this._hasEnd}"> <slot name="end" @slotchange="${this._onSlotChange("end")}"></slot> </div> `}_renderDefaultContent(){const t=this._slotController.test("headline"),e=this._slotController.test("supporting-text"),a=t||void 0!==this.headline,o=e||void 0!==this.supportingText;return s.qy` ${a?s.qy`<div part="headline" class="headline"> <slot name="headline">${this.headline??s.s6}</slot> </div>`:s.s6} ${o?s.qy`<div part="supporting-text" class="supporting"> <slot name="supporting-text">${this.supportingText??s.s6}</slot> </div>`:s.s6} `}constructor(...t){super(...t),this.disabled=!1,this._slotController=new i.X(this,"headline","supporting-text","content"),this._hasStart=!1,this._hasEnd=!1}}l.styles=s.AH`:host{display:block;color:var(--primary-text-color);font-size:var(--ha-font-size-m);line-height:var(--ha-line-height-normal)}:host([disabled]){color:var(--disabled-text-color);pointer-events:none}.base{position:relative;display:flex;flex-direction:row;align-items:center;gap:var(--ha-row-item-gap,var(--ha-space-4));padding-block:var(--ha-row-item-padding-block,var(--ha-space-3));padding-inline:var(--ha-row-item-padding-inline,var(--ha-space-4));min-height:var(--ha-row-item-min-height,48px);box-sizing:border-box}.content{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;justify-content:center}.end,.start{display:flex;align-items:center;flex:0 0 auto}.end[hidden],.start[hidden]{display:none}.headline{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.supporting{color:var(--secondary-text-color);font-size:var(--ha-font-size-s);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}`,(0,o.Cg)([(0,n.MZ)({type:String})],l.prototype,"headline",void 0),(0,o.Cg)([(0,n.MZ)({type:String,attribute:"supporting-text"})],l.prototype,"supportingText",void 0),(0,o.Cg)([(0,n.MZ)({type:Boolean,reflect:!0})],l.prototype,"disabled",void 0),(0,o.Cg)([(0,n.wk)()],l.prototype,"_hasStart",void 0),(0,o.Cg)([(0,n.wk)()],l.prototype,"_hasEnd",void 0),l=(0,o.Cg)([(0,n.EM)("ha-row-item")],l)},82e3(t,e,a){a.d(e,{D5:()=>o,Fy:()=>n,Gk:()=>c,Hg:()=>i,Y_:()=>h,ds:()=>r,e0:()=>s,ec:()=>l});a(74423),a(18111),a(61701),a(33110);const o=14881==a.j?`${location.protocol}//${location.host}`:null,i=t=>t.map(t=>{if("string"!==t.type)return t;switch(t.name){case"username":return{...t,autocomplete:"username",autofocus:!0};case"password":return{...t,autocomplete:"current-password"};case"code":return{...t,autocomplete:"one-time-code",autofocus:!0};default:return t}}),s=(t,e)=>t.callWS({type:"auth/sign_path",path:e}),n=async(t,e,a,o)=>t.callWS({type:"config/auth_provider/homeassistant/create",user_id:e,username:a,password:o}),l=(t,e,a)=>t.callWS({type:"config/auth_provider/homeassistant/change_password",current_password:e,new_password:a}),r=(t,e,a)=>t.callWS({type:"config/auth_provider/homeassistant/admin_change_password",user_id:e,password:a}),c=(t,e,a)=>t.callWS({type:"config/auth_provider/homeassistant/admin_change_username",user_id:e,username:a}),h=(t,e,a)=>t.callWS({type:"auth/delete_all_refresh_tokens",token_type:e,delete_current_token:a})},88151(t,e,a){a.d(e,{$:()=>o,Q:()=>i});a(44114),a(17642),a(58004),a(33853),a(45876),a(32475),a(15024),a(31698);const o=t=>t.callWS({type:"cloud/tts/info"}),i=t=>{const e=[];if(!t)return e;const a=new Set;for(const[o]of t.languages)a.has(o)||(a.add(o),e.push(o));return e}},79007(t,e,a){a.d(e,{AC:()=>h,C_:()=>r,HQ:()=>g,Tg:()=>c,Xo:()=>n,Zr:()=>d,_x:()=>l,mQ:()=>u,vT:()=>s,xU:()=>i,zN:()=>p});a(33110);var o=a(39889);const i=()=>fetch(`${location.protocol}//${location.host}/api/onboarding`,{credentials:"same-origin"}),s=t=>(0,o.QE)(fetch(`${location.protocol}//${location.host}/api/onboarding/users`,{method:"POST",credentials:"same-origin",body:JSON.stringify(t)})),n=t=>t.callApi("POST","onboarding/core_config"),l=t=>t.callApi("POST","onboarding/analytics"),r=(t,e)=>t.callApi("POST","onboarding/integration",e),c=async()=>{const t=await fetch(`${location.protocol}//${location.host}/api/onboarding/installation_type`,{method:"GET"});if(401===t.status)throw Error("unauthorized");if(404===t.status)throw Error("not_found");return t.json()},h=async t=>(0,o.QE)(fetch("/api/onboarding/cloud/login",{method:"POST",body:JSON.stringify(t)})),d=async()=>(0,o.QE)(fetch("/api/onboarding/cloud/status")),u=async()=>(0,o.QE)(fetch("/api/onboarding/cloud/logout",{method:"POST"})),p=async t=>(0,o.QE)(fetch("/api/onboarding/cloud/forgot_password",{method:"POST",body:JSON.stringify({email:t})})),g=t=>(0,o.QE)(fetch("/api/onboarding/integration/wait",{method:"POST",body:JSON.stringify({domain:t})}))},60761(t,e,a){a.d(e,{H:()=>o});const o=t=>t.callWS({type:"webhook/list"})},72247(t,e,a){a.a(t,async function(t,e){try{var o=a(62826),i=a(5124),s=a(22441),n=a(95747),l=a(1087),r=a(9899),c=a(38962),h=a(18350),d=(a(76776),a(29823)),u=(a(70947),a(28732),a(67094),a(67505),a(71117)),p=a(65063),g=a(81310),f=a(54706),m=a(14503),_=(a(20820),a(37802)),v=a(96872),w=a(63523),y=a(46100),b=a(7183),$=t([c,h,d,g,_,v,w,y,n]);[c,h,d,g,_,v,w,y,n]=$.then?(await $)():$;const x="M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19M8.46,11.88L9.87,10.47L12,12.59L14.12,10.47L15.53,11.88L13.41,14L15.53,16.12L14.12,17.53L12,15.41L9.88,17.53L8.47,16.12L10.59,14L8.46,11.88M15.5,4L14.5,3H9.5L8.5,4H5V6H19V4H15.5Z",k="M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z",C="M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z";class z extends((0,f.E)(i.WF)){render(){return i.qy` <hass-subpage .hass="${this.hass}" .narrow="${this.narrow}" header="ioBroker Cloud"> <ha-dropdown slot="toolbar-icon" @wa-select="${this._handleMenuAction}"> <ha-icon-button slot="trigger" .label="${this.hass.localize("ui.common.menu")}" .path="${k}"></ha-icon-button> <ha-dropdown-item value="reset"> ${this.hass.localize("ui.panel.config.cloud.account.reset_cloud_data")} <ha-svg-icon slot="icon" .path="${x}"></ha-svg-icon> </ha-dropdown-item> <ha-dropdown-item value="download"> ${this.hass.localize("ui.panel.config.cloud.account.download_support_package")} <ha-svg-icon slot="icon" .path="${C}"></ha-svg-icon> </ha-dropdown-item> </ha-dropdown> <div class="content"> <ha-config-section .isWide="${this.isWide}"> <span slot="header">ioBroker Cloud</span> <div slot="introduction"> <p> ${this.hass.localize("ui.panel.config.cloud.account.thank_you_note")} </p> </div> <ha-card outlined .header="${this.hass.localize("ui.panel.config.cloud.account.nabu_casa_account")}"> <div class="account-row"> <ha-list-item noninteractive twoline> ${this.cloudStatus.email.replace(/(\w{3})[\w.-]+@([\w.]+\w)/,"$1***@$2")} <span slot="secondary" class="wrap"> ${this._subscription?this._subscription.human_description.replace("{periodEnd}",this._subscription.plan_renewal_date?(0,n.r6)(new Date(1e3*this._subscription.plan_renewal_date),this.hass.locale,this.hass.config):""):this.hass.localize("ui.panel.config.cloud.account.fetching_subscription")} </span> </ha-list-item> </div> ${"connecting"===this.cloudStatus.cloud&&this.cloudStatus.cloud_last_disconnect_reason?i.qy` <ha-alert alert-type="warning" .title="${this.cloudStatus.cloud_last_disconnect_reason.reason}"></ha-alert> `:""} <div class="account-row"> <ha-list-item noninteractive> ${this.hass.localize("ui.panel.config.cloud.account.connection_status")}: ${"connected"===this.cloudStatus.cloud?this.hass.localize("ui.panel.config.cloud.account.connected"):"disconnected"===this.cloudStatus.cloud?this.hass.localize("ui.panel.config.cloud.account.not_connected"):this.hass.localize("ui.panel.config.cloud.account.connecting")} </ha-list-item> </div> <div class="card-actions"> <ha-button appearance="filled" href="https://account.nabucasa.com" target="_blank" rel="noreferrer"> ${this.hass.localize("ui.panel.config.cloud.account.manage_account")} </ha-button> <ha-button @click="${this._signOut}" variant="danger" appearance="plain"> ${this.hass.localize("ui.panel.config.cloud.account.sign_out")} </ha-button> </div> </ha-card> </ha-config-section> <ha-config-section .isWide="${this.isWide}"> <span slot="header">${this.hass.localize("ui.panel.config.cloud.account.integrations")}</span> <div slot="introduction"> <p> ${this.hass.localize("ui.panel.config.cloud.account.integrations_introduction")} </p> <p> ${this.hass.localize("ui.panel.config.cloud.account.integrations_introduction2")} <a href="https://www.nabucasa.com" target="_blank" rel="noreferrer"> ${this.hass.localize("ui.panel.config.cloud.account.integrations_link_all_features")}</a>. </p> </div> <cloud-remote-pref .hass="${this.hass}" .cloudStatus="${this.cloudStatus}"></cloud-remote-pref> <cloud-tts-pref .hass="${this.hass}" .narrow="${this.narrow}" .cloudStatus="${this.cloudStatus}"></cloud-tts-pref> <cloud-ice-servers-pref .hass="${this.hass}" .cloudStatus="${this.cloudStatus}"></cloud-ice-servers-pref> <ha-tip> <a href="/config/voice-assistants"> ${this.hass.localize("ui.panel.config.cloud.account.tip_moved_voice_assistants")} </a> </ha-tip> <cloud-webhooks .hass="${this.hass}" .cloudStatus="${this.cloudStatus}"></cloud-webhooks> </ha-config-section> </div> </hass-subpage> `}firstUpdated(){this._fetchSubscriptionInfo()}hassSubscribe(){const t=(0,r.s)(()=>{this.cloudStatus&&!this.cloudStatus.google_registered&&(0,l.r)(this,"ha-refresh-cloud-status")},1e4,!0);return[this.hass.connection.subscribeEvents(()=>{this.cloudStatus?.alexa_registered||(0,l.r)(this,"ha-refresh-cloud-status")},"alexa_smart_home"),this.hass.connection.subscribeEvents(t,"google_assistant_command"),this.hass.connection.subscribeEvents(t,"google_assistant_query"),this.hass.connection.subscribeEvents(t,"google_assistant_sync")]}async _fetchSubscriptionInfo(){this._subscription=await(0,u.Pd)(this.hass),this._subscription.provider&&this.cloudStatus&&"connected"!==this.cloudStatus.cloud&&(0,l.r)(this,"ha-refresh-cloud-status")}async _signOut(){(0,p.dk)(this,{text:this.hass.localize("ui.panel.config.cloud.account.sign_out_confirm"),confirmText:this.hass.localize("ui.common.yes"),dismissText:this.hass.localize("ui.common.no"),confirm:()=>this._logoutFromCloud()})}async _logoutFromCloud(){await(0,u.Gu)(this.hass),(0,l.r)(this,"ha-refresh-cloud-status")}_handleMenuAction(t){switch(t.detail.item.value){case"reset":this._deleteCloudData();break;case"download":this._downloadSupportPackage()}}async _deleteCloudData(){if(await(0,p.dk)(this,{title:this.hass.localize("ui.panel.config.cloud.account.reset_data_confirm_title"),text:this.hass.localize("ui.panel.config.cloud.account.reset_data_confirm_text"),confirmText:this.hass.localize("ui.panel.config.cloud.account.reset"),destructive:!0}))try{await(0,u.Gu)(this.hass),await(0,u.Sb)(this.hass)}catch(t){return void(0,p.showAlertDialog)(this,{title:this.hass.localize("ui.panel.config.cloud.account.reset_data_failed"),text:t?.message})}finally{(0,l.r)(this,"ha-refresh-cloud-status")}}async _downloadSupportPackage(){(0,b.Z)(this)}static get styles(){return[m.RF,i.AH`[slot=introduction]{margin:-1em 0}[slot=introduction] a{color:var(--primary-color)}.content{padding-bottom:24px}.account-row{display:flex;padding:0 16px}.card-actions{display:flex;flex-direction:row-reverse;justify-content:space-between}ha-button{align-self:center}.wrap{white-space:normal}.status{text-transform:capitalize;padding:16px}`]}constructor(...t){super(...t),this.isWide=!1,this.narrow=!1}}(0,o.Cg)([(0,s.MZ)({attribute:!1})],z.prototype,"hass",void 0),(0,o.Cg)([(0,s.MZ)({attribute:"is-wide",type:Boolean})],z.prototype,"isWide",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean})],z.prototype,"narrow",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],z.prototype,"cloudStatus",void 0),(0,o.Cg)([(0,s.wk)()],z.prototype,"_subscription",void 0),z=(0,o.Cg)([(0,s.EM)("cloud-account")],z),e()}catch(t){e(t)}})},37802(t,e,a){a.a(t,async function(t,e){try{var o=a(62826),i=a(5124),s=a(22441),n=a(1087),l=(a(76776),a(26300)),r=a(59646),c=a(71117),h=a(81619),d=t([l,r]);[l,r]=d.then?(await d)():d;const u="M11,18H13V16H11V18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,6A4,4 0 0,0 8,10H10A2,2 0 0,1 12,8A2,2 0 0,1 14,10C14,12 11,11.75 11,15H13C13,12.75 16,12.5 16,10A4,4 0 0,0 12,6Z";class p extends i.WF{render(){if(!this.cloudStatus)return i.s6;const{cloud_ice_servers_enabled:t}=this.cloudStatus.prefs;return i.qy` <ha-card outlined header="${this.hass.localize("ui.panel.config.cloud.account.ice_servers.title")}"> <div class="header-actions"> <ha-icon-button .label="${this.hass.localize("ui.panel.config.cloud.account.ice_servers.link_learn_how_it_works")}" .path="${u}" href="https://www.nabucasa.com/config/webrtc/" target="_blank" rel="noreferrer" class="icon-link"></ha-icon-button> <ha-switch .checked="${t}" @change="${this._toggleCloudICEServersEnabledChanged}"></ha-switch> </div> <div class="card-content"> <p> ${this.hass.localize("ui.panel.config.cloud.account.ice_servers.info")} </p> </div> </ha-card> `}async _toggleCloudICEServersEnabledChanged(t){const e=t.target;try{await(0,c.Up)(this.hass,{cloud_ice_servers_enabled:e.checked}),(0,n.r)(this,"ha-refresh-cloud-status")}catch(t){(0,h.P)(this,{message:t.message}),e.checked=!e.checked}}}p.styles=i.AH`.header-actions{position:absolute;right:16px;inset-inline-end:16px;inset-inline-start:initial;top:24px;display:flex;flex-direction:row}.header-actions .icon-link{margin-top:-16px;margin-right:8px;margin-inline-end:8px;margin-inline-start:initial;direction:var(--direction);color:var(--secondary-text-color)}`,(0,o.Cg)([(0,s.MZ)({attribute:!1})],p.prototype,"hass",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],p.prototype,"cloudStatus",void 0),p=(0,o.Cg)([(0,s.EM)("cloud-ice-servers-pref")],p),e()}catch(t){e(t)}})},96872(t,e,a){a.a(t,async function(t,e){try{var o=a(62826),i=a(5124),s=a(22441),n=a(1087),l=a(38962),r=a(18350),c=(a(76776),a(11382),a(59646)),h=(a(83892),a(72487)),d=a(43603),u=a(71117),p=a(81619),g=a(31381),f=a(20633),m=t([l,r,c,d,h]);[l,r,c,d,h]=m.then?(await m)():m;const _="M11,18H13V16H11V18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,6A4,4 0 0,0 8,10H10A2,2 0 0,1 12,8A2,2 0 0,1 14,10C14,12 11,11.75 11,15H13C13,12.75 16,12.5 16,10A4,4 0 0,0 12,6Z";class v extends i.WF{render(){if(!this.cloudStatus)return i.s6;const{remote_enabled:t,remote_allow_remote_enable:e,strict_connection:a}=this.cloudStatus.prefs,{remote_connected:o,remote_domain:s,remote_certificate:n,remote_certificate_status:l}=this.cloudStatus;return n&&"ready"===l?i.qy` <ha-card outlined header="${this.hass.localize("ui.panel.config.cloud.account.remote.title")}"> <div class="header-actions"> <ha-icon-button .label="${this.hass.localize("ui.panel.config.cloud.account.remote.link_learn_how_it_works")}" .path="${_}" href="https://www.nabucasa.com/config/remote/" target="_blank" rel="noreferrer" class="icon-link"></ha-icon-button> <ha-switch .checked="${t}" @change="${this._toggleChanged}"></ha-switch> </div> <div class="card-content"> ${!o&&t?i.qy` <ha-alert .title="${this.hass.localize("ui.panel.config.cloud.account.remote.reconnecting")}"></ha-alert> `:"drop_connection"===a?i.qy`<ha-alert alert-type="warning" .title="${this.hass.localize("ui.panel.config.cloud.account.remote.drop_connection_warning_title")}">${this.hass.localize("ui.panel.config.cloud.account.remote.drop_connection_warning")}</ha-alert>`:i.s6} <p> ${this.hass.localize("ui.panel.config.cloud.account.remote.info")} </p> ${o?i.s6:i.qy` <p> ${this.hass.localize("ui.panel.config.cloud.account.remote.info_instance_will_be_available")} </p> `} <ha-input-copy readonly="readonly" .value="${`https://${s}`}" .maskedValue="${(0,g.w)(`https://${s}`)}" .label="${this.hass.localize("ui.panel.config.common.copy_link")}"></ha-input-copy> <ha-expansion-panel outlined .header="${this.hass.localize("ui.panel.config.cloud.account.remote.security_options")}"> <ha-row-item> <span slot="headline">${this.hass.localize("ui.panel.config.cloud.account.remote.external_activation")}</span> <span slot="supporting-text">${this.hass.localize("ui.panel.config.cloud.account.remote.external_activation_secondary")}</span> <ha-switch slot="end" .checked="${e}" @change="${this._toggleAllowRemoteEnabledChanged}"> </ha-switch> </ha-row-item> <hr> <ha-row-item> <span slot="headline">${this.hass.localize("ui.panel.config.cloud.account.remote.certificate_info")}</span> <span slot="supporting-text">${this.cloudStatus.remote_certificate?this.hass.localize("ui.panel.config.cloud.account.remote.certificate_expire",{date:(0,h.Yq)(new Date(this.cloudStatus.remote_certificate.expire_date),this.hass.locale,this.hass.config)}):i.s6}</span> <ha-button slot="end" appearance="plain" size="small" @click="${this._openCertInfo}"> ${this.hass.localize("ui.panel.config.cloud.account.remote.more_info")} </ha-button> </ha-row-item> </ha-expansion-panel> </div> </ha-card> `:i.qy` <ha-card outlined header="${this.hass.localize("ui.panel.config.cloud.account.remote.title")}"> <div class="preparing"> ${"error"===l?this.hass.localize("ui.panel.config.cloud.account.remote.cerificate_error"):"loading"===l?this.hass.localize("ui.panel.config.cloud.account.remote.cerificate_loading"):"loaded"===l?this.hass.localize("ui.panel.config.cloud.account.remote.cerificate_loaded"):this.hass.localize("ui.panel.config.cloud.account.remote.access_is_being_prepared")} </div> </ha-card> `}_openCertInfo(){(0,f.Q)(this,{certificateInfo:this.cloudStatus.remote_certificate})}async _toggleChanged(t){const e=t.target;try{e.checked?await(0,u.cn)(this.hass):await(0,u.ql)(this.hass),(0,n.r)(this,"ha-refresh-cloud-status")}catch(t){(0,p.P)(this,{message:t.message}),e.checked=!e.checked}}async _toggleAllowRemoteEnabledChanged(t){const e=t.target;try{await(0,u.Up)(this.hass,{remote_allow_remote_enable:e.checked}),(0,n.r)(this,"ha-refresh-cloud-status")}catch(t){(0,p.P)(this,{message:t.message}),e.checked=!e.checked}}}v.styles=i.AH`.preparing{padding:0 16px 16px}.header-actions{position:absolute;right:16px;inset-inline-end:16px;inset-inline-start:initial;top:24px;display:flex;flex-direction:row}.header-actions .icon-link{margin-top:-16px;margin-right:8px;margin-inline-end:8px;margin-inline-start:initial;direction:var(--direction);color:var(--secondary-text-color)}.warning{font-weight:var(--ha-font-weight-bold);margin-bottom:1em}.break-word{overflow-wrap:break-word}.connection-status{position:absolute;right:24px;top:24px;inset-inline-end:24px;inset-inline-start:initial}.card-actions{display:flex}.card-actions a{text-decoration:none}ha-expansion-panel{margin-top:16px}ha-row-item{--ha-row-item-padding-inline:0}ha-row-item::part(headline),ha-row-item::part(supporting-text){white-space:wrap}ha-expansion-panel{--expansion-panel-content-padding:0 16px;--expansion-panel-summary-padding:0 16px}ha-alert{display:block;margin-bottom:16px}hr{border:none;height:1px;background-color:var(--divider-color);margin:8px 0}`,(0,o.Cg)([(0,s.MZ)({attribute:!1})],v.prototype,"hass",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],v.prototype,"cloudStatus",void 0),v=(0,o.Cg)([(0,s.EM)("cloud-remote-pref")],v),e()}catch(t){e(t)}})},63523(t,e,a){a.a(t,async function(t,e){try{a(44114),a(18111),a(20116),a(61701);var o=a(62826),i=a(5124),s=a(22441),n=a(22786),l=a(1087),r=a(63130),c=a(18350),h=(a(76776),a(14927)),d=a(606),u=(a(67094),a(59646)),p=a(71117),g=a(88151),f=a(65063),m=a(81619),_=a(73436),v=t([c,h,d,u]);[c,h,d,u]=v.then?(await v)():v;const w="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z",y=(t,e)=>{const a=[];if(!e)return a;for(const[o,i,s]of e.languages)o===t&&a.push({voiceId:i,voiceName:s});return a};class b extends i.WF{render(){if(!this.cloudStatus||!this.ttsInfo)return i.s6;const t=this.getLanguages(this.ttsInfo),e=this.cloudStatus.prefs.tts_default_voice,a=this.getSupportedVoices(e[0],this.ttsInfo);return i.qy` <ha-card outlined header="${this.hass.localize("ui.panel.config.cloud.account.tts.title")}"> <div class="card-content"> ${this.hass.localize("ui.panel.config.cloud.account.tts.description",{service:'"tts.cloud_say"'})} <br><br> <div class="row"> <ha-language-picker .hass="${this.hass}" .label="${this.hass.localize("ui.panel.config.cloud.account.tts.default_language")}" .disabled="${this.savingPreferences}" .value="${e[0]}" .languages="${t}" @value-changed="${this._handleLanguageChange}"> </ha-language-picker> <ha-select .label="${this.hass.localize("ui.panel.config.cloud.account.tts.default_voice")}" .disabled="${this.savingPreferences}" .value="${e[1]}" @selected="${this._handleVoiceChange}" .options="${a.map(t=>({value:t.voiceId,label:t.voiceName}))}"> </ha-select> </div> </div> <div class="card-actions"> <div class="voice-id" @click="${this._copyVoiceId}"> <div class="label"> ${this.hass.localize("ui.components.media-browser.tts.selected_voice_id")} </div> <code>${e[1]}</code> ${this.narrow?i.s6:i.qy` <ha-icon-button .path="${w}" title="${this.hass.localize("ui.components.media-browser.tts.copy_voice_id")}"></ha-icon-button> `} </div> <div class="flex"></div> <ha-button appearance="plain" @click="${this._openTryDialog}"> ${this.hass.localize("ui.panel.config.cloud.account.tts.try")} </ha-button> </div> </ha-card> `}willUpdate(t){super.willUpdate(t),this.hasUpdated||(0,g.$)(this.hass).then(t=>{this.ttsInfo=t}),t.has("cloudStatus")&&(this.savingPreferences=!1)}_openTryDialog(){(0,_.W)(this,{defaultVoice:this.cloudStatus.prefs.tts_default_voice})}async _handleLanguageChange(t){if(t.detail.value===this.cloudStatus.prefs.tts_default_voice[0])return;this.savingPreferences=!0;const e=t.detail.value,a=this.cloudStatus.prefs.tts_default_voice[1],o=this.getSupportedVoices(e,this.ttsInfo),i=o.find(t=>t.voiceId===a)?a:o[0].voiceId;try{await(0,p.Up)(this.hass,{tts_default_voice:[e,i]}),(0,l.r)(this,"ha-refresh-cloud-status")}catch(t){this.savingPreferences=!1,console.error(t),(0,f.showAlertDialog)(this,{text:`Unable to save default language. ${t}`,warning:!0})}}async _handleVoiceChange(t){const e=t.detail.value;if(!e||e===this.cloudStatus.prefs.tts_default_voice[1])return;this.savingPreferences=!0;const a=this.cloudStatus.prefs.tts_default_voice[0];try{await(0,p.Up)(this.hass,{tts_default_voice:[a,e]}),(0,l.r)(this,"ha-refresh-cloud-status")}catch(t){this.savingPreferences=!1,console.error(t),(0,f.showAlertDialog)(this,{text:`Unable to save default voice. ${t}`,warning:!0})}}async _copyVoiceId(t){t.preventDefault(),await(0,r.l)(this.cloudStatus.prefs.tts_default_voice[1]),(0,m.P)(this,{message:this.hass.localize("ui.common.copied_clipboard")})}constructor(...t){super(...t),this.narrow=!1,this.savingPreferences=!1,this.getLanguages=(0,n.A)(g.Q),this.getSupportedVoices=(0,n.A)(y)}}b.styles=i.AH`.example{position:absolute;right:16px;inset-inline-end:16px;inset-inline-start:initial;top:16px}.row{display:flex;gap:var(--ha-space-2)}.row>*{flex:1;width:0}.card-actions{display:flex;align-items:center}code{margin-left:6px;font-weight:var(--ha-font-weight-bold)}.voice-id{display:flex;align-items:center;font-size:var(--ha-font-size-s);color:var(--secondary-text-color);--mdc-icon-size:14px;--ha-icon-button-size:24px}:host([narrow]) .voice-id{flex-direction:column;font-size:var(--ha-font-size-xs);align-items:start;align-items:left}:host([narrow]) .label{text-transform:uppercase}:host([narrow]) code{margin-left:0}.flex{flex:1}`,(0,o.Cg)([(0,s.MZ)({attribute:!1})],b.prototype,"hass",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],b.prototype,"cloudStatus",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,reflect:!0})],b.prototype,"narrow",void 0),(0,o.Cg)([(0,s.wk)()],b.prototype,"savingPreferences",void 0),(0,o.Cg)([(0,s.wk)()],b.prototype,"ttsInfo",void 0),b=(0,o.Cg)([(0,s.EM)("cloud-tts-pref")],b),e()}catch(t){e(t)}})},46100(t,e,a){a.a(t,async function(t,e){try{a(74423),a(18111),a(22489),a(20116),a(61701);var o=a(62826),i=a(5124),s=a(22441),n=a(36312),l=a(18350),r=(a(76776),a(65829)),c=a(59646),h=(a(83892),a(71117)),d=a(60761),u=a(14503),p=a(20705),g=t([l,r,c]);[l,r,c]=g.then?(await g)():g;class f extends i.WF{connectedCallback(){super.connectedCallback(),this._fetchData()}render(){return i.qy` <ha-card outlined header="${this.hass.localize("ui.panel.config.cloud.account.webhooks.title")}"> <div class="card-content"> ${this.hass.localize("ui.panel.config.cloud.account.webhooks.info")} ${this.cloudStatus&&this._localHooks&&this._cloudHooks&&this.hass?0===this._localHooks.length?i.qy` <div class="body-text"> ${this.hass.localize("ui.panel.config.cloud.account.webhooks.no_hooks_yet")} <a href="/config/integrations">${this.hass.localize("ui.panel.config.cloud.account.webhooks.no_hooks_yet_link_integration")} </a> ${this.hass.localize("ui.panel.config.cloud.account.webhooks.no_hooks_yet2")} <a href="/config/automation/edit/new">${this.hass.localize("ui.panel.config.cloud.account.webhooks.no_hooks_yet_link_automation")}</a>. </div> `:this._localHooks.map(t=>i.qy` <ha-row-item .entry="${t}"> <span slot="headline">${t.name} ${t.domain!==t.name.toLowerCase()?` (${t.domain})`:""}</span> <span slot="supporting-text">${t.webhook_id}</span> ${this._progress.includes(t.webhook_id)?i.qy` <div class="progress" slot="end"> <ha-spinner></ha-spinner> </div> `:this._cloudHooks[t.webhook_id]?i.qy` <ha-button slot="end" appearance="plain" size="small" @click="${this._handleManageButton}"> ${this.hass.localize("ui.panel.config.cloud.account.webhooks.manage")} </ha-button> `:i.qy`<ha-switch slot="end" @click="${this._enableWebhook}"> </ha-switch>`} </ha-row-item> `):i.qy` <div class="body-text"> ${this.hass.localize("ui.panel.config.cloud.account.webhooks.loading")} </div> `} <div class="footer"> <a href="https://www.nabucasa.com/config/webhooks" target="_blank" rel="noreferrer"> ${this.hass.localize("ui.panel.config.cloud.account.webhooks.link_learn_more")} </a> </div> </div> </ha-card> `}updated(t){super.updated(t),t.has("cloudStatus")&&this.cloudStatus&&(this._cloudHooks=this.cloudStatus.prefs.cloudhooks||{})}_showDialog(t){const e=this._localHooks.find(e=>e.webhook_id===t),a=this._cloudHooks[t];(0,p.z)(this,{webhook:e,cloudhook:a,disableHook:()=>this._disableWebhook(t)})}_handleManageButton(t){const e=t.currentTarget.parentElement.entry;this._showDialog(e.webhook_id)}async _enableWebhook(t){const e=t.currentTarget.parentElement.entry;let a;this._progress=[...this._progress,e.webhook_id];try{a=await(0,h.dq)(this.hass,e.webhook_id)}catch(t){return void alert(t.message)}finally{this._progress=this._progress.filter(t=>t!==e.webhook_id)}this._cloudHooks={...this._cloudHooks,[e.webhook_id]:a},0===this._progress.length&&this._showDialog(e.webhook_id)}async _disableWebhook(t){this._progress=[...this._progress,t];try{await(0,h.yG)(this.hass,t)}catch(t){return void alert(`${this.hass.localize("ui.panel.config.cloud.account.webhooks.disable_hook_error_msg")} ${t.message}`)}finally{this._progress=this._progress.filter(e=>e!==t)}const{[t]:e,...a}=this._cloudHooks;this._cloudHooks=a}async _fetchData(){if(!(0,n.x)(this.hass.config,"webhook"))return void(this._localHooks=[]);const t=await(0,d.H)(this.hass);this._localHooks=t.filter(t=>!t.local_only&&("mobile_app"!==t.domain||"Deleted Webhook"!==t.name))}static get styles(){return[u.RF,i.AH`.body-text{padding:8px 0}.webhook{display:flex;padding:4px 0}.progress{margin-right:16px;margin-inline-end:16px;margin-inline-start:initial;display:flex;flex-direction:column;justify-content:center}.footer{padding-top:16px}.body-text a,.footer a{color:var(--primary-color)}ha-row-item{--ha-row-item-padding-inline:0}ha-row-item::part(headline),ha-row-item::part(supporting-text){white-space:wrap;word-break:break-all}`]}constructor(...t){super(...t),this._progress=[]}}(0,o.Cg)([(0,s.MZ)({attribute:!1})],f.prototype,"hass",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],f.prototype,"cloudStatus",void 0),(0,o.Cg)([(0,s.wk)()],f.prototype,"_cloudHooks",void 0),(0,o.Cg)([(0,s.wk)()],f.prototype,"_localHooks",void 0),(0,o.Cg)([(0,s.wk)()],f.prototype,"_progress",void 0),f=(0,o.Cg)([(0,s.EM)("cloud-webhooks")],f),e()}catch(t){e(t)}})},7183(t,e,a){a.d(e,{Z:()=>s});var o=a(1087);const i=()=>a.e(33970).then(a.bind(a,40169)),s=t=>{(0,o.r)(t,"show-dialog",{dialogTag:"dialog-cloud-support-package",dialogImport:i,dialogParams:{}})}},73436(t,e,a){a.d(e,{W:()=>s});var o=a(1087);const i=()=>a.e(58011).then(a.bind(a,8694)),s=(t,e)=>{(0,o.r)(t,"show-dialog",{dialogTag:"dialog-cloud-try-tts",dialogImport:i,dialogParams:e})}},20633(t,e,a){a.d(e,{Q:()=>i});var o=a(1087);const i=(t,e)=>{(0,o.r)(t,"show-dialog",{dialogTag:"dialog-cloud-certificate",dialogImport:()=>a.e(26166).then(a.bind(a,34037)),dialogParams:e})}},20705(t,e,a){a.d(e,{z:()=>i});var o=a(1087);const i=(t,e)=>{(0,o.r)(t,"show-dialog",{dialogTag:"dialog-manage-cloudhook",dialogImport:()=>a.e(21832).then(a.bind(a,83387)),dialogParams:e})}},91436(t,e,a){a.a(t,async function(t,o){try{a.r(e);a(74423);var i=a(62826),s=a(22441),n=a(91926),l=a(324),r=a(72247),c=a(38020),h=t([r,c]);[r,c]=h.then?(await h)():h;const d=["account","google-assistant","alexa"],u=["login","register","forgot-password"];class p extends l.a{firstUpdated(t){super.firstUpdated(t),this.addEventListener("cloud-done",t=>{this._flashMessage=t.detail.flashMessage,(0,n.oo)("/config/cloud/login")})}updated(t){if(super.updated(t),t.has("cloudStatus")){const e=t.get("cloudStatus");void 0===e?this._resolveCloudStatusLoaded():e.logged_in!==this.cloudStatus.logged_in&&(0,n.oo)(this.route.prefix,{replace:!0})}}createElement(t){const e=super.createElement(t);return e.addEventListener("cloud-email-changed",t=>{this._loginEmail=t.detail.value}),e.addEventListener("flash-message-changed",t=>{this._flashMessage=t.detail.value}),e}updatePageEl(t){this.cloudStatus&&!this.cloudStatus.logged_in&&d.includes(this._currentPage)||(t.hass=this.hass,t.email=this._loginEmail,t.isWide=this.isWide,t.narrow=this.narrow,t.cloudStatus=this.cloudStatus,t.flashMessage=this._flashMessage)}constructor(...t){super(...t),this.isWide=!1,this.narrow=!1,this.routerOptions={defaultPage:"login",showLoading:!0,initialLoad:()=>this._cloudStatusLoaded,beforeRender:t=>{if(this.cloudStatus.logged_in){if(!d.includes(t))return"account"}else if(!u.includes(t))return"login"},routes:{login:{tag:"cloud-login-panel"},register:{tag:"cloud-register",load:()=>a.e(86292).then(a.bind(a,58527))},"forgot-password":{tag:"cloud-forgot-password",load:()=>a.e(11844).then(a.bind(a,92949))},account:{tag:"cloud-account"}}},this._flashMessage="",this._loginEmail="",this._cloudStatusLoaded=new Promise(t=>{this._resolveCloudStatusLoaded=t})}}(0,i.Cg)([(0,s.MZ)({attribute:!1})],p.prototype,"hass",void 0),(0,i.Cg)([(0,s.MZ)({attribute:"is-wide",type:Boolean})],p.prototype,"isWide",void 0),(0,i.Cg)([(0,s.MZ)({type:Boolean})],p.prototype,"narrow",void 0),(0,i.Cg)([(0,s.MZ)({attribute:!1})],p.prototype,"route",void 0),(0,i.Cg)([(0,s.MZ)({attribute:!1})],p.prototype,"cloudStatus",void 0),(0,i.Cg)([(0,s.wk)()],p.prototype,"_flashMessage",void 0),(0,i.Cg)([(0,s.wk)()],p.prototype,"_loginEmail",void 0),p=(0,i.Cg)([(0,s.EM)("ha-config-cloud")],p),o()}catch(t){o(t)}})},38020(t,e,a){a.a(t,async function(t,e){try{var o=a(62826),i=a(5124),s=a(22441),n=a(1087),l=a(91926),r=a(38962),c=(a(76776),a(29823)),h=(a(70947),a(43661),a(8630),a(28732),a(67094),a(71117)),d=a(65063),u=a(81310),p=a(14503),g=(a(20820),a(7183)),f=a(50587),m=t([r,c,u,f]);[r,c,u,f]=m.then?(await m)():m;const _="M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19M8.46,11.88L9.87,10.47L12,12.59L14.12,10.47L15.53,11.88L13.41,14L15.53,16.12L14.12,17.53L12,15.41L9.88,17.53L8.47,16.12L10.59,14L8.46,11.88M15.5,4L14.5,3H9.5L8.5,4H5V6H19V4H15.5Z",v="M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z",w="M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z";class y extends i.WF{render(){return i.qy` <hass-subpage .hass="${this.hass}" .narrow="${this.narrow}" header="ioBroker Cloud"> <ha-dropdown slot="toolbar-icon" @wa-select="${this._handleMenuAction}"> <ha-icon-button slot="trigger" .label="${this.hass.localize("ui.common.menu")}" .path="${v}"></ha-icon-button> <ha-dropdown-item value="reset"> ${this.hass.localize("ui.panel.config.cloud.account.reset_cloud_data")} <ha-svg-icon slot="icon" .path="${_}"></ha-svg-icon> </ha-dropdown-item> <ha-dropdown-item value="download"> ${this.hass.localize("ui.panel.config.cloud.account.download_support_package")} <ha-svg-icon slot="icon" .path="${w}"></ha-svg-icon> </ha-dropdown-item> </ha-dropdown> <div class="content"> <ha-config-section .isWide="${this.isWide}"> <span slot="header">ioBroker Cloud</span> <div slot="introduction"> <p> ${this.hass.localize("ui.panel.config.cloud.login.introduction")} </p> <p> ${this.hass.localize("ui.panel.config.cloud.login.introduction2")} <a href="https://www.nabucasa.com" target="_blank" rel="noreferrer"> Nabu Casa, Inc</a>${this.hass.localize("ui.panel.config.cloud.login.introduction2a")} </p> <p> ${this.hass.localize("ui.panel.config.cloud.login.introduction3")} </p> <p> <a href="https://www.nabucasa.com" target="_blank" rel="noreferrer"> ${this.hass.localize("ui.panel.config.cloud.login.learn_more_link")} </a> </p> </div> ${this.flashMessage?i.qy`<ha-alert dismissable @alert-dismissed-clicked="${this._dismissFlash}"> ${this.flashMessage} </ha-alert>`:""} <cloud-login .hass="${this.hass}" .email="${this.email}" .localize="${this.hass.localize}" @cloud-forgot-password="${this._handleForgotPassword}" check-connection></cloud-login> <ha-card outlined> <ha-list> <ha-list-item @click="${this._handleRegister}" twoline hasMeta> ${this.hass.localize("ui.panel.config.cloud.login.start_trial")} <span slot="secondary"> ${this.hass.localize("ui.panel.config.cloud.login.trial_info")} </span> <ha-icon-next slot="meta"></ha-icon-next> </ha-list-item> </ha-list> </ha-card> </ha-config-section> </div> </hass-subpage> `}_handleForgotPassword(){this._dismissFlash(),(0,n.r)(this,"cloud-email-changed",{value:this._cloudLoginElement.emailField.value??""}),(0,l.oo)("/config/cloud/forgot-password")}_handleRegister(){this._dismissFlash(),(0,n.r)(this,"cloud-email-changed",{value:this._cloudLoginElement.emailField.value??""}),(0,l.oo)("/config/cloud/register")}_dismissFlash(){(0,n.r)(this,"flash-message-changed",{value:""})}_handleMenuAction(t){switch(t.detail.item.value){case"reset":this._deleteCloudData();break;case"download":this._downloadSupportPackage()}}async _deleteCloudData(){if(await(0,d.dk)(this,{title:this.hass.localize("ui.panel.config.cloud.account.reset_data_confirm_title"),text:this.hass.localize("ui.panel.config.cloud.account.reset_data_confirm_text"),confirmText:this.hass.localize("ui.panel.config.cloud.account.reset"),destructive:!0}))try{await(0,h.Sb)(this.hass)}catch(t){return void(0,d.showAlertDialog)(this,{title:this.hass.localize("ui.panel.config.cloud.account.reset_data_failed"),text:t?.message})}finally{(0,n.r)(this,"ha-refresh-cloud-status")}}async _downloadSupportPackage(){(0,g.Z)(this)}static get styles(){return[p.RF,i.AH`.content{padding-bottom:24px}[slot=introduction]{margin:-1em 0}[slot=introduction] a{color:var(--primary-color)}ha-card{overflow:hidden}ha-card .card-header{margin-bottom:-8px}h1{margin:0}`]}constructor(...t){super(...t),this.isWide=!1,this.narrow=!1}}(0,o.Cg)([(0,s.MZ)({attribute:!1})],y.prototype,"hass",void 0),(0,o.Cg)([(0,s.MZ)({attribute:"is-wide",type:Boolean})],y.prototype,"isWide",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean})],y.prototype,"narrow",void 0),(0,o.Cg)([(0,s.MZ)()],y.prototype,"email",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],y.prototype,"flashMessage",void 0),(0,o.Cg)([(0,s.P)("cloud-login")],y.prototype,"_cloudLoginElement",void 0),y=(0,o.Cg)([(0,s.EM)("cloud-login-panel")],y),e()}catch(t){e(t)}})},20820(t,e,a){var o=a(62826),i=a(5124),s=a(22441),n=a(6412);class l extends i.WF{render(){return i.qy` <div class="content ${(0,n.H)({narrow:!this.isWide,"full-width":this.fullWidth})}"> <div class="header"><slot name="header"></slot></div> <div class="together layout ${(0,n.H)({narrow:!this.isWide,vertical:this.vertical||!this.isWide,horizontal:!this.vertical&&this.isWide})}"> <div class="intro"><slot name="introduction"></slot></div> <div class="panel flex-auto"><slot></slot></div> </div> </div> `}constructor(...t){super(...t),this.isWide=!1,this.vertical=!1,this.fullWidth=!1}}l.styles=i.AH`:host{display:block}.content{padding:28px 20px 0;max-width:1040px;margin:0 auto}.layout{display:flex}.horizontal{flex-direction:row}.vertical{flex-direction:column}.flex-auto{flex:1 1 auto}.header{font-family:var(--ha-font-family-body);-webkit-font-smoothing:var(--ha-font-smoothing);-moz-osx-font-smoothing:var(--ha-moz-osx-font-smoothing);font-size:var(--ha-font-size-2xl);font-weight:var(--ha-font-weight-normal);line-height:var(--ha-line-height-condensed);opacity:var(--dark-primary-opacity)}.together{margin-top:var(--config-section-content-together-margin-top,32px)}.intro{font-family:var(--ha-font-family-body);-webkit-font-smoothing:var(--ha-font-smoothing);-moz-osx-font-smoothing:var(--ha-moz-osx-font-smoothing);font-weight:var(--ha-font-weight-normal);line-height:var(--ha-line-height-normal);width:100%;opacity:var(--dark-primary-opacity);font-size:var(--ha-font-size-m);padding-bottom:20px}.horizontal .intro{max-width:400px;margin-right:40px;margin-inline-end:40px;margin-inline-start:initial}.panel{margin-top:-24px}.panel ::slotted(*){margin-top:24px;display:block}.narrow.content{max-width:640px}.narrow .together{margin-top:var(--config-section-narrow-content-together-margin-top,var(--config-section-content-together-margin-top,20px))}.narrow .intro{padding-bottom:20px;margin-right:0;margin-inline-end:0;margin-inline-start:initial;max-width:500px}.full-width{padding:0}.full-width .layout{flex-direction:column}`,(0,o.Cg)([(0,s.MZ)({attribute:"is-wide",type:Boolean})],l.prototype,"isWide",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean})],l.prototype,"vertical",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,attribute:"full-width"})],l.prototype,"fullWidth",void 0),l=(0,o.Cg)([(0,s.EM)("ha-config-section")],l)},31886(t,e,a){a.a(t,async function(t,o){try{a.d(e,{BB:()=>i.B});a(38744);var i=a(88775),s=a(49232),n=a(78713),l=a(53834),r=a(35204),c=a(5806),h=t([i,s,n,l,r,c]);[i,s,n,l,r,c]=h.then?(await h)():h,o()}catch(t){o(t)}})},31247(t,e,a){a.d(e,{v:()=>o});a(18111),a(22489),a(61701);function o(t){return t.split(" ").map(t=>t.trim()).filter(t=>""!==t)}},9160(t,e,a){a.d(e,{_P:()=>n,my:()=>o,s0:()=>s,w4:()=>i});Math.pow(10,8);const o=6048e5,i=864e5,s=36e5,n=Symbol.for("constructDateFrom")},73420(t,e,a){a.d(e,{w:()=>i});var o=a(9160);function i(t,e){return"function"==typeof t?t(e):t&&"object"==typeof t&&o._P in t?t[o._P](e):t instanceof Date?new t.constructor(e):new Date(e)}},83504(t,e,a){a.d(e,{a:()=>i});var o=a(73420);function i(t,e){return(0,o.w)(e||t,t)}}};