UNPKG

iobroker.lovelace

Version:

With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI

7 lines 36.3 kB
export const __rspack_esm_id=43343;export const __rspack_esm_ids=[43343];export const __webpack_modules__={90433(t,e,a){a.d(e,{Vy:()=>s,fI:()=>r,ux:()=>n});var o=a(22786),i=a(79468);function s(t,e){const a=t%54+1;return e.getPropertyValue(`--color-${a}`)}function r(t,e){const a=e.getPropertyValue(`--graph-color-${t+1}`)||s(t,e);return(0,i.RQ)(a)}const n=(0,o.A)(t=>Array.from({length:54},(e,a)=>r(a,t)),(t,e)=>t[0].getPropertyValue("--graph-color-1")===e[0].getPropertyValue("--graph-color-1")&&t[0].getPropertyValue("--color-1")===e[0].getPropertyValue("--color-1"))},93421(t,e,a){a.d(e,{IW:()=>d,dH:()=>c,fI:()=>l});a(44114);var o=a(35211),i=a(22792),s=a(32172);const r=(t,e)=>{let a=t;for(const t of e){if(null==a)return;a=a[t]}return a},n=(t,e,a)=>{const i=(0,s.p)({transformer:function(t){return a.call(this,t)},watch:e?[e]:[]}),r=(0,o.Fg)({context:t,subscribe:!0});return(t,e)=>{i(t,e),r(t,e)}},l=t=>n(i.iN,t.entityIdPath[0],function(e){const a=r(this,t.entityIdPath);return"string"==typeof a?e?.[a]:void 0}),c=t=>n(i.X1,t.entityIdPath[0],function(e){const a=r(this,t.entityIdPath);return"string"==typeof a?e?.[a]:void 0}),d=()=>n(i.D5,void 0,({localize:t})=>t)},32172(t,e,a){a.d(e,{p:()=>o});a(18111),a(7588),a(45367),a(92731),a(17642),a(58004),a(33853),a(45876),a(32475),a(15024),a(31698);function o(t){return(e,a)=>{if("object"==typeof a)throw new Error("This decorator does not support this compilation type.");const o=String(a),i=e;if(i._transformers){if(!i.hasOwnProperty("_transformers")){const t=i._transformers;i._transformers=new Map,t.forEach((t,e)=>i._transformers.set(e,t))}}else{i._transformers=new Map,i._watching=new Map;const t=i.willUpdate;i.willUpdate=function(e){t.call(this,e);const a=new Set;e.forEach((t,e)=>{const o=this._watching.get(e);void 0!==o&&o.forEach(t=>a.add(t))}),a.forEach(t=>{this[t]=this[`__original_${String(t)}`]})}}i._transformers.set(a,t.transformer),t.watch&&t.watch.forEach(t=>{let e=i._watching.get(t);e||(e=new Set,i._watching.set(t,e)),e.add(a)});const s=Object.getOwnPropertyDescriptor(e,a);let r;if(void 0===s)r={get(){return this[`__transform_${o}`]},set(t){const e=this[`__transform_${o}`],a=this._transformers.get(o);this[`__transform_${o}`]=a?a.call(this,t):t,this[`__original_${o}`]=t,this.requestUpdate(o,e)},configurable:!0,enumerable:!0};else{const t=s.set;r={...s,set(e){const a=this[`__transform_${o}`],i=this._transformers.get(o);this[`__transform_${o}`]=i?i.call(this,e):e,this[`__original_${o}`]=e,this.requestUpdate(o,a),t?.call(this,e)}}}Object.defineProperty(e,a,r)}}},76830(t,e,a){a.d(e,{d:()=>o});a(18111),a(20116);const o=(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 o=a.href;if(!o||-1!==o.indexOf("mailto:"))return;const i=window.location,s=i.origin||i.protocol+"//"+i.host;return o.startsWith(s)&&(o=o.slice(s.length),"#"!==o)?(e&&t.preventDefault(),o):void 0}},79791(t,e,a){a.d(e,{L:()=>o});const o=(t,e=2)=>Math.round(t*10**e)/10**e},3109(t,e,a){var o=a(62826),i=a(86137),s=a(22441);class r extends i.A{constructor(){super(),this.play=!0,this.iterations=1,this.fill="both",this.name="fadeIn"}}(0,o.Cg)([(0,s.MZ)({type:Boolean})],r.prototype,"play",void 0),r=(0,o.Cg)([(0,s.EM)("ha-fade-in")],r)},29961(t,e,a){a.a(t,async function(t,o){try{a.d(e,{d:()=>n,n:()=>l});var i=a(72487),s=a(30162),r=t([i,s]);function n(t,e,a){return"month"===t?{formatter:t=>{const o=new Date(t);return 0===o.getMonth()?`{bold|${(0,i.fr)(o,e,a)}}`:(0,i.Wq)(o,e,a)}}:"year"===t?{formatter:t=>(0,i.Pm)(new Date(t),e,a)}:void 0}function l(t,e,a,o){const r=o/60/24,n=new Date(t);if(r>88)return 0===n.getMonth()?`{bold|${(0,i.fr)(n,e,a)}}`:(0,i.Wq)(n,e,a);if(r>35)return 1===n.getDate()?`{bold|${(0,i.sl)(n,e,a)}}`:(0,i.sl)(n,e,a);if(r>7){const t=(0,i.sl)(n,e,a);return 1===n.getDate()?`{bold|${t}}`:t}return r>2?(0,i.gu)(n,e,a):o&&o<5?(0,s.ie)(n,e,a):0===n.getHours()&&0===n.getMinutes()&&0===n.getSeconds()?`{bold|${(0,i.sl)(n,e,a)}}`:(0,s.fU)(n,e,a)}[i,s]=r.then?(await r)():r,o()}catch(c){o(c)}})},34218(t,e,a){a.d(e,{P:()=>o});a(44114),a(18111),a(18237),a(45367),a(92731);function o(t,e,a,o,s=!1){if(!t)return[];if(t.length<=e)return t;const r=a??i(t[0])[0],n=o??i(t[t.length-1])[0],l=Math.ceil((n-r)/Math.floor(e)),c=new Map;for(const e of t){const t=i(e);if(!Array.isArray(t))continue;const a=Number(t[0]),o=Number(t[1]);if(isNaN(a)||isNaN(o))continue;const s=Math.floor((a-r)/l),n=c.get(s);n?n.push({point:e,x:a,y:o}):c.set(s,[{point:e,x:a,y:o}])}const d=[];if(s)for(const[t,e]of c){const t=e.reduce((t,e)=>t+e.y,0)/e.length,a=e.reduce((t,e)=>t+e.x,0)/e.length,o=i(e[0].point),s=Array.isArray(o)?[a,t]:{value:[a,t]};d.push(s)}else for(const[t,e]of c){let t=e[0],a=e[0];for(const o of e)o.y<t.y&&(t=o),o.y>a.y&&(a=o);t.x>a.x&&d.push(a.point),d.push(t.point),t.x<a.x&&d.push(a.point)}return d}function i(t){return t&&"object"==typeof t&&"value"in t?t.value:t}},34296(t,e,a){var o=a(62826),i=a(96229),s=a(26069),r=a(91735),n=a(42034),l=a(5124),c=a(22441);class d extends i.k{renderOutline(){return this.filled?l.qy`<span class="filled"></span>`:super.renderOutline()}getContainerClasses(){return{...super.getContainerClasses(),active:this.active}}renderPrimaryContent(){return l.qy` <span class="leading icon" aria-hidden="true"> ${this.renderLeadingIcon()} </span> <span class="label">${this.label}</span> <span class="touch"></span> <span class="trailing leading icon" aria-hidden="true"> ${this.renderTrailingIcon()} </span> `}renderTrailingIcon(){return l.qy`<slot name="trailing-icon"></slot>`}constructor(...t){super(...t),this.filled=!1,this.active=!1}}d.styles=[r.R,n.R,s.R,l.AH`:host{--md-sys-color-primary:var(--primary-text-color);--md-sys-color-on-surface:var(--primary-text-color);--md-assist-chip-container-shape:var( --ha-assist-chip-container-shape, 16px );--md-assist-chip-outline-color:var(--outline-color);--md-assist-chip-label-text-weight:400}.filled{display:flex;pointer-events:none;border-radius:inherit;inset:0;position:absolute;background-color:var(--ha-assist-chip-filled-container-color)}::slotted([slot=icon]),::slotted([slot=trailing-icon]){display:flex;--mdc-icon-size:var(--md-input-chip-icon-size, 18px);font-size:var(--_label-text-size)!important}.trailing.icon ::slotted(*),.trailing.icon svg{margin-inline-end:unset;margin-inline-start:var(--_icon-label-space)}::before{background:var(--ha-assist-chip-container-color,transparent);opacity:var(--ha-assist-chip-container-opacity, 1)}:where(.active)::before{background:var(--ha-assist-chip-active-container-color);opacity:var(--ha-assist-chip-active-container-opacity)}.label{font-family:var(--ha-font-family-body)}`],(0,o.Cg)([(0,c.MZ)({type:Boolean,reflect:!0})],d.prototype,"filled",void 0),(0,o.Cg)([(0,c.MZ)({type:Boolean})],d.prototype,"active",void 0),d=(0,o.Cg)([(0,c.EM)("ha-assist-chip")],d)},38962(t,e,a){a.a(t,async function(t,o){try{a.r(e);var i=a(62826),s=a(5124),r=a(22441),n=a(6412),l=a(93421),c=a(1087),d=a(26300),h=(a(67094),t([d]));d=(h.then?(await h)():h)[0];const p="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z",u={info:"M11,9H13V7H11M12,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,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,17H13V11H11V17Z",warning:"M12,2L1,21H23M12,6L19.53,19H4.47M11,10V14H13V10M11,16V18H13V16",error:"M11,15H13V17H11V15M11,7H13V13H11V7M12,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,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z",success:"M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2,4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z"};class m extends s.WF{render(){return s.qy` <div class="issue-type ${(0,n.H)({[this.alertType]:!0})}" role="alert"> <div class="icon ${this.title?"":"no-title"}"> <slot name="icon"> <ha-svg-icon .path="${u[this.alertType]}"></ha-svg-icon> </slot> </div> <div class="${(0,n.H)({content:!0,narrow:this.narrow})}"> <div class="main-content"> ${this.title?s.qy`<div class="title">${this.title}</div>`:s.s6} <slot></slot> </div> <div class="action"> <slot name="action"> ${this.dismissable?s.qy`<ha-icon-button @click="${this._dismissClicked}" .label="${this._localize?.("ui.common.dismiss_alert")}" .path="${p}"></ha-icon-button>`:s.s6} </slot> </div> </div> </div> `}_dismissClicked(){(0,c.r)(this,"alert-dismissed-clicked")}constructor(...t){super(...t),this.title="",this.alertType="info",this.dismissable=!1,this.narrow=!1}}m.styles=s.AH`.issue-type{position:relative;padding:8px;display:flex}.icon{height:var(--ha-alert-icon-size,24px);width:var(--ha-alert-icon-size,24px)}.issue-type::after{position:absolute;top:0;right:0;bottom:0;left:0;opacity:.12;pointer-events:none;content:"";border-radius:var(--ha-border-radius-sm)}.icon.no-title{align-self:center}.content{display:flex;justify-content:space-between;align-items:center;width:100%;text-align:var(--float-start)}.content.narrow{flex-direction:column;align-items:flex-end}.action{z-index:1;width:min-content;--mdc-theme-primary:var(--primary-text-color)}.main-content{overflow-wrap:anywhere;word-break:break-word;line-height:normal;margin-left:8px;margin-right:0;margin-inline-start:8px;margin-inline-end:8px}.title{margin-top:2px;font-weight:var(--ha-font-weight-bold)}.action ha-icon-button{--mdc-theme-primary:var(--primary-text-color);--ha-icon-button-size:36px}.issue-type.info>.icon{color:var(--info-color)}.issue-type.info::after{background-color:var(--info-color)}.issue-type.warning>.icon{color:var(--warning-color)}.issue-type.warning::after{background-color:var(--warning-color)}.issue-type.error>.icon{color:var(--error-color)}.issue-type.error::after{background-color:var(--error-color)}.issue-type.success>.icon{color:var(--success-color)}.issue-type.success::after{background-color:var(--success-color)}:host ::slotted(ul){margin:0;padding-inline-start:20px}`,(0,i.Cg)([(0,r.MZ)()],m.prototype,"title",void 0),(0,i.Cg)([(0,r.MZ)({attribute:"alert-type"})],m.prototype,"alertType",void 0),(0,i.Cg)([(0,r.MZ)({type:Boolean})],m.prototype,"dismissable",void 0),(0,i.Cg)([(0,r.wk)(),(0,l.IW)()],m.prototype,"_localize",void 0),(0,i.Cg)([(0,r.MZ)({type:Boolean})],m.prototype,"narrow",void 0),m=(0,i.Cg)([(0,r.EM)("ha-alert")],m),o()}catch(t){o(t)}})},2846(t,e,a){a.d(e,{G:()=>c,J:()=>l});var o=a(62826),i=a(58168),s=a(82553),r=a(5124),n=a(22441);a(54276);const l=[s.R,r.AH`:host{--ha-icon-display:block;--md-sys-color-primary:var(--primary-text-color);--md-sys-color-secondary:var(--secondary-text-color);--md-sys-color-surface:var(--card-background-color);--md-sys-color-on-surface:var(--primary-text-color);--md-sys-color-on-surface-variant:var(--secondary-text-color)}md-item{overflow:var(--md-item-overflow,hidden);align-items:var(--md-item-align-items,center);gap:var(--ha-md-list-item-gap,16px)}`];class c extends i.n{renderRipple(){return"text"===this.type?r.s6:r.qy`<ha-ripple part="ripple" for="item" ?disabled="${this.disabled&&"link"!==this.type}"></ha-ripple>`}}c.styles=l,c=(0,o.Cg)([(0,n.EM)("ha-md-list-item")],c)},65829(t,e,a){a.a(t,async function(t,o){try{a.r(e),a.d(e,{HaSpinner:()=>c});var i=a(62826),s=a(55262),r=a(5124),n=a(22441),l=t([s]);s=(l.then?(await l)():l)[0];class c extends s.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[s.A.styles,r.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,i.Cg)([(0,n.MZ)()],c.prototype,"size",void 0),c=(0,i.Cg)([(0,n.EM)("ha-spinner")],c),o()}catch(t){o(t)}})},43831(t,e,a){var o=a(62826),i=a(5124),s=a(22441),r=a(63672);a(54276);class n extends i.WF{render(){return i.qy` <div tabindex="0" role="tab" aria-selected="${this.active}" aria-label="${(0,r.J)(this.name)}" @keydown="${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=i.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,o.Cg)([(0,s.MZ)({type:Boolean,reflect:!0})],n.prototype,"active",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,reflect:!0})],n.prototype,"narrow",void 0),(0,o.Cg)([(0,s.MZ)()],n.prototype,"name",void 0),n=(0,o.Cg)([(0,s.EM)("ha-tab")],n)},7749(t,e,a){a.d(e,{HH:()=>o,TY:()=>i,lu:()=>s,mu:()=>r});const o=(t,e)=>t.callApi("POST","config/config_entries/options/flow",{handler:e}),i=(t,e)=>t.callApi("GET",`config/config_entries/options/flow/${e}`),s=(t,e,a)=>t.callApi("POST",`config/config_entries/options/flow/${e}`,a),r=(t,e)=>t.callApi("DELETE",`config/config_entries/options/flow/${e}`)},42262(t,e,a){a.d(e,{$:()=>o,l:()=>i});const o=t=>t.callWS({type:"usb/scan"}),i=t=>t.callWS({type:"usb/list_serial_ports"})},29094(t,e,a){a.d(e,{g:()=>s});var o=a(1087);const i=()=>Promise.all([a.e(4801),a.e(39763),a.e(32450),a.e(46095),a.e(7305),a.e(92769),a.e(3283),a.e(80131),a.e(58416),a.e(54066),a.e(84038),a.e(69205),a.e(26092),a.e(48531),a.e(92411),a.e(44642)]).then(a.bind(a,78314)),s=(t,e,a)=>{(0,o.r)(t,"show-dialog",{dialogTag:"dialog-data-entry-flow",dialogImport:i,dialogParams:{...e,flowConfig:a,dialogParentElement:t}})}},70241(t,e,a){a.d(e,{Q:()=>n});var o=a(5124),i=a(95350),s=a(7749),r=a(29094);const n=(t,e,a)=>(0,r.g)(t,{startFlowHandler:e.entry_id,domain:e.domain,...a},{flowType:"options_flow",showDevices:!1,createFlow:async(t,a)=>{const[o]=await Promise.all([(0,s.HH)(t,a),t.loadFragmentTranslation("config"),t.loadBackendTranslation("options",e.domain),t.loadBackendTranslation("selector",e.domain)]);return o},fetchFlow:async(t,a)=>{const[o]=await Promise.all([(0,s.TY)(t,a),t.loadFragmentTranslation("config"),t.loadBackendTranslation("options",e.domain),t.loadBackendTranslation("selector",e.domain)]);return o},handleFlowStep:s.lu,deleteFlow:s.mu,renderAbortDescription(t,a){const i=t.localize(`component.${a.translation_domain||e.domain}.options.abort.${a.reason}`,a.description_placeholders);return i?o.qy` <ha-markdown breaks allow-svg .content="${i}"></ha-markdown> `:a.reason},renderShowFormStepHeader:(t,a)=>t.localize(`component.${a.translation_domain||e.domain}.options.step.${a.step_id}.title`,a.description_placeholders)||t.localize("ui.dialogs.options_flow.form.header"),renderShowFormStepDescription(t,a){const i=t.localize(`component.${a.translation_domain||e.domain}.options.step.${a.step_id}.description`,a.description_placeholders);return i?o.qy` <ha-markdown allow-svg breaks .content="${i}"></ha-markdown> `:""},renderShowFormStepFieldLabel(t,a,o,i){if("expandable"===o.type)return t.localize(`component.${e.domain}.options.step.${a.step_id}.sections.${o.name}.name`,a.description_placeholders)||o.name;const s=i?.path?.[0]?`sections.${i.path[0]}.`:"";return t.localize(`component.${e.domain}.options.step.${a.step_id}.${s}data.${o.name}`,a.description_placeholders)||o.name},renderShowFormStepFieldHelper(t,a,i,s){if("expandable"===i.type)return t.localize(`component.${a.translation_domain||e.domain}.options.step.${a.step_id}.sections.${i.name}.description`,a.description_placeholders);const r=s?.path?.[0]?`sections.${s.path[0]}.`:"",n=t.localize(`component.${a.translation_domain||e.domain}.options.step.${a.step_id}.${r}data_description.${i.name}`,a.description_placeholders);return n?o.qy`<ha-markdown breaks .content="${n}"></ha-markdown>`:""},renderShowFormStepFieldError:(t,a,o)=>t.localize(`component.${a.translation_domain||e.domain}.options.error.${o}`,a.description_placeholders)||o,renderShowFormStepFieldLocalizeValue:(t,a,o)=>t.localize(`component.${e.domain}.selector.${o}`),renderShowFormStepSubmitButton:(t,a)=>t.localize(`component.${e.domain}.options.step.${a.step_id}.submit`)||t.localize("ui.panel.config.integrations.config_flow."+(!1===a.last_step?"next":"submit")),renderExternalStepHeader:(t,e)=>"",renderExternalStepDescription:(t,e)=>"",renderCreateEntryDescription:(t,e)=>o.qy` <p>${t.localize("ui.dialogs.options_flow.success.description")}</p> `,renderShowFormProgressHeader:(t,a)=>t.localize(`component.${e.domain}.options.step.${a.step_id}.title`)||t.localize(`component.${e.domain}.title`),renderShowFormProgressDescription(t,a){const i=t.localize(`component.${a.translation_domain||e.domain}.options.progress.${a.progress_action}`,a.description_placeholders);return i?o.qy` <ha-markdown allow-svg breaks .content="${i}"></ha-markdown> `:""},renderMenuHeader:(t,a)=>t.localize(`component.${e.domain}.options.step.${a.step_id}.title`)||t.localize(`component.${e.domain}.title`),renderMenuDescription(t,a){const i=t.localize(`component.${a.translation_domain||e.domain}.options.step.${a.step_id}.description`,a.description_placeholders);return i?o.qy` <ha-markdown allow-svg breaks .content="${i}"></ha-markdown> `:""},renderMenuOption:(t,a,o)=>t.localize(`component.${a.translation_domain||e.domain}.options.step.${a.step_id}.menu_options.${o}`,a.description_placeholders),renderMenuOptionDescription:(t,a,o)=>t.localize(`component.${a.translation_domain||e.domain}.options.step.${a.step_id}.menu_option_descriptions.${o}`,a.description_placeholders),renderLoadingDescription:(t,a)=>t.localize(`component.${e.domain}.options.loading`)||("loading_flow"===a||"loading_step"===a?t.localize(`ui.dialogs.options_flow.loading.${a}`,{integration:(0,i.p$)(t.localize,e.domain)}):"")})},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 o=a(62826),i=a(5124),s=a(22441),r=a(6412),n=a(22786),l=a(63708),c=a(26218),d=a(76830),h=a(91926),p=a(90248),u=a(2054),m=(a(67094),a(43831),a(14503)),g=t([p,u]);[p,u]=g.then?(await g)():g;const f=t=>t.endsWith("/")&&t.length>1?t.slice(0,-1):t;class b extends i.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 i.qy` <div class="toolbar ${(0,r.H)({narrow:this.narrow})}"> <slot name="toolbar"> <div class="toolbar-content"> ${this.mainPage||!this.backPath&&history.state?.root?i.qy` <ha-menu-button .hass="${this.hass}" .narrow="${this.narrow}"></ha-menu-button> `:this.backPath?i.qy` <ha-icon-button-arrow-prev .href="${this.backPath}" .hass="${this.hass}"></ha-icon-button-arrow-prev> `:i.qy` <ha-icon-button-arrow-prev .hass="${this.hass}" @click="${this._backTapped}"></ha-icon-button-arrow-prev> `} ${this.narrow||!this.showTabs?i.qy`<div class="main-title"> <slot name="header">${this.showTabs?"":t[0]}</slot> </div>`:""} ${this.showTabs&&!this.narrow?i.qy`<div id="tabbar">${t}</div>`:""} <div id="toolbar-icon"> <slot name="toolbar-icon"></slot> </div> </div> </slot> ${this.showTabs&&this.narrow?i.qy`<div id="tabbar" class="bottom-bar">${t}</div>`:""} </div> <div class="container"> ${this.pane?i.qy`<div class="pane"> <div class="shadow-container"></div> <div class="ha-scrollbar"> <slot name="pane"></slot> </div> </div>`:i.s6} <div class="content ha-scrollbar" @scroll="${this._saveScrollPos}"> <slot></slot> ${this.hasFab?i.qy`<div class="fab-bottom-space"></div>`:i.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,h.OE)()}_isActiveTabPath(t,e){try{const a=new URL(t,window.location.origin),o=new URL(e,window.location.origin),i=f(a.pathname),s=f(o.pathname);return!(s!==i&&!s.startsWith(`${i}/`))}catch(a){return e===t||e.startsWith(`${t}/`)}}async _tabClicked(t){const e=(0,d.d)(t);e&&await(0,h.oo)(e,{replace:!0})}static get styles(){return[m.dp,i.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,o,s,r,n)=>{const c=t.filter(t=>(0,l.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=>i.qy` <a href="${t.path}" @click="${this._tabClicked}"> <ha-tab .active="${t.path===e?.path}" .narrow="${this.narrow}" .name="${t.translationKey?n(t.translationKey):t.name}"> ${t.iconPath?i.qy`<ha-svg-icon slot="icon" .path="${t.iconPath}"></ha-svg-icon>`:""} </ha-tab> </a> `)})}}(0,o.Cg)([(0,s.MZ)({attribute:!1})],b.prototype,"hass",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],b.prototype,"localizeFunc",void 0),(0,o.Cg)([(0,s.MZ)({type:String,attribute:"back-path"})],b.prototype,"backPath",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],b.prototype,"backCallback",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,attribute:"main-page"})],b.prototype,"mainPage",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],b.prototype,"route",void 0),(0,o.Cg)([(0,s.MZ)({attribute:!1})],b.prototype,"tabs",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,reflect:!0})],b.prototype,"narrow",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,reflect:!0,attribute:"is-wide"})],b.prototype,"isWide",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean})],b.prototype,"pane",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,attribute:"has-fab"})],b.prototype,"hasFab",void 0),(0,o.Cg)([(0,s.MZ)({type:Boolean,attribute:"show-tabs",reflect:!0})],b.prototype,"showTabs",void 0),(0,o.Cg)([(0,s.wk)()],b.prototype,"_activeTab",void 0),(0,o.Cg)([(0,s.P)(".content")],b.prototype,"_content",void 0),(0,o.Cg)([(0,c.a)(".content")],b.prototype,"_savedScrollPos",void 0),(0,o.Cg)([(0,s.Ls)({passive:!0})],b.prototype,"_saveScrollPos",null),b=(0,o.Cg)([(0,s.EM)("hass-tabs-subpage")],b),e()}catch(t){e(t)}})},54706(t,e,a){a.d(e,{E:()=>s});a(74423),a(18111),a(13579);var o=a(62826),i=a(22441);const s=t=>{class e extends t{connectedCallback(){super.connectedCallback(),this._checkSubscribed()}disconnectedCallback(){if(super.disconnectedCallback(),this.__unsubs){for(;this.__unsubs.length;){const t=this.__unsubs.pop();t instanceof Promise?t.then(t=>t()):t()}this.__unsubs=void 0}}updated(t){if(super.updated(t),t.has("hass"))this._checkSubscribed();else if(this.hassSubscribeRequiredHostProps)for(const e of t.keys())if(this.hassSubscribeRequiredHostProps.includes(e))return void this._checkSubscribed()}hassSubscribe(){return[]}_checkSubscribed(){void 0===this.__unsubs&&this.isConnected&&void 0!==this.hass&&!this.hassSubscribeRequiredHostProps?.some(t=>void 0===this[t])&&(this.__unsubs=this.hassSubscribe())}}return(0,o.Cg)([(0,i.MZ)({attribute:!1})],e.prototype,"hass",void 0),e}},28078(t,e,a){a.a(t,async function(t,o){try{a.r(e);a(44114),a(18111),a(22489),a(20116),a(7588),a(61701),a(13579);var i=a(62826),s=a(5124),r=a(22441),n=a(22786),l=a(36312),c=a(79791),d=a(67258),h=a(44439),p=a(38962),u=a(18350),m=(a(76776),a(3109),a(26300)),g=(a(43661),a(2846),a(65829)),f=a(77423),b=a(31462),y=a(47351),v=a(15336),w=a(42262),_=a(70241),x=a(9835),$=a(40511),k=a(54706),z=a(14503),C=a(25806),S=a(44144),M=a(89176),P=t([h,p,u,m,g,$]);[h,p,u,m,g,$]=P.then?(await P)():P;const A="M16.56,5.44L15.11,6.89C16.84,7.94 18,9.83 18,12A6,6 0 0,1 12,18A6,6 0 0,1 6,12C6,9.83 7.16,7.94 8.88,6.88L7.44,5.44C5.36,6.88 4,9.28 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12C20,9.28 18.64,6.88 16.56,5.44M13,3H11V13H13",E=60,q={type:"line",color:C.BN,areaStyle:{color:C.BN+"2B"},symbolSize:0,lineStyle:{width:1},smooth:.25};class D extends((0,k.E)(s.WF)){hassSubscribe(){const t=[(0,f.TC)(this.hass,t=>{let e=!1;const a=[];if(t.forEach(t=>{if(null===t.type||"added"===t.type)a.push(t.entry),null===t.type&&(e=!0);else if("removed"===t.type)this._configEntries&&delete this._configEntries[t.entry.entry_id];else if("updated"===t.type&&this._configEntries){const e=t.entry;this._configEntries[t.entry.entry_id]=e}}),!a.length&&!e)return;const o=[...e?[]:Object.values(this._configEntries||{}),...a],i={};for(const t of o)i[t.entry_id]=t;this._configEntries=i},{type:["hardware"]})];return(0,l.x)(this.hass.config,"hardware")&&t.push(this.hass.connection.subscribeMessage(t=>{this._memoryEntries.shift(),this._cpuEntries.shift(),this._memoryEntries.push([new Date(t.timestamp).getTime(),t.memory_used_percent]),this._cpuEntries.push([new Date(t.timestamp).getTime(),t.cpu_percent]),this._systemStatusData=t},{type:"hardware/subscribe_system_status"})),t}willUpdate(){this.hasUpdated||this._chartOptions||(this._chartOptions={xAxis:{type:"time"},yAxis:{type:"value",min:0,max:100,splitLine:{show:!0},axisLabel:{formatter:t=>t+(0,d.d)(this.hass.locale)+"%"},axisLine:{show:!1},scale:!0},grid:{top:10,bottom:10,left:10,right:10,containLabel:!0},tooltip:{trigger:"axis",valueFormatter:t=>t+(0,d.d)(this.hass.locale)+"%"}})}firstUpdated(t){super.firstUpdated(t),this._load();const e=new Date;for(let t=0;t<E;t++){const a=new Date(e);a.setSeconds(a.getSeconds()-5*(E-t)),this._memoryEntries.push([a.getTime(),null]),this._cpuEntries.push([a.getTime(),null])}}render(){let t,e,a,o,i=[];const r=this._hardwareInfo?.hardware.find(t=>null!==t.board),n=this._hardwareInfo?.hardware.filter(t=>null!==t.dongle&&(!t.config_entries.length||t.config_entries.some(t=>this._configEntries?.[t]&&!this._configEntries[t].disabled_by)));return r?(i=r.config_entries.map(t=>this._configEntries?.[t]).filter(t=>t?.supports_options&&!t.disabled_by),t=r.board.hassio_board_id,e=r.name,o=r.url,a=(0,S.QR)({category:"boards",manufacturer:r.board.manufacturer,model:r.board.model,darkOptimized:this.hass.themes?.darkMode},this.hass.auth.data.hassUrl)):this._OSData?.board&&(t=this._OSData.board,e=b.S[this._OSData.board]),s.qy` <hass-tabs-subpage back-path="/config/system" .hass="${this.hass}" .narrow="${this.narrow}" .route="${this.route}" .tabs="${(0,M.hardwareTabs)(this.hass)}"> ${(0,l.x)(this.hass.config,"hassio")?s.qy` <ha-icon-button slot="toolbar-icon" .path="${A}" .label="${this.hass.localize("ui.panel.config.hardware.restart_homeassistant")}" @click="${this._showRestartDialog}"></ha-icon-button> `:s.s6} ${this._error?s.qy`<ha-alert alert-type="error">${this._error}</ha-alert>`:s.s6} <div class="content"> ${e||(0,l.x)(this.hass.config,"hassio")?s.qy` <ha-card outlined> <div class="card-content"> ${a?s.qy`<img alt="" src="${a}" crossorigin="anonymous" referrerpolicy="no-referrer">`:s.s6} <div class="board-info"> <p class="primary-text"> ${e||this.hass.localize("ui.panel.config.hardware.generic_hardware")} </p> ${t?s.qy`<p class="secondary-text">${t}</p>`:s.s6} </div> </div> ${o?s.qy` <ha-md-list-item .href="${o}" type="link" target="_blank" rel="noopener noreferrer"> <span>${this.hass.localize("ui.panel.config.hardware.documentation")}</span> <span slot="supporting-text">${this.hass.localize("ui.panel.config.hardware.documentation_description")}</span> <ha-icon-next slot="end"></ha-icon-next> </ha-md-list-item> `:s.s6} ${i.length?s.qy`<div class="card-actions"> <ha-button .entry="${i[0]}" @click="${this._openOptionsFlow}" appearance="plain"> ${this.hass.localize("ui.panel.config.hardware.configure")} </ha-button> </div>`:s.s6} </ha-card> `:s.s6} ${n?.length?s.qy`<ha-card outlined> ${n.map(t=>{const e=t.config_entries.map(t=>this._configEntries?.[t]).filter(t=>t?.supports_options&&!t.disabled_by)[0];return s.qy`<div class="row"> ${t.name}${e?s.qy`<ha-button .entry="${e}" @click="${this._openOptionsFlow}" appearance="filled"> ${this.hass.localize("ui.panel.config.hardware.configure")} </ha-button>`:s.s6} </div>`})} </ha-card>`:s.s6} ${(0,l.x)(this.hass.config,"hardware")?s.qy`<ha-card outlined> <div class="header"> <div class="title"> ${this.hass.localize("ui.panel.config.hardware.processor")} </div> <div class="value"> ${this._systemStatusData?s.qy`${this._systemStatusData.cpu_percent}${(0,d.d)(this.hass.locale)}%`:"-"} </div> </div> <div class="card-content loading-container"> <ha-chart-base .hass="${this.hass}" .data="${this._getChartData(this._cpuEntries)}" .options="${this._chartOptions}"></ha-chart-base> ${this._systemStatusData?s.s6:s.qy` <ha-fade-in delay="1000" class="loading-overlay"> <ha-spinner size="large"></ha-spinner> </ha-fade-in>`} </div> </ha-card> <ha-card outlined> <div class="header"> <div class="title"> ${this.hass.localize("ui.panel.config.hardware.memory")} </div> <div class="value"> ${this._systemStatusData?s.qy`${(0,c.L)(this._systemStatusData.memory_used_mb/1024,1)} GB / ${(0,c.L)((this._systemStatusData.memory_used_mb+this._systemStatusData.memory_free_mb)/1024,0)} GB`:"-"} </div> </div> <div class="card-content loading-container"> <ha-chart-base .hass="${this.hass}" .data="${this._getChartData(this._memoryEntries)}" .options="${this._chartOptions}"></ha-chart-base> ${this._systemStatusData?s.s6:s.qy` <ha-fade-in delay="1000" class="loading-overlay"> <ha-spinner size="large"></ha-spinner> </ha-fade-in> `} </div> </ha-card>`:s.s6} </div> </hass-tabs-subpage> `}async _load(){(0,l.x)(this.hass.config,"usb")&&await(0,w.$)(this.hass);const t=(0,l.x)(this.hass.config,"hassio");try{(0,l.x)(this.hass.config,"hardware")&&(this._hardwareInfo=await this.hass.callWS({type:"hardware/info"})),t&&!this._hardwareInfo?.hardware.length&&(this._OSData=await(0,v.PB)(this.hass))}catch(t){this._error=(0,y.VR)(t)}}async _openOptionsFlow(t){const e=t.currentTarget.entry;e&&(0,_.Q)(this,e)}async _showRestartDialog(){(0,x.lD)(this)}constructor(...t){super(...t),this.narrow=!1,this._memoryEntries=[],this._cpuEntries=[],this._getChartData=(0,n.A)(t=>[{...q,id:t===this._cpuEntries?"cpu":"memory",name:t===this._cpuEntries?this.hass.localize("ui.panel.config.hardware.processor"):this.hass.localize("ui.panel.config.hardware.memory"),data:t}])}}D.styles=[z.RF,s.AH`.content{padding:28px 20px 0;max-width:1040px;margin:0 auto;--mdc-list-side-padding:24px;--mdc-list-vertical-padding:0}ha-card{max-width:600px;margin:0 auto;height:100%;justify-content:space-between;flex-direction:column;display:flex;margin-bottom:16px}.card-content{display:flex;justify-content:space-between;flex-direction:column;padding:16px}.loading-container{position:relative}.loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background-color:rgba(var(--rgb-card-background-color),.75);display:flex;justify-content:center;align-items:center}.card-content img{max-width:300px;margin:auto}.board-info{text-align:center}.primary-text{font-size:var(--ha-font-size-l);margin:0}.secondary-text{font-size:var(--ha-font-size-m);margin-bottom:0;color:var(--secondary-text-color)}.header{padding:16px;display:flex;justify-content:space-between}.header .title{color:var(--secondary-text-color);font-size:var(--ha-font-size-l)}.header .value{font-size:var(--ha-font-size-l)}.row{display:flex;justify-content:space-between;align-items:center;height:48px;padding:8px 16px}.card-actions{display:flex;justify-content:space-between}ha-alert{--ha-alert-icon-size:24px}`],(0,i.Cg)([(0,r.MZ)({attribute:!1})],D.prototype,"hass",void 0),(0,i.Cg)([(0,r.MZ)({type:Boolean})],D.prototype,"narrow",void 0),(0,i.Cg)([(0,r.MZ)({attribute:!1})],D.prototype,"route",void 0),(0,i.Cg)([(0,r.wk)()],D.prototype,"_error",void 0),(0,i.Cg)([(0,r.wk)()],D.prototype,"_OSData",void 0),(0,i.Cg)([(0,r.wk)()],D.prototype,"_hardwareInfo",void 0),(0,i.Cg)([(0,r.wk)()],D.prototype,"_chartOptions",void 0),(0,i.Cg)([(0,r.wk)()],D.prototype,"_systemStatusData",void 0),(0,i.Cg)([(0,r.wk)()],D.prototype,"_configEntries",void 0),D=(0,i.Cg)([(0,r.EM)("ha-config-hardware-overview")],D),o()}catch(t){o(t)}})}};