@tsparticles/all 4.0.0-alpha.24 → 4.0.0-alpha.26

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 (773) hide show
  1. package/1032.min.js +1 -0
  2. package/1036.min.js +1 -0
  3. package/{6084.min.js → 1040.min.js} +1 -1
  4. package/1078.min.js +1 -0
  5. package/1118.min.js +1 -0
  6. package/1119.min.js +1 -0
  7. package/{5146.min.js → 1180.min.js} +1 -1
  8. package/1262.min.js +1 -0
  9. package/1266.min.js +1 -0
  10. package/1278.min.js +1 -0
  11. package/1324.min.js +1 -0
  12. package/1346.min.js +1 -0
  13. package/{2833.min.js → 1357.min.js} +1 -1
  14. package/1379.min.js +1 -0
  15. package/1386.min.js +1 -0
  16. package/1419.min.js +1 -0
  17. package/1423.min.js +1 -0
  18. package/1431.min.js +1 -0
  19. package/1449.min.js +1 -0
  20. package/{3990.min.js → 1586.min.js} +1 -1
  21. package/1587.min.js +1 -0
  22. package/162.min.js +1 -0
  23. package/1668.min.js +1 -0
  24. package/1681.min.js +1 -1
  25. package/1727.min.js +1 -0
  26. package/1730.min.js +1 -0
  27. package/1801.min.js +1 -1
  28. package/1951.min.js +1 -0
  29. package/1954.min.js +1 -0
  30. package/1966.min.js +1 -0
  31. package/1971.min.js +1 -0
  32. package/{3405.min.js → 2017.min.js} +1 -1
  33. package/2042.min.js +1 -0
  34. package/2051.min.js +1 -0
  35. package/{8174.min.js → 2057.min.js} +1 -1
  36. package/{7654.min.js → 2074.min.js} +1 -1
  37. package/{8925.min.js → 209.min.js} +2 -2
  38. package/{3295.min.js → 2091.min.js} +1 -1
  39. package/2132.min.js +1 -0
  40. package/2174.min.js +1 -0
  41. package/{8635.min.js → 2183.min.js} +1 -1
  42. package/2309.min.js +1 -0
  43. package/2338.min.js +1 -0
  44. package/2416.min.js +1 -0
  45. package/2461.min.js +1 -0
  46. package/2462.min.js +1 -0
  47. package/{4877.min.js → 2481.min.js} +1 -1
  48. package/2494.min.js +1 -0
  49. package/2598.min.js +1 -0
  50. package/2601.min.js +1 -0
  51. package/2619.min.js +1 -0
  52. package/2644.min.js +1 -0
  53. package/{1076.min.js → 2656.min.js} +1 -1
  54. package/2678.min.js +1 -0
  55. package/{8514.min.js → 2683.min.js} +1 -1
  56. package/2712.min.js +1 -0
  57. package/2714.min.js +1 -0
  58. package/2810.min.js +1 -0
  59. package/{3612.min.js → 2847.min.js} +1 -1
  60. package/2857.min.js +1 -1
  61. package/{7117.min.js → 2865.min.js} +1 -1
  62. package/2869.min.js +1 -0
  63. package/2926.min.js +1 -0
  64. package/{1532.min.js → 2928.min.js} +1 -1
  65. package/2959.min.js +1 -0
  66. package/296.min.js +1 -0
  67. package/3021.min.js +1 -0
  68. package/3025.min.js +1 -0
  69. package/3032.min.js +1 -0
  70. package/3056.min.js +1 -0
  71. package/{6204.min.js → 3066.min.js} +1 -1
  72. package/3101.min.js +1 -0
  73. package/316.min.js +1 -0
  74. package/3182.min.js +1 -0
  75. package/319.min.js +1 -1
  76. package/3225.min.js +1 -0
  77. package/{6576.min.js → 3236.min.js} +1 -1
  78. package/3286.min.js +1 -0
  79. package/3287.min.js +1 -0
  80. package/3326.min.js +1 -1
  81. package/3336.min.js +1 -0
  82. package/3344.min.js +1 -0
  83. package/{8478.min.js → 3354.min.js} +1 -1
  84. package/3356.min.js +1 -0
  85. package/3362.min.js +1 -0
  86. package/3380.min.js +1 -0
  87. package/{7672.min.js → 3399.min.js} +1 -1
  88. package/3424.min.js +1 -0
  89. package/3425.min.js +1 -0
  90. package/{6595.min.js → 3455.min.js} +1 -1
  91. package/3533.min.js +1 -0
  92. package/3538.min.js +2 -0
  93. package/{3111.min.js → 3539.min.js} +1 -1
  94. package/{5059.min.js → 3551.min.js} +1 -1
  95. package/{5333.min.js → 3574.min.js} +1 -1
  96. package/3584.min.js +1 -1
  97. package/3611.min.js +1 -1
  98. package/3722.min.js +1 -0
  99. package/{8286.min.js → 3727.min.js} +1 -1
  100. package/3872.min.js +1 -0
  101. package/3947.min.js +1 -0
  102. package/404.min.js +1 -0
  103. package/4054.min.js +1 -0
  104. package/4077.min.js +1 -0
  105. package/{2692.min.js → 4080.min.js} +1 -1
  106. package/411.min.js +1 -1
  107. package/4121.min.js +1 -0
  108. package/4159.min.js +1 -0
  109. package/4176.min.js +1 -0
  110. package/4214.min.js +1 -0
  111. package/{7740.min.js → 4216.min.js} +1 -1
  112. package/4359.min.js +1 -0
  113. package/4383.min.js +1 -0
  114. package/4384.min.js +1 -0
  115. package/4385.min.js +1 -0
  116. package/{363.min.js → 439.min.js} +1 -1
  117. package/{2275.min.js → 4399.min.js} +1 -1
  118. package/4441.min.js +1 -0
  119. package/4443.min.js +1 -0
  120. package/4472.min.js +1 -0
  121. package/4557.min.js +1 -0
  122. package/456.min.js +1 -0
  123. package/{7612.min.js → 4625.min.js} +1 -1
  124. package/{2753.min.js → 4677.min.js} +1 -1
  125. package/{8003.min.js → 4689.min.js} +1 -1
  126. package/47.min.js +1 -0
  127. package/{2355.min.js → 4756.min.js} +1 -1
  128. package/4837.min.js +1 -0
  129. package/{8816.min.js → 4860.min.js} +1 -1
  130. package/492.min.js +1 -0
  131. package/4927.min.js +1 -0
  132. package/{5679.min.js → 4935.min.js} +1 -1
  133. package/{3939.min.js → 5055.min.js} +1 -1
  134. package/5101.min.js +1 -0
  135. package/5111.min.js +1 -0
  136. package/{9591.min.js → 5123.min.js} +1 -1
  137. package/5124.min.js +1 -0
  138. package/{4412.min.js → 5127.min.js} +1 -1
  139. package/5145.min.js +1 -0
  140. package/5163.min.js +1 -0
  141. package/5204.min.js +1 -0
  142. package/5218.min.js +1 -0
  143. package/5256.min.js +1 -0
  144. package/5264.min.js +1 -0
  145. package/{1887.min.js → 5299.min.js} +2 -2
  146. package/{4476.min.js → 5336.min.js} +1 -1
  147. package/5349.min.js +1 -0
  148. package/552.min.js +1 -0
  149. package/5556.min.js +1 -0
  150. package/{8618.min.js → 5578.min.js} +2 -2
  151. package/5590.min.js +1 -0
  152. package/5608.min.js +1 -0
  153. package/5782.min.js +1 -0
  154. package/5817.min.js +2 -0
  155. package/{6729.min.js → 5822.min.js} +1 -1
  156. package/5852.min.js +1 -0
  157. package/5932.min.js +1 -0
  158. package/5950.min.js +1 -0
  159. package/6003.min.js +1 -0
  160. package/6004.min.js +1 -0
  161. package/6015.min.js +1 -0
  162. package/{2458.min.js → 6022.min.js} +1 -1
  163. package/6067.min.js +1 -0
  164. package/61.min.js +1 -0
  165. package/{2816.min.js → 6107.min.js} +1 -1
  166. package/6114.min.js +1 -0
  167. package/{7468.min.js → 6137.min.js} +1 -1
  168. package/{7828.min.js → 6176.min.js} +1 -1
  169. package/6303.min.js +1 -1
  170. package/632.min.js +1 -0
  171. package/6326.min.js +1 -0
  172. package/6328.min.js +1 -0
  173. package/6340.min.js +1 -0
  174. package/6344.min.js +1 -0
  175. package/6347.min.js +1 -0
  176. package/639.min.js +1 -0
  177. package/6447.min.js +1 -0
  178. package/645.min.js +1 -0
  179. package/6466.min.js +1 -0
  180. package/6484.min.js +1 -0
  181. package/649.min.js +1 -0
  182. package/651.min.js +1 -0
  183. package/6523.min.js +1 -0
  184. package/658.min.js +1 -0
  185. package/{5484.min.js → 6629.min.js} +1 -1
  186. package/6630.min.js +1 -0
  187. package/666.min.js +1 -0
  188. package/{1642.min.js → 6670.min.js} +1 -1
  189. package/{9907.min.js → 6719.min.js} +1 -1
  190. package/6747.min.js +1 -0
  191. package/6763.min.js +1 -0
  192. package/6835.min.js +1 -0
  193. package/686.min.js +1 -0
  194. package/{9049.min.js → 6861.min.js} +1 -1
  195. package/{4287.min.js → 6907.min.js} +1 -1
  196. package/{7147.min.js → 6921.min.js} +1 -1
  197. package/{5818.min.js → 6935.min.js} +1 -1
  198. package/6960.min.js +1 -0
  199. package/{6129.min.js → 7034.min.js} +1 -1
  200. package/704.min.js +1 -0
  201. package/7042.min.js +1 -0
  202. package/{2218.min.js → 7126.min.js} +1 -1
  203. package/{9031.min.js → 7171.min.js} +1 -1
  204. package/7213.min.js +1 -0
  205. package/7217.min.js +1 -0
  206. package/7245.min.js +1 -0
  207. package/7249.min.js +1 -0
  208. package/728.min.js +1 -0
  209. package/{9126.min.js → 7305.min.js} +1 -1
  210. package/7411.min.js +1 -0
  211. package/7417.min.js +1 -0
  212. package/7423.min.js +1 -0
  213. package/7458.min.js +1 -0
  214. package/7466.min.js +1 -0
  215. package/7473.min.js +1 -0
  216. package/{4274.min.js → 7481.min.js} +1 -1
  217. package/{1995.min.js → 7631.min.js} +1 -1
  218. package/7643.min.js +1 -0
  219. package/7645.min.js +1 -0
  220. package/7662.min.js +1 -0
  221. package/7665.min.js +1 -0
  222. package/{5920.min.js → 7676.min.js} +1 -1
  223. package/7812.min.js +1 -0
  224. package/7839.min.js +1 -0
  225. package/7907.min.js +1 -0
  226. package/7934.min.js +1 -0
  227. package/7962.min.js +1 -0
  228. package/8081.min.js +1 -0
  229. package/8084.min.js +1 -0
  230. package/811.min.js +1 -0
  231. package/8137.min.js +1 -0
  232. package/8238.min.js +1 -0
  233. package/{4227.min.js → 8255.min.js} +1 -1
  234. package/8258.min.js +1 -0
  235. package/8323.min.js +1 -0
  236. package/8369.min.js +1 -0
  237. package/8379.min.js +1 -0
  238. package/8404.min.js +1 -1
  239. package/8405.min.js +1 -0
  240. package/{6951.min.js → 8409.min.js} +1 -1
  241. package/8486.min.js +1 -0
  242. package/8517.min.js +1 -0
  243. package/{1166.min.js → 8556.min.js} +2 -2
  244. package/8586.min.js +1 -0
  245. package/8692.min.js +1 -0
  246. package/870.min.js +1 -0
  247. package/{6124.min.js → 8728.min.js} +1 -1
  248. package/8800.min.js +1 -0
  249. package/8842.min.js +1 -0
  250. package/8864.min.js +1 -0
  251. package/8879.min.js +1 -0
  252. package/8917.min.js +1 -0
  253. package/8946.min.js +1 -0
  254. package/9023.min.js +1 -0
  255. package/{2516.min.js → 9040.min.js} +1 -1
  256. package/9066.min.js +1 -0
  257. package/9076.min.js +1 -0
  258. package/9163.min.js +1 -0
  259. package/{3691.min.js → 9181.min.js} +1 -1
  260. package/9184.min.js +1 -0
  261. package/9187.min.js +1 -0
  262. package/9204.min.js +1 -0
  263. package/9283.min.js +1 -0
  264. package/9292.min.js +1 -0
  265. package/9337.min.js +1 -0
  266. package/9386.min.js +1 -0
  267. package/9395.min.js +1 -0
  268. package/{9565.min.js → 9484.min.js} +1 -1
  269. package/9558.min.js +1 -0
  270. package/9661.min.js +1 -0
  271. package/9717.min.js +1 -0
  272. package/9743.min.js +1 -0
  273. package/975.min.js +1 -0
  274. package/9754.min.js +1 -0
  275. package/9763.min.js +1 -0
  276. package/9801.min.js +1 -0
  277. package/{2521.min.js → 9829.min.js} +1 -1
  278. package/{5759.min.js → 9855.min.js} +1 -1
  279. package/9862.min.js +1 -0
  280. package/{2404.min.js → 9936.min.js} +1 -1
  281. package/995.min.js +1 -0
  282. package/basic_dist_browser_index_js.js +2 -2
  283. package/browser/index.js +1 -1
  284. package/cjs/index.js +1 -1
  285. package/effects_bubble_dist_browser_BubbleDrawer_js.js +1 -1
  286. package/effects_bubble_dist_browser_index_js.js +2 -2
  287. package/effects_particles_dist_browser_ParticlesDrawer_js.js +1 -1
  288. package/effects_particles_dist_browser_index_js.js +2 -2
  289. package/effects_shadow_dist_browser_ShadowDrawer_js.js +1 -1
  290. package/effects_shadow_dist_browser_index_js.js +2 -2
  291. package/effects_trail_dist_browser_TrailDrawer_js.js +1 -1
  292. package/effects_trail_dist_browser_index_js.js +2 -2
  293. package/engine_dist_browser_Core_Container_js.js +8 -8
  294. package/esm/index.js +1 -1
  295. package/full_dist_browser_index_js.js +2 -2
  296. package/interactions_external_attract_dist_browser_Attractor_js.js +4 -4
  297. package/interactions_external_attract_dist_browser_index_js.js +2 -2
  298. package/interactions_external_bounce_dist_browser_Bouncer_js.js +4 -4
  299. package/interactions_external_bounce_dist_browser_index_js.js +2 -2
  300. package/interactions_external_bubble_dist_browser_Bubbler_js.js +3 -3
  301. package/interactions_external_bubble_dist_browser_index_js.js +2 -2
  302. package/interactions_external_connect_dist_browser_Connector_js.js +3 -3
  303. package/interactions_external_connect_dist_browser_index_js.js +2 -2
  304. package/interactions_external_grab_dist_browser_Grabber_js.js +3 -3
  305. package/interactions_external_grab_dist_browser_index_js.js +2 -2
  306. package/interactions_external_parallax_dist_browser_Parallaxer_js.js +3 -3
  307. package/interactions_external_parallax_dist_browser_index_js.js +2 -2
  308. package/interactions_external_particle_dist_browser_InteractivityParticleMaker_js.js +3 -3
  309. package/interactions_external_particle_dist_browser_index_js.js +2 -2
  310. package/interactions_external_pause_dist_browser_Pauser_js.js +3 -3
  311. package/interactions_external_pause_dist_browser_index_js.js +2 -2
  312. package/interactions_external_pop_dist_browser_Popper_js.js +3 -3
  313. package/interactions_external_pop_dist_browser_index_js.js +2 -2
  314. package/interactions_external_push_dist_browser_Pusher_js.js +3 -3
  315. package/interactions_external_push_dist_browser_index_js.js +2 -2
  316. package/interactions_external_remove_dist_browser_Remover_js.js +3 -3
  317. package/interactions_external_remove_dist_browser_index_js.js +2 -2
  318. package/interactions_external_repulse_dist_browser_Repulser_js.js +3 -3
  319. package/interactions_external_repulse_dist_browser_index_js.js +2 -2
  320. package/interactions_external_slow_dist_browser_Slower_js.js +3 -3
  321. package/interactions_external_slow_dist_browser_index_js.js +2 -2
  322. package/interactions_external_trail_dist_browser_TrailMaker_js.js +3 -3
  323. package/interactions_external_trail_dist_browser_index_js.js +33 -3
  324. package/interactions_light_dist_browser_ExternalLighter_js.js +3 -3
  325. package/interactions_light_dist_browser_ParticlesLighter_js.js +3 -3
  326. package/interactions_light_dist_browser_index_js.js +2 -2
  327. package/interactions_particles_attract_dist_browser_Attractor_js.js +13 -3
  328. package/interactions_particles_attract_dist_browser_index_js.js +2 -2
  329. package/interactions_particles_collisions_dist_browser_Collider_js.js +5 -5
  330. package/interactions_particles_collisions_dist_browser_OverlapPluginInstance_js.js +1 -1
  331. package/interactions_particles_collisions_dist_browser_OverlapPlugin_js.js +1 -1
  332. package/interactions_particles_collisions_dist_browser_index_js.js +2 -2
  333. package/interactions_particles_links_dist_browser_LinkInstance_js.js +3 -3
  334. package/interactions_particles_links_dist_browser_Linker_js.js +3 -3
  335. package/interactions_particles_links_dist_browser_LinksPlugin_js.js +1 -1
  336. package/interactions_particles_links_dist_browser_index_js.js +2 -2
  337. package/interactions_particles_repulse_dist_browser_Repulser_js.js +3 -3
  338. package/interactions_particles_repulse_dist_browser_index_js.js +2 -2
  339. package/package.json +75 -75
  340. package/paths_branches_dist_browser_BranchesPathGenerator_js.js +2 -2
  341. package/paths_branches_dist_browser_index_js.js +2 -2
  342. package/paths_brownian_dist_browser_BrownianPathGenerator_js.js +2 -2
  343. package/paths_brownian_dist_browser_index_js.js +2 -2
  344. package/paths_curlNoise_dist_browser_CurlNoiseGenerator_js.js +2 -2
  345. package/paths_curlNoise_dist_browser_index_js.js +2 -2
  346. package/paths_curves_dist_browser_CurvesPathGenerator_js.js +1 -1
  347. package/paths_curves_dist_browser_index_js.js +2 -2
  348. package/paths_fractalNoise_dist_browser_FractalNoiseGenerator_js.js +2 -2
  349. package/paths_fractalNoise_dist_browser_index_js.js +2 -2
  350. package/paths_grid_dist_browser_GridPathGenerator_js.js +2 -2
  351. package/paths_grid_dist_browser_index_js.js +2 -2
  352. package/paths_levy_dist_browser_LevyPathGenerator_js.js +2 -2
  353. package/paths_levy_dist_browser_index_js.js +2 -2
  354. package/paths_perlinNoise_dist_browser_PerlinNoiseGenerator_js.js +2 -2
  355. package/paths_perlinNoise_dist_browser_index_js.js +2 -2
  356. package/paths_polygon_dist_browser_PolygonPathGenerator_js.js +2 -2
  357. package/paths_polygon_dist_browser_index_js.js +2 -2
  358. package/paths_random_dist_browser_RandomPathGenerator_js.js +2 -2
  359. package/paths_random_dist_browser_index_js.js +2 -2
  360. package/paths_simplexNoise_dist_browser_SimplexNoiseGenerator_js.js +2 -2
  361. package/paths_simplexNoise_dist_browser_index_js.js +2 -2
  362. package/paths_spiral_dist_browser_SpiralPathGenerator_js.js +2 -2
  363. package/paths_spiral_dist_browser_index_js.js +2 -2
  364. package/paths_svg_dist_browser_SVGPathGenerator_js.js +2 -2
  365. package/paths_svg_dist_browser_index_js.js +2 -2
  366. package/paths_zigzag_dist_browser_ZigZagPathGenerator_js.js +2 -2
  367. package/paths_zigzag_dist_browser_index_js.js +2 -2
  368. package/plugins_absorbers_dist_browser_AbsorberInstance_js.js +1 -1
  369. package/plugins_absorbers_dist_browser_AbsorbersInstancesManager_js.js +1 -1
  370. package/plugins_absorbers_dist_browser_AbsorbersInteractor_js.js +3 -3
  371. package/plugins_absorbers_dist_browser_AbsorbersPluginInstance_js.js +1 -1
  372. package/plugins_absorbers_dist_browser_AbsorbersPlugin_js.js +1 -1
  373. package/plugins_absorbers_dist_browser_index_js.js +2 -2
  374. package/plugins_backgroundMask_dist_browser_BackgroundMaskPluginInstance_js.js +1 -1
  375. package/plugins_backgroundMask_dist_browser_BackgroundMaskPlugin_js.js +1 -1
  376. package/plugins_backgroundMask_dist_browser_index_js.js +2 -2
  377. package/plugins_blend_dist_browser_BlendPluginInstance_js.js +1 -1
  378. package/plugins_blend_dist_browser_BlendPlugin_js.js +1 -1
  379. package/plugins_blend_dist_browser_index_js.js +2 -2
  380. package/plugins_canvasMask_dist_browser_CanvasMaskPluginInstance_js.js +1 -1
  381. package/plugins_canvasMask_dist_browser_CanvasMaskPlugin_js.js +1 -1
  382. package/plugins_canvasMask_dist_browser_index_js.js +2 -2
  383. package/plugins_colors_hex_dist_browser_HexColorManager_js.js +1 -1
  384. package/plugins_colors_hex_dist_browser_index_js.js +2 -2
  385. package/plugins_colors_hsl_dist_browser_HslColorManager_js.js +1 -1
  386. package/plugins_colors_hsl_dist_browser_index_js.js +2 -2
  387. package/plugins_colors_hsv_dist_browser_HsvColorManager_js.js +1 -1
  388. package/plugins_colors_hsv_dist_browser_index_js.js +2 -2
  389. package/plugins_colors_hwb_dist_browser_HwbColorManager_js.js +1 -1
  390. package/plugins_colors_hwb_dist_browser_index_js.js +2 -2
  391. package/plugins_colors_lab_dist_browser_LabColorManager_js.js +1 -1
  392. package/plugins_colors_lab_dist_browser_index_js.js +2 -2
  393. package/plugins_colors_lch_dist_browser_LchColorManager_js.js +1 -1
  394. package/plugins_colors_lch_dist_browser_index_js.js +2 -2
  395. package/plugins_colors_named_dist_browser_NamedColorManager_js.js +1 -1
  396. package/plugins_colors_named_dist_browser_index_js.js +2 -2
  397. package/plugins_colors_oklab_dist_browser_OklabColorManager_js.js +1 -1
  398. package/plugins_colors_oklab_dist_browser_index_js.js +2 -2
  399. package/plugins_colors_oklch_dist_browser_OklchColorManager_js.js +1 -1
  400. package/plugins_colors_oklch_dist_browser_index_js.js +2 -2
  401. package/plugins_colors_rgb_dist_browser_RgbColorManager_js.js +1 -1
  402. package/plugins_colors_rgb_dist_browser_index_js.js +2 -2
  403. package/plugins_easings_back_dist_browser_easingsFunctions_js.js +1 -1
  404. package/plugins_easings_back_dist_browser_index_js.js +2 -2
  405. package/plugins_easings_bounce_dist_browser_easingsFunctions_js.js +1 -1
  406. package/plugins_easings_bounce_dist_browser_index_js.js +2 -2
  407. package/plugins_easings_circ_dist_browser_easingsFunctions_js.js +1 -1
  408. package/plugins_easings_circ_dist_browser_index_js.js +2 -2
  409. package/plugins_easings_cubic_dist_browser_easingsFunctions_js.js +1 -1
  410. package/plugins_easings_cubic_dist_browser_index_js.js +2 -2
  411. package/plugins_easings_elastic_dist_browser_easingsFunctions_js.js +1 -1
  412. package/plugins_easings_elastic_dist_browser_index_js.js +2 -2
  413. package/plugins_easings_expo_dist_browser_easingsFunctions_js.js +1 -1
  414. package/plugins_easings_expo_dist_browser_index_js.js +2 -2
  415. package/plugins_easings_gaussian_dist_browser_easingsFunctions_js.js +1 -1
  416. package/plugins_easings_gaussian_dist_browser_index_js.js +2 -2
  417. package/plugins_easings_linear_dist_browser_easingsFunctions_js.js +1 -1
  418. package/plugins_easings_linear_dist_browser_index_js.js +2 -2
  419. package/plugins_easings_quad_dist_browser_easingsFunctions_js.js +1 -1
  420. package/plugins_easings_quad_dist_browser_index_js.js +2 -2
  421. package/plugins_easings_quart_dist_browser_easingsFunctions_js.js +1 -1
  422. package/plugins_easings_quart_dist_browser_index_js.js +2 -2
  423. package/plugins_easings_quint_dist_browser_easingsFunctions_js.js +1 -1
  424. package/plugins_easings_quint_dist_browser_index_js.js +2 -2
  425. package/plugins_easings_sigmoid_dist_browser_easingsFunctions_js.js +1 -1
  426. package/plugins_easings_sigmoid_dist_browser_index_js.js +2 -2
  427. package/plugins_easings_sine_dist_browser_easingsFunctions_js.js +1 -1
  428. package/plugins_easings_sine_dist_browser_index_js.js +2 -2
  429. package/plugins_easings_smoothstep_dist_browser_easingsFunctions_js.js +1 -1
  430. package/plugins_easings_smoothstep_dist_browser_index_js.js +2 -2
  431. package/plugins_emittersShapes_canvas_dist_browser_EmittersCanvasShapeGenerator_js.js +2 -2
  432. package/plugins_emittersShapes_canvas_dist_browser_index_js.js +2 -2
  433. package/plugins_emittersShapes_circle_dist_browser_EmittersCircleShapeGenerator_js.js +2 -2
  434. package/plugins_emittersShapes_circle_dist_browser_index_js.js +2 -2
  435. package/plugins_emittersShapes_path_dist_browser_EmittersPathShapeGenerator_js.js +2 -2
  436. package/plugins_emittersShapes_path_dist_browser_index_js.js +2 -2
  437. package/plugins_emittersShapes_polygon_dist_browser_EmittersPolygonShapeGenerator_js.js +2 -2
  438. package/plugins_emittersShapes_polygon_dist_browser_index_js.js +2 -2
  439. package/plugins_emittersShapes_square_dist_browser_EmittersSquareShapeGenerator_js.js +2 -2
  440. package/plugins_emittersShapes_square_dist_browser_index_js.js +2 -2
  441. package/plugins_emitters_dist_browser_EmitterInstance_js.js +1 -1
  442. package/plugins_emitters_dist_browser_EmittersInstancesManager_js.js +1 -1
  443. package/plugins_emitters_dist_browser_EmittersInteractor_js.js +3 -3
  444. package/plugins_emitters_dist_browser_EmittersPluginInstance_js.js +1 -1
  445. package/plugins_emitters_dist_browser_EmittersPlugin_js.js +1 -1
  446. package/plugins_emitters_dist_browser_ShapeManager_js.js +1 -1
  447. package/plugins_emitters_dist_browser_index_js.js +2 -2
  448. package/plugins_exports_image_dist_browser_ExportImagePluginInstance_js.js +1 -1
  449. package/plugins_exports_image_dist_browser_ExportImagePlugin_js.js +1 -1
  450. package/plugins_exports_image_dist_browser_index_js.js +2 -2
  451. package/plugins_exports_json_dist_browser_ExportJSONPluginInstance_js.js +1 -1
  452. package/plugins_exports_json_dist_browser_ExportJSONPlugin_js.js +1 -1
  453. package/plugins_exports_json_dist_browser_index_js.js +2 -2
  454. package/plugins_exports_video_dist_browser_ExportVideoPluginInstance_js.js +1 -1
  455. package/plugins_exports_video_dist_browser_ExportVideoPlugin_js.js +1 -1
  456. package/plugins_exports_video_dist_browser_index_js.js +2 -2
  457. package/plugins_infection_dist_browser_InfectionPluginInstance_js.js +1 -1
  458. package/plugins_infection_dist_browser_InfectionPlugin_js.js +1 -1
  459. package/plugins_infection_dist_browser_ParticlesInfecter_js.js +3 -3
  460. package/plugins_infection_dist_browser_index_js.js +2 -2
  461. package/plugins_interactivity_dist_browser_InteractivityPluginInstance_js.js +3 -3
  462. package/plugins_interactivity_dist_browser_InteractivityPlugin_js.js +1 -1
  463. package/plugins_interactivity_dist_browser_index_js.js +2 -2
  464. package/plugins_manualParticles_dist_browser_ManualParticlesPluginInstance_js.js +1 -1
  465. package/plugins_manualParticles_dist_browser_ManualParticlesPlugin_js.js +1 -1
  466. package/plugins_manualParticles_dist_browser_index_js.js +2 -2
  467. package/plugins_motion_dist_browser_MotionPluginInstance_js.js +1 -1
  468. package/plugins_motion_dist_browser_MotionPlugin_js.js +1 -1
  469. package/plugins_motion_dist_browser_index_js.js +2 -2
  470. package/plugins_move_dist_browser_MovePluginInstance_js.js +40 -0
  471. package/{move_base_dist_browser_index_js.js → plugins_move_dist_browser_MovePlugin_js.js} +7 -7
  472. package/plugins_move_dist_browser_index_js.js +30 -0
  473. package/plugins_poisson_dist_browser_PoissonDiscPluginInstance_js.js +2 -12
  474. package/plugins_poisson_dist_browser_PoissonDiscPlugin_js.js +1 -1
  475. package/plugins_poisson_dist_browser_PoissonDisc_js.js +30 -0
  476. package/plugins_poisson_dist_browser_index_js.js +2 -2
  477. package/plugins_polygonMask_dist_browser_PolygonMaskInstance_js.js +1 -1
  478. package/plugins_polygonMask_dist_browser_PolygonMaskPlugin_js.js +1 -1
  479. package/plugins_polygonMask_dist_browser_index_js.js +2 -2
  480. package/plugins_responsive_dist_browser_ResponsivePluginInstance_js.js +1 -1
  481. package/plugins_responsive_dist_browser_ResponsivePlugin_js.js +1 -1
  482. package/plugins_responsive_dist_browser_index_js.js +2 -2
  483. package/plugins_sounds_dist_browser_SoundsPluginInstance_js.js +1 -1
  484. package/plugins_sounds_dist_browser_SoundsPlugin_js.js +1 -1
  485. package/plugins_sounds_dist_browser_index_js.js +2 -2
  486. package/plugins_themes_dist_browser_ThemesPluginInstance_js.js +2 -2
  487. package/plugins_themes_dist_browser_ThemesPlugin_js.js +1 -1
  488. package/plugins_themes_dist_browser_index_js.js +2 -2
  489. package/plugins_trail_dist_browser_TrailPluginInstance_js.js +1 -1
  490. package/plugins_trail_dist_browser_TrailPlugin_js.js +1 -1
  491. package/plugins_trail_dist_browser_index_js.js +2 -2
  492. package/plugins_zoom_dist_browser_ZoomPluginInstance_js.js +1 -1
  493. package/plugins_zoom_dist_browser_ZoomPlugin_js.js +1 -1
  494. package/plugins_zoom_dist_browser_index_js.js +2 -2
  495. package/report.html +1 -1
  496. package/shapes_arrow_dist_browser_ArrowDrawer_js.js +1 -1
  497. package/shapes_arrow_dist_browser_index_js.js +2 -2
  498. package/shapes_cards_dist_browser_cards_CardDrawer_js.js +1 -1
  499. package/shapes_cards_dist_browser_clubs_ClubDrawer_js.js +1 -1
  500. package/shapes_cards_dist_browser_diamonds_DiamondDrawer_js.js +1 -1
  501. package/shapes_cards_dist_browser_hearts_HeartDrawer_js.js +1 -1
  502. package/shapes_cards_dist_browser_index_js.js +7 -7
  503. package/shapes_cards_dist_browser_paths_js.js +1 -1
  504. package/shapes_cards_dist_browser_spades_SpadeDrawer_js.js +1 -1
  505. package/shapes_circle_dist_browser_CircleDrawer_js.js +1 -1
  506. package/shapes_circle_dist_browser_index_js.js +2 -2
  507. package/shapes_cog_dist_browser_CogDrawer_js.js +1 -1
  508. package/shapes_cog_dist_browser_index_js.js +2 -2
  509. package/shapes_emoji_dist_browser_EmojiDrawer_js.js +1 -1
  510. package/shapes_emoji_dist_browser_index_js.js +2 -2
  511. package/shapes_heart_dist_browser_HeartDrawer_js.js +1 -1
  512. package/shapes_heart_dist_browser_index_js.js +2 -2
  513. package/shapes_image_dist_browser_GifUtils_Utils_js.js +1 -1
  514. package/shapes_image_dist_browser_ImageDrawer_js.js +1 -1
  515. package/shapes_image_dist_browser_ImagePreloaderInstance_js.js +1 -1
  516. package/shapes_image_dist_browser_ImagePreloader_js.js +1 -1
  517. package/shapes_image_dist_browser_index_js.js +2 -2
  518. package/shapes_infinity_dist_browser_InfinityDrawer_js.js +1 -1
  519. package/shapes_infinity_dist_browser_index_js.js +2 -2
  520. package/shapes_line_dist_browser_LineDrawer_js.js +1 -1
  521. package/shapes_line_dist_browser_index_js.js +2 -2
  522. package/shapes_path_dist_browser_PathDrawer_js.js +1 -1
  523. package/shapes_path_dist_browser_index_js.js +2 -2
  524. package/shapes_polygon_dist_browser_PolygonDrawer_js.js +1 -1
  525. package/shapes_polygon_dist_browser_TriangleDrawer_js.js +2 -2
  526. package/shapes_polygon_dist_browser_index_js.js +2 -2
  527. package/shapes_rounded-polygon_dist_browser_RoundedPolygonDrawer_js.js +1 -1
  528. package/shapes_rounded-polygon_dist_browser_index_js.js +2 -2
  529. package/shapes_rounded-rect_dist_browser_RoundedRectDrawer_js.js +2 -2
  530. package/shapes_rounded-rect_dist_browser_index_js.js +2 -2
  531. package/shapes_spiral_dist_browser_SpiralDrawer_js.js +1 -1
  532. package/shapes_spiral_dist_browser_index_js.js +2 -2
  533. package/shapes_square_dist_browser_SquareDrawer_js.js +2 -2
  534. package/shapes_square_dist_browser_index_js.js +2 -2
  535. package/shapes_star_dist_browser_StarDrawer_js.js +1 -1
  536. package/shapes_star_dist_browser_index_js.js +2 -2
  537. package/shapes_text_dist_browser_TextDrawer_js.js +1 -1
  538. package/shapes_text_dist_browser_index_js.js +2 -2
  539. package/slim_dist_browser_index_js.js +2 -2
  540. package/tsparticles.all.bundle.js +13 -33
  541. package/tsparticles.all.bundle.min.js +2 -2
  542. package/tsparticles.all.js +2 -2
  543. package/tsparticles.all.min.js +1 -1
  544. package/umd/index.js +1 -1
  545. package/updaters_color_dist_browser_ColorUpdater_js.js +1 -1
  546. package/updaters_color_dist_browser_index_js.js +2 -2
  547. package/updaters_destroy_dist_browser_DestroyUpdater_js.js +3 -3
  548. package/updaters_destroy_dist_browser_index_js.js +2 -2
  549. package/updaters_gradient_dist_browser_GradientUpdater_js.js +1 -1
  550. package/updaters_gradient_dist_browser_index_js.js +2 -2
  551. package/updaters_life_dist_browser_LifeUpdater_js.js +1 -1
  552. package/updaters_life_dist_browser_index_js.js +2 -2
  553. package/updaters_opacity_dist_browser_OpacityUpdater_js.js +1 -1
  554. package/updaters_opacity_dist_browser_index_js.js +2 -2
  555. package/updaters_orbit_dist_browser_OrbitUpdater_js.js +1 -1
  556. package/updaters_orbit_dist_browser_index_js.js +2 -2
  557. package/updaters_outModes_dist_browser_OutOfCanvasUpdater_js.js +4 -4
  558. package/updaters_outModes_dist_browser_index_js.js +2 -2
  559. package/updaters_roll_dist_browser_RollUpdater_js.js +1 -1
  560. package/updaters_roll_dist_browser_index_js.js +2 -2
  561. package/updaters_rotate_dist_browser_RotateUpdater_js.js +1 -1
  562. package/updaters_rotate_dist_browser_index_js.js +2 -2
  563. package/updaters_size_dist_browser_SizeUpdater_js.js +1 -1
  564. package/updaters_size_dist_browser_index_js.js +2 -2
  565. package/updaters_strokeColor_dist_browser_StrokeColorUpdater_js.js +1 -1
  566. package/updaters_strokeColor_dist_browser_index_js.js +2 -2
  567. package/updaters_tilt_dist_browser_TiltUpdater_js.js +1 -1
  568. package/updaters_tilt_dist_browser_index_js.js +2 -2
  569. package/updaters_twinkle_dist_browser_TwinkleUpdater_js.js +1 -1
  570. package/updaters_twinkle_dist_browser_index_js.js +2 -2
  571. package/updaters_wobble_dist_browser_WobbleUpdater_js.js +1 -1
  572. package/updaters_wobble_dist_browser_index_js.js +2 -2
  573. package/utils_simplexNoise_dist_browser_index_js.js +1 -1
  574. package/102.min.js +0 -1
  575. package/1042.min.js +0 -1
  576. package/1134.min.js +0 -1
  577. package/131.min.js +0 -1
  578. package/1311.min.js +0 -1
  579. package/1325.min.js +0 -1
  580. package/1394.min.js +0 -1
  581. package/1416.min.js +0 -1
  582. package/1504.min.js +0 -1
  583. package/1554.min.js +0 -1
  584. package/1575.min.js +0 -1
  585. package/1678.min.js +0 -1
  586. package/1746.min.js +0 -1
  587. package/1788.min.js +0 -1
  588. package/195.min.js +0 -1
  589. package/1980.min.js +0 -1
  590. package/202.min.js +0 -1
  591. package/2028.min.js +0 -1
  592. package/2106.min.js +0 -1
  593. package/2129.min.js +0 -1
  594. package/223.min.js +0 -1
  595. package/2268.min.js +0 -1
  596. package/2298.min.js +0 -1
  597. package/2384.min.js +0 -1
  598. package/2402.min.js +0 -1
  599. package/2442.min.js +0 -1
  600. package/2447.min.js +0 -1
  601. package/2559.min.js +0 -1
  602. package/2740.min.js +0 -1
  603. package/2823.min.js +0 -1
  604. package/2895.min.js +0 -1
  605. package/2943.min.js +0 -1
  606. package/3071.min.js +0 -1
  607. package/3139.min.js +0 -1
  608. package/3166.min.js +0 -1
  609. package/3195.min.js +0 -1
  610. package/3206.min.js +0 -1
  611. package/3216.min.js +0 -1
  612. package/3277.min.js +0 -1
  613. package/3281.min.js +0 -1
  614. package/3283.min.js +0 -1
  615. package/334.min.js +0 -1
  616. package/3415.min.js +0 -1
  617. package/3422.min.js +0 -1
  618. package/3435.min.js +0 -1
  619. package/3440.min.js +0 -1
  620. package/3484.min.js +0 -1
  621. package/356.min.js +0 -1
  622. package/3561.min.js +0 -1
  623. package/3566.min.js +0 -1
  624. package/3576.min.js +0 -1
  625. package/3607.min.js +0 -1
  626. package/3669.min.js +0 -1
  627. package/3746.min.js +0 -1
  628. package/3775.min.js +0 -1
  629. package/3799.min.js +0 -1
  630. package/3891.min.js +0 -1
  631. package/3923.min.js +0 -1
  632. package/3933.min.js +0 -1
  633. package/3956.min.js +0 -1
  634. package/3960.min.js +0 -1
  635. package/398.min.js +0 -1
  636. package/4060.min.js +0 -1
  637. package/427.min.js +0 -1
  638. package/4298.min.js +0 -1
  639. package/4349.min.js +0 -1
  640. package/435.min.js +0 -1
  641. package/4362.min.js +0 -1
  642. package/4377.min.js +0 -1
  643. package/4449.min.js +0 -1
  644. package/4467.min.js +0 -1
  645. package/4512.min.js +0 -1
  646. package/4543.min.js +0 -1
  647. package/4662.min.js +0 -1
  648. package/4665.min.js +0 -1
  649. package/4775.min.js +0 -1
  650. package/4828.min.js +0 -1
  651. package/4853.min.js +0 -1
  652. package/4894.min.js +0 -1
  653. package/4912.min.js +0 -1
  654. package/4923.min.js +0 -1
  655. package/4960.min.js +0 -1
  656. package/4987.min.js +0 -1
  657. package/5022.min.js +0 -1
  658. package/5025.min.js +0 -2
  659. package/5030.min.js +0 -1
  660. package/5081.min.js +0 -1
  661. package/5093.min.js +0 -1
  662. package/5143.min.js +0 -1
  663. package/522.min.js +0 -1
  664. package/5272.min.js +0 -1
  665. package/5280.min.js +0 -1
  666. package/5291.min.js +0 -1
  667. package/5301.min.js +0 -1
  668. package/5321.min.js +0 -1
  669. package/5380.min.js +0 -1
  670. package/5523.min.js +0 -1
  671. package/5584.min.js +0 -1
  672. package/5597.min.js +0 -1
  673. package/5657.min.js +0 -1
  674. package/5688.min.js +0 -1
  675. package/5748.min.js +0 -1
  676. package/578.min.js +0 -1
  677. package/581.min.js +0 -1
  678. package/5861.min.js +0 -1
  679. package/5905.min.js +0 -1
  680. package/5959.min.js +0 -1
  681. package/6076.min.js +0 -1
  682. package/611.min.js +0 -1
  683. package/6130.min.js +0 -1
  684. package/6157.min.js +0 -1
  685. package/6196.min.js +0 -1
  686. package/6206.min.js +0 -1
  687. package/6227.min.js +0 -1
  688. package/6245.min.js +0 -1
  689. package/6253.min.js +0 -1
  690. package/6300.min.js +0 -1
  691. package/6330.min.js +0 -1
  692. package/6400.min.js +0 -1
  693. package/6486.min.js +0 -1
  694. package/6495.min.js +0 -1
  695. package/6497.min.js +0 -1
  696. package/6566.min.js +0 -1
  697. package/6622.min.js +0 -1
  698. package/665.min.js +0 -1
  699. package/690.min.js +0 -2
  700. package/6900.min.js +0 -1
  701. package/699.min.js +0 -1
  702. package/7018.min.js +0 -1
  703. package/7054.min.js +0 -1
  704. package/7089.min.js +0 -1
  705. package/7116.min.js +0 -1
  706. package/7152.min.js +0 -1
  707. package/7160.min.js +0 -1
  708. package/720.min.js +0 -1
  709. package/722.min.js +0 -1
  710. package/7239.min.js +0 -1
  711. package/7242.min.js +0 -1
  712. package/7281.min.js +0 -1
  713. package/731.min.js +0 -1
  714. package/7325.min.js +0 -1
  715. package/7346.min.js +0 -1
  716. package/7362.min.js +0 -1
  717. package/7368.min.js +0 -1
  718. package/74.min.js +0 -1
  719. package/7422.min.js +0 -1
  720. package/7518.min.js +0 -1
  721. package/7541.min.js +0 -1
  722. package/7627.min.js +0 -1
  723. package/776.min.js +0 -1
  724. package/7787.min.js +0 -1
  725. package/7802.min.js +0 -1
  726. package/7815.min.js +0 -1
  727. package/7884.min.js +0 -1
  728. package/795.min.js +0 -1
  729. package/7987.min.js +0 -1
  730. package/8019.min.js +0 -1
  731. package/8035.min.js +0 -1
  732. package/8088.min.js +0 -1
  733. package/8106.min.js +0 -1
  734. package/8118.min.js +0 -1
  735. package/8166.min.js +0 -1
  736. package/8183.min.js +0 -1
  737. package/8196.min.js +0 -1
  738. package/831.min.js +0 -1
  739. package/844.min.js +0 -1
  740. package/8442.min.js +0 -1
  741. package/8509.min.js +0 -1
  742. package/8580.min.js +0 -1
  743. package/8690.min.js +0 -1
  744. package/8703.min.js +0 -1
  745. package/8797.min.js +0 -1
  746. package/8836.min.js +0 -1
  747. package/8838.min.js +0 -1
  748. package/884.min.js +0 -1
  749. package/8945.min.js +0 -1
  750. package/8968.min.js +0 -1
  751. package/8985.min.js +0 -1
  752. package/9007.min.js +0 -1
  753. package/9017.min.js +0 -1
  754. package/9026.min.js +0 -1
  755. package/9099.min.js +0 -1
  756. package/9169.min.js +0 -1
  757. package/9212.min.js +0 -1
  758. package/9229.min.js +0 -1
  759. package/9242.min.js +0 -1
  760. package/9260.min.js +0 -1
  761. package/929.min.js +0 -1
  762. package/9322.min.js +0 -1
  763. package/9391.min.js +0 -1
  764. package/94.min.js +0 -1
  765. package/9506.min.js +0 -1
  766. package/9536.min.js +0 -1
  767. package/9555.min.js +0 -1
  768. package/9612.min.js +0 -1
  769. package/9616.min.js +0 -1
  770. package/9644.min.js +0 -1
  771. package/969.min.js +0 -1
  772. package/999.min.js +0 -1
  773. package/move_base_dist_browser_BaseMover_js.js +0 -40
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.24
7
+ * v4.0.0-alpha.26
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 constructor(container, noiseGen){\n this.container = container;\n this.noiseGen = noiseGen;\n this.field = [];\n this.noiseW = 0;\n this.options = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.deepExtend)({}, defaultOptions);\n }\n generate(particle) {\n const pos = particle.getPosition(), { size } = this.options, point = {\n x: Math.max(Math.floor(pos.x / size), originCoordinate),\n y: Math.max(Math.floor(pos.y / size), originCoordinate),\n z: Math.max(Math.floor(pos.z / size), originCoordinate)\n }, { field } = this, fieldPoint = field[point.x]?.[point.y]?.[point.z];\n return fieldPoint ? fieldPoint.copy() : _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\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.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\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, point = {\n x: Math.max(Math.floor(pos.x / size), originCoordinate),\n y: Math.max(Math.floor(pos.y / size), originCoordinate),\n z: Math.max(Math.floor(pos.z / size), 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.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-alpha.24
7
+ * v4.0.0-alpha.26
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 */ 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-alpha.24\");\n await engine.register((e)=>{\n e.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 */ });\nconst fractalNoisePathName = \"fractalNoise\";\nasync function loadFractalNoisePath(engine) {\n engine.checkVersion(\"4.0.0-alpha.26\");\n await engine.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.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
27
 
28
28
  /***/ }
29
29
 
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.24
7
+ * v4.0.0-alpha.26
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 */ 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 constructor(container){\n this._container = container;\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 return _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.create(d.x * grid.speed, d.y * grid.speed);\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\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
27
 
28
28
  /***/ }
29
29
 
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.24
7
+ * v4.0.0-alpha.26
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-alpha.24\");\n await engine.register((e)=>{\n e.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-alpha.26\");\n await engine.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.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-alpha.24
7
+ * v4.0.0-alpha.26
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 */ 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 constructor(container){\n this._container = container;\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 return _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.create(Math.cos(l.angle) * speed, Math.sin(l.angle) * speed);\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\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
27
 
28
28
  /***/ }
29
29
 
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.24
7
+ * v4.0.0-alpha.26
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-alpha.24\");\n await engine.register((e)=>{\n e.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-alpha.26\");\n await engine.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.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-alpha.24
7
+ * v4.0.0-alpha.26
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 constructor(container, noiseGen){\n this.container = container;\n this.noiseGen = noiseGen;\n this.field = [];\n this.noiseW = 0;\n this.options = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.deepExtend)({}, defaultOptions);\n }\n generate(particle) {\n const pos = particle.getPosition(), { size } = this.options, point = {\n x: Math.max(Math.floor(pos.x / size), originCoordinate),\n y: Math.max(Math.floor(pos.y / size), originCoordinate),\n z: Math.max(Math.floor(pos.z / size), originCoordinate)\n }, { field } = this, fieldPoint = field[point.x]?.[point.y]?.[point.z];\n return fieldPoint ? fieldPoint.copy() : _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\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.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\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, point = {\n x: Math.max(Math.floor(pos.x / size), originCoordinate),\n y: Math.max(Math.floor(pos.y / size), originCoordinate),\n z: Math.max(Math.floor(pos.z / size), 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.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-alpha.24
7
+ * v4.0.0-alpha.26
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 */ 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-alpha.24\");\n await engine.register((e)=>{\n e.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 */ });\nconst perlinNoisePathName = \"perlinNoise\";\nasync function loadPerlinNoisePath(engine) {\n engine.checkVersion(\"4.0.0-alpha.26\");\n await engine.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.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
27
 
28
28
  /***/ }
29
29
 
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.24
7
+ * v4.0.0-alpha.26
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 constructor(container){\n this._container = container;\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 return _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.create(direction.x * p.hexSpeed, direction.y * p.hexSpeed);\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\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-alpha.24
7
+ * v4.0.0-alpha.26
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 */ 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-alpha.24\");\n await engine.register((e)=>{\n e.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 */ });\nconst polygonPathName = \"polygonPathGenerator\";\nasync function loadPolygonPath(engine) {\n engine.checkVersion(\"4.0.0-alpha.26\");\n await engine.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.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
27
 
28
28
  /***/ }
29
29
 
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.24
7
+ * v4.0.0-alpha.26
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 generate() {\n return _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.create((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandomInRange)(minRandom, maxRandom), (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandomInRange)(minRandom, maxRandom));\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\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
 
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.24
7
+ * v4.0.0-alpha.26
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 */ loadRandomPath: () => (/* binding */ loadRandomPath),\n/* harmony export */ randomPathName: () => (/* binding */ randomPathName)\n/* harmony export */ });\nconst randomPathName = \"randomPathGenerator\";\nasync function loadRandomPath(engine) {\n engine.checkVersion(\"4.0.0-alpha.24\");\n await engine.register((e)=>{\n e.addPathGenerator(randomPathName, async ()=>{\n const { RandomPathGenerator } = await __webpack_require__.e(/*! import() */ \"paths_random_dist_browser_RandomPathGenerator_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./RandomPathGenerator.js */ \"../../paths/random/dist/browser/RandomPathGenerator.js\"));\n return new RandomPathGenerator();\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/random/dist/browser/index.js?\n}");
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadRandomPath: () => (/* binding */ loadRandomPath),\n/* harmony export */ randomPathName: () => (/* binding */ randomPathName)\n/* harmony export */ });\nconst randomPathName = \"randomPathGenerator\";\nasync function loadRandomPath(engine) {\n engine.checkVersion(\"4.0.0-alpha.26\");\n await engine.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.addPathGenerator?.(randomPathName, async ()=>{\n const { RandomPathGenerator } = await __webpack_require__.e(/*! import() */ \"paths_random_dist_browser_RandomPathGenerator_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./RandomPathGenerator.js */ \"../../paths/random/dist/browser/RandomPathGenerator.js\"));\n return new RandomPathGenerator();\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/random/dist/browser/index.js?\n}");
27
27
 
28
28
  /***/ }
29
29
 
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.24
7
+ * v4.0.0-alpha.26
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 constructor(container, noiseGen){\n this.container = container;\n this.noiseGen = noiseGen;\n this.field = [];\n this.noiseW = 0;\n this.options = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.deepExtend)({}, defaultOptions);\n }\n generate(particle) {\n const pos = particle.getPosition(), { size } = this.options, point = {\n x: Math.max(Math.floor(pos.x / size), originCoordinate),\n y: Math.max(Math.floor(pos.y / size), originCoordinate),\n z: Math.max(Math.floor(pos.z / size), originCoordinate)\n }, { field } = this, fieldPoint = field[point.x]?.[point.y]?.[point.z];\n return fieldPoint ? fieldPoint.copy() : _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\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.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\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, point = {\n x: Math.max(Math.floor(pos.x / size), originCoordinate),\n y: Math.max(Math.floor(pos.y / size), originCoordinate),\n z: Math.max(Math.floor(pos.z / size), 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.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-alpha.24
7
+ * v4.0.0-alpha.26
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 */ loadSimplexNoisePath: () => (/* binding */ loadSimplexNoisePath),\n/* harmony export */ simplexNoisePathName: () => (/* binding */ simplexNoisePathName)\n/* harmony export */ });\nconst simplexNoisePathName = \"simplexNoise\";\nasync function loadSimplexNoisePath(engine) {\n engine.checkVersion(\"4.0.0-alpha.24\");\n await engine.register((e)=>{\n e.addPathGenerator(simplexNoisePathName, async (container)=>{\n const { SimplexNoiseGenerator } = await Promise.all(/*! import() */[__webpack_require__.e(\"utils_simplexNoise_dist_browser_index_js\"), __webpack_require__.e(\"paths_simplexNoise_dist_browser_SimplexNoiseGenerator_js\")]).then(__webpack_require__.bind(__webpack_require__, /*! ./SimplexNoiseGenerator.js */ \"../../paths/simplexNoise/dist/browser/SimplexNoiseGenerator.js\"));\n return new SimplexNoiseGenerator(container);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/simplexNoise/dist/browser/index.js?\n}");
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadSimplexNoisePath: () => (/* binding */ loadSimplexNoisePath),\n/* harmony export */ simplexNoisePathName: () => (/* binding */ simplexNoisePathName)\n/* harmony export */ });\nconst simplexNoisePathName = \"simplexNoise\";\nasync function loadSimplexNoisePath(engine) {\n engine.checkVersion(\"4.0.0-alpha.26\");\n await engine.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.addPathGenerator?.(simplexNoisePathName, async (container)=>{\n const { SimplexNoiseGenerator } = await Promise.all(/*! import() */[__webpack_require__.e(\"utils_simplexNoise_dist_browser_index_js\"), __webpack_require__.e(\"paths_simplexNoise_dist_browser_SimplexNoiseGenerator_js\")]).then(__webpack_require__.bind(__webpack_require__, /*! ./SimplexNoiseGenerator.js */ \"../../paths/simplexNoise/dist/browser/SimplexNoiseGenerator.js\"));\n return new SimplexNoiseGenerator(container);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/simplexNoise/dist/browser/index.js?\n}");
27
27
 
28
28
  /***/ }
29
29
 
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.24
7
+ * v4.0.0-alpha.26
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 */ SpiralPathGenerator: () => (/* binding */ SpiralPathGenerator)\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 _SpiralDirection_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SpiralDirection.js */ \"../../paths/spiral/dist/browser/SpiralDirection.js\");\n\n\nconst minRadius = 0, speedFactor = 0.01, defaultOptions = {\n maxRadius: {\n min: 10,\n max: 50\n },\n angularSpeed: {\n min: 0.01,\n max: 0.04\n },\n radialSpeed: {\n min: 0.1,\n max: 0.3\n }\n};\nclass SpiralPathGenerator {\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, delta) {\n const { options } = this;\n particle.spiral ??= {\n angle: (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.doublePI,\n radius: minRadius,\n direction: _SpiralDirection_js__WEBPACK_IMPORTED_MODULE_1__.SpiralDirection.positive,\n maxRadius: (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(options.maxRadius),\n angularSpeed: (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(options.angularSpeed) * speedFactor,\n radialSpeed: (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(options.radialSpeed) * speedFactor\n };\n const spiral = particle.spiral;\n spiral.angle += spiral.angularSpeed * delta.factor;\n spiral.radius += spiral.radialSpeed * spiral.direction * delta.factor;\n if (spiral.radius > spiral.maxRadius && spiral.direction === _SpiralDirection_js__WEBPACK_IMPORTED_MODULE_1__.SpiralDirection.positive) {\n spiral.radius = spiral.maxRadius;\n spiral.direction = _SpiralDirection_js__WEBPACK_IMPORTED_MODULE_1__.SpiralDirection.negative;\n } else if (spiral.radius < minRadius && spiral.direction === _SpiralDirection_js__WEBPACK_IMPORTED_MODULE_1__.SpiralDirection.negative) {\n spiral.radius = minRadius;\n spiral.direction = _SpiralDirection_js__WEBPACK_IMPORTED_MODULE_1__.SpiralDirection.positive;\n }\n const offsetX = Math.cos(spiral.angle) * spiral.radius, offsetY = Math.sin(spiral.angle) * spiral.radius;\n particle.position.x += offsetX;\n particle.position.y += offsetY;\n return _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n }\n init() {\n const sourceOptions = this._container.actualOptions.particles.move.path.options;\n this.options.maxRadius = sourceOptions[\"maxRadius\"] ?? this.options.maxRadius;\n this.options.angularSpeed = sourceOptions[\"angularSpeed\"] ?? this.options.angularSpeed;\n this.options.radialSpeed = sourceOptions[\"radialSpeed\"] ?? this.options.radialSpeed;\n }\n reset(particle) {\n delete particle.spiral;\n }\n update() {}\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/spiral/dist/browser/SpiralPathGenerator.js?\n}");
36
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SpiralPathGenerator: () => (/* binding */ SpiralPathGenerator)\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 _SpiralDirection_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SpiralDirection.js */ \"../../paths/spiral/dist/browser/SpiralDirection.js\");\n\n\nconst minRadius = 0, speedFactor = 0.01, defaultOptions = {\n maxRadius: {\n min: 10,\n max: 50\n },\n angularSpeed: {\n min: 0.01,\n max: 0.04\n },\n radialSpeed: {\n min: 0.1,\n max: 0.3\n }\n};\nclass SpiralPathGenerator {\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 = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.deepExtend)({}, defaultOptions);\n }\n generate(particle, delta) {\n const { options } = this;\n particle.spiral ??= {\n angle: (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.doublePI,\n radius: minRadius,\n direction: _SpiralDirection_js__WEBPACK_IMPORTED_MODULE_1__.SpiralDirection.positive,\n maxRadius: (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(options.maxRadius),\n angularSpeed: (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(options.angularSpeed) * speedFactor,\n radialSpeed: (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(options.radialSpeed) * speedFactor\n };\n const spiral = particle.spiral;\n spiral.angle += spiral.angularSpeed * delta.factor;\n spiral.radius += spiral.radialSpeed * spiral.direction * delta.factor;\n if (spiral.radius > spiral.maxRadius && spiral.direction === _SpiralDirection_js__WEBPACK_IMPORTED_MODULE_1__.SpiralDirection.positive) {\n spiral.radius = spiral.maxRadius;\n spiral.direction = _SpiralDirection_js__WEBPACK_IMPORTED_MODULE_1__.SpiralDirection.negative;\n } else if (spiral.radius < minRadius && spiral.direction === _SpiralDirection_js__WEBPACK_IMPORTED_MODULE_1__.SpiralDirection.negative) {\n spiral.radius = minRadius;\n spiral.direction = _SpiralDirection_js__WEBPACK_IMPORTED_MODULE_1__.SpiralDirection.positive;\n }\n const offsetX = Math.cos(spiral.angle) * spiral.radius, offsetY = Math.sin(spiral.angle) * spiral.radius;\n particle.position.x += offsetX;\n particle.position.y += offsetY;\n this._res.x = 0;\n this._res.y = 0;\n return this._res;\n }\n init() {\n const sourceOptions = this._container.actualOptions.particles.move.path.options;\n this.options.maxRadius = sourceOptions[\"maxRadius\"] ?? this.options.maxRadius;\n this.options.angularSpeed = sourceOptions[\"angularSpeed\"] ?? this.options.angularSpeed;\n this.options.radialSpeed = sourceOptions[\"radialSpeed\"] ?? this.options.radialSpeed;\n }\n reset(particle) {\n delete particle.spiral;\n }\n update() {}\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/spiral/dist/browser/SpiralPathGenerator.js?\n}");
37
37
 
38
38
  /***/ }
39
39
 
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.24
7
+ * v4.0.0-alpha.26
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 */ loadSpiralPath: () => (/* binding */ loadSpiralPath),\n/* harmony export */ spiralPathName: () => (/* binding */ spiralPathName)\n/* harmony export */ });\nconst spiralPathName = \"spiralPathGenerator\";\nasync function loadSpiralPath(engine) {\n engine.checkVersion(\"4.0.0-alpha.24\");\n await engine.register((e)=>{\n e.addPathGenerator(spiralPathName, async (container)=>{\n const { SpiralPathGenerator } = await __webpack_require__.e(/*! import() */ \"paths_spiral_dist_browser_SpiralPathGenerator_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./SpiralPathGenerator.js */ \"../../paths/spiral/dist/browser/SpiralPathGenerator.js\"));\n return new SpiralPathGenerator(container);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/spiral/dist/browser/index.js?\n}");
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadSpiralPath: () => (/* binding */ loadSpiralPath),\n/* harmony export */ spiralPathName: () => (/* binding */ spiralPathName)\n/* harmony export */ });\nconst spiralPathName = \"spiralPathGenerator\";\nasync function loadSpiralPath(engine) {\n engine.checkVersion(\"4.0.0-alpha.26\");\n await engine.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.addPathGenerator?.(spiralPathName, async (container)=>{\n const { SpiralPathGenerator } = await __webpack_require__.e(/*! import() */ \"paths_spiral_dist_browser_SpiralPathGenerator_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./SpiralPathGenerator.js */ \"../../paths/spiral/dist/browser/SpiralPathGenerator.js\"));\n return new SpiralPathGenerator(container);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/spiral/dist/browser/index.js?\n}");
27
27
 
28
28
  /***/ }
29
29
 
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.24
7
+ * v4.0.0-alpha.26
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 */ SVGPathGenerator: () => (/* binding */ SVGPathGenerator)\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 _createSVGPaths_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createSVGPaths.js */ \"../../paths/svg/dist/browser/createSVGPaths.js\");\n/* harmony import */ var _loadSVGFromString_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./loadSVGFromString.js */ \"../../paths/svg/dist/browser/loadSVGFromString.js\");\n\n\n\nvar SVGPathDirection;\n(function(SVGPathDirection) {\n SVGPathDirection[SVGPathDirection[\"normal\"] = 0] = \"normal\";\n SVGPathDirection[SVGPathDirection[\"reverse\"] = 1] = \"reverse\";\n})(SVGPathDirection || (SVGPathDirection = {}));\nconst defaultSpeed = 1, minStep = 0, minIndex = 0, minWidth = 0, minScale = 1;\nclass SVGPathGenerator {\n _container;\n _offset;\n _paths;\n _reverse;\n _scale;\n _size;\n _width;\n constructor(container){\n this._container = container;\n this._paths = [];\n this._reverse = false;\n this._size = {\n width: 0,\n height: 0\n };\n this._scale = 1;\n this._offset = {\n x: 0,\n y: 0,\n mode: _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.PixelMode.percent\n };\n this._width = 0;\n }\n generate(particle, delta) {\n const container = this._container, pxRatio = container.retina.pixelRatio;\n particle.svgDirection ??= (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() > _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.half ? SVGPathDirection.normal : SVGPathDirection.reverse;\n particle.svgPathIndex ??= Math.floor((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * this._paths.length);\n particle.svgSpeed ??= particle.velocity.mult((particle.retina.moveSpeed ?? defaultSpeed) * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.half).length;\n particle.svgStep ??= (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.randomInRangeValue)({\n min: 0,\n max: this._paths[particle.svgPathIndex].length\n }) * pxRatio;\n particle.svgOffset ??= {\n width: (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.randomInRangeValue)({\n min: -this._width * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.half,\n max: this._width * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.half\n }) * pxRatio,\n height: (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.randomInRangeValue)({\n min: -this._width * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.half,\n max: this._width * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.half\n }) * pxRatio\n };\n particle.svgInitialPosition ??= particle.position.copy();\n particle.velocity.x = 0;\n particle.velocity.y = 0;\n if (particle.svgDirection === SVGPathDirection.normal) {\n particle.svgStep += particle.svgSpeed * delta.factor;\n } else {\n particle.svgStep -= particle.svgSpeed * delta.factor;\n }\n let path = this._paths[particle.svgPathIndex];\n const pathLength = path.length, indexOffset = 1;\n if (particle.svgStep >= pathLength) {\n particle.svgPathIndex = particle.svgPathIndex + indexOffset;\n if (particle.svgPathIndex >= this._paths.length) {\n if (this._reverse) {\n particle.svgPathIndex = this._paths.length - indexOffset;\n particle.svgDirection = SVGPathDirection.reverse;\n } else {\n particle.svgPathIndex = 0;\n particle.svgStep = 0;\n }\n }\n } else if (particle.svgStep <= minStep) {\n particle.svgPathIndex = particle.svgPathIndex - indexOffset;\n if (particle.svgPathIndex < minIndex) {\n if (this._reverse) {\n particle.svgPathIndex = 0;\n particle.svgDirection = SVGPathDirection.normal;\n } else {\n particle.svgPathIndex = this._paths.length - indexOffset;\n path = this._paths[particle.svgPathIndex];\n particle.svgStep = path.length;\n }\n }\n }\n path = this._paths[particle.svgPathIndex];\n const pathElement = path.element, pos = pathElement.getPointAtLength(particle.svgStep), canvasSize = this._container.canvas.size, offset = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getPosition)(this._offset, canvasSize), scale = this._scale * pxRatio;\n particle.position.x = (pos.x - this._size.width * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.half) * scale + particle.svgInitialPosition.x + offset.x + particle.svgOffset.width;\n particle.position.y = (pos.y - this._size.height * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.half) * scale + particle.svgInitialPosition.y + offset.y + particle.svgOffset.height;\n return _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n }\n init() {\n const options = this._container.actualOptions.particles.move.path.options, position = options.position ?? this._offset;\n this._reverse = options.reverse ?? this._reverse;\n this._scale = options.scale ?? minScale;\n this._offset.x = position.x;\n this._offset.y = position.y;\n this._offset.mode = position.mode;\n this._width = options.width ?? minWidth;\n if (options.url && !options.path) {\n const url = options.url;\n void (async ()=>{\n const response = await fetch(url), data = await response.text(), { paths, size } = (0,_loadSVGFromString_js__WEBPACK_IMPORTED_MODULE_2__.loadSVGFromString)(data);\n this._paths = paths;\n this._size.width = size.width;\n this._size.height = size.height;\n })();\n } else if (options.path) {\n const path = options.path;\n this._paths = (0,_createSVGPaths_js__WEBPACK_IMPORTED_MODULE_1__.createSVGPaths)(options.path.data);\n this._size.height = path.size.height;\n this._size.width = path.size.width;\n }\n }\n reset() {}\n update() {}\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/svg/dist/browser/SVGPathGenerator.js?\n}");
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SVGPathGenerator: () => (/* binding */ SVGPathGenerator)\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 _createSVGPaths_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createSVGPaths.js */ \"../../paths/svg/dist/browser/createSVGPaths.js\");\n/* harmony import */ var _loadSVGFromString_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./loadSVGFromString.js */ \"../../paths/svg/dist/browser/loadSVGFromString.js\");\n\n\n\nvar SVGPathDirection;\n(function(SVGPathDirection) {\n SVGPathDirection[SVGPathDirection[\"normal\"] = 0] = \"normal\";\n SVGPathDirection[SVGPathDirection[\"reverse\"] = 1] = \"reverse\";\n})(SVGPathDirection || (SVGPathDirection = {}));\nconst defaultSpeed = 1, minStep = 0, minIndex = 0, minWidth = 0, minScale = 1;\nclass SVGPathGenerator {\n _container;\n _offset;\n _paths;\n _res;\n _reverse;\n _scale;\n _size;\n _width;\n constructor(container){\n this._container = container;\n this._paths = [];\n this._reverse = false;\n this._size = {\n width: 0,\n height: 0\n };\n this._scale = 1;\n this._offset = {\n x: 0,\n y: 0,\n mode: _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.PixelMode.percent\n };\n this._width = 0;\n this._res = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n }\n generate(particle, delta) {\n const container = this._container, pxRatio = container.retina.pixelRatio;\n particle.svgDirection ??= (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() > _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.half ? SVGPathDirection.normal : SVGPathDirection.reverse;\n particle.svgPathIndex ??= Math.floor((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * this._paths.length);\n particle.svgSpeed ??= particle.velocity.mult((particle.retina.moveSpeed ?? defaultSpeed) * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.half).length;\n particle.svgStep ??= (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.randomInRangeValue)({\n min: 0,\n max: this._paths[particle.svgPathIndex].length\n }) * pxRatio;\n particle.svgOffset ??= {\n width: (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.randomInRangeValue)({\n min: -this._width * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.half,\n max: this._width * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.half\n }) * pxRatio,\n height: (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.randomInRangeValue)({\n min: -this._width * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.half,\n max: this._width * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.half\n }) * pxRatio\n };\n particle.svgInitialPosition ??= particle.position.copy();\n particle.velocity.x = 0;\n particle.velocity.y = 0;\n if (particle.svgDirection === SVGPathDirection.normal) {\n particle.svgStep += particle.svgSpeed * delta.factor;\n } else {\n particle.svgStep -= particle.svgSpeed * delta.factor;\n }\n let path = this._paths[particle.svgPathIndex];\n const pathLength = path.length, indexOffset = 1;\n if (particle.svgStep >= pathLength) {\n particle.svgPathIndex = particle.svgPathIndex + indexOffset;\n if (particle.svgPathIndex >= this._paths.length) {\n if (this._reverse) {\n particle.svgPathIndex = this._paths.length - indexOffset;\n particle.svgDirection = SVGPathDirection.reverse;\n } else {\n particle.svgPathIndex = 0;\n particle.svgStep = 0;\n }\n }\n } else if (particle.svgStep <= minStep) {\n particle.svgPathIndex = particle.svgPathIndex - indexOffset;\n if (particle.svgPathIndex < minIndex) {\n if (this._reverse) {\n particle.svgPathIndex = 0;\n particle.svgDirection = SVGPathDirection.normal;\n } else {\n particle.svgPathIndex = this._paths.length - indexOffset;\n path = this._paths[particle.svgPathIndex];\n particle.svgStep = path.length;\n }\n }\n }\n path = this._paths[particle.svgPathIndex];\n const pathElement = path.element, pos = pathElement.getPointAtLength(particle.svgStep), canvasSize = this._container.canvas.size, offset = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getPosition)(this._offset, canvasSize), scale = this._scale * pxRatio;\n particle.position.x = (pos.x - this._size.width * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.half) * scale + particle.svgInitialPosition.x + offset.x + particle.svgOffset.width;\n particle.position.y = (pos.y - this._size.height * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.half) * scale + particle.svgInitialPosition.y + offset.y + particle.svgOffset.height;\n this._res.x = 0;\n this._res.y = 0;\n return this._res;\n }\n init() {\n const options = this._container.actualOptions.particles.move.path.options, position = options.position ?? this._offset;\n this._reverse = options.reverse ?? this._reverse;\n this._scale = options.scale ?? minScale;\n this._offset.x = position.x;\n this._offset.y = position.y;\n this._offset.mode = position.mode;\n this._width = options.width ?? minWidth;\n if (options.url && !options.path) {\n const url = options.url;\n void (async ()=>{\n const response = await fetch(url), data = await response.text(), { paths, size } = (0,_loadSVGFromString_js__WEBPACK_IMPORTED_MODULE_2__.loadSVGFromString)(data);\n this._paths = paths;\n this._size.width = size.width;\n this._size.height = size.height;\n })();\n } else if (options.path) {\n const path = options.path;\n this._paths = (0,_createSVGPaths_js__WEBPACK_IMPORTED_MODULE_1__.createSVGPaths)(options.path.data);\n this._size.height = path.size.height;\n this._size.width = path.size.width;\n }\n }\n reset() {}\n update() {}\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/svg/dist/browser/SVGPathGenerator.js?\n}");
27
27
 
28
28
  /***/ },
29
29
 
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.24
7
+ * v4.0.0-alpha.26
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 */ loadSVGPath: () => (/* binding */ loadSVGPath),\n/* harmony export */ svgPathName: () => (/* binding */ svgPathName)\n/* harmony export */ });\nconst svgPathName = \"svgPathGenerator\";\nasync function loadSVGPath(engine) {\n engine.checkVersion(\"4.0.0-alpha.24\");\n await engine.register((e)=>{\n e.addPathGenerator(svgPathName, async (container)=>{\n const { SVGPathGenerator } = await __webpack_require__.e(/*! import() */ \"paths_svg_dist_browser_SVGPathGenerator_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./SVGPathGenerator.js */ \"../../paths/svg/dist/browser/SVGPathGenerator.js\"));\n return new SVGPathGenerator(container);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/svg/dist/browser/index.js?\n}");
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadSVGPath: () => (/* binding */ loadSVGPath),\n/* harmony export */ svgPathName: () => (/* binding */ svgPathName)\n/* harmony export */ });\nconst svgPathName = \"svgPathGenerator\";\nasync function loadSVGPath(engine) {\n engine.checkVersion(\"4.0.0-alpha.26\");\n await engine.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.addPathGenerator?.(svgPathName, async (container)=>{\n const { SVGPathGenerator } = await __webpack_require__.e(/*! import() */ \"paths_svg_dist_browser_SVGPathGenerator_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./SVGPathGenerator.js */ \"../../paths/svg/dist/browser/SVGPathGenerator.js\"));\n return new SVGPathGenerator(container);\n });\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/svg/dist/browser/index.js?\n}");
27
27
 
28
28
  /***/ }
29
29
 
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-alpha.24
7
+ * v4.0.0-alpha.26
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 */ ZigZagPathGenerator: () => (/* binding */ ZigZagPathGenerator)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nconst angularFrequencyFactor = 0.5, halfPI = Math.PI * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.half;\nconst defaultOptions = {\n waveHeight: {\n min: 0,\n max: 3\n },\n waveLength: {\n min: 0,\n max: 5\n }\n};\nclass ZigZagPathGenerator {\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, delta) {\n const { options } = this;\n particle.zigzag ??= {\n counter: (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)(),\n waveHeight: (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(options.waveHeight),\n waveLength: (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(options.waveLength)\n };\n const angularFrequency = angularFrequencyFactor / particle.zigzag.waveLength * delta.factor;\n particle.zigzag.counter += angularFrequency;\n const zigzagAngle = particle.zigzag.waveHeight * Math.sin(particle.zigzag.counter);\n particle.position.x += zigzagAngle * Math.cos(particle.velocity.angle + halfPI);\n particle.position.y += zigzagAngle * Math.sin(particle.velocity.angle + halfPI);\n return _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n }\n init() {\n const sourceOptions = this._container.actualOptions.particles.move.path.options;\n this.options.waveLength = sourceOptions[\"waveLength\"] ?? this.options.waveLength;\n this.options.waveHeight = sourceOptions[\"waveHeight\"] ?? this.options.waveHeight;\n }\n reset() {}\n update() {}\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/zigzag/dist/browser/ZigZagPathGenerator.js?\n}");
26
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ZigZagPathGenerator: () => (/* binding */ ZigZagPathGenerator)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nconst angularFrequencyFactor = 0.5, halfPI = Math.PI * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.half;\nconst defaultOptions = {\n waveHeight: {\n min: 0,\n max: 3\n },\n waveLength: {\n min: 0,\n max: 5\n }\n};\nclass ZigZagPathGenerator {\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 = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.deepExtend)({}, defaultOptions);\n }\n generate(particle, delta) {\n const { options } = this;\n particle.zigzag ??= {\n counter: (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)(),\n waveHeight: (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(options.waveHeight),\n waveLength: (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(options.waveLength)\n };\n const angularFrequency = angularFrequencyFactor / particle.zigzag.waveLength * delta.factor;\n particle.zigzag.counter += angularFrequency;\n const zigzagAngle = particle.zigzag.waveHeight * Math.sin(particle.zigzag.counter);\n particle.position.x += zigzagAngle * Math.cos(particle.velocity.angle + halfPI);\n particle.position.y += zigzagAngle * Math.sin(particle.velocity.angle + halfPI);\n this._res.x = 0;\n this._res.y = 0;\n return this._res;\n }\n init() {\n const sourceOptions = this._container.actualOptions.particles.move.path.options;\n this.options.waveLength = sourceOptions[\"waveLength\"] ?? this.options.waveLength;\n this.options.waveHeight = sourceOptions[\"waveHeight\"] ?? this.options.waveHeight;\n }\n reset() {}\n update() {}\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../paths/zigzag/dist/browser/ZigZagPathGenerator.js?\n}");
27
27
 
28
28
  /***/ }
29
29