@tsparticles/confetti 4.0.0-alpha.27 → 4.0.0-alpha.28

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 (104) hide show
  1. package/102.min.js +1 -1
  2. package/1368.min.js +1 -1
  3. package/161.min.js +1 -1
  4. package/1667.min.js +1 -1
  5. package/229.min.js +1 -1
  6. package/2618.min.js +1 -1
  7. package/3091.min.js +1 -1
  8. package/3257.min.js +1 -1
  9. package/3296.min.js +1 -1
  10. package/3455.min.js +1 -1
  11. package/3663.min.js +1 -1
  12. package/4268.min.js +1 -1
  13. package/514.min.js +1 -1
  14. package/5478.min.js +1 -1
  15. package/6098.min.js +1 -1
  16. package/6101.min.js +1 -1
  17. package/6179.min.js +1 -1
  18. package/6299.min.js +1 -1
  19. package/6465.min.js +1 -1
  20. package/6583.min.js +1 -1
  21. package/6808.min.js +1 -1
  22. package/7318.min.js +1 -1
  23. package/8222.min.js +1 -1
  24. package/8815.min.js +1 -1
  25. package/9082.min.js +1 -1
  26. package/9578.min.js +1 -1
  27. package/README.md +45 -6
  28. package/basic_dist_browser_index_js.js +2 -2
  29. package/browser/confetti.js +13 -7
  30. package/cjs/confetti.js +13 -7
  31. package/engine_dist_browser_Core_Container_js.js +1 -1
  32. package/esm/confetti.js +13 -7
  33. package/package.json +17 -17
  34. package/plugins_colors_hex_dist_browser_HexColorManager_js.js +1 -1
  35. package/plugins_colors_hex_dist_browser_index_js.js +2 -2
  36. package/plugins_colors_hsl_dist_browser_HslColorManager_js.js +1 -1
  37. package/plugins_colors_hsl_dist_browser_index_js.js +2 -2
  38. package/plugins_colors_rgb_dist_browser_RgbColorManager_js.js +1 -1
  39. package/plugins_colors_rgb_dist_browser_index_js.js +2 -2
  40. package/plugins_emitters_dist_browser_EmitterInstance_js.js +1 -1
  41. package/plugins_emitters_dist_browser_EmittersInstancesManager_js.js +1 -1
  42. package/plugins_emitters_dist_browser_EmittersInteractor_js.js +2 -2
  43. package/plugins_emitters_dist_browser_EmittersPluginInstance_js.js +1 -1
  44. package/plugins_emitters_dist_browser_EmittersPlugin_js.js +1 -1
  45. package/plugins_emitters_dist_browser_ShapeManager_js.js +1 -1
  46. package/plugins_emitters_dist_browser_index_js.js +2 -2
  47. package/plugins_interactivity_dist_browser_InteractivityPluginInstance_js.js +1 -1
  48. package/plugins_interactivity_dist_browser_InteractivityPlugin_js.js +1 -1
  49. package/plugins_interactivity_dist_browser_index_js.js +2 -2
  50. package/plugins_motion_dist_browser_MotionPluginInstance_js.js +1 -1
  51. package/plugins_motion_dist_browser_MotionPlugin_js.js +1 -1
  52. package/plugins_motion_dist_browser_index_js.js +2 -2
  53. package/plugins_move_dist_browser_MovePluginInstance_js.js +1 -1
  54. package/plugins_move_dist_browser_MovePlugin_js.js +1 -1
  55. package/plugins_move_dist_browser_index_js.js +2 -2
  56. package/report.html +1 -1
  57. package/shapes_cards_dist_browser_cards_CardDrawer_js.js +1 -1
  58. package/shapes_cards_dist_browser_clubs_ClubDrawer_js.js +1 -1
  59. package/shapes_cards_dist_browser_diamonds_DiamondDrawer_js.js +1 -1
  60. package/shapes_cards_dist_browser_hearts_HeartDrawer_js.js +1 -1
  61. package/shapes_cards_dist_browser_index_js.js +7 -7
  62. package/shapes_cards_dist_browser_paths_js.js +1 -1
  63. package/shapes_cards_dist_browser_spades_SpadeDrawer_js.js +1 -1
  64. package/shapes_circle_dist_browser_CircleDrawer_js.js +1 -1
  65. package/shapes_circle_dist_browser_index_js.js +2 -2
  66. package/shapes_emoji_dist_browser_EmojiDrawer_js.js +1 -1
  67. package/shapes_emoji_dist_browser_index_js.js +2 -2
  68. package/shapes_heart_dist_browser_HeartDrawer_js.js +1 -1
  69. package/shapes_heart_dist_browser_index_js.js +2 -2
  70. package/shapes_image_dist_browser_GifUtils_Utils_js.js +1 -1
  71. package/shapes_image_dist_browser_ImageDrawer_js.js +1 -1
  72. package/shapes_image_dist_browser_ImagePreloaderInstance_js.js +1 -1
  73. package/shapes_image_dist_browser_ImagePreloader_js.js +1 -1
  74. package/shapes_image_dist_browser_index_js.js +2 -2
  75. package/shapes_polygon_dist_browser_PolygonDrawer_js.js +1 -1
  76. package/shapes_polygon_dist_browser_TriangleDrawer_js.js +1 -1
  77. package/shapes_polygon_dist_browser_index_js.js +2 -2
  78. package/shapes_square_dist_browser_SquareDrawer_js.js +1 -1
  79. package/shapes_square_dist_browser_index_js.js +2 -2
  80. package/shapes_star_dist_browser_StarDrawer_js.js +1 -1
  81. package/shapes_star_dist_browser_index_js.js +2 -2
  82. package/tsparticles.confetti.bundle.js +3 -3
  83. package/tsparticles.confetti.bundle.min.js +2 -2
  84. package/tsparticles.confetti.js +2 -2
  85. package/tsparticles.confetti.min.js +1 -1
  86. package/umd/confetti.js +13 -7
  87. package/updaters_fillColor_dist_browser_FillColorUpdater_js.js +1 -1
  88. package/updaters_fillColor_dist_browser_index_js.js +2 -2
  89. package/updaters_life_dist_browser_LifeUpdater_js.js +1 -1
  90. package/updaters_life_dist_browser_index_js.js +2 -2
  91. package/updaters_opacity_dist_browser_OpacityUpdater_js.js +1 -1
  92. package/updaters_opacity_dist_browser_index_js.js +2 -2
  93. package/updaters_outModes_dist_browser_OutOfCanvasUpdater_js.js +1 -1
  94. package/updaters_outModes_dist_browser_index_js.js +2 -2
  95. package/updaters_roll_dist_browser_RollUpdater_js.js +1 -1
  96. package/updaters_roll_dist_browser_index_js.js +2 -2
  97. package/updaters_rotate_dist_browser_RotateUpdater_js.js +1 -1
  98. package/updaters_rotate_dist_browser_index_js.js +2 -2
  99. package/updaters_size_dist_browser_SizeUpdater_js.js +1 -1
  100. package/updaters_size_dist_browser_index_js.js +2 -2
  101. package/updaters_tilt_dist_browser_TiltUpdater_js.js +1 -1
  102. package/updaters_tilt_dist_browser_index_js.js +2 -2
  103. package/updaters_wobble_dist_browser_WobbleUpdater_js.js +1 -1
  104. package/updaters_wobble_dist_browser_index_js.js +2 -2
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.27
7
+ * v4.0.0-alpha.28
8
8
  */
9
9
  "use strict";
10
10
  /*
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.27
7
+ * v4.0.0-alpha.28
8
8
  */
9
9
  "use strict";
10
10
  /*
@@ -23,7 +23,7 @@
23
23
  \************************************************/
24
24
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
25
25
 
26
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadHeartShape: () => (/* binding */ loadHeartShape)\n/* harmony export */ });\nasync function loadHeartShape(engine) {\n engine.checkVersion(\"4.0.0-alpha.27\");\n await engine.register((e)=>{\n e.addShape([\n \"heart\"\n ], async ()=>{\n const { HeartDrawer } = await __webpack_require__.e(/*! import() */ \"shapes_heart_dist_browser_HeartDrawer_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./HeartDrawer.js */ \"../../shapes/heart/dist/browser/HeartDrawer.js\"));\n return new HeartDrawer();\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/confetti/../../shapes/heart/dist/browser/index.js?\n}");
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadHeartShape: () => (/* binding */ loadHeartShape)\n/* harmony export */ });\nasync function loadHeartShape(engine) {\n engine.checkVersion(\"4.0.0-alpha.28\");\n await engine.register((e)=>{\n e.addShape([\n \"heart\"\n ], async ()=>{\n const { HeartDrawer } = await __webpack_require__.e(/*! import() */ \"shapes_heart_dist_browser_HeartDrawer_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./HeartDrawer.js */ \"../../shapes/heart/dist/browser/HeartDrawer.js\"));\n return new HeartDrawer();\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/confetti/../../shapes/heart/dist/browser/index.js?\n}");
27
27
 
28
28
  /***/ }
29
29
 
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.27
7
+ * v4.0.0-alpha.28
8
8
  */
9
9
  "use strict";
10
10
  /*
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.27
7
+ * v4.0.0-alpha.28
8
8
  */
9
9
  "use strict";
10
10
  /*
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.27
7
+ * v4.0.0-alpha.28
8
8
  */
9
9
  "use strict";
10
10
  /*
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.27
7
+ * v4.0.0-alpha.28
8
8
  */
9
9
  "use strict";
10
10
  /*
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.27
7
+ * v4.0.0-alpha.28
8
8
  */
9
9
  "use strict";
10
10
  /*
@@ -33,7 +33,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
33
33
  \************************************************/
34
34
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
35
35
 
36
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadImageShape: () => (/* binding */ loadImageShape)\n/* harmony export */ });\n/* harmony import */ var _Utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Utils.js */ \"../../shapes/image/dist/browser/Utils.js\");\n\nconst extLength = 3;\nfunction addLoadImageToEngine(engine) {\n engine.getImages ??= (container)=>{\n engine.images ??= new Map();\n let images = engine.images.get(container);\n if (!images) {\n images = [];\n engine.images.set(container, images);\n }\n return images;\n };\n engine.loadImage ??= async (container, data)=>{\n if (!engine.getImages) {\n throw new Error(\"No images collection found\");\n }\n if (!data.name && !data.src) {\n throw new Error(\"No image source provided\");\n }\n engine.images ??= new Map();\n const containerImages = engine.getImages(container);\n if (containerImages.some((t)=>t.name === data.name || t.source === data.src)) {\n return;\n }\n try {\n const image = {\n gif: data.gif,\n name: data.name ?? data.src,\n source: data.src,\n type: data.src.substring(data.src.length - extLength),\n error: false,\n loading: true,\n replaceColor: data.replaceColor,\n ratio: data.width && data.height ? data.width / data.height : undefined\n };\n containerImages.push(image);\n engine.images.set(container, containerImages);\n let imageFunc;\n if (data.gif) {\n const { loadGifImage } = await __webpack_require__.e(/*! import() */ \"shapes_image_dist_browser_GifUtils_Utils_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./GifUtils/Utils.js */ \"../../shapes/image/dist/browser/GifUtils/Utils.js\"));\n imageFunc = (img)=>loadGifImage(img, {\n colorSpace: \"srgb\"\n });\n } else if (data.replaceColor) {\n const { downloadSvgImage } = await Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./Utils.js */ \"../../shapes/image/dist/browser/Utils.js\"));\n imageFunc = downloadSvgImage;\n } else {\n const { loadImage } = await Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./Utils.js */ \"../../shapes/image/dist/browser/Utils.js\"));\n imageFunc = loadImage;\n }\n await imageFunc(image);\n } catch {\n throw new Error(`${data.name ?? data.src} not found`);\n }\n };\n}\nasync function loadImageShape(engine) {\n engine.checkVersion(\"4.0.0-alpha.27\");\n await engine.register(async (e)=>{\n const { ImagePreloaderPlugin } = await __webpack_require__.e(/*! import() */ \"shapes_image_dist_browser_ImagePreloader_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./ImagePreloader.js */ \"../../shapes/image/dist/browser/ImagePreloader.js\"));\n addLoadImageToEngine(e);\n e.addPlugin(new ImagePreloaderPlugin(e));\n e.addShape(_Utils_js__WEBPACK_IMPORTED_MODULE_0__.shapeTypes, async ()=>{\n const { ImageDrawer } = await Promise.all(/*! import() */[__webpack_require__.e(\"shapes_image_dist_browser_GifUtils_Utils_js\"), __webpack_require__.e(\"shapes_image_dist_browser_ImageDrawer_js\")]).then(__webpack_require__.bind(__webpack_require__, /*! ./ImageDrawer.js */ \"../../shapes/image/dist/browser/ImageDrawer.js\"));\n return new ImageDrawer(e);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/confetti/../../shapes/image/dist/browser/index.js?\n}");
36
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadImageShape: () => (/* binding */ loadImageShape)\n/* harmony export */ });\n/* harmony import */ var _Utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Utils.js */ \"../../shapes/image/dist/browser/Utils.js\");\n\nconst extLength = 3;\nfunction addLoadImageToEngine(engine) {\n engine.getImages ??= (container)=>{\n engine.images ??= new Map();\n let images = engine.images.get(container);\n if (!images) {\n images = [];\n engine.images.set(container, images);\n }\n return images;\n };\n engine.loadImage ??= async (container, data)=>{\n if (!engine.getImages) {\n throw new Error(\"No images collection found\");\n }\n if (!data.name && !data.src) {\n throw new Error(\"No image source provided\");\n }\n engine.images ??= new Map();\n const containerImages = engine.getImages(container);\n if (containerImages.some((t)=>t.name === data.name || t.source === data.src)) {\n return;\n }\n try {\n const image = {\n gif: data.gif,\n name: data.name ?? data.src,\n source: data.src,\n type: data.src.substring(data.src.length - extLength),\n error: false,\n loading: true,\n replaceColor: data.replaceColor,\n ratio: data.width && data.height ? data.width / data.height : undefined\n };\n containerImages.push(image);\n engine.images.set(container, containerImages);\n let imageFunc;\n if (data.gif) {\n const { loadGifImage } = await __webpack_require__.e(/*! import() */ \"shapes_image_dist_browser_GifUtils_Utils_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./GifUtils/Utils.js */ \"../../shapes/image/dist/browser/GifUtils/Utils.js\"));\n imageFunc = (img)=>loadGifImage(img, {\n colorSpace: \"srgb\"\n });\n } else if (data.replaceColor) {\n const { downloadSvgImage } = await Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./Utils.js */ \"../../shapes/image/dist/browser/Utils.js\"));\n imageFunc = downloadSvgImage;\n } else {\n const { loadImage } = await Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./Utils.js */ \"../../shapes/image/dist/browser/Utils.js\"));\n imageFunc = loadImage;\n }\n await imageFunc(image);\n } catch {\n throw new Error(`${data.name ?? data.src} not found`);\n }\n };\n}\nasync function loadImageShape(engine) {\n engine.checkVersion(\"4.0.0-alpha.28\");\n await engine.register(async (e)=>{\n const { ImagePreloaderPlugin } = await __webpack_require__.e(/*! import() */ \"shapes_image_dist_browser_ImagePreloader_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./ImagePreloader.js */ \"../../shapes/image/dist/browser/ImagePreloader.js\"));\n addLoadImageToEngine(e);\n e.addPlugin(new ImagePreloaderPlugin(e));\n e.addShape(_Utils_js__WEBPACK_IMPORTED_MODULE_0__.shapeTypes, async ()=>{\n const { ImageDrawer } = await Promise.all(/*! import() */[__webpack_require__.e(\"shapes_image_dist_browser_GifUtils_Utils_js\"), __webpack_require__.e(\"shapes_image_dist_browser_ImageDrawer_js\")]).then(__webpack_require__.bind(__webpack_require__, /*! ./ImageDrawer.js */ \"../../shapes/image/dist/browser/ImageDrawer.js\"));\n return new ImageDrawer(e);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/confetti/../../shapes/image/dist/browser/index.js?\n}");
37
37
 
38
38
  /***/ }
39
39
 
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.27
7
+ * v4.0.0-alpha.28
8
8
  */
9
9
  "use strict";
10
10
  /*
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.27
7
+ * v4.0.0-alpha.28
8
8
  */
9
9
  "use strict";
10
10
  /*
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.27
7
+ * v4.0.0-alpha.28
8
8
  */
9
9
  "use strict";
10
10
  /*
@@ -23,7 +23,7 @@
23
23
  \**************************************************/
24
24
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
25
25
 
26
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadGenericPolygonShape: () => (/* binding */ loadGenericPolygonShape),\n/* harmony export */ loadPolygonShape: () => (/* binding */ loadPolygonShape),\n/* harmony export */ loadTriangleShape: () => (/* binding */ loadTriangleShape)\n/* harmony export */ });\nasync function loadGenericPolygonShape(engine) {\n engine.checkVersion(\"4.0.0-alpha.27\");\n await engine.register((e)=>{\n e.addShape([\n \"polygon\"\n ], async ()=>{\n const { PolygonDrawer } = await __webpack_require__.e(/*! import() */ \"shapes_polygon_dist_browser_PolygonDrawer_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./PolygonDrawer.js */ \"../../shapes/polygon/dist/browser/PolygonDrawer.js\"));\n return new PolygonDrawer();\n });\n });\n}\nasync function loadTriangleShape(engine) {\n engine.checkVersion(\"4.0.0-alpha.27\");\n await engine.register((e)=>{\n e.addShape([\n \"triangle\"\n ], async ()=>{\n const { TriangleDrawer } = await __webpack_require__.e(/*! import() */ \"shapes_polygon_dist_browser_TriangleDrawer_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./TriangleDrawer.js */ \"../../shapes/polygon/dist/browser/TriangleDrawer.js\"));\n return new TriangleDrawer();\n });\n });\n}\nasync function loadPolygonShape(engine) {\n engine.checkVersion(\"4.0.0-alpha.27\");\n await Promise.all([\n loadGenericPolygonShape(engine),\n loadTriangleShape(engine)\n ]);\n}\n\n\n//# sourceURL=webpack://@tsparticles/confetti/../../shapes/polygon/dist/browser/index.js?\n}");
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadGenericPolygonShape: () => (/* binding */ loadGenericPolygonShape),\n/* harmony export */ loadPolygonShape: () => (/* binding */ loadPolygonShape),\n/* harmony export */ loadTriangleShape: () => (/* binding */ loadTriangleShape)\n/* harmony export */ });\nasync function loadGenericPolygonShape(engine) {\n engine.checkVersion(\"4.0.0-alpha.28\");\n await engine.register((e)=>{\n e.addShape([\n \"polygon\"\n ], async ()=>{\n const { PolygonDrawer } = await __webpack_require__.e(/*! import() */ \"shapes_polygon_dist_browser_PolygonDrawer_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./PolygonDrawer.js */ \"../../shapes/polygon/dist/browser/PolygonDrawer.js\"));\n return new PolygonDrawer();\n });\n });\n}\nasync function loadTriangleShape(engine) {\n engine.checkVersion(\"4.0.0-alpha.28\");\n await engine.register((e)=>{\n e.addShape([\n \"triangle\"\n ], async ()=>{\n const { TriangleDrawer } = await __webpack_require__.e(/*! import() */ \"shapes_polygon_dist_browser_TriangleDrawer_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./TriangleDrawer.js */ \"../../shapes/polygon/dist/browser/TriangleDrawer.js\"));\n return new TriangleDrawer();\n });\n });\n}\nasync function loadPolygonShape(engine) {\n engine.checkVersion(\"4.0.0-alpha.28\");\n await Promise.all([\n loadGenericPolygonShape(engine),\n loadTriangleShape(engine)\n ]);\n}\n\n\n//# sourceURL=webpack://@tsparticles/confetti/../../shapes/polygon/dist/browser/index.js?\n}");
27
27
 
28
28
  /***/ }
29
29
 
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.27
7
+ * v4.0.0-alpha.28
8
8
  */
9
9
  "use strict";
10
10
  /*
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.27
7
+ * v4.0.0-alpha.28
8
8
  */
9
9
  "use strict";
10
10
  /*
@@ -23,7 +23,7 @@
23
23
  \*************************************************/
24
24
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
25
25
 
26
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadSquareShape: () => (/* binding */ loadSquareShape)\n/* harmony export */ });\nasync function loadSquareShape(engine) {\n engine.checkVersion(\"4.0.0-alpha.27\");\n await engine.register((e)=>{\n e.addShape([\n \"edge\",\n \"square\"\n ], async ()=>{\n const { SquareDrawer } = await __webpack_require__.e(/*! import() */ \"shapes_square_dist_browser_SquareDrawer_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./SquareDrawer.js */ \"../../shapes/square/dist/browser/SquareDrawer.js\"));\n return new SquareDrawer();\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/confetti/../../shapes/square/dist/browser/index.js?\n}");
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadSquareShape: () => (/* binding */ loadSquareShape)\n/* harmony export */ });\nasync function loadSquareShape(engine) {\n engine.checkVersion(\"4.0.0-alpha.28\");\n await engine.register((e)=>{\n e.addShape([\n \"edge\",\n \"square\"\n ], async ()=>{\n const { SquareDrawer } = await __webpack_require__.e(/*! import() */ \"shapes_square_dist_browser_SquareDrawer_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./SquareDrawer.js */ \"../../shapes/square/dist/browser/SquareDrawer.js\"));\n return new SquareDrawer();\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/confetti/../../shapes/square/dist/browser/index.js?\n}");
27
27
 
28
28
  /***/ }
29
29
 
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.27
7
+ * v4.0.0-alpha.28
8
8
  */
9
9
  "use strict";
10
10
  /*
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.27
7
+ * v4.0.0-alpha.28
8
8
  */
9
9
  "use strict";
10
10
  /*
@@ -23,7 +23,7 @@
23
23
  \***********************************************/
24
24
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
25
25
 
26
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadStarShape: () => (/* binding */ loadStarShape)\n/* harmony export */ });\nasync function loadStarShape(engine) {\n engine.checkVersion(\"4.0.0-alpha.27\");\n await engine.register((e)=>{\n e.addShape([\n \"star\"\n ], async ()=>{\n const { StarDrawer } = await __webpack_require__.e(/*! import() */ \"shapes_star_dist_browser_StarDrawer_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./StarDrawer.js */ \"../../shapes/star/dist/browser/StarDrawer.js\"));\n return new StarDrawer();\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/confetti/../../shapes/star/dist/browser/index.js?\n}");
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadStarShape: () => (/* binding */ loadStarShape)\n/* harmony export */ });\nasync function loadStarShape(engine) {\n engine.checkVersion(\"4.0.0-alpha.28\");\n await engine.register((e)=>{\n e.addShape([\n \"star\"\n ], async ()=>{\n const { StarDrawer } = await __webpack_require__.e(/*! import() */ \"shapes_star_dist_browser_StarDrawer_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./StarDrawer.js */ \"../../shapes/star/dist/browser/StarDrawer.js\"));\n return new StarDrawer();\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/confetti/../../shapes/star/dist/browser/index.js?\n}");
27
27
 
28
28
  /***/ }
29
29
 
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.27
7
+ * v4.0.0-alpha.28
8
8
  */
9
9
  /*
10
10
  * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
@@ -34,7 +34,7 @@ return /******/ (() => { // webpackBootstrap
34
34
  \************************************************/
35
35
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
36
36
 
37
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Engine: () => (/* binding */ Engine)\n/* harmony export */ });\n/* harmony import */ var _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Utils/Constants.js */ \"../../engine/dist/browser/Core/Utils/Constants.js\");\n/* harmony import */ var _Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Utils/Utils.js */ \"../../engine/dist/browser/Utils/Utils.js\");\n/* harmony import */ var _Utils_EventDispatcher_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Utils/EventDispatcher.js */ \"../../engine/dist/browser/Utils/EventDispatcher.js\");\n/* harmony import */ var _Enums_Types_EventType_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Enums/Types/EventType.js */ \"../../engine/dist/browser/Enums/Types/EventType.js\");\n/* harmony import */ var _Utils_LogUtils_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Utils/LogUtils.js */ \"../../engine/dist/browser/Utils/LogUtils.js\");\n/* harmony import */ var _Utils_MathUtils_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Utils/MathUtils.js */ \"../../engine/dist/browser/Utils/MathUtils.js\");\n\n\n\n\n\n\nconst fullPercent = \"100%\";\nasync function getDataFromUrl(data) {\n const url = (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.itemFromSingleOrMultiple)(data.url, data.index);\n if (!url) {\n return data.fallback;\n }\n const response = await fetch(url);\n if (response.ok) {\n return await response.json();\n }\n (0,_Utils_LogUtils_js__WEBPACK_IMPORTED_MODULE_4__.getLogger)().error(`${response.status.toString()} while retrieving config file`);\n return data.fallback;\n}\nconst getCanvasFromContainer = (domContainer)=>{\n const documentSafe = (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.safeDocument)();\n let canvasEl;\n if (domContainer instanceof HTMLCanvasElement || domContainer.tagName.toLowerCase() === _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.canvasTag) {\n canvasEl = domContainer;\n canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] ??= _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedFalse;\n } else {\n const existingCanvases = domContainer.getElementsByTagName(_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.canvasTag), foundCanvas = existingCanvases[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.canvasFirstIndex];\n if (foundCanvas) {\n canvasEl = foundCanvas;\n canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedFalse;\n } else {\n canvasEl = documentSafe.createElement(_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.canvasTag);\n canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedTrue;\n domContainer.appendChild(canvasEl);\n }\n }\n canvasEl.style.width ||= fullPercent;\n canvasEl.style.height ||= fullPercent;\n return canvasEl;\n}, getDomContainer = (id, source)=>{\n const documentSafe = (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.safeDocument)();\n let domContainer = source ?? documentSafe.getElementById(id);\n if (domContainer) {\n return domContainer;\n }\n domContainer = documentSafe.createElement(\"div\");\n domContainer.id = id;\n domContainer.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedTrue;\n documentSafe.body.append(domContainer);\n return domContainer;\n};\nclass Engine {\n colorManagers = new Map();\n easingFunctions = new Map();\n effectDrawers = new Map();\n initializers = {\n effects: new Map(),\n shapes: new Map(),\n updaters: new Map()\n };\n palettes = new Map();\n plugins = [];\n presets = new Map();\n shapeDrawers = new Map();\n updaters = new Map();\n _allLoadersSet = new Set();\n _configs = new Map();\n _domArray = [];\n _eventDispatcher = new _Utils_EventDispatcher_js__WEBPACK_IMPORTED_MODULE_2__.EventDispatcher();\n _executedSet = new Set();\n _initialized = false;\n _isRunningLoaders = false;\n _loadPromises = new Set();\n get configs() {\n const res = {};\n for (const [name, config] of this._configs){\n res[name] = config;\n }\n return res;\n }\n get items() {\n return this._domArray;\n }\n get version() {\n return \"4.0.0-alpha.27\";\n }\n addColorManager(name, manager) {\n this.colorManagers.set(name, manager);\n }\n addConfig(config) {\n const key = config.key ?? config.name ?? \"default\";\n this._configs.set(key, config);\n this._eventDispatcher.dispatchEvent(_Enums_Types_EventType_js__WEBPACK_IMPORTED_MODULE_3__.EventType.configAdded, {\n data: {\n name: key,\n config\n }\n });\n }\n addEasing(name, easing) {\n if (this.easingFunctions.get(name)) {\n return;\n }\n this.easingFunctions.set(name, easing);\n }\n addEffect(effect, drawer) {\n this.initializers.effects.set(effect, drawer);\n }\n addEventListener(type, listener) {\n this._eventDispatcher.addEventListener(type, listener);\n }\n addPalette(name, palette) {\n this.palettes.set(name, palette);\n }\n addParticleUpdater(name, updaterInitializer) {\n this.initializers.updaters.set(name, updaterInitializer);\n }\n addPlugin(plugin) {\n if (this.getPlugin(plugin.id)) {\n return;\n }\n this.plugins.push(plugin);\n }\n addPreset(preset, options, override = false) {\n if (!(override || !this.getPreset(preset))) {\n return;\n }\n this.presets.set(preset, options);\n }\n addShape(shapes, drawer) {\n for (const shape of shapes){\n this.initializers.shapes.set(shape, drawer);\n }\n }\n checkVersion(pluginVersion) {\n if (this.version === pluginVersion) {\n return;\n }\n throw new Error(`The tsParticles version is different from the loaded plugins version. Engine version: ${this.version}. Plugin version: ${pluginVersion}`);\n }\n clearPlugins(container) {\n this.effectDrawers.delete(container);\n this.shapeDrawers.delete(container);\n this.updaters.delete(container);\n }\n dispatchEvent(type, args) {\n this._eventDispatcher.dispatchEvent(type, args);\n }\n getEasing(name) {\n return this.easingFunctions.get(name) ?? ((value)=>value);\n }\n getEffectDrawers(container, force = false) {\n return (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.getItemMapFromInitializer)(container, this.effectDrawers, this.initializers.effects, force);\n }\n getPalette(name) {\n return this.palettes.get(name);\n }\n getPlugin(plugin) {\n return this.plugins.find((t)=>t.id === plugin);\n }\n getPreset(preset) {\n return this.presets.get(preset);\n }\n async getShapeDrawers(container, force = false) {\n return (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.getItemMapFromInitializer)(container, this.shapeDrawers, this.initializers.shapes, force);\n }\n async getUpdaters(container, force = false) {\n return (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.getItemsFromInitializer)(container, this.updaters, this.initializers.updaters, force);\n }\n async init() {\n if (this._initialized || this._isRunningLoaders) {\n return;\n }\n this._isRunningLoaders = true;\n this._executedSet = new Set();\n this._allLoadersSet = new Set(this._loadPromises);\n try {\n for (const loader of this._allLoadersSet){\n await this._runLoader(loader, this._executedSet, this._allLoadersSet);\n }\n } finally{\n this._loadPromises.clear();\n this._isRunningLoaders = false;\n this._initialized = true;\n }\n }\n item(index) {\n const { items } = this, item = items[index];\n if (item?.destroyed) {\n items.splice(index, _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.removeDeleteCount);\n return;\n }\n return item;\n }\n async load(params) {\n await this.init();\n const { Container } = await __webpack_require__.e(/*! import() */ \"engine_dist_browser_Core_Container_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./Container.js */ \"../../engine/dist/browser/Core/Container.js\")), id = params.id ?? params.element?.id ?? `tsparticles${Math.floor((0,_Utils_MathUtils_js__WEBPACK_IMPORTED_MODULE_5__.getRandom)() * _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.loadRandomFactor).toString()}`, { index, url } = params, options = url ? await getDataFromUrl({\n fallback: params.options,\n url,\n index\n }) : params.options, currentOptions = (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.itemFromSingleOrMultiple)(options, index), { items } = this, oldIndex = items.findIndex((v)=>v.id.description === id), newItem = new Container(this, id, currentOptions);\n if (oldIndex >= _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.loadMinIndex) {\n const old = this.item(oldIndex), deleteCount = old ? _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.one : _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.none;\n if (old && !old.destroyed) {\n old.destroy(false);\n }\n items.splice(oldIndex, deleteCount, newItem);\n } else {\n items.push(newItem);\n }\n const domContainer = getDomContainer(id, params.element), canvasEl = getCanvasFromContainer(domContainer);\n newItem.canvas.loadCanvas(canvasEl);\n await newItem.start();\n return newItem;\n }\n loadParticlesOptions(container, options, ...sourceOptions) {\n const updaters = this.updaters.get(container);\n if (!updaters) {\n return;\n }\n updaters.forEach((updater)=>updater.loadOptions?.(options, ...sourceOptions));\n }\n async refresh(refresh = true) {\n if (!refresh) {\n return;\n }\n await Promise.all(this.items.map((t)=>t.refresh()));\n }\n async register(...loaders) {\n if (this._initialized) {\n throw new Error(\"Register plugins can only be done before calling tsParticles.load()\");\n }\n for (const loader of loaders){\n if (this._isRunningLoaders) {\n await this._runLoader(loader, this._executedSet, this._allLoadersSet);\n } else {\n this._loadPromises.add(loader);\n }\n }\n }\n removeEventListener(type, listener) {\n this._eventDispatcher.removeEventListener(type, listener);\n }\n async _runLoader(loader, executed, allLoaders) {\n if (executed.has(loader)) return;\n executed.add(loader);\n allLoaders.add(loader);\n await loader(this);\n }\n}\n\n\n//# sourceURL=webpack://@tsparticles/confetti/../../engine/dist/browser/Core/Engine.js?\n}");
37
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Engine: () => (/* binding */ Engine)\n/* harmony export */ });\n/* harmony import */ var _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Utils/Constants.js */ \"../../engine/dist/browser/Core/Utils/Constants.js\");\n/* harmony import */ var _Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Utils/Utils.js */ \"../../engine/dist/browser/Utils/Utils.js\");\n/* harmony import */ var _Utils_EventDispatcher_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Utils/EventDispatcher.js */ \"../../engine/dist/browser/Utils/EventDispatcher.js\");\n/* harmony import */ var _Enums_Types_EventType_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Enums/Types/EventType.js */ \"../../engine/dist/browser/Enums/Types/EventType.js\");\n/* harmony import */ var _Utils_LogUtils_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Utils/LogUtils.js */ \"../../engine/dist/browser/Utils/LogUtils.js\");\n/* harmony import */ var _Utils_MathUtils_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Utils/MathUtils.js */ \"../../engine/dist/browser/Utils/MathUtils.js\");\n\n\n\n\n\n\nconst fullPercent = \"100%\";\nasync function getDataFromUrl(data) {\n const url = (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.itemFromSingleOrMultiple)(data.url, data.index);\n if (!url) {\n return data.fallback;\n }\n const response = await fetch(url);\n if (response.ok) {\n return await response.json();\n }\n (0,_Utils_LogUtils_js__WEBPACK_IMPORTED_MODULE_4__.getLogger)().error(`${response.status.toString()} while retrieving config file`);\n return data.fallback;\n}\nconst getCanvasFromContainer = (domContainer)=>{\n const documentSafe = (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.safeDocument)();\n let canvasEl;\n if (domContainer instanceof HTMLCanvasElement || domContainer.tagName.toLowerCase() === _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.canvasTag) {\n canvasEl = domContainer;\n canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] ??= _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedFalse;\n } else {\n const existingCanvases = domContainer.getElementsByTagName(_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.canvasTag), foundCanvas = existingCanvases[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.canvasFirstIndex];\n if (foundCanvas) {\n canvasEl = foundCanvas;\n canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedFalse;\n } else {\n canvasEl = documentSafe.createElement(_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.canvasTag);\n canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedTrue;\n domContainer.appendChild(canvasEl);\n }\n }\n canvasEl.style.width ||= fullPercent;\n canvasEl.style.height ||= fullPercent;\n return canvasEl;\n}, getDomContainer = (id, source)=>{\n const documentSafe = (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.safeDocument)();\n let domContainer = source ?? documentSafe.getElementById(id);\n if (domContainer) {\n return domContainer;\n }\n domContainer = documentSafe.createElement(\"div\");\n domContainer.id = id;\n domContainer.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedTrue;\n documentSafe.body.append(domContainer);\n return domContainer;\n};\nclass Engine {\n colorManagers = new Map();\n easingFunctions = new Map();\n effectDrawers = new Map();\n initializers = {\n effects: new Map(),\n shapes: new Map(),\n updaters: new Map()\n };\n palettes = new Map();\n plugins = [];\n presets = new Map();\n shapeDrawers = new Map();\n updaters = new Map();\n _allLoadersSet = new Set();\n _configs = new Map();\n _domArray = [];\n _eventDispatcher = new _Utils_EventDispatcher_js__WEBPACK_IMPORTED_MODULE_2__.EventDispatcher();\n _executedSet = new Set();\n _initialized = false;\n _isRunningLoaders = false;\n _loadPromises = new Set();\n get configs() {\n const res = {};\n for (const [name, config] of this._configs){\n res[name] = config;\n }\n return res;\n }\n get items() {\n return this._domArray;\n }\n get version() {\n return \"4.0.0-alpha.28\";\n }\n addColorManager(name, manager) {\n this.colorManagers.set(name, manager);\n }\n addConfig(config) {\n const key = config.key ?? config.name ?? \"default\";\n this._configs.set(key, config);\n this._eventDispatcher.dispatchEvent(_Enums_Types_EventType_js__WEBPACK_IMPORTED_MODULE_3__.EventType.configAdded, {\n data: {\n name: key,\n config\n }\n });\n }\n addEasing(name, easing) {\n if (this.easingFunctions.get(name)) {\n return;\n }\n this.easingFunctions.set(name, easing);\n }\n addEffect(effect, drawer) {\n this.initializers.effects.set(effect, drawer);\n }\n addEventListener(type, listener) {\n this._eventDispatcher.addEventListener(type, listener);\n }\n addPalette(name, palette) {\n this.palettes.set(name, palette);\n }\n addParticleUpdater(name, updaterInitializer) {\n this.initializers.updaters.set(name, updaterInitializer);\n }\n addPlugin(plugin) {\n if (this.getPlugin(plugin.id)) {\n return;\n }\n this.plugins.push(plugin);\n }\n addPreset(preset, options, override = false) {\n if (!(override || !this.getPreset(preset))) {\n return;\n }\n this.presets.set(preset, options);\n }\n addShape(shapes, drawer) {\n for (const shape of shapes){\n this.initializers.shapes.set(shape, drawer);\n }\n }\n checkVersion(pluginVersion) {\n if (this.version === pluginVersion) {\n return;\n }\n throw new Error(`The tsParticles version is different from the loaded plugins version. Engine version: ${this.version}. Plugin version: ${pluginVersion}`);\n }\n clearPlugins(container) {\n this.effectDrawers.delete(container);\n this.shapeDrawers.delete(container);\n this.updaters.delete(container);\n }\n dispatchEvent(type, args) {\n this._eventDispatcher.dispatchEvent(type, args);\n }\n getEasing(name) {\n return this.easingFunctions.get(name) ?? ((value)=>value);\n }\n getEffectDrawers(container, force = false) {\n return (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.getItemMapFromInitializer)(container, this.effectDrawers, this.initializers.effects, force);\n }\n getPalette(name) {\n return this.palettes.get(name);\n }\n getPlugin(plugin) {\n return this.plugins.find((t)=>t.id === plugin);\n }\n getPreset(preset) {\n return this.presets.get(preset);\n }\n async getShapeDrawers(container, force = false) {\n return (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.getItemMapFromInitializer)(container, this.shapeDrawers, this.initializers.shapes, force);\n }\n async getUpdaters(container, force = false) {\n return (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.getItemsFromInitializer)(container, this.updaters, this.initializers.updaters, force);\n }\n async init() {\n if (this._initialized || this._isRunningLoaders) {\n return;\n }\n this._isRunningLoaders = true;\n this._executedSet = new Set();\n this._allLoadersSet = new Set(this._loadPromises);\n try {\n for (const loader of this._allLoadersSet){\n await this._runLoader(loader, this._executedSet, this._allLoadersSet);\n }\n } finally{\n this._loadPromises.clear();\n this._isRunningLoaders = false;\n this._initialized = true;\n }\n }\n item(index) {\n const { items } = this, item = items[index];\n if (item?.destroyed) {\n items.splice(index, _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.removeDeleteCount);\n return;\n }\n return item;\n }\n async load(params) {\n await this.init();\n const { Container } = await __webpack_require__.e(/*! import() */ \"engine_dist_browser_Core_Container_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./Container.js */ \"../../engine/dist/browser/Core/Container.js\")), id = params.id ?? params.element?.id ?? `tsparticles${Math.floor((0,_Utils_MathUtils_js__WEBPACK_IMPORTED_MODULE_5__.getRandom)() * _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.loadRandomFactor).toString()}`, { index, url } = params, options = url ? await getDataFromUrl({\n fallback: params.options,\n url,\n index\n }) : params.options, currentOptions = (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.itemFromSingleOrMultiple)(options, index), { items } = this, oldIndex = items.findIndex((v)=>v.id.description === id), newItem = new Container(this, id, currentOptions);\n if (oldIndex >= _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.loadMinIndex) {\n const old = this.item(oldIndex), deleteCount = old ? _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.one : _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.none;\n if (old && !old.destroyed) {\n old.destroy(false);\n }\n items.splice(oldIndex, deleteCount, newItem);\n } else {\n items.push(newItem);\n }\n const domContainer = getDomContainer(id, params.element), canvasEl = getCanvasFromContainer(domContainer);\n newItem.canvas.loadCanvas(canvasEl);\n await newItem.start();\n return newItem;\n }\n loadParticlesOptions(container, options, ...sourceOptions) {\n const updaters = this.updaters.get(container);\n if (!updaters) {\n return;\n }\n updaters.forEach((updater)=>updater.loadOptions?.(options, ...sourceOptions));\n }\n async refresh(refresh = true) {\n if (!refresh) {\n return;\n }\n await Promise.all(this.items.map((t)=>t.refresh()));\n }\n async register(...loaders) {\n if (this._initialized) {\n throw new Error(\"Register plugins can only be done before calling tsParticles.load()\");\n }\n for (const loader of loaders){\n if (this._isRunningLoaders) {\n await this._runLoader(loader, this._executedSet, this._allLoadersSet);\n } else {\n this._loadPromises.add(loader);\n }\n }\n }\n removeEventListener(type, listener) {\n this._eventDispatcher.removeEventListener(type, listener);\n }\n async _runLoader(loader, executed, allLoaders) {\n if (executed.has(loader)) return;\n executed.add(loader);\n allLoaders.add(loader);\n await loader(this);\n }\n}\n\n\n//# sourceURL=webpack://@tsparticles/confetti/../../engine/dist/browser/Core/Engine.js?\n}");
38
38
 
39
39
  /***/ },
40
40
 
@@ -684,7 +684,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
684
684
  \**********************************/
685
685
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
686
686
 
687
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ confetti: () => (/* binding */ confetti)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n/* harmony import */ var _ConfettiOptions_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ConfettiOptions.js */ \"./dist/browser/ConfettiOptions.js\");\n\n\nlet initialized = false, initializing = false;\nconst ids = new Map(), defaultGravity = 9.81, sizeFactor = 5, speedFactor = 3, decayOffset = 1, disableRotate = 0, disableTilt = 0;\nasync function initPlugins(engine) {\n if (initialized) {\n return;\n }\n if (initializing) {\n return new Promise((resolve)=>{\n const timeout = 100, interval = setInterval(()=>{\n if (!initialized) {\n return;\n }\n clearInterval(interval);\n resolve();\n }, timeout);\n });\n }\n initializing = true;\n engine.checkVersion(\"4.0.0-alpha.27\");\n await engine.register(async (e)=>{\n const [{ loadBasic }, { loadEmittersPlugin }, { loadMotionPlugin }, { loadCardSuitsShape }, { loadHeartShape }, { loadImageShape }, { loadPolygonShape }, { loadSquareShape }, { loadStarShape }, { loadEmojiShape }, { loadRotateUpdater }, { loadLifeUpdater }, { loadRollUpdater }, { loadTiltUpdater }, { loadWobbleUpdater }] = await Promise.all([\n __webpack_require__.e(/*! import() */ \"basic_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/basic */ \"../basic/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"plugins_emitters_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/plugin-emitters */ \"../../plugins/emitters/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"plugins_motion_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/plugin-motion */ \"../../plugins/motion/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"shapes_cards_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/shape-cards */ \"../../shapes/cards/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"shapes_heart_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/shape-heart */ \"../../shapes/heart/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"shapes_image_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/shape-image */ \"../../shapes/image/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"shapes_polygon_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/shape-polygon */ \"../../shapes/polygon/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"shapes_square_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/shape-square */ \"../../shapes/square/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"shapes_star_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/shape-star */ \"../../shapes/star/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"shapes_emoji_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/shape-emoji */ \"../../shapes/emoji/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"updaters_rotate_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/updater-rotate */ \"../../updaters/rotate/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"updaters_life_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/updater-life */ \"../../updaters/life/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"updaters_roll_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/updater-roll */ \"../../updaters/roll/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"updaters_tilt_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/updater-tilt */ \"../../updaters/tilt/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"updaters_wobble_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/updater-wobble */ \"../../updaters/wobble/dist/browser/index.js\"))\n ]);\n await loadBasic(e);\n await Promise.all([\n loadMotionPlugin(e),\n loadEmittersPlugin(e),\n loadCardSuitsShape(e),\n loadHeartShape(e),\n loadImageShape(e),\n loadPolygonShape(e),\n loadSquareShape(e),\n loadStarShape(e),\n loadEmojiShape(e),\n loadRotateUpdater(e),\n loadLifeUpdater(e),\n loadRollUpdater(e),\n loadTiltUpdater(e),\n loadWobbleUpdater(e)\n ]);\n });\n initializing = false;\n initialized = true;\n}\nasync function setConfetti(params) {\n const actualOptions = new _ConfettiOptions_js__WEBPACK_IMPORTED_MODULE_1__.ConfettiOptions();\n actualOptions.load(params.options);\n let container;\n const fpsLimit = 120, fpsLimitFactor = 3.6, opacitySpeed = actualOptions.ticks * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.millisecondsToSeconds / (fpsLimitFactor * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.millisecondsToSeconds * fpsLimit);\n if (ids.has(params.id)) {\n container = ids.get(params.id);\n if (container && !container.destroyed) {\n const alias = container;\n if (\"addEmitter\" in alias) {\n await alias.addEmitter?.({\n startCount: actualOptions.count,\n position: actualOptions.position,\n size: {\n width: 0,\n height: 0\n },\n rate: {\n delay: 0,\n quantity: 0\n },\n life: {\n duration: 0.1,\n count: 1\n },\n particles: {\n color: {\n value: actualOptions.colors\n },\n shape: {\n type: actualOptions.shapes,\n options: actualOptions.shapeOptions\n },\n life: {\n count: 1\n },\n opacity: {\n value: {\n min: 0,\n max: 1\n },\n animation: {\n enable: true,\n sync: true,\n speed: opacitySpeed,\n startValue: \"max\",\n destroy: \"min\"\n }\n },\n size: {\n value: sizeFactor * actualOptions.scalar\n },\n move: {\n angle: {\n value: actualOptions.spread,\n offset: 0\n },\n drift: {\n min: -actualOptions.drift,\n max: actualOptions.drift\n },\n gravity: {\n acceleration: actualOptions.gravity * defaultGravity\n },\n speed: actualOptions.startVelocity * speedFactor,\n decay: decayOffset - actualOptions.decay,\n direction: -actualOptions.angle\n },\n rotate: {\n value: actualOptions.flat ? disableRotate : {\n min: 0,\n max: 360\n },\n direction: \"random\",\n animation: {\n enable: !actualOptions.flat,\n speed: 60\n }\n },\n tilt: {\n direction: \"random\",\n enable: !actualOptions.flat,\n value: actualOptions.flat ? disableTilt : {\n min: 0,\n max: 360\n },\n animation: {\n enable: true,\n speed: 60\n }\n },\n roll: {\n darken: {\n enable: true,\n value: 25\n },\n enable: !actualOptions.flat,\n speed: {\n min: 15,\n max: 25\n }\n },\n wobble: {\n distance: 30,\n enable: !actualOptions.flat,\n speed: {\n min: -15,\n max: 15\n }\n }\n }\n });\n return;\n }\n }\n }\n const particlesOptions = {\n fullScreen: {\n enable: !params.canvas,\n zIndex: actualOptions.zIndex\n },\n fpsLimit: 120,\n particles: {\n number: {\n value: 0\n },\n color: {\n value: actualOptions.colors\n },\n shape: {\n type: actualOptions.shapes,\n options: actualOptions.shapeOptions\n },\n opacity: {\n value: {\n min: 0,\n max: 1\n },\n animation: {\n enable: true,\n sync: true,\n speed: opacitySpeed,\n startValue: \"max\",\n destroy: \"min\"\n }\n },\n size: {\n value: sizeFactor * actualOptions.scalar\n },\n links: {\n enable: false\n },\n life: {\n count: 1\n },\n move: {\n angle: {\n value: actualOptions.spread,\n offset: 0\n },\n drift: {\n min: -actualOptions.drift,\n max: actualOptions.drift\n },\n enable: true,\n gravity: {\n enable: true,\n acceleration: actualOptions.gravity * defaultGravity\n },\n speed: actualOptions.startVelocity * speedFactor,\n decay: decayOffset - actualOptions.decay,\n direction: -actualOptions.angle,\n random: true,\n straight: false,\n outModes: {\n default: \"none\",\n bottom: \"destroy\"\n }\n },\n rotate: {\n value: actualOptions.flat ? disableRotate : {\n min: 0,\n max: 360\n },\n direction: \"random\",\n animation: {\n enable: !actualOptions.flat,\n speed: 60\n }\n },\n tilt: {\n direction: \"random\",\n enable: !actualOptions.flat,\n value: actualOptions.flat ? disableTilt : {\n min: 0,\n max: 360\n },\n animation: {\n enable: true,\n speed: 60\n }\n },\n roll: {\n darken: {\n enable: true,\n value: 25\n },\n enable: !actualOptions.flat,\n speed: {\n min: 15,\n max: 25\n }\n },\n wobble: {\n distance: 30,\n enable: !actualOptions.flat,\n speed: {\n min: -15,\n max: 15\n }\n }\n },\n motion: {\n disable: actualOptions.disableForReducedMotion\n },\n emitters: {\n name: \"confetti\",\n startCount: actualOptions.count,\n position: actualOptions.position,\n size: {\n width: 0,\n height: 0\n },\n rate: {\n delay: 0,\n quantity: 0\n },\n life: {\n duration: 0.1,\n count: 1\n }\n }\n };\n container = await _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.tsParticles.load({\n id: params.id,\n element: params.canvas,\n options: particlesOptions\n });\n ids.set(params.id, container);\n return container;\n}\nasync function confetti(idOrOptions, confettiOptions) {\n await initPlugins(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.tsParticles);\n let options, id;\n if ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isString)(idOrOptions)) {\n id = idOrOptions;\n options = confettiOptions ?? {};\n } else {\n id = \"confetti\";\n options = idOrOptions;\n }\n return setConfetti({\n id,\n options\n });\n}\nconfetti.create = async (canvas, options)=>{\n await initPlugins(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.tsParticles);\n const id = canvas.getAttribute(\"id\") ?? \"confetti\";\n canvas.setAttribute(\"id\", id);\n return async (idOrOptions, confettiOptions)=>{\n let subOptions, subId;\n if ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isString)(idOrOptions)) {\n subId = idOrOptions;\n subOptions = confettiOptions ?? options;\n } else {\n subId = id;\n subOptions = idOrOptions;\n }\n return setConfetti({\n id: subId,\n canvas,\n options: subOptions\n });\n };\n};\nconfetti.init = async ()=>{\n await initPlugins(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.tsParticles);\n};\nconfetti.version = \"4.0.0-alpha.27\";\nglobalThis.confetti = confetti;\n\n\n//# sourceURL=webpack://@tsparticles/confetti/./dist/browser/confetti.js?\n}");
687
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ confetti: () => (/* binding */ confetti)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n/* harmony import */ var _ConfettiOptions_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ConfettiOptions.js */ \"./dist/browser/ConfettiOptions.js\");\n\n\nlet initialized = false, initializing = false;\nconst ids = new Map(), defaultGravity = 9.81, sizeFactor = 5, speedFactor = 3, decayOffset = 1, disableRotate = 0, disableTilt = 0;\nasync function initPlugins(engine) {\n if (initialized) {\n return;\n }\n if (initializing) {\n return new Promise((resolve)=>{\n const timeout = 100, interval = setInterval(()=>{\n if (!initialized) {\n return;\n }\n clearInterval(interval);\n resolve();\n }, timeout);\n });\n }\n initializing = true;\n engine.checkVersion(\"4.0.0-alpha.28\");\n await engine.register(async (e)=>{\n const [{ loadBasic }, { loadEmittersPlugin }, { loadMotionPlugin }, { loadCardSuitsShape }, { loadHeartShape }, { loadImageShape }, { loadPolygonShape }, { loadSquareShape }, { loadStarShape }, { loadEmojiShape }, { loadRotateUpdater }, { loadLifeUpdater }, { loadRollUpdater }, { loadTiltUpdater }, { loadWobbleUpdater }] = await Promise.all([\n __webpack_require__.e(/*! import() */ \"basic_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/basic */ \"../basic/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"plugins_emitters_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/plugin-emitters */ \"../../plugins/emitters/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"plugins_motion_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/plugin-motion */ \"../../plugins/motion/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"shapes_cards_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/shape-cards */ \"../../shapes/cards/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"shapes_heart_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/shape-heart */ \"../../shapes/heart/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"shapes_image_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/shape-image */ \"../../shapes/image/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"shapes_polygon_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/shape-polygon */ \"../../shapes/polygon/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"shapes_square_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/shape-square */ \"../../shapes/square/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"shapes_star_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/shape-star */ \"../../shapes/star/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"shapes_emoji_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/shape-emoji */ \"../../shapes/emoji/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"updaters_rotate_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/updater-rotate */ \"../../updaters/rotate/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"updaters_life_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/updater-life */ \"../../updaters/life/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"updaters_roll_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/updater-roll */ \"../../updaters/roll/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"updaters_tilt_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/updater-tilt */ \"../../updaters/tilt/dist/browser/index.js\")),\n __webpack_require__.e(/*! import() */ \"updaters_wobble_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/updater-wobble */ \"../../updaters/wobble/dist/browser/index.js\"))\n ]);\n await Promise.all([\n loadBasic(e),\n loadMotionPlugin(e),\n loadEmittersPlugin(e),\n loadCardSuitsShape(e),\n loadHeartShape(e),\n loadImageShape(e),\n loadPolygonShape(e),\n loadSquareShape(e),\n loadStarShape(e),\n loadEmojiShape(e),\n loadRotateUpdater(e),\n loadLifeUpdater(e),\n loadRollUpdater(e),\n loadTiltUpdater(e),\n loadWobbleUpdater(e)\n ]);\n });\n initializing = false;\n initialized = true;\n}\nasync function setConfetti(params) {\n const actualOptions = new _ConfettiOptions_js__WEBPACK_IMPORTED_MODULE_1__.ConfettiOptions();\n actualOptions.load(params.options);\n let container;\n const fpsLimit = 120, fpsLimitFactor = 3.6, opacitySpeed = actualOptions.ticks * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.millisecondsToSeconds / (fpsLimitFactor * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.millisecondsToSeconds * fpsLimit);\n if (ids.has(params.id)) {\n container = ids.get(params.id);\n if (container && !container.destroyed) {\n const alias = container;\n if (\"addEmitter\" in alias) {\n await alias.addEmitter?.({\n startCount: actualOptions.count,\n position: actualOptions.position,\n size: {\n width: 0,\n height: 0\n },\n rate: {\n delay: 0,\n quantity: 0\n },\n life: {\n duration: 0.1,\n count: 1\n },\n particles: {\n fill: {\n color: {\n value: actualOptions.colors\n },\n enable: true\n },\n shape: {\n type: actualOptions.shapes,\n options: actualOptions.shapeOptions\n },\n life: {\n count: 1\n },\n opacity: {\n value: {\n min: 0,\n max: 1\n },\n animation: {\n enable: true,\n sync: true,\n speed: opacitySpeed,\n startValue: \"max\",\n destroy: \"min\"\n }\n },\n size: {\n value: sizeFactor * actualOptions.scalar\n },\n move: {\n angle: {\n value: actualOptions.spread,\n offset: 0\n },\n drift: {\n min: -actualOptions.drift,\n max: actualOptions.drift\n },\n gravity: {\n acceleration: actualOptions.gravity * defaultGravity\n },\n speed: actualOptions.startVelocity * speedFactor,\n decay: decayOffset - actualOptions.decay,\n direction: -actualOptions.angle\n },\n rotate: {\n value: actualOptions.flat ? disableRotate : {\n min: 0,\n max: 360\n },\n direction: \"random\",\n animation: {\n enable: !actualOptions.flat,\n speed: 60\n }\n },\n tilt: {\n direction: \"random\",\n enable: !actualOptions.flat,\n value: actualOptions.flat ? disableTilt : {\n min: 0,\n max: 360\n },\n animation: {\n enable: true,\n speed: 60\n }\n },\n roll: {\n darken: {\n enable: true,\n value: 25\n },\n enable: !actualOptions.flat,\n speed: {\n min: 15,\n max: 25\n }\n },\n wobble: {\n distance: 30,\n enable: !actualOptions.flat,\n speed: {\n min: -15,\n max: 15\n }\n }\n }\n });\n return;\n }\n }\n }\n const particlesOptions = {\n fullScreen: {\n enable: !params.canvas,\n zIndex: actualOptions.zIndex\n },\n fpsLimit: 120,\n particles: {\n number: {\n value: 0\n },\n fill: {\n color: {\n value: actualOptions.colors\n },\n enable: true\n },\n shape: {\n type: actualOptions.shapes,\n options: actualOptions.shapeOptions\n },\n opacity: {\n value: {\n min: 0,\n max: 1\n },\n animation: {\n enable: true,\n sync: true,\n speed: opacitySpeed,\n startValue: \"max\",\n destroy: \"min\"\n }\n },\n size: {\n value: sizeFactor * actualOptions.scalar\n },\n links: {\n enable: false\n },\n life: {\n count: 1\n },\n move: {\n angle: {\n value: actualOptions.spread,\n offset: 0\n },\n drift: {\n min: -actualOptions.drift,\n max: actualOptions.drift\n },\n enable: true,\n gravity: {\n enable: true,\n acceleration: actualOptions.gravity * defaultGravity\n },\n speed: actualOptions.startVelocity * speedFactor,\n decay: decayOffset - actualOptions.decay,\n direction: -actualOptions.angle,\n random: true,\n straight: false,\n outModes: {\n default: \"none\",\n bottom: \"destroy\"\n }\n },\n rotate: {\n value: actualOptions.flat ? disableRotate : {\n min: 0,\n max: 360\n },\n direction: \"random\",\n animation: {\n enable: !actualOptions.flat,\n speed: 60\n }\n },\n tilt: {\n direction: \"random\",\n enable: !actualOptions.flat,\n value: actualOptions.flat ? disableTilt : {\n min: 0,\n max: 360\n },\n animation: {\n enable: true,\n speed: 60\n }\n },\n roll: {\n darken: {\n enable: true,\n value: 25\n },\n enable: !actualOptions.flat,\n speed: {\n min: 15,\n max: 25\n }\n },\n wobble: {\n distance: 30,\n enable: !actualOptions.flat,\n speed: {\n min: -15,\n max: 15\n }\n }\n },\n motion: {\n disable: actualOptions.disableForReducedMotion\n },\n emitters: {\n name: \"confetti\",\n startCount: actualOptions.count,\n position: actualOptions.position,\n size: {\n width: 0,\n height: 0\n },\n rate: {\n delay: 0,\n quantity: 0\n },\n life: {\n duration: 0.1,\n count: 1\n }\n }\n };\n container = await _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.tsParticles.load({\n id: params.id,\n element: params.canvas,\n options: particlesOptions\n });\n ids.set(params.id, container);\n return container;\n}\nasync function confetti(idOrOptions, confettiOptions) {\n await initPlugins(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.tsParticles);\n let options, id;\n if ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isString)(idOrOptions)) {\n id = idOrOptions;\n options = confettiOptions ?? {};\n } else {\n id = \"confetti\";\n options = idOrOptions;\n }\n return setConfetti({\n id,\n options\n });\n}\nconfetti.create = async (canvas, options)=>{\n await initPlugins(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.tsParticles);\n const id = canvas.getAttribute(\"id\") ?? \"confetti\";\n canvas.setAttribute(\"id\", id);\n return async (idOrOptions, confettiOptions)=>{\n let subOptions, subId;\n if ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isString)(idOrOptions)) {\n subId = idOrOptions;\n subOptions = confettiOptions ?? options;\n } else {\n subId = id;\n subOptions = idOrOptions;\n }\n return setConfetti({\n id: subId,\n canvas,\n options: subOptions\n });\n };\n};\nconfetti.init = async ()=>{\n await initPlugins(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.tsParticles);\n};\nconfetti.version = \"4.0.0-alpha.28\";\nglobalThis.confetti = confetti;\n\n\n//# sourceURL=webpack://@tsparticles/confetti/./dist/browser/confetti.js?\n}");
688
688
 
689
689
  /***/ },
690
690