@tsparticles/confetti 3.2.2 → 3.3.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 (317) hide show
  1. package/2043.min.js +2 -0
  2. package/2043.min.js.LICENSE.txt +1 -0
  3. package/2112.min.js +2 -0
  4. package/2112.min.js.LICENSE.txt +1 -0
  5. package/2136.min.js +2 -0
  6. package/2136.min.js.LICENSE.txt +1 -0
  7. package/2284.min.js +2 -0
  8. package/2284.min.js.LICENSE.txt +1 -0
  9. package/2370.min.js +2 -0
  10. package/2370.min.js.LICENSE.txt +1 -0
  11. package/2497.min.js +2 -0
  12. package/2497.min.js.LICENSE.txt +1 -0
  13. package/286.min.js +2 -0
  14. package/286.min.js.LICENSE.txt +1 -0
  15. package/3237.min.js +2 -0
  16. package/3237.min.js.LICENSE.txt +1 -0
  17. package/335.min.js +2 -0
  18. package/335.min.js.LICENSE.txt +1 -0
  19. package/3416.min.js +2 -0
  20. package/3416.min.js.LICENSE.txt +1 -0
  21. package/344.min.js +2 -0
  22. package/344.min.js.LICENSE.txt +1 -0
  23. package/357.min.js +2 -0
  24. package/357.min.js.LICENSE.txt +1 -0
  25. package/3622.min.js +2 -0
  26. package/3622.min.js.LICENSE.txt +1 -0
  27. package/3632.min.js +2 -0
  28. package/3632.min.js.LICENSE.txt +1 -0
  29. package/3695.min.js +2 -0
  30. package/3695.min.js.LICENSE.txt +1 -0
  31. package/401.min.js +2 -0
  32. package/401.min.js.LICENSE.txt +1 -0
  33. package/4036.min.js +2 -0
  34. package/4036.min.js.LICENSE.txt +1 -0
  35. package/4154.min.js +2 -0
  36. package/4154.min.js.LICENSE.txt +1 -0
  37. package/4264.min.js +2 -0
  38. package/4264.min.js.LICENSE.txt +1 -0
  39. package/4302.min.js +2 -0
  40. package/4302.min.js.LICENSE.txt +1 -0
  41. package/439.min.js +2 -0
  42. package/439.min.js.LICENSE.txt +1 -0
  43. package/449.min.js +2 -0
  44. package/449.min.js.LICENSE.txt +1 -0
  45. package/4512.min.js +2 -0
  46. package/4512.min.js.LICENSE.txt +1 -0
  47. package/4924.min.js +2 -0
  48. package/4924.min.js.LICENSE.txt +1 -0
  49. package/5201.min.js +2 -0
  50. package/5201.min.js.LICENSE.txt +1 -0
  51. package/5369.min.js +2 -0
  52. package/5369.min.js.LICENSE.txt +1 -0
  53. package/561.min.js +2 -0
  54. package/561.min.js.LICENSE.txt +1 -0
  55. package/5775.min.js +2 -0
  56. package/5775.min.js.LICENSE.txt +1 -0
  57. package/5808.min.js +2 -0
  58. package/5808.min.js.LICENSE.txt +1 -0
  59. package/5814.min.js +2 -0
  60. package/5814.min.js.LICENSE.txt +1 -0
  61. package/6119.min.js +2 -0
  62. package/6119.min.js.LICENSE.txt +1 -0
  63. package/6493.min.js +2 -0
  64. package/6493.min.js.LICENSE.txt +1 -0
  65. package/6520.min.js +2 -0
  66. package/6520.min.js.LICENSE.txt +1 -0
  67. package/66.min.js +2 -0
  68. package/66.min.js.LICENSE.txt +1 -0
  69. package/6732.min.js +2 -0
  70. package/6732.min.js.LICENSE.txt +1 -0
  71. package/6735.min.js +2 -0
  72. package/6735.min.js.LICENSE.txt +1 -0
  73. package/6974.min.js +2 -0
  74. package/6974.min.js.LICENSE.txt +1 -0
  75. package/705.min.js +2 -0
  76. package/705.min.js.LICENSE.txt +1 -0
  77. package/7306.min.js +2 -0
  78. package/7306.min.js.LICENSE.txt +1 -0
  79. package/7528.min.js +2 -0
  80. package/7528.min.js.LICENSE.txt +1 -0
  81. package/7774.min.js +2 -0
  82. package/7774.min.js.LICENSE.txt +1 -0
  83. package/8125.min.js +2 -0
  84. package/8125.min.js.LICENSE.txt +1 -0
  85. package/{3733.min.js → 8155.min.js} +2 -2
  86. package/8155.min.js.LICENSE.txt +1 -0
  87. package/823.min.js +2 -0
  88. package/823.min.js.LICENSE.txt +1 -0
  89. package/8469.min.js +2 -0
  90. package/8469.min.js.LICENSE.txt +1 -0
  91. package/{4595.min.js → 8656.min.js} +2 -2
  92. package/8656.min.js.LICENSE.txt +1 -0
  93. package/8746.min.js +2 -0
  94. package/8746.min.js.LICENSE.txt +1 -0
  95. package/9151.min.js +2 -0
  96. package/9151.min.js.LICENSE.txt +1 -0
  97. package/94.min.js +2 -0
  98. package/94.min.js.LICENSE.txt +1 -0
  99. package/9487.min.js +2 -0
  100. package/9487.min.js.LICENSE.txt +1 -0
  101. package/{5742.min.js → 9581.min.js} +2 -2
  102. package/9581.min.js.LICENSE.txt +1 -0
  103. package/9946.min.js +2 -0
  104. package/9946.min.js.LICENSE.txt +1 -0
  105. package/basic_dist_browser_index_js.js +1 -1
  106. package/cjs/confetti.js +1 -24
  107. package/engine_dist_browser_Core_Container_js.js +15 -5
  108. package/move_base_dist_browser_BaseMover_js.js +12 -2
  109. package/move_base_dist_browser_index_js.js +1 -1
  110. package/package.json +17 -17
  111. package/plugins_emitters_dist_browser_EmitterInstance_js.js +2 -2
  112. package/plugins_emitters_dist_browser_EmittersPlugin_js.js +1 -1
  113. package/plugins_emitters_dist_browser_Emitters_js.js +2 -2
  114. package/plugins_emitters_dist_browser_ShapeManager_js.js +1 -1
  115. package/plugins_emitters_dist_browser_index_js.js +1 -1
  116. package/plugins_motion_dist_browser_MotionInstance_js.js +1 -1
  117. package/plugins_motion_dist_browser_MotionPlugin_js.js +1 -1
  118. package/plugins_motion_dist_browser_index_js.js +1 -1
  119. package/report.html +1 -1
  120. package/shapes_cards_dist_browser_ClubDrawer_js.js +12 -2
  121. package/shapes_cards_dist_browser_DiamondDrawer_js.js +12 -2
  122. package/shapes_cards_dist_browser_HeartDrawer_js.js +12 -2
  123. package/shapes_cards_dist_browser_SpadeDrawer_js.js +12 -2
  124. package/shapes_cards_dist_browser_index_js.js +1 -1
  125. package/shapes_circle_dist_browser_CircleDrawer_js.js +12 -2
  126. package/shapes_circle_dist_browser_index_js.js +1 -1
  127. package/shapes_emoji_dist_browser_EmojiDrawer_js.js +12 -2
  128. package/shapes_emoji_dist_browser_index_js.js +1 -1
  129. package/shapes_heart_dist_browser_HeartDrawer_js.js +12 -2
  130. package/shapes_heart_dist_browser_index_js.js +1 -1
  131. package/shapes_image_dist_browser_GifUtils_Utils_js.js +1 -1
  132. package/shapes_image_dist_browser_ImageDrawer_js.js +2 -2
  133. package/shapes_image_dist_browser_ImagePreloader_js.js +1 -1
  134. package/shapes_image_dist_browser_index_js.js +2 -2
  135. package/shapes_polygon_dist_browser_PolygonDrawer_js.js +12 -2
  136. package/shapes_polygon_dist_browser_TriangleDrawer_js.js +12 -2
  137. package/shapes_polygon_dist_browser_index_js.js +1 -1
  138. package/shapes_square_dist_browser_SquareDrawer_js.js +12 -2
  139. package/shapes_square_dist_browser_index_js.js +1 -1
  140. package/shapes_star_dist_browser_StarDrawer_js.js +12 -2
  141. package/shapes_star_dist_browser_index_js.js +1 -1
  142. package/tsparticles.confetti.bundle.js +4 -4
  143. package/tsparticles.confetti.bundle.min.js +1 -1
  144. package/tsparticles.confetti.bundle.min.js.LICENSE.txt +1 -1
  145. package/tsparticles.confetti.js +1 -1
  146. package/tsparticles.confetti.min.js +1 -1
  147. package/tsparticles.confetti.min.js.LICENSE.txt +1 -1
  148. package/updaters_color_dist_browser_ColorUpdater_js.js +2 -2
  149. package/updaters_color_dist_browser_index_js.js +1 -1
  150. package/updaters_life_dist_browser_LifeUpdater_js.js +12 -2
  151. package/updaters_life_dist_browser_index_js.js +1 -1
  152. package/updaters_opacity_dist_browser_OpacityUpdater_js.js +2 -2
  153. package/updaters_opacity_dist_browser_index_js.js +1 -1
  154. package/updaters_outModes_dist_browser_OutOfCanvasUpdater_js.js +52 -2
  155. package/updaters_outModes_dist_browser_index_js.js +1 -1
  156. package/updaters_roll_dist_browser_RollUpdater_js.js +12 -2
  157. package/updaters_roll_dist_browser_index_js.js +1 -1
  158. package/updaters_rotate_dist_browser_RotateUpdater_js.js +2 -2
  159. package/updaters_rotate_dist_browser_index_js.js +1 -1
  160. package/updaters_size_dist_browser_SizeUpdater_js.js +2 -2
  161. package/updaters_size_dist_browser_index_js.js +1 -1
  162. package/updaters_tilt_dist_browser_TiltUpdater_js.js +2 -2
  163. package/updaters_tilt_dist_browser_index_js.js +1 -1
  164. package/updaters_wobble_dist_browser_WobbleUpdater_js.js +12 -2
  165. package/updaters_wobble_dist_browser_index_js.js +1 -1
  166. package/1308.min.js +0 -2
  167. package/1308.min.js.LICENSE.txt +0 -1
  168. package/1472.min.js +0 -2
  169. package/1472.min.js.LICENSE.txt +0 -1
  170. package/1513.min.js +0 -2
  171. package/1513.min.js.LICENSE.txt +0 -1
  172. package/1705.min.js +0 -2
  173. package/1705.min.js.LICENSE.txt +0 -1
  174. package/1810.min.js +0 -2
  175. package/1810.min.js.LICENSE.txt +0 -1
  176. package/196.min.js +0 -2
  177. package/196.min.js.LICENSE.txt +0 -1
  178. package/2124.min.js +0 -2
  179. package/2124.min.js.LICENSE.txt +0 -1
  180. package/2173.min.js +0 -2
  181. package/2173.min.js.LICENSE.txt +0 -1
  182. package/2580.min.js +0 -2
  183. package/2580.min.js.LICENSE.txt +0 -1
  184. package/2720.min.js +0 -2
  185. package/2720.min.js.LICENSE.txt +0 -1
  186. package/2765.min.js +0 -2
  187. package/2765.min.js.LICENSE.txt +0 -1
  188. package/3141.min.js +0 -2
  189. package/3141.min.js.LICENSE.txt +0 -1
  190. package/3261.min.js +0 -2
  191. package/3261.min.js.LICENSE.txt +0 -1
  192. package/3473.min.js +0 -2
  193. package/3473.min.js.LICENSE.txt +0 -1
  194. package/3610.min.js +0 -2
  195. package/3610.min.js.LICENSE.txt +0 -1
  196. package/3629.min.js +0 -2
  197. package/3629.min.js.LICENSE.txt +0 -1
  198. package/3648.min.js +0 -2
  199. package/3648.min.js.LICENSE.txt +0 -1
  200. package/3733.min.js.LICENSE.txt +0 -1
  201. package/3862.min.js +0 -2
  202. package/3862.min.js.LICENSE.txt +0 -1
  203. package/3869.min.js +0 -2
  204. package/3869.min.js.LICENSE.txt +0 -1
  205. package/409.min.js +0 -2
  206. package/409.min.js.LICENSE.txt +0 -1
  207. package/4245.min.js +0 -2
  208. package/4245.min.js.LICENSE.txt +0 -1
  209. package/4328.min.js +0 -2
  210. package/4328.min.js.LICENSE.txt +0 -1
  211. package/4396.min.js +0 -2
  212. package/4396.min.js.LICENSE.txt +0 -1
  213. package/4547.min.js +0 -2
  214. package/4547.min.js.LICENSE.txt +0 -1
  215. package/4595.min.js.LICENSE.txt +0 -1
  216. package/4794.min.js +0 -2
  217. package/4794.min.js.LICENSE.txt +0 -1
  218. package/482.min.js +0 -2
  219. package/482.min.js.LICENSE.txt +0 -1
  220. package/4866.min.js +0 -2
  221. package/4866.min.js.LICENSE.txt +0 -1
  222. package/4973.min.js +0 -2
  223. package/4973.min.js.LICENSE.txt +0 -1
  224. package/4994.min.js +0 -2
  225. package/4994.min.js.LICENSE.txt +0 -1
  226. package/5092.min.js +0 -2
  227. package/5092.min.js.LICENSE.txt +0 -1
  228. package/5120.min.js +0 -2
  229. package/5120.min.js.LICENSE.txt +0 -1
  230. package/5245.min.js +0 -2
  231. package/5245.min.js.LICENSE.txt +0 -1
  232. package/5308.min.js +0 -2
  233. package/5308.min.js.LICENSE.txt +0 -1
  234. package/5329.min.js +0 -2
  235. package/5329.min.js.LICENSE.txt +0 -1
  236. package/5437.min.js +0 -2
  237. package/5437.min.js.LICENSE.txt +0 -1
  238. package/5444.min.js +0 -2
  239. package/5444.min.js.LICENSE.txt +0 -1
  240. package/5534.min.js +0 -2
  241. package/5534.min.js.LICENSE.txt +0 -1
  242. package/560.min.js +0 -2
  243. package/560.min.js.LICENSE.txt +0 -1
  244. package/5647.min.js +0 -2
  245. package/5647.min.js.LICENSE.txt +0 -1
  246. package/571.min.js +0 -2
  247. package/571.min.js.LICENSE.txt +0 -1
  248. package/5742.min.js.LICENSE.txt +0 -1
  249. package/6004.min.js +0 -2
  250. package/6004.min.js.LICENSE.txt +0 -1
  251. package/6132.min.js +0 -2
  252. package/6132.min.js.LICENSE.txt +0 -1
  253. package/6551.min.js +0 -2
  254. package/6551.min.js.LICENSE.txt +0 -1
  255. package/6772.min.js +0 -2
  256. package/6772.min.js.LICENSE.txt +0 -1
  257. package/7031.min.js +0 -2
  258. package/7031.min.js.LICENSE.txt +0 -1
  259. package/7049.min.js +0 -2
  260. package/7049.min.js.LICENSE.txt +0 -1
  261. package/7108.min.js +0 -2
  262. package/7108.min.js.LICENSE.txt +0 -1
  263. package/7331.min.js +0 -2
  264. package/7331.min.js.LICENSE.txt +0 -1
  265. package/7517.min.js +0 -2
  266. package/7517.min.js.LICENSE.txt +0 -1
  267. package/7687.min.js +0 -2
  268. package/7687.min.js.LICENSE.txt +0 -1
  269. package/7725.min.js +0 -2
  270. package/7725.min.js.LICENSE.txt +0 -1
  271. package/7757.min.js +0 -2
  272. package/7757.min.js.LICENSE.txt +0 -1
  273. package/7835.min.js +0 -2
  274. package/7835.min.js.LICENSE.txt +0 -1
  275. package/7859.min.js +0 -2
  276. package/7859.min.js.LICENSE.txt +0 -1
  277. package/7886.min.js +0 -2
  278. package/7886.min.js.LICENSE.txt +0 -1
  279. package/7890.min.js +0 -2
  280. package/7890.min.js.LICENSE.txt +0 -1
  281. package/8060.min.js +0 -2
  282. package/8060.min.js.LICENSE.txt +0 -1
  283. package/9062.min.js +0 -2
  284. package/9062.min.js.LICENSE.txt +0 -1
  285. package/9126.min.js +0 -2
  286. package/9126.min.js.LICENSE.txt +0 -1
  287. package/9331.min.js +0 -2
  288. package/9331.min.js.LICENSE.txt +0 -1
  289. package/9376.min.js +0 -2
  290. package/9376.min.js.LICENSE.txt +0 -1
  291. package/95.min.js +0 -2
  292. package/95.min.js.LICENSE.txt +0 -1
  293. package/9530.min.js +0 -2
  294. package/9530.min.js.LICENSE.txt +0 -1
  295. package/9532.min.js +0 -2
  296. package/9532.min.js.LICENSE.txt +0 -1
  297. package/9836.min.js +0 -2
  298. package/9836.min.js.LICENSE.txt +0 -1
  299. package/9921.min.js +0 -2
  300. package/9921.min.js.LICENSE.txt +0 -1
  301. package/engine_dist_browser_Core_Particle_js.js +0 -30
  302. package/move_base_dist_browser_Utils_js.js +0 -30
  303. package/shapes_cards_dist_browser_Utils_js.js +0 -30
  304. package/shapes_circle_dist_browser_Utils_js.js +0 -30
  305. package/shapes_emoji_dist_browser_Utils_js.js +0 -30
  306. package/shapes_heart_dist_browser_Utils_js.js +0 -30
  307. package/shapes_polygon_dist_browser_Utils_js.js +0 -30
  308. package/shapes_square_dist_browser_Utils_js.js +0 -30
  309. package/shapes_star_dist_browser_Utils_js.js +0 -30
  310. package/updaters_life_dist_browser_Utils_js.js +0 -30
  311. package/updaters_outModes_dist_browser_BounceOutMode_js.js +0 -30
  312. package/updaters_outModes_dist_browser_DestroyOutMode_js.js +0 -30
  313. package/updaters_outModes_dist_browser_NoneOutMode_js.js +0 -30
  314. package/updaters_outModes_dist_browser_OutOutMode_js.js +0 -30
  315. package/updaters_outModes_dist_browser_Utils_js.js +0 -30
  316. package/updaters_roll_dist_browser_Utils_js.js +0 -30
  317. package/updaters_wobble_dist_browser_Utils_js.js +0 -30
@@ -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
- * v3.2.2
7
+ * v3.3.0
8
8
  */
9
9
  "use strict";
10
10
  /*
@@ -33,7 +33,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
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/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\n\nconst extLength = 3;\nfunction addLoadImageToEngine(engine) {\n if (engine.loadImage) {\n return;\n }\n engine.loadImage = async data => {\n if (!data.name && !data.src) {\n throw new Error(`${_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.errorPrefix} no image source provided`);\n }\n if (!engine.images) {\n engine.images = [];\n }\n if (engine.images.find(t => t.name === data.name || t.source === data.src)) {\n return;\n }\n try {\n const image = {\n gif: data.gif ?? false,\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 engine.images.push(image);\n let imageFunc;\n if (data.gif) {\n const {\n loadGifImage\n } = 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 = loadGifImage;\n } else {\n imageFunc = data.replaceColor ? _Utils_js__WEBPACK_IMPORTED_MODULE_0__.downloadSvgImage : _Utils_js__WEBPACK_IMPORTED_MODULE_0__.loadImage;\n }\n await imageFunc(image);\n } catch {\n throw new Error(`${_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.errorPrefix} ${data.name ?? data.src} not found`);\n }\n };\n}\nasync function loadImageShape(engine, refresh = true) {\n addLoadImageToEngine(engine);\n const {\n ImagePreloaderPlugin\n } = 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 {\n ImageDrawer\n } = await __webpack_require__.e(/*! import() */ \"shapes_image_dist_browser_ImageDrawer_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./ImageDrawer.js */ \"../../shapes/image/dist/browser/ImageDrawer.js\"));\n const preloader = new ImagePreloaderPlugin(engine);\n await engine.addPlugin(preloader, refresh);\n await engine.addShape([\"image\", \"images\"], new ImageDrawer(engine), refresh);\n}\n\n//# sourceURL=webpack://@tsparticles/confetti/../../shapes/image/dist/browser/index.js?");
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/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\n\nconst extLength = 3;\nfunction addLoadImageToEngine(engine) {\n if (engine.loadImage) {\n return;\n }\n engine.loadImage = async data => {\n if (!data.name && !data.src) {\n throw new Error(`${_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.errorPrefix} no image source provided`);\n }\n if (!engine.images) {\n engine.images = [];\n }\n if (engine.images.find(t => t.name === data.name || t.source === data.src)) {\n return;\n }\n try {\n const image = {\n gif: data.gif ?? false,\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 engine.images.push(image);\n let imageFunc;\n if (data.gif) {\n const {\n loadGifImage\n } = 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 = loadGifImage;\n } else {\n imageFunc = data.replaceColor ? _Utils_js__WEBPACK_IMPORTED_MODULE_0__.downloadSvgImage : _Utils_js__WEBPACK_IMPORTED_MODULE_0__.loadImage;\n }\n await imageFunc(image);\n } catch {\n throw new Error(`${_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.errorPrefix} ${data.name ?? data.src} not found`);\n }\n };\n}\nasync function loadImageShape(engine, refresh = true) {\n addLoadImageToEngine(engine);\n const {\n ImagePreloaderPlugin\n } = 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 {\n ImageDrawer\n } = 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 const preloader = new ImagePreloaderPlugin(engine);\n await engine.addPlugin(preloader, refresh);\n await engine.addShape([\"image\", \"images\"], new ImageDrawer(engine), refresh);\n}\n\n//# sourceURL=webpack://@tsparticles/confetti/../../shapes/image/dist/browser/index.js?");
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
- * v3.2.2
7
+ * v3.3.0
8
8
  */
9
9
  "use strict";
10
10
  /*
@@ -33,7 +33,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
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 */ PolygonDrawerBase: () => (/* binding */ PolygonDrawerBase)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nconst defaultSides = 5;\nclass PolygonDrawerBase {\n async draw(data) {\n const {\n particle,\n radius\n } = data,\n start = this.getCenter(particle, radius),\n side = this.getSidesData(particle, radius),\n {\n drawPolygon\n } = await __webpack_require__.e(/*! import() */ \"shapes_polygon_dist_browser_Utils_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./Utils.js */ \"../../shapes/polygon/dist/browser/Utils.js\"));\n drawPolygon(data, start, side);\n }\n getSidesCount(particle) {\n const polygon = particle.shapeData;\n return Math.round((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(polygon?.sides ?? defaultSides));\n }\n}\n\n//# sourceURL=webpack://@tsparticles/confetti/../../shapes/polygon/dist/browser/PolygonDrawerBase.js?");
36
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PolygonDrawerBase: () => (/* binding */ PolygonDrawerBase)\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 _Utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Utils.js */ \"../../shapes/polygon/dist/browser/Utils.js\");\n\n\nconst defaultSides = 5;\nclass PolygonDrawerBase {\n draw(data) {\n const {\n particle,\n radius\n } = data,\n start = this.getCenter(particle, radius),\n side = this.getSidesData(particle, radius);\n (0,_Utils_js__WEBPACK_IMPORTED_MODULE_1__.drawPolygon)(data, start, side);\n }\n getSidesCount(particle) {\n const polygon = particle.shapeData;\n return Math.round((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(polygon?.sides ?? defaultSides));\n }\n}\n\n//# sourceURL=webpack://@tsparticles/confetti/../../shapes/polygon/dist/browser/PolygonDrawerBase.js?");
37
+
38
+ /***/ }),
39
+
40
+ /***/ "../../shapes/polygon/dist/browser/Utils.js":
41
+ /*!**************************************************!*\
42
+ !*** ../../shapes/polygon/dist/browser/Utils.js ***!
43
+ \**************************************************/
44
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
45
+
46
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ drawPolygon: () => (/* binding */ drawPolygon)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nconst piDeg = 180,\n origin = {\n x: 0,\n y: 0\n },\n sidesOffset = 2;\nfunction drawPolygon(data, start, side) {\n const {\n context\n } = data,\n sideCount = side.count.numerator * side.count.denominator,\n decimalSides = side.count.numerator / side.count.denominator,\n interiorAngleDegrees = piDeg * (decimalSides - sidesOffset) / decimalSides,\n interiorAngle = Math.PI - (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.degToRad)(interiorAngleDegrees);\n if (!context) {\n return;\n }\n context.beginPath();\n context.translate(start.x, start.y);\n context.moveTo(origin.x, origin.y);\n for (let i = 0; i < sideCount; i++) {\n context.lineTo(side.length, origin.y);\n context.translate(side.length, origin.y);\n context.rotate(interiorAngle);\n }\n}\n\n//# sourceURL=webpack://@tsparticles/confetti/../../shapes/polygon/dist/browser/Utils.js?");
37
47
 
38
48
  /***/ })
39
49
 
@@ -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
- * v3.2.2
7
+ * v3.3.0
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 */ PolygonDrawerBase: () => (/* binding */ PolygonDrawerBase)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nconst defaultSides = 5;\nclass PolygonDrawerBase {\n async draw(data) {\n const {\n particle,\n radius\n } = data,\n start = this.getCenter(particle, radius),\n side = this.getSidesData(particle, radius),\n {\n drawPolygon\n } = await __webpack_require__.e(/*! import() */ \"shapes_polygon_dist_browser_Utils_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./Utils.js */ \"../../shapes/polygon/dist/browser/Utils.js\"));\n drawPolygon(data, start, side);\n }\n getSidesCount(particle) {\n const polygon = particle.shapeData;\n return Math.round((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(polygon?.sides ?? defaultSides));\n }\n}\n\n//# sourceURL=webpack://@tsparticles/confetti/../../shapes/polygon/dist/browser/PolygonDrawerBase.js?");
26
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PolygonDrawerBase: () => (/* binding */ PolygonDrawerBase)\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 _Utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Utils.js */ \"../../shapes/polygon/dist/browser/Utils.js\");\n\n\nconst defaultSides = 5;\nclass PolygonDrawerBase {\n draw(data) {\n const {\n particle,\n radius\n } = data,\n start = this.getCenter(particle, radius),\n side = this.getSidesData(particle, radius);\n (0,_Utils_js__WEBPACK_IMPORTED_MODULE_1__.drawPolygon)(data, start, side);\n }\n getSidesCount(particle) {\n const polygon = particle.shapeData;\n return Math.round((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(polygon?.sides ?? defaultSides));\n }\n}\n\n//# sourceURL=webpack://@tsparticles/confetti/../../shapes/polygon/dist/browser/PolygonDrawerBase.js?");
27
27
 
28
28
  /***/ }),
29
29
 
@@ -35,6 +35,16 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
35
35
 
36
36
  eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TriangleDrawer: () => (/* binding */ TriangleDrawer)\n/* harmony export */ });\n/* harmony import */ var _PolygonDrawerBase_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PolygonDrawerBase.js */ \"../../shapes/polygon/dist/browser/PolygonDrawerBase.js\");\n\nconst yFactor = 1.66,\n sides = 3,\n double = 2;\nclass TriangleDrawer extends _PolygonDrawerBase_js__WEBPACK_IMPORTED_MODULE_0__.PolygonDrawerBase {\n getCenter(particle, radius) {\n return {\n x: -radius,\n y: radius / yFactor\n };\n }\n getSidesCount() {\n return sides;\n }\n getSidesData(particle, radius) {\n const diameter = radius * double;\n return {\n count: {\n denominator: 2,\n numerator: 3\n },\n length: diameter\n };\n }\n}\n\n//# sourceURL=webpack://@tsparticles/confetti/../../shapes/polygon/dist/browser/TriangleDrawer.js?");
37
37
 
38
+ /***/ }),
39
+
40
+ /***/ "../../shapes/polygon/dist/browser/Utils.js":
41
+ /*!**************************************************!*\
42
+ !*** ../../shapes/polygon/dist/browser/Utils.js ***!
43
+ \**************************************************/
44
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
45
+
46
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ drawPolygon: () => (/* binding */ drawPolygon)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nconst piDeg = 180,\n origin = {\n x: 0,\n y: 0\n },\n sidesOffset = 2;\nfunction drawPolygon(data, start, side) {\n const {\n context\n } = data,\n sideCount = side.count.numerator * side.count.denominator,\n decimalSides = side.count.numerator / side.count.denominator,\n interiorAngleDegrees = piDeg * (decimalSides - sidesOffset) / decimalSides,\n interiorAngle = Math.PI - (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.degToRad)(interiorAngleDegrees);\n if (!context) {\n return;\n }\n context.beginPath();\n context.translate(start.x, start.y);\n context.moveTo(origin.x, origin.y);\n for (let i = 0; i < sideCount; i++) {\n context.lineTo(side.length, origin.y);\n context.translate(side.length, origin.y);\n context.rotate(interiorAngle);\n }\n}\n\n//# sourceURL=webpack://@tsparticles/confetti/../../shapes/polygon/dist/browser/Utils.js?");
47
+
38
48
  /***/ })
39
49
 
40
50
  }]);
@@ -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
- * v3.2.2
7
+ * v3.3.0
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
- * v3.2.2
7
+ * v3.3.0
8
8
  */
9
9
  "use strict";
10
10
  /*
@@ -23,7 +23,17 @@
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 */ SquareDrawer: () => (/* binding */ SquareDrawer)\n/* harmony export */ });\nconst sides = 4;\nclass SquareDrawer {\n async draw(data) {\n const {\n drawSquare\n } = await __webpack_require__.e(/*! import() */ \"shapes_square_dist_browser_Utils_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./Utils.js */ \"../../shapes/square/dist/browser/Utils.js\"));\n drawSquare(data);\n }\n getSidesCount() {\n return sides;\n }\n}\n\n//# sourceURL=webpack://@tsparticles/confetti/../../shapes/square/dist/browser/SquareDrawer.js?");
26
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SquareDrawer: () => (/* binding */ SquareDrawer)\n/* harmony export */ });\n/* harmony import */ var _Utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Utils.js */ \"../../shapes/square/dist/browser/Utils.js\");\n\nconst sides = 4;\nclass SquareDrawer {\n draw(data) {\n (0,_Utils_js__WEBPACK_IMPORTED_MODULE_0__.drawSquare)(data);\n }\n getSidesCount() {\n return sides;\n }\n}\n\n//# sourceURL=webpack://@tsparticles/confetti/../../shapes/square/dist/browser/SquareDrawer.js?");
27
+
28
+ /***/ }),
29
+
30
+ /***/ "../../shapes/square/dist/browser/Utils.js":
31
+ /*!*************************************************!*\
32
+ !*** ../../shapes/square/dist/browser/Utils.js ***!
33
+ \*************************************************/
34
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
35
+
36
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ drawSquare: () => (/* binding */ drawSquare)\n/* harmony export */ });\nconst fixFactorSquared = 2,\n fixFactor = Math.sqrt(fixFactorSquared),\n double = 2;\nfunction drawSquare(data) {\n const {\n context,\n radius\n } = data,\n fixedRadius = radius / fixFactor,\n fixedDiameter = fixedRadius * double;\n context.rect(-fixedRadius, -fixedRadius, fixedDiameter, fixedDiameter);\n}\n\n//# sourceURL=webpack://@tsparticles/confetti/../../shapes/square/dist/browser/Utils.js?");
27
37
 
28
38
  /***/ })
29
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
- * v3.2.2
7
+ * v3.3.0
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
- * v3.2.2
7
+ * v3.3.0
8
8
  */
9
9
  "use strict";
10
10
  /*
@@ -23,7 +23,17 @@
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 */ StarDrawer: () => (/* binding */ StarDrawer)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nconst defaultInset = 2,\n defaultSides = 5;\nclass StarDrawer {\n async draw(data) {\n const {\n drawStar\n } = await __webpack_require__.e(/*! import() */ \"shapes_star_dist_browser_Utils_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./Utils.js */ \"../../shapes/star/dist/browser/Utils.js\"));\n drawStar(data);\n }\n getSidesCount(particle) {\n const star = particle.shapeData;\n return Math.round((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(star?.sides ?? defaultSides));\n }\n async particleInit(container, particle) {\n const star = particle.shapeData;\n particle.starInset = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(star?.inset ?? defaultInset);\n await Promise.resolve();\n }\n}\n\n//# sourceURL=webpack://@tsparticles/confetti/../../shapes/star/dist/browser/StarDrawer.js?");
26
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ StarDrawer: () => (/* binding */ StarDrawer)\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 _Utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Utils.js */ \"../../shapes/star/dist/browser/Utils.js\");\n\n\nconst defaultInset = 2,\n defaultSides = 5;\nclass StarDrawer {\n draw(data) {\n (0,_Utils_js__WEBPACK_IMPORTED_MODULE_1__.drawStar)(data);\n }\n getSidesCount(particle) {\n const star = particle.shapeData;\n return Math.round((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(star?.sides ?? defaultSides));\n }\n particleInit(container, particle) {\n const star = particle.shapeData;\n particle.starInset = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(star?.inset ?? defaultInset);\n }\n}\n\n//# sourceURL=webpack://@tsparticles/confetti/../../shapes/star/dist/browser/StarDrawer.js?");
27
+
28
+ /***/ }),
29
+
30
+ /***/ "../../shapes/star/dist/browser/Utils.js":
31
+ /*!***********************************************!*\
32
+ !*** ../../shapes/star/dist/browser/Utils.js ***!
33
+ \***********************************************/
34
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
35
+
36
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ drawStar: () => (/* binding */ drawStar)\n/* harmony export */ });\nconst defaultInset = 2,\n origin = {\n x: 0,\n y: 0\n };\nfunction drawStar(data) {\n const {\n context,\n particle,\n radius\n } = data,\n sides = particle.sides,\n inset = particle.starInset ?? defaultInset;\n context.moveTo(origin.x, origin.y - radius);\n for (let i = 0; i < sides; i++) {\n context.rotate(Math.PI / sides);\n context.lineTo(origin.x, origin.y - radius * inset);\n context.rotate(Math.PI / sides);\n context.lineTo(origin.x, origin.y - radius);\n }\n}\n\n//# sourceURL=webpack://@tsparticles/confetti/../../shapes/star/dist/browser/Utils.js?");
27
37
 
28
38
  /***/ })
29
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
- * v3.2.2
7
+ * v3.3.0
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
- * v3.2.2
7
+ * v3.3.0
8
8
  */
9
9
  /*
10
10
  * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
@@ -74,7 +74,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
74
74
  \************************************************/
75
75
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
76
76
 
77
- 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 _Utils_NumberUtils_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Utils/NumberUtils.js */ \"../../engine/dist/browser/Utils/NumberUtils.js\");\n\n\n\n\nasync function getItemsFromInitializer(container, map, initializers, force = false) {\n let res = map.get(container);\n if (!res || force) {\n res = await Promise.all([...initializers.values()].map(t => t(container)));\n map.set(container, res);\n }\n return res;\n}\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_Utils_js__WEBPACK_IMPORTED_MODULE_1__.getLogger)().error(`${_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.errorPrefix} ${response.status} while retrieving config file`);\n return data.fallback;\n}\nclass Engine {\n constructor() {\n this._configs = new Map();\n this._domArray = [];\n this._eventDispatcher = new _Utils_EventDispatcher_js__WEBPACK_IMPORTED_MODULE_2__.EventDispatcher();\n this._initialized = false;\n this.plugins = [];\n this._initializers = {\n interactors: new Map(),\n movers: new Map(),\n updaters: new Map()\n };\n this.interactors = new Map();\n this.movers = new Map();\n this.updaters = new Map();\n this.presets = new Map();\n this.effectDrawers = new Map();\n this.shapeDrawers = new Map();\n this.pathGenerators = new Map();\n }\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 version() {\n return \"3.2.2\";\n }\n addConfig(config) {\n const key = config.key ?? config.name ?? \"default\";\n this._configs.set(key, config);\n this._eventDispatcher.dispatchEvent(\"configAdded\", {\n data: {\n name: key,\n config\n }\n });\n }\n async addEffect(effect, drawer, refresh = true) {\n (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.executeOnSingleOrMultiple)(effect, type => {\n if (!this.getEffectDrawer(type)) {\n this.effectDrawers.set(type, drawer);\n }\n });\n await this.refresh(refresh);\n }\n addEventListener(type, listener) {\n this._eventDispatcher.addEventListener(type, listener);\n }\n async addInteractor(name, interactorInitializer, refresh = true) {\n this._initializers.interactors.set(name, interactorInitializer);\n await this.refresh(refresh);\n }\n async addMover(name, moverInitializer, refresh = true) {\n this._initializers.movers.set(name, moverInitializer);\n await this.refresh(refresh);\n }\n async addParticleUpdater(name, updaterInitializer, refresh = true) {\n this._initializers.updaters.set(name, updaterInitializer);\n await this.refresh(refresh);\n }\n async addPathGenerator(name, generator, refresh = true) {\n if (!this.getPathGenerator(name)) {\n this.pathGenerators.set(name, generator);\n }\n await this.refresh(refresh);\n }\n async addPlugin(plugin, refresh = true) {\n if (!this.getPlugin(plugin.id)) {\n this.plugins.push(plugin);\n }\n await this.refresh(refresh);\n }\n async addPreset(preset, options, override = false, refresh = true) {\n if (override || !this.getPreset(preset)) {\n this.presets.set(preset, options);\n }\n await this.refresh(refresh);\n }\n async addShape(shape, drawer, refresh = true) {\n (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.executeOnSingleOrMultiple)(shape, type => {\n if (!this.getShapeDrawer(type)) {\n this.shapeDrawers.set(type, drawer);\n }\n });\n await this.refresh(refresh);\n }\n clearPlugins(container) {\n this.updaters.delete(container);\n this.movers.delete(container);\n this.interactors.delete(container);\n }\n dispatchEvent(type, args) {\n this._eventDispatcher.dispatchEvent(type, args);\n }\n dom() {\n return this._domArray;\n }\n domItem(index) {\n const dom = this.dom(),\n item = dom[index];\n if (!item || item.destroyed) {\n const deleteCount = 1;\n dom.splice(index, deleteCount);\n return;\n }\n return item;\n }\n async getAvailablePlugins(container) {\n const res = new Map();\n for (const plugin of this.plugins) {\n if (plugin.needsPlugin(container.actualOptions)) {\n res.set(plugin.id, await plugin.getPlugin(container));\n }\n }\n return res;\n }\n getEffectDrawer(type) {\n return this.effectDrawers.get(type);\n }\n async getInteractors(container, force = false) {\n return await getItemsFromInitializer(container, this.interactors, this._initializers.interactors, force);\n }\n async getMovers(container, force = false) {\n return await getItemsFromInitializer(container, this.movers, this._initializers.movers, force);\n }\n getPathGenerator(type) {\n return this.pathGenerators.get(type);\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 getShapeDrawer(type) {\n return this.shapeDrawers.get(type);\n }\n getSupportedEffects() {\n return this.effectDrawers.keys();\n }\n getSupportedShapes() {\n return this.shapeDrawers.keys();\n }\n async getUpdaters(container, force = false) {\n return await getItemsFromInitializer(container, this.updaters, this._initializers.updaters, force);\n }\n init() {\n if (this._initialized) {\n return;\n }\n this._initialized = true;\n }\n async load(params) {\n const randomFactor = 10000,\n id = params.id ?? params.element?.id ?? `tsparticles${Math.floor((0,_Utils_NumberUtils_js__WEBPACK_IMPORTED_MODULE_3__.getRandom)() * randomFactor)}`,\n {\n index,\n url\n } = params,\n options = url ? await getDataFromUrl({\n fallback: params.options,\n url,\n index\n }) : params.options;\n let domContainer = params.element ?? document.getElementById(id);\n if (!domContainer) {\n domContainer = document.createElement(\"div\");\n domContainer.id = id;\n document.body.append(domContainer);\n }\n const currentOptions = (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.itemFromSingleOrMultiple)(options, index),\n dom = this.dom(),\n oldIndex = dom.findIndex(v => v.id.description === id),\n minIndex = 0;\n if (oldIndex >= minIndex) {\n const old = this.domItem(oldIndex);\n if (old && !old.destroyed) {\n old.destroy();\n const deleteCount = 1;\n dom.splice(oldIndex, deleteCount);\n }\n }\n let canvasEl;\n if (domContainer.tagName.toLowerCase() === \"canvas\") {\n canvasEl = domContainer;\n canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = \"false\";\n } else {\n const existingCanvases = domContainer.getElementsByTagName(\"canvas\");\n if (existingCanvases.length) {\n const firstIndex = 0;\n canvasEl = existingCanvases[firstIndex];\n canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = \"false\";\n } else {\n canvasEl = document.createElement(\"canvas\");\n canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = \"true\";\n domContainer.appendChild(canvasEl);\n }\n }\n if (!canvasEl.style.width) {\n canvasEl.style.width = \"100%\";\n }\n if (!canvasEl.style.height) {\n canvasEl.style.height = \"100%\";\n }\n const {\n Container\n } = 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\")),\n newItem = new Container(this, id, currentOptions);\n if (oldIndex >= minIndex) {\n const deleteCount = 0;\n dom.splice(oldIndex, deleteCount, newItem);\n } else {\n dom.push(newItem);\n }\n newItem.canvas.loadCanvas(canvasEl);\n await newItem.start();\n return newItem;\n }\n loadOptions(options, sourceOptions) {\n for (const plugin of this.plugins) {\n plugin.loadOptions(options, sourceOptions);\n }\n }\n loadParticlesOptions(container, options, ...sourceOptions) {\n const updaters = this.updaters.get(container);\n if (!updaters) {\n return;\n }\n for (const updater of updaters) {\n updater.loadOptions?.(options, ...sourceOptions);\n }\n }\n async refresh(refresh = true) {\n if (!refresh) {\n return;\n }\n await Promise.all(this.dom().map(t => t.refresh()));\n }\n removeEventListener(type, listener) {\n this._eventDispatcher.removeEventListener(type, listener);\n }\n setOnClickHandler(callback) {\n const dom = this.dom();\n if (!dom.length) {\n throw new Error(`${_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.errorPrefix} can only set click handlers after calling tsParticles.load()`);\n }\n for (const domItem of dom) {\n domItem.addClickHandler(callback);\n }\n }\n}\n\n//# sourceURL=webpack://@tsparticles/confetti/../../engine/dist/browser/Core/Engine.js?");
77
+ 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 _Utils_NumberUtils_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Utils/NumberUtils.js */ \"../../engine/dist/browser/Utils/NumberUtils.js\");\n\n\n\n\nasync function getItemsFromInitializer(container, map, initializers, force = false) {\n let res = map.get(container);\n if (!res || force) {\n res = await Promise.all([...initializers.values()].map(t => t(container)));\n map.set(container, res);\n }\n return res;\n}\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_Utils_js__WEBPACK_IMPORTED_MODULE_1__.getLogger)().error(`${_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.errorPrefix} ${response.status} while retrieving config file`);\n return data.fallback;\n}\nclass Engine {\n constructor() {\n this._configs = new Map();\n this._domArray = [];\n this._eventDispatcher = new _Utils_EventDispatcher_js__WEBPACK_IMPORTED_MODULE_2__.EventDispatcher();\n this._initialized = false;\n this.plugins = [];\n this._initializers = {\n interactors: new Map(),\n movers: new Map(),\n updaters: new Map()\n };\n this.interactors = new Map();\n this.movers = new Map();\n this.updaters = new Map();\n this.presets = new Map();\n this.effectDrawers = new Map();\n this.shapeDrawers = new Map();\n this.pathGenerators = new Map();\n }\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 version() {\n return \"3.3.0\";\n }\n addConfig(config) {\n const key = config.key ?? config.name ?? \"default\";\n this._configs.set(key, config);\n this._eventDispatcher.dispatchEvent(\"configAdded\", {\n data: {\n name: key,\n config\n }\n });\n }\n async addEffect(effect, drawer, refresh = true) {\n (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.executeOnSingleOrMultiple)(effect, type => {\n if (!this.getEffectDrawer(type)) {\n this.effectDrawers.set(type, drawer);\n }\n });\n await this.refresh(refresh);\n }\n addEventListener(type, listener) {\n this._eventDispatcher.addEventListener(type, listener);\n }\n async addInteractor(name, interactorInitializer, refresh = true) {\n this._initializers.interactors.set(name, interactorInitializer);\n await this.refresh(refresh);\n }\n async addMover(name, moverInitializer, refresh = true) {\n this._initializers.movers.set(name, moverInitializer);\n await this.refresh(refresh);\n }\n async addParticleUpdater(name, updaterInitializer, refresh = true) {\n this._initializers.updaters.set(name, updaterInitializer);\n await this.refresh(refresh);\n }\n async addPathGenerator(name, generator, refresh = true) {\n if (!this.getPathGenerator(name)) {\n this.pathGenerators.set(name, generator);\n }\n await this.refresh(refresh);\n }\n async addPlugin(plugin, refresh = true) {\n if (!this.getPlugin(plugin.id)) {\n this.plugins.push(plugin);\n }\n await this.refresh(refresh);\n }\n async addPreset(preset, options, override = false, refresh = true) {\n if (override || !this.getPreset(preset)) {\n this.presets.set(preset, options);\n }\n await this.refresh(refresh);\n }\n async addShape(shape, drawer, refresh = true) {\n (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.executeOnSingleOrMultiple)(shape, type => {\n if (!this.getShapeDrawer(type)) {\n this.shapeDrawers.set(type, drawer);\n }\n });\n await this.refresh(refresh);\n }\n clearPlugins(container) {\n this.updaters.delete(container);\n this.movers.delete(container);\n this.interactors.delete(container);\n }\n dispatchEvent(type, args) {\n this._eventDispatcher.dispatchEvent(type, args);\n }\n dom() {\n return this._domArray;\n }\n domItem(index) {\n const dom = this.dom(),\n item = dom[index];\n if (!item || item.destroyed) {\n const deleteCount = 1;\n dom.splice(index, deleteCount);\n return;\n }\n return item;\n }\n async getAvailablePlugins(container) {\n const res = new Map();\n for (const plugin of this.plugins) {\n if (plugin.needsPlugin(container.actualOptions)) {\n res.set(plugin.id, await plugin.getPlugin(container));\n }\n }\n return res;\n }\n getEffectDrawer(type) {\n return this.effectDrawers.get(type);\n }\n async getInteractors(container, force = false) {\n return await getItemsFromInitializer(container, this.interactors, this._initializers.interactors, force);\n }\n async getMovers(container, force = false) {\n return await getItemsFromInitializer(container, this.movers, this._initializers.movers, force);\n }\n getPathGenerator(type) {\n return this.pathGenerators.get(type);\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 getShapeDrawer(type) {\n return this.shapeDrawers.get(type);\n }\n getSupportedEffects() {\n return this.effectDrawers.keys();\n }\n getSupportedShapes() {\n return this.shapeDrawers.keys();\n }\n async getUpdaters(container, force = false) {\n return await getItemsFromInitializer(container, this.updaters, this._initializers.updaters, force);\n }\n init() {\n if (this._initialized) {\n return;\n }\n this._initialized = true;\n }\n async load(params) {\n const randomFactor = 10000,\n id = params.id ?? params.element?.id ?? `tsparticles${Math.floor((0,_Utils_NumberUtils_js__WEBPACK_IMPORTED_MODULE_3__.getRandom)() * randomFactor)}`,\n {\n index,\n url\n } = params,\n options = url ? await getDataFromUrl({\n fallback: params.options,\n url,\n index\n }) : params.options;\n let domContainer = params.element ?? document.getElementById(id);\n if (!domContainer) {\n domContainer = document.createElement(\"div\");\n domContainer.id = id;\n document.body.append(domContainer);\n }\n const currentOptions = (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.itemFromSingleOrMultiple)(options, index),\n dom = this.dom(),\n oldIndex = dom.findIndex(v => v.id.description === id),\n minIndex = 0;\n if (oldIndex >= minIndex) {\n const old = this.domItem(oldIndex);\n if (old && !old.destroyed) {\n old.destroy();\n const deleteCount = 1;\n dom.splice(oldIndex, deleteCount);\n }\n }\n let canvasEl;\n if (domContainer.tagName.toLowerCase() === \"canvas\") {\n canvasEl = domContainer;\n canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = \"false\";\n } else {\n const existingCanvases = domContainer.getElementsByTagName(\"canvas\");\n if (existingCanvases.length) {\n const firstIndex = 0;\n canvasEl = existingCanvases[firstIndex];\n canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = \"false\";\n } else {\n canvasEl = document.createElement(\"canvas\");\n canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = \"true\";\n domContainer.appendChild(canvasEl);\n }\n }\n if (!canvasEl.style.width) {\n canvasEl.style.width = \"100%\";\n }\n if (!canvasEl.style.height) {\n canvasEl.style.height = \"100%\";\n }\n const {\n Container\n } = 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\")),\n newItem = new Container(this, id, currentOptions);\n if (oldIndex >= minIndex) {\n const deleteCount = 0;\n dom.splice(oldIndex, deleteCount, newItem);\n } else {\n dom.push(newItem);\n }\n newItem.canvas.loadCanvas(canvasEl);\n await newItem.start();\n return newItem;\n }\n loadOptions(options, sourceOptions) {\n for (const plugin of this.plugins) {\n plugin.loadOptions(options, sourceOptions);\n }\n }\n loadParticlesOptions(container, options, ...sourceOptions) {\n const updaters = this.updaters.get(container);\n if (!updaters) {\n return;\n }\n for (const updater of updaters) {\n updater.loadOptions?.(options, ...sourceOptions);\n }\n }\n async refresh(refresh = true) {\n if (!refresh) {\n return;\n }\n await Promise.all(this.dom().map(t => t.refresh()));\n }\n removeEventListener(type, listener) {\n this._eventDispatcher.removeEventListener(type, listener);\n }\n setOnClickHandler(callback) {\n const dom = this.dom();\n if (!dom.length) {\n throw new Error(`${_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.errorPrefix} can only set click handlers after calling tsParticles.load()`);\n }\n for (const domItem of dom) {\n domItem.addClickHandler(callback);\n }\n }\n}\n\n//# sourceURL=webpack://@tsparticles/confetti/../../engine/dist/browser/Core/Engine.js?");
78
78
 
79
79
  /***/ }),
80
80
 
@@ -1854,7 +1854,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceURL=webpack://@
1854
1854
  \******************************************************/
1855
1855
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
1856
1856
 
1857
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ alterHsl: () => (/* binding */ alterHsl),\n/* harmony export */ clear: () => (/* binding */ clear),\n/* harmony export */ drawEffect: () => (/* binding */ drawEffect),\n/* harmony export */ drawLine: () => (/* binding */ drawLine),\n/* harmony export */ drawParticle: () => (/* binding */ drawParticle),\n/* harmony export */ drawParticlePlugin: () => (/* binding */ drawParticlePlugin),\n/* harmony export */ drawPlugin: () => (/* binding */ drawPlugin),\n/* harmony export */ drawShape: () => (/* binding */ drawShape),\n/* harmony export */ drawShapeAfterDraw: () => (/* binding */ drawShapeAfterDraw),\n/* harmony export */ paintBase: () => (/* binding */ paintBase),\n/* harmony export */ paintImage: () => (/* binding */ paintImage)\n/* harmony export */ });\n/* harmony import */ var _ColorUtils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ColorUtils.js */ \"../../engine/dist/browser/Utils/ColorUtils.js\");\n\nconst origin = {\n x: 0,\n y: 0\n};\nfunction drawLine(context, begin, end) {\n context.beginPath();\n context.moveTo(begin.x, begin.y);\n context.lineTo(end.x, end.y);\n context.closePath();\n}\nfunction paintBase(context, dimension, baseColor) {\n context.fillStyle = baseColor ?? \"rgba(0,0,0,0)\";\n context.fillRect(origin.x, origin.y, dimension.width, dimension.height);\n}\nfunction paintImage(context, dimension, image, opacity) {\n if (!image) {\n return;\n }\n context.globalAlpha = opacity;\n context.drawImage(image, origin.x, origin.y, dimension.width, dimension.height);\n context.globalAlpha = 1;\n}\nfunction clear(context, dimension) {\n context.clearRect(origin.x, origin.y, dimension.width, dimension.height);\n}\nasync function drawParticle(data) {\n const {\n container,\n context,\n particle,\n delta,\n colorStyles,\n backgroundMask,\n composite,\n radius,\n opacity,\n shadow,\n transform\n } = data,\n pos = particle.getPosition(),\n defaultAngle = 0,\n angle = particle.rotation + (particle.pathRotation ? particle.velocity.angle : defaultAngle),\n rotateData = {\n sin: Math.sin(angle),\n cos: Math.cos(angle)\n },\n defaultTransformFactor = 1,\n transformData = {\n a: rotateData.cos * (transform.a ?? defaultTransformFactor),\n b: rotateData.sin * (transform.b ?? defaultTransformFactor),\n c: -rotateData.sin * (transform.c ?? defaultTransformFactor),\n d: rotateData.cos * (transform.d ?? defaultTransformFactor)\n };\n context.setTransform(transformData.a, transformData.b, transformData.c, transformData.d, pos.x, pos.y);\n if (backgroundMask) {\n context.globalCompositeOperation = composite;\n }\n const shadowColor = particle.shadowColor;\n if (shadow.enable && shadowColor) {\n context.shadowBlur = shadow.blur;\n context.shadowColor = (0,_ColorUtils_js__WEBPACK_IMPORTED_MODULE_0__.getStyleFromRgb)(shadowColor);\n context.shadowOffsetX = shadow.offset.x;\n context.shadowOffsetY = shadow.offset.y;\n }\n if (colorStyles.fill) {\n context.fillStyle = colorStyles.fill;\n }\n const minStrokeWidth = 0,\n strokeWidth = particle.strokeWidth ?? minStrokeWidth;\n context.lineWidth = strokeWidth;\n if (colorStyles.stroke) {\n context.strokeStyle = colorStyles.stroke;\n }\n const drawData = {\n container,\n context,\n particle,\n radius,\n opacity,\n delta,\n transformData,\n strokeWidth\n };\n await drawShape(drawData);\n await drawShapeAfterDraw(drawData);\n await drawEffect(drawData);\n context.globalCompositeOperation = \"source-over\";\n context.resetTransform();\n}\nasync function drawEffect(data) {\n const {\n container,\n context,\n particle,\n radius,\n opacity,\n delta,\n transformData\n } = data;\n if (!particle.effect) {\n return;\n }\n const drawer = container.effectDrawers.get(particle.effect);\n if (!drawer) {\n return;\n }\n await drawer.draw({\n context,\n particle,\n radius,\n opacity,\n delta,\n pixelRatio: container.retina.pixelRatio,\n transformData: {\n ...transformData\n }\n });\n}\nasync function drawShape(data) {\n const {\n container,\n context,\n particle,\n radius,\n opacity,\n delta,\n strokeWidth,\n transformData\n } = data,\n minStrokeWidth = 0;\n if (!particle.shape) {\n return;\n }\n const drawer = container.shapeDrawers.get(particle.shape);\n if (!drawer) {\n return;\n }\n context.beginPath();\n await drawer.draw({\n context,\n particle,\n radius,\n opacity,\n delta,\n pixelRatio: container.retina.pixelRatio,\n transformData: {\n ...transformData\n }\n });\n if (particle.shapeClose) {\n context.closePath();\n }\n if (strokeWidth > minStrokeWidth) {\n context.stroke();\n }\n if (particle.shapeFill) {\n context.fill();\n }\n}\nasync function drawShapeAfterDraw(data) {\n const {\n container,\n context,\n particle,\n radius,\n opacity,\n delta,\n transformData\n } = data;\n if (!particle.shape) {\n return;\n }\n const drawer = container.shapeDrawers.get(particle.shape);\n if (!drawer?.afterDraw) {\n return;\n }\n await drawer.afterDraw({\n context,\n particle,\n radius,\n opacity,\n delta,\n pixelRatio: container.retina.pixelRatio,\n transformData: {\n ...transformData\n }\n });\n}\nasync function drawPlugin(context, plugin, delta) {\n if (!plugin.draw) {\n return;\n }\n await plugin.draw(context, delta);\n}\nasync function drawParticlePlugin(context, plugin, particle, delta) {\n if (!plugin.drawParticle) {\n return;\n }\n await plugin.drawParticle(context, particle, delta);\n}\nfunction alterHsl(color, type, value) {\n const lFactor = 1;\n return {\n h: color.h,\n s: color.s,\n l: color.l + (type === \"darken\" ? -lFactor : lFactor) * value\n };\n}\n\n//# sourceURL=webpack://@tsparticles/confetti/../../engine/dist/browser/Utils/CanvasUtils.js?");
1857
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ alterHsl: () => (/* binding */ alterHsl),\n/* harmony export */ clear: () => (/* binding */ clear),\n/* harmony export */ drawEffect: () => (/* binding */ drawEffect),\n/* harmony export */ drawLine: () => (/* binding */ drawLine),\n/* harmony export */ drawParticle: () => (/* binding */ drawParticle),\n/* harmony export */ drawParticlePlugin: () => (/* binding */ drawParticlePlugin),\n/* harmony export */ drawPlugin: () => (/* binding */ drawPlugin),\n/* harmony export */ drawShape: () => (/* binding */ drawShape),\n/* harmony export */ drawShapeAfterDraw: () => (/* binding */ drawShapeAfterDraw),\n/* harmony export */ paintBase: () => (/* binding */ paintBase),\n/* harmony export */ paintImage: () => (/* binding */ paintImage)\n/* harmony export */ });\n/* harmony import */ var _ColorUtils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ColorUtils.js */ \"../../engine/dist/browser/Utils/ColorUtils.js\");\n\nconst origin = {\n x: 0,\n y: 0\n};\nfunction drawLine(context, begin, end) {\n context.beginPath();\n context.moveTo(begin.x, begin.y);\n context.lineTo(end.x, end.y);\n context.closePath();\n}\nfunction paintBase(context, dimension, baseColor) {\n context.fillStyle = baseColor ?? \"rgba(0,0,0,0)\";\n context.fillRect(origin.x, origin.y, dimension.width, dimension.height);\n}\nfunction paintImage(context, dimension, image, opacity) {\n if (!image) {\n return;\n }\n context.globalAlpha = opacity;\n context.drawImage(image, origin.x, origin.y, dimension.width, dimension.height);\n context.globalAlpha = 1;\n}\nfunction clear(context, dimension) {\n context.clearRect(origin.x, origin.y, dimension.width, dimension.height);\n}\nfunction drawParticle(data) {\n const {\n container,\n context,\n particle,\n delta,\n colorStyles,\n backgroundMask,\n composite,\n radius,\n opacity,\n shadow,\n transform\n } = data,\n pos = particle.getPosition(),\n defaultAngle = 0,\n angle = particle.rotation + (particle.pathRotation ? particle.velocity.angle : defaultAngle),\n rotateData = {\n sin: Math.sin(angle),\n cos: Math.cos(angle)\n },\n defaultTransformFactor = 1,\n transformData = {\n a: rotateData.cos * (transform.a ?? defaultTransformFactor),\n b: rotateData.sin * (transform.b ?? defaultTransformFactor),\n c: -rotateData.sin * (transform.c ?? defaultTransformFactor),\n d: rotateData.cos * (transform.d ?? defaultTransformFactor)\n };\n context.setTransform(transformData.a, transformData.b, transformData.c, transformData.d, pos.x, pos.y);\n if (backgroundMask) {\n context.globalCompositeOperation = composite;\n }\n const shadowColor = particle.shadowColor;\n if (shadow.enable && shadowColor) {\n context.shadowBlur = shadow.blur;\n context.shadowColor = (0,_ColorUtils_js__WEBPACK_IMPORTED_MODULE_0__.getStyleFromRgb)(shadowColor);\n context.shadowOffsetX = shadow.offset.x;\n context.shadowOffsetY = shadow.offset.y;\n }\n if (colorStyles.fill) {\n context.fillStyle = colorStyles.fill;\n }\n const minStrokeWidth = 0,\n strokeWidth = particle.strokeWidth ?? minStrokeWidth;\n context.lineWidth = strokeWidth;\n if (colorStyles.stroke) {\n context.strokeStyle = colorStyles.stroke;\n }\n const drawData = {\n container,\n context,\n particle,\n radius,\n opacity,\n delta,\n transformData,\n strokeWidth\n };\n drawShape(drawData);\n drawShapeAfterDraw(drawData);\n drawEffect(drawData);\n context.globalCompositeOperation = \"source-over\";\n context.resetTransform();\n}\nfunction drawEffect(data) {\n const {\n container,\n context,\n particle,\n radius,\n opacity,\n delta,\n transformData\n } = data;\n if (!particle.effect) {\n return;\n }\n const drawer = container.effectDrawers.get(particle.effect);\n if (!drawer) {\n return;\n }\n drawer.draw({\n context,\n particle,\n radius,\n opacity,\n delta,\n pixelRatio: container.retina.pixelRatio,\n transformData: {\n ...transformData\n }\n });\n}\nfunction drawShape(data) {\n const {\n container,\n context,\n particle,\n radius,\n opacity,\n delta,\n strokeWidth,\n transformData\n } = data,\n minStrokeWidth = 0;\n if (!particle.shape) {\n return;\n }\n const drawer = container.shapeDrawers.get(particle.shape);\n if (!drawer) {\n return;\n }\n context.beginPath();\n drawer.draw({\n context,\n particle,\n radius,\n opacity,\n delta,\n pixelRatio: container.retina.pixelRatio,\n transformData: {\n ...transformData\n }\n });\n if (particle.shapeClose) {\n context.closePath();\n }\n if (strokeWidth > minStrokeWidth) {\n context.stroke();\n }\n if (particle.shapeFill) {\n context.fill();\n }\n}\nfunction drawShapeAfterDraw(data) {\n const {\n container,\n context,\n particle,\n radius,\n opacity,\n delta,\n transformData\n } = data;\n if (!particle.shape) {\n return;\n }\n const drawer = container.shapeDrawers.get(particle.shape);\n if (!drawer?.afterDraw) {\n return;\n }\n drawer.afterDraw({\n context,\n particle,\n radius,\n opacity,\n delta,\n pixelRatio: container.retina.pixelRatio,\n transformData: {\n ...transformData\n }\n });\n}\nfunction drawPlugin(context, plugin, delta) {\n if (!plugin.draw) {\n return;\n }\n plugin.draw(context, delta);\n}\nfunction drawParticlePlugin(context, plugin, particle, delta) {\n if (!plugin.drawParticle) {\n return;\n }\n plugin.drawParticle(context, particle, delta);\n}\nfunction alterHsl(color, type, value) {\n const lFactor = 1;\n return {\n h: color.h,\n s: color.s,\n l: color.l + (type === \"darken\" ? -lFactor : lFactor) * value\n };\n}\n\n//# sourceURL=webpack://@tsparticles/confetti/../../engine/dist/browser/Utils/CanvasUtils.js?");
1858
1858
 
1859
1859
  /***/ }),
1860
1860
 
@@ -2128,7 +2128,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2128
2128
  /******/ var scripts = document.getElementsByTagName("script");
2129
2129
  /******/ if(scripts.length) {
2130
2130
  /******/ var i = scripts.length - 1;
2131
- /******/ while (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;
2131
+ /******/ while (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;
2132
2132
  /******/ }
2133
2133
  /******/ }
2134
2134
  /******/ }