iobroker.lovelace
Version:
With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI
1 lines • 9.29 kB
JavaScript
export const __rspack_esm_id=87510;export const __rspack_esm_ids=[87510];export const __webpack_modules__={1973(t,e,i){i.d(e,{InteractivityPluginInstance:()=>v});i(44114),i(45367),i(92731);var n=i(61688);const s="pointerdown",a="pointerup",o="pointerleave",r="pointermove",c="touchstart",h="touchend",l="touchmove",d="touchcancel";i(18111),i(22489);var u=i(92773);class _{addListeners(){this._manageListeners(!0)}init(){this._clickPositionPlugins.length=0;for(const t of this._container.plugins.filter(t=>!!t.clickPositionValid))this._clickPositionPlugins.push(t)}removeListeners(){this._manageListeners(!1)}constructor(t,e){this._canPush=!0,this._doMouseTouchClick=t=>{const e=this._container,i=this._interactionManager,s=e.actualOptions;if(this._canPush){const t=i.interactivityData.mouse,e=t.position;if(!e)return;t.clickPosition={...e},t.clickTime=performance.now();const a=s.interactivity?.events.onClick;if(!a?.mode)return;(0,n.wJ2)(a.mode,t=>{i.handleClickMode(t)})}"touchend"===t.type&&setTimeout(()=>{this._mouseTouchFinish()},500)},this._handleVisibilityChange=()=>{this._mouseTouchFinish()},this._manageInteractivityListeners=t=>{const e=this._handlers,i=this._container,u=this._interactionManager,_=i.actualOptions,p=u.interactivityData.element;if(!p)return;const f=p,g=i.canvas;g.setPointerEvents(f===g.domElement?"initial":"none"),(!t||_.interactivity?.events.onHover.enable||_.interactivity?.events.onClick.enable)&&((0,n.KpY)(p,r,e.mouseMove,t),(0,n.KpY)(p,c,e.touchStart,t),(0,n.KpY)(p,l,e.touchMove,t),t?_.interactivity?.events.onClick.enable?((0,n.KpY)(p,h,e.touchEndClick,t),(0,n.KpY)(p,a,e.mouseUp,t),(0,n.KpY)(p,s,e.mouseDown,t)):(0,n.KpY)(p,h,e.touchEnd,t):((0,n.KpY)(p,h,e.touchEndClick,t),(0,n.KpY)(p,a,e.mouseUp,t),(0,n.KpY)(p,s,e.mouseDown,t),(0,n.KpY)(p,h,e.touchEnd,t)),(0,n.KpY)(p,o,e.mouseLeave,t),(0,n.KpY)(p,d,e.touchCancel,t))},this._manageListeners=t=>{const e=this._handlers,i=this._container,s=this._interactionManager,a=i.actualOptions,o=a.interactivity?.detectsOn,r=i.canvas.domElement;o===u.h.window?s.interactivityData.element=(0,n.T5G)():o===u.h.parent&&r?s.interactivityData.element=r.parentElement??r.parentNode:s.interactivityData.element=r,this._manageInteractivityListeners(t),(0,n.KpY)(document,n.nKi,e.visibilityChange,t,!1)},this._mouseDown=()=>{const{interactivityData:t}=this._interactionManager,{mouse:e}=t;e.clicking=!0,e.downPosition=e.position},this._mouseTouchClick=t=>{const e=this._container,i=this._interactionManager,n=e.actualOptions,{mouse:s}=i.interactivityData;s.inside=!0;let a=!1;const o=s.position;if(o&&n.interactivity?.events.onClick.enable){for(const t of this._clickPositionPlugins)if(a=t.clickPositionValid?.(o)??!1,a)break;a||this._doMouseTouchClick(t),s.clicking=!1}},this._mouseTouchFinish=()=>{const{interactivityData:t}=this._interactionManager,{mouse:e}=t;delete e.position,delete e.clickPosition,delete e.downPosition,t.status=o,e.inside=!1,e.clicking=!1},this._mouseTouchMove=t=>{const e=this._container,i=this._interactionManager,s=e.actualOptions,a=i.interactivityData,o=e.canvas.domElement;if(!a.element)return;let c;if(a.mouse.inside=!0,t.type.startsWith("pointer")){this._canPush=!0;const e=t;if(a.element===(0,n.T5G)()){if(o){const t=o.getBoundingClientRect();c={x:e.clientX-t.left,y:e.clientY-t.top}}}else if(s.interactivity?.detectsOn===u.h.parent){const t=e.target,i=e.currentTarget;if(o){const s=t.getBoundingClientRect(),a=i.getBoundingClientRect(),r=o.getBoundingClientRect();c={x:e.offsetX+n.gdl*s.left-(a.left+r.left),y:e.offsetY+n.gdl*s.top-(a.top+r.top)}}else c={x:e.offsetX,y:e.offsetY}}else e.target===o&&(c={x:e.offsetX,y:e.offsetY})}else if(this._canPush="touchmove"!==t.type,o){const e=t,i=e.touches[e.touches.length-n.K3],s=o.getBoundingClientRect();if(!i)return;c={x:i.clientX-s.left,y:i.clientY-s.top}}const h=e.retina.pixelRatio;c&&(c.x*=h,c.y*=h),a.mouse.position=c,a.status=r},this._touchEnd=t=>{const e=t,i=Array.from(e.changedTouches);for(const t of i)this._touches.delete(t.identifier);this._mouseTouchFinish()},this._touchEndClick=t=>{const e=t,i=Array.from(e.changedTouches);for(const t of i)this._touches.delete(t.identifier);this._mouseTouchClick(t)},this._touchStart=t=>{const e=t,i=Array.from(e.changedTouches);for(const t of i)this._touches.set(t.identifier,performance.now());this._mouseTouchMove(t)},this._container=t,this._clickPositionPlugins=[],this._interactionManager=e,this._touches=new Map,this._handlers={mouseDown:()=>{this._mouseDown()},mouseLeave:()=>{this._mouseTouchFinish()},mouseMove:t=>{this._mouseTouchMove(t)},mouseUp:t=>{this._mouseTouchClick(t)},touchStart:t=>{this._touchStart(t)},touchMove:t=>{this._mouseTouchMove(t)},touchEnd:t=>{this._touchEnd(t)},touchCancel:t=>{this._touchEnd(t)},touchEndClick:t=>{this._touchEndClick(t)},visibilityChange:()=>{this._handleVisibilityChange()}}}}var p=i(57970);class f{addClickHandler(t){const{container:e,interactivityData:i}=this;if(e.destroyed)return;const n=i.element;if(!n)return;const s=(i,n,s)=>{if(e.destroyed)return;const a=e.retina.pixelRatio,o={x:n.x*a,y:n.y*a},r=e.particles.grid.queryCircle(o,s*a);t(i,r)};let a=!1,o=!1;this._clickHandlers.set("click",t=>{if(e.destroyed)return;const i=t,n={x:i.offsetX,y:i.offsetY};s(t,n,1)}),this._clickHandlers.set(c,()=>{e.destroyed||(a=!0,o=!1)}),this._clickHandlers.set(l,()=>{e.destroyed||(o=!0)}),this._clickHandlers.set(h,t=>{if(!e.destroyed){if(a&&!o){const i=t,n=i.touches[i.touches.length-1];if(!n)return;const a=e.canvas.domElement,o=a?a.getBoundingClientRect():void 0,r={x:n.clientX-(o?o.left:0),y:n.clientY-(o?o.top:0)};s(t,r,Math.max(n.radiusX,n.radiusY))}a=!1,o=!1}}),this._clickHandlers.set(d,()=>{e.destroyed||(a=!1,o=!1)});for(const[t,e]of this._clickHandlers)n.addEventListener(t,e)}addListeners(){this._eventListeners.addListeners()}clearClickHandlers(){const{container:t,interactivityData:e}=this;if(!t.destroyed){for(const[t,i]of this._clickHandlers)e.element?.removeEventListener(t,i);this._clickHandlers.clear()}}externalInteract(t){for(const e of this._externalInteractors){const{interactivityData:i}=this;e.isEnabled(i)&&e.interact(i,t)}}handleClickMode(t){if(this.container.destroyed)return;const{interactivityData:e}=this;for(const i of this._externalInteractors)i.handleClickMode?.(t,e)}init(){this._eventListeners.init();for(const t of this._interactors){switch(t.type){case p.e.external:this._externalInteractors.push(t);break;case p.e.particles:this._particleInteractors.push(t)}t.init()}}async initInteractors(){const t=await(this._pluginManager.getInteractors?.(this.container,!0));t&&(this._interactors=t,this._externalInteractors=[],this._particleInteractors=[])}particlesInteract(t,e){const{interactivityData:i}=this;for(const i of this._externalInteractors)i.clear(t,e);for(const n of this._particleInteractors)n.isEnabled(t,i)&&n.interact(t,i,e)}removeListeners(){this._eventListeners.removeListeners()}reset(t){const{interactivityData:e}=this;for(const i of this._externalInteractors)i.isEnabled(e)&&i.reset(e,t);for(const i of this._particleInteractors)i.isEnabled(t,e)&&i.reset(e,t)}startObserving(){const{interactivityData:t}=this;t.element instanceof HTMLElement&&this._intersectionObserver&&this._intersectionObserver.observe(t.element)}stopObserving(){const{interactivityData:t}=this;t.element instanceof HTMLElement&&this._intersectionObserver&&this._intersectionObserver.unobserve(t.element)}updateMaxDistance(){let t=0;for(const e of this._interactors)e.maxDistance>t&&(t=e.maxDistance);const e=this.container;e.particles.grid.setCellSize(t*e.retina.pixelRatio)}constructor(t,e){this._intersectionManager=t=>{const{container:e}=this;if(!e.destroyed&&e.actualOptions.pauseOnOutsideViewport)for(const i of t)i.target===this.interactivityData.element&&(i.isIntersecting?e.play():e.pause())},this.container=e,this._pluginManager=t,this._interactors=[],this._externalInteractors=[],this._particleInteractors=[],this._clickHandlers=new Map,this._eventListeners=new _(e,this),this.interactivityData={mouse:{clicking:!1,inside:!1}},this._intersectionObserver=(0,n.BRq)(t=>{this._intersectionManager(t)})}}var g=i(39121);class v{addClickHandler(t){this.interactionManager.addClickHandler(t)}clearClickHandlers(){this.interactionManager.clearClickHandlers()}destroy(){this.clearClickHandlers(),this._pluginManager.interactors?.delete(this._container)}particleCreated(t){const e=t,i=new g.k(this._pluginManager,this._container);i.load(this._container.actualOptions.interactivity),i.load(e.options.interactivity),e.interactivity=i}particleReset(t){this.interactionManager.reset(t)}postParticleUpdate(t,e){this.interactionManager.particlesInteract(t,e)}postUpdate(t){this.interactionManager.externalInteract(t),this.interactionManager.updateMaxDistance()}async preInit(){await this.interactionManager.initInteractors(),this.interactionManager.init()}async redrawInit(){await this.interactionManager.initInteractors(),this.interactionManager.init()}start(){return this.interactionManager.addListeners(),this.interactionManager.startObserving(),Promise.resolve()}stop(){this.interactionManager.removeListeners(),this.interactionManager.stopObserving()}constructor(t,e){this._container=e,this._pluginManager=t,this.interactionManager=new f(t,e),this._container.addClickHandler=t=>{this.interactionManager.addClickHandler(t)}}}}};