{"version":3,"sources":["webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/PolygonMask/pathseg.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Core/Utils/Constants.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Core/Utils/Vector.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Utils/NumberUtils.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Utils/Utils.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Utils/ColorUtils.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Utils/CanvasUtils.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Core/Canvas.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Core/Utils/EventListeners.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Core/Utils/FrameManager.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/OptionsColor.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Background/Background.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/BackgroundMask/BackgroundMaskCover.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/BackgroundMask/BackgroundMask.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/FullScreen/FullScreen.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Events/ClickEvent.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Events/DivEvent.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Events/Parallax.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Events/HoverEvent.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Events/Events.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Modes/Attract.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Modes/Bounce.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Modes/BubbleBase.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Modes/BubbleDiv.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Modes/Bubble.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Modes/ConnectLinks.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Modes/Connect.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Modes/GrabLinks.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Modes/Grab.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Modes/LightGradient.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Modes/LightArea.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Modes/LightShadow.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Modes/Light.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Modes/Push.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Modes/Remove.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Modes/RepulseBase.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Modes/RepulseDiv.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Modes/Repulse.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Modes/Slow.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Modes/Trail.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Modes/Modes.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Interactivity/Interactivity.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/ManualParticle.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Motion/MotionReduce.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Motion/Motion.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/ColorAnimation.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/HslAnimation.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/AnimatableColor.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/AnimatableGradient.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Random.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/ValueWithRandom.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Bounce/BounceFactor.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Bounce/Bounce.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Collisions/CollisionsOverlap.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Collisions/Collisions.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Destroy/SplitFactor.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Destroy/SplitRate.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Destroy/Split.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Destroy/Destroy.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Life/LifeDelay.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Life/LifeDuration.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Life/Life.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Links/LinksShadow.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Links/LinksTriangle.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Links/Links.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Move/Attract.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Move/MoveAngle.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Move/MoveGravity.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Move/OutModes.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Move/Path/PathDelay.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Move/Path/Path.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Move/Spin.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Move/Trail.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Move/Move.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/AnimationOptions.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Opacity/OpacityAnimation.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Opacity/Opacity.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Orbit/OrbitRotation.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Orbit/Orbit.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Number/Density.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Number/ParticlesNumber.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Repulse/Repulse.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Roll/RollLight.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Roll/Roll.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Rotate/RotateAnimation.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Rotate/Rotate.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Shadow.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Shape/Shape.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Size/SizeAnimation.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Size/Size.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Stroke.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Tilt/TiltAnimation.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Tilt/Tilt.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Twinkle/TwinkleValues.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Twinkle/Twinkle.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/Wobble/Wobble.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/ZIndex/ZIndex.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Particles/ParticlesOptions.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Responsive.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Theme/ThemeDefault.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Theme/Theme.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Options/Classes/Options.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Core/Utils/InteractionManager.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Core/Utils/Vector3d.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Core/Particle.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Core/Utils/Point.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Core/Utils/Range.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Core/Utils/Circle.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Core/Utils/Rectangle.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Core/Utils/CircleWarp.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Core/Utils/QuadTree.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Core/Particles.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Core/Retina.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Core/Container.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Core/Loader.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Core/Utils/Plugins.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/engine.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/Absorbers/Options/Classes/AbsorberSizeLimit.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/Absorbers/Options/Classes/AbsorberSize.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/Absorbers/Options/Classes/Absorber.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/Absorbers/AbsorberInstance.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/Absorbers/Absorbers.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/Absorbers/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/Emitters/Shapes/Circle/CircleShape.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/Emitters/Options/Classes/EmitterLife.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/Emitters/Options/Classes/EmitterRate.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/Emitters/Options/Classes/EmitterSize.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/Emitters/Options/Classes/Emitter.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/Emitters/EmitterInstance.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/Emitters/Emitters.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/Emitters/ShapeManager.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/Emitters/Shapes/Square/SquareShape.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/Emitters/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Core/Utils/ExternalInteractorBase.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/External/Trail/TrailMaker.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/PolygonMask/Options/Classes/PolygonMaskDrawStroke.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/PolygonMask/Options/Classes/PolygonMaskDraw.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/PolygonMask/Options/Classes/PolygonMaskInline.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/PolygonMask/Options/Classes/PolygonMaskLocalSvg.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/PolygonMask/Options/Classes/PolygonMaskMove.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/PolygonMask/Options/Classes/PolygonMask.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/PolygonMask/Utils.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/PolygonMask/PolygonMaskInstance.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Plugins/PolygonMask/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Updaters/Roll/RollUpdater.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Updaters/Angle/AngleUpdater.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Movers/Base/BaseMover.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Movers/Base/Utils.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Shapes/Circle/CircleDrawer.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Updaters/Color/ColorUpdater.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/External/Attract/Attractor.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/External/Bounce/Bouncer.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/External/Bubble/Bubbler.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/External/Connect/Connector.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/External/Grab/Grabber.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/External/Pause/Pauser.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/External/Push/Pusher.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/External/Remove/Remover.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/External/Repulse/Repulser.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Shapes/Image/Utils.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Shapes/Image/ImageDrawer.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Updaters/Life/LifeUpdater.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Shapes/Line/LineDrawer.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Updaters/Opacity/OpacityUpdater.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Updaters/OutModes/OutOfCanvasUpdater.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Updaters/OutModes/Utils.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Movers/Parallax/ParallaxMover.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Core/Utils/ParticlesInteractorBase.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/Particles/Attract/Attractor.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/Particles/Collisions/Collider.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/Particles/Links/Linker.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/Particles/Links/LinkInstance.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/Particles/Links/plugin.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/Particles/Links/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/Particles/Links/interaction.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Shapes/Polygon/PolygonDrawerBase.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Shapes/Polygon/PolygonDrawer.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Shapes/Polygon/TriangleDrawer.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Shapes/Polygon/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Updaters/Size/SizeUpdater.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Shapes/Square/SquareDrawer.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Shapes/Star/StarDrawer.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Updaters/StrokeColor/StrokeColorUpdater.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Shapes/Text/TextDrawer.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/slim.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Movers/Base/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Movers/Parallax/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/External/Attract/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/External/Bounce/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/External/Bubble/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/External/Connect/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/External/Grab/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/External/Pause/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/External/Push/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/External/Remove/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/External/Repulse/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/Particles/Attract/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/Particles/Collisions/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Shapes/Circle/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Shapes/Image/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Shapes/Line/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Shapes/Square/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Shapes/Star/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Shapes/Text/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Updaters/Life/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Updaters/Opacity/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Updaters/Size/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Updaters/Angle/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Updaters/Color/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Updaters/StrokeColor/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Updaters/OutModes/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Updaters/Tilt/TiltUpdater.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Updaters/Twinkle/TwinkleUpdater.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Updaters/Wobble/WobbleUpdater.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/pjs.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/full.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Updaters/Roll/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Updaters/Tilt/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Updaters/Twinkle/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Updaters/Wobble/index.js","webpack:////home/runner/work/frontend-monorepo/frontend-monorepo/node_modules/tsparticles/esm/Interactions/External/Trail/index.js"],"names":["window","SVGPathSeg","type","typeAsLetter","owningPathSegList","this","pathSegType","pathSegTypeAsLetter","_owningPathSegList","prototype","classname","PATHSEG_UNKNOWN","PATHSEG_CLOSEPATH","PATHSEG_MOVETO_ABS","PATHSEG_MOVETO_REL","PATHSEG_LINETO_ABS","PATHSEG_LINETO_REL","PATHSEG_CURVETO_CUBIC_ABS","PATHSEG_CURVETO_CUBIC_REL","PATHSEG_CURVETO_QUADRATIC_ABS","PATHSEG_CURVETO_QUADRATIC_REL","PATHSEG_ARC_ABS","PATHSEG_ARC_REL","PATHSEG_LINETO_HORIZONTAL_ABS","PATHSEG_LINETO_HORIZONTAL_REL","PATHSEG_LINETO_VERTICAL_ABS","PATHSEG_LINETO_VERTICAL_REL","PATHSEG_CURVETO_CUBIC_SMOOTH_ABS","PATHSEG_CURVETO_CUBIC_SMOOTH_REL","PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS","PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL","_segmentChanged","segmentChanged","SVGPathSegClosePath","call","Object","create","toString","_asPathString","clone","undefined","SVGPathSegMovetoAbs","x","y","_x","_y","defineProperty","get","set","enumerable","SVGPathSegMovetoRel","SVGPathSegLinetoAbs","SVGPathSegLinetoRel","SVGPathSegCurvetoCubicAbs","x1","y1","x2","y2","_x1","_y1","_x2","_y2","SVGPathSegCurvetoCubicRel","SVGPathSegCurvetoQuadraticAbs","SVGPathSegCurvetoQuadraticRel","SVGPathSegArcAbs","r1","r2","angle","largeArcFlag","sweepFlag","_r1","_r2","_angle","_largeArcFlag","_sweepFlag","SVGPathSegArcRel","SVGPathSegLinetoHorizontalAbs","SVGPathSegLinetoHorizontalRel","SVGPathSegLinetoVerticalAbs","SVGPathSegLinetoVerticalRel","SVGPathSegCurvetoCubicSmoothAbs","SVGPathSegCurvetoCubicSmoothRel","SVGPathSegCurvetoQuadraticSmoothAbs","SVGPathSegCurvetoQuadraticSmoothRel","SVGPathElement","createSVGPathSegClosePath","createSVGPathSegMovetoAbs","createSVGPathSegMovetoRel","createSVGPathSegLinetoAbs","createSVGPathSegLinetoRel","createSVGPathSegCurvetoCubicAbs","createSVGPathSegCurvetoCubicRel","createSVGPathSegCurvetoQuadraticAbs","createSVGPathSegCurvetoQuadraticRel","createSVGPathSegArcAbs","createSVGPathSegArcRel","createSVGPathSegLinetoHorizontalAbs","createSVGPathSegLinetoHorizontalRel","createSVGPathSegLinetoVerticalAbs","createSVGPathSegLinetoVerticalRel","createSVGPathSegCurvetoCubicSmoothAbs","createSVGPathSegCurvetoCubicSmoothRel","createSVGPathSegCurvetoQuadraticSmoothAbs","createSVGPathSegCurvetoQuadraticSmoothRel","getPathSegAtLength","distance","isFinite","measurementElement","document","createElementNS","setAttribute","getAttribute","lastPathSegment","pathSegList","numberOfItems","removeItem","getTotalLength","SVGPathSegList","pathElement","_pathElement","_list","_parsePath","_mutationObserverConfig","attributes","attributeFilter","_pathElementMutationObserver","MutationObserver","_updateListFromPathMutations","bind","observe","_checkPathSynchronizedToList","length","_pathSegList","takeRecords","mutationRecords","hasPathMutations","forEach","record","attributeName","_writeListToPath","disconnect","_pathSegArrayAsString","pathSeg","clear","initialize","newItem","_checkValidIndex","index","isNaN","getItem","insertItemBefore","splice","replaceItem","item","appendItem","push","pathSegArray","string","first","Builder","appendSegment","Source","_string","_currentIndex","_endIndex","_previousCommand","_skipOptionalSpaces","_isCurrentSpace","character","_skipOptionalSpacesOrDelimiter","charAt","hasMoreData","peekSegmentType","lookahead","_pathSegTypeFromChar","_nextCommandHelper","previousCommand","initialCommandIsMoveTo","command","_parseNumber","exponent","integer","frac","decimal","sign","expsign","startIndex","startIntPartIndex","scanIntPartIndex","multiplier","number","Math","pow","_parseArcFlag","flag","flagChar","parseSegment","points","arcAngle","arcLarge","arcSweep","builder","source","e","console","warn","Constants","generatedAttribute","randomColorValue","midColorValue","touchEndEvent","mouseDownEvent","mouseUpEvent","mouseMoveEvent","touchStartEvent","touchMoveEvent","mouseLeaveEvent","mouseOutEvent","touchCancelEvent","resizeEvent","visibilityChangeEvent","noPolygonDataLoaded","noPolygonFound","Vector","xOrCoords","Error","atan2","updateFromAngle","sqrt","getLengthSq","v","n","sub","abs","cos","sin","clamp","num","min","max","mix","comp1","comp2","weight1","weight2","floor","randomInRange","r","getRangeMax","getRangeMin","random","getRangeValue","value","setRangeValue","getValue","options","enable","minimumValue","getDistances","pointA","pointB","dx","dy","getDistance","getParticleDirectionAngle","direction","PI","getParticleBaseVelocity","baseVelocity","origin","collisionVelocity","v1","v2","m1","m2","calcEasing","c1","calcPositionFromSize","data","_a","_b","position","size","width","height","calcPositionOrRandomFromSize","_c","_d","calcPositionOrRandomFromSizeRanged","calcExactPositionOrRandomFromSize","calcExactPositionOrRandomFromSizeRanged","rectSideBounce","pSide","pOtherSide","rectSide","rectOtherSide","velocity","factor","res","bounced","checkSelector","element","selectors","Array","matches","selector","isSsr","animate","callback","setTimeout","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","cancelAnimation","handle","clearTimeout","cancelAnimationFrame","webkitCancelRequestAnimationFrame","mozCancelRequestAnimationFrame","oCancelRequestAnimationFrame","msCancelRequestAnimationFrame","isInArray","array","indexOf","async","loadFont","fonts","load","weight","font","arrayRandomIndex","itemFromArray","useIndex","isPointInside","point","radius","areBoundsInside","calculateBounds","bounds","inside","top","right","left","bottom","deepExtend","destination","sources","sourceIsArray","isArray","key","isObject","destDict","map","isDivModeEnabled","mode","divs","find","t","divModeExecute","div","divMode","singleDivModeExecute","d","circleBounceDataFromParticle","p","getPosition","getRadius","mass","getMass","bounce","horizontal","vertical","circleBounce","p1","p2","xVelocityDiff","yVelocityDiff","pos1","pos2","xDist","yDist","u1","rotate","u2","vFinal1","vFinal2","rectBounce","particle","divBounds","resH","resV","hue2rgb","q","tCalc","stringToRgba","input","startsWith","result","exec","a","parseFloat","b","parseInt","g","hslaToRgba","h","l","s","hsvaToRgba","shorthandRegex","hexFixed","replace","_m","colorToRgb","color","getRandomRgbColor","stringToRgb","colorValue","rgbColor","rgb","hslColor","hsl","hslToRgb","hsvColor","hsv","hsvToRgb","colorToHsl","rgbToHsl","g1","b1","stringToAlpha","hslPercent","hsla","rgbResult","hslToHsv","sv","hslaToHsva","hsvResult","hsvToHsl","sl","hsvaToHsla","hsva","hslResult","hsvPercent","c","tempRgb","m","rgbToHsv","rgbPercent","xMax","rgbaToHsva","rgba","fixedMin","getStyleFromRgb","opacity","getStyleFromHsl","getStyleFromHsv","colorMix","color1","color2","size1","size2","rgb1","rgb2","getLinkColor","linkColor","sourceColor","getFillColor","getStrokeColor","destColor","getLinkRandomColor","optColor","blink","consent","getHslFromAnimation","animation","getHslAnimationFromHsl","animationOptions","reduceFactor","resColor","setColorAnimation","colorAnimation","speed","sync","status","drawLine","context","begin","end","beginPath","moveTo","lineTo","closePath","paintBase","dimension","baseColor","save","fillStyle","fillRect","restore","clearRect","drawLinkLine","maxDistance","canvasSize","warp","backgroundMask","composite","colorLine","shadow","drawn","pi1","pi2","d1","yi","d2","xi","d3","lineWidth","globalCompositeOperation","strokeStyle","shadowColor","shadowBlur","blur","stroke","drawLinkTriangle","pos3","colorTriangle","opacityTriangle","p3","drawTriangle","fill","drawConnectLine","lineStyle","gradient","gradStop","sourcePos","destPos","midRgb","grad","createLinearGradient","addColorStop","drawGrabLine","drawParticle","container","delta","colorStyles","pos","tiltOptions","tilt","rollOptions","roll","rollHorizontal","rollVertical","setTransform","cosDirection","sinDirection","translate","path","shadowOffsetX","offset","shadowOffsetY","strokeWidth","drawShape","close","drawShapeAfterEffect","shape","drawer","drawers","draw","retina","pixelRatio","afterEffect","drawPlugin","plugin","drawParticlePlugin","drawEllipse","fillColorValue","rotation","start","rotationRadian","ellipse","alterHsl","generatedCanvas","resize","initStyle","initCover","initTrail","initBackground","paint","canvas","remove","dataset","originalStyle","style","offsetHeight","offsetWidth","getContext","init","ctx","actualOptions","cover","coverColorStyle","trail","particles","move","trailFillColor","needsRefresh","updateActualOptions","setDensity","plugins","refresh","pxRatio","newSize","oldSize","assign","started","resizeFactor","linksWidth","lineColor","mousePos","beginPos","_e","_f","spawning","destroyed","pfColor","psColor","fColor","sColor","getPluginParticleColors","zIndexOptions","zIndex","zOpacityFactor","zIndexFactor","opacityRate","bubble","strokeOpacity","zOpacity","zStrokeOpacity","zSizeFactor","sizeRate","updater","updaters","beforeDraw","getColorStyles","afterDraw","background","elementStyle","backgroundColor","backgroundImage","image","backgroundPosition","backgroundRepeat","repeat","backgroundSize","cb","coverRgb","coverColor","fillColor","particleFillColor","particleStrokeColor","fullScreen","setProperty","connectOptions","interactivity","modes","connect","links","manageListener","event","handler","add","addOptions","passive","capture","addEventListener","removeOptions","removeEventListener","canPush","mouseMoveHandler","mouseTouchMove","touchStartHandler","touchMoveHandler","touchEndHandler","mouseTouchFinish","mouseLeaveHandler","touchCancelHandler","touchEndClickHandler","mouseTouchClick","mouseUpHandler","mouseDownHandler","mouseDown","visibilityChangeHandler","handleVisibilityChange","themeChangeHandler","handleThemeChange","oldThemeChangeHandler","resizeHandler","handleWindowResize","manageListeners","detectType","detectsOn","canvasEl","parentElement","parentNode","mediaMatch","matchMedia","addListener","removeListener","interactivityEl","html","events","onHover","onClick","pointerEvents","ResizeObserver","resizeObserver","unobserve","entries","target","resizeTimeout","windowResize","pauseOnBlur","hidden","pageHidden","pause","getAnimationStatus","play","mouse","clicking","downPosition","_g","mouseEvent","clientRect","getBoundingClientRect","clientX","clientY","currentTarget","sourceRect","targetRect","canvasRect","offsetX","offsetY","touchEvent","lastTouch","touches","clickPosition","handled","mousePosition","clickPositionValid","doMouseTouchClick","clickTime","Date","getTime","handleClickMode","themeName","defaultDarkTheme","defaultLightTheme","theme","themes","name","default","auto","loadTheme","FrameManager","timestamp","lastFrameTime","fpsLimit","deltaValue","lifeTime","duration","destroy","error","OptionsColor","FullScreen","ClickEvent","DivEvent","ids","elementId","el","Parallax","force","smooth","parallax","onDiv","onclick","ondiv","tmp","onhover","easing","maxSpeed","super","ConnectLinks","lineLinked","line_linked","stop","area","Push","groups","quantity","particles_nb","Remove","RepulseBase","Slow","_value","delay","pauseOnStop","attract","grab","light","repulse","slow","detect_on","active","MotionReduce","disable","reduce","count","AnimatableGradient","GradientAngle","colors","startValue","Random","CollisionsOverlap","retries","overlap","rate","sizeOffset","split","frequency","triangles","id","rotateX","rotateY","acceleration","inverse","OutModes","generator","decay","drift","gravity","outModes","spin","straight","vibrate","collisions","outMode","out_mode","noise","opacity_min","anim","Density","value_area","density","limit","enabled","darken","enlighten","backColor","custom","loadShape","polygon","images","mainKey","altKey","altOverride","size_min","lines","velocityRate","life","orbit","reduceDuplicates","twinkle","wobble","_h","group","strokeToLoad","gradientToLoad","maxWidth","Infinity","ThemeDefault","_Options_instances","_Options_engine","_Options_findDefaultTheme","__classPrivateFieldSet","receiver","state","kind","f","TypeError","has","__classPrivateFieldGet","engine","autoPlay","detectRetina","manualParticles","motion","pauseOnOutsideViewport","responsive","zLayers","preset","importPreset","retina_detect","fps_limit","backgroundMode","loadOptions","optResponsive","sort","optTheme","chosenTheme","clientDarkMode","defaultTheme","defaultOptions","responsiveOptions","screen","availWidth","getPreset","WeakMap","WeakSet","_InteractionManager_engine","InteractionManager","externalInteractors","particleInteractors","interactors","getInteractors","interactor","isEnabled","interact","reset","z","addTo","subFrom","multTo","divTo","setTo","v3d","_Particle_engine","fixOutMode","checkModes","coord","maxCoord","setCb","overrideOptions","lastPathTime","unbreakable","splitCount","misplaced","ignoresResizeRatio","mainOptions","particlesOptions","shapeType","overrideShapeType","shapeOptions","shapeData","loadShapeData","pathDelay","zIndexValue","initParticle","sizeOptions","sizeRange","loops","maxLoops","sizeAnimation","sizeAnimationSpeed","inRange","initialVelocity","calculateVelocity","copy","moveDecay","gravityOptions","calcPosition","initialPosition","needsSort","lastZIndex","sides","getShapeDrawer","sideCountFunc","getSidesCount","loadLife","particleInit","particleCreated","isInsideCanvas","alter","backFactor","backSum","strokeColor","override","particleDestroyed","splitOptions","i","addSplitParticle","tryCount","pluginPos","particlePosition","exactPosition","fixHorizontal","fixVertical","checkOverlap","collisionsOptions","overlapOptions","overlaps","moveOptions","rad","radOffset","range","lifeOptions","delayTime","time","Point","Range","rect","circle","w","edges","intersects","w2","h2","contains","posNE","posSE","posSW","newPos","biggerCircle","rectSW","rectangle","capacity","divided","subdivide","northEast","insert","northWest","southEast","southWest","query","containerOrSize","found","_Particles_engine","nextId","zArray","freqs","Map","interactionManager","linksColors","quadTree","movers","getMovers","getUpdaters","particlesInitialization","addManualParticles","groupOptions","j","addParticle","pathGenerator","deleted","zIdx","removeAt","particlesToDelete","update","particleUpdate","mover","externalInteract","particlesInteract","nb","pushing","countToRemove","removeQuantity","pushParticle","parent","id1","id2","id3","applyDensity","manualCount","numberOptions","densityFactor","initDensityFactor","optParticlesNumber","optParticlesLimit","particlesNumber","particlesCount","filter","densityOptions","initializer","canAdd","devicePixelRatio","motionOptions","mediaQuery","handleMotionChange","handleChange","catch","ratio","attractDistance","linksDistance","connectModeDistance","connectModeRadius","grabModeDistance","repulseModeDistance","bounceModeDistance","attractModeDistance","slowModeRadius","bubbleModeDistance","bubbleModeSize","moveDistance","props","moveDrift","moveSpeed","_Container_engine","sourceOptions","presets","firstStart","paused","_sourceOptions","_initialSourceOptions","generate","_options","eventListeners","IntersectionObserver","intersectionObserver","intersectionManager","needsUpdate","drawAnimationFrame","refreshTime","nextFrame","noiseOrGenerator","setPath","pathOrGenerator","oldGenerator","keys","delete","exportImage","quality","toBlob","JSON","stringify","removeListeners","HTMLElement","grabLineColor","linksColor","currentTheme","addListeners","startAsync","clickOrTouchHandler","posRetina","queryCircle","touched","touchMoved","changedTouches","radiusX","radiusY","newMaxWidth","setResponsive","setTheme","responsiveMaxWidth","shapes","getSupportedShapes","availablePlugins","getAvailablePlugins","initAsync","pathOptions","getPathGenerator","particlesSetup","entry","isIntersecting","_Loader_engine","domArray","dom","params","tagId","domContainer","getElementById","createElement","querySelector","append","currentOptions","oldIndex","findIndex","old","domItem","tagName","toLowerCase","existingCanvases","getElementsByTagName","appendChild","loadCanvas","url","jsonUrl","response","fetch","ok","statusCode","json","loadRemoteOptions","newId","newIndex","addClickHandler","_Plugins_engine","Plugins","interactorsInitializers","moversInitializers","updatersInitializers","pathGenerators","getPlugin","needsPlugin","presetKey","values","initInteractor","initUpdater","initMover","_Engine_initialized","_Engine_loader","pathConfigJson","loadJSON","setJSON","setOnClickHandler","instance","customDrawer","addShapeDrawer","addPreset","addPlugin","addPathGenerator","interactorInitializer","addInteractor","moverInitializer","addParticleMover","updaterInitializer","addParticleUpdater","AbsorberSizeLimit","draggable","orbits","absorbers","dragging","sizeFactor","absorberOrbit","needsNewPosition","updateParticlePosition","arc","newPosition","minSize","absorberOrbitDirection","orbitRadius","orbitAngle","orbitDirection","updateFunc","addV","interactivityAbsorbers","overridableContainer","getAbsorber","idxOrName","addAbsorber","absorberOptions","absorber","modeAbsorbers","absorbersModeOptions","absorbersOptions","aPosition","optionsCast","loadAbsorbersPlugin","CircleShape","randomTheta","u","theta","atan","tan","generateTheta","maxRadius","randomRadius","EmitterLife","wait","EmitterSize","startCount","domId","spawnColor","_EmitterInstance_firstSpawn","_EmitterInstance_startParticlesAdded","_EmitterInstance_engine","emitters","currentDuration","currentEmitDelay","currentSpawnDelay","spawnDelay","emitterShapeManager","getShape","lifeCount","immortal","emitDelay","prepareToDie","emitParticles","emit","elRect","removeEmitter","getSize","hslAnimation","pPosition","randomPosition","initValue","maxValue","colorOffset","emitFactor","_Emitters_engine","interactivityEmitters","getEmitter","addEmitter","emitter","playEmitter","externalPlay","pauseEmitter","externalPause","emitterOptions","modeEmitters","emitterModeOptions","emittersOptions","ePosition","_ShapeManager_engine","ShapeManager","randomSquareCoordinate","SquareShape","halfW","halfH","side","_EmittersPlugin_engine","loadEmittersPlugin","addEmitterShape","addShape","ExternalInteractorBase","trailOptions","optDelay","canEmit","lastPosition","PolygonMaskInline","arrangement","PolygonMaskLocalSvg","PolygonMaskMove","inline","scale","inlineArrangement","drawPolygonMask","rawData","drawPolygonMaskPath","calcClosestPtOnSegment","s1","s2","dxx","dyy","isOnSegment","segmentBounce","wallAngle","wallNormal","path2DSupported","Path2D","polygonMaskMoveRadius","polygonMaskOptions","initRawData","redrawTimeout","redraw","raw","paths","drawPoints","randomPoint","polygonBounce","checkInsidePolygon","polygonDraw","path2d","path2dSupported","_delta","closest","pi","pj","dist","mult","xml","forceDownload","doc","DOMParser","parseFromString","svg","svgPaths","segments","len","segment","svgPathSeg","absSeg","relSeg","parsePaths","svgUrl","req","parseSvgPath","text","getRandomPoint","getRandomPointByLength","getEquidistantPointByIndex","getPointByIndex","coords","getPointAtLength","tot","pathDistance","pathData","matrix","createSVGMatrix","finalPath","transform","addPath","downloadSvgPath","join","createPath2D","polygonOptions","loadPolygonMaskPlugin","rollOpt","alterType","updateRoll","rotateOptions","rotateDirection","rotateAnimation","updateAngle","spinOptions","spinPos","spinCenter","spinAcceleration","center","particleOptions","slowFactor","getProximitySpeedFactor","baseSpeed","maxSize","applyPath","gravityFactor","zVelocityFactor","maxCanvasSize","dxFixed","dyFixed","hDistance","vDistance","vel","applyDistance","CircleDrawer","updateColorValue","valueAnimation","decrease","updateColor","finish","hoverMode","clickMode","mouseMoveStatus","hoverEnabled","clickEnabled","hoverAttract","clickAttract","attractRadius","processAttract","attractOptions","attractFactor","normVec","processMouseBounce","singleSelectorBounce","tolerance","processBounce","querySelectorAll","elem","offsetLeft","offsetTop","calculateBubbleValue","particleValue","modeValue","optionsValue","divBubble","hoverBubble","clickBubble","singleSelectorHover","repulseRadius","hoverBubbleSize","hoverBubbleOpacity","hoverBubbleColor","distMouse","timeSpent","bubbleParam","bubbleObj","optValue","bubbleDuration","bubbleDistance","particlesParam","particlesObj","pObjBubble","pObj","durationEnd","mouseClickPos","sizeData","process","opacityData","pointDistance","modeSize","optSize","modeOpacity","optOpacity","bubbleOptions","finalColor","modeColor","bubbleColor","pColor","slice","distMax","xDiff","yDiff","grabLineOptions","lineOpacity","opacityLine","linksOptions","pushNb","removeNb","divRepulse","hoverRepulse","clickRepulse","singleSelectorRepulse","processRepulse","repulseOptions","repulseFactor","repulseDistance","vect","currentColorRegex","loadImage","Promise","resolve","loading","img","Image","src","downloadSvgImage","svgData","replaceImageColor","imageData","svgColoredData","imageShape","colorStyle","includes","preFillIndex","substring","replaceColorSvg","Blob","domUrl","URL","webkitURL","createObjectURL","imageRes","replaceColor","replace_color","pImage","loaded","revokeObjectURL","img2","then","_ImageDrawer_images","containerImages","getImages","globalAlpha","drawImage","loadImageShape","substr","addImage","imageFunc","justSpawned","widthRange","heightRange","LineDrawer","opacityOptions","opacityAnimation","opacityRange","minValue","checkDestroy","updateOpacity","updateOutMode","out","none","wrap","sizeValue","nextBounds","particleBounce","newVelocity","minPos","bounceHorizontal","bounceVertical","pRadius","parallaxForce","canvasCenter","parallaxSmooth","centerDistance","ParticlesInteractorBase","ax","ay","p1Factor","p2Factor","radius1","round","resolveCollision","absorb","fps","getLinkDistance","optDistance","linkOpt1","linkOpt2","setColor","linkParticle","pOptions","p1Links","getLinkFrequency","link","vertices","vertex","getTriangleFrequency","link1","link2","triangleOptions","twinkleFreq","twinkleRgb","loadParticlesLinksInteraction","loadInteraction","loadPlugin","PolygonDrawerBase","nb_sides","getCenter","getSidesData","sideCount","numerator","denominator","decimalSides","interiorAngleDegrees","interiorAngle","loadPolygonShape","loadGenericPolygonShape","loadTriangleShape","SizeUpdater","sizeVelocity","updateSize","fixFactor","SquareDrawer","StarDrawer","star","inset","strokeHslColor","_j","_k","updateStrokeColor","validTypes","promises","allSettled","textData","textParticle","randomIndexData","fillText","strokeText","loadSlim","addMover","loadBaseMover","loadParallaxMover","loadExternalAttractInteraction","loadExternalBounceInteraction","loadExternalBubbleInteraction","loadExternalConnectInteraction","loadExternalGrabInteraction","loadExternalPauseInteraction","loadExternalPushInteraction","loadExternalRemoveInteraction","loadExternalRepulseInteraction","loadParticlesAttractInteraction","loadParticlesCollisionsInteraction","loadCircleShape","imageDrawer","loadLineShape","loadSquareShape","loadStarShape","loadTextShape","loadLifeUpdater","loadOpacityUpdater","loadSizeUpdater","loadAngleUpdater","loadColorUpdater","loadStrokeColorUpdater","loadOutModesUpdater","tiltDirection","tiltAnimation","updateTilt","twinkling","twinklingOpacity","twinkleStyle","needsTwinkle","wobbleOpt","wobbleDistance","updateWobble","tsParticles","particlesJS","pJSDom","initPjs","loadRollUpdater","loadTiltUpdater","loadTwinkleUpdater","loadWobbleUpdater","loadExternalTrailInteraction","loadFull"],"mappings":"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","file":"npm.tsparticles.5c2e97bb8f5c71aef683.chunk.js","sourcesContent":["\"use strict\";\n(function () {\n \"use strict\";\n try {\n if (typeof window === \"undefined\")\n return;\n if (!(\"SVGPathSeg\" in window)) {\n window.SVGPathSeg = function (type, typeAsLetter, owningPathSegList) {\n this.pathSegType = type;\n this.pathSegTypeAsLetter = typeAsLetter;\n this._owningPathSegList = owningPathSegList;\n };\n window.SVGPathSeg.prototype.classname = \"SVGPathSeg\";\n window.SVGPathSeg.PATHSEG_UNKNOWN = 0;\n window.SVGPathSeg.PATHSEG_CLOSEPATH = 1;\n window.SVGPathSeg.PATHSEG_MOVETO_ABS = 2;\n window.SVGPathSeg.PATHSEG_MOVETO_REL = 3;\n window.SVGPathSeg.PATHSEG_LINETO_ABS = 4;\n window.SVGPathSeg.PATHSEG_LINETO_REL = 5;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS = 6;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL = 7;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS = 8;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL = 9;\n window.SVGPathSeg.PATHSEG_ARC_ABS = 10;\n window.SVGPathSeg.PATHSEG_ARC_REL = 11;\n window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS = 12;\n window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL = 13;\n window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS = 14;\n window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL = 15;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19;\n window.SVGPathSeg.prototype._segmentChanged = function () {\n if (this._owningPathSegList)\n this._owningPathSegList.segmentChanged(this);\n };\n window.SVGPathSegClosePath = function (owningPathSegList) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CLOSEPATH, \"z\", owningPathSegList);\n };\n window.SVGPathSegClosePath.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegClosePath.prototype.toString = function () {\n return \"[object SVGPathSegClosePath]\";\n };\n window.SVGPathSegClosePath.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter;\n };\n window.SVGPathSegClosePath.prototype.clone = function () {\n return new window.SVGPathSegClosePath(undefined);\n };\n window.SVGPathSegMovetoAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_ABS, \"M\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n window.SVGPathSegMovetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegMovetoAbs.prototype.toString = function () {\n return \"[object SVGPathSegMovetoAbs]\";\n };\n window.SVGPathSegMovetoAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegMovetoAbs.prototype.clone = function () {\n return new window.SVGPathSegMovetoAbs(undefined, this._x, this._y);\n };\n Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (x) {\n this._x = x;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (y) {\n this._y = y;\n this._segmentChanged();\n },\n enumerable: true,\n });\n window.SVGPathSegMovetoRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_REL, \"m\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n window.SVGPathSegMovetoRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegMovetoRel.prototype.toString = function () {\n return \"[object SVGPathSegMovetoRel]\";\n };\n window.SVGPathSegMovetoRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegMovetoRel.prototype.clone = function () {\n return new window.SVGPathSegMovetoRel(undefined, this._x, this._y);\n };\n Object.defineProperty(window.SVGPathSegMovetoRel.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (x) {\n this._x = x;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegMovetoRel.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (y) {\n this._y = y;\n this._segmentChanged();\n },\n enumerable: true,\n });\n window.SVGPathSegLinetoAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_ABS, \"L\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n window.SVGPathSegLinetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegLinetoAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoAbs]\";\n };\n window.SVGPathSegLinetoAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegLinetoAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoAbs(undefined, this._x, this._y);\n };\n Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (x) {\n this._x = x;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (y) {\n this._y = y;\n this._segmentChanged();\n },\n enumerable: true,\n });\n window.SVGPathSegLinetoRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_REL, \"l\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n window.SVGPathSegLinetoRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegLinetoRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoRel]\";\n };\n window.SVGPathSegLinetoRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegLinetoRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoRel(undefined, this._x, this._y);\n };\n Object.defineProperty(window.SVGPathSegLinetoRel.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (x) {\n this._x = x;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegLinetoRel.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (y) {\n this._y = y;\n this._segmentChanged();\n },\n enumerable: true,\n });\n window.SVGPathSegCurvetoCubicAbs = function (owningPathSegList, x, y, x1, y1, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS, \"C\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n this._x2 = x2;\n this._y2 = y2;\n };\n window.SVGPathSegCurvetoCubicAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoCubicAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicAbs]\";\n };\n window.SVGPathSegCurvetoCubicAbs.prototype._asPathString = function () {\n return (this.pathSegTypeAsLetter +\n \" \" +\n this._x1 +\n \" \" +\n this._y1 +\n \" \" +\n this._x2 +\n \" \" +\n this._y2 +\n \" \" +\n this._x +\n \" \" +\n this._y);\n };\n window.SVGPathSegCurvetoCubicAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicAbs(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2);\n };\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (x) {\n this._x = x;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (y) {\n this._y = y;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x1\", {\n get: function () {\n return this._x1;\n },\n set: function (x1) {\n this._x1 = x1;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y1\", {\n get: function () {\n return this._y1;\n },\n set: function (y1) {\n this._y1 = y1;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x2\", {\n get: function () {\n return this._x2;\n },\n set: function (x2) {\n this._x2 = x2;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y2\", {\n get: function () {\n return this._y2;\n },\n set: function (y2) {\n this._y2 = y2;\n this._segmentChanged();\n },\n enumerable: true,\n });\n window.SVGPathSegCurvetoCubicRel = function (owningPathSegList, x, y, x1, y1, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL, \"c\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n this._x2 = x2;\n this._y2 = y2;\n };\n window.SVGPathSegCurvetoCubicRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoCubicRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicRel]\";\n };\n window.SVGPathSegCurvetoCubicRel.prototype._asPathString = function () {\n return (this.pathSegTypeAsLetter +\n \" \" +\n this._x1 +\n \" \" +\n this._y1 +\n \" \" +\n this._x2 +\n \" \" +\n this._y2 +\n \" \" +\n this._x +\n \" \" +\n this._y);\n };\n window.SVGPathSegCurvetoCubicRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicRel(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2);\n };\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (x) {\n this._x = x;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (y) {\n this._y = y;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x1\", {\n get: function () {\n return this._x1;\n },\n set: function (x1) {\n this._x1 = x1;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y1\", {\n get: function () {\n return this._y1;\n },\n set: function (y1) {\n this._y1 = y1;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x2\", {\n get: function () {\n return this._x2;\n },\n set: function (x2) {\n this._x2 = x2;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y2\", {\n get: function () {\n return this._y2;\n },\n set: function (y2) {\n this._y2 = y2;\n this._segmentChanged();\n },\n enumerable: true,\n });\n window.SVGPathSegCurvetoQuadraticAbs = function (owningPathSegList, x, y, x1, y1) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS, \"Q\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n };\n window.SVGPathSegCurvetoQuadraticAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoQuadraticAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticAbs]\";\n };\n window.SVGPathSegCurvetoQuadraticAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoQuadraticAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticAbs(undefined, this._x, this._y, this._x1, this._y1);\n };\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (x) {\n this._x = x;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (y) {\n this._y = y;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"x1\", {\n get: function () {\n return this._x1;\n },\n set: function (x1) {\n this._x1 = x1;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"y1\", {\n get: function () {\n return this._y1;\n },\n set: function (y1) {\n this._y1 = y1;\n this._segmentChanged();\n },\n enumerable: true,\n });\n window.SVGPathSegCurvetoQuadraticRel = function (owningPathSegList, x, y, x1, y1) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL, \"q\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n };\n window.SVGPathSegCurvetoQuadraticRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoQuadraticRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticRel]\";\n };\n window.SVGPathSegCurvetoQuadraticRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoQuadraticRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticRel(undefined, this._x, this._y, this._x1, this._y1);\n };\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (x) {\n this._x = x;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (y) {\n this._y = y;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"x1\", {\n get: function () {\n return this._x1;\n },\n set: function (x1) {\n this._x1 = x1;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"y1\", {\n get: function () {\n return this._y1;\n },\n set: function (y1) {\n this._y1 = y1;\n this._segmentChanged();\n },\n enumerable: true,\n });\n window.SVGPathSegArcAbs = function (owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_ABS, \"A\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._r1 = r1;\n this._r2 = r2;\n this._angle = angle;\n this._largeArcFlag = largeArcFlag;\n this._sweepFlag = sweepFlag;\n };\n window.SVGPathSegArcAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegArcAbs.prototype.toString = function () {\n return \"[object SVGPathSegArcAbs]\";\n };\n window.SVGPathSegArcAbs.prototype._asPathString = function () {\n return (this.pathSegTypeAsLetter +\n \" \" +\n this._r1 +\n \" \" +\n this._r2 +\n \" \" +\n this._angle +\n \" \" +\n (this._largeArcFlag ? \"1\" : \"0\") +\n \" \" +\n (this._sweepFlag ? \"1\" : \"0\") +\n \" \" +\n this._x +\n \" \" +\n this._y);\n };\n window.SVGPathSegArcAbs.prototype.clone = function () {\n return new window.SVGPathSegArcAbs(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag);\n };\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (x) {\n this._x = x;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (y) {\n this._y = y;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"r1\", {\n get: function () {\n return this._r1;\n },\n set: function (r1) {\n this._r1 = r1;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"r2\", {\n get: function () {\n return this._r2;\n },\n set: function (r2) {\n this._r2 = r2;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"angle\", {\n get: function () {\n return this._angle;\n },\n set: function (angle) {\n this._angle = angle;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"largeArcFlag\", {\n get: function () {\n return this._largeArcFlag;\n },\n set: function (largeArcFlag) {\n this._largeArcFlag = largeArcFlag;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"sweepFlag\", {\n get: function () {\n return this._sweepFlag;\n },\n set: function (sweepFlag) {\n this._sweepFlag = sweepFlag;\n this._segmentChanged();\n },\n enumerable: true,\n });\n window.SVGPathSegArcRel = function (owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_REL, \"a\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._r1 = r1;\n this._r2 = r2;\n this._angle = angle;\n this._largeArcFlag = largeArcFlag;\n this._sweepFlag = sweepFlag;\n };\n window.SVGPathSegArcRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegArcRel.prototype.toString = function () {\n return \"[object SVGPathSegArcRel]\";\n };\n window.SVGPathSegArcRel.prototype._asPathString = function () {\n return (this.pathSegTypeAsLetter +\n \" \" +\n this._r1 +\n \" \" +\n this._r2 +\n \" \" +\n this._angle +\n \" \" +\n (this._largeArcFlag ? \"1\" : \"0\") +\n \" \" +\n (this._sweepFlag ? \"1\" : \"0\") +\n \" \" +\n this._x +\n \" \" +\n this._y);\n };\n window.SVGPathSegArcRel.prototype.clone = function () {\n return new window.SVGPathSegArcRel(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag);\n };\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (x) {\n this._x = x;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (y) {\n this._y = y;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"r1\", {\n get: function () {\n return this._r1;\n },\n set: function (r1) {\n this._r1 = r1;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"r2\", {\n get: function () {\n return this._r2;\n },\n set: function (r2) {\n this._r2 = r2;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"angle\", {\n get: function () {\n return this._angle;\n },\n set: function (angle) {\n this._angle = angle;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"largeArcFlag\", {\n get: function () {\n return this._largeArcFlag;\n },\n set: function (largeArcFlag) {\n this._largeArcFlag = largeArcFlag;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"sweepFlag\", {\n get: function () {\n return this._sweepFlag;\n },\n set: function (sweepFlag) {\n this._sweepFlag = sweepFlag;\n this._segmentChanged();\n },\n enumerable: true,\n });\n window.SVGPathSegLinetoHorizontalAbs = function (owningPathSegList, x) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS, \"H\", owningPathSegList);\n this._x = x;\n };\n window.SVGPathSegLinetoHorizontalAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegLinetoHorizontalAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoHorizontalAbs]\";\n };\n window.SVGPathSegLinetoHorizontalAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x;\n };\n window.SVGPathSegLinetoHorizontalAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoHorizontalAbs(undefined, this._x);\n };\n Object.defineProperty(window.SVGPathSegLinetoHorizontalAbs.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (x) {\n this._x = x;\n this._segmentChanged();\n },\n enumerable: true,\n });\n window.SVGPathSegLinetoHorizontalRel = function (owningPathSegList, x) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL, \"h\", owningPathSegList);\n this._x = x;\n };\n window.SVGPathSegLinetoHorizontalRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegLinetoHorizontalRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoHorizontalRel]\";\n };\n window.SVGPathSegLinetoHorizontalRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x;\n };\n window.SVGPathSegLinetoHorizontalRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoHorizontalRel(undefined, this._x);\n };\n Object.defineProperty(window.SVGPathSegLinetoHorizontalRel.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (x) {\n this._x = x;\n this._segmentChanged();\n },\n enumerable: true,\n });\n window.SVGPathSegLinetoVerticalAbs = function (owningPathSegList, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS, \"V\", owningPathSegList);\n this._y = y;\n };\n window.SVGPathSegLinetoVerticalAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegLinetoVerticalAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoVerticalAbs]\";\n };\n window.SVGPathSegLinetoVerticalAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._y;\n };\n window.SVGPathSegLinetoVerticalAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoVerticalAbs(undefined, this._y);\n };\n Object.defineProperty(window.SVGPathSegLinetoVerticalAbs.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (y) {\n this._y = y;\n this._segmentChanged();\n },\n enumerable: true,\n });\n window.SVGPathSegLinetoVerticalRel = function (owningPathSegList, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL, \"v\", owningPathSegList);\n this._y = y;\n };\n window.SVGPathSegLinetoVerticalRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegLinetoVerticalRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoVerticalRel]\";\n };\n window.SVGPathSegLinetoVerticalRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._y;\n };\n window.SVGPathSegLinetoVerticalRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoVerticalRel(undefined, this._y);\n };\n Object.defineProperty(window.SVGPathSegLinetoVerticalRel.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (y) {\n this._y = y;\n this._segmentChanged();\n },\n enumerable: true,\n });\n window.SVGPathSegCurvetoCubicSmoothAbs = function (owningPathSegList, x, y, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS, \"S\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x2 = x2;\n this._y2 = y2;\n };\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicSmoothAbs]\";\n };\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, this._x, this._y, this._x2, this._y2);\n };\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (x) {\n this._x = x;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (y) {\n this._y = y;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x2\", {\n get: function () {\n return this._x2;\n },\n set: function (x2) {\n this._x2 = x2;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y2\", {\n get: function () {\n return this._y2;\n },\n set: function (y2) {\n this._y2 = y2;\n this._segmentChanged();\n },\n enumerable: true,\n });\n window.SVGPathSegCurvetoCubicSmoothRel = function (owningPathSegList, x, y, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL, \"s\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x2 = x2;\n this._y2 = y2;\n };\n window.SVGPathSegCurvetoCubicSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoCubicSmoothRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicSmoothRel]\";\n };\n window.SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoCubicSmoothRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, this._x, this._y, this._x2, this._y2);\n };\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (x) {\n this._x = x;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (y) {\n this._y = y;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"x2\", {\n get: function () {\n return this._x2;\n },\n set: function (x2) {\n this._x2 = x2;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"y2\", {\n get: function () {\n return this._y2;\n },\n set: function (y2) {\n this._y2 = y2;\n this._segmentChanged();\n },\n enumerable: true,\n });\n window.SVGPathSegCurvetoQuadraticSmoothAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS, \"T\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticSmoothAbs]\";\n };\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, this._x, this._y);\n };\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (x) {\n this._x = x;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (y) {\n this._y = y;\n this._segmentChanged();\n },\n enumerable: true,\n });\n window.SVGPathSegCurvetoQuadraticSmoothRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL, \"t\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticSmoothRel]\";\n };\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, this._x, this._y);\n };\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (x) {\n this._x = x;\n this._segmentChanged();\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (y) {\n this._y = y;\n this._segmentChanged();\n },\n enumerable: true,\n });\n window.SVGPathElement.prototype.createSVGPathSegClosePath = function () {\n return new window.SVGPathSegClosePath(undefined);\n };\n window.SVGPathElement.prototype.createSVGPathSegMovetoAbs = function (x, y) {\n return new window.SVGPathSegMovetoAbs(undefined, x, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegMovetoRel = function (x, y) {\n return new window.SVGPathSegMovetoRel(undefined, x, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegLinetoAbs = function (x, y) {\n return new window.SVGPathSegLinetoAbs(undefined, x, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegLinetoRel = function (x, y) {\n return new window.SVGPathSegLinetoRel(undefined, x, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs = function (x, y, x1, y1, x2, y2) {\n return new window.SVGPathSegCurvetoCubicAbs(undefined, x, y, x1, y1, x2, y2);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel = function (x, y, x1, y1, x2, y2) {\n return new window.SVGPathSegCurvetoCubicRel(undefined, x, y, x1, y1, x2, y2);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs = function (x, y, x1, y1) {\n return new window.SVGPathSegCurvetoQuadraticAbs(undefined, x, y, x1, y1);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel = function (x, y, x1, y1) {\n return new window.SVGPathSegCurvetoQuadraticRel(undefined, x, y, x1, y1);\n };\n window.SVGPathElement.prototype.createSVGPathSegArcAbs = function (x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n return new window.SVGPathSegArcAbs(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag);\n };\n window.SVGPathElement.prototype.createSVGPathSegArcRel = function (x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n return new window.SVGPathSegArcRel(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag);\n };\n window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs = function (x) {\n return new window.SVGPathSegLinetoHorizontalAbs(undefined, x);\n };\n window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel = function (x) {\n return new window.SVGPathSegLinetoHorizontalRel(undefined, x);\n };\n window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs = function (y) {\n return new window.SVGPathSegLinetoVerticalAbs(undefined, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel = function (y) {\n return new window.SVGPathSegLinetoVerticalRel(undefined, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs = function (x, y, x2, y2) {\n return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, x, y, x2, y2);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel = function (x, y, x2, y2) {\n return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, x, y, x2, y2);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs = function (x, y) {\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, x, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel = function (x, y) {\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, x, y);\n };\n if (!(\"getPathSegAtLength\" in window.SVGPathElement.prototype)) {\n window.SVGPathElement.prototype.getPathSegAtLength = function (distance) {\n if (distance === undefined || !isFinite(distance))\n throw \"Invalid arguments.\";\n const measurementElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n measurementElement.setAttribute(\"d\", this.getAttribute(\"d\"));\n let lastPathSegment = measurementElement.pathSegList.numberOfItems - 1;\n if (lastPathSegment <= 0)\n return 0;\n do {\n measurementElement.pathSegList.removeItem(lastPathSegment);\n if (distance > measurementElement.getTotalLength())\n break;\n lastPathSegment--;\n } while (lastPathSegment > 0);\n return lastPathSegment;\n };\n }\n }\n if (!(\"SVGPathSegList\" in window) || !(\"appendItem\" in window.SVGPathSegList.prototype)) {\n window.SVGPathSegList = function (pathElement) {\n this._pathElement = pathElement;\n this._list = this._parsePath(this._pathElement.getAttribute(\"d\"));\n this._mutationObserverConfig = { attributes: true, attributeFilter: [\"d\"] };\n this._pathElementMutationObserver = new MutationObserver(this._updateListFromPathMutations.bind(this));\n this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n };\n window.SVGPathSegList.prototype.classname = \"SVGPathSegList\";\n Object.defineProperty(window.SVGPathSegList.prototype, \"numberOfItems\", {\n get: function () {\n this._checkPathSynchronizedToList();\n return this._list.length;\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathSegList.prototype, \"length\", {\n get: function () {\n this._checkPathSynchronizedToList();\n return this._list.length;\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathElement.prototype, \"pathSegList\", {\n get: function () {\n if (!this._pathSegList)\n this._pathSegList = new window.SVGPathSegList(this);\n return this._pathSegList;\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathElement.prototype, \"normalizedPathSegList\", {\n get: function () {\n return this.pathSegList;\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathElement.prototype, \"animatedPathSegList\", {\n get: function () {\n return this.pathSegList;\n },\n enumerable: true,\n });\n Object.defineProperty(window.SVGPathElement.prototype, \"animatedNormalizedPathSegList\", {\n get: function () {\n return this.pathSegList;\n },\n enumerable: true,\n });\n window.SVGPathSegList.prototype._checkPathSynchronizedToList = function () {\n this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords());\n };\n window.SVGPathSegList.prototype._updateListFromPathMutations = function (mutationRecords) {\n if (!this._pathElement)\n return;\n let hasPathMutations = false;\n mutationRecords.forEach(function (record) {\n if (record.attributeName == \"d\")\n hasPathMutations = true;\n });\n if (hasPathMutations)\n this._list = this._parsePath(this._pathElement.getAttribute(\"d\"));\n };\n window.SVGPathSegList.prototype._writeListToPath = function () {\n this._pathElementMutationObserver.disconnect();\n this._pathElement.setAttribute(\"d\", window.SVGPathSegList._pathSegArrayAsString(this._list));\n this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n };\n window.SVGPathSegList.prototype.segmentChanged = function (pathSeg) {\n this._writeListToPath();\n };\n window.SVGPathSegList.prototype.clear = function () {\n this._checkPathSynchronizedToList();\n this._list.forEach(function (pathSeg) {\n pathSeg._owningPathSegList = null;\n });\n this._list = [];\n this._writeListToPath();\n };\n window.SVGPathSegList.prototype.initialize = function (newItem) {\n this._checkPathSynchronizedToList();\n this._list = [newItem];\n newItem._owningPathSegList = this;\n this._writeListToPath();\n return newItem;\n };\n window.SVGPathSegList.prototype._checkValidIndex = function (index) {\n if (isNaN(index) || index < 0 || index >= this.numberOfItems)\n throw \"INDEX_SIZE_ERR\";\n };\n window.SVGPathSegList.prototype.getItem = function (index) {\n this._checkPathSynchronizedToList();\n this._checkValidIndex(index);\n return this._list[index];\n };\n window.SVGPathSegList.prototype.insertItemBefore = function (newItem, index) {\n this._checkPathSynchronizedToList();\n if (index > this.numberOfItems)\n index = this.numberOfItems;\n if (newItem._owningPathSegList) {\n newItem = newItem.clone();\n }\n this._list.splice(index, 0, newItem);\n newItem._owningPathSegList = this;\n this._writeListToPath();\n return newItem;\n };\n window.SVGPathSegList.prototype.replaceItem = function (newItem, index) {\n this._checkPathSynchronizedToList();\n if (newItem._owningPathSegList) {\n newItem = newItem.clone();\n }\n this._checkValidIndex(index);\n this._list[index] = newItem;\n newItem._owningPathSegList = this;\n this._writeListToPath();\n return newItem;\n };\n window.SVGPathSegList.prototype.removeItem = function (index) {\n this._checkPathSynchronizedToList();\n this._checkValidIndex(index);\n const item = this._list[index];\n this._list.splice(index, 1);\n this._writeListToPath();\n return item;\n };\n window.SVGPathSegList.prototype.appendItem = function (newItem) {\n this._checkPathSynchronizedToList();\n if (newItem._owningPathSegList) {\n newItem = newItem.clone();\n }\n this._list.push(newItem);\n newItem._owningPathSegList = this;\n this._writeListToPath();\n return newItem;\n };\n window.SVGPathSegList._pathSegArrayAsString = function (pathSegArray) {\n let string = \"\";\n let first = true;\n pathSegArray.forEach(function (pathSeg) {\n if (first) {\n first = false;\n string += pathSeg._asPathString();\n }\n else {\n string += \" \" + pathSeg._asPathString();\n }\n });\n return string;\n };\n window.SVGPathSegList.prototype._parsePath = function (string) {\n if (!string || string.length == 0)\n return [];\n const owningPathSegList = this;\n const Builder = function () {\n this.pathSegList = [];\n };\n Builder.prototype.appendSegment = function (pathSeg) {\n this.pathSegList.push(pathSeg);\n };\n const Source = function (string) {\n this._string = string;\n this._currentIndex = 0;\n this._endIndex = this._string.length;\n this._previousCommand = window.SVGPathSeg.PATHSEG_UNKNOWN;\n this._skipOptionalSpaces();\n };\n Source.prototype._isCurrentSpace = function () {\n const character = this._string[this._currentIndex];\n return (character <= \" \" &&\n (character == \" \" ||\n character == \"\\n\" ||\n character == \"\\t\" ||\n character == \"\\r\" ||\n character == \"\\f\"));\n };\n Source.prototype._skipOptionalSpaces = function () {\n while (this._currentIndex < this._endIndex && this._isCurrentSpace())\n this._currentIndex++;\n return this._currentIndex < this._endIndex;\n };\n Source.prototype._skipOptionalSpacesOrDelimiter = function () {\n if (this._currentIndex < this._endIndex &&\n !this._isCurrentSpace() &&\n this._string.charAt(this._currentIndex) != \",\")\n return false;\n if (this._skipOptionalSpaces()) {\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \",\") {\n this._currentIndex++;\n this._skipOptionalSpaces();\n }\n }\n return this._currentIndex < this._endIndex;\n };\n Source.prototype.hasMoreData = function () {\n return this._currentIndex < this._endIndex;\n };\n Source.prototype.peekSegmentType = function () {\n const lookahead = this._string[this._currentIndex];\n return this._pathSegTypeFromChar(lookahead);\n };\n Source.prototype._pathSegTypeFromChar = function (lookahead) {\n switch (lookahead) {\n case \"Z\":\n case \"z\":\n return window.SVGPathSeg.PATHSEG_CLOSEPATH;\n case \"M\":\n return window.SVGPathSeg.PATHSEG_MOVETO_ABS;\n case \"m\":\n return window.SVGPathSeg.PATHSEG_MOVETO_REL;\n case \"L\":\n return window.SVGPathSeg.PATHSEG_LINETO_ABS;\n case \"l\":\n return window.SVGPathSeg.PATHSEG_LINETO_REL;\n case \"C\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;\n case \"c\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;\n case \"Q\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;\n case \"q\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;\n case \"A\":\n return window.SVGPathSeg.PATHSEG_ARC_ABS;\n case \"a\":\n return window.SVGPathSeg.PATHSEG_ARC_REL;\n case \"H\":\n return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;\n case \"h\":\n return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;\n case \"V\":\n return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;\n case \"v\":\n return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;\n case \"S\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;\n case \"s\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;\n case \"T\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;\n case \"t\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;\n default:\n return window.SVGPathSeg.PATHSEG_UNKNOWN;\n }\n };\n Source.prototype._nextCommandHelper = function (lookahead, previousCommand) {\n if ((lookahead == \"+\" ||\n lookahead == \"-\" ||\n lookahead == \".\" ||\n (lookahead >= \"0\" && lookahead <= \"9\")) &&\n previousCommand != window.SVGPathSeg.PATHSEG_CLOSEPATH) {\n if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_ABS)\n return window.SVGPathSeg.PATHSEG_LINETO_ABS;\n if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_REL)\n return window.SVGPathSeg.PATHSEG_LINETO_REL;\n return previousCommand;\n }\n return window.SVGPathSeg.PATHSEG_UNKNOWN;\n };\n Source.prototype.initialCommandIsMoveTo = function () {\n if (!this.hasMoreData())\n return true;\n const command = this.peekSegmentType();\n return (command == window.SVGPathSeg.PATHSEG_MOVETO_ABS ||\n command == window.SVGPathSeg.PATHSEG_MOVETO_REL);\n };\n Source.prototype._parseNumber = function () {\n let exponent = 0;\n let integer = 0;\n let frac = 1;\n let decimal = 0;\n let sign = 1;\n let expsign = 1;\n const startIndex = this._currentIndex;\n this._skipOptionalSpaces();\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"+\")\n this._currentIndex++;\n else if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"-\") {\n this._currentIndex++;\n sign = -1;\n }\n if (this._currentIndex == this._endIndex ||\n ((this._string.charAt(this._currentIndex) < \"0\" ||\n this._string.charAt(this._currentIndex) > \"9\") &&\n this._string.charAt(this._currentIndex) != \".\"))\n return undefined;\n const startIntPartIndex = this._currentIndex;\n while (this._currentIndex < this._endIndex &&\n this._string.charAt(this._currentIndex) >= \"0\" &&\n this._string.charAt(this._currentIndex) <= \"9\")\n this._currentIndex++;\n if (this._currentIndex != startIntPartIndex) {\n let scanIntPartIndex = this._currentIndex - 1;\n let multiplier = 1;\n while (scanIntPartIndex >= startIntPartIndex) {\n integer += multiplier * (this._string.charAt(scanIntPartIndex--) - \"0\");\n multiplier *= 10;\n }\n }\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \".\") {\n this._currentIndex++;\n if (this._currentIndex >= this._endIndex ||\n this._string.charAt(this._currentIndex) < \"0\" ||\n this._string.charAt(this._currentIndex) > \"9\")\n return undefined;\n while (this._currentIndex < this._endIndex &&\n this._string.charAt(this._currentIndex) >= \"0\" &&\n this._string.charAt(this._currentIndex) <= \"9\") {\n frac *= 10;\n decimal += (this._string.charAt(this._currentIndex) - \"0\") / frac;\n this._currentIndex += 1;\n }\n }\n if (this._currentIndex != startIndex &&\n this._currentIndex + 1 < this._endIndex &&\n (this._string.charAt(this._currentIndex) == \"e\" ||\n this._string.charAt(this._currentIndex) == \"E\") &&\n this._string.charAt(this._currentIndex + 1) != \"x\" &&\n this._string.charAt(this._currentIndex + 1) != \"m\") {\n this._currentIndex++;\n if (this._string.charAt(this._currentIndex) == \"+\") {\n this._currentIndex++;\n }\n else if (this._string.charAt(this._currentIndex) == \"-\") {\n this._currentIndex++;\n expsign = -1;\n }\n if (this._currentIndex >= this._endIndex ||\n this._string.charAt(this._currentIndex) < \"0\" ||\n this._string.charAt(this._currentIndex) > \"9\")\n return undefined;\n while (this._currentIndex < this._endIndex &&\n this._string.charAt(this._currentIndex) >= \"0\" &&\n this._string.charAt(this._currentIndex) <= \"9\") {\n exponent *= 10;\n exponent += this._string.charAt(this._currentIndex) - \"0\";\n this._currentIndex++;\n }\n }\n let number = integer + decimal;\n number *= sign;\n if (exponent)\n number *= Math.pow(10, expsign * exponent);\n if (startIndex == this._currentIndex)\n return undefined;\n this._skipOptionalSpacesOrDelimiter();\n return number;\n };\n Source.prototype._parseArcFlag = function () {\n if (this._currentIndex >= this._endIndex)\n return undefined;\n let flag = false;\n const flagChar = this._string.charAt(this._currentIndex++);\n if (flagChar == \"0\")\n flag = false;\n else if (flagChar == \"1\")\n flag = true;\n else\n return undefined;\n this._skipOptionalSpacesOrDelimiter();\n return flag;\n };\n Source.prototype.parseSegment = function () {\n const lookahead = this._string[this._currentIndex];\n let command = this._pathSegTypeFromChar(lookahead);\n if (command == window.SVGPathSeg.PATHSEG_UNKNOWN) {\n if (this._previousCommand == window.SVGPathSeg.PATHSEG_UNKNOWN)\n return null;\n command = this._nextCommandHelper(lookahead, this._previousCommand);\n if (command == window.SVGPathSeg.PATHSEG_UNKNOWN)\n return null;\n }\n else {\n this._currentIndex++;\n }\n this._previousCommand = command;\n let points;\n switch (command) {\n case window.SVGPathSeg.PATHSEG_MOVETO_REL:\n return new window.SVGPathSegMovetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n case window.SVGPathSeg.PATHSEG_MOVETO_ABS:\n return new window.SVGPathSegMovetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n case window.SVGPathSeg.PATHSEG_LINETO_REL:\n return new window.SVGPathSegLinetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n case window.SVGPathSeg.PATHSEG_LINETO_ABS:\n return new window.SVGPathSegLinetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:\n return new window.SVGPathSegLinetoHorizontalRel(owningPathSegList, this._parseNumber());\n case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:\n return new window.SVGPathSegLinetoHorizontalAbs(owningPathSegList, this._parseNumber());\n case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:\n return new window.SVGPathSegLinetoVerticalRel(owningPathSegList, this._parseNumber());\n case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:\n return new window.SVGPathSegLinetoVerticalAbs(owningPathSegList, this._parseNumber());\n case window.SVGPathSeg.PATHSEG_CLOSEPATH:\n this._skipOptionalSpaces();\n return new window.SVGPathSegClosePath(owningPathSegList);\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:\n points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n x2: this._parseNumber(),\n y2: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber(),\n };\n return new window.SVGPathSegCurvetoCubicRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:\n points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n x2: this._parseNumber(),\n y2: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber(),\n };\n return new window.SVGPathSegCurvetoCubicAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:\n points = {\n x2: this._parseNumber(),\n y2: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber(),\n };\n return new window.SVGPathSegCurvetoCubicSmoothRel(owningPathSegList, points.x, points.y, points.x2, points.y2);\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:\n points = {\n x2: this._parseNumber(),\n y2: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber(),\n };\n return new window.SVGPathSegCurvetoCubicSmoothAbs(owningPathSegList, points.x, points.y, points.x2, points.y2);\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:\n points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber(),\n };\n return new window.SVGPathSegCurvetoQuadraticRel(owningPathSegList, points.x, points.y, points.x1, points.y1);\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:\n points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n x: this._parseNumber(),\n y: this._parseNumber(),\n };\n return new window.SVGPathSegCurvetoQuadraticAbs(owningPathSegList, points.x, points.y, points.x1, points.y1);\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n case window.SVGPathSeg.PATHSEG_ARC_REL:\n points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n arcAngle: this._parseNumber(),\n arcLarge: this._parseArcFlag(),\n arcSweep: this._parseArcFlag(),\n x: this._parseNumber(),\n y: this._parseNumber(),\n };\n return new window.SVGPathSegArcRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n case window.SVGPathSeg.PATHSEG_ARC_ABS:\n points = {\n x1: this._parseNumber(),\n y1: this._parseNumber(),\n arcAngle: this._parseNumber(),\n arcLarge: this._parseArcFlag(),\n arcSweep: this._parseArcFlag(),\n x: this._parseNumber(),\n y: this._parseNumber(),\n };\n return new window.SVGPathSegArcAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n default:\n throw \"Unknown path seg type.\";\n }\n };\n const builder = new Builder();\n const source = new Source(string);\n if (!source.initialCommandIsMoveTo())\n return [];\n while (source.hasMoreData()) {\n const pathSeg = source.parseSegment();\n if (!pathSeg)\n return [];\n builder.appendSegment(pathSeg);\n }\n return builder.pathSegList;\n };\n }\n }\n catch (e) {\n console.warn(\"An error occurred in tsParticles pathseg polyfill. If the Polygon Mask is not working, please open an issue here: https://github.com/matteobruni/tsparticles\", e);\n }\n})();\n","export class Constants {\n}\nConstants.generatedAttribute = \"generated\";\nConstants.randomColorValue = \"random\";\nConstants.midColorValue = \"mid\";\nConstants.touchEndEvent = \"touchend\";\nConstants.mouseDownEvent = \"mousedown\";\nConstants.mouseUpEvent = \"mouseup\";\nConstants.mouseMoveEvent = \"mousemove\";\nConstants.touchStartEvent = \"touchstart\";\nConstants.touchMoveEvent = \"touchmove\";\nConstants.mouseLeaveEvent = \"mouseleave\";\nConstants.mouseOutEvent = \"mouseout\";\nConstants.touchCancelEvent = \"touchcancel\";\nConstants.resizeEvent = \"resize\";\nConstants.visibilityChangeEvent = \"visibilitychange\";\nConstants.noPolygonDataLoaded = \"No polygon data loaded.\";\nConstants.noPolygonFound = \"No polygon found, you need to specify SVG url in config.\";\n","export class Vector {\n constructor(xOrCoords, y) {\n if (typeof xOrCoords !== \"number\" && xOrCoords) {\n this.x = xOrCoords.x;\n this.y = xOrCoords.y;\n }\n else if (xOrCoords !== undefined && y !== undefined) {\n this.x = xOrCoords;\n this.y = y;\n }\n else {\n throw new Error(\"tsParticles - Vector not initialized correctly\");\n }\n }\n static clone(source) {\n return Vector.create(source.x, source.y);\n }\n static create(x, y) {\n return new Vector(x, y);\n }\n static get origin() {\n return Vector.create(0, 0);\n }\n get angle() {\n return Math.atan2(this.y, this.x);\n }\n set angle(angle) {\n this.updateFromAngle(angle, this.length);\n }\n get length() {\n return Math.sqrt(this.getLengthSq());\n }\n set length(length) {\n this.updateFromAngle(this.angle, length);\n }\n add(v) {\n return Vector.create(this.x + v.x, this.y + v.y);\n }\n addTo(v) {\n this.x += v.x;\n this.y += v.y;\n }\n sub(v) {\n return Vector.create(this.x - v.x, this.y - v.y);\n }\n subFrom(v) {\n this.x -= v.x;\n this.y -= v.y;\n }\n mult(n) {\n return Vector.create(this.x * n, this.y * n);\n }\n multTo(n) {\n this.x *= n;\n this.y *= n;\n }\n div(n) {\n return Vector.create(this.x / n, this.y / n);\n }\n divTo(n) {\n this.x /= n;\n this.y /= n;\n }\n distanceTo(v) {\n return this.sub(v).length;\n }\n getLengthSq() {\n return this.x ** 2 + this.y ** 2;\n }\n distanceToSq(v) {\n return this.sub(v).getLengthSq();\n }\n manhattanDistanceTo(v) {\n return Math.abs(v.x - this.x) + Math.abs(v.y - this.y);\n }\n copy() {\n return Vector.clone(this);\n }\n setTo(v) {\n this.x = v.x;\n this.y = v.y;\n }\n rotate(angle) {\n return Vector.create(this.x * Math.cos(angle) - this.y * Math.sin(angle), this.x * Math.sin(angle) + this.y * Math.cos(angle));\n }\n updateFromAngle(angle, length) {\n this.x = Math.cos(angle) * length;\n this.y = Math.sin(angle) * length;\n }\n}\n","import { Vector } from \"../Core/Utils/Vector\";\nexport function clamp(num, min, max) {\n return Math.min(Math.max(num, min), max);\n}\nexport function mix(comp1, comp2, weight1, weight2) {\n return Math.floor((comp1 * weight1 + comp2 * weight2) / (weight1 + weight2));\n}\nexport function randomInRange(r) {\n const max = getRangeMax(r);\n let min = getRangeMin(r);\n if (max === min) {\n min = 0;\n }\n return Math.random() * (max - min) + min;\n}\nexport function getRangeValue(value) {\n return typeof value === \"number\" ? value : randomInRange(value);\n}\nexport function getRangeMin(value) {\n return typeof value === \"number\" ? value : value.min;\n}\nexport function getRangeMax(value) {\n return typeof value === \"number\" ? value : value.max;\n}\nexport function setRangeValue(source, value) {\n if (source === value || (value === undefined && typeof source === \"number\")) {\n return source;\n }\n const min = getRangeMin(source), max = getRangeMax(source);\n return value !== undefined\n ? {\n min: Math.min(min, value),\n max: Math.max(max, value),\n }\n : setRangeValue(min, max);\n}\nexport function getValue(options) {\n const random = options.random, { enable, minimumValue } = typeof random === \"boolean\"\n ? {\n enable: random,\n minimumValue: 0,\n }\n : random;\n return enable ? getRangeValue(setRangeValue(options.value, minimumValue)) : getRangeValue(options.value);\n}\nexport function getDistances(pointA, pointB) {\n const dx = pointA.x - pointB.x, dy = pointA.y - pointB.y;\n return { dx: dx, dy: dy, distance: Math.sqrt(dx * dx + dy * dy) };\n}\nexport function getDistance(pointA, pointB) {\n return getDistances(pointA, pointB).distance;\n}\nexport function getParticleDirectionAngle(direction) {\n if (typeof direction === \"number\") {\n return (direction * Math.PI) / 180;\n }\n else {\n switch (direction) {\n case \"top\":\n return -Math.PI / 2;\n case \"top-right\":\n return -Math.PI / 4;\n case \"right\":\n return 0;\n case \"bottom-right\":\n return Math.PI / 4;\n case \"bottom\":\n return Math.PI / 2;\n case \"bottom-left\":\n return (3 * Math.PI) / 4;\n case \"left\":\n return Math.PI;\n case \"top-left\":\n return (-3 * Math.PI) / 4;\n case \"none\":\n default:\n return Math.random() * Math.PI * 2;\n }\n }\n}\nexport function getParticleBaseVelocity(direction) {\n const baseVelocity = Vector.origin;\n baseVelocity.length = 1;\n baseVelocity.angle = direction;\n return baseVelocity;\n}\nexport function collisionVelocity(v1, v2, m1, m2) {\n return Vector.create((v1.x * (m1 - m2)) / (m1 + m2) + (v2.x * 2 * m2) / (m1 + m2), v1.y);\n}\nexport function calcEasing(value, type) {\n switch (type) {\n case \"ease-out-quad\":\n return 1 - (1 - value) ** 2;\n case \"ease-out-cubic\":\n return 1 - (1 - value) ** 3;\n case \"ease-out-quart\":\n return 1 - (1 - value) ** 4;\n case \"ease-out-quint\":\n return 1 - (1 - value) ** 5;\n case \"ease-out-expo\":\n return value === 1 ? 1 : 1 - Math.pow(2, -10 * value);\n case \"ease-out-sine\":\n return Math.sin((value * Math.PI) / 2);\n case \"ease-out-back\": {\n const c1 = 1.70158, c3 = c1 + 1;\n return 1 + c3 * Math.pow(value - 1, 3) + c1 * Math.pow(value - 1, 2);\n }\n case \"ease-out-circ\":\n return Math.sqrt(1 - Math.pow(value - 1, 2));\n default:\n return value;\n }\n}\nexport function calcPositionFromSize(data) {\n var _a, _b;\n return ((_a = data.position) === null || _a === void 0 ? void 0 : _a.x) !== undefined && ((_b = data.position) === null || _b === void 0 ? void 0 : _b.y) !== undefined\n ? {\n x: (data.position.x * data.size.width) / 100,\n y: (data.position.y * data.size.height) / 100,\n }\n : undefined;\n}\nexport function calcPositionOrRandomFromSize(data) {\n var _a, _b, _c, _d;\n return {\n x: (((_b = (_a = data.position) === null || _a === void 0 ? void 0 : _a.x) !== null && _b !== void 0 ? _b : Math.random() * 100) * data.size.width) / 100,\n y: (((_d = (_c = data.position) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : Math.random() * 100) * data.size.height) / 100,\n };\n}\nexport function calcPositionOrRandomFromSizeRanged(data) {\n var _a, _b;\n const position = {\n x: ((_a = data.position) === null || _a === void 0 ? void 0 : _a.x) !== undefined ? getRangeValue(data.position.x) : undefined,\n y: ((_b = data.position) === null || _b === void 0 ? void 0 : _b.y) !== undefined ? getRangeValue(data.position.y) : undefined,\n };\n return calcPositionOrRandomFromSize({ size: data.size, position });\n}\nexport function calcExactPositionOrRandomFromSize(data) {\n var _a, _b, _c, _d;\n return {\n x: (_b = (_a = data.position) === null || _a === void 0 ? void 0 : _a.x) !== null && _b !== void 0 ? _b : Math.random() * data.size.width,\n y: (_d = (_c = data.position) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : Math.random() * data.size.height,\n };\n}\nexport function calcExactPositionOrRandomFromSizeRanged(data) {\n var _a, _b;\n const position = {\n x: ((_a = data.position) === null || _a === void 0 ? void 0 : _a.x) !== undefined ? getRangeValue(data.position.x) : undefined,\n y: ((_b = data.position) === null || _b === void 0 ? void 0 : _b.y) !== undefined ? getRangeValue(data.position.y) : undefined,\n };\n return calcExactPositionOrRandomFromSize({ size: data.size, position });\n}\n","import { collisionVelocity, getDistances, getValue } from \"./NumberUtils\";\nimport { Vector } from \"../Core/Utils/Vector\";\nfunction rectSideBounce(pSide, pOtherSide, rectSide, rectOtherSide, velocity, factor) {\n const res = { bounced: false };\n if (pOtherSide.min < rectOtherSide.min ||\n pOtherSide.min > rectOtherSide.max ||\n pOtherSide.max < rectOtherSide.min ||\n pOtherSide.max > rectOtherSide.max) {\n return res;\n }\n if ((pSide.max >= rectSide.min && pSide.max <= (rectSide.max + rectSide.min) / 2 && velocity > 0) ||\n (pSide.min <= rectSide.max && pSide.min > (rectSide.max + rectSide.min) / 2 && velocity < 0)) {\n res.velocity = velocity * -factor;\n res.bounced = true;\n }\n return res;\n}\nfunction checkSelector(element, selectors) {\n if (!(selectors instanceof Array)) {\n return element.matches(selectors);\n }\n for (const selector of selectors) {\n if (element.matches(selector)) {\n return true;\n }\n }\n return false;\n}\nexport function isSsr() {\n return typeof window === \"undefined\" || !window || typeof window.document === \"undefined\" || !window.document;\n}\nexport function animate() {\n return isSsr()\n ? (callback) => setTimeout(callback)\n : (callback) => (window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n window.setTimeout)(callback);\n}\nexport function cancelAnimation() {\n return isSsr()\n ? (handle) => clearTimeout(handle)\n : (handle) => (window.cancelAnimationFrame ||\n window.webkitCancelRequestAnimationFrame ||\n window.mozCancelRequestAnimationFrame ||\n window.oCancelRequestAnimationFrame ||\n window.msCancelRequestAnimationFrame ||\n window.clearTimeout)(handle);\n}\nexport function isInArray(value, array) {\n return value === array || (array instanceof Array && array.indexOf(value) > -1);\n}\nexport async function loadFont(character) {\n var _a, _b;\n try {\n await document.fonts.load(`${(_a = character.weight) !== null && _a !== void 0 ? _a : \"400\"} 36px '${(_b = character.font) !== null && _b !== void 0 ? _b : \"Verdana\"}'`);\n }\n catch (_c) {\n }\n}\nexport function arrayRandomIndex(array) {\n return Math.floor(Math.random() * array.length);\n}\nexport function itemFromArray(array, index, useIndex = true) {\n const fixedIndex = index !== undefined && useIndex ? index % array.length : arrayRandomIndex(array);\n return array[fixedIndex];\n}\nexport function isPointInside(point, size, radius, direction) {\n return areBoundsInside(calculateBounds(point, radius !== null && radius !== void 0 ? radius : 0), size, direction);\n}\nexport function areBoundsInside(bounds, size, direction) {\n let inside = true;\n if (!direction || direction === \"bottom\") {\n inside = bounds.top < size.height;\n }\n if (inside && (!direction || direction === \"left\")) {\n inside = bounds.right > 0;\n }\n if (inside && (!direction || direction === \"right\")) {\n inside = bounds.left < size.width;\n }\n if (inside && (!direction || direction === \"top\")) {\n inside = bounds.bottom > 0;\n }\n return inside;\n}\nexport function calculateBounds(point, radius) {\n return {\n bottom: point.y + radius,\n left: point.x - radius,\n right: point.x + radius,\n top: point.y - radius,\n };\n}\nexport function deepExtend(destination, ...sources) {\n for (const source of sources) {\n if (source === undefined || source === null) {\n continue;\n }\n if (typeof source !== \"object\") {\n destination = source;\n continue;\n }\n const sourceIsArray = Array.isArray(source);\n if (sourceIsArray && (typeof destination !== \"object\" || !destination || !Array.isArray(destination))) {\n destination = [];\n }\n else if (!sourceIsArray && (typeof destination !== \"object\" || !destination || Array.isArray(destination))) {\n destination = {};\n }\n for (const key in source) {\n if (key === \"__proto__\") {\n continue;\n }\n const sourceDict = source, value = sourceDict[key], isObject = typeof value === \"object\", destDict = destination;\n destDict[key] =\n isObject && Array.isArray(value)\n ? value.map((v) => deepExtend(destDict[key], v))\n : deepExtend(destDict[key], value);\n }\n }\n return destination;\n}\nexport function isDivModeEnabled(mode, divs) {\n return divs instanceof Array ? !!divs.find((t) => t.enable && isInArray(mode, t.mode)) : isInArray(mode, divs.mode);\n}\nexport function divModeExecute(mode, divs, callback) {\n if (divs instanceof Array) {\n for (const div of divs) {\n const divMode = div.mode, divEnabled = div.enable;\n if (divEnabled && isInArray(mode, divMode)) {\n singleDivModeExecute(div, callback);\n }\n }\n }\n else {\n const divMode = divs.mode, divEnabled = divs.enable;\n if (divEnabled && isInArray(mode, divMode)) {\n singleDivModeExecute(divs, callback);\n }\n }\n}\nexport function singleDivModeExecute(div, callback) {\n const selectors = div.selectors;\n if (selectors instanceof Array) {\n for (const selector of selectors) {\n callback(selector, div);\n }\n }\n else {\n callback(selectors, div);\n }\n}\nexport function divMode(divs, element) {\n if (!element || !divs) {\n return;\n }\n if (divs instanceof Array) {\n return divs.find((d) => checkSelector(element, d.selectors));\n }\n else if (checkSelector(element, divs.selectors)) {\n return divs;\n }\n}\nexport function circleBounceDataFromParticle(p) {\n return {\n position: p.getPosition(),\n radius: p.getRadius(),\n mass: p.getMass(),\n velocity: p.velocity,\n factor: Vector.create(getValue(p.options.bounce.horizontal), getValue(p.options.bounce.vertical)),\n };\n}\nexport function circleBounce(p1, p2) {\n const { x: xVelocityDiff, y: yVelocityDiff } = p1.velocity.sub(p2.velocity), [pos1, pos2] = [p1.position, p2.position], { dx: xDist, dy: yDist } = getDistances(pos2, pos1);\n if (xVelocityDiff * xDist + yVelocityDiff * yDist < 0) {\n return;\n }\n const angle = -Math.atan2(yDist, xDist), m1 = p1.mass, m2 = p2.mass, u1 = p1.velocity.rotate(angle), u2 = p2.velocity.rotate(angle), v1 = collisionVelocity(u1, u2, m1, m2), v2 = collisionVelocity(u2, u1, m1, m2), vFinal1 = v1.rotate(-angle), vFinal2 = v2.rotate(-angle);\n p1.velocity.x = vFinal1.x * p1.factor.x;\n p1.velocity.y = vFinal1.y * p1.factor.y;\n p2.velocity.x = vFinal2.x * p2.factor.x;\n p2.velocity.y = vFinal2.y * p2.factor.y;\n}\nexport function rectBounce(particle, divBounds) {\n const pPos = particle.getPosition(), size = particle.getRadius(), bounds = calculateBounds(pPos, size);\n const resH = rectSideBounce({\n min: bounds.left,\n max: bounds.right,\n }, {\n min: bounds.top,\n max: bounds.bottom,\n }, {\n min: divBounds.left,\n max: divBounds.right,\n }, {\n min: divBounds.top,\n max: divBounds.bottom,\n }, particle.velocity.x, getValue(particle.options.bounce.horizontal));\n if (resH.bounced) {\n if (resH.velocity !== undefined) {\n particle.velocity.x = resH.velocity;\n }\n if (resH.position !== undefined) {\n particle.position.x = resH.position;\n }\n }\n const resV = rectSideBounce({\n min: bounds.top,\n max: bounds.bottom,\n }, {\n min: bounds.left,\n max: bounds.right,\n }, {\n min: divBounds.top,\n max: divBounds.bottom,\n }, {\n min: divBounds.left,\n max: divBounds.right,\n }, particle.velocity.y, getValue(particle.options.bounce.vertical));\n if (resV.bounced) {\n if (resV.velocity !== undefined) {\n particle.velocity.y = resV.velocity;\n }\n if (resV.position !== undefined) {\n particle.position.y = resV.position;\n }\n }\n}\n","import { getRangeValue, mix, randomInRange, setRangeValue } from \"./NumberUtils\";\nimport { Constants } from \"../Core/Utils/Constants\";\nimport { itemFromArray } from \"./Utils\";\nfunction hue2rgb(p, q, t) {\n let tCalc = t;\n if (tCalc < 0) {\n tCalc += 1;\n }\n if (tCalc > 1) {\n tCalc -= 1;\n }\n if (tCalc < 1 / 6) {\n return p + (q - p) * 6 * tCalc;\n }\n if (tCalc < 1 / 2) {\n return q;\n }\n if (tCalc < 2 / 3) {\n return p + (q - p) * (2 / 3 - tCalc) * 6;\n }\n return p;\n}\nfunction stringToRgba(input) {\n if (input.startsWith(\"rgb\")) {\n const regex = /rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([\\d.]+)\\s*)?\\)/i;\n const result = regex.exec(input);\n return result\n ? {\n a: result.length > 4 ? parseFloat(result[5]) : 1,\n b: parseInt(result[3], 10),\n g: parseInt(result[2], 10),\n r: parseInt(result[1], 10),\n }\n : undefined;\n }\n else if (input.startsWith(\"hsl\")) {\n const regex = /hsla?\\(\\s*(\\d+)\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*(,\\s*([\\d.]+)\\s*)?\\)/i;\n const result = regex.exec(input);\n return result\n ? hslaToRgba({\n a: result.length > 4 ? parseFloat(result[5]) : 1,\n h: parseInt(result[1], 10),\n l: parseInt(result[3], 10),\n s: parseInt(result[2], 10),\n })\n : undefined;\n }\n else if (input.startsWith(\"hsv\")) {\n const regex = /hsva?\\(\\s*(\\d+)°\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*(,\\s*([\\d.]+)\\s*)?\\)/i;\n const result = regex.exec(input);\n return result\n ? hsvaToRgba({\n a: result.length > 4 ? parseFloat(result[5]) : 1,\n h: parseInt(result[1], 10),\n s: parseInt(result[2], 10),\n v: parseInt(result[3], 10),\n })\n : undefined;\n }\n else {\n const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])([a-f\\d])?$/i;\n const hexFixed = input.replace(shorthandRegex, (_m, r, g, b, a) => {\n return r + r + g + g + b + b + (a !== undefined ? a + a : \"\");\n });\n const regex = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})?$/i;\n const result = regex.exec(hexFixed);\n return result\n ? {\n a: result[4] !== undefined ? parseInt(result[4], 16) / 0xff : 1,\n b: parseInt(result[3], 16),\n g: parseInt(result[2], 16),\n r: parseInt(result[1], 16),\n }\n : undefined;\n }\n}\nexport function colorToRgb(input, index, useIndex = true) {\n var _a, _b, _c;\n if (input === undefined) {\n return;\n }\n const color = typeof input === \"string\" ? { value: input } : input;\n let res;\n if (typeof color.value === \"string\") {\n res = color.value === Constants.randomColorValue ? getRandomRgbColor() : stringToRgb(color.value);\n }\n else {\n if (color.value instanceof Array) {\n const colorSelected = itemFromArray(color.value, index, useIndex);\n res = colorToRgb({ value: colorSelected });\n }\n else {\n const colorValue = color.value, rgbColor = (_a = colorValue.rgb) !== null && _a !== void 0 ? _a : color.value;\n if (rgbColor.r !== undefined) {\n res = rgbColor;\n }\n else {\n const hslColor = (_b = colorValue.hsl) !== null && _b !== void 0 ? _b : color.value;\n if (hslColor.h !== undefined && hslColor.l !== undefined) {\n res = hslToRgb(hslColor);\n }\n else {\n const hsvColor = (_c = colorValue.hsv) !== null && _c !== void 0 ? _c : color.value;\n if (hsvColor.h !== undefined && hsvColor.v !== undefined) {\n res = hsvToRgb(hsvColor);\n }\n }\n }\n }\n }\n return res;\n}\nexport function colorToHsl(color, index, useIndex = true) {\n const rgb = colorToRgb(color, index, useIndex);\n return rgb !== undefined ? rgbToHsl(rgb) : undefined;\n}\nexport function rgbToHsl(color) {\n const r1 = color.r / 255, g1 = color.g / 255, b1 = color.b / 255;\n const max = Math.max(r1, g1, b1), min = Math.min(r1, g1, b1);\n const res = {\n h: 0,\n l: (max + min) / 2,\n s: 0,\n };\n if (max !== min) {\n res.s = res.l < 0.5 ? (max - min) / (max + min) : (max - min) / (2.0 - max - min);\n res.h =\n r1 === max\n ? (g1 - b1) / (max - min)\n : (res.h = g1 === max ? 2.0 + (b1 - r1) / (max - min) : 4.0 + (r1 - g1) / (max - min));\n }\n res.l *= 100;\n res.s *= 100;\n res.h *= 60;\n if (res.h < 0) {\n res.h += 360;\n }\n return res;\n}\nexport function stringToAlpha(input) {\n var _a;\n return (_a = stringToRgba(input)) === null || _a === void 0 ? void 0 : _a.a;\n}\nexport function stringToRgb(input) {\n return stringToRgba(input);\n}\nexport function hslToRgb(hsl) {\n const result = { b: 0, g: 0, r: 0 }, hslPercent = {\n h: hsl.h / 360,\n l: hsl.l / 100,\n s: hsl.s / 100,\n };\n if (hslPercent.s === 0) {\n result.b = hslPercent.l;\n result.g = hslPercent.l;\n result.r = hslPercent.l;\n }\n else {\n const q = hslPercent.l < 0.5\n ? hslPercent.l * (1 + hslPercent.s)\n : hslPercent.l + hslPercent.s - hslPercent.l * hslPercent.s, p = 2 * hslPercent.l - q;\n result.r = hue2rgb(p, q, hslPercent.h + 1 / 3);\n result.g = hue2rgb(p, q, hslPercent.h);\n result.b = hue2rgb(p, q, hslPercent.h - 1 / 3);\n }\n result.r = Math.floor(result.r * 255);\n result.g = Math.floor(result.g * 255);\n result.b = Math.floor(result.b * 255);\n return result;\n}\nexport function hslaToRgba(hsla) {\n const rgbResult = hslToRgb(hsla);\n return {\n a: hsla.a,\n b: rgbResult.b,\n g: rgbResult.g,\n r: rgbResult.r,\n };\n}\nexport function hslToHsv(hsl) {\n const l = hsl.l / 100, sl = hsl.s / 100, v = l + sl * Math.min(l, 1 - l), sv = !v ? 0 : 2 * (1 - l / v);\n return {\n h: hsl.h,\n s: sv * 100,\n v: v * 100,\n };\n}\nexport function hslaToHsva(hsla) {\n const hsvResult = hslToHsv(hsla);\n return {\n a: hsla.a,\n h: hsvResult.h,\n s: hsvResult.s,\n v: hsvResult.v,\n };\n}\nexport function hsvToHsl(hsv) {\n const v = hsv.v / 100, sv = hsv.s / 100, l = v * (1 - sv / 2), sl = l === 0 || l === 1 ? 0 : (v - l) / Math.min(l, 1 - l);\n return {\n h: hsv.h,\n l: l * 100,\n s: sl * 100,\n };\n}\nexport function hsvaToHsla(hsva) {\n const hslResult = hsvToHsl(hsva);\n return {\n a: hsva.a,\n h: hslResult.h,\n l: hslResult.l,\n s: hslResult.s,\n };\n}\nexport function hsvToRgb(hsv) {\n const result = { b: 0, g: 0, r: 0 }, hsvPercent = {\n h: hsv.h / 60,\n s: hsv.s / 100,\n v: hsv.v / 100,\n };\n const c = hsvPercent.v * hsvPercent.s, x = c * (1 - Math.abs((hsvPercent.h % 2) - 1));\n let tempRgb;\n if (hsvPercent.h >= 0 && hsvPercent.h <= 1) {\n tempRgb = {\n r: c,\n g: x,\n b: 0,\n };\n }\n else if (hsvPercent.h > 1 && hsvPercent.h <= 2) {\n tempRgb = {\n r: x,\n g: c,\n b: 0,\n };\n }\n else if (hsvPercent.h > 2 && hsvPercent.h <= 3) {\n tempRgb = {\n r: 0,\n g: c,\n b: x,\n };\n }\n else if (hsvPercent.h > 3 && hsvPercent.h <= 4) {\n tempRgb = {\n r: 0,\n g: x,\n b: c,\n };\n }\n else if (hsvPercent.h > 4 && hsvPercent.h <= 5) {\n tempRgb = {\n r: x,\n g: 0,\n b: c,\n };\n }\n else if (hsvPercent.h > 5 && hsvPercent.h <= 6) {\n tempRgb = {\n r: c,\n g: 0,\n b: x,\n };\n }\n if (tempRgb) {\n const m = hsvPercent.v - c;\n result.r = Math.floor((tempRgb.r + m) * 255);\n result.g = Math.floor((tempRgb.g + m) * 255);\n result.b = Math.floor((tempRgb.b + m) * 255);\n }\n return result;\n}\nexport function hsvaToRgba(hsva) {\n const rgbResult = hsvToRgb(hsva);\n return {\n a: hsva.a,\n b: rgbResult.b,\n g: rgbResult.g,\n r: rgbResult.r,\n };\n}\nexport function rgbToHsv(rgb) {\n const rgbPercent = {\n r: rgb.r / 255,\n g: rgb.g / 255,\n b: rgb.b / 255,\n }, xMax = Math.max(rgbPercent.r, rgbPercent.g, rgbPercent.b), xMin = Math.min(rgbPercent.r, rgbPercent.g, rgbPercent.b), v = xMax, c = xMax - xMin;\n let h = 0;\n if (v === rgbPercent.r) {\n h = 60 * ((rgbPercent.g - rgbPercent.b) / c);\n }\n else if (v === rgbPercent.g) {\n h = 60 * (2 + (rgbPercent.b - rgbPercent.r) / c);\n }\n else if (v === rgbPercent.b) {\n h = 60 * (4 + (rgbPercent.r - rgbPercent.g) / c);\n }\n const s = !v ? 0 : c / v;\n return {\n h,\n s: s * 100,\n v: v * 100,\n };\n}\nexport function rgbaToHsva(rgba) {\n const hsvResult = rgbToHsv(rgba);\n return {\n a: rgba.a,\n h: hsvResult.h,\n s: hsvResult.s,\n v: hsvResult.v,\n };\n}\nexport function getRandomRgbColor(min) {\n const fixedMin = min !== null && min !== void 0 ? min : 0;\n return {\n b: Math.floor(randomInRange(setRangeValue(fixedMin, 256))),\n g: Math.floor(randomInRange(setRangeValue(fixedMin, 256))),\n r: Math.floor(randomInRange(setRangeValue(fixedMin, 256))),\n };\n}\nexport function getStyleFromRgb(color, opacity) {\n return `rgba(${color.r}, ${color.g}, ${color.b}, ${opacity !== null && opacity !== void 0 ? opacity : 1})`;\n}\nexport function getStyleFromHsl(color, opacity) {\n return `hsla(${color.h}, ${color.s}%, ${color.l}%, ${opacity !== null && opacity !== void 0 ? opacity : 1})`;\n}\nexport function getStyleFromHsv(color, opacity) {\n return getStyleFromHsl(hsvToHsl(color), opacity);\n}\nexport function colorMix(color1, color2, size1, size2) {\n let rgb1 = color1, rgb2 = color2;\n if (rgb1.r === undefined) {\n rgb1 = hslToRgb(color1);\n }\n if (rgb2.r === undefined) {\n rgb2 = hslToRgb(color2);\n }\n return {\n b: mix(rgb1.b, rgb2.b, size1, size2),\n g: mix(rgb1.g, rgb2.g, size1, size2),\n r: mix(rgb1.r, rgb2.r, size1, size2),\n };\n}\nexport function getLinkColor(p1, p2, linkColor) {\n var _a, _b;\n if (linkColor === Constants.randomColorValue) {\n return getRandomRgbColor();\n }\n else if (linkColor === \"mid\") {\n const sourceColor = (_a = p1.getFillColor()) !== null && _a !== void 0 ? _a : p1.getStrokeColor(), destColor = (_b = p2 === null || p2 === void 0 ? void 0 : p2.getFillColor()) !== null && _b !== void 0 ? _b : p2 === null || p2 === void 0 ? void 0 : p2.getStrokeColor();\n if (sourceColor && destColor && p2) {\n return colorMix(sourceColor, destColor, p1.getRadius(), p2.getRadius());\n }\n else {\n const hslColor = sourceColor !== null && sourceColor !== void 0 ? sourceColor : destColor;\n if (hslColor) {\n return hslToRgb(hslColor);\n }\n }\n }\n else {\n return linkColor;\n }\n}\nexport function getLinkRandomColor(optColor, blink, consent) {\n const color = typeof optColor === \"string\" ? optColor : optColor.value;\n if (color === Constants.randomColorValue) {\n if (consent) {\n return colorToRgb({\n value: color,\n });\n }\n else if (blink) {\n return Constants.randomColorValue;\n }\n else {\n return Constants.midColorValue;\n }\n }\n else {\n return colorToRgb({\n value: color,\n });\n }\n}\nexport function getHslFromAnimation(animation) {\n return animation !== undefined\n ? {\n h: animation.h.value,\n s: animation.s.value,\n l: animation.l.value,\n }\n : undefined;\n}\nexport function getHslAnimationFromHsl(hsl, animationOptions, reduceFactor) {\n const resColor = {\n h: {\n enable: false,\n value: hsl.h,\n },\n s: {\n enable: false,\n value: hsl.s,\n },\n l: {\n enable: false,\n value: hsl.l,\n },\n };\n if (animationOptions) {\n setColorAnimation(resColor.h, animationOptions.h, reduceFactor);\n setColorAnimation(resColor.s, animationOptions.s, reduceFactor);\n setColorAnimation(resColor.l, animationOptions.l, reduceFactor);\n }\n return resColor;\n}\nfunction setColorAnimation(colorValue, colorAnimation, reduceFactor) {\n colorValue.enable = colorAnimation.enable;\n if (colorValue.enable) {\n colorValue.velocity = (getRangeValue(colorAnimation.speed) / 100) * reduceFactor;\n if (colorAnimation.sync) {\n return;\n }\n colorValue.status = 0;\n colorValue.velocity *= Math.random();\n if (colorValue.value) {\n colorValue.value *= Math.random();\n }\n }\n else {\n colorValue.velocity = 0;\n }\n}\n","import { colorMix, colorToRgb, getStyleFromHsl, getStyleFromRgb } from \"./ColorUtils\";\nimport { getDistance, getDistances } from \"./NumberUtils\";\nfunction drawLine(context, begin, end) {\n context.beginPath();\n context.moveTo(begin.x, begin.y);\n context.lineTo(end.x, end.y);\n context.closePath();\n}\nfunction drawTriangle(context, p1, p2, p3) {\n context.beginPath();\n context.moveTo(p1.x, p1.y);\n context.lineTo(p2.x, p2.y);\n context.lineTo(p3.x, p3.y);\n context.closePath();\n}\nexport function paintBase(context, dimension, baseColor) {\n context.save();\n context.fillStyle = baseColor !== null && baseColor !== void 0 ? baseColor : \"rgba(0,0,0,0)\";\n context.fillRect(0, 0, dimension.width, dimension.height);\n context.restore();\n}\nexport function clear(context, dimension) {\n context.clearRect(0, 0, dimension.width, dimension.height);\n}\nexport function drawLinkLine(context, width, begin, end, maxDistance, canvasSize, warp, backgroundMask, composite, colorLine, opacity, shadow) {\n let drawn = false;\n if (getDistance(begin, end) <= maxDistance) {\n drawLine(context, begin, end);\n drawn = true;\n }\n else if (warp) {\n let pi1, pi2;\n const endNE = {\n x: end.x - canvasSize.width,\n y: end.y,\n }, d1 = getDistances(begin, endNE);\n if (d1.distance <= maxDistance) {\n const yi = begin.y - (d1.dy / d1.dx) * begin.x;\n pi1 = { x: 0, y: yi };\n pi2 = { x: canvasSize.width, y: yi };\n }\n else {\n const endSW = {\n x: end.x,\n y: end.y - canvasSize.height,\n }, d2 = getDistances(begin, endSW);\n if (d2.distance <= maxDistance) {\n const yi = begin.y - (d2.dy / d2.dx) * begin.x, xi = -yi / (d2.dy / d2.dx);\n pi1 = { x: xi, y: 0 };\n pi2 = { x: xi, y: canvasSize.height };\n }\n else {\n const endSE = {\n x: end.x - canvasSize.width,\n y: end.y - canvasSize.height,\n }, d3 = getDistances(begin, endSE);\n if (d3.distance <= maxDistance) {\n const yi = begin.y - (d3.dy / d3.dx) * begin.x, xi = -yi / (d3.dy / d3.dx);\n pi1 = { x: xi, y: yi };\n pi2 = { x: pi1.x + canvasSize.width, y: pi1.y + canvasSize.height };\n }\n }\n }\n if (pi1 && pi2) {\n drawLine(context, begin, pi1);\n drawLine(context, end, pi2);\n drawn = true;\n }\n }\n if (!drawn) {\n return;\n }\n context.lineWidth = width;\n if (backgroundMask) {\n context.globalCompositeOperation = composite;\n }\n context.strokeStyle = getStyleFromRgb(colorLine, opacity);\n if (shadow.enable) {\n const shadowColor = colorToRgb(shadow.color);\n if (shadowColor) {\n context.shadowBlur = shadow.blur;\n context.shadowColor = getStyleFromRgb(shadowColor);\n }\n }\n context.stroke();\n}\nexport function drawLinkTriangle(context, pos1, pos2, pos3, backgroundMask, composite, colorTriangle, opacityTriangle) {\n drawTriangle(context, pos1, pos2, pos3);\n if (backgroundMask) {\n context.globalCompositeOperation = composite;\n }\n context.fillStyle = getStyleFromRgb(colorTriangle, opacityTriangle);\n context.fill();\n}\nexport function drawConnectLine(context, width, lineStyle, begin, end) {\n context.save();\n drawLine(context, begin, end);\n context.lineWidth = width;\n context.strokeStyle = lineStyle;\n context.stroke();\n context.restore();\n}\nexport function gradient(context, p1, p2, opacity) {\n const gradStop = Math.floor(p2.getRadius() / p1.getRadius()), color1 = p1.getFillColor(), color2 = p2.getFillColor();\n if (!color1 || !color2) {\n return;\n }\n const sourcePos = p1.getPosition(), destPos = p2.getPosition(), midRgb = colorMix(color1, color2, p1.getRadius(), p2.getRadius()), grad = context.createLinearGradient(sourcePos.x, sourcePos.y, destPos.x, destPos.y);\n grad.addColorStop(0, getStyleFromHsl(color1, opacity));\n grad.addColorStop(gradStop > 1 ? 1 : gradStop, getStyleFromRgb(midRgb, opacity));\n grad.addColorStop(1, getStyleFromHsl(color2, opacity));\n return grad;\n}\nexport function drawGrabLine(context, width, begin, end, colorLine, opacity) {\n context.save();\n drawLine(context, begin, end);\n context.strokeStyle = getStyleFromRgb(colorLine, opacity);\n context.lineWidth = width;\n context.stroke();\n context.restore();\n}\nexport function drawParticle(container, context, particle, delta, colorStyles, backgroundMask, composite, radius, opacity, shadow) {\n var _a, _b, _c, _d;\n const pos = particle.getPosition(), tiltOptions = particle.options.tilt, rollOptions = particle.options.roll;\n context.save();\n if (tiltOptions.enable || rollOptions.enable) {\n const roll = rollOptions.enable && particle.roll, tilt = tiltOptions.enable && particle.tilt, rollHorizontal = roll && (rollOptions.mode === \"horizontal\" || rollOptions.mode === \"both\"), rollVertical = roll && (rollOptions.mode === \"vertical\" || rollOptions.mode === \"both\");\n context.setTransform(rollHorizontal ? Math.cos(particle.roll.angle) : 1, tilt ? Math.cos(particle.tilt.value) * particle.tilt.cosDirection : 0, tilt ? Math.sin(particle.tilt.value) * particle.tilt.sinDirection : 0, rollVertical ? Math.sin(particle.roll.angle) : 1, pos.x, pos.y);\n }\n else {\n context.translate(pos.x, pos.y);\n }\n context.beginPath();\n const angle = ((_b = (_a = particle.rotate) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : 0) + (particle.options.rotate.path ? particle.velocity.angle : 0);\n if (angle !== 0) {\n context.rotate(angle);\n }\n if (backgroundMask) {\n context.globalCompositeOperation = composite;\n }\n const shadowColor = particle.shadowColor;\n if (shadow.enable && shadowColor) {\n context.shadowBlur = shadow.blur;\n context.shadowColor = getStyleFromRgb(shadowColor);\n context.shadowOffsetX = shadow.offset.x;\n context.shadowOffsetY = shadow.offset.y;\n }\n if (colorStyles.fill) {\n context.fillStyle = colorStyles.fill;\n }\n const stroke = particle.stroke;\n context.lineWidth = (_c = particle.strokeWidth) !== null && _c !== void 0 ? _c : 0;\n if (colorStyles.stroke) {\n context.strokeStyle = colorStyles.stroke;\n }\n drawShape(container, context, particle, radius, opacity, delta);\n if (((_d = stroke === null || stroke === void 0 ? void 0 : stroke.width) !== null && _d !== void 0 ? _d : 0) > 0) {\n context.stroke();\n }\n if (particle.close) {\n context.closePath();\n }\n if (particle.fill) {\n context.fill();\n }\n context.restore();\n context.save();\n if (tiltOptions.enable && particle.tilt) {\n context.setTransform(1, Math.cos(particle.tilt.value) * particle.tilt.cosDirection, Math.sin(particle.tilt.value) * particle.tilt.sinDirection, 1, pos.x, pos.y);\n }\n else {\n context.translate(pos.x, pos.y);\n }\n if (angle !== 0) {\n context.rotate(angle);\n }\n if (backgroundMask) {\n context.globalCompositeOperation = composite;\n }\n drawShapeAfterEffect(container, context, particle, radius, opacity, delta);\n context.restore();\n}\nexport function drawShape(container, context, particle, radius, opacity, delta) {\n if (!particle.shape) {\n return;\n }\n const drawer = container.drawers.get(particle.shape);\n if (!drawer) {\n return;\n }\n drawer.draw(context, particle, radius, opacity, delta, container.retina.pixelRatio);\n}\nexport function drawShapeAfterEffect(container, context, particle, radius, opacity, delta) {\n if (!particle.shape) {\n return;\n }\n const drawer = container.drawers.get(particle.shape);\n if (!(drawer === null || drawer === void 0 ? void 0 : drawer.afterEffect)) {\n return;\n }\n drawer.afterEffect(context, particle, radius, opacity, delta, container.retina.pixelRatio);\n}\nexport function drawPlugin(context, plugin, delta) {\n if (!plugin.draw) {\n return;\n }\n context.save();\n plugin.draw(context, delta);\n context.restore();\n}\nexport function drawParticlePlugin(context, plugin, particle, delta) {\n if (!plugin.drawParticle) {\n return;\n }\n context.save();\n plugin.drawParticle(context, particle, delta);\n context.restore();\n}\nexport function drawEllipse(context, particle, fillColorValue, radius, opacity, width, rotation, start, end) {\n if (width <= 0) {\n return;\n }\n const pos = particle.getPosition();\n if (fillColorValue) {\n context.strokeStyle = getStyleFromHsl(fillColorValue, opacity);\n }\n context.lineWidth = width;\n const rotationRadian = (rotation * Math.PI) / 180;\n context.beginPath();\n context.ellipse(pos.x, pos.y, radius / 2, radius * 2, rotationRadian, start, end);\n context.stroke();\n}\nexport function alterHsl(color, type, value) {\n return {\n h: color.h,\n s: color.s,\n l: color.l + (type === \"darken\" ? -1 : 1) * value,\n };\n}\n","import { clear, drawConnectLine, drawGrabLine, drawParticle, drawParticlePlugin, drawPlugin, gradient, paintBase, } from \"../Utils/CanvasUtils\";\nimport { colorToHsl, colorToRgb, getStyleFromHsl, getStyleFromRgb } from \"../Utils/ColorUtils\";\nimport { Constants } from \"./Utils/Constants\";\nimport { deepExtend } from \"../Utils/Utils\";\nexport class Canvas {\n constructor(container) {\n this.container = container;\n this.size = {\n height: 0,\n width: 0,\n };\n this.context = null;\n this.generatedCanvas = false;\n }\n init() {\n this.resize();\n this.initStyle();\n this.initCover();\n this.initTrail();\n this.initBackground();\n this.paint();\n }\n loadCanvas(canvas) {\n var _a;\n if (this.generatedCanvas) {\n (_a = this.element) === null || _a === void 0 ? void 0 : _a.remove();\n }\n this.generatedCanvas =\n canvas.dataset && Constants.generatedAttribute in canvas.dataset\n ? canvas.dataset[Constants.generatedAttribute] === \"true\"\n : this.generatedCanvas;\n this.element = canvas;\n this.originalStyle = deepExtend({}, this.element.style);\n this.size.height = canvas.offsetHeight;\n this.size.width = canvas.offsetWidth;\n this.context = this.element.getContext(\"2d\");\n this.container.retina.init();\n this.initBackground();\n }\n destroy() {\n var _a;\n if (this.generatedCanvas) {\n (_a = this.element) === null || _a === void 0 ? void 0 : _a.remove();\n }\n this.draw((ctx) => {\n clear(ctx, this.size);\n });\n }\n paint() {\n const options = this.container.actualOptions;\n this.draw((ctx) => {\n if (options.backgroundMask.enable && options.backgroundMask.cover) {\n clear(ctx, this.size);\n this.paintBase(this.coverColorStyle);\n }\n else {\n this.paintBase();\n }\n });\n }\n clear() {\n const options = this.container.actualOptions, trail = options.particles.move.trail;\n if (options.backgroundMask.enable) {\n this.paint();\n }\n else if (trail.enable && trail.length > 0 && this.trailFillColor) {\n this.paintBase(getStyleFromRgb(this.trailFillColor, 1 / trail.length));\n }\n else {\n this.draw((ctx) => {\n clear(ctx, this.size);\n });\n }\n }\n async windowResize() {\n if (!this.element) {\n return;\n }\n this.resize();\n const container = this.container, needsRefresh = container.updateActualOptions();\n container.particles.setDensity();\n for (const [, plugin] of container.plugins) {\n if (plugin.resize !== undefined) {\n plugin.resize();\n }\n }\n if (needsRefresh) {\n await container.refresh();\n }\n }\n resize() {\n if (!this.element) {\n return;\n }\n const container = this.container, pxRatio = container.retina.pixelRatio, size = container.canvas.size, newSize = {\n width: this.element.offsetWidth * pxRatio,\n height: this.element.offsetHeight * pxRatio,\n };\n if (newSize.height === size.height &&\n newSize.width === size.width &&\n newSize.height === this.element.height &&\n newSize.width === this.element.width) {\n return;\n }\n const oldSize = Object.assign({}, size);\n this.element.width = size.width = this.element.offsetWidth * pxRatio;\n this.element.height = size.height = this.element.offsetHeight * pxRatio;\n if (this.container.started) {\n this.resizeFactor = {\n width: size.width / oldSize.width,\n height: size.height / oldSize.height,\n };\n }\n }\n drawConnectLine(p1, p2) {\n this.draw((ctx) => {\n var _a;\n const lineStyle = this.lineStyle(p1, p2);\n if (!lineStyle) {\n return;\n }\n const pos1 = p1.getPosition(), pos2 = p2.getPosition();\n drawConnectLine(ctx, (_a = p1.retina.linksWidth) !== null && _a !== void 0 ? _a : this.container.retina.linksWidth, lineStyle, pos1, pos2);\n });\n }\n drawGrabLine(particle, lineColor, opacity, mousePos) {\n const container = this.container;\n this.draw((ctx) => {\n var _a;\n const beginPos = particle.getPosition();\n drawGrabLine(ctx, (_a = particle.retina.linksWidth) !== null && _a !== void 0 ? _a : container.retina.linksWidth, beginPos, mousePos, lineColor, opacity);\n });\n }\n drawParticle(particle, delta) {\n var _a, _b, _c, _d, _e, _f;\n if (particle.spawning || particle.destroyed) {\n return;\n }\n const radius = particle.getRadius();\n if (radius <= 0) {\n return;\n }\n const pfColor = particle.getFillColor(), psColor = (_a = particle.getStrokeColor()) !== null && _a !== void 0 ? _a : pfColor;\n if (!pfColor && !psColor) {\n return;\n }\n let [fColor, sColor] = this.getPluginParticleColors(particle);\n if (!fColor || !sColor) {\n if (!fColor) {\n fColor = pfColor ? pfColor : undefined;\n }\n if (!sColor) {\n sColor = psColor ? psColor : undefined;\n }\n }\n const options = this.container.actualOptions, zIndexOptions = particle.options.zIndex, zOpacityFactor = (1 - particle.zIndexFactor) ** zIndexOptions.opacityRate, opacity = (_d = (_b = particle.bubble.opacity) !== null && _b !== void 0 ? _b : (_c = particle.opacity) === null || _c === void 0 ? void 0 : _c.value) !== null && _d !== void 0 ? _d : 1, strokeOpacity = (_f = (_e = particle.stroke) === null || _e === void 0 ? void 0 : _e.opacity) !== null && _f !== void 0 ? _f : opacity, zOpacity = opacity * zOpacityFactor, zStrokeOpacity = strokeOpacity * zOpacityFactor;\n const colorStyles = {\n fill: fColor ? getStyleFromHsl(fColor, zOpacity) : undefined,\n };\n colorStyles.stroke = sColor ? getStyleFromHsl(sColor, zStrokeOpacity) : colorStyles.fill;\n this.draw((ctx) => {\n const zSizeFactor = (1 - particle.zIndexFactor) ** zIndexOptions.sizeRate, container = this.container;\n for (const updater of container.particles.updaters) {\n if (updater.beforeDraw) {\n updater.beforeDraw(particle);\n }\n if (updater.getColorStyles) {\n const { fill, stroke } = updater.getColorStyles(particle, ctx, radius, zOpacity);\n if (fill) {\n colorStyles.fill = fill;\n }\n if (stroke) {\n colorStyles.stroke = stroke;\n }\n }\n }\n drawParticle(container, ctx, particle, delta, colorStyles, options.backgroundMask.enable, options.backgroundMask.composite, radius * zSizeFactor, zOpacity, particle.options.shadow);\n for (const updater of container.particles.updaters) {\n if (updater.afterDraw) {\n updater.afterDraw(particle);\n }\n }\n });\n }\n drawPlugin(plugin, delta) {\n this.draw((ctx) => {\n drawPlugin(ctx, plugin, delta);\n });\n }\n drawParticlePlugin(plugin, particle, delta) {\n this.draw((ctx) => {\n drawParticlePlugin(ctx, plugin, particle, delta);\n });\n }\n initBackground() {\n const options = this.container.actualOptions, background = options.background, element = this.element, elementStyle = element === null || element === void 0 ? void 0 : element.style;\n if (!elementStyle) {\n return;\n }\n if (background.color) {\n const color = colorToRgb(background.color);\n elementStyle.backgroundColor = color ? getStyleFromRgb(color, background.opacity) : \"\";\n }\n else {\n elementStyle.backgroundColor = \"\";\n }\n elementStyle.backgroundImage = background.image || \"\";\n elementStyle.backgroundPosition = background.position || \"\";\n elementStyle.backgroundRepeat = background.repeat || \"\";\n elementStyle.backgroundSize = background.size || \"\";\n }\n draw(cb) {\n if (!this.context) {\n return;\n }\n return cb(this.context);\n }\n initCover() {\n const options = this.container.actualOptions, cover = options.backgroundMask.cover, color = cover.color, coverRgb = colorToRgb(color);\n if (coverRgb) {\n const coverColor = {\n r: coverRgb.r,\n g: coverRgb.g,\n b: coverRgb.b,\n a: cover.opacity,\n };\n this.coverColorStyle = getStyleFromRgb(coverColor, coverColor.a);\n }\n }\n initTrail() {\n const options = this.container.actualOptions, trail = options.particles.move.trail, fillColor = colorToRgb(trail.fillColor);\n if (fillColor) {\n const trail = options.particles.move.trail;\n this.trailFillColor = {\n r: fillColor.r,\n g: fillColor.g,\n b: fillColor.b,\n a: 1 / trail.length,\n };\n }\n }\n getPluginParticleColors(particle) {\n let fColor, sColor;\n for (const [, plugin] of this.container.plugins) {\n if (!fColor && plugin.particleFillColor) {\n fColor = colorToHsl(plugin.particleFillColor(particle));\n }\n if (!sColor && plugin.particleStrokeColor) {\n sColor = colorToHsl(plugin.particleStrokeColor(particle));\n }\n if (fColor && sColor) {\n break;\n }\n }\n return [fColor, sColor];\n }\n initStyle() {\n const element = this.element, options = this.container.actualOptions;\n if (!element) {\n return;\n }\n const originalStyle = this.originalStyle;\n if (options.fullScreen.enable) {\n this.originalStyle = deepExtend({}, element.style);\n element.style.setProperty(\"position\", \"fixed\", \"important\");\n element.style.setProperty(\"z-index\", options.fullScreen.zIndex.toString(10), \"important\");\n element.style.setProperty(\"top\", \"0\", \"important\");\n element.style.setProperty(\"left\", \"0\", \"important\");\n element.style.setProperty(\"width\", \"100%\", \"important\");\n element.style.setProperty(\"height\", \"100%\", \"important\");\n }\n else if (originalStyle) {\n element.style.position = originalStyle.position;\n element.style.zIndex = originalStyle.zIndex;\n element.style.top = originalStyle.top;\n element.style.left = originalStyle.left;\n element.style.width = originalStyle.width;\n element.style.height = originalStyle.height;\n }\n for (const key in options.style) {\n if (!key || !options.style) {\n continue;\n }\n const value = options.style[key];\n if (!value) {\n continue;\n }\n element.style.setProperty(key, value, \"important\");\n }\n }\n paintBase(baseColor) {\n this.draw((ctx) => {\n paintBase(ctx, this.size, baseColor);\n });\n }\n lineStyle(p1, p2) {\n return this.draw((ctx) => {\n const options = this.container.actualOptions, connectOptions = options.interactivity.modes.connect;\n return gradient(ctx, p1, p2, connectOptions.links.opacity);\n });\n }\n}\n","import { Constants } from \"./Constants\";\nimport { isSsr } from \"../../Utils/Utils\";\nfunction manageListener(element, event, handler, add, options) {\n if (add) {\n let addOptions = { passive: true };\n if (typeof options === \"boolean\") {\n addOptions.capture = options;\n }\n else if (options !== undefined) {\n addOptions = options;\n }\n element.addEventListener(event, handler, addOptions);\n }\n else {\n const removeOptions = options;\n element.removeEventListener(event, handler, removeOptions);\n }\n}\nexport class EventListeners {\n constructor(container) {\n this.container = container;\n this.canPush = true;\n this.mouseMoveHandler = (e) => this.mouseTouchMove(e);\n this.touchStartHandler = (e) => this.mouseTouchMove(e);\n this.touchMoveHandler = (e) => this.mouseTouchMove(e);\n this.touchEndHandler = () => this.mouseTouchFinish();\n this.mouseLeaveHandler = () => this.mouseTouchFinish();\n this.touchCancelHandler = () => this.mouseTouchFinish();\n this.touchEndClickHandler = (e) => this.mouseTouchClick(e);\n this.mouseUpHandler = (e) => this.mouseTouchClick(e);\n this.mouseDownHandler = () => this.mouseDown();\n this.visibilityChangeHandler = () => this.handleVisibilityChange();\n this.themeChangeHandler = (e) => this.handleThemeChange(e);\n this.oldThemeChangeHandler = (e) => this.handleThemeChange(e);\n this.resizeHandler = () => this.handleWindowResize();\n }\n addListeners() {\n this.manageListeners(true);\n }\n removeListeners() {\n this.manageListeners(false);\n }\n manageListeners(add) {\n var _a;\n const container = this.container, options = container.actualOptions, detectType = options.interactivity.detectsOn;\n let mouseLeaveEvent = Constants.mouseLeaveEvent;\n if (detectType === \"window\") {\n container.interactivity.element = window;\n mouseLeaveEvent = Constants.mouseOutEvent;\n }\n else if (detectType === \"parent\" && container.canvas.element) {\n const canvasEl = container.canvas.element;\n container.interactivity.element = (_a = canvasEl.parentElement) !== null && _a !== void 0 ? _a : canvasEl.parentNode;\n }\n else {\n container.interactivity.element = container.canvas.element;\n }\n const mediaMatch = !isSsr() && typeof matchMedia !== \"undefined\" && matchMedia(\"(prefers-color-scheme: dark)\");\n if (mediaMatch) {\n if (mediaMatch.addEventListener !== undefined) {\n manageListener(mediaMatch, \"change\", this.themeChangeHandler, add);\n }\n else if (mediaMatch.addListener !== undefined) {\n if (add) {\n mediaMatch.addListener(this.oldThemeChangeHandler);\n }\n else {\n mediaMatch.removeListener(this.oldThemeChangeHandler);\n }\n }\n }\n const interactivityEl = container.interactivity.element;\n if (!interactivityEl) {\n return;\n }\n const html = interactivityEl;\n if (options.interactivity.events.onHover.enable || options.interactivity.events.onClick.enable) {\n manageListener(interactivityEl, Constants.mouseMoveEvent, this.mouseMoveHandler, add);\n manageListener(interactivityEl, Constants.touchStartEvent, this.touchStartHandler, add);\n manageListener(interactivityEl, Constants.touchMoveEvent, this.touchMoveHandler, add);\n if (!options.interactivity.events.onClick.enable) {\n manageListener(interactivityEl, Constants.touchEndEvent, this.touchEndHandler, add);\n }\n else {\n manageListener(interactivityEl, Constants.touchEndEvent, this.touchEndClickHandler, add);\n manageListener(interactivityEl, Constants.mouseUpEvent, this.mouseUpHandler, add);\n manageListener(interactivityEl, Constants.mouseDownEvent, this.mouseDownHandler, add);\n }\n manageListener(interactivityEl, mouseLeaveEvent, this.mouseLeaveHandler, add);\n manageListener(interactivityEl, Constants.touchCancelEvent, this.touchCancelHandler, add);\n }\n if (container.canvas.element) {\n container.canvas.element.style.pointerEvents = html === container.canvas.element ? \"initial\" : \"none\";\n }\n if (options.interactivity.events.resize) {\n if (typeof ResizeObserver !== \"undefined\") {\n if (this.resizeObserver && !add) {\n if (container.canvas.element) {\n this.resizeObserver.unobserve(container.canvas.element);\n }\n this.resizeObserver.disconnect();\n delete this.resizeObserver;\n }\n else if (!this.resizeObserver && add && container.canvas.element) {\n this.resizeObserver = new ResizeObserver((entries) => {\n const entry = entries.find((e) => e.target === container.canvas.element);\n if (!entry) {\n return;\n }\n this.handleWindowResize();\n });\n this.resizeObserver.observe(container.canvas.element);\n }\n }\n else {\n manageListener(window, Constants.resizeEvent, this.resizeHandler, add);\n }\n }\n if (document) {\n manageListener(document, Constants.visibilityChangeEvent, this.visibilityChangeHandler, add, false);\n }\n }\n handleWindowResize() {\n if (this.resizeTimeout) {\n clearTimeout(this.resizeTimeout);\n delete this.resizeTimeout;\n }\n this.resizeTimeout = setTimeout(async () => { var _a; return await ((_a = this.container.canvas) === null || _a === void 0 ? void 0 : _a.windowResize()); }, 500);\n }\n handleVisibilityChange() {\n const container = this.container, options = container.actualOptions;\n this.mouseTouchFinish();\n if (!options.pauseOnBlur) {\n return;\n }\n if (document === null || document === void 0 ? void 0 : document.hidden) {\n container.pageHidden = true;\n container.pause();\n }\n else {\n container.pageHidden = false;\n if (container.getAnimationStatus()) {\n container.play(true);\n }\n else {\n container.draw(true);\n }\n }\n }\n mouseDown() {\n const interactivity = this.container.interactivity;\n if (interactivity) {\n const mouse = interactivity.mouse;\n mouse.clicking = true;\n mouse.downPosition = mouse.position;\n }\n }\n mouseTouchMove(e) {\n var _a, _b, _c, _d, _e, _f, _g;\n const container = this.container, options = container.actualOptions;\n if (!((_a = container.interactivity) === null || _a === void 0 ? void 0 : _a.element)) {\n return;\n }\n container.interactivity.mouse.inside = true;\n let pos;\n const canvas = container.canvas.element;\n if (e.type.startsWith(\"mouse\")) {\n this.canPush = true;\n const mouseEvent = e;\n if (container.interactivity.element === window) {\n if (canvas) {\n const clientRect = canvas.getBoundingClientRect();\n pos = {\n x: mouseEvent.clientX - clientRect.left,\n y: mouseEvent.clientY - clientRect.top,\n };\n }\n }\n else if (options.interactivity.detectsOn === \"parent\") {\n const source = mouseEvent.target;\n const target = mouseEvent.currentTarget;\n const canvasEl = container.canvas.element;\n if (source && target && canvasEl) {\n const sourceRect = source.getBoundingClientRect();\n const targetRect = target.getBoundingClientRect();\n const canvasRect = canvasEl.getBoundingClientRect();\n pos = {\n x: mouseEvent.offsetX + 2 * sourceRect.left - (targetRect.left + canvasRect.left),\n y: mouseEvent.offsetY + 2 * sourceRect.top - (targetRect.top + canvasRect.top),\n };\n }\n else {\n pos = {\n x: (_b = mouseEvent.offsetX) !== null && _b !== void 0 ? _b : mouseEvent.clientX,\n y: (_c = mouseEvent.offsetY) !== null && _c !== void 0 ? _c : mouseEvent.clientY,\n };\n }\n }\n else {\n if (mouseEvent.target === container.canvas.element) {\n pos = {\n x: (_d = mouseEvent.offsetX) !== null && _d !== void 0 ? _d : mouseEvent.clientX,\n y: (_e = mouseEvent.offsetY) !== null && _e !== void 0 ? _e : mouseEvent.clientY,\n };\n }\n }\n }\n else {\n this.canPush = e.type !== \"touchmove\";\n const touchEvent = e;\n const lastTouch = touchEvent.touches[touchEvent.touches.length - 1];\n const canvasRect = canvas === null || canvas === void 0 ? void 0 : canvas.getBoundingClientRect();\n pos = {\n x: lastTouch.clientX - ((_f = canvasRect === null || canvasRect === void 0 ? void 0 : canvasRect.left) !== null && _f !== void 0 ? _f : 0),\n y: lastTouch.clientY - ((_g = canvasRect === null || canvasRect === void 0 ? void 0 : canvasRect.top) !== null && _g !== void 0 ? _g : 0),\n };\n }\n const pxRatio = container.retina.pixelRatio;\n if (pos) {\n pos.x *= pxRatio;\n pos.y *= pxRatio;\n }\n container.interactivity.mouse.position = pos;\n container.interactivity.status = Constants.mouseMoveEvent;\n }\n mouseTouchFinish() {\n const interactivity = this.container.interactivity;\n if (!interactivity) {\n return;\n }\n const mouse = interactivity.mouse;\n delete mouse.position;\n delete mouse.clickPosition;\n delete mouse.downPosition;\n interactivity.status = Constants.mouseLeaveEvent;\n mouse.inside = false;\n mouse.clicking = false;\n }\n mouseTouchClick(e) {\n const container = this.container, options = container.actualOptions, mouse = container.interactivity.mouse;\n mouse.inside = true;\n let handled = false;\n const mousePosition = mouse.position;\n if (!mousePosition || !options.interactivity.events.onClick.enable) {\n return;\n }\n for (const [, plugin] of container.plugins) {\n if (!plugin.clickPositionValid) {\n continue;\n }\n handled = plugin.clickPositionValid(mousePosition);\n if (handled) {\n break;\n }\n }\n if (!handled) {\n this.doMouseTouchClick(e);\n }\n mouse.clicking = false;\n }\n doMouseTouchClick(e) {\n const container = this.container, options = container.actualOptions;\n if (this.canPush) {\n const mousePos = container.interactivity.mouse.position;\n if (!mousePos) {\n return;\n }\n container.interactivity.mouse.clickPosition = {\n x: mousePos.x,\n y: mousePos.y,\n };\n container.interactivity.mouse.clickTime = new Date().getTime();\n const onClick = options.interactivity.events.onClick;\n if (onClick.mode instanceof Array) {\n for (const mode of onClick.mode) {\n this.handleClickMode(mode);\n }\n }\n else {\n this.handleClickMode(onClick.mode);\n }\n }\n if (e.type === \"touchend\") {\n setTimeout(() => this.mouseTouchFinish(), 500);\n }\n }\n handleThemeChange(e) {\n const mediaEvent = e, themeName = mediaEvent.matches\n ? this.container.options.defaultDarkTheme\n : this.container.options.defaultLightTheme, theme = this.container.options.themes.find((theme) => theme.name === themeName);\n if (theme && theme.default.auto) {\n this.container.loadTheme(themeName);\n }\n }\n handleClickMode(mode) {\n this.container.handleClickMode(mode);\n }\n}\n","export class FrameManager {\n constructor(container) {\n this.container = container;\n }\n async nextFrame(timestamp) {\n var _a;\n try {\n const container = this.container;\n if (container.lastFrameTime !== undefined &&\n timestamp < container.lastFrameTime + 1000 / container.fpsLimit) {\n container.draw(false);\n return;\n }\n (_a = container.lastFrameTime) !== null && _a !== void 0 ? _a : (container.lastFrameTime = timestamp);\n const deltaValue = timestamp - container.lastFrameTime, delta = {\n value: deltaValue,\n factor: (60 * deltaValue) / 1000,\n };\n container.lifeTime += delta.value;\n container.lastFrameTime = timestamp;\n if (deltaValue > 1000) {\n container.draw(false);\n return;\n }\n await container.particles.draw(delta);\n if (container.duration > 0 && container.lifeTime > container.duration) {\n container.destroy();\n return;\n }\n if (container.getAnimationStatus()) {\n container.draw(false);\n }\n }\n catch (e) {\n console.error(\"tsParticles error in animation loop\", e);\n }\n }\n}\n","export class OptionsColor {\n constructor() {\n this.value = \"#fff\";\n }\n static create(source, data) {\n const color = new OptionsColor();\n color.load(source);\n if (data !== undefined) {\n if (typeof data === \"string\" || data instanceof Array) {\n color.load({ value: data });\n }\n else {\n color.load(data);\n }\n }\n return color;\n }\n load(data) {\n if ((data === null || data === void 0 ? void 0 : data.value) === undefined) {\n return;\n }\n this.value = data.value;\n }\n}\n","import { OptionsColor } from \"../OptionsColor\";\nexport class Background {\n constructor() {\n this.color = new OptionsColor();\n this.color.value = \"\";\n this.image = \"\";\n this.position = \"\";\n this.repeat = \"\";\n this.size = \"\";\n this.opacity = 1;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.color !== undefined) {\n this.color = OptionsColor.create(this.color, data.color);\n }\n if (data.image !== undefined) {\n this.image = data.image;\n }\n if (data.position !== undefined) {\n this.position = data.position;\n }\n if (data.repeat !== undefined) {\n this.repeat = data.repeat;\n }\n if (data.size !== undefined) {\n this.size = data.size;\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n }\n}\n","import { OptionsColor } from \"../OptionsColor\";\nexport class BackgroundMaskCover {\n constructor() {\n this.color = new OptionsColor();\n this.opacity = 1;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.color !== undefined) {\n this.color = OptionsColor.create(this.color, data.color);\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n }\n}\n","import { BackgroundMaskCover } from \"./BackgroundMaskCover\";\nexport class BackgroundMask {\n constructor() {\n this.composite = \"destination-out\";\n this.cover = new BackgroundMaskCover();\n this.enable = false;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.composite !== undefined) {\n this.composite = data.composite;\n }\n if (data.cover !== undefined) {\n const cover = data.cover;\n const color = (typeof data.cover === \"string\" ? { color: data.cover } : data.cover);\n this.cover.load(cover.color !== undefined ? cover : { color: color });\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n }\n}\n","export class FullScreen {\n constructor() {\n this.enable = true;\n this.zIndex = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.zIndex !== undefined) {\n this.zIndex = data.zIndex;\n }\n }\n}\n","export class ClickEvent {\n constructor() {\n this.enable = false;\n this.mode = [];\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n }\n}\n","export class DivEvent {\n constructor() {\n this.selectors = [];\n this.enable = false;\n this.mode = [];\n this.type = \"circle\";\n }\n get elementId() {\n return this.ids;\n }\n set elementId(value) {\n this.ids = value;\n }\n get el() {\n return this.elementId;\n }\n set el(value) {\n this.elementId = value;\n }\n get ids() {\n return this.selectors instanceof Array\n ? this.selectors.map((t) => t.replace(\"#\", \"\"))\n : this.selectors.replace(\"#\", \"\");\n }\n set ids(value) {\n this.selectors = value instanceof Array ? value.map((t) => `#${t}`) : `#${value}`;\n }\n load(data) {\n var _a, _b;\n if (data === undefined) {\n return;\n }\n const ids = (_b = (_a = data.ids) !== null && _a !== void 0 ? _a : data.elementId) !== null && _b !== void 0 ? _b : data.el;\n if (ids !== undefined) {\n this.ids = ids;\n }\n if (data.selectors !== undefined) {\n this.selectors = data.selectors;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n if (data.type !== undefined) {\n this.type = data.type;\n }\n }\n}\n","export class Parallax {\n constructor() {\n this.enable = false;\n this.force = 2;\n this.smooth = 10;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.force !== undefined) {\n this.force = data.force;\n }\n if (data.smooth !== undefined) {\n this.smooth = data.smooth;\n }\n }\n}\n","import { Parallax } from \"./Parallax\";\nexport class HoverEvent {\n constructor() {\n this.enable = false;\n this.mode = [];\n this.parallax = new Parallax();\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n this.parallax.load(data.parallax);\n }\n}\n","import { ClickEvent } from \"./ClickEvent\";\nimport { DivEvent } from \"./DivEvent\";\nimport { HoverEvent } from \"./HoverEvent\";\nexport class Events {\n constructor() {\n this.onClick = new ClickEvent();\n this.onDiv = new DivEvent();\n this.onHover = new HoverEvent();\n this.resize = true;\n }\n get onclick() {\n return this.onClick;\n }\n set onclick(value) {\n this.onClick = value;\n }\n get ondiv() {\n return this.onDiv;\n }\n set ondiv(value) {\n this.onDiv = value;\n }\n get onhover() {\n return this.onHover;\n }\n set onhover(value) {\n this.onHover = value;\n }\n load(data) {\n var _a, _b, _c;\n if (data === undefined) {\n return;\n }\n this.onClick.load((_a = data.onClick) !== null && _a !== void 0 ? _a : data.onclick);\n const onDiv = (_b = data.onDiv) !== null && _b !== void 0 ? _b : data.ondiv;\n if (onDiv !== undefined) {\n if (onDiv instanceof Array) {\n this.onDiv = onDiv.map((div) => {\n const tmp = new DivEvent();\n tmp.load(div);\n return tmp;\n });\n }\n else {\n this.onDiv = new DivEvent();\n this.onDiv.load(onDiv);\n }\n }\n this.onHover.load((_c = data.onHover) !== null && _c !== void 0 ? _c : data.onhover);\n if (data.resize !== undefined) {\n this.resize = data.resize;\n }\n }\n}\n","export class Attract {\n constructor() {\n this.distance = 200;\n this.duration = 0.4;\n this.easing = \"ease-out-quad\";\n this.factor = 1;\n this.maxSpeed = 50;\n this.speed = 1;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.distance !== undefined) {\n this.distance = data.distance;\n }\n if (data.duration !== undefined) {\n this.duration = data.duration;\n }\n if (data.easing !== undefined) {\n this.easing = data.easing;\n }\n if (data.factor !== undefined) {\n this.factor = data.factor;\n }\n if (data.maxSpeed !== undefined) {\n this.maxSpeed = data.maxSpeed;\n }\n if (data.speed !== undefined) {\n this.speed = data.speed;\n }\n }\n}\n","export class Bounce {\n constructor() {\n this.distance = 200;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.distance !== undefined) {\n this.distance = data.distance;\n }\n }\n}\n","import { OptionsColor } from \"../../OptionsColor\";\nexport class BubbleBase {\n constructor() {\n this.distance = 200;\n this.duration = 0.4;\n this.mix = false;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.distance !== undefined) {\n this.distance = data.distance;\n }\n if (data.duration !== undefined) {\n this.duration = data.duration;\n }\n if (data.mix !== undefined) {\n this.mix = data.mix;\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n if (data.color !== undefined) {\n if (data.color instanceof Array) {\n this.color = data.color.map((s) => OptionsColor.create(undefined, s));\n }\n else {\n if (this.color instanceof Array) {\n this.color = new OptionsColor();\n }\n this.color = OptionsColor.create(this.color, data.color);\n }\n }\n if (data.size !== undefined) {\n this.size = data.size;\n }\n }\n}\n","import { BubbleBase } from \"./BubbleBase\";\nexport class BubbleDiv extends BubbleBase {\n constructor() {\n super();\n this.selectors = [];\n }\n get ids() {\n return this.selectors instanceof Array\n ? this.selectors.map((t) => t.replace(\"#\", \"\"))\n : this.selectors.replace(\"#\", \"\");\n }\n set ids(value) {\n this.selectors = value instanceof Array ? value.map((t) => `#${t}`) : `#${value}`;\n }\n load(data) {\n super.load(data);\n if (data === undefined) {\n return;\n }\n if (data.ids !== undefined) {\n this.ids = data.ids;\n }\n if (data.selectors !== undefined) {\n this.selectors = data.selectors;\n }\n }\n}\n","import { BubbleBase } from \"./BubbleBase\";\nimport { BubbleDiv } from \"./BubbleDiv\";\nexport class Bubble extends BubbleBase {\n load(data) {\n super.load(data);\n if (!(data !== undefined && data.divs !== undefined)) {\n return;\n }\n if (data.divs instanceof Array) {\n this.divs = data.divs.map((s) => {\n const tmp = new BubbleDiv();\n tmp.load(s);\n return tmp;\n });\n }\n else {\n if (this.divs instanceof Array || !this.divs) {\n this.divs = new BubbleDiv();\n }\n this.divs.load(data.divs);\n }\n }\n}\n","export class ConnectLinks {\n constructor() {\n this.opacity = 0.5;\n }\n load(data) {\n if (!(data !== undefined && data.opacity !== undefined)) {\n return;\n }\n this.opacity = data.opacity;\n }\n}\n","import { ConnectLinks } from \"./ConnectLinks\";\nexport class Connect {\n constructor() {\n this.distance = 80;\n this.links = new ConnectLinks();\n this.radius = 60;\n }\n get line_linked() {\n return this.links;\n }\n set line_linked(value) {\n this.links = value;\n }\n get lineLinked() {\n return this.links;\n }\n set lineLinked(value) {\n this.links = value;\n }\n load(data) {\n var _a, _b;\n if (data === undefined) {\n return;\n }\n if (data.distance !== undefined) {\n this.distance = data.distance;\n }\n this.links.load((_b = (_a = data.links) !== null && _a !== void 0 ? _a : data.lineLinked) !== null && _b !== void 0 ? _b : data.line_linked);\n if (data.radius !== undefined) {\n this.radius = data.radius;\n }\n }\n}\n","import { OptionsColor } from \"../../OptionsColor\";\nexport class GrabLinks {\n constructor() {\n this.blink = false;\n this.consent = false;\n this.opacity = 1;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.blink !== undefined) {\n this.blink = data.blink;\n }\n if (data.color !== undefined) {\n this.color = OptionsColor.create(this.color, data.color);\n }\n if (data.consent !== undefined) {\n this.consent = data.consent;\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n }\n}\n","import { GrabLinks } from \"./GrabLinks\";\nexport class Grab {\n constructor() {\n this.distance = 100;\n this.links = new GrabLinks();\n }\n get line_linked() {\n return this.links;\n }\n set line_linked(value) {\n this.links = value;\n }\n get lineLinked() {\n return this.links;\n }\n set lineLinked(value) {\n this.links = value;\n }\n load(data) {\n var _a, _b;\n if (data === undefined) {\n return;\n }\n if (data.distance !== undefined) {\n this.distance = data.distance;\n }\n this.links.load((_b = (_a = data.links) !== null && _a !== void 0 ? _a : data.lineLinked) !== null && _b !== void 0 ? _b : data.line_linked);\n }\n}\n","import { OptionsColor } from \"../../OptionsColor\";\nexport class LightGradient {\n constructor() {\n this.start = new OptionsColor();\n this.stop = new OptionsColor();\n this.start.value = \"#ffffff\";\n this.stop.value = \"#000000\";\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n this.start = OptionsColor.create(this.start, data.start);\n this.stop = OptionsColor.create(this.stop, data.stop);\n }\n}\n","import { LightGradient } from \"./LightGradient\";\nexport class LightArea {\n constructor() {\n this.gradient = new LightGradient();\n this.radius = 1000;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n this.gradient.load(data.gradient);\n if (data.radius !== undefined) {\n this.radius = data.radius;\n }\n }\n}\n","import { OptionsColor } from \"../../OptionsColor\";\nexport class LightShadow {\n constructor() {\n this.color = new OptionsColor();\n this.color.value = \"#000000\";\n this.length = 2000;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n this.color = OptionsColor.create(this.color, data.color);\n if (data.length !== undefined) {\n this.length = data.length;\n }\n }\n}\n","import { LightArea } from \"./LightArea\";\nimport { LightShadow } from \"./LightShadow\";\nexport class Light {\n constructor() {\n this.area = new LightArea();\n this.shadow = new LightShadow();\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n this.area.load(data.area);\n this.shadow.load(data.shadow);\n }\n}\n","export class Push {\n constructor() {\n this.default = true;\n this.groups = [];\n this.quantity = 4;\n }\n get particles_nb() {\n return this.quantity;\n }\n set particles_nb(value) {\n this.quantity = value;\n }\n load(data) {\n var _a;\n if (data === undefined) {\n return;\n }\n if (data.default !== undefined) {\n this.default = data.default;\n }\n if (data.groups !== undefined) {\n this.groups = data.groups.map((t) => t);\n }\n if (!this.groups.length) {\n this.default = true;\n }\n const quantity = (_a = data.quantity) !== null && _a !== void 0 ? _a : data.particles_nb;\n if (quantity !== undefined) {\n this.quantity = quantity;\n }\n }\n}\n","export class Remove {\n constructor() {\n this.quantity = 2;\n }\n get particles_nb() {\n return this.quantity;\n }\n set particles_nb(value) {\n this.quantity = value;\n }\n load(data) {\n var _a;\n if (data === undefined) {\n return;\n }\n const quantity = (_a = data.quantity) !== null && _a !== void 0 ? _a : data.particles_nb;\n if (quantity !== undefined) {\n this.quantity = quantity;\n }\n }\n}\n","export class RepulseBase {\n constructor() {\n this.distance = 200;\n this.duration = 0.4;\n this.factor = 100;\n this.speed = 1;\n this.maxSpeed = 50;\n this.easing = \"ease-out-quad\";\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.distance !== undefined) {\n this.distance = data.distance;\n }\n if (data.duration !== undefined) {\n this.duration = data.duration;\n }\n if (data.easing !== undefined) {\n this.easing = data.easing;\n }\n if (data.factor !== undefined) {\n this.factor = data.factor;\n }\n if (data.speed !== undefined) {\n this.speed = data.speed;\n }\n if (data.maxSpeed !== undefined) {\n this.maxSpeed = data.maxSpeed;\n }\n }\n}\n","import { RepulseBase } from \"./RepulseBase\";\nexport class RepulseDiv extends RepulseBase {\n constructor() {\n super();\n this.selectors = [];\n }\n get ids() {\n if (this.selectors instanceof Array) {\n return this.selectors.map((t) => t.replace(\"#\", \"\"));\n }\n else {\n return this.selectors.replace(\"#\", \"\");\n }\n }\n set ids(value) {\n if (value instanceof Array) {\n this.selectors = value.map(() => `#${value}`);\n }\n else {\n this.selectors = `#${value}`;\n }\n }\n load(data) {\n super.load(data);\n if (data === undefined) {\n return;\n }\n if (data.ids !== undefined) {\n this.ids = data.ids;\n }\n if (data.selectors !== undefined) {\n this.selectors = data.selectors;\n }\n }\n}\n","import { RepulseBase } from \"./RepulseBase\";\nimport { RepulseDiv } from \"./RepulseDiv\";\nexport class Repulse extends RepulseBase {\n load(data) {\n super.load(data);\n if ((data === null || data === void 0 ? void 0 : data.divs) === undefined) {\n return;\n }\n if (data.divs instanceof Array) {\n this.divs = data.divs.map((s) => {\n const tmp = new RepulseDiv();\n tmp.load(s);\n return tmp;\n });\n }\n else {\n if (this.divs instanceof Array || !this.divs) {\n this.divs = new RepulseDiv();\n }\n this.divs.load(data.divs);\n }\n }\n}\n","export class Slow {\n constructor() {\n this.factor = 3;\n this.radius = 200;\n }\n get active() {\n return false;\n }\n set active(_value) {\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.factor !== undefined) {\n this.factor = data.factor;\n }\n if (data.radius !== undefined) {\n this.radius = data.radius;\n }\n }\n}\n","import { deepExtend } from \"../../../../Utils/Utils\";\nexport class Trail {\n constructor() {\n this.delay = 1;\n this.pauseOnStop = false;\n this.quantity = 1;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.delay !== undefined) {\n this.delay = data.delay;\n }\n if (data.quantity !== undefined) {\n this.quantity = data.quantity;\n }\n if (data.particles !== undefined) {\n this.particles = deepExtend({}, data.particles);\n }\n if (data.pauseOnStop !== undefined) {\n this.pauseOnStop = data.pauseOnStop;\n }\n }\n}\n","import { Attract } from \"./Attract\";\nimport { Bounce } from \"./Bounce\";\nimport { Bubble } from \"./Bubble\";\nimport { Connect } from \"./Connect\";\nimport { Grab } from \"./Grab\";\nimport { Light } from \"./Light\";\nimport { Push } from \"./Push\";\nimport { Remove } from \"./Remove\";\nimport { Repulse } from \"./Repulse\";\nimport { Slow } from \"./Slow\";\nimport { Trail } from \"./Trail\";\nexport class Modes {\n constructor() {\n this.attract = new Attract();\n this.bounce = new Bounce();\n this.bubble = new Bubble();\n this.connect = new Connect();\n this.grab = new Grab();\n this.light = new Light();\n this.push = new Push();\n this.remove = new Remove();\n this.repulse = new Repulse();\n this.slow = new Slow();\n this.trail = new Trail();\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n this.attract.load(data.attract);\n this.bubble.load(data.bubble);\n this.connect.load(data.connect);\n this.grab.load(data.grab);\n this.light.load(data.light);\n this.push.load(data.push);\n this.remove.load(data.remove);\n this.repulse.load(data.repulse);\n this.slow.load(data.slow);\n this.trail.load(data.trail);\n }\n}\n","import { Events } from \"./Events/Events\";\nimport { Modes } from \"./Modes/Modes\";\nexport class Interactivity {\n constructor() {\n this.detectsOn = \"window\";\n this.events = new Events();\n this.modes = new Modes();\n }\n get detect_on() {\n return this.detectsOn;\n }\n set detect_on(value) {\n this.detectsOn = value;\n }\n load(data) {\n var _a, _b, _c;\n if (data === undefined) {\n return;\n }\n const detectsOn = (_a = data.detectsOn) !== null && _a !== void 0 ? _a : data.detect_on;\n if (detectsOn !== undefined) {\n this.detectsOn = detectsOn;\n }\n this.events.load(data.events);\n this.modes.load(data.modes);\n if (((_c = (_b = data.modes) === null || _b === void 0 ? void 0 : _b.slow) === null || _c === void 0 ? void 0 : _c.active) === true) {\n if (this.events.onHover.mode instanceof Array) {\n if (this.events.onHover.mode.indexOf(\"slow\") < 0) {\n this.events.onHover.mode.push(\"slow\");\n }\n }\n else if (this.events.onHover.mode !== \"slow\") {\n this.events.onHover.mode = [this.events.onHover.mode, \"slow\"];\n }\n }\n }\n}\n","import { deepExtend } from \"../../Utils/Utils\";\nexport class ManualParticle {\n load(data) {\n var _a, _b;\n if (!data) {\n return;\n }\n if (data.position !== undefined) {\n this.position = {\n x: (_a = data.position.x) !== null && _a !== void 0 ? _a : 50,\n y: (_b = data.position.y) !== null && _b !== void 0 ? _b : 50,\n };\n }\n if (data.options !== undefined) {\n this.options = deepExtend({}, data.options);\n }\n }\n}\n","export class MotionReduce {\n constructor() {\n this.factor = 4;\n this.value = true;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.factor !== undefined) {\n this.factor = data.factor;\n }\n if (data.value !== undefined) {\n this.value = data.value;\n }\n }\n}\n","import { MotionReduce } from \"./MotionReduce\";\nexport class Motion {\n constructor() {\n this.disable = false;\n this.reduce = new MotionReduce();\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.disable !== undefined) {\n this.disable = data.disable;\n }\n this.reduce.load(data.reduce);\n }\n}\n","import { setRangeValue } from \"../../Utils/NumberUtils\";\nexport class ColorAnimation {\n constructor() {\n this.count = 0;\n this.enable = false;\n this.offset = 0;\n this.speed = 1;\n this.sync = true;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.count !== undefined) {\n this.count = setRangeValue(data.count);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.offset !== undefined) {\n this.offset = setRangeValue(data.offset);\n }\n if (data.speed !== undefined) {\n this.speed = setRangeValue(data.speed);\n }\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n }\n}\n","import { ColorAnimation } from \"./ColorAnimation\";\nexport class HslAnimation {\n constructor() {\n this.h = new ColorAnimation();\n this.s = new ColorAnimation();\n this.l = new ColorAnimation();\n }\n load(data) {\n if (!data) {\n return;\n }\n this.h.load(data.h);\n this.s.load(data.s);\n this.l.load(data.l);\n }\n}\n","import { HslAnimation } from \"./HslAnimation\";\nimport { OptionsColor } from \"./OptionsColor\";\nexport class AnimatableColor extends OptionsColor {\n constructor() {\n super();\n this.animation = new HslAnimation();\n }\n static create(source, data) {\n const color = new AnimatableColor();\n color.load(source);\n if (data !== undefined) {\n if (typeof data === \"string\" || data instanceof Array) {\n color.load({ value: data });\n }\n else {\n color.load(data);\n }\n }\n return color;\n }\n load(data) {\n super.load(data);\n if (!data) {\n return;\n }\n const colorAnimation = data.animation;\n if (colorAnimation !== undefined) {\n if (colorAnimation.enable !== undefined) {\n this.animation.h.load(colorAnimation);\n }\n else {\n this.animation.load(data.animation);\n }\n }\n }\n}\n","import { AnimatableColor } from \"./AnimatableColor\";\nimport { setRangeValue } from \"../../Utils/NumberUtils\";\nexport class AnimatableGradient {\n constructor() {\n this.angle = new GradientAngle();\n this.colors = [];\n this.type = \"random\";\n }\n load(data) {\n if (!data) {\n return;\n }\n this.angle.load(data.angle);\n if (data.colors !== undefined) {\n this.colors = data.colors.map((s) => {\n const tmp = new AnimatableGradientColor();\n tmp.load(s);\n return tmp;\n });\n }\n if (data.type !== undefined) {\n this.type = data.type;\n }\n }\n}\nexport class GradientAngle {\n constructor() {\n this.value = 0;\n this.animation = new GradientAngleAnimation();\n this.direction = \"clockwise\";\n }\n load(data) {\n if (!data) {\n return;\n }\n this.animation.load(data.animation);\n if (data.value !== undefined) {\n this.value = data.value;\n }\n if (data.direction !== undefined) {\n this.direction = data.direction;\n }\n }\n}\nexport class GradientColorOpacity {\n constructor() {\n this.value = 0;\n this.animation = new GradientColorOpacityAnimation();\n }\n load(data) {\n if (!data) {\n return;\n }\n this.animation.load(data.animation);\n if (data.value !== undefined) {\n this.value = setRangeValue(data.value);\n }\n }\n}\nexport class AnimatableGradientColor {\n constructor() {\n this.stop = 0;\n this.value = new AnimatableColor();\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.stop !== undefined) {\n this.stop = data.stop;\n }\n this.value = AnimatableColor.create(this.value, data.value);\n if (data.opacity !== undefined) {\n this.opacity = new GradientColorOpacity();\n if (typeof data.opacity === \"number\") {\n this.opacity.value = data.opacity;\n }\n else {\n this.opacity.load(data.opacity);\n }\n }\n }\n}\nexport class GradientAngleAnimation {\n constructor() {\n this.count = 0;\n this.enable = false;\n this.speed = 0;\n this.sync = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.count !== undefined) {\n this.count = setRangeValue(data.count);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.speed !== undefined) {\n this.speed = setRangeValue(data.speed);\n }\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n }\n}\nexport class GradientColorOpacityAnimation {\n constructor() {\n this.count = 0;\n this.enable = false;\n this.speed = 0;\n this.sync = false;\n this.startValue = \"random\";\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.count !== undefined) {\n this.count = setRangeValue(data.count);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.speed !== undefined) {\n this.speed = setRangeValue(data.speed);\n }\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n if (data.startValue !== undefined) {\n this.startValue = data.startValue;\n }\n }\n}\n","export class Random {\n constructor() {\n this.enable = false;\n this.minimumValue = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.minimumValue !== undefined) {\n this.minimumValue = data.minimumValue;\n }\n }\n}\n","import { Random } from \"./Random\";\nimport { setRangeValue } from \"../../Utils/NumberUtils\";\nexport class ValueWithRandom {\n constructor() {\n this.random = new Random();\n this.value = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (typeof data.random === \"boolean\") {\n this.random.enable = data.random;\n }\n else {\n this.random.load(data.random);\n }\n if (data.value !== undefined) {\n this.value = setRangeValue(data.value, this.random.enable ? this.random.minimumValue : undefined);\n }\n }\n}\n","import { ValueWithRandom } from \"../../ValueWithRandom\";\nexport class BounceFactor extends ValueWithRandom {\n constructor() {\n super();\n this.random.minimumValue = 0.1;\n this.value = 1;\n }\n}\n","import { BounceFactor } from \"./BounceFactor\";\nexport class Bounce {\n constructor() {\n this.horizontal = new BounceFactor();\n this.vertical = new BounceFactor();\n }\n load(data) {\n if (!data) {\n return;\n }\n this.horizontal.load(data.horizontal);\n this.vertical.load(data.vertical);\n }\n}\n","export class CollisionsOverlap {\n constructor() {\n this.enable = true;\n this.retries = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.retries !== undefined) {\n this.retries = data.retries;\n }\n }\n}\n","import { Bounce } from \"../Bounce/Bounce\";\nimport { CollisionsOverlap } from \"./CollisionsOverlap\";\nexport class Collisions {\n constructor() {\n this.bounce = new Bounce();\n this.enable = false;\n this.mode = \"bounce\";\n this.overlap = new CollisionsOverlap();\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n this.bounce.load(data.bounce);\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n this.overlap.load(data.overlap);\n }\n}\n","import { ValueWithRandom } from \"../../ValueWithRandom\";\nexport class SplitFactor extends ValueWithRandom {\n constructor() {\n super();\n this.value = 3;\n }\n}\n","import { ValueWithRandom } from \"../../ValueWithRandom\";\nexport class SplitRate extends ValueWithRandom {\n constructor() {\n super();\n this.value = { min: 4, max: 9 };\n }\n}\n","import { SplitFactor } from \"./SplitFactor\";\nimport { SplitRate } from \"./SplitRate\";\nimport { deepExtend } from \"../../../../Utils/Utils\";\nexport class Split {\n constructor() {\n this.count = 1;\n this.factor = new SplitFactor();\n this.rate = new SplitRate();\n this.sizeOffset = true;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.count !== undefined) {\n this.count = data.count;\n }\n this.factor.load(data.factor);\n this.rate.load(data.rate);\n if (data.particles !== undefined) {\n this.particles = deepExtend({}, data.particles);\n }\n if (data.sizeOffset !== undefined) {\n this.sizeOffset = data.sizeOffset;\n }\n }\n}\n","import { Split } from \"./Split\";\nexport class Destroy {\n constructor() {\n this.mode = \"none\";\n this.split = new Split();\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n this.split.load(data.split);\n }\n}\n","import { ValueWithRandom } from \"../../ValueWithRandom\";\nexport class LifeDelay extends ValueWithRandom {\n constructor() {\n super();\n this.sync = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n super.load(data);\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n }\n}\n","import { ValueWithRandom } from \"../../ValueWithRandom\";\nexport class LifeDuration extends ValueWithRandom {\n constructor() {\n super();\n this.random.minimumValue = 0.0001;\n this.sync = false;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n super.load(data);\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n }\n}\n","import { LifeDelay } from \"./LifeDelay\";\nimport { LifeDuration } from \"./LifeDuration\";\nexport class Life {\n constructor() {\n this.count = 0;\n this.delay = new LifeDelay();\n this.duration = new LifeDuration();\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.count !== undefined) {\n this.count = data.count;\n }\n this.delay.load(data.delay);\n this.duration.load(data.duration);\n }\n}\n","import { OptionsColor } from \"../../OptionsColor\";\nexport class LinksShadow {\n constructor() {\n this.blur = 5;\n this.color = new OptionsColor();\n this.enable = false;\n this.color.value = \"#00ff00\";\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.blur !== undefined) {\n this.blur = data.blur;\n }\n this.color = OptionsColor.create(this.color, data.color);\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n }\n}\n","import { OptionsColor } from \"../../OptionsColor\";\nexport class LinksTriangle {\n constructor() {\n this.enable = false;\n this.frequency = 1;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.color !== undefined) {\n this.color = OptionsColor.create(this.color, data.color);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.frequency !== undefined) {\n this.frequency = data.frequency;\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n }\n}\n","import { LinksShadow } from \"./LinksShadow\";\nimport { LinksTriangle } from \"./LinksTriangle\";\nimport { OptionsColor } from \"../../OptionsColor\";\nexport class Links {\n constructor() {\n this.blink = false;\n this.color = new OptionsColor();\n this.consent = false;\n this.distance = 100;\n this.enable = false;\n this.frequency = 1;\n this.opacity = 1;\n this.shadow = new LinksShadow();\n this.triangles = new LinksTriangle();\n this.width = 1;\n this.warp = false;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.id !== undefined) {\n this.id = data.id;\n }\n if (data.blink !== undefined) {\n this.blink = data.blink;\n }\n this.color = OptionsColor.create(this.color, data.color);\n if (data.consent !== undefined) {\n this.consent = data.consent;\n }\n if (data.distance !== undefined) {\n this.distance = data.distance;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.frequency !== undefined) {\n this.frequency = data.frequency;\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n this.shadow.load(data.shadow);\n this.triangles.load(data.triangles);\n if (data.width !== undefined) {\n this.width = data.width;\n }\n if (data.warp !== undefined) {\n this.warp = data.warp;\n }\n }\n}\n","import { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class Attract {\n constructor() {\n this.distance = 200;\n this.enable = false;\n this.rotate = {\n x: 3000,\n y: 3000,\n };\n }\n get rotateX() {\n return this.rotate.x;\n }\n set rotateX(value) {\n this.rotate.x = value;\n }\n get rotateY() {\n return this.rotate.y;\n }\n set rotateY(value) {\n this.rotate.y = value;\n }\n load(data) {\n var _a, _b, _c, _d;\n if (!data) {\n return;\n }\n if (data.distance !== undefined) {\n this.distance = setRangeValue(data.distance);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n const rotateX = (_b = (_a = data.rotate) === null || _a === void 0 ? void 0 : _a.x) !== null && _b !== void 0 ? _b : data.rotateX;\n if (rotateX !== undefined) {\n this.rotate.x = rotateX;\n }\n const rotateY = (_d = (_c = data.rotate) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : data.rotateY;\n if (rotateY !== undefined) {\n this.rotate.y = rotateY;\n }\n }\n}\n","import { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class MoveAngle {\n constructor() {\n this.offset = 0;\n this.value = 90;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.offset !== undefined) {\n this.offset = setRangeValue(data.offset);\n }\n if (data.value !== undefined) {\n this.value = setRangeValue(data.value);\n }\n }\n}\n","import { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class MoveGravity {\n constructor() {\n this.acceleration = 9.81;\n this.enable = false;\n this.inverse = false;\n this.maxSpeed = 50;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.acceleration !== undefined) {\n this.acceleration = setRangeValue(data.acceleration);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.inverse !== undefined) {\n this.inverse = data.inverse;\n }\n if (data.maxSpeed !== undefined) {\n this.maxSpeed = setRangeValue(data.maxSpeed);\n }\n }\n}\n","export class OutModes {\n constructor() {\n this.default = \"out\";\n }\n load(data) {\n var _a, _b, _c, _d;\n if (!data) {\n return;\n }\n if (data.default !== undefined) {\n this.default = data.default;\n }\n this.bottom = (_a = data.bottom) !== null && _a !== void 0 ? _a : data.default;\n this.left = (_b = data.left) !== null && _b !== void 0 ? _b : data.default;\n this.right = (_c = data.right) !== null && _c !== void 0 ? _c : data.default;\n this.top = (_d = data.top) !== null && _d !== void 0 ? _d : data.default;\n }\n}\n","import { ValueWithRandom } from \"../../../ValueWithRandom\";\nexport class PathDelay extends ValueWithRandom {\n constructor() {\n super();\n }\n}\n","import { PathDelay } from \"./PathDelay\";\nimport { deepExtend } from \"../../../../../Utils/Utils\";\nexport class Path {\n constructor() {\n this.clamp = true;\n this.delay = new PathDelay();\n this.enable = false;\n this.options = {};\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.clamp !== undefined) {\n this.clamp = data.clamp;\n }\n this.delay.load(data.delay);\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n this.generator = data.generator;\n if (data.options) {\n this.options = deepExtend(this.options, data.options);\n }\n }\n}\n","import { deepExtend } from \"../../../../Utils/Utils\";\nimport { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class Spin {\n constructor() {\n this.acceleration = 0;\n this.enable = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.acceleration !== undefined) {\n this.acceleration = setRangeValue(data.acceleration);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n this.position = data.position ? deepExtend({}, data.position) : undefined;\n }\n}\n","import { OptionsColor } from \"../../OptionsColor\";\nexport class Trail {\n constructor() {\n this.enable = false;\n this.length = 10;\n this.fillColor = new OptionsColor();\n this.fillColor.value = \"#000000\";\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n this.fillColor = OptionsColor.create(this.fillColor, data.fillColor);\n if (data.length !== undefined) {\n this.length = data.length;\n }\n }\n}\n","import { Attract } from \"./Attract\";\nimport { MoveAngle } from \"./MoveAngle\";\nimport { MoveGravity } from \"./MoveGravity\";\nimport { OutModes } from \"./OutModes\";\nimport { Path } from \"./Path/Path\";\nimport { Spin } from \"./Spin\";\nimport { Trail } from \"./Trail\";\nimport { deepExtend } from \"../../../../Utils/Utils\";\nimport { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class Move {\n constructor() {\n this.angle = new MoveAngle();\n this.attract = new Attract();\n this.decay = 0;\n this.distance = {};\n this.direction = \"none\";\n this.drift = 0;\n this.enable = false;\n this.gravity = new MoveGravity();\n this.path = new Path();\n this.outModes = new OutModes();\n this.random = false;\n this.size = false;\n this.speed = 2;\n this.spin = new Spin();\n this.straight = false;\n this.trail = new Trail();\n this.vibrate = false;\n this.warp = false;\n }\n get collisions() {\n return false;\n }\n set collisions(value) {\n }\n get bounce() {\n return this.collisions;\n }\n set bounce(value) {\n this.collisions = value;\n }\n get out_mode() {\n return this.outMode;\n }\n set out_mode(value) {\n this.outMode = value;\n }\n get outMode() {\n return this.outModes.default;\n }\n set outMode(value) {\n this.outModes.default = value;\n }\n get noise() {\n return this.path;\n }\n set noise(value) {\n this.path = value;\n }\n load(data) {\n var _a, _b, _c;\n if (data === undefined) {\n return;\n }\n if (data.angle !== undefined) {\n if (typeof data.angle === \"number\") {\n this.angle.value = data.angle;\n }\n else {\n this.angle.load(data.angle);\n }\n }\n this.attract.load(data.attract);\n if (data.decay !== undefined) {\n this.decay = data.decay;\n }\n if (data.direction !== undefined) {\n this.direction = data.direction;\n }\n if (data.distance !== undefined) {\n this.distance =\n typeof data.distance === \"number\"\n ? {\n horizontal: data.distance,\n vertical: data.distance,\n }\n : deepExtend({}, data.distance);\n }\n if (data.drift !== undefined) {\n this.drift = setRangeValue(data.drift);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n this.gravity.load(data.gravity);\n const outMode = (_a = data.outMode) !== null && _a !== void 0 ? _a : data.out_mode;\n if (data.outModes !== undefined || outMode !== undefined) {\n if (typeof data.outModes === \"string\" || (data.outModes === undefined && outMode !== undefined)) {\n this.outModes.load({\n default: (_b = data.outModes) !== null && _b !== void 0 ? _b : outMode,\n });\n }\n else {\n this.outModes.load(data.outModes);\n }\n }\n this.path.load((_c = data.path) !== null && _c !== void 0 ? _c : data.noise);\n if (data.random !== undefined) {\n this.random = data.random;\n }\n if (data.size !== undefined) {\n this.size = data.size;\n }\n if (data.speed !== undefined) {\n this.speed = setRangeValue(data.speed);\n }\n this.spin.load(data.spin);\n if (data.straight !== undefined) {\n this.straight = data.straight;\n }\n this.trail.load(data.trail);\n if (data.vibrate !== undefined) {\n this.vibrate = data.vibrate;\n }\n if (data.warp !== undefined) {\n this.warp = data.warp;\n }\n }\n}\n","import { setRangeValue } from \"../../Utils/NumberUtils\";\nexport class AnimationOptions {\n constructor() {\n this.count = 0;\n this.enable = false;\n this.speed = 1;\n this.sync = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.count !== undefined) {\n this.count = setRangeValue(data.count);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.speed !== undefined) {\n this.speed = setRangeValue(data.speed);\n }\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n }\n}\n","import { AnimationOptions } from \"../../AnimationOptions\";\nexport class OpacityAnimation extends AnimationOptions {\n constructor() {\n super();\n this.destroy = \"none\";\n this.enable = false;\n this.speed = 2;\n this.startValue = \"random\";\n this.sync = false;\n }\n get opacity_min() {\n return this.minimumValue;\n }\n set opacity_min(value) {\n this.minimumValue = value;\n }\n load(data) {\n var _a;\n if (data === undefined) {\n return;\n }\n super.load(data);\n if (data.destroy !== undefined) {\n this.destroy = data.destroy;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n this.minimumValue = (_a = data.minimumValue) !== null && _a !== void 0 ? _a : data.opacity_min;\n if (data.speed !== undefined) {\n this.speed = data.speed;\n }\n if (data.startValue !== undefined) {\n this.startValue = data.startValue;\n }\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n }\n}\n","import { OpacityAnimation } from \"./OpacityAnimation\";\nimport { ValueWithRandom } from \"../../ValueWithRandom\";\nimport { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class Opacity extends ValueWithRandom {\n constructor() {\n super();\n this.animation = new OpacityAnimation();\n this.random.minimumValue = 0.1;\n this.value = 1;\n }\n get anim() {\n return this.animation;\n }\n set anim(value) {\n this.animation = value;\n }\n load(data) {\n var _a;\n if (!data) {\n return;\n }\n super.load(data);\n const animation = (_a = data.animation) !== null && _a !== void 0 ? _a : data.anim;\n if (animation !== undefined) {\n this.animation.load(animation);\n this.value = setRangeValue(this.value, this.animation.enable ? this.animation.minimumValue : undefined);\n }\n }\n}\n","import { ValueWithRandom } from \"../../ValueWithRandom\";\nexport class OrbitRotation extends ValueWithRandom {\n constructor() {\n super();\n this.value = 45;\n this.random.enable = false;\n this.random.minimumValue = 0;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n super.load(data);\n }\n}\n","import { AnimationOptions } from \"../../AnimationOptions\";\nimport { OptionsColor } from \"../../OptionsColor\";\nimport { OrbitRotation } from \"./OrbitRotation\";\nimport { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class Orbit {\n constructor() {\n this.animation = new AnimationOptions();\n this.enable = false;\n this.opacity = 1;\n this.rotation = new OrbitRotation();\n this.width = 1;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n this.animation.load(data.animation);\n this.rotation.load(data.rotation);\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.opacity !== undefined) {\n this.opacity = setRangeValue(data.opacity);\n }\n if (data.width !== undefined) {\n this.width = setRangeValue(data.width);\n }\n if (data.radius !== undefined) {\n this.radius = setRangeValue(data.radius);\n }\n if (data.color !== undefined) {\n this.color = OptionsColor.create(this.color, data.color);\n }\n }\n}\n","export class Density {\n constructor() {\n this.enable = false;\n this.area = 800;\n this.factor = 1000;\n }\n get value_area() {\n return this.area;\n }\n set value_area(value) {\n this.area = value;\n }\n load(data) {\n var _a;\n if (data === undefined) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n const area = (_a = data.area) !== null && _a !== void 0 ? _a : data.value_area;\n if (area !== undefined) {\n this.area = area;\n }\n if (data.factor !== undefined) {\n this.factor = data.factor;\n }\n }\n}\n","import { Density } from \"./Density\";\nexport class ParticlesNumber {\n constructor() {\n this.density = new Density();\n this.limit = 0;\n this.value = 100;\n }\n get max() {\n return this.limit;\n }\n set max(value) {\n this.limit = value;\n }\n load(data) {\n var _a;\n if (data === undefined) {\n return;\n }\n this.density.load(data.density);\n const limit = (_a = data.limit) !== null && _a !== void 0 ? _a : data.max;\n if (limit !== undefined) {\n this.limit = limit;\n }\n if (data.value !== undefined) {\n this.value = data.value;\n }\n }\n}\n","import { ValueWithRandom } from \"../../ValueWithRandom\";\nimport { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class Repulse extends ValueWithRandom {\n constructor() {\n super();\n this.enabled = false;\n this.distance = 1;\n this.duration = 1;\n this.factor = 1;\n this.speed = 1;\n }\n load(data) {\n super.load(data);\n if (!data) {\n return;\n }\n if (data.enabled !== undefined) {\n this.enabled = data.enabled;\n }\n if (data.distance !== undefined) {\n this.distance = setRangeValue(data.distance);\n }\n if (data.duration !== undefined) {\n this.duration = setRangeValue(data.duration);\n }\n if (data.factor !== undefined) {\n this.factor = setRangeValue(data.factor);\n }\n if (data.speed !== undefined) {\n this.speed = setRangeValue(data.speed);\n }\n }\n}\n","import { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class RollLight {\n constructor() {\n this.enable = false;\n this.value = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.value !== undefined) {\n this.value = setRangeValue(data.value);\n }\n }\n}\n","import { OptionsColor } from \"../../OptionsColor\";\nimport { RollLight } from \"./RollLight\";\nimport { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class Roll {\n constructor() {\n this.darken = new RollLight();\n this.enable = false;\n this.enlighten = new RollLight();\n this.mode = \"vertical\";\n this.speed = 25;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.backColor !== undefined) {\n this.backColor = OptionsColor.create(this.backColor, data.backColor);\n }\n this.darken.load(data.darken);\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n this.enlighten.load(data.enlighten);\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n if (data.speed !== undefined) {\n this.speed = setRangeValue(data.speed);\n }\n }\n}\n","import { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class RotateAnimation {\n constructor() {\n this.enable = false;\n this.speed = 0;\n this.sync = false;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.speed !== undefined) {\n this.speed = setRangeValue(data.speed);\n }\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n }\n}\n","import { RotateAnimation } from \"./RotateAnimation\";\nimport { ValueWithRandom } from \"../../ValueWithRandom\";\nexport class Rotate extends ValueWithRandom {\n constructor() {\n super();\n this.animation = new RotateAnimation();\n this.direction = \"clockwise\";\n this.path = false;\n this.value = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n super.load(data);\n if (data.direction !== undefined) {\n this.direction = data.direction;\n }\n this.animation.load(data.animation);\n if (data.path !== undefined) {\n this.path = data.path;\n }\n }\n}\n","import { OptionsColor } from \"../OptionsColor\";\nexport class Shadow {\n constructor() {\n this.blur = 0;\n this.color = new OptionsColor();\n this.enable = false;\n this.offset = {\n x: 0,\n y: 0,\n };\n this.color.value = \"#000000\";\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.blur !== undefined) {\n this.blur = data.blur;\n }\n this.color = OptionsColor.create(this.color, data.color);\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.offset === undefined) {\n return;\n }\n if (data.offset.x !== undefined) {\n this.offset.x = data.offset.x;\n }\n if (data.offset.y !== undefined) {\n this.offset.y = data.offset.y;\n }\n }\n}\n","import { deepExtend } from \"../../../../Utils/Utils\";\nexport class Shape {\n constructor() {\n this.options = {};\n this.type = \"circle\";\n }\n get image() {\n var _a;\n return ((_a = this.options[\"image\"]) !== null && _a !== void 0 ? _a : this.options[\"images\"]);\n }\n set image(value) {\n this.options[\"image\"] = value;\n this.options[\"images\"] = value;\n }\n get custom() {\n return this.options;\n }\n set custom(value) {\n this.options = value;\n }\n get images() {\n return this.image;\n }\n set images(value) {\n this.image = value;\n }\n get stroke() {\n return [];\n }\n set stroke(_value) {\n }\n get character() {\n var _a;\n return ((_a = this.options[\"character\"]) !== null && _a !== void 0 ? _a : this.options[\"char\"]);\n }\n set character(value) {\n this.options[\"character\"] = value;\n this.options[\"char\"] = value;\n }\n get polygon() {\n var _a;\n return ((_a = this.options[\"polygon\"]) !== null && _a !== void 0 ? _a : this.options[\"star\"]);\n }\n set polygon(value) {\n this.options[\"polygon\"] = value;\n this.options[\"star\"] = value;\n }\n load(data) {\n var _a, _b, _c;\n if (data === undefined) {\n return;\n }\n const options = (_a = data.options) !== null && _a !== void 0 ? _a : data.custom;\n if (options !== undefined) {\n for (const shape in options) {\n const item = options[shape];\n if (item !== undefined) {\n this.options[shape] = deepExtend((_b = this.options[shape]) !== null && _b !== void 0 ? _b : {}, item);\n }\n }\n }\n this.loadShape(data.character, \"character\", \"char\", true);\n this.loadShape(data.polygon, \"polygon\", \"star\", false);\n this.loadShape((_c = data.image) !== null && _c !== void 0 ? _c : data.images, \"image\", \"images\", true);\n if (data.type !== undefined) {\n this.type = data.type;\n }\n }\n loadShape(item, mainKey, altKey, altOverride) {\n var _a, _b, _c, _d;\n if (item === undefined) {\n return;\n }\n if (item instanceof Array) {\n if (!(this.options[mainKey] instanceof Array)) {\n this.options[mainKey] = [];\n if (!this.options[altKey] || altOverride) {\n this.options[altKey] = [];\n }\n }\n this.options[mainKey] = deepExtend((_a = this.options[mainKey]) !== null && _a !== void 0 ? _a : [], item);\n if (!this.options[altKey] || altOverride) {\n this.options[altKey] = deepExtend((_b = this.options[altKey]) !== null && _b !== void 0 ? _b : [], item);\n }\n }\n else {\n if (this.options[mainKey] instanceof Array) {\n this.options[mainKey] = {};\n if (!this.options[altKey] || altOverride) {\n this.options[altKey] = {};\n }\n }\n this.options[mainKey] = deepExtend((_c = this.options[mainKey]) !== null && _c !== void 0 ? _c : {}, item);\n if (!this.options[altKey] || altOverride) {\n this.options[altKey] = deepExtend((_d = this.options[altKey]) !== null && _d !== void 0 ? _d : {}, item);\n }\n }\n }\n}\n","import { AnimationOptions } from \"../../AnimationOptions\";\nexport class SizeAnimation extends AnimationOptions {\n constructor() {\n super();\n this.destroy = \"none\";\n this.enable = false;\n this.speed = 5;\n this.startValue = \"random\";\n this.sync = false;\n }\n get size_min() {\n return this.minimumValue;\n }\n set size_min(value) {\n this.minimumValue = value;\n }\n load(data) {\n var _a;\n if (data === undefined) {\n return;\n }\n super.load(data);\n if (data.destroy !== undefined) {\n this.destroy = data.destroy;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n this.minimumValue = (_a = data.minimumValue) !== null && _a !== void 0 ? _a : data.size_min;\n if (data.speed !== undefined) {\n this.speed = data.speed;\n }\n if (data.startValue !== undefined) {\n this.startValue = data.startValue;\n }\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n }\n}\n","import { SizeAnimation } from \"./SizeAnimation\";\nimport { ValueWithRandom } from \"../../ValueWithRandom\";\nimport { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class Size extends ValueWithRandom {\n constructor() {\n super();\n this.animation = new SizeAnimation();\n this.random.minimumValue = 1;\n this.value = 3;\n }\n get anim() {\n return this.animation;\n }\n set anim(value) {\n this.animation = value;\n }\n load(data) {\n var _a;\n if (!data) {\n return;\n }\n super.load(data);\n const animation = (_a = data.animation) !== null && _a !== void 0 ? _a : data.anim;\n if (animation !== undefined) {\n this.animation.load(animation);\n this.value = setRangeValue(this.value, this.animation.enable ? this.animation.minimumValue : undefined);\n }\n }\n}\n","import { AnimatableColor } from \"../AnimatableColor\";\nexport class Stroke {\n constructor() {\n this.width = 0;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.color !== undefined) {\n this.color = AnimatableColor.create(this.color, data.color);\n }\n if (data.width !== undefined) {\n this.width = data.width;\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n }\n}\n","import { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class TiltAnimation {\n constructor() {\n this.enable = false;\n this.speed = 0;\n this.sync = false;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.speed !== undefined) {\n this.speed = setRangeValue(data.speed);\n }\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n }\n}\n","import { TiltAnimation } from \"./TiltAnimation\";\nimport { ValueWithRandom } from \"../../ValueWithRandom\";\nexport class Tilt extends ValueWithRandom {\n constructor() {\n super();\n this.animation = new TiltAnimation();\n this.direction = \"clockwise\";\n this.enable = false;\n this.value = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n super.load(data);\n this.animation.load(data.animation);\n if (data.direction !== undefined) {\n this.direction = data.direction;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n }\n}\n","import { OptionsColor } from \"../../OptionsColor\";\nimport { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class TwinkleValues {\n constructor() {\n this.enable = false;\n this.frequency = 0.05;\n this.opacity = 1;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.color !== undefined) {\n this.color = OptionsColor.create(this.color, data.color);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.frequency !== undefined) {\n this.frequency = data.frequency;\n }\n if (data.opacity !== undefined) {\n this.opacity = setRangeValue(data.opacity);\n }\n }\n}\n","import { TwinkleValues } from \"./TwinkleValues\";\nexport class Twinkle {\n constructor() {\n this.lines = new TwinkleValues();\n this.particles = new TwinkleValues();\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n this.lines.load(data.lines);\n this.particles.load(data.particles);\n }\n}\n","import { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class Wobble {\n constructor() {\n this.distance = 5;\n this.enable = false;\n this.speed = 50;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.distance !== undefined) {\n this.distance = setRangeValue(data.distance);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.speed !== undefined) {\n this.speed = setRangeValue(data.speed);\n }\n }\n}\n","import { ValueWithRandom } from \"../../ValueWithRandom\";\nexport class ZIndex extends ValueWithRandom {\n constructor() {\n super();\n this.opacityRate = 1;\n this.sizeRate = 1;\n this.velocityRate = 1;\n }\n load(data) {\n super.load(data);\n if (!data) {\n return;\n }\n if (data.opacityRate !== undefined) {\n this.opacityRate = data.opacityRate;\n }\n if (data.sizeRate !== undefined) {\n this.sizeRate = data.sizeRate;\n }\n if (data.velocityRate !== undefined) {\n this.velocityRate = data.velocityRate;\n }\n }\n}\n","import { AnimatableColor } from \"../AnimatableColor\";\nimport { AnimatableGradient } from \"../AnimatableGradient\";\nimport { Bounce } from \"./Bounce/Bounce\";\nimport { Collisions } from \"./Collisions/Collisions\";\nimport { Destroy } from \"./Destroy/Destroy\";\nimport { Life } from \"./Life/Life\";\nimport { Links } from \"./Links/Links\";\nimport { Move } from \"./Move/Move\";\nimport { Opacity } from \"./Opacity/Opacity\";\nimport { Orbit } from \"./Orbit/Orbit\";\nimport { ParticlesNumber } from \"./Number/ParticlesNumber\";\nimport { Repulse } from \"./Repulse/Repulse\";\nimport { Roll } from \"./Roll/Roll\";\nimport { Rotate } from \"./Rotate/Rotate\";\nimport { Shadow } from \"./Shadow\";\nimport { Shape } from \"./Shape/Shape\";\nimport { Size } from \"./Size/Size\";\nimport { Stroke } from \"./Stroke\";\nimport { Tilt } from \"./Tilt/Tilt\";\nimport { Twinkle } from \"./Twinkle/Twinkle\";\nimport { Wobble } from \"./Wobble/Wobble\";\nimport { ZIndex } from \"./ZIndex/ZIndex\";\nimport { deepExtend } from \"../../../Utils/Utils\";\nexport class ParticlesOptions {\n constructor() {\n this.bounce = new Bounce();\n this.collisions = new Collisions();\n this.color = new AnimatableColor();\n this.destroy = new Destroy();\n this.gradient = [];\n this.groups = {};\n this.life = new Life();\n this.links = new Links();\n this.move = new Move();\n this.number = new ParticlesNumber();\n this.opacity = new Opacity();\n this.orbit = new Orbit();\n this.reduceDuplicates = false;\n this.repulse = new Repulse();\n this.roll = new Roll();\n this.rotate = new Rotate();\n this.shadow = new Shadow();\n this.shape = new Shape();\n this.size = new Size();\n this.stroke = new Stroke();\n this.tilt = new Tilt();\n this.twinkle = new Twinkle();\n this.wobble = new Wobble();\n this.zIndex = new ZIndex();\n }\n get line_linked() {\n return this.links;\n }\n set line_linked(value) {\n this.links = value;\n }\n get lineLinked() {\n return this.links;\n }\n set lineLinked(value) {\n this.links = value;\n }\n load(data) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n if (data === undefined) {\n return;\n }\n this.bounce.load(data.bounce);\n this.color.load(AnimatableColor.create(this.color, data.color));\n this.destroy.load(data.destroy);\n this.life.load(data.life);\n const links = (_b = (_a = data.links) !== null && _a !== void 0 ? _a : data.lineLinked) !== null && _b !== void 0 ? _b : data.line_linked;\n if (links !== undefined) {\n this.links.load(links);\n }\n if (data.groups !== undefined) {\n for (const group in data.groups) {\n const item = data.groups[group];\n if (item !== undefined) {\n this.groups[group] = deepExtend((_c = this.groups[group]) !== null && _c !== void 0 ? _c : {}, item);\n }\n }\n }\n this.move.load(data.move);\n this.number.load(data.number);\n this.opacity.load(data.opacity);\n this.orbit.load(data.orbit);\n if (data.reduceDuplicates !== undefined) {\n this.reduceDuplicates = data.reduceDuplicates;\n }\n this.repulse.load(data.repulse);\n this.roll.load(data.roll);\n this.rotate.load(data.rotate);\n this.shape.load(data.shape);\n this.size.load(data.size);\n this.shadow.load(data.shadow);\n this.tilt.load(data.tilt);\n this.twinkle.load(data.twinkle);\n this.wobble.load(data.wobble);\n this.zIndex.load(data.zIndex);\n const collisions = (_e = (_d = data.move) === null || _d === void 0 ? void 0 : _d.collisions) !== null && _e !== void 0 ? _e : (_f = data.move) === null || _f === void 0 ? void 0 : _f.bounce;\n if (collisions !== undefined) {\n this.collisions.enable = collisions;\n }\n this.collisions.load(data.collisions);\n const strokeToLoad = (_g = data.stroke) !== null && _g !== void 0 ? _g : (_h = data.shape) === null || _h === void 0 ? void 0 : _h.stroke;\n if (strokeToLoad) {\n if (strokeToLoad instanceof Array) {\n this.stroke = strokeToLoad.map((s) => {\n const tmp = new Stroke();\n tmp.load(s);\n return tmp;\n });\n }\n else {\n if (this.stroke instanceof Array) {\n this.stroke = new Stroke();\n }\n this.stroke.load(strokeToLoad);\n }\n }\n const gradientToLoad = data.gradient;\n if (gradientToLoad) {\n if (gradientToLoad instanceof Array) {\n this.gradient = gradientToLoad.map((s) => {\n const tmp = new AnimatableGradient();\n tmp.load(s);\n return tmp;\n });\n }\n else {\n if (this.gradient instanceof Array) {\n this.gradient = new AnimatableGradient();\n }\n this.gradient.load(gradientToLoad);\n }\n }\n }\n}\n","import { deepExtend } from \"../../Utils/Utils\";\nexport class Responsive {\n constructor() {\n this.maxWidth = Infinity;\n this.options = {};\n this.mode = \"canvas\";\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.maxWidth !== undefined) {\n this.maxWidth = data.maxWidth;\n }\n if (data.mode !== undefined) {\n if (data.mode === \"screen\") {\n this.mode = \"screen\";\n }\n else {\n this.mode = \"canvas\";\n }\n }\n if (data.options !== undefined) {\n this.options = deepExtend({}, data.options);\n }\n }\n}\n","export class ThemeDefault {\n constructor() {\n this.auto = false;\n this.mode = \"any\";\n this.value = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.auto !== undefined) {\n this.auto = data.auto;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n if (data.value !== undefined) {\n this.value = data.value;\n }\n }\n}\n","import { ThemeDefault } from \"./ThemeDefault\";\nimport { deepExtend } from \"../../../Utils/Utils\";\nexport class Theme {\n constructor() {\n this.name = \"\";\n this.default = new ThemeDefault();\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.name !== undefined) {\n this.name = data.name;\n }\n this.default.load(data.default);\n if (data.options !== undefined) {\n this.options = deepExtend({}, data.options);\n }\n }\n}\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Options_instances, _Options_engine, _Options_findDefaultTheme;\nimport { Background } from \"./Background/Background\";\nimport { BackgroundMask } from \"./BackgroundMask/BackgroundMask\";\nimport { FullScreen } from \"./FullScreen/FullScreen\";\nimport { Interactivity } from \"./Interactivity/Interactivity\";\nimport { ManualParticle } from \"./ManualParticle\";\nimport { Motion } from \"./Motion/Motion\";\nimport { ParticlesOptions } from \"./Particles/ParticlesOptions\";\nimport { Responsive } from \"./Responsive\";\nimport { Theme } from \"./Theme/Theme\";\nimport { deepExtend } from \"../../Utils/Utils\";\nexport class Options {\n constructor(engine) {\n _Options_instances.add(this);\n _Options_engine.set(this, void 0);\n __classPrivateFieldSet(this, _Options_engine, engine, \"f\");\n this.autoPlay = true;\n this.background = new Background();\n this.backgroundMask = new BackgroundMask();\n this.fullScreen = new FullScreen();\n this.detectRetina = true;\n this.duration = 0;\n this.fpsLimit = 120;\n this.interactivity = new Interactivity();\n this.manualParticles = [];\n this.motion = new Motion();\n this.particles = new ParticlesOptions();\n this.pauseOnBlur = true;\n this.pauseOnOutsideViewport = true;\n this.responsive = [];\n this.style = {};\n this.themes = [];\n this.zLayers = 100;\n }\n get fps_limit() {\n return this.fpsLimit;\n }\n set fps_limit(value) {\n this.fpsLimit = value;\n }\n get retina_detect() {\n return this.detectRetina;\n }\n set retina_detect(value) {\n this.detectRetina = value;\n }\n get backgroundMode() {\n return this.fullScreen;\n }\n set backgroundMode(value) {\n this.fullScreen.load(value);\n }\n load(data) {\n var _a, _b, _c, _d, _e;\n if (data === undefined) {\n return;\n }\n if (data.preset !== undefined) {\n if (data.preset instanceof Array) {\n for (const preset of data.preset) {\n this.importPreset(preset);\n }\n }\n else {\n this.importPreset(data.preset);\n }\n }\n if (data.autoPlay !== undefined) {\n this.autoPlay = data.autoPlay;\n }\n const detectRetina = (_a = data.detectRetina) !== null && _a !== void 0 ? _a : data.retina_detect;\n if (detectRetina !== undefined) {\n this.detectRetina = detectRetina;\n }\n if (data.duration !== undefined) {\n this.duration = data.duration;\n }\n const fpsLimit = (_b = data.fpsLimit) !== null && _b !== void 0 ? _b : data.fps_limit;\n if (fpsLimit !== undefined) {\n this.fpsLimit = fpsLimit;\n }\n if (data.pauseOnBlur !== undefined) {\n this.pauseOnBlur = data.pauseOnBlur;\n }\n if (data.pauseOnOutsideViewport !== undefined) {\n this.pauseOnOutsideViewport = data.pauseOnOutsideViewport;\n }\n if (data.zLayers !== undefined) {\n this.zLayers = data.zLayers;\n }\n this.background.load(data.background);\n const fullScreen = (_c = data.fullScreen) !== null && _c !== void 0 ? _c : data.backgroundMode;\n if (typeof fullScreen === \"boolean\") {\n this.fullScreen.enable = fullScreen;\n }\n else {\n this.fullScreen.load(fullScreen);\n }\n this.backgroundMask.load(data.backgroundMask);\n this.interactivity.load(data.interactivity);\n if (data.manualParticles !== undefined) {\n this.manualParticles = data.manualParticles.map((t) => {\n const tmp = new ManualParticle();\n tmp.load(t);\n return tmp;\n });\n }\n this.motion.load(data.motion);\n this.particles.load(data.particles);\n this.style = deepExtend(this.style, data.style);\n __classPrivateFieldGet(this, _Options_engine, \"f\").plugins.loadOptions(this, data);\n if (data.responsive !== undefined) {\n for (const responsive of data.responsive) {\n const optResponsive = new Responsive();\n optResponsive.load(responsive);\n this.responsive.push(optResponsive);\n }\n }\n this.responsive.sort((a, b) => a.maxWidth - b.maxWidth);\n if (data.themes !== undefined) {\n for (const theme of data.themes) {\n const optTheme = new Theme();\n optTheme.load(theme);\n this.themes.push(optTheme);\n }\n }\n this.defaultDarkTheme = (_d = __classPrivateFieldGet(this, _Options_instances, \"m\", _Options_findDefaultTheme).call(this, \"dark\")) === null || _d === void 0 ? void 0 : _d.name;\n this.defaultLightTheme = (_e = __classPrivateFieldGet(this, _Options_instances, \"m\", _Options_findDefaultTheme).call(this, \"light\")) === null || _e === void 0 ? void 0 : _e.name;\n }\n setTheme(name) {\n if (name) {\n const chosenTheme = this.themes.find((theme) => theme.name === name);\n if (chosenTheme) {\n this.load(chosenTheme.options);\n }\n }\n else {\n const mediaMatch = typeof matchMedia !== \"undefined\" && matchMedia(\"(prefers-color-scheme: dark)\"), clientDarkMode = mediaMatch && mediaMatch.matches, defaultTheme = __classPrivateFieldGet(this, _Options_instances, \"m\", _Options_findDefaultTheme).call(this, clientDarkMode ? \"dark\" : \"light\");\n if (defaultTheme) {\n this.load(defaultTheme.options);\n }\n }\n }\n setResponsive(width, pxRatio, defaultOptions) {\n this.load(defaultOptions);\n const responsiveOptions = this.responsive.find((t) => t.mode === \"screen\" && screen\n ? t.maxWidth * pxRatio > screen.availWidth\n : t.maxWidth * pxRatio > width);\n this.load(responsiveOptions === null || responsiveOptions === void 0 ? void 0 : responsiveOptions.options);\n return responsiveOptions === null || responsiveOptions === void 0 ? void 0 : responsiveOptions.maxWidth;\n }\n importPreset(preset) {\n this.load(__classPrivateFieldGet(this, _Options_engine, \"f\").plugins.getPreset(preset));\n }\n}\n_Options_engine = new WeakMap(), _Options_instances = new WeakSet(), _Options_findDefaultTheme = function _Options_findDefaultTheme(mode) {\n var _a;\n return ((_a = this.themes.find((theme) => theme.default.value && theme.default.mode === mode)) !== null && _a !== void 0 ? _a : this.themes.find((theme) => theme.default.value && theme.default.mode === \"any\"));\n};\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _InteractionManager_engine;\nexport class InteractionManager {\n constructor(engine, container) {\n this.container = container;\n _InteractionManager_engine.set(this, void 0);\n __classPrivateFieldSet(this, _InteractionManager_engine, engine, \"f\");\n this.externalInteractors = [];\n this.particleInteractors = [];\n this.init();\n }\n init() {\n const interactors = __classPrivateFieldGet(this, _InteractionManager_engine, \"f\").plugins.getInteractors(this.container, true);\n this.externalInteractors = [];\n this.particleInteractors = [];\n for (const interactor of interactors) {\n switch (interactor.type) {\n case 0:\n this.externalInteractors.push(interactor);\n break;\n case 1:\n this.particleInteractors.push(interactor);\n break;\n }\n }\n }\n async externalInteract(delta) {\n for (const interactor of this.externalInteractors) {\n if (interactor.isEnabled()) {\n await interactor.interact(delta);\n }\n }\n }\n async particlesInteract(particle, delta) {\n for (const interactor of this.externalInteractors) {\n interactor.reset(particle);\n }\n for (const interactor of this.particleInteractors) {\n if (interactor.isEnabled(particle)) {\n await interactor.interact(particle, delta);\n }\n }\n }\n handleClickMode(mode) {\n for (const interactor of this.externalInteractors) {\n if (interactor.handleClickMode) {\n interactor.handleClickMode(mode);\n }\n }\n }\n}\n_InteractionManager_engine = new WeakMap();\n","import { Vector } from \"./Vector\";\nexport class Vector3d extends Vector {\n constructor(xOrCoords, y, z) {\n super(xOrCoords, y);\n if (typeof xOrCoords !== \"number\" && xOrCoords) {\n this.z = xOrCoords.z;\n }\n else if (z !== undefined) {\n this.z = z;\n }\n else {\n throw new Error(\"tsParticles - Vector not initialized correctly\");\n }\n }\n static clone(source) {\n return Vector3d.create(source.x, source.y, source.z);\n }\n static create(x, y, z) {\n return new Vector3d(x, y, z);\n }\n static get origin() {\n return Vector3d.create(0, 0, 0);\n }\n add(v) {\n return v instanceof Vector3d ? Vector3d.create(this.x + v.x, this.y + v.y, this.z + v.z) : super.add(v);\n }\n addTo(v) {\n super.addTo(v);\n if (v instanceof Vector3d) {\n this.z += v.z;\n }\n }\n sub(v) {\n return v instanceof Vector3d ? Vector3d.create(this.x - v.x, this.y - v.y, this.z - v.z) : super.sub(v);\n }\n subFrom(v) {\n super.subFrom(v);\n if (v instanceof Vector3d) {\n this.z -= v.z;\n }\n }\n mult(n) {\n return Vector3d.create(this.x * n, this.y * n, this.z * n);\n }\n multTo(n) {\n super.multTo(n);\n this.z *= n;\n }\n div(n) {\n return Vector3d.create(this.x / n, this.y / n, this.z / n);\n }\n divTo(n) {\n super.divTo(n);\n this.z /= n;\n }\n copy() {\n return Vector3d.clone(this);\n }\n setTo(v) {\n super.setTo(v);\n const v3d = v;\n if (v3d.z !== undefined) {\n this.z = v3d.z;\n }\n }\n}\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Particle_engine;\nimport { calcExactPositionOrRandomFromSize, clamp, getDistance, getParticleBaseVelocity, getParticleDirectionAngle, getRangeMax, getRangeMin, getRangeValue, getValue, randomInRange, setRangeValue, } from \"../Utils/NumberUtils\";\nimport { colorToRgb, getHslFromAnimation } from \"../Utils/ColorUtils\";\nimport { deepExtend, isInArray, itemFromArray } from \"../Utils/Utils\";\nimport { ParticlesOptions } from \"../Options/Classes/Particles/ParticlesOptions\";\nimport { Shape } from \"../Options/Classes/Particles/Shape/Shape\";\nimport { Vector } from \"./Utils/Vector\";\nimport { Vector3d } from \"./Utils/Vector3d\";\nimport { alterHsl } from \"../Utils/CanvasUtils\";\nconst fixOutMode = (data) => {\n if (!(isInArray(data.outMode, data.checkModes) || isInArray(data.outMode, data.checkModes))) {\n return;\n }\n if (data.coord > data.maxCoord - data.radius * 2) {\n data.setCb(-data.radius);\n }\n else if (data.coord < data.radius * 2) {\n data.setCb(data.radius);\n }\n};\nexport class Particle {\n constructor(engine, id, container, position, overrideOptions, group) {\n var _a, _b, _c, _d, _e, _f, _g;\n this.id = id;\n this.container = container;\n this.group = group;\n _Particle_engine.set(this, void 0);\n __classPrivateFieldSet(this, _Particle_engine, engine, \"f\");\n this.fill = true;\n this.close = true;\n this.lastPathTime = 0;\n this.destroyed = false;\n this.unbreakable = false;\n this.splitCount = 0;\n this.misplaced = false;\n this.retina = {\n maxDistance: {},\n };\n this.ignoresResizeRatio = true;\n const pxRatio = container.retina.pixelRatio, mainOptions = container.actualOptions, particlesOptions = new ParticlesOptions();\n particlesOptions.load(mainOptions.particles);\n const shapeType = particlesOptions.shape.type, reduceDuplicates = particlesOptions.reduceDuplicates;\n this.shape = shapeType instanceof Array ? itemFromArray(shapeType, this.id, reduceDuplicates) : shapeType;\n if (overrideOptions === null || overrideOptions === void 0 ? void 0 : overrideOptions.shape) {\n if (overrideOptions.shape.type) {\n const overrideShapeType = overrideOptions.shape.type;\n this.shape =\n overrideShapeType instanceof Array\n ? itemFromArray(overrideShapeType, this.id, reduceDuplicates)\n : overrideShapeType;\n }\n const shapeOptions = new Shape();\n shapeOptions.load(overrideOptions.shape);\n if (this.shape) {\n this.shapeData = this.loadShapeData(shapeOptions, reduceDuplicates);\n }\n }\n else {\n this.shapeData = this.loadShapeData(particlesOptions.shape, reduceDuplicates);\n }\n if (overrideOptions !== undefined) {\n particlesOptions.load(overrideOptions);\n }\n if (((_a = this.shapeData) === null || _a === void 0 ? void 0 : _a.particles) !== undefined) {\n particlesOptions.load((_b = this.shapeData) === null || _b === void 0 ? void 0 : _b.particles);\n }\n this.fill = (_d = (_c = this.shapeData) === null || _c === void 0 ? void 0 : _c.fill) !== null && _d !== void 0 ? _d : this.fill;\n this.close = (_f = (_e = this.shapeData) === null || _e === void 0 ? void 0 : _e.close) !== null && _f !== void 0 ? _f : this.close;\n this.options = particlesOptions;\n this.pathDelay = getValue(this.options.move.path.delay) * 1000;\n const zIndexValue = getRangeValue(this.options.zIndex.value);\n container.retina.initParticle(this);\n const sizeOptions = this.options.size, sizeRange = sizeOptions.value;\n this.size = {\n enable: sizeOptions.animation.enable,\n value: getValue(sizeOptions) * container.retina.pixelRatio,\n max: getRangeMax(sizeRange) * pxRatio,\n min: getRangeMin(sizeRange) * pxRatio,\n loops: 0,\n maxLoops: getRangeValue(sizeOptions.animation.count),\n };\n const sizeAnimation = sizeOptions.animation;\n if (sizeAnimation.enable) {\n this.size.status = 0;\n switch (sizeAnimation.startValue) {\n case \"min\":\n this.size.value = this.size.min;\n this.size.status = 0;\n break;\n case \"random\":\n this.size.value = randomInRange(this.size) * pxRatio;\n this.size.status = Math.random() >= 0.5 ? 0 : 1;\n break;\n case \"max\":\n default:\n this.size.value = this.size.max;\n this.size.status = 1;\n break;\n }\n this.size.velocity =\n (((_g = this.retina.sizeAnimationSpeed) !== null && _g !== void 0 ? _g : container.retina.sizeAnimationSpeed) / 100) *\n container.retina.reduceFactor;\n if (!sizeAnimation.sync) {\n this.size.velocity *= Math.random();\n }\n }\n this.direction = getParticleDirectionAngle(this.options.move.direction);\n this.bubble = {\n inRange: false,\n };\n this.initialVelocity = this.calculateVelocity();\n this.velocity = this.initialVelocity.copy();\n this.moveDecay = 1 - getRangeValue(this.options.move.decay);\n const gravityOptions = this.options.move.gravity;\n this.gravity = {\n enable: gravityOptions.enable,\n acceleration: getRangeValue(gravityOptions.acceleration),\n inverse: gravityOptions.inverse,\n };\n this.position = this.calcPosition(container, position, clamp(zIndexValue, 0, container.zLayers));\n this.initialPosition = this.position.copy();\n this.offset = Vector.origin;\n const particles = container.particles;\n particles.needsSort = particles.needsSort || particles.lastZIndex < this.position.z;\n particles.lastZIndex = this.position.z;\n this.zIndexFactor = this.position.z / container.zLayers;\n this.sides = 24;\n let drawer = container.drawers.get(this.shape);\n if (!drawer) {\n drawer = __classPrivateFieldGet(this, _Particle_engine, \"f\").plugins.getShapeDrawer(this.shape);\n if (drawer) {\n container.drawers.set(this.shape, drawer);\n }\n }\n if (drawer === null || drawer === void 0 ? void 0 : drawer.loadShape) {\n drawer === null || drawer === void 0 ? void 0 : drawer.loadShape(this);\n }\n const sideCountFunc = drawer === null || drawer === void 0 ? void 0 : drawer.getSidesCount;\n if (sideCountFunc) {\n this.sides = sideCountFunc(this);\n }\n this.life = this.loadLife();\n this.spawning = this.life.delay > 0;\n this.shadowColor = colorToRgb(this.options.shadow.color);\n for (const updater of container.particles.updaters) {\n if (updater.init) {\n updater.init(this);\n }\n }\n if (drawer && drawer.particleInit) {\n drawer.particleInit(container, this);\n }\n for (const [, plugin] of container.plugins) {\n if (plugin.particleCreated) {\n plugin.particleCreated(this);\n }\n }\n }\n isVisible() {\n return !this.destroyed && !this.spawning && this.isInsideCanvas();\n }\n isInsideCanvas() {\n const radius = this.getRadius(), canvasSize = this.container.canvas.size;\n return (this.position.x >= -radius &&\n this.position.y >= -radius &&\n this.position.y <= canvasSize.height + radius &&\n this.position.x <= canvasSize.width + radius);\n }\n draw(delta) {\n const container = this.container;\n for (const [, plugin] of container.plugins) {\n container.canvas.drawParticlePlugin(plugin, this, delta);\n }\n container.canvas.drawParticle(this, delta);\n }\n getPosition() {\n return {\n x: this.position.x + this.offset.x,\n y: this.position.y + this.offset.y,\n z: this.position.z,\n };\n }\n getRadius() {\n var _a;\n return (_a = this.bubble.radius) !== null && _a !== void 0 ? _a : this.size.value;\n }\n getMass() {\n return (this.getRadius() ** 2 * Math.PI) / 2;\n }\n getFillColor() {\n var _a, _b;\n const color = (_a = this.bubble.color) !== null && _a !== void 0 ? _a : getHslFromAnimation(this.color);\n if (color && this.roll && (this.backColor || this.roll.alter)) {\n const backFactor = this.options.roll.mode === \"both\" ? 2 : 1, backSum = this.options.roll.mode === \"horizontal\" ? Math.PI / 2 : 0, rolled = Math.floor((((_b = this.roll.angle) !== null && _b !== void 0 ? _b : 0) + backSum) / (Math.PI / backFactor)) % 2;\n if (rolled) {\n if (this.backColor) {\n return this.backColor;\n }\n if (this.roll.alter) {\n return alterHsl(color, this.roll.alter.type, this.roll.alter.value);\n }\n }\n }\n return color;\n }\n getStrokeColor() {\n var _a, _b;\n return (_b = (_a = this.bubble.color) !== null && _a !== void 0 ? _a : getHslFromAnimation(this.strokeColor)) !== null && _b !== void 0 ? _b : this.getFillColor();\n }\n destroy(override) {\n this.destroyed = true;\n this.bubble.inRange = false;\n if (this.unbreakable) {\n return;\n }\n this.destroyed = true;\n this.bubble.inRange = false;\n for (const [, plugin] of this.container.plugins) {\n if (plugin.particleDestroyed) {\n plugin.particleDestroyed(this, override);\n }\n }\n if (override) {\n return;\n }\n const destroyOptions = this.options.destroy;\n if (destroyOptions.mode === \"split\") {\n this.split();\n }\n }\n reset() {\n if (this.opacity) {\n this.opacity.loops = 0;\n }\n this.size.loops = 0;\n }\n split() {\n const splitOptions = this.options.destroy.split;\n if (splitOptions.count >= 0 && this.splitCount++ > splitOptions.count) {\n return;\n }\n const rate = getRangeValue(splitOptions.rate.value);\n for (let i = 0; i < rate; i++) {\n this.container.particles.addSplitParticle(this);\n }\n }\n calcPosition(container, position, zIndex, tryCount = 0) {\n var _a, _b, _c, _d;\n for (const [, plugin] of container.plugins) {\n const pluginPos = plugin.particlePosition !== undefined ? plugin.particlePosition(position, this) : undefined;\n if (pluginPos !== undefined) {\n return Vector3d.create(pluginPos.x, pluginPos.y, zIndex);\n }\n }\n const canvasSize = container.canvas.size, exactPosition = calcExactPositionOrRandomFromSize({\n size: canvasSize,\n position: position,\n }), pos = Vector3d.create(exactPosition.x, exactPosition.y, zIndex), radius = this.getRadius(), outModes = this.options.move.outModes, fixHorizontal = (outMode) => {\n fixOutMode({\n outMode,\n checkModes: [\"bounce\", \"bounce-horizontal\"],\n coord: pos.x,\n maxCoord: container.canvas.size.width,\n setCb: (value) => (pos.x += value),\n radius,\n });\n }, fixVertical = (outMode) => {\n fixOutMode({\n outMode,\n checkModes: [\"bounce\", \"bounce-vertical\"],\n coord: pos.y,\n maxCoord: container.canvas.size.height,\n setCb: (value) => (pos.y += value),\n radius,\n });\n };\n fixHorizontal((_a = outModes.left) !== null && _a !== void 0 ? _a : outModes.default);\n fixHorizontal((_b = outModes.right) !== null && _b !== void 0 ? _b : outModes.default);\n fixVertical((_c = outModes.top) !== null && _c !== void 0 ? _c : outModes.default);\n fixVertical((_d = outModes.bottom) !== null && _d !== void 0 ? _d : outModes.default);\n if (this.checkOverlap(pos, tryCount)) {\n return this.calcPosition(container, undefined, zIndex, tryCount + 1);\n }\n return pos;\n }\n checkOverlap(pos, tryCount = 0) {\n const collisionsOptions = this.options.collisions, radius = this.getRadius();\n if (!collisionsOptions.enable) {\n return false;\n }\n const overlapOptions = collisionsOptions.overlap;\n if (overlapOptions.enable) {\n return false;\n }\n const retries = overlapOptions.retries;\n if (retries >= 0 && tryCount > retries) {\n throw new Error(\"Particle is overlapping and can't be placed\");\n }\n let overlaps = false;\n for (const particle of this.container.particles.array) {\n if (getDistance(pos, particle.position) < radius + particle.getRadius()) {\n overlaps = true;\n break;\n }\n }\n return overlaps;\n }\n calculateVelocity() {\n const baseVelocity = getParticleBaseVelocity(this.direction), res = baseVelocity.copy(), moveOptions = this.options.move, rad = (Math.PI / 180) * getRangeValue(moveOptions.angle.value), radOffset = (Math.PI / 180) * getRangeValue(moveOptions.angle.offset), range = {\n left: radOffset - rad / 2,\n right: radOffset + rad / 2,\n };\n if (!moveOptions.straight) {\n res.angle += randomInRange(setRangeValue(range.left, range.right));\n }\n if (moveOptions.random && typeof moveOptions.speed === \"number\") {\n res.length *= Math.random();\n }\n return res;\n }\n loadShapeData(shapeOptions, reduceDuplicates) {\n const shapeData = shapeOptions.options[this.shape];\n if (shapeData) {\n return deepExtend({}, shapeData instanceof Array ? itemFromArray(shapeData, this.id, reduceDuplicates) : shapeData);\n }\n }\n loadLife() {\n const container = this.container, particlesOptions = this.options, lifeOptions = particlesOptions.life, life = {\n delay: container.retina.reduceFactor\n ? ((getRangeValue(lifeOptions.delay.value) * (lifeOptions.delay.sync ? 1 : Math.random())) /\n container.retina.reduceFactor) *\n 1000\n : 0,\n delayTime: 0,\n duration: container.retina.reduceFactor\n ? ((getRangeValue(lifeOptions.duration.value) * (lifeOptions.duration.sync ? 1 : Math.random())) /\n container.retina.reduceFactor) *\n 1000\n : 0,\n time: 0,\n count: particlesOptions.life.count,\n };\n if (life.duration <= 0) {\n life.duration = -1;\n }\n if (life.count <= 0) {\n life.count = -1;\n }\n return life;\n }\n}\n_Particle_engine = new WeakMap();\n","export class Point {\n constructor(position, particle) {\n this.position = position;\n this.particle = particle;\n }\n}\n","export class Range {\n constructor(x, y) {\n this.position = {\n x: x,\n y: y,\n };\n }\n}\n","import { Range } from \"./Range\";\nimport { getDistance } from \"../../Utils/NumberUtils\";\nexport class Circle extends Range {\n constructor(x, y, radius) {\n super(x, y);\n this.radius = radius;\n }\n contains(point) {\n return getDistance(point, this.position) <= this.radius;\n }\n intersects(range) {\n const rect = range, circle = range, pos1 = this.position, pos2 = range.position, xDist = Math.abs(pos2.x - pos1.x), yDist = Math.abs(pos2.y - pos1.y), r = this.radius;\n if (circle.radius !== undefined) {\n const rSum = r + circle.radius, dist = Math.sqrt(xDist * xDist + yDist + yDist);\n return rSum > dist;\n }\n else if (rect.size !== undefined) {\n const w = rect.size.width, h = rect.size.height, edges = Math.pow(xDist - w, 2) + Math.pow(yDist - h, 2);\n if (xDist > r + w || yDist > r + h) {\n return false;\n }\n if (xDist <= w || yDist <= h) {\n return true;\n }\n return edges <= r * r;\n }\n return false;\n }\n}\n","import { Range } from \"./Range\";\nexport class Rectangle extends Range {\n constructor(x, y, width, height) {\n super(x, y);\n this.size = {\n height: height,\n width: width,\n };\n }\n contains(point) {\n const w = this.size.width, h = this.size.height, pos = this.position;\n return point.x >= pos.x && point.x <= pos.x + w && point.y >= pos.y && point.y <= pos.y + h;\n }\n intersects(range) {\n const rect = range, circle = range, w = this.size.width, h = this.size.height, pos1 = this.position, pos2 = range.position;\n if (circle.radius !== undefined) {\n return circle.intersects(this);\n }\n if (!rect.size) {\n return false;\n }\n const size2 = rect.size, w2 = size2.width, h2 = size2.height;\n return pos2.x < pos1.x + w && pos2.x + w2 > pos1.x && pos2.y < pos1.y + h && pos2.y + h2 > pos1.y;\n }\n}\n","import { Circle } from \"./Circle\";\nimport { Rectangle } from \"./Rectangle\";\nexport class CircleWarp extends Circle {\n constructor(x, y, radius, canvasSize) {\n super(x, y, radius);\n this.canvasSize = canvasSize;\n this.canvasSize = Object.assign({}, canvasSize);\n }\n contains(point) {\n if (super.contains(point)) {\n return true;\n }\n const posNE = {\n x: point.x - this.canvasSize.width,\n y: point.y,\n };\n if (super.contains(posNE)) {\n return true;\n }\n const posSE = {\n x: point.x - this.canvasSize.width,\n y: point.y - this.canvasSize.height,\n };\n if (super.contains(posSE)) {\n return true;\n }\n const posSW = {\n x: point.x,\n y: point.y - this.canvasSize.height,\n };\n return super.contains(posSW);\n }\n intersects(range) {\n if (super.intersects(range)) {\n return true;\n }\n const rect = range, circle = range, newPos = {\n x: range.position.x - this.canvasSize.width,\n y: range.position.y - this.canvasSize.height,\n };\n if (circle.radius !== undefined) {\n const biggerCircle = new Circle(newPos.x, newPos.y, circle.radius * 2);\n return super.intersects(biggerCircle);\n }\n else if (rect.size !== undefined) {\n const rectSW = new Rectangle(newPos.x, newPos.y, rect.size.width * 2, rect.size.height * 2);\n return super.intersects(rectSW);\n }\n return false;\n }\n}\n","import { Circle } from \"./Circle\";\nimport { CircleWarp } from \"./CircleWarp\";\nimport { Rectangle } from \"./Rectangle\";\nimport { getDistance } from \"../../Utils/NumberUtils\";\nexport class QuadTree {\n constructor(rectangle, capacity) {\n this.rectangle = rectangle;\n this.capacity = capacity;\n this.points = [];\n this.divided = false;\n }\n insert(point) {\n var _a, _b, _c, _d, _e;\n if (!this.rectangle.contains(point.position)) {\n return false;\n }\n if (this.points.length < this.capacity) {\n this.points.push(point);\n return true;\n }\n if (!this.divided) {\n this.subdivide();\n }\n return ((_e = (((_a = this.northEast) === null || _a === void 0 ? void 0 : _a.insert(point)) ||\n ((_b = this.northWest) === null || _b === void 0 ? void 0 : _b.insert(point)) ||\n ((_c = this.southEast) === null || _c === void 0 ? void 0 : _c.insert(point)) ||\n ((_d = this.southWest) === null || _d === void 0 ? void 0 : _d.insert(point)))) !== null && _e !== void 0 ? _e : false);\n }\n queryCircle(position, radius) {\n return this.query(new Circle(position.x, position.y, radius));\n }\n queryCircleWarp(position, radius, containerOrSize) {\n const container = containerOrSize, size = containerOrSize;\n return this.query(new CircleWarp(position.x, position.y, radius, container.canvas !== undefined ? container.canvas.size : size));\n }\n queryRectangle(position, size) {\n return this.query(new Rectangle(position.x, position.y, size.width, size.height));\n }\n query(range, found) {\n var _a, _b, _c, _d;\n const res = found !== null && found !== void 0 ? found : [];\n if (!range.intersects(this.rectangle)) {\n return [];\n }\n for (const p of this.points) {\n if (!range.contains(p.position) && getDistance(range.position, p.position) > p.particle.getRadius()) {\n continue;\n }\n res.push(p.particle);\n }\n if (this.divided) {\n (_a = this.northEast) === null || _a === void 0 ? void 0 : _a.query(range, res);\n (_b = this.northWest) === null || _b === void 0 ? void 0 : _b.query(range, res);\n (_c = this.southEast) === null || _c === void 0 ? void 0 : _c.query(range, res);\n (_d = this.southWest) === null || _d === void 0 ? void 0 : _d.query(range, res);\n }\n return res;\n }\n subdivide() {\n const x = this.rectangle.position.x, y = this.rectangle.position.y, w = this.rectangle.size.width, h = this.rectangle.size.height, capacity = this.capacity;\n this.northEast = new QuadTree(new Rectangle(x, y, w / 2, h / 2), capacity);\n this.northWest = new QuadTree(new Rectangle(x + w / 2, y, w / 2, h / 2), capacity);\n this.southEast = new QuadTree(new Rectangle(x, y + h / 2, w / 2, h / 2), capacity);\n this.southWest = new QuadTree(new Rectangle(x + w / 2, y + h / 2, w / 2, h / 2), capacity);\n this.divided = true;\n }\n}\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Particles_engine;\nimport { calcPositionFromSize, getRangeMax, getRangeMin, getRangeValue, randomInRange, setRangeValue, } from \"../Utils/NumberUtils\";\nimport { InteractionManager } from \"./Utils/InteractionManager\";\nimport { Particle } from \"./Particle\";\nimport { ParticlesOptions } from \"../Options/Classes/Particles/ParticlesOptions\";\nimport { Point } from \"./Utils/Point\";\nimport { QuadTree } from \"./Utils/QuadTree\";\nimport { Rectangle } from \"./Utils/Rectangle\";\nexport class Particles {\n constructor(engine, container) {\n this.container = container;\n _Particles_engine.set(this, void 0);\n __classPrivateFieldSet(this, _Particles_engine, engine, \"f\");\n this.nextId = 0;\n this.array = [];\n this.zArray = [];\n this.limit = 0;\n this.needsSort = false;\n this.lastZIndex = 0;\n this.freqs = {\n links: new Map(),\n triangles: new Map(),\n };\n this.interactionManager = new InteractionManager(__classPrivateFieldGet(this, _Particles_engine, \"f\"), container);\n const canvasSize = this.container.canvas.size;\n this.linksColors = new Map();\n this.quadTree = new QuadTree(new Rectangle(-canvasSize.width / 4, -canvasSize.height / 4, (canvasSize.width * 3) / 2, (canvasSize.height * 3) / 2), 4);\n this.movers = __classPrivateFieldGet(this, _Particles_engine, \"f\").plugins.getMovers(container, true);\n this.updaters = __classPrivateFieldGet(this, _Particles_engine, \"f\").plugins.getUpdaters(container, true);\n }\n get count() {\n return this.array.length;\n }\n init() {\n var _a;\n const container = this.container, options = container.actualOptions;\n this.lastZIndex = 0;\n this.needsSort = false;\n this.freqs.links = new Map();\n this.freqs.triangles = new Map();\n let handled = false;\n this.updaters = __classPrivateFieldGet(this, _Particles_engine, \"f\").plugins.getUpdaters(container, true);\n this.interactionManager.init();\n for (const [, plugin] of container.plugins) {\n if (plugin.particlesInitialization !== undefined) {\n handled = plugin.particlesInitialization();\n }\n if (handled) {\n break;\n }\n }\n this.addManualParticles();\n if (!handled) {\n for (const group in options.particles.groups) {\n const groupOptions = options.particles.groups[group];\n for (let i = this.count, j = 0; j < ((_a = groupOptions.number) === null || _a === void 0 ? void 0 : _a.value) && i < options.particles.number.value; i++, j++) {\n this.addParticle(undefined, groupOptions, group);\n }\n }\n for (let i = this.count; i < options.particles.number.value; i++) {\n this.addParticle();\n }\n }\n container.pathGenerator.init(container);\n }\n async redraw() {\n this.clear();\n this.init();\n await this.draw({ value: 0, factor: 0 });\n }\n removeAt(index, quantity = 1, group, override) {\n if (!(index >= 0 && index <= this.count)) {\n return;\n }\n let deleted = 0;\n for (let i = index; deleted < quantity && i < this.count; i++) {\n const particle = this.array[i];\n if (!particle || particle.group !== group) {\n continue;\n }\n particle.destroy(override);\n this.array.splice(i--, 1);\n const zIdx = this.zArray.indexOf(particle);\n this.zArray.splice(zIdx, 1);\n deleted++;\n }\n }\n remove(particle, group, override) {\n this.removeAt(this.array.indexOf(particle), undefined, group, override);\n }\n async update(delta) {\n const container = this.container, particlesToDelete = [];\n container.pathGenerator.update();\n for (const [, plugin] of container.plugins) {\n if (plugin.update !== undefined) {\n plugin.update(delta);\n }\n }\n for (const particle of this.array) {\n const resizeFactor = container.canvas.resizeFactor;\n if (resizeFactor && !particle.ignoresResizeRatio) {\n particle.position.x *= resizeFactor.width;\n particle.position.y *= resizeFactor.height;\n }\n particle.ignoresResizeRatio = false;\n particle.bubble.inRange = false;\n for (const [, plugin] of this.container.plugins) {\n if (particle.destroyed) {\n break;\n }\n if (plugin.particleUpdate) {\n plugin.particleUpdate(particle, delta);\n }\n }\n for (const mover of this.movers) {\n if (mover.isEnabled(particle)) {\n mover.move(particle, delta);\n }\n }\n if (particle.destroyed) {\n particlesToDelete.push(particle);\n continue;\n }\n this.quadTree.insert(new Point(particle.getPosition(), particle));\n }\n for (const particle of particlesToDelete) {\n this.remove(particle);\n }\n await this.interactionManager.externalInteract(delta);\n for (const particle of container.particles.array) {\n for (const updater of this.updaters) {\n updater.update(particle, delta);\n }\n if (!particle.destroyed && !particle.spawning) {\n await this.interactionManager.particlesInteract(particle, delta);\n }\n }\n delete container.canvas.resizeFactor;\n }\n async draw(delta) {\n const container = this.container, canvasSize = this.container.canvas.size;\n this.quadTree = new QuadTree(new Rectangle(-canvasSize.width / 4, -canvasSize.height / 4, (canvasSize.width * 3) / 2, (canvasSize.height * 3) / 2), 4);\n container.canvas.clear();\n await this.update(delta);\n if (this.needsSort) {\n this.zArray.sort((a, b) => b.position.z - a.position.z || a.id - b.id);\n this.lastZIndex = this.zArray[this.zArray.length - 1].position.z;\n this.needsSort = false;\n }\n for (const [, plugin] of container.plugins) {\n container.canvas.drawPlugin(plugin, delta);\n }\n for (const p of this.zArray) {\n p.draw(delta);\n }\n }\n clear() {\n this.array = [];\n this.zArray = [];\n }\n push(nb, mouse, overrideOptions, group) {\n this.pushing = true;\n for (let i = 0; i < nb; i++) {\n this.addParticle(mouse === null || mouse === void 0 ? void 0 : mouse.position, overrideOptions, group);\n }\n this.pushing = false;\n }\n addParticle(position, overrideOptions, group) {\n const container = this.container, options = container.actualOptions, limit = options.particles.number.limit * container.density;\n if (limit > 0) {\n const countToRemove = this.count + 1 - limit;\n if (countToRemove > 0) {\n this.removeQuantity(countToRemove);\n }\n }\n return this.pushParticle(position, overrideOptions, group);\n }\n addSplitParticle(parent) {\n const splitOptions = parent.options.destroy.split, options = new ParticlesOptions();\n options.load(parent.options);\n const factor = getRangeValue(splitOptions.factor.value);\n options.color.load({\n value: {\n hsl: parent.getFillColor(),\n },\n });\n if (typeof options.size.value === \"number\") {\n options.size.value /= factor;\n }\n else {\n options.size.value.min /= factor;\n options.size.value.max /= factor;\n }\n options.load(splitOptions.particles);\n const offset = splitOptions.sizeOffset ? setRangeValue(-parent.size.value, parent.size.value) : 0, position = {\n x: parent.position.x + randomInRange(offset),\n y: parent.position.y + randomInRange(offset),\n };\n return this.pushParticle(position, options, parent.group, (particle) => {\n if (particle.size.value < 0.5) {\n return false;\n }\n particle.velocity.length = randomInRange(setRangeValue(parent.velocity.length, particle.velocity.length));\n particle.splitCount = parent.splitCount + 1;\n particle.unbreakable = true;\n setTimeout(() => {\n particle.unbreakable = false;\n }, 500);\n return true;\n });\n }\n removeQuantity(quantity, group) {\n this.removeAt(0, quantity, group);\n }\n getLinkFrequency(p1, p2) {\n const range = setRangeValue(p1.id, p2.id), key = `${getRangeMin(range)}_${getRangeMax(range)}`;\n let res = this.freqs.links.get(key);\n if (res === undefined) {\n res = Math.random();\n this.freqs.links.set(key, res);\n }\n return res;\n }\n getTriangleFrequency(p1, p2, p3) {\n let [id1, id2, id3] = [p1.id, p2.id, p3.id];\n if (id1 > id2) {\n [id2, id1] = [id1, id2];\n }\n if (id2 > id3) {\n [id3, id2] = [id2, id3];\n }\n if (id1 > id3) {\n [id3, id1] = [id1, id3];\n }\n const key = `${id1}_${id2}_${id3}`;\n let res = this.freqs.triangles.get(key);\n if (res === undefined) {\n res = Math.random();\n this.freqs.triangles.set(key, res);\n }\n return res;\n }\n addManualParticles() {\n const container = this.container, options = container.actualOptions;\n for (const particle of options.manualParticles) {\n this.addParticle(calcPositionFromSize({\n size: container.canvas.size,\n position: particle.position,\n }), particle.options);\n }\n }\n setDensity() {\n const options = this.container.actualOptions;\n for (const group in options.particles.groups) {\n this.applyDensity(options.particles.groups[group], 0, group);\n }\n this.applyDensity(options.particles, options.manualParticles.length);\n }\n handleClickMode(mode) {\n this.interactionManager.handleClickMode(mode);\n }\n applyDensity(options, manualCount, group) {\n var _a;\n if (!((_a = options.number.density) === null || _a === void 0 ? void 0 : _a.enable)) {\n return;\n }\n const numberOptions = options.number, densityFactor = this.initDensityFactor(numberOptions.density), optParticlesNumber = numberOptions.value, optParticlesLimit = numberOptions.limit > 0 ? numberOptions.limit : optParticlesNumber, particlesNumber = Math.min(optParticlesNumber, optParticlesLimit) * densityFactor + manualCount, particlesCount = Math.min(this.count, this.array.filter((t) => t.group === group).length);\n this.limit = numberOptions.limit * densityFactor;\n if (particlesCount < particlesNumber) {\n this.push(Math.abs(particlesNumber - particlesCount), undefined, options, group);\n }\n else if (particlesCount > particlesNumber) {\n this.removeQuantity(particlesCount - particlesNumber, group);\n }\n }\n initDensityFactor(densityOptions) {\n const container = this.container;\n if (!container.canvas.element || !densityOptions.enable) {\n return 1;\n }\n const canvas = container.canvas.element, pxRatio = container.retina.pixelRatio;\n return (canvas.width * canvas.height) / (densityOptions.factor * pxRatio ** 2 * densityOptions.area);\n }\n pushParticle(position, overrideOptions, group, initializer) {\n try {\n const particle = new Particle(__classPrivateFieldGet(this, _Particles_engine, \"f\"), this.nextId, this.container, position, overrideOptions, group);\n let canAdd = true;\n if (initializer) {\n canAdd = initializer(particle);\n }\n if (!canAdd) {\n return;\n }\n this.array.push(particle);\n this.zArray.push(particle);\n this.nextId++;\n return particle;\n }\n catch (e) {\n console.warn(`error adding particle: ${e}`);\n return;\n }\n }\n}\n_Particles_engine = new WeakMap();\n","import { getRangeValue } from \"../Utils/NumberUtils\";\nimport { isSsr } from \"../Utils/Utils\";\nexport class Retina {\n constructor(container) {\n this.container = container;\n }\n init() {\n const container = this.container, options = container.actualOptions;\n this.pixelRatio = !options.detectRetina || isSsr() ? 1 : window.devicePixelRatio;\n const motionOptions = this.container.actualOptions.motion;\n if (motionOptions && (motionOptions.disable || motionOptions.reduce.value)) {\n if (isSsr() || typeof matchMedia === \"undefined\" || !matchMedia) {\n this.reduceFactor = 1;\n }\n else {\n const mediaQuery = matchMedia(\"(prefers-reduced-motion: reduce)\");\n if (mediaQuery) {\n this.handleMotionChange(mediaQuery);\n const handleChange = () => {\n this.handleMotionChange(mediaQuery);\n container.refresh().catch(() => {\n });\n };\n if (mediaQuery.addEventListener !== undefined) {\n mediaQuery.addEventListener(\"change\", handleChange);\n }\n else if (mediaQuery.addListener !== undefined) {\n mediaQuery.addListener(handleChange);\n }\n }\n }\n }\n else {\n this.reduceFactor = 1;\n }\n const ratio = this.pixelRatio;\n if (container.canvas.element) {\n const element = container.canvas.element;\n container.canvas.size.width = element.offsetWidth * ratio;\n container.canvas.size.height = element.offsetHeight * ratio;\n }\n const particles = options.particles;\n this.attractDistance = getRangeValue(particles.move.attract.distance) * ratio;\n this.linksDistance = particles.links.distance * ratio;\n this.linksWidth = particles.links.width * ratio;\n this.sizeAnimationSpeed = getRangeValue(particles.size.animation.speed) * ratio;\n this.maxSpeed = getRangeValue(particles.move.gravity.maxSpeed) * ratio;\n const modes = options.interactivity.modes;\n this.connectModeDistance = modes.connect.distance * ratio;\n this.connectModeRadius = modes.connect.radius * ratio;\n this.grabModeDistance = modes.grab.distance * ratio;\n this.repulseModeDistance = modes.repulse.distance * ratio;\n this.bounceModeDistance = modes.bounce.distance * ratio;\n this.attractModeDistance = modes.attract.distance * ratio;\n this.slowModeRadius = modes.slow.radius * ratio;\n this.bubbleModeDistance = modes.bubble.distance * ratio;\n if (modes.bubble.size) {\n this.bubbleModeSize = modes.bubble.size * ratio;\n }\n }\n initParticle(particle) {\n const options = particle.options, ratio = this.pixelRatio, moveDistance = options.move.distance, props = particle.retina;\n props.attractDistance = getRangeValue(options.move.attract.distance) * ratio;\n props.linksDistance = options.links.distance * ratio;\n props.linksWidth = options.links.width * ratio;\n props.moveDrift = getRangeValue(options.move.drift) * ratio;\n props.moveSpeed = getRangeValue(options.move.speed) * ratio;\n props.sizeAnimationSpeed = getRangeValue(options.size.animation.speed) * ratio;\n const maxDistance = props.maxDistance;\n maxDistance.horizontal = moveDistance.horizontal !== undefined ? moveDistance.horizontal * ratio : undefined;\n maxDistance.vertical = moveDistance.vertical !== undefined ? moveDistance.vertical * ratio : undefined;\n props.maxSpeed = getRangeValue(options.move.gravity.maxSpeed) * ratio;\n }\n handleMotionChange(mediaQuery) {\n const options = this.container.actualOptions;\n if (mediaQuery.matches) {\n const motion = options.motion;\n this.reduceFactor = motion.disable ? 0 : motion.reduce.value ? 1 / motion.reduce.factor : 1;\n }\n else {\n this.reduceFactor = 1;\n }\n }\n}\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Container_engine;\nimport { animate, cancelAnimation } from \"../Utils/Utils\";\nimport { Canvas } from \"./Canvas\";\nimport { EventListeners } from \"./Utils/EventListeners\";\nimport { FrameManager } from \"./Utils/FrameManager\";\nimport { Options } from \"../Options/Classes/Options\";\nimport { Particles } from \"./Particles\";\nimport { Retina } from \"./Retina\";\nimport { Vector } from \"./Utils/Vector\";\nimport { getRangeValue } from \"../Utils/NumberUtils\";\nexport class Container {\n constructor(engine, id, sourceOptions, ...presets) {\n this.id = id;\n _Container_engine.set(this, void 0);\n __classPrivateFieldSet(this, _Container_engine, engine, \"f\");\n this.fpsLimit = 120;\n this.duration = 0;\n this.lifeTime = 0;\n this.firstStart = true;\n this.started = false;\n this.destroyed = false;\n this.paused = true;\n this.lastFrameTime = 0;\n this.zLayers = 100;\n this.pageHidden = false;\n this._sourceOptions = sourceOptions;\n this._initialSourceOptions = sourceOptions;\n this.retina = new Retina(this);\n this.canvas = new Canvas(this);\n this.particles = new Particles(__classPrivateFieldGet(this, _Container_engine, \"f\"), this);\n this.drawer = new FrameManager(this);\n this.presets = presets;\n this.pathGenerator = {\n generate: () => {\n const v = Vector.create(0, 0);\n v.length = Math.random();\n v.angle = Math.random() * Math.PI * 2;\n return v;\n },\n init: () => {\n },\n update: () => {\n },\n };\n this.interactivity = {\n mouse: {\n clicking: false,\n inside: false,\n },\n };\n this.plugins = new Map();\n this.drawers = new Map();\n this.density = 1;\n this._options = new Options(__classPrivateFieldGet(this, _Container_engine, \"f\"));\n this.actualOptions = new Options(__classPrivateFieldGet(this, _Container_engine, \"f\"));\n this.eventListeners = new EventListeners(this);\n if (typeof IntersectionObserver !== \"undefined\" && IntersectionObserver) {\n this.intersectionObserver = new IntersectionObserver((entries) => this.intersectionManager(entries));\n }\n }\n get options() {\n return this._options;\n }\n get sourceOptions() {\n return this._sourceOptions;\n }\n play(force) {\n const needsUpdate = this.paused || force;\n if (this.firstStart && !this.actualOptions.autoPlay) {\n this.firstStart = false;\n return;\n }\n if (this.paused) {\n this.paused = false;\n }\n if (needsUpdate) {\n for (const [, plugin] of this.plugins) {\n if (plugin.play) {\n plugin.play();\n }\n }\n }\n this.draw(needsUpdate || false);\n }\n pause() {\n if (this.drawAnimationFrame !== undefined) {\n cancelAnimation()(this.drawAnimationFrame);\n delete this.drawAnimationFrame;\n }\n if (this.paused) {\n return;\n }\n for (const [, plugin] of this.plugins) {\n if (plugin.pause) {\n plugin.pause();\n }\n }\n if (!this.pageHidden) {\n this.paused = true;\n }\n }\n draw(force) {\n let refreshTime = force;\n this.drawAnimationFrame = animate()(async (timestamp) => {\n if (refreshTime) {\n this.lastFrameTime = undefined;\n refreshTime = false;\n }\n await this.drawer.nextFrame(timestamp);\n });\n }\n getAnimationStatus() {\n return !this.paused && !this.pageHidden;\n }\n setNoise(noiseOrGenerator, init, update) {\n this.setPath(noiseOrGenerator, init, update);\n }\n setPath(pathOrGenerator, init, update) {\n var _a, _b, _c;\n if (!pathOrGenerator) {\n return;\n }\n if (typeof pathOrGenerator === \"function\") {\n this.pathGenerator.generate = pathOrGenerator;\n if (init) {\n this.pathGenerator.init = init;\n }\n if (update) {\n this.pathGenerator.update = update;\n }\n }\n else {\n const oldGenerator = this.pathGenerator;\n this.pathGenerator = pathOrGenerator;\n (_a = this.pathGenerator).generate || (_a.generate = oldGenerator.generate);\n (_b = this.pathGenerator).init || (_b.init = oldGenerator.init);\n (_c = this.pathGenerator).update || (_c.update = oldGenerator.update);\n }\n }\n destroy() {\n this.stop();\n this.canvas.destroy();\n for (const [, drawer] of this.drawers) {\n if (drawer.destroy) {\n drawer.destroy(this);\n }\n }\n for (const key of this.drawers.keys()) {\n this.drawers.delete(key);\n }\n this.destroyed = true;\n }\n exportImg(callback) {\n this.exportImage(callback);\n }\n exportImage(callback, type, quality) {\n var _a;\n return (_a = this.canvas.element) === null || _a === void 0 ? void 0 : _a.toBlob(callback, type !== null && type !== void 0 ? type : \"image/png\", quality);\n }\n exportConfiguration() {\n return JSON.stringify(this.actualOptions, undefined, 2);\n }\n refresh() {\n this.stop();\n return this.start();\n }\n reset() {\n this._options = new Options(__classPrivateFieldGet(this, _Container_engine, \"f\"));\n return this.refresh();\n }\n stop() {\n if (!this.started) {\n return;\n }\n this.firstStart = true;\n this.started = false;\n this.eventListeners.removeListeners();\n this.pause();\n this.particles.clear();\n this.canvas.clear();\n if (this.interactivity.element instanceof HTMLElement && this.intersectionObserver) {\n this.intersectionObserver.unobserve(this.interactivity.element);\n }\n for (const [, plugin] of this.plugins) {\n if (plugin.stop) {\n plugin.stop();\n }\n }\n for (const key of this.plugins.keys()) {\n this.plugins.delete(key);\n }\n this.particles.linksColors = new Map();\n delete this.particles.grabLineColor;\n delete this.particles.linksColor;\n this._sourceOptions = this._options;\n }\n async loadTheme(name) {\n this.currentTheme = name;\n await this.refresh();\n }\n async start() {\n if (this.started) {\n return;\n }\n await this.init();\n this.started = true;\n this.eventListeners.addListeners();\n if (this.interactivity.element instanceof HTMLElement && this.intersectionObserver) {\n this.intersectionObserver.observe(this.interactivity.element);\n }\n for (const [, plugin] of this.plugins) {\n if (plugin.startAsync !== undefined) {\n await plugin.startAsync();\n }\n else if (plugin.start !== undefined) {\n plugin.start();\n }\n }\n this.play();\n }\n addClickHandler(callback) {\n const el = this.interactivity.element;\n if (!el) {\n return;\n }\n const clickOrTouchHandler = (e, pos, radius) => {\n if (this.destroyed) {\n return;\n }\n const pxRatio = this.retina.pixelRatio, posRetina = {\n x: pos.x * pxRatio,\n y: pos.y * pxRatio,\n }, particles = this.particles.quadTree.queryCircle(posRetina, radius * pxRatio);\n callback(e, particles);\n };\n const clickHandler = (e) => {\n if (this.destroyed) {\n return;\n }\n const mouseEvent = e, pos = {\n x: mouseEvent.offsetX || mouseEvent.clientX,\n y: mouseEvent.offsetY || mouseEvent.clientY,\n };\n clickOrTouchHandler(e, pos, 1);\n };\n const touchStartHandler = () => {\n if (this.destroyed) {\n return;\n }\n touched = true;\n touchMoved = false;\n };\n const touchMoveHandler = () => {\n if (this.destroyed) {\n return;\n }\n touchMoved = true;\n };\n const touchEndHandler = (e) => {\n var _a, _b, _c;\n if (this.destroyed) {\n return;\n }\n if (touched && !touchMoved) {\n const touchEvent = e;\n let lastTouch = touchEvent.touches[touchEvent.touches.length - 1];\n if (!lastTouch) {\n lastTouch = touchEvent.changedTouches[touchEvent.changedTouches.length - 1];\n if (!lastTouch) {\n return;\n }\n }\n const canvasRect = (_a = this.canvas.element) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect(), pos = {\n x: lastTouch.clientX - ((_b = canvasRect === null || canvasRect === void 0 ? void 0 : canvasRect.left) !== null && _b !== void 0 ? _b : 0),\n y: lastTouch.clientY - ((_c = canvasRect === null || canvasRect === void 0 ? void 0 : canvasRect.top) !== null && _c !== void 0 ? _c : 0),\n };\n clickOrTouchHandler(e, pos, Math.max(lastTouch.radiusX, lastTouch.radiusY));\n }\n touched = false;\n touchMoved = false;\n };\n const touchCancelHandler = () => {\n if (this.destroyed) {\n return;\n }\n touched = false;\n touchMoved = false;\n };\n let touched = false;\n let touchMoved = false;\n el.addEventListener(\"click\", clickHandler);\n el.addEventListener(\"touchstart\", touchStartHandler);\n el.addEventListener(\"touchmove\", touchMoveHandler);\n el.addEventListener(\"touchend\", touchEndHandler);\n el.addEventListener(\"touchcancel\", touchCancelHandler);\n }\n handleClickMode(mode) {\n this.particles.handleClickMode(mode);\n for (const [, plugin] of this.plugins) {\n if (plugin.handleClickMode) {\n plugin.handleClickMode(mode);\n }\n }\n }\n updateActualOptions() {\n this.actualOptions.responsive = [];\n const newMaxWidth = this.actualOptions.setResponsive(this.canvas.size.width, this.retina.pixelRatio, this._options);\n this.actualOptions.setTheme(this.currentTheme);\n if (this.responsiveMaxWidth != newMaxWidth) {\n this.responsiveMaxWidth = newMaxWidth;\n return true;\n }\n return false;\n }\n async init() {\n this._options = new Options(__classPrivateFieldGet(this, _Container_engine, \"f\"));\n for (const preset of this.presets) {\n this._options.load(__classPrivateFieldGet(this, _Container_engine, \"f\").plugins.getPreset(preset));\n }\n const shapes = __classPrivateFieldGet(this, _Container_engine, \"f\").plugins.getSupportedShapes();\n for (const type of shapes) {\n const drawer = __classPrivateFieldGet(this, _Container_engine, \"f\").plugins.getShapeDrawer(type);\n if (drawer) {\n this.drawers.set(type, drawer);\n }\n }\n this._options.load(this._initialSourceOptions);\n this._options.load(this._sourceOptions);\n this.actualOptions = new Options(__classPrivateFieldGet(this, _Container_engine, \"f\"));\n this.actualOptions.load(this._options);\n this.retina.init();\n this.canvas.init();\n this.updateActualOptions();\n this.canvas.initBackground();\n this.canvas.resize();\n this.zLayers = this.actualOptions.zLayers;\n this.duration = getRangeValue(this.actualOptions.duration);\n this.lifeTime = 0;\n this.fpsLimit = this.actualOptions.fpsLimit > 0 ? this.actualOptions.fpsLimit : 120;\n const availablePlugins = __classPrivateFieldGet(this, _Container_engine, \"f\").plugins.getAvailablePlugins(this);\n for (const [id, plugin] of availablePlugins) {\n this.plugins.set(id, plugin);\n }\n for (const [, drawer] of this.drawers) {\n if (drawer.init) {\n await drawer.init(this);\n }\n }\n for (const [, plugin] of this.plugins) {\n if (plugin.init) {\n plugin.init(this.actualOptions);\n }\n else if (plugin.initAsync !== undefined) {\n await plugin.initAsync(this.actualOptions);\n }\n }\n const pathOptions = this.actualOptions.particles.move.path;\n if (pathOptions.generator) {\n this.setPath(__classPrivateFieldGet(this, _Container_engine, \"f\").plugins.getPathGenerator(pathOptions.generator));\n }\n this.particles.init();\n this.particles.setDensity();\n for (const [, plugin] of this.plugins) {\n if (plugin.particlesSetup !== undefined) {\n plugin.particlesSetup();\n }\n }\n }\n intersectionManager(entries) {\n if (!this.actualOptions.pauseOnOutsideViewport) {\n return;\n }\n for (const entry of entries) {\n if (entry.target !== this.interactivity.element) {\n continue;\n }\n if (entry.isIntersecting) {\n this.play();\n }\n else {\n this.pause();\n }\n }\n }\n}\n_Container_engine = new WeakMap();\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Loader_engine;\nimport { Constants } from \"./Utils/Constants\";\nimport { Container } from \"./Container\";\nimport { itemFromArray } from \"../Utils/Utils\";\nfunction fetchError(statusCode) {\n console.error(`Error tsParticles - fetch status: ${statusCode}`);\n console.error(\"Error tsParticles - File config not found\");\n}\nexport class Loader {\n constructor(engine) {\n _Loader_engine.set(this, void 0);\n __classPrivateFieldSet(this, _Loader_engine, engine, \"f\");\n }\n dom() {\n return __classPrivateFieldGet(this, _Loader_engine, \"f\").domArray;\n }\n domItem(index) {\n const dom = this.dom();\n const item = dom[index];\n if (item && !item.destroyed) {\n return item;\n }\n dom.splice(index, 1);\n }\n async loadOptions(params) {\n var _a, _b, _c;\n const tagId = (_a = params.tagId) !== null && _a !== void 0 ? _a : `tsparticles${Math.floor(Math.random() * 10000)}`, { options, index } = params;\n let domContainer = (_b = params.element) !== null && _b !== void 0 ? _b : document.getElementById(tagId);\n if (!domContainer) {\n domContainer = document.createElement(\"div\");\n domContainer.id = tagId;\n (_c = document.querySelector(\"body\")) === null || _c === void 0 ? void 0 : _c.append(domContainer);\n }\n const currentOptions = options instanceof Array ? itemFromArray(options, index) : options, dom = this.dom(), oldIndex = dom.findIndex((v) => v.id === tagId);\n if (oldIndex >= 0) {\n const old = this.domItem(oldIndex);\n if (old && !old.destroyed) {\n old.destroy();\n dom.splice(oldIndex, 1);\n }\n }\n let canvasEl;\n if (domContainer.tagName.toLowerCase() === \"canvas\") {\n canvasEl = domContainer;\n canvasEl.dataset[Constants.generatedAttribute] = \"false\";\n }\n else {\n const existingCanvases = domContainer.getElementsByTagName(\"canvas\");\n if (existingCanvases.length) {\n canvasEl = existingCanvases[0];\n canvasEl.dataset[Constants.generatedAttribute] = \"false\";\n }\n else {\n canvasEl = document.createElement(\"canvas\");\n canvasEl.dataset[Constants.generatedAttribute] = \"true\";\n canvasEl.style.width = \"100%\";\n canvasEl.style.height = \"100%\";\n domContainer.appendChild(canvasEl);\n }\n }\n const newItem = new Container(__classPrivateFieldGet(this, _Loader_engine, \"f\"), tagId, currentOptions);\n if (oldIndex >= 0) {\n dom.splice(oldIndex, 0, newItem);\n }\n else {\n dom.push(newItem);\n }\n newItem.canvas.loadCanvas(canvasEl);\n await newItem.start();\n return newItem;\n }\n async loadRemoteOptions(params) {\n const { url: jsonUrl, index } = params, url = jsonUrl instanceof Array ? itemFromArray(jsonUrl, index) : jsonUrl;\n if (!url) {\n return;\n }\n const response = await fetch(url);\n if (!response.ok) {\n fetchError(response.status);\n return;\n }\n const data = await response.json();\n return this.loadOptions({\n tagId: params.tagId,\n element: params.element,\n index,\n options: data,\n });\n }\n load(tagId, options, index) {\n const params = { index };\n if (typeof tagId === \"string\") {\n params.tagId = tagId;\n }\n else {\n params.options = tagId;\n }\n if (typeof options === \"number\") {\n params.index = options !== null && options !== void 0 ? options : params.index;\n }\n else {\n params.options = options !== null && options !== void 0 ? options : params.options;\n }\n return this.loadOptions(params);\n }\n async set(id, domContainer, options, index) {\n const params = { index };\n if (typeof id === \"string\") {\n params.tagId = id;\n }\n else {\n params.element = id;\n }\n if (domContainer instanceof HTMLElement) {\n params.element = domContainer;\n }\n else {\n params.options = domContainer;\n }\n if (typeof options === \"number\") {\n params.index = options;\n }\n else {\n params.options = options !== null && options !== void 0 ? options : params.options;\n }\n return this.loadOptions(params);\n }\n async loadJSON(tagId, jsonUrl, index) {\n let url, id;\n if (typeof jsonUrl === \"number\" || jsonUrl === undefined) {\n url = tagId;\n }\n else {\n id = tagId;\n url = jsonUrl;\n }\n return this.loadRemoteOptions({ tagId: id, url, index });\n }\n async setJSON(id, domContainer, jsonUrl, index) {\n let url, newId, newIndex, element;\n if (id instanceof HTMLElement) {\n element = id;\n url = domContainer;\n newIndex = jsonUrl;\n }\n else {\n newId = id;\n element = domContainer;\n url = jsonUrl;\n newIndex = index;\n }\n return this.loadRemoteOptions({ tagId: newId, url, index: newIndex, element });\n }\n setOnClickHandler(callback) {\n const dom = this.dom();\n if (!dom.length) {\n throw new Error(\"Can only set click handlers after calling tsParticles.load() or tsParticles.loadJSON()\");\n }\n for (const domItem of dom) {\n domItem.addClickHandler(callback);\n }\n }\n}\n_Loader_engine = new WeakMap();\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _Plugins_engine;\nexport class Plugins {\n constructor(engine) {\n _Plugins_engine.set(this, void 0);\n __classPrivateFieldSet(this, _Plugins_engine, engine, \"f\");\n this.plugins = [];\n this.interactorsInitializers = new Map();\n this.moversInitializers = new Map();\n this.updatersInitializers = new Map();\n this.interactors = new Map();\n this.movers = new Map();\n this.updaters = new Map();\n this.presets = new Map();\n this.drawers = new Map();\n this.pathGenerators = new Map();\n }\n getPlugin(plugin) {\n return this.plugins.find((t) => t.id === plugin);\n }\n addPlugin(plugin) {\n if (!this.getPlugin(plugin.id)) {\n this.plugins.push(plugin);\n }\n }\n getAvailablePlugins(container) {\n const res = new Map();\n for (const plugin of this.plugins) {\n if (!plugin.needsPlugin(container.actualOptions)) {\n continue;\n }\n res.set(plugin.id, plugin.getPlugin(container));\n }\n return res;\n }\n loadOptions(options, sourceOptions) {\n for (const plugin of this.plugins) {\n plugin.loadOptions(options, sourceOptions);\n }\n }\n getPreset(preset) {\n return this.presets.get(preset);\n }\n addPreset(presetKey, options, override = false) {\n if (override || !this.getPreset(presetKey)) {\n this.presets.set(presetKey, options);\n }\n }\n getShapeDrawer(type) {\n return this.drawers.get(type);\n }\n addShapeDrawer(type, drawer) {\n if (!this.getShapeDrawer(type)) {\n this.drawers.set(type, drawer);\n }\n }\n getSupportedShapes() {\n return this.drawers.keys();\n }\n getPathGenerator(type) {\n return this.pathGenerators.get(type);\n }\n addPathGenerator(type, pathGenerator) {\n if (!this.getPathGenerator(type)) {\n this.pathGenerators.set(type, pathGenerator);\n }\n }\n getInteractors(container, force = false) {\n let res = this.interactors.get(container);\n if (!res || force) {\n res = [...this.interactorsInitializers.values()].map((t) => t(container));\n this.interactors.set(container, res);\n }\n return res;\n }\n addInteractor(name, initInteractor) {\n this.interactorsInitializers.set(name, initInteractor);\n }\n getUpdaters(container, force = false) {\n let res = this.updaters.get(container);\n if (!res || force) {\n res = [...this.updatersInitializers.values()].map((t) => t(container));\n this.updaters.set(container, res);\n }\n return res;\n }\n addParticleUpdater(name, initUpdater) {\n this.updatersInitializers.set(name, initUpdater);\n }\n getMovers(container, force = false) {\n let res = this.movers.get(container);\n if (!res || force) {\n res = [...this.moversInitializers.values()].map((t) => t(container));\n this.movers.set(container, res);\n }\n return res;\n }\n addParticleMover(name, initMover) {\n this.moversInitializers.set(name, initMover);\n }\n}\n_Plugins_engine = new WeakMap();\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Engine_initialized, _Engine_loader;\nimport { Loader } from \"./Core/Loader\";\nimport { Plugins } from \"./Core/Utils/Plugins\";\nexport class Engine {\n constructor() {\n _Engine_initialized.set(this, void 0);\n _Engine_loader.set(this, void 0);\n __classPrivateFieldSet(this, _Engine_initialized, false, \"f\");\n this.domArray = [];\n __classPrivateFieldSet(this, _Engine_loader, new Loader(this), \"f\");\n this.plugins = new Plugins(this);\n }\n init() {\n if (!__classPrivateFieldGet(this, _Engine_initialized, \"f\")) {\n __classPrivateFieldSet(this, _Engine_initialized, true, \"f\");\n }\n }\n async loadFromArray(tagId, options, index) {\n return __classPrivateFieldGet(this, _Engine_loader, \"f\").load(tagId, options, index);\n }\n async load(tagId, options) {\n return __classPrivateFieldGet(this, _Engine_loader, \"f\").load(tagId, options);\n }\n async set(id, element, options) {\n return __classPrivateFieldGet(this, _Engine_loader, \"f\").set(id, element, options);\n }\n async loadJSON(tagId, pathConfigJson, index) {\n return __classPrivateFieldGet(this, _Engine_loader, \"f\").loadJSON(tagId, pathConfigJson, index);\n }\n async setJSON(id, element, pathConfigJson, index) {\n return __classPrivateFieldGet(this, _Engine_loader, \"f\").setJSON(id, element, pathConfigJson, index);\n }\n setOnClickHandler(callback) {\n __classPrivateFieldGet(this, _Engine_loader, \"f\").setOnClickHandler(callback);\n }\n dom() {\n return __classPrivateFieldGet(this, _Engine_loader, \"f\").dom();\n }\n domItem(index) {\n return __classPrivateFieldGet(this, _Engine_loader, \"f\").domItem(index);\n }\n async refresh() {\n for (const instance of this.dom()) {\n await instance.refresh();\n }\n }\n async addShape(shape, drawer, init, afterEffect, destroy) {\n let customDrawer;\n if (typeof drawer === \"function\") {\n customDrawer = {\n afterEffect: afterEffect,\n destroy: destroy,\n draw: drawer,\n init: init,\n };\n }\n else {\n customDrawer = drawer;\n }\n this.plugins.addShapeDrawer(shape, customDrawer);\n await this.refresh();\n }\n async addPreset(preset, options, override = false) {\n this.plugins.addPreset(preset, options, override);\n await this.refresh();\n }\n async addPlugin(plugin) {\n this.plugins.addPlugin(plugin);\n await this.refresh();\n }\n async addPathGenerator(name, generator) {\n this.plugins.addPathGenerator(name, generator);\n await this.refresh();\n }\n async addInteractor(name, interactorInitializer) {\n this.plugins.addInteractor(name, interactorInitializer);\n await this.refresh();\n }\n async addMover(name, moverInitializer) {\n this.plugins.addParticleMover(name, moverInitializer);\n await this.refresh();\n }\n async addParticleUpdater(name, updaterInitializer) {\n this.plugins.addParticleUpdater(name, updaterInitializer);\n await this.refresh();\n }\n}\n_Engine_initialized = new WeakMap(), _Engine_loader = new WeakMap();\n","export class AbsorberSizeLimit {\n constructor() {\n this.radius = 0;\n this.mass = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.mass !== undefined) {\n this.mass = data.mass;\n }\n if (data.radius !== undefined) {\n this.radius = data.radius;\n }\n }\n}\n","import { AbsorberSizeLimit } from \"./AbsorberSizeLimit\";\nimport { ValueWithRandom } from \"../../../../Options/Classes/ValueWithRandom\";\nexport class AbsorberSize extends ValueWithRandom {\n constructor() {\n super();\n this.density = 5;\n this.random.minimumValue = 1;\n this.value = 50;\n this.limit = new AbsorberSizeLimit();\n }\n load(data) {\n if (!data) {\n return;\n }\n super.load(data);\n if (data.density !== undefined) {\n this.density = data.density;\n }\n if (typeof data.limit === \"number\") {\n this.limit.radius = data.limit;\n }\n else {\n this.limit.load(data.limit);\n }\n }\n}\n","import { AbsorberSize } from \"./AbsorberSize\";\nimport { OptionsColor } from \"../../../../Options/Classes/OptionsColor\";\nimport { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class Absorber {\n constructor() {\n this.color = new OptionsColor();\n this.color.value = \"#000000\";\n this.draggable = false;\n this.opacity = 1;\n this.destroy = true;\n this.orbits = false;\n this.size = new AbsorberSize();\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.color !== undefined) {\n this.color = OptionsColor.create(this.color, data.color);\n }\n if (data.draggable !== undefined) {\n this.draggable = data.draggable;\n }\n this.name = data.name;\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n if (data.position !== undefined) {\n this.position = {};\n if (data.position.x !== undefined) {\n this.position.x = setRangeValue(data.position.x);\n }\n if (data.position.y !== undefined) {\n this.position.y = setRangeValue(data.position.y);\n }\n }\n if (data.size !== undefined) {\n this.size.load(data.size);\n }\n if (data.destroy !== undefined) {\n this.destroy = data.destroy;\n }\n if (data.orbits !== undefined) {\n this.orbits = data.orbits;\n }\n }\n}\n","import { calcPositionOrRandomFromSize, calcPositionOrRandomFromSizeRanged, getDistance, getDistances, getRangeValue, } from \"../../Utils/NumberUtils\";\nimport { colorToRgb, getStyleFromRgb } from \"../../Utils/ColorUtils\";\nimport { Absorber } from \"./Options/Classes/Absorber\";\nimport { Vector } from \"../../Core/Utils/Vector\";\nimport { isPointInside } from \"../../Utils/Utils\";\nexport class AbsorberInstance {\n constructor(absorbers, container, options, position) {\n var _a, _b, _c;\n this.absorbers = absorbers;\n this.container = container;\n this.initialPosition = position ? Vector.create(position.x, position.y) : undefined;\n if (options instanceof Absorber) {\n this.options = options;\n }\n else {\n this.options = new Absorber();\n this.options.load(options);\n }\n this.dragging = false;\n this.name = this.options.name;\n this.opacity = this.options.opacity;\n this.size = getRangeValue(this.options.size.value) * container.retina.pixelRatio;\n this.mass = this.size * this.options.size.density * container.retina.reduceFactor;\n const limit = this.options.size.limit;\n this.limit = {\n radius: limit.radius * container.retina.pixelRatio * container.retina.reduceFactor,\n mass: limit.mass,\n };\n this.color = (_a = colorToRgb(this.options.color)) !== null && _a !== void 0 ? _a : {\n b: 0,\n g: 0,\n r: 0,\n };\n this.position = (_c = (_b = this.initialPosition) === null || _b === void 0 ? void 0 : _b.copy()) !== null && _c !== void 0 ? _c : this.calcPosition();\n }\n attract(particle) {\n const container = this.container, options = this.options;\n if (options.draggable) {\n const mouse = container.interactivity.mouse;\n if (mouse.clicking && mouse.downPosition) {\n const mouseDist = getDistance(this.position, mouse.downPosition);\n if (mouseDist <= this.size) {\n this.dragging = true;\n }\n }\n else {\n this.dragging = false;\n }\n if (this.dragging && mouse.position) {\n this.position.x = mouse.position.x;\n this.position.y = mouse.position.y;\n }\n }\n const pos = particle.getPosition(), { dx, dy, distance } = getDistances(this.position, pos), v = Vector.create(dx, dy);\n v.length = (this.mass / Math.pow(distance, 2)) * container.retina.reduceFactor;\n if (distance < this.size + particle.getRadius()) {\n const sizeFactor = particle.getRadius() * 0.033 * container.retina.pixelRatio;\n if ((this.size > particle.getRadius() && distance < this.size - particle.getRadius()) ||\n (particle.absorberOrbit !== undefined && particle.absorberOrbit.length < 0)) {\n if (options.destroy) {\n particle.destroy();\n }\n else {\n particle.needsNewPosition = true;\n this.updateParticlePosition(particle, v);\n }\n }\n else {\n if (options.destroy) {\n particle.size.value -= sizeFactor;\n }\n this.updateParticlePosition(particle, v);\n }\n if (this.limit.radius <= 0 || this.size < this.limit.radius) {\n this.size += sizeFactor;\n }\n if (this.limit.mass <= 0 || this.mass < this.limit.mass) {\n this.mass += sizeFactor * this.options.size.density * container.retina.reduceFactor;\n }\n }\n else {\n this.updateParticlePosition(particle, v);\n }\n }\n resize() {\n const initialPosition = this.initialPosition;\n this.position =\n initialPosition && isPointInside(initialPosition, this.container.canvas.size)\n ? initialPosition\n : this.calcPosition();\n }\n draw(context) {\n context.translate(this.position.x, this.position.y);\n context.beginPath();\n context.arc(0, 0, this.size, 0, Math.PI * 2, false);\n context.closePath();\n context.fillStyle = getStyleFromRgb(this.color, this.opacity);\n context.fill();\n }\n calcPosition() {\n const exactPosition = calcPositionOrRandomFromSizeRanged({\n size: this.container.canvas.size,\n position: this.options.position,\n });\n return Vector.create(exactPosition.x, exactPosition.y);\n }\n updateParticlePosition(particle, v) {\n var _a;\n if (particle.destroyed) {\n return;\n }\n const container = this.container, canvasSize = container.canvas.size;\n if (particle.needsNewPosition) {\n const newPosition = calcPositionOrRandomFromSize({ size: canvasSize });\n particle.position.setTo(newPosition);\n particle.velocity.setTo(particle.initialVelocity);\n particle.absorberOrbit = undefined;\n particle.needsNewPosition = false;\n }\n if (this.options.orbits) {\n if (particle.absorberOrbit === undefined) {\n particle.absorberOrbit = Vector.create(0, 0);\n particle.absorberOrbit.length = getDistance(particle.getPosition(), this.position);\n particle.absorberOrbit.angle = Math.random() * Math.PI * 2;\n }\n if (particle.absorberOrbit.length <= this.size && !this.options.destroy) {\n const minSize = Math.min(canvasSize.width, canvasSize.height);\n particle.absorberOrbit.length = minSize * (1 + (Math.random() * 0.2 - 0.1));\n }\n if (particle.absorberOrbitDirection === undefined) {\n particle.absorberOrbitDirection =\n particle.velocity.x >= 0 ? \"clockwise\" : \"counter-clockwise\";\n }\n const orbitRadius = particle.absorberOrbit.length, orbitAngle = particle.absorberOrbit.angle, orbitDirection = particle.absorberOrbitDirection;\n particle.velocity.setTo(Vector.origin);\n const updateFunc = {\n x: orbitDirection === \"clockwise\" ? Math.cos : Math.sin,\n y: orbitDirection === \"clockwise\" ? Math.sin : Math.cos,\n };\n particle.position.x = this.position.x + orbitRadius * updateFunc.x(orbitAngle);\n particle.position.y = this.position.y + orbitRadius * updateFunc.y(orbitAngle);\n particle.absorberOrbit.length -= v.length;\n particle.absorberOrbit.angle +=\n ((((_a = particle.retina.moveSpeed) !== null && _a !== void 0 ? _a : 0) * container.retina.pixelRatio) / 100) *\n container.retina.reduceFactor;\n }\n else {\n const addV = Vector.origin;\n addV.length = v.length;\n addV.angle = v.angle;\n particle.velocity.addTo(addV);\n }\n }\n}\n","import { Absorber } from \"./Options/Classes/Absorber\";\nimport { AbsorberInstance } from \"./AbsorberInstance\";\nimport { itemFromArray } from \"../../Utils/Utils\";\nexport class Absorbers {\n constructor(container) {\n this.container = container;\n this.array = [];\n this.absorbers = [];\n this.interactivityAbsorbers = [];\n const overridableContainer = container;\n overridableContainer.getAbsorber = (idxOrName) => idxOrName === undefined || typeof idxOrName === \"number\"\n ? this.array[idxOrName || 0]\n : this.array.find((t) => t.name === idxOrName);\n overridableContainer.addAbsorber = (options, position) => this.addAbsorber(options, position);\n }\n init(options) {\n var _a, _b;\n if (!options) {\n return;\n }\n if (options.absorbers) {\n if (options.absorbers instanceof Array) {\n this.absorbers = options.absorbers.map((s) => {\n const tmp = new Absorber();\n tmp.load(s);\n return tmp;\n });\n }\n else {\n if (this.absorbers instanceof Array) {\n this.absorbers = new Absorber();\n }\n this.absorbers.load(options.absorbers);\n }\n }\n const interactivityAbsorbers = (_b = (_a = options.interactivity) === null || _a === void 0 ? void 0 : _a.modes) === null || _b === void 0 ? void 0 : _b.absorbers;\n if (interactivityAbsorbers) {\n if (interactivityAbsorbers instanceof Array) {\n this.interactivityAbsorbers = interactivityAbsorbers.map((s) => {\n const tmp = new Absorber();\n tmp.load(s);\n return tmp;\n });\n }\n else {\n if (this.interactivityAbsorbers instanceof Array) {\n this.interactivityAbsorbers = new Absorber();\n }\n this.interactivityAbsorbers.load(interactivityAbsorbers);\n }\n }\n if (this.absorbers instanceof Array) {\n for (const absorberOptions of this.absorbers) {\n this.addAbsorber(absorberOptions);\n }\n }\n else {\n this.addAbsorber(this.absorbers);\n }\n }\n particleUpdate(particle) {\n for (const absorber of this.array) {\n absorber.attract(particle);\n if (particle.destroyed) {\n break;\n }\n }\n }\n draw(context) {\n for (const absorber of this.array) {\n context.save();\n absorber.draw(context);\n context.restore();\n }\n }\n stop() {\n this.array = [];\n }\n resize() {\n for (const absorber of this.array) {\n absorber.resize();\n }\n }\n handleClickMode(mode) {\n const absorberOptions = this.absorbers, modeAbsorbers = this.interactivityAbsorbers;\n if (mode === \"absorber\") {\n let absorbersModeOptions;\n if (modeAbsorbers instanceof Array) {\n if (modeAbsorbers.length > 0) {\n absorbersModeOptions = itemFromArray(modeAbsorbers);\n }\n }\n else {\n absorbersModeOptions = modeAbsorbers;\n }\n const absorbersOptions = absorbersModeOptions !== null && absorbersModeOptions !== void 0 ? absorbersModeOptions : (absorberOptions instanceof Array ? itemFromArray(absorberOptions) : absorberOptions), aPosition = this.container.interactivity.mouse.clickPosition;\n this.addAbsorber(absorbersOptions, aPosition);\n }\n }\n addAbsorber(options, position) {\n const absorber = new AbsorberInstance(this, this.container, options, position);\n this.array.push(absorber);\n return absorber;\n }\n removeAbsorber(absorber) {\n const index = this.array.indexOf(absorber);\n if (index >= 0) {\n this.array.splice(index, 1);\n }\n }\n}\n","import { Absorber } from \"./Options/Classes/Absorber\";\nimport { Absorbers } from \"./Absorbers\";\nimport { isInArray } from \"../../Utils/Utils\";\nclass AbsorbersPlugin {\n constructor() {\n this.id = \"absorbers\";\n }\n getPlugin(container) {\n return new Absorbers(container);\n }\n needsPlugin(options) {\n var _a, _b, _c;\n if (options === undefined) {\n return false;\n }\n const absorbers = options.absorbers;\n if (absorbers instanceof Array) {\n return !!absorbers.length;\n }\n else if (absorbers) {\n return true;\n }\n else if (((_c = (_b = (_a = options.interactivity) === null || _a === void 0 ? void 0 : _a.events) === null || _b === void 0 ? void 0 : _b.onClick) === null || _c === void 0 ? void 0 : _c.mode) &&\n isInArray(\"absorber\", options.interactivity.events.onClick.mode)) {\n return true;\n }\n return false;\n }\n loadOptions(options, source) {\n var _a, _b;\n if (!this.needsPlugin(options) && !this.needsPlugin(source)) {\n return;\n }\n const optionsCast = options;\n if (source === null || source === void 0 ? void 0 : source.absorbers) {\n if ((source === null || source === void 0 ? void 0 : source.absorbers) instanceof Array) {\n optionsCast.absorbers = source === null || source === void 0 ? void 0 : source.absorbers.map((s) => {\n const tmp = new Absorber();\n tmp.load(s);\n return tmp;\n });\n }\n else {\n let absorberOptions = optionsCast.absorbers;\n if ((absorberOptions === null || absorberOptions === void 0 ? void 0 : absorberOptions.load) === undefined) {\n optionsCast.absorbers = absorberOptions = new Absorber();\n }\n absorberOptions.load(source === null || source === void 0 ? void 0 : source.absorbers);\n }\n }\n const interactivityAbsorbers = (_b = (_a = source === null || source === void 0 ? void 0 : source.interactivity) === null || _a === void 0 ? void 0 : _a.modes) === null || _b === void 0 ? void 0 : _b.absorbers;\n if (interactivityAbsorbers) {\n if (interactivityAbsorbers instanceof Array) {\n optionsCast.interactivity.modes.absorbers = interactivityAbsorbers.map((s) => {\n const tmp = new Absorber();\n tmp.load(s);\n return tmp;\n });\n }\n else {\n let absorberOptions = optionsCast.interactivity.modes.absorbers;\n if ((absorberOptions === null || absorberOptions === void 0 ? void 0 : absorberOptions.load) === undefined) {\n optionsCast.interactivity.modes.absorbers = absorberOptions = new Absorber();\n }\n absorberOptions.load(interactivityAbsorbers);\n }\n }\n }\n}\nexport async function loadAbsorbersPlugin(engine) {\n const plugin = new AbsorbersPlugin();\n await engine.addPlugin(plugin);\n}\nexport * from \"./Enums/AbsorberClickMode\";\nexport * from \"./Options/Interfaces/IAbsorberOptions\";\n","export class CircleShape {\n randomPosition(position, size, fill) {\n const generateTheta = (x, y) => {\n const u = Math.random() / 4.0, theta = Math.atan((y / x) * Math.tan(2 * Math.PI * u)), v = Math.random();\n if (v < 0.25) {\n return theta;\n }\n else if (v < 0.5) {\n return Math.PI - theta;\n }\n else if (v < 0.75) {\n return Math.PI + theta;\n }\n else {\n return -theta;\n }\n }, radius = (x, y, theta) => (x * y) / Math.sqrt((y * Math.cos(theta)) ** 2 + (x * Math.sin(theta)) ** 2), [a, b] = [size.width / 2, size.height / 2], randomTheta = generateTheta(a, b), maxRadius = radius(a, b, randomTheta), randomRadius = fill ? maxRadius * Math.sqrt(Math.random()) : maxRadius;\n return {\n x: position.x + randomRadius * Math.cos(randomTheta),\n y: position.y + randomRadius * Math.sin(randomTheta),\n };\n }\n}\n","export class EmitterLife {\n constructor() {\n this.wait = false;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.count !== undefined) {\n this.count = data.count;\n }\n if (data.delay !== undefined) {\n this.delay = data.delay;\n }\n if (data.duration !== undefined) {\n this.duration = data.duration;\n }\n if (data.wait !== undefined) {\n this.wait = data.wait;\n }\n }\n}\n","import { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class EmitterRate {\n constructor() {\n this.quantity = 1;\n this.delay = 0.1;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.quantity !== undefined) {\n this.quantity = setRangeValue(data.quantity);\n }\n if (data.delay !== undefined) {\n this.delay = setRangeValue(data.delay);\n }\n }\n}\n","export class EmitterSize {\n constructor() {\n this.mode = \"percent\";\n this.height = 0;\n this.width = 0;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n if (data.height !== undefined) {\n this.height = data.height;\n }\n if (data.width !== undefined) {\n this.width = data.width;\n }\n }\n}\n","import { AnimatableColor } from \"../../../../Options/Classes/AnimatableColor\";\nimport { EmitterLife } from \"./EmitterLife\";\nimport { EmitterRate } from \"./EmitterRate\";\nimport { EmitterSize } from \"./EmitterSize\";\nimport { deepExtend } from \"../../../../Utils/Utils\";\nimport { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class Emitter {\n constructor() {\n this.autoPlay = true;\n this.fill = true;\n this.life = new EmitterLife();\n this.rate = new EmitterRate();\n this.shape = \"square\";\n this.startCount = 0;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.autoPlay !== undefined) {\n this.autoPlay = data.autoPlay;\n }\n if (data.size !== undefined) {\n if (this.size === undefined) {\n this.size = new EmitterSize();\n }\n this.size.load(data.size);\n }\n if (data.direction !== undefined) {\n this.direction = data.direction;\n }\n this.domId = data.domId;\n if (data.fill !== undefined) {\n this.fill = data.fill;\n }\n this.life.load(data.life);\n this.name = data.name;\n if (data.particles !== undefined) {\n this.particles = deepExtend({}, data.particles);\n }\n this.rate.load(data.rate);\n if (data.shape !== undefined) {\n this.shape = data.shape;\n }\n if (data.position !== undefined) {\n this.position = {};\n if (data.position.x !== undefined) {\n this.position.x = setRangeValue(data.position.x);\n }\n if (data.position.y !== undefined) {\n this.position.y = setRangeValue(data.position.y);\n }\n }\n if (data.spawnColor !== undefined) {\n if (this.spawnColor === undefined) {\n this.spawnColor = new AnimatableColor();\n }\n this.spawnColor.load(data.spawnColor);\n }\n if (data.startCount !== undefined) {\n this.startCount = data.startCount;\n }\n }\n}\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _EmitterInstance_firstSpawn, _EmitterInstance_startParticlesAdded, _EmitterInstance_engine;\nimport { calcPositionOrRandomFromSizeRanged, getRangeValue, randomInRange } from \"../../Utils/NumberUtils\";\nimport { deepExtend, isPointInside } from \"../../Utils/Utils\";\nimport { Emitter } from \"./Options/Classes/Emitter\";\nimport { EmitterSize } from \"./Options/Classes/EmitterSize\";\nimport { colorToHsl } from \"../../Utils/ColorUtils\";\nexport class EmitterInstance {\n constructor(engine, emitters, container, options, position) {\n var _a, _b, _c, _d, _e, _f, _g;\n var _h;\n this.emitters = emitters;\n this.container = container;\n _EmitterInstance_firstSpawn.set(this, void 0);\n _EmitterInstance_startParticlesAdded.set(this, void 0);\n _EmitterInstance_engine.set(this, void 0);\n __classPrivateFieldSet(this, _EmitterInstance_engine, engine, \"f\");\n this.currentDuration = 0;\n this.currentEmitDelay = 0;\n this.currentSpawnDelay = 0;\n this.initialPosition = position;\n if (options instanceof Emitter) {\n this.options = options;\n }\n else {\n this.options = new Emitter();\n this.options.load(options);\n }\n this.spawnDelay = (((_a = this.options.life.delay) !== null && _a !== void 0 ? _a : 0) * 1000) / this.container.retina.reduceFactor;\n this.position = (_b = this.initialPosition) !== null && _b !== void 0 ? _b : this.calcPosition();\n this.name = this.options.name;\n this.shape = (_c = __classPrivateFieldGet(this, _EmitterInstance_engine, \"f\").emitterShapeManager) === null || _c === void 0 ? void 0 : _c.getShape(this.options.shape);\n this.fill = this.options.fill;\n __classPrivateFieldSet(this, _EmitterInstance_firstSpawn, !this.options.life.wait, \"f\");\n __classPrivateFieldSet(this, _EmitterInstance_startParticlesAdded, false, \"f\");\n let particlesOptions = deepExtend({}, this.options.particles);\n particlesOptions !== null && particlesOptions !== void 0 ? particlesOptions : (particlesOptions = {});\n (_d = particlesOptions.move) !== null && _d !== void 0 ? _d : (particlesOptions.move = {});\n (_e = (_h = particlesOptions.move).direction) !== null && _e !== void 0 ? _e : (_h.direction = this.options.direction);\n if (this.options.spawnColor) {\n this.spawnColor = colorToHsl(this.options.spawnColor);\n }\n this.paused = !this.options.autoPlay;\n this.particlesOptions = particlesOptions;\n this.size =\n (_f = this.options.size) !== null && _f !== void 0 ? _f : (() => {\n const size = new EmitterSize();\n size.load({\n height: 0,\n mode: \"percent\",\n width: 0,\n });\n return size;\n })();\n this.lifeCount = (_g = this.options.life.count) !== null && _g !== void 0 ? _g : -1;\n this.immortal = this.lifeCount <= 0;\n this.play();\n }\n externalPlay() {\n this.paused = false;\n this.play();\n }\n externalPause() {\n this.paused = true;\n this.pause();\n }\n play() {\n var _a;\n if (this.paused) {\n return;\n }\n if (!(this.container.retina.reduceFactor &&\n (this.lifeCount > 0 || this.immortal || !this.options.life.count) &&\n (__classPrivateFieldGet(this, _EmitterInstance_firstSpawn, \"f\") || this.currentSpawnDelay >= ((_a = this.spawnDelay) !== null && _a !== void 0 ? _a : 0)))) {\n return;\n }\n if (this.emitDelay === undefined) {\n const delay = getRangeValue(this.options.rate.delay);\n this.emitDelay = (1000 * delay) / this.container.retina.reduceFactor;\n }\n if (this.lifeCount > 0 || this.immortal) {\n this.prepareToDie();\n }\n }\n pause() {\n if (this.paused) {\n return;\n }\n delete this.emitDelay;\n }\n resize() {\n const initialPosition = this.initialPosition;\n this.position =\n initialPosition && isPointInside(initialPosition, this.container.canvas.size)\n ? initialPosition\n : this.calcPosition();\n }\n update(delta) {\n var _a, _b, _c;\n if (this.paused) {\n return;\n }\n if (__classPrivateFieldGet(this, _EmitterInstance_firstSpawn, \"f\")) {\n __classPrivateFieldSet(this, _EmitterInstance_firstSpawn, false, \"f\");\n this.currentSpawnDelay = (_a = this.spawnDelay) !== null && _a !== void 0 ? _a : 0;\n this.currentEmitDelay = (_b = this.emitDelay) !== null && _b !== void 0 ? _b : 0;\n }\n if (!__classPrivateFieldGet(this, _EmitterInstance_startParticlesAdded, \"f\")) {\n __classPrivateFieldSet(this, _EmitterInstance_startParticlesAdded, true, \"f\");\n this.emitParticles(this.options.startCount);\n }\n if (this.duration !== undefined) {\n this.currentDuration += delta.value;\n if (this.currentDuration >= this.duration) {\n this.pause();\n if (this.spawnDelay !== undefined) {\n delete this.spawnDelay;\n }\n if (!this.immortal) {\n this.lifeCount--;\n }\n if (this.lifeCount > 0 || this.immortal) {\n this.position = this.calcPosition();\n this.spawnDelay = (((_c = this.options.life.delay) !== null && _c !== void 0 ? _c : 0) * 1000) / this.container.retina.reduceFactor;\n }\n else {\n this.destroy();\n }\n this.currentDuration -= this.duration;\n delete this.duration;\n }\n }\n if (this.spawnDelay !== undefined) {\n this.currentSpawnDelay += delta.value;\n if (this.currentSpawnDelay >= this.spawnDelay) {\n this.play();\n this.currentSpawnDelay -= this.currentSpawnDelay;\n delete this.spawnDelay;\n }\n }\n if (this.emitDelay !== undefined) {\n this.currentEmitDelay += delta.value;\n if (this.currentEmitDelay >= this.emitDelay) {\n this.emit();\n this.currentEmitDelay -= this.emitDelay;\n }\n }\n }\n getPosition() {\n if (this.options.domId) {\n const container = this.container, element = document.getElementById(this.options.domId);\n if (element) {\n const elRect = element.getBoundingClientRect();\n return {\n x: (elRect.x + elRect.width / 2) * container.retina.pixelRatio,\n y: (elRect.y + elRect.height / 2) * container.retina.pixelRatio,\n };\n }\n }\n return this.position;\n }\n getSize() {\n const container = this.container;\n if (this.options.domId) {\n const element = document.getElementById(this.options.domId);\n if (element) {\n const elRect = element.getBoundingClientRect();\n return {\n width: elRect.width * container.retina.pixelRatio,\n height: elRect.height * container.retina.pixelRatio,\n };\n }\n }\n return {\n width: this.size.mode === \"percent\"\n ? (container.canvas.size.width * this.size.width) / 100\n : this.size.width,\n height: this.size.mode === \"percent\"\n ? (container.canvas.size.height * this.size.height) / 100\n : this.size.height,\n };\n }\n prepareToDie() {\n var _a;\n if (this.paused) {\n return;\n }\n const duration = (_a = this.options.life) === null || _a === void 0 ? void 0 : _a.duration;\n if (this.container.retina.reduceFactor &&\n (this.lifeCount > 0 || this.immortal) &&\n duration !== undefined &&\n duration > 0) {\n this.duration = duration * 1000;\n }\n }\n destroy() {\n this.emitters.removeEmitter(this);\n }\n calcPosition() {\n return calcPositionOrRandomFromSizeRanged({\n size: this.container.canvas.size,\n position: this.options.position,\n });\n }\n emit() {\n if (this.paused) {\n return;\n }\n const quantity = getRangeValue(this.options.rate.quantity);\n this.emitParticles(quantity);\n }\n emitParticles(quantity) {\n var _a, _b, _c;\n const position = this.getPosition(), size = this.getSize();\n for (let i = 0; i < quantity; i++) {\n const particlesOptions = deepExtend({}, this.particlesOptions);\n if (this.spawnColor) {\n const hslAnimation = (_a = this.options.spawnColor) === null || _a === void 0 ? void 0 : _a.animation;\n if (hslAnimation) {\n this.spawnColor.h = this.setColorAnimation(hslAnimation.h, this.spawnColor.h, 360);\n this.spawnColor.s = this.setColorAnimation(hslAnimation.s, this.spawnColor.s, 100);\n this.spawnColor.l = this.setColorAnimation(hslAnimation.l, this.spawnColor.l, 100);\n }\n if (!particlesOptions.color) {\n particlesOptions.color = {\n value: this.spawnColor,\n };\n }\n else {\n particlesOptions.color.value = this.spawnColor;\n }\n }\n if (!position) {\n return;\n }\n const pPosition = (_c = (_b = this.shape) === null || _b === void 0 ? void 0 : _b.randomPosition(position, size, this.fill)) !== null && _c !== void 0 ? _c : position;\n this.container.particles.addParticle(pPosition, particlesOptions);\n }\n }\n setColorAnimation(animation, initValue, maxValue) {\n var _a;\n const container = this.container;\n if (!animation.enable) {\n return initValue;\n }\n const colorOffset = randomInRange(animation.offset), delay = getRangeValue(this.options.rate.delay), emitFactor = (1000 * delay) / container.retina.reduceFactor, colorSpeed = getRangeValue((_a = animation.speed) !== null && _a !== void 0 ? _a : 0);\n return (initValue + (colorSpeed * container.fpsLimit) / emitFactor + colorOffset * 3.6) % maxValue;\n }\n}\n_EmitterInstance_firstSpawn = new WeakMap(), _EmitterInstance_startParticlesAdded = new WeakMap(), _EmitterInstance_engine = new WeakMap();\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Emitters_engine;\nimport { deepExtend, itemFromArray } from \"../../Utils/Utils\";\nimport { Emitter } from \"./Options/Classes/Emitter\";\nimport { EmitterInstance } from \"./EmitterInstance\";\nexport class Emitters {\n constructor(engine, container) {\n this.container = container;\n _Emitters_engine.set(this, void 0);\n __classPrivateFieldSet(this, _Emitters_engine, engine, \"f\");\n this.array = [];\n this.emitters = [];\n this.interactivityEmitters = [];\n const overridableContainer = container;\n overridableContainer.getEmitter = (idxOrName) => idxOrName === undefined || typeof idxOrName === \"number\"\n ? this.array[idxOrName || 0]\n : this.array.find((t) => t.name === idxOrName);\n overridableContainer.addEmitter = (options, position) => this.addEmitter(options, position);\n overridableContainer.removeEmitter = (idxOrName) => {\n const emitter = overridableContainer.getEmitter(idxOrName);\n if (emitter) {\n this.removeEmitter(emitter);\n }\n };\n overridableContainer.playEmitter = (idxOrName) => {\n const emitter = overridableContainer.getEmitter(idxOrName);\n if (emitter) {\n emitter.externalPlay();\n }\n };\n overridableContainer.pauseEmitter = (idxOrName) => {\n const emitter = overridableContainer.getEmitter(idxOrName);\n if (emitter) {\n emitter.externalPause();\n }\n };\n }\n init(options) {\n var _a, _b;\n if (!options) {\n return;\n }\n if (options.emitters) {\n if (options.emitters instanceof Array) {\n this.emitters = options.emitters.map((s) => {\n const tmp = new Emitter();\n tmp.load(s);\n return tmp;\n });\n }\n else {\n if (this.emitters instanceof Array) {\n this.emitters = new Emitter();\n }\n this.emitters.load(options.emitters);\n }\n }\n const interactivityEmitters = (_b = (_a = options.interactivity) === null || _a === void 0 ? void 0 : _a.modes) === null || _b === void 0 ? void 0 : _b.emitters;\n if (interactivityEmitters) {\n if (interactivityEmitters instanceof Array) {\n this.interactivityEmitters = interactivityEmitters.map((s) => {\n const tmp = new Emitter();\n tmp.load(s);\n return tmp;\n });\n }\n else {\n if (this.interactivityEmitters instanceof Array) {\n this.interactivityEmitters = new Emitter();\n }\n this.interactivityEmitters.load(interactivityEmitters);\n }\n }\n if (this.emitters instanceof Array) {\n for (const emitterOptions of this.emitters) {\n this.addEmitter(emitterOptions);\n }\n }\n else {\n this.addEmitter(this.emitters);\n }\n }\n play() {\n for (const emitter of this.array) {\n emitter.play();\n }\n }\n pause() {\n for (const emitter of this.array) {\n emitter.pause();\n }\n }\n stop() {\n this.array = [];\n }\n update(delta) {\n for (const emitter of this.array) {\n emitter.update(delta);\n }\n }\n handleClickMode(mode) {\n const emitterOptions = this.emitters, modeEmitters = this.interactivityEmitters;\n if (mode === \"emitter\") {\n let emitterModeOptions;\n if (modeEmitters instanceof Array) {\n if (modeEmitters.length > 0) {\n emitterModeOptions = itemFromArray(modeEmitters);\n }\n }\n else {\n emitterModeOptions = modeEmitters;\n }\n const emittersOptions = emitterModeOptions !== null && emitterModeOptions !== void 0 ? emitterModeOptions : (emitterOptions instanceof Array ? itemFromArray(emitterOptions) : emitterOptions), ePosition = this.container.interactivity.mouse.clickPosition;\n this.addEmitter(deepExtend({}, emittersOptions), ePosition);\n }\n }\n resize() {\n for (const emitter of this.array) {\n emitter.resize();\n }\n }\n addEmitter(options, position) {\n const emitterOptions = new Emitter();\n emitterOptions.load(options);\n const emitter = new EmitterInstance(__classPrivateFieldGet(this, _Emitters_engine, \"f\"), this, this.container, emitterOptions, position);\n this.array.push(emitter);\n return emitter;\n }\n removeEmitter(emitter) {\n const index = this.array.indexOf(emitter);\n if (index >= 0) {\n this.array.splice(index, 1);\n }\n }\n}\n_Emitters_engine = new WeakMap();\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _ShapeManager_engine;\nconst shapes = new Map();\nexport class ShapeManager {\n constructor(engine) {\n _ShapeManager_engine.set(this, void 0);\n __classPrivateFieldSet(this, _ShapeManager_engine, engine, \"f\");\n }\n addShape(name, drawer) {\n if (!this.getShape(name)) {\n shapes.set(name, drawer);\n }\n }\n getShape(name) {\n return shapes.get(name);\n }\n getSupportedShapes() {\n return shapes.keys();\n }\n}\n_ShapeManager_engine = new WeakMap();\n","function randomSquareCoordinate(position, offset) {\n return position + offset * (Math.random() - 0.5);\n}\nexport class SquareShape {\n randomPosition(position, size, fill) {\n if (fill) {\n return {\n x: randomSquareCoordinate(position.x, size.width),\n y: randomSquareCoordinate(position.y, size.height),\n };\n }\n else {\n const halfW = size.width / 2, halfH = size.height / 2, side = Math.floor(Math.random() * 4), v = (Math.random() - 0.5) * 2;\n switch (side) {\n case 0:\n return {\n x: position.x + v * halfW,\n y: position.y - halfH,\n };\n case 1:\n return {\n x: position.x - halfW,\n y: position.y + v * halfH,\n };\n case 2:\n return {\n x: position.x + v * halfW,\n y: position.y + halfH,\n };\n case 3:\n default:\n return {\n x: position.x + halfW,\n y: position.y + v * halfH,\n };\n }\n }\n }\n}\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _EmittersPlugin_engine;\nimport { CircleShape } from \"./Shapes/Circle/CircleShape\";\nimport { Emitter } from \"./Options/Classes/Emitter\";\nimport { Emitters } from \"./Emitters\";\nimport { ShapeManager } from \"./ShapeManager\";\nimport { SquareShape } from \"./Shapes/Square/SquareShape\";\nimport { isInArray } from \"../../Utils/Utils\";\nclass EmittersPlugin {\n constructor(engine) {\n _EmittersPlugin_engine.set(this, void 0);\n __classPrivateFieldSet(this, _EmittersPlugin_engine, engine, \"f\");\n this.id = \"emitters\";\n }\n getPlugin(container) {\n return new Emitters(__classPrivateFieldGet(this, _EmittersPlugin_engine, \"f\"), container);\n }\n needsPlugin(options) {\n var _a, _b, _c;\n if (options === undefined) {\n return false;\n }\n const emitters = options.emitters;\n return ((emitters instanceof Array && !!emitters.length) ||\n emitters !== undefined ||\n (!!((_c = (_b = (_a = options.interactivity) === null || _a === void 0 ? void 0 : _a.events) === null || _b === void 0 ? void 0 : _b.onClick) === null || _c === void 0 ? void 0 : _c.mode) &&\n isInArray(\"emitter\", options.interactivity.events.onClick.mode)));\n }\n loadOptions(options, source) {\n var _a, _b;\n if (!this.needsPlugin(options) && !this.needsPlugin(source)) {\n return;\n }\n const optionsCast = options;\n if (source === null || source === void 0 ? void 0 : source.emitters) {\n if ((source === null || source === void 0 ? void 0 : source.emitters) instanceof Array) {\n optionsCast.emitters = source === null || source === void 0 ? void 0 : source.emitters.map((s) => {\n const tmp = new Emitter();\n tmp.load(s);\n return tmp;\n });\n }\n else {\n let emitterOptions = optionsCast.emitters;\n if ((emitterOptions === null || emitterOptions === void 0 ? void 0 : emitterOptions.load) === undefined) {\n optionsCast.emitters = emitterOptions = new Emitter();\n }\n emitterOptions.load(source === null || source === void 0 ? void 0 : source.emitters);\n }\n }\n const interactivityEmitters = (_b = (_a = source === null || source === void 0 ? void 0 : source.interactivity) === null || _a === void 0 ? void 0 : _a.modes) === null || _b === void 0 ? void 0 : _b.emitters;\n if (interactivityEmitters) {\n if (interactivityEmitters instanceof Array) {\n optionsCast.interactivity.modes.emitters = interactivityEmitters.map((s) => {\n const tmp = new Emitter();\n tmp.load(s);\n return tmp;\n });\n }\n else {\n let emitterOptions = optionsCast.interactivity.modes.emitters;\n if ((emitterOptions === null || emitterOptions === void 0 ? void 0 : emitterOptions.load) === undefined) {\n optionsCast.interactivity.modes.emitters = emitterOptions = new Emitter();\n }\n emitterOptions.load(interactivityEmitters);\n }\n }\n }\n}\n_EmittersPlugin_engine = new WeakMap();\nexport async function loadEmittersPlugin(engine) {\n if (!engine.emitterShapeManager) {\n engine.emitterShapeManager = new ShapeManager(engine);\n }\n if (!engine.addEmitterShape) {\n engine.addEmitterShape = (name, shape) => {\n var _a;\n (_a = engine.emitterShapeManager) === null || _a === void 0 ? void 0 : _a.addShape(name, shape);\n };\n }\n const plugin = new EmittersPlugin(engine);\n await engine.addPlugin(plugin);\n engine.addEmitterShape(\"circle\", new CircleShape());\n engine.addEmitterShape(\"square\", new SquareShape());\n}\nexport * from \"./EmittersEngine\";\nexport * from \"./Enums/EmitterClickMode\";\nexport * from \"./Enums/EmitterShapeType\";\nexport * from \"./Options/Interfaces/IEmitterOptions\";\n","export class ExternalInteractorBase {\n constructor(container) {\n this.container = container;\n this.type = 0;\n }\n}\n","import { ExternalInteractorBase } from \"../../../Core/Utils/ExternalInteractorBase\";\nimport { isInArray } from \"../../../Utils/Utils\";\nexport class TrailMaker extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n this.delay = 0;\n }\n async interact(delta) {\n var _a, _b, _c, _d;\n if (!this.container.retina.reduceFactor) {\n return;\n }\n const container = this.container, options = container.actualOptions, trailOptions = options.interactivity.modes.trail, optDelay = (trailOptions.delay * 1000) / this.container.retina.reduceFactor;\n if (this.delay < optDelay) {\n this.delay += delta.value;\n }\n if (this.delay < optDelay) {\n return;\n }\n let canEmit = true;\n if (trailOptions.pauseOnStop) {\n if (container.interactivity.mouse.position === this.lastPosition ||\n (((_a = container.interactivity.mouse.position) === null || _a === void 0 ? void 0 : _a.x) === ((_b = this.lastPosition) === null || _b === void 0 ? void 0 : _b.x) &&\n ((_c = container.interactivity.mouse.position) === null || _c === void 0 ? void 0 : _c.y) === ((_d = this.lastPosition) === null || _d === void 0 ? void 0 : _d.y))) {\n canEmit = false;\n }\n }\n if (container.interactivity.mouse.position) {\n this.lastPosition = {\n x: container.interactivity.mouse.position.x,\n y: container.interactivity.mouse.position.y,\n };\n }\n else {\n delete this.lastPosition;\n }\n if (canEmit) {\n container.particles.push(trailOptions.quantity, container.interactivity.mouse, trailOptions.particles);\n }\n this.delay -= optDelay;\n }\n isEnabled() {\n const container = this.container, options = container.actualOptions, mouse = container.interactivity.mouse, events = options.interactivity.events;\n return ((mouse.clicking && mouse.inside && !!mouse.position && isInArray(\"trail\", events.onClick.mode)) ||\n (mouse.inside && !!mouse.position && isInArray(\"trail\", events.onHover.mode)));\n }\n reset() {\n }\n}\n","import { OptionsColor } from \"../../../../Options/Classes/OptionsColor\";\nimport { stringToAlpha } from \"../../../../Utils/ColorUtils\";\nexport class PolygonMaskDrawStroke {\n constructor() {\n this.color = new OptionsColor();\n this.width = 0.5;\n this.opacity = 1;\n }\n load(data) {\n var _a;\n if (!data) {\n return;\n }\n this.color = OptionsColor.create(this.color, data.color);\n if (typeof this.color.value === \"string\") {\n this.opacity = (_a = stringToAlpha(this.color.value)) !== null && _a !== void 0 ? _a : this.opacity;\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n if (data.width !== undefined) {\n this.width = data.width;\n }\n }\n}\n","import { OptionsColor } from \"../../../../Options/Classes/OptionsColor\";\nimport { PolygonMaskDrawStroke } from \"./PolygonMaskDrawStroke\";\nexport class PolygonMaskDraw {\n constructor() {\n this.enable = false;\n this.stroke = new PolygonMaskDrawStroke();\n }\n get lineWidth() {\n return this.stroke.width;\n }\n set lineWidth(value) {\n this.stroke.width = value;\n }\n get lineColor() {\n return this.stroke.color;\n }\n set lineColor(value) {\n this.stroke.color = OptionsColor.create(this.stroke.color, value);\n }\n load(data) {\n var _a;\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n const stroke = (_a = data.stroke) !== null && _a !== void 0 ? _a : {\n color: data.lineColor,\n width: data.lineWidth,\n };\n this.stroke.load(stroke);\n }\n}\n","export class PolygonMaskInline {\n constructor() {\n this.arrangement = \"one-per-point\";\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.arrangement !== undefined) {\n this.arrangement = data.arrangement;\n }\n }\n}\n","export class PolygonMaskLocalSvg {\n constructor() {\n this.path = [];\n this.size = {\n height: 0,\n width: 0,\n };\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.path !== undefined) {\n this.path = data.path;\n }\n if (data.size !== undefined) {\n if (data.size.width !== undefined) {\n this.size.width = data.size.width;\n }\n if (data.size.height !== undefined) {\n this.size.height = data.size.height;\n }\n }\n }\n}\n","export class PolygonMaskMove {\n constructor() {\n this.radius = 10;\n this.type = \"path\";\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.radius !== undefined) {\n this.radius = data.radius;\n }\n if (data.type !== undefined) {\n this.type = data.type;\n }\n }\n}\n","import { PolygonMaskDraw } from \"./PolygonMaskDraw\";\nimport { PolygonMaskInline } from \"./PolygonMaskInline\";\nimport { PolygonMaskLocalSvg } from \"./PolygonMaskLocalSvg\";\nimport { PolygonMaskMove } from \"./PolygonMaskMove\";\nimport { deepExtend } from \"../../../../Utils/Utils\";\nexport class PolygonMask {\n constructor() {\n this.draw = new PolygonMaskDraw();\n this.enable = false;\n this.inline = new PolygonMaskInline();\n this.move = new PolygonMaskMove();\n this.scale = 1;\n this.type = \"none\";\n }\n get inlineArrangement() {\n return this.inline.arrangement;\n }\n set inlineArrangement(value) {\n this.inline.arrangement = value;\n }\n load(data) {\n var _a;\n if (!data) {\n return;\n }\n this.draw.load(data.draw);\n const inline = (_a = data.inline) !== null && _a !== void 0 ? _a : {\n arrangement: data.inlineArrangement,\n };\n if (inline !== undefined) {\n this.inline.load(inline);\n }\n this.move.load(data.move);\n if (data.scale !== undefined) {\n this.scale = data.scale;\n }\n if (data.type !== undefined) {\n this.type = data.type;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n else {\n this.enable = this.type !== \"none\";\n }\n if (data.url !== undefined) {\n this.url = data.url;\n }\n if (data.data !== undefined) {\n if (typeof data.data === \"string\") {\n this.data = data.data;\n }\n else {\n this.data = new PolygonMaskLocalSvg();\n this.data.load(data.data);\n }\n }\n if (data.position !== undefined) {\n this.position = deepExtend({}, data.position);\n }\n }\n}\n","import { colorToRgb, getStyleFromRgb } from \"../../Utils/ColorUtils\";\nimport { Vector } from \"../../Core/Utils/Vector\";\nimport { getDistances } from \"../../Utils/NumberUtils\";\nexport function drawPolygonMask(context, rawData, stroke) {\n const color = colorToRgb(stroke.color);\n if (!color) {\n return;\n }\n context.beginPath();\n context.moveTo(rawData[0].x, rawData[0].y);\n for (const item of rawData) {\n context.lineTo(item.x, item.y);\n }\n context.closePath();\n context.strokeStyle = getStyleFromRgb(color);\n context.lineWidth = stroke.width;\n context.stroke();\n}\nexport function drawPolygonMaskPath(context, path, stroke, position) {\n context.translate(position.x, position.y);\n const color = colorToRgb(stroke.color);\n if (!color) {\n return;\n }\n context.strokeStyle = getStyleFromRgb(color, stroke.opacity);\n context.lineWidth = stroke.width;\n context.stroke(path);\n}\nexport function parsePaths(paths, scale, offset) {\n var _a;\n const res = [];\n for (const path of paths) {\n const segments = path.element.pathSegList, len = (_a = segments === null || segments === void 0 ? void 0 : segments.numberOfItems) !== null && _a !== void 0 ? _a : 0, p = {\n x: 0,\n y: 0,\n };\n for (let i = 0; i < len; i++) {\n const segment = segments === null || segments === void 0 ? void 0 : segments.getItem(i);\n const svgPathSeg = window.SVGPathSeg;\n switch (segment === null || segment === void 0 ? void 0 : segment.pathSegType) {\n case svgPathSeg.PATHSEG_MOVETO_ABS:\n case svgPathSeg.PATHSEG_LINETO_ABS:\n case svgPathSeg.PATHSEG_CURVETO_CUBIC_ABS:\n case svgPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:\n case svgPathSeg.PATHSEG_ARC_ABS:\n case svgPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:\n case svgPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: {\n const absSeg = segment;\n p.x = absSeg.x;\n p.y = absSeg.y;\n break;\n }\n case svgPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:\n p.x = segment.x;\n break;\n case svgPathSeg.PATHSEG_LINETO_VERTICAL_ABS:\n p.y = segment.y;\n break;\n case svgPathSeg.PATHSEG_LINETO_REL:\n case svgPathSeg.PATHSEG_MOVETO_REL:\n case svgPathSeg.PATHSEG_CURVETO_CUBIC_REL:\n case svgPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:\n case svgPathSeg.PATHSEG_ARC_REL:\n case svgPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:\n case svgPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: {\n const relSeg = segment;\n p.x += relSeg.x;\n p.y += relSeg.y;\n break;\n }\n case svgPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:\n p.x += segment.x;\n break;\n case svgPathSeg.PATHSEG_LINETO_VERTICAL_REL:\n p.y += segment.y;\n break;\n case svgPathSeg.PATHSEG_UNKNOWN:\n case svgPathSeg.PATHSEG_CLOSEPATH:\n continue;\n }\n res.push({\n x: p.x * scale + offset.x,\n y: p.y * scale + offset.y,\n });\n }\n }\n return res;\n}\nexport function calcClosestPtOnSegment(s1, s2, pos) {\n const { dx, dy } = getDistances(pos, s1), { dx: dxx, dy: dyy } = getDistances(s2, s1), t = (dx * dxx + dy * dyy) / (dxx ** 2 + dyy ** 2), res = {\n x: s1.x + dxx * t,\n y: s1.x + dyy * t,\n isOnSegment: t >= 0 && t <= 1,\n };\n if (t < 0) {\n res.x = s1.x;\n res.y = s1.y;\n }\n else if (t > 1) {\n res.x = s2.x;\n res.y = s2.y;\n }\n return res;\n}\nexport function segmentBounce(start, stop, velocity) {\n const { dx, dy } = getDistances(start, stop), wallAngle = Math.atan2(dy, dx), wallNormal = Vector.create(Math.sin(wallAngle), -Math.cos(wallAngle)), d = 2 * (velocity.x * wallNormal.x + velocity.y * wallNormal.y);\n wallNormal.multTo(d);\n velocity.subFrom(wallNormal);\n}\n","import { calcClosestPtOnSegment, drawPolygonMask, drawPolygonMaskPath, parsePaths, segmentBounce } from \"./Utils\";\nimport { deepExtend, itemFromArray } from \"../../Utils/Utils\";\nimport { getDistance, getDistances } from \"../../Utils/NumberUtils\";\nimport { Constants } from \"../../Core/Utils/Constants\";\nimport { PolygonMask } from \"./Options/Classes/PolygonMask\";\nexport class PolygonMaskInstance {\n constructor(container) {\n this.container = container;\n this.dimension = {\n height: 0,\n width: 0,\n };\n this.path2DSupported = !!window.Path2D;\n this.options = new PolygonMask();\n this.polygonMaskMoveRadius = this.options.move.radius * container.retina.pixelRatio;\n }\n async initAsync(options) {\n this.options.load(options === null || options === void 0 ? void 0 : options.polygon);\n const polygonMaskOptions = this.options;\n this.polygonMaskMoveRadius = polygonMaskOptions.move.radius * this.container.retina.pixelRatio;\n if (polygonMaskOptions.enable) {\n await this.initRawData();\n }\n }\n resize() {\n const container = this.container, options = this.options;\n if (!(options.enable && options.type !== \"none\")) {\n return;\n }\n if (this.redrawTimeout) {\n clearTimeout(this.redrawTimeout);\n }\n this.redrawTimeout = window.setTimeout(async () => {\n await this.initRawData(true);\n await container.particles.redraw();\n }, 250);\n }\n stop() {\n delete this.raw;\n delete this.paths;\n }\n particlesInitialization() {\n const options = this.options;\n if (options.enable &&\n options.type === \"inline\" &&\n (options.inline.arrangement === \"one-per-point\" ||\n options.inline.arrangement === \"per-point\")) {\n this.drawPoints();\n return true;\n }\n return false;\n }\n particlePosition(position) {\n var _a, _b;\n const options = this.options;\n if (!(options.enable && ((_b = (_a = this.raw) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) > 0)) {\n return;\n }\n return deepExtend({}, position ? position : this.randomPoint());\n }\n particleBounce(particle, delta, direction) {\n return this.polygonBounce(particle, delta, direction);\n }\n clickPositionValid(position) {\n const options = this.options;\n return (options.enable &&\n options.type !== \"none\" &&\n options.type !== \"inline\" &&\n this.checkInsidePolygon(position));\n }\n draw(context) {\n var _a;\n if (!((_a = this.paths) === null || _a === void 0 ? void 0 : _a.length)) {\n return;\n }\n const options = this.options, polygonDraw = options.draw;\n if (!options.enable || !polygonDraw.enable) {\n return;\n }\n const rawData = this.raw;\n for (const path of this.paths) {\n const path2d = path.path2d, path2dSupported = this.path2DSupported;\n if (!context) {\n continue;\n }\n if (path2dSupported && path2d && this.offset) {\n drawPolygonMaskPath(context, path2d, polygonDraw.stroke, this.offset);\n }\n else if (rawData) {\n drawPolygonMask(context, rawData, polygonDraw.stroke);\n }\n }\n }\n polygonBounce(particle, _delta, direction) {\n const options = this.options;\n if (!this.raw || !options.enable || direction !== \"top\") {\n return false;\n }\n if (options.type === \"inside\" || options.type === \"outside\") {\n let closest, dx, dy;\n const pos = particle.getPosition(), radius = particle.getRadius();\n for (let i = 0, j = this.raw.length - 1; i < this.raw.length; j = i++) {\n const pi = this.raw[i], pj = this.raw[j];\n closest = calcClosestPtOnSegment(pi, pj, pos);\n const dist = getDistances(pos, closest);\n [dx, dy] = [dist.dx, dist.dy];\n if (dist.distance < radius) {\n segmentBounce(pi, pj, particle.velocity);\n return true;\n }\n }\n if (closest && dx !== undefined && dy !== undefined && !this.checkInsidePolygon(pos)) {\n const factor = { x: 1, y: 1 };\n if (particle.position.x >= closest.x) {\n factor.x = -1;\n }\n if (particle.position.y >= closest.y) {\n factor.y = -1;\n }\n particle.position.x = closest.x + radius * 2 * factor.x;\n particle.position.y = closest.y + radius * 2 * factor.y;\n particle.velocity.mult(-1);\n return true;\n }\n }\n else if (options.type === \"inline\" && particle.initialPosition) {\n const dist = getDistance(particle.initialPosition, particle.getPosition());\n if (dist > this.polygonMaskMoveRadius) {\n particle.velocity.x = particle.velocity.y / 2 - particle.velocity.x;\n particle.velocity.y = particle.velocity.x / 2 - particle.velocity.y;\n return true;\n }\n }\n return false;\n }\n checkInsidePolygon(position) {\n var _a, _b;\n const container = this.container, options = this.options;\n if (!options.enable || options.type === \"none\" || options.type === \"inline\") {\n return true;\n }\n if (!this.raw) {\n throw new Error(Constants.noPolygonFound);\n }\n const canvasSize = container.canvas.size, x = (_a = position === null || position === void 0 ? void 0 : position.x) !== null && _a !== void 0 ? _a : Math.random() * canvasSize.width, y = (_b = position === null || position === void 0 ? void 0 : position.y) !== null && _b !== void 0 ? _b : Math.random() * canvasSize.height;\n let inside = false;\n for (let i = 0, j = this.raw.length - 1; i < this.raw.length; j = i++) {\n const pi = this.raw[i], pj = this.raw[j], intersect = pi.y > y !== pj.y > y && x < ((pj.x - pi.x) * (y - pi.y)) / (pj.y - pi.y) + pi.x;\n if (intersect) {\n inside = !inside;\n }\n }\n return options.type === \"inside\"\n ? inside\n : options.type === \"outside\"\n ? !inside\n : false;\n }\n parseSvgPath(xml, force) {\n var _a, _b, _c;\n const forceDownload = force !== null && force !== void 0 ? force : false;\n if (this.paths !== undefined && !forceDownload) {\n return this.raw;\n }\n const container = this.container, options = this.options, parser = new DOMParser(), doc = parser.parseFromString(xml, \"image/svg+xml\"), svg = doc.getElementsByTagName(\"svg\")[0];\n let svgPaths = svg.getElementsByTagName(\"path\");\n if (!svgPaths.length) {\n svgPaths = doc.getElementsByTagName(\"path\");\n }\n this.paths = [];\n for (let i = 0; i < svgPaths.length; i++) {\n const path = svgPaths.item(i);\n if (path) {\n this.paths.push({\n element: path,\n length: path.getTotalLength(),\n });\n }\n }\n const pxRatio = container.retina.pixelRatio, scale = options.scale / pxRatio;\n this.dimension.width = parseFloat((_a = svg.getAttribute(\"width\")) !== null && _a !== void 0 ? _a : \"0\") * scale;\n this.dimension.height = parseFloat((_b = svg.getAttribute(\"height\")) !== null && _b !== void 0 ? _b : \"0\") * scale;\n const position = (_c = options.position) !== null && _c !== void 0 ? _c : {\n x: 50,\n y: 50,\n };\n this.offset = {\n x: (container.canvas.size.width * position.x) / (100 * pxRatio) - this.dimension.width / 2,\n y: (container.canvas.size.height * position.y) / (100 * pxRatio) - this.dimension.height / 2,\n };\n return parsePaths(this.paths, scale, this.offset);\n }\n async downloadSvgPath(svgUrl, force) {\n const options = this.options, url = svgUrl || options.url, forceDownload = force !== null && force !== void 0 ? force : false;\n if (!url || (this.paths !== undefined && !forceDownload)) {\n return this.raw;\n }\n const req = await fetch(url);\n if (!req.ok) {\n throw new Error(\"tsParticles Error - Error occurred during polygon mask download\");\n }\n return this.parseSvgPath(await req.text(), force);\n }\n drawPoints() {\n if (!this.raw) {\n return;\n }\n for (const item of this.raw) {\n this.container.particles.addParticle({\n x: item.x,\n y: item.y,\n });\n }\n }\n randomPoint() {\n const container = this.container, options = this.options;\n let position;\n if (options.type === \"inline\") {\n switch (options.inline.arrangement) {\n case \"random-point\":\n position = this.getRandomPoint();\n break;\n case \"random-length\":\n position = this.getRandomPointByLength();\n break;\n case \"equidistant\":\n position = this.getEquidistantPointByIndex(container.particles.count);\n break;\n case \"one-per-point\":\n case \"per-point\":\n default:\n position = this.getPointByIndex(container.particles.count);\n }\n }\n else {\n position = {\n x: Math.random() * container.canvas.size.width,\n y: Math.random() * container.canvas.size.height,\n };\n }\n if (this.checkInsidePolygon(position)) {\n return position;\n }\n else {\n return this.randomPoint();\n }\n }\n getRandomPoint() {\n if (!this.raw || !this.raw.length) {\n throw new Error(Constants.noPolygonDataLoaded);\n }\n const coords = itemFromArray(this.raw);\n return {\n x: coords.x,\n y: coords.y,\n };\n }\n getRandomPointByLength() {\n var _a, _b, _c;\n const options = this.options;\n if (!this.raw || !this.raw.length || !((_a = this.paths) === null || _a === void 0 ? void 0 : _a.length)) {\n throw new Error(Constants.noPolygonDataLoaded);\n }\n const path = itemFromArray(this.paths), distance = Math.floor(Math.random() * path.length) + 1, point = path.element.getPointAtLength(distance);\n return {\n x: point.x * options.scale + (((_b = this.offset) === null || _b === void 0 ? void 0 : _b.x) || 0),\n y: point.y * options.scale + (((_c = this.offset) === null || _c === void 0 ? void 0 : _c.y) || 0),\n };\n }\n getEquidistantPointByIndex(index) {\n var _a, _b, _c, _d, _e, _f, _g;\n const options = this.container.actualOptions, polygonMaskOptions = this.options;\n if (!this.raw || !this.raw.length || !((_a = this.paths) === null || _a === void 0 ? void 0 : _a.length))\n throw new Error(Constants.noPolygonDataLoaded);\n let offset = 0, point;\n const totalLength = this.paths.reduce((tot, path) => tot + path.length, 0), distance = totalLength / options.particles.number.value;\n for (const path of this.paths) {\n const pathDistance = distance * index - offset;\n if (pathDistance <= path.length) {\n point = path.element.getPointAtLength(pathDistance);\n break;\n }\n else {\n offset += path.length;\n }\n }\n return {\n x: ((_b = point === null || point === void 0 ? void 0 : point.x) !== null && _b !== void 0 ? _b : 0) * polygonMaskOptions.scale + ((_d = (_c = this.offset) === null || _c === void 0 ? void 0 : _c.x) !== null && _d !== void 0 ? _d : 0),\n y: ((_e = point === null || point === void 0 ? void 0 : point.y) !== null && _e !== void 0 ? _e : 0) * polygonMaskOptions.scale + ((_g = (_f = this.offset) === null || _f === void 0 ? void 0 : _f.y) !== null && _g !== void 0 ? _g : 0),\n };\n }\n getPointByIndex(index) {\n if (!this.raw || !this.raw.length) {\n throw new Error(Constants.noPolygonDataLoaded);\n }\n const coords = this.raw[index % this.raw.length];\n return {\n x: coords.x,\n y: coords.y,\n };\n }\n createPath2D() {\n var _a, _b;\n const options = this.options;\n if (!this.path2DSupported || !((_a = this.paths) === null || _a === void 0 ? void 0 : _a.length)) {\n return;\n }\n for (const path of this.paths) {\n const pathData = (_b = path.element) === null || _b === void 0 ? void 0 : _b.getAttribute(\"d\");\n if (pathData) {\n const path2d = new Path2D(pathData), matrix = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\").createSVGMatrix(), finalPath = new Path2D(), transform = matrix.scale(options.scale);\n if (finalPath.addPath) {\n finalPath.addPath(path2d, transform);\n path.path2d = finalPath;\n }\n else {\n delete path.path2d;\n }\n }\n else {\n delete path.path2d;\n }\n if (path.path2d || !this.raw) {\n continue;\n }\n path.path2d = new Path2D();\n path.path2d.moveTo(this.raw[0].x, this.raw[0].y);\n this.raw.forEach((pos, i) => {\n var _a;\n if (i > 0) {\n (_a = path.path2d) === null || _a === void 0 ? void 0 : _a.lineTo(pos.x, pos.y);\n }\n });\n path.path2d.closePath();\n }\n }\n async initRawData(force) {\n const options = this.options;\n if (options.url) {\n this.raw = await this.downloadSvgPath(options.url, force);\n }\n else if (options.data) {\n const data = options.data;\n let svg;\n if (typeof data !== \"string\") {\n const path = data.path instanceof Array\n ? data.path.map((t) => ``).join(\"\")\n : ``;\n const namespaces = 'xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"';\n svg = ``;\n }\n else {\n svg = data;\n }\n this.raw = this.parseSvgPath(svg, force);\n }\n this.createPath2D();\n }\n}\n","import { PolygonMask } from \"./Options/Classes/PolygonMask\";\nimport { PolygonMaskInstance } from \"./PolygonMaskInstance\";\nimport { isSsr } from \"../../Utils/Utils\";\nclass PolygonMaskPlugin {\n constructor() {\n this.id = \"polygonMask\";\n }\n getPlugin(container) {\n return new PolygonMaskInstance(container);\n }\n needsPlugin(options) {\n var _a, _b, _c;\n return ((_b = (_a = options === null || options === void 0 ? void 0 : options.polygon) === null || _a === void 0 ? void 0 : _a.enable) !== null && _b !== void 0 ? _b : (((_c = options === null || options === void 0 ? void 0 : options.polygon) === null || _c === void 0 ? void 0 : _c.type) !== undefined && options.polygon.type !== \"none\"));\n }\n loadOptions(options, source) {\n if (!this.needsPlugin(source)) {\n return;\n }\n const optionsCast = options;\n let polygonOptions = optionsCast.polygon;\n if ((polygonOptions === null || polygonOptions === void 0 ? void 0 : polygonOptions.load) === undefined) {\n optionsCast.polygon = polygonOptions = new PolygonMask();\n }\n polygonOptions.load(source === null || source === void 0 ? void 0 : source.polygon);\n }\n}\nexport async function loadPolygonMaskPlugin(engine) {\n if (!isSsr() && !(\"SVGPathSeg\" in window)) {\n await import(\"./pathseg.js\");\n }\n const plugin = new PolygonMaskPlugin();\n await engine.addPlugin(plugin);\n}\nexport * from \"./Enums/PolygonMaskInlineArrangement\";\nexport * from \"./Enums/PolygonMaskMoveType\";\nexport * from \"./Enums/PolygonMaskType\";\nexport * from \"./Options/Interfaces/IPolygonMaskOptions\";\n","import { colorToHsl } from \"../../Utils/ColorUtils\";\nimport { getRangeValue } from \"../../Utils/NumberUtils\";\nfunction updateRoll(particle, delta) {\n const roll = particle.options.roll;\n if (!particle.roll || !roll.enable) {\n return;\n }\n const speed = particle.roll.speed * delta.factor;\n const max = 2 * Math.PI;\n particle.roll.angle += speed;\n if (particle.roll.angle > max) {\n particle.roll.angle -= max;\n }\n}\nexport class RollUpdater {\n init(particle) {\n const rollOpt = particle.options.roll;\n if (rollOpt.enable) {\n particle.roll = {\n angle: Math.random() * Math.PI * 2,\n speed: getRangeValue(rollOpt.speed) / 360,\n };\n if (rollOpt.backColor) {\n particle.backColor = colorToHsl(rollOpt.backColor);\n }\n else if (rollOpt.darken.enable && rollOpt.enlighten.enable) {\n const alterType = Math.random() >= 0.5 ? \"darken\" : \"enlighten\";\n particle.roll.alter = {\n type: alterType,\n value: getRangeValue(alterType === \"darken\" ? rollOpt.darken.value : rollOpt.enlighten.value),\n };\n }\n else if (rollOpt.darken.enable) {\n particle.roll.alter = {\n type: \"darken\",\n value: getRangeValue(rollOpt.darken.value),\n };\n }\n else if (rollOpt.enlighten.enable) {\n particle.roll.alter = {\n type: \"enlighten\",\n value: getRangeValue(rollOpt.enlighten.value),\n };\n }\n }\n else {\n particle.roll = { angle: 0, speed: 0 };\n }\n }\n isEnabled(particle) {\n const roll = particle.options.roll;\n return !particle.destroyed && !particle.spawning && roll.enable;\n }\n update(particle, delta) {\n if (!this.isEnabled(particle)) {\n return;\n }\n updateRoll(particle, delta);\n }\n}\n","import { getRangeValue } from \"../../Utils/NumberUtils\";\nfunction updateAngle(particle, delta) {\n var _a;\n const rotate = particle.rotate;\n if (!rotate) {\n return;\n }\n const rotateOptions = particle.options.rotate;\n const rotateAnimation = rotateOptions.animation;\n const speed = ((_a = rotate.velocity) !== null && _a !== void 0 ? _a : 0) * delta.factor;\n const max = 2 * Math.PI;\n if (!rotateAnimation.enable) {\n return;\n }\n switch (rotate.status) {\n case 0:\n rotate.value += speed;\n if (rotate.value > max) {\n rotate.value -= max;\n }\n break;\n case 1:\n default:\n rotate.value -= speed;\n if (rotate.value < 0) {\n rotate.value += max;\n }\n break;\n }\n}\nexport class AngleUpdater {\n constructor(container) {\n this.container = container;\n }\n init(particle) {\n const rotateOptions = particle.options.rotate;\n particle.rotate = {\n enable: rotateOptions.animation.enable,\n value: (getRangeValue(rotateOptions.value) * Math.PI) / 180,\n };\n let rotateDirection = rotateOptions.direction;\n if (rotateDirection === \"random\") {\n const index = Math.floor(Math.random() * 2);\n rotateDirection = index > 0 ? \"counter-clockwise\" : \"clockwise\";\n }\n switch (rotateDirection) {\n case \"counter-clockwise\":\n case \"counterClockwise\":\n particle.rotate.status = 1;\n break;\n case \"clockwise\":\n particle.rotate.status = 0;\n break;\n }\n const rotateAnimation = particle.options.rotate.animation;\n if (rotateAnimation.enable) {\n particle.rotate.velocity =\n (getRangeValue(rotateAnimation.speed) / 360) * this.container.retina.reduceFactor;\n if (!rotateAnimation.sync) {\n particle.rotate.velocity *= Math.random();\n }\n }\n }\n isEnabled(particle) {\n const rotate = particle.options.rotate;\n const rotateAnimation = rotate.animation;\n return !particle.destroyed && !particle.spawning && !rotate.path && rotateAnimation.enable;\n }\n update(particle, delta) {\n if (!this.isEnabled(particle)) {\n return;\n }\n updateAngle(particle, delta);\n }\n}\n","import { applyDistance, applyPath, getProximitySpeedFactor, spin } from \"./Utils\";\nimport { getDistance, getRangeMax, getRangeValue } from \"../../Utils/NumberUtils\";\nexport class BaseMover {\n init(particle) {\n var _a;\n const container = particle.container, options = particle.options, spinOptions = options.move.spin;\n if (spinOptions.enable) {\n const spinPos = (_a = spinOptions.position) !== null && _a !== void 0 ? _a : { x: 50, y: 50 };\n const spinCenter = {\n x: (spinPos.x / 100) * container.canvas.size.width,\n y: (spinPos.y / 100) * container.canvas.size.height,\n };\n const pos = particle.getPosition();\n const distance = getDistance(pos, spinCenter);\n const spinAcceleration = getRangeValue(spinOptions.acceleration);\n particle.retina.spinAcceleration = spinAcceleration * container.retina.pixelRatio;\n particle.spin = {\n center: spinCenter,\n direction: particle.velocity.x >= 0 ? \"clockwise\" : \"counter-clockwise\",\n angle: particle.velocity.angle,\n radius: distance,\n acceleration: particle.retina.spinAcceleration,\n };\n }\n }\n isEnabled(particle) {\n return !particle.destroyed && particle.options.move.enable;\n }\n move(particle, delta) {\n var _a, _b, _c;\n var _d, _e;\n const particleOptions = particle.options, moveOptions = particleOptions.move;\n if (!moveOptions.enable) {\n return;\n }\n const container = particle.container, slowFactor = getProximitySpeedFactor(particle), baseSpeed = ((_a = (_d = particle.retina).moveSpeed) !== null && _a !== void 0 ? _a : (_d.moveSpeed = getRangeValue(moveOptions.speed) * container.retina.pixelRatio)) *\n container.retina.reduceFactor, moveDrift = ((_b = (_e = particle.retina).moveDrift) !== null && _b !== void 0 ? _b : (_e.moveDrift = getRangeValue(particle.options.move.drift) * container.retina.pixelRatio)), maxSize = getRangeMax(particleOptions.size.value) * container.retina.pixelRatio, sizeFactor = moveOptions.size ? particle.getRadius() / maxSize : 1, speedFactor = sizeFactor * slowFactor * (delta.factor || 1), diffFactor = 2, moveSpeed = (baseSpeed * speedFactor) / diffFactor;\n applyPath(particle, delta);\n const gravityOptions = particle.gravity, gravityFactor = gravityOptions.enable && gravityOptions.inverse ? -1 : 1;\n if (gravityOptions.enable && moveSpeed) {\n particle.velocity.y += (gravityFactor * (gravityOptions.acceleration * delta.factor)) / (60 * moveSpeed);\n }\n if (moveDrift && moveSpeed) {\n particle.velocity.x += (moveDrift * delta.factor) / (60 * moveSpeed);\n }\n const decay = particle.moveDecay;\n if (decay != 1) {\n particle.velocity.multTo(decay);\n }\n const velocity = particle.velocity.mult(moveSpeed), maxSpeed = (_c = particle.retina.maxSpeed) !== null && _c !== void 0 ? _c : container.retina.maxSpeed;\n if (gravityOptions.enable &&\n maxSpeed > 0 &&\n ((!gravityOptions.inverse && velocity.y >= 0 && velocity.y >= maxSpeed) ||\n (gravityOptions.inverse && velocity.y <= 0 && velocity.y <= -maxSpeed))) {\n velocity.y = gravityFactor * maxSpeed;\n if (moveSpeed) {\n particle.velocity.y = velocity.y / moveSpeed;\n }\n }\n const zIndexOptions = particle.options.zIndex, zVelocityFactor = (1 - particle.zIndexFactor) ** zIndexOptions.velocityRate;\n if (moveOptions.spin.enable) {\n spin(particle, moveSpeed);\n }\n else {\n if (zVelocityFactor != 1) {\n velocity.multTo(zVelocityFactor);\n }\n particle.position.addTo(velocity);\n if (moveOptions.vibrate) {\n particle.position.x += Math.sin(particle.position.x * Math.cos(particle.position.y));\n particle.position.y += Math.cos(particle.position.y * Math.sin(particle.position.x));\n }\n }\n applyDistance(particle);\n }\n}\n","import { clamp, getDistance, getDistances } from \"../../Utils/NumberUtils\";\nimport { isInArray } from \"../../Utils/Utils\";\nexport function applyDistance(particle) {\n const initialPosition = particle.initialPosition;\n const { dx, dy } = getDistances(initialPosition, particle.position);\n const dxFixed = Math.abs(dx), dyFixed = Math.abs(dy);\n const hDistance = particle.retina.maxDistance.horizontal;\n const vDistance = particle.retina.maxDistance.vertical;\n if (!hDistance && !vDistance) {\n return;\n }\n if (((hDistance && dxFixed >= hDistance) || (vDistance && dyFixed >= vDistance)) && !particle.misplaced) {\n particle.misplaced = (!!hDistance && dxFixed > hDistance) || (!!vDistance && dyFixed > vDistance);\n if (hDistance) {\n particle.velocity.x = particle.velocity.y / 2 - particle.velocity.x;\n }\n if (vDistance) {\n particle.velocity.y = particle.velocity.x / 2 - particle.velocity.y;\n }\n }\n else if ((!hDistance || dxFixed < hDistance) && (!vDistance || dyFixed < vDistance) && particle.misplaced) {\n particle.misplaced = false;\n }\n else if (particle.misplaced) {\n const pos = particle.position, vel = particle.velocity;\n if (hDistance && ((pos.x < initialPosition.x && vel.x < 0) || (pos.x > initialPosition.x && vel.x > 0))) {\n vel.x *= -Math.random();\n }\n if (vDistance && ((pos.y < initialPosition.y && vel.y < 0) || (pos.y > initialPosition.y && vel.y > 0))) {\n vel.y *= -Math.random();\n }\n }\n}\nexport function spin(particle, moveSpeed) {\n const container = particle.container;\n if (!particle.spin) {\n return;\n }\n const updateFunc = {\n x: particle.spin.direction === \"clockwise\" ? Math.cos : Math.sin,\n y: particle.spin.direction === \"clockwise\" ? Math.sin : Math.cos,\n };\n particle.position.x = particle.spin.center.x + particle.spin.radius * updateFunc.x(particle.spin.angle);\n particle.position.y = particle.spin.center.y + particle.spin.radius * updateFunc.y(particle.spin.angle);\n particle.spin.radius += particle.spin.acceleration;\n const maxCanvasSize = Math.max(container.canvas.size.width, container.canvas.size.height);\n if (particle.spin.radius > maxCanvasSize / 2) {\n particle.spin.radius = maxCanvasSize / 2;\n particle.spin.acceleration *= -1;\n }\n else if (particle.spin.radius < 0) {\n particle.spin.radius = 0;\n particle.spin.acceleration *= -1;\n }\n particle.spin.angle += (moveSpeed / 100) * (1 - particle.spin.radius / maxCanvasSize);\n}\nexport function applyPath(particle, delta) {\n const particlesOptions = particle.options;\n const pathOptions = particlesOptions.move.path;\n const pathEnabled = pathOptions.enable;\n if (!pathEnabled) {\n return;\n }\n const container = particle.container;\n if (particle.lastPathTime <= particle.pathDelay) {\n particle.lastPathTime += delta.value;\n return;\n }\n const path = container.pathGenerator.generate(particle);\n particle.velocity.addTo(path);\n if (pathOptions.clamp) {\n particle.velocity.x = clamp(particle.velocity.x, -1, 1);\n particle.velocity.y = clamp(particle.velocity.y, -1, 1);\n }\n particle.lastPathTime -= particle.pathDelay;\n}\nexport function getProximitySpeedFactor(particle) {\n const container = particle.container;\n const options = container.actualOptions;\n const active = isInArray(\"slow\", options.interactivity.events.onHover.mode);\n if (!active) {\n return 1;\n }\n const mousePos = particle.container.interactivity.mouse.position;\n if (!mousePos) {\n return 1;\n }\n const particlePos = particle.getPosition();\n const dist = getDistance(mousePos, particlePos);\n const radius = container.retina.slowModeRadius;\n if (dist > radius) {\n return 1;\n }\n const proximityFactor = dist / radius || 0;\n const slowFactor = options.interactivity.modes.slow.factor;\n return proximityFactor / slowFactor;\n}\n","export class CircleDrawer {\n getSidesCount() {\n return 12;\n }\n draw(context, particle, radius) {\n context.arc(0, 0, radius, 0, Math.PI * 2, false);\n }\n}\n","import { colorToHsl, getHslAnimationFromHsl } from \"../../Utils/ColorUtils\";\nimport { randomInRange } from \"../../Utils/NumberUtils\";\nfunction updateColorValue(delta, value, valueAnimation, max, decrease) {\n var _a;\n const colorValue = value;\n if (!colorValue || !valueAnimation.enable) {\n return;\n }\n const offset = randomInRange(valueAnimation.offset);\n const velocity = ((_a = value.velocity) !== null && _a !== void 0 ? _a : 0) * delta.factor + offset * 3.6;\n if (!decrease || colorValue.status === 0) {\n colorValue.value += velocity;\n if (decrease && colorValue.value > max) {\n colorValue.status = 1;\n colorValue.value -= colorValue.value % max;\n }\n }\n else {\n colorValue.value -= velocity;\n if (colorValue.value < 0) {\n colorValue.status = 0;\n colorValue.value += colorValue.value;\n }\n }\n if (colorValue.value > max) {\n colorValue.value %= max;\n }\n}\nfunction updateColor(particle, delta) {\n var _a, _b, _c;\n const animationOptions = particle.options.color.animation;\n if (((_a = particle.color) === null || _a === void 0 ? void 0 : _a.h) !== undefined) {\n updateColorValue(delta, particle.color.h, animationOptions.h, 360, false);\n }\n if (((_b = particle.color) === null || _b === void 0 ? void 0 : _b.s) !== undefined) {\n updateColorValue(delta, particle.color.s, animationOptions.s, 100, true);\n }\n if (((_c = particle.color) === null || _c === void 0 ? void 0 : _c.l) !== undefined) {\n updateColorValue(delta, particle.color.l, animationOptions.l, 100, true);\n }\n}\nexport class ColorUpdater {\n constructor(container) {\n this.container = container;\n }\n init(particle) {\n const hslColor = colorToHsl(particle.options.color, particle.id, particle.options.reduceDuplicates);\n if (hslColor) {\n particle.color = getHslAnimationFromHsl(hslColor, particle.options.color.animation, this.container.retina.reduceFactor);\n }\n }\n isEnabled(particle) {\n var _a, _b, _c;\n const animationOptions = particle.options.color.animation;\n return (!particle.destroyed &&\n !particle.spawning &&\n ((((_a = particle.color) === null || _a === void 0 ? void 0 : _a.h.value) !== undefined && animationOptions.h.enable) ||\n (((_b = particle.color) === null || _b === void 0 ? void 0 : _b.s.value) !== undefined && animationOptions.s.enable) ||\n (((_c = particle.color) === null || _c === void 0 ? void 0 : _c.l.value) !== undefined && animationOptions.l.enable)));\n }\n update(particle, delta) {\n updateColor(particle, delta);\n }\n}\n","import { calcEasing, clamp, getDistances } from \"../../../Utils/NumberUtils\";\nimport { Circle } from \"../../../Core/Utils/Circle\";\nimport { Constants } from \"../../../Core/Utils/Constants\";\nimport { ExternalInteractorBase } from \"../../../Core/Utils/ExternalInteractorBase\";\nimport { Vector } from \"../../../Core/Utils/Vector\";\nimport { isInArray } from \"../../../Utils/Utils\";\nexport class Attractor extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n if (!container.attract) {\n container.attract = { particles: [] };\n }\n this.handleClickMode = (mode) => {\n const options = this.container.actualOptions;\n if (mode !== \"attract\") {\n return;\n }\n if (!container.attract) {\n container.attract = { particles: [] };\n }\n container.attract.clicking = true;\n container.attract.count = 0;\n for (const particle of container.attract.particles) {\n particle.velocity.setTo(particle.initialVelocity);\n }\n container.attract.particles = [];\n container.attract.finish = false;\n setTimeout(() => {\n if (!container.destroyed) {\n if (!container.attract) {\n container.attract = { particles: [] };\n }\n container.attract.clicking = false;\n }\n }, options.interactivity.modes.attract.duration * 1000);\n };\n }\n isEnabled() {\n const container = this.container, options = container.actualOptions, mouse = container.interactivity.mouse, events = options.interactivity.events;\n if ((!mouse.position || !events.onHover.enable) && (!mouse.clickPosition || !events.onClick.enable)) {\n return false;\n }\n const hoverMode = events.onHover.mode, clickMode = events.onClick.mode;\n return isInArray(\"attract\", hoverMode) || isInArray(\"attract\", clickMode);\n }\n reset() {\n }\n async interact() {\n const container = this.container, options = container.actualOptions, mouseMoveStatus = container.interactivity.status === Constants.mouseMoveEvent, events = options.interactivity.events, hoverEnabled = events.onHover.enable, hoverMode = events.onHover.mode, clickEnabled = events.onClick.enable, clickMode = events.onClick.mode;\n if (mouseMoveStatus && hoverEnabled && isInArray(\"attract\", hoverMode)) {\n this.hoverAttract();\n }\n else if (clickEnabled && isInArray(\"attract\", clickMode)) {\n this.clickAttract();\n }\n }\n hoverAttract() {\n const container = this.container;\n const mousePos = container.interactivity.mouse.position;\n if (!mousePos) {\n return;\n }\n const attractRadius = container.retina.attractModeDistance;\n this.processAttract(mousePos, attractRadius, new Circle(mousePos.x, mousePos.y, attractRadius));\n }\n processAttract(position, attractRadius, area) {\n const container = this.container;\n const attractOptions = container.actualOptions.interactivity.modes.attract;\n const query = container.particles.quadTree.query(area);\n for (const particle of query) {\n const { dx, dy, distance } = getDistances(particle.position, position);\n const velocity = attractOptions.speed * attractOptions.factor;\n const attractFactor = clamp(calcEasing(1 - distance / attractRadius, attractOptions.easing) * velocity, 0, attractOptions.maxSpeed);\n const normVec = Vector.create(distance === 0 ? velocity : (dx / distance) * attractFactor, distance === 0 ? velocity : (dy / distance) * attractFactor);\n particle.position.subFrom(normVec);\n }\n }\n clickAttract() {\n const container = this.container;\n if (!container.attract) {\n container.attract = { particles: [] };\n }\n if (!container.attract.finish) {\n if (!container.attract.count) {\n container.attract.count = 0;\n }\n container.attract.count++;\n if (container.attract.count === container.particles.count) {\n container.attract.finish = true;\n }\n }\n if (container.attract.clicking) {\n const mousePos = container.interactivity.mouse.clickPosition;\n if (!mousePos) {\n return;\n }\n const attractRadius = container.retina.attractModeDistance;\n this.processAttract(mousePos, attractRadius, new Circle(mousePos.x, mousePos.y, attractRadius));\n }\n else if (container.attract.clicking === false) {\n container.attract.particles = [];\n }\n return;\n }\n}\n","import { calculateBounds, circleBounce, circleBounceDataFromParticle, divModeExecute, isDivModeEnabled, isInArray, rectBounce, } from \"../../../Utils/Utils\";\nimport { Circle } from \"../../../Core/Utils/Circle\";\nimport { Constants } from \"../../../Core/Utils/Constants\";\nimport { ExternalInteractorBase } from \"../../../Core/Utils/ExternalInteractorBase\";\nimport { Rectangle } from \"../../../Core/Utils/Rectangle\";\nimport { Vector } from \"../../../Core/Utils/Vector\";\nexport class Bouncer extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n }\n isEnabled() {\n const container = this.container, options = container.actualOptions, mouse = container.interactivity.mouse, events = options.interactivity.events, divs = events.onDiv;\n return ((mouse.position && events.onHover.enable && isInArray(\"bounce\", events.onHover.mode)) ||\n isDivModeEnabled(\"bounce\", divs));\n }\n async interact() {\n const container = this.container, options = container.actualOptions, events = options.interactivity.events, mouseMoveStatus = container.interactivity.status === Constants.mouseMoveEvent, hoverEnabled = events.onHover.enable, hoverMode = events.onHover.mode, divs = events.onDiv;\n if (mouseMoveStatus && hoverEnabled && isInArray(\"bounce\", hoverMode)) {\n this.processMouseBounce();\n }\n else {\n divModeExecute(\"bounce\", divs, (selector, div) => this.singleSelectorBounce(selector, div));\n }\n }\n reset() {\n }\n processMouseBounce() {\n const container = this.container, pxRatio = container.retina.pixelRatio, tolerance = 10 * pxRatio, mousePos = container.interactivity.mouse.position, radius = container.retina.bounceModeDistance;\n if (mousePos) {\n this.processBounce(mousePos, radius, new Circle(mousePos.x, mousePos.y, radius + tolerance));\n }\n }\n singleSelectorBounce(selector, div) {\n const container = this.container, query = document.querySelectorAll(selector);\n if (!query.length) {\n return;\n }\n query.forEach((item) => {\n const elem = item, pxRatio = container.retina.pixelRatio, pos = {\n x: (elem.offsetLeft + elem.offsetWidth / 2) * pxRatio,\n y: (elem.offsetTop + elem.offsetHeight / 2) * pxRatio,\n }, radius = (elem.offsetWidth / 2) * pxRatio, tolerance = 10 * pxRatio, area = div.type === \"circle\"\n ? new Circle(pos.x, pos.y, radius + tolerance)\n : new Rectangle(elem.offsetLeft * pxRatio - tolerance, elem.offsetTop * pxRatio - tolerance, elem.offsetWidth * pxRatio + tolerance * 2, elem.offsetHeight * pxRatio + tolerance * 2);\n this.processBounce(pos, radius, area);\n });\n }\n processBounce(position, radius, area) {\n const query = this.container.particles.quadTree.query(area);\n for (const particle of query) {\n if (area instanceof Circle) {\n circleBounce(circleBounceDataFromParticle(particle), {\n position,\n radius,\n mass: (radius ** 2 * Math.PI) / 2,\n velocity: Vector.origin,\n factor: Vector.origin,\n });\n }\n else if (area instanceof Rectangle) {\n rectBounce(particle, calculateBounds(position, radius));\n }\n }\n }\n}\n","import { clamp, getDistance, getRangeMax } from \"../../../Utils/NumberUtils\";\nimport { colorMix, colorToHsl, rgbToHsl } from \"../../../Utils/ColorUtils\";\nimport { divMode, divModeExecute, isDivModeEnabled, isInArray, itemFromArray } from \"../../../Utils/Utils\";\nimport { Circle } from \"../../../Core/Utils/Circle\";\nimport { Constants } from \"../../../Core/Utils/Constants\";\nimport { ExternalInteractorBase } from \"../../../Core/Utils/ExternalInteractorBase\";\nimport { Rectangle } from \"../../../Core/Utils/Rectangle\";\nfunction calculateBubbleValue(particleValue, modeValue, optionsValue, ratio) {\n if (modeValue >= optionsValue) {\n const value = particleValue + (modeValue - optionsValue) * ratio;\n return clamp(value, particleValue, modeValue);\n }\n else if (modeValue < optionsValue) {\n const value = particleValue - (optionsValue - modeValue) * ratio;\n return clamp(value, modeValue, particleValue);\n }\n}\nexport class Bubbler extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n if (!container.bubble) {\n container.bubble = {};\n }\n this.handleClickMode = (mode) => {\n if (mode !== \"bubble\") {\n return;\n }\n if (!container.bubble) {\n container.bubble = {};\n }\n container.bubble.clicking = true;\n };\n }\n isEnabled() {\n const container = this.container, options = container.actualOptions, mouse = container.interactivity.mouse, events = options.interactivity.events, divs = events.onDiv, divBubble = isDivModeEnabled(\"bubble\", divs);\n if (!(divBubble || (events.onHover.enable && mouse.position) || (events.onClick.enable && mouse.clickPosition))) {\n return false;\n }\n const hoverMode = events.onHover.mode;\n const clickMode = events.onClick.mode;\n return isInArray(\"bubble\", hoverMode) || isInArray(\"bubble\", clickMode) || divBubble;\n }\n reset(particle, force) {\n if (!(!particle.bubble.inRange || force)) {\n return;\n }\n delete particle.bubble.div;\n delete particle.bubble.opacity;\n delete particle.bubble.radius;\n delete particle.bubble.color;\n }\n async interact() {\n const options = this.container.actualOptions, events = options.interactivity.events, onHover = events.onHover, onClick = events.onClick, hoverEnabled = onHover.enable, hoverMode = onHover.mode, clickEnabled = onClick.enable, clickMode = onClick.mode, divs = events.onDiv;\n if (hoverEnabled && isInArray(\"bubble\", hoverMode)) {\n this.hoverBubble();\n }\n else if (clickEnabled && isInArray(\"bubble\", clickMode)) {\n this.clickBubble();\n }\n else {\n divModeExecute(\"bubble\", divs, (selector, div) => this.singleSelectorHover(selector, div));\n }\n }\n singleSelectorHover(selector, div) {\n const container = this.container, selectors = document.querySelectorAll(selector);\n if (!selectors.length) {\n return;\n }\n selectors.forEach((item) => {\n const elem = item, pxRatio = container.retina.pixelRatio, pos = {\n x: (elem.offsetLeft + elem.offsetWidth / 2) * pxRatio,\n y: (elem.offsetTop + elem.offsetHeight / 2) * pxRatio,\n }, repulseRadius = (elem.offsetWidth / 2) * pxRatio, area = div.type === \"circle\"\n ? new Circle(pos.x, pos.y, repulseRadius)\n : new Rectangle(elem.offsetLeft * pxRatio, elem.offsetTop * pxRatio, elem.offsetWidth * pxRatio, elem.offsetHeight * pxRatio), query = container.particles.quadTree.query(area);\n for (const particle of query) {\n if (!area.contains(particle.getPosition())) {\n continue;\n }\n particle.bubble.inRange = true;\n const divs = container.actualOptions.interactivity.modes.bubble.divs;\n const divBubble = divMode(divs, elem);\n if (!particle.bubble.div || particle.bubble.div !== elem) {\n this.reset(particle, true);\n particle.bubble.div = elem;\n }\n this.hoverBubbleSize(particle, 1, divBubble);\n this.hoverBubbleOpacity(particle, 1, divBubble);\n this.hoverBubbleColor(particle, 1, divBubble);\n }\n });\n }\n process(particle, distMouse, timeSpent, data) {\n const container = this.container, bubbleParam = data.bubbleObj.optValue;\n if (bubbleParam === undefined) {\n return;\n }\n const options = container.actualOptions, bubbleDuration = options.interactivity.modes.bubble.duration, bubbleDistance = container.retina.bubbleModeDistance, particlesParam = data.particlesObj.optValue, pObjBubble = data.bubbleObj.value, pObj = data.particlesObj.value || 0, type = data.type;\n if (bubbleParam === particlesParam) {\n return;\n }\n if (!container.bubble) {\n container.bubble = {};\n }\n if (!container.bubble.durationEnd) {\n if (distMouse <= bubbleDistance) {\n const obj = pObjBubble !== null && pObjBubble !== void 0 ? pObjBubble : pObj;\n if (obj !== bubbleParam) {\n const value = pObj - (timeSpent * (pObj - bubbleParam)) / bubbleDuration;\n if (type === \"size\") {\n particle.bubble.radius = value;\n }\n if (type === \"opacity\") {\n particle.bubble.opacity = value;\n }\n }\n }\n else {\n if (type === \"size\") {\n delete particle.bubble.radius;\n }\n if (type === \"opacity\") {\n delete particle.bubble.opacity;\n }\n }\n }\n else if (pObjBubble) {\n if (type === \"size\") {\n delete particle.bubble.radius;\n }\n if (type === \"opacity\") {\n delete particle.bubble.opacity;\n }\n }\n }\n clickBubble() {\n var _a, _b;\n const container = this.container, options = container.actualOptions, mouseClickPos = container.interactivity.mouse.clickPosition;\n if (!mouseClickPos) {\n return;\n }\n if (!container.bubble) {\n container.bubble = {};\n }\n const distance = container.retina.bubbleModeDistance, query = container.particles.quadTree.queryCircle(mouseClickPos, distance);\n for (const particle of query) {\n if (!container.bubble.clicking) {\n continue;\n }\n particle.bubble.inRange = !container.bubble.durationEnd;\n const pos = particle.getPosition(), distMouse = getDistance(pos, mouseClickPos), timeSpent = (new Date().getTime() - (container.interactivity.mouse.clickTime || 0)) / 1000;\n if (timeSpent > options.interactivity.modes.bubble.duration) {\n container.bubble.durationEnd = true;\n }\n if (timeSpent > options.interactivity.modes.bubble.duration * 2) {\n container.bubble.clicking = false;\n container.bubble.durationEnd = false;\n }\n const sizeData = {\n bubbleObj: {\n optValue: container.retina.bubbleModeSize,\n value: particle.bubble.radius,\n },\n particlesObj: {\n optValue: getRangeMax(particle.options.size.value) * container.retina.pixelRatio,\n value: particle.size.value,\n },\n type: \"size\",\n };\n this.process(particle, distMouse, timeSpent, sizeData);\n const opacityData = {\n bubbleObj: {\n optValue: options.interactivity.modes.bubble.opacity,\n value: particle.bubble.opacity,\n },\n particlesObj: {\n optValue: getRangeMax(particle.options.opacity.value),\n value: (_b = (_a = particle.opacity) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : 1,\n },\n type: \"opacity\",\n };\n this.process(particle, distMouse, timeSpent, opacityData);\n if (!container.bubble.durationEnd) {\n if (distMouse <= container.retina.bubbleModeDistance) {\n this.hoverBubbleColor(particle, distMouse);\n }\n else {\n delete particle.bubble.color;\n }\n }\n else {\n delete particle.bubble.color;\n }\n }\n }\n hoverBubble() {\n const container = this.container, mousePos = container.interactivity.mouse.position;\n if (mousePos === undefined) {\n return;\n }\n const distance = container.retina.bubbleModeDistance, query = container.particles.quadTree.queryCircle(mousePos, distance);\n for (const particle of query) {\n particle.bubble.inRange = true;\n const pos = particle.getPosition(), pointDistance = getDistance(pos, mousePos), ratio = 1 - pointDistance / distance;\n if (pointDistance <= distance) {\n if (ratio >= 0 && container.interactivity.status === Constants.mouseMoveEvent) {\n this.hoverBubbleSize(particle, ratio);\n this.hoverBubbleOpacity(particle, ratio);\n this.hoverBubbleColor(particle, ratio);\n }\n }\n else {\n this.reset(particle);\n }\n if (container.interactivity.status === Constants.mouseLeaveEvent) {\n this.reset(particle);\n }\n }\n }\n hoverBubbleSize(particle, ratio, divBubble) {\n const container = this.container, modeSize = (divBubble === null || divBubble === void 0 ? void 0 : divBubble.size) ? divBubble.size * container.retina.pixelRatio : container.retina.bubbleModeSize;\n if (modeSize === undefined) {\n return;\n }\n const optSize = getRangeMax(particle.options.size.value) * container.retina.pixelRatio;\n const pSize = particle.size.value;\n const size = calculateBubbleValue(pSize, modeSize, optSize, ratio);\n if (size !== undefined) {\n particle.bubble.radius = size;\n }\n }\n hoverBubbleOpacity(particle, ratio, divBubble) {\n var _a, _b, _c;\n const container = this.container, options = container.actualOptions, modeOpacity = (_a = divBubble === null || divBubble === void 0 ? void 0 : divBubble.opacity) !== null && _a !== void 0 ? _a : options.interactivity.modes.bubble.opacity;\n if (!modeOpacity) {\n return;\n }\n const optOpacity = particle.options.opacity.value;\n const pOpacity = (_c = (_b = particle.opacity) === null || _b === void 0 ? void 0 : _b.value) !== null && _c !== void 0 ? _c : 1;\n const opacity = calculateBubbleValue(pOpacity, modeOpacity, getRangeMax(optOpacity), ratio);\n if (opacity !== undefined) {\n particle.bubble.opacity = opacity;\n }\n }\n hoverBubbleColor(particle, ratio, divBubble) {\n const options = this.container.actualOptions;\n const bubbleOptions = divBubble !== null && divBubble !== void 0 ? divBubble : options.interactivity.modes.bubble;\n if (!particle.bubble.finalColor) {\n const modeColor = bubbleOptions.color;\n if (!modeColor) {\n return;\n }\n const bubbleColor = modeColor instanceof Array ? itemFromArray(modeColor) : modeColor;\n particle.bubble.finalColor = colorToHsl(bubbleColor);\n }\n if (!particle.bubble.finalColor) {\n return;\n }\n if (bubbleOptions.mix) {\n particle.bubble.color = undefined;\n const pColor = particle.getFillColor();\n particle.bubble.color = pColor\n ? rgbToHsl(colorMix(pColor, particle.bubble.finalColor, 1 - ratio, ratio))\n : particle.bubble.finalColor;\n }\n else {\n particle.bubble.color = particle.bubble.finalColor;\n }\n }\n}\n","import { ExternalInteractorBase } from \"../../../Core/Utils/ExternalInteractorBase\";\nimport { isInArray } from \"../../../Utils/Utils\";\nexport class Connector extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n }\n isEnabled() {\n const container = this.container, mouse = container.interactivity.mouse, events = container.actualOptions.interactivity.events;\n if (!(events.onHover.enable && mouse.position)) {\n return false;\n }\n return isInArray(\"connect\", events.onHover.mode);\n }\n reset() {\n }\n async interact() {\n const container = this.container, options = container.actualOptions;\n if (options.interactivity.events.onHover.enable && container.interactivity.status === \"mousemove\") {\n const mousePos = container.interactivity.mouse.position;\n if (!mousePos) {\n return;\n }\n const distance = Math.abs(container.retina.connectModeRadius), query = container.particles.quadTree.queryCircle(mousePos, distance);\n let i = 0;\n for (const p1 of query) {\n const pos1 = p1.getPosition();\n for (const p2 of query.slice(i + 1)) {\n const pos2 = p2.getPosition(), distMax = Math.abs(container.retina.connectModeDistance), xDiff = Math.abs(pos1.x - pos2.x), yDiff = Math.abs(pos1.y - pos2.y);\n if (xDiff < distMax && yDiff < distMax) {\n container.canvas.drawConnectLine(p1, p2);\n }\n }\n ++i;\n }\n }\n }\n}\n","import { getLinkColor, getLinkRandomColor } from \"../../../Utils/ColorUtils\";\nimport { Constants } from \"../../../Core/Utils/Constants\";\nimport { ExternalInteractorBase } from \"../../../Core/Utils/ExternalInteractorBase\";\nimport { getDistance } from \"../../../Utils/NumberUtils\";\nimport { isInArray } from \"../../../Utils/Utils\";\nexport class Grabber extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n }\n isEnabled() {\n const container = this.container, mouse = container.interactivity.mouse, events = container.actualOptions.interactivity.events;\n return events.onHover.enable && !!mouse.position && isInArray(\"grab\", events.onHover.mode);\n }\n reset() {\n }\n async interact() {\n var _a;\n const container = this.container, options = container.actualOptions, interactivity = options.interactivity;\n if (!interactivity.events.onHover.enable || container.interactivity.status !== Constants.mouseMoveEvent) {\n return;\n }\n const mousePos = container.interactivity.mouse.position;\n if (!mousePos) {\n return;\n }\n const distance = container.retina.grabModeDistance, query = container.particles.quadTree.queryCircle(mousePos, distance);\n for (const particle of query) {\n const pos = particle.getPosition(), pointDistance = getDistance(pos, mousePos);\n if (pointDistance > distance) {\n continue;\n }\n const grabLineOptions = interactivity.modes.grab.links, lineOpacity = grabLineOptions.opacity, opacityLine = lineOpacity - (pointDistance * lineOpacity) / distance;\n if (opacityLine <= 0) {\n continue;\n }\n const optColor = (_a = grabLineOptions.color) !== null && _a !== void 0 ? _a : particle.options.links.color;\n if (!container.particles.grabLineColor) {\n const linksOptions = options.interactivity.modes.grab.links;\n container.particles.grabLineColor = getLinkRandomColor(optColor, linksOptions.blink, linksOptions.consent);\n }\n const colorLine = getLinkColor(particle, undefined, container.particles.grabLineColor);\n if (!colorLine) {\n return;\n }\n container.canvas.drawGrabLine(particle, colorLine, opacityLine, mousePos);\n }\n }\n}\n","import { ExternalInteractorBase } from \"../../../Core/Utils/ExternalInteractorBase\";\nexport class Pauser extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n this.handleClickMode = (mode) => {\n if (mode !== \"pause\") {\n return;\n }\n const container = this.container;\n if (container.getAnimationStatus()) {\n container.pause();\n }\n else {\n container.play();\n }\n };\n }\n isEnabled() {\n return true;\n }\n reset() {\n }\n async interact() {\n }\n}\n","import { ExternalInteractorBase } from \"../../../Core/Utils/ExternalInteractorBase\";\nimport { itemFromArray } from \"../../../Utils/Utils\";\nexport class Pusher extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n this.handleClickMode = (mode) => {\n if (mode !== \"push\") {\n return;\n }\n const container = this.container;\n const options = container.actualOptions;\n const pushNb = options.interactivity.modes.push.quantity;\n if (pushNb <= 0) {\n return;\n }\n const pushOptions = options.interactivity.modes.push;\n const group = itemFromArray([undefined, ...pushOptions.groups]);\n const groupOptions = group !== undefined ? container.actualOptions.particles.groups[group] : undefined;\n container.particles.push(pushNb, container.interactivity.mouse, groupOptions, group);\n };\n }\n isEnabled() {\n return true;\n }\n reset() {\n }\n async interact() {\n }\n}\n","import { ExternalInteractorBase } from \"../../../Core/Utils/ExternalInteractorBase\";\nexport class Remover extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n this.handleClickMode = (mode) => {\n if (mode !== \"remove\") {\n return;\n }\n const container = this.container;\n const options = container.actualOptions;\n const removeNb = options.interactivity.modes.remove.quantity;\n container.particles.removeQuantity(removeNb);\n };\n }\n isEnabled() {\n return true;\n }\n reset() {\n }\n async interact() {\n }\n}\n","import { calcEasing, clamp, getDistances } from \"../../../Utils/NumberUtils\";\nimport { divMode, divModeExecute, isDivModeEnabled, isInArray } from \"../../../Utils/Utils\";\nimport { Circle } from \"../../../Core/Utils/Circle\";\nimport { Constants } from \"../../../Core/Utils/Constants\";\nimport { ExternalInteractorBase } from \"../../../Core/Utils/ExternalInteractorBase\";\nimport { Rectangle } from \"../../../Core/Utils/Rectangle\";\nimport { Vector } from \"../../../Core/Utils/Vector\";\nexport class Repulser extends ExternalInteractorBase {\n constructor(container) {\n super(container);\n if (!container.repulse) {\n container.repulse = { particles: [] };\n }\n this.handleClickMode = (mode) => {\n const options = this.container.actualOptions;\n if (mode !== \"repulse\") {\n return;\n }\n if (!container.repulse) {\n container.repulse = { particles: [] };\n }\n container.repulse.clicking = true;\n container.repulse.count = 0;\n for (const particle of container.repulse.particles) {\n particle.velocity.setTo(particle.initialVelocity);\n }\n container.repulse.particles = [];\n container.repulse.finish = false;\n setTimeout(() => {\n if (!container.destroyed) {\n if (!container.repulse) {\n container.repulse = { particles: [] };\n }\n container.repulse.clicking = false;\n }\n }, options.interactivity.modes.repulse.duration * 1000);\n };\n }\n isEnabled() {\n const container = this.container, options = container.actualOptions, mouse = container.interactivity.mouse, events = options.interactivity.events, divs = events.onDiv, divRepulse = isDivModeEnabled(\"repulse\", divs);\n if (!(divRepulse || (events.onHover.enable && mouse.position) || (events.onClick.enable && mouse.clickPosition))) {\n return false;\n }\n const hoverMode = events.onHover.mode, clickMode = events.onClick.mode;\n return isInArray(\"repulse\", hoverMode) || isInArray(\"repulse\", clickMode) || divRepulse;\n }\n reset() {\n }\n async interact() {\n const container = this.container, options = container.actualOptions, mouseMoveStatus = container.interactivity.status === Constants.mouseMoveEvent, events = options.interactivity.events, hoverEnabled = events.onHover.enable, hoverMode = events.onHover.mode, clickEnabled = events.onClick.enable, clickMode = events.onClick.mode, divs = events.onDiv;\n if (mouseMoveStatus && hoverEnabled && isInArray(\"repulse\", hoverMode)) {\n this.hoverRepulse();\n }\n else if (clickEnabled && isInArray(\"repulse\", clickMode)) {\n this.clickRepulse();\n }\n else {\n divModeExecute(\"repulse\", divs, (selector, div) => this.singleSelectorRepulse(selector, div));\n }\n }\n singleSelectorRepulse(selector, div) {\n const container = this.container, query = document.querySelectorAll(selector);\n if (!query.length) {\n return;\n }\n query.forEach((item) => {\n const elem = item, pxRatio = container.retina.pixelRatio, pos = {\n x: (elem.offsetLeft + elem.offsetWidth / 2) * pxRatio,\n y: (elem.offsetTop + elem.offsetHeight / 2) * pxRatio,\n }, repulseRadius = (elem.offsetWidth / 2) * pxRatio, area = div.type === \"circle\"\n ? new Circle(pos.x, pos.y, repulseRadius)\n : new Rectangle(elem.offsetLeft * pxRatio, elem.offsetTop * pxRatio, elem.offsetWidth * pxRatio, elem.offsetHeight * pxRatio), divs = container.actualOptions.interactivity.modes.repulse.divs, divRepulse = divMode(divs, elem);\n this.processRepulse(pos, repulseRadius, area, divRepulse);\n });\n }\n hoverRepulse() {\n const container = this.container, mousePos = container.interactivity.mouse.position;\n if (!mousePos) {\n return;\n }\n const repulseRadius = container.retina.repulseModeDistance;\n this.processRepulse(mousePos, repulseRadius, new Circle(mousePos.x, mousePos.y, repulseRadius));\n }\n processRepulse(position, repulseRadius, area, divRepulse) {\n var _a;\n const container = this.container, query = container.particles.quadTree.query(area), repulseOptions = container.actualOptions.interactivity.modes.repulse;\n for (const particle of query) {\n const { dx, dy, distance } = getDistances(particle.position, position), velocity = ((_a = divRepulse === null || divRepulse === void 0 ? void 0 : divRepulse.speed) !== null && _a !== void 0 ? _a : repulseOptions.speed) * repulseOptions.factor, repulseFactor = clamp(calcEasing(1 - distance / repulseRadius, repulseOptions.easing) * velocity, 0, repulseOptions.maxSpeed), normVec = Vector.create(distance === 0 ? velocity : (dx / distance) * repulseFactor, distance === 0 ? velocity : (dy / distance) * repulseFactor);\n particle.position.addTo(normVec);\n }\n }\n clickRepulse() {\n const container = this.container;\n if (!container.repulse) {\n container.repulse = { particles: [] };\n }\n if (!container.repulse.finish) {\n if (!container.repulse.count) {\n container.repulse.count = 0;\n }\n container.repulse.count++;\n if (container.repulse.count === container.particles.count) {\n container.repulse.finish = true;\n }\n }\n if (container.repulse.clicking) {\n const repulseDistance = container.retina.repulseModeDistance, repulseRadius = Math.pow(repulseDistance / 6, 3), mouseClickPos = container.interactivity.mouse.clickPosition;\n if (mouseClickPos === undefined) {\n return;\n }\n const range = new Circle(mouseClickPos.x, mouseClickPos.y, repulseRadius), query = container.particles.quadTree.query(range);\n for (const particle of query) {\n const { dx, dy, distance } = getDistances(mouseClickPos, particle.position), d = distance ** 2, velocity = container.actualOptions.interactivity.modes.repulse.speed, force = (-repulseRadius * velocity) / d;\n if (d <= repulseRadius) {\n container.repulse.particles.push(particle);\n const vect = Vector.create(dx, dy);\n vect.length = force;\n particle.velocity.setTo(vect);\n }\n }\n }\n else if (container.repulse.clicking === false) {\n for (const particle of container.repulse.particles) {\n particle.velocity.setTo(particle.initialVelocity);\n }\n container.repulse.particles = [];\n }\n }\n}\n","import { getStyleFromHsl } from \"../../Utils/ColorUtils\";\nconst currentColorRegex = /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\\((-?\\d+%?[,\\s]+){2,3}\\s*[\\d.]+%?\\))|currentcolor/gi;\nfunction replaceColorSvg(imageShape, color, opacity) {\n const { svgData } = imageShape;\n if (!svgData) {\n return \"\";\n }\n const colorStyle = getStyleFromHsl(color, opacity);\n if (svgData.includes(\"fill\")) {\n return svgData.replace(currentColorRegex, () => colorStyle);\n }\n const preFillIndex = svgData.indexOf(\">\");\n return `${svgData.substring(0, preFillIndex)} fill=\"${colorStyle}\"${svgData.substring(preFillIndex)}`;\n}\nexport async function loadImage(image) {\n return new Promise((resolve) => {\n image.loading = true;\n const img = new Image();\n img.addEventListener(\"load\", () => {\n image.element = img;\n image.loading = false;\n resolve();\n });\n img.addEventListener(\"error\", () => {\n image.error = true;\n image.loading = false;\n console.error(`Error tsParticles - loading image: ${image.source}`);\n resolve();\n });\n img.src = image.source;\n });\n}\nexport async function downloadSvgImage(image) {\n if (image.type !== \"svg\") {\n await loadImage(image);\n return;\n }\n image.loading = true;\n const response = await fetch(image.source);\n image.loading = false;\n if (!response.ok) {\n console.error(\"Error tsParticles - Image not found\");\n image.error = true;\n }\n if (!image.error) {\n image.svgData = await response.text();\n }\n}\nexport function replaceImageColor(image, imageData, color, particle) {\n var _a, _b, _c;\n const svgColoredData = replaceColorSvg(image, color, (_b = (_a = particle.opacity) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : 1);\n const svg = new Blob([svgColoredData], { type: \"image/svg+xml\" });\n const domUrl = URL || window.URL || window.webkitURL || window;\n const url = domUrl.createObjectURL(svg);\n const img = new Image();\n const imageRes = {\n data: Object.assign(Object.assign({}, image), { svgData: svgColoredData }),\n ratio: imageData.width / imageData.height,\n replaceColor: (_c = imageData.replaceColor) !== null && _c !== void 0 ? _c : imageData.replace_color,\n source: imageData.src,\n };\n img.addEventListener(\"load\", () => {\n const pImage = particle.image;\n if (pImage) {\n pImage.loaded = true;\n image.element = img;\n }\n domUrl.revokeObjectURL(url);\n });\n img.addEventListener(\"error\", () => {\n domUrl.revokeObjectURL(url);\n const img2 = Object.assign(Object.assign({}, image), { error: false, loading: true });\n loadImage(img2).then(() => {\n const pImage = particle.image;\n if (pImage) {\n image.element = img2.element;\n pImage.loaded = true;\n }\n });\n });\n img.src = url;\n return imageRes;\n}\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _ImageDrawer_images;\nimport { downloadSvgImage, loadImage, replaceImageColor } from \"./Utils\";\nexport class ImageDrawer {\n constructor() {\n _ImageDrawer_images.set(this, void 0);\n __classPrivateFieldSet(this, _ImageDrawer_images, [], \"f\");\n }\n getSidesCount() {\n return 12;\n }\n getImages(container) {\n const containerImages = __classPrivateFieldGet(this, _ImageDrawer_images, \"f\").find((t) => t.id === container.id);\n if (!containerImages) {\n __classPrivateFieldGet(this, _ImageDrawer_images, \"f\").push({\n id: container.id,\n images: [],\n });\n return this.getImages(container);\n }\n else {\n return containerImages;\n }\n }\n addImage(container, image) {\n const containerImages = this.getImages(container);\n containerImages === null || containerImages === void 0 ? void 0 : containerImages.images.push(image);\n }\n destroy() {\n __classPrivateFieldSet(this, _ImageDrawer_images, [], \"f\");\n }\n draw(context, particle, radius, opacity) {\n var _a, _b;\n const image = particle.image;\n const element = (_a = image === null || image === void 0 ? void 0 : image.data) === null || _a === void 0 ? void 0 : _a.element;\n if (!element) {\n return;\n }\n const ratio = (_b = image === null || image === void 0 ? void 0 : image.ratio) !== null && _b !== void 0 ? _b : 1;\n const pos = {\n x: -radius,\n y: -radius,\n };\n if (!(image === null || image === void 0 ? void 0 : image.data.svgData) || !(image === null || image === void 0 ? void 0 : image.replaceColor)) {\n context.globalAlpha = opacity;\n }\n context.drawImage(element, pos.x, pos.y, radius * 2, (radius * 2) / ratio);\n if (!(image === null || image === void 0 ? void 0 : image.data.svgData) || !(image === null || image === void 0 ? void 0 : image.replaceColor)) {\n context.globalAlpha = 1;\n }\n }\n loadShape(particle) {\n var _a, _b, _c;\n if (particle.shape !== \"image\" && particle.shape !== \"images\") {\n return;\n }\n const images = this.getImages(particle.container).images;\n const imageData = particle.shapeData;\n const image = images.find((t) => t.source === imageData.src);\n let imageRes;\n if (!image) {\n this.loadImageShape(particle.container, imageData).then(() => {\n this.loadShape(particle);\n });\n return;\n }\n if (image.error) {\n return;\n }\n const color = particle.getFillColor();\n if (image.svgData && imageData.replaceColor && color) {\n imageRes = replaceImageColor(image, imageData, color, particle);\n }\n else {\n imageRes = {\n data: image,\n loaded: true,\n ratio: imageData.width / imageData.height,\n replaceColor: (_a = imageData.replaceColor) !== null && _a !== void 0 ? _a : imageData.replace_color,\n source: imageData.src,\n };\n }\n if (!imageRes.ratio) {\n imageRes.ratio = 1;\n }\n const fill = (_b = imageData.fill) !== null && _b !== void 0 ? _b : particle.fill;\n const close = (_c = imageData.close) !== null && _c !== void 0 ? _c : particle.close;\n const imageShape = {\n image: imageRes,\n fill,\n close,\n };\n particle.image = imageShape.image;\n particle.fill = imageShape.fill;\n particle.close = imageShape.close;\n }\n async loadImageShape(container, imageShape) {\n const source = imageShape.src;\n if (!source) {\n throw new Error(\"Error tsParticles - No image.src\");\n }\n try {\n const image = {\n source: source,\n type: source.substr(source.length - 3),\n error: false,\n loading: true,\n };\n this.addImage(container, image);\n const imageFunc = imageShape.replaceColor ? downloadSvgImage : loadImage;\n await imageFunc(image);\n }\n catch (_a) {\n throw new Error(`tsParticles error - ${imageShape.src} not found`);\n }\n }\n}\n_ImageDrawer_images = new WeakMap();\n","import { getRangeValue, randomInRange, setRangeValue } from \"../../Utils/NumberUtils\";\nexport class LifeUpdater {\n constructor(container) {\n this.container = container;\n }\n init() {\n }\n isEnabled(particle) {\n return !particle.destroyed;\n }\n update(particle, delta) {\n if (!this.isEnabled(particle)) {\n return;\n }\n const life = particle.life;\n let justSpawned = false;\n if (particle.spawning) {\n life.delayTime += delta.value;\n if (life.delayTime >= particle.life.delay) {\n justSpawned = true;\n particle.spawning = false;\n life.delayTime = 0;\n life.time = 0;\n }\n else {\n return;\n }\n }\n if (life.duration === -1) {\n return;\n }\n if (particle.spawning) {\n return;\n }\n if (justSpawned) {\n life.time = 0;\n }\n else {\n life.time += delta.value;\n }\n if (life.time < life.duration) {\n return;\n }\n life.time = 0;\n if (particle.life.count > 0) {\n particle.life.count--;\n }\n if (particle.life.count === 0) {\n particle.destroy();\n return;\n }\n const canvasSize = this.container.canvas.size, widthRange = setRangeValue(0, canvasSize.width), heightRange = setRangeValue(0, canvasSize.width);\n particle.position.x = randomInRange(widthRange);\n particle.position.y = randomInRange(heightRange);\n particle.spawning = true;\n life.delayTime = 0;\n life.time = 0;\n particle.reset();\n const lifeOptions = particle.options.life;\n life.delay = getRangeValue(lifeOptions.delay.value) * 1000;\n life.duration = getRangeValue(lifeOptions.duration.value) * 1000;\n }\n}\n","export class LineDrawer {\n getSidesCount() {\n return 1;\n }\n draw(context, particle, radius) {\n context.moveTo(-radius / 2, 0);\n context.lineTo(radius / 2, 0);\n }\n}\n","import { clamp, getRangeMax, getRangeMin, getRangeValue, randomInRange } from \"../../Utils/NumberUtils\";\nfunction checkDestroy(particle, value, minValue, maxValue) {\n switch (particle.options.opacity.animation.destroy) {\n case \"max\":\n if (value >= maxValue) {\n particle.destroy();\n }\n break;\n case \"min\":\n if (value <= minValue) {\n particle.destroy();\n }\n break;\n }\n}\nfunction updateOpacity(particle, delta) {\n var _a, _b, _c, _d, _e;\n if (!particle.opacity) {\n return;\n }\n const minValue = particle.opacity.min;\n const maxValue = particle.opacity.max;\n if (particle.destroyed ||\n !particle.opacity.enable ||\n (((_a = particle.opacity.maxLoops) !== null && _a !== void 0 ? _a : 0) > 0 && ((_b = particle.opacity.loops) !== null && _b !== void 0 ? _b : 0) > ((_c = particle.opacity.maxLoops) !== null && _c !== void 0 ? _c : 0))) {\n return;\n }\n switch (particle.opacity.status) {\n case 0:\n if (particle.opacity.value >= maxValue) {\n particle.opacity.status = 1;\n if (!particle.opacity.loops) {\n particle.opacity.loops = 0;\n }\n particle.opacity.loops++;\n }\n else {\n particle.opacity.value += ((_d = particle.opacity.velocity) !== null && _d !== void 0 ? _d : 0) * delta.factor;\n }\n break;\n case 1:\n if (particle.opacity.value <= minValue) {\n particle.opacity.status = 0;\n if (!particle.opacity.loops) {\n particle.opacity.loops = 0;\n }\n particle.opacity.loops++;\n }\n else {\n particle.opacity.value -= ((_e = particle.opacity.velocity) !== null && _e !== void 0 ? _e : 0) * delta.factor;\n }\n break;\n }\n checkDestroy(particle, particle.opacity.value, minValue, maxValue);\n if (!particle.destroyed) {\n particle.opacity.value = clamp(particle.opacity.value, minValue, maxValue);\n }\n}\nexport class OpacityUpdater {\n constructor(container) {\n this.container = container;\n }\n init(particle) {\n const opacityOptions = particle.options.opacity;\n particle.opacity = {\n enable: opacityOptions.animation.enable,\n max: getRangeMax(opacityOptions.value),\n min: getRangeMin(opacityOptions.value),\n value: getRangeValue(opacityOptions.value),\n loops: 0,\n maxLoops: getRangeValue(opacityOptions.animation.count),\n };\n const opacityAnimation = opacityOptions.animation;\n if (opacityAnimation.enable) {\n particle.opacity.status = 0;\n const opacityRange = opacityOptions.value;\n particle.opacity.min = getRangeMin(opacityRange);\n particle.opacity.max = getRangeMax(opacityRange);\n switch (opacityAnimation.startValue) {\n case \"min\":\n particle.opacity.value = particle.opacity.min;\n particle.opacity.status = 0;\n break;\n case \"random\":\n particle.opacity.value = randomInRange(particle.opacity);\n particle.opacity.status =\n Math.random() >= 0.5 ? 0 : 1;\n break;\n case \"max\":\n default:\n particle.opacity.value = particle.opacity.max;\n particle.opacity.status = 1;\n break;\n }\n particle.opacity.velocity =\n (getRangeValue(opacityAnimation.speed) / 100) * this.container.retina.reduceFactor;\n if (!opacityAnimation.sync) {\n particle.opacity.velocity *= Math.random();\n }\n }\n }\n isEnabled(particle) {\n var _a, _b, _c, _d;\n return (!particle.destroyed &&\n !particle.spawning &&\n !!particle.opacity &&\n particle.opacity.enable &&\n (((_a = particle.opacity.maxLoops) !== null && _a !== void 0 ? _a : 0) <= 0 ||\n (((_b = particle.opacity.maxLoops) !== null && _b !== void 0 ? _b : 0) > 0 &&\n ((_c = particle.opacity.loops) !== null && _c !== void 0 ? _c : 0) < ((_d = particle.opacity.maxLoops) !== null && _d !== void 0 ? _d : 0))));\n }\n update(particle, delta) {\n if (!this.isEnabled(particle)) {\n return;\n }\n updateOpacity(particle, delta);\n }\n}\n","import { bounceHorizontal, bounceVertical } from \"./Utils\";\nimport { calculateBounds, isPointInside } from \"../../Utils/Utils\";\nexport class OutOfCanvasUpdater {\n constructor(container) {\n this.container = container;\n }\n init() {\n }\n isEnabled(particle) {\n return !particle.destroyed && !particle.spawning;\n }\n update(particle, delta) {\n var _a, _b, _c, _d;\n const outModes = particle.options.move.outModes;\n this.updateOutMode(particle, delta, (_a = outModes.bottom) !== null && _a !== void 0 ? _a : outModes.default, \"bottom\");\n this.updateOutMode(particle, delta, (_b = outModes.left) !== null && _b !== void 0 ? _b : outModes.default, \"left\");\n this.updateOutMode(particle, delta, (_c = outModes.right) !== null && _c !== void 0 ? _c : outModes.default, \"right\");\n this.updateOutMode(particle, delta, (_d = outModes.top) !== null && _d !== void 0 ? _d : outModes.default, \"top\");\n }\n updateOutMode(particle, delta, outMode, direction) {\n switch (outMode) {\n case \"bounce\":\n case \"bounce-vertical\":\n case \"bounce-horizontal\":\n case \"bounceVertical\":\n case \"bounceHorizontal\":\n case \"split\":\n this.bounce(particle, delta, direction, outMode);\n break;\n case \"destroy\":\n this.destroy(particle, direction);\n break;\n case \"out\":\n this.out(particle, direction);\n break;\n case \"none\":\n default:\n this.none(particle, direction);\n break;\n }\n }\n destroy(particle, direction) {\n const container = this.container;\n if (isPointInside(particle.position, container.canvas.size, particle.getRadius(), direction)) {\n return;\n }\n container.particles.remove(particle, undefined, true);\n }\n out(particle, direction) {\n const container = this.container;\n if (isPointInside(particle.position, container.canvas.size, particle.getRadius(), direction)) {\n return;\n }\n const wrap = particle.options.move.warp, canvasSize = container.canvas.size, newPos = {\n bottom: canvasSize.height + particle.getRadius() + particle.offset.y,\n left: -particle.getRadius() - particle.offset.x,\n right: canvasSize.width + particle.getRadius() + particle.offset.x,\n top: -particle.getRadius() - particle.offset.y,\n }, sizeValue = particle.getRadius(), nextBounds = calculateBounds(particle.position, sizeValue);\n if (direction === \"right\" && nextBounds.left > canvasSize.width + particle.offset.x) {\n particle.position.x = newPos.left;\n particle.initialPosition.x = particle.position.x;\n if (!wrap) {\n particle.position.y = Math.random() * canvasSize.height;\n particle.initialPosition.y = particle.position.y;\n }\n }\n else if (direction === \"left\" && nextBounds.right < -particle.offset.x) {\n particle.position.x = newPos.right;\n particle.initialPosition.x = particle.position.x;\n if (!wrap) {\n particle.position.y = Math.random() * canvasSize.height;\n particle.initialPosition.y = particle.position.y;\n }\n }\n if (direction === \"bottom\" && nextBounds.top > canvasSize.height + particle.offset.y) {\n if (!wrap) {\n particle.position.x = Math.random() * canvasSize.width;\n particle.initialPosition.x = particle.position.x;\n }\n particle.position.y = newPos.top;\n particle.initialPosition.y = particle.position.y;\n }\n else if (direction === \"top\" && nextBounds.bottom < -particle.offset.y) {\n if (!wrap) {\n particle.position.x = Math.random() * canvasSize.width;\n particle.initialPosition.x = particle.position.x;\n }\n particle.position.y = newPos.bottom;\n particle.initialPosition.y = particle.position.y;\n }\n }\n bounce(particle, delta, direction, outMode) {\n const container = this.container;\n let handled = false;\n for (const [, plugin] of container.plugins) {\n if (plugin.particleBounce !== undefined) {\n handled = plugin.particleBounce(particle, delta, direction);\n }\n if (handled) {\n break;\n }\n }\n if (handled) {\n return;\n }\n const pos = particle.getPosition(), offset = particle.offset, size = particle.getRadius(), bounds = calculateBounds(pos, size), canvasSize = container.canvas.size;\n bounceHorizontal({ particle, outMode, direction, bounds, canvasSize, offset, size });\n bounceVertical({ particle, outMode, direction, bounds, canvasSize, offset, size });\n }\n none(particle, direction) {\n if ((particle.options.move.distance.horizontal &&\n (direction === \"left\" || direction === \"right\")) ||\n (particle.options.move.distance.vertical &&\n (direction === \"top\" || direction === \"bottom\"))) {\n return;\n }\n const gravityOptions = particle.options.move.gravity, container = this.container;\n const canvasSize = container.canvas.size;\n const pRadius = particle.getRadius();\n if (!gravityOptions.enable) {\n if ((particle.velocity.y > 0 && particle.position.y <= canvasSize.height + pRadius) ||\n (particle.velocity.y < 0 && particle.position.y >= -pRadius) ||\n (particle.velocity.x > 0 && particle.position.x <= canvasSize.width + pRadius) ||\n (particle.velocity.x < 0 && particle.position.x >= -pRadius)) {\n return;\n }\n if (!isPointInside(particle.position, container.canvas.size, pRadius, direction)) {\n container.particles.remove(particle);\n }\n }\n else {\n const position = particle.position;\n if ((!gravityOptions.inverse &&\n position.y > canvasSize.height + pRadius &&\n direction === \"bottom\") ||\n (gravityOptions.inverse && position.y < -pRadius && direction === \"top\")) {\n container.particles.remove(particle);\n }\n }\n }\n}\n","import { getRangeValue } from \"../../Utils/NumberUtils\";\nexport function bounceHorizontal(data) {\n if (!(data.outMode === \"bounce\" ||\n data.outMode === \"bounce-horizontal\" ||\n data.outMode === \"bounceHorizontal\" ||\n data.outMode === \"split\")) {\n return;\n }\n const velocity = data.particle.velocity.x;\n let bounced = false;\n if ((data.direction === \"right\" && data.bounds.right >= data.canvasSize.width && velocity > 0) ||\n (data.direction === \"left\" && data.bounds.left <= 0 && velocity < 0)) {\n const newVelocity = getRangeValue(data.particle.options.bounce.horizontal.value);\n data.particle.velocity.x *= -newVelocity;\n bounced = true;\n }\n if (!bounced) {\n return;\n }\n const minPos = data.offset.x + data.size;\n if (data.bounds.right >= data.canvasSize.width) {\n data.particle.position.x = data.canvasSize.width - minPos;\n }\n else if (data.bounds.left <= 0) {\n data.particle.position.x = minPos;\n }\n if (data.outMode === \"split\") {\n data.particle.destroy();\n }\n}\nexport function bounceVertical(data) {\n if (data.outMode === \"bounce\" ||\n data.outMode === \"bounce-vertical\" ||\n data.outMode === \"bounceVertical\" ||\n data.outMode === \"split\") {\n const velocity = data.particle.velocity.y;\n let bounced = false;\n if ((data.direction === \"bottom\" &&\n data.bounds.bottom >= data.canvasSize.height &&\n velocity > 0) ||\n (data.direction === \"top\" && data.bounds.top <= 0 && velocity < 0)) {\n const newVelocity = getRangeValue(data.particle.options.bounce.vertical.value);\n data.particle.velocity.y *= -newVelocity;\n bounced = true;\n }\n if (!bounced) {\n return;\n }\n const minPos = data.offset.y + data.size;\n if (data.bounds.bottom >= data.canvasSize.height) {\n data.particle.position.y = data.canvasSize.height - minPos;\n }\n else if (data.bounds.top <= 0) {\n data.particle.position.y = minPos;\n }\n if (data.outMode === \"split\") {\n data.particle.destroy();\n }\n }\n}\n","import { isSsr } from \"../../Utils/Utils\";\nexport class ParallaxMover {\n init() {\n }\n isEnabled(particle) {\n return (!isSsr() &&\n !particle.destroyed &&\n particle.container.actualOptions.interactivity.events.onHover.parallax.enable);\n }\n move(particle) {\n const container = particle.container, options = container.actualOptions;\n if (isSsr() || !options.interactivity.events.onHover.parallax.enable) {\n return;\n }\n const parallaxForce = options.interactivity.events.onHover.parallax.force, mousePos = container.interactivity.mouse.position;\n if (!mousePos) {\n return;\n }\n const canvasCenter = {\n x: container.canvas.size.width / 2,\n y: container.canvas.size.height / 2,\n }, parallaxSmooth = options.interactivity.events.onHover.parallax.smooth, factor = particle.getRadius() / parallaxForce, centerDistance = {\n x: (mousePos.x - canvasCenter.x) * factor,\n y: (mousePos.y - canvasCenter.y) * factor,\n };\n particle.offset.x += (centerDistance.x - particle.offset.x) / parallaxSmooth;\n particle.offset.y += (centerDistance.y - particle.offset.y) / parallaxSmooth;\n }\n}\n","export class ParticlesInteractorBase {\n constructor(container) {\n this.container = container;\n this.type = 1;\n }\n}\n","import { ParticlesInteractorBase } from \"../../../Core/Utils/ParticlesInteractorBase\";\nimport { getDistances } from \"../../../Utils/NumberUtils\";\nexport class Attractor extends ParticlesInteractorBase {\n constructor(container) {\n super(container);\n }\n async interact(p1) {\n var _a;\n const container = this.container, distance = (_a = p1.retina.attractDistance) !== null && _a !== void 0 ? _a : container.retina.attractDistance, pos1 = p1.getPosition(), query = container.particles.quadTree.queryCircle(pos1, distance);\n for (const p2 of query) {\n if (p1 === p2 || !p2.options.move.attract.enable || p2.destroyed || p2.spawning) {\n continue;\n }\n const pos2 = p2.getPosition(), { dx, dy } = getDistances(pos1, pos2), rotate = p1.options.move.attract.rotate, ax = dx / (rotate.x * 1000), ay = dy / (rotate.y * 1000), p1Factor = p2.size.value / p1.size.value, p2Factor = 1 / p1Factor;\n p1.velocity.x -= ax * p1Factor;\n p1.velocity.y -= ay * p1Factor;\n p2.velocity.x += ax * p2Factor;\n p2.velocity.y += ay * p2Factor;\n }\n }\n isEnabled(particle) {\n return particle.options.move.attract.enable;\n }\n reset() {\n }\n}\n","import { circleBounce, circleBounceDataFromParticle } from \"../../../Utils/Utils\";\nimport { clamp, getDistance } from \"../../../Utils/NumberUtils\";\nimport { ParticlesInteractorBase } from \"../../../Core/Utils/ParticlesInteractorBase\";\nfunction bounce(p1, p2) {\n circleBounce(circleBounceDataFromParticle(p1), circleBounceDataFromParticle(p2));\n}\nfunction destroy(p1, p2) {\n if (!p1.unbreakable && !p2.unbreakable) {\n bounce(p1, p2);\n }\n if (p1.getRadius() === undefined && p2.getRadius() !== undefined) {\n p1.destroy();\n }\n else if (p1.getRadius() !== undefined && p2.getRadius() === undefined) {\n p2.destroy();\n }\n else if (p1.getRadius() !== undefined && p2.getRadius() !== undefined) {\n if (p1.getRadius() >= p2.getRadius()) {\n p2.destroy();\n }\n else {\n p1.destroy();\n }\n }\n}\nexport class Collider extends ParticlesInteractorBase {\n constructor(container) {\n super(container);\n }\n isEnabled(particle) {\n return particle.options.collisions.enable;\n }\n reset() {\n }\n async interact(p1) {\n const container = this.container, pos1 = p1.getPosition(), radius1 = p1.getRadius(), query = container.particles.quadTree.queryCircle(pos1, radius1 * 2);\n for (const p2 of query) {\n if (p1 === p2 ||\n !p2.options.collisions.enable ||\n p1.options.collisions.mode !== p2.options.collisions.mode ||\n p2.destroyed ||\n p2.spawning) {\n continue;\n }\n const pos2 = p2.getPosition();\n if (Math.round(pos1.z) !== Math.round(pos2.z)) {\n continue;\n }\n const dist = getDistance(pos1, pos2), radius2 = p2.getRadius(), distP = radius1 + radius2;\n if (dist <= distP) {\n this.resolveCollision(p1, p2);\n }\n }\n }\n resolveCollision(p1, p2) {\n switch (p1.options.collisions.mode) {\n case \"absorb\":\n this.absorb(p1, p2);\n break;\n case \"bounce\":\n bounce(p1, p2);\n break;\n case \"destroy\":\n destroy(p1, p2);\n break;\n }\n }\n absorb(p1, p2) {\n const container = this.container, fps = container.fpsLimit / 1000;\n if (p1.getRadius() === undefined && p2.getRadius() !== undefined) {\n p1.destroy();\n }\n else if (p1.getRadius() !== undefined && p2.getRadius() === undefined) {\n p2.destroy();\n }\n else if (p1.getRadius() !== undefined && p2.getRadius() !== undefined) {\n if (p1.getRadius() >= p2.getRadius()) {\n const factor = clamp(p1.getRadius() / p2.getRadius(), 0, p2.getRadius()) * fps;\n p1.size.value += factor;\n p2.size.value -= factor;\n if (p2.getRadius() <= container.retina.pixelRatio) {\n p2.size.value = 0;\n p2.destroy();\n }\n }\n else {\n const factor = clamp(p2.getRadius() / p1.getRadius(), 0, p1.getRadius()) * fps;\n p1.size.value -= factor;\n p2.size.value += factor;\n if (p1.getRadius() <= container.retina.pixelRatio) {\n p1.size.value = 0;\n p1.destroy();\n }\n }\n }\n }\n}\n","import { Circle } from \"../../../Core/Utils/Circle\";\nimport { CircleWarp } from \"../../../Core/Utils/CircleWarp\";\nimport { ParticlesInteractorBase } from \"../../../Core/Utils/ParticlesInteractorBase\";\nimport { getDistance } from \"../../../Utils/NumberUtils\";\nimport { getLinkRandomColor } from \"../../../Utils/ColorUtils\";\nfunction getLinkDistance(pos1, pos2, optDistance, canvasSize, warp) {\n let distance = getDistance(pos1, pos2);\n if (!warp || distance <= optDistance) {\n return distance;\n }\n const pos2NE = {\n x: pos2.x - canvasSize.width,\n y: pos2.y,\n };\n distance = getDistance(pos1, pos2NE);\n if (distance <= optDistance) {\n return distance;\n }\n const pos2SE = {\n x: pos2.x - canvasSize.width,\n y: pos2.y - canvasSize.height,\n };\n distance = getDistance(pos1, pos2SE);\n if (distance <= optDistance) {\n return distance;\n }\n const pos2SW = {\n x: pos2.x,\n y: pos2.y - canvasSize.height,\n };\n distance = getDistance(pos1, pos2SW);\n return distance;\n}\nexport class Linker extends ParticlesInteractorBase {\n constructor(container) {\n super(container);\n }\n isEnabled(particle) {\n return particle.options.links.enable;\n }\n reset() {\n }\n async interact(p1) {\n var _a;\n p1.links = [];\n const pos1 = p1.getPosition(), container = this.container, canvasSize = container.canvas.size;\n if (pos1.x < 0 || pos1.y < 0 || pos1.x > canvasSize.width || pos1.y > canvasSize.height) {\n return;\n }\n const linkOpt1 = p1.options.links, optOpacity = linkOpt1.opacity, optDistance = (_a = p1.retina.linksDistance) !== null && _a !== void 0 ? _a : container.retina.linksDistance, warp = linkOpt1.warp, range = warp\n ? new CircleWarp(pos1.x, pos1.y, optDistance, canvasSize)\n : new Circle(pos1.x, pos1.y, optDistance), query = container.particles.quadTree.query(range);\n for (const p2 of query) {\n const linkOpt2 = p2.options.links;\n if (p1 === p2 ||\n !linkOpt2.enable ||\n linkOpt1.id !== linkOpt2.id ||\n p2.spawning ||\n p2.destroyed ||\n p1.links.map((t) => t.destination).indexOf(p2) !== -1 ||\n p2.links.map((t) => t.destination).indexOf(p1) !== -1) {\n continue;\n }\n const pos2 = p2.getPosition();\n if (pos2.x < 0 || pos2.y < 0 || pos2.x > canvasSize.width || pos2.y > canvasSize.height) {\n continue;\n }\n const distance = getLinkDistance(pos1, pos2, optDistance, canvasSize, warp && linkOpt2.warp);\n if (distance > optDistance) {\n return;\n }\n const opacityLine = (1 - distance / optDistance) * optOpacity;\n this.setColor(p1);\n p1.links.push({\n destination: p2,\n opacity: opacityLine,\n });\n }\n }\n setColor(p1) {\n const container = this.container, linksOptions = p1.options.links;\n let linkColor = linksOptions.id === undefined\n ? container.particles.linksColor\n : container.particles.linksColors.get(linksOptions.id);\n if (!linkColor) {\n const optColor = linksOptions.color;\n linkColor = getLinkRandomColor(optColor, linksOptions.blink, linksOptions.consent);\n if (linksOptions.id === undefined) {\n container.particles.linksColor = linkColor;\n }\n else {\n container.particles.linksColors.set(linksOptions.id, linkColor);\n }\n }\n }\n}\n","import { colorToRgb, getLinkColor } from \"../../../Utils/ColorUtils\";\nimport { drawLinkLine, drawLinkTriangle } from \"../../../Utils/CanvasUtils\";\nimport { getDistance, getRangeValue } from \"../../../Utils/NumberUtils\";\nexport class LinkInstance {\n constructor(container) {\n this.container = container;\n }\n particleCreated(particle) {\n const linkParticle = particle;\n linkParticle.links = [];\n }\n particleDestroyed(particle) {\n const linkParticle = particle;\n linkParticle.links = [];\n }\n drawParticle(context, particle) {\n const linkParticle = particle, container = this.container, particles = container.particles, pOptions = particle.options;\n if (linkParticle.links.length <= 0) {\n return;\n }\n context.save();\n const p1Links = linkParticle.links.filter((l) => {\n const linkFreq = container.particles.getLinkFrequency(linkParticle, l.destination);\n return linkFreq <= pOptions.links.frequency;\n });\n for (const link of p1Links) {\n const p2 = link.destination;\n if (pOptions.links.triangles.enable) {\n const links = p1Links.map((l) => l.destination), vertices = p2.links.filter((t) => {\n const linkFreq = container.particles.getLinkFrequency(p2, t.destination);\n return linkFreq <= p2.options.links.frequency && links.indexOf(t.destination) >= 0;\n });\n if (vertices.length) {\n for (const vertex of vertices) {\n const p3 = vertex.destination, triangleFreq = particles.getTriangleFrequency(linkParticle, p2, p3);\n if (triangleFreq > pOptions.links.triangles.frequency) {\n continue;\n }\n this.drawLinkTriangle(linkParticle, link, vertex);\n }\n }\n }\n if (link.opacity > 0 && container.retina.linksWidth > 0) {\n this.drawLinkLine(linkParticle, link);\n }\n }\n context.restore();\n }\n drawLinkTriangle(p1, link1, link2) {\n var _a;\n const container = this.container, options = container.actualOptions, p2 = link1.destination, p3 = link2.destination, triangleOptions = p1.options.links.triangles, opacityTriangle = (_a = triangleOptions.opacity) !== null && _a !== void 0 ? _a : (link1.opacity + link2.opacity) / 2;\n if (opacityTriangle <= 0) {\n return;\n }\n const pos1 = p1.getPosition(), pos2 = p2.getPosition(), pos3 = p3.getPosition();\n container.canvas.draw((ctx) => {\n if (getDistance(pos1, pos2) > container.retina.linksDistance ||\n getDistance(pos3, pos2) > container.retina.linksDistance ||\n getDistance(pos3, pos1) > container.retina.linksDistance) {\n return;\n }\n let colorTriangle = colorToRgb(triangleOptions.color);\n if (!colorTriangle) {\n const linksOptions = p1.options.links, linkColor = linksOptions.id !== undefined\n ? container.particles.linksColors.get(linksOptions.id)\n : container.particles.linksColor;\n colorTriangle = getLinkColor(p1, p2, linkColor);\n }\n if (!colorTriangle) {\n return;\n }\n drawLinkTriangle(ctx, pos1, pos2, pos3, options.backgroundMask.enable, options.backgroundMask.composite, colorTriangle, opacityTriangle);\n });\n }\n drawLinkLine(p1, link) {\n const container = this.container, options = container.actualOptions, p2 = link.destination, pos1 = p1.getPosition(), pos2 = p2.getPosition();\n let opacity = link.opacity;\n container.canvas.draw((ctx) => {\n var _a, _b;\n let colorLine;\n const twinkle = p1.options.twinkle.lines;\n if (twinkle.enable) {\n const twinkleFreq = twinkle.frequency, twinkleRgb = colorToRgb(twinkle.color), twinkling = Math.random() < twinkleFreq;\n if (twinkling && twinkleRgb) {\n colorLine = twinkleRgb;\n opacity = getRangeValue(twinkle.opacity);\n }\n }\n if (!colorLine) {\n const linksOptions = p1.options.links, linkColor = linksOptions.id !== undefined\n ? container.particles.linksColors.get(linksOptions.id)\n : container.particles.linksColor;\n colorLine = getLinkColor(p1, p2, linkColor);\n }\n if (!colorLine) {\n return;\n }\n const width = (_a = p1.retina.linksWidth) !== null && _a !== void 0 ? _a : container.retina.linksWidth, maxDistance = (_b = p1.retina.linksDistance) !== null && _b !== void 0 ? _b : container.retina.linksDistance;\n drawLinkLine(ctx, width, pos1, pos2, maxDistance, container.canvas.size, p1.options.links.warp, options.backgroundMask.enable, options.backgroundMask.composite, colorLine, opacity, p1.options.links.shadow);\n });\n }\n}\n","import { LinkInstance } from \"./LinkInstance\";\nclass LinksPlugin {\n constructor() {\n this.id = \"links\";\n }\n getPlugin(container) {\n return new LinkInstance(container);\n }\n needsPlugin() {\n return true;\n }\n loadOptions() {\n }\n}\nexport async function loadPlugin(engine) {\n const plugin = new LinksPlugin();\n await engine.addPlugin(plugin);\n}\n","import { loadInteraction } from \"./interaction\";\nimport { loadPlugin } from \"./plugin\";\nexport async function loadParticlesLinksInteraction(engine) {\n await loadInteraction(engine);\n await loadPlugin(engine);\n}\n","import { Linker } from \"./Linker\";\nexport async function loadInteraction(engine) {\n await engine.addInteractor(\"particlesLinks\", (container) => new Linker(container));\n}\n","export class PolygonDrawerBase {\n getSidesCount(particle) {\n var _a, _b;\n const polygon = particle.shapeData;\n return (_b = (_a = polygon === null || polygon === void 0 ? void 0 : polygon.sides) !== null && _a !== void 0 ? _a : polygon === null || polygon === void 0 ? void 0 : polygon.nb_sides) !== null && _b !== void 0 ? _b : 5;\n }\n draw(context, particle, radius) {\n const start = this.getCenter(particle, radius);\n const side = this.getSidesData(particle, radius);\n const sideCount = side.count.numerator * side.count.denominator;\n const decimalSides = side.count.numerator / side.count.denominator;\n const interiorAngleDegrees = (180 * (decimalSides - 2)) / decimalSides;\n const interiorAngle = Math.PI - (Math.PI * interiorAngleDegrees) / 180;\n if (!context) {\n return;\n }\n context.beginPath();\n context.translate(start.x, start.y);\n context.moveTo(0, 0);\n for (let i = 0; i < sideCount; i++) {\n context.lineTo(side.length, 0);\n context.translate(side.length, 0);\n context.rotate(interiorAngle);\n }\n }\n}\n","import { PolygonDrawerBase } from \"./PolygonDrawerBase\";\nexport class PolygonDrawer extends PolygonDrawerBase {\n getSidesData(particle, radius) {\n var _a, _b;\n const polygon = particle.shapeData;\n const sides = (_b = (_a = polygon === null || polygon === void 0 ? void 0 : polygon.sides) !== null && _a !== void 0 ? _a : polygon === null || polygon === void 0 ? void 0 : polygon.nb_sides) !== null && _b !== void 0 ? _b : 5;\n return {\n count: {\n denominator: 1,\n numerator: sides,\n },\n length: (radius * 2.66) / (sides / 3),\n };\n }\n getCenter(particle, radius) {\n const sides = this.getSidesCount(particle);\n return {\n x: -radius / (sides / 3.5),\n y: -radius / (2.66 / 3.5),\n };\n }\n}\n","import { PolygonDrawerBase } from \"./PolygonDrawerBase\";\nexport class TriangleDrawer extends PolygonDrawerBase {\n getSidesCount() {\n return 3;\n }\n getSidesData(particle, radius) {\n return {\n count: {\n denominator: 2,\n numerator: 3,\n },\n length: radius * 2,\n };\n }\n getCenter(particle, radius) {\n return {\n x: -radius,\n y: radius / 1.66,\n };\n }\n}\n","import { PolygonDrawer } from \"./PolygonDrawer\";\nimport { TriangleDrawer } from \"./TriangleDrawer\";\nexport async function loadGenericPolygonShape(engine) {\n await engine.addShape(\"polygon\", new PolygonDrawer());\n}\nexport async function loadTriangleShape(engine) {\n await engine.addShape(\"triangle\", new TriangleDrawer());\n}\nexport async function loadPolygonShape(engine) {\n await loadGenericPolygonShape(engine);\n await loadTriangleShape(engine);\n}\n","import { clamp } from \"../../Utils/NumberUtils\";\nfunction checkDestroy(particle, value, minValue, maxValue) {\n switch (particle.options.size.animation.destroy) {\n case \"max\":\n if (value >= maxValue) {\n particle.destroy();\n }\n break;\n case \"min\":\n if (value <= minValue) {\n particle.destroy();\n }\n break;\n }\n}\nfunction updateSize(particle, delta) {\n var _a, _b, _c, _d;\n const sizeVelocity = ((_a = particle.size.velocity) !== null && _a !== void 0 ? _a : 0) * delta.factor;\n const minValue = particle.size.min;\n const maxValue = particle.size.max;\n if (particle.destroyed ||\n !particle.size.enable ||\n (((_b = particle.size.maxLoops) !== null && _b !== void 0 ? _b : 0) > 0 && ((_c = particle.size.loops) !== null && _c !== void 0 ? _c : 0) > ((_d = particle.size.maxLoops) !== null && _d !== void 0 ? _d : 0))) {\n return;\n }\n switch (particle.size.status) {\n case 0:\n if (particle.size.value >= maxValue) {\n particle.size.status = 1;\n if (!particle.size.loops) {\n particle.size.loops = 0;\n }\n particle.size.loops++;\n }\n else {\n particle.size.value += sizeVelocity;\n }\n break;\n case 1:\n if (particle.size.value <= minValue) {\n particle.size.status = 0;\n if (!particle.size.loops) {\n particle.size.loops = 0;\n }\n particle.size.loops++;\n }\n else {\n particle.size.value -= sizeVelocity;\n }\n }\n checkDestroy(particle, particle.size.value, minValue, maxValue);\n if (!particle.destroyed) {\n particle.size.value = clamp(particle.size.value, minValue, maxValue);\n }\n}\nexport class SizeUpdater {\n init() {\n }\n isEnabled(particle) {\n var _a, _b, _c, _d;\n return (!particle.destroyed &&\n !particle.spawning &&\n particle.size.enable &&\n (((_a = particle.size.maxLoops) !== null && _a !== void 0 ? _a : 0) <= 0 ||\n (((_b = particle.size.maxLoops) !== null && _b !== void 0 ? _b : 0) > 0 && ((_c = particle.size.loops) !== null && _c !== void 0 ? _c : 0) < ((_d = particle.size.maxLoops) !== null && _d !== void 0 ? _d : 0))));\n }\n update(particle, delta) {\n if (!this.isEnabled(particle)) {\n return;\n }\n updateSize(particle, delta);\n }\n}\n","const fixFactor = Math.sqrt(2);\nexport class SquareDrawer {\n getSidesCount() {\n return 4;\n }\n draw(context, particle, radius) {\n context.rect(-radius / fixFactor, -radius / fixFactor, (radius * 2) / fixFactor, (radius * 2) / fixFactor);\n }\n}\n","export class StarDrawer {\n getSidesCount(particle) {\n var _a, _b;\n const star = particle.shapeData;\n return (_b = (_a = star === null || star === void 0 ? void 0 : star.sides) !== null && _a !== void 0 ? _a : star === null || star === void 0 ? void 0 : star.nb_sides) !== null && _b !== void 0 ? _b : 5;\n }\n draw(context, particle, radius) {\n var _a;\n const star = particle.shapeData;\n const sides = this.getSidesCount(particle);\n const inset = (_a = star === null || star === void 0 ? void 0 : star.inset) !== null && _a !== void 0 ? _a : 2;\n context.moveTo(0, 0 - radius);\n for (let i = 0; i < sides; i++) {\n context.rotate(Math.PI / sides);\n context.lineTo(0, 0 - radius * inset);\n context.rotate(Math.PI / sides);\n context.lineTo(0, 0 - radius);\n }\n }\n}\n","import { colorToHsl, getHslAnimationFromHsl } from \"../../Utils/ColorUtils\";\nimport { itemFromArray } from \"../../Utils/Utils\";\nimport { randomInRange } from \"../../Utils/NumberUtils\";\nfunction updateColorValue(delta, value, valueAnimation, max, decrease) {\n var _a;\n const colorValue = value;\n if (!colorValue || !colorValue.enable) {\n return;\n }\n const offset = randomInRange(valueAnimation.offset);\n const velocity = ((_a = value.velocity) !== null && _a !== void 0 ? _a : 0) * delta.factor + offset * 3.6;\n if (!decrease || colorValue.status === 0) {\n colorValue.value += velocity;\n if (decrease && colorValue.value > max) {\n colorValue.status = 1;\n colorValue.value -= colorValue.value % max;\n }\n }\n else {\n colorValue.value -= velocity;\n if (colorValue.value < 0) {\n colorValue.status = 0;\n colorValue.value += colorValue.value;\n }\n }\n if (colorValue.value > max) {\n colorValue.value %= max;\n }\n}\nfunction updateStrokeColor(particle, delta) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n if (!((_a = particle.stroke) === null || _a === void 0 ? void 0 : _a.color)) {\n return;\n }\n const animationOptions = particle.stroke.color.animation;\n const h = (_c = (_b = particle.strokeColor) === null || _b === void 0 ? void 0 : _b.h) !== null && _c !== void 0 ? _c : (_d = particle.color) === null || _d === void 0 ? void 0 : _d.h;\n if (h) {\n updateColorValue(delta, h, animationOptions.h, 360, false);\n }\n const s = (_f = (_e = particle.strokeColor) === null || _e === void 0 ? void 0 : _e.s) !== null && _f !== void 0 ? _f : (_g = particle.color) === null || _g === void 0 ? void 0 : _g.s;\n if (s) {\n updateColorValue(delta, s, animationOptions.s, 100, true);\n }\n const l = (_j = (_h = particle.strokeColor) === null || _h === void 0 ? void 0 : _h.l) !== null && _j !== void 0 ? _j : (_k = particle.color) === null || _k === void 0 ? void 0 : _k.l;\n if (l) {\n updateColorValue(delta, l, animationOptions.l, 100, true);\n }\n}\nexport class StrokeColorUpdater {\n constructor(container) {\n this.container = container;\n }\n init(particle) {\n var _a, _b;\n const container = this.container;\n particle.stroke =\n particle.options.stroke instanceof Array\n ? itemFromArray(particle.options.stroke, particle.id, particle.options.reduceDuplicates)\n : particle.options.stroke;\n particle.strokeWidth = particle.stroke.width * container.retina.pixelRatio;\n const strokeHslColor = (_a = colorToHsl(particle.stroke.color)) !== null && _a !== void 0 ? _a : particle.getFillColor();\n if (strokeHslColor) {\n particle.strokeColor = getHslAnimationFromHsl(strokeHslColor, (_b = particle.stroke.color) === null || _b === void 0 ? void 0 : _b.animation, container.retina.reduceFactor);\n }\n }\n isEnabled(particle) {\n var _a, _b, _c, _d;\n const color = (_a = particle.stroke) === null || _a === void 0 ? void 0 : _a.color;\n return (!particle.destroyed &&\n !particle.spawning &&\n !!color &&\n ((((_b = particle.strokeColor) === null || _b === void 0 ? void 0 : _b.h.value) !== undefined && color.animation.h.enable) ||\n (((_c = particle.strokeColor) === null || _c === void 0 ? void 0 : _c.s.value) !== undefined && color.animation.s.enable) ||\n (((_d = particle.strokeColor) === null || _d === void 0 ? void 0 : _d.l.value) !== undefined && color.animation.l.enable)));\n }\n update(particle, delta) {\n if (!this.isEnabled(particle)) {\n return;\n }\n updateStrokeColor(particle, delta);\n }\n}\n","import { isInArray, itemFromArray, loadFont } from \"../../Utils/Utils\";\nexport const validTypes = [\"text\", \"character\", \"char\"];\nexport class TextDrawer {\n getSidesCount() {\n return 12;\n }\n async init(container) {\n const options = container.actualOptions;\n if (validTypes.find((t) => isInArray(t, options.particles.shape.type))) {\n const shapeOptions = validTypes.map((t) => options.particles.shape.options[t]).find((t) => !!t);\n if (shapeOptions instanceof Array) {\n const promises = [];\n for (const character of shapeOptions) {\n promises.push(loadFont(character));\n }\n await Promise.allSettled(promises);\n }\n else {\n if (shapeOptions !== undefined) {\n await loadFont(shapeOptions);\n }\n }\n }\n }\n draw(context, particle, radius, opacity) {\n var _a, _b, _c;\n const character = particle.shapeData;\n if (character === undefined) {\n return;\n }\n const textData = character.value;\n if (textData === undefined) {\n return;\n }\n const textParticle = particle;\n if (textParticle.text === undefined) {\n textParticle.text =\n textData instanceof Array ? itemFromArray(textData, particle.randomIndexData) : textData;\n }\n const text = textParticle.text;\n const style = (_a = character.style) !== null && _a !== void 0 ? _a : \"\";\n const weight = (_b = character.weight) !== null && _b !== void 0 ? _b : \"400\";\n const size = Math.round(radius) * 2;\n const font = (_c = character.font) !== null && _c !== void 0 ? _c : \"Verdana\";\n const fill = particle.fill;\n const offsetX = (text.length * radius) / 2;\n context.font = `${style} ${weight} ${size}px \"${font}\"`;\n const pos = {\n x: -offsetX,\n y: radius / 2,\n };\n context.globalAlpha = opacity;\n if (fill) {\n context.fillText(text, pos.x, pos.y);\n }\n else {\n context.strokeText(text, pos.x, pos.y);\n }\n context.globalAlpha = 1;\n }\n}\n","import { loadAngleUpdater } from \"./Updaters/Angle\";\nimport { loadBaseMover } from \"./Movers/Base\";\nimport { loadCircleShape } from \"./Shapes/Circle\";\nimport { loadColorUpdater } from \"./Updaters/Color\";\nimport { loadExternalAttractInteraction } from \"./Interactions/External/Attract\";\nimport { loadExternalBounceInteraction } from \"./Interactions/External/Bounce\";\nimport { loadExternalBubbleInteraction } from \"./Interactions/External/Bubble\";\nimport { loadExternalConnectInteraction } from \"./Interactions/External/Connect\";\nimport { loadExternalGrabInteraction } from \"./Interactions/External/Grab\";\nimport { loadExternalPauseInteraction } from \"./Interactions/External/Pause\";\nimport { loadExternalPushInteraction } from \"./Interactions/External/Push\";\nimport { loadExternalRemoveInteraction } from \"./Interactions/External/Remove\";\nimport { loadExternalRepulseInteraction } from \"./Interactions/External/Repulse\";\nimport { loadImageShape } from \"./Shapes/Image\";\nimport { loadLifeUpdater } from \"./Updaters/Life\";\nimport { loadLineShape } from \"./Shapes/Line\";\nimport { loadOpacityUpdater } from \"./Updaters/Opacity\";\nimport { loadOutModesUpdater } from \"./Updaters/OutModes\";\nimport { loadParallaxMover } from \"./Movers/Parallax\";\nimport { loadParticlesAttractInteraction } from \"./Interactions/Particles/Attract\";\nimport { loadParticlesCollisionsInteraction } from \"./Interactions/Particles/Collisions\";\nimport { loadParticlesLinksInteraction } from \"./Interactions/Particles/Links\";\nimport { loadPolygonShape } from \"./Shapes/Polygon\";\nimport { loadSizeUpdater } from \"./Updaters/Size\";\nimport { loadSquareShape } from \"./Shapes/Square\";\nimport { loadStarShape } from \"./Shapes/Star\";\nimport { loadStrokeColorUpdater } from \"./Updaters/StrokeColor\";\nimport { loadTextShape } from \"./Shapes/Text\";\nexport async function loadSlim(engine) {\n await loadBaseMover(engine);\n await loadParallaxMover(engine);\n await loadExternalAttractInteraction(engine);\n await loadExternalBounceInteraction(engine);\n await loadExternalBubbleInteraction(engine);\n await loadExternalConnectInteraction(engine);\n await loadExternalGrabInteraction(engine);\n await loadExternalPauseInteraction(engine);\n await loadExternalPushInteraction(engine);\n await loadExternalRemoveInteraction(engine);\n await loadExternalRepulseInteraction(engine);\n await loadParticlesAttractInteraction(engine);\n await loadParticlesCollisionsInteraction(engine);\n await loadParticlesLinksInteraction(engine);\n await loadCircleShape(engine);\n await loadImageShape(engine);\n await loadLineShape(engine);\n await loadPolygonShape(engine);\n await loadSquareShape(engine);\n await loadStarShape(engine);\n await loadTextShape(engine);\n await loadLifeUpdater(engine);\n await loadOpacityUpdater(engine);\n await loadSizeUpdater(engine);\n await loadAngleUpdater(engine);\n await loadColorUpdater(engine);\n await loadStrokeColorUpdater(engine);\n await loadOutModesUpdater(engine);\n}\n","import { BaseMover } from \"./BaseMover\";\nexport async function loadBaseMover(engine) {\n engine.addMover(\"base\", () => new BaseMover());\n}\n","import { ParallaxMover } from \"./ParallaxMover\";\nexport async function loadParallaxMover(engine) {\n engine.addMover(\"parallax\", () => new ParallaxMover());\n}\n","import { Attractor } from \"./Attractor\";\nexport async function loadExternalAttractInteraction(engine) {\n await engine.addInteractor(\"externalAttract\", (container) => new Attractor(container));\n}\n","import { Bouncer } from \"./Bouncer\";\nexport async function loadExternalBounceInteraction(engine) {\n await engine.addInteractor(\"externalBounce\", (container) => new Bouncer(container));\n}\n","import { Bubbler } from \"./Bubbler\";\nexport async function loadExternalBubbleInteraction(engine) {\n await engine.addInteractor(\"externalBubble\", (container) => new Bubbler(container));\n}\n","import { Connector } from \"./Connector\";\nexport async function loadExternalConnectInteraction(engine) {\n await engine.addInteractor(\"externalConnect\", (container) => new Connector(container));\n}\n","import { Grabber } from \"./Grabber\";\nexport async function loadExternalGrabInteraction(engine) {\n await engine.addInteractor(\"externalGrab\", (container) => new Grabber(container));\n}\n","import { Pauser } from \"./Pauser\";\nexport async function loadExternalPauseInteraction(engine) {\n await engine.addInteractor(\"externalPause\", (container) => new Pauser(container));\n}\n","import { Pusher } from \"./Pusher\";\nexport async function loadExternalPushInteraction(engine) {\n await engine.addInteractor(\"externalPush\", (container) => new Pusher(container));\n}\n","import { Remover } from \"./Remover\";\nexport async function loadExternalRemoveInteraction(engine) {\n await engine.addInteractor(\"externalRemove\", (container) => new Remover(container));\n}\n","import { Repulser } from \"./Repulser\";\nexport async function loadExternalRepulseInteraction(engine) {\n await engine.addInteractor(\"externalRepulse\", (container) => new Repulser(container));\n}\n","import { Attractor } from \"./Attractor\";\nexport async function loadParticlesAttractInteraction(engine) {\n await engine.addInteractor(\"particlesAttract\", (container) => new Attractor(container));\n}\n","import { Collider } from \"./Collider\";\nexport async function loadParticlesCollisionsInteraction(engine) {\n await engine.addInteractor(\"particlesCollisions\", (container) => new Collider(container));\n}\n","import { CircleDrawer } from \"./CircleDrawer\";\nexport async function loadCircleShape(engine) {\n await engine.addShape(\"circle\", new CircleDrawer());\n}\n","import { ImageDrawer } from \"./ImageDrawer\";\nexport async function loadImageShape(engine) {\n const imageDrawer = new ImageDrawer();\n await engine.addShape(\"image\", imageDrawer);\n await engine.addShape(\"images\", imageDrawer);\n}\n","import { LineDrawer } from \"./LineDrawer\";\nexport async function loadLineShape(engine) {\n await engine.addShape(\"line\", new LineDrawer());\n}\n","import { SquareDrawer } from \"./SquareDrawer\";\nexport async function loadSquareShape(engine) {\n const drawer = new SquareDrawer();\n await engine.addShape(\"edge\", drawer);\n await engine.addShape(\"square\", drawer);\n}\n","import { StarDrawer } from \"./StarDrawer\";\nexport async function loadStarShape(engine) {\n await engine.addShape(\"star\", new StarDrawer());\n}\n","import { TextDrawer, validTypes } from \"./TextDrawer\";\nexport async function loadTextShape(engine) {\n const drawer = new TextDrawer();\n for (const type of validTypes) {\n await engine.addShape(type, drawer);\n }\n}\n","import { LifeUpdater } from \"./LifeUpdater\";\nexport async function loadLifeUpdater(engine) {\n await engine.addParticleUpdater(\"life\", (container) => new LifeUpdater(container));\n}\n","import { OpacityUpdater } from \"./OpacityUpdater\";\nexport async function loadOpacityUpdater(engine) {\n await engine.addParticleUpdater(\"opacity\", (container) => new OpacityUpdater(container));\n}\n","import { SizeUpdater } from \"./SizeUpdater\";\nexport async function loadSizeUpdater(engine) {\n await engine.addParticleUpdater(\"size\", () => new SizeUpdater());\n}\n","import { AngleUpdater } from \"./AngleUpdater\";\nexport async function loadAngleUpdater(engine) {\n await engine.addParticleUpdater(\"angle\", (container) => new AngleUpdater(container));\n}\n","import { ColorUpdater } from \"./ColorUpdater\";\nexport async function loadColorUpdater(engine) {\n await engine.addParticleUpdater(\"color\", (container) => new ColorUpdater(container));\n}\n","import { StrokeColorUpdater } from \"./StrokeColorUpdater\";\nexport async function loadStrokeColorUpdater(engine) {\n await engine.addParticleUpdater(\"strokeColor\", (container) => new StrokeColorUpdater(container));\n}\n","import { OutOfCanvasUpdater } from \"./OutOfCanvasUpdater\";\nexport async function loadOutModesUpdater(engine) {\n await engine.addParticleUpdater(\"outModes\", (container) => new OutOfCanvasUpdater(container));\n}\n","import { getRangeValue } from \"../../Utils/NumberUtils\";\nfunction updateTilt(particle, delta) {\n var _a;\n if (!particle.tilt) {\n return;\n }\n const tilt = particle.options.tilt;\n const tiltAnimation = tilt.animation;\n const speed = ((_a = particle.tilt.velocity) !== null && _a !== void 0 ? _a : 0) * delta.factor;\n const max = 2 * Math.PI;\n if (!tiltAnimation.enable) {\n return;\n }\n switch (particle.tilt.status) {\n case 0:\n particle.tilt.value += speed;\n if (particle.tilt.value > max) {\n particle.tilt.value -= max;\n }\n break;\n case 1:\n default:\n particle.tilt.value -= speed;\n if (particle.tilt.value < 0) {\n particle.tilt.value += max;\n }\n break;\n }\n}\nexport class TiltUpdater {\n constructor(container) {\n this.container = container;\n }\n init(particle) {\n const tiltOptions = particle.options.tilt;\n particle.tilt = {\n enable: tiltOptions.enable,\n value: (getRangeValue(tiltOptions.value) * Math.PI) / 180,\n sinDirection: Math.random() >= 0.5 ? 1 : -1,\n cosDirection: Math.random() >= 0.5 ? 1 : -1,\n };\n let tiltDirection = tiltOptions.direction;\n if (tiltDirection === \"random\") {\n const index = Math.floor(Math.random() * 2);\n tiltDirection = index > 0 ? \"counter-clockwise\" : \"clockwise\";\n }\n switch (tiltDirection) {\n case \"counter-clockwise\":\n case \"counterClockwise\":\n particle.tilt.status = 1;\n break;\n case \"clockwise\":\n particle.tilt.status = 0;\n break;\n }\n const tiltAnimation = particle.options.tilt.animation;\n if (tiltAnimation.enable) {\n particle.tilt.velocity = (getRangeValue(tiltAnimation.speed) / 360) * this.container.retina.reduceFactor;\n if (!tiltAnimation.sync) {\n particle.tilt.velocity *= Math.random();\n }\n }\n }\n isEnabled(particle) {\n const tilt = particle.options.tilt;\n const tiltAnimation = tilt.animation;\n return !particle.destroyed && !particle.spawning && tiltAnimation.enable;\n }\n update(particle, delta) {\n if (!this.isEnabled(particle)) {\n return;\n }\n updateTilt(particle, delta);\n }\n}\n","import { colorToHsl, getStyleFromHsl } from \"../../Utils/ColorUtils\";\nimport { getRangeValue } from \"../../Utils/NumberUtils\";\nexport class TwinkleUpdater {\n getColorStyles(particle, context, radius, opacity) {\n const pOptions = particle.options, twinkle = pOptions.twinkle.particles, twinkling = twinkle.enable && Math.random() < twinkle.frequency, zIndexOptions = particle.options.zIndex, zOpacityFactor = (1 - particle.zIndexFactor) ** zIndexOptions.opacityRate, twinklingOpacity = twinkling ? getRangeValue(twinkle.opacity) * zOpacityFactor : opacity, twinkleRgb = colorToHsl(twinkle.color), twinkleStyle = twinkleRgb ? getStyleFromHsl(twinkleRgb, twinklingOpacity) : undefined, res = {}, needsTwinkle = twinkling && twinkleStyle;\n res.fill = needsTwinkle ? twinkleStyle : undefined;\n res.stroke = needsTwinkle ? twinkleStyle : undefined;\n return res;\n }\n init() {\n }\n isEnabled(particle) {\n return particle.options.twinkle.particles.enable;\n }\n update() {\n }\n}\n","import { getRangeValue } from \"../../Utils/NumberUtils\";\nfunction updateWobble(particle, delta) {\n var _a;\n const wobble = particle.options.wobble;\n if (!wobble.enable || !particle.wobble) {\n return;\n }\n const speed = particle.wobble.speed * delta.factor;\n const distance = (((_a = particle.retina.wobbleDistance) !== null && _a !== void 0 ? _a : 0) * delta.factor) / (1000 / 60);\n const max = 2 * Math.PI;\n particle.wobble.angle += speed;\n if (particle.wobble.angle > max) {\n particle.wobble.angle -= max;\n }\n particle.position.x += distance * Math.cos(particle.wobble.angle);\n particle.position.y += distance * Math.abs(Math.sin(particle.wobble.angle));\n}\nexport class WobbleUpdater {\n constructor(container) {\n this.container = container;\n }\n init(particle) {\n const wobbleOpt = particle.options.wobble;\n if (wobbleOpt.enable) {\n particle.wobble = {\n angle: Math.random() * Math.PI * 2,\n speed: getRangeValue(wobbleOpt.speed) / 360,\n };\n }\n else {\n particle.wobble = {\n angle: 0,\n speed: 0,\n };\n }\n particle.retina.wobbleDistance = getRangeValue(wobbleOpt.distance) * this.container.retina.pixelRatio;\n }\n isEnabled(particle) {\n return !particle.destroyed && !particle.spawning && particle.options.wobble.enable;\n }\n update(particle, delta) {\n if (!this.isEnabled(particle)) {\n return;\n }\n updateWobble(particle, delta);\n }\n}\n","import { Engine } from \"./engine\";\nimport { initPjs } from \"./pjs\";\nimport { loadFull } from \"./full\";\nconst tsParticles = new Engine();\ntsParticles.init();\nconst { particlesJS, pJSDom, } = initPjs(tsParticles);\nloadFull(tsParticles);\nexport * from \"./Core/Interfaces/Colors\";\nexport * from \"./Core/Interfaces/Gradients\";\nexport * from \"./Core/Interfaces/IBounds\";\nexport * from \"./Core/Interfaces/IBubbleParticleData\";\nexport * from \"./Core/Interfaces/ICircleBouncer\";\nexport * from \"./Core/Interfaces/IContainerInteractivity\";\nexport * from \"./Core/Interfaces/IContainerPlugin\";\nexport * from \"./Core/Interfaces/ICoordinates\";\nexport * from \"./Core/Interfaces/IDelta\";\nexport * from \"./Core/Interfaces/IDimension\";\nexport * from \"./Core/Interfaces/IDistance\";\nexport * from \"./Core/Interfaces/IExternalInteractor\";\nexport * from \"./Core/Interfaces/IInteractor\";\nexport * from \"./Core/Interfaces/IMouseData\";\nexport * from \"./Core/Interfaces/IMovePathGenerator\";\nexport * from \"./Core/Interfaces/IParticle\";\nexport * from \"./Core/Interfaces/IParticleColorStyle\";\nexport * from \"./Core/Interfaces/IParticleGravity\";\nexport * from \"./Core/Interfaces/IParticleHslAnimation\";\nexport * from \"./Core/Interfaces/IParticlesInteractor\";\nexport * from \"./Core/Interfaces/IParticleLife\";\nexport * from \"./Core/Interfaces/IParticleLoops\";\nexport * from \"./Core/Interfaces/IParticleRetinaProps\";\nexport * from \"./Core/Interfaces/IParticleRoll\";\nexport * from \"./Core/Interfaces/IParticleSpin\";\nexport * from \"./Core/Interfaces/IParticleUpdater\";\nexport * from \"./Core/Interfaces/IParticleValueAnimation\";\nexport * from \"./Core/Interfaces/IParticleWobble\";\nexport * from \"./Core/Interfaces/IParticlesMover\";\nexport * from \"./Core/Interfaces/IPlugin\";\nexport * from \"./Core/Interfaces/IRangeValue\";\nexport * from \"./Core/Interfaces/IRectSideResult\";\nexport * from \"./Core/Interfaces/IShapeDrawer\";\nexport * from \"./Core/Interfaces/IShapeValues\";\nexport * from \"./Core/Utils/Circle\";\nexport * from \"./Core/Utils/CircleWarp\";\nexport * from \"./Core/Utils/Constants\";\nexport * from \"./Core/Utils/EventListeners\";\nexport * from \"./Core/Utils/ExternalInteractorBase\";\nexport * from \"./Core/Utils/FrameManager\";\nexport * from \"./Core/Utils/InteractionManager\";\nexport * from \"./Core/Utils/ParticlesInteractorBase\";\nexport * from \"./Core/Utils/Plugins\";\nexport * from \"./Core/Utils/Point\";\nexport * from \"./Core/Utils/QuadTree\";\nexport * from \"./Core/Utils/Range\";\nexport * from \"./Core/Utils/Rectangle\";\nexport * from \"./Core/Utils/Vector\";\nexport * from \"./Core/Utils/Vector3d\";\nexport * from \"./Core/Canvas\";\nexport * from \"./Core/Container\";\nexport * from \"./Core/Loader\";\nexport * from \"./Core/Particle\";\nexport * from \"./Core/Particles\";\nexport * from \"./Core/Retina\";\nexport * from \"./Enums/Directions/MoveDirection\";\nexport * from \"./Enums/Directions/RotateDirection\";\nexport * from \"./Enums/Directions/OutModeDirection\";\nexport * from \"./Enums/Directions/TiltDirection\";\nexport * from \"./Enums/Modes/ClickMode\";\nexport * from \"./Enums/Modes/DestroyMode\";\nexport * from \"./Enums/Modes/DivMode\";\nexport * from \"./Enums/Modes/HoverMode\";\nexport * from \"./Enums/Modes/CollisionMode\";\nexport * from \"./Enums/Modes/OutMode\";\nexport * from \"./Enums/Modes/RollMode\";\nexport * from \"./Enums/Modes/SizeMode\";\nexport * from \"./Enums/Modes/ThemeMode\";\nexport * from \"./Enums/Modes/ResponsiveMode\";\nexport * from \"./Enums/Types/AlterType\";\nexport * from \"./Enums/Types/DestroyType\";\nexport * from \"./Enums/Types/GradientType\";\nexport * from \"./Enums/Types/InteractorType\";\nexport * from \"./Enums/Types/ShapeType\";\nexport * from \"./Enums/Types/StartValueType\";\nexport * from \"./Enums/Types/DivType\";\nexport * from \"./Enums/Types/EasingType\";\nexport * from \"./Enums/AnimationStatus\";\nexport * from \"./Enums/InteractivityDetect\";\nexport { Engine, Engine as Main };\nexport * from \"./Options/Classes/Options\";\nexport * from \"./Options/Classes/OptionsColor\";\nexport * from \"./Options/Interfaces/IOptionLoader\";\nexport * from \"./Types/RangeValue\";\nexport * from \"./Types/RecursivePartial\";\nexport * from \"./Types/ShapeData\";\nexport * from \"./Types/ShapeDrawerFunctions\";\nexport * from \"./Types/SingleOrMultiple\";\nexport * from \"./Types/PathOptions\";\nexport * from \"./Utils/CanvasUtils\";\nexport * from \"./Utils/ColorUtils\";\nexport * from \"./Utils/NumberUtils\";\nexport * from \"./Utils/Utils\";\nexport { loadAbsorbersPlugin } from \"./Plugins/Absorbers\";\nexport * from \"./Plugins/Absorbers/Enums/AbsorberClickMode\";\nexport { loadEmittersPlugin } from \"./Plugins/Emitters\";\nexport * from \"./Plugins/Emitters/Enums/EmitterClickMode\";\nexport * from \"./Plugins/Emitters/Enums/EmitterShapeType\";\nexport { loadPolygonMaskPlugin } from \"./Plugins/PolygonMask\";\nexport * from \"./Plugins/PolygonMask/Enums/PolygonMaskInlineArrangement\";\nexport * from \"./Plugins/PolygonMask/Enums/PolygonMaskMoveType\";\nexport * from \"./Plugins/PolygonMask/Enums/PolygonMaskType\";\nexport { particlesJS, pJSDom, tsParticles };\n","const initPjs = (engine) => {\n const particlesJS = (tagId, options) => {\n return engine.load(tagId, options);\n };\n particlesJS.load = (tagId, pathConfigJson, callback) => {\n engine\n .loadJSON(tagId, pathConfigJson)\n .then((container) => {\n if (container) {\n callback(container);\n }\n })\n .catch(() => {\n callback(undefined);\n });\n };\n particlesJS.setOnClickHandler = (callback) => {\n engine.setOnClickHandler(callback);\n };\n const pJSDom = engine.dom();\n return { particlesJS, pJSDom };\n};\nexport { initPjs };\n","import { loadAbsorbersPlugin } from \"./Plugins/Absorbers\";\nimport { loadEmittersPlugin } from \"./Plugins/Emitters\";\nimport { loadExternalTrailInteraction } from \"./Interactions/External/Trail\";\nimport { loadPolygonMaskPlugin } from \"./Plugins/PolygonMask\";\nimport { loadRollUpdater } from \"./Updaters/Roll\";\nimport { loadSlim } from \"./slim\";\nimport { loadTiltUpdater } from \"./Updaters/Tilt\";\nimport { loadTwinkleUpdater } from \"./Updaters/Twinkle\";\nimport { loadWobbleUpdater } from \"./Updaters/Wobble\";\nexport async function loadFull(engine) {\n await loadSlim(engine);\n await loadRollUpdater(engine);\n await loadTiltUpdater(engine);\n await loadTwinkleUpdater(engine);\n await loadWobbleUpdater(engine);\n await loadExternalTrailInteraction(engine);\n await loadAbsorbersPlugin(engine);\n await loadEmittersPlugin(engine);\n await loadPolygonMaskPlugin(engine);\n}\n","import { RollUpdater } from \"./RollUpdater\";\nexport async function loadRollUpdater(engine) {\n await engine.addParticleUpdater(\"roll\", () => new RollUpdater());\n}\n","import { TiltUpdater } from \"./TiltUpdater\";\nexport async function loadTiltUpdater(engine) {\n await engine.addParticleUpdater(\"tilt\", (container) => new TiltUpdater(container));\n}\n","import { TwinkleUpdater } from \"./TwinkleUpdater\";\nexport async function loadTwinkleUpdater(engine) {\n await engine.addParticleUpdater(\"twinkle\", () => new TwinkleUpdater());\n}\n","import { WobbleUpdater } from \"./WobbleUpdater\";\nexport async function loadWobbleUpdater(engine) {\n await engine.addParticleUpdater(\"wobble\", (container) => new WobbleUpdater(container));\n}\n","import { TrailMaker } from \"./TrailMaker\";\nexport async function loadExternalTrailInteraction(engine) {\n await engine.addInteractor(\"externalTrail\", (container) => new TrailMaker(container));\n}\n"],"sourceRoot":""}