tsparticles 1.39.3 → 1.40.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/Core/Container.d.ts +3 -1
- package/Core/Container.js +27 -12
- package/Core/Loader.d.ts +12 -9
- package/Core/Loader.js +35 -19
- package/Core/Particle.d.ts +3 -1
- package/Core/Particle.js +17 -2
- package/Core/Particles.d.ts +3 -1
- package/Core/Particles.js +20 -5
- package/Core/Utils/InteractionManager.d.ts +3 -1
- package/Core/Utils/InteractionManager.js +17 -3
- package/Core/Utils/Plugins.d.ts +29 -15
- package/Core/Utils/Plugins.js +58 -46
- package/Options/Classes/Options.d.ts +2 -1
- package/Options/Classes/Options.js +13 -6
- package/Plugins/Emitters/EmitterInstance.d.ts +6 -3
- package/Plugins/Emitters/EmitterInstance.js +46 -16
- package/Plugins/Emitters/Emitters.d.ts +3 -1
- package/Plugins/Emitters/Emitters.js +17 -2
- package/Plugins/Emitters/{EmittersMain.d.ts → EmittersEngine.d.ts} +3 -1
- package/Plugins/Emitters/{EmittersMain.js → EmittersEngine.js} +0 -0
- package/Plugins/Emitters/IEmitterShape.d.ts +2 -2
- package/Plugins/Emitters/Options/Classes/Emitter.d.ts +1 -0
- package/Plugins/Emitters/Options/Classes/Emitter.js +1 -0
- package/Plugins/Emitters/Options/Interfaces/IEmitter.d.ts +1 -0
- package/Plugins/Emitters/ShapeManager.d.ts +6 -3
- package/Plugins/Emitters/ShapeManager.js +16 -4
- package/Plugins/Emitters/Shapes/Circle/CircleShape.d.ts +2 -2
- package/Plugins/Emitters/Shapes/Circle/CircleShape.js +2 -2
- package/Plugins/Emitters/Shapes/Square/SquareShape.d.ts +2 -2
- package/Plugins/Emitters/Shapes/Square/SquareShape.js +4 -4
- package/Plugins/Emitters/index.d.ts +3 -3
- package/Plugins/Emitters/index.js +25 -6
- package/README.md +1 -1
- package/browser/Core/Container.d.ts +4 -1
- package/browser/Core/Container.js +29 -13
- package/browser/Core/Loader.d.ts +12 -9
- package/browser/Core/Loader.js +35 -19
- package/browser/Core/Particle.d.ts +3 -1
- package/browser/Core/Particle.js +18 -3
- package/browser/Core/Particles.d.ts +3 -1
- package/browser/Core/Particles.js +21 -6
- package/browser/Core/Utils/InteractionManager.d.ts +3 -1
- package/browser/Core/Utils/InteractionManager.js +17 -3
- package/browser/Core/Utils/Plugins.d.ts +29 -15
- package/browser/Core/Utils/Plugins.js +58 -46
- package/browser/Options/Classes/Options.d.ts +2 -1
- package/browser/Options/Classes/Options.js +13 -6
- package/browser/Plugins/Emitters/EmitterInstance.d.ts +6 -3
- package/browser/Plugins/Emitters/EmitterInstance.js +46 -16
- package/browser/Plugins/Emitters/Emitters.d.ts +3 -1
- package/browser/Plugins/Emitters/Emitters.js +17 -2
- package/{esm/Plugins/Emitters/EmittersMain.d.ts → browser/Plugins/Emitters/EmittersEngine.d.ts} +3 -1
- package/browser/Plugins/Emitters/{EmittersMain.js → EmittersEngine.js} +0 -0
- package/browser/Plugins/Emitters/IEmitterShape.d.ts +2 -2
- package/browser/Plugins/Emitters/Options/Classes/Emitter.d.ts +1 -0
- package/browser/Plugins/Emitters/Options/Classes/Emitter.js +1 -0
- package/browser/Plugins/Emitters/Options/Interfaces/IEmitter.d.ts +4 -0
- package/browser/Plugins/Emitters/ShapeManager.d.ts +6 -3
- package/browser/Plugins/Emitters/ShapeManager.js +16 -4
- package/browser/Plugins/Emitters/Shapes/Circle/CircleShape.d.ts +2 -2
- package/browser/Plugins/Emitters/Shapes/Circle/CircleShape.js +2 -2
- package/browser/Plugins/Emitters/Shapes/Square/SquareShape.d.ts +2 -2
- package/browser/Plugins/Emitters/Shapes/Square/SquareShape.js +4 -4
- package/browser/Plugins/Emitters/index.d.ts +3 -3
- package/browser/Plugins/Emitters/index.js +25 -6
- package/browser/engine.d.ts +5 -1
- package/browser/engine.js +22 -17
- package/engine.d.ts +3 -0
- package/engine.js +20 -16
- package/esm/Core/Container.d.ts +3 -1
- package/esm/Core/Container.js +28 -13
- package/esm/Core/Loader.d.ts +12 -9
- package/esm/Core/Loader.js +35 -19
- package/esm/Core/Particle.d.ts +3 -1
- package/esm/Core/Particle.js +18 -3
- package/esm/Core/Particles.d.ts +3 -1
- package/esm/Core/Particles.js +21 -6
- package/esm/Core/Utils/InteractionManager.d.ts +3 -1
- package/esm/Core/Utils/InteractionManager.js +17 -3
- package/esm/Core/Utils/Plugins.d.ts +29 -15
- package/esm/Core/Utils/Plugins.js +58 -46
- package/esm/Options/Classes/Options.d.ts +2 -1
- package/esm/Options/Classes/Options.js +13 -6
- package/esm/Plugins/Emitters/EmitterInstance.d.ts +6 -3
- package/esm/Plugins/Emitters/EmitterInstance.js +46 -16
- package/esm/Plugins/Emitters/Emitters.d.ts +3 -1
- package/esm/Plugins/Emitters/Emitters.js +17 -2
- package/{browser/Plugins/Emitters/EmittersMain.d.ts → esm/Plugins/Emitters/EmittersEngine.d.ts} +3 -1
- package/esm/Plugins/Emitters/{EmittersMain.js → EmittersEngine.js} +0 -0
- package/esm/Plugins/Emitters/IEmitterShape.d.ts +2 -2
- package/esm/Plugins/Emitters/Options/Classes/Emitter.d.ts +1 -0
- package/esm/Plugins/Emitters/Options/Classes/Emitter.js +1 -0
- package/esm/Plugins/Emitters/Options/Interfaces/IEmitter.d.ts +1 -0
- package/esm/Plugins/Emitters/ShapeManager.d.ts +6 -3
- package/esm/Plugins/Emitters/ShapeManager.js +16 -4
- package/esm/Plugins/Emitters/Shapes/Circle/CircleShape.d.ts +2 -2
- package/esm/Plugins/Emitters/Shapes/Circle/CircleShape.js +2 -2
- package/esm/Plugins/Emitters/Shapes/Square/SquareShape.d.ts +2 -2
- package/esm/Plugins/Emitters/Shapes/Square/SquareShape.js +4 -4
- package/esm/Plugins/Emitters/index.d.ts +3 -3
- package/esm/Plugins/Emitters/index.js +25 -6
- package/esm/engine.d.ts +3 -0
- package/esm/engine.js +20 -16
- package/package.json +1 -1
- package/report.html +2 -2
- package/report.slim.html +2 -2
- package/tsparticles.engine.js +221 -114
- package/tsparticles.engine.min.js +2 -2
- package/tsparticles.interaction.external.attract.js +199 -96
- package/tsparticles.interaction.external.attract.min.js +2 -2
- package/tsparticles.interaction.external.bounce.js +199 -96
- package/tsparticles.interaction.external.bounce.min.js +2 -2
- package/tsparticles.interaction.external.bubble.js +199 -96
- package/tsparticles.interaction.external.bubble.min.js +2 -2
- package/tsparticles.interaction.external.connect.js +199 -96
- package/tsparticles.interaction.external.connect.min.js +2 -2
- package/tsparticles.interaction.external.grab.js +199 -96
- package/tsparticles.interaction.external.grab.min.js +2 -2
- package/tsparticles.interaction.external.repulse.js +199 -96
- package/tsparticles.interaction.external.repulse.min.js +2 -2
- package/tsparticles.interaction.external.trail.js +199 -96
- package/tsparticles.interaction.external.trail.min.js +2 -2
- package/tsparticles.interaction.particles.attract.js +199 -96
- package/tsparticles.interaction.particles.attract.min.js +2 -2
- package/tsparticles.interaction.particles.collisions.js +199 -96
- package/tsparticles.interaction.particles.collisions.min.js +2 -2
- package/tsparticles.interaction.particles.links.js +199 -96
- package/tsparticles.interaction.particles.links.min.js +2 -2
- package/tsparticles.js +341 -152
- package/tsparticles.min.js +2 -2
- package/tsparticles.pathseg.min.js +1 -1
- package/tsparticles.plugins.absorbers.js +199 -96
- package/tsparticles.plugins.absorbers.min.js +2 -2
- package/tsparticles.plugins.emitters.js +324 -139
- package/tsparticles.plugins.emitters.min.js +2 -2
- package/tsparticles.plugins.polygonMask.js +199 -96
- package/tsparticles.plugins.polygonMask.min.js +2 -2
- package/tsparticles.shape.circle.min.js +1 -1
- package/tsparticles.shape.image.js +202 -99
- package/tsparticles.shape.image.min.js +2 -2
- package/tsparticles.shape.line.min.js +1 -1
- package/tsparticles.shape.polygon.min.js +1 -1
- package/tsparticles.shape.square.min.js +1 -1
- package/tsparticles.shape.star.min.js +1 -1
- package/tsparticles.shape.text.js +199 -96
- package/tsparticles.shape.text.min.js +2 -2
- package/tsparticles.slim.js +221 -114
- package/tsparticles.slim.min.js +2 -2
- package/tsparticles.updater.angle.js +199 -96
- package/tsparticles.updater.angle.min.js +2 -2
- package/tsparticles.updater.color.js +199 -96
- package/tsparticles.updater.color.min.js +2 -2
- package/tsparticles.updater.life.js +199 -96
- package/tsparticles.updater.life.min.js +2 -2
- package/tsparticles.updater.opacity.js +199 -96
- package/tsparticles.updater.opacity.min.js +2 -2
- package/tsparticles.updater.outModes.js +199 -96
- package/tsparticles.updater.outModes.min.js +2 -2
- package/tsparticles.updater.roll.js +199 -96
- package/tsparticles.updater.roll.min.js +2 -2
- package/tsparticles.updater.size.js +199 -96
- package/tsparticles.updater.size.min.js +2 -2
- package/tsparticles.updater.strokeColor.js +199 -96
- package/tsparticles.updater.strokeColor.min.js +2 -2
- package/tsparticles.updater.tilt.js +199 -96
- package/tsparticles.updater.tilt.min.js +2 -2
- package/tsparticles.updater.wobble.js +199 -96
- package/tsparticles.updater.wobble.min.js +2 -2
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
}
|
|
45
45
|
});
|
|
46
46
|
class CircleShape {
|
|
47
|
-
randomPosition(position,
|
|
47
|
+
randomPosition(position, size, fill) {
|
|
48
48
|
const generateTheta = (x, y) => {
|
|
49
49
|
const u = Math.random() / 4;
|
|
50
50
|
const theta = Math.atan(y / x * Math.tan(2 * Math.PI * u));
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
}
|
|
61
61
|
};
|
|
62
62
|
const radius = (x, y, theta) => x * y / Math.sqrt((y * Math.cos(theta)) ** 2 + (x * Math.sin(theta)) ** 2);
|
|
63
|
-
const [a, b] = [
|
|
63
|
+
const [a, b] = [ size.width / 2, size.height / 2 ];
|
|
64
64
|
const randomTheta = generateTheta(a, b), maxRadius = radius(a, b, randomTheta), randomRadius = fill ? maxRadius * Math.sqrt(Math.random()) : maxRadius;
|
|
65
65
|
return {
|
|
66
66
|
x: position.x + randomRadius * Math.cos(randomTheta),
|
|
@@ -531,15 +531,30 @@
|
|
|
531
531
|
}
|
|
532
532
|
}
|
|
533
533
|
}
|
|
534
|
+
var __classPrivateFieldSet = undefined && undefined.__classPrivateFieldSet || function(receiver, state, value, kind, f) {
|
|
535
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
536
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
537
|
+
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");
|
|
538
|
+
return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value),
|
|
539
|
+
value;
|
|
540
|
+
};
|
|
541
|
+
var __classPrivateFieldGet = undefined && undefined.__classPrivateFieldGet || function(receiver, state, kind, f) {
|
|
542
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
543
|
+
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");
|
|
544
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
545
|
+
};
|
|
546
|
+
var _InteractionManager_engine;
|
|
534
547
|
class InteractionManager_InteractionManager {
|
|
535
|
-
constructor(container) {
|
|
548
|
+
constructor(engine, container) {
|
|
536
549
|
this.container = container;
|
|
550
|
+
_InteractionManager_engine.set(this, void 0);
|
|
551
|
+
__classPrivateFieldSet(this, _InteractionManager_engine, engine, "f");
|
|
537
552
|
this.externalInteractors = [];
|
|
538
553
|
this.particleInteractors = [];
|
|
539
554
|
this.init();
|
|
540
555
|
}
|
|
541
556
|
init() {
|
|
542
|
-
const interactors =
|
|
557
|
+
const interactors = __classPrivateFieldGet(this, _InteractionManager_engine, "f").plugins.getInteractors(this.container, true);
|
|
543
558
|
this.externalInteractors = [];
|
|
544
559
|
this.particleInteractors = [];
|
|
545
560
|
for (const interactor of interactors) {
|
|
@@ -572,6 +587,7 @@
|
|
|
572
587
|
}
|
|
573
588
|
}
|
|
574
589
|
}
|
|
590
|
+
_InteractionManager_engine = new WeakMap;
|
|
575
591
|
function applyDistance(particle) {
|
|
576
592
|
const initialPosition = particle.initialPosition;
|
|
577
593
|
const {dx: dx, dy: dy} = getDistances(initialPosition, particle.position);
|
|
@@ -745,26 +761,38 @@
|
|
|
745
761
|
return proximityFactor / slowFactor;
|
|
746
762
|
}
|
|
747
763
|
}
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
class
|
|
757
|
-
|
|
758
|
-
|
|
764
|
+
var Plugins_classPrivateFieldSet = undefined && undefined.__classPrivateFieldSet || function(receiver, state, value, kind, f) {
|
|
765
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
766
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
767
|
+
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");
|
|
768
|
+
return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value),
|
|
769
|
+
value;
|
|
770
|
+
};
|
|
771
|
+
var _Plugins_engine;
|
|
772
|
+
class Plugins {
|
|
773
|
+
constructor(engine) {
|
|
774
|
+
_Plugins_engine.set(this, void 0);
|
|
775
|
+
Plugins_classPrivateFieldSet(this, _Plugins_engine, engine, "f");
|
|
776
|
+
this.plugins = [];
|
|
777
|
+
this.interactorsInitializers = new Map;
|
|
778
|
+
this.updatersInitializers = new Map;
|
|
779
|
+
this.interactors = new Map;
|
|
780
|
+
this.updaters = new Map;
|
|
781
|
+
this.presets = new Map;
|
|
782
|
+
this.drawers = new Map;
|
|
783
|
+
this.pathGenerators = new Map;
|
|
784
|
+
}
|
|
785
|
+
getPlugin(plugin) {
|
|
786
|
+
return this.plugins.find((t => t.id === plugin));
|
|
759
787
|
}
|
|
760
|
-
|
|
761
|
-
if (!
|
|
762
|
-
plugins.push(plugin);
|
|
788
|
+
addPlugin(plugin) {
|
|
789
|
+
if (!this.getPlugin(plugin.id)) {
|
|
790
|
+
this.plugins.push(plugin);
|
|
763
791
|
}
|
|
764
792
|
}
|
|
765
|
-
|
|
793
|
+
getAvailablePlugins(container) {
|
|
766
794
|
const res = new Map;
|
|
767
|
-
for (const plugin of plugins) {
|
|
795
|
+
for (const plugin of this.plugins) {
|
|
768
796
|
if (!plugin.needsPlugin(container.actualOptions)) {
|
|
769
797
|
continue;
|
|
770
798
|
}
|
|
@@ -772,61 +800,62 @@
|
|
|
772
800
|
}
|
|
773
801
|
return res;
|
|
774
802
|
}
|
|
775
|
-
|
|
776
|
-
for (const plugin of plugins) {
|
|
803
|
+
loadOptions(options, sourceOptions) {
|
|
804
|
+
for (const plugin of this.plugins) {
|
|
777
805
|
plugin.loadOptions(options, sourceOptions);
|
|
778
806
|
}
|
|
779
807
|
}
|
|
780
|
-
|
|
781
|
-
return presets.get(preset);
|
|
808
|
+
getPreset(preset) {
|
|
809
|
+
return this.presets.get(preset);
|
|
782
810
|
}
|
|
783
|
-
|
|
784
|
-
if (override || !
|
|
785
|
-
presets.set(presetKey, options);
|
|
811
|
+
addPreset(presetKey, options, override = false) {
|
|
812
|
+
if (override || !this.getPreset(presetKey)) {
|
|
813
|
+
this.presets.set(presetKey, options);
|
|
786
814
|
}
|
|
787
815
|
}
|
|
788
|
-
|
|
789
|
-
if (!
|
|
790
|
-
drawers.set(type, drawer);
|
|
816
|
+
addShapeDrawer(type, drawer) {
|
|
817
|
+
if (!this.getShapeDrawer(type)) {
|
|
818
|
+
this.drawers.set(type, drawer);
|
|
791
819
|
}
|
|
792
820
|
}
|
|
793
|
-
|
|
794
|
-
return drawers.get(type);
|
|
821
|
+
getShapeDrawer(type) {
|
|
822
|
+
return this.drawers.get(type);
|
|
795
823
|
}
|
|
796
|
-
|
|
797
|
-
return drawers.keys();
|
|
824
|
+
getSupportedShapes() {
|
|
825
|
+
return this.drawers.keys();
|
|
798
826
|
}
|
|
799
|
-
|
|
800
|
-
return pathGenerators.get(type);
|
|
827
|
+
getPathGenerator(type) {
|
|
828
|
+
return this.pathGenerators.get(type);
|
|
801
829
|
}
|
|
802
|
-
|
|
803
|
-
if (!
|
|
804
|
-
pathGenerators.set(type, pathGenerator);
|
|
830
|
+
addPathGenerator(type, pathGenerator) {
|
|
831
|
+
if (!this.getPathGenerator(type)) {
|
|
832
|
+
this.pathGenerators.set(type, pathGenerator);
|
|
805
833
|
}
|
|
806
834
|
}
|
|
807
|
-
|
|
808
|
-
let res = interactors.get(container);
|
|
835
|
+
getInteractors(container, force = false) {
|
|
836
|
+
let res = this.interactors.get(container);
|
|
809
837
|
if (!res || force) {
|
|
810
|
-
res = [ ...interactorsInitializers.values() ].map((t => t(container)));
|
|
811
|
-
interactors.set(container, res);
|
|
838
|
+
res = [ ...this.interactorsInitializers.values() ].map((t => t(container)));
|
|
839
|
+
this.interactors.set(container, res);
|
|
812
840
|
}
|
|
813
841
|
return res;
|
|
814
842
|
}
|
|
815
|
-
|
|
816
|
-
interactorsInitializers.set(name, initInteractor);
|
|
843
|
+
addInteractor(name, initInteractor) {
|
|
844
|
+
this.interactorsInitializers.set(name, initInteractor);
|
|
817
845
|
}
|
|
818
|
-
|
|
819
|
-
let res = updaters.get(container);
|
|
846
|
+
getUpdaters(container, force = false) {
|
|
847
|
+
let res = this.updaters.get(container);
|
|
820
848
|
if (!res || force) {
|
|
821
|
-
res = [ ...updatersInitializers.values() ].map((t => t(container)));
|
|
822
|
-
updaters.set(container, res);
|
|
849
|
+
res = [ ...this.updatersInitializers.values() ].map((t => t(container)));
|
|
850
|
+
this.updaters.set(container, res);
|
|
823
851
|
}
|
|
824
852
|
return res;
|
|
825
853
|
}
|
|
826
|
-
|
|
827
|
-
updatersInitializers.set(name, initUpdater);
|
|
854
|
+
addParticleUpdater(name, initUpdater) {
|
|
855
|
+
this.updatersInitializers.set(name, initUpdater);
|
|
828
856
|
}
|
|
829
857
|
}
|
|
858
|
+
_Plugins_engine = new WeakMap;
|
|
830
859
|
class QuadTree_QuadTree {
|
|
831
860
|
constructor(rectangle, capacity) {
|
|
832
861
|
this.rectangle = rectangle;
|
|
@@ -2275,15 +2304,24 @@
|
|
|
2275
2304
|
}
|
|
2276
2305
|
}
|
|
2277
2306
|
}
|
|
2278
|
-
var
|
|
2307
|
+
var Options_classPrivateFieldSet = undefined && undefined.__classPrivateFieldSet || function(receiver, state, value, kind, f) {
|
|
2308
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
2309
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
2310
|
+
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");
|
|
2311
|
+
return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value),
|
|
2312
|
+
value;
|
|
2313
|
+
};
|
|
2314
|
+
var Options_classPrivateFieldGet = undefined && undefined.__classPrivateFieldGet || function(receiver, state, kind, f) {
|
|
2279
2315
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
2280
2316
|
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");
|
|
2281
2317
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
2282
2318
|
};
|
|
2283
|
-
var _Options_instances, _Options_findDefaultTheme;
|
|
2319
|
+
var _Options_instances, _Options_engine, _Options_findDefaultTheme;
|
|
2284
2320
|
class Options_Options {
|
|
2285
|
-
constructor() {
|
|
2321
|
+
constructor(engine) {
|
|
2286
2322
|
_Options_instances.add(this);
|
|
2323
|
+
_Options_engine.set(this, void 0);
|
|
2324
|
+
Options_classPrivateFieldSet(this, _Options_engine, engine, "f");
|
|
2287
2325
|
this.autoPlay = true;
|
|
2288
2326
|
this.background = new Background;
|
|
2289
2327
|
this.backgroundMask = new BackgroundMask;
|
|
@@ -2376,7 +2414,7 @@
|
|
|
2376
2414
|
this.motion.load(data.motion);
|
|
2377
2415
|
this.particles.load(data.particles);
|
|
2378
2416
|
this.style = deepExtend(this.style, data.style);
|
|
2379
|
-
|
|
2417
|
+
Options_classPrivateFieldGet(this, _Options_engine, "f").plugins.loadOptions(this, data);
|
|
2380
2418
|
if (data.responsive !== undefined) {
|
|
2381
2419
|
for (const responsive of data.responsive) {
|
|
2382
2420
|
const optResponsive = new Responsive;
|
|
@@ -2392,8 +2430,8 @@
|
|
|
2392
2430
|
this.themes.push(optTheme);
|
|
2393
2431
|
}
|
|
2394
2432
|
}
|
|
2395
|
-
this.defaultDarkTheme = (_d =
|
|
2396
|
-
this.defaultLightTheme = (_e =
|
|
2433
|
+
this.defaultDarkTheme = (_d = Options_classPrivateFieldGet(this, _Options_instances, "m", _Options_findDefaultTheme).call(this, "dark")) === null || _d === void 0 ? void 0 : _d.name;
|
|
2434
|
+
this.defaultLightTheme = (_e = Options_classPrivateFieldGet(this, _Options_instances, "m", _Options_findDefaultTheme).call(this, "light")) === null || _e === void 0 ? void 0 : _e.name;
|
|
2397
2435
|
}
|
|
2398
2436
|
setTheme(name) {
|
|
2399
2437
|
if (name) {
|
|
@@ -2402,7 +2440,7 @@
|
|
|
2402
2440
|
this.load(chosenTheme.options);
|
|
2403
2441
|
}
|
|
2404
2442
|
} else {
|
|
2405
|
-
const mediaMatch = typeof matchMedia !== "undefined" && matchMedia("(prefers-color-scheme: dark)"), clientDarkMode = mediaMatch && mediaMatch.matches, defaultTheme =
|
|
2443
|
+
const mediaMatch = typeof matchMedia !== "undefined" && matchMedia("(prefers-color-scheme: dark)"), clientDarkMode = mediaMatch && mediaMatch.matches, defaultTheme = Options_classPrivateFieldGet(this, _Options_instances, "m", _Options_findDefaultTheme).call(this, clientDarkMode ? "dark" : "light");
|
|
2406
2444
|
if (defaultTheme) {
|
|
2407
2445
|
this.load(defaultTheme.options);
|
|
2408
2446
|
}
|
|
@@ -2415,13 +2453,26 @@
|
|
|
2415
2453
|
return responsiveOptions === null || responsiveOptions === void 0 ? void 0 : responsiveOptions.maxWidth;
|
|
2416
2454
|
}
|
|
2417
2455
|
importPreset(preset) {
|
|
2418
|
-
this.load(
|
|
2456
|
+
this.load(Options_classPrivateFieldGet(this, _Options_engine, "f").plugins.getPreset(preset));
|
|
2419
2457
|
}
|
|
2420
2458
|
}
|
|
2421
|
-
_Options_instances = new WeakSet, _Options_findDefaultTheme = function _Options_findDefaultTheme(mode) {
|
|
2459
|
+
_Options_engine = new WeakMap, _Options_instances = new WeakSet, _Options_findDefaultTheme = function _Options_findDefaultTheme(mode) {
|
|
2422
2460
|
var _a;
|
|
2423
2461
|
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"));
|
|
2424
2462
|
};
|
|
2463
|
+
var Particle_classPrivateFieldSet = undefined && undefined.__classPrivateFieldSet || function(receiver, state, value, kind, f) {
|
|
2464
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
2465
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
2466
|
+
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");
|
|
2467
|
+
return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value),
|
|
2468
|
+
value;
|
|
2469
|
+
};
|
|
2470
|
+
var Particle_classPrivateFieldGet = undefined && undefined.__classPrivateFieldGet || function(receiver, state, kind, f) {
|
|
2471
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
2472
|
+
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");
|
|
2473
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
2474
|
+
};
|
|
2475
|
+
var _Particle_engine;
|
|
2425
2476
|
const fixOutMode = data => {
|
|
2426
2477
|
if (isInArray(data.outMode, data.checkModes) || isInArray(data.outMode, data.checkModes)) {
|
|
2427
2478
|
if (data.coord > data.maxCoord - data.radius * 2) {
|
|
@@ -2432,11 +2483,13 @@
|
|
|
2432
2483
|
}
|
|
2433
2484
|
};
|
|
2434
2485
|
class Particle_Particle {
|
|
2435
|
-
constructor(id, container, position, overrideOptions, group) {
|
|
2486
|
+
constructor(engine, id, container, position, overrideOptions, group) {
|
|
2436
2487
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
2437
2488
|
this.id = id;
|
|
2438
2489
|
this.container = container;
|
|
2439
2490
|
this.group = group;
|
|
2491
|
+
_Particle_engine.set(this, void 0);
|
|
2492
|
+
Particle_classPrivateFieldSet(this, _Particle_engine, engine, "f");
|
|
2440
2493
|
this.fill = true;
|
|
2441
2494
|
this.close = true;
|
|
2442
2495
|
this.lastPathTime = 0;
|
|
@@ -2530,7 +2583,7 @@
|
|
|
2530
2583
|
this.sides = 24;
|
|
2531
2584
|
let drawer = container.drawers.get(this.shape);
|
|
2532
2585
|
if (!drawer) {
|
|
2533
|
-
drawer =
|
|
2586
|
+
drawer = Particle_classPrivateFieldGet(this, _Particle_engine, "f").plugins.getShapeDrawer(this.shape);
|
|
2534
2587
|
if (drawer) {
|
|
2535
2588
|
container.drawers.set(this.shape, drawer);
|
|
2536
2589
|
}
|
|
@@ -2770,9 +2823,25 @@
|
|
|
2770
2823
|
return life;
|
|
2771
2824
|
}
|
|
2772
2825
|
}
|
|
2826
|
+
_Particle_engine = new WeakMap;
|
|
2827
|
+
var Particles_classPrivateFieldSet = undefined && undefined.__classPrivateFieldSet || function(receiver, state, value, kind, f) {
|
|
2828
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
2829
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
2830
|
+
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");
|
|
2831
|
+
return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value),
|
|
2832
|
+
value;
|
|
2833
|
+
};
|
|
2834
|
+
var Particles_classPrivateFieldGet = undefined && undefined.__classPrivateFieldGet || function(receiver, state, kind, f) {
|
|
2835
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
2836
|
+
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");
|
|
2837
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
2838
|
+
};
|
|
2839
|
+
var _Particles_engine;
|
|
2773
2840
|
class Particles_Particles {
|
|
2774
|
-
constructor(container) {
|
|
2841
|
+
constructor(engine, container) {
|
|
2775
2842
|
this.container = container;
|
|
2843
|
+
_Particles_engine.set(this, void 0);
|
|
2844
|
+
Particles_classPrivateFieldSet(this, _Particles_engine, engine, "f");
|
|
2776
2845
|
this.nextId = 0;
|
|
2777
2846
|
this.array = [];
|
|
2778
2847
|
this.zArray = [];
|
|
@@ -2784,11 +2853,11 @@
|
|
|
2784
2853
|
links: new Map,
|
|
2785
2854
|
triangles: new Map
|
|
2786
2855
|
};
|
|
2787
|
-
this.interactionManager = new InteractionManager(container);
|
|
2856
|
+
this.interactionManager = new InteractionManager(Particles_classPrivateFieldGet(this, _Particles_engine, "f"), container);
|
|
2788
2857
|
const canvasSize = this.container.canvas.size;
|
|
2789
2858
|
this.linksColors = new Map;
|
|
2790
2859
|
this.quadTree = new QuadTree(new Rectangle(-canvasSize.width / 4, -canvasSize.height / 4, canvasSize.width * 3 / 2, canvasSize.height * 3 / 2), 4);
|
|
2791
|
-
this.updaters =
|
|
2860
|
+
this.updaters = Particles_classPrivateFieldGet(this, _Particles_engine, "f").plugins.getUpdaters(container, true);
|
|
2792
2861
|
}
|
|
2793
2862
|
get count() {
|
|
2794
2863
|
return this.array.length;
|
|
@@ -2802,7 +2871,7 @@
|
|
|
2802
2871
|
this.freqs.links = new Map;
|
|
2803
2872
|
this.freqs.triangles = new Map;
|
|
2804
2873
|
let handled = false;
|
|
2805
|
-
this.updaters =
|
|
2874
|
+
this.updaters = Particles_classPrivateFieldGet(this, _Particles_engine, "f").plugins.getUpdaters(container, true);
|
|
2806
2875
|
this.interactionManager.init();
|
|
2807
2876
|
for (const [, plugin] of container.plugins) {
|
|
2808
2877
|
if (plugin.particlesInitialization !== undefined) {
|
|
@@ -3049,7 +3118,7 @@
|
|
|
3049
3118
|
}
|
|
3050
3119
|
pushParticle(position, overrideOptions, group, initializer) {
|
|
3051
3120
|
try {
|
|
3052
|
-
const particle = new Particle(this.nextId, this.container, position, overrideOptions, group);
|
|
3121
|
+
const particle = new Particle(Particles_classPrivateFieldGet(this, _Particles_engine, "f"), this.nextId, this.container, position, overrideOptions, group);
|
|
3053
3122
|
let canAdd = true;
|
|
3054
3123
|
if (initializer) {
|
|
3055
3124
|
canAdd = initializer(particle);
|
|
@@ -3067,6 +3136,7 @@
|
|
|
3067
3136
|
}
|
|
3068
3137
|
}
|
|
3069
3138
|
}
|
|
3139
|
+
_Particles_engine = new WeakMap;
|
|
3070
3140
|
class Retina_Retina {
|
|
3071
3141
|
constructor(container) {
|
|
3072
3142
|
this.container = container;
|
|
@@ -3154,9 +3224,24 @@
|
|
|
3154
3224
|
}
|
|
3155
3225
|
}
|
|
3156
3226
|
}
|
|
3227
|
+
var Container_classPrivateFieldSet = undefined && undefined.__classPrivateFieldSet || function(receiver, state, value, kind, f) {
|
|
3228
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3229
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
3230
|
+
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");
|
|
3231
|
+
return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value),
|
|
3232
|
+
value;
|
|
3233
|
+
};
|
|
3234
|
+
var Container_classPrivateFieldGet = undefined && undefined.__classPrivateFieldGet || function(receiver, state, kind, f) {
|
|
3235
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
3236
|
+
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");
|
|
3237
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
3238
|
+
};
|
|
3239
|
+
var _Container_engine;
|
|
3157
3240
|
class Container_Container {
|
|
3158
|
-
constructor(id, sourceOptions, ...presets) {
|
|
3241
|
+
constructor(engine, id, sourceOptions, ...presets) {
|
|
3159
3242
|
this.id = id;
|
|
3243
|
+
_Container_engine.set(this, void 0);
|
|
3244
|
+
Container_classPrivateFieldSet(this, _Container_engine, engine, "f");
|
|
3160
3245
|
this.fpsLimit = 120;
|
|
3161
3246
|
this.duration = 0;
|
|
3162
3247
|
this.lifeTime = 0;
|
|
@@ -3171,7 +3256,7 @@
|
|
|
3171
3256
|
this._initialSourceOptions = sourceOptions;
|
|
3172
3257
|
this.retina = new Retina(this);
|
|
3173
3258
|
this.canvas = new Canvas(this);
|
|
3174
|
-
this.particles = new Particles(this);
|
|
3259
|
+
this.particles = new Particles(Container_classPrivateFieldGet(this, _Container_engine, "f"), this);
|
|
3175
3260
|
this.drawer = new FrameManager(this);
|
|
3176
3261
|
this.presets = presets;
|
|
3177
3262
|
this.pathGenerator = {
|
|
@@ -3200,8 +3285,8 @@
|
|
|
3200
3285
|
this.plugins = new Map;
|
|
3201
3286
|
this.drawers = new Map;
|
|
3202
3287
|
this.density = 1;
|
|
3203
|
-
this._options = new Options;
|
|
3204
|
-
this.actualOptions = new Options;
|
|
3288
|
+
this._options = new Options(Container_classPrivateFieldGet(this, _Container_engine, "f"));
|
|
3289
|
+
this.actualOptions = new Options(Container_classPrivateFieldGet(this, _Container_engine, "f"));
|
|
3205
3290
|
this.eventListeners = new EventListeners(this);
|
|
3206
3291
|
if (typeof IntersectionObserver !== "undefined" && IntersectionObserver) {
|
|
3207
3292
|
this.intersectionObserver = new IntersectionObserver((entries => this.intersectionManager(entries)));
|
|
@@ -3316,7 +3401,7 @@
|
|
|
3316
3401
|
return this.start();
|
|
3317
3402
|
}
|
|
3318
3403
|
reset() {
|
|
3319
|
-
this._options = new Options;
|
|
3404
|
+
this._options = new Options(Container_classPrivateFieldGet(this, _Container_engine, "f"));
|
|
3320
3405
|
return this.refresh();
|
|
3321
3406
|
}
|
|
3322
3407
|
stop() {
|
|
@@ -3457,20 +3542,20 @@
|
|
|
3457
3542
|
return false;
|
|
3458
3543
|
}
|
|
3459
3544
|
async init() {
|
|
3460
|
-
this._options = new Options;
|
|
3545
|
+
this._options = new Options(Container_classPrivateFieldGet(this, _Container_engine, "f"));
|
|
3461
3546
|
for (const preset of this.presets) {
|
|
3462
|
-
this._options.load(
|
|
3547
|
+
this._options.load(Container_classPrivateFieldGet(this, _Container_engine, "f").plugins.getPreset(preset));
|
|
3463
3548
|
}
|
|
3464
|
-
const shapes =
|
|
3549
|
+
const shapes = Container_classPrivateFieldGet(this, _Container_engine, "f").plugins.getSupportedShapes();
|
|
3465
3550
|
for (const type of shapes) {
|
|
3466
|
-
const drawer =
|
|
3551
|
+
const drawer = Container_classPrivateFieldGet(this, _Container_engine, "f").plugins.getShapeDrawer(type);
|
|
3467
3552
|
if (drawer) {
|
|
3468
3553
|
this.drawers.set(type, drawer);
|
|
3469
3554
|
}
|
|
3470
3555
|
}
|
|
3471
3556
|
this._options.load(this._initialSourceOptions);
|
|
3472
3557
|
this._options.load(this._sourceOptions);
|
|
3473
|
-
this.actualOptions = new Options;
|
|
3558
|
+
this.actualOptions = new Options(Container_classPrivateFieldGet(this, _Container_engine, "f"));
|
|
3474
3559
|
this.actualOptions.load(this._options);
|
|
3475
3560
|
this.retina.init();
|
|
3476
3561
|
this.canvas.init();
|
|
@@ -3481,7 +3566,7 @@
|
|
|
3481
3566
|
this.duration = getRangeValue(this.actualOptions.duration);
|
|
3482
3567
|
this.lifeTime = 0;
|
|
3483
3568
|
this.fpsLimit = this.actualOptions.fpsLimit > 0 ? this.actualOptions.fpsLimit : 120;
|
|
3484
|
-
const availablePlugins =
|
|
3569
|
+
const availablePlugins = Container_classPrivateFieldGet(this, _Container_engine, "f").plugins.getAvailablePlugins(this);
|
|
3485
3570
|
for (const [id, plugin] of availablePlugins) {
|
|
3486
3571
|
this.plugins.set(id, plugin);
|
|
3487
3572
|
}
|
|
@@ -3499,7 +3584,7 @@
|
|
|
3499
3584
|
}
|
|
3500
3585
|
const pathOptions = this.actualOptions.particles.move.path;
|
|
3501
3586
|
if (pathOptions.generator) {
|
|
3502
|
-
const customGenerator =
|
|
3587
|
+
const customGenerator = Container_classPrivateFieldGet(this, _Container_engine, "f").plugins.getPathGenerator(pathOptions.generator);
|
|
3503
3588
|
if (customGenerator) {
|
|
3504
3589
|
if (customGenerator.init) {
|
|
3505
3590
|
this.pathGenerator.init = customGenerator.init;
|
|
@@ -3536,24 +3621,41 @@
|
|
|
3536
3621
|
}
|
|
3537
3622
|
}
|
|
3538
3623
|
}
|
|
3539
|
-
|
|
3624
|
+
_Container_engine = new WeakMap;
|
|
3625
|
+
var Loader_classPrivateFieldSet = undefined && undefined.__classPrivateFieldSet || function(receiver, state, value, kind, f) {
|
|
3626
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3627
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
3628
|
+
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");
|
|
3629
|
+
return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value),
|
|
3630
|
+
value;
|
|
3631
|
+
};
|
|
3632
|
+
var Loader_classPrivateFieldGet = undefined && undefined.__classPrivateFieldGet || function(receiver, state, kind, f) {
|
|
3633
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
3634
|
+
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");
|
|
3635
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
3636
|
+
};
|
|
3637
|
+
var _Loader_engine;
|
|
3540
3638
|
function fetchError(statusCode) {
|
|
3541
3639
|
console.error(`Error tsParticles - fetch status: ${statusCode}`);
|
|
3542
3640
|
console.error("Error tsParticles - File config not found");
|
|
3543
3641
|
}
|
|
3544
3642
|
class Loader {
|
|
3545
|
-
|
|
3546
|
-
|
|
3643
|
+
constructor(engine) {
|
|
3644
|
+
_Loader_engine.set(this, void 0);
|
|
3645
|
+
Loader_classPrivateFieldSet(this, _Loader_engine, engine, "f");
|
|
3646
|
+
}
|
|
3647
|
+
dom() {
|
|
3648
|
+
return Loader_classPrivateFieldGet(this, _Loader_engine, "f").domArray;
|
|
3547
3649
|
}
|
|
3548
|
-
|
|
3549
|
-
const dom =
|
|
3650
|
+
domItem(index) {
|
|
3651
|
+
const dom = this.dom();
|
|
3550
3652
|
const item = dom[index];
|
|
3551
3653
|
if (item && !item.destroyed) {
|
|
3552
3654
|
return item;
|
|
3553
3655
|
}
|
|
3554
3656
|
dom.splice(index, 1);
|
|
3555
3657
|
}
|
|
3556
|
-
|
|
3658
|
+
async loadOptions(params) {
|
|
3557
3659
|
var _a, _b, _c;
|
|
3558
3660
|
const tagId = (_a = params.tagId) !== null && _a !== void 0 ? _a : `tsparticles${Math.floor(Math.random() * 1e4)}`;
|
|
3559
3661
|
const {options: options, index: index} = params;
|
|
@@ -3564,10 +3666,10 @@
|
|
|
3564
3666
|
(_c = document.querySelector("body")) === null || _c === void 0 ? void 0 : _c.append(domContainer);
|
|
3565
3667
|
}
|
|
3566
3668
|
const currentOptions = options instanceof Array ? itemFromArray(options, index) : options;
|
|
3567
|
-
const dom =
|
|
3669
|
+
const dom = this.dom();
|
|
3568
3670
|
const oldIndex = dom.findIndex((v => v.id === tagId));
|
|
3569
3671
|
if (oldIndex >= 0) {
|
|
3570
|
-
const old =
|
|
3672
|
+
const old = this.domItem(oldIndex);
|
|
3571
3673
|
if (old && !old.destroyed) {
|
|
3572
3674
|
old.destroy();
|
|
3573
3675
|
dom.splice(oldIndex, 1);
|
|
@@ -3590,7 +3692,7 @@
|
|
|
3590
3692
|
domContainer.appendChild(canvasEl);
|
|
3591
3693
|
}
|
|
3592
3694
|
}
|
|
3593
|
-
const newItem = new Container(tagId, currentOptions);
|
|
3695
|
+
const newItem = new Container(Loader_classPrivateFieldGet(this, _Loader_engine, "f"), tagId, currentOptions);
|
|
3594
3696
|
if (oldIndex >= 0) {
|
|
3595
3697
|
dom.splice(oldIndex, 0, newItem);
|
|
3596
3698
|
} else {
|
|
@@ -3600,7 +3702,7 @@
|
|
|
3600
3702
|
await newItem.start();
|
|
3601
3703
|
return newItem;
|
|
3602
3704
|
}
|
|
3603
|
-
|
|
3705
|
+
async loadRemoteOptions(params) {
|
|
3604
3706
|
const {url: jsonUrl, index: index} = params;
|
|
3605
3707
|
const url = jsonUrl instanceof Array ? itemFromArray(jsonUrl, index) : jsonUrl;
|
|
3606
3708
|
if (!url) {
|
|
@@ -3612,14 +3714,14 @@
|
|
|
3612
3714
|
return;
|
|
3613
3715
|
}
|
|
3614
3716
|
const data = await response.json();
|
|
3615
|
-
return
|
|
3717
|
+
return this.loadOptions({
|
|
3616
3718
|
tagId: params.tagId,
|
|
3617
3719
|
element: params.element,
|
|
3618
3720
|
index: index,
|
|
3619
3721
|
options: data
|
|
3620
3722
|
});
|
|
3621
3723
|
}
|
|
3622
|
-
|
|
3724
|
+
load(tagId, options, index) {
|
|
3623
3725
|
const params = {
|
|
3624
3726
|
index: index
|
|
3625
3727
|
};
|
|
@@ -3635,7 +3737,7 @@
|
|
|
3635
3737
|
}
|
|
3636
3738
|
return this.loadOptions(params);
|
|
3637
3739
|
}
|
|
3638
|
-
|
|
3740
|
+
async set(id, domContainer, options, index) {
|
|
3639
3741
|
const params = {
|
|
3640
3742
|
index: index
|
|
3641
3743
|
};
|
|
@@ -3656,7 +3758,7 @@
|
|
|
3656
3758
|
}
|
|
3657
3759
|
return this.loadOptions(params);
|
|
3658
3760
|
}
|
|
3659
|
-
|
|
3761
|
+
async loadJSON(tagId, jsonUrl, index) {
|
|
3660
3762
|
let url, id;
|
|
3661
3763
|
if (typeof jsonUrl === "number" || jsonUrl === undefined) {
|
|
3662
3764
|
url = tagId;
|
|
@@ -3664,13 +3766,13 @@
|
|
|
3664
3766
|
id = tagId;
|
|
3665
3767
|
url = jsonUrl;
|
|
3666
3768
|
}
|
|
3667
|
-
return
|
|
3769
|
+
return this.loadRemoteOptions({
|
|
3668
3770
|
tagId: id,
|
|
3669
3771
|
url: url,
|
|
3670
3772
|
index: index
|
|
3671
3773
|
});
|
|
3672
3774
|
}
|
|
3673
|
-
|
|
3775
|
+
async setJSON(id, domContainer, jsonUrl, index) {
|
|
3674
3776
|
let url, newId, newIndex, element;
|
|
3675
3777
|
if (id instanceof HTMLElement) {
|
|
3676
3778
|
element = id;
|
|
@@ -3682,15 +3784,15 @@
|
|
|
3682
3784
|
url = jsonUrl;
|
|
3683
3785
|
newIndex = index;
|
|
3684
3786
|
}
|
|
3685
|
-
return
|
|
3787
|
+
return this.loadRemoteOptions({
|
|
3686
3788
|
tagId: newId,
|
|
3687
3789
|
url: url,
|
|
3688
3790
|
index: newIndex,
|
|
3689
3791
|
element: element
|
|
3690
3792
|
});
|
|
3691
3793
|
}
|
|
3692
|
-
|
|
3693
|
-
const dom =
|
|
3794
|
+
setOnClickHandler(callback) {
|
|
3795
|
+
const dom = this.dom();
|
|
3694
3796
|
if (dom.length === 0) {
|
|
3695
3797
|
throw new Error("Can only set click handlers after calling tsParticles.load() or tsParticles.loadJSON()");
|
|
3696
3798
|
}
|
|
@@ -3699,6 +3801,7 @@
|
|
|
3699
3801
|
}
|
|
3700
3802
|
}
|
|
3701
3803
|
}
|
|
3804
|
+
_Loader_engine = new WeakMap;
|
|
3702
3805
|
function NumberUtils_clamp(num, min, max) {
|
|
3703
3806
|
return Math.min(Math.max(num, min), max);
|
|
3704
3807
|
}
|
|
@@ -4934,6 +5037,7 @@
|
|
|
4934
5037
|
if (data.direction !== undefined) {
|
|
4935
5038
|
this.direction = data.direction;
|
|
4936
5039
|
}
|
|
5040
|
+
this.domId = data.domId;
|
|
4937
5041
|
if (data.fill !== undefined) {
|
|
4938
5042
|
this.fill = data.fill;
|
|
4939
5043
|
}
|
|
@@ -4963,21 +5067,7 @@
|
|
|
4963
5067
|
}
|
|
4964
5068
|
}
|
|
4965
5069
|
}
|
|
4966
|
-
|
|
4967
|
-
class ShapeManager {
|
|
4968
|
-
static addShape(name, drawer) {
|
|
4969
|
-
if (!ShapeManager.getShape(name)) {
|
|
4970
|
-
shapes.set(name, drawer);
|
|
4971
|
-
}
|
|
4972
|
-
}
|
|
4973
|
-
static getShape(name) {
|
|
4974
|
-
return shapes.get(name);
|
|
4975
|
-
}
|
|
4976
|
-
static getSupportedShapes() {
|
|
4977
|
-
return shapes.keys();
|
|
4978
|
-
}
|
|
4979
|
-
}
|
|
4980
|
-
var __classPrivateFieldSet = undefined && undefined.__classPrivateFieldSet || function(receiver, state, value, kind, f) {
|
|
5070
|
+
var EmitterInstance_classPrivateFieldSet = undefined && undefined.__classPrivateFieldSet || function(receiver, state, value, kind, f) {
|
|
4981
5071
|
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4982
5072
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4983
5073
|
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");
|
|
@@ -4989,15 +5079,17 @@
|
|
|
4989
5079
|
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");
|
|
4990
5080
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
4991
5081
|
};
|
|
4992
|
-
var _EmitterInstance_firstSpawn, _EmitterInstance_startParticlesAdded;
|
|
5082
|
+
var _EmitterInstance_firstSpawn, _EmitterInstance_startParticlesAdded, _EmitterInstance_engine;
|
|
4993
5083
|
class EmitterInstance {
|
|
4994
|
-
constructor(emitters, container, options, position) {
|
|
5084
|
+
constructor(engine, emitters, container, options, position) {
|
|
4995
5085
|
var _a, _b, _c, _d, _e, _f;
|
|
4996
5086
|
var _g;
|
|
4997
5087
|
this.emitters = emitters;
|
|
4998
5088
|
this.container = container;
|
|
4999
5089
|
_EmitterInstance_firstSpawn.set(this, void 0);
|
|
5000
5090
|
_EmitterInstance_startParticlesAdded.set(this, void 0);
|
|
5091
|
+
_EmitterInstance_engine.set(this, void 0);
|
|
5092
|
+
EmitterInstance_classPrivateFieldSet(this, _EmitterInstance_engine, engine, "f");
|
|
5001
5093
|
this.currentDuration = 0;
|
|
5002
5094
|
this.currentEmitDelay = 0;
|
|
5003
5095
|
this.currentSpawnDelay = 0;
|
|
@@ -5009,12 +5101,11 @@
|
|
|
5009
5101
|
this.options.load(options);
|
|
5010
5102
|
}
|
|
5011
5103
|
this.spawnDelay = ((_a = this.options.life.delay) !== null && _a !== void 0 ? _a : 0) * 1e3 / this.container.retina.reduceFactor;
|
|
5012
|
-
this.position = (_b = this.initialPosition) !== null && _b !== void 0 ? _b : this.calcPosition();
|
|
5013
5104
|
this.name = this.options.name;
|
|
5014
|
-
this.shape =
|
|
5105
|
+
this.shape = (_b = EmitterInstance_classPrivateFieldGet(this, _EmitterInstance_engine, "f").emitterShapeManager) === null || _b === void 0 ? void 0 : _b.getShape(this.options.shape);
|
|
5015
5106
|
this.fill = this.options.fill;
|
|
5016
|
-
|
|
5017
|
-
|
|
5107
|
+
EmitterInstance_classPrivateFieldSet(this, _EmitterInstance_firstSpawn, !this.options.life.wait, "f");
|
|
5108
|
+
EmitterInstance_classPrivateFieldSet(this, _EmitterInstance_startParticlesAdded, false, "f");
|
|
5018
5109
|
let particlesOptions = Utils_deepExtend({}, this.options.particles);
|
|
5019
5110
|
particlesOptions !== null && particlesOptions !== void 0 ? particlesOptions : particlesOptions = {};
|
|
5020
5111
|
(_c = particlesOptions.move) !== null && _c !== void 0 ? _c : particlesOptions.move = {};
|
|
@@ -5076,12 +5167,12 @@
|
|
|
5076
5167
|
return;
|
|
5077
5168
|
}
|
|
5078
5169
|
if (EmitterInstance_classPrivateFieldGet(this, _EmitterInstance_firstSpawn, "f")) {
|
|
5079
|
-
|
|
5170
|
+
EmitterInstance_classPrivateFieldSet(this, _EmitterInstance_firstSpawn, false, "f");
|
|
5080
5171
|
this.currentSpawnDelay = (_a = this.spawnDelay) !== null && _a !== void 0 ? _a : 0;
|
|
5081
5172
|
this.currentEmitDelay = (_b = this.emitDelay) !== null && _b !== void 0 ? _b : 0;
|
|
5082
5173
|
}
|
|
5083
5174
|
if (!EmitterInstance_classPrivateFieldGet(this, _EmitterInstance_startParticlesAdded, "f")) {
|
|
5084
|
-
|
|
5175
|
+
EmitterInstance_classPrivateFieldSet(this, _EmitterInstance_startParticlesAdded, true, "f");
|
|
5085
5176
|
this.emitParticles(this.options.startCount);
|
|
5086
5177
|
}
|
|
5087
5178
|
if (this.duration !== undefined) {
|
|
@@ -5120,6 +5211,36 @@
|
|
|
5120
5211
|
}
|
|
5121
5212
|
}
|
|
5122
5213
|
}
|
|
5214
|
+
getPosition() {
|
|
5215
|
+
if (this.options.domId) {
|
|
5216
|
+
const container = this.container, element = document.getElementById(this.options.domId);
|
|
5217
|
+
if (element) {
|
|
5218
|
+
const elRect = element.getBoundingClientRect();
|
|
5219
|
+
return {
|
|
5220
|
+
x: (elRect.x + elRect.width / 2) * container.retina.pixelRatio,
|
|
5221
|
+
y: (elRect.y + elRect.height / 2) * container.retina.pixelRatio
|
|
5222
|
+
};
|
|
5223
|
+
}
|
|
5224
|
+
}
|
|
5225
|
+
return this.position;
|
|
5226
|
+
}
|
|
5227
|
+
getSize() {
|
|
5228
|
+
const container = this.container;
|
|
5229
|
+
if (this.options.domId) {
|
|
5230
|
+
const element = document.getElementById(this.options.domId);
|
|
5231
|
+
if (element) {
|
|
5232
|
+
const elRect = element.getBoundingClientRect();
|
|
5233
|
+
return {
|
|
5234
|
+
width: elRect.width * container.retina.pixelRatio,
|
|
5235
|
+
height: elRect.height * container.retina.pixelRatio
|
|
5236
|
+
};
|
|
5237
|
+
}
|
|
5238
|
+
}
|
|
5239
|
+
return {
|
|
5240
|
+
width: this.size.mode === "percent" ? container.canvas.size.width * this.size.width / 100 : this.size.width,
|
|
5241
|
+
height: this.size.mode === "percent" ? container.canvas.size.height * this.size.height / 100 : this.size.height
|
|
5242
|
+
};
|
|
5243
|
+
}
|
|
5123
5244
|
prepareToDie() {
|
|
5124
5245
|
var _a;
|
|
5125
5246
|
if (this.paused) {
|
|
@@ -5152,11 +5273,8 @@
|
|
|
5152
5273
|
emitParticles(quantity) {
|
|
5153
5274
|
var _a, _b, _c;
|
|
5154
5275
|
const container = this.container;
|
|
5155
|
-
const position = this.
|
|
5156
|
-
const
|
|
5157
|
-
x: this.size.mode === "percent" ? container.canvas.size.width * this.size.width / 100 : this.size.width,
|
|
5158
|
-
y: this.size.mode === "percent" ? container.canvas.size.height * this.size.height / 100 : this.size.height
|
|
5159
|
-
};
|
|
5276
|
+
const position = this.getPosition();
|
|
5277
|
+
const size = this.getSize();
|
|
5160
5278
|
for (let i = 0; i < quantity; i++) {
|
|
5161
5279
|
const particlesOptions = Utils_deepExtend({}, this.particlesOptions);
|
|
5162
5280
|
if (this.spawnColor) {
|
|
@@ -5174,7 +5292,10 @@
|
|
|
5174
5292
|
particlesOptions.color.value = this.spawnColor;
|
|
5175
5293
|
}
|
|
5176
5294
|
}
|
|
5177
|
-
|
|
5295
|
+
if (!position) {
|
|
5296
|
+
return;
|
|
5297
|
+
}
|
|
5298
|
+
const pPosition = (_c = (_b = this.shape) === null || _b === void 0 ? void 0 : _b.randomPosition(position, size, this.fill)) !== null && _c !== void 0 ? _c : position;
|
|
5178
5299
|
container.particles.addParticle(pPosition, particlesOptions);
|
|
5179
5300
|
}
|
|
5180
5301
|
}
|
|
@@ -5191,10 +5312,26 @@
|
|
|
5191
5312
|
return (initValue + colorSpeed * container.fpsLimit / emitFactor + colorOffset * 3.6) % maxValue;
|
|
5192
5313
|
}
|
|
5193
5314
|
}
|
|
5194
|
-
_EmitterInstance_firstSpawn = new WeakMap, _EmitterInstance_startParticlesAdded = new WeakMap
|
|
5315
|
+
_EmitterInstance_firstSpawn = new WeakMap, _EmitterInstance_startParticlesAdded = new WeakMap,
|
|
5316
|
+
_EmitterInstance_engine = new WeakMap;
|
|
5317
|
+
var Emitters_classPrivateFieldSet = undefined && undefined.__classPrivateFieldSet || function(receiver, state, value, kind, f) {
|
|
5318
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
5319
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5320
|
+
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");
|
|
5321
|
+
return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value),
|
|
5322
|
+
value;
|
|
5323
|
+
};
|
|
5324
|
+
var Emitters_classPrivateFieldGet = undefined && undefined.__classPrivateFieldGet || function(receiver, state, kind, f) {
|
|
5325
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
5326
|
+
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");
|
|
5327
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5328
|
+
};
|
|
5329
|
+
var _Emitters_engine;
|
|
5195
5330
|
class Emitters {
|
|
5196
|
-
constructor(container) {
|
|
5331
|
+
constructor(engine, container) {
|
|
5197
5332
|
this.container = container;
|
|
5333
|
+
_Emitters_engine.set(this, void 0);
|
|
5334
|
+
Emitters_classPrivateFieldSet(this, _Emitters_engine, engine, "f");
|
|
5198
5335
|
this.array = [];
|
|
5199
5336
|
this.emitters = [];
|
|
5200
5337
|
this.interactivityEmitters = [];
|
|
@@ -5306,7 +5443,7 @@
|
|
|
5306
5443
|
addEmitter(options, position) {
|
|
5307
5444
|
const emitterOptions = new Emitter;
|
|
5308
5445
|
emitterOptions.load(options);
|
|
5309
|
-
const emitter = new EmitterInstance(this, this.container, emitterOptions, position);
|
|
5446
|
+
const emitter = new EmitterInstance(Emitters_classPrivateFieldGet(this, _Emitters_engine, "f"), this, this.container, emitterOptions, position);
|
|
5310
5447
|
this.array.push(emitter);
|
|
5311
5448
|
return emitter;
|
|
5312
5449
|
}
|
|
@@ -5317,18 +5454,46 @@
|
|
|
5317
5454
|
}
|
|
5318
5455
|
}
|
|
5319
5456
|
}
|
|
5457
|
+
_Emitters_engine = new WeakMap;
|
|
5458
|
+
var ShapeManager_classPrivateFieldSet = undefined && undefined.__classPrivateFieldSet || function(receiver, state, value, kind, f) {
|
|
5459
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
5460
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5461
|
+
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");
|
|
5462
|
+
return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value),
|
|
5463
|
+
value;
|
|
5464
|
+
};
|
|
5465
|
+
var _ShapeManager_engine;
|
|
5466
|
+
const shapes = new Map;
|
|
5467
|
+
class ShapeManager {
|
|
5468
|
+
constructor(engine) {
|
|
5469
|
+
_ShapeManager_engine.set(this, void 0);
|
|
5470
|
+
ShapeManager_classPrivateFieldSet(this, _ShapeManager_engine, engine, "f");
|
|
5471
|
+
}
|
|
5472
|
+
addShape(name, drawer) {
|
|
5473
|
+
if (!this.getShape(name)) {
|
|
5474
|
+
shapes.set(name, drawer);
|
|
5475
|
+
}
|
|
5476
|
+
}
|
|
5477
|
+
getShape(name) {
|
|
5478
|
+
return shapes.get(name);
|
|
5479
|
+
}
|
|
5480
|
+
getSupportedShapes() {
|
|
5481
|
+
return shapes.keys();
|
|
5482
|
+
}
|
|
5483
|
+
}
|
|
5484
|
+
_ShapeManager_engine = new WeakMap;
|
|
5320
5485
|
function randomSquareCoordinate(position, offset) {
|
|
5321
5486
|
return position + offset * (Math.random() - .5);
|
|
5322
5487
|
}
|
|
5323
5488
|
class SquareShape {
|
|
5324
|
-
randomPosition(position,
|
|
5489
|
+
randomPosition(position, size, fill) {
|
|
5325
5490
|
if (fill) {
|
|
5326
5491
|
return {
|
|
5327
|
-
x: randomSquareCoordinate(position.x,
|
|
5328
|
-
y: randomSquareCoordinate(position.y,
|
|
5492
|
+
x: randomSquareCoordinate(position.x, size.width),
|
|
5493
|
+
y: randomSquareCoordinate(position.y, size.height)
|
|
5329
5494
|
};
|
|
5330
5495
|
} else {
|
|
5331
|
-
const halfW =
|
|
5496
|
+
const halfW = size.width / 2, halfH = size.height / 2, side = Math.floor(Math.random() * 4), v = (Math.random() - .5) * 2;
|
|
5332
5497
|
switch (side) {
|
|
5333
5498
|
case 0:
|
|
5334
5499
|
return {
|
|
@@ -5358,12 +5523,27 @@
|
|
|
5358
5523
|
}
|
|
5359
5524
|
}
|
|
5360
5525
|
}
|
|
5526
|
+
var Plugins_Emitters_classPrivateFieldSet = undefined && undefined.__classPrivateFieldSet || function(receiver, state, value, kind, f) {
|
|
5527
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
5528
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5529
|
+
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");
|
|
5530
|
+
return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value),
|
|
5531
|
+
value;
|
|
5532
|
+
};
|
|
5533
|
+
var Plugins_Emitters_classPrivateFieldGet = undefined && undefined.__classPrivateFieldGet || function(receiver, state, kind, f) {
|
|
5534
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
5535
|
+
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");
|
|
5536
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5537
|
+
};
|
|
5538
|
+
var _EmittersPlugin_engine;
|
|
5361
5539
|
class EmittersPlugin {
|
|
5362
|
-
constructor() {
|
|
5540
|
+
constructor(engine) {
|
|
5541
|
+
_EmittersPlugin_engine.set(this, void 0);
|
|
5542
|
+
Plugins_Emitters_classPrivateFieldSet(this, _EmittersPlugin_engine, engine, "f");
|
|
5363
5543
|
this.id = "emitters";
|
|
5364
5544
|
}
|
|
5365
5545
|
getPlugin(container) {
|
|
5366
|
-
return new Emitters(container);
|
|
5546
|
+
return new Emitters(Plugins_Emitters_classPrivateFieldGet(this, _EmittersPlugin_engine, "f"), container);
|
|
5367
5547
|
}
|
|
5368
5548
|
needsPlugin(options) {
|
|
5369
5549
|
var _a, _b, _c;
|
|
@@ -5412,14 +5592,19 @@
|
|
|
5412
5592
|
}
|
|
5413
5593
|
}
|
|
5414
5594
|
}
|
|
5595
|
+
_EmittersPlugin_engine = new WeakMap;
|
|
5415
5596
|
async function loadEmittersPlugin(engine) {
|
|
5416
|
-
|
|
5417
|
-
|
|
5597
|
+
if (!engine.emitterShapeManager) {
|
|
5598
|
+
engine.emitterShapeManager = new ShapeManager(engine);
|
|
5599
|
+
}
|
|
5418
5600
|
if (!engine.addEmitterShape) {
|
|
5419
5601
|
engine.addEmitterShape = (name, shape) => {
|
|
5420
|
-
|
|
5602
|
+
var _a;
|
|
5603
|
+
(_a = engine.emitterShapeManager) === null || _a === void 0 ? void 0 : _a.addShape(name, shape);
|
|
5421
5604
|
};
|
|
5422
5605
|
}
|
|
5606
|
+
const plugin = new EmittersPlugin(engine);
|
|
5607
|
+
await engine.addPlugin(plugin);
|
|
5423
5608
|
engine.addEmitterShape("circle", new CircleShape);
|
|
5424
5609
|
engine.addEmitterShape("square", new SquareShape);
|
|
5425
5610
|
}
|