UNPKG

iobroker.lovelace

Version:

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

3 lines 7.39 kB
"use strict";(self.rspackChunkhome_assistant_frontend=self.rspackChunkhome_assistant_frontend||[]).push([[5012],{90433:function(e,t,i){i.d(t,{Vy:function(){return n},fI:function(){return o},ux:function(){return h}});var s=i(22786),r=i(79468);const a=54;function n(e,t){const i=e%a+1;return t.getPropertyValue(`--color-${i}`)}function o(e,t){const i=t.getPropertyValue(`--graph-color-${e+1}`)||n(e,t);return(0,r.RQ)(i)}const h=(0,s.A)(e=>Array.from({length:a},(t,i)=>o(i,e)),(e,t)=>e[0].getPropertyValue("--graph-color-1")===t[0].getPropertyValue("--graph-color-1")&&e[0].getPropertyValue("--color-1")===t[0].getPropertyValue("--color-1"))},68159:function(e,t,i){i.a(e,async function(e,s){try{i.r(t),i.d(t,{HuiCalendarCard:function(){return $}});var r=i(69235),a=(i(16280),i(74423),i(18111),i(22489),i(7588),i(61701),i(45367),i(92731),i(3362),i(62953),i(40445)),n=i(5124),o=i(6412),h=i(67576),d=i(78870),l=i(90433),c=i(42372),_=i(9899),u=(i(76776),i(65829)),g=i(55156),v=i(59241),p=i(54706),y=i(63556),f=i(13632),b=i(85979),C=e([r,u,y,b]);[r,u,y,b]=C.then?(await C)():C;let w,m,k,x,z=e=>e;class $ extends((0,p.E)(n.WF)){static async getConfigElement(){return await Promise.all([i.e(1535),i.e(57958)]).then(i.bind(i,6534)),document.createElement("hui-calendar-card-editor")}static getStubConfig(e,t,i){return{entities:(0,f.B)(e,2,t,i,["calendar"])}}setConfig(e){var t,i;if(null===(t=e.entities)||void 0===t||!t.length)throw new Error("Entities must be specified");if(!Array.isArray(e.entities))throw new Error("Entities need to be an array");(null===(i=this._config)||void 0===i?void 0:i.entities)!==e.entities&&this._unsubscribeAll(),this._config=Object.assign({initial_view:"dayGridMonth"},e)}willUpdate(e){var t;if(super.willUpdate(e),this._entityRegistry&&((e.has("_config")||e.has("_entityRegistry"))&&(this._eventsLoaded=!1),!this.hasUpdated||e.has("_config")&&null!==(t=this._config)&&void 0!==t&&t.entities||e.has("_entityRegistry"))){var i,s,r;const e=getComputedStyle(this),t=new Map(null!==(i=null===(s=this._entityRegistry)||void 0===s?void 0:s.map(e=>[e.entity_id,e.options]))&&void 0!==i?i:[]);null!==(r=this._config)&&void 0!==r&&r.entities&&(this._calendars=this._config.entities.map((i,s)=>{var r;const a=null===(r=t.get(i))||void 0===r||null===(r=r.calendar)||void 0===r?void 0:r.color;let n;return n=a&&(0,d.dc)(a)?(0,d.MP)(a):(0,l.Vy)(s,e),{entity_id:i,backgroundColor:n}}))}}getCardSize(){return 12}getGridOptions(){return{rows:6,columns:12,min_columns:4,min_rows:4}}hassSubscribe(){return[(0,v.Bz)(this.hass.connection,e=>{this._entityRegistry=e})]}connectedCallback(){super.connectedCallback(),this.updateComplete.then(()=>this._attachObserver())}disconnectedCallback(){super.disconnectedCallback(),this._resizeObserver&&this._resizeObserver.disconnect(),this._unsubscribeAll()}render(){if(!this._config||!this.hass)return n.s6;const e=!this._entityRegistry||!this._eventsLoaded;return(0,n.qy)(w||(w=z` <ha-card> ${0} <ha-full-calendar class="${0}" .narrow="${0}" .events="${0}" .calendars="${0}" .hass="${0}" .views="${0}" .initialView="${0}" .error="${0}" @view-changed="${0}"></ha-full-calendar> ${0} </ha-card> `),this._config.title?(0,n.qy)(m||(m=z`<div class="header">${0}</div>`),this._config.title):n.s6,(0,o.H)({"is-grid":"grid"===this.layout,"is-panel":"panel"===this.layout,"has-title":!!this._config.title,loading:e}),this._narrow,this._events,this._calendars,this.hass,["dayGridMonth","dayGridDay","listWeek"],this._config.initial_view,this._error,this._handleViewChanged,e?(0,n.qy)(k||(k=z`<div class="loading"> <ha-spinner></ha-spinner> </div>`)):n.s6)}updated(e){if(super.updated(e),!this._config||!this.hass)return;e.has("_entityRegistry")&&this._entityRegistry&&this._unsubscribeAll().then(()=>{this._subscribeCalendarEvents()}),!this._entityRegistry||this._calendars.length||this._eventsLoaded||(this._eventsLoaded=!0);const t=e.get("hass"),i=e.get("_config");(!t||!i||e.has("hass")&&t.themes!==this.hass.themes||e.has("_config")&&i.theme!==this._config.theme)&&(0,c.Q)(this,this.hass.themes,this._config.theme)}async _handleViewChanged(e){this._startDate=e.detail.start,this._endDate=e.detail.end,this._eventsLoaded=!1,await this._unsubscribeAll(),this._subscribeCalendarEvents()}_subscribeCalendarEvents(){this.hass&&this._startDate&&this._endDate&&(this._error=void 0,this._calendars.forEach(e=>{const t=(0,g.iO)(this.hass,e.entity_id,this._startDate,this._endDate,t=>{this._handleCalendarUpdate(e,t)});this._unsubs[e.entity_id]=t}))}_handleCalendarUpdate(e,t){if(this._events=this._events.filter(t=>t.calendar!==e.entity_id),null===t.events)return this._errorCalendars.includes(e.entity_id)||(this._errorCalendars=[...this._errorCalendars,e.entity_id]),void(this._error=`${this.hass.localize("ui.components.calendar.event_retrieval_error")}`);this._errorCalendars=this._errorCalendars.filter(t=>t!==e.entity_id),0===this._errorCalendars.length&&(this._error=void 0);const i=t.events.map(t=>(0,g.TK)(t,e)).filter(e=>null!==e);this._events=[...this._events,...i],this._eventsLoaded||this.updateComplete.then(()=>{requestAnimationFrame(()=>{this._eventsLoaded=!0})})}async _unsubscribeAll(){await Promise.all(Object.values(this._unsubs).map(e=>e.then(e=>e()).catch(()=>{}))),this._unsubs={}}_measureCard(){const e=this.shadowRoot.querySelector("ha-card");e&&(this._narrow=e.offsetWidth<870)}async _attachObserver(){this._resizeObserver||(this._resizeObserver=new ResizeObserver((0,_.s)(()=>this._measureCard(),250,!1)));const e=this.shadowRoot.querySelector("ha-card");e&&this._resizeObserver.observe(e)}constructor(...e){super(...e),this._events=[],this._calendars=[],this._narrow=!1,this._error=void 0,this._errorCalendars=[],this._eventsLoaded=!1,this._unsubs={}}}$.styles=(0,n.AH)(x||(x=z`ha-card{position:relative;padding:0 8px 8px;box-sizing:border-box;height:100%;overflow:hidden}.header{color:var(--ha-card-header-color,var(--primary-text-color));font-size:var(--ha-card-header-font-size, var(--ha-font-size-2xl));line-height:var(--ha-line-height-condensed);padding-top:16px;padding-left:8px;padding-inline-start:8px;direction:var(--direction);white-space:nowrap;text-overflow:ellipsis}ha-full-calendar{--calendar-height:400px;display:block;width:100%;height:var(--calendar-height);min-height:var(--calendar-height)}ha-full-calendar.loading{visibility:hidden}ha-full-calendar.is-grid,ha-full-calendar.is-panel{--calendar-height:calc(100% - 16px)}ha-full-calendar.is-grid.has-title,ha-full-calendar.is-panel.has-title{--calendar-height:calc( 100% - var(--ha-card-header-font-size, var(--ha-font-size-2xl)) - 22px )}.loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--card-background-color,var(--ha-card-background));z-index:1}`)),(0,a.Cg)([(0,h.MZ)({attribute:!1})],$.prototype,"hass",void 0),(0,a.Cg)([(0,h.MZ)({attribute:!1})],$.prototype,"layout",void 0),(0,a.Cg)([(0,h.wk)()],$.prototype,"_events",void 0),(0,a.Cg)([(0,h.wk)()],$.prototype,"_config",void 0),(0,a.Cg)([(0,h.wk)()],$.prototype,"_calendars",void 0),(0,a.Cg)([(0,h.wk)()],$.prototype,"_narrow",void 0),(0,a.Cg)([(0,h.wk)()],$.prototype,"_error",void 0),(0,a.Cg)([(0,h.wk)()],$.prototype,"_errorCalendars",void 0),(0,a.Cg)([(0,h.wk)()],$.prototype,"_entityRegistry",void 0),(0,a.Cg)([(0,h.wk)()],$.prototype,"_eventsLoaded",void 0),$=(0,a.Cg)([(0,h.EM)("hui-calendar-card")],$),s()}catch(w){s(w)}})}}]);