iobroker.lovelace
Version:
With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI
1 lines • 3.27 kB
JavaScript
export const __rspack_esm_id=57252;export const __rspack_esm_ids=[57252];export const __webpack_modules__={98927(i,t,e){e.d(t,{LinkInstance:()=>o});e(18111),e(61701),e(45367),e(92731),e(17642),e(58004),e(33853),e(45876),e(32475),e(15024),e(31698);var n=e(61688);function s(i,t){const e=(s=i.map(i=>i.id),[...s].sort((i,t)=>i-t).join("_"));var s;let o=t.get(e);return void 0===o&&(o=(0,n.G0i)(),t.set(e,o)),o}class o{drawParticle(i,t){const{links:e,options:s}=t;if(!e?.length||!s.links)return;const o=s.links,l=t.retina.linksWidth??0,a=t.getPosition(),r=t.options.twinkle?.links,c=o.triangles.enable,h=c?new Set(e.map(i=>i.destination.id)):null,g=i.globalAlpha;let _="",d=-1,p=-1,k=!1;const y=()=>{k&&(i.stroke(),k=!1)};for(const g of e){if(o.frequency<1&&this._getLinkFrequency(t,g.destination)>o.frequency)continue;const e=g.destination.getPosition();if(c&&!g.isWarped&&h&&(y(),this._drawTriangles(s,t,g,h,a,e,i)),g.opacity<=0||l<=0)continue;if(!o.enable)continue;let u=g.opacity,f=g.color;const x=r?.enable&&(0,n.G0i)()<r.frequency?(0,n.BN0)(this._pluginManager,r.color):void 0;if(r&&x&&(f=x,u=(0,n.VGA)(r.opacity)),!f){const i=void 0!==o.id?this._container.particles.linksColors.get(o.id):this._container.particles.linksColor;f=(0,n._hh)(t,g.destination,i)}if(!f)continue;const b=this._getCachedStyle(f);if(b===_&&l===d&&u===p||(y(),i.strokeStyle=b,i.lineWidth=l,i.globalAlpha=u,_=b,d=l,p=u,i.beginPath(),k=!0),g.isWarped){const t=this._container.canvas.size,s=e.x-a.x,o=e.y-a.y;let l=n.boI.x,r=n.boI.y;Math.abs(s)>t.width*n.MXx&&(l=s>0?-t.width:t.width),Math.abs(o)>t.height*n.MXx&&(r=o>0?-t.height:t.height),i.moveTo(a.x,a.y),i.lineTo(e.x+l,e.y+r),i.moveTo(a.x-l,a.y-r),i.lineTo(e.x,e.y)}else i.moveTo(a.x,a.y),i.lineTo(e.x,e.y)}y(),i.globalAlpha=g}init(){return this._freqs.links.clear(),this._freqs.triangles.clear(),this._colorCache.clear(),Promise.resolve()}particleCreated(i){if(i.links=[],!i.options.links)return;i.linksDistance=i.options.links.distance,i.linksWidth=i.options.links.width;const t=this._container.retina.pixelRatio;i.retina.linksDistance=i.linksDistance*t,i.retina.linksWidth=i.linksWidth*t}particleDestroyed(i){i.links=[]}_drawTriangles(i,t,e,s,o,l,a){const r=e.destination,c=i.links?.triangles;if(!c?.enable||!r.options.links?.triangles.enable)return;const h=r.links;if(h?.length)for(const g of h){if(g.isWarped||this._getLinkFrequency(r,g.destination)>r.options.links.frequency||!s.has(g.destination.id))continue;const h=g.destination;if(this._getTriangleFrequency(t,r,h)>(i.links?.triangles.frequency??0))continue;const _=c.opacity??(e.opacity+g.opacity)*n.MXx,d=(0,n.BN0)(this._pluginManager,c.color)??e.color;if(!d||_<=0)continue;const p=h.getPosition();a.save(),a.fillStyle=this._getCachedStyle(d),a.globalAlpha=_,a.beginPath(),a.moveTo(o.x,o.y),a.lineTo(l.x,l.y),a.lineTo(p.x,p.y),a.closePath(),a.fill(),a.restore()}}_getCachedStyle(i){const t=`${i.r},${i.g},${i.b}`;let e=this._colorCache.get(t);return e||(e=(0,n.xxz)(i,this._container.hdr),this._colorCache.set(t,e)),e}_getLinkFrequency(i,t){return s([i,t],this._freqs.links)}_getTriangleFrequency(i,t,e){return s([i,t,e],this._freqs.triangles)}constructor(i,t){this._colorCache=new Map,this._pluginManager=i,this._container=t,this._freqs={links:new Map,triangles:new Map}}}}};