iobroker.lovelace
Version:
With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI
1 lines • 9.86 kB
JavaScript
"use strict";(self.rspackChunkhome_assistant_frontend=self.rspackChunkhome_assistant_frontend||[]).push([[87510],{1973:function(t,e,i){i.d(e,{InteractivityPluginInstance:function(){return g}});i(3362),i(44114),i(45367),i(92731),i(62953);var n=i(61688);const s="pointerdown",a="pointerup",o="pointerleave",r="pointermove",c="touchstart",l="touchend",h="touchmove",u="touchcancel";i(18111),i(22489);var d=i(92773);class v{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){var a;const t=i.interactivityData.mouse,e=t.position;if(!e)return;t.clickPosition=Object.assign({},e),t.clickTime=performance.now();const o=null===(a=s.interactivity)||void 0===a?void 0:a.events.onClick;if(null==o||!o.mode)return;(0,n.wJ2)(o.mode,t=>{i.handleClickMode(t)})}"touchend"===t.type&&setTimeout(()=>{this._mouseTouchFinish()},500)},this._handleVisibilityChange=()=>{this._mouseTouchFinish()},this._manageInteractivityListeners=t=>{var e,i;const d=this._handlers,v=this._container,_=this._interactionManager,f=v.actualOptions,p=_.interactivityData.element;if(!p)return;const g=p,m=v.canvas;if(m.setPointerEvents(g===m.domElement?"initial":"none"),!t||null!==(e=f.interactivity)&&void 0!==e&&e.events.onHover.enable||null!==(i=f.interactivity)&&void 0!==i&&i.events.onClick.enable){var y;if((0,n.KpY)(p,r,d.mouseMove,t),(0,n.KpY)(p,c,d.touchStart,t),(0,n.KpY)(p,h,d.touchMove,t),t)null!==(y=f.interactivity)&&void 0!==y&&y.events.onClick.enable?((0,n.KpY)(p,l,d.touchEndClick,t),(0,n.KpY)(p,a,d.mouseUp,t),(0,n.KpY)(p,s,d.mouseDown,t)):(0,n.KpY)(p,l,d.touchEnd,t);else(0,n.KpY)(p,l,d.touchEndClick,t),(0,n.KpY)(p,a,d.mouseUp,t),(0,n.KpY)(p,s,d.mouseDown,t),(0,n.KpY)(p,l,d.touchEnd,t);(0,n.KpY)(p,o,d.mouseLeave,t),(0,n.KpY)(p,u,d.touchCancel,t)}},this._manageListeners=t=>{var e;const i=this._handlers,s=this._container,a=this._interactionManager,o=null===(e=s.actualOptions.interactivity)||void 0===e?void 0:e.detectsOn,r=s.canvas.domElement;if(o===d.h.window)a.interactivityData.element=(0,n.T5G)();else if(o===d.h.parent&&r){var c;a.interactivityData.element=null!==(c=r.parentElement)&&void 0!==c?c:r.parentNode}else a.interactivityData.element=r;this._manageInteractivityListeners(t),(0,n.KpY)(document,n.nKi,i.visibilityChange,t,!1)},this._mouseDown=()=>{const{interactivityData:t}=this._interactionManager,{mouse:e}=t;e.clicking=!0,e.downPosition=e.position},this._mouseTouchClick=t=>{var e;const i=this._container,n=this._interactionManager,s=i.actualOptions,{mouse:a}=n.interactivityData;a.inside=!0;let o=!1;const r=a.position;if(r&&null!==(e=s.interactivity)&&void 0!==e&&e.events.onClick.enable){for(const t of this._clickPositionPlugins){var c,l;if(o=null!==(c=null===(l=t.clickPositionValid)||void 0===l?void 0:l.call(t,r))&&void 0!==c&&c,o)break}o||this._doMouseTouchClick(t),a.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")){var l;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((null===(l=s.interactivity)||void 0===l?void 0:l.detectsOn)===d.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 n of i)this._touches.delete(n.identifier);this._mouseTouchFinish()},this._touchEndClick=t=>{const e=t,i=Array.from(e.changedTouches);for(const n of i)this._touches.delete(n.identifier);this._mouseTouchClick(t)},this._touchStart=t=>{const e=t,i=Array.from(e.changedTouches);for(const n of i)this._touches.set(n.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 _=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(h,()=>{e.destroyed||(o=!0)}),this._clickHandlers.set(l,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(u,()=>{e.destroyed||(a=!1,o=!1)});for(const[r,c]of this._clickHandlers)n.addEventListener(r,c)}addListeners(){this._eventListeners.addListeners()}clearClickHandlers(){const{container:t,interactivityData:e}=this;if(!t.destroyed){for(const[t,n]of this._clickHandlers){var i;null===(i=e.element)||void 0===i||i.removeEventListener(t,n)}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 n of this._externalInteractors){var i;null===(i=n.handleClickMode)||void 0===i||i.call(n,t,e)}}init(){this._eventListeners.init();for(const t of this._interactors){switch(t.type){case _.e.external:this._externalInteractors.push(t);break;case _.e.particles:this._particleInteractors.push(t)}t.init()}}async initInteractors(){var t,e;const i=await(null===(t=(e=this._pluginManager).getInteractors)||void 0===t?void 0:t.call(e,this.container,!0));i&&(this._interactors=i,this._externalInteractors=[],this._particleInteractors=[])}particlesInteract(t,e){const{interactivityData:i}=this;for(const n of this._externalInteractors)n.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 i of this._interactors)i.maxDistance>t&&(t=i.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 v(e,this),this.interactivityData={mouse:{clicking:!1,inside:!1}},this._intersectionObserver=(0,n.BRq)(t=>{this._intersectionManager(t)})}}var p=i(39121);class g{addClickHandler(t){this.interactionManager.addClickHandler(t)}clearClickHandlers(){this.interactionManager.clearClickHandlers()}destroy(){var t;this.clearClickHandlers(),null===(t=this._pluginManager.interactors)||void 0===t||t.delete(this._container)}particleCreated(t){const e=t,i=new p.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)}}}}}]);