@tsparticles/plugin-emitters 3.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 (107) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +70 -0
  3. package/browser/EmitterContainer.js +1 -0
  4. package/browser/EmitterInstance.js +257 -0
  5. package/browser/Emitters.js +119 -0
  6. package/browser/EmittersEngine.js +1 -0
  7. package/browser/Enums/EmitterClickMode.js +1 -0
  8. package/browser/Enums/EmitterShapeType.js +1 -0
  9. package/browser/IEmitterShape.js +1 -0
  10. package/browser/Options/Classes/Emitter.js +62 -0
  11. package/browser/Options/Classes/EmitterLife.js +22 -0
  12. package/browser/Options/Classes/EmitterRate.js +18 -0
  13. package/browser/Options/Classes/EmitterSize.js +21 -0
  14. package/browser/Options/Interfaces/IEmitter.js +1 -0
  15. package/browser/Options/Interfaces/IEmitterLife.js +1 -0
  16. package/browser/Options/Interfaces/IEmitterRate.js +1 -0
  17. package/browser/Options/Interfaces/IEmitterSize.js +1 -0
  18. package/browser/ShapeManager.js +17 -0
  19. package/browser/Shapes/Circle/CircleShape.js +24 -0
  20. package/browser/Shapes/Square/SquareShape.js +40 -0
  21. package/browser/index.js +113 -0
  22. package/browser/types.js +1 -0
  23. package/cjs/EmitterContainer.js +2 -0
  24. package/cjs/EmitterInstance.js +261 -0
  25. package/cjs/Emitters.js +134 -0
  26. package/cjs/EmittersEngine.js +2 -0
  27. package/cjs/Enums/EmitterClickMode.js +2 -0
  28. package/cjs/Enums/EmitterShapeType.js +2 -0
  29. package/cjs/IEmitterShape.js +2 -0
  30. package/cjs/Options/Classes/Emitter.js +66 -0
  31. package/cjs/Options/Classes/EmitterLife.js +26 -0
  32. package/cjs/Options/Classes/EmitterRate.js +22 -0
  33. package/cjs/Options/Classes/EmitterSize.js +25 -0
  34. package/cjs/Options/Interfaces/IEmitter.js +2 -0
  35. package/cjs/Options/Interfaces/IEmitterLife.js +2 -0
  36. package/cjs/Options/Interfaces/IEmitterRate.js +2 -0
  37. package/cjs/Options/Interfaces/IEmitterSize.js +2 -0
  38. package/cjs/ShapeManager.js +21 -0
  39. package/cjs/Shapes/Circle/CircleShape.js +28 -0
  40. package/cjs/Shapes/Square/SquareShape.js +44 -0
  41. package/cjs/index.js +142 -0
  42. package/cjs/types.js +2 -0
  43. package/esm/EmitterContainer.js +1 -0
  44. package/esm/EmitterInstance.js +257 -0
  45. package/esm/Emitters.js +119 -0
  46. package/esm/EmittersEngine.js +1 -0
  47. package/esm/Enums/EmitterClickMode.js +1 -0
  48. package/esm/Enums/EmitterShapeType.js +1 -0
  49. package/esm/IEmitterShape.js +1 -0
  50. package/esm/Options/Classes/Emitter.js +62 -0
  51. package/esm/Options/Classes/EmitterLife.js +22 -0
  52. package/esm/Options/Classes/EmitterRate.js +18 -0
  53. package/esm/Options/Classes/EmitterSize.js +21 -0
  54. package/esm/Options/Interfaces/IEmitter.js +1 -0
  55. package/esm/Options/Interfaces/IEmitterLife.js +1 -0
  56. package/esm/Options/Interfaces/IEmitterRate.js +1 -0
  57. package/esm/Options/Interfaces/IEmitterSize.js +1 -0
  58. package/esm/ShapeManager.js +17 -0
  59. package/esm/Shapes/Circle/CircleShape.js +24 -0
  60. package/esm/Shapes/Square/SquareShape.js +40 -0
  61. package/esm/index.js +113 -0
  62. package/esm/types.js +1 -0
  63. package/package.json +81 -0
  64. package/report.html +39 -0
  65. package/tsparticles.plugin.emitters.js +794 -0
  66. package/tsparticles.plugin.emitters.min.js +2 -0
  67. package/tsparticles.plugin.emitters.min.js.LICENSE.txt +8 -0
  68. package/types/EmitterContainer.d.ts +12 -0
  69. package/types/EmitterInstance.d.ts +46 -0
  70. package/types/Emitters.d.ts +24 -0
  71. package/types/EmittersEngine.d.ts +7 -0
  72. package/types/Enums/EmitterClickMode.d.ts +3 -0
  73. package/types/Enums/EmitterShapeType.d.ts +4 -0
  74. package/types/IEmitterShape.d.ts +4 -0
  75. package/types/Options/Classes/Emitter.d.ts +24 -0
  76. package/types/Options/Classes/EmitterLife.d.ts +10 -0
  77. package/types/Options/Classes/EmitterRate.d.ts +8 -0
  78. package/types/Options/Classes/EmitterSize.d.ts +10 -0
  79. package/types/Options/Interfaces/IEmitter.d.ts +20 -0
  80. package/types/Options/Interfaces/IEmitterLife.d.ts +6 -0
  81. package/types/Options/Interfaces/IEmitterRate.d.ts +5 -0
  82. package/types/Options/Interfaces/IEmitterSize.d.ts +4 -0
  83. package/types/ShapeManager.d.ts +9 -0
  84. package/types/Shapes/Circle/CircleShape.d.ts +5 -0
  85. package/types/Shapes/Square/SquareShape.d.ts +5 -0
  86. package/types/index.d.ts +6 -0
  87. package/types/types.d.ts +31 -0
  88. package/umd/EmitterContainer.js +12 -0
  89. package/umd/EmitterInstance.js +271 -0
  90. package/umd/Emitters.js +133 -0
  91. package/umd/EmittersEngine.js +12 -0
  92. package/umd/Enums/EmitterClickMode.js +12 -0
  93. package/umd/Enums/EmitterShapeType.js +12 -0
  94. package/umd/IEmitterShape.js +12 -0
  95. package/umd/Options/Classes/Emitter.js +76 -0
  96. package/umd/Options/Classes/EmitterLife.js +36 -0
  97. package/umd/Options/Classes/EmitterRate.js +32 -0
  98. package/umd/Options/Classes/EmitterSize.js +35 -0
  99. package/umd/Options/Interfaces/IEmitter.js +12 -0
  100. package/umd/Options/Interfaces/IEmitterLife.js +12 -0
  101. package/umd/Options/Interfaces/IEmitterRate.js +12 -0
  102. package/umd/Options/Interfaces/IEmitterSize.js +12 -0
  103. package/umd/ShapeManager.js +31 -0
  104. package/umd/Shapes/Circle/CircleShape.js +38 -0
  105. package/umd/Shapes/Square/SquareShape.js +54 -0
  106. package/umd/index.js +141 -0
  107. package/umd/types.js +12 -0
@@ -0,0 +1,133 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "@tsparticles/engine", "./Options/Classes/Emitter", "./EmitterInstance"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Emitters = void 0;
13
+ const engine_1 = require("@tsparticles/engine");
14
+ const Emitter_1 = require("./Options/Classes/Emitter");
15
+ const EmitterInstance_1 = require("./EmitterInstance");
16
+ class Emitters {
17
+ constructor(engine, container) {
18
+ this.container = container;
19
+ this._engine = engine;
20
+ this.array = [];
21
+ this.emitters = [];
22
+ this.interactivityEmitters = {
23
+ random: {
24
+ count: 1,
25
+ enable: false,
26
+ },
27
+ value: [],
28
+ };
29
+ container.getEmitter = (idxOrName) => idxOrName === undefined || typeof idxOrName === "number"
30
+ ? this.array[idxOrName || 0]
31
+ : this.array.find((t) => t.name === idxOrName);
32
+ container.addEmitter = (options, position) => this.addEmitter(options, position);
33
+ container.removeEmitter = (idxOrName) => {
34
+ const emitter = container.getEmitter(idxOrName);
35
+ if (emitter) {
36
+ this.removeEmitter(emitter);
37
+ }
38
+ };
39
+ container.playEmitter = (idxOrName) => {
40
+ const emitter = container.getEmitter(idxOrName);
41
+ if (emitter) {
42
+ emitter.externalPlay();
43
+ }
44
+ };
45
+ container.pauseEmitter = (idxOrName) => {
46
+ const emitter = container.getEmitter(idxOrName);
47
+ if (emitter) {
48
+ emitter.externalPause();
49
+ }
50
+ };
51
+ }
52
+ addEmitter(options, position) {
53
+ const emitterOptions = new Emitter_1.Emitter();
54
+ emitterOptions.load(options);
55
+ const emitter = new EmitterInstance_1.EmitterInstance(this._engine, this, this.container, emitterOptions, position);
56
+ this.array.push(emitter);
57
+ return emitter;
58
+ }
59
+ handleClickMode(mode) {
60
+ const emitterOptions = this.emitters, modeEmitters = this.interactivityEmitters;
61
+ if (mode === "emitter") {
62
+ let emittersModeOptions;
63
+ if (modeEmitters && modeEmitters.value instanceof Array) {
64
+ if (modeEmitters.value.length > 0 && modeEmitters.random.enable) {
65
+ emittersModeOptions = [];
66
+ const usedIndexes = [];
67
+ for (let i = 0; i < modeEmitters.random.count; i++) {
68
+ const idx = (0, engine_1.arrayRandomIndex)(modeEmitters.value);
69
+ if (usedIndexes.includes(idx) && usedIndexes.length < modeEmitters.value.length) {
70
+ i--;
71
+ continue;
72
+ }
73
+ usedIndexes.push(idx);
74
+ emittersModeOptions.push((0, engine_1.itemFromArray)(modeEmitters.value, idx));
75
+ }
76
+ }
77
+ else {
78
+ emittersModeOptions = modeEmitters.value;
79
+ }
80
+ }
81
+ else {
82
+ emittersModeOptions = modeEmitters === null || modeEmitters === void 0 ? void 0 : modeEmitters.value;
83
+ }
84
+ const emittersOptions = emittersModeOptions !== null && emittersModeOptions !== void 0 ? emittersModeOptions : emitterOptions, ePosition = this.container.interactivity.mouse.clickPosition;
85
+ (0, engine_1.executeOnSingleOrMultiple)(emittersOptions, (emitter) => {
86
+ this.addEmitter(emitter, ePosition);
87
+ });
88
+ }
89
+ }
90
+ async init() {
91
+ this.emitters = this.container.actualOptions.emitters;
92
+ this.interactivityEmitters = this.container.actualOptions.interactivity.modes.emitters;
93
+ if (this.emitters instanceof Array) {
94
+ for (const emitterOptions of this.emitters) {
95
+ this.addEmitter(emitterOptions);
96
+ }
97
+ }
98
+ else {
99
+ this.addEmitter(this.emitters);
100
+ }
101
+ }
102
+ pause() {
103
+ for (const emitter of this.array) {
104
+ emitter.pause();
105
+ }
106
+ }
107
+ play() {
108
+ for (const emitter of this.array) {
109
+ emitter.play();
110
+ }
111
+ }
112
+ removeEmitter(emitter) {
113
+ const index = this.array.indexOf(emitter);
114
+ if (index >= 0) {
115
+ this.array.splice(index, 1);
116
+ }
117
+ }
118
+ resize() {
119
+ for (const emitter of this.array) {
120
+ emitter.resize();
121
+ }
122
+ }
123
+ stop() {
124
+ this.array = [];
125
+ }
126
+ update(delta) {
127
+ for (const emitter of this.array) {
128
+ emitter.update(delta);
129
+ }
130
+ }
131
+ }
132
+ exports.Emitters = Emitters;
133
+ });
@@ -0,0 +1,12 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ });
@@ -0,0 +1,12 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ });
@@ -0,0 +1,12 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ });
@@ -0,0 +1,12 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ });
@@ -0,0 +1,76 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "@tsparticles/engine", "./EmitterLife", "./EmitterRate", "./EmitterSize"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Emitter = void 0;
13
+ const engine_1 = require("@tsparticles/engine");
14
+ const EmitterLife_1 = require("./EmitterLife");
15
+ const EmitterRate_1 = require("./EmitterRate");
16
+ const EmitterSize_1 = require("./EmitterSize");
17
+ class Emitter {
18
+ constructor() {
19
+ this.autoPlay = true;
20
+ this.fill = true;
21
+ this.life = new EmitterLife_1.EmitterLife();
22
+ this.rate = new EmitterRate_1.EmitterRate();
23
+ this.shape = "square";
24
+ this.startCount = 0;
25
+ }
26
+ load(data) {
27
+ if (data === undefined) {
28
+ return;
29
+ }
30
+ if (data.autoPlay !== undefined) {
31
+ this.autoPlay = data.autoPlay;
32
+ }
33
+ if (data.size !== undefined) {
34
+ if (this.size === undefined) {
35
+ this.size = new EmitterSize_1.EmitterSize();
36
+ }
37
+ this.size.load(data.size);
38
+ }
39
+ if (data.direction !== undefined) {
40
+ this.direction = data.direction;
41
+ }
42
+ this.domId = data.domId;
43
+ if (data.fill !== undefined) {
44
+ this.fill = data.fill;
45
+ }
46
+ this.life.load(data.life);
47
+ this.name = data.name;
48
+ this.particles = (0, engine_1.executeOnSingleOrMultiple)(data.particles, (particles) => {
49
+ return (0, engine_1.deepExtend)({}, particles);
50
+ });
51
+ this.rate.load(data.rate);
52
+ if (data.shape !== undefined) {
53
+ this.shape = data.shape;
54
+ }
55
+ if (data.position !== undefined) {
56
+ this.position = {};
57
+ if (data.position.x !== undefined) {
58
+ this.position.x = (0, engine_1.setRangeValue)(data.position.x);
59
+ }
60
+ if (data.position.y !== undefined) {
61
+ this.position.y = (0, engine_1.setRangeValue)(data.position.y);
62
+ }
63
+ }
64
+ if (data.spawnColor !== undefined) {
65
+ if (this.spawnColor === undefined) {
66
+ this.spawnColor = new engine_1.AnimatableColor();
67
+ }
68
+ this.spawnColor.load(data.spawnColor);
69
+ }
70
+ if (data.startCount !== undefined) {
71
+ this.startCount = data.startCount;
72
+ }
73
+ }
74
+ }
75
+ exports.Emitter = Emitter;
76
+ });
@@ -0,0 +1,36 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.EmitterLife = void 0;
13
+ class EmitterLife {
14
+ constructor() {
15
+ this.wait = false;
16
+ }
17
+ load(data) {
18
+ if (data === undefined) {
19
+ return;
20
+ }
21
+ if (data.count !== undefined) {
22
+ this.count = data.count;
23
+ }
24
+ if (data.delay !== undefined) {
25
+ this.delay = data.delay;
26
+ }
27
+ if (data.duration !== undefined) {
28
+ this.duration = data.duration;
29
+ }
30
+ if (data.wait !== undefined) {
31
+ this.wait = data.wait;
32
+ }
33
+ }
34
+ }
35
+ exports.EmitterLife = EmitterLife;
36
+ });
@@ -0,0 +1,32 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "@tsparticles/engine"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.EmitterRate = void 0;
13
+ const engine_1 = require("@tsparticles/engine");
14
+ class EmitterRate {
15
+ constructor() {
16
+ this.quantity = 1;
17
+ this.delay = 0.1;
18
+ }
19
+ load(data) {
20
+ if (data === undefined) {
21
+ return;
22
+ }
23
+ if (data.quantity !== undefined) {
24
+ this.quantity = (0, engine_1.setRangeValue)(data.quantity);
25
+ }
26
+ if (data.delay !== undefined) {
27
+ this.delay = (0, engine_1.setRangeValue)(data.delay);
28
+ }
29
+ }
30
+ }
31
+ exports.EmitterRate = EmitterRate;
32
+ });
@@ -0,0 +1,35 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.EmitterSize = void 0;
13
+ class EmitterSize {
14
+ constructor() {
15
+ this.mode = "percent";
16
+ this.height = 0;
17
+ this.width = 0;
18
+ }
19
+ load(data) {
20
+ if (data === undefined) {
21
+ return;
22
+ }
23
+ if (data.mode !== undefined) {
24
+ this.mode = data.mode;
25
+ }
26
+ if (data.height !== undefined) {
27
+ this.height = data.height;
28
+ }
29
+ if (data.width !== undefined) {
30
+ this.width = data.width;
31
+ }
32
+ }
33
+ }
34
+ exports.EmitterSize = EmitterSize;
35
+ });
@@ -0,0 +1,12 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ });
@@ -0,0 +1,12 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ });
@@ -0,0 +1,12 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ });
@@ -0,0 +1,12 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ });
@@ -0,0 +1,31 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ShapeManager = void 0;
13
+ const shapes = new Map();
14
+ class ShapeManager {
15
+ constructor(engine) {
16
+ this._engine = engine;
17
+ }
18
+ addShape(name, drawer) {
19
+ if (!this.getShape(name)) {
20
+ shapes.set(name, drawer);
21
+ }
22
+ }
23
+ getShape(name) {
24
+ return shapes.get(name);
25
+ }
26
+ getSupportedShapes() {
27
+ return shapes.keys();
28
+ }
29
+ }
30
+ exports.ShapeManager = ShapeManager;
31
+ });
@@ -0,0 +1,38 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "@tsparticles/engine"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CircleShape = void 0;
13
+ const engine_1 = require("@tsparticles/engine");
14
+ class CircleShape {
15
+ randomPosition(position, size, fill) {
16
+ const generateTheta = (x, y) => {
17
+ const u = (0, engine_1.getRandom)() / 4.0, theta = Math.atan((y / x) * Math.tan(2 * Math.PI * u)), v = (0, engine_1.getRandom)();
18
+ if (v < 0.25) {
19
+ return theta;
20
+ }
21
+ else if (v < 0.5) {
22
+ return Math.PI - theta;
23
+ }
24
+ else if (v < 0.75) {
25
+ return Math.PI + theta;
26
+ }
27
+ else {
28
+ return -theta;
29
+ }
30
+ }, radius = (x, y, theta) => (x * y) / Math.sqrt((y * Math.cos(theta)) ** 2 + (x * Math.sin(theta)) ** 2), [a, b] = [size.width / 2, size.height / 2], randomTheta = generateTheta(a, b), maxRadius = radius(a, b, randomTheta), randomRadius = fill ? maxRadius * Math.sqrt((0, engine_1.getRandom)()) : maxRadius;
31
+ return {
32
+ x: position.x + randomRadius * Math.cos(randomTheta),
33
+ y: position.y + randomRadius * Math.sin(randomTheta),
34
+ };
35
+ }
36
+ }
37
+ exports.CircleShape = CircleShape;
38
+ });
@@ -0,0 +1,54 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "@tsparticles/engine"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SquareShape = void 0;
13
+ const engine_1 = require("@tsparticles/engine");
14
+ function randomSquareCoordinate(position, offset) {
15
+ return position + offset * ((0, engine_1.getRandom)() - 0.5);
16
+ }
17
+ class SquareShape {
18
+ randomPosition(position, size, fill) {
19
+ if (fill) {
20
+ return {
21
+ x: randomSquareCoordinate(position.x, size.width),
22
+ y: randomSquareCoordinate(position.y, size.height),
23
+ };
24
+ }
25
+ else {
26
+ const halfW = size.width / 2, halfH = size.height / 2, side = Math.floor((0, engine_1.getRandom)() * 4), v = ((0, engine_1.getRandom)() - 0.5) * 2;
27
+ switch (side) {
28
+ case 0:
29
+ return {
30
+ x: position.x + v * halfW,
31
+ y: position.y - halfH,
32
+ };
33
+ case 1:
34
+ return {
35
+ x: position.x - halfW,
36
+ y: position.y + v * halfH,
37
+ };
38
+ case 2:
39
+ return {
40
+ x: position.x + v * halfW,
41
+ y: position.y + halfH,
42
+ };
43
+ case 3:
44
+ default:
45
+ return {
46
+ x: position.x + halfW,
47
+ y: position.y + v * halfH,
48
+ };
49
+ }
50
+ }
51
+ }
52
+ }
53
+ exports.SquareShape = SquareShape;
54
+ });