/*! For license information please see tsparticles.plugin.absorbers.min.js.LICENSE.txt */ !function(i,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(i.window);for(var o in s)("object"==typeof exports?exports:i)[o]=s[o]}}(this,(i=>(()=>{"use strict";var t={961:t=>{t.exports=i}},s={};function o(i){var e=s[i];if(void 0!==e)return e.exports;var r=s[i]={exports:{}};return t[i](r,r.exports,o),r.exports}o.d=(i,t)=>{for(var s in t)o.o(t,s)&&!o.o(i,s)&&Object.defineProperty(i,s,{enumerable:!0,get:t[s]})},o.o=(i,t)=>Object.prototype.hasOwnProperty.call(i,t),o.r=i=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})};var e={};return(()=>{o.r(e),o.d(e,{loadAbsorbersPlugin:()=>l});var i=o(961);class t{constructor(){this.radius=0,this.mass=0}load(i){i&&(void 0!==i.mass&&(this.mass=i.mass),void 0!==i.radius&&(this.radius=i.radius))}}class s extends i.ValueWithRandom{constructor(){super(),this.density=5,this.value=50,this.limit=new t}load(i){i&&(super.load(i),void 0!==i.density&&(this.density=i.density),"number"==typeof i.limit?this.limit.radius=i.limit:this.limit.load(i.limit))}}class r{constructor(){this.color=new i.OptionsColor,this.color.value="#000000",this.draggable=!1,this.opacity=1,this.destroy=!0,this.orbits=!1,this.size=new s}load(t){void 0!==t&&(void 0!==t.color&&(this.color=i.OptionsColor.create(this.color,t.color)),void 0!==t.draggable&&(this.draggable=t.draggable),this.name=t.name,void 0!==t.opacity&&(this.opacity=t.opacity),void 0!==t.position&&(this.position={},void 0!==t.position.x&&(this.position.x=(0,i.setRangeValue)(t.position.x)),void 0!==t.position.y&&(this.position.y=(0,i.setRangeValue)(t.position.y))),void 0!==t.size&&this.size.load(t.size),void 0!==t.destroy&&(this.destroy=t.destroy),void 0!==t.orbits&&(this.orbits=t.orbits))}}class n{constructor(t,s,o,e){var n,a,c;this.absorbers=t,this.container=s,this.initialPosition=e?i.Vector.create(e.x,e.y):void 0,o instanceof r?this.options=o:(this.options=new r,this.options.load(o)),this.dragging=!1,this.name=this.options.name,this.opacity=this.options.opacity,this.size=(0,i.getRangeValue)(this.options.size.value)*s.retina.pixelRatio,this.mass=this.size*this.options.size.density*s.retina.reduceFactor;const l=this.options.size.limit;this.limit={radius:l.radius*s.retina.pixelRatio*s.retina.reduceFactor,mass:l.mass},this.color=null!==(n=(0,i.rangeColorToRgb)(this.options.color))&&void 0!==n?n:{b:0,g:0,r:0},this.position=null!==(c=null===(a=this.initialPosition)||void 0===a?void 0:a.copy())&&void 0!==c?c:this.calcPosition()}attract(t){const s=this.container,o=this.options;if(o.draggable){const t=s.interactivity.mouse;if(t.clicking&&t.downPosition){(0,i.getDistance)(this.position,t.downPosition)<=this.size&&(this.dragging=!0)}else this.dragging=!1;this.dragging&&t.position&&(this.position.x=t.position.x,this.position.y=t.position.y)}const e=t.getPosition(),{dx:r,dy:n,distance:a}=(0,i.getDistances)(this.position,e),c=i.Vector.create(r,n);if(c.length=this.mass/Math.pow(a,2)*s.retina.reduceFactor,at.getRadius()&&a=0?"clockwise":"counter-clockwise");const n=t.absorberOrbit.length,a=t.absorberOrbit.angle,c=t.absorberOrbitDirection;t.velocity.setTo(i.Vector.origin);const l={x:"clockwise"===c?Math.cos:Math.sin,y:"clockwise"===c?Math.sin:Math.cos};t.position.x=this.position.x+n*l.x(a),t.position.y=this.position.y+n*l.y(a),t.absorberOrbit.length-=s.length,t.absorberOrbit.angle+=(null!==(o=t.retina.moveSpeed)&&void 0!==o?o:0)*e.retina.pixelRatio/100*e.retina.reduceFactor}else{const o=i.Vector.origin;o.length=s.length,o.angle=s.angle,t.velocity.addTo(o)}}}class a{constructor(i){this.container=i,this.array=[],this.absorbers=[],this.interactivityAbsorbers=[],i.getAbsorber=i=>void 0===i||"number"==typeof i?this.array[i||0]:this.array.find((t=>t.name===i)),i.addAbsorber=(i,t)=>this.addAbsorber(i,t)}addAbsorber(i,t){const s=new n(this,this.container,i,t);return this.array.push(s),s}draw(i){for(const t of this.array)t.draw(i)}handleClickMode(t){const s=this.absorbers,o=this.interactivityAbsorbers;if("absorber"===t){const t=(0,i.itemFromSingleOrMultiple)(o),e=null!=t?t:(0,i.itemFromSingleOrMultiple)(s),r=this.container.interactivity.mouse.clickPosition;this.addAbsorber(e,r)}}async init(){this.absorbers=this.container.actualOptions.absorbers,this.interactivityAbsorbers=this.container.actualOptions.interactivity.modes.absorbers,(0,i.executeOnSingleOrMultiple)(this.absorbers,(i=>{this.addAbsorber(i)}))}particleUpdate(i){for(const t of this.array)if(t.attract(i),i.destroyed)break}removeAbsorber(i){const t=this.array.indexOf(i);t>=0&&this.array.splice(t,1)}resize(){for(const i of this.array)i.resize()}stop(){this.array=[]}}class c{constructor(){this.id="absorbers"}getPlugin(i){return new a(i)}loadOptions(t,s){var o,e;(this.needsPlugin(t)||this.needsPlugin(s))&&((null==s?void 0:s.absorbers)&&(t.absorbers=(0,i.executeOnSingleOrMultiple)(s.absorbers,(i=>{const t=new r;return t.load(i),t}))),t.interactivity.modes.absorbers=(0,i.executeOnSingleOrMultiple)(null===(e=null===(o=null==s?void 0:s.interactivity)||void 0===o?void 0:o.modes)||void 0===e?void 0:e.absorbers,(i=>{const t=new r;return t.load(i),t})))}needsPlugin(t){var s,o,e;if(!t)return!1;const r=t.absorbers;return r instanceof Array?!!r.length:!!r||!(!(null===(e=null===(o=null===(s=t.interactivity)||void 0===s?void 0:s.events)||void 0===o?void 0:o.onClick)||void 0===e?void 0:e.mode)||!(0,i.isInArray)("absorber",t.interactivity.events.onClick.mode))}}async function l(i){const t=new c;await i.addPlugin(t)}})(),e})()));