@tsparticles/all 4.0.0-beta.1 → 4.0.0-beta.3

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 (488) hide show
  1. package/1030.min.js +1 -1
  2. package/1051.min.js +1 -1
  3. package/1061.min.js +1 -1
  4. package/1089.min.js +1 -1
  5. package/1120.min.js +1 -1
  6. package/1160.min.js +1 -1
  7. package/1167.min.js +1 -1
  8. package/117.min.js +1 -1
  9. package/1201.min.js +1 -1
  10. package/1255.min.js +1 -1
  11. package/143.min.js +1 -1
  12. package/1510.min.js +1 -1
  13. package/1661.min.js +1 -1
  14. package/1707.min.js +2 -2
  15. package/1767.min.js +1 -1
  16. package/1841.min.js +1 -1
  17. package/1860.min.js +1 -1
  18. package/2004.min.js +1 -1
  19. package/2093.min.js +1 -1
  20. package/2158.min.js +1 -1
  21. package/2177.min.js +1 -1
  22. package/2253.min.js +1 -1
  23. package/2261.min.js +1 -1
  24. package/2265.min.js +1 -1
  25. package/2405.min.js +1 -1
  26. package/2413.min.js +1 -1
  27. package/2425.min.js +1 -1
  28. package/2429.min.js +1 -1
  29. package/2454.min.js +1 -1
  30. package/264.min.js +1 -1
  31. package/2643.min.js +1 -1
  32. package/2784.min.js +1 -1
  33. package/2866.min.js +1 -1
  34. package/2908.min.js +1 -1
  35. package/2930.min.js +1 -1
  36. package/2964.min.js +1 -1
  37. package/2971.min.js +1 -1
  38. package/2975.min.js +1 -1
  39. package/301.min.js +1 -1
  40. package/3041.min.js +1 -1
  41. package/3089.min.js +1 -1
  42. package/31.min.js +1 -1
  43. package/3152.min.js +1 -1
  44. package/3210.min.js +1 -1
  45. package/3248.min.js +1 -1
  46. package/3256.min.js +1 -1
  47. package/3285.min.js +1 -1
  48. package/3323.min.js +1 -1
  49. package/3471.min.js +1 -1
  50. package/3693.min.js +1 -1
  51. package/370.min.js +1 -1
  52. package/3719.min.js +1 -1
  53. package/3737.min.js +1 -1
  54. package/3775.min.js +1 -1
  55. package/3875.min.js +1 -1
  56. package/3895.min.js +1 -1
  57. package/3949.min.js +1 -1
  58. package/3983.min.js +1 -1
  59. package/4051.min.js +1 -1
  60. package/4075.min.js +1 -1
  61. package/4088.min.js +1 -1
  62. package/410.min.js +1 -1
  63. package/4117.min.js +1 -1
  64. package/4129.min.js +1 -1
  65. package/4159.min.js +1 -1
  66. package/4191.min.js +1 -1
  67. package/4198.min.js +1 -1
  68. package/4301.min.js +1 -1
  69. package/4306.min.js +1 -1
  70. package/4316.min.js +1 -1
  71. package/4473.min.js +1 -1
  72. package/4489.min.js +1 -1
  73. package/4537.min.js +1 -1
  74. package/4567.min.js +1 -1
  75. package/4592.min.js +1 -1
  76. package/4601.min.js +1 -1
  77. package/4701.min.js +1 -1
  78. package/4722.min.js +1 -1
  79. package/4837.min.js +1 -1
  80. package/4839.min.js +1 -1
  81. package/4880.min.js +1 -1
  82. package/4887.min.js +1 -1
  83. package/4952.min.js +1 -1
  84. package/4991.min.js +1 -1
  85. package/5055.min.js +1 -1
  86. package/5077.min.js +1 -1
  87. package/5095.min.js +1 -1
  88. package/5136.min.js +1 -1
  89. package/5174.min.js +1 -1
  90. package/5232.min.js +1 -1
  91. package/5260.min.js +1 -1
  92. package/5264.min.js +1 -1
  93. package/5275.min.js +1 -1
  94. package/5313.min.js +1 -1
  95. package/5325.min.js +1 -1
  96. package/5347.min.js +1 -1
  97. package/5437.min.js +1 -1
  98. package/5447.min.js +1 -1
  99. package/5453.min.js +1 -1
  100. package/5589.min.js +1 -1
  101. package/5602.min.js +1 -1
  102. package/561.min.js +1 -1
  103. package/5669.min.js +1 -1
  104. package/5686.min.js +1 -1
  105. package/5694.min.js +1 -1
  106. package/5700.min.js +1 -1
  107. package/5719.min.js +1 -1
  108. package/5732.min.js +1 -1
  109. package/5816.min.js +1 -1
  110. package/5832.min.js +1 -1
  111. package/587.min.js +1 -1
  112. package/6055.min.js +1 -1
  113. package/6056.min.js +1 -1
  114. package/607.min.js +1 -1
  115. package/6130.min.js +1 -1
  116. package/6222.min.js +1 -1
  117. package/6227.min.js +1 -1
  118. package/6252.min.js +1 -1
  119. package/6280.min.js +1 -1
  120. package/6297.min.js +1 -1
  121. package/6340.min.js +1 -1
  122. package/6362.min.js +1 -1
  123. package/6388.min.js +1 -1
  124. package/6412.min.js +1 -1
  125. package/6496.min.js +1 -1
  126. package/6502.min.js +1 -1
  127. package/6561.min.js +1 -1
  128. package/6693.min.js +1 -1
  129. package/6822.min.js +1 -1
  130. package/6827.min.js +1 -1
  131. package/686.min.js +1 -1
  132. package/6868.min.js +1 -1
  133. package/7079.min.js +1 -1
  134. package/7157.min.js +1 -1
  135. package/7203.min.js +1 -1
  136. package/7206.min.js +1 -1
  137. package/7218.min.js +1 -1
  138. package/7359.min.js +1 -1
  139. package/7374.min.js +1 -1
  140. package/7386.min.js +1 -1
  141. package/746.min.js +1 -1
  142. package/762.min.js +1 -1
  143. package/7788.min.js +1 -1
  144. package/7817.min.js +1 -1
  145. package/7856.min.js +1 -0
  146. package/786.min.js +1 -1
  147. package/7921.min.js +1 -1
  148. package/803.min.js +1 -1
  149. package/8082.min.js +1 -1
  150. package/8173.min.js +1 -1
  151. package/8243.min.js +1 -1
  152. package/8258.min.js +1 -0
  153. package/8272.min.js +1 -1
  154. package/830.min.js +1 -1
  155. package/8342.min.js +1 -1
  156. package/8421.min.js +1 -1
  157. package/8536.min.js +1 -1
  158. package/8553.min.js +2 -2
  159. package/8569.min.js +1 -1
  160. package/8626.min.js +1 -1
  161. package/8627.min.js +1 -0
  162. package/8650.min.js +1 -1
  163. package/8796.min.js +1 -1
  164. package/8930.min.js +1 -1
  165. package/8957.min.js +1 -1
  166. package/8989.min.js +1 -1
  167. package/9033.min.js +1 -1
  168. package/9132.min.js +1 -0
  169. package/9134.min.js +1 -1
  170. package/9208.min.js +1 -0
  171. package/9261.min.js +1 -1
  172. package/9293.min.js +1 -1
  173. package/9395.min.js +1 -0
  174. package/951.min.js +1 -1
  175. package/9630.min.js +1 -1
  176. package/9643.min.js +1 -1
  177. package/9720.min.js +1 -1
  178. package/9748.min.js +1 -1
  179. package/9782.min.js +1 -1
  180. package/9838.min.js +1 -1
  181. package/9950.min.js +1 -1
  182. package/basic_dist_browser_index_js.js +2 -2
  183. package/browser/index.js +2 -1
  184. package/cjs/index.js +2 -1
  185. package/effects_bubble_dist_browser_BubbleDrawer_js.js +1 -1
  186. package/effects_bubble_dist_browser_index_js.js +2 -2
  187. package/effects_particles_dist_browser_ParticlesDrawer_js.js +1 -1
  188. package/effects_particles_dist_browser_index_js.js +2 -2
  189. package/effects_shadow_dist_browser_ShadowDrawer_js.js +1 -1
  190. package/effects_shadow_dist_browser_index_js.js +2 -2
  191. package/effects_trail_dist_browser_TrailDrawer_js.js +1 -1
  192. package/effects_trail_dist_browser_index_js.js +2 -2
  193. package/engine_dist_browser_Core_Container_js.js +33 -3
  194. package/esm/index.js +2 -1
  195. package/full_dist_browser_index_js.js +2 -2
  196. package/interactions_external_attract_dist_browser_Attractor_js.js +24 -4
  197. package/interactions_external_attract_dist_browser_index_js.js +2 -2
  198. package/interactions_external_bounce_dist_browser_Bouncer_js.js +24 -4
  199. package/interactions_external_bounce_dist_browser_index_js.js +2 -2
  200. package/interactions_external_bubble_dist_browser_Bubbler_js.js +24 -4
  201. package/interactions_external_bubble_dist_browser_index_js.js +2 -2
  202. package/interactions_external_cannon_dist_browser_Cannoner_js.js +24 -4
  203. package/interactions_external_cannon_dist_browser_index_js.js +2 -2
  204. package/interactions_external_connect_dist_browser_Connector_js.js +24 -4
  205. package/interactions_external_connect_dist_browser_index_js.js +2 -2
  206. package/interactions_external_drag_dist_browser_Dragger_js.js +24 -4
  207. package/interactions_external_drag_dist_browser_index_js.js +2 -2
  208. package/interactions_external_grab_dist_browser_Grabber_js.js +24 -4
  209. package/interactions_external_grab_dist_browser_index_js.js +2 -2
  210. package/interactions_external_parallax_dist_browser_Parallaxer_js.js +24 -4
  211. package/interactions_external_parallax_dist_browser_index_js.js +2 -2
  212. package/interactions_external_particle_dist_browser_InteractivityParticleMaker_js.js +24 -4
  213. package/interactions_external_particle_dist_browser_index_js.js +2 -2
  214. package/interactions_external_pause_dist_browser_Pauser_js.js +24 -4
  215. package/interactions_external_pause_dist_browser_index_js.js +2 -2
  216. package/interactions_external_pop_dist_browser_Popper_js.js +24 -4
  217. package/interactions_external_pop_dist_browser_index_js.js +2 -2
  218. package/interactions_external_push_dist_browser_Pusher_js.js +24 -4
  219. package/interactions_external_push_dist_browser_index_js.js +2 -2
  220. package/interactions_external_remove_dist_browser_Remover_js.js +24 -4
  221. package/interactions_external_remove_dist_browser_index_js.js +2 -2
  222. package/interactions_external_repulse_dist_browser_Repulser_js.js +24 -4
  223. package/interactions_external_repulse_dist_browser_index_js.js +2 -2
  224. package/interactions_external_slow_dist_browser_Slower_js.js +24 -4
  225. package/interactions_external_slow_dist_browser_index_js.js +2 -2
  226. package/interactions_external_trail_dist_browser_TrailMaker_js.js +24 -4
  227. package/interactions_external_trail_dist_browser_index_js.js +2 -2
  228. package/interactions_light_dist_browser_ExternalLighter_js.js +24 -4
  229. package/interactions_light_dist_browser_ParticlesLighter_js.js +24 -4
  230. package/interactions_light_dist_browser_index_js.js +2 -2
  231. package/interactions_particles_attract_dist_browser_Attractor_js.js +24 -4
  232. package/interactions_particles_attract_dist_browser_index_js.js +2 -2
  233. package/interactions_particles_collisions_dist_browser_Collider_js.js +37 -7
  234. package/interactions_particles_collisions_dist_browser_OverlapPluginInstance_js.js +1 -1
  235. package/interactions_particles_collisions_dist_browser_OverlapPlugin_js.js +2 -2
  236. package/interactions_particles_collisions_dist_browser_index_js.js +2 -2
  237. package/interactions_particles_links_dist_browser_LinkInstance_js.js +1 -1
  238. package/interactions_particles_links_dist_browser_Linker_js.js +24 -4
  239. package/interactions_particles_links_dist_browser_LinksPlugin_js.js +2 -2
  240. package/interactions_particles_links_dist_browser_index_js.js +2 -2
  241. package/interactions_particles_repulse_dist_browser_Repulser_js.js +24 -4
  242. package/interactions_particles_repulse_dist_browser_index_js.js +2 -2
  243. package/package.json +79 -80
  244. package/paths_branches_dist_browser_BranchesPathGenerator_js.js +12 -2
  245. package/paths_branches_dist_browser_index_js.js +2 -2
  246. package/paths_brownian_dist_browser_BrownianPathGenerator_js.js +12 -2
  247. package/paths_brownian_dist_browser_index_js.js +2 -2
  248. package/paths_curlNoise_dist_browser_CurlNoiseGenerator_js.js +2 -2
  249. package/paths_curlNoise_dist_browser_index_js.js +12 -2
  250. package/paths_curves_dist_browser_CurvesPathGenerator_js.js +2 -2
  251. package/paths_curves_dist_browser_index_js.js +12 -2
  252. package/paths_fractalNoise_dist_browser_FractalNoiseGenerator_js.js +2 -2
  253. package/paths_fractalNoise_dist_browser_index_js.js +12 -2
  254. package/paths_grid_dist_browser_GridPathGenerator_js.js +12 -2
  255. package/paths_grid_dist_browser_index_js.js +2 -2
  256. package/paths_levy_dist_browser_LevyPathGenerator_js.js +12 -2
  257. package/paths_levy_dist_browser_index_js.js +2 -2
  258. package/paths_perlinNoise_dist_browser_PerlinNoiseGenerator_js.js +2 -2
  259. package/paths_perlinNoise_dist_browser_index_js.js +12 -2
  260. package/paths_polygon_dist_browser_PolygonPathGenerator_js.js +2 -2
  261. package/paths_polygon_dist_browser_index_js.js +12 -2
  262. package/paths_random_dist_browser_RandomPathGenerator_js.js +2 -2
  263. package/paths_random_dist_browser_index_js.js +12 -2
  264. package/paths_simplexNoise_dist_browser_SimplexNoiseGenerator_js.js +2 -2
  265. package/paths_simplexNoise_dist_browser_index_js.js +12 -2
  266. package/paths_spiral_dist_browser_SpiralPathGenerator_js.js +12 -2
  267. package/paths_spiral_dist_browser_index_js.js +2 -2
  268. package/paths_svg_dist_browser_SVGPathGenerator_js.js +2 -2
  269. package/paths_svg_dist_browser_index_js.js +12 -2
  270. package/paths_zigzag_dist_browser_ZigZagPathGenerator_js.js +2 -2
  271. package/paths_zigzag_dist_browser_index_js.js +12 -2
  272. package/plugins_absorbers_dist_browser_AbsorberInstance_js.js +1 -1
  273. package/plugins_absorbers_dist_browser_AbsorbersInstancesManager_js.js +1 -1
  274. package/plugins_absorbers_dist_browser_AbsorbersInteractor_js.js +24 -4
  275. package/plugins_absorbers_dist_browser_AbsorbersPluginInstance_js.js +1 -1
  276. package/plugins_absorbers_dist_browser_AbsorbersPlugin_js.js +1 -1
  277. package/plugins_absorbers_dist_browser_getAbsorbersInstancesManager_js.js +30 -0
  278. package/plugins_absorbers_dist_browser_index_js.js +22 -2
  279. package/plugins_backgroundMask_dist_browser_BackgroundMaskPluginInstance_js.js +1 -1
  280. package/plugins_backgroundMask_dist_browser_BackgroundMaskPlugin_js.js +1 -1
  281. package/plugins_backgroundMask_dist_browser_index_js.js +2 -2
  282. package/plugins_blend_dist_browser_BlendPluginInstance_js.js +1 -1
  283. package/plugins_blend_dist_browser_BlendPlugin_js.js +1 -1
  284. package/plugins_blend_dist_browser_index_js.js +2 -2
  285. package/plugins_canvasMask_dist_browser_CanvasMaskPluginInstance_js.js +1 -1
  286. package/plugins_canvasMask_dist_browser_CanvasMaskPlugin_js.js +2 -2
  287. package/plugins_canvasMask_dist_browser_index_js.js +2 -2
  288. package/plugins_colors_hex_dist_browser_HexColorManager_js.js +1 -1
  289. package/plugins_colors_hex_dist_browser_index_js.js +2 -2
  290. package/plugins_colors_hsl_dist_browser_HslColorManager_js.js +1 -1
  291. package/plugins_colors_hsl_dist_browser_index_js.js +2 -2
  292. package/plugins_colors_hsv_dist_browser_HsvColorManager_js.js +1 -1
  293. package/plugins_colors_hsv_dist_browser_index_js.js +2 -2
  294. package/plugins_colors_hwb_dist_browser_HwbColorManager_js.js +1 -1
  295. package/plugins_colors_hwb_dist_browser_index_js.js +2 -2
  296. package/plugins_colors_lab_dist_browser_LabColorManager_js.js +1 -1
  297. package/plugins_colors_lab_dist_browser_index_js.js +2 -2
  298. package/plugins_colors_lch_dist_browser_LchColorManager_js.js +1 -1
  299. package/plugins_colors_lch_dist_browser_index_js.js +2 -2
  300. package/plugins_colors_named_dist_browser_NamedColorManager_js.js +1 -1
  301. package/plugins_colors_named_dist_browser_index_js.js +2 -2
  302. package/plugins_colors_oklab_dist_browser_OklabColorManager_js.js +1 -1
  303. package/plugins_colors_oklab_dist_browser_index_js.js +2 -2
  304. package/plugins_colors_oklch_dist_browser_OklchColorManager_js.js +1 -1
  305. package/plugins_colors_oklch_dist_browser_index_js.js +2 -2
  306. package/plugins_colors_rgb_dist_browser_RgbColorManager_js.js +1 -1
  307. package/plugins_colors_rgb_dist_browser_index_js.js +2 -2
  308. package/plugins_easings_back_dist_browser_easingsFunctions_js.js +1 -1
  309. package/plugins_easings_back_dist_browser_index_js.js +2 -2
  310. package/plugins_easings_bounce_dist_browser_easingsFunctions_js.js +1 -1
  311. package/plugins_easings_bounce_dist_browser_index_js.js +2 -2
  312. package/plugins_easings_circ_dist_browser_easingsFunctions_js.js +1 -1
  313. package/plugins_easings_circ_dist_browser_index_js.js +2 -2
  314. package/plugins_easings_cubic_dist_browser_easingsFunctions_js.js +1 -1
  315. package/plugins_easings_cubic_dist_browser_index_js.js +2 -2
  316. package/plugins_easings_elastic_dist_browser_easingsFunctions_js.js +1 -1
  317. package/plugins_easings_elastic_dist_browser_index_js.js +2 -2
  318. package/plugins_easings_expo_dist_browser_easingsFunctions_js.js +1 -1
  319. package/plugins_easings_expo_dist_browser_index_js.js +2 -2
  320. package/plugins_easings_gaussian_dist_browser_easingsFunctions_js.js +1 -1
  321. package/plugins_easings_gaussian_dist_browser_index_js.js +2 -2
  322. package/plugins_easings_linear_dist_browser_easingsFunctions_js.js +1 -1
  323. package/plugins_easings_linear_dist_browser_index_js.js +2 -2
  324. package/plugins_easings_quad_dist_browser_easingsFunctions_js.js +1 -1
  325. package/plugins_easings_quad_dist_browser_index_js.js +2 -2
  326. package/plugins_easings_quart_dist_browser_easingsFunctions_js.js +1 -1
  327. package/plugins_easings_quart_dist_browser_index_js.js +2 -2
  328. package/plugins_easings_quint_dist_browser_easingsFunctions_js.js +1 -1
  329. package/plugins_easings_quint_dist_browser_index_js.js +2 -2
  330. package/plugins_easings_sigmoid_dist_browser_easingsFunctions_js.js +1 -1
  331. package/plugins_easings_sigmoid_dist_browser_index_js.js +2 -2
  332. package/plugins_easings_sine_dist_browser_easingsFunctions_js.js +1 -1
  333. package/plugins_easings_sine_dist_browser_index_js.js +2 -2
  334. package/plugins_easings_smoothstep_dist_browser_easingsFunctions_js.js +1 -1
  335. package/plugins_easings_smoothstep_dist_browser_index_js.js +2 -2
  336. package/plugins_emittersShapes_canvas_dist_browser_EmittersCanvasShapeGenerator_js.js +33 -3
  337. package/plugins_emittersShapes_canvas_dist_browser_index_js.js +2 -2
  338. package/plugins_emittersShapes_circle_dist_browser_EmittersCircleShapeGenerator_js.js +32 -2
  339. package/plugins_emittersShapes_circle_dist_browser_index_js.js +2 -2
  340. package/plugins_emittersShapes_path_dist_browser_EmittersPathShapeGenerator_js.js +32 -2
  341. package/plugins_emittersShapes_path_dist_browser_index_js.js +2 -2
  342. package/plugins_emittersShapes_polygon_dist_browser_EmittersPolygonShapeGenerator_js.js +32 -2
  343. package/plugins_emittersShapes_polygon_dist_browser_index_js.js +2 -2
  344. package/plugins_emittersShapes_square_dist_browser_EmittersSquareShapeGenerator_js.js +32 -2
  345. package/plugins_emittersShapes_square_dist_browser_index_js.js +2 -2
  346. package/plugins_emitters_dist_browser_EmitterInstance_js.js +1 -1
  347. package/plugins_emitters_dist_browser_EmittersInstancesManager_js.js +1 -1
  348. package/plugins_emitters_dist_browser_EmittersInteractor_js.js +24 -4
  349. package/plugins_emitters_dist_browser_EmittersPluginInstance_js.js +1 -1
  350. package/plugins_emitters_dist_browser_EmittersPlugin_js.js +1 -1
  351. package/plugins_emitters_dist_browser_ShapeManager_js.js +1 -1
  352. package/plugins_emitters_dist_browser_addEmittersShapesManager_js.js +30 -0
  353. package/plugins_emitters_dist_browser_getEmittersInstancesManager_js.js +30 -0
  354. package/plugins_emitters_dist_browser_index_js.js +32 -2
  355. package/plugins_exports_image_dist_browser_ExportImagePluginInstance_js.js +1 -1
  356. package/plugins_exports_image_dist_browser_ExportImagePlugin_js.js +1 -1
  357. package/plugins_exports_image_dist_browser_index_js.js +2 -2
  358. package/plugins_exports_json_dist_browser_ExportJSONPluginInstance_js.js +1 -1
  359. package/plugins_exports_json_dist_browser_ExportJSONPlugin_js.js +1 -1
  360. package/plugins_exports_json_dist_browser_index_js.js +2 -2
  361. package/plugins_exports_video_dist_browser_ExportVideoPluginInstance_js.js +1 -1
  362. package/plugins_exports_video_dist_browser_ExportVideoPlugin_js.js +1 -1
  363. package/plugins_exports_video_dist_browser_index_js.js +2 -2
  364. package/plugins_infection_dist_browser_InfectionPluginInstance_js.js +1 -1
  365. package/plugins_infection_dist_browser_InfectionPlugin_js.js +1 -1
  366. package/plugins_infection_dist_browser_ParticlesInfecter_js.js +24 -4
  367. package/plugins_infection_dist_browser_index_js.js +2 -2
  368. package/plugins_interactivity_dist_browser_InteractivityPluginInstance_js.js +2 -2
  369. package/plugins_interactivity_dist_browser_InteractivityPlugin_js.js +1 -1
  370. package/plugins_interactivity_dist_browser_index_js.js +24 -4
  371. package/plugins_manualParticles_dist_browser_ManualParticlesPluginInstance_js.js +1 -1
  372. package/plugins_manualParticles_dist_browser_ManualParticlesPlugin_js.js +2 -2
  373. package/plugins_manualParticles_dist_browser_index_js.js +2 -2
  374. package/plugins_motion_dist_browser_MotionPluginInstance_js.js +1 -1
  375. package/plugins_motion_dist_browser_MotionPlugin_js.js +1 -1
  376. package/plugins_motion_dist_browser_index_js.js +2 -2
  377. package/plugins_move_dist_browser_MovePluginInstance_js.js +1 -1
  378. package/plugins_move_dist_browser_MovePlugin_js.js +1 -1
  379. package/plugins_move_dist_browser_index_js.js +2 -2
  380. package/plugins_poisson_dist_browser_PoissonDiscPluginInstance_js.js +1 -1
  381. package/plugins_poisson_dist_browser_PoissonDiscPlugin_js.js +2 -2
  382. package/plugins_poisson_dist_browser_PoissonDisc_js.js +1 -1
  383. package/plugins_poisson_dist_browser_index_js.js +2 -2
  384. package/plugins_polygonMask_dist_browser_PolygonMaskInstance_js.js +1 -1
  385. package/plugins_polygonMask_dist_browser_PolygonMaskPlugin_js.js +1 -1
  386. package/plugins_polygonMask_dist_browser_index_js.js +2 -2
  387. package/plugins_responsive_dist_browser_ResponsivePluginInstance_js.js +2 -2
  388. package/plugins_responsive_dist_browser_ResponsivePlugin_js.js +2 -2
  389. package/plugins_responsive_dist_browser_index_js.js +2 -2
  390. package/plugins_sounds_dist_browser_SoundsPluginInstance_js.js +1 -1
  391. package/plugins_sounds_dist_browser_SoundsPlugin_js.js +2 -2
  392. package/plugins_sounds_dist_browser_index_js.js +2 -2
  393. package/plugins_themes_dist_browser_ThemesPluginInstance_js.js +1 -1
  394. package/plugins_themes_dist_browser_ThemesPlugin_js.js +1 -1
  395. package/plugins_themes_dist_browser_index_js.js +2 -2
  396. package/plugins_trail_dist_browser_TrailPluginInstance_js.js +1 -1
  397. package/plugins_trail_dist_browser_TrailPlugin_js.js +23 -3
  398. package/plugins_trail_dist_browser_index_js.js +2 -2
  399. package/plugins_zoom_dist_browser_ZoomPluginInstance_js.js +1 -1
  400. package/plugins_zoom_dist_browser_ZoomPlugin_js.js +1 -1
  401. package/plugins_zoom_dist_browser_index_js.js +2 -2
  402. package/report.html +1 -1
  403. package/shapes_arrow_dist_browser_ArrowDrawer_js.js +1 -1
  404. package/shapes_arrow_dist_browser_index_js.js +2 -2
  405. package/shapes_cards_dist_browser_cards_CardDrawer_js.js +1 -1
  406. package/shapes_cards_dist_browser_clubs_ClubDrawer_js.js +1 -1
  407. package/shapes_cards_dist_browser_diamonds_DiamondDrawer_js.js +1 -1
  408. package/shapes_cards_dist_browser_hearts_HeartDrawer_js.js +1 -1
  409. package/shapes_cards_dist_browser_index_js.js +17 -7
  410. package/shapes_cards_dist_browser_paths_js.js +1 -1
  411. package/shapes_cards_dist_browser_spades_SpadeDrawer_js.js +1 -1
  412. package/shapes_circle_dist_browser_CircleDrawer_js.js +1 -1
  413. package/shapes_circle_dist_browser_index_js.js +2 -2
  414. package/shapes_cog_dist_browser_CogDrawer_js.js +1 -1
  415. package/shapes_cog_dist_browser_index_js.js +2 -2
  416. package/shapes_emoji_dist_browser_EmojiDrawer_js.js +1 -1
  417. package/shapes_emoji_dist_browser_index_js.js +2 -2
  418. package/shapes_heart_dist_browser_HeartDrawer_js.js +1 -1
  419. package/shapes_heart_dist_browser_index_js.js +2 -2
  420. package/shapes_image_dist_browser_GifUtils_Utils_js.js +1 -1
  421. package/shapes_image_dist_browser_ImageDrawer_js.js +1 -1
  422. package/shapes_image_dist_browser_ImagePreloaderInstance_js.js +1 -1
  423. package/shapes_image_dist_browser_ImagePreloader_js.js +1 -1
  424. package/shapes_image_dist_browser_index_js.js +2 -2
  425. package/shapes_infinity_dist_browser_InfinityDrawer_js.js +2 -2
  426. package/shapes_infinity_dist_browser_index_js.js +2 -2
  427. package/shapes_line_dist_browser_LineDrawer_js.js +1 -1
  428. package/shapes_line_dist_browser_index_js.js +2 -2
  429. package/shapes_matrix_dist_browser_MatrixDrawer_js.js +1 -1
  430. package/shapes_matrix_dist_browser_index_js.js +2 -2
  431. package/shapes_path_dist_browser_PathDrawer_js.js +1 -1
  432. package/shapes_path_dist_browser_index_js.js +2 -2
  433. package/shapes_polygon_dist_browser_PolygonDrawer_js.js +1 -1
  434. package/shapes_polygon_dist_browser_TriangleDrawer_js.js +2 -2
  435. package/shapes_polygon_dist_browser_index_js.js +2 -2
  436. package/shapes_rounded-polygon_dist_browser_RoundedPolygonDrawer_js.js +1 -1
  437. package/shapes_rounded-polygon_dist_browser_index_js.js +2 -2
  438. package/shapes_rounded-rect_dist_browser_RoundedRectDrawer_js.js +1 -1
  439. package/shapes_rounded-rect_dist_browser_index_js.js +2 -2
  440. package/shapes_spiral_dist_browser_SpiralDrawer_js.js +1 -1
  441. package/shapes_spiral_dist_browser_index_js.js +2 -2
  442. package/shapes_square_dist_browser_SquareDrawer_js.js +1 -1
  443. package/shapes_square_dist_browser_index_js.js +2 -2
  444. package/shapes_squircle_dist_browser_SquircleDrawer_js.js +1 -1
  445. package/shapes_squircle_dist_browser_index_js.js +2 -2
  446. package/shapes_star_dist_browser_StarDrawer_js.js +1 -1
  447. package/shapes_star_dist_browser_index_js.js +2 -2
  448. package/shapes_text_dist_browser_TextDrawer_js.js +1 -1
  449. package/shapes_text_dist_browser_index_js.js +2 -2
  450. package/slim_dist_browser_index_js.js +2 -2
  451. package/tsparticles.all.bundle.js +3 -3
  452. package/tsparticles.all.bundle.min.js +2 -2
  453. package/tsparticles.all.js +16 -6
  454. package/tsparticles.all.min.js +1 -1
  455. package/updaters_destroy_dist_browser_DestroyUpdater_js.js +1 -1
  456. package/updaters_destroy_dist_browser_index_js.js +2 -2
  457. package/updaters_fillColor_dist_browser_FillColorUpdater_js.js +1 -1
  458. package/updaters_fillColor_dist_browser_index_js.js +2 -2
  459. package/updaters_gradient_dist_browser_GradientUpdater_js.js +1 -1
  460. package/updaters_gradient_dist_browser_index_js.js +2 -2
  461. package/updaters_life_dist_browser_LifeUpdater_js.js +1 -1
  462. package/updaters_life_dist_browser_index_js.js +2 -2
  463. package/updaters_opacity_dist_browser_OpacityUpdater_js.js +1 -1
  464. package/updaters_opacity_dist_browser_index_js.js +2 -2
  465. package/updaters_orbit_dist_browser_OrbitUpdater_js.js +1 -1
  466. package/updaters_orbit_dist_browser_index_js.js +2 -2
  467. package/updaters_outModes_dist_browser_OutOfCanvasUpdater_js.js +1 -1
  468. package/updaters_outModes_dist_browser_index_js.js +2 -2
  469. package/updaters_roll_dist_browser_RollUpdater_js.js +2 -2
  470. package/updaters_roll_dist_browser_index_js.js +2 -2
  471. package/updaters_rotate_dist_browser_RotateUpdater_js.js +1 -1
  472. package/updaters_rotate_dist_browser_index_js.js +2 -2
  473. package/updaters_size_dist_browser_SizeUpdater_js.js +1 -1
  474. package/updaters_size_dist_browser_index_js.js +2 -2
  475. package/updaters_strokeColor_dist_browser_StrokeColorUpdater_js.js +1 -1
  476. package/updaters_strokeColor_dist_browser_index_js.js +2 -2
  477. package/updaters_tilt_dist_browser_TiltUpdater_js.js +1 -1
  478. package/updaters_tilt_dist_browser_index_js.js +2 -2
  479. package/updaters_twinkle_dist_browser_TwinkleUpdater_js.js +1 -1
  480. package/updaters_twinkle_dist_browser_index_js.js +2 -2
  481. package/updaters_wobble_dist_browser_WobbleUpdater_js.js +1 -1
  482. package/updaters_wobble_dist_browser_index_js.js +2 -2
  483. package/utils_simplexNoise_dist_browser_index_js.js +1 -1
  484. package/5056.min.js +0 -1
  485. package/5352.min.js +0 -1
  486. package/7062.min.js +0 -1
  487. package/umd/bundle.js +0 -30
  488. package/umd/index.js +0 -212
@@ -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-beta.1
7
+ * v4.0.0-beta.3
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 */ brownianPathName: () => (/* binding */ brownianPathName),\n/* harmony export */ loadBrownianPath: () => (/* binding */ loadBrownianPath)\n/* harmony export */ });\nconst brownianPathName = \"brownianPathGenerator\";\nasync function loadBrownianPath(engine) {\n engine.checkVersion(\"4.0.0-beta.1\");\n await engine.pluginManager.register(async (e)=>{\n const { ensureBaseMoverLoaded } = await __webpack_require__.e(/*! import() */ \"plugins_move_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\"));\n ensureBaseMoverLoaded(e);\n e.pluginManager.addPathGenerator?.(brownianPathName, async (container)=>{\n const { BrownianPathGenerator } = await __webpack_require__.e(/*! import() */ \"paths_brownian_dist_browser_BrownianPathGenerator_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./BrownianPathGenerator.js */ \"../../paths/brownian/dist/browser/BrownianPathGenerator.js\"));\n return new BrownianPathGenerator(container);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/brownian/dist/browser/index.js?\n}");
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ brownianPathName: () => (/* binding */ brownianPathName),\n/* harmony export */ loadBrownianPath: () => (/* binding */ loadBrownianPath)\n/* harmony export */ });\nconst brownianPathName = \"brownianPathGenerator\";\nasync function loadBrownianPath(engine) {\n engine.checkVersion(\"4.0.0-beta.3\");\n await engine.pluginManager.register(async (e)=>{\n const { ensureBaseMoverLoaded } = await __webpack_require__.e(/*! import() */ \"plugins_move_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\"));\n ensureBaseMoverLoaded(e);\n e.pluginManager.addPathGenerator?.(brownianPathName, async (container)=>{\n const { BrownianPathGenerator } = await __webpack_require__.e(/*! import() */ \"paths_brownian_dist_browser_BrownianPathGenerator_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./BrownianPathGenerator.js */ \"../../paths/brownian/dist/browser/BrownianPathGenerator.js\"));\n return new BrownianPathGenerator(container);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/brownian/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-beta.1
7
+ * v4.0.0-beta.3
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 */ CurlNoiseGenerator: () => (/* binding */ CurlNoiseGenerator)\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 _tsparticles_simplex_noise__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tsparticles/simplex-noise */ \"../../utils/simplexNoise/dist/browser/index.js\");\n\n\nconst defaultOptions = {\n speed: 0.2,\n step: 250\n};\nclass CurlNoiseGenerator {\n options;\n _container;\n _res;\n _simplex;\n constructor(container){\n this._container = container;\n this._res = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n const simplex = new _tsparticles_simplex_noise__WEBPACK_IMPORTED_MODULE_1__.SimplexNoise();\n this._simplex = simplex.noise2d;\n this.options = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.deepExtend)({}, defaultOptions);\n }\n generate(particle) {\n const pos = particle.getPosition(), { speed, step } = this.options, x = pos.x / step, y = pos.y / step, eps = 0.001, n1a = this._simplex.noise(x, y + eps), n2a = this._simplex.noise(x, y - eps), a = (n1a - n2a) / (_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.double * eps), n1b = this._simplex.noise(x + eps, y), n2b = this._simplex.noise(x - eps, y), b = (n1b - n2b) / (_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.double * eps);\n particle.velocity.x = 0;\n particle.velocity.y = 0;\n this._res.x = speed * a;\n this._res.y = speed * -b;\n return this._res;\n }\n init() {\n const container = this._container, sourceOptions = container.actualOptions.particles.move.path.options;\n this.options.seed = sourceOptions[\"seed\"];\n this.options.speed = (sourceOptions[\"speed\"] ?? defaultOptions.speed) * container.retina.pixelRatio;\n this.options.step = sourceOptions[\"step\"] ?? defaultOptions.step;\n this._simplex.seed(this.options.seed ?? (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)());\n }\n reset() {}\n update() {}\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/curlNoise/dist/browser/CurlNoiseGenerator.js?\n}");
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CurlNoiseGenerator: () => (/* binding */ CurlNoiseGenerator)\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 _tsparticles_plugin_move__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\");\n/* harmony import */ var _tsparticles_simplex_noise__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @tsparticles/simplex-noise */ \"../../utils/simplexNoise/dist/browser/index.js\");\n\n\n\nconst defaultOptions = {\n speed: 0.2,\n step: 250\n};\nclass CurlNoiseGenerator {\n options;\n _container;\n _res;\n _simplex;\n constructor(container){\n this._container = container;\n this._res = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n const simplex = new _tsparticles_simplex_noise__WEBPACK_IMPORTED_MODULE_2__.SimplexNoise();\n this._simplex = simplex.noise2d;\n this.options = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.deepExtend)({}, defaultOptions);\n }\n generate(particle) {\n const pos = particle.getPosition(), { speed, step } = this.options, x = pos.x / step, y = pos.y / step, eps = 0.001, n1a = this._simplex.noise(x, y + eps), n2a = this._simplex.noise(x, y - eps), a = (n1a - n2a) / (_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.double * eps), n1b = this._simplex.noise(x + eps, y), n2b = this._simplex.noise(x - eps, y), b = (n1b - n2b) / (_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.double * eps);\n particle.velocity.x = 0;\n particle.velocity.y = 0;\n this._res.x = speed * a;\n this._res.y = speed * -b;\n return this._res;\n }\n init() {\n const container = this._container, sourceOptions = container.actualOptions.particles.move.path.options;\n this.options.seed = sourceOptions[\"seed\"];\n this.options.speed = (sourceOptions[\"speed\"] ?? defaultOptions.speed) * container.retina.pixelRatio;\n this.options.step = sourceOptions[\"step\"] ?? defaultOptions.step;\n this._simplex.seed(this.options.seed ?? (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)());\n }\n reset() {}\n update() {}\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/curlNoise/dist/browser/CurlNoiseGenerator.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-beta.1
7
+ * v4.0.0-beta.3
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 */ curlNoisePathName: () => (/* binding */ curlNoisePathName),\n/* harmony export */ loadCurlNoisePath: () => (/* binding */ loadCurlNoisePath)\n/* harmony export */ });\nconst curlNoisePathName = \"curlNoise\";\nasync function loadCurlNoisePath(engine) {\n engine.checkVersion(\"4.0.0-beta.1\");\n await engine.pluginManager.register(async (e)=>{\n const { ensureBaseMoverLoaded } = await __webpack_require__.e(/*! import() */ \"plugins_move_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\"));\n ensureBaseMoverLoaded(e);\n e.pluginManager.addPathGenerator?.(curlNoisePathName, async (container)=>{\n const { CurlNoiseGenerator } = await Promise.all(/*! import() */[__webpack_require__.e(\"utils_simplexNoise_dist_browser_index_js\"), __webpack_require__.e(\"paths_curlNoise_dist_browser_CurlNoiseGenerator_js\")]).then(__webpack_require__.bind(__webpack_require__, /*! ./CurlNoiseGenerator.js */ \"../../paths/curlNoise/dist/browser/CurlNoiseGenerator.js\"));\n return new CurlNoiseGenerator(container);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/curlNoise/dist/browser/index.js?\n}");
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ curlNoisePathName: () => (/* binding */ curlNoisePathName),\n/* harmony export */ loadCurlNoisePath: () => (/* binding */ loadCurlNoisePath)\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 _tsparticles_plugin_move__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\");\n\n\nconst curlNoisePathName = \"curlNoise\";\nasync function loadCurlNoisePath(engine) {\n engine.checkVersion(\"4.0.0-beta.3\");\n await engine.pluginManager.register(async (e)=>{\n const { ensureBaseMoverLoaded } = await Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\"));\n ensureBaseMoverLoaded(e);\n e.pluginManager.addPathGenerator?.(curlNoisePathName, async (container)=>{\n const { CurlNoiseGenerator } = await Promise.all(/*! import() */[__webpack_require__.e(\"utils_simplexNoise_dist_browser_index_js\"), __webpack_require__.e(\"paths_curlNoise_dist_browser_CurlNoiseGenerator_js\")]).then(__webpack_require__.bind(__webpack_require__, /*! ./CurlNoiseGenerator.js */ \"../../paths/curlNoise/dist/browser/CurlNoiseGenerator.js\"));\n return new CurlNoiseGenerator(container);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/curlNoise/dist/browser/index.js?\n}");
27
+
28
+ /***/ },
29
+
30
+ /***/ "../../plugins/move/dist/browser/index.js"
31
+ /*!************************************************!*\
32
+ !*** ../../plugins/move/dist/browser/index.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 */ ensureBaseMoverLoaded: () => (/* binding */ ensureBaseMoverLoaded),\n/* harmony export */ loadMovePlugin: () => (/* binding */ loadMovePlugin)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nasync function loadMovePlugin(engine) {\n engine.checkVersion(\"4.0.0-beta.3\");\n await engine.pluginManager.register(async (e)=>{\n const moveEngine = e, movePluginManager = moveEngine.pluginManager;\n movePluginManager.initializers.pathGenerators ??= new Map();\n movePluginManager.pathGenerators ??= new Map();\n movePluginManager.addPathGenerator = (name, generator)=>{\n movePluginManager.initializers.pathGenerators ??= new Map();\n movePluginManager.initializers.pathGenerators.set(name, generator);\n };\n movePluginManager.getPathGenerators = async (container, force = false)=>{\n movePluginManager.initializers.pathGenerators ??= new Map();\n movePluginManager.pathGenerators ??= new Map();\n return (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getItemMapFromInitializer)(container, movePluginManager.pathGenerators, movePluginManager.initializers.pathGenerators, force);\n };\n const { MovePlugin } = await __webpack_require__.e(/*! import() */ \"plugins_move_dist_browser_MovePlugin_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./MovePlugin.js */ \"../../plugins/move/dist/browser/MovePlugin.js\"));\n e.pluginManager.addPlugin(new MovePlugin(e.pluginManager));\n });\n}\nfunction ensureBaseMoverLoaded(e) {\n if (!e.pluginManager.addPathGenerator) {\n throw new Error(\"tsParticles Base Mover is not loaded\");\n }\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../plugins/move/dist/browser/index.js?\n}");
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
- * v4.0.0-beta.1
7
+ * v4.0.0-beta.3
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 */ CurvesPathGenerator: () => (/* binding */ CurvesPathGenerator)\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 _Curves_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Curves.js */ \"../../paths/curves/dist/browser/Curves.js\");\n\n\nconst defaultOptions = {\n rndFunc: null,\n period: 100,\n nbHarmonics: 2,\n attenHarmonics: 0.8,\n lowValue: -0.03,\n highValue: 0.03\n};\nfunction randomVelocity() {\n const offset = 0.8, factor = 0.6;\n return (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * factor + offset;\n}\nclass CurvesPathGenerator {\n options;\n _container;\n constructor(container){\n this._container = container;\n this.options = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.deepExtend)({}, defaultOptions);\n }\n generate(particle) {\n if (!particle.pathGen) {\n const { options } = this;\n particle.pathGen = (0,_Curves_js__WEBPACK_IMPORTED_MODULE_1__.CurvesPathGen)(options.rndFunc, options.period, options.nbHarmonics, options.attenHarmonics, options.lowValue, options.highValue);\n }\n if (particle.curveVelocity) {\n particle.curveVelocity.length += 0.01;\n particle.curveVelocity.angle = (particle.curveVelocity.angle + particle.pathGen()) % _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.doublePI;\n } else {\n particle.curveVelocity = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n particle.curveVelocity.length = randomVelocity();\n particle.curveVelocity.angle = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.doublePI;\n }\n particle.velocity.x = 0;\n particle.velocity.y = 0;\n return particle.curveVelocity;\n }\n init() {\n const sourceOptions = this._container.actualOptions.particles.move.path.options;\n if ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isFunction)(sourceOptions[\"rndFunc\"])) {\n this.options.rndFunc = sourceOptions[\"rndFunc\"];\n } else if ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isString)(sourceOptions[\"rndFunc\"])) {\n this.options.rndFunc = globalThis[sourceOptions[\"rndFunc\"]] ?? this.options.rndFunc;\n }\n this.options.period = sourceOptions[\"period\"] ?? this.options.period;\n this.options.nbHarmonics = sourceOptions[\"nbHarmonics\"] ?? this.options.nbHarmonics;\n this.options.attenHarmonics = sourceOptions[\"attenHarmonics\"] ?? this.options.attenHarmonics;\n this.options.lowValue = sourceOptions[\"lowValue\"] ?? this.options.lowValue;\n this.options.highValue = sourceOptions[\"highValue\"] ?? this.options.highValue;\n }\n reset(particle) {\n delete particle.pathGen;\n delete particle.curveVelocity;\n }\n update() {}\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/curves/dist/browser/CurvesPathGenerator.js?\n}");
36
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CurvesPathGenerator: () => (/* binding */ CurvesPathGenerator)\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 _Curves_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Curves.js */ \"../../paths/curves/dist/browser/Curves.js\");\n/* harmony import */ var _tsparticles_plugin_move__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\");\n\n\n\nconst defaultOptions = {\n rndFunc: null,\n period: 100,\n nbHarmonics: 2,\n attenHarmonics: 0.8,\n lowValue: -0.03,\n highValue: 0.03\n};\nfunction randomVelocity() {\n const offset = 0.8, factor = 0.6;\n return (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * factor + offset;\n}\nclass CurvesPathGenerator {\n options;\n _container;\n constructor(container){\n this._container = container;\n this.options = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.deepExtend)({}, defaultOptions);\n }\n generate(particle) {\n if (!particle.pathGen) {\n const { options } = this;\n particle.pathGen = (0,_Curves_js__WEBPACK_IMPORTED_MODULE_1__.CurvesPathGen)(options.rndFunc, options.period, options.nbHarmonics, options.attenHarmonics, options.lowValue, options.highValue);\n }\n if (particle.curveVelocity) {\n particle.curveVelocity.length += 0.01;\n particle.curveVelocity.angle = (particle.curveVelocity.angle + particle.pathGen()) % _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.doublePI;\n } else {\n particle.curveVelocity = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n particle.curveVelocity.length = randomVelocity();\n particle.curveVelocity.angle = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.doublePI;\n }\n particle.velocity.x = 0;\n particle.velocity.y = 0;\n return particle.curveVelocity;\n }\n init() {\n const sourceOptions = this._container.actualOptions.particles.move.path.options;\n if ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isFunction)(sourceOptions[\"rndFunc\"])) {\n this.options.rndFunc = sourceOptions[\"rndFunc\"];\n } else if ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isString)(sourceOptions[\"rndFunc\"])) {\n this.options.rndFunc = globalThis[sourceOptions[\"rndFunc\"]] ?? this.options.rndFunc;\n }\n this.options.period = sourceOptions[\"period\"] ?? this.options.period;\n this.options.nbHarmonics = sourceOptions[\"nbHarmonics\"] ?? this.options.nbHarmonics;\n this.options.attenHarmonics = sourceOptions[\"attenHarmonics\"] ?? this.options.attenHarmonics;\n this.options.lowValue = sourceOptions[\"lowValue\"] ?? this.options.lowValue;\n this.options.highValue = sourceOptions[\"highValue\"] ?? this.options.highValue;\n }\n reset(particle) {\n delete particle.pathGen;\n delete particle.curveVelocity;\n }\n update() {}\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/curves/dist/browser/CurvesPathGenerator.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-beta.1
7
+ * v4.0.0-beta.3
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 */ curvesPathName: () => (/* binding */ curvesPathName),\n/* harmony export */ loadCurvesPath: () => (/* binding */ loadCurvesPath)\n/* harmony export */ });\nconst curvesPathName = \"curvesPathGenerator\";\nasync function loadCurvesPath(engine) {\n engine.checkVersion(\"4.0.0-beta.1\");\n await engine.pluginManager.register(async (e)=>{\n const { ensureBaseMoverLoaded } = await __webpack_require__.e(/*! import() */ \"plugins_move_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\"));\n ensureBaseMoverLoaded(e);\n e.pluginManager.addPathGenerator?.(curvesPathName, async (container)=>{\n const { CurvesPathGenerator } = await __webpack_require__.e(/*! import() */ \"paths_curves_dist_browser_CurvesPathGenerator_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./CurvesPathGenerator.js */ \"../../paths/curves/dist/browser/CurvesPathGenerator.js\"));\n return new CurvesPathGenerator(container);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/curves/dist/browser/index.js?\n}");
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ curvesPathName: () => (/* binding */ curvesPathName),\n/* harmony export */ loadCurvesPath: () => (/* binding */ loadCurvesPath)\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 _tsparticles_plugin_move__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\");\n\n\nconst curvesPathName = \"curvesPathGenerator\";\nasync function loadCurvesPath(engine) {\n engine.checkVersion(\"4.0.0-beta.3\");\n await engine.pluginManager.register(async (e)=>{\n const { ensureBaseMoverLoaded } = await Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\"));\n ensureBaseMoverLoaded(e);\n e.pluginManager.addPathGenerator?.(curvesPathName, async (container)=>{\n const { CurvesPathGenerator } = await __webpack_require__.e(/*! import() */ \"paths_curves_dist_browser_CurvesPathGenerator_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./CurvesPathGenerator.js */ \"../../paths/curves/dist/browser/CurvesPathGenerator.js\"));\n return new CurvesPathGenerator(container);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/curves/dist/browser/index.js?\n}");
27
+
28
+ /***/ },
29
+
30
+ /***/ "../../plugins/move/dist/browser/index.js"
31
+ /*!************************************************!*\
32
+ !*** ../../plugins/move/dist/browser/index.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 */ ensureBaseMoverLoaded: () => (/* binding */ ensureBaseMoverLoaded),\n/* harmony export */ loadMovePlugin: () => (/* binding */ loadMovePlugin)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nasync function loadMovePlugin(engine) {\n engine.checkVersion(\"4.0.0-beta.3\");\n await engine.pluginManager.register(async (e)=>{\n const moveEngine = e, movePluginManager = moveEngine.pluginManager;\n movePluginManager.initializers.pathGenerators ??= new Map();\n movePluginManager.pathGenerators ??= new Map();\n movePluginManager.addPathGenerator = (name, generator)=>{\n movePluginManager.initializers.pathGenerators ??= new Map();\n movePluginManager.initializers.pathGenerators.set(name, generator);\n };\n movePluginManager.getPathGenerators = async (container, force = false)=>{\n movePluginManager.initializers.pathGenerators ??= new Map();\n movePluginManager.pathGenerators ??= new Map();\n return (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getItemMapFromInitializer)(container, movePluginManager.pathGenerators, movePluginManager.initializers.pathGenerators, force);\n };\n const { MovePlugin } = await __webpack_require__.e(/*! import() */ \"plugins_move_dist_browser_MovePlugin_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./MovePlugin.js */ \"../../plugins/move/dist/browser/MovePlugin.js\"));\n e.pluginManager.addPlugin(new MovePlugin(e.pluginManager));\n });\n}\nfunction ensureBaseMoverLoaded(e) {\n if (!e.pluginManager.addPathGenerator) {\n throw new Error(\"tsParticles Base Mover is not loaded\");\n }\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../plugins/move/dist/browser/index.js?\n}");
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
- * v4.0.0-beta.1
7
+ * v4.0.0-beta.3
8
8
  */
9
9
  "use strict";
10
10
  /*
@@ -53,7 +53,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
53
53
  \******************************************************************/
54
54
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
55
55
 
56
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ NoiseFieldGenerator: () => (/* binding */ NoiseFieldGenerator)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nconst originCoordinate = 0, firstIndex = 0, empty = 0, optionsSizeOffset = 1, transformDefaultValues = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: 0,\n f: 0\n}, defaultOptions = {\n draw: false,\n size: 20,\n increment: 0.004,\n columns: 0,\n rows: 0,\n layers: 0,\n width: 0,\n height: 0,\n factor: {\n angle: 0.02,\n length: 0.01\n },\n offset: {\n x: 40000,\n y: 40000,\n z: 40000\n }\n};\nclass NoiseFieldGenerator {\n container;\n field;\n noiseGen;\n noiseW;\n options;\n _res;\n constructor(container, noiseGen){\n this.container = container;\n this.noiseGen = noiseGen;\n this.field = [];\n this.noiseW = 0;\n this._res = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n this.options = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.deepExtend)({}, defaultOptions);\n }\n generate(particle) {\n const pos = particle.getPosition(), { size } = this.options, sizeFactor = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.identity / size, point = {\n x: Math.max(Math.floor(pos.x * sizeFactor), originCoordinate),\n y: Math.max(Math.floor(pos.y * sizeFactor), originCoordinate),\n z: Math.max(Math.floor(pos.z * sizeFactor), originCoordinate)\n }, { field } = this, fieldPoint = field[point.x]?.[point.y]?.[point.z];\n if (fieldPoint) {\n this._res.x = fieldPoint.x;\n this._res.y = fieldPoint.y;\n } else {\n this._res.x = 0;\n this._res.y = 0;\n }\n return this._res;\n }\n init() {\n this._setup();\n }\n reset() {}\n update() {\n this._calculateField();\n this.noiseW += this.options.increment;\n if (!this.options.draw) {\n return;\n }\n this.container.canvas.render.draw((ctx)=>{\n this._drawField(ctx);\n });\n }\n _calculateField() {\n const { field, noiseGen, options, noiseW } = this, lengthFactor = options.factor.length, angleFactor = options.factor.angle;\n for(let x = 0; x < options.columns; x++){\n const xColumn = field[x];\n if (!xColumn) {\n continue;\n }\n for(let y = 0; y < options.rows; y++){\n const yColumn = xColumn[y];\n if (!yColumn) {\n continue;\n }\n for(let z = 0; z < options.layers; z++){\n const cell = yColumn[z];\n if (!cell) {\n continue;\n }\n cell.length = noiseGen.noise4d(x * lengthFactor + options.offset.x, y * lengthFactor + options.offset.y, z * lengthFactor + options.offset.z, noiseW);\n cell.angle = noiseGen.noise4d(x * angleFactor, y * angleFactor, z * angleFactor, noiseW) * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.doublePI;\n }\n }\n }\n }\n _drawField(ctx) {\n const { field, options } = this;\n for(let x = 0; x < options.columns; x++){\n const xColumn = field[x];\n if (!xColumn) {\n continue;\n }\n for(let y = 0; y < options.rows; y++){\n const yColumn = xColumn[y];\n if (!yColumn) {\n continue;\n }\n const cell = yColumn[firstIndex];\n if (!cell) {\n continue;\n }\n const { angle, length } = cell;\n ctx.setTransform(transformDefaultValues.a, transformDefaultValues.b, transformDefaultValues.c, transformDefaultValues.d, x * this.options.size, y * this.options.size);\n ctx.rotate(angle);\n ctx.strokeStyle = \"white\";\n ctx.beginPath();\n ctx.moveTo(originCoordinate, originCoordinate);\n ctx.lineTo(originCoordinate, this.options.size * length);\n ctx.stroke();\n ctx.setTransform(transformDefaultValues.a, transformDefaultValues.b, transformDefaultValues.c, transformDefaultValues.d, transformDefaultValues.e, transformDefaultValues.f);\n }\n }\n }\n _initField() {\n const { columns, rows, layers } = this.options;\n this.field = new Array(columns);\n for(let x = 0; x < columns; x++){\n const newX = new Array(rows);\n for(let y = 0; y < rows; y++){\n const newY = new Array(layers);\n for(let z = 0; z < layers; z++){\n newY[z] = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n }\n newX[y] = newY;\n }\n this.field[x] = newX;\n }\n }\n _resetField() {\n const container = this.container, sourceOptions = container.actualOptions.particles.move.path.options, { options } = this;\n options.width = container.canvas.size.width;\n options.height = container.canvas.size.height;\n options.size = sourceOptions[\"size\"] > empty ? sourceOptions[\"size\"] : defaultOptions.size;\n options.increment = sourceOptions[\"increment\"] > empty ? sourceOptions[\"increment\"] : defaultOptions.increment;\n options.draw = !!sourceOptions[\"draw\"];\n const offset = sourceOptions[\"offset\"];\n options.offset.x = offset?.x ?? defaultOptions.offset.x;\n options.offset.y = offset?.y ?? defaultOptions.offset.y;\n options.offset.z = offset?.z ?? defaultOptions.offset.z;\n const factor = sourceOptions[\"factor\"];\n options.factor.angle = factor?.angle ?? defaultOptions.factor.angle;\n options.factor.length = factor?.length ?? defaultOptions.factor.length;\n options.seed = sourceOptions[\"seed\"];\n this.noiseGen.seed(options.seed ?? (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)());\n options.columns = Math.floor(options.width / options.size) + optionsSizeOffset;\n options.rows = Math.floor(options.height / options.size) + optionsSizeOffset;\n options.layers = Math.floor(container.zLayers / options.size) + optionsSizeOffset;\n this._initField();\n }\n _setup() {\n this.noiseW = 0;\n this._resetField();\n addEventListener(\"resize\", ()=>{\n this._resetField();\n });\n }\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../utils/noiseField/dist/browser/NoiseFieldGenerator.js?\n}");
56
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ NoiseFieldGenerator: () => (/* binding */ NoiseFieldGenerator)\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 _tsparticles_plugin_move__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\");\n\n\nconst originCoordinate = 0, firstIndex = 0, empty = 0, optionsSizeOffset = 1, transformDefaultValues = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: 0,\n f: 0\n}, defaultOptions = {\n draw: false,\n size: 20,\n increment: 0.004,\n columns: 0,\n rows: 0,\n layers: 0,\n width: 0,\n height: 0,\n factor: {\n angle: 0.02,\n length: 0.01\n },\n offset: {\n x: 40000,\n y: 40000,\n z: 40000\n }\n};\nclass NoiseFieldGenerator {\n container;\n field;\n noiseGen;\n noiseW;\n options;\n _res;\n constructor(container, noiseGen){\n this.container = container;\n this.noiseGen = noiseGen;\n this.field = [];\n this.noiseW = 0;\n this._res = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n this.options = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.deepExtend)({}, defaultOptions);\n }\n generate(particle) {\n const pos = particle.getPosition(), { size } = this.options, sizeFactor = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.identity / size, point = {\n x: Math.max(Math.floor(pos.x * sizeFactor), originCoordinate),\n y: Math.max(Math.floor(pos.y * sizeFactor), originCoordinate),\n z: Math.max(Math.floor(pos.z * sizeFactor), originCoordinate)\n }, { field } = this, fieldPoint = field[point.x]?.[point.y]?.[point.z];\n if (fieldPoint) {\n this._res.x = fieldPoint.x;\n this._res.y = fieldPoint.y;\n } else {\n this._res.x = 0;\n this._res.y = 0;\n }\n return this._res;\n }\n init() {\n this._setup();\n }\n reset() {}\n update() {\n this._calculateField();\n this.noiseW += this.options.increment;\n if (!this.options.draw) {\n return;\n }\n this.container.canvas.render.draw((ctx)=>{\n this._drawField(ctx);\n });\n }\n _calculateField() {\n const { field, noiseGen, options, noiseW } = this, lengthFactor = options.factor.length, angleFactor = options.factor.angle;\n for(let x = 0; x < options.columns; x++){\n const xColumn = field[x];\n if (!xColumn) {\n continue;\n }\n for(let y = 0; y < options.rows; y++){\n const yColumn = xColumn[y];\n if (!yColumn) {\n continue;\n }\n for(let z = 0; z < options.layers; z++){\n const cell = yColumn[z];\n if (!cell) {\n continue;\n }\n cell.length = noiseGen.noise4d(x * lengthFactor + options.offset.x, y * lengthFactor + options.offset.y, z * lengthFactor + options.offset.z, noiseW);\n cell.angle = noiseGen.noise4d(x * angleFactor, y * angleFactor, z * angleFactor, noiseW) * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.doublePI;\n }\n }\n }\n }\n _drawField(ctx) {\n const { field, options } = this;\n for(let x = 0; x < options.columns; x++){\n const xColumn = field[x];\n if (!xColumn) {\n continue;\n }\n for(let y = 0; y < options.rows; y++){\n const yColumn = xColumn[y];\n if (!yColumn) {\n continue;\n }\n const cell = yColumn[firstIndex];\n if (!cell) {\n continue;\n }\n const { angle, length } = cell;\n ctx.setTransform(transformDefaultValues.a, transformDefaultValues.b, transformDefaultValues.c, transformDefaultValues.d, x * this.options.size, y * this.options.size);\n ctx.rotate(angle);\n ctx.strokeStyle = \"white\";\n ctx.beginPath();\n ctx.moveTo(originCoordinate, originCoordinate);\n ctx.lineTo(originCoordinate, this.options.size * length);\n ctx.stroke();\n ctx.setTransform(transformDefaultValues.a, transformDefaultValues.b, transformDefaultValues.c, transformDefaultValues.d, transformDefaultValues.e, transformDefaultValues.f);\n }\n }\n }\n _initField() {\n const { columns, rows, layers } = this.options;\n this.field = new Array(columns);\n for(let x = 0; x < columns; x++){\n const newX = new Array(rows);\n for(let y = 0; y < rows; y++){\n const newY = new Array(layers);\n for(let z = 0; z < layers; z++){\n newY[z] = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n }\n newX[y] = newY;\n }\n this.field[x] = newX;\n }\n }\n _resetField() {\n const container = this.container, sourceOptions = container.actualOptions.particles.move.path.options, { options } = this;\n options.width = container.canvas.size.width;\n options.height = container.canvas.size.height;\n options.size = sourceOptions[\"size\"] > empty ? sourceOptions[\"size\"] : defaultOptions.size;\n options.increment = sourceOptions[\"increment\"] > empty ? sourceOptions[\"increment\"] : defaultOptions.increment;\n options.draw = !!sourceOptions[\"draw\"];\n const offset = sourceOptions[\"offset\"];\n options.offset.x = offset?.x ?? defaultOptions.offset.x;\n options.offset.y = offset?.y ?? defaultOptions.offset.y;\n options.offset.z = offset?.z ?? defaultOptions.offset.z;\n const factor = sourceOptions[\"factor\"];\n options.factor.angle = factor?.angle ?? defaultOptions.factor.angle;\n options.factor.length = factor?.length ?? defaultOptions.factor.length;\n options.seed = sourceOptions[\"seed\"];\n this.noiseGen.seed(options.seed ?? (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)());\n options.columns = Math.floor(options.width / options.size) + optionsSizeOffset;\n options.rows = Math.floor(options.height / options.size) + optionsSizeOffset;\n options.layers = Math.floor(container.zLayers / options.size) + optionsSizeOffset;\n this._initField();\n }\n _setup() {\n this.noiseW = 0;\n this._resetField();\n addEventListener(\"resize\", ()=>{\n this._resetField();\n });\n }\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../utils/noiseField/dist/browser/NoiseFieldGenerator.js?\n}");
57
57
 
58
58
  /***/ },
59
59
 
@@ -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-beta.1
7
+ * v4.0.0-beta.3
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 */ fractalNoisePathName: () => (/* binding */ fractalNoisePathName),\n/* harmony export */ loadFractalNoisePath: () => (/* binding */ loadFractalNoisePath)\n/* harmony export */ });\nconst fractalNoisePathName = \"fractalNoise\";\nasync function loadFractalNoisePath(engine) {\n engine.checkVersion(\"4.0.0-beta.1\");\n await engine.pluginManager.register(async (e)=>{\n const { ensureBaseMoverLoaded } = await __webpack_require__.e(/*! import() */ \"plugins_move_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\"));\n ensureBaseMoverLoaded(e);\n e.pluginManager.addPathGenerator?.(fractalNoisePathName, async (container)=>{\n const { FractalNoiseGenerator } = await __webpack_require__.e(/*! import() */ \"paths_fractalNoise_dist_browser_FractalNoiseGenerator_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./FractalNoiseGenerator.js */ \"../../paths/fractalNoise/dist/browser/FractalNoiseGenerator.js\"));\n return new FractalNoiseGenerator(container);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/fractalNoise/dist/browser/index.js?\n}");
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ fractalNoisePathName: () => (/* binding */ fractalNoisePathName),\n/* harmony export */ loadFractalNoisePath: () => (/* binding */ loadFractalNoisePath)\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 _tsparticles_plugin_move__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\");\n\n\nconst fractalNoisePathName = \"fractalNoise\";\nasync function loadFractalNoisePath(engine) {\n engine.checkVersion(\"4.0.0-beta.3\");\n await engine.pluginManager.register(async (e)=>{\n const { ensureBaseMoverLoaded } = await Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\"));\n ensureBaseMoverLoaded(e);\n e.pluginManager.addPathGenerator?.(fractalNoisePathName, async (container)=>{\n const { FractalNoiseGenerator } = await __webpack_require__.e(/*! import() */ \"paths_fractalNoise_dist_browser_FractalNoiseGenerator_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./FractalNoiseGenerator.js */ \"../../paths/fractalNoise/dist/browser/FractalNoiseGenerator.js\"));\n return new FractalNoiseGenerator(container);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/fractalNoise/dist/browser/index.js?\n}");
27
+
28
+ /***/ },
29
+
30
+ /***/ "../../plugins/move/dist/browser/index.js"
31
+ /*!************************************************!*\
32
+ !*** ../../plugins/move/dist/browser/index.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 */ ensureBaseMoverLoaded: () => (/* binding */ ensureBaseMoverLoaded),\n/* harmony export */ loadMovePlugin: () => (/* binding */ loadMovePlugin)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nasync function loadMovePlugin(engine) {\n engine.checkVersion(\"4.0.0-beta.3\");\n await engine.pluginManager.register(async (e)=>{\n const moveEngine = e, movePluginManager = moveEngine.pluginManager;\n movePluginManager.initializers.pathGenerators ??= new Map();\n movePluginManager.pathGenerators ??= new Map();\n movePluginManager.addPathGenerator = (name, generator)=>{\n movePluginManager.initializers.pathGenerators ??= new Map();\n movePluginManager.initializers.pathGenerators.set(name, generator);\n };\n movePluginManager.getPathGenerators = async (container, force = false)=>{\n movePluginManager.initializers.pathGenerators ??= new Map();\n movePluginManager.pathGenerators ??= new Map();\n return (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getItemMapFromInitializer)(container, movePluginManager.pathGenerators, movePluginManager.initializers.pathGenerators, force);\n };\n const { MovePlugin } = await __webpack_require__.e(/*! import() */ \"plugins_move_dist_browser_MovePlugin_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./MovePlugin.js */ \"../../plugins/move/dist/browser/MovePlugin.js\"));\n e.pluginManager.addPlugin(new MovePlugin(e.pluginManager));\n });\n}\nfunction ensureBaseMoverLoaded(e) {\n if (!e.pluginManager.addPathGenerator) {\n throw new Error(\"tsParticles Base Mover is not loaded\");\n }\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../plugins/move/dist/browser/index.js?\n}");
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
- * v4.0.0-beta.1
7
+ * v4.0.0-beta.3
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 */ GridPathGenerator: () => (/* binding */ GridPathGenerator)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nconst dirs = [\n _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.create(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.identity, _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.originPoint.y),\n _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.create(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.originPoint.x, _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.identity),\n _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.create(-_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.identity, _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.originPoint.y),\n _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.create(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.originPoint.x, -_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.identity)\n], opposite = [\n 2,\n 3,\n 0,\n 1\n], minLength = 0;\nclass GridPathGenerator {\n options;\n _container;\n _res;\n constructor(container){\n this._container = container;\n this._res = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n this.options = {\n cellSize: 40,\n graph: undefined,\n autoMaze: false\n };\n }\n generate(p) {\n const size = this.options.cellSize;\n p.grid ??= {\n direction: Math.trunc((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * dirs.length),\n speed: p.velocity.length,\n cellPosition: {\n x: Math.floor(p.position.x / size),\n y: Math.floor(p.position.y / size)\n }\n };\n const grid = p.grid, c = {\n x: Math.floor(p.position.x / size),\n y: Math.floor(p.position.y / size)\n };\n if (c.x !== grid.cellPosition.x || c.y !== grid.cellPosition.y) {\n grid.cellPosition.x = c.x;\n grid.cellPosition.y = c.y;\n const key = `${c.x},${c.y}`, allowed = this.options.graph?.[key];\n if (allowed && allowed.length > minLength) {\n grid.direction = allowed[Math.trunc((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * allowed.length)];\n } else if (!this.options.graph) {\n const turn = Math.trunc((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * 3) - 1;\n grid.direction = (grid.direction + turn + 4) % dirs.length;\n }\n }\n p.velocity.x = 0;\n p.velocity.y = 0;\n const d = dirs[grid.direction];\n this._res.x = d.x * grid.speed;\n this._res.y = d.y * grid.speed;\n return this._res;\n }\n init() {\n const source = this._container.actualOptions.particles.move.path.options;\n this.options.cellSize = source[\"cellSize\"] ?? this.options.cellSize;\n this.options.autoMaze = source[\"autoMaze\"] ?? this.options.autoMaze;\n this.options.graph = source[\"graph\"];\n if (this.options.autoMaze) {\n const canvas = this._container.canvas.size, cellSize = this.options.cellSize, size = {\n width: Math.ceil(canvas.width / cellSize),\n height: Math.ceil(canvas.height / cellSize)\n };\n this.options.graph = this._generateMazeGraph(size);\n }\n }\n reset(p) {\n delete p.grid;\n }\n update() {}\n _generateMazeGraph({ height, width }) {\n const graph = {}, visited = [];\n for(let y = 0; y < height; y++){\n visited[y] = [];\n }\n const stack = [\n {\n x: _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.originPoint.x,\n y: _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.originPoint.y\n }\n ];\n while(stack.length > 0){\n const { x, y } = stack[stack.length - 1];\n if (!visited[y][x]) {\n visited[y][x] = true;\n }\n const dirsOrder = [\n 0,\n 1,\n 2,\n 3\n ].sort(()=>(0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() - 0.5);\n let moved = false;\n for (const d of dirsOrder){\n const n = {\n x: x + (d === 0 ? 1 : d === 2 ? -1 : 0),\n y: y + (d === 1 ? 1 : d === 3 ? -1 : 0)\n };\n if (n.x < 0 || n.y < 0 || n.x >= width || n.y >= height) {\n continue;\n }\n if (!visited[n.y][n.x]) {\n const key = `${x},${y}`, nKey = `${n.x},${n.y}`;\n graph[key] ??= [];\n graph[nKey] ??= [];\n graph[key].push(d);\n graph[nKey].push(opposite[d]);\n stack.push(n);\n moved = true;\n break;\n }\n }\n if (!moved) {\n stack.pop();\n }\n }\n return graph;\n }\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/grid/dist/browser/GridPathGenerator.js?\n}");
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ GridPathGenerator: () => (/* binding */ GridPathGenerator)\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 _tsparticles_plugin_move__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\");\n\n\nconst dirs = [\n _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.create(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.identity, _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.originPoint.y),\n _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.create(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.originPoint.x, _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.identity),\n _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.create(-_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.identity, _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.originPoint.y),\n _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.create(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.originPoint.x, -_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.identity)\n], opposite = [\n 2,\n 3,\n 0,\n 1\n], minLength = 0;\nclass GridPathGenerator {\n options;\n _container;\n _res;\n constructor(container){\n this._container = container;\n this._res = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n this.options = {\n cellSize: 40,\n graph: undefined,\n autoMaze: false\n };\n }\n generate(p) {\n const size = this.options.cellSize;\n p.grid ??= {\n direction: Math.trunc((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * dirs.length),\n speed: p.velocity.length,\n cellPosition: {\n x: Math.floor(p.position.x / size),\n y: Math.floor(p.position.y / size)\n }\n };\n const grid = p.grid, c = {\n x: Math.floor(p.position.x / size),\n y: Math.floor(p.position.y / size)\n };\n if (c.x !== grid.cellPosition.x || c.y !== grid.cellPosition.y) {\n grid.cellPosition.x = c.x;\n grid.cellPosition.y = c.y;\n const key = `${c.x},${c.y}`, allowed = this.options.graph?.[key];\n if (allowed && allowed.length > minLength) {\n grid.direction = allowed[Math.trunc((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * allowed.length)];\n } else if (!this.options.graph) {\n const turn = Math.trunc((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * 3) - 1;\n grid.direction = (grid.direction + turn + 4) % dirs.length;\n }\n }\n p.velocity.x = 0;\n p.velocity.y = 0;\n const d = dirs[grid.direction];\n this._res.x = d.x * grid.speed;\n this._res.y = d.y * grid.speed;\n return this._res;\n }\n init() {\n const source = this._container.actualOptions.particles.move.path.options;\n this.options.cellSize = source[\"cellSize\"] ?? this.options.cellSize;\n this.options.autoMaze = source[\"autoMaze\"] ?? this.options.autoMaze;\n this.options.graph = source[\"graph\"];\n if (this.options.autoMaze) {\n const canvas = this._container.canvas.size, cellSize = this.options.cellSize, size = {\n width: Math.ceil(canvas.width / cellSize),\n height: Math.ceil(canvas.height / cellSize)\n };\n this.options.graph = this._generateMazeGraph(size);\n }\n }\n reset(p) {\n delete p.grid;\n }\n update() {}\n _generateMazeGraph({ height, width }) {\n const graph = {}, visited = [];\n for(let y = 0; y < height; y++){\n visited[y] = [];\n }\n const stack = [\n {\n x: _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.originPoint.x,\n y: _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.originPoint.y\n }\n ];\n while(stack.length > 0){\n const { x, y } = stack[stack.length - 1];\n if (!visited[y][x]) {\n visited[y][x] = true;\n }\n const dirsOrder = [\n 0,\n 1,\n 2,\n 3\n ].sort(()=>(0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() - 0.5);\n let moved = false;\n for (const d of dirsOrder){\n const n = {\n x: x + (d === 0 ? 1 : d === 2 ? -1 : 0),\n y: y + (d === 1 ? 1 : d === 3 ? -1 : 0)\n };\n if (n.x < 0 || n.y < 0 || n.x >= width || n.y >= height) {\n continue;\n }\n if (!visited[n.y][n.x]) {\n const key = `${x},${y}`, nKey = `${n.x},${n.y}`;\n graph[key] ??= [];\n graph[nKey] ??= [];\n graph[key].push(d);\n graph[nKey].push(opposite[d]);\n stack.push(n);\n moved = true;\n break;\n }\n }\n if (!moved) {\n stack.pop();\n }\n }\n return graph;\n }\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/grid/dist/browser/GridPathGenerator.js?\n}");
27
+
28
+ /***/ },
29
+
30
+ /***/ "../../plugins/move/dist/browser/index.js"
31
+ /*!************************************************!*\
32
+ !*** ../../plugins/move/dist/browser/index.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 */ ensureBaseMoverLoaded: () => (/* binding */ ensureBaseMoverLoaded),\n/* harmony export */ loadMovePlugin: () => (/* binding */ loadMovePlugin)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nasync function loadMovePlugin(engine) {\n engine.checkVersion(\"4.0.0-beta.3\");\n await engine.pluginManager.register(async (e)=>{\n const moveEngine = e, movePluginManager = moveEngine.pluginManager;\n movePluginManager.initializers.pathGenerators ??= new Map();\n movePluginManager.pathGenerators ??= new Map();\n movePluginManager.addPathGenerator = (name, generator)=>{\n movePluginManager.initializers.pathGenerators ??= new Map();\n movePluginManager.initializers.pathGenerators.set(name, generator);\n };\n movePluginManager.getPathGenerators = async (container, force = false)=>{\n movePluginManager.initializers.pathGenerators ??= new Map();\n movePluginManager.pathGenerators ??= new Map();\n return (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getItemMapFromInitializer)(container, movePluginManager.pathGenerators, movePluginManager.initializers.pathGenerators, force);\n };\n const { MovePlugin } = await __webpack_require__.e(/*! import() */ \"plugins_move_dist_browser_MovePlugin_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./MovePlugin.js */ \"../../plugins/move/dist/browser/MovePlugin.js\"));\n e.pluginManager.addPlugin(new MovePlugin(e.pluginManager));\n });\n}\nfunction ensureBaseMoverLoaded(e) {\n if (!e.pluginManager.addPathGenerator) {\n throw new Error(\"tsParticles Base Mover is not loaded\");\n }\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../plugins/move/dist/browser/index.js?\n}");
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
- * v4.0.0-beta.1
7
+ * v4.0.0-beta.3
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 */ gridPathName: () => (/* binding */ gridPathName),\n/* harmony export */ loadGridPath: () => (/* binding */ loadGridPath)\n/* harmony export */ });\nconst gridPathName = \"gridPathGenerator\";\nasync function loadGridPath(engine) {\n engine.checkVersion(\"4.0.0-beta.1\");\n await engine.pluginManager.register(async (e)=>{\n const { ensureBaseMoverLoaded } = await __webpack_require__.e(/*! import() */ \"plugins_move_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\"));\n ensureBaseMoverLoaded(e);\n e.pluginManager.addPathGenerator?.(gridPathName, async (container)=>{\n const { GridPathGenerator } = await __webpack_require__.e(/*! import() */ \"paths_grid_dist_browser_GridPathGenerator_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./GridPathGenerator.js */ \"../../paths/grid/dist/browser/GridPathGenerator.js\"));\n return new GridPathGenerator(container);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/grid/dist/browser/index.js?\n}");
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ gridPathName: () => (/* binding */ gridPathName),\n/* harmony export */ loadGridPath: () => (/* binding */ loadGridPath)\n/* harmony export */ });\nconst gridPathName = \"gridPathGenerator\";\nasync function loadGridPath(engine) {\n engine.checkVersion(\"4.0.0-beta.3\");\n await engine.pluginManager.register(async (e)=>{\n const { ensureBaseMoverLoaded } = await __webpack_require__.e(/*! import() */ \"plugins_move_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\"));\n ensureBaseMoverLoaded(e);\n e.pluginManager.addPathGenerator?.(gridPathName, async (container)=>{\n const { GridPathGenerator } = await __webpack_require__.e(/*! import() */ \"paths_grid_dist_browser_GridPathGenerator_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./GridPathGenerator.js */ \"../../paths/grid/dist/browser/GridPathGenerator.js\"));\n return new GridPathGenerator(container);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/grid/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-beta.1
7
+ * v4.0.0-beta.3
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 */ LevyPathGenerator: () => (/* binding */ LevyPathGenerator)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nconst defaultScale = 1, defaultLevyAlpha = 1.5;\nclass LevyPathGenerator {\n options;\n _container;\n _res;\n constructor(container){\n this._container = container;\n this._res = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n this.options = {\n alpha: defaultLevyAlpha,\n scale: defaultScale,\n maxStep: 10\n };\n }\n generate(p) {\n p.levy ??= {\n angle: (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * Math.PI * 2,\n baseSpeed: p.velocity.length\n };\n const opts = this.options, l = p.levy;\n l.angle += ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() - 0.5) * 0.2;\n const u = Math.max((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)(), 1e-6), scale = opts.scale ?? defaultScale, levyAlpha = opts.alpha ?? defaultLevyAlpha;\n let step = scale / Math.pow(u, 1 / levyAlpha);\n if (opts.maxStep !== undefined) {\n step = Math.min(step, opts.maxStep);\n }\n const speed = l.baseSpeed * step;\n p.velocity.x = 0;\n p.velocity.y = 0;\n this._res.length = speed;\n this._res.angle = l.angle;\n return this._res;\n }\n init() {\n const source = this._container.actualOptions.particles.move.path.options;\n this.options.alpha = source[\"alpha\"] ?? this.options.alpha;\n this.options.scale = source[\"scale\"] ?? this.options.scale;\n this.options.maxStep = source[\"maxStep\"] ?? this.options.maxStep;\n }\n reset(p) {\n delete p.levy;\n }\n update() {}\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/levy/dist/browser/LevyPathGenerator.js?\n}");
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ LevyPathGenerator: () => (/* binding */ LevyPathGenerator)\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 _tsparticles_plugin_move__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\");\n\n\nconst defaultScale = 1, defaultLevyAlpha = 1.5;\nclass LevyPathGenerator {\n options;\n _container;\n _res;\n constructor(container){\n this._container = container;\n this._res = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n this.options = {\n alpha: defaultLevyAlpha,\n scale: defaultScale,\n maxStep: 10\n };\n }\n generate(p) {\n p.levy ??= {\n angle: (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * Math.PI * 2,\n baseSpeed: p.velocity.length\n };\n const opts = this.options, l = p.levy;\n l.angle += ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() - 0.5) * 0.2;\n const u = Math.max((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)(), 1e-6), scale = opts.scale ?? defaultScale, levyAlpha = opts.alpha ?? defaultLevyAlpha;\n let step = scale / Math.pow(u, 1 / levyAlpha);\n if (opts.maxStep !== undefined) {\n step = Math.min(step, opts.maxStep);\n }\n const speed = l.baseSpeed * step;\n p.velocity.x = 0;\n p.velocity.y = 0;\n this._res.length = speed;\n this._res.angle = l.angle;\n return this._res;\n }\n init() {\n const source = this._container.actualOptions.particles.move.path.options;\n this.options.alpha = source[\"alpha\"] ?? this.options.alpha;\n this.options.scale = source[\"scale\"] ?? this.options.scale;\n this.options.maxStep = source[\"maxStep\"] ?? this.options.maxStep;\n }\n reset(p) {\n delete p.levy;\n }\n update() {}\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/levy/dist/browser/LevyPathGenerator.js?\n}");
27
+
28
+ /***/ },
29
+
30
+ /***/ "../../plugins/move/dist/browser/index.js"
31
+ /*!************************************************!*\
32
+ !*** ../../plugins/move/dist/browser/index.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 */ ensureBaseMoverLoaded: () => (/* binding */ ensureBaseMoverLoaded),\n/* harmony export */ loadMovePlugin: () => (/* binding */ loadMovePlugin)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nasync function loadMovePlugin(engine) {\n engine.checkVersion(\"4.0.0-beta.3\");\n await engine.pluginManager.register(async (e)=>{\n const moveEngine = e, movePluginManager = moveEngine.pluginManager;\n movePluginManager.initializers.pathGenerators ??= new Map();\n movePluginManager.pathGenerators ??= new Map();\n movePluginManager.addPathGenerator = (name, generator)=>{\n movePluginManager.initializers.pathGenerators ??= new Map();\n movePluginManager.initializers.pathGenerators.set(name, generator);\n };\n movePluginManager.getPathGenerators = async (container, force = false)=>{\n movePluginManager.initializers.pathGenerators ??= new Map();\n movePluginManager.pathGenerators ??= new Map();\n return (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getItemMapFromInitializer)(container, movePluginManager.pathGenerators, movePluginManager.initializers.pathGenerators, force);\n };\n const { MovePlugin } = await __webpack_require__.e(/*! import() */ \"plugins_move_dist_browser_MovePlugin_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./MovePlugin.js */ \"../../plugins/move/dist/browser/MovePlugin.js\"));\n e.pluginManager.addPlugin(new MovePlugin(e.pluginManager));\n });\n}\nfunction ensureBaseMoverLoaded(e) {\n if (!e.pluginManager.addPathGenerator) {\n throw new Error(\"tsParticles Base Mover is not loaded\");\n }\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../plugins/move/dist/browser/index.js?\n}");
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
- * v4.0.0-beta.1
7
+ * v4.0.0-beta.3
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 */ levyPathName: () => (/* binding */ levyPathName),\n/* harmony export */ loadLevyPath: () => (/* binding */ loadLevyPath)\n/* harmony export */ });\nconst levyPathName = \"levyPathGenerator\";\nasync function loadLevyPath(engine) {\n engine.checkVersion(\"4.0.0-beta.1\");\n await engine.pluginManager.register(async (e)=>{\n const { ensureBaseMoverLoaded } = await __webpack_require__.e(/*! import() */ \"plugins_move_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\"));\n ensureBaseMoverLoaded(e);\n e.pluginManager.addPathGenerator?.(levyPathName, async (container)=>{\n const { LevyPathGenerator } = await __webpack_require__.e(/*! import() */ \"paths_levy_dist_browser_LevyPathGenerator_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./LevyPathGenerator.js */ \"../../paths/levy/dist/browser/LevyPathGenerator.js\"));\n return new LevyPathGenerator(container);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/levy/dist/browser/index.js?\n}");
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ levyPathName: () => (/* binding */ levyPathName),\n/* harmony export */ loadLevyPath: () => (/* binding */ loadLevyPath)\n/* harmony export */ });\nconst levyPathName = \"levyPathGenerator\";\nasync function loadLevyPath(engine) {\n engine.checkVersion(\"4.0.0-beta.3\");\n await engine.pluginManager.register(async (e)=>{\n const { ensureBaseMoverLoaded } = await __webpack_require__.e(/*! import() */ \"plugins_move_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\"));\n ensureBaseMoverLoaded(e);\n e.pluginManager.addPathGenerator?.(levyPathName, async (container)=>{\n const { LevyPathGenerator } = await __webpack_require__.e(/*! import() */ \"paths_levy_dist_browser_LevyPathGenerator_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./LevyPathGenerator.js */ \"../../paths/levy/dist/browser/LevyPathGenerator.js\"));\n return new LevyPathGenerator(container);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/levy/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-beta.1
7
+ * v4.0.0-beta.3
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 */ NoiseFieldGenerator: () => (/* binding */ NoiseFieldGenerator)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nconst originCoordinate = 0, firstIndex = 0, empty = 0, optionsSizeOffset = 1, transformDefaultValues = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: 0,\n f: 0\n}, defaultOptions = {\n draw: false,\n size: 20,\n increment: 0.004,\n columns: 0,\n rows: 0,\n layers: 0,\n width: 0,\n height: 0,\n factor: {\n angle: 0.02,\n length: 0.01\n },\n offset: {\n x: 40000,\n y: 40000,\n z: 40000\n }\n};\nclass NoiseFieldGenerator {\n container;\n field;\n noiseGen;\n noiseW;\n options;\n _res;\n constructor(container, noiseGen){\n this.container = container;\n this.noiseGen = noiseGen;\n this.field = [];\n this.noiseW = 0;\n this._res = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n this.options = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.deepExtend)({}, defaultOptions);\n }\n generate(particle) {\n const pos = particle.getPosition(), { size } = this.options, sizeFactor = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.identity / size, point = {\n x: Math.max(Math.floor(pos.x * sizeFactor), originCoordinate),\n y: Math.max(Math.floor(pos.y * sizeFactor), originCoordinate),\n z: Math.max(Math.floor(pos.z * sizeFactor), originCoordinate)\n }, { field } = this, fieldPoint = field[point.x]?.[point.y]?.[point.z];\n if (fieldPoint) {\n this._res.x = fieldPoint.x;\n this._res.y = fieldPoint.y;\n } else {\n this._res.x = 0;\n this._res.y = 0;\n }\n return this._res;\n }\n init() {\n this._setup();\n }\n reset() {}\n update() {\n this._calculateField();\n this.noiseW += this.options.increment;\n if (!this.options.draw) {\n return;\n }\n this.container.canvas.render.draw((ctx)=>{\n this._drawField(ctx);\n });\n }\n _calculateField() {\n const { field, noiseGen, options, noiseW } = this, lengthFactor = options.factor.length, angleFactor = options.factor.angle;\n for(let x = 0; x < options.columns; x++){\n const xColumn = field[x];\n if (!xColumn) {\n continue;\n }\n for(let y = 0; y < options.rows; y++){\n const yColumn = xColumn[y];\n if (!yColumn) {\n continue;\n }\n for(let z = 0; z < options.layers; z++){\n const cell = yColumn[z];\n if (!cell) {\n continue;\n }\n cell.length = noiseGen.noise4d(x * lengthFactor + options.offset.x, y * lengthFactor + options.offset.y, z * lengthFactor + options.offset.z, noiseW);\n cell.angle = noiseGen.noise4d(x * angleFactor, y * angleFactor, z * angleFactor, noiseW) * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.doublePI;\n }\n }\n }\n }\n _drawField(ctx) {\n const { field, options } = this;\n for(let x = 0; x < options.columns; x++){\n const xColumn = field[x];\n if (!xColumn) {\n continue;\n }\n for(let y = 0; y < options.rows; y++){\n const yColumn = xColumn[y];\n if (!yColumn) {\n continue;\n }\n const cell = yColumn[firstIndex];\n if (!cell) {\n continue;\n }\n const { angle, length } = cell;\n ctx.setTransform(transformDefaultValues.a, transformDefaultValues.b, transformDefaultValues.c, transformDefaultValues.d, x * this.options.size, y * this.options.size);\n ctx.rotate(angle);\n ctx.strokeStyle = \"white\";\n ctx.beginPath();\n ctx.moveTo(originCoordinate, originCoordinate);\n ctx.lineTo(originCoordinate, this.options.size * length);\n ctx.stroke();\n ctx.setTransform(transformDefaultValues.a, transformDefaultValues.b, transformDefaultValues.c, transformDefaultValues.d, transformDefaultValues.e, transformDefaultValues.f);\n }\n }\n }\n _initField() {\n const { columns, rows, layers } = this.options;\n this.field = new Array(columns);\n for(let x = 0; x < columns; x++){\n const newX = new Array(rows);\n for(let y = 0; y < rows; y++){\n const newY = new Array(layers);\n for(let z = 0; z < layers; z++){\n newY[z] = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n }\n newX[y] = newY;\n }\n this.field[x] = newX;\n }\n }\n _resetField() {\n const container = this.container, sourceOptions = container.actualOptions.particles.move.path.options, { options } = this;\n options.width = container.canvas.size.width;\n options.height = container.canvas.size.height;\n options.size = sourceOptions[\"size\"] > empty ? sourceOptions[\"size\"] : defaultOptions.size;\n options.increment = sourceOptions[\"increment\"] > empty ? sourceOptions[\"increment\"] : defaultOptions.increment;\n options.draw = !!sourceOptions[\"draw\"];\n const offset = sourceOptions[\"offset\"];\n options.offset.x = offset?.x ?? defaultOptions.offset.x;\n options.offset.y = offset?.y ?? defaultOptions.offset.y;\n options.offset.z = offset?.z ?? defaultOptions.offset.z;\n const factor = sourceOptions[\"factor\"];\n options.factor.angle = factor?.angle ?? defaultOptions.factor.angle;\n options.factor.length = factor?.length ?? defaultOptions.factor.length;\n options.seed = sourceOptions[\"seed\"];\n this.noiseGen.seed(options.seed ?? (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)());\n options.columns = Math.floor(options.width / options.size) + optionsSizeOffset;\n options.rows = Math.floor(options.height / options.size) + optionsSizeOffset;\n options.layers = Math.floor(container.zLayers / options.size) + optionsSizeOffset;\n this._initField();\n }\n _setup() {\n this.noiseW = 0;\n this._resetField();\n addEventListener(\"resize\", ()=>{\n this._resetField();\n });\n }\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../utils/noiseField/dist/browser/NoiseFieldGenerator.js?\n}");
36
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ NoiseFieldGenerator: () => (/* binding */ NoiseFieldGenerator)\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 _tsparticles_plugin_move__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\");\n\n\nconst originCoordinate = 0, firstIndex = 0, empty = 0, optionsSizeOffset = 1, transformDefaultValues = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: 0,\n f: 0\n}, defaultOptions = {\n draw: false,\n size: 20,\n increment: 0.004,\n columns: 0,\n rows: 0,\n layers: 0,\n width: 0,\n height: 0,\n factor: {\n angle: 0.02,\n length: 0.01\n },\n offset: {\n x: 40000,\n y: 40000,\n z: 40000\n }\n};\nclass NoiseFieldGenerator {\n container;\n field;\n noiseGen;\n noiseW;\n options;\n _res;\n constructor(container, noiseGen){\n this.container = container;\n this.noiseGen = noiseGen;\n this.field = [];\n this.noiseW = 0;\n this._res = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n this.options = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.deepExtend)({}, defaultOptions);\n }\n generate(particle) {\n const pos = particle.getPosition(), { size } = this.options, sizeFactor = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.identity / size, point = {\n x: Math.max(Math.floor(pos.x * sizeFactor), originCoordinate),\n y: Math.max(Math.floor(pos.y * sizeFactor), originCoordinate),\n z: Math.max(Math.floor(pos.z * sizeFactor), originCoordinate)\n }, { field } = this, fieldPoint = field[point.x]?.[point.y]?.[point.z];\n if (fieldPoint) {\n this._res.x = fieldPoint.x;\n this._res.y = fieldPoint.y;\n } else {\n this._res.x = 0;\n this._res.y = 0;\n }\n return this._res;\n }\n init() {\n this._setup();\n }\n reset() {}\n update() {\n this._calculateField();\n this.noiseW += this.options.increment;\n if (!this.options.draw) {\n return;\n }\n this.container.canvas.render.draw((ctx)=>{\n this._drawField(ctx);\n });\n }\n _calculateField() {\n const { field, noiseGen, options, noiseW } = this, lengthFactor = options.factor.length, angleFactor = options.factor.angle;\n for(let x = 0; x < options.columns; x++){\n const xColumn = field[x];\n if (!xColumn) {\n continue;\n }\n for(let y = 0; y < options.rows; y++){\n const yColumn = xColumn[y];\n if (!yColumn) {\n continue;\n }\n for(let z = 0; z < options.layers; z++){\n const cell = yColumn[z];\n if (!cell) {\n continue;\n }\n cell.length = noiseGen.noise4d(x * lengthFactor + options.offset.x, y * lengthFactor + options.offset.y, z * lengthFactor + options.offset.z, noiseW);\n cell.angle = noiseGen.noise4d(x * angleFactor, y * angleFactor, z * angleFactor, noiseW) * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.doublePI;\n }\n }\n }\n }\n _drawField(ctx) {\n const { field, options } = this;\n for(let x = 0; x < options.columns; x++){\n const xColumn = field[x];\n if (!xColumn) {\n continue;\n }\n for(let y = 0; y < options.rows; y++){\n const yColumn = xColumn[y];\n if (!yColumn) {\n continue;\n }\n const cell = yColumn[firstIndex];\n if (!cell) {\n continue;\n }\n const { angle, length } = cell;\n ctx.setTransform(transformDefaultValues.a, transformDefaultValues.b, transformDefaultValues.c, transformDefaultValues.d, x * this.options.size, y * this.options.size);\n ctx.rotate(angle);\n ctx.strokeStyle = \"white\";\n ctx.beginPath();\n ctx.moveTo(originCoordinate, originCoordinate);\n ctx.lineTo(originCoordinate, this.options.size * length);\n ctx.stroke();\n ctx.setTransform(transformDefaultValues.a, transformDefaultValues.b, transformDefaultValues.c, transformDefaultValues.d, transformDefaultValues.e, transformDefaultValues.f);\n }\n }\n }\n _initField() {\n const { columns, rows, layers } = this.options;\n this.field = new Array(columns);\n for(let x = 0; x < columns; x++){\n const newX = new Array(rows);\n for(let y = 0; y < rows; y++){\n const newY = new Array(layers);\n for(let z = 0; z < layers; z++){\n newY[z] = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n }\n newX[y] = newY;\n }\n this.field[x] = newX;\n }\n }\n _resetField() {\n const container = this.container, sourceOptions = container.actualOptions.particles.move.path.options, { options } = this;\n options.width = container.canvas.size.width;\n options.height = container.canvas.size.height;\n options.size = sourceOptions[\"size\"] > empty ? sourceOptions[\"size\"] : defaultOptions.size;\n options.increment = sourceOptions[\"increment\"] > empty ? sourceOptions[\"increment\"] : defaultOptions.increment;\n options.draw = !!sourceOptions[\"draw\"];\n const offset = sourceOptions[\"offset\"];\n options.offset.x = offset?.x ?? defaultOptions.offset.x;\n options.offset.y = offset?.y ?? defaultOptions.offset.y;\n options.offset.z = offset?.z ?? defaultOptions.offset.z;\n const factor = sourceOptions[\"factor\"];\n options.factor.angle = factor?.angle ?? defaultOptions.factor.angle;\n options.factor.length = factor?.length ?? defaultOptions.factor.length;\n options.seed = sourceOptions[\"seed\"];\n this.noiseGen.seed(options.seed ?? (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)());\n options.columns = Math.floor(options.width / options.size) + optionsSizeOffset;\n options.rows = Math.floor(options.height / options.size) + optionsSizeOffset;\n options.layers = Math.floor(container.zLayers / options.size) + optionsSizeOffset;\n this._initField();\n }\n _setup() {\n this.noiseW = 0;\n this._resetField();\n addEventListener(\"resize\", ()=>{\n this._resetField();\n });\n }\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../utils/noiseField/dist/browser/NoiseFieldGenerator.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-beta.1
7
+ * v4.0.0-beta.3
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 */ loadPerlinNoisePath: () => (/* binding */ loadPerlinNoisePath),\n/* harmony export */ perlinNoisePathName: () => (/* binding */ perlinNoisePathName)\n/* harmony export */ });\nconst perlinNoisePathName = \"perlinNoise\";\nasync function loadPerlinNoisePath(engine) {\n engine.checkVersion(\"4.0.0-beta.1\");\n await engine.pluginManager.register(async (e)=>{\n const { ensureBaseMoverLoaded } = await __webpack_require__.e(/*! import() */ \"plugins_move_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\"));\n ensureBaseMoverLoaded(e);\n e.pluginManager.addPathGenerator?.(perlinNoisePathName, async (container)=>{\n const { PerlinNoiseGenerator } = await __webpack_require__.e(/*! import() */ \"paths_perlinNoise_dist_browser_PerlinNoiseGenerator_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./PerlinNoiseGenerator.js */ \"../../paths/perlinNoise/dist/browser/PerlinNoiseGenerator.js\"));\n return new PerlinNoiseGenerator(container);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/perlinNoise/dist/browser/index.js?\n}");
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadPerlinNoisePath: () => (/* binding */ loadPerlinNoisePath),\n/* harmony export */ perlinNoisePathName: () => (/* binding */ perlinNoisePathName)\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 _tsparticles_plugin_move__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\");\n\n\nconst perlinNoisePathName = \"perlinNoise\";\nasync function loadPerlinNoisePath(engine) {\n engine.checkVersion(\"4.0.0-beta.3\");\n await engine.pluginManager.register(async (e)=>{\n const { ensureBaseMoverLoaded } = await Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\"));\n ensureBaseMoverLoaded(e);\n e.pluginManager.addPathGenerator?.(perlinNoisePathName, async (container)=>{\n const { PerlinNoiseGenerator } = await __webpack_require__.e(/*! import() */ \"paths_perlinNoise_dist_browser_PerlinNoiseGenerator_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./PerlinNoiseGenerator.js */ \"../../paths/perlinNoise/dist/browser/PerlinNoiseGenerator.js\"));\n return new PerlinNoiseGenerator(container);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/perlinNoise/dist/browser/index.js?\n}");
27
+
28
+ /***/ },
29
+
30
+ /***/ "../../plugins/move/dist/browser/index.js"
31
+ /*!************************************************!*\
32
+ !*** ../../plugins/move/dist/browser/index.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 */ ensureBaseMoverLoaded: () => (/* binding */ ensureBaseMoverLoaded),\n/* harmony export */ loadMovePlugin: () => (/* binding */ loadMovePlugin)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nasync function loadMovePlugin(engine) {\n engine.checkVersion(\"4.0.0-beta.3\");\n await engine.pluginManager.register(async (e)=>{\n const moveEngine = e, movePluginManager = moveEngine.pluginManager;\n movePluginManager.initializers.pathGenerators ??= new Map();\n movePluginManager.pathGenerators ??= new Map();\n movePluginManager.addPathGenerator = (name, generator)=>{\n movePluginManager.initializers.pathGenerators ??= new Map();\n movePluginManager.initializers.pathGenerators.set(name, generator);\n };\n movePluginManager.getPathGenerators = async (container, force = false)=>{\n movePluginManager.initializers.pathGenerators ??= new Map();\n movePluginManager.pathGenerators ??= new Map();\n return (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getItemMapFromInitializer)(container, movePluginManager.pathGenerators, movePluginManager.initializers.pathGenerators, force);\n };\n const { MovePlugin } = await __webpack_require__.e(/*! import() */ \"plugins_move_dist_browser_MovePlugin_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./MovePlugin.js */ \"../../plugins/move/dist/browser/MovePlugin.js\"));\n e.pluginManager.addPlugin(new MovePlugin(e.pluginManager));\n });\n}\nfunction ensureBaseMoverLoaded(e) {\n if (!e.pluginManager.addPathGenerator) {\n throw new Error(\"tsParticles Base Mover is not loaded\");\n }\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../plugins/move/dist/browser/index.js?\n}");
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
- * v4.0.0-beta.1
7
+ * v4.0.0-beta.3
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 */ PolygonPathGenerator: () => (/* binding */ PolygonPathGenerator)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nconst defaultOptions = {\n sides: 6,\n turnSteps: 20,\n angle: 30\n};\nclass PolygonPathGenerator {\n dirsList;\n options;\n _container;\n _res;\n constructor(container){\n this._container = container;\n this._res = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n this.dirsList = [];\n this.options = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.deepExtend)({}, defaultOptions);\n }\n generate(p) {\n const { sides, turnSteps } = this.options;\n p.hexStep ??= 0;\n p.hexDirection ??= sides === 6 ? ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * 3 | 0) * 2 : (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * sides | 0;\n p.hexSpeed ??= p.velocity.length;\n if (p.hexStep % turnSteps === 0) {\n p.hexDirection = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() > 0.5 ? (p.hexDirection + 1) % sides : (p.hexDirection + sides - 1) % sides;\n }\n p.velocity.x = 0;\n p.velocity.y = 0;\n p.hexStep++;\n const direction = this.dirsList[p.hexDirection];\n this._res.x = direction.x * p.hexSpeed;\n this._res.y = direction.y * p.hexSpeed;\n return this._res;\n }\n init() {\n const container = this._container, sourceOptions = container.actualOptions.particles.move.path.options;\n this.options.sides = sourceOptions[\"sides\"] > 0 ? sourceOptions[\"sides\"] : this.options.sides;\n this.options.angle = sourceOptions[\"angle\"] ?? this.options.angle;\n this.options.turnSteps = sourceOptions[\"turnSteps\"] >= 0 ? sourceOptions[\"turnSteps\"] : this.options.turnSteps;\n this._createDirs();\n }\n reset(particle) {\n delete particle.hexStep;\n delete particle.hexDirection;\n delete particle.hexSpeed;\n }\n update() {}\n _createDirs = ()=>{\n const { options } = this;\n this.dirsList = [];\n for(let i = 0; i < 360; i += 360 / options.sides){\n const angle = options.angle + i;\n this.dirsList.push(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.create(Math.cos(angle * Math.PI / 180), Math.sin(angle * Math.PI / 180)));\n }\n };\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/polygon/dist/browser/PolygonPathGenerator.js?\n}");
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PolygonPathGenerator: () => (/* binding */ PolygonPathGenerator)\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 _tsparticles_plugin_move__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\");\n\n\nconst defaultOptions = {\n sides: 6,\n turnSteps: 20,\n angle: 30\n};\nclass PolygonPathGenerator {\n dirsList;\n options;\n _container;\n _res;\n constructor(container){\n this._container = container;\n this._res = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n this.dirsList = [];\n this.options = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.deepExtend)({}, defaultOptions);\n }\n generate(p) {\n const { sides, turnSteps } = this.options;\n p.hexStep ??= 0;\n p.hexDirection ??= sides === 6 ? ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * 3 | 0) * 2 : (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * sides | 0;\n p.hexSpeed ??= p.velocity.length;\n if (p.hexStep % turnSteps === 0) {\n p.hexDirection = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() > 0.5 ? (p.hexDirection + 1) % sides : (p.hexDirection + sides - 1) % sides;\n }\n p.velocity.x = 0;\n p.velocity.y = 0;\n p.hexStep++;\n const direction = this.dirsList[p.hexDirection];\n this._res.x = direction.x * p.hexSpeed;\n this._res.y = direction.y * p.hexSpeed;\n return this._res;\n }\n init() {\n const container = this._container, sourceOptions = container.actualOptions.particles.move.path.options;\n this.options.sides = sourceOptions[\"sides\"] > 0 ? sourceOptions[\"sides\"] : this.options.sides;\n this.options.angle = sourceOptions[\"angle\"] ?? this.options.angle;\n this.options.turnSteps = sourceOptions[\"turnSteps\"] >= 0 ? sourceOptions[\"turnSteps\"] : this.options.turnSteps;\n this._createDirs();\n }\n reset(particle) {\n delete particle.hexStep;\n delete particle.hexDirection;\n delete particle.hexSpeed;\n }\n update() {}\n _createDirs = ()=>{\n const { options } = this;\n this.dirsList = [];\n for(let i = 0; i < 360; i += 360 / options.sides){\n const angle = options.angle + i;\n this.dirsList.push(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.create(Math.cos(angle * Math.PI / 180), Math.sin(angle * Math.PI / 180)));\n }\n };\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/polygon/dist/browser/PolygonPathGenerator.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-beta.1
7
+ * v4.0.0-beta.3
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 */ loadPolygonPath: () => (/* binding */ loadPolygonPath),\n/* harmony export */ polygonPathName: () => (/* binding */ polygonPathName)\n/* harmony export */ });\nconst polygonPathName = \"polygonPathGenerator\";\nasync function loadPolygonPath(engine) {\n engine.checkVersion(\"4.0.0-beta.1\");\n await engine.pluginManager.register(async (e)=>{\n const { ensureBaseMoverLoaded } = await __webpack_require__.e(/*! import() */ \"plugins_move_dist_browser_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\"));\n ensureBaseMoverLoaded(e);\n e.pluginManager.addPathGenerator?.(polygonPathName, async (container)=>{\n const { PolygonPathGenerator } = await __webpack_require__.e(/*! import() */ \"paths_polygon_dist_browser_PolygonPathGenerator_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./PolygonPathGenerator.js */ \"../../paths/polygon/dist/browser/PolygonPathGenerator.js\"));\n return new PolygonPathGenerator(container);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/polygon/dist/browser/index.js?\n}");
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadPolygonPath: () => (/* binding */ loadPolygonPath),\n/* harmony export */ polygonPathName: () => (/* binding */ polygonPathName)\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 _tsparticles_plugin_move__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\");\n\n\nconst polygonPathName = \"polygonPathGenerator\";\nasync function loadPolygonPath(engine) {\n engine.checkVersion(\"4.0.0-beta.3\");\n await engine.pluginManager.register(async (e)=>{\n const { ensureBaseMoverLoaded } = await Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\"));\n ensureBaseMoverLoaded(e);\n e.pluginManager.addPathGenerator?.(polygonPathName, async (container)=>{\n const { PolygonPathGenerator } = await __webpack_require__.e(/*! import() */ \"paths_polygon_dist_browser_PolygonPathGenerator_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./PolygonPathGenerator.js */ \"../../paths/polygon/dist/browser/PolygonPathGenerator.js\"));\n return new PolygonPathGenerator(container);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/polygon/dist/browser/index.js?\n}");
27
+
28
+ /***/ },
29
+
30
+ /***/ "../../plugins/move/dist/browser/index.js"
31
+ /*!************************************************!*\
32
+ !*** ../../plugins/move/dist/browser/index.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 */ ensureBaseMoverLoaded: () => (/* binding */ ensureBaseMoverLoaded),\n/* harmony export */ loadMovePlugin: () => (/* binding */ loadMovePlugin)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nasync function loadMovePlugin(engine) {\n engine.checkVersion(\"4.0.0-beta.3\");\n await engine.pluginManager.register(async (e)=>{\n const moveEngine = e, movePluginManager = moveEngine.pluginManager;\n movePluginManager.initializers.pathGenerators ??= new Map();\n movePluginManager.pathGenerators ??= new Map();\n movePluginManager.addPathGenerator = (name, generator)=>{\n movePluginManager.initializers.pathGenerators ??= new Map();\n movePluginManager.initializers.pathGenerators.set(name, generator);\n };\n movePluginManager.getPathGenerators = async (container, force = false)=>{\n movePluginManager.initializers.pathGenerators ??= new Map();\n movePluginManager.pathGenerators ??= new Map();\n return (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getItemMapFromInitializer)(container, movePluginManager.pathGenerators, movePluginManager.initializers.pathGenerators, force);\n };\n const { MovePlugin } = await __webpack_require__.e(/*! import() */ \"plugins_move_dist_browser_MovePlugin_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./MovePlugin.js */ \"../../plugins/move/dist/browser/MovePlugin.js\"));\n e.pluginManager.addPlugin(new MovePlugin(e.pluginManager));\n });\n}\nfunction ensureBaseMoverLoaded(e) {\n if (!e.pluginManager.addPathGenerator) {\n throw new Error(\"tsParticles Base Mover is not loaded\");\n }\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../plugins/move/dist/browser/index.js?\n}");
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
- * v4.0.0-beta.1
7
+ * v4.0.0-beta.3
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 */ RandomPathGenerator: () => (/* binding */ RandomPathGenerator)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nconst minRandom = -1, maxRandom = 1;\nclass RandomPathGenerator {\n _res;\n constructor(){\n this._res = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n }\n generate() {\n this._res.x = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandomInRange)(minRandom, maxRandom);\n this._res.y = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandomInRange)(minRandom, maxRandom);\n return this._res;\n }\n init() {}\n reset() {}\n update() {}\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/random/dist/browser/RandomPathGenerator.js?\n}");
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ RandomPathGenerator: () => (/* binding */ RandomPathGenerator)\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 _tsparticles_plugin_move__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tsparticles/plugin-move */ \"../../plugins/move/dist/browser/index.js\");\n\n\nconst minRandom = -1, maxRandom = 1;\nclass RandomPathGenerator {\n _res;\n constructor(){\n this._res = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n }\n generate() {\n this._res.x = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandomInRange)(minRandom, maxRandom);\n this._res.y = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandomInRange)(minRandom, maxRandom);\n return this._res;\n }\n init() {}\n reset() {}\n update() {}\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/random/dist/browser/RandomPathGenerator.js?\n}");
27
27
 
28
28
  /***/ }
29
29