@tsparticles/plugin-emitters 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.
Files changed (58) hide show
  1. package/214.min.js +2 -0
  2. package/214.min.js.LICENSE.txt +1 -0
  3. package/921.min.js +2 -0
  4. package/921.min.js.LICENSE.txt +1 -0
  5. package/browser/EmitterInstance.js +12 -13
  6. package/browser/Emitters.js +9 -8
  7. package/browser/EmittersPlugin.js +19 -32
  8. package/browser/Options/Classes/Emitter.js +2 -6
  9. package/browser/ShapeManager.js +0 -3
  10. package/browser/index.js +10 -18
  11. package/cjs/EmitterContainer.js +1 -2
  12. package/cjs/EmitterInstance.js +34 -39
  13. package/cjs/EmitterShapeBase.js +1 -5
  14. package/cjs/Emitters.js +21 -24
  15. package/cjs/EmittersEngine.js +1 -2
  16. package/cjs/EmittersPlugin.js +31 -48
  17. package/cjs/Enums/EmitterClickMode.js +2 -5
  18. package/cjs/IEmitterShape.js +1 -2
  19. package/cjs/IEmitterShapeGenerator.js +1 -2
  20. package/cjs/IRandomPositionData.js +1 -2
  21. package/cjs/Options/Classes/Emitter.js +16 -24
  22. package/cjs/Options/Classes/EmitterLife.js +5 -9
  23. package/cjs/Options/Classes/EmitterRate.js +5 -9
  24. package/cjs/Options/Classes/EmitterShape.js +6 -10
  25. package/cjs/Options/Classes/EmitterShapeReplace.js +3 -7
  26. package/cjs/Options/Classes/EmitterSize.js +4 -8
  27. package/cjs/Options/Interfaces/IEmitter.js +1 -2
  28. package/cjs/Options/Interfaces/IEmitterLife.js +1 -2
  29. package/cjs/Options/Interfaces/IEmitterRate.js +1 -2
  30. package/cjs/Options/Interfaces/IEmitterShape.js +1 -2
  31. package/cjs/Options/Interfaces/IEmitterShapeReplace.js +1 -2
  32. package/cjs/Options/Interfaces/IEmitterSize.js +1 -2
  33. package/cjs/ShapeManager.js +1 -8
  34. package/cjs/index.js +12 -37
  35. package/cjs/types.js +1 -2
  36. package/dist_browser_EmittersPlugin_js.js +110 -0
  37. package/dist_browser_ShapeManager_js.js +30 -0
  38. package/esm/EmitterInstance.js +12 -13
  39. package/esm/Emitters.js +9 -8
  40. package/esm/EmittersPlugin.js +19 -32
  41. package/esm/Options/Classes/Emitter.js +2 -6
  42. package/esm/ShapeManager.js +0 -3
  43. package/esm/index.js +10 -18
  44. package/package.json +4 -3
  45. package/report.html +5 -4
  46. package/tsparticles.plugin.emitters.js +215 -126
  47. package/tsparticles.plugin.emitters.min.js +1 -1
  48. package/tsparticles.plugin.emitters.min.js.LICENSE.txt +1 -1
  49. package/types/Options/Classes/EmitterShape.d.ts +1 -1
  50. package/types/Options/Classes/EmitterShapeReplace.d.ts +1 -1
  51. package/types/ShapeManager.d.ts +0 -3
  52. package/types/index.d.ts +7 -7
  53. package/umd/EmitterInstance.js +13 -14
  54. package/umd/Emitters.js +9 -8
  55. package/umd/EmittersPlugin.js +19 -32
  56. package/umd/Options/Classes/Emitter.js +2 -6
  57. package/umd/ShapeManager.js +0 -3
  58. package/umd/index.js +34 -19
@@ -1,39 +1,36 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EmittersPlugin = void 0;
4
- const engine_1 = require("@tsparticles/engine");
5
- const Emitter_js_1 = require("./Options/Classes/Emitter.js");
6
- const EmitterClickMode_js_1 = require("./Enums/EmitterClickMode.js");
7
- const Emitters_js_1 = require("./Emitters.js");
8
- class EmittersPlugin {
1
+ import { executeOnSingleOrMultiple, isArray, isInArray, } from "@tsparticles/engine";
2
+ import { Emitter } from "./Options/Classes/Emitter.js";
3
+ import { EmitterClickMode } from "./Enums/EmitterClickMode.js";
4
+ import { Emitters } from "./Emitters.js";
5
+ export class EmittersPlugin {
9
6
  constructor(engine) {
10
7
  this._engine = engine;
11
8
  this.id = "emitters";
12
9
  }
13
10
  getPlugin(container) {
14
- return Promise.resolve(new Emitters_js_1.Emitters(this._engine, container));
11
+ return Promise.resolve(new Emitters(this._engine, container));
15
12
  }
16
13
  loadOptions(options, source) {
17
14
  if (!this.needsPlugin(options) && !this.needsPlugin(source)) {
18
15
  return;
19
16
  }
20
17
  if (source?.emitters) {
21
- options.emitters = (0, engine_1.executeOnSingleOrMultiple)(source.emitters, emitter => {
22
- const tmp = new Emitter_js_1.Emitter();
18
+ options.emitters = executeOnSingleOrMultiple(source.emitters, emitter => {
19
+ const tmp = new Emitter();
23
20
  tmp.load(emitter);
24
21
  return tmp;
25
22
  });
26
23
  }
27
24
  const interactivityEmitters = source?.interactivity?.modes?.emitters;
28
25
  if (interactivityEmitters) {
29
- if ((0, engine_1.isArray)(interactivityEmitters)) {
26
+ if (isArray(interactivityEmitters)) {
30
27
  options.interactivity.modes.emitters = {
31
28
  random: {
32
29
  count: 1,
33
30
  enable: true,
34
31
  },
35
32
  value: interactivityEmitters.map(s => {
36
- const tmp = new Emitter_js_1.Emitter();
33
+ const tmp = new Emitter();
37
34
  tmp.load(s);
38
35
  return tmp;
39
36
  }),
@@ -41,42 +38,29 @@ class EmittersPlugin {
41
38
  }
42
39
  else {
43
40
  const emitterMode = interactivityEmitters;
44
- if (emitterMode.value !== undefined) {
45
- const defaultCount = 1;
46
- if ((0, engine_1.isArray)(emitterMode.value)) {
47
- options.interactivity.modes.emitters = {
48
- random: {
49
- count: emitterMode.random.count ?? defaultCount,
50
- enable: emitterMode.random.enable ?? false,
51
- },
52
- value: emitterMode.value.map(s => {
53
- const tmp = new Emitter_js_1.Emitter();
54
- tmp.load(s);
55
- return tmp;
56
- }),
57
- };
58
- }
59
- else {
60
- const tmp = new Emitter_js_1.Emitter();
61
- tmp.load(emitterMode.value);
62
- options.interactivity.modes.emitters = {
63
- random: {
64
- count: emitterMode.random.count ?? defaultCount,
65
- enable: emitterMode.random.enable ?? false,
66
- },
67
- value: tmp,
68
- };
69
- }
41
+ if (isArray(emitterMode.value)) {
42
+ options.interactivity.modes.emitters = {
43
+ random: {
44
+ count: emitterMode.random.count,
45
+ enable: emitterMode.random.enable,
46
+ },
47
+ value: emitterMode.value.map(s => {
48
+ const tmp = new Emitter();
49
+ tmp.load(s);
50
+ return tmp;
51
+ }),
52
+ };
70
53
  }
71
54
  else {
72
- const emitterOptions = (options.interactivity.modes.emitters = {
55
+ const tmp = new Emitter();
56
+ tmp.load(emitterMode.value);
57
+ options.interactivity.modes.emitters = {
73
58
  random: {
74
- count: 1,
75
- enable: false,
59
+ count: emitterMode.random.count,
60
+ enable: emitterMode.random.enable,
76
61
  },
77
- value: new Emitter_js_1.Emitter(),
78
- });
79
- emitterOptions.value.load(interactivityEmitters);
62
+ value: tmp,
63
+ };
80
64
  }
81
65
  }
82
66
  }
@@ -86,10 +70,9 @@ class EmittersPlugin {
86
70
  return false;
87
71
  }
88
72
  const emitters = options.emitters;
89
- return (((0, engine_1.isArray)(emitters) && !!emitters.length) ||
73
+ return ((isArray(emitters) && !!emitters.length) ||
90
74
  emitters !== undefined ||
91
75
  (!!options.interactivity?.events?.onClick?.mode &&
92
- (0, engine_1.isInArray)(EmitterClickMode_js_1.EmitterClickMode.emitter, options.interactivity.events.onClick.mode)));
76
+ isInArray(EmitterClickMode.emitter, options.interactivity.events.onClick.mode)));
93
77
  }
94
78
  }
95
- exports.EmittersPlugin = EmittersPlugin;
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EmitterClickMode = void 0;
4
- var EmitterClickMode;
1
+ export var EmitterClickMode;
5
2
  (function (EmitterClickMode) {
6
3
  EmitterClickMode["emitter"] = "emitter";
7
- })(EmitterClickMode || (exports.EmitterClickMode = EmitterClickMode = {}));
4
+ })(EmitterClickMode || (EmitterClickMode = {}));
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
@@ -1,31 +1,26 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Emitter = void 0;
4
- const engine_1 = require("@tsparticles/engine");
5
- const EmitterLife_js_1 = require("./EmitterLife.js");
6
- const EmitterRate_js_1 = require("./EmitterRate.js");
7
- const EmitterShape_js_1 = require("./EmitterShape.js");
8
- const EmitterSize_js_1 = require("./EmitterSize.js");
9
- class Emitter {
1
+ import { AnimatableColor, deepExtend, executeOnSingleOrMultiple, isNull, setRangeValue, } from "@tsparticles/engine";
2
+ import { EmitterLife } from "./EmitterLife.js";
3
+ import { EmitterRate } from "./EmitterRate.js";
4
+ import { EmitterShape } from "./EmitterShape.js";
5
+ import { EmitterSize } from "./EmitterSize.js";
6
+ export class Emitter {
10
7
  constructor() {
11
8
  this.autoPlay = true;
12
9
  this.fill = true;
13
- this.life = new EmitterLife_js_1.EmitterLife();
14
- this.rate = new EmitterRate_js_1.EmitterRate();
15
- this.shape = new EmitterShape_js_1.EmitterShape();
10
+ this.life = new EmitterLife();
11
+ this.rate = new EmitterRate();
12
+ this.shape = new EmitterShape();
16
13
  this.startCount = 0;
17
14
  }
18
15
  load(data) {
19
- if ((0, engine_1.isNull)(data)) {
16
+ if (isNull(data)) {
20
17
  return;
21
18
  }
22
19
  if (data.autoPlay !== undefined) {
23
20
  this.autoPlay = data.autoPlay;
24
21
  }
25
22
  if (data.size !== undefined) {
26
- if (!this.size) {
27
- this.size = new EmitterSize_js_1.EmitterSize();
28
- }
23
+ this.size ??= new EmitterSize();
29
24
  this.size.load(data.size);
30
25
  }
31
26
  if (data.direction !== undefined) {
@@ -37,24 +32,22 @@ class Emitter {
37
32
  }
38
33
  this.life.load(data.life);
39
34
  this.name = data.name;
40
- this.particles = (0, engine_1.executeOnSingleOrMultiple)(data.particles, particles => {
41
- return (0, engine_1.deepExtend)({}, particles);
35
+ this.particles = executeOnSingleOrMultiple(data.particles, particles => {
36
+ return deepExtend({}, particles);
42
37
  });
43
38
  this.rate.load(data.rate);
44
39
  this.shape.load(data.shape);
45
40
  if (data.position !== undefined) {
46
41
  this.position = {};
47
42
  if (data.position.x !== undefined) {
48
- this.position.x = (0, engine_1.setRangeValue)(data.position.x);
43
+ this.position.x = setRangeValue(data.position.x);
49
44
  }
50
45
  if (data.position.y !== undefined) {
51
- this.position.y = (0, engine_1.setRangeValue)(data.position.y);
46
+ this.position.y = setRangeValue(data.position.y);
52
47
  }
53
48
  }
54
49
  if (data.spawnColor !== undefined) {
55
- if (this.spawnColor === undefined) {
56
- this.spawnColor = new engine_1.AnimatableColor();
57
- }
50
+ this.spawnColor ??= new AnimatableColor();
58
51
  this.spawnColor.load(data.spawnColor);
59
52
  }
60
53
  if (data.startCount !== undefined) {
@@ -62,4 +55,3 @@ class Emitter {
62
55
  }
63
56
  }
64
57
  }
65
- exports.Emitter = Emitter;
@@ -1,27 +1,23 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EmitterLife = void 0;
4
- const engine_1 = require("@tsparticles/engine");
5
- class EmitterLife {
1
+ import { isNull, setRangeValue } from "@tsparticles/engine";
2
+ export class EmitterLife {
6
3
  constructor() {
7
4
  this.wait = false;
8
5
  }
9
6
  load(data) {
10
- if ((0, engine_1.isNull)(data)) {
7
+ if (isNull(data)) {
11
8
  return;
12
9
  }
13
10
  if (data.count !== undefined) {
14
11
  this.count = data.count;
15
12
  }
16
13
  if (data.delay !== undefined) {
17
- this.delay = (0, engine_1.setRangeValue)(data.delay);
14
+ this.delay = setRangeValue(data.delay);
18
15
  }
19
16
  if (data.duration !== undefined) {
20
- this.duration = (0, engine_1.setRangeValue)(data.duration);
17
+ this.duration = setRangeValue(data.duration);
21
18
  }
22
19
  if (data.wait !== undefined) {
23
20
  this.wait = data.wait;
24
21
  }
25
22
  }
26
23
  }
27
- exports.EmitterLife = EmitterLife;
@@ -1,22 +1,18 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EmitterRate = void 0;
4
- const engine_1 = require("@tsparticles/engine");
5
- class EmitterRate {
1
+ import { isNull, setRangeValue } from "@tsparticles/engine";
2
+ export class EmitterRate {
6
3
  constructor() {
7
4
  this.quantity = 1;
8
5
  this.delay = 0.1;
9
6
  }
10
7
  load(data) {
11
- if ((0, engine_1.isNull)(data)) {
8
+ if (isNull(data)) {
12
9
  return;
13
10
  }
14
11
  if (data.quantity !== undefined) {
15
- this.quantity = (0, engine_1.setRangeValue)(data.quantity);
12
+ this.quantity = setRangeValue(data.quantity);
16
13
  }
17
14
  if (data.delay !== undefined) {
18
- this.delay = (0, engine_1.setRangeValue)(data.delay);
15
+ this.delay = setRangeValue(data.delay);
19
16
  }
20
17
  }
21
18
  }
22
- exports.EmitterRate = EmitterRate;
@@ -1,20 +1,17 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EmitterShape = void 0;
4
- const engine_1 = require("@tsparticles/engine");
5
- const EmitterShapeReplace_js_1 = require("./EmitterShapeReplace.js");
6
- class EmitterShape {
1
+ import { deepExtend, isNull } from "@tsparticles/engine";
2
+ import { EmitterShapeReplace } from "./EmitterShapeReplace.js";
3
+ export class EmitterShape {
7
4
  constructor() {
8
5
  this.options = {};
9
- this.replace = new EmitterShapeReplace_js_1.EmitterShapeReplace();
6
+ this.replace = new EmitterShapeReplace();
10
7
  this.type = "square";
11
8
  }
12
9
  load(data) {
13
- if ((0, engine_1.isNull)(data)) {
10
+ if (isNull(data)) {
14
11
  return;
15
12
  }
16
13
  if (data.options !== undefined) {
17
- this.options = (0, engine_1.deepExtend)({}, data.options ?? {});
14
+ this.options = deepExtend({}, data.options ?? {});
18
15
  }
19
16
  this.replace.load(data.replace);
20
17
  if (data.type !== undefined) {
@@ -22,4 +19,3 @@ class EmitterShape {
22
19
  }
23
20
  }
24
21
  }
25
- exports.EmitterShape = EmitterShape;
@@ -1,14 +1,11 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EmitterShapeReplace = void 0;
4
- const engine_1 = require("@tsparticles/engine");
5
- class EmitterShapeReplace {
1
+ import { isNull } from "@tsparticles/engine";
2
+ export class EmitterShapeReplace {
6
3
  constructor() {
7
4
  this.color = false;
8
5
  this.opacity = false;
9
6
  }
10
7
  load(data) {
11
- if ((0, engine_1.isNull)(data)) {
8
+ if (isNull(data)) {
12
9
  return;
13
10
  }
14
11
  if (data.color !== undefined) {
@@ -19,4 +16,3 @@ class EmitterShapeReplace {
19
16
  }
20
17
  }
21
18
  }
22
- exports.EmitterShapeReplace = EmitterShapeReplace;
@@ -1,15 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EmitterSize = void 0;
4
- const engine_1 = require("@tsparticles/engine");
5
- class EmitterSize {
1
+ import { PixelMode, isNull } from "@tsparticles/engine";
2
+ export class EmitterSize {
6
3
  constructor() {
7
- this.mode = engine_1.PixelMode.percent;
4
+ this.mode = PixelMode.percent;
8
5
  this.height = 0;
9
6
  this.width = 0;
10
7
  }
11
8
  load(data) {
12
- if ((0, engine_1.isNull)(data)) {
9
+ if (isNull(data)) {
13
10
  return;
14
11
  }
15
12
  if (data.mode !== undefined) {
@@ -23,4 +20,3 @@ class EmitterSize {
23
20
  }
24
21
  }
25
22
  }
26
- exports.EmitterSize = EmitterSize;
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
@@ -1,11 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ShapeManager = void 0;
4
1
  const shapeGeneratorss = new Map();
5
- class ShapeManager {
6
- constructor(engine) {
7
- this._engine = engine;
8
- }
2
+ export class ShapeManager {
9
3
  addShapeGenerator(name, generator) {
10
4
  if (!this.getShapeGenerator(name)) {
11
5
  shapeGeneratorss.set(name, generator);
@@ -18,4 +12,3 @@ class ShapeManager {
18
12
  return shapeGeneratorss.keys();
19
13
  }
20
14
  }
21
- exports.ShapeManager = ShapeManager;
package/cjs/index.js CHANGED
@@ -1,39 +1,14 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.loadEmittersPlugin = loadEmittersPlugin;
18
- const EmittersPlugin_js_1 = require("./EmittersPlugin.js");
19
- const ShapeManager_js_1 = require("./ShapeManager.js");
20
- async function loadEmittersPlugin(engine, refresh = true) {
21
- engine.checkVersion("3.9.0");
22
- if (!engine.emitterShapeManager) {
23
- engine.emitterShapeManager = new ShapeManager_js_1.ShapeManager(engine);
24
- }
25
- if (!engine.addEmitterShapeGenerator) {
26
- engine.addEmitterShapeGenerator = (name, generator) => {
27
- engine.emitterShapeManager?.addShapeGenerator(name, generator);
1
+ export function loadEmittersPlugin(engine) {
2
+ engine.checkVersion("4.0.0-alpha.0");
3
+ engine.register(async (e) => {
4
+ const { ShapeManager } = await import("./ShapeManager.js"), { EmittersPlugin } = await import("./EmittersPlugin.js");
5
+ e.emitterShapeManager ??= new ShapeManager();
6
+ e.addEmitterShapeGenerator ??= (name, generator) => {
7
+ e.emitterShapeManager?.addShapeGenerator(name, generator);
28
8
  };
29
- }
30
- const plugin = new EmittersPlugin_js_1.EmittersPlugin(engine);
31
- await engine.addPlugin(plugin, refresh);
9
+ const plugin = new EmittersPlugin(e);
10
+ e.addPlugin(plugin);
11
+ });
32
12
  }
33
- __exportStar(require("./EmitterContainer.js"), exports);
34
- __exportStar(require("./EmitterShapeBase.js"), exports);
35
- __exportStar(require("./EmittersEngine.js"), exports);
36
- __exportStar(require("./IEmitterShape.js"), exports);
37
- __exportStar(require("./IEmitterShapeGenerator.js"), exports);
38
- __exportStar(require("./Enums/EmitterClickMode.js"), exports);
39
- __exportStar(require("./IRandomPositionData.js"), exports);
13
+ export * from "./EmitterShapeBase.js";
14
+ export * from "./Enums/EmitterClickMode.js";
package/cjs/types.js CHANGED
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};