@tsparticles/interaction-external-grab
Version:
tsParticles grab external interaction
2 lines (1 loc) • 6.01 kB
JavaScript
!function(t){t.__tsParticlesInternals=t.__tsParticlesInternals||{},t.__tsParticlesInternals.bundles=t.__tsParticlesInternals.bundles||{},t.__tsParticlesInternals.effects=t.__tsParticlesInternals.effects||{},t.__tsParticlesInternals.engine=t.__tsParticlesInternals.engine||{},t.__tsParticlesInternals.interactions=t.__tsParticlesInternals.interactions||{},t.__tsParticlesInternals.palettes=t.__tsParticlesInternals.palettes||{},t.__tsParticlesInternals.paths=t.__tsParticlesInternals.paths||{},t.__tsParticlesInternals.plugins=t.__tsParticlesInternals.plugins||{},t.__tsParticlesInternals.plugins=t.__tsParticlesInternals.plugins||{},t.__tsParticlesInternals.plugins.emittersShapes=t.__tsParticlesInternals.plugins.emittersShapes||{},t.__tsParticlesInternals.presets=t.__tsParticlesInternals.presets||{},t.__tsParticlesInternals.shapes=t.__tsParticlesInternals.shapes||{},t.__tsParticlesInternals.updaters=t.__tsParticlesInternals.updaters||{},t.__tsParticlesInternals.utils=t.__tsParticlesInternals.utils||{},t.__tsParticlesInternals.canvas=t.__tsParticlesInternals.canvas||{},t.__tsParticlesInternals.canvas=t.__tsParticlesInternals.canvas||{},t.__tsParticlesInternals.canvas.utils=t.__tsParticlesInternals.canvas.utils||{},t.__tsParticlesInternals.path=t.__tsParticlesInternals.path||{},t.__tsParticlesInternals.path=t.__tsParticlesInternals.path||{},t.__tsParticlesInternals.path.utils=t.__tsParticlesInternals.path.utils||{};var s="undefined"!=typeof Proxy?function(t){return new Proxy(t,{get:function(t,s){return s in t||(t[s]={}),t[s]}})}:function(t){return t};t.__tsParticlesInternals.bundles=s(t.__tsParticlesInternals.bundles),t.__tsParticlesInternals.effects=s(t.__tsParticlesInternals.effects),t.__tsParticlesInternals.interactions=s(t.__tsParticlesInternals.interactions),t.__tsParticlesInternals.palettes=s(t.__tsParticlesInternals.palettes),t.__tsParticlesInternals.paths=s(t.__tsParticlesInternals.paths),t.__tsParticlesInternals.plugins=s(t.__tsParticlesInternals.plugins),t.__tsParticlesInternals.plugins.emittersShapes=s(t.__tsParticlesInternals.plugins.emittersShapes),t.__tsParticlesInternals.presets=s(t.__tsParticlesInternals.presets),t.__tsParticlesInternals.shapes=s(t.__tsParticlesInternals.shapes),t.__tsParticlesInternals.updaters=s(t.__tsParticlesInternals.updaters),t.__tsParticlesInternals.utils=s(t.__tsParticlesInternals.utils),t.__tsParticlesInternals.canvas=s(t.__tsParticlesInternals.canvas),t.__tsParticlesInternals.path=s(t.__tsParticlesInternals.path),t.tsparticlesInternalExports=t.tsparticlesInternalExports||{}}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:this),function(t,s){"object"==typeof exports&&"undefined"!=typeof module?s(exports,require("@tsparticles/plugin-interactivity"),require("@tsparticles/engine"),require("@tsparticles/canvas-utils")):"function"==typeof define&&define.amd?define(["exports","@tsparticles/plugin-interactivity","@tsparticles/engine","@tsparticles/canvas-utils"],s):s(((t="undefined"!=typeof globalThis?globalThis:t||self).__tsParticlesInternals=t.__tsParticlesInternals||{},t.__tsParticlesInternals.interactions=t.__tsParticlesInternals.interactions||{},t.__tsParticlesInternals.interactions.externalGrab=t.__tsParticlesInternals.interactions.externalGrab||{}),t.__tsParticlesInternals.plugins.interactivity,t.__tsParticlesInternals.engine,t.__tsParticlesInternals.canvas.utils)}(this,function(t,s,e,n){"use strict";class a{blink;color;consent;opacity;constructor(){this.blink=!1,this.consent=!1,this.opacity=1}load(t){e.isNull(t)||(void 0!==t.blink&&(this.blink=t.blink),void 0!==t.color&&(this.color=e.OptionsColor.create(this.color,t.color)),void 0!==t.consent&&(this.consent=t.consent),void 0!==t.opacity&&(this.opacity=t.opacity))}}class r{distance;links;constructor(){this.distance=100,this.links=new a}load(t){e.isNull(t)||(void 0!==t.distance&&(this.distance=t.distance),this.links.load(t.links))}}function i(t,s,a,r,i){t.canvas.render.draw(l=>{const c=s.getPosition();!function(t,s,a,r,i,l,c=!1){n.drawLine(t,a,r),t.strokeStyle=e.getStyleFromRgb(i,c,l),t.lineWidth=s,t.stroke()}(l,s.retina.linksWidth??0,c,i,a,r,t.hdr)})}class l extends s.ExternalInteractorBase{#t;#s;constructor(t,s){super(s),this.#s=t,this.#t=0}get maxDistance(){return this.#t}clear(){}init(){const t=this.container,s=t.actualOptions.interactivity?.modes.grab;s&&(this.#t=s.distance,t.retina.grabModeDistance=s.distance*t.retina.pixelRatio)}interact(t){const n=this.container,a=n.actualOptions.interactivity;if(!a?.modes.grab||!a.events.onHover.enable||t.status!==s.mouseMoveEvent)return;const r=t.mouse.position;if(!r)return;const l=n.retina.grabModeDistance;if(!l||l<0)return;const c=n.particles.grid.queryCircle(r,l,s=>this.isEnabled(t,s));for(const t of c){const s=t.getPosition(),c=e.getDistance(s,r);if(c>l)continue;const o=a.modes.grab.links,_=o.opacity,p=_-c*_/l;if(p<=0)continue;const I=o.color??t.options.links?.color;if(!n.particles.grabLineColor&&I){const t=a.modes.grab.links;n.particles.grabLineColor=e.getLinkRandomColor(this.#s,I,t.blink,t.consent)}const u=e.getLinkColor(t,void 0,n.particles.grabLineColor);u&&i(n,t,u,p,r)}}isEnabled(t,s){const n=this.container,a=t.mouse,r=(s?.interactivity??n.actualOptions.interactivity)?.events;return!!r?.onHover.enable&&!!a.position&&e.isInArray("grab",r.onHover.mode)}loadModeOptions(t,...s){t.grab??=new r;for(const e of s)t.grab.load(e?.grab)}reset(){}}async function c(t){t.checkVersion("4.1.0"),await t.pluginManager.register(t=>{s.ensureInteractivityPluginLoaded(t),t.pluginManager.addInteractor?.("externalGrab",s=>Promise.resolve(new l(t.pluginManager,s)))})}const o=globalThis;o.__tsParticlesInternals=o.__tsParticlesInternals??{},o.loadExternalGrabInteraction=c,t.Grab=r,t.GrabLinks=a,t.loadExternalGrabInteraction=c}),Object.assign(globalThis.window||globalThis,{loadExternalGrabInteraction:(globalThis.__tsParticlesInternals.interactions.externalGrab||{}).loadExternalGrabInteraction}),delete(globalThis.window||globalThis).tsparticlesInternalExports;