UNPKG

@tsparticles/interaction-external-bounce

Version:

tsParticles bounce external interaction

2 lines 3.06 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:()=>u,loadExternalBounceInteraction:()=>p});var r=n(303);const c=.5,s=Math.PI*c;function a(e,t,o,n,i){const c=e.particles.quadTree.query(n,i);for(const e of c)n instanceof r.Circle?(0,r.circleBounce)((0,r.circleBounceDataFromParticle)(e),{position:t,radius:o,mass:o**2*s,velocity:r.Vector.origin,factor:r.Vector.origin}):n instanceof r.Rectangle&&(0,r.rectBounce)(e,(0,r.calculateBounds)(t,o))}function l(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,s=e.retina.pixelRatio,a={x:(i.offsetLeft+i.offsetWidth*c)*s,y:(i.offsetTop+i.offsetHeight*c)*s},l=i.offsetWidth*c*s,u=10*s,f=o.type===r.DivType.circle?new r.Circle(a.x,a.y,l+u):new r.Rectangle(i.offsetLeft*s-u,i.offsetTop*s-u,i.offsetWidth*s+2*u,i.offsetHeight*s+2*u);n(a,l,f)}))}(e,t,o,((t,o,i)=>a(e,t,o,i,n)))))}class u{constructor(){this.distance=200}load(e){(0,r.isNull)(e)||void 0!==e.distance&&(this.distance=e.distance)}}const f="bounce";class d 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)(f,i)?function(e,t){const o=10*e.retina.pixelRatio,n=e.interactivity.mouse.position,i=e.retina.bounceModeDistance;!i||i<0||!n||a(e,n,i,new r.Circle(n.x,n.y,i+o),t)}(this.container,(e=>this.isEnabled(e))):l(this.container,c,f,(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)(f,i.onHover.mode)||(0,r.isDivModeEnabled)(f,c)}loadModeOptions(e,...t){e.bounce||(e.bounce=new u);for(const o of t)e.bounce.load(o?.bounce)}reset(){}}async function p(e,t=!0){e.checkVersion("3.9.1"),await e.addInteractor("externalBounce",(e=>Promise.resolve(new d(e))),t)}return i})()));