@tsparticles/engine 3.9.0 → 4.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/638.min.js +2 -0
- package/638.min.js.LICENSE.txt +1 -0
- package/browser/Core/Canvas.js +126 -181
- package/browser/Core/Container.js +22 -18
- package/browser/Core/Engine.js +64 -54
- package/browser/Core/Particle.js +43 -48
- package/browser/Core/Particles.js +33 -24
- package/browser/Core/Retina.js +2 -3
- package/browser/Core/Utils/Constants.js +2 -2
- package/browser/Core/Utils/EventListeners.js +74 -64
- package/browser/Core/Utils/QuadTree.js +1 -1
- package/browser/Core/Utils/Ranges.js +2 -2
- package/browser/Core/Utils/Vectors.js +15 -21
- package/browser/Options/Classes/AnimatableColor.js +3 -3
- package/browser/Options/Classes/AnimationOptions.js +1 -1
- package/browser/Options/Classes/ColorAnimation.js +1 -1
- package/browser/Options/Classes/Options.js +13 -10
- package/browser/Options/Classes/Particles/Move/Move.js +1 -4
- package/browser/Options/Classes/Particles/Move/MoveAngle.js +1 -1
- package/browser/Options/Classes/Particles/Move/MoveAttract.js +1 -1
- package/browser/Options/Classes/Particles/Move/MoveGravity.js +1 -1
- package/browser/Options/Classes/Particles/Move/Spin.js +1 -1
- package/browser/Options/Classes/Particles/ParticlesOptions.js +0 -6
- package/browser/Options/Classes/Particles/Stroke.js +1 -1
- package/browser/Options/Classes/ValueWithRandom.js +1 -1
- package/browser/Utils/CanvasUtils.js +65 -21
- package/browser/Utils/ColorUtils.js +61 -45
- package/browser/Utils/EventDispatcher.js +3 -1
- package/browser/Utils/LogUtils.js +22 -0
- package/browser/Utils/{NumberUtils.js → MathUtils.js} +14 -7
- package/browser/Utils/Utils.js +23 -125
- package/browser/bundle.js +3 -3
- package/browser/export-types.js +1 -99
- package/browser/exports.js +2 -9
- package/browser/index.js +3 -7
- package/browser/initEngine.js +4 -0
- package/cjs/Core/Canvas.js +136 -195
- package/cjs/Core/Container.js +57 -57
- package/cjs/Core/Engine.js +77 -71
- package/cjs/Core/Interfaces/Colors.js +1 -2
- package/cjs/Core/Interfaces/IBounds.js +1 -2
- package/cjs/Core/Interfaces/IBubbleParticleData.js +1 -2
- package/cjs/Core/Interfaces/ICircleBouncer.js +1 -2
- package/cjs/Core/Interfaces/IColorManager.js +1 -2
- package/cjs/Core/Interfaces/IContainerInteractivity.js +1 -2
- package/cjs/Core/Interfaces/IContainerPlugin.js +1 -2
- package/cjs/Core/Interfaces/ICoordinates.js +1 -2
- package/cjs/Core/Interfaces/IDelta.js +1 -2
- package/cjs/Core/Interfaces/IDimension.js +1 -2
- package/cjs/Core/Interfaces/IDistance.js +1 -2
- package/cjs/Core/Interfaces/IDrawParticleParams.js +1 -2
- package/cjs/Core/Interfaces/IEffectDrawer.js +1 -2
- package/cjs/Core/Interfaces/IExternalInteractor.js +1 -2
- package/cjs/Core/Interfaces/IInteractor.js +1 -2
- package/cjs/Core/Interfaces/ILoadParams.js +1 -2
- package/cjs/Core/Interfaces/IMouseData.js +1 -2
- package/cjs/Core/Interfaces/IMovePathGenerator.js +1 -2
- package/cjs/Core/Interfaces/IParticleColorStyle.js +1 -2
- package/cjs/Core/Interfaces/IParticleHslAnimation.js +1 -2
- package/cjs/Core/Interfaces/IParticleLife.js +1 -2
- package/cjs/Core/Interfaces/IParticleMover.js +1 -2
- package/cjs/Core/Interfaces/IParticleRetinaProps.js +1 -2
- package/cjs/Core/Interfaces/IParticleRoll.js +1 -2
- package/cjs/Core/Interfaces/IParticleTransformValues.js +1 -2
- package/cjs/Core/Interfaces/IParticleUpdater.js +1 -2
- package/cjs/Core/Interfaces/IParticleValueAnimation.js +1 -2
- package/cjs/Core/Interfaces/IParticlesInteractor.js +1 -2
- package/cjs/Core/Interfaces/IPlugin.js +1 -2
- package/cjs/Core/Interfaces/IPositionFromSizeParams.js +1 -2
- package/cjs/Core/Interfaces/IRangeValue.js +1 -2
- package/cjs/Core/Interfaces/IShapeDrawData.js +1 -2
- package/cjs/Core/Interfaces/IShapeDrawer.js +1 -2
- package/cjs/Core/Interfaces/IShapeValues.js +1 -2
- package/cjs/Core/Interfaces/ISlowParticleData.js +1 -2
- package/cjs/Core/Particle.js +99 -108
- package/cjs/Core/Particles.js +63 -58
- package/cjs/Core/Retina.js +13 -18
- package/cjs/Core/Utils/Constants.js +3 -7
- package/cjs/Core/Utils/EventListeners.js +94 -88
- package/cjs/Core/Utils/ExternalInteractorBase.js +3 -7
- package/cjs/Core/Utils/InteractionManager.js +4 -8
- package/cjs/Core/Utils/ParticlesInteractorBase.js +3 -7
- package/cjs/Core/Utils/Point.js +1 -5
- package/cjs/Core/Utils/QuadTree.js +10 -14
- package/cjs/Core/Utils/Ranges.js +14 -20
- package/cjs/Core/Utils/Vectors.js +24 -35
- package/cjs/Enums/AnimationStatus.js +2 -5
- package/cjs/Enums/Directions/MoveDirection.js +2 -5
- package/cjs/Enums/Directions/OutModeDirection.js +2 -5
- package/cjs/Enums/Directions/RotateDirection.js +2 -5
- package/cjs/Enums/InteractivityDetect.js +2 -5
- package/cjs/Enums/Modes/AnimationMode.js +2 -5
- package/cjs/Enums/Modes/LimitMode.js +2 -5
- package/cjs/Enums/Modes/OutMode.js +2 -5
- package/cjs/Enums/Modes/PixelMode.js +2 -5
- package/cjs/Enums/Modes/ResponsiveMode.js +2 -5
- package/cjs/Enums/Modes/ThemeMode.js +2 -5
- package/cjs/Enums/Types/AlterType.js +2 -5
- package/cjs/Enums/Types/DestroyType.js +2 -5
- package/cjs/Enums/Types/DivType.js +2 -5
- package/cjs/Enums/Types/EasingType.js +2 -5
- package/cjs/Enums/Types/EventType.js +2 -5
- package/cjs/Enums/Types/GradientType.js +2 -5
- package/cjs/Enums/Types/InteractorType.js +2 -5
- package/cjs/Enums/Types/ParticleOutType.js +2 -5
- package/cjs/Enums/Types/StartValueType.js +2 -5
- package/cjs/Options/Classes/AnimatableColor.js +10 -14
- package/cjs/Options/Classes/AnimationOptions.js +14 -19
- package/cjs/Options/Classes/Background/Background.js +6 -10
- package/cjs/Options/Classes/ColorAnimation.js +6 -10
- package/cjs/Options/Classes/FullScreen/FullScreen.js +3 -7
- package/cjs/Options/Classes/HslAnimation.js +7 -11
- package/cjs/Options/Classes/Interactivity/Events/ClickEvent.js +3 -7
- package/cjs/Options/Classes/Interactivity/Events/DivEvent.js +5 -9
- package/cjs/Options/Classes/Interactivity/Events/Events.js +14 -18
- package/cjs/Options/Classes/Interactivity/Events/HoverEvent.js +5 -9
- package/cjs/Options/Classes/Interactivity/Events/Parallax.js +3 -7
- package/cjs/Options/Classes/Interactivity/Events/ResizeEvent.js +3 -7
- package/cjs/Options/Classes/Interactivity/Interactivity.js +9 -13
- package/cjs/Options/Classes/Interactivity/Modes/Modes.js +3 -7
- package/cjs/Options/Classes/ManualParticle.js +10 -14
- package/cjs/Options/Classes/Options.js +41 -42
- package/cjs/Options/Classes/OptionsColor.js +5 -9
- package/cjs/Options/Classes/Particles/Bounce/ParticlesBounce.js +6 -10
- package/cjs/Options/Classes/Particles/Bounce/ParticlesBounceFactor.js +2 -6
- package/cjs/Options/Classes/Particles/Effect/Effect.js +5 -9
- package/cjs/Options/Classes/Particles/Move/Move.js +26 -33
- package/cjs/Options/Classes/Particles/Move/MoveAngle.js +6 -10
- package/cjs/Options/Classes/Particles/Move/MoveAttract.js +5 -9
- package/cjs/Options/Classes/Particles/Move/MoveCenter.js +5 -9
- package/cjs/Options/Classes/Particles/Move/MoveGravity.js +6 -10
- package/cjs/Options/Classes/Particles/Move/OutModes.js +5 -9
- package/cjs/Options/Classes/Particles/Move/Path/MovePath.js +7 -11
- package/cjs/Options/Classes/Particles/Move/Spin.js +7 -11
- package/cjs/Options/Classes/Particles/Number/ParticlesDensity.js +3 -7
- package/cjs/Options/Classes/Particles/Number/ParticlesNumber.js +7 -11
- package/cjs/Options/Classes/Particles/Number/ParticlesNumberLimit.js +5 -9
- package/cjs/Options/Classes/Particles/Opacity/Opacity.js +6 -10
- package/cjs/Options/Classes/Particles/Opacity/OpacityAnimation.js +6 -10
- package/cjs/Options/Classes/Particles/ParticlesOptions.js +29 -39
- package/cjs/Options/Classes/Particles/Shape/Shape.js +5 -9
- package/cjs/Options/Classes/Particles/Size/Size.js +6 -10
- package/cjs/Options/Classes/Particles/Size/SizeAnimation.js +6 -10
- package/cjs/Options/Classes/Particles/Stroke.js +8 -12
- package/cjs/Options/Classes/Particles/ZIndex/ZIndex.js +4 -8
- package/cjs/Options/Classes/Responsive.js +13 -17
- package/cjs/Options/Classes/Theme/Theme.js +7 -11
- package/cjs/Options/Classes/Theme/ThemeDefault.js +5 -9
- package/cjs/Options/Classes/ValueWithRandom.js +12 -18
- package/cjs/Options/Interfaces/Background/IBackground.js +1 -2
- package/cjs/Options/Interfaces/FullScreen/IFullScreen.js +1 -2
- package/cjs/Options/Interfaces/IAnimatable.js +1 -2
- package/cjs/Options/Interfaces/IAnimatableColor.js +1 -2
- package/cjs/Options/Interfaces/IAnimation.js +1 -2
- package/cjs/Options/Interfaces/IColorAnimation.js +1 -2
- package/cjs/Options/Interfaces/IHslAnimation.js +1 -2
- package/cjs/Options/Interfaces/IManualParticle.js +1 -2
- package/cjs/Options/Interfaces/IOptionLoader.js +1 -2
- package/cjs/Options/Interfaces/IOptions.js +1 -2
- package/cjs/Options/Interfaces/IOptionsColor.js +1 -2
- package/cjs/Options/Interfaces/IResponsive.js +1 -2
- package/cjs/Options/Interfaces/IValueWithRandom.js +1 -2
- package/cjs/Options/Interfaces/Interactivity/Events/IClickEvent.js +1 -2
- package/cjs/Options/Interfaces/Interactivity/Events/IDivEvent.js +1 -2
- package/cjs/Options/Interfaces/Interactivity/Events/IEvents.js +1 -2
- package/cjs/Options/Interfaces/Interactivity/Events/IHoverEvent.js +1 -2
- package/cjs/Options/Interfaces/Interactivity/Events/IParallax.js +1 -2
- package/cjs/Options/Interfaces/Interactivity/Events/IResizeEvent.js +1 -2
- package/cjs/Options/Interfaces/Interactivity/IInteractivity.js +1 -2
- package/cjs/Options/Interfaces/Interactivity/Modes/IModeDiv.js +1 -2
- package/cjs/Options/Interfaces/Interactivity/Modes/IModes.js +1 -2
- package/cjs/Options/Interfaces/Particles/Bounce/IParticlesBounce.js +1 -2
- package/cjs/Options/Interfaces/Particles/Effect/IEffect.js +1 -2
- package/cjs/Options/Interfaces/Particles/IParticlesOptions.js +1 -2
- package/cjs/Options/Interfaces/Particles/IStroke.js +1 -2
- package/cjs/Options/Interfaces/Particles/Move/IMove.js +1 -2
- package/cjs/Options/Interfaces/Particles/Move/IMoveAngle.js +1 -2
- package/cjs/Options/Interfaces/Particles/Move/IMoveAttract.js +1 -2
- package/cjs/Options/Interfaces/Particles/Move/IMoveCenter.js +1 -2
- package/cjs/Options/Interfaces/Particles/Move/IMoveGravity.js +1 -2
- package/cjs/Options/Interfaces/Particles/Move/IOutModes.js +1 -2
- package/cjs/Options/Interfaces/Particles/Move/ISpin.js +1 -2
- package/cjs/Options/Interfaces/Particles/Move/Path/IMovePath.js +1 -2
- package/cjs/Options/Interfaces/Particles/Number/IParticlesDensity.js +1 -2
- package/cjs/Options/Interfaces/Particles/Number/IParticlesNumber.js +1 -2
- package/cjs/Options/Interfaces/Particles/Number/IParticlesNumberLimit.js +1 -2
- package/cjs/Options/Interfaces/Particles/Opacity/IOpacity.js +1 -2
- package/cjs/Options/Interfaces/Particles/Opacity/IOpacityAnimation.js +1 -2
- package/cjs/Options/Interfaces/Particles/Shape/IShape.js +1 -2
- package/cjs/Options/Interfaces/Particles/Size/ISize.js +1 -2
- package/cjs/Options/Interfaces/Particles/Size/ISizeAnimation.js +1 -2
- package/cjs/Options/Interfaces/Particles/ZIndex/IZIndex.js +1 -2
- package/cjs/Options/Interfaces/Theme/ITheme.js +1 -2
- package/cjs/Options/Interfaces/Theme/IThemeDefault.js +1 -2
- package/cjs/Types/CustomEventArgs.js +1 -2
- package/cjs/Types/CustomEventListener.js +1 -2
- package/cjs/Types/EasingFunction.js +1 -2
- package/cjs/Types/ExportResult.js +1 -2
- package/cjs/Types/ISourceOptions.js +1 -2
- package/cjs/Types/ParticlesGroups.js +1 -2
- package/cjs/Types/PathOptions.js +1 -2
- package/cjs/Types/RangeValue.js +1 -2
- package/cjs/Types/RecursivePartial.js +1 -2
- package/cjs/Types/ShapeData.js +1 -2
- package/cjs/Types/SingleOrMultiple.js +1 -2
- package/cjs/Utils/CanvasUtils.js +86 -55
- package/cjs/Utils/ColorUtils.js +136 -141
- package/cjs/Utils/EventDispatcher.js +8 -10
- package/cjs/Utils/LogUtils.js +22 -0
- package/{esm/Utils/NumberUtils.js → cjs/Utils/MathUtils.js} +14 -7
- package/cjs/Utils/OptionsUtils.js +4 -8
- package/cjs/Utils/TypeUtils.js +7 -16
- package/cjs/Utils/Utils.js +104 -239
- package/cjs/bundle.js +5 -22
- package/cjs/export-types.js +1 -115
- package/cjs/exports.js +77 -100
- package/cjs/index.js +5 -26
- package/cjs/initEngine.js +4 -0
- package/dist_browser_Core_Container_js.js +102 -0
- package/esm/Core/Canvas.js +126 -181
- package/esm/Core/Container.js +22 -18
- package/esm/Core/Engine.js +64 -54
- package/esm/Core/Particle.js +43 -48
- package/esm/Core/Particles.js +33 -24
- package/esm/Core/Retina.js +2 -3
- package/esm/Core/Utils/Constants.js +2 -2
- package/esm/Core/Utils/EventListeners.js +74 -64
- package/esm/Core/Utils/QuadTree.js +1 -1
- package/esm/Core/Utils/Ranges.js +2 -2
- package/esm/Core/Utils/Vectors.js +15 -21
- package/esm/Enums/RangeType.js +5 -0
- package/esm/Options/Classes/AnimatableColor.js +3 -3
- package/esm/Options/Classes/AnimationOptions.js +1 -1
- package/esm/Options/Classes/ColorAnimation.js +1 -1
- package/esm/Options/Classes/Options.js +13 -10
- package/esm/Options/Classes/Particles/Move/Move.js +1 -4
- package/esm/Options/Classes/Particles/Move/MoveAngle.js +1 -1
- package/esm/Options/Classes/Particles/Move/MoveAttract.js +1 -1
- package/esm/Options/Classes/Particles/Move/MoveGravity.js +1 -1
- package/esm/Options/Classes/Particles/Move/Spin.js +1 -1
- package/esm/Options/Classes/Particles/ParticlesOptions.js +0 -6
- package/esm/Options/Classes/Particles/Stroke.js +1 -1
- package/esm/Options/Classes/ValueWithRandom.js +1 -1
- package/esm/Utils/CanvasUtils.js +65 -21
- package/esm/Utils/ColorUtils.js +61 -45
- package/esm/Utils/EventDispatcher.js +3 -1
- package/esm/Utils/LogUtils.js +22 -0
- package/esm/Utils/MathUtils.js +158 -0
- package/esm/Utils/Utils.js +23 -125
- package/esm/bundle.js +3 -3
- package/esm/export-types.js +1 -99
- package/esm/exports.js +2 -9
- package/esm/index.js +3 -7
- package/esm/initEngine.js +4 -0
- package/package.json +3 -2
- package/report.html +5 -4
- package/scripts/install.js +98 -17
- package/tsparticles.engine.js +492 -451
- package/tsparticles.engine.min.js +1 -1
- package/tsparticles.engine.min.js.LICENSE.txt +1 -1
- package/types/Core/Canvas.d.ts +6 -9
- package/types/Core/Container.d.ts +1 -0
- package/types/Core/Engine.d.ts +20 -16
- package/types/Core/Interfaces/Colors.d.ts +46 -2
- package/types/Core/Interfaces/IColorManager.d.ts +1 -1
- package/types/Core/Interfaces/IContainerPlugin.d.ts +4 -0
- package/types/Core/Interfaces/IDrawParticleParams.d.ts +0 -4
- package/types/Core/Interfaces/IEffectDrawer.d.ts +2 -1
- package/types/Core/Interfaces/IShapeDrawData.d.ts +2 -0
- package/types/Core/Interfaces/IShapeDrawer.d.ts +1 -0
- package/types/Core/Particle.d.ts +4 -5
- package/types/Core/Particles.d.ts +1 -1
- package/types/Core/Utils/Constants.d.ts +2 -2
- package/types/Core/Utils/EventListeners.d.ts +1 -0
- package/types/Core/Utils/Vectors.d.ts +3 -3
- package/types/Options/Classes/Options.d.ts +1 -2
- package/types/Options/Classes/OptionsColor.d.ts +2 -2
- package/types/Options/Classes/Particles/Move/Move.d.ts +0 -2
- package/types/Options/Classes/Particles/ParticlesOptions.d.ts +0 -4
- package/types/Options/Interfaces/IOptions.d.ts +1 -2
- package/types/Options/Interfaces/Particles/IParticlesOptions.d.ts +0 -4
- package/types/Options/Interfaces/Particles/Move/IMove.d.ts +0 -2
- package/types/Utils/CanvasUtils.d.ts +4 -1
- package/types/Utils/ColorUtils.d.ts +2 -2
- package/types/Utils/LogUtils.d.ts +11 -0
- package/types/Utils/{NumberUtils.d.ts → MathUtils.d.ts} +2 -1
- package/types/Utils/TypeUtils.d.ts +2 -2
- package/types/Utils/Utils.d.ts +4 -16
- package/types/export-types.d.ts +91 -101
- package/types/exports.d.ts +2 -9
- package/types/index.d.ts +1 -1
- package/types/initEngine.d.ts +2 -0
- package/umd/Core/Canvas.js +123 -178
- package/umd/Core/Container.js +25 -21
- package/umd/Core/Engine.js +97 -53
- package/umd/Core/Particle.js +54 -59
- package/umd/Core/Particles.js +33 -24
- package/umd/Core/Retina.js +9 -10
- package/umd/Core/Utils/Constants.js +3 -3
- package/umd/Core/Utils/EventListeners.js +72 -62
- package/umd/Core/Utils/QuadTree.js +3 -3
- package/umd/Core/Utils/Ranges.js +4 -4
- package/umd/Core/Utils/Vectors.js +15 -21
- package/umd/Options/Classes/AnimatableColor.js +3 -3
- package/umd/Options/Classes/AnimationOptions.js +6 -6
- package/umd/Options/Classes/ColorAnimation.js +3 -3
- package/umd/Options/Classes/Options.js +16 -13
- package/umd/Options/Classes/Particles/Move/Move.js +5 -8
- package/umd/Options/Classes/Particles/Move/MoveAngle.js +4 -4
- package/umd/Options/Classes/Particles/Move/MoveAttract.js +3 -3
- package/umd/Options/Classes/Particles/Move/MoveGravity.js +4 -4
- package/umd/Options/Classes/Particles/Move/Spin.js +3 -3
- package/umd/Options/Classes/Particles/ParticlesOptions.js +1 -7
- package/umd/Options/Classes/Particles/Stroke.js +4 -4
- package/umd/Options/Classes/ValueWithRandom.js +3 -3
- package/umd/Utils/CanvasUtils.js +69 -22
- package/umd/Utils/ColorUtils.js +72 -56
- package/umd/Utils/EventDispatcher.js +3 -1
- package/umd/Utils/LogUtils.js +36 -0
- package/umd/Utils/{NumberUtils.js → MathUtils.js} +16 -8
- package/umd/Utils/Utils.js +36 -141
- package/umd/bundle.js +4 -4
- package/umd/export-types.js +1 -114
- package/umd/exports.js +3 -10
- package/umd/index.js +4 -8
- package/umd/{init.js → initEngine.js} +3 -5
- package/browser/Core/Interfaces/IRectSideResult.js +0 -1
- package/browser/Core/Interfaces/ITrailFillData.js +0 -1
- package/browser/Enums/Modes/CollisionMode.js +0 -6
- package/browser/Options/Classes/BackgroundMask/BackgroundMask.js +0 -24
- package/browser/Options/Classes/BackgroundMask/BackgroundMaskCover.js +0 -21
- package/browser/Options/Classes/Particles/Collisions/Collisions.js +0 -33
- package/browser/Options/Classes/Particles/Collisions/CollisionsAbsorb.js +0 -14
- package/browser/Options/Classes/Particles/Collisions/CollisionsOverlap.js +0 -18
- package/browser/Options/Classes/Particles/Move/MoveTrail.js +0 -23
- package/browser/Options/Classes/Particles/Move/MoveTrailFill.js +0 -15
- package/browser/Options/Classes/Particles/Shadow.js +0 -35
- package/browser/Options/Interfaces/BackgroundMask/IBackgroundMask.js +0 -1
- package/browser/Options/Interfaces/BackgroundMask/IBackgroundMaskCover.js +0 -1
- package/browser/Options/Interfaces/Particles/Collisions/ICollisions.js +0 -1
- package/browser/Options/Interfaces/Particles/Collisions/ICollisionsAbsorb.js +0 -1
- package/browser/Options/Interfaces/Particles/Collisions/ICollisionsOverlap.js +0 -1
- package/browser/Options/Interfaces/Particles/IShadow.js +0 -1
- package/browser/Options/Interfaces/Particles/Move/IMoveTrail.js +0 -1
- package/browser/Options/Interfaces/Particles/Move/IMoveTrailFill.js +0 -1
- package/browser/init.js +0 -6
- package/cjs/Core/Interfaces/IRectSideResult.js +0 -2
- package/cjs/Core/Interfaces/ITrailFillData.js +0 -2
- package/cjs/Enums/Modes/CollisionMode.js +0 -9
- package/cjs/Options/Classes/BackgroundMask/BackgroundMask.js +0 -28
- package/cjs/Options/Classes/BackgroundMask/BackgroundMaskCover.js +0 -25
- package/cjs/Options/Classes/Particles/Collisions/Collisions.js +0 -37
- package/cjs/Options/Classes/Particles/Collisions/CollisionsAbsorb.js +0 -18
- package/cjs/Options/Classes/Particles/Collisions/CollisionsOverlap.js +0 -22
- package/cjs/Options/Classes/Particles/Move/MoveTrail.js +0 -27
- package/cjs/Options/Classes/Particles/Move/MoveTrailFill.js +0 -19
- package/cjs/Options/Classes/Particles/Shadow.js +0 -39
- package/cjs/Options/Interfaces/BackgroundMask/IBackgroundMask.js +0 -2
- package/cjs/Options/Interfaces/BackgroundMask/IBackgroundMaskCover.js +0 -2
- package/cjs/Options/Interfaces/Particles/Collisions/ICollisions.js +0 -2
- package/cjs/Options/Interfaces/Particles/Collisions/ICollisionsAbsorb.js +0 -2
- package/cjs/Options/Interfaces/Particles/Collisions/ICollisionsOverlap.js +0 -2
- package/cjs/Options/Interfaces/Particles/IShadow.js +0 -2
- package/cjs/Options/Interfaces/Particles/Move/IMoveTrail.js +0 -2
- package/cjs/Options/Interfaces/Particles/Move/IMoveTrailFill.js +0 -2
- package/cjs/Types/RangeType.js +0 -8
- package/cjs/Utils/NumberUtils.js +0 -177
- package/cjs/init.js +0 -9
- package/esm/Core/Interfaces/IRectSideResult.js +0 -1
- package/esm/Core/Interfaces/ITrailFillData.js +0 -1
- package/esm/Enums/Modes/CollisionMode.js +0 -6
- package/esm/Options/Classes/BackgroundMask/BackgroundMask.js +0 -24
- package/esm/Options/Classes/BackgroundMask/BackgroundMaskCover.js +0 -21
- package/esm/Options/Classes/Particles/Collisions/Collisions.js +0 -33
- package/esm/Options/Classes/Particles/Collisions/CollisionsAbsorb.js +0 -14
- package/esm/Options/Classes/Particles/Collisions/CollisionsOverlap.js +0 -18
- package/esm/Options/Classes/Particles/Move/MoveTrail.js +0 -23
- package/esm/Options/Classes/Particles/Move/MoveTrailFill.js +0 -15
- package/esm/Options/Classes/Particles/Shadow.js +0 -35
- package/esm/Options/Interfaces/BackgroundMask/IBackgroundMask.js +0 -1
- package/esm/Options/Interfaces/BackgroundMask/IBackgroundMaskCover.js +0 -1
- package/esm/Options/Interfaces/Particles/Collisions/ICollisions.js +0 -1
- package/esm/Options/Interfaces/Particles/Collisions/ICollisionsAbsorb.js +0 -1
- package/esm/Options/Interfaces/Particles/Collisions/ICollisionsOverlap.js +0 -1
- package/esm/Options/Interfaces/Particles/IShadow.js +0 -1
- package/esm/Options/Interfaces/Particles/Move/IMoveTrail.js +0 -1
- package/esm/Options/Interfaces/Particles/Move/IMoveTrailFill.js +0 -1
- package/esm/init.js +0 -6
- package/types/Core/Interfaces/IRectSideResult.d.ts +0 -5
- package/types/Core/Interfaces/ITrailFillData.d.ts +0 -6
- package/types/Enums/Modes/CollisionMode.d.ts +0 -5
- package/types/Options/Classes/BackgroundMask/BackgroundMask.d.ts +0 -11
- package/types/Options/Classes/BackgroundMask/BackgroundMaskCover.d.ts +0 -11
- package/types/Options/Classes/Particles/Collisions/Collisions.d.ts +0 -18
- package/types/Options/Classes/Particles/Collisions/CollisionsAbsorb.d.ts +0 -8
- package/types/Options/Classes/Particles/Collisions/CollisionsOverlap.d.ts +0 -9
- package/types/Options/Classes/Particles/Move/MoveTrail.d.ts +0 -11
- package/types/Options/Classes/Particles/Move/MoveTrailFill.d.ts +0 -9
- package/types/Options/Classes/Particles/Shadow.d.ts +0 -13
- package/types/Options/Interfaces/BackgroundMask/IBackgroundMask.d.ts +0 -8
- package/types/Options/Interfaces/BackgroundMask/IBackgroundMaskCover.d.ts +0 -6
- package/types/Options/Interfaces/Particles/Collisions/ICollisions.d.ts +0 -13
- package/types/Options/Interfaces/Particles/Collisions/ICollisionsAbsorb.d.ts +0 -3
- package/types/Options/Interfaces/Particles/Collisions/ICollisionsOverlap.d.ts +0 -4
- package/types/Options/Interfaces/Particles/IShadow.d.ts +0 -8
- package/types/Options/Interfaces/Particles/Move/IMoveTrail.d.ts +0 -6
- package/types/Options/Interfaces/Particles/Move/IMoveTrailFill.d.ts +0 -5
- package/types/init.d.ts +0 -2
- package/umd/Core/Interfaces/IRectSideResult.js +0 -12
- package/umd/Core/Interfaces/ITrailFillData.js +0 -12
- package/umd/Enums/Modes/CollisionMode.js +0 -19
- package/umd/Options/Classes/BackgroundMask/BackgroundMask.js +0 -38
- package/umd/Options/Classes/BackgroundMask/BackgroundMaskCover.js +0 -35
- package/umd/Options/Classes/Particles/Collisions/Collisions.js +0 -47
- package/umd/Options/Classes/Particles/Collisions/CollisionsAbsorb.js +0 -28
- package/umd/Options/Classes/Particles/Collisions/CollisionsOverlap.js +0 -32
- package/umd/Options/Classes/Particles/Move/MoveTrail.js +0 -37
- package/umd/Options/Classes/Particles/Move/MoveTrailFill.js +0 -29
- package/umd/Options/Classes/Particles/Shadow.js +0 -49
- package/umd/Options/Interfaces/BackgroundMask/IBackgroundMask.js +0 -12
- package/umd/Options/Interfaces/BackgroundMask/IBackgroundMaskCover.js +0 -12
- package/umd/Options/Interfaces/Particles/Collisions/ICollisions.js +0 -12
- package/umd/Options/Interfaces/Particles/Collisions/ICollisionsAbsorb.js +0 -12
- package/umd/Options/Interfaces/Particles/Collisions/ICollisionsOverlap.js +0 -12
- package/umd/Options/Interfaces/Particles/IShadow.js +0 -12
- package/umd/Options/Interfaces/Particles/Move/IMoveTrail.js +0 -12
- package/umd/Options/Interfaces/Particles/Move/IMoveTrailFill.js +0 -12
- /package/browser/{Types → Enums}/RangeType.js +0 -0
- /package/{esm/Types → cjs/Enums}/RangeType.js +0 -0
- /package/types/{Types → Enums}/RangeType.d.ts +0 -0
- /package/umd/{Types → Enums}/RangeType.js +0 -0
package/cjs/Utils/ColorUtils.js
CHANGED
|
@@ -1,50 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
exports.rangeColorToHsl = rangeColorToHsl;
|
|
7
|
-
exports.rgbToHsl = rgbToHsl;
|
|
8
|
-
exports.stringToAlpha = stringToAlpha;
|
|
9
|
-
exports.stringToRgb = stringToRgb;
|
|
10
|
-
exports.hslToRgb = hslToRgb;
|
|
11
|
-
exports.hslaToRgba = hslaToRgba;
|
|
12
|
-
exports.getRandomRgbColor = getRandomRgbColor;
|
|
13
|
-
exports.getStyleFromRgb = getStyleFromRgb;
|
|
14
|
-
exports.getStyleFromHsl = getStyleFromHsl;
|
|
15
|
-
exports.colorMix = colorMix;
|
|
16
|
-
exports.getLinkColor = getLinkColor;
|
|
17
|
-
exports.getLinkRandomColor = getLinkRandomColor;
|
|
18
|
-
exports.getHslFromAnimation = getHslFromAnimation;
|
|
19
|
-
exports.getHslAnimationFromHsl = getHslAnimationFromHsl;
|
|
20
|
-
exports.updateColorValue = updateColorValue;
|
|
21
|
-
exports.updateColor = updateColor;
|
|
22
|
-
const NumberUtils_js_1 = require("./NumberUtils.js");
|
|
23
|
-
const Constants_js_1 = require("../Core/Utils/Constants.js");
|
|
24
|
-
const TypeUtils_js_1 = require("./TypeUtils.js");
|
|
25
|
-
const AnimationStatus_js_1 = require("../Enums/AnimationStatus.js");
|
|
26
|
-
const Utils_js_1 = require("./Utils.js");
|
|
1
|
+
import { clamp, getRandom, getRandomInRange, getRangeMax, getRangeMin, getRangeValue, mix, randomInRangeValue, setRangeValue, } from "./MathUtils.js";
|
|
2
|
+
import { decayOffset, defaultLoops, defaultOpacity, defaultRgbMin, defaultTime, defaultVelocity, double, hMax, hMin, hPhase, half, identity, lMax, lMin, midColorValue, millisecondsToSeconds, percentDenominator, phaseNumerator, randomColorValue, rgbMax, sMax, sMin, sNormalizedOffset, sextuple, triple, } from "../Core/Utils/Constants.js";
|
|
3
|
+
import { isArray, isString } from "./TypeUtils.js";
|
|
4
|
+
import { AnimationStatus } from "../Enums/AnimationStatus.js";
|
|
5
|
+
import { itemFromArray } from "./Utils.js";
|
|
27
6
|
function stringToRgba(engine, input) {
|
|
28
7
|
if (!input) {
|
|
29
8
|
return;
|
|
30
9
|
}
|
|
31
10
|
for (const manager of engine.colorManagers.values()) {
|
|
32
|
-
if (
|
|
11
|
+
if (manager.accepts(input)) {
|
|
33
12
|
return manager.parseString(input);
|
|
34
13
|
}
|
|
35
14
|
}
|
|
15
|
+
return undefined;
|
|
36
16
|
}
|
|
37
|
-
function rangeColorToRgb(engine, input, index, useIndex = true) {
|
|
17
|
+
export function rangeColorToRgb(engine, input, index, useIndex = true) {
|
|
38
18
|
if (!input) {
|
|
39
19
|
return;
|
|
40
20
|
}
|
|
41
|
-
const color =
|
|
42
|
-
if (
|
|
21
|
+
const color = isString(input) ? { value: input } : input;
|
|
22
|
+
if (isString(color.value)) {
|
|
43
23
|
return colorToRgb(engine, color.value, index, useIndex);
|
|
44
24
|
}
|
|
45
|
-
if (
|
|
25
|
+
if (isArray(color.value)) {
|
|
26
|
+
const value = itemFromArray(color.value, index, useIndex);
|
|
27
|
+
if (!value) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
46
30
|
return rangeColorToRgb(engine, {
|
|
47
|
-
value
|
|
31
|
+
value,
|
|
48
32
|
});
|
|
49
33
|
}
|
|
50
34
|
for (const manager of engine.colorManagers.values()) {
|
|
@@ -53,18 +37,23 @@ function rangeColorToRgb(engine, input, index, useIndex = true) {
|
|
|
53
37
|
return res;
|
|
54
38
|
}
|
|
55
39
|
}
|
|
40
|
+
return undefined;
|
|
56
41
|
}
|
|
57
|
-
function colorToRgb(engine, input, index, useIndex = true) {
|
|
42
|
+
export function colorToRgb(engine, input, index, useIndex = true) {
|
|
58
43
|
if (!input) {
|
|
59
44
|
return;
|
|
60
45
|
}
|
|
61
|
-
const color =
|
|
62
|
-
if (
|
|
63
|
-
return color.value ===
|
|
46
|
+
const color = isString(input) ? { value: input } : input;
|
|
47
|
+
if (isString(color.value)) {
|
|
48
|
+
return color.value === randomColorValue ? getRandomRgbColor() : stringToRgb(engine, color.value);
|
|
64
49
|
}
|
|
65
|
-
if (
|
|
50
|
+
if (isArray(color.value)) {
|
|
51
|
+
const value = itemFromArray(color.value, index, useIndex);
|
|
52
|
+
if (!value) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
66
55
|
return colorToRgb(engine, {
|
|
67
|
-
value
|
|
56
|
+
value,
|
|
68
57
|
});
|
|
69
58
|
}
|
|
70
59
|
for (const manager of engine.colorManagers.values()) {
|
|
@@ -73,49 +62,55 @@ function colorToRgb(engine, input, index, useIndex = true) {
|
|
|
73
62
|
return res;
|
|
74
63
|
}
|
|
75
64
|
}
|
|
65
|
+
return undefined;
|
|
76
66
|
}
|
|
77
|
-
function colorToHsl(engine, color, index, useIndex = true) {
|
|
67
|
+
export function colorToHsl(engine, color, index, useIndex = true) {
|
|
78
68
|
const rgb = colorToRgb(engine, color, index, useIndex);
|
|
79
69
|
return rgb ? rgbToHsl(rgb) : undefined;
|
|
80
70
|
}
|
|
81
|
-
function rangeColorToHsl(engine, color, index, useIndex = true) {
|
|
71
|
+
export function rangeColorToHsl(engine, color, index, useIndex = true) {
|
|
82
72
|
const rgb = rangeColorToRgb(engine, color, index, useIndex);
|
|
83
73
|
return rgb ? rgbToHsl(rgb) : undefined;
|
|
84
74
|
}
|
|
85
|
-
function rgbToHsl(color) {
|
|
86
|
-
const r1 = color.r /
|
|
87
|
-
h:
|
|
88
|
-
l: (max + min) *
|
|
89
|
-
s:
|
|
75
|
+
export function rgbToHsl(color) {
|
|
76
|
+
const r1 = color.r / rgbMax, g1 = color.g / rgbMax, b1 = color.b / rgbMax, max = Math.max(r1, g1, b1), min = Math.min(r1, g1, b1), res = {
|
|
77
|
+
h: hMin,
|
|
78
|
+
l: (max + min) * half,
|
|
79
|
+
s: sMin,
|
|
90
80
|
};
|
|
91
81
|
if (max !== min) {
|
|
92
|
-
res.s = res.l <
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
82
|
+
res.s = res.l < half ? (max - min) / (max + min) : (max - min) / (double - max - min);
|
|
83
|
+
if (r1 === max) {
|
|
84
|
+
res.h = (g1 - b1) / (max - min);
|
|
85
|
+
}
|
|
86
|
+
else if (g1 === max) {
|
|
87
|
+
res.h = double + (b1 - r1) / (max - min);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
res.h = double * double + (r1 - g1) / (max - min);
|
|
91
|
+
}
|
|
97
92
|
}
|
|
98
|
-
res.l *=
|
|
99
|
-
res.s *=
|
|
100
|
-
res.h *=
|
|
101
|
-
if (res.h <
|
|
102
|
-
res.h +=
|
|
93
|
+
res.l *= lMax;
|
|
94
|
+
res.s *= sMax;
|
|
95
|
+
res.h *= hPhase;
|
|
96
|
+
if (res.h < hMin) {
|
|
97
|
+
res.h += hMax;
|
|
103
98
|
}
|
|
104
|
-
if (res.h >=
|
|
105
|
-
res.h -=
|
|
99
|
+
if (res.h >= hMax) {
|
|
100
|
+
res.h -= hMax;
|
|
106
101
|
}
|
|
107
102
|
return res;
|
|
108
103
|
}
|
|
109
|
-
function stringToAlpha(engine, input) {
|
|
104
|
+
export function stringToAlpha(engine, input) {
|
|
110
105
|
return stringToRgba(engine, input)?.a;
|
|
111
106
|
}
|
|
112
|
-
function stringToRgb(engine, input) {
|
|
107
|
+
export function stringToRgb(engine, input) {
|
|
113
108
|
return stringToRgba(engine, input);
|
|
114
109
|
}
|
|
115
|
-
function hslToRgb(hsl) {
|
|
116
|
-
const h = ((hsl.h %
|
|
117
|
-
if (s ===
|
|
118
|
-
const grayscaleValue = Math.round(lNormalized *
|
|
110
|
+
export function hslToRgb(hsl) {
|
|
111
|
+
const h = ((hsl.h % hMax) + hMax) % hMax, s = Math.max(sMin, Math.min(sMax, hsl.s)), l = Math.max(lMin, Math.min(lMax, hsl.l)), hNormalized = h / hMax, sNormalized = s / sMax, lNormalized = l / lMax;
|
|
112
|
+
if (s === sMin) {
|
|
113
|
+
const grayscaleValue = Math.round(lNormalized * rgbMax);
|
|
119
114
|
return { r: grayscaleValue, g: grayscaleValue, b: grayscaleValue };
|
|
120
115
|
}
|
|
121
116
|
const channel = (temp1, temp2, temp3) => {
|
|
@@ -126,23 +121,23 @@ function hslToRgb(hsl) {
|
|
|
126
121
|
if (temp3 > temp3Max) {
|
|
127
122
|
temp3--;
|
|
128
123
|
}
|
|
129
|
-
if (temp3 *
|
|
130
|
-
return temp1 + (temp2 - temp1) *
|
|
124
|
+
if (temp3 * sextuple < temp3Max) {
|
|
125
|
+
return temp1 + (temp2 - temp1) * sextuple * temp3;
|
|
131
126
|
}
|
|
132
|
-
if (temp3 *
|
|
127
|
+
if (temp3 * double < temp3Max) {
|
|
133
128
|
return temp2;
|
|
134
129
|
}
|
|
135
|
-
if (temp3 *
|
|
136
|
-
const temp3Offset =
|
|
137
|
-
return temp1 + (temp2 - temp1) * (temp3Offset - temp3) *
|
|
130
|
+
if (temp3 * triple < temp3Max * double) {
|
|
131
|
+
const temp3Offset = double / triple;
|
|
132
|
+
return temp1 + (temp2 - temp1) * (temp3Offset - temp3) * sextuple;
|
|
138
133
|
}
|
|
139
134
|
return temp1;
|
|
140
|
-
}, temp1 = lNormalized <
|
|
141
|
-
? lNormalized * (
|
|
142
|
-
: lNormalized + sNormalized - lNormalized * sNormalized, temp2 =
|
|
135
|
+
}, temp1 = lNormalized < half
|
|
136
|
+
? lNormalized * (sNormalizedOffset + sNormalized)
|
|
137
|
+
: lNormalized + sNormalized - lNormalized * sNormalized, temp2 = double * lNormalized - temp1, phaseThird = phaseNumerator / triple, red = Math.min(rgbMax, rgbMax * channel(temp2, temp1, hNormalized + phaseThird)), green = Math.min(rgbMax, rgbMax * channel(temp2, temp1, hNormalized)), blue = Math.min(rgbMax, rgbMax * channel(temp2, temp1, hNormalized - phaseThird));
|
|
143
138
|
return { r: Math.round(red), g: Math.round(green), b: Math.round(blue) };
|
|
144
139
|
}
|
|
145
|
-
function hslaToRgba(hsla) {
|
|
140
|
+
export function hslaToRgba(hsla) {
|
|
146
141
|
const rgbResult = hslToRgb(hsla);
|
|
147
142
|
return {
|
|
148
143
|
a: hsla.a,
|
|
@@ -151,39 +146,51 @@ function hslaToRgba(hsla) {
|
|
|
151
146
|
r: rgbResult.r,
|
|
152
147
|
};
|
|
153
148
|
}
|
|
154
|
-
function getRandomRgbColor(min) {
|
|
155
|
-
const fixedMin = min ??
|
|
149
|
+
export function getRandomRgbColor(min) {
|
|
150
|
+
const fixedMin = min ?? defaultRgbMin, fixedMax = rgbMax + identity, getRgbInRangeValue = () => Math.floor(getRandomInRange(fixedMin, fixedMax));
|
|
156
151
|
return {
|
|
157
|
-
b:
|
|
158
|
-
g:
|
|
159
|
-
r:
|
|
152
|
+
b: getRgbInRangeValue(),
|
|
153
|
+
g: getRgbInRangeValue(),
|
|
154
|
+
r: getRgbInRangeValue(),
|
|
160
155
|
};
|
|
161
156
|
}
|
|
162
|
-
function getStyleFromRgb(color, opacity) {
|
|
163
|
-
return
|
|
157
|
+
export function getStyleFromRgb(color, hdr, opacity) {
|
|
158
|
+
return hdr ? getHdrStyleFromRgb(color, opacity) : getSdrStyleFromRgb(color, opacity);
|
|
159
|
+
}
|
|
160
|
+
function getHdrStyleFromRgb(color, opacity) {
|
|
161
|
+
return `color(display-p3 ${(color.r / rgbMax).toString()} ${(color.g / rgbMax).toString()} ${(color.b / rgbMax).toString()} / ${(opacity ?? defaultOpacity).toString()})`;
|
|
162
|
+
}
|
|
163
|
+
function getSdrStyleFromRgb(color, opacity) {
|
|
164
|
+
return `rgba(${color.r.toString()}, ${color.g.toString()}, ${color.b.toString()}, ${(opacity ?? defaultOpacity).toString()})`;
|
|
164
165
|
}
|
|
165
|
-
function getStyleFromHsl(color, opacity) {
|
|
166
|
-
return
|
|
166
|
+
export function getStyleFromHsl(color, hdr, opacity) {
|
|
167
|
+
return hdr ? getHdrStyleFromHsl(color, opacity) : getSdrStyleFromHsl(color, opacity);
|
|
167
168
|
}
|
|
168
|
-
function
|
|
169
|
+
function getHdrStyleFromHsl(color, opacity) {
|
|
170
|
+
return getHdrStyleFromRgb(hslToRgb(color), opacity);
|
|
171
|
+
}
|
|
172
|
+
function getSdrStyleFromHsl(color, opacity) {
|
|
173
|
+
return `hsla(${color.h.toString()}, ${color.s.toString()}%, ${color.l.toString()}%, ${(opacity ?? defaultOpacity).toString()})`;
|
|
174
|
+
}
|
|
175
|
+
export function colorMix(color1, color2, size1, size2) {
|
|
169
176
|
let rgb1 = color1, rgb2 = color2;
|
|
170
|
-
if (rgb1
|
|
177
|
+
if (!Object.hasOwn(rgb1, "r")) {
|
|
171
178
|
rgb1 = hslToRgb(color1);
|
|
172
179
|
}
|
|
173
|
-
if (rgb2
|
|
180
|
+
if (!Object.hasOwn(rgb2, "r")) {
|
|
174
181
|
rgb2 = hslToRgb(color2);
|
|
175
182
|
}
|
|
176
183
|
return {
|
|
177
|
-
b:
|
|
178
|
-
g:
|
|
179
|
-
r:
|
|
184
|
+
b: mix(rgb1.b, rgb2.b, size1, size2),
|
|
185
|
+
g: mix(rgb1.g, rgb2.g, size1, size2),
|
|
186
|
+
r: mix(rgb1.r, rgb2.r, size1, size2),
|
|
180
187
|
};
|
|
181
188
|
}
|
|
182
|
-
function getLinkColor(p1, p2, linkColor) {
|
|
183
|
-
if (linkColor ===
|
|
189
|
+
export function getLinkColor(p1, p2, linkColor) {
|
|
190
|
+
if (linkColor === randomColorValue) {
|
|
184
191
|
return getRandomRgbColor();
|
|
185
192
|
}
|
|
186
|
-
else if (linkColor ===
|
|
193
|
+
else if (linkColor === midColorValue) {
|
|
187
194
|
const sourceColor = p1.getFillColor() ?? p1.getStrokeColor(), destColor = p2?.getFillColor() ?? p2?.getStrokeColor();
|
|
188
195
|
if (sourceColor && destColor && p2) {
|
|
189
196
|
return colorMix(sourceColor, destColor, p1.getRadius(), p2.getRadius());
|
|
@@ -198,22 +205,23 @@ function getLinkColor(p1, p2, linkColor) {
|
|
|
198
205
|
else {
|
|
199
206
|
return linkColor;
|
|
200
207
|
}
|
|
208
|
+
return undefined;
|
|
201
209
|
}
|
|
202
|
-
function getLinkRandomColor(engine, optColor, blink, consent) {
|
|
203
|
-
const color =
|
|
204
|
-
if (color ===
|
|
210
|
+
export function getLinkRandomColor(engine, optColor, blink, consent) {
|
|
211
|
+
const color = isString(optColor) ? optColor : optColor.value;
|
|
212
|
+
if (color === randomColorValue) {
|
|
205
213
|
if (consent) {
|
|
206
214
|
return rangeColorToRgb(engine, {
|
|
207
215
|
value: color,
|
|
208
216
|
});
|
|
209
217
|
}
|
|
210
218
|
if (blink) {
|
|
211
|
-
return
|
|
219
|
+
return randomColorValue;
|
|
212
220
|
}
|
|
213
|
-
return
|
|
221
|
+
return midColorValue;
|
|
214
222
|
}
|
|
215
|
-
else if (color ===
|
|
216
|
-
return
|
|
223
|
+
else if (color === midColorValue) {
|
|
224
|
+
return midColorValue;
|
|
217
225
|
}
|
|
218
226
|
else {
|
|
219
227
|
return rangeColorToRgb(engine, {
|
|
@@ -221,7 +229,7 @@ function getLinkRandomColor(engine, optColor, blink, consent) {
|
|
|
221
229
|
});
|
|
222
230
|
}
|
|
223
231
|
}
|
|
224
|
-
function getHslFromAnimation(animation) {
|
|
232
|
+
export function getHslFromAnimation(animation) {
|
|
225
233
|
return animation !== undefined
|
|
226
234
|
? {
|
|
227
235
|
h: animation.h.value,
|
|
@@ -230,7 +238,7 @@ function getHslFromAnimation(animation) {
|
|
|
230
238
|
}
|
|
231
239
|
: undefined;
|
|
232
240
|
}
|
|
233
|
-
function getHslAnimationFromHsl(hsl, animationOptions, reduceFactor) {
|
|
241
|
+
export function getHslAnimationFromHsl(hsl, animationOptions, reduceFactor) {
|
|
234
242
|
const resColor = {
|
|
235
243
|
h: {
|
|
236
244
|
enable: false,
|
|
@@ -255,50 +263,45 @@ function getHslAnimationFromHsl(hsl, animationOptions, reduceFactor) {
|
|
|
255
263
|
function setColorAnimation(colorValue, colorAnimation, reduceFactor) {
|
|
256
264
|
colorValue.enable = colorAnimation.enable;
|
|
257
265
|
if (colorValue.enable) {
|
|
258
|
-
colorValue.velocity = (
|
|
259
|
-
colorValue.decay =
|
|
260
|
-
colorValue.status =
|
|
261
|
-
colorValue.loops =
|
|
262
|
-
colorValue.maxLoops =
|
|
263
|
-
colorValue.time =
|
|
264
|
-
colorValue.delayTime =
|
|
266
|
+
colorValue.velocity = (getRangeValue(colorAnimation.speed) / percentDenominator) * reduceFactor;
|
|
267
|
+
colorValue.decay = decayOffset - getRangeValue(colorAnimation.decay);
|
|
268
|
+
colorValue.status = AnimationStatus.increasing;
|
|
269
|
+
colorValue.loops = defaultLoops;
|
|
270
|
+
colorValue.maxLoops = getRangeValue(colorAnimation.count);
|
|
271
|
+
colorValue.time = defaultTime;
|
|
272
|
+
colorValue.delayTime = getRangeValue(colorAnimation.delay) * millisecondsToSeconds;
|
|
265
273
|
if (!colorAnimation.sync) {
|
|
266
|
-
colorValue.velocity *=
|
|
267
|
-
colorValue.value *=
|
|
274
|
+
colorValue.velocity *= getRandom();
|
|
275
|
+
colorValue.value *= getRandom();
|
|
268
276
|
}
|
|
269
277
|
colorValue.initialValue = colorValue.value;
|
|
270
|
-
colorValue.offset =
|
|
278
|
+
colorValue.offset = setRangeValue(colorAnimation.offset);
|
|
271
279
|
}
|
|
272
280
|
else {
|
|
273
|
-
colorValue.velocity =
|
|
281
|
+
colorValue.velocity = defaultVelocity;
|
|
274
282
|
}
|
|
275
283
|
}
|
|
276
|
-
function updateColorValue(data, range, decrease, delta) {
|
|
284
|
+
export function updateColorValue(data, range, decrease, delta) {
|
|
277
285
|
const minLoops = 0, minDelay = 0, identity = 1, minVelocity = 0, minOffset = 0, velocityFactor = 3.6;
|
|
278
|
-
if (!data ||
|
|
279
|
-
!data.enable ||
|
|
286
|
+
if (!data.enable ||
|
|
280
287
|
((data.maxLoops ?? minLoops) > minLoops && (data.loops ?? minLoops) > (data.maxLoops ?? minLoops))) {
|
|
281
288
|
return;
|
|
282
289
|
}
|
|
283
|
-
|
|
284
|
-
data.time = 0;
|
|
285
|
-
}
|
|
290
|
+
data.time ??= 0;
|
|
286
291
|
if ((data.delayTime ?? minDelay) > minDelay && data.time < (data.delayTime ?? minDelay)) {
|
|
287
292
|
data.time += delta.value;
|
|
288
293
|
}
|
|
289
294
|
if ((data.delayTime ?? minDelay) > minDelay && data.time < (data.delayTime ?? minDelay)) {
|
|
290
295
|
return;
|
|
291
296
|
}
|
|
292
|
-
const offset = data.offset ? (
|
|
293
|
-
if (!decrease || data.status ===
|
|
297
|
+
const offset = data.offset ? randomInRangeValue(data.offset) : minOffset, velocity = (data.velocity ?? minVelocity) * delta.factor + offset * velocityFactor, decay = data.decay ?? identity, max = getRangeMax(range), min = getRangeMin(range);
|
|
298
|
+
if (!decrease || data.status === AnimationStatus.increasing) {
|
|
294
299
|
data.value += velocity;
|
|
295
300
|
if (data.value > max) {
|
|
296
|
-
|
|
297
|
-
data.loops = 0;
|
|
298
|
-
}
|
|
301
|
+
data.loops ??= 0;
|
|
299
302
|
data.loops++;
|
|
300
303
|
if (decrease) {
|
|
301
|
-
data.status =
|
|
304
|
+
data.status = AnimationStatus.decreasing;
|
|
302
305
|
}
|
|
303
306
|
else {
|
|
304
307
|
data.value -= max;
|
|
@@ -309,34 +312,26 @@ function updateColorValue(data, range, decrease, delta) {
|
|
|
309
312
|
data.value -= velocity;
|
|
310
313
|
const minValue = 0;
|
|
311
314
|
if (data.value < minValue) {
|
|
312
|
-
|
|
313
|
-
data.loops = 0;
|
|
314
|
-
}
|
|
315
|
+
data.loops ??= 0;
|
|
315
316
|
data.loops++;
|
|
316
|
-
data.status =
|
|
317
|
+
data.status = AnimationStatus.increasing;
|
|
317
318
|
}
|
|
318
319
|
}
|
|
319
320
|
if (data.velocity && decay !== identity) {
|
|
320
321
|
data.velocity *= decay;
|
|
321
322
|
}
|
|
322
|
-
data.value =
|
|
323
|
+
data.value = clamp(data.value, min, max);
|
|
323
324
|
}
|
|
324
|
-
function updateColor(color, delta) {
|
|
325
|
+
export function updateColor(color, delta) {
|
|
325
326
|
if (!color) {
|
|
326
327
|
return;
|
|
327
328
|
}
|
|
328
329
|
const { h, s, l } = color, ranges = {
|
|
329
|
-
h: { min:
|
|
330
|
-
s: { min:
|
|
331
|
-
l: { min:
|
|
330
|
+
h: { min: hMin, max: hMax },
|
|
331
|
+
s: { min: sMin, max: sMax },
|
|
332
|
+
l: { min: lMin, max: lMax },
|
|
332
333
|
};
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
if (s) {
|
|
337
|
-
updateColorValue(s, ranges.s, true, delta);
|
|
338
|
-
}
|
|
339
|
-
if (l) {
|
|
340
|
-
updateColorValue(l, ranges.l, true, delta);
|
|
341
|
-
}
|
|
334
|
+
updateColorValue(h, ranges.h, false, delta);
|
|
335
|
+
updateColorValue(s, ranges.s, true, delta);
|
|
336
|
+
updateColorValue(l, ranges.l, true, delta);
|
|
342
337
|
}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.EventDispatcher = void 0;
|
|
4
|
-
const Constants_js_1 = require("../Core/Utils/Constants.js");
|
|
5
|
-
class EventDispatcher {
|
|
1
|
+
import { deleteCount, minIndex } from "../Core/Utils/Constants.js";
|
|
2
|
+
export class EventDispatcher {
|
|
6
3
|
constructor() {
|
|
7
4
|
this._listeners = new Map();
|
|
8
5
|
}
|
|
@@ -17,7 +14,9 @@ class EventDispatcher {
|
|
|
17
14
|
}
|
|
18
15
|
dispatchEvent(type, args) {
|
|
19
16
|
const listeners = this._listeners.get(type);
|
|
20
|
-
listeners?.forEach(handler =>
|
|
17
|
+
listeners?.forEach(handler => {
|
|
18
|
+
handler(args);
|
|
19
|
+
});
|
|
21
20
|
}
|
|
22
21
|
hasEventListener(type) {
|
|
23
22
|
return !!this._listeners.get(type);
|
|
@@ -36,15 +35,14 @@ class EventDispatcher {
|
|
|
36
35
|
return;
|
|
37
36
|
}
|
|
38
37
|
const length = arr.length, idx = arr.indexOf(listener);
|
|
39
|
-
if (idx <
|
|
38
|
+
if (idx < minIndex) {
|
|
40
39
|
return;
|
|
41
40
|
}
|
|
42
|
-
if (length ===
|
|
41
|
+
if (length === deleteCount) {
|
|
43
42
|
this._listeners.delete(type);
|
|
44
43
|
}
|
|
45
44
|
else {
|
|
46
|
-
arr.splice(idx,
|
|
45
|
+
arr.splice(idx, deleteCount);
|
|
47
46
|
}
|
|
48
47
|
}
|
|
49
48
|
}
|
|
50
|
-
exports.EventDispatcher = EventDispatcher;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const errorPrefix = "tsParticles - Error";
|
|
2
|
+
const _logger = {
|
|
3
|
+
debug: console.debug,
|
|
4
|
+
error: (message, optionalParams) => {
|
|
5
|
+
console.error(`${errorPrefix} - ${message}`, optionalParams);
|
|
6
|
+
},
|
|
7
|
+
info: console.info,
|
|
8
|
+
log: console.log,
|
|
9
|
+
verbose: console.log,
|
|
10
|
+
warning: console.warn,
|
|
11
|
+
};
|
|
12
|
+
export function setLogger(logger) {
|
|
13
|
+
_logger.debug = logger.debug;
|
|
14
|
+
_logger.error = logger.error;
|
|
15
|
+
_logger.info = logger.info;
|
|
16
|
+
_logger.log = logger.log;
|
|
17
|
+
_logger.verbose = logger.verbose;
|
|
18
|
+
_logger.warning = logger.warning;
|
|
19
|
+
}
|
|
20
|
+
export function getLogger() {
|
|
21
|
+
return _logger;
|
|
22
|
+
}
|
|
@@ -2,10 +2,13 @@ import { MoveDirection } from "../Enums/Directions/MoveDirection.js";
|
|
|
2
2
|
import { double, doublePI, empty, half, percentDenominator, quarter, threeQuarter } from "../Core/Utils/Constants.js";
|
|
3
3
|
import { Vector } from "../Core/Utils/Vectors.js";
|
|
4
4
|
import { isNumber } from "./TypeUtils.js";
|
|
5
|
+
const piDeg = 180, degToRadFactor = Math.PI / piDeg;
|
|
5
6
|
let _random = Math.random;
|
|
6
7
|
const _animationLoop = {
|
|
7
8
|
nextFrame: (cb) => requestAnimationFrame(cb),
|
|
8
|
-
cancel: (idx) =>
|
|
9
|
+
cancel: (idx) => {
|
|
10
|
+
cancelAnimationFrame(idx);
|
|
11
|
+
},
|
|
9
12
|
};
|
|
10
13
|
export function setRandom(rnd = Math.random) {
|
|
11
14
|
_random = rnd;
|
|
@@ -14,9 +17,14 @@ export function getRandom() {
|
|
|
14
17
|
const min = 0, max = 1;
|
|
15
18
|
return clamp(_random(), min, max - Number.EPSILON);
|
|
16
19
|
}
|
|
20
|
+
export function getRandomInRange(min, max) {
|
|
21
|
+
return getRandom() * (max - min) + min;
|
|
22
|
+
}
|
|
17
23
|
export function setAnimationFunctions(nextFrame, cancel) {
|
|
18
24
|
_animationLoop.nextFrame = (callback) => nextFrame(callback);
|
|
19
|
-
_animationLoop.cancel = (handle) =>
|
|
25
|
+
_animationLoop.cancel = (handle) => {
|
|
26
|
+
cancel(handle);
|
|
27
|
+
};
|
|
20
28
|
}
|
|
21
29
|
export function animate(fn) {
|
|
22
30
|
return _animationLoop.nextFrame(fn);
|
|
@@ -30,16 +38,16 @@ export function clamp(num, min, max) {
|
|
|
30
38
|
export function mix(comp1, comp2, weight1, weight2) {
|
|
31
39
|
return Math.floor((comp1 * weight1 + comp2 * weight2) / (weight1 + weight2));
|
|
32
40
|
}
|
|
33
|
-
export function
|
|
41
|
+
export function randomInRangeValue(r) {
|
|
34
42
|
const max = getRangeMax(r), minOffset = 0;
|
|
35
43
|
let min = getRangeMin(r);
|
|
36
44
|
if (max === min) {
|
|
37
45
|
min = minOffset;
|
|
38
46
|
}
|
|
39
|
-
return
|
|
47
|
+
return getRandomInRange(min, max);
|
|
40
48
|
}
|
|
41
49
|
export function getRangeValue(value) {
|
|
42
|
-
return isNumber(value) ? value :
|
|
50
|
+
return isNumber(value) ? value : randomInRangeValue(value);
|
|
43
51
|
}
|
|
44
52
|
export function getRangeMin(value) {
|
|
45
53
|
return isNumber(value) ? value : value.min;
|
|
@@ -67,8 +75,7 @@ export function getDistance(pointA, pointB) {
|
|
|
67
75
|
return getDistances(pointA, pointB).distance;
|
|
68
76
|
}
|
|
69
77
|
export function degToRad(degrees) {
|
|
70
|
-
|
|
71
|
-
return (degrees * Math.PI) / PIDeg;
|
|
78
|
+
return degrees * degToRadFactor;
|
|
72
79
|
}
|
|
73
80
|
export function getParticleDirectionAngle(direction, position, center) {
|
|
74
81
|
if (isNumber(direction)) {
|
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.loadOptions = loadOptions;
|
|
4
|
-
exports.loadParticlesOptions = loadParticlesOptions;
|
|
5
|
-
const ParticlesOptions_js_1 = require("../Options/Classes/Particles/ParticlesOptions.js");
|
|
6
|
-
function loadOptions(options, ...sourceOptionsArr) {
|
|
1
|
+
import { ParticlesOptions } from "../Options/Classes/Particles/ParticlesOptions.js";
|
|
2
|
+
export function loadOptions(options, ...sourceOptionsArr) {
|
|
7
3
|
for (const sourceOptions of sourceOptionsArr) {
|
|
8
4
|
options.load(sourceOptions);
|
|
9
5
|
}
|
|
10
6
|
}
|
|
11
|
-
function loadParticlesOptions(engine, container, ...sourceOptionsArr) {
|
|
12
|
-
const options = new
|
|
7
|
+
export function loadParticlesOptions(engine, container, ...sourceOptionsArr) {
|
|
8
|
+
const options = new ParticlesOptions(engine, container);
|
|
13
9
|
loadOptions(options, ...sourceOptionsArr);
|
|
14
10
|
return options;
|
|
15
11
|
}
|
package/cjs/Utils/TypeUtils.js
CHANGED
|
@@ -1,30 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isBoolean = isBoolean;
|
|
4
|
-
exports.isString = isString;
|
|
5
|
-
exports.isNumber = isNumber;
|
|
6
|
-
exports.isFunction = isFunction;
|
|
7
|
-
exports.isObject = isObject;
|
|
8
|
-
exports.isArray = isArray;
|
|
9
|
-
exports.isNull = isNull;
|
|
10
|
-
function isBoolean(arg) {
|
|
1
|
+
export function isBoolean(arg) {
|
|
11
2
|
return typeof arg === "boolean";
|
|
12
3
|
}
|
|
13
|
-
function isString(arg) {
|
|
4
|
+
export function isString(arg) {
|
|
14
5
|
return typeof arg === "string";
|
|
15
6
|
}
|
|
16
|
-
function isNumber(arg) {
|
|
7
|
+
export function isNumber(arg) {
|
|
17
8
|
return typeof arg === "number";
|
|
18
9
|
}
|
|
19
|
-
function isFunction(arg) {
|
|
10
|
+
export function isFunction(arg) {
|
|
20
11
|
return typeof arg === "function";
|
|
21
12
|
}
|
|
22
|
-
function isObject(arg) {
|
|
13
|
+
export function isObject(arg) {
|
|
23
14
|
return typeof arg === "object" && arg !== null;
|
|
24
15
|
}
|
|
25
|
-
function isArray(arg) {
|
|
16
|
+
export function isArray(arg) {
|
|
26
17
|
return Array.isArray(arg);
|
|
27
18
|
}
|
|
28
|
-
function isNull(arg) {
|
|
19
|
+
export function isNull(arg) {
|
|
29
20
|
return arg === null || arg === undefined;
|
|
30
21
|
}
|