@tsparticles/interaction-particles-repulse
Version:
tsParticles repulse particles interaction
2 lines • 2.52 kB
JavaScript
/*! For license information please see tsparticles.interaction.particles.repulse.min.js.LICENSE.txt */
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("@tsparticles/engine"));else if("function"==typeof define&&define.amd)define(["@tsparticles/engine"],t);else{var o="object"==typeof exports?t(require("@tsparticles/engine")):t(e.window);for(var r in o)("object"==typeof exports?exports:e)[r]=o[r]}}(this,(e=>(()=>{var t={303:t=>{t.exports=e}},o={};function r(e){var s=o[e];if(void 0!==s)return s.exports;var n=o[e]={exports:{}};return t[e](n,n.exports,r),n.exports}r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};r.r(s),r.d(s,{loadParticlesRepulseInteraction:()=>c});var n=r(303);class i extends n.ValueWithRandom{constructor(){super(),this.enabled=!1,this.distance=1,this.duration=1,this.factor=1,this.speed=1}load(e){super.load(e),(0,n.isNull)(e)||(void 0!==e.enabled&&(this.enabled=e.enabled),void 0!==e.distance&&(this.distance=(0,n.setRangeValue)(e.distance)),void 0!==e.duration&&(this.duration=(0,n.setRangeValue)(e.duration)),void 0!==e.factor&&(this.factor=(0,n.setRangeValue)(e.factor)),void 0!==e.speed&&(this.speed=(0,n.setRangeValue)(e.speed)))}}class a extends n.ParticlesInteractorBase{constructor(e){super(e)}clear(){}init(){}interact(e){const t=this.container;if(!e.repulse){const o=e.options.repulse;if(!o)return;e.repulse={distance:(0,n.getRangeValue)(o.distance)*t.retina.pixelRatio,speed:(0,n.getRangeValue)(o.speed),factor:(0,n.getRangeValue)(o.factor)}}const o=e.getPosition(),r=t.particles.quadTree.queryCircle(o,e.repulse.distance);for(const t of r){if(e===t||t.destroyed)continue;const r=t.getPosition(),{dx:s,dy:i,distance:a}=(0,n.getDistances)(r,o),c=e.repulse.speed*e.repulse.factor;if(a>0){const o=(0,n.clamp)((1-Math.pow(a/e.repulse.distance,2))*c,0,c),r=n.Vector.create(s/a*o,i/a*o);t.position.addTo(r)}else{const e=n.Vector.create(c,c);t.position.addTo(e)}}}isEnabled(e){return e.options.repulse?.enabled??!1}loadParticlesOptions(e,...t){e.repulse||(e.repulse=new i);for(const o of t)e.repulse.load(o?.repulse)}reset(){}}async function c(e,t=!0){e.checkVersion("3.9.1"),await e.addInteractor("particlesRepulse",(e=>Promise.resolve(new a(e))),t)}return s})()));