UNPKG

iobroker.lovelace

Version:

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

1 lines 31.7 kB
export const __rspack_esm_id=39074;export const __rspack_esm_ids=[39074];export const __webpack_modules__={91069(t,e,i){i.a(t,async function(t,a){try{i.d(e,{EO:()=>w,Yq:()=>k,_U:()=>$,eE:()=>x,fU:()=>C,ol:()=>v,xo:()=>b});var s=i(78016),r=i(31810),n=i(87950),o=i(81977),d=i(36307),c=i(35932),l=i(73983),h=i(6946),u=i(92913),p=i(83339),_=i(77972),g=i(31886),y=i(46927),f=t([g]);g=(f.then?(await f)():f)[0];const m=(t,e,i,a)=>{const s=i(new g.BB(t,e),a);return s instanceof Date?new Date(s.getTime()):s},v=(t,e,i,a,s)=>i.time_zone===y.Wj.server?m(t,a.time_zone,e,s):e(t,s),b=(t,e,i,a,s)=>i.time_zone===y.Wj.server?m(t,a.time_zone,e,s):e(t,s),w=(t,e,i,a,s)=>b(t,i,a,s,a.time_zone===y.Wj.server?new g.BB(e,s.time_zone):e),x=(t,e,i,a,g)=>{let y,f;if(b(t,s.e,a,g)&&b(e,r.c,a,g)){const s=(w(e,t,n.W,a,g)+1)*(i?1:-1);y=v(t,o.P,a,g,s),f=v(v(e,o.P,a,g,s),d.p,a,g)}else if(b(t,t=>(0,c.o)(t).getMilliseconds()===t.getMilliseconds(),a,g)&&b(e,t=>(0,l.D)(t).getMilliseconds()===t.getMilliseconds(),a,g)){const s=(w(e,t,h.c,a,g)+1)*(i?1:-1);y=v(t,u.f,a,g,s),f=v(e,u.f,a,g,s)}else{const s=w(e,t,p.b,a,g)*(i?1:-1);y=v(t,_.A,a,g,s),f=v(e,_.A,a,g,s)}return{start:y,end:f}},$=(t,e)=>{const i=new g.BB(t,e);return new Date(i.getTime())},k=(t,e)=>new g.BB(t,e).toISOString().split("T")[0],C=(t,e)=>new g.BB(t,e).toISOString().split("T")[1].split(".")[0];a()}catch(t){a(t)}})},46223(t,e,i){i.a(t,async function(t,a){try{i.d(e,{b:()=>w});var s=i(35932),r=i(73983),n=i(92913),o=i(52640),d=i(69137),c=i(35660),l=i(36307),h=i(11650),u=i(15797),p=i(33977),_=i(69748),g=i(55144),y=i(21828),f=i(66708),m=i(91069),v=i(380),b=t([m]);m=(b.then?(await b)():b)[0];const w=(t,e,i)=>{const a=new Date,b=(0,v.P)(t);switch(i){case"today":return[(0,m.ol)(a,s.o,t,e,{weekStartsOn:b}),(0,m.ol)(a,r.D,t,e,{weekStartsOn:b})];case"yesterday":return[(0,m.ol)((0,n.f)(a,-1),s.o,t,e,{weekStartsOn:b}),(0,m.ol)((0,n.f)(a,-1),r.D,t,e,{weekStartsOn:b})];case"this_week":return[(0,m.ol)(a,o.k,t,e,{weekStartsOn:b}),(0,m.ol)(a,d.$,t,e,{weekStartsOn:b})];case"this_month":return[(0,m.ol)(a,c.w,t,e),(0,m.ol)(a,l.p,t,e)];case"this_quarter":return[(0,m.ol)(a,h.a,t,e),(0,m.ol)(a,u.j,t,e)];case"this_year":return[(0,m.ol)(a,p.D,t,e),(0,m.ol)(a,_.Q,t,e)];case"now-7d":return[(0,m.ol)(a,g.e,t,e,7),(0,m.ol)(a,g.e,t,e,0)];case"now-30d":return[(0,m.ol)(a,g.e,t,e,30),(0,m.ol)(a,g.e,t,e,0)];case"now-12m":return[(0,m.ol)(a,t=>(0,y.a)((0,c.w)(t),11),t,e),(0,m.ol)(a,l.p,t,e)];case"now-365d":return[(0,m.ol)(a,g.e,t,e,365),(0,m.ol)(a,g.e,t,e,0)];case"now-1h":return[(0,m.ol)(a,f.O,t,e,1),(0,m.ol)(a,f.O,t,e,0)];case"now-12h":return[(0,m.ol)(a,f.O,t,e,12),(0,m.ol)(a,f.O,t,e,0)];case"now-24h":return[(0,m.ol)(a,f.O,t,e,24),(0,m.ol)(a,f.O,t,e,0)]}return[a,a]};a()}catch(t){a(t)}})},53610(t,e,i){i.a(t,async function(t,a){try{i.d(e,{computeAttributeNameDisplay:()=>v,computeAttributeValueDisplay:()=>f,computeAttributeValueToParts:()=>m});i(44114),i(18111),i(61701),i(13579),i(33110);var s=i(88827),r=i(43248),n=i(80785),o=i(72487),d=i(95747),c=i(20058),l=i(52943),h=i(22682),u=i(6940),p=i(8549),_=i(71727),g=i(69093),y=t([c,s,d,o]);[c,s,d,o]=y.then?(await y)():y;const f=(t,e,i,a,s,r,n)=>m(t,e,i,a,s,r,n).map(t=>t.value).join(""),m=(t,e,i,a,l,y,m)=>{const v=void 0!==m?m:e.attributes[y];if(null==v)return[{type:"value",value:t("state.default.unknown")}];if("number"==typeof v){const t=(0,g.t)(e),n=s.Tf[t]?.[y],o=n?n(v,i):(0,c.ZV)(v,i);let d=s.rM[t]?.[y];"weather"===t?d=(0,r.d9)(a,e,y):s.Zn.has(y)&&(d=a.unit_system.temperature);const l=[{type:"value",value:o}];if(d){const t=(0,p.A)(d,i);t&&l.push({type:"literal",value:t}),l.push({type:"unit",value:d})}return l}if("string"==typeof v&&(0,h.$)(v,!0)){if((0,u.F)(v)){const t=new Date(v);if((0,n.A)(t)){return[{type:"value",value:(0,d.yg)(t,i,a)}]}}const t=new Date(v);if((0,n.A)(t))return[{type:"value",value:(0,o.Yq)(t,i,a)}]}if(Array.isArray(v)&&v.some(t=>t instanceof Object)||!Array.isArray(v)&&v instanceof Object)return[{type:"value",value:JSON.stringify(v)}];if(Array.isArray(v)){return[{type:"value",value:v.map(s=>f(t,e,i,a,l,y,s)).join(", ")}]}const b=e.entity_id,w=(0,_.m)(b),x=e.attributes.device_class,$=l[b],k=$?.translation_key;return[{type:"value",value:k&&t(`component.${$.platform}.entity.${w}.${k}.state_attributes.${y}.state.${v}`)||x&&t(`component.${w}.entity_component.${x}.state_attributes.${y}.state.${v}`)||t(`component.${w}.entity_component._.state_attributes.${y}.state.${v}`)||v}]},v=(t,e,i,a)=>{const s=e.entity_id,r=e.attributes.device_class,n=(0,_.m)(s),o=i[s],d=o?.translation_key;return d&&t(`component.${o.platform}.entity.${n}.${d}.state_attributes.${a}.name`)||r&&t(`component.${n}.entity_component.${r}.state_attributes.${a}.name`)||t(`component.${n}.entity_component._.state_attributes.${a}.name`)||(0,l.Z)(a.replace(/_/g," ").replace(/\bid\b/g,"ID").replace(/\bip\b/g,"IP").replace(/\bmac\b/g,"MAC").replace(/\bgps\b/g,"GPS"))};a()}catch(t){a(t)}})},6940(t,e,i){i.d(e,{F:()=>s});const a=/^\d{4}-(0[1-9]|1[0-2])-([12]\d|0[1-9]|3[01])[T| ](((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([.,]\d+(?!:))?)(\8[0-5]\d([.,]\d+)?)?([zZ]|([+-])([01]\d|2[0-3]):?([0-5]\d)?)?)$/,s=t=>a.test(t)},80880(t,e,i){i.d(e,{Y:()=>a});const a=(t,e="_")=>{const i="àáâäæãåāăąабçćčđďдèéêëēėęěеёэфğǵгḧхîïíīįìıİийкłлḿмñńǹňнôöòóœøōõőоṕпŕřрßśšşșсťțтûüùúūǘůűųувẃẍÿýыžźżз·",a=`aaaaaaaaaaabcccdddeeeeeeeeeeefggghhiiiiiiiiijkllmmnnnnnoooooooooopprrrsssssstttuuuuuuuuuuvwxyyyzzzz${e}`,s=new RegExp(i.split("").join("|"),"g"),r={ж:"zh",х:"kh",ц:"ts",ч:"ch",ш:"sh",щ:"shch",ю:"iu",я:"ia"};let n;return""===t?n="":(n=t.toString().toLowerCase().replace(s,t=>a.charAt(i.indexOf(t))).replace(/[а-я]/g,t=>r[t]||"").replace(/(\d),(?=\d)/g,"$1").replace(/[^a-z0-9]+/g,e).replace(new RegExp(`(${e})\\1+`,"g"),"$1").replace(new RegExp(`^${e}+`),"").replace(new RegExp(`${e}+$`),""),""===n&&(n="unknown")),n}},51758(t,e,i){i.d(e,{Z:()=>a});const a=t=>{const e=window.location.pathname;return t?e+"?"+t:e}},34218(t,e,i){i.d(e,{P:()=>a});i(44114),i(18111),i(18237),i(45367),i(92731);function a(t,e,i,a,r=!1){if(!t)return[];if(t.length<=e)return t;const n=i??s(t[0])[0],o=a??s(t[t.length-1])[0],d=Math.ceil((o-n)/Math.floor(e)),c=new Map;for(const e of t){const t=s(e);if(!Array.isArray(t))continue;const i=Number(t[0]),a=Number(t[1]);if(isNaN(i)||isNaN(a))continue;const r=Math.floor((i-n)/d),o=c.get(r);o?o.push({point:e,x:i,y:a}):c.set(r,[{point:e,x:i,y:a}])}const l=[];if(r)for(const[t,e]of c){const t=e.reduce((t,e)=>t+e.y,0)/e.length,i=e.reduce((t,e)=>t+e.x,0)/e.length,a=s(e[0].point),r=Array.isArray(a)?[i,t]:{value:[i,t]};l.push(r)}else for(const[t,e]of c){let t=e[0],i=e[0];for(const a of e)a.y<t.y&&(t=a),a.y>i.y&&(i=a);t.x>i.x&&l.push(i.point),l.push(t.point),t.x<i.x&&l.push(i.point)}return l}function s(t){return t&&"object"==typeof t&&"value"in t?t.value:t}},72190(t,e,i){i.d(e,{c:()=>y});i(74423),i(45367),i(92731);var a=i(90433),s=i(79468),r=i(39274),n=i(71727),o=i(69093),d=i(15090),c=i(52658),l=i(80880),h=i(22675),u=i(86030);const p={media_player:{paused:.5,idle:1},vacuum:{returning:.5}};let _=0;const g=new Map;function y(t,e,i){return function(t,e,i){if(!i||t===h.Hh)return(0,u.a)("--history-unavailable-color",e);if(t===h.HV)return(0,u.a)("--history-unknown-color",e);const a=(0,n.m)(i.entity_id);if(("person"===a||"device_tracker"===a)&&!(d.vB[a]||[]).includes(t))return(0,u.a)(`--state-${a}-${(0,l.Y)(t,"_")}-color`,e);const o=(0,c.mg)(i,t);if(!o)return;const _=(0,u.a)(o,e);if(!_)return;const g=p[a]?.[t];return g?(0,s.zm)((0,r.T)((0,s.Nc)((0,s.xp)(_)),g)):_}(t,e,i)||function(t,e,i){if(!i)return;const s=(0,o.t)(i),r=(d.vB[s]||"sensor"===s&&"enum"===i.attributes.device_class&&i.attributes.options||[]).indexOf(t);return-1!==r?(0,a.fI)(r,e):void 0}(t,e,i)||function(t,e){if(g.has(t))return g.get(t);const i=(0,a.fI)(_,e);return _++,g.set(t,i),i}(t,e)}},59174(t,e,i){i.a(t,async function(t,e){try{var a=i(62826),s=i(35211),r=i(5124),n=i(22441),o=i(91450),d=i(22792),c=i(85694),l=i(44144),h=(i(47680),t([c]));c=(h.then?(await h)():h)[0];class u extends r.WF{render(){if(this.icon)return r.qy`<ha-icon .icon="${this.icon}"></ha-icon>`;if(!this.domain)return r.s6;if(!this._connection||!this._hassConfig)return this._renderFallback();const t=(0,c._4)(this._connection.connection,this._hassConfig.config,this.domain,this.deviceClass,this.state).then(t=>t?r.qy`<ha-icon .icon="${t}"></ha-icon>`:this._renderFallback());return r.qy`${(0,o.T)(t)}`}_renderFallback(){if(this.domain&&this.domain in c.l)return r.qy` <ha-svg-icon .path="${c.l[this.domain]}"></ha-svg-icon> `;if(this.brandFallback){const t=(0,l.MR)({domain:this.domain,type:"icon",darkOptimized:this._hassUi?.themes.darkMode},this._hassConfig?.auth.data.hassUrl);return r.qy` <img alt="" src="${t}" crossorigin="anonymous" referrerpolicy="no-referrer"> `}return r.qy`<ha-svg-icon .path="${c.lW}"></ha-svg-icon>`}}u.styles=r.AH`img{width:var(--mdc-icon-size,24px)}`,(0,a.Cg)([(0,n.MZ)()],u.prototype,"domain",void 0),(0,a.Cg)([(0,n.MZ)({attribute:!1})],u.prototype,"deviceClass",void 0),(0,a.Cg)([(0,n.MZ)({attribute:!1})],u.prototype,"state",void 0),(0,a.Cg)([(0,n.MZ)()],u.prototype,"icon",void 0),(0,a.Cg)([(0,n.MZ)({attribute:"brand-fallback",type:Boolean})],u.prototype,"brandFallback",void 0),(0,a.Cg)([(0,n.wk)(),(0,s.Fg)({context:d.WF,subscribe:!0})],u.prototype,"_hassConfig",void 0),(0,a.Cg)([(0,n.wk)(),(0,s.Fg)({context:d.Wq,subscribe:!0})],u.prototype,"_connection",void 0),(0,a.Cg)([(0,n.wk)(),(0,s.Fg)({context:d.EK,subscribe:!0})],u.prototype,"_hassUi",void 0),u=(0,a.Cg)([(0,n.EM)("ha-domain-icon")],u),e()}catch(t){e(t)}})},11382(t,e,i){var a=i(62826),s=i(5124),r=i(22441),n=i(6412),o=i(1087),d=i(12587);i(67094);class c extends s.WF{render(){const t=this.noCollapse?s.s6:s.qy` <ha-svg-icon .path="${"M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z"}" class="summary-icon ${(0,n.H)({expanded:this.expanded})}"></ha-svg-icon> `;return s.qy` <div class="top ${(0,n.H)({expanded:this.expanded})}"> <div id="summary" class="${(0,n.H)({noCollapse:this.noCollapse})}" @click="${this._toggleContainer}" @keydown="${this._toggleContainer}" @focus="${this._focusChanged}" @blur="${this._focusChanged}" role="button" tabindex="${this.noCollapse?-1:0}" aria-expanded="${this.expanded}" aria-controls="sect1" part="summary"> ${this.leftChevron?t:s.s6} <slot name="leading-icon"></slot> <slot name="header"> <div class="header"> ${this.header} <slot class="secondary" name="secondary">${this.secondary}</slot> </div> </slot> <slot name="event"></slot> ${this.leftChevron?s.s6:t} <slot name="icons"></slot> </div> </div> <div class="container ${(0,n.H)({expanded:this.expanded})}" @transitionend="${this._handleTransitionEnd}" role="region" aria-labelledby="summary" aria-hidden="${!this.expanded}" tabindex="-1"> ${this._showContent?s.qy`<slot></slot>`:""} </div> `}willUpdate(t){super.willUpdate(t),t.has("expanded")&&(this._showContent=this.expanded,setTimeout(()=>{this._container.style.overflow=this.expanded?"initial":"hidden"},300))}_handleTransitionEnd(){this._container.style.removeProperty("height"),this._container.style.overflow=this.expanded?"initial":"hidden",this._showContent=this.expanded}async _toggleContainer(t){if(t.defaultPrevented)return;if("keydown"===t.type&&"Enter"!==t.key&&" "!==t.key)return;if(t.preventDefault(),this.noCollapse)return;const e=!this.expanded;(0,o.r)(this,"expanded-will-change",{expanded:e}),this._container.style.overflow="hidden",e&&(this._showContent=!0,await(0,d.E)());const i=this._container.scrollHeight;this._container.style.height=`${i}px`,e||setTimeout(()=>{this._container.style.height="0px"},0),this.expanded=e,(0,o.r)(this,"expanded-changed",{expanded:this.expanded})}_focusChanged(t){this.noCollapse||this.shadowRoot.querySelector(".top").classList.toggle("focused","focus"===t.type)}constructor(...t){super(...t),this.expanded=!1,this.outlined=!1,this.leftChevron=!1,this.noCollapse=!1,this._showContent=this.expanded}}c.styles=s.AH`:host{display:block}.top{display:flex;align-items:center;border-radius:var(--ha-card-border-radius,var(--ha-border-radius-lg))}.top.expanded{border-bottom-left-radius:0px;border-bottom-right-radius:0px}.top.focused{background:var(--input-fill-color)}:host([outlined]){box-shadow:none;border-width:1px;border-style:solid;border-color:var(--outline-color);border-radius:var(--ha-card-border-radius,var(--ha-border-radius-lg))}.summary-icon{transition:transform 150ms cubic-bezier(.4, 0, .2, 1);direction:var(--direction);margin-left:8px;margin-inline-start:8px;margin-inline-end:initial;border-radius:var(--ha-border-radius-circle)}#summary:focus-visible ha-svg-icon.summary-icon{background-color:var(--ha-color-fill-neutral-normal-active)}::slotted([slot=leading-icon]),:host([left-chevron]) .summary-icon{margin-left:0;margin-right:8px;margin-inline-start:0;margin-inline-end:8px}#summary{flex:1;display:flex;padding:var(--expansion-panel-summary-padding,0 8px);min-height:48px;align-items:center;cursor:pointer;overflow:hidden;font-weight:var(--ha-font-weight-medium);outline:0}#summary.noCollapse{cursor:default}.summary-icon.expanded{transform:rotate(180deg)}.header,::slotted([slot=header]){flex:1;overflow-wrap:anywhere;color:var(--primary-text-color)}.container{padding:var(--expansion-panel-content-padding,0 8px);overflow:hidden;transition:height .3s cubic-bezier(.4, 0, .2, 1);height:0px}.container.expanded{height:auto}.secondary{display:block;color:var(--secondary-text-color);font-size:var(--ha-font-size-s)}`,(0,a.Cg)([(0,r.MZ)({type:Boolean,reflect:!0})],c.prototype,"expanded",void 0),(0,a.Cg)([(0,r.MZ)({type:Boolean,reflect:!0})],c.prototype,"outlined",void 0),(0,a.Cg)([(0,r.MZ)({attribute:"left-chevron",type:Boolean,reflect:!0})],c.prototype,"leftChevron",void 0),(0,a.Cg)([(0,r.MZ)({attribute:"no-collapse",type:Boolean,reflect:!0})],c.prototype,"noCollapse",void 0),(0,a.Cg)([(0,r.MZ)()],c.prototype,"header",void 0),(0,a.Cg)([(0,r.MZ)()],c.prototype,"secondary",void 0),(0,a.Cg)([(0,r.wk)()],c.prototype,"_showContent",void 0),(0,a.Cg)([(0,r.P)(".container")],c.prototype,"_container",void 0),c=(0,a.Cg)([(0,r.EM)("ha-expansion-panel")],c)},53756(t,e,i){i.d(e,{t:()=>d,w:()=>c});i(74423),i(18111),i(22489),i(61701);var a=i(71727),s=i(74705),r=i(28978),n=i(15638),o=i(95350);const d=[{name:"search_labels.entityName",weight:10},{name:"search_labels.friendlyName",weight:8},{name:"search_labels.deviceName",weight:7},{name:"search_labels.areaName",weight:6},{name:"search_labels.domainName",weight:6},{name:"search_labels.entityId",weight:3}],c=(t,e,i,d,c,l,h,u,p,_="")=>{let g,y=Object.keys(t.states);return h&&(y=y.filter(t=>h.includes(t))),u&&(y=y.filter(t=>!u.includes(t))),e&&(y=y.filter(t=>e.includes((0,a.m)(t)))),i&&(y=y.filter(t=>!i.includes((0,a.m)(t)))),g=y.map(e=>{const i=t.states[e],d=(0,r.u)(i),[c,l,h]=(0,s.Cf)(i,[{type:"entity"},{type:"device"},{type:"area"}],t.entities,t.devices,t.areas,t.floors),u=(0,o.p$)(t.localize,(0,a.m)(e)),p=(0,n.qC)(t.language,t.translationMetadata.translations),g=c||l||e,y=[h,c?l:void 0].filter(Boolean).join(p?" ◂ ":" ▸ ");return{id:`${_}${e}`,primary:g,secondary:y,domain_name:u,sorting_label:[g,y].filter(Boolean).join("_"),search_labels:{entityName:c||null,deviceName:l||null,areaName:h||null,domainName:u||null,friendlyName:d||null,entityId:e},stateObj:i}}),c&&(g=g.filter(t=>t.id===p||t.stateObj?.attributes.device_class&&c.includes(t.stateObj.attributes.device_class))),l&&(g=g.filter(t=>t.id===p||t.stateObj?.attributes.unit_of_measurement&&l.includes(t.stateObj.attributes.unit_of_measurement))),d&&(g=g.filter(t=>t.id===p||t.stateObj&&d(t.stateObj))),g}},95311(t,e,i){i.d(e,{DF:()=>p,Lo:()=>v,MH:()=>c,MM:()=>_,Qz:()=>u,Ru:()=>y,UU:()=>f,_7:()=>h,bZ:()=>l,m0:()=>d,tD:()=>m,vX:()=>g,wY:()=>b});i(74423),i(44114),i(18111),i(22489),i(30531),i(7588),i(13579),i(17642),i(58004),i(33853),i(45876),i(32475),i(15024),i(31698);var a=i(44537),s=i(69093),r=i(82286),n=i(24367),o=i(58594);const d=(t,e,i,a,s,r,n)=>{const o=[],d=[],c=[];return Object.values(i).forEach(i=>{i.labels.includes(e)&&u(t,s,a,i.area_id,r,n)&&c.push(i.area_id)}),Object.values(a).forEach(i=>{i.labels.includes(e)&&p(t.states,Object.values(s),i,r,n)&&d.push(i.id)}),Object.values(s).forEach(i=>{i.labels.includes(e)&&_(t.states[i.entity_id],r,n)&&o.push(i.entity_id)}),{areas:c,devices:d,entities:o}},c=(t,e,i,a,s)=>{const r=[];return Object.values(i).forEach(i=>{i.floor_id===e&&u(t,t.entities,t.devices,i.area_id,a,s)&&r.push(i.area_id)}),{areas:r}},l=(t,e,i,a,s,r)=>{const n=[],o=[];return Object.values(i).forEach(i=>{i.area_id===e&&p(t.states,Object.values(a),i,s,r)&&o.push(i.id)}),Object.values(a).forEach(i=>{i.area_id===e&&_(t.states[i.entity_id],s,r)&&n.push(i.entity_id)}),{devices:o,entities:n}},h=(t,e,i,a,s)=>{const r=[];return Object.values(i).forEach(i=>{i.device_id===e&&_(t.states[i.entity_id],a,s)&&r.push(i.entity_id)}),{entities:r}},u=(t,e,i,a,s,r)=>!!Object.values(i).some(i=>!(i.area_id!==a||!p(t.states,Object.values(e),i,s,r)))||Object.values(e).some(e=>!(e.area_id!==a||!_(t.states[e.entity_id],s,r))),p=(t,e,i,s,r)=>{const n=r?(0,o.fk)(r,e):void 0;if(s.target?.device&&!(0,a.e)(s.target.device).some(t=>g(t,i,n)))return!1;if(s.target?.entity){return e.filter(t=>t.device_id===i.id).some(e=>{const i=t[e.entity_id];return _(i,s,r)})}return!0},_=(t,e,i)=>!!t&&(!e.target?.entity||(0,a.e)(e.target.entity).some(e=>y(e,t,i))),g=(t,e,i)=>{const{manufacturer:a,model:s,model_id:r,integration:n}=t;return(!a||e.manufacturer===a)&&((!s||e.model===s)&&((!r||e.model_id===r)&&!(n&&i&&!i?.[e.id]?.has(n))))},y=(t,e,i)=>{const{domain:n,device_class:o,supported_features:d,unit_of_measurement:c,integration:l}=t;if(n){const t=(0,s.t)(e);if(Array.isArray(n)?!n.includes(t):t!==n)return!1}if(o){const t=e.attributes.device_class;if(t&&Array.isArray(o)?!o.includes(t):t!==o)return!1}if(d&&!(0,a.e)(d).some(t=>(0,r.$)(e,t)))return!1;if(c){const t=e.attributes.unit_of_measurement;if(!t||(Array.isArray(c)?!c.includes(t):t!==c))return!1}return!l||i?.[e.entity_id]?.domain===l},f=t=>{if(!t.entity)return{entity:null};if("filter"in t.entity)return t;const{domain:e,integration:i,device_class:a,...s}=t.entity;return e||i||a?{entity:{...s,filter:{domain:e,integration:i,device_class:a}}}:{entity:s}},m=t=>{if(!t.device)return{device:null};if("filter"in t.device)return t;const{integration:e,manufacturer:i,model:a,...s}=t.device;return e||i||a?{device:{...s,filter:{integration:e,manufacturer:i,model:a}}}:{device:s}},v=t=>{let e;if("target"in t)e=(0,a.e)(t.target?.entity);else if("entity"in t){if(t.entity?.include_entities)return;e=(0,a.e)(t.entity?.filter)}if(!e)return;const i=e.flatMap(t=>t.integration||t.device_class||t.supported_features||!t.domain?[]:(0,a.e)(t.domain).filter(t=>(0,n.z)(t)));return[...new Set(i)]},b=(t,e,i,s,r,n={target:{}})=>{if(!e)return[];const o=new Set((0,a.e)(e.entity_id)),u=new Set((0,a.e)(e.device_id)),p=new Set((0,a.e)(e.area_id)),_=new Set((0,a.e)(e.floor_id));return new Set((0,a.e)(e.label_id)).forEach(e=>{const a=d(t,e,r,s,i,n);a.devices.forEach(t=>u.add(t)),a.entities.forEach(t=>o.add(t)),a.areas.forEach(t=>p.add(t))}),_.forEach(e=>{c(t,e,r,n).areas.forEach(t=>p.add(t))}),p.forEach(e=>{const a=l(t,e,s,i,n);a.devices.forEach(t=>u.add(t)),a.entities.forEach(t=>o.add(t))}),u.forEach(e=>{h(t,e,i,n).entities.forEach(t=>o.add(t))}),Array.from(o)}},42269(t,e,i){i.d(e,{p:()=>s});var a=i(1087);const s=(t,e)=>(0,a.r)(t,"hass-more-info",e)},24367(t,e,i){i.d(e,{L:()=>s,z:()=>r});var a=i(23832);const s=["input_boolean","input_button","input_text","input_number","input_datetime","input_select","counter","timer","schedule"],r=(0,a.g)(s)},19711(t,e,i){i.d(e,{$:()=>r});var a=i(1087);const s=()=>Promise.all([i.e(80131),i.e(70183),i.e(47677)]).then(i.bind(i,79029)),r=(t,e)=>{(0,a.r)(t,"show-dialog",{dialogTag:"dialog-helper-detail",dialogImport:s,dialogParams:e})}},49131(t,e,i){i.a(t,async function(t,a){try{i.r(e);i(44114),i(17642),i(58004),i(33853),i(45876),i(32475),i(15024),i(31698),i(14603),i(47566),i(98721);var s=i(62826),r=i(44018),n=i(5124),o=i(22441),d=i(22786),c=i(44537),l=i(93905),h=i(71727),u=i(91926),p=i(51758),_=i(6030),g=i(44439),y=i(66737),f=i(58987),m=i(29823),v=(i(70947),i(26300)),b=i(90248),w=i(2054),x=i(65829),$=i(79286),k=(i(27330),i(25064)),C=i(23528),H=i(95311),D=i(64808),M=i(65063),A=i(14503),L=i(30039),O=i(12496),V=t([g,y,f,m,v,b,w,x,$,k]);[g,y,f,m,v,b,w,x,$,k]=V.then?(await V)():V;const j="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",E="M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z",P="M14.76,20.83L17.6,18L14.76,15.17L16.17,13.76L19,16.57L21.83,13.76L23.24,15.17L20.43,18L23.24,20.83L21.83,22.24L19,19.4L16.17,22.24L14.76,20.83M12,12V19.88C12.04,20.18 11.94,20.5 11.71,20.71C11.32,21.1 10.69,21.1 10.3,20.71L8.29,18.7C8.06,18.47 7.96,18.16 8,17.87V12H7.97L2.21,4.62C1.87,4.19 1.95,3.56 2.38,3.22C2.57,3.08 2.78,3 3,3V3H17V3C17.22,3 17.43,3.08 17.62,3.22C18.05,3.56 18.13,4.19 17.79,4.62L12.03,12H12Z",z="M18 15V18H15V20H18V23H20V20H23V18H20V15H18M13.3 21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H19C20.1 3 21 3.9 21 5V13.3C20.4 13.1 19.7 13 19 13C17.9 13 16.8 13.3 15.9 13.9L14.5 12L11 16.5L8.5 13.5L5 18H13.1C13 18.3 13 18.7 13 19C13 19.7 13.1 20.4 13.3 21Z";class S extends n.WF{connectedCallback(){super.connectedCallback(),this.hasUpdated&&this._getHistory()}disconnectedCallback(){super.disconnectedCallback(),this._unsubscribeHistory()}_goBack(){(0,u.OE)()}render(){const t=this._getEntityIds().length>0;return n.qy` <ha-top-app-bar-fixed .narrow="${this.narrow}"> ${this._showBack?n.qy` <ha-icon-button-arrow-prev slot="navigationIcon" @click="${this._goBack}"></ha-icon-button-arrow-prev> `:n.qy` <ha-menu-button slot="navigationIcon" .hass="${this.hass}" .narrow="${this.narrow}"></ha-menu-button> `} <h1 class="page-title" slot="title"> ${this.hass.localize("panel.history")} </h1> ${t?n.qy` <ha-icon-button slot="actionItems" @click="${this._removeAll}" .disabled="${this._isLoading}" .path="${P}" .label="${this.hass.localize("ui.panel.history.remove_all")}"></ha-icon-button> `:""} <ha-dropdown slot="actionItems" @wa-select="${this._handleMenuAction}"> <ha-icon-button slot="trigger" .label="${this.hass.localize("ui.common.menu")}" .path="${j}"></ha-icon-button> <ha-dropdown-item value="download" .disabled="${this._isLoading}"> ${this.hass.localize("ui.panel.history.download_data")} <ha-svg-icon slot="icon" .path="${E}"></ha-svg-icon> </ha-dropdown-item> <ha-dropdown-item value="add-card" .disabled="${this._isLoading}"> ${this.hass.localize("ui.panel.history.add_card")} <ha-svg-icon slot="icon" .path="${z}"></ha-svg-icon> </ha-dropdown-item> </ha-dropdown> <div class="flex content ha-scrollbar"> <div class="filters"> <ha-date-range-picker ?disabled="${this._isLoading}" .startDate="${this._startDate}" .endDate="${this._endDate}" extended-presets time-picker @value-changed="${this._dateRangeChanged}"></ha-date-range-picker> <ha-target-picker .hass="${this.hass}" .value="${this._targetPickerValue}" .disabled="${this._isLoading}" add-on-top @value-changed="${this._targetsChanged}" compact="compact"></ha-target-picker> </div> ${this._isLoading?n.qy`<div class="progress-wrapper"> <ha-spinner></ha-spinner> </div>`:t?n.qy` <state-history-charts .hass="${this.hass}" .historyData="${this._mungedStateHistory}" .startTime="${this._startDate}" .endTime="${this._endDate}" .narrow="${this.narrow}" sync-charts> </state-history-charts> `:n.qy`<div class="start-search"> ${this.hass.localize("ui.panel.history.start_search")} </div>`} </div> </ha-top-app-bar-fixed> `}willUpdate(t){if(super.willUpdate(t),(t.has("_stateHistory")||t.has("_statisticsHistory")||t.has("_startDate")||t.has("_endDate")||t.has("_targetPickerValue"))&&(this._statisticsHistory&&this._stateHistory?this._mungedStateHistory=(0,k.tG)(this._stateHistory,this._statisticsHistory):this._mungedStateHistory=this._stateHistory||this._statisticsHistory),this.hasUpdated)return;const e=(0,_.px)(),i=e.entity_id,a=e.device_id,s=e.area_id,r=e.floor_id,n=e.label_id;if((i||a||s||r||n)&&(this._targetPickerValue={}),i){const t=i.split(",");this._targetPickerValue.entity_id=t}if(a){const t=a.split(",");this._targetPickerValue.device_id=t}if(s){const t=s.split(",");this._targetPickerValue.area_id=t}if(r){const t=r.split(",");this._targetPickerValue.floor_id=t}if(n){const t=n.split(",");this._targetPickerValue.label_id=t}const o=e.start_date;o&&(this._startDate=new Date(o));const d=e.end_date;d&&(this._endDate=new Date(d))}firstUpdated(t){super.firstUpdated(t);"1"===(0,_.px)().back&&history.length>1&&(this._showBack=!0,(0,u.oo)((0,p.Z)((0,_.s8)("back")),{replace:!0}))}updated(t){(t.has("_startDate")||t.has("_endDate")||t.has("_targetPickerValue")||!this._stateHistory&&(t.has("_deviceEntityLookup")||t.has("_areaEntityLookup")||t.has("_areaDeviceLookup")))&&(this._getHistory(),this._getStats())}_removeAll(){this._targetPickerValue={},this._updatePath()}async _getStats(){const t=this._getEntityIds();if(0===t.length)return void(this._statisticsHistory=void 0);const e=new Date(this._startDate);let i,a;e.setHours(e.getHours()-1);try{i=await(0,C.sz)(this.hass,e,this._endDate,t,"hour",void 0,["mean","state"])}catch(t){return}try{({numeric_device_classes:a}=await(0,D.KL)(this.hass))}catch(t){return}this._statisticsHistory=(0,k._1)(this.hass,i,t,a,!0)}async _getHistory(){const t=this._getEntityIds();if(0===t.length)return void(this._stateHistory=void 0);this._isLoading=!0,this._subscribed&&this._unsubscribeHistory();const e=new Date,i=Promise.resolve(void 0);let a;this._subscribed=i;try{({numeric_device_classes:a}=await(0,D.KL)(this.hass))}catch(t){return void(this._subscribed===i&&(this._subscribed=void 0,this._isLoading=!1))}this._subscribed===i&&(this._subscribed=(0,k.Jo)(this.hass,e=>{this._isLoading=!1,this._stateHistory=(0,k.Mm)(this.hass,e,t,this.hass.localize,a,!0)},this._startDate,this._endDate,t),this._subscribed.catch(()=>{this._isLoading=!1,this._unsubscribeHistory()}),this._endDate>e&&this._setRedrawTimer())}_setRedrawTimer(){clearInterval(this._interval);const t=new Date,e=this._endDate>t?t:this._endDate,i=(0,r.M)(e,this._startDate);this._interval=window.setInterval(()=>this._stateHistoryCharts?.requestUpdate(),i<2?1e4:i<10?6e4:3e5)}_unsubscribeHistory(){this._interval&&(clearInterval(this._interval),this._interval=void 0),this._subscribed&&(this._subscribed.then(t=>t?.()).catch(()=>{}),this._subscribed=void 0)}_getEntityIds(){return this.__getEntityIds(this._targetPickerValue,this.hass.entities,this.hass.devices,this.hass.areas)}_dateRangeChanged(t){this._startDate=t.detail.value.startDate,this._endDate=t.detail.value.endDate,this._updatePath()}_targetsChanged(t){this._targetPickerValue=t.detail.value||{},this._updatePath()}_updatePath(){const t={};this._targetPickerValue.entity_id&&(t.entity_id=(0,c.e)(this._targetPickerValue.entity_id).join(",")),this._targetPickerValue.label_id&&(t.label_id=(0,c.e)(this._targetPickerValue.label_id).join(",")),this._targetPickerValue.floor_id&&(t.floor_id=(0,c.e)(this._targetPickerValue.floor_id).join(",")),this._targetPickerValue.area_id&&(t.area_id=(0,c.e)(this._targetPickerValue.area_id).join(",")),this._targetPickerValue.device_id&&(t.device_id=(0,c.e)(this._targetPickerValue.device_id).join(",")),this._startDate&&(t.start_date=this._startDate.toISOString()),this._endDate&&(t.end_date=this._endDate.toISOString()),(0,u.oo)(`/history?${(0,_.KH)(t)}`,{replace:!0})}async _handleMenuAction(t){switch(t.detail.item.value){case"download":this._downloadHistory();break;case"add-card":this._suggestCard()}}_downloadHistory(){if(0===[...this._getEntityIds()].sort().length||!this._mungedStateHistory)return void(0,M.showAlertDialog)(this,{title:this.hass.localize("ui.panel.history.download_data_error"),text:this.hass.localize("ui.panel.history.error_no_data"),warning:!0});const t=[""],e=["entity_id","state","last_changed"],i=new Set,a={climate:{current_temperature:0,hvac_action:0,target_temp_high:0,target_temp_low:0,temperature:0},humidifier:{action:0,current_humidity:0,humidity:0},water_heater:{current_temperature:0,operation_mode:0,temperature:0}},s=t=>new Date(t).toISOString();for(const r of this._mungedStateHistory.line)for(const n of r.data){const r=n.entity_id,o=(0,h.m)(r),d=a[o];if(d&&!i.has(o)){i.add(o);let t=e.length;for(const i of Object.keys(d))e.push(i),d[i]=t,t+=1}if(n.statistics)for(const e of n.statistics)t.push(`${r},${e.state},${s(e.last_changed)}\n`);for(const e of n.states){const i=s(e.last_changed),a=[r,e.state,i];if(e.attributes&&d){const t=e.attributes;for(const[e,i]of Object.entries(d))e in t&&(a[i]=t[e])}t.push(a.join(",")+"\n")}}for(const e of this._mungedStateHistory.timeline){const i=e.entity_id;for(const a of e.data){const e=/,|"/.test(a.state)?`"${a.state.replaceAll('"','""')}"`:a.state;t.push(`${i},${e},${s(a.last_changed)}\n`)}}t[0]=e.join(",")+"\n";const r=new Blob(t,{type:"text/csv"}),n=window.URL.createObjectURL(r);(0,L.R)(n,"history.csv")}_suggestCard(){const t=this._getEntityIds();if(0===t.length||!this._mungedStateHistory)return void(0,M.showAlertDialog)(this,{title:this.hass.localize("ui.panel.history.add_card_error"),text:this.hass.localize("ui.panel.history.error_no_data"),warning:!0});const e=Math.min(this._endDate.getTime(),Date.now()),i=[{title:this.hass.localize("panel.history"),type:"history-graph",hours_to_show:Math.round((e-this._startDate.getTime())/1e3/60/60),entities:t}];(0,O.Q)(this,this.hass,i,{title:this.hass.localize("panel.history"),cards:i},t)}static get styles(){return[A.RF,A.dp,n.AH`ha-top-app-bar-fixed{height:100vh;overflow-x:hidden;overflow-y:visible}.page-title{font-size:inherit;margin:inherit;line-height:inherit}.content{height:calc(100vh - var(--header-height,0px) - var(--safe-area-inset-top,0px) - var(--safe-area-inset-bottom,0px));box-sizing:border-box;overflow-x:hidden;padding:0 16px 16px}:host([virtualize]){height:100%;--ha-generic-picker-max-width:400px}.progress-wrapper{position:relative;display:flex;align-items:center;flex-direction:column;padding:16px}.filters{display:flex;align-items:flex-start;margin-top:16px}ha-date-range-picker{margin-right:16px;margin-inline-end:16px;margin-inline-start:initial;max-width:100%;direction:var(--direction)}ha-target-picker{flex:1;max-width:100%;min-width:0}@media all and (max-width:1025px){.filters{flex-direction:column}ha-date-range-picker{width:100%;margin-bottom:8px}}.start-search{padding-top:16px;text-align:center;color:var(--secondary-text-color)}`]}constructor(){super(),this.narrow=!1,this.rtl=!1,this._targetPickerValue={},this._isLoading=!1,this.__getEntityIds=(0,d.A)((t,e,i,a)=>(0,H.wY)(this.hass,t,e,i,a));const t=new Date;t.setHours(t.getHours()-1,0,0,0),this._startDate=t;const e=new Date;e.setHours(e.getHours()+2,0,0,0),this._endDate=e}}(0,s.Cg)([(0,o.MZ)({attribute:!1})],S.prototype,"hass",void 0),(0,s.Cg)([(0,o.MZ)({reflect:!0,type:Boolean})],S.prototype,"narrow",void 0),(0,s.Cg)([(0,o.MZ)({reflect:!0,type:Boolean})],S.prototype,"rtl",void 0),(0,s.Cg)([(0,o.wk)()],S.prototype,"_startDate",void 0),(0,s.Cg)([(0,o.wk)()],S.prototype,"_endDate",void 0),(0,s.Cg)([(0,o.wk)(),(0,l.I)({key:"historyPickedValue",state:!0,subscribe:!1})],S.prototype,"_targetPickerValue",void 0),(0,s.Cg)([(0,o.wk)()],S.prototype,"_isLoading",void 0),(0,s.Cg)([(0,o.wk)()],S.prototype,"_stateHistory",void 0),(0,s.Cg)([(0,o.wk)()],S.prototype,"_statisticsHistory",void 0),(0,s.Cg)([(0,o.wk)()],S.prototype,"_showBack",void 0),(0,s.Cg)([(0,o.P)("state-history-charts")],S.prototype,"_stateHistoryCharts",void 0),S=(0,s.Cg)([(0,o.EM)("ha-panel-history")],S),a()}catch(t){a(t)}})}};