UNPKG

@tsparticles/interaction-external-bounce

Version:

tsParticles bounce external interaction

2 lines 3.08 kB
/*! For license information please see tsparticles.interaction.external.bounce.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 n in o)("object"==typeof exports?exports:e)[n]=o[n]}}(this,(e=>(()=>{var t={303:t=>{t.exports=e}},o={};function n(e){var i=o[e];if(void 0!==i)return i.exports;var r=o[e]={exports:{}};return t[e](r,r.exports,n),r.exports}n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};n.r(i),n.d(i,{Bounce:()=>p,loadExternalBounceInteraction:()=>b});var r=n(303);const c=2,s=.5,a=Math.PI*s,l=2,u=10;function f(e,t,o,n,i){const s=e.particles.quadTree.query(n,i);for(const e of s)n instanceof r.Circle?(0,r.circleBounce)((0,r.circleBounceDataFromParticle)(e),{position:t,radius:o,mass:o**c*a,velocity:r.Vector.origin,factor:r.Vector.origin}):n instanceof r.Rectangle&&(0,r.rectBounce)(e,(0,r.calculateBounds)(t,o))}function d(e,t,o,n){(0,r.divModeExecute)(o,t,((t,o)=>function(e,t,o,n){const i=document.querySelectorAll(t);i.length&&i.forEach((t=>{const i=t,c=e.retina.pixelRatio,a={x:(i.offsetLeft+i.offsetWidth*s)*c,y:(i.offsetTop+i.offsetHeight*s)*c},f=i.offsetWidth*s*c,d=u*c,p=o.type===r.DivType.circle?new r.Circle(a.x,a.y,f+d):new r.Rectangle(i.offsetLeft*c-d,i.offsetTop*c-d,i.offsetWidth*c+d*l,i.offsetHeight*c+d*l);n(a,f,p)}))}(e,t,o,((t,o,i)=>f(e,t,o,i,n)))))}class p{constructor(){this.distance=200}load(e){(0,r.isNull)(e)||void 0!==e.distance&&(this.distance=e.distance)}}const v="bounce";class y extends r.ExternalInteractorBase{constructor(e){super(e)}clear(){}init(){const e=this.container,t=e.actualOptions.interactivity.modes.bounce;t&&(e.retina.bounceModeDistance=t.distance*e.retina.pixelRatio)}interact(){const e=this.container,t=e.actualOptions.interactivity.events,o=e.interactivity.status===r.mouseMoveEvent,n=t.onHover.enable,i=t.onHover.mode,c=t.onDiv;o&&n&&(0,r.isInArray)(v,i)?function(e,t){const o=e.retina.pixelRatio,n=u*o,i=e.interactivity.mouse.position,c=e.retina.bounceModeDistance;!c||c<0||!i||f(e,i,c,new r.Circle(i.x,i.y,c+n),t)}(this.container,(e=>this.isEnabled(e))):d(this.container,c,v,(e=>this.isEnabled(e)))}isEnabled(e){const t=this.container,o=t.actualOptions,n=t.interactivity.mouse,i=(e?.interactivity??o.interactivity).events,c=i.onDiv;return!!n.position&&i.onHover.enable&&(0,r.isInArray)(v,i.onHover.mode)||(0,r.isDivModeEnabled)(v,c)}loadModeOptions(e,...t){e.bounce||(e.bounce=new p);for(const o of t)e.bounce.load(o?.bounce)}reset(){}}async function b(e,t=!0){e.checkVersion("3.8.1"),await e.addInteractor("externalBounce",(e=>Promise.resolve(new y(e))),t)}return i})()));