iobroker.lovelace
Version:
With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI
51 lines • 38.5 kB
JavaScript
export const __rspack_esm_id=79988;export const __rspack_esm_ids=[79988];export const __webpack_modules__={63708(t,e,a){a.d(e,{fW:()=>r});a(18111),a(13579);var i=a(44537),o=a(36312);const r=(t,e)=>(h(e)||s(t,e))&&n(t,e),s=(t,e)=>!e.component||(0,i.e)(e.component).some(e=>(0,o.x)(t.config,e)),n=(t,e)=>!e.not_component||!(0,i.e)(e.not_component).some(e=>(0,o.x)(t.config,e)),h=t=>t.core},380(t,e,a){a.d(e,{D:()=>n,P:()=>s});a(74423);var i=a(67932),o=a(46927),r=a(96029);const s=t=>t.first_weekday===o.zt.language?"weekInfo"in Intl.Locale.prototype?new Intl.Locale(t.language).weekInfo.firstDay%7:(0,i.S)(t.language)%7:r.Z.includes(t.first_weekday)?r.Z.indexOf(t.first_weekday):1,n=t=>{const e=s(t);return r.Z[e]}},30162(t,e,a){a.a(t,async function(t,i){try{a.d(e,{LW:()=>u,Xs:()=>g,fU:()=>c,ie:()=>d});var o=a(74487),r=a(22786),s=a(8480),n=a(69543),h=t([o,s]);[o,s]=h.then?(await h)():h;const c=(t,e,a)=>l(e,a.time_zone).format(t),l=(0,r.A)((t,e)=>new Intl.DateTimeFormat(t.language,{hour:"numeric",minute:"2-digit",hourCycle:(0,n.J)(t)?"h12":"h23",timeZone:(0,s.wj)(t.time_zone,e)})),d=(t,e,a)=>p(e,a.time_zone).format(t),p=(0,r.A)((t,e)=>new Intl.DateTimeFormat(t.language,{hour:(0,n.J)(t)?"numeric":"2-digit",minute:"2-digit",second:"2-digit",hourCycle:(0,n.J)(t)?"h12":"h23",timeZone:(0,s.wj)(t.time_zone,e)})),g=(t,e,a)=>v(e,a.time_zone).format(t),v=(0,r.A)((t,e)=>new Intl.DateTimeFormat(t.language,{weekday:"long",hour:(0,n.J)(t)?"numeric":"2-digit",minute:"2-digit",hourCycle:(0,n.J)(t)?"h12":"h23",timeZone:(0,s.wj)(t.time_zone,e)})),u=(t,e,a)=>m(e,a.time_zone).format(t),m=(0,r.A)((t,e)=>new Intl.DateTimeFormat("en-GB",{hour:"numeric",minute:"2-digit",hour12:!1,timeZone:(0,s.wj)(t.time_zone,e)}));i()}catch(t){i(t)}})},8480(t,e,a){a.a(t,async function(t,i){try{a.d(e,{fL:()=>l,n2:()=>d,wj:()=>p});var o=a(74487),r=a(29079),s=a(46927),n=t([o]);o=(n.then?(await n)():n)[0];const h=Intl.DateTimeFormat?.().resolvedOptions?.().timeZone,c=h&&("UTC"===h||"Etc/UTC"===h||h in r)?h:void 0,l=14881==a.j?void 0!==c:null,d=c??"UTC",p=(t,e)=>t===s.Wj.local&&c?d:e;i()}catch(t){i(t)}})},69543(t,e,a){a.d(e,{J:()=>r});a(74423);var i=a(22786),o=a(46927);const r=(0,i.A)(t=>{if(t.time_format===o.Hg.language||t.time_format===o.Hg.system){const e=t.time_format===o.Hg.language?t.language:void 0;return new Date("January 1, 2023 22:00:00").toLocaleString(e).includes("10")}return t.time_format===o.Hg.am_pm})},96029(t,e,a){a.d(e,{Tq:()=>s,Z:()=>o,ZV:()=>i,sj:()=>r});const i=["sun","mon","tue","wed","thu","fri","sat"],o=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],r={0:"sun",1:"mon",2:"tue",3:"wed",4:"thu",5:"fri",6:"sat"},s={sun:"sunday",mon:"monday",tue:"tuesday",wed:"wednesday",thu:"thursday",fri:"friday",sat:"saturday"}},26218(t,e,a){a.d(e,{a:()=>o});const i=(0,a(77796).n)(t=>{history.replaceState({scrollPosition:t},"")},300);function o(t){return(e,a)=>{if("object"==typeof a)throw new Error("This decorator does not support this compilation type.");const o=e.connectedCallback;e.connectedCallback=function(){o.call(this);const e=this[a];e&&this.updateComplete.then(()=>{const a=this.renderRoot.querySelector(t);a&&setTimeout(()=>{a.scrollTop=e},0)})};const r=Object.getOwnPropertyDescriptor(e,a);let s;if(void 0===r)s={get(){return this[`__${String(a)}`]||history.state?.scrollPosition},set(t){i(t),this[`__${String(a)}`]=t},configurable:!0,enumerable:!0};else{const t=r.set;s={...r,set(e){i(e),this[`__${String(a)}`]=e,t?.call(this,e)}}}Object.defineProperty(e,a,s)}}},76830(t,e,a){a.d(e,{d:()=>i});a(18111),a(20116);const i=(t,e=!0)=>{if(t.defaultPrevented||0!==t.button||t.metaKey||t.ctrlKey||t.shiftKey)return;const a=t.composedPath().find(t=>"A"===t.tagName);if(!a||a.target||a.hasAttribute("download")||"external"===a.getAttribute("rel"))return;let i=a.href;if(!i||-1!==i.indexOf("mailto:"))return;const o=window.location,r=o.origin||o.protocol+"//"+o.host;return i.startsWith(r)&&(i=i.slice(r.length),"#"!==i)?(e&&t.preventDefault(),i):void 0}},20058(t,e,a){a.a(t,async function(t,i){try{a.d(e,{QL:()=>d,ZQ:()=>p,ZV:()=>l,ty:()=>h,x:()=>n});var o=a(74487),r=(a(74423),a(18111),a(61701),a(46927)),s=t([o]);o=(s.then?(await s)():s)[0];const n=t=>h(t.attributes),h=(t,e)=>!!t.unit_of_measurement||!!t.state_class||(e||[]).includes(t.device_class||""),c=t=>{switch(t.number_format){case r.jG.comma_decimal:return["en-US","en"];case r.jG.decimal_comma:return["de","es","it"];case r.jG.space_comma:return["fr","sv","cs"];case r.jG.quote_decimal:return["de-CH"];case r.jG.system:return;default:return t.language}},l=(t,e,a)=>d(t,e,a).map(t=>t.value).join(""),d=(t,e,a)=>{const i=e?c(e):void 0;return e?.number_format===r.jG.none||Number.isNaN(Number(t))?Number.isNaN(Number(t))||""===t||e?.number_format!==r.jG.none?[{type:"literal",value:t}]:new Intl.NumberFormat("en-US",g(t,{...a,useGrouping:!1})).formatToParts(Number(t)):new Intl.NumberFormat(i,g(t,a)).formatToParts(Number(t))},p=(t,e)=>{const a=e?.display_precision;return null!=a?{maximumFractionDigits:a,minimumFractionDigits:a}:Number.isInteger(Number(t?.attributes?.step))&&Number.isInteger(Number(t?.state))?{maximumFractionDigits:0}:void 0},g=(t,e)=>{const a={maximumFractionDigits:2,...e};if("string"!=typeof t)return a;if(!e||void 0===e.minimumFractionDigits&&void 0===e.maximumFractionDigits){const e=t.indexOf(".")>-1?t.split(".")[1].length:0;a.minimumFractionDigits=e,a.maximumFractionDigits=e}return a};i()}catch(t){i(t)}})},5911(t,e,a){a.d(e,{$:()=>i});a(44114);const i=(t,e)=>{const a={};for(const i of t){const t=e(i);t in a?a[t].push(i):a[t]=[i]}return a}},77796(t,e,a){a.d(e,{n:()=>i});const i=(t,e,a=!0,i=!0)=>{let o,r=0;const s=(...s)=>{const n=()=>{r=!1===a?0:Date.now(),o=void 0,t(...s)},h=Date.now();r||!1!==a||(r=h);const c=e-(h-r);c<=0||c>e?(o&&(clearTimeout(o),o=void 0),r=h,t(...s)):o||!1===i||(o=window.setTimeout(n,c))};return s.cancel=()=>{clearTimeout(o),o=void 0,r=0},s}},54276(t,e,a){var i=a(62826),o=a(76482),r=a(91382),s=a(96245),n=a(5124),h=a(22441);class c extends r.n{attach(t){super.attach(t),this.attachableTouchController.attach(t)}disconnectedCallback(){super.disconnectedCallback(),this.hovered=!1,this.pressed=!1}detach(){super.detach(),this.attachableTouchController.detach()}_onTouchControlChange(t,e){t?.removeEventListener("touchend",this._handleTouchEnd),e?.addEventListener("touchend",this._handleTouchEnd)}constructor(...t){super(...t),this.attachableTouchController=new o.i(this,this._onTouchControlChange.bind(this)),this._handleTouchEnd=()=>{this.disabled||super.endPressAnimation()}}}c.styles=[s.R,n.AH`:host{--md-ripple-hover-opacity:var(--ha-ripple-hover-opacity, 0.08);--md-ripple-pressed-opacity:var(--ha-ripple-pressed-opacity, 0.12);--md-ripple-hover-color:var(
--ha-ripple-hover-color,
var(--ha-ripple-color, var(--secondary-text-color))
);--md-ripple-pressed-color:var(
--ha-ripple-pressed-color,
var(--ha-ripple-color, var(--secondary-text-color))
)}`],c=(0,i.Cg)([(0,h.EM)("ha-ripple")],c)},65829(t,e,a){a.a(t,async function(t,i){try{a.r(e),a.d(e,{HaSpinner:()=>c});var o=a(62826),r=a(55262),s=a(5124),n=a(22441),h=t([r]);r=(h.then?(await h)():h)[0];class c extends r.A{updated(t){if(super.updated(t),t.has("size"))switch(this.size){case"tiny":this.style.setProperty("--ha-spinner-size","16px");break;case"small":this.style.setProperty("--ha-spinner-size","28px");break;case"medium":this.style.setProperty("--ha-spinner-size","48px");break;case"large":this.style.setProperty("--ha-spinner-size","68px");break;case void 0:this.style.removeProperty("--ha-progress-ring-size")}}static get styles(){return[r.A.styles,s.AH`:host{--indicator-color:var(
--ha-spinner-indicator-color,
var(--primary-color)
);--track-color:var(--ha-spinner-divider-color, var(--divider-color));--track-width:4px;--speed:3.5s;font-size:var(--ha-spinner-size, 48px)}`]}}(0,o.Cg)([(0,n.MZ)()],c.prototype,"size",void 0),c=(0,o.Cg)([(0,n.EM)("ha-spinner")],c),i()}catch(t){i(t)}})},43831(t,e,a){var i=a(62826),o=a(5124),r=a(22441),s=a(63672);a(54276);class n extends o.WF{render(){return o.qy` <div tabindex="0" role="tab" aria-selected="${this.active}" aria-label="${(0,s.J)(this.name)}" ="${this._handleKeyDown}"> <slot name="icon"></slot> <span class="name">${this.name}</span> <ha-ripple></ha-ripple> </div> `}_handleKeyDown(t){"Enter"===t.key&&t.target.click()}constructor(...t){super(...t),this.active=!1,this.narrow=!1}}n.styles=o.AH`div{padding:0 32px;display:flex;flex-direction:column;text-align:center;box-sizing:border-box;align-items:center;justify-content:center;width:100%;height:var(--header-height);cursor:pointer;position:relative;outline:0}:host(:not([narrow])) div{flex-direction:row;gap:var(--ha-space-2)}.name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}:host([active]){color:var(--primary-color)}:host(:not([narrow])[active]) div{border-bottom:2px solid var(--primary-color)}:host([narrow]){min-width:0;display:flex;justify-content:center;overflow:hidden}:host([narrow]) div{padding:0 4px}::slotted([slot=icon]){margin-bottom:var(--ha-space-1)}:host(:not([narrow])) ::slotted([slot=icon]){margin-bottom:0}div:focus-visible:before{position:absolute;display:block;content:"";inset:0;background-color:var(--secondary-text-color);opacity:.08}`,(0,i.Cg)([(0,r.MZ)({type:Boolean,reflect:!0})],n.prototype,"active",void 0),(0,i.Cg)([(0,r.MZ)({type:Boolean,reflect:!0})],n.prototype,"narrow",void 0),(0,i.Cg)([(0,r.MZ)()],n.prototype,"name",void 0),n=(0,i.Cg)([(0,r.EM)("ha-tab")],n)},34127(t,e,a){a.a(t,async function(t,e){try{var i=a(62826),o=a(52630),r=a(5124),s=a(22441),n=t([o]);o=(n.then?(await n)():n)[0];class h extends o.A{static get styles(){return[o.A.styles,r.AH`:host{--wa-tooltip-background-color:var(
--ha-tooltip-background-color,
var(--ha-color-surface-default)
);--wa-tooltip-content-color:var(
--ha-tooltip-text-color,
var(--primary-text-color)
);--wa-tooltip-font-family:var(
--ha-tooltip-font-family,
var(--ha-font-family-body)
);--wa-tooltip-font-size:var(
--ha-tooltip-font-size,
var(--ha-font-size-m)
);--wa-tooltip-font-weight:var(
--ha-tooltip-font-weight,
var(--ha-font-weight-medium)
);--wa-tooltip-line-height:var(
--ha-tooltip-line-height,
var(--ha-line-height-condensed)
);--wa-tooltip-padding:var(--ha-tooltip-padding, var(--ha-space-2));--wa-tooltip-border-radius:var(
--ha-tooltip-border-radius,
var(--ha-border-radius-md)
);--wa-tooltip-arrow-size:var(--ha-tooltip-arrow-size, 0px);--wa-tooltip-border-width:0px;--wa-z-index-tooltip:1000}.tooltip::part(popup){animation-duration:var(--ha-tooltip-animation-duration, 0)}.body{box-shadow:var(--ha-tooltip-box-shadow,var(--ha-box-shadow-m))}`]}constructor(...t){super(...t),this.showDelay=350,this.hideDelay=150}}(0,i.Cg)([(0,s.MZ)({attribute:"show-delay",type:Number})],h.prototype,"showDelay",void 0),(0,i.Cg)([(0,s.MZ)({attribute:"hide-delay",type:Number})],h.prototype,"hideDelay",void 0),h=(0,i.Cg)([(0,s.EM)("ha-tooltip")],h),e()}catch(t){e(t)}})},23296(t,e,a){a.a(t,async function(t,i){try{a.r(e);var o=a(62826),r=a(5124),s=a(22441),n=a(91926),h=a(65829),c=a(90248),l=a(2054),d=a(14503),p=t([h,c,l]);[h,c,l]=p.then?(await p)():p;class g extends r.WF{render(){return r.qy` ${this.noToolbar?"":r.qy`<div class="toolbar"> ${this.rootnav||history.state?.root?r.qy` <ha-menu-button .hass="${this.hass}" .narrow="${this.narrow}"></ha-menu-button> `:r.qy` <ha-icon-button-arrow-prev .hass="${this.hass}" ="${this._handleBack}"></ha-icon-button-arrow-prev> `} </div>`} <div class="content"> <ha-spinner></ha-spinner> ${this.message?r.qy`<div id="loading-text">${this.message}</div>`:r.s6} </div> `}_handleBack(){(0,n.OE)()}static get styles(){return[d.RF,r.AH`:host{display:block;height:100%;background-color:var(--primary-background-color)}.toolbar{display:flex;align-items:center;font-size:var(--ha-font-size-xl);height:var(--header-height);padding:8px 12px;pointer-events:none;background-color:var(--app-header-background-color);font-weight:var(--ha-font-weight-normal);color:var(--app-header-text-color,#fff);border-bottom:var(--app-header-border-bottom,none);box-sizing:border-box} (max-width:599px){.toolbar{padding:4px}}ha-icon-button-arrow-prev,ha-menu-button{pointer-events:auto}.content{height:calc(100% - var(--header-height));display:flex;flex-direction:column;align-items:center;justify-content:center}#loading-text{max-width:350px;margin-top:16px}`]}constructor(...t){super(...t),this.noToolbar=!1,this.rootnav=!1,this.narrow=!1}}(0,o.Cg)([(0,s.MZ)({attribute:!1})],g.prototype,"hass",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,attribute:"no-toolbar"})],g.prototype,"noToolbar",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean})],g.prototype,"rootnav",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean})],g.prototype,"narrow",void 0),(0,o.Cg)([(0,s.MZ)()],g.prototype,"message",void 0),g=(0,o.Cg)([(0,s.EM)("hass-loading-screen")],g),i()}catch(t){i(t)}})},40511(t,e,a){a.a(t,async function(t,e){try{a(18111),a(22489),a(20116),a(61701),a(14603),a(47566),a(98721);var i=a(62826),o=a(5124),r=a(22441),s=a(6412),n=a(22786),h=a(63708),c=a(26218),l=a(76830),d=a(91926),p=a(90248),g=a(2054),v=(a(67094),a(43831),a(14503)),u=t([p,g]);[p,g]=u.then?(await u)():u;const m=t=>t.endsWith("/")&&t.length>1?t.slice(0,-1):t;class f extends o.WF{willUpdate(t){if(t.has("route")){const t=`${this.route.prefix}${this.route.path}`;this._activeTab=this.tabs.find(e=>this._isActiveTabPath(e.path,t))}super.willUpdate(t)}render(){const t=this._getTabs(this.tabs,this._activeTab,this.hass.config.components,this.hass.language,this.hass.userData,this.narrow,this.localizeFunc||this.hass.localize);return o.qy` <div class="toolbar ${(0,s.H)({narrow:this.narrow})}"> <slot name="toolbar"> <div class="toolbar-content"> ${this.mainPage||!this.backPath&&history.state?.root?o.qy` <ha-menu-button .hass="${this.hass}" .narrow="${this.narrow}"></ha-menu-button> `:this.backPath?o.qy` <ha-icon-button-arrow-prev .href="${this.backPath}" .hass="${this.hass}"></ha-icon-button-arrow-prev> `:o.qy` <ha-icon-button-arrow-prev .hass="${this.hass}" ="${this._backTapped}"></ha-icon-button-arrow-prev> `} ${this.narrow||!this.showTabs?o.qy`<div class="main-title"> <slot name="header">${this.showTabs?"":t[0]}</slot> </div>`:""} ${this.showTabs&&!this.narrow?o.qy`<div id="tabbar">${t}</div>`:""} <div id="toolbar-icon"> <slot name="toolbar-icon"></slot> </div> </div> </slot> ${this.showTabs&&this.narrow?o.qy`<div id="tabbar" class="bottom-bar">${t}</div>`:""} </div> <div class="container"> ${this.pane?o.qy`<div class="pane"> <div class="shadow-container"></div> <div class="ha-scrollbar"> <slot name="pane"></slot> </div> </div>`:o.s6} <div class="content ha-scrollbar" ="${this._saveScrollPos}"> <slot></slot> ${this.hasFab?o.qy`<div class="fab-bottom-space"></div>`:o.s6} </div> </div> <div id="fab"> <slot name="fab"></slot> </div> `}_saveScrollPos(t){this._savedScrollPos=t.target.scrollTop}focusContentScroller(){this._content&&(this._content.style.outline="none",this._content.focus({preventScroll:!0}))}_backTapped(){this.backCallback?this.backCallback():(0,d.OE)()}_isActiveTabPath(t,e){try{const a=new URL(t,window.location.origin),i=new URL(e,window.location.origin),o=m(a.pathname),r=m(i.pathname);return!(r!==o&&!r.startsWith(`${o}/`))}catch(a){return e===t||e.startsWith(`${t}/`)}}async _tabClicked(t){const e=(0,l.d)(t);e&&await(0,d.oo)(e,{replace:!0})}static get styles(){return[v.dp,o.AH`:host{display:block;height:100%;background-color:var(--primary-background-color)}:host([narrow]){width:100%;position:fixed}.container{display:flex;height:calc(100% - var(--header-height,0px) - var(--safe-area-inset-top,0px))}ha-menu-button{margin-right:24px;margin-inline-end:24px;margin-inline-start:initial}.toolbar{font-size:var(--ha-font-size-xl);height:calc(var(--header-height,0px) + var(--safe-area-inset-top,0px));padding-top:var(--safe-area-inset-top);padding-right:var(--safe-area-inset-right);background-color:var(--sidebar-background-color);font-weight:var(--ha-font-weight-normal);border-bottom:1px solid var(--divider-color);box-sizing:border-box}:host([narrow]) .toolbar{padding-left:var(--safe-area-inset-left)}.toolbar-content{padding:8px 12px;display:flex;align-items:center;height:100%;box-sizing:border-box}:host([narrow]) .toolbar-content{padding:4px}.toolbar a{color:var(--sidebar-text-color);text-decoration:none}.bottom-bar a{width:25%}#tabbar{display:flex;font-size:var(--ha-font-size-m);overflow:hidden}#tabbar>a{overflow:hidden;max-width:45%}#tabbar.bottom-bar{position:absolute;bottom:0;left:0;padding:0 16px;box-sizing:border-box;background-color:var(--sidebar-background-color);border-top:1px solid var(--divider-color);justify-content:space-around;z-index:2;font-size:var(--ha-font-size-s);width:100%;padding-bottom:var(--safe-area-inset-bottom)}#tabbar:not(.bottom-bar){flex:1;justify-content:center}:host(:not([narrow])) #toolbar-icon{min-width:40px}::slotted([slot=toolbar-icon]),ha-icon-button-arrow-prev,ha-menu-button{display:flex;flex-shrink:0;pointer-events:auto;color:var(--sidebar-icon-color)}.main-title{min-width:0;flex:1;max-height:var(--header-height);line-height:var(--ha-line-height-normal);color:var(--sidebar-text-color);margin-inline-start:var(--main-title-margin,var(--ha-space-6))}.narrow .main-title{margin-inline-start:var(--main-title-margin,var(--ha-space-2))}.content{position:relative;width:100%;margin-right:var(--safe-area-inset-right);margin-inline-end:var(--safe-area-inset-right);overflow:auto;-webkit-overflow-scrolling:touch}:host([narrow]) .content{margin-left:var(--safe-area-inset-left);margin-inline-start:var(--safe-area-inset-left)}:host([narrow][show-tabs]) .content{margin-bottom:calc(var(--header-height,0px) + var(--safe-area-inset-bottom,0px))}.content .fab-bottom-space{height:calc(64px + var(--safe-area-inset-bottom,0px))}:host([narrow][show-tabs]) .content .fab-bottom-space{height:calc(80px + var(--safe-area-inset-bottom,0px))}#fab{position:fixed;right:calc(16px + var(--safe-area-inset-right,0px));inset-inline-end:calc(16px + var(--safe-area-inset-right));inset-inline-start:initial;bottom:calc(16px + var(--safe-area-inset-bottom,0px));z-index:1;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--ha-space-2);--ha-button-box-shadow:var(--ha-box-shadow-l)}:host([narrow][show-tabs]) #fab{bottom:calc(84px + var(--safe-area-inset-bottom,0px))}#fab[is-wide]{bottom:24px;right:24px;inset-inline-end:24px;inset-inline-start:initial}.pane{border-right:1px solid var(--divider-color);border-inline-end:1px solid var(--divider-color);border-inline-start:initial;box-sizing:border-box;display:flex;flex:0 0 var(--sidepane-width,250px);width:var(--sidepane-width,250px);flex-direction:column;position:relative}.pane .ha-scrollbar{flex:1}`]}constructor(...t){super(...t),this.mainPage=!1,this.narrow=!1,this.isWide=!1,this.pane=!1,this.hasFab=!1,this.showTabs=!1,this._getTabs=(0,n.A)((t,e,a,i,r,s,n)=>{const c=t.filter(t=>(0,h.fW)(this.hass,t));if(c.length<2){if(this.showTabs=!1,1===c.length){const t=c[0];return[t.translationKey?n(t.translationKey):t.name]}return[""]}return this.showTabs=!0,c.map(t=>o.qy` <a href="${t.path}" ="${this._tabClicked}"> <ha-tab .active="${t.path===e?.path}" .narrow="${this.narrow}" .name="${t.translationKey?n(t.translationKey):t.name}"> ${t.iconPath?o.qy`<ha-svg-icon slot="icon" .path="${t.iconPath}"></ha-svg-icon>`:""} </ha-tab> </a> `)})}}(0,i.Cg)([(0,r.MZ)({attribute:!1})],f.prototype,"hass",void 0),(0,i.Cg)([(0,r.MZ)({attribute:!1})],f.prototype,"localizeFunc",void 0),(0,i.Cg)([(0,r.MZ)({type:String,attribute:"back-path"})],f.prototype,"backPath",void 0),(0,i.Cg)([(0,r.MZ)({attribute:!1})],f.prototype,"backCallback",void 0),(0,i.Cg)([(0,r.MZ)({type:Boolean,attribute:"main-page"})],f.prototype,"mainPage",void 0),(0,i.Cg)([(0,r.MZ)({attribute:!1})],f.prototype,"route",void 0),(0,i.Cg)([(0,r.MZ)({attribute:!1})],f.prototype,"tabs",void 0),(0,i.Cg)([(0,r.MZ)({type:Boolean,reflect:!0})],f.prototype,"narrow",void 0),(0,i.Cg)([(0,r.MZ)({type:Boolean,reflect:!0,attribute:"is-wide"})],f.prototype,"isWide",void 0),(0,i.Cg)([(0,r.MZ)({type:Boolean})],f.prototype,"pane",void 0),(0,i.Cg)([(0,r.MZ)({type:Boolean,attribute:"has-fab"})],f.prototype,"hasFab",void 0),(0,i.Cg)([(0,r.MZ)({type:Boolean,attribute:"show-tabs",reflect:!0})],f.prototype,"showTabs",void 0),(0,i.Cg)([(0,r.wk)()],f.prototype,"_activeTab",void 0),(0,i.Cg)([(0,r.P)(".content")],f.prototype,"_content",void 0),(0,i.Cg)([(0,c.a)(".content")],f.prototype,"_savedScrollPos",void 0),(0,i.Cg)([(0,r.Ls)({passive:!0})],f.prototype,"_saveScrollPos",null),f=(0,i.Cg)([(0,r.EM)("hass-tabs-subpage")],f),e()}catch(t){e(t)}})},84933(t,e,a){a.a(t,async function(t,e){try{a(74423),a(18111),a(22489),a(7588),a(61701);var i=a(62826),o=a(5124),r=a(75751),s=a(22441),n=a(1087),h=(a(76776),a(18350)),c=a(26300),l=(a(85938),a(67094),a(34127)),d=a(38114),p=a(23528),g=a(65063),v=a(14503),u=a(36918),m=a(82105),f=a(38940),b=a(6268),y=t([h,c,l,f,d]);[h,c,l,f,d]=y.then?(await y)():y;const w="M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z",_="M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z",x="M12,20A6,6 0 0,1 6,14C6,10 12,3.25 12,3.25C12,3.25 18,10 18,14A6,6 0 0,1 12,20Z",$="M21 11H3V9H21V11M21 13H3V15H21V13Z",C="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z",k="M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z";class M extends o.WF{render(){return o.qy` <ha-card> <h1 class="card-header"> <ha-svg-icon .path="${x}"></ha-svg-icon> ${this.hass.localize("ui.panel.config.energy.device_consumption_water.title")} </h1> <div class="card-content"> <p> ${this.hass.localize("ui.panel.config.energy.device_consumption_water.sub")} <a target="_blank" rel="noopener noreferrer" href="${(0,u.o)(this.hass,"/docs/energy/water/#individual-devices")}">${this.hass.localize("ui.panel.config.energy.device_consumption_water.learn_more")}</a> </p> ${this.validationResult?.device_consumption_water.map(t=>o.qy` <ha-energy-validation-result .hass="${this.hass}" .issues="${t}"></ha-energy-validation-result> `)} ${this.preferences.device_consumption_water.length>0?o.qy` <div class="items-container"> <ha-sortable handle-selector=".handle" -moved="${this._itemMoved}"> <div class="devices"> ${(0,r.u)(this.preferences.device_consumption_water,t=>t.stat_consumption,(t,e)=>o.qy` <div class="row" .device="${t}"> <div class="handle"> <ha-svg-icon .path="${$}"></ha-svg-icon> </div> <span class="content">${t.name||(0,p.$O)(this.hass,t.stat_consumption,this.statsMetadata?.[t.stat_consumption])}</span> ${this._renderIssueIndicator(this.validationResult?.device_consumption_water[e],e)} <ha-icon-button .label="${this.hass.localize("ui.common.edit")}" ="${this._editDevice}" .path="${C}"></ha-icon-button> <ha-icon-button .label="${this.hass.localize("ui.common.delete")}" ="${this._deleteDevice}" .device="${t}" .path="${_}"></ha-icon-button> </div> `)} </div> </ha-sortable> </div> `:""} <div class="row"> <ha-button ="${this._addDevice}" appearance="filled" size="small"> <ha-svg-icon slot="start" .path="${k}"></ha-svg-icon>${this.hass.localize("ui.panel.config.energy.device_consumption_water.add_device")}</ha-button> </div> </div> </ha-card> `}_renderIssueIndicator(t,e){if(!t?.length)return o.s6;const a=t.map(t=>this.hass.localize(`component.energy.issues.${t.type}.title`)||t.type).join("\n"),i=`issue-icon-${e}`;return o.qy` <ha-svg-icon id="${i}" class="issue-icon" .path="${w}" aria-label="${a}"></ha-svg-icon> <ha-tooltip .for="${i}" placement="top">${a}</ha-tooltip> `}_itemMoved(t){t.stopPropagation();const{oldIndex:e,newIndex:a}=t.detail,i=this.preferences.device_consumption_water.concat(),o=i.splice(e,1)[0];i.splice(a,0,o);const r={...this.preferences,device_consumption_water:i};(0,n.r)(this,"value-changed",{value:r}),this._savePreferences(r)}_editDevice(t){const e=t.currentTarget.closest(".row").device;(0,m.YA)(this,{statsMetadata:this.statsMetadata,device:{...e},device_consumptions:this.preferences.device_consumption_water,saveCallback:async t=>{const a={...this.preferences,device_consumption_water:this.preferences.device_consumption_water.map(a=>a===e?t:a)};this._sanitizeParents(a),await this._savePreferences(a)}})}_addDevice(){(0,m.YA)(this,{statsMetadata:this.statsMetadata,device_consumptions:this.preferences.device_consumption_water,saveCallback:async t=>{await this._savePreferences({...this.preferences,device_consumption_water:this.preferences.device_consumption_water.concat(t)})}})}_sanitizeParents(t){const e=t.device_consumption_water.map(t=>t.stat_consumption);t.device_consumption_water.forEach(t=>{t.included_in_stat&&!e.includes(t.included_in_stat)&&delete t.included_in_stat})}async _deleteDevice(t){const e=t.currentTarget.device;if(await(0,g.dk)(this,{title:this.hass.localize("ui.panel.config.energy.delete_source")}))try{const t={...this.preferences,device_consumption_water:this.preferences.device_consumption_water.filter(t=>t!==e)};this._sanitizeParents(t),await this._savePreferences(t)}catch(t){(0,g.showAlertDialog)(this,{title:`Failed to save config: ${t.message}`})}}async _savePreferences(t){const e=await(0,d.WN)(this.hass,t);(0,n.r)(this,"value-changed",{value:e})}static get styles(){return[v.RF,b.X,o.AH`.handle{cursor:move;cursor:grab}.issue-icon{color:var(--warning-color)}`]}}(0,i.Cg)([(0,s.MZ)({attribute:!1})],M.prototype,"hass",void 0),(0,i.Cg)([(0,s.MZ)({attribute:!1})],M.prototype,"preferences",void 0),(0,i.Cg)([(0,s.MZ)({attribute:!1})],M.prototype,"statsMetadata",void 0),(0,i.Cg)([(0,s.MZ)({attribute:!1})],M.prototype,"validationResult",void 0),M=(0,i.Cg)([(0,s.EM)("ha-energy-device-settings-water")],M),e()}catch(t){e(t)}})},28536(t,e,a){a.a(t,async function(t,i){try{a.r(e);a(18111),a(7588),a(61701),a(33110),a(14603),a(47566),a(98721);var o=a(62826),r=a(28794),s=a(5124),n=a(22441),h=a(74985),c=a(91926),l=a(38114),d=a(23528),p=a(23296),g=a(40511),v=a(14503),u=a(38962),m=a(76135),f=a(84933),b=a(54081),y=a(38726),w=a(23206),_=a(28166),x=a(70604),$=a(30039),C=t([r,p,g,u,m,f,b,y,w,_,x,l]);[r,p,g,u,m,f,b,y,w,_,x,l]=C.then?(await C)():C;const k="M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z",M={energy_sources:[],device_consumption:[],device_consumption_water:[]},z=[{path:"/config/energy/electricity",translationKey:"ui.panel.config.energy.tabs.electricity",iconPath:"M11 15H6L13 1V9H18L11 23V15Z",iconColor:"#F1C447"},{path:"/config/energy/gas",translationKey:"ui.panel.config.energy.tabs.gas",iconPath:"M17.66 11.2C17.43 10.9 17.15 10.64 16.89 10.38C16.22 9.78 15.46 9.35 14.82 8.72C13.33 7.26 13 4.85 13.95 3C13 3.23 12.17 3.75 11.46 4.32C8.87 6.4 7.85 10.07 9.07 13.22C9.11 13.32 9.15 13.42 9.15 13.55C9.15 13.77 9 13.97 8.8 14.05C8.57 14.15 8.33 14.09 8.14 13.93C8.08 13.88 8.04 13.83 8 13.76C6.87 12.33 6.69 10.28 7.45 8.64C5.78 10 4.87 12.3 5 14.47C5.06 14.97 5.12 15.47 5.29 15.97C5.43 16.57 5.7 17.17 6 17.7C7.08 19.43 8.95 20.67 10.96 20.92C13.1 21.19 15.39 20.8 17.03 19.32C18.86 17.66 19.5 15 18.56 12.72L18.43 12.46C18.22 12 17.66 11.2 17.66 11.2M14.5 17.5C14.22 17.74 13.76 18 13.4 18.1C12.28 18.5 11.16 17.94 10.5 17.28C11.69 17 12.4 16.12 12.61 15.23C12.78 14.43 12.46 13.77 12.33 13C12.21 12.26 12.23 11.63 12.5 10.94C12.69 11.32 12.89 11.7 13.13 12C13.9 13 15.11 13.44 15.37 14.8C15.41 14.94 15.43 15.08 15.43 15.23C15.46 16.05 15.1 16.95 14.5 17.5H14.5Z",iconColor:"#F1C447"},{path:"/config/energy/water",translationKey:"ui.panel.config.energy.tabs.water",iconPath:"M12,20A6,6 0 0,1 6,14C6,10 12,3.25 12,3.25C12,3.25 18,10 18,14A6,6 0 0,1 12,20Z",iconColor:"#F1C447"}];class Z extends s.WF{get _currTab(){return this.route.path.substring(1)||"electricity"}willUpdate(t){if(t.has("route")){const t=this.route.path.substring(1);t&&z.some(e=>e.path.endsWith(`/${t}`))||(0,c.oo)(`${this.route.prefix}/electricity`,{replace:!0})}}firstUpdated(){this._fetchConfig()}render(){return this._preferences||this._error?this._error?s.qy`<hass-error-screen .hass="${this.hass}" .narrow="${this.narrow}" .error="${this._error}"></hass-error-screen>`:s.qy` <hass-tabs-subpage .hass="${this.hass}" .narrow="${this.narrow}" .backPath="${this._searchParms.has("historyBack")?void 0:"/config/lovelace/dashboards"}" .route="${this.route}" .tabs="${z}"> <ha-icon-button slot="toolbar-icon" .path="${k}" .label="${this.hass.localize("ui.panel.config.devices.download_diagnostics")}" ="${this._downloadDiagnostics}"></ha-icon-button> <ha-alert> ${this.hass.localize("ui.panel.config.energy.new_device_info")} </ha-alert> <div class="content">${(0,h.P)(this._renderTabContent())}</div> </hass-tabs-subpage> `:s.qy`<hass-loading-screen .hass="${this.hass}" .narrow="${this.narrow}"></hass-loading-screen>`}_renderTabContent(){switch(this._currTab){case"electricity":return s.qy` <ha-energy-grid-settings .hass="${this.hass}" .preferences="${this._preferences}" .statsMetadata="${this._statsMetadata}" .validationResult="${this._validationResult}" -changed="${this._prefsChanged}"></ha-energy-grid-settings> <ha-energy-solar-settings .hass="${this.hass}" .preferences="${this._preferences}" .statsMetadata="${this._statsMetadata}" .validationResult="${this._validationResult}" .info="${this._info}" -changed="${this._prefsChanged}"></ha-energy-solar-settings> <ha-energy-battery-settings .hass="${this.hass}" .preferences="${this._preferences}" .statsMetadata="${this._statsMetadata}" .validationResult="${this._validationResult}" -changed="${this._prefsChanged}"></ha-energy-battery-settings> <ha-energy-device-settings .hass="${this.hass}" .preferences="${this._preferences}" .statsMetadata="${this._statsMetadata}" .validationResult="${this._validationResult}" -changed="${this._prefsChanged}"></ha-energy-device-settings> `;case"gas":return s.qy` <ha-energy-gas-settings .hass="${this.hass}" .preferences="${this._preferences}" .statsMetadata="${this._statsMetadata}" .validationResult="${this._validationResult}" -changed="${this._prefsChanged}"></ha-energy-gas-settings> `;case"water":return s.qy` <ha-energy-water-settings .hass="${this.hass}" .preferences="${this._preferences}" .statsMetadata="${this._statsMetadata}" .validationResult="${this._validationResult}" -changed="${this._prefsChanged}"></ha-energy-water-settings> <ha-energy-device-settings-water .hass="${this.hass}" .preferences="${this._preferences}" .statsMetadata="${this._statsMetadata}" .validationResult="${this._validationResult}" -changed="${this._prefsChanged}"></ha-energy-device-settings-water> `;default:return s.s6}}async _fetchConfig(){this._error=void 0;const t=(0,l.B2)(this.hass),e=await(0,l.BV)(this.hass);try{this._preferences=await(0,l.bs)(this.hass)}catch(t){"not_found"===t.code?this._preferences=M:this._error=t.message}try{this._validationResult=await t}catch(t){this._error=t.message}this._info=await e,await this._fetchMetaData()}async _prefsChanged(t){this._preferences=t.detail.value,this._validationResult=void 0;try{this._validationResult=await(0,l.B2)(this.hass)}catch(t){this._error=t.message}this._info=await(0,l.BV)(this.hass),await this._fetchMetaData()}async _fetchMetaData(){if(!this._preferences||!this._info)return;const t=(0,l.AN)(this._preferences,this._info),e=await(0,d.Wr)(this.hass,t),a={};e.forEach(t=>{a[t.statistic_id]=t}),this._statsMetadata=a}async _downloadDiagnostics(){const t={version:this.hass.config.version,info:this._info,preferences:this._preferences,metadata:this._statsMetadata,entities:Object.fromEntries(Object.keys(this._statsMetadata||{}).map(t=>[t,this.hass.entities[t]])),states:Object.fromEntries(Object.keys(this._statsMetadata||{}).map(t=>[t,this.hass.states[t]])),issues:this._validationResult},e=JSON.stringify(t,null,2),a=new Blob([e],{type:"application/json"}),i=URL.createObjectURL(a);(0,$.R)(i,"energy_diagnostics.json")}static get styles(){return[v.RF,s.AH`.content{padding:0 var(--ha-space-5);max-width:1040px;margin:0 auto}ha-alert{display:block;margin:12px auto;max-width:600px}ha-energy-battery-settings,ha-energy-device-settings,ha-energy-device-settings-water,ha-energy-gas-settings,ha-energy-grid-settings,ha-energy-solar-settings,ha-energy-water-settings{display:block;max-width:600px;margin:0 auto 12px}`]}constructor(...t){super(...t),this.narrow=!1,this.isWide=!1,this._searchParms=new URLSearchParams(window.location.search)}}(0,o.Cg)([(0,n.MZ)({attribute:!1})],Z.prototype,"hass",void 0),(0,o.Cg)([(0,n.MZ)({type:Boolean})],Z.prototype,"narrow",void 0),(0,o.Cg)([(0,n.MZ)({attribute:"is-wide",type:Boolean})],Z.prototype,"isWide",void 0),(0,o.Cg)([(0,n.MZ)({attribute:!1})],Z.prototype,"route",void 0),(0,o.Cg)([(0,n.wk)()],Z.prototype,"_searchParms",void 0),(0,o.Cg)([(0,n.wk)()],Z.prototype,"_info",void 0),(0,o.Cg)([(0,n.wk)()],Z.prototype,"_preferences",void 0),(0,o.Cg)([(0,n.wk)()],Z.prototype,"_validationResult",void 0),(0,o.Cg)([(0,n.wk)()],Z.prototype,"_error",void 0),(0,o.Cg)([(0,n.wk)()],Z.prototype,"_statsMetadata",void 0),Z=(0,o.Cg)([(0,n.EM)("ha-config-energy")],Z),i()}catch(t){i(t)}})},14503(t,e,a){a.d(e,{RF:()=>r,dp:()=>h,kO:()=>n,nA:()=>s,og:()=>o});var i=a(5124);const o=i.AH`button.link{background:0 0;color:inherit;border:none;padding:0;font:inherit;text-align:left;text-decoration:underline;cursor:pointer;outline:0}`,r=i.AH`:host{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-m);font-weight:var(--ha-font-weight-normal);line-height:var(--ha-line-height-normal)}app-header div[sticky]{height:48px}app-toolbar [main-title]{margin-left:20px;margin-inline-start:20px;margin-inline-end:initial}.header{transition:box-shadow .2s linear,width var(--ha-animation-duration-normal) ease,padding-left var(--ha-animation-duration-normal) ease,padding-right var(--ha-animation-duration-normal) ease} (prefers-reduced-motion:reduce){.header{transition:box-shadow .2s linear}}h1{font-family:var(--ha-font-family-heading);-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)}h2{font-family:var(--ha-font-family-body);-webkit-font-smoothing:var(--ha-font-smoothing);-moz-osx-font-smoothing:var(--ha-moz-osx-font-smoothing);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:var(--ha-font-size-xl);font-weight:var(--ha-font-weight-medium);line-height:var(--ha-line-height-normal)}h3{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-l);font-weight:var(--ha-font-weight-normal);line-height:var(--ha-line-height-normal)}a{color:var(--primary-color)}.secondary{color:var(--secondary-text-color)}.error{color:var(--error-color)}.warning{color:var(--error-color)}${o} .card-actions a{text-decoration:none}.card-actions .warning{--mdc-theme-primary:var(--error-color)}.layout.horizontal,.layout.vertical{display:flex}.layout.inline{display:inline-flex}.layout.horizontal{flex-direction:row}.layout.vertical{flex-direction:column}.layout.wrap{flex-wrap:wrap}.layout.no-wrap{flex-wrap:nowrap}.layout.center,.layout.center-center{align-items:center}.layout.bottom{align-items:flex-end}.layout.center-center,.layout.center-justified{justify-content:center}.flex{flex:1;flex-basis:0.000000001px}.flex-auto{flex:1 1 auto}.flex-none{flex:none}.layout.justified{justify-content:space-between}`,s=i.AH`ha-adaptive-dialog,ha-dialog{--mdc-dialog-min-width:400px;--mdc-dialog-max-width:600px;--mdc-dialog-max-width:min(600px, 95vw);--justify-action-buttons:space-between;--dialog-container-padding:var(--safe-area-inset-top, 0) var(--safe-area-inset-right, 0) var(--safe-area-inset-bottom, 0) var(--safe-area-inset-left, 0);--dialog-surface-padding:0px}ha-adaptive-dialog .form,ha-dialog .form{color:var(--primary-text-color)}a{color:var(--primary-color)} all and (max-width:450px),all and (max-height:500px){ha-adaptive-dialog,ha-dialog{--mdc-dialog-min-width:100vw;--mdc-dialog-max-width:100vw;--mdc-dialog-min-height:100vh;--mdc-dialog-min-height:100svh;--mdc-dialog-max-height:100vh;--mdc-dialog-max-height:100svh;--dialog-container-padding:0px;--dialog-surface-padding:var(--safe-area-inset-top, 0) var(--safe-area-inset-right, 0) var(--safe-area-inset-bottom, 0) var(--safe-area-inset-left, 0);--vertical-align-dialog:flex-end}ha-dialog{--ha-dialog-border-radius:var(--ha-border-radius-square)}}.error{color:var(--error-color)}`,n=i.AH`ha-adaptive-dialog,ha-dialog{--vertical-align-dialog:flex-start;--dialog-surface-margin-top:var(--ha-space-10);--mdc-dialog-max-height:calc(
100vh - var(--dialog-surface-margin-top) - var(--ha-space-2) - var(
--safe-area-inset-y,
0px
)
);--mdc-dialog-max-height:calc(
100svh - var(--dialog-surface-margin-top) - var(--ha-space-2) - var(
--safe-area-inset-y,
0px
)
);--ha-dialog-max-height:calc(
100vh - var(--dialog-surface-margin-top) - var(--ha-space-2) - var(
--safe-area-inset-y,
0px
)
);--ha-dialog-max-height:calc(
100svh - var(--dialog-surface-margin-top) - var(--ha-space-2) - var(
--safe-area-inset-y,
0px
)
)} all and (max-width:450px),all and (max-height:500px){ha-adaptive-dialog,ha-dialog{--dialog-surface-margin-top:0px;--mdc-dialog-min-height:100vh;--mdc-dialog-min-height:100svh;--mdc-dialog-max-height:100vh;--mdc-dialog-max-height:100svh;--ha-dialog-max-height:100vh;--ha-dialog-max-height:100svh}}`,h=i.AH`.ha-scrollbar::-webkit-scrollbar{width:.4rem;height:.4rem}.ha-scrollbar::-webkit-scrollbar-thumb{border-radius:var(--ha-border-radius-sm);background:var(--scrollbar-thumb-color)}.ha-scrollbar{overflow-y:auto;scrollbar-color:var(--scrollbar-thumb-color) transparent;scrollbar-width:thin}`;i.AH`body{background-color:var(--primary-background-color);color:var(--primary-text-color);height:calc(100vh - 32px);width:100vw}`},89429(t){t.exports=function(){}}};