UNPKG

iobroker.lovelace

Version:

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

3 lines 6.89 kB
export const __rspack_esm_id=5012;export const __rspack_esm_ids=[5012];export const __webpack_modules__={90433(e,t,i){i.d(t,{Vy:()=>a,fI:()=>n,ux:()=>o});var s=i(22786),r=i(79468);function a(e,t){const i=e%54+1;return t.getPropertyValue(`--color-${i}`)}function n(e,t){const i=t.getPropertyValue(`--graph-color-${e+1}`)||a(e,t);return(0,r.RQ)(i)}const o=(0,s.A)(e=>Array.from({length:54},(t,i)=>n(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(e,t,i){i.a(e,async function(e,s){try{i.r(t),i.d(t,{HuiCalendarCard:()=>w});i(74423),i(18111),i(22489),i(7588),i(61701),i(45367),i(92731);var r=i(62826),a=i(5124),n=i(6412),o=i(22441),h=i(78870),d=i(90433),l=i(42372),c=i(9899),_=(i(76776),i(65829)),g=i(55156),u=i(59241),p=i(54706),y=i(63556),v=i(13632),f=i(85979),b=e([_,y,f]);[_,y,f]=b.then?(await b)():b;class w extends((0,p.E)(a.WF)){static async getConfigElement(){return await Promise.all([i.e(1535),i.e(64859)]).then(i.bind(i,6534)),document.createElement("hui-calendar-card-editor")}static getStubConfig(e,t,i){return{entities:(0,v.B)(e,2,t,i,["calendar"])}}setConfig(e){if(!e.entities?.length)throw new Error("Entities must be specified");if(!Array.isArray(e.entities))throw new Error("Entities need to be an array");this._config?.entities!==e.entities&&this._unsubscribeAll(),this._config={initial_view:"dayGridMonth",...e}}willUpdate(e){if(super.willUpdate(e),this._entityRegistry&&((e.has("_config")||e.has("_entityRegistry"))&&(this._eventsLoaded=!1),!this.hasUpdated||e.has("_config")&&this._config?.entities||e.has("_entityRegistry"))){const e=getComputedStyle(this),t=new Map(this._entityRegistry?.map(e=>[e.entity_id,e.options])??[]);this._config?.entities&&(this._calendars=this._config.entities.map((i,s)=>{const r=t.get(i)?.calendar?.color;let a;return a=r&&(0,h.dc)(r)?(0,h.MP)(r):(0,d.Vy)(s,e),{entity_id:i,backgroundColor:a}}))}}getCardSize(){return 12}getGridOptions(){return{rows:6,columns:12,min_columns:4,min_rows:4}}hassSubscribe(){return[(0,u.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 a.s6;const e=!this._entityRegistry||!this._eventsLoaded;return a.qy` <ha-card> ${this._config.title?a.qy`<div class="header">${this._config.title}</div>`:a.s6} <ha-full-calendar class="${(0,n.H)({"is-grid":"grid"===this.layout,"is-panel":"panel"===this.layout,"has-title":!!this._config.title,loading:e})}" .narrow="${this._narrow}" .events="${this._events}" .calendars="${this._calendars}" .hass="${this.hass}" .views="${["dayGridMonth","dayGridDay","listWeek"]}" .initialView="${this._config.initial_view}" .error="${this._error}" @view-changed="${this._handleViewChanged}"></ha-full-calendar> ${e?a.qy`<div class="loading"> <ha-spinner></ha-spinner> </div>`:a.s6} </ha-card> `}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,l.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,c.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={}}}w.styles=a.AH`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,r.Cg)([(0,o.MZ)({attribute:!1})],w.prototype,"hass",void 0),(0,r.Cg)([(0,o.MZ)({attribute:!1})],w.prototype,"layout",void 0),(0,r.Cg)([(0,o.wk)()],w.prototype,"_events",void 0),(0,r.Cg)([(0,o.wk)()],w.prototype,"_config",void 0),(0,r.Cg)([(0,o.wk)()],w.prototype,"_calendars",void 0),(0,r.Cg)([(0,o.wk)()],w.prototype,"_narrow",void 0),(0,r.Cg)([(0,o.wk)()],w.prototype,"_error",void 0),(0,r.Cg)([(0,o.wk)()],w.prototype,"_errorCalendars",void 0),(0,r.Cg)([(0,o.wk)()],w.prototype,"_entityRegistry",void 0),(0,r.Cg)([(0,o.wk)()],w.prototype,"_eventsLoaded",void 0),w=(0,r.Cg)([(0,o.EM)("hui-calendar-card")],w),s()}catch(e){s(e)}})}};