/*! For license information please see tsparticles.interaction.external.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 s="object"==typeof exports?t(require("tsparticles-engine")):t(e.window);for(var i in s)("object"==typeof exports?exports:e)[i]=s[i]}}(this,(e=>(()=>{"use strict";var t={961:t=>{t.exports=e}},s={};function i(e){var o=s[e];if(void 0!==o)return o.exports;var r=s[e]={exports:{}};return t[e](r,r.exports,i),r.exports}i.d=(e,t)=>{for(var s in t)i.o(t,s)&&!i.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{i.r(o),i.d(o,{Repulse:()=>r,RepulseBase:()=>t,RepulseDiv:()=>s,loadExternalRepulseInteraction:()=>l});var e=i(961);class t{constructor(){this.distance=200,this.duration=.4,this.factor=100,this.speed=1,this.maxSpeed=50,this.easing="ease-out-quad"}load(e){e&&(void 0!==e.distance&&(this.distance=e.distance),void 0!==e.duration&&(this.duration=e.duration),void 0!==e.easing&&(this.easing=e.easing),void 0!==e.factor&&(this.factor=e.factor),void 0!==e.speed&&(this.speed=e.speed),void 0!==e.maxSpeed&&(this.maxSpeed=e.maxSpeed))}}class s extends t{constructor(){super(),this.selectors=[]}get ids(){return(0,e.executeOnSingleOrMultiple)(this.selectors,(e=>e.replace("#","")))}set ids(t){this.selectors=(0,e.executeOnSingleOrMultiple)(t,(e=>`#${e}`))}load(e){super.load(e),e&&(void 0!==e.ids&&(this.ids=e.ids),void 0!==e.selectors&&(this.selectors=e.selectors))}}class r extends t{load(t){super.load(t),t&&(this.divs=(0,e.executeOnSingleOrMultiple)(t.divs,(e=>{const t=new s;return t.load(e),t})))}}class n extends e.ExternalInteractorBase{constructor(e,t){super(t),this._engine=e,t.repulse||(t.repulse={particles:[]}),this.handleClickMode=e=>{const s=this.container.actualOptions.interactivity.modes.repulse;if(s&&"repulse"===e){t.repulse||(t.repulse={particles:[]}),t.repulse.clicking=!0,t.repulse.count=0;for(const e of t.repulse.particles)this.isEnabled(e)&&e.velocity.setTo(e.initialVelocity);t.repulse.particles=[],t.repulse.finish=!1,setTimeout((()=>{t.destroyed||(t.repulse||(t.repulse={particles:[]}),t.repulse.clicking=!1)}),1e3*s.duration)}}}clear(){}init(){const e=this.container,t=e.actualOptions.interactivity.modes.repulse;t&&(e.retina.repulseModeDistance=t.distance*e.retina.pixelRatio)}async interact(){const t=this.container,s=t.actualOptions,i=t.interactivity.status===e.mouseMoveEvent,o=s.interactivity.events,r=o.onHover.enable,n=o.onHover.mode,l=o.onClick.enable,c=o.onClick.mode,a=o.onDiv;i&&r&&(0,e.isInArray)("repulse",n)?this.hoverRepulse():l&&(0,e.isInArray)("repulse",c)?this.clickRepulse():(0,e.divModeExecute)("repulse",a,((e,t)=>this.singleSelectorRepulse(e,t)))}isEnabled(t){var s;const i=this.container,o=i.actualOptions,r=i.interactivity.mouse,n=(null!==(s=null==t?void 0:t.interactivity)&&void 0!==s?s:o.interactivity).events,l=n.onDiv,c=(0,e.isDivModeEnabled)("repulse",l);if(!(c||n.onHover.enable&&r.position||n.onClick.enable&&r.clickPosition))return!1;const a=n.onHover.mode,p=n.onClick.mode;return(0,e.isInArray)("repulse",a)||(0,e.isInArray)("repulse",p)||c}loadModeOptions(e,...t){e.repulse||(e.repulse=new r);for(const s of t)e.repulse.load(null==s?void 0:s.repulse)}reset(){}clickRepulse(){const t=this.container,s=t.actualOptions.interactivity.modes.repulse;if(s)if(t.repulse||(t.repulse={particles:[]}),t.repulse.finish||(t.repulse.count||(t.repulse.count=0),t.repulse.count++,t.repulse.count===t.particles.count&&(t.repulse.finish=!0)),t.repulse.clicking){const i=t.retina.repulseModeDistance;if(!i||i<0)return;const o=Math.pow(i/6,3),r=t.interactivity.mouse.clickPosition;if(void 0===r)return;const n=new e.Circle(r.x,r.y,o),l=t.particles.quadTree.query(n,(e=>this.isEnabled(e)));for(const i of l){const{dx:n,dy:l,distance:c}=(0,e.getDistances)(r,i.position),a=c**2,p=-o*s.speed/a;if(a<=o){t.repulse.particles.push(i);const s=e.Vector.create(n,l);s.length=p,i.velocity.setTo(s)}}}else if(!1===t.repulse.clicking){for(const e of t.repulse.particles)e.velocity.setTo(e.initialVelocity);t.repulse.particles=[]}}hoverRepulse(){const t=this.container,s=t.interactivity.mouse.position,i=t.retina.repulseModeDistance;!i||i<0||!s||this.processRepulse(s,i,new e.Circle(s.x,s.y,i))}processRepulse(t,s,i,o){var r;const n=this.container,l=n.particles.quadTree.query(i,(e=>this.isEnabled(e))),c=n.actualOptions.interactivity.modes.repulse;if(c)for(const i of l){const{dx:n,dy:l,distance:a}=(0,e.getDistances)(i.position,t),p=(null!==(r=null==o?void 0:o.speed)&&void 0!==r?r:c.speed)*c.factor,u=(0,e.clamp)((0,e.getEasing)(c.easing)(1-a/s)*p,0,c.maxSpeed),d=e.Vector.create(0===a?p:n/a*u,0===a?p:l/a*u);i.position.addTo(d)}}singleSelectorRepulse(t,s){const i=this.container,o=i.actualOptions.interactivity.modes.repulse;if(!o)return;const r=document.querySelectorAll(t);r.length&&r.forEach((t=>{const r=t,n=i.retina.pixelRatio,l={x:(r.offsetLeft+r.offsetWidth/2)*n,y:(r.offsetTop+r.offsetHeight/2)*n},c=r.offsetWidth/2*n,a="circle"===s.type?new e.Circle(l.x,l.y,c):new e.Rectangle(r.offsetLeft*n,r.offsetTop*n,r.offsetWidth*n,r.offsetHeight*n),p=o.divs,u=(0,e.divMode)(p,r);this.processRepulse(l,c,a,u)}))}}async function l(e){await e.addInteractor("externalRepulse",(t=>new n(e,t)))}})(),o})()));