@tsparticles/confetti 4.0.0-beta.8 → 4.0.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 (166) hide show
  1. package/README.md +106 -107
  2. package/browser/ConfettiParams.js +1 -0
  3. package/browser/browser.js +5 -0
  4. package/browser/bundle.js +4 -0
  5. package/browser/confetti.js +37 -302
  6. package/browser/confetti.lazy.js +96 -0
  7. package/browser/index.lazy.js +1 -0
  8. package/browser/types.js +1 -0
  9. package/browser/utils.js +279 -0
  10. package/cjs/ConfettiParams.js +1 -0
  11. package/cjs/browser.js +5 -0
  12. package/cjs/bundle.js +4 -0
  13. package/cjs/confetti.js +37 -302
  14. package/cjs/confetti.lazy.js +96 -0
  15. package/cjs/index.lazy.js +1 -0
  16. package/cjs/types.js +1 -0
  17. package/cjs/utils.js +279 -0
  18. package/esm/ConfettiParams.js +1 -0
  19. package/esm/browser.js +5 -0
  20. package/esm/bundle.js +4 -0
  21. package/esm/confetti.js +37 -302
  22. package/esm/confetti.lazy.js +96 -0
  23. package/esm/index.lazy.js +1 -0
  24. package/esm/types.js +1 -0
  25. package/esm/utils.js +279 -0
  26. package/package.json +24 -17
  27. package/report.html +4949 -94
  28. package/tsparticles.confetti.bundle.js +9847 -977
  29. package/tsparticles.confetti.bundle.min.js +1 -2
  30. package/tsparticles.confetti.js +512 -322
  31. package/tsparticles.confetti.min.js +1 -1
  32. package/types/ConfettiParams.d.ts +7 -0
  33. package/types/browser.d.ts +1 -0
  34. package/types/confetti.d.ts +3 -10
  35. package/types/confetti.lazy.d.ts +16 -0
  36. package/types/index.d.ts +1 -0
  37. package/types/index.lazy.d.ts +5 -0
  38. package/types/types.d.ts +4 -0
  39. package/types/utils.d.ts +7 -0
  40. package/1080.min.js +0 -1
  41. package/1241.min.js +0 -1
  42. package/1336.min.js +0 -1
  43. package/1581.min.js +0 -1
  44. package/1583.min.js +0 -1
  45. package/1712.min.js +0 -1
  46. package/1723.min.js +0 -1
  47. package/189.min.js +0 -1
  48. package/2066.min.js +0 -1
  49. package/2127.min.js +0 -1
  50. package/2182.min.js +0 -1
  51. package/2270.min.js +0 -1
  52. package/2528.min.js +0 -1
  53. package/2602.min.js +0 -1
  54. package/2760.min.js +0 -1
  55. package/3047.min.js +0 -1
  56. package/3073.min.js +0 -1
  57. package/3443.min.js +0 -1
  58. package/3583.min.js +0 -1
  59. package/374.min.js +0 -1
  60. package/382.min.js +0 -1
  61. package/404.min.js +0 -1
  62. package/4067.min.js +0 -1
  63. package/4068.min.js +0 -1
  64. package/4077.min.js +0 -1
  65. package/4086.min.js +0 -1
  66. package/4186.min.js +0 -1
  67. package/4217.min.js +0 -1
  68. package/4427.min.js +0 -1
  69. package/4519.min.js +0 -1
  70. package/4626.min.js +0 -1
  71. package/4657.min.js +0 -1
  72. package/5048.min.js +0 -1
  73. package/5294.min.js +0 -1
  74. package/5344.min.js +0 -1
  75. package/5601.min.js +0 -1
  76. package/6055.min.js +0 -1
  77. package/6171.min.js +0 -1
  78. package/6192.min.js +0 -1
  79. package/6265.min.js +0 -1
  80. package/6466.min.js +0 -1
  81. package/648.min.js +0 -1
  82. package/6943.min.js +0 -1
  83. package/6957.min.js +0 -1
  84. package/6972.min.js +0 -1
  85. package/6996.min.js +0 -1
  86. package/7162.min.js +0 -1
  87. package/7175.min.js +0 -1
  88. package/7213.min.js +0 -1
  89. package/7259.min.js +0 -1
  90. package/7316.min.js +0 -1
  91. package/7711.min.js +0 -1
  92. package/7757.min.js +0 -1
  93. package/7775.min.js +0 -1
  94. package/8204.min.js +0 -1
  95. package/8630.min.js +0 -1
  96. package/8731.min.js +0 -1
  97. package/8855.min.js +0 -1
  98. package/9674.min.js +0 -1
  99. package/9726.min.js +0 -1
  100. package/980.min.js +0 -1
  101. package/9835.min.js +0 -1
  102. package/9907.min.js +0 -1
  103. package/basic_dist_browser_index_js.js +0 -30
  104. package/engine_dist_browser_Core_Container_js.js +0 -100
  105. package/plugins_colors_hex_dist_browser_HexColorManager_js.js +0 -30
  106. package/plugins_colors_hex_dist_browser_index_js.js +0 -30
  107. package/plugins_colors_hsl_dist_browser_HslColorManager_js.js +0 -30
  108. package/plugins_colors_hsl_dist_browser_index_js.js +0 -30
  109. package/plugins_colors_rgb_dist_browser_RgbColorManager_js.js +0 -30
  110. package/plugins_colors_rgb_dist_browser_index_js.js +0 -30
  111. package/plugins_emitters_dist_browser_EmitterInstance_js.js +0 -30
  112. package/plugins_emitters_dist_browser_EmittersInstancesManager_js.js +0 -100
  113. package/plugins_emitters_dist_browser_EmittersPluginInstance_js.js +0 -30
  114. package/plugins_emitters_dist_browser_EmittersPlugin_js.js +0 -100
  115. package/plugins_emitters_dist_browser_ShapeManager_js.js +0 -30
  116. package/plugins_emitters_dist_browser_addEmittersShapesManager_js.js +0 -30
  117. package/plugins_emitters_dist_browser_getEmittersInstancesManager_js.js +0 -30
  118. package/plugins_emitters_dist_browser_plugin_js.js +0 -50
  119. package/plugins_motion_dist_browser_MotionPluginInstance_js.js +0 -30
  120. package/plugins_motion_dist_browser_MotionPlugin_js.js +0 -50
  121. package/plugins_motion_dist_browser_index_js.js +0 -30
  122. package/plugins_move_dist_browser_MovePluginInstance_js.js +0 -40
  123. package/plugins_move_dist_browser_MovePlugin_js.js +0 -30
  124. package/plugins_move_dist_browser_index_js.js +0 -30
  125. package/shapes_cards_dist_browser_clubs_ClubDrawer_js.js +0 -30
  126. package/shapes_cards_dist_browser_diamonds_DiamondDrawer_js.js +0 -30
  127. package/shapes_cards_dist_browser_hearts_HeartDrawer_js.js +0 -30
  128. package/shapes_cards_dist_browser_paths_js.js +0 -70
  129. package/shapes_cards_dist_browser_spades_SpadeDrawer_js.js +0 -30
  130. package/shapes_cards_dist_browser_suits_js.js +0 -70
  131. package/shapes_circle_dist_browser_CircleDrawer_js.js +0 -40
  132. package/shapes_circle_dist_browser_index_js.js +0 -30
  133. package/shapes_emoji_dist_browser_EmojiDrawer_js.js +0 -50
  134. package/shapes_emoji_dist_browser_index_js.js +0 -40
  135. package/shapes_heart_dist_browser_HeartDrawer_js.js +0 -40
  136. package/shapes_heart_dist_browser_index_js.js +0 -30
  137. package/shapes_image_dist_browser_GifUtils_Utils_js.js +0 -70
  138. package/shapes_image_dist_browser_ImageDrawer_js.js +0 -30
  139. package/shapes_image_dist_browser_ImagePreloaderInstance_js.js +0 -30
  140. package/shapes_image_dist_browser_ImagePreloader_js.js +0 -40
  141. package/shapes_image_dist_browser_index_js.js +0 -40
  142. package/shapes_polygon_dist_browser_PolygonDrawer_js.js +0 -50
  143. package/shapes_polygon_dist_browser_TriangleDrawer_js.js +0 -50
  144. package/shapes_polygon_dist_browser_index_js.js +0 -30
  145. package/shapes_square_dist_browser_SquareDrawer_js.js +0 -40
  146. package/shapes_square_dist_browser_index_js.js +0 -30
  147. package/shapes_star_dist_browser_StarDrawer_js.js +0 -40
  148. package/shapes_star_dist_browser_index_js.js +0 -30
  149. package/updaters_fillColor_dist_browser_FillColorUpdater_js.js +0 -30
  150. package/updaters_fillColor_dist_browser_index_js.js +0 -30
  151. package/updaters_life_dist_browser_LifeUpdater_js.js +0 -70
  152. package/updaters_life_dist_browser_index_js.js +0 -30
  153. package/updaters_opacity_dist_browser_OpacityUpdater_js.js +0 -30
  154. package/updaters_opacity_dist_browser_index_js.js +0 -30
  155. package/updaters_outModes_dist_browser_OutOfCanvasUpdater_js.js +0 -80
  156. package/updaters_outModes_dist_browser_index_js.js +0 -30
  157. package/updaters_roll_dist_browser_RollUpdater_js.js +0 -70
  158. package/updaters_roll_dist_browser_index_js.js +0 -30
  159. package/updaters_rotate_dist_browser_RotateUpdater_js.js +0 -50
  160. package/updaters_rotate_dist_browser_index_js.js +0 -30
  161. package/updaters_size_dist_browser_SizeUpdater_js.js +0 -30
  162. package/updaters_size_dist_browser_index_js.js +0 -30
  163. package/updaters_tilt_dist_browser_TiltUpdater_js.js +0 -60
  164. package/updaters_tilt_dist_browser_index_js.js +0 -30
  165. package/updaters_wobble_dist_browser_WobbleUpdater_js.js +0 -60
  166. package/updaters_wobble_dist_browser_index_js.js +0 -30
@@ -0,0 +1,96 @@
1
+ import { isString, tsParticles } from "@tsparticles/engine/lazy";
2
+ import { setConfetti } from "./utils.js";
3
+ let initPromise = null;
4
+ async function doInitPlugins(engine) {
5
+ engine.checkVersion("4.0.0");
6
+ await engine.pluginManager.register(async (e) => {
7
+ const [{ loadBasic }, { loadEmittersPluginSimple }, { loadMotionPlugin }, { loadCardSuitsShape }, { loadEmojiShape }, { loadHeartShape }, { loadImageShape }, { loadPolygonShape }, { loadSquareShape }, { loadStarShape }, { loadRotateUpdater }, { loadLifeUpdater }, { loadRollUpdater }, { loadTiltUpdater }, { loadWobbleUpdater },] = await Promise.all([
8
+ import("@tsparticles/basic/lazy"),
9
+ import("@tsparticles/plugin-emitters/plugin/lazy"),
10
+ import("@tsparticles/plugin-motion/lazy"),
11
+ import("@tsparticles/shape-cards/suits/lazy"),
12
+ import("@tsparticles/shape-emoji/lazy"),
13
+ import("@tsparticles/shape-heart/lazy"),
14
+ import("@tsparticles/shape-image/lazy"),
15
+ import("@tsparticles/shape-polygon/lazy"),
16
+ import("@tsparticles/shape-square/lazy"),
17
+ import("@tsparticles/shape-star/lazy"),
18
+ import("@tsparticles/updater-rotate/lazy"),
19
+ import("@tsparticles/updater-life/lazy"),
20
+ import("@tsparticles/updater-roll/lazy"),
21
+ import("@tsparticles/updater-tilt/lazy"),
22
+ import("@tsparticles/updater-wobble/lazy"),
23
+ ]);
24
+ await Promise.all([
25
+ loadBasic(e),
26
+ loadMotionPlugin(e),
27
+ loadEmittersPluginSimple(e),
28
+ loadCardSuitsShape(e),
29
+ loadHeartShape(e),
30
+ loadImageShape(e),
31
+ loadPolygonShape(e),
32
+ loadSquareShape(e),
33
+ loadStarShape(e),
34
+ loadEmojiShape(e),
35
+ loadRotateUpdater(e),
36
+ loadLifeUpdater(e),
37
+ loadRollUpdater(e),
38
+ loadTiltUpdater(e),
39
+ loadWobbleUpdater(e),
40
+ ]);
41
+ });
42
+ }
43
+ async function initPlugins(engine) {
44
+ if (initPromise) {
45
+ return initPromise;
46
+ }
47
+ initPromise = doInitPlugins(engine);
48
+ return initPromise;
49
+ }
50
+ export async function confetti(idOrOptions, confettiOptions) {
51
+ await initPlugins(tsParticles);
52
+ let options, id;
53
+ if (isString(idOrOptions)) {
54
+ id = idOrOptions;
55
+ options = confettiOptions ?? {};
56
+ }
57
+ else {
58
+ id = "confetti";
59
+ options = idOrOptions;
60
+ }
61
+ return setConfetti(tsParticles, {
62
+ id,
63
+ options,
64
+ });
65
+ }
66
+ confetti.create = async (canvas, options = {}) => {
67
+ await initPlugins(tsParticles);
68
+ const id = canvas?.getAttribute("id") ?? "confetti";
69
+ canvas?.setAttribute("id", id);
70
+ await setConfetti(tsParticles, {
71
+ id,
72
+ canvas: canvas ?? undefined,
73
+ options,
74
+ });
75
+ return async (idOrOptions, confettiOptions) => {
76
+ let subOptions, subId;
77
+ if (isString(idOrOptions)) {
78
+ subId = idOrOptions;
79
+ subOptions = confettiOptions ?? options;
80
+ }
81
+ else {
82
+ subId = id;
83
+ subOptions = idOrOptions;
84
+ }
85
+ return setConfetti(tsParticles, {
86
+ id: subId,
87
+ canvas: canvas ?? undefined,
88
+ options: subOptions,
89
+ });
90
+ };
91
+ };
92
+ confetti.init = async () => {
93
+ await initPlugins(tsParticles);
94
+ };
95
+ confetti.version = "4.0.0";
96
+ globalThis.confetti = confetti;
@@ -0,0 +1 @@
1
+ export * from "./confetti.lazy.js";
package/esm/types.js ADDED
@@ -0,0 +1 @@
1
+ export {};
package/esm/utils.js ADDED
@@ -0,0 +1,279 @@
1
+ import { millisecondsToSeconds } from "@tsparticles/engine";
2
+ import { ConfettiOptions } from "./ConfettiOptions.js";
3
+ const defaultGravity = 9.81, sizeFactor = 5, speedFactor = 3, decayOffset = 1, disableRotate = 0, disableTilt = 0, ids = new Map();
4
+ export async function addEmitter(container, actualOptions, opacitySpeed) {
5
+ await container.addEmitter?.({
6
+ startCount: actualOptions.count,
7
+ position: actualOptions.position,
8
+ size: {
9
+ width: 0,
10
+ height: 0,
11
+ },
12
+ rate: {
13
+ delay: 0,
14
+ quantity: 0,
15
+ },
16
+ life: {
17
+ duration: 0.1,
18
+ count: 1,
19
+ },
20
+ particles: {
21
+ paint: {
22
+ fill: {
23
+ color: {
24
+ value: actualOptions.colors,
25
+ },
26
+ enable: true,
27
+ },
28
+ },
29
+ shape: {
30
+ type: actualOptions.shapes,
31
+ options: actualOptions.shapeOptions,
32
+ },
33
+ life: {
34
+ count: 1,
35
+ },
36
+ opacity: {
37
+ value: { min: 0, max: 1 },
38
+ animation: {
39
+ enable: true,
40
+ sync: true,
41
+ speed: opacitySpeed,
42
+ startValue: "max",
43
+ destroy: "min",
44
+ count: 1,
45
+ },
46
+ },
47
+ size: {
48
+ value: sizeFactor * actualOptions.scalar,
49
+ },
50
+ move: {
51
+ angle: {
52
+ value: actualOptions.spread,
53
+ offset: 0,
54
+ },
55
+ drift: {
56
+ min: -actualOptions.drift,
57
+ max: actualOptions.drift,
58
+ },
59
+ gravity: {
60
+ acceleration: actualOptions.gravity * defaultGravity,
61
+ },
62
+ speed: actualOptions.startVelocity * speedFactor,
63
+ decay: decayOffset - actualOptions.decay,
64
+ direction: -actualOptions.angle,
65
+ },
66
+ rotate: {
67
+ value: actualOptions.flat
68
+ ? disableRotate
69
+ : {
70
+ min: 0,
71
+ max: 360,
72
+ },
73
+ direction: "random",
74
+ animation: {
75
+ enable: !actualOptions.flat,
76
+ speed: 60,
77
+ },
78
+ },
79
+ tilt: {
80
+ direction: "random",
81
+ enable: !actualOptions.flat,
82
+ value: actualOptions.flat
83
+ ? disableTilt
84
+ : {
85
+ min: 0,
86
+ max: 360,
87
+ },
88
+ animation: {
89
+ enable: true,
90
+ speed: 60,
91
+ },
92
+ },
93
+ roll: {
94
+ darken: {
95
+ enable: true,
96
+ value: 25,
97
+ },
98
+ enable: !actualOptions.flat,
99
+ speed: {
100
+ min: 15,
101
+ max: 25,
102
+ },
103
+ },
104
+ wobble: {
105
+ distance: 30,
106
+ enable: !actualOptions.flat,
107
+ speed: {
108
+ min: -15,
109
+ max: 15,
110
+ },
111
+ },
112
+ },
113
+ });
114
+ }
115
+ export function convertOptions(actualOptions, params, opacitySpeed) {
116
+ return {
117
+ fullScreen: {
118
+ enable: !params.canvas,
119
+ zIndex: actualOptions.zIndex,
120
+ },
121
+ fpsLimit: 120,
122
+ particles: {
123
+ number: {
124
+ value: 0,
125
+ },
126
+ paint: {
127
+ fill: {
128
+ color: {
129
+ value: actualOptions.colors,
130
+ },
131
+ enable: true,
132
+ },
133
+ },
134
+ shape: {
135
+ type: actualOptions.shapes,
136
+ options: actualOptions.shapeOptions,
137
+ },
138
+ opacity: {
139
+ value: { min: 0, max: 1 },
140
+ animation: {
141
+ enable: true,
142
+ sync: true,
143
+ speed: opacitySpeed,
144
+ startValue: "max",
145
+ destroy: "min",
146
+ count: 1,
147
+ },
148
+ },
149
+ size: {
150
+ value: sizeFactor * actualOptions.scalar,
151
+ },
152
+ links: {
153
+ enable: false,
154
+ },
155
+ life: {
156
+ count: 1,
157
+ },
158
+ move: {
159
+ angle: {
160
+ value: actualOptions.spread,
161
+ offset: 0,
162
+ },
163
+ drift: {
164
+ min: -actualOptions.drift,
165
+ max: actualOptions.drift,
166
+ },
167
+ enable: true,
168
+ gravity: {
169
+ enable: true,
170
+ acceleration: actualOptions.gravity * defaultGravity,
171
+ },
172
+ speed: actualOptions.startVelocity * speedFactor,
173
+ decay: decayOffset - actualOptions.decay,
174
+ direction: -actualOptions.angle,
175
+ random: true,
176
+ straight: false,
177
+ outModes: {
178
+ default: "none",
179
+ bottom: "destroy",
180
+ },
181
+ },
182
+ rotate: {
183
+ value: actualOptions.flat
184
+ ? disableRotate
185
+ : {
186
+ min: 0,
187
+ max: 360,
188
+ },
189
+ direction: "random",
190
+ animation: {
191
+ enable: !actualOptions.flat,
192
+ speed: 60,
193
+ },
194
+ },
195
+ tilt: {
196
+ direction: "random",
197
+ enable: !actualOptions.flat,
198
+ value: actualOptions.flat
199
+ ? disableTilt
200
+ : {
201
+ min: 0,
202
+ max: 360,
203
+ },
204
+ animation: {
205
+ enable: true,
206
+ speed: 60,
207
+ },
208
+ },
209
+ roll: {
210
+ darken: {
211
+ enable: true,
212
+ value: 25,
213
+ },
214
+ enable: !actualOptions.flat,
215
+ speed: {
216
+ min: 15,
217
+ max: 25,
218
+ },
219
+ },
220
+ wobble: {
221
+ distance: 30,
222
+ enable: !actualOptions.flat,
223
+ speed: {
224
+ min: -15,
225
+ max: 15,
226
+ },
227
+ },
228
+ },
229
+ motion: {
230
+ disable: actualOptions.disableForReducedMotion,
231
+ },
232
+ emitters: {
233
+ name: "confetti",
234
+ startCount: actualOptions.count,
235
+ position: actualOptions.position,
236
+ size: {
237
+ width: 0,
238
+ height: 0,
239
+ },
240
+ rate: {
241
+ delay: 0,
242
+ quantity: 0,
243
+ },
244
+ life: {
245
+ duration: 0.1,
246
+ count: 1,
247
+ },
248
+ },
249
+ };
250
+ }
251
+ export async function setConfetti(engine, params) {
252
+ const actualOptions = new ConfettiOptions();
253
+ actualOptions.load(params.options);
254
+ const fpsLimit = 120, fpsLimitFactor = 3.6, opacitySpeed = (actualOptions.ticks * millisecondsToSeconds) / (fpsLimitFactor * millisecondsToSeconds * fpsLimit);
255
+ let containerOrPromise = ids.get(params.id);
256
+ if (containerOrPromise instanceof Promise) {
257
+ await containerOrPromise;
258
+ containerOrPromise = ids.get(params.id);
259
+ }
260
+ const container = containerOrPromise;
261
+ if (container && !container.destroyed) {
262
+ const alias = container;
263
+ if ("addEmitter" in alias) {
264
+ await addEmitter(alias, actualOptions, opacitySpeed);
265
+ return container;
266
+ }
267
+ }
268
+ const create = async () => {
269
+ const particlesOptions = convertOptions(actualOptions, params, opacitySpeed), newContainer = await engine.load({
270
+ id: params.id,
271
+ element: params.canvas,
272
+ options: particlesOptions,
273
+ });
274
+ ids.set(params.id, newContainer);
275
+ return newContainer;
276
+ }, createPromise = create();
277
+ ids.set(params.id, createPromise);
278
+ return createPromise;
279
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsparticles/confetti",
3
- "version": "4.0.0-beta.8",
3
+ "version": "4.0.0",
4
4
  "description": "Easily create highly customizable particle animations and use them as animated backgrounds for your website. Ready to use components available also for React, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Riot.js, Inferno.",
5
5
  "homepage": "https://particles.js.org",
6
6
  "repository": {
@@ -95,25 +95,32 @@
95
95
  "require": "./cjs/index.js",
96
96
  "default": "./esm/index.js"
97
97
  },
98
+ "./lazy": {
99
+ "types": "./types/index.lazy.d.ts",
100
+ "browser": "./browser/index.lazy.js",
101
+ "import": "./esm/index.lazy.js",
102
+ "require": "./cjs/index.lazy.js",
103
+ "default": "./esm/index.lazy.js"
104
+ },
98
105
  "./package.json": "./package.json"
99
106
  },
100
107
  "dependencies": {
101
- "@tsparticles/basic": "4.0.0-beta.8",
102
- "@tsparticles/engine": "4.0.0-beta.8",
103
- "@tsparticles/plugin-emitters": "4.0.0-beta.8",
104
- "@tsparticles/plugin-motion": "4.0.0-beta.8",
105
- "@tsparticles/shape-cards": "4.0.0-beta.8",
106
- "@tsparticles/shape-emoji": "4.0.0-beta.8",
107
- "@tsparticles/shape-heart": "4.0.0-beta.8",
108
- "@tsparticles/shape-image": "4.0.0-beta.8",
109
- "@tsparticles/shape-polygon": "4.0.0-beta.8",
110
- "@tsparticles/shape-square": "4.0.0-beta.8",
111
- "@tsparticles/shape-star": "4.0.0-beta.8",
112
- "@tsparticles/updater-life": "4.0.0-beta.8",
113
- "@tsparticles/updater-roll": "4.0.0-beta.8",
114
- "@tsparticles/updater-rotate": "4.0.0-beta.8",
115
- "@tsparticles/updater-tilt": "4.0.0-beta.8",
116
- "@tsparticles/updater-wobble": "4.0.0-beta.8"
108
+ "@tsparticles/basic": "4.0.0",
109
+ "@tsparticles/engine": "4.0.0",
110
+ "@tsparticles/plugin-emitters": "4.0.0",
111
+ "@tsparticles/plugin-motion": "4.0.0",
112
+ "@tsparticles/shape-cards": "4.0.0",
113
+ "@tsparticles/shape-emoji": "4.0.0",
114
+ "@tsparticles/shape-heart": "4.0.0",
115
+ "@tsparticles/shape-image": "4.0.0",
116
+ "@tsparticles/shape-polygon": "4.0.0",
117
+ "@tsparticles/shape-square": "4.0.0",
118
+ "@tsparticles/shape-star": "4.0.0",
119
+ "@tsparticles/updater-life": "4.0.0",
120
+ "@tsparticles/updater-roll": "4.0.0",
121
+ "@tsparticles/updater-rotate": "4.0.0",
122
+ "@tsparticles/updater-tilt": "4.0.0",
123
+ "@tsparticles/updater-wobble": "4.0.0"
117
124
  },
118
125
  "publishConfig": {
119
126
  "access": "public"