@tsparticles/all 4.0.0-beta.0 → 4.0.0-beta.1
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.
- package/1028.min.js +1 -0
- package/1030.min.js +1 -0
- package/1048.min.js +1 -0
- package/1051.min.js +1 -0
- package/1061.min.js +1 -0
- package/1089.min.js +1 -0
- package/1120.min.js +1 -0
- package/1121.min.js +1 -0
- package/1160.min.js +1 -0
- package/1167.min.js +1 -0
- package/117.min.js +1 -0
- package/1201.min.js +1 -0
- package/1255.min.js +1 -0
- package/143.min.js +1 -0
- package/1510.min.js +1 -1
- package/{1154.min.js → 1551.min.js} +1 -1
- package/1605.min.js +1 -0
- package/{6725.min.js → 1611.min.js} +1 -1
- package/1661.min.js +1 -0
- package/1707.min.js +2 -0
- package/{5964.min.js → 1744.min.js} +1 -1
- package/1767.min.js +1 -0
- package/1818.min.js +2 -0
- package/1841.min.js +1 -0
- package/1860.min.js +1 -0
- package/2004.min.js +1 -0
- package/2093.min.js +1 -0
- package/{4234.min.js → 2105.min.js} +1 -1
- package/2158.min.js +1 -0
- package/2177.min.js +1 -0
- package/2253.min.js +1 -0
- package/2261.min.js +1 -0
- package/2265.min.js +1 -0
- package/{6458.min.js → 2360.min.js} +1 -1
- package/2405.min.js +1 -0
- package/2413.min.js +1 -0
- package/2425.min.js +1 -0
- package/2429.min.js +1 -0
- package/2454.min.js +1 -0
- package/2554.min.js +1 -0
- package/264.min.js +1 -0
- package/2643.min.js +1 -0
- package/{9929.min.js → 2682.min.js} +1 -1
- package/2784.min.js +1 -0
- package/{2513.min.js → 2825.min.js} +1 -1
- package/2866.min.js +1 -0
- package/2908.min.js +1 -0
- package/2930.min.js +1 -0
- package/{5665.min.js → 2933.min.js} +1 -1
- package/2964.min.js +1 -0
- package/2971.min.js +1 -0
- package/2975.min.js +1 -0
- package/301.min.js +1 -0
- package/3041.min.js +1 -0
- package/{1821.min.js → 3057.min.js} +1 -1
- package/3088.min.js +1 -0
- package/3089.min.js +1 -0
- package/31.min.js +1 -0
- package/{2917.min.js → 3128.min.js} +1 -1
- package/3150.min.js +1 -1
- package/3152.min.js +1 -0
- package/3210.min.js +1 -0
- package/3248.min.js +1 -0
- package/3256.min.js +1 -0
- package/3285.min.js +1 -0
- package/{4588.min.js → 3304.min.js} +1 -1
- package/3323.min.js +1 -0
- package/{243.min.js → 335.min.js} +1 -1
- package/{9555.min.js → 3362.min.js} +1 -1
- package/3471.min.js +1 -0
- package/{5227.min.js → 3477.min.js} +1 -1
- package/349.min.js +1 -0
- package/350.min.js +1 -0
- package/{1812.min.js → 3595.min.js} +1 -1
- package/3693.min.js +1 -1
- package/370.min.js +2 -0
- package/{7982.min.js → 3706.min.js} +1 -1
- package/3719.min.js +1 -0
- package/3728.min.js +1 -0
- package/3737.min.js +1 -0
- package/3775.min.js +1 -0
- package/{4689.min.js → 3861.min.js} +1 -1
- package/3875.min.js +1 -0
- package/3895.min.js +1 -0
- package/394.min.js +1 -0
- package/3949.min.js +1 -0
- package/{5411.min.js → 3961.min.js} +1 -1
- package/3972.min.js +1 -0
- package/3983.min.js +1 -0
- package/4051.min.js +1 -0
- package/4054.min.js +1 -0
- package/4074.min.js +1 -0
- package/{9279.min.js → 4075.min.js} +1 -1
- package/4088.min.js +1 -0
- package/410.min.js +1 -0
- package/4117.min.js +1 -0
- package/4129.min.js +1 -0
- package/4159.min.js +1 -0
- package/4191.min.js +1 -1
- package/4198.min.js +1 -0
- package/4204.min.js +1 -1
- package/{7636.min.js → 4258.min.js} +1 -1
- package/4301.min.js +1 -0
- package/4306.min.js +1 -0
- package/4316.min.js +1 -0
- package/{3003.min.js → 4376.min.js} +1 -1
- package/{3413.min.js → 4468.min.js} +1 -1
- package/4473.min.js +1 -0
- package/4489.min.js +1 -0
- package/4537.min.js +1 -0
- package/{9202.min.js → 4550.min.js} +1 -1
- package/4567.min.js +1 -0
- package/4592.min.js +1 -0
- package/4601.min.js +1 -0
- package/465.min.js +1 -1
- package/{4724.min.js → 4656.min.js} +1 -1
- package/{7937.min.js → 4701.min.js} +1 -1
- package/4722.min.js +1 -0
- package/{7554.min.js → 4726.min.js} +1 -1
- package/4837.min.js +1 -0
- package/4839.min.js +1 -0
- package/4880.min.js +1 -0
- package/4887.min.js +1 -0
- package/4898.min.js +1 -0
- package/4917.min.js +1 -0
- package/4952.min.js +1 -0
- package/4991.min.js +1 -0
- package/5055.min.js +1 -1
- package/5056.min.js +1 -0
- package/{4073.min.js → 5077.min.js} +1 -1
- package/5095.min.js +1 -0
- package/5136.min.js +1 -0
- package/5174.min.js +1 -0
- package/{3233.min.js → 5197.min.js} +1 -1
- package/5212.min.js +1 -0
- package/5232.min.js +1 -0
- package/{3750.min.js → 5260.min.js} +1 -1
- package/5264.min.js +1 -0
- package/{5206.min.js → 5275.min.js} +1 -1
- package/{3509.min.js → 5313.min.js} +1 -1
- package/5325.min.js +1 -0
- package/{3573.min.js → 5332.min.js} +1 -1
- package/{3793.min.js → 5341.min.js} +1 -1
- package/5347.min.js +1 -0
- package/5352.min.js +1 -0
- package/5356.min.js +1 -0
- package/5402.min.js +1 -0
- package/5437.min.js +1 -0
- package/5447.min.js +1 -0
- package/5453.min.js +1 -0
- package/5532.min.js +1 -0
- package/5541.min.js +1 -0
- package/{6041.min.js → 5589.min.js} +1 -1
- package/{2926.min.js → 5602.min.js} +1 -1
- package/561.min.js +1 -0
- package/5641.min.js +1 -0
- package/5651.min.js +1 -0
- package/{3464.min.js → 5668.min.js} +1 -1
- package/5669.min.js +1 -0
- package/{7922.min.js → 5686.min.js} +1 -1
- package/5694.min.js +1 -0
- package/5700.min.js +1 -0
- package/5719.min.js +1 -0
- package/5732.min.js +1 -0
- package/5742.min.js +1 -0
- package/5816.min.js +1 -0
- package/5832.min.js +1 -0
- package/587.min.js +1 -0
- package/5976.min.js +1 -0
- package/6055.min.js +1 -0
- package/6056.min.js +1 -0
- package/607.min.js +1 -0
- package/6130.min.js +1 -0
- package/6202.min.js +1 -0
- package/6222.min.js +1 -0
- package/6227.min.js +1 -0
- package/6252.min.js +1 -0
- package/6280.min.js +1 -0
- package/6297.min.js +1 -0
- package/6340.min.js +1 -0
- package/6362.min.js +1 -0
- package/{3433.min.js → 6364.min.js} +1 -1
- package/{3924.min.js → 6388.min.js} +1 -1
- package/6412.min.js +1 -0
- package/649.min.js +1 -0
- package/6496.min.js +1 -0
- package/6502.min.js +1 -0
- package/6561.min.js +1 -0
- package/6598.min.js +1 -0
- package/{6361.min.js → 6613.min.js} +1 -1
- package/6693.min.js +1 -0
- package/6711.min.js +1 -0
- package/6808.min.js +1 -1
- package/6822.min.js +1 -0
- package/6827.min.js +1 -0
- package/686.min.js +1 -0
- package/6868.min.js +1 -0
- package/{5249.min.js → 6897.min.js} +1 -1
- package/{8639.min.js → 6907.min.js} +1 -1
- package/6938.min.js +1 -0
- package/{4662.min.js → 6940.min.js} +1 -1
- package/7017.min.js +1 -0
- package/7041.min.js +1 -33
- package/{8606.min.js → 7050.min.js} +1 -1
- package/706.min.js +1 -0
- package/7062.min.js +1 -0
- package/7079.min.js +1 -0
- package/7149.min.js +1 -0
- package/7157.min.js +1 -0
- package/719.min.js +1 -0
- package/{5133.min.js → 7196.min.js} +1 -1
- package/7203.min.js +1 -0
- package/7206.min.js +1 -0
- package/7218.min.js +1 -0
- package/7359.min.js +1 -0
- package/7374.min.js +1 -0
- package/7386.min.js +1 -0
- package/7403.min.js +1 -0
- package/746.min.js +1 -0
- package/7462.min.js +1 -0
- package/748.min.js +1 -0
- package/7520.min.js +1 -1
- package/7522.min.js +1 -0
- package/7590.min.js +1 -0
- package/{4570.min.js → 7596.min.js} +1 -1
- package/{2382.min.js → 7604.min.js} +1 -1
- package/762.min.js +1 -0
- package/7721.min.js +1 -0
- package/7788.min.js +1 -0
- package/7817.min.js +1 -0
- package/786.min.js +1 -0
- package/7921.min.js +1 -0
- package/803.min.js +1 -0
- package/8082.min.js +1 -0
- package/8096.min.js +1 -0
- package/{2295.min.js → 8111.min.js} +1 -1
- package/8173.min.js +1 -0
- package/{5855.min.js → 8243.min.js} +1 -1
- package/8272.min.js +1 -0
- package/8274.min.js +1 -0
- package/{3338.min.js → 83.min.js} +2 -2
- package/830.min.js +1 -0
- package/8319.min.js +1 -1
- package/8342.min.js +1 -0
- package/8360.min.js +1 -1
- package/{2217.min.js → 8421.min.js} +1 -1
- package/{7258.min.js → 8446.min.js} +1 -1
- package/8536.min.js +1 -0
- package/8553.min.js +33 -1
- package/8569.min.js +1 -0
- package/8626.min.js +1 -0
- package/8650.min.js +1 -0
- package/8684.min.js +1 -1
- package/8708.min.js +1 -0
- package/8775.min.js +1 -0
- package/{2940.min.js → 8776.min.js} +1 -1
- package/8796.min.js +1 -0
- package/8805.min.js +1 -0
- package/{4303.min.js → 8808.min.js} +1 -1
- package/886.min.js +1 -0
- package/8930.min.js +1 -0
- package/{4433.min.js → 8957.min.js} +1 -1
- package/{9398.min.js → 8977.min.js} +2 -2
- package/8989.min.js +1 -0
- package/9022.min.js +1 -0
- package/{1624.min.js → 9027.min.js} +1 -1
- package/9033.min.js +1 -0
- package/9072.min.js +1 -0
- package/9134.min.js +1 -0
- package/9165.min.js +1 -0
- package/9261.min.js +1 -0
- package/9293.min.js +1 -0
- package/9326.min.js +1 -0
- package/{7876.min.js → 9368.min.js} +1 -1
- package/938.min.js +1 -0
- package/{3019.min.js → 9463.min.js} +1 -1
- package/{9761.min.js → 9479.min.js} +1 -1
- package/951.min.js +1 -0
- package/9630.min.js +1 -1
- package/9643.min.js +1 -0
- package/9654.min.js +1 -0
- package/{5997.min.js → 9673.min.js} +1 -1
- package/9720.min.js +1 -0
- package/9748.min.js +1 -0
- package/9782.min.js +1 -0
- package/9838.min.js +1 -0
- package/{9569.min.js → 9920.min.js} +1 -1
- package/9950.min.js +1 -0
- package/9994.min.js +1 -0
- package/basic_dist_browser_index_js.js +2 -2
- package/browser/index.js +5 -3
- package/cjs/index.js +5 -3
- package/effects_bubble_dist_browser_BubbleDrawer_js.js +1 -1
- package/effects_bubble_dist_browser_index_js.js +2 -2
- package/effects_particles_dist_browser_ParticlesDrawer_js.js +2 -2
- package/effects_particles_dist_browser_index_js.js +2 -2
- package/effects_shadow_dist_browser_ShadowDrawer_js.js +2 -2
- package/effects_shadow_dist_browser_index_js.js +2 -2
- package/effects_trail_dist_browser_TrailDrawer_js.js +2 -2
- package/effects_trail_dist_browser_index_js.js +2 -2
- package/engine_dist_browser_Core_Container_js.js +24 -14
- package/esm/index.js +5 -3
- package/full_dist_browser_index_js.js +2 -2
- package/interactions_external_attract_dist_browser_Attractor_js.js +6 -6
- package/interactions_external_attract_dist_browser_index_js.js +2 -2
- package/interactions_external_bounce_dist_browser_Bouncer_js.js +4 -4
- package/interactions_external_bounce_dist_browser_index_js.js +2 -2
- package/interactions_external_bubble_dist_browser_Bubbler_js.js +5 -5
- package/interactions_external_bubble_dist_browser_index_js.js +2 -2
- package/interactions_external_cannon_dist_browser_Cannoner_js.js +130 -0
- package/interactions_external_cannon_dist_browser_index_js.js +40 -0
- package/interactions_external_connect_dist_browser_Connector_js.js +6 -6
- package/interactions_external_connect_dist_browser_index_js.js +2 -2
- package/interactions_external_drag_dist_browser_Dragger_js.js +4 -4
- package/interactions_external_drag_dist_browser_index_js.js +2 -2
- package/interactions_external_grab_dist_browser_Grabber_js.js +7 -7
- package/interactions_external_grab_dist_browser_index_js.js +2 -2
- package/interactions_external_parallax_dist_browser_Parallaxer_js.js +4 -4
- package/interactions_external_parallax_dist_browser_index_js.js +2 -2
- package/interactions_external_particle_dist_browser_InteractivityParticleMaker_js.js +5 -5
- package/interactions_external_particle_dist_browser_index_js.js +2 -2
- package/interactions_external_pause_dist_browser_Pauser_js.js +4 -4
- package/interactions_external_pause_dist_browser_index_js.js +2 -2
- package/interactions_external_pop_dist_browser_Popper_js.js +5 -5
- package/interactions_external_pop_dist_browser_index_js.js +2 -2
- package/interactions_external_push_dist_browser_Pusher_js.js +4 -4
- package/interactions_external_push_dist_browser_index_js.js +2 -2
- package/interactions_external_remove_dist_browser_Remover_js.js +5 -5
- package/interactions_external_remove_dist_browser_index_js.js +2 -2
- package/interactions_external_repulse_dist_browser_Repulser_js.js +5 -5
- package/interactions_external_repulse_dist_browser_index_js.js +2 -2
- package/interactions_external_slow_dist_browser_Slower_js.js +4 -4
- package/interactions_external_slow_dist_browser_index_js.js +2 -2
- package/interactions_external_trail_dist_browser_TrailMaker_js.js +5 -5
- package/interactions_external_trail_dist_browser_index_js.js +2 -2
- package/interactions_light_dist_browser_ExternalLighter_js.js +5 -5
- package/interactions_light_dist_browser_ParticlesLighter_js.js +5 -5
- package/interactions_light_dist_browser_index_js.js +2 -2
- package/interactions_particles_attract_dist_browser_Attractor_js.js +4 -4
- package/interactions_particles_attract_dist_browser_index_js.js +2 -2
- package/interactions_particles_collisions_dist_browser_Collider_js.js +4 -4
- package/interactions_particles_collisions_dist_browser_OverlapPluginInstance_js.js +1 -1
- package/interactions_particles_collisions_dist_browser_OverlapPlugin_js.js +1 -1
- package/interactions_particles_collisions_dist_browser_index_js.js +2 -2
- package/interactions_particles_links_dist_browser_LinkInstance_js.js +2 -2
- package/interactions_particles_links_dist_browser_Linker_js.js +5 -5
- package/interactions_particles_links_dist_browser_LinksPlugin_js.js +2 -2
- package/interactions_particles_links_dist_browser_index_js.js +2 -2
- package/interactions_particles_repulse_dist_browser_Repulser_js.js +4 -4
- package/interactions_particles_repulse_dist_browser_index_js.js +2 -2
- package/package.json +78 -77
- package/paths_branches_dist_browser_BranchesPathGenerator_js.js +1 -1
- package/paths_branches_dist_browser_index_js.js +2 -2
- package/paths_brownian_dist_browser_BrownianPathGenerator_js.js +1 -1
- package/paths_brownian_dist_browser_index_js.js +2 -2
- package/paths_curlNoise_dist_browser_CurlNoiseGenerator_js.js +1 -1
- package/paths_curlNoise_dist_browser_index_js.js +2 -2
- package/paths_curves_dist_browser_CurvesPathGenerator_js.js +1 -1
- package/paths_curves_dist_browser_index_js.js +2 -2
- package/paths_fractalNoise_dist_browser_FractalNoiseGenerator_js.js +3 -3
- package/paths_fractalNoise_dist_browser_index_js.js +2 -2
- package/paths_grid_dist_browser_GridPathGenerator_js.js +1 -1
- package/paths_grid_dist_browser_index_js.js +2 -2
- package/paths_levy_dist_browser_LevyPathGenerator_js.js +1 -1
- package/paths_levy_dist_browser_index_js.js +2 -2
- package/paths_perlinNoise_dist_browser_PerlinNoiseGenerator_js.js +2 -2
- package/paths_perlinNoise_dist_browser_index_js.js +2 -2
- package/paths_polygon_dist_browser_PolygonPathGenerator_js.js +1 -1
- package/paths_polygon_dist_browser_index_js.js +2 -2
- package/paths_random_dist_browser_RandomPathGenerator_js.js +1 -1
- package/paths_random_dist_browser_index_js.js +2 -2
- package/paths_simplexNoise_dist_browser_SimplexNoiseGenerator_js.js +2 -2
- package/paths_simplexNoise_dist_browser_index_js.js +2 -2
- package/paths_spiral_dist_browser_SpiralPathGenerator_js.js +1 -1
- package/paths_spiral_dist_browser_index_js.js +2 -2
- package/paths_svg_dist_browser_SVGPathGenerator_js.js +2 -2
- package/paths_svg_dist_browser_index_js.js +2 -2
- package/paths_zigzag_dist_browser_ZigZagPathGenerator_js.js +1 -1
- package/paths_zigzag_dist_browser_index_js.js +2 -2
- package/plugins_absorbers_dist_browser_AbsorberInstance_js.js +2 -2
- package/plugins_absorbers_dist_browser_AbsorbersInstancesManager_js.js +2 -2
- package/plugins_absorbers_dist_browser_AbsorbersInteractor_js.js +4 -4
- package/plugins_absorbers_dist_browser_AbsorbersPluginInstance_js.js +1 -1
- package/plugins_absorbers_dist_browser_AbsorbersPlugin_js.js +1 -1
- package/plugins_absorbers_dist_browser_index_js.js +2 -2
- package/plugins_backgroundMask_dist_browser_BackgroundMaskPluginInstance_js.js +2 -2
- package/plugins_backgroundMask_dist_browser_BackgroundMaskPlugin_js.js +2 -2
- package/plugins_backgroundMask_dist_browser_index_js.js +2 -2
- package/plugins_blend_dist_browser_BlendPluginInstance_js.js +1 -1
- package/plugins_blend_dist_browser_BlendPlugin_js.js +1 -1
- package/plugins_blend_dist_browser_index_js.js +2 -2
- package/plugins_canvasMask_dist_browser_CanvasMaskPluginInstance_js.js +3 -3
- package/plugins_canvasMask_dist_browser_CanvasMaskPlugin_js.js +1 -1
- package/plugins_canvasMask_dist_browser_index_js.js +2 -2
- package/plugins_colors_hex_dist_browser_HexColorManager_js.js +1 -1
- package/plugins_colors_hex_dist_browser_index_js.js +2 -2
- package/plugins_colors_hsl_dist_browser_HslColorManager_js.js +1 -1
- package/plugins_colors_hsl_dist_browser_index_js.js +2 -2
- package/plugins_colors_hsv_dist_browser_HsvColorManager_js.js +1 -1
- package/plugins_colors_hsv_dist_browser_index_js.js +2 -2
- package/plugins_colors_hwb_dist_browser_HwbColorManager_js.js +1 -1
- package/plugins_colors_hwb_dist_browser_index_js.js +2 -2
- package/plugins_colors_lab_dist_browser_LabColorManager_js.js +1 -1
- package/plugins_colors_lab_dist_browser_index_js.js +2 -2
- package/plugins_colors_lch_dist_browser_LchColorManager_js.js +1 -1
- package/plugins_colors_lch_dist_browser_index_js.js +2 -2
- package/plugins_colors_named_dist_browser_NamedColorManager_js.js +1 -1
- package/plugins_colors_named_dist_browser_index_js.js +2 -2
- package/plugins_colors_oklab_dist_browser_OklabColorManager_js.js +1 -1
- package/plugins_colors_oklab_dist_browser_index_js.js +2 -2
- package/plugins_colors_oklch_dist_browser_OklchColorManager_js.js +1 -1
- package/plugins_colors_oklch_dist_browser_index_js.js +2 -2
- package/plugins_colors_rgb_dist_browser_RgbColorManager_js.js +1 -1
- package/plugins_colors_rgb_dist_browser_index_js.js +2 -2
- package/plugins_easings_back_dist_browser_easingsFunctions_js.js +1 -1
- package/plugins_easings_back_dist_browser_index_js.js +2 -2
- package/plugins_easings_bounce_dist_browser_easingsFunctions_js.js +1 -1
- package/plugins_easings_bounce_dist_browser_index_js.js +2 -2
- package/plugins_easings_circ_dist_browser_easingsFunctions_js.js +1 -1
- package/plugins_easings_circ_dist_browser_index_js.js +2 -2
- package/plugins_easings_cubic_dist_browser_easingsFunctions_js.js +1 -1
- package/plugins_easings_cubic_dist_browser_index_js.js +2 -2
- package/plugins_easings_elastic_dist_browser_easingsFunctions_js.js +1 -1
- package/plugins_easings_elastic_dist_browser_index_js.js +2 -2
- package/plugins_easings_expo_dist_browser_easingsFunctions_js.js +1 -1
- package/plugins_easings_expo_dist_browser_index_js.js +2 -2
- package/plugins_easings_gaussian_dist_browser_easingsFunctions_js.js +1 -1
- package/plugins_easings_gaussian_dist_browser_index_js.js +2 -2
- package/plugins_easings_linear_dist_browser_easingsFunctions_js.js +1 -1
- package/plugins_easings_linear_dist_browser_index_js.js +2 -2
- package/plugins_easings_quad_dist_browser_easingsFunctions_js.js +1 -1
- package/plugins_easings_quad_dist_browser_index_js.js +2 -2
- package/plugins_easings_quart_dist_browser_easingsFunctions_js.js +1 -1
- package/plugins_easings_quart_dist_browser_index_js.js +2 -2
- package/plugins_easings_quint_dist_browser_easingsFunctions_js.js +1 -1
- package/plugins_easings_quint_dist_browser_index_js.js +2 -2
- package/plugins_easings_sigmoid_dist_browser_easingsFunctions_js.js +1 -1
- package/plugins_easings_sigmoid_dist_browser_index_js.js +2 -2
- package/plugins_easings_sine_dist_browser_easingsFunctions_js.js +1 -1
- package/plugins_easings_sine_dist_browser_index_js.js +2 -2
- package/plugins_easings_smoothstep_dist_browser_easingsFunctions_js.js +1 -1
- package/plugins_easings_smoothstep_dist_browser_index_js.js +2 -2
- package/plugins_emittersShapes_canvas_dist_browser_EmittersCanvasShapeGenerator_js.js +4 -4
- package/plugins_emittersShapes_canvas_dist_browser_index_js.js +2 -2
- package/plugins_emittersShapes_circle_dist_browser_EmittersCircleShapeGenerator_js.js +2 -2
- package/plugins_emittersShapes_circle_dist_browser_index_js.js +2 -2
- package/plugins_emittersShapes_path_dist_browser_EmittersPathShapeGenerator_js.js +3 -3
- package/plugins_emittersShapes_path_dist_browser_index_js.js +2 -2
- package/plugins_emittersShapes_polygon_dist_browser_EmittersPolygonShapeGenerator_js.js +2 -2
- package/plugins_emittersShapes_polygon_dist_browser_index_js.js +2 -2
- package/plugins_emittersShapes_square_dist_browser_EmittersSquareShapeGenerator_js.js +2 -2
- package/plugins_emittersShapes_square_dist_browser_index_js.js +2 -2
- package/plugins_emitters_dist_browser_EmitterInstance_js.js +2 -2
- package/plugins_emitters_dist_browser_EmittersInstancesManager_js.js +2 -2
- package/plugins_emitters_dist_browser_EmittersInteractor_js.js +4 -4
- package/plugins_emitters_dist_browser_EmittersPluginInstance_js.js +1 -1
- package/plugins_emitters_dist_browser_EmittersPlugin_js.js +1 -1
- package/plugins_emitters_dist_browser_ShapeManager_js.js +1 -1
- package/plugins_emitters_dist_browser_index_js.js +2 -2
- package/plugins_exports_image_dist_browser_ExportImagePluginInstance_js.js +1 -1
- package/plugins_exports_image_dist_browser_ExportImagePlugin_js.js +1 -1
- package/plugins_exports_image_dist_browser_index_js.js +2 -2
- package/plugins_exports_json_dist_browser_ExportJSONPluginInstance_js.js +1 -1
- package/plugins_exports_json_dist_browser_ExportJSONPlugin_js.js +1 -1
- package/plugins_exports_json_dist_browser_index_js.js +2 -2
- package/plugins_exports_video_dist_browser_ExportVideoPluginInstance_js.js +1 -1
- package/plugins_exports_video_dist_browser_ExportVideoPlugin_js.js +1 -1
- package/plugins_exports_video_dist_browser_index_js.js +2 -2
- package/plugins_infection_dist_browser_InfectionPluginInstance_js.js +1 -1
- package/plugins_infection_dist_browser_InfectionPlugin_js.js +1 -1
- package/plugins_infection_dist_browser_ParticlesInfecter_js.js +4 -4
- package/plugins_infection_dist_browser_index_js.js +2 -2
- package/plugins_interactivity_dist_browser_InteractivityPluginInstance_js.js +4 -4
- package/plugins_interactivity_dist_browser_InteractivityPlugin_js.js +3 -3
- package/plugins_interactivity_dist_browser_index_js.js +4 -4
- package/plugins_manualParticles_dist_browser_ManualParticlesPluginInstance_js.js +1 -1
- package/plugins_manualParticles_dist_browser_ManualParticlesPlugin_js.js +1 -1
- package/plugins_manualParticles_dist_browser_index_js.js +2 -2
- package/plugins_motion_dist_browser_MotionPluginInstance_js.js +1 -1
- package/plugins_motion_dist_browser_MotionPlugin_js.js +1 -1
- package/plugins_motion_dist_browser_index_js.js +2 -2
- package/plugins_move_dist_browser_MovePluginInstance_js.js +3 -3
- package/plugins_move_dist_browser_MovePlugin_js.js +2 -2
- package/plugins_move_dist_browser_index_js.js +2 -2
- package/plugins_poisson_dist_browser_PoissonDiscPluginInstance_js.js +1 -1
- package/plugins_poisson_dist_browser_PoissonDiscPlugin_js.js +1 -1
- package/plugins_poisson_dist_browser_PoissonDisc_js.js +1 -1
- package/plugins_poisson_dist_browser_index_js.js +2 -2
- package/plugins_polygonMask_dist_browser_PolygonMaskInstance_js.js +3 -3
- package/plugins_polygonMask_dist_browser_PolygonMaskPlugin_js.js +5 -5
- package/plugins_polygonMask_dist_browser_index_js.js +2 -2
- package/plugins_responsive_dist_browser_ResponsivePluginInstance_js.js +1 -1
- package/plugins_responsive_dist_browser_ResponsivePlugin_js.js +1 -1
- package/plugins_responsive_dist_browser_index_js.js +2 -2
- package/plugins_sounds_dist_browser_SoundsPluginInstance_js.js +2 -2
- package/plugins_sounds_dist_browser_SoundsPlugin_js.js +1 -1
- package/plugins_sounds_dist_browser_index_js.js +2 -2
- package/plugins_themes_dist_browser_ThemesPluginInstance_js.js +1 -1
- package/plugins_themes_dist_browser_ThemesPlugin_js.js +1 -1
- package/plugins_themes_dist_browser_index_js.js +2 -2
- package/plugins_trail_dist_browser_TrailPluginInstance_js.js +2 -2
- package/plugins_trail_dist_browser_TrailPlugin_js.js +2 -2
- package/plugins_trail_dist_browser_index_js.js +2 -2
- package/plugins_zoom_dist_browser_ZoomPluginInstance_js.js +1 -1
- package/plugins_zoom_dist_browser_ZoomPlugin_js.js +1 -1
- package/plugins_zoom_dist_browser_index_js.js +2 -2
- package/report.html +84 -29
- package/shapes_arrow_dist_browser_ArrowDrawer_js.js +1 -1
- package/shapes_arrow_dist_browser_index_js.js +2 -2
- package/shapes_cards_dist_browser_cards_CardDrawer_js.js +2 -2
- package/shapes_cards_dist_browser_clubs_ClubDrawer_js.js +1 -1
- package/shapes_cards_dist_browser_diamonds_DiamondDrawer_js.js +1 -1
- package/shapes_cards_dist_browser_hearts_HeartDrawer_js.js +1 -1
- package/shapes_cards_dist_browser_index_js.js +7 -7
- package/shapes_cards_dist_browser_paths_js.js +1 -1
- package/shapes_cards_dist_browser_spades_SpadeDrawer_js.js +1 -1
- package/shapes_circle_dist_browser_CircleDrawer_js.js +1 -1
- package/shapes_circle_dist_browser_index_js.js +2 -2
- package/shapes_cog_dist_browser_CogDrawer_js.js +1 -1
- package/shapes_cog_dist_browser_index_js.js +2 -2
- package/shapes_emoji_dist_browser_EmojiDrawer_js.js +3 -3
- package/shapes_emoji_dist_browser_index_js.js +2 -2
- package/shapes_heart_dist_browser_HeartDrawer_js.js +1 -1
- package/shapes_heart_dist_browser_index_js.js +2 -2
- package/shapes_image_dist_browser_GifUtils_Utils_js.js +1 -1
- package/shapes_image_dist_browser_ImageDrawer_js.js +2 -2
- package/shapes_image_dist_browser_ImagePreloaderInstance_js.js +1 -1
- package/shapes_image_dist_browser_ImagePreloader_js.js +1 -1
- package/shapes_image_dist_browser_index_js.js +2 -2
- package/shapes_infinity_dist_browser_InfinityDrawer_js.js +1 -1
- package/shapes_infinity_dist_browser_index_js.js +2 -2
- package/shapes_line_dist_browser_LineDrawer_js.js +1 -1
- package/shapes_line_dist_browser_index_js.js +2 -2
- package/shapes_matrix_dist_browser_MatrixDrawer_js.js +1 -1
- package/shapes_matrix_dist_browser_index_js.js +2 -2
- package/shapes_path_dist_browser_PathDrawer_js.js +1 -1
- package/shapes_path_dist_browser_index_js.js +2 -2
- package/shapes_polygon_dist_browser_PolygonDrawer_js.js +1 -1
- package/shapes_polygon_dist_browser_TriangleDrawer_js.js +1 -1
- package/shapes_polygon_dist_browser_index_js.js +2 -2
- package/shapes_rounded-polygon_dist_browser_RoundedPolygonDrawer_js.js +1 -1
- package/shapes_rounded-polygon_dist_browser_index_js.js +2 -2
- package/shapes_rounded-rect_dist_browser_RoundedRectDrawer_js.js +1 -1
- package/shapes_rounded-rect_dist_browser_index_js.js +2 -2
- package/shapes_spiral_dist_browser_SpiralDrawer_js.js +1 -1
- package/shapes_spiral_dist_browser_index_js.js +2 -2
- package/shapes_square_dist_browser_SquareDrawer_js.js +1 -1
- package/shapes_square_dist_browser_index_js.js +2 -2
- package/shapes_squircle_dist_browser_SquircleDrawer_js.js +1 -1
- package/shapes_squircle_dist_browser_index_js.js +2 -2
- package/shapes_star_dist_browser_StarDrawer_js.js +1 -1
- package/shapes_star_dist_browser_index_js.js +2 -2
- package/shapes_text_dist_browser_TextDrawer_js.js +2 -2
- package/shapes_text_dist_browser_index_js.js +2 -2
- package/slim_dist_browser_index_js.js +2 -2
- package/tsparticles.all.bundle.js +19 -9
- package/tsparticles.all.bundle.min.js +2 -2
- package/tsparticles.all.js +16 -6
- package/tsparticles.all.min.js +1 -1
- package/umd/index.js +43 -41
- package/updaters_destroy_dist_browser_DestroyUpdater_js.js +3 -3
- package/updaters_destroy_dist_browser_index_js.js +2 -2
- package/updaters_fillColor_dist_browser_FillColorUpdater_js.js +2 -2
- package/updaters_fillColor_dist_browser_index_js.js +2 -2
- package/updaters_gradient_dist_browser_GradientUpdater_js.js +2 -2
- package/updaters_gradient_dist_browser_index_js.js +2 -2
- package/updaters_life_dist_browser_LifeUpdater_js.js +1 -1
- package/updaters_life_dist_browser_index_js.js +2 -2
- package/updaters_opacity_dist_browser_OpacityUpdater_js.js +2 -2
- package/updaters_opacity_dist_browser_index_js.js +2 -2
- package/updaters_orbit_dist_browser_OrbitUpdater_js.js +3 -3
- package/updaters_orbit_dist_browser_index_js.js +2 -2
- package/updaters_outModes_dist_browser_OutOfCanvasUpdater_js.js +3 -3
- package/updaters_outModes_dist_browser_index_js.js +2 -2
- package/updaters_roll_dist_browser_RollUpdater_js.js +3 -3
- package/updaters_roll_dist_browser_index_js.js +2 -2
- package/updaters_rotate_dist_browser_RotateUpdater_js.js +1 -1
- package/updaters_rotate_dist_browser_index_js.js +2 -2
- package/updaters_size_dist_browser_SizeUpdater_js.js +2 -2
- package/updaters_size_dist_browser_index_js.js +2 -2
- package/updaters_strokeColor_dist_browser_StrokeColorUpdater_js.js +2 -2
- package/updaters_strokeColor_dist_browser_index_js.js +2 -2
- package/updaters_tilt_dist_browser_TiltUpdater_js.js +1 -1
- package/updaters_tilt_dist_browser_index_js.js +2 -2
- package/updaters_twinkle_dist_browser_TwinkleUpdater_js.js +2 -2
- package/updaters_twinkle_dist_browser_index_js.js +2 -2
- package/updaters_wobble_dist_browser_WobbleUpdater_js.js +3 -3
- package/updaters_wobble_dist_browser_index_js.js +2 -2
- package/utils_simplexNoise_dist_browser_index_js.js +4 -4
- package/102.min.js +0 -1
- package/1053.min.js +0 -1
- package/1060.min.js +0 -1
- package/1098.min.js +0 -1
- package/1146.min.js +0 -1
- package/1171.min.js +0 -1
- package/1196.min.js +0 -1
- package/1220.min.js +0 -1
- package/1276.min.js +0 -1
- package/1283.min.js +0 -1
- package/1298.min.js +0 -1
- package/1302.min.js +0 -1
- package/1304.min.js +0 -1
- package/134.min.js +0 -1
- package/1368.min.js +0 -1
- package/1411.min.js +0 -1
- package/1513.min.js +0 -1
- package/1553.min.js +0 -1
- package/1556.min.js +0 -1
- package/161.min.js +0 -1
- package/1667.min.js +0 -1
- package/1739.min.js +0 -1
- package/1766.min.js +0 -1
- package/1906.min.js +0 -1
- package/2086.min.js +0 -1
- package/2123.min.js +0 -2
- package/2142.min.js +0 -1
- package/2167.min.js +0 -1
- package/2218.min.js +0 -1
- package/229.min.js +0 -1
- package/2292.min.js +0 -1
- package/2317.min.js +0 -1
- package/2346.min.js +0 -1
- package/2397.min.js +0 -1
- package/241.min.js +0 -1
- package/2418.min.js +0 -1
- package/2488.min.js +0 -1
- package/2541.min.js +0 -1
- package/2553.min.js +0 -1
- package/2569.min.js +0 -1
- package/2609.min.js +0 -1
- package/2616.min.js +0 -1
- package/2618.min.js +0 -1
- package/2642.min.js +0 -1
- package/2715.min.js +0 -1
- package/2738.min.js +0 -1
- package/2846.min.js +0 -1
- package/3037.min.js +0 -1
- package/3091.min.js +0 -1
- package/3093.min.js +0 -1
- package/3130.min.js +0 -1
- package/3136.min.js +0 -1
- package/3138.min.js +0 -1
- package/3194.min.js +0 -1
- package/3216.min.js +0 -1
- package/3257.min.js +0 -1
- package/3296.min.js +0 -1
- package/3391.min.js +0 -1
- package/3407.min.js +0 -1
- package/342.min.js +0 -1
- package/3455.min.js +0 -1
- package/358.min.js +0 -1
- package/3618.min.js +0 -1
- package/3657.min.js +0 -1
- package/3659.min.js +0 -1
- package/366.min.js +0 -1
- package/3663.min.js +0 -1
- package/3713.min.js +0 -1
- package/3715.min.js +0 -1
- package/3747.min.js +0 -1
- package/3766.min.js +0 -1
- package/379.min.js +0 -1
- package/3813.min.js +0 -1
- package/3853.min.js +0 -1
- package/3912.min.js +0 -1
- package/4067.min.js +0 -1
- package/4082.min.js +0 -1
- package/4089.min.js +0 -1
- package/4141.min.js +0 -1
- package/4149.min.js +0 -1
- package/4257.min.js +0 -1
- package/4268.min.js +0 -1
- package/4270.min.js +0 -1
- package/4285.min.js +0 -1
- package/4292.min.js +0 -1
- package/4385.min.js +0 -1
- package/439.min.js +0 -1
- package/4413.min.js +0 -1
- package/4424.min.js +0 -1
- package/4462.min.js +0 -1
- package/4463.min.js +0 -1
- package/449.min.js +0 -1
- package/4532.min.js +0 -1
- package/4572.min.js +0 -1
- package/4660.min.js +0 -1
- package/4669.min.js +0 -1
- package/4671.min.js +0 -1
- package/468.min.js +0 -1
- package/4683.min.js +0 -1
- package/4708.min.js +0 -1
- package/4792.min.js +0 -1
- package/485.min.js +0 -1
- package/4894.min.js +0 -1
- package/4932.min.js +0 -1
- package/514.min.js +0 -1
- package/5157.min.js +0 -1
- package/521.min.js +0 -1
- package/5315.min.js +0 -1
- package/5322.min.js +0 -1
- package/533.min.js +0 -1
- package/5390.min.js +0 -1
- package/5406.min.js +0 -1
- package/5478.min.js +0 -1
- package/5531.min.js +0 -1
- package/5538.min.js +0 -1
- package/5552.min.js +0 -1
- package/5558.min.js +0 -1
- package/5638.min.js +0 -1
- package/5712.min.js +0 -1
- package/5723.min.js +0 -1
- package/5740.min.js +0 -1
- package/5833.min.js +0 -1
- package/5901.min.js +0 -1
- package/6058.min.js +0 -1
- package/6066.min.js +0 -1
- package/608.min.js +0 -1
- package/6098.min.js +0 -1
- package/6101.min.js +0 -1
- package/6179.min.js +0 -1
- package/6193.min.js +0 -1
- package/6211.min.js +0 -1
- package/622.min.js +0 -1
- package/6221.min.js +0 -1
- package/6299.min.js +0 -1
- package/6351.min.js +0 -1
- package/6387.min.js +0 -1
- package/6405.min.js +0 -1
- package/644.min.js +0 -1
- package/6450.min.js +0 -1
- package/6465.min.js +0 -1
- package/65.min.js +0 -1
- package/653.min.js +0 -1
- package/6583.min.js +0 -1
- package/6638.min.js +0 -1
- package/6684.min.js +0 -1
- package/6839.min.js +0 -1
- package/6900.min.js +0 -1
- package/6970.min.js +0 -1
- package/6982.min.js +0 -1
- package/6986.min.js +0 -1
- package/701.min.js +0 -1
- package/702.min.js +0 -1
- package/7028.min.js +0 -1
- package/7116.min.js +0 -1
- package/7256.min.js +0 -1
- package/7318.min.js +0 -1
- package/7377.min.js +0 -1
- package/7398.min.js +0 -1
- package/742.min.js +0 -1
- package/7449.min.js +0 -1
- package/7475.min.js +0 -1
- package/7559.min.js +0 -1
- package/7622.min.js +0 -2
- package/7646.min.js +0 -1
- package/7724.min.js +0 -1
- package/7812.min.js +0 -1
- package/787.min.js +0 -1
- package/7925.min.js +0 -1
- package/7977.min.js +0 -1
- package/8032.min.js +0 -1
- package/8061.min.js +0 -1
- package/8109.min.js +0 -1
- package/811.min.js +0 -1
- package/8214.min.js +0 -1
- package/8222.min.js +0 -1
- package/8248.min.js +0 -1
- package/8315.min.js +0 -1
- package/8322.min.js +0 -1
- package/8383.min.js +0 -1
- package/8386.min.js +0 -1
- package/84.min.js +0 -1
- package/8476.min.js +0 -1
- package/8484.min.js +0 -1
- package/8517.min.js +0 -1
- package/8565.min.js +0 -1
- package/8589.min.js +0 -1
- package/8620.min.js +0 -1
- package/8689.min.js +0 -1
- package/8756.min.js +0 -1
- package/881.min.js +0 -1
- package/8815.min.js +0 -1
- package/8819.min.js +0 -1
- package/8826.min.js +0 -1
- package/8841.min.js +0 -1
- package/8843.min.js +0 -1
- package/8902.min.js +0 -1
- package/8926.min.js +0 -2
- package/9082.min.js +0 -1
- package/916.min.js +0 -1
- package/9177.min.js +0 -1
- package/9345.min.js +0 -1
- package/9352.min.js +0 -1
- package/9544.min.js +0 -1
- package/9565.min.js +0 -1
- package/9578.min.js +0 -1
- package/9611.min.js +0 -1
- package/9613.min.js +0 -1
- package/9666.min.js +0 -1
- package/9739.min.js +0 -1
- package/9956.min.js +0 -1
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Demo / Generator : https://particles.js.org/
|
|
5
5
|
* GitHub : https://www.github.com/matteobruni/tsparticles
|
|
6
6
|
* How to use? : Check the GitHub README
|
|
7
|
-
* v4.0.0-beta.
|
|
7
|
+
* v4.0.0-beta.1
|
|
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 */ PolygonMaskInstance: () => (/* binding */ PolygonMaskInstance)\n/* harmony export */ });\n/* harmony import */ var _pathseg_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pathseg.js */ \"../../plugins/polygonMask/dist/browser/pathseg.js\");\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils.js */ \"../../plugins/polygonMask/dist/browser/utils.js\");\n/* harmony import */ var _Enums_PolygonMaskInlineArrangement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Enums/PolygonMaskInlineArrangement.js */ \"../../plugins/polygonMask/dist/browser/Enums/PolygonMaskInlineArrangement.js\");\n/* harmony import */ var _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Enums/PolygonMaskType.js */ \"../../plugins/polygonMask/dist/browser/Enums/PolygonMaskType.js\");\n\n\n\n\n\nconst noPolygonDataLoaded = `No polygon data loaded.`, noPolygonFound = `No polygon found, you need to specify SVG url in config.`;\nclass PolygonMaskInstance {\n dimension;\n offset;\n paths;\n raw;\n redrawTimeout;\n _container;\n _engine;\n _moveRadius;\n _scale;\n constructor(container, engine){\n this._container = container;\n this._engine = engine;\n this.dimension = {\n height: 0,\n width: 0\n };\n this._moveRadius = 0;\n this._scale = 1;\n }\n clickPositionValid(position) {\n const options = this._container.actualOptions.polygon;\n return !!options?.enable && options.type !== _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_4__.PolygonMaskType.none && options.type !== _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_4__.PolygonMaskType.inline && this._checkInsidePolygon(position);\n }\n draw(context) {\n if (!this.paths?.length) {\n return;\n }\n const options = this._container.actualOptions.polygon;\n if (!options?.enable) {\n return;\n }\n const polygonDraw = options.draw;\n if (!polygonDraw.enable) {\n return;\n }\n const rawData = this.raw;\n for (const path of this.paths){\n const path2d = path.path2d;\n if (path2d && this.offset) {\n (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.drawPolygonMaskPath)(this._engine, context, path2d, polygonDraw.stroke, this.offset, this._container.hdr);\n } else if (rawData) {\n (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.drawPolygonMask)(this._engine, context, rawData, polygonDraw.stroke, this._container.hdr);\n }\n }\n }\n async init() {\n const container = this._container, polygonMaskOptions = container.actualOptions.polygon, pxRatio = container.retina.pixelRatio;\n if (!polygonMaskOptions) {\n return;\n }\n this._moveRadius = polygonMaskOptions.move.radius * pxRatio;\n this._scale = polygonMaskOptions.scale * pxRatio;\n if (polygonMaskOptions.enable) {\n await this._initRawData();\n }\n }\n particleBounce(particle, delta, direction) {\n return this._polygonBounce(particle, delta, direction);\n }\n particlePosition(position) {\n const options = this._container.actualOptions.polygon, defaultLength = 0;\n if (!(options?.enable && (this.raw?.length ?? defaultLength) > defaultLength)) {\n return;\n }\n return (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.deepExtend)({}, position ?? this._randomPoint());\n }\n particlesInitialization() {\n const options = this._container.actualOptions.polygon;\n if (options?.enable && options.type === _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_4__.PolygonMaskType.inline && (options.inline.arrangement === _Enums_PolygonMaskInlineArrangement_js__WEBPACK_IMPORTED_MODULE_3__.PolygonMaskInlineArrangement.onePerPoint || options.inline.arrangement === _Enums_PolygonMaskInlineArrangement_js__WEBPACK_IMPORTED_MODULE_3__.PolygonMaskInlineArrangement.perPoint)) {\n this._drawPoints();\n return true;\n }\n return false;\n }\n resize() {\n const container = this._container, options = container.actualOptions.polygon;\n if (!(options?.enable && options.type !== _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_4__.PolygonMaskType.none)) {\n return;\n }\n if (this.redrawTimeout) {\n clearTimeout(this.redrawTimeout);\n }\n const timeout = 250;\n this.redrawTimeout = setTimeout(()=>{\n void (async ()=>{\n await this._initRawData(true);\n await container.particles.redraw();\n })();\n }, timeout);\n }\n stop() {\n delete this.raw;\n delete this.paths;\n }\n _checkInsidePolygon = (position)=>{\n const container = this._container, options = container.actualOptions.polygon;\n if (!options?.enable || options.type === _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_4__.PolygonMaskType.none || options.type === _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_4__.PolygonMaskType.inline) {\n return true;\n }\n if (!this.raw) {\n throw new Error(noPolygonFound);\n }\n const canvasSize = container.canvas.size, x = position?.x ?? (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.getRandom)() * canvasSize.width, y = position?.y ?? (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.getRandom)() * canvasSize.height, indexOffset = 1;\n let inside = false;\n for(let i = 0, j = this.raw.length - indexOffset; i < this.raw.length; j = i++){\n const pi = this.raw[i], pj = this.raw[j];\n if (!pi || !pj) {\n continue;\n }\n const intersect = pi.y > y !== pj.y > y && x < (pj.x - pi.x) * (y - pi.y) / (pj.y - pi.y) + pi.x;\n if (intersect) {\n inside = !inside;\n }\n }\n if (options.type === _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_4__.PolygonMaskType.inside) {\n return inside;\n } else {\n return !inside;\n }\n };\n _createPath2D = ()=>{\n const container = this._container, options = container.actualOptions.polygon;\n if (!options || !this.paths?.length) {\n return;\n }\n for (const path of this.paths){\n const pathData = path.element.getAttribute(\"d\");\n if (pathData) {\n const path2d = new Path2D(pathData), matrix = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.safeDocument)().createElementNS(\"http://www.w3.org/2000/svg\", \"svg\").createSVGMatrix(), finalPath = new Path2D(), transform = matrix.scale(this._scale);\n finalPath.addPath(path2d, transform);\n path.path2d = finalPath;\n } else {\n delete path.path2d;\n }\n if (path.path2d ?? !this.raw) {\n continue;\n }\n path.path2d = new Path2D();\n const firstIndex = 0, firstPoint = this.raw[firstIndex];\n if (!firstPoint) {\n continue;\n }\n path.path2d.moveTo(firstPoint.x, firstPoint.y);\n this.raw.forEach((pos, i)=>{\n if (i > firstIndex) {\n path.path2d?.lineTo(pos.x, pos.y);\n }\n });\n path.path2d.closePath();\n }\n };\n _downloadSvgPath = async (svgUrl, force)=>{\n const options = this._container.actualOptions.polygon;\n if (!options) {\n return;\n }\n const url = svgUrl ?? options.url, forceDownload = force ?? false;\n if (!url || this.paths !== undefined && !forceDownload) {\n return this.raw;\n }\n const req = await fetch(url);\n if (!req.ok) {\n throw new Error(`Error occurred during polygon mask download`);\n }\n return this._parseSvgPath(await req.text(), force);\n };\n _drawPoints = ()=>{\n if (!this.raw) {\n return;\n }\n for (const item of this.raw){\n this._container.particles.addParticle({\n x: item.x,\n y: item.y\n });\n }\n };\n _getEquidistantPointByIndex = (index)=>{\n const container = this._container, options = container.actualOptions, polygonMaskOptions = options.polygon;\n if (!polygonMaskOptions) {\n return;\n }\n if (!this.raw?.length || !this.paths?.length) {\n throw new Error(noPolygonDataLoaded);\n }\n let offset = 0, point;\n const baseAccumulator = 0, totalLength = this.paths.reduce((tot, path)=>tot + path.length, baseAccumulator), distance = totalLength / options.particles.number.value;\n for (const path of this.paths){\n const pathDistance = distance * index - offset;\n if (pathDistance <= path.length) {\n point = path.element.getPointAtLength(pathDistance);\n break;\n } else {\n offset += path.length;\n }\n }\n const scale = this._scale;\n return {\n x: (point?.x ?? _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.originPoint.x) * scale + (this.offset?.x ?? _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.originPoint.x),\n y: (point?.y ?? _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.originPoint.y) * scale + (this.offset?.y ?? _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.originPoint.y)\n };\n };\n _getPointByIndex = (index)=>{\n if (!this.raw?.length) {\n throw new Error(noPolygonDataLoaded);\n }\n const coords = this.raw[index % this.raw.length];\n if (!coords) {\n return;\n }\n return {\n x: coords.x,\n y: coords.y\n };\n };\n _getRandomPoint = ()=>{\n if (!this.raw?.length) {\n throw new Error(noPolygonDataLoaded);\n }\n const coords = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.itemFromArray)(this.raw);\n if (!coords) {\n return;\n }\n return {\n x: coords.x,\n y: coords.y\n };\n };\n _getRandomPointByLength = ()=>{\n const container = this._container, options = container.actualOptions.polygon;\n if (!options) {\n return;\n }\n if (!this.raw?.length || !this.paths?.length) {\n throw new Error(noPolygonDataLoaded);\n }\n const path = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.itemFromArray)(this.paths);\n if (!path) {\n return;\n }\n const offset = 1, distance = Math.floor((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.getRandom)() * path.length) + offset, point = path.element.getPointAtLength(distance), scale = this._scale;\n return {\n x: point.x * scale + (this.offset?.x ?? _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.originPoint.x),\n y: point.y * scale + (this.offset?.y ?? _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.originPoint.y)\n };\n };\n _initRawData = async (force)=>{\n const options = this._container.actualOptions.polygon;\n if (!options) {\n return;\n }\n if (options.url) {\n this.raw = await this._downloadSvgPath(options.url, force);\n } else if (options.data) {\n const data = options.data;\n let svg;\n if ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.isString)(data)) {\n svg = data;\n } else {\n const getPath = (p)=>`<path d=\"${p}\" />`, path = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.isArray)(data.path) ? data.path.map(getPath).join(\"\") : getPath(data.path), namespaces = 'xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"';\n svg = `<svg ${namespaces} width=\"${data.size.width.toString()}\" height=\"${data.size.height.toString()}\">${path}</svg>`;\n }\n this.raw = this._parseSvgPath(svg, force);\n }\n this._createPath2D();\n this._engine.dispatchEvent(\"polygonMaskLoaded\", {\n container: this._container\n });\n };\n _parseSvgPath = (xml, force)=>{\n const forceDownload = force ?? false;\n if (this.paths !== undefined && !forceDownload) {\n return this.raw;\n }\n const container = this._container, options = container.actualOptions.polygon;\n if (!options) {\n return;\n }\n const parser = new DOMParser(), doc = parser.parseFromString(xml, \"image/svg+xml\"), firstIndex = 0, svg = doc.getElementsByTagName(\"svg\")[firstIndex];\n if (!svg) {\n return;\n }\n let svgPaths = svg.getElementsByTagName(\"path\");\n if (!svgPaths.length) {\n svgPaths = doc.getElementsByTagName(\"path\");\n }\n this.paths = [];\n for(let i = 0; i < svgPaths.length; i++){\n const path = svgPaths.item(i);\n if (path) {\n this.paths.push({\n element: path,\n length: path.getTotalLength()\n });\n }\n }\n const scale = this._scale;\n this.dimension.width = parseFloat(svg.getAttribute(\"width\") ?? \"0\") * scale;\n this.dimension.height = parseFloat(svg.getAttribute(\"height\") ?? \"0\") * scale;\n const position = options.position ?? {\n x: 50,\n y: 50\n }, canvasSize = container.canvas.size;\n this.offset = {\n x: canvasSize.width * position.x / _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.percentDenominator - this.dimension.width * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.half,\n y: canvasSize.height * position.y / _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.percentDenominator - this.dimension.height * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.half\n };\n return (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.parsePaths)(this.paths, scale, this.offset);\n };\n _polygonBounce = (particle, _delta, direction)=>{\n const options = this._container.actualOptions.polygon;\n if (!this.raw || !options?.enable || direction !== _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.OutModeDirection.top) {\n return false;\n }\n if (options.type === _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_4__.PolygonMaskType.inside || options.type === _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_4__.PolygonMaskType.outside) {\n let closest, dx, dy;\n const pos = particle.getPosition(), radius = particle.getRadius(), offset = 1;\n for(let i = 0, j = this.raw.length - offset; i < this.raw.length; j = i++){\n const pi = this.raw[i], pj = this.raw[j];\n if (!pi || !pj) {\n continue;\n }\n closest = (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.calcClosestPointOnSegment)(pi, pj, pos);\n const dist = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.getDistances)(pos, closest);\n [dx, dy] = [\n dist.dx,\n dist.dy\n ];\n if (dist.distance < radius) {\n (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.segmentBounce)(pi, pj, particle.velocity);\n return true;\n }\n }\n if (closest && dx !== undefined && dy !== undefined && !this._checkInsidePolygon(pos)) {\n const factor = {\n x: 1,\n y: 1\n }, diameter = radius * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.double, inverse = -1;\n if (pos.x >= closest.x) {\n factor.x = -1;\n }\n if (pos.y >= closest.y) {\n factor.y = -1;\n }\n particle.position.x = closest.x + diameter * factor.x;\n particle.position.y = closest.y + diameter * factor.y;\n particle.velocity.mult(inverse);\n return true;\n }\n } else if (options.type === _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_4__.PolygonMaskType.inline) {\n const dist = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.getDistance)(particle.initialPosition, particle.getPosition()), { velocity } = particle;\n if (dist > this._moveRadius) {\n velocity.x = velocity.y * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.half - velocity.x;\n velocity.y = velocity.x * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.half - velocity.y;\n return true;\n }\n }\n return false;\n };\n _randomPoint = ()=>{\n const container = this._container, options = container.actualOptions.polygon;\n if (!options) {\n return;\n }\n let position;\n if (options.type === _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_4__.PolygonMaskType.inline) {\n switch(options.inline.arrangement){\n case _Enums_PolygonMaskInlineArrangement_js__WEBPACK_IMPORTED_MODULE_3__.PolygonMaskInlineArrangement.randomPoint:\n position = this._getRandomPoint();\n break;\n case _Enums_PolygonMaskInlineArrangement_js__WEBPACK_IMPORTED_MODULE_3__.PolygonMaskInlineArrangement.randomLength:\n position = this._getRandomPointByLength();\n break;\n case _Enums_PolygonMaskInlineArrangement_js__WEBPACK_IMPORTED_MODULE_3__.PolygonMaskInlineArrangement.equidistant:\n position = this._getEquidistantPointByIndex(container.particles.count);\n break;\n case _Enums_PolygonMaskInlineArrangement_js__WEBPACK_IMPORTED_MODULE_3__.PolygonMaskInlineArrangement.onePerPoint:\n case _Enums_PolygonMaskInlineArrangement_js__WEBPACK_IMPORTED_MODULE_3__.PolygonMaskInlineArrangement.perPoint:\n default:\n position = this._getPointByIndex(container.particles.count);\n }\n } else {\n const canvasSize = container.canvas.size;\n position = {\n x: (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.getRandom)() * canvasSize.width,\n y: (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.getRandom)() * canvasSize.height\n };\n }\n if (this._checkInsidePolygon(position)) {\n return position;\n } else {\n return this._randomPoint();\n }\n };\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../plugins/polygonMask/dist/browser/PolygonMaskInstance.js?\n}");
|
|
26
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PolygonMaskInstance: () => (/* binding */ PolygonMaskInstance)\n/* harmony export */ });\n/* harmony import */ var _pathseg_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pathseg.js */ \"../../plugins/polygonMask/dist/browser/pathseg.js\");\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils.js */ \"../../plugins/polygonMask/dist/browser/utils.js\");\n/* harmony import */ var _Enums_PolygonMaskInlineArrangement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Enums/PolygonMaskInlineArrangement.js */ \"../../plugins/polygonMask/dist/browser/Enums/PolygonMaskInlineArrangement.js\");\n/* harmony import */ var _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Enums/PolygonMaskType.js */ \"../../plugins/polygonMask/dist/browser/Enums/PolygonMaskType.js\");\n\n\n\n\n\nconst noPolygonDataLoaded = `No polygon data loaded.`, noPolygonFound = `No polygon found, you need to specify SVG url in config.`;\nclass PolygonMaskInstance {\n dimension;\n offset;\n paths;\n raw;\n redrawTimeout;\n _container;\n _moveRadius;\n _pluginManager;\n _scale;\n constructor(pluginManager, container){\n this._container = container;\n this._pluginManager = pluginManager;\n this.dimension = {\n height: 0,\n width: 0\n };\n this._moveRadius = 0;\n this._scale = 1;\n }\n clickPositionValid(position) {\n const options = this._container.actualOptions.polygon;\n return !!options?.enable && options.type !== _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_4__.PolygonMaskType.none && options.type !== _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_4__.PolygonMaskType.inline && this._checkInsidePolygon(position);\n }\n draw(context) {\n if (!this.paths?.length) {\n return;\n }\n const options = this._container.actualOptions.polygon;\n if (!options?.enable) {\n return;\n }\n const polygonDraw = options.draw;\n if (!polygonDraw.enable) {\n return;\n }\n const rawData = this.raw;\n for (const path of this.paths){\n const path2d = path.path2d;\n if (path2d && this.offset) {\n (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.drawPolygonMaskPath)(this._pluginManager, context, path2d, polygonDraw.stroke, this.offset, this._container.hdr);\n } else if (rawData) {\n (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.drawPolygonMask)(this._pluginManager, context, rawData, polygonDraw.stroke, this._container.hdr);\n }\n }\n }\n async init() {\n const container = this._container, polygonMaskOptions = container.actualOptions.polygon, pxRatio = container.retina.pixelRatio;\n if (!polygonMaskOptions) {\n return;\n }\n this._moveRadius = polygonMaskOptions.move.radius * pxRatio;\n this._scale = polygonMaskOptions.scale * pxRatio;\n if (polygonMaskOptions.enable) {\n await this._initRawData();\n }\n }\n particleBounce(particle, delta, direction) {\n return this._polygonBounce(particle, delta, direction);\n }\n particlePosition(position) {\n const options = this._container.actualOptions.polygon, defaultLength = 0;\n if (!(options?.enable && (this.raw?.length ?? defaultLength) > defaultLength)) {\n return;\n }\n return (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.deepExtend)({}, position ?? this._randomPoint());\n }\n particlesInitialization() {\n const options = this._container.actualOptions.polygon;\n if (options?.enable && options.type === _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_4__.PolygonMaskType.inline && (options.inline.arrangement === _Enums_PolygonMaskInlineArrangement_js__WEBPACK_IMPORTED_MODULE_3__.PolygonMaskInlineArrangement.onePerPoint || options.inline.arrangement === _Enums_PolygonMaskInlineArrangement_js__WEBPACK_IMPORTED_MODULE_3__.PolygonMaskInlineArrangement.perPoint)) {\n this._drawPoints();\n return true;\n }\n return false;\n }\n resize() {\n const container = this._container, options = container.actualOptions.polygon;\n if (!(options?.enable && options.type !== _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_4__.PolygonMaskType.none)) {\n return;\n }\n if (this.redrawTimeout) {\n clearTimeout(this.redrawTimeout);\n }\n const timeout = 250;\n this.redrawTimeout = setTimeout(()=>{\n void (async ()=>{\n await this._initRawData(true);\n await container.particles.redraw();\n })();\n }, timeout);\n }\n stop() {\n delete this.raw;\n delete this.paths;\n }\n _checkInsidePolygon = (position)=>{\n const container = this._container, options = container.actualOptions.polygon;\n if (!options?.enable || options.type === _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_4__.PolygonMaskType.none || options.type === _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_4__.PolygonMaskType.inline) {\n return true;\n }\n if (!this.raw) {\n throw new Error(noPolygonFound);\n }\n const canvasSize = container.canvas.size, x = position?.x ?? (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.getRandom)() * canvasSize.width, y = position?.y ?? (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.getRandom)() * canvasSize.height, indexOffset = 1;\n let inside = false;\n for(let i = 0, j = this.raw.length - indexOffset; i < this.raw.length; j = i++){\n const pi = this.raw[i], pj = this.raw[j];\n if (!pi || !pj) {\n continue;\n }\n const intersect = pi.y > y !== pj.y > y && x < (pj.x - pi.x) * (y - pi.y) / (pj.y - pi.y) + pi.x;\n if (intersect) {\n inside = !inside;\n }\n }\n if (options.type === _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_4__.PolygonMaskType.inside) {\n return inside;\n } else {\n return !inside;\n }\n };\n _createPath2D = ()=>{\n const container = this._container, options = container.actualOptions.polygon;\n if (!options || !this.paths?.length) {\n return;\n }\n for (const path of this.paths){\n const pathData = path.element.getAttribute(\"d\");\n if (pathData) {\n const path2d = new Path2D(pathData), matrix = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.safeDocument)().createElementNS(\"http://www.w3.org/2000/svg\", \"svg\").createSVGMatrix(), finalPath = new Path2D(), transform = matrix.scale(this._scale);\n finalPath.addPath(path2d, transform);\n path.path2d = finalPath;\n } else {\n delete path.path2d;\n }\n if (path.path2d ?? !this.raw) {\n continue;\n }\n path.path2d = new Path2D();\n const firstIndex = 0, firstPoint = this.raw[firstIndex];\n if (!firstPoint) {\n continue;\n }\n path.path2d.moveTo(firstPoint.x, firstPoint.y);\n this.raw.forEach((pos, i)=>{\n if (i > firstIndex) {\n path.path2d?.lineTo(pos.x, pos.y);\n }\n });\n path.path2d.closePath();\n }\n };\n _downloadSvgPath = async (svgUrl, force)=>{\n const options = this._container.actualOptions.polygon;\n if (!options) {\n return;\n }\n const url = svgUrl ?? options.url, forceDownload = force ?? false;\n if (!url || this.paths !== undefined && !forceDownload) {\n return this.raw;\n }\n const req = await fetch(url);\n if (!req.ok) {\n throw new Error(`Error occurred during polygon mask download`);\n }\n return this._parseSvgPath(await req.text(), force);\n };\n _drawPoints = ()=>{\n if (!this.raw) {\n return;\n }\n for (const item of this.raw){\n this._container.particles.addParticle({\n x: item.x,\n y: item.y\n });\n }\n };\n _getEquidistantPointByIndex = (index)=>{\n const container = this._container, options = container.actualOptions, polygonMaskOptions = options.polygon;\n if (!polygonMaskOptions) {\n return;\n }\n if (!this.raw?.length || !this.paths?.length) {\n throw new Error(noPolygonDataLoaded);\n }\n let offset = 0, point;\n const baseAccumulator = 0, totalLength = this.paths.reduce((tot, path)=>tot + path.length, baseAccumulator), distance = totalLength / options.particles.number.value;\n for (const path of this.paths){\n const pathDistance = distance * index - offset;\n if (pathDistance <= path.length) {\n point = path.element.getPointAtLength(pathDistance);\n break;\n } else {\n offset += path.length;\n }\n }\n const scale = this._scale;\n return {\n x: (point?.x ?? _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.originPoint.x) * scale + (this.offset?.x ?? _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.originPoint.x),\n y: (point?.y ?? _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.originPoint.y) * scale + (this.offset?.y ?? _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.originPoint.y)\n };\n };\n _getPointByIndex = (index)=>{\n if (!this.raw?.length) {\n throw new Error(noPolygonDataLoaded);\n }\n const coords = this.raw[index % this.raw.length];\n if (!coords) {\n return;\n }\n return {\n x: coords.x,\n y: coords.y\n };\n };\n _getRandomPoint = ()=>{\n if (!this.raw?.length) {\n throw new Error(noPolygonDataLoaded);\n }\n const coords = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.itemFromArray)(this.raw);\n if (!coords) {\n return;\n }\n return {\n x: coords.x,\n y: coords.y\n };\n };\n _getRandomPointByLength = ()=>{\n const container = this._container, options = container.actualOptions.polygon;\n if (!options) {\n return;\n }\n if (!this.raw?.length || !this.paths?.length) {\n throw new Error(noPolygonDataLoaded);\n }\n const path = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.itemFromArray)(this.paths);\n if (!path) {\n return;\n }\n const offset = 1, distance = Math.floor((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.getRandom)() * path.length) + offset, point = path.element.getPointAtLength(distance), scale = this._scale;\n return {\n x: point.x * scale + (this.offset?.x ?? _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.originPoint.x),\n y: point.y * scale + (this.offset?.y ?? _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.originPoint.y)\n };\n };\n _initRawData = async (force)=>{\n const options = this._container.actualOptions.polygon;\n if (!options) {\n return;\n }\n if (options.url) {\n this.raw = await this._downloadSvgPath(options.url, force);\n } else if (options.data) {\n const data = options.data;\n let svg;\n if ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.isString)(data)) {\n svg = data;\n } else {\n const getPath = (p)=>`<path d=\"${p}\" />`, path = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.isArray)(data.path) ? data.path.map(getPath).join(\"\") : getPath(data.path), namespaces = 'xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"';\n svg = `<svg ${namespaces} width=\"${data.size.width.toString()}\" height=\"${data.size.height.toString()}\">${path}</svg>`;\n }\n this.raw = this._parseSvgPath(svg, force);\n }\n this._createPath2D();\n this._container.dispatchEvent(\"polygonMaskLoaded\");\n };\n _parseSvgPath = (xml, force)=>{\n const forceDownload = force ?? false;\n if (this.paths !== undefined && !forceDownload) {\n return this.raw;\n }\n const container = this._container, options = container.actualOptions.polygon;\n if (!options) {\n return;\n }\n const parser = new DOMParser(), doc = parser.parseFromString(xml, \"image/svg+xml\"), firstIndex = 0, svg = doc.getElementsByTagName(\"svg\")[firstIndex];\n if (!svg) {\n return;\n }\n let svgPaths = svg.getElementsByTagName(\"path\");\n if (!svgPaths.length) {\n svgPaths = doc.getElementsByTagName(\"path\");\n }\n this.paths = [];\n for(let i = 0; i < svgPaths.length; i++){\n const path = svgPaths.item(i);\n if (path) {\n this.paths.push({\n element: path,\n length: path.getTotalLength()\n });\n }\n }\n const scale = this._scale;\n this.dimension.width = parseFloat(svg.getAttribute(\"width\") ?? \"0\") * scale;\n this.dimension.height = parseFloat(svg.getAttribute(\"height\") ?? \"0\") * scale;\n const position = options.position ?? {\n x: 50,\n y: 50\n }, canvasSize = container.canvas.size;\n this.offset = {\n x: canvasSize.width * position.x / _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.percentDenominator - this.dimension.width * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.half,\n y: canvasSize.height * position.y / _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.percentDenominator - this.dimension.height * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.half\n };\n return (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.parsePaths)(this.paths, scale, this.offset);\n };\n _polygonBounce = (particle, _delta, direction)=>{\n const options = this._container.actualOptions.polygon;\n if (!this.raw || !options?.enable || direction !== _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.OutModeDirection.top) {\n return false;\n }\n if (options.type === _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_4__.PolygonMaskType.inside || options.type === _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_4__.PolygonMaskType.outside) {\n let closest, dx, dy;\n const pos = particle.getPosition(), radius = particle.getRadius(), offset = 1;\n for(let i = 0, j = this.raw.length - offset; i < this.raw.length; j = i++){\n const pi = this.raw[i], pj = this.raw[j];\n if (!pi || !pj) {\n continue;\n }\n closest = (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.calcClosestPointOnSegment)(pi, pj, pos);\n const dist = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.getDistances)(pos, closest);\n [dx, dy] = [\n dist.dx,\n dist.dy\n ];\n if (dist.distance < radius) {\n (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.segmentBounce)(pi, pj, particle.velocity);\n return true;\n }\n }\n if (closest && dx !== undefined && dy !== undefined && !this._checkInsidePolygon(pos)) {\n const factor = {\n x: 1,\n y: 1\n }, diameter = radius * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.double, inverse = -1;\n if (pos.x >= closest.x) {\n factor.x = -1;\n }\n if (pos.y >= closest.y) {\n factor.y = -1;\n }\n particle.position.x = closest.x + diameter * factor.x;\n particle.position.y = closest.y + diameter * factor.y;\n particle.velocity.mult(inverse);\n return true;\n }\n } else if (options.type === _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_4__.PolygonMaskType.inline) {\n const dist = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.getDistance)(particle.initialPosition, particle.getPosition()), { velocity } = particle;\n if (dist > this._moveRadius) {\n velocity.x = velocity.y * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.half - velocity.x;\n velocity.y = velocity.x * _tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.half - velocity.y;\n return true;\n }\n }\n return false;\n };\n _randomPoint = ()=>{\n const container = this._container, options = container.actualOptions.polygon;\n if (!options) {\n return;\n }\n let position;\n if (options.type === _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_4__.PolygonMaskType.inline) {\n switch(options.inline.arrangement){\n case _Enums_PolygonMaskInlineArrangement_js__WEBPACK_IMPORTED_MODULE_3__.PolygonMaskInlineArrangement.randomPoint:\n position = this._getRandomPoint();\n break;\n case _Enums_PolygonMaskInlineArrangement_js__WEBPACK_IMPORTED_MODULE_3__.PolygonMaskInlineArrangement.randomLength:\n position = this._getRandomPointByLength();\n break;\n case _Enums_PolygonMaskInlineArrangement_js__WEBPACK_IMPORTED_MODULE_3__.PolygonMaskInlineArrangement.equidistant:\n position = this._getEquidistantPointByIndex(container.particles.count);\n break;\n case _Enums_PolygonMaskInlineArrangement_js__WEBPACK_IMPORTED_MODULE_3__.PolygonMaskInlineArrangement.onePerPoint:\n case _Enums_PolygonMaskInlineArrangement_js__WEBPACK_IMPORTED_MODULE_3__.PolygonMaskInlineArrangement.perPoint:\n default:\n position = this._getPointByIndex(container.particles.count);\n }\n } else {\n const canvasSize = container.canvas.size;\n position = {\n x: (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.getRandom)() * canvasSize.width,\n y: (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_1__.getRandom)() * canvasSize.height\n };\n }\n if (this._checkInsidePolygon(position)) {\n return position;\n } else {\n return this._randomPoint();\n }\n };\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../plugins/polygonMask/dist/browser/PolygonMaskInstance.js?\n}");
|
|
27
27
|
|
|
28
28
|
/***/ },
|
|
29
29
|
|
|
@@ -43,7 +43,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n\n(function() {\n \"use s
|
|
|
43
43
|
\*******************************************************/
|
|
44
44
|
(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
45
45
|
|
|
46
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ calcClosestPointOnSegment: () => (/* binding */ calcClosestPointOnSegment),\n/* harmony export */ drawPolygonMask: () => (/* binding */ drawPolygonMask),\n/* harmony export */ drawPolygonMaskPath: () => (/* binding */ drawPolygonMaskPath),\n/* harmony export */ parsePaths: () => (/* binding */ parsePaths),\n/* harmony export */ segmentBounce: () => (/* binding */ segmentBounce)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nconst squareExp = 2, inSegmentRange = {\n min: 0,\n max: 1\n};\nfunction drawPolygonMask(
|
|
46
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ calcClosestPointOnSegment: () => (/* binding */ calcClosestPointOnSegment),\n/* harmony export */ drawPolygonMask: () => (/* binding */ drawPolygonMask),\n/* harmony export */ drawPolygonMaskPath: () => (/* binding */ drawPolygonMaskPath),\n/* harmony export */ parsePaths: () => (/* binding */ parsePaths),\n/* harmony export */ segmentBounce: () => (/* binding */ segmentBounce)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nconst squareExp = 2, inSegmentRange = {\n min: 0,\n max: 1\n};\nfunction drawPolygonMask(pluginManager, context, rawData, stroke, hdr = false) {\n const color = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.rangeColorToRgb)(pluginManager, stroke.color);\n if (!color) {\n return;\n }\n const firstIndex = 0, firstItem = rawData[firstIndex];\n if (!firstItem) {\n return;\n }\n context.beginPath();\n context.moveTo(firstItem.x, firstItem.y);\n for (const item of rawData){\n context.lineTo(item.x, item.y);\n }\n context.closePath();\n context.strokeStyle = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getStyleFromRgb)(color, hdr);\n context.lineWidth = stroke.width;\n context.stroke();\n}\nfunction drawPolygonMaskPath(pluginManager, context, path, stroke, position, hdr = false) {\n const defaultTransform = {\n a: 1,\n b: 0,\n c: 0,\n d: 1\n };\n context.setTransform(defaultTransform.a, defaultTransform.b, defaultTransform.c, defaultTransform.d, position.x, position.y);\n const color = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.rangeColorToRgb)(pluginManager, stroke.color);\n if (!color) {\n return;\n }\n context.strokeStyle = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getStyleFromRgb)(color, hdr, stroke.opacity);\n context.lineWidth = stroke.width;\n context.stroke(path);\n context.resetTransform();\n}\nfunction parsePaths(paths, scale, offset) {\n const res = [], defaultCount = 0;\n for (const path of paths){\n const segments = path.element.pathSegList, len = segments?.numberOfItems ?? defaultCount, p = {\n x: 0,\n y: 0\n };\n for(let i = 0; i < len; i++){\n const segment = segments?.getItem(i), svgPathSeg = globalThis.SVGPathSeg;\n switch(segment?.pathSegType){\n case svgPathSeg.PATHSEG_MOVETO_ABS:\n case svgPathSeg.PATHSEG_LINETO_ABS:\n case svgPathSeg.PATHSEG_CURVETO_CUBIC_ABS:\n case svgPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:\n case svgPathSeg.PATHSEG_ARC_ABS:\n case svgPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:\n case svgPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:\n {\n const absSeg = segment;\n p.x = absSeg.x;\n p.y = absSeg.y;\n break;\n }\n case svgPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:\n p.x = segment.x;\n break;\n case svgPathSeg.PATHSEG_LINETO_VERTICAL_ABS:\n p.y = segment.y;\n break;\n case svgPathSeg.PATHSEG_LINETO_REL:\n case svgPathSeg.PATHSEG_MOVETO_REL:\n case svgPathSeg.PATHSEG_CURVETO_CUBIC_REL:\n case svgPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:\n case svgPathSeg.PATHSEG_ARC_REL:\n case svgPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:\n case svgPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:\n {\n const relSeg = segment;\n p.x += relSeg.x;\n p.y += relSeg.y;\n break;\n }\n case svgPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:\n p.x += segment.x;\n break;\n case svgPathSeg.PATHSEG_LINETO_VERTICAL_REL:\n p.y += segment.y;\n break;\n case svgPathSeg.PATHSEG_UNKNOWN:\n case svgPathSeg.PATHSEG_CLOSEPATH:\n continue;\n default:\n continue;\n }\n res.push({\n x: p.x * scale + offset.x,\n y: p.y * scale + offset.y\n });\n }\n }\n return res;\n}\nfunction calcClosestPointOnSegment(s1, s2, pos) {\n const { dx: dx1, dy: dy1 } = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getDistances)(pos, s1), { dx: dx2, dy: dy2 } = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getDistances)(s2, s1), t = (dx1 * dx2 + dy1 * dy2) / (dx2 ** squareExp + dy2 ** squareExp), res = {\n x: s1.x + dx2 * t,\n y: s1.y + dy2 * t,\n isOnSegment: t >= inSegmentRange.min && t <= inSegmentRange.max\n };\n if (t < inSegmentRange.min) {\n res.x = s1.x;\n res.y = s1.y;\n } else if (t > inSegmentRange.max) {\n res.x = s2.x;\n res.y = s2.y;\n }\n return res;\n}\nfunction segmentBounce(start, stop, velocity) {\n const { dx, dy } = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getDistances)(start, stop), wallAngle = Math.atan2(dy, dx), wallNormal = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.create(Math.sin(wallAngle), -Math.cos(wallAngle)), d = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.double * (velocity.x * wallNormal.x + velocity.y * wallNormal.y);\n wallNormal.multTo(d);\n velocity.subFrom(wallNormal);\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../plugins/polygonMask/dist/browser/utils.js?\n}");
|
|
47
47
|
|
|
48
48
|
/***/ }
|
|
49
49
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Demo / Generator : https://particles.js.org/
|
|
5
5
|
* GitHub : https://www.github.com/matteobruni/tsparticles
|
|
6
6
|
* How to use? : Check the GitHub README
|
|
7
|
-
* v4.0.0-beta.
|
|
7
|
+
* v4.0.0-beta.1
|
|
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 */ PolygonMask: () => (/* binding */ PolygonMask)\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 _PolygonMaskDraw_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PolygonMaskDraw.js */ \"../../plugins/polygonMask/dist/browser/Options/Classes/PolygonMaskDraw.js\");\n/* harmony import */ var _PolygonMaskInline_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./PolygonMaskInline.js */ \"../../plugins/polygonMask/dist/browser/Options/Classes/PolygonMaskInline.js\");\n/* harmony import */ var _PolygonMaskLocalSvg_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./PolygonMaskLocalSvg.js */ \"../../plugins/polygonMask/dist/browser/Options/Classes/PolygonMaskLocalSvg.js\");\n/* harmony import */ var _PolygonMaskMove_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./PolygonMaskMove.js */ \"../../plugins/polygonMask/dist/browser/Options/Classes/PolygonMaskMove.js\");\n/* harmony import */ var _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../Enums/PolygonMaskType.js */ \"../../plugins/polygonMask/dist/browser/Enums/PolygonMaskType.js\");\n\n\n\n\n\n\nclass PolygonMask {\n data;\n draw;\n enable;\n inline;\n move;\n position;\n scale;\n type;\n url;\n constructor(
|
|
26
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PolygonMask: () => (/* binding */ PolygonMask)\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 _PolygonMaskDraw_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PolygonMaskDraw.js */ \"../../plugins/polygonMask/dist/browser/Options/Classes/PolygonMaskDraw.js\");\n/* harmony import */ var _PolygonMaskInline_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./PolygonMaskInline.js */ \"../../plugins/polygonMask/dist/browser/Options/Classes/PolygonMaskInline.js\");\n/* harmony import */ var _PolygonMaskLocalSvg_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./PolygonMaskLocalSvg.js */ \"../../plugins/polygonMask/dist/browser/Options/Classes/PolygonMaskLocalSvg.js\");\n/* harmony import */ var _PolygonMaskMove_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./PolygonMaskMove.js */ \"../../plugins/polygonMask/dist/browser/Options/Classes/PolygonMaskMove.js\");\n/* harmony import */ var _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../Enums/PolygonMaskType.js */ \"../../plugins/polygonMask/dist/browser/Enums/PolygonMaskType.js\");\n\n\n\n\n\n\nclass PolygonMask {\n data;\n draw;\n enable;\n inline;\n move;\n position;\n scale;\n type;\n url;\n constructor(pluginManager){\n this.draw = new _PolygonMaskDraw_js__WEBPACK_IMPORTED_MODULE_1__.PolygonMaskDraw(pluginManager);\n this.enable = false;\n this.inline = new _PolygonMaskInline_js__WEBPACK_IMPORTED_MODULE_2__.PolygonMaskInline();\n this.move = new _PolygonMaskMove_js__WEBPACK_IMPORTED_MODULE_4__.PolygonMaskMove();\n this.scale = 1;\n this.type = _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_5__.PolygonMaskType.none;\n }\n load(data) {\n if ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isNull)(data)) {\n return;\n }\n this.draw.load(data.draw);\n this.inline.load(data.inline);\n this.move.load(data.move);\n if (data.scale !== undefined) {\n this.scale = data.scale;\n }\n if (data.type !== undefined) {\n this.type = data.type;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n } else {\n this.enable = this.type !== _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_5__.PolygonMaskType.none;\n }\n if (data.url !== undefined) {\n this.url = data.url;\n }\n if (data.data !== undefined) {\n if ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isString)(data.data)) {\n this.data = data.data;\n } else {\n this.data = new _PolygonMaskLocalSvg_js__WEBPACK_IMPORTED_MODULE_3__.PolygonMaskLocalSvg();\n this.data.load(data.data);\n }\n }\n if (data.position !== undefined) {\n this.position = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.deepExtend)({}, data.position);\n }\n }\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../plugins/polygonMask/dist/browser/Options/Classes/PolygonMask.js?\n}");
|
|
27
27
|
|
|
28
28
|
/***/ },
|
|
29
29
|
|
|
@@ -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 */ PolygonMaskDraw: () => (/* binding */ PolygonMaskDraw)\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 _PolygonMaskDrawStroke_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PolygonMaskDrawStroke.js */ \"../../plugins/polygonMask/dist/browser/Options/Classes/PolygonMaskDrawStroke.js\");\n\n\nclass PolygonMaskDraw {\n enable;\n stroke;\n constructor(
|
|
36
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PolygonMaskDraw: () => (/* binding */ PolygonMaskDraw)\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 _PolygonMaskDrawStroke_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PolygonMaskDrawStroke.js */ \"../../plugins/polygonMask/dist/browser/Options/Classes/PolygonMaskDrawStroke.js\");\n\n\nclass PolygonMaskDraw {\n enable;\n stroke;\n constructor(pluginManager){\n this.enable = false;\n this.stroke = new _PolygonMaskDrawStroke_js__WEBPACK_IMPORTED_MODULE_1__.PolygonMaskDrawStroke(pluginManager);\n }\n load(data) {\n if ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isNull)(data)) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n const stroke = data.stroke;\n this.stroke.load(stroke);\n }\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../plugins/polygonMask/dist/browser/Options/Classes/PolygonMaskDraw.js?\n}");
|
|
37
37
|
|
|
38
38
|
/***/ },
|
|
39
39
|
|
|
@@ -43,7 +43,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
|
|
|
43
43
|
\***************************************************************************************/
|
|
44
44
|
(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
45
45
|
|
|
46
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PolygonMaskDrawStroke: () => (/* binding */ PolygonMaskDrawStroke)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nclass PolygonMaskDrawStroke {\n color;\n opacity;\n width;\n
|
|
46
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PolygonMaskDrawStroke: () => (/* binding */ PolygonMaskDrawStroke)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nclass PolygonMaskDrawStroke {\n color;\n opacity;\n width;\n _pluginManager;\n constructor(pluginManager){\n this._pluginManager = pluginManager;\n this.color = new _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.OptionsColor();\n this.width = 0.5;\n this.opacity = 1;\n }\n load(data) {\n if ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isNull)(data)) {\n return;\n }\n this.color = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.OptionsColor.create(this.color, data.color);\n if ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isString)(this.color.value)) {\n this.opacity = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.stringToAlpha)(this._pluginManager, this.color.value) ?? this.opacity;\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n if (data.width !== undefined) {\n this.width = data.width;\n }\n }\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../plugins/polygonMask/dist/browser/Options/Classes/PolygonMaskDrawStroke.js?\n}");
|
|
47
47
|
|
|
48
48
|
/***/ },
|
|
49
49
|
|
|
@@ -83,7 +83,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
|
|
|
83
83
|
\*******************************************************************/
|
|
84
84
|
(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
85
85
|
|
|
86
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PolygonMaskPlugin: () => (/* binding */ PolygonMaskPlugin)\n/* harmony export */ });\n/* harmony import */ var _Options_Classes_PolygonMask_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Options/Classes/PolygonMask.js */ \"../../plugins/polygonMask/dist/browser/Options/Classes/PolygonMask.js\");\n/* harmony import */ var _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Enums/PolygonMaskType.js */ \"../../plugins/polygonMask/dist/browser/Enums/PolygonMaskType.js\");\n\n\nclass PolygonMaskPlugin {\n id = \"polygon-mask\";\n
|
|
86
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PolygonMaskPlugin: () => (/* binding */ PolygonMaskPlugin)\n/* harmony export */ });\n/* harmony import */ var _Options_Classes_PolygonMask_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Options/Classes/PolygonMask.js */ \"../../plugins/polygonMask/dist/browser/Options/Classes/PolygonMask.js\");\n/* harmony import */ var _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Enums/PolygonMaskType.js */ \"../../plugins/polygonMask/dist/browser/Enums/PolygonMaskType.js\");\n\n\nclass PolygonMaskPlugin {\n id = \"polygon-mask\";\n _pluginManager;\n constructor(pluginManager){\n this._pluginManager = pluginManager;\n }\n async getPlugin(container) {\n const { PolygonMaskInstance } = await __webpack_require__.e(/*! import() */ \"plugins_polygonMask_dist_browser_PolygonMaskInstance_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./PolygonMaskInstance.js */ \"../../plugins/polygonMask/dist/browser/PolygonMaskInstance.js\"));\n return new PolygonMaskInstance(this._pluginManager, container);\n }\n loadOptions(_container, options, source) {\n if (!this.needsPlugin(options) && !this.needsPlugin(source)) {\n return;\n }\n let polygonOptions = options.polygon;\n if (polygonOptions?.load === undefined) {\n options.polygon = polygonOptions = new _Options_Classes_PolygonMask_js__WEBPACK_IMPORTED_MODULE_0__.PolygonMask(this._pluginManager);\n }\n polygonOptions.load(source?.polygon);\n }\n needsPlugin(options) {\n return options?.polygon?.enable ?? (options?.polygon?.type !== undefined && options.polygon.type !== _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_1__.PolygonMaskType.none);\n }\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../plugins/polygonMask/dist/browser/PolygonMaskPlugin.js?\n}");
|
|
87
87
|
|
|
88
88
|
/***/ }
|
|
89
89
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Demo / Generator : https://particles.js.org/
|
|
5
5
|
* GitHub : https://www.github.com/matteobruni/tsparticles
|
|
6
6
|
* How to use? : Check the GitHub README
|
|
7
|
-
* v4.0.0-beta.
|
|
7
|
+
* v4.0.0-beta.1
|
|
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 */ PolygonMaskInlineArrangement: () => (/* reexport safe */ _Enums_PolygonMaskInlineArrangement_js__WEBPACK_IMPORTED_MODULE_0__.PolygonMaskInlineArrangement),\n/* harmony export */ PolygonMaskMoveType: () => (/* reexport safe */ _Enums_PolygonMaskMoveType_js__WEBPACK_IMPORTED_MODULE_1__.PolygonMaskMoveType),\n/* harmony export */ PolygonMaskType: () => (/* reexport safe */ _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_2__.PolygonMaskType),\n/* harmony export */ loadPolygonMaskPlugin: () => (/* binding */ loadPolygonMaskPlugin)\n/* harmony export */ });\n/* harmony import */ var _Enums_PolygonMaskInlineArrangement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Enums/PolygonMaskInlineArrangement.js */ \"../../plugins/polygonMask/dist/browser/Enums/PolygonMaskInlineArrangement.js\");\n/* harmony import */ var _Enums_PolygonMaskMoveType_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Enums/PolygonMaskMoveType.js */ \"../../plugins/polygonMask/dist/browser/Enums/PolygonMaskMoveType.js\");\n/* harmony import */ var _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Enums/PolygonMaskType.js */ \"../../plugins/polygonMask/dist/browser/Enums/PolygonMaskType.js\");\nasync function loadPolygonMaskPlugin(engine) {\n engine.checkVersion(\"4.0.0-beta.
|
|
56
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PolygonMaskInlineArrangement: () => (/* reexport safe */ _Enums_PolygonMaskInlineArrangement_js__WEBPACK_IMPORTED_MODULE_0__.PolygonMaskInlineArrangement),\n/* harmony export */ PolygonMaskMoveType: () => (/* reexport safe */ _Enums_PolygonMaskMoveType_js__WEBPACK_IMPORTED_MODULE_1__.PolygonMaskMoveType),\n/* harmony export */ PolygonMaskType: () => (/* reexport safe */ _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_2__.PolygonMaskType),\n/* harmony export */ loadPolygonMaskPlugin: () => (/* binding */ loadPolygonMaskPlugin)\n/* harmony export */ });\n/* harmony import */ var _Enums_PolygonMaskInlineArrangement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Enums/PolygonMaskInlineArrangement.js */ \"../../plugins/polygonMask/dist/browser/Enums/PolygonMaskInlineArrangement.js\");\n/* harmony import */ var _Enums_PolygonMaskMoveType_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Enums/PolygonMaskMoveType.js */ \"../../plugins/polygonMask/dist/browser/Enums/PolygonMaskMoveType.js\");\n/* harmony import */ var _Enums_PolygonMaskType_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Enums/PolygonMaskType.js */ \"../../plugins/polygonMask/dist/browser/Enums/PolygonMaskType.js\");\nasync function loadPolygonMaskPlugin(engine) {\n engine.checkVersion(\"4.0.0-beta.1\");\n await engine.pluginManager.register(async (e)=>{\n const { PolygonMaskPlugin } = await __webpack_require__.e(/*! import() */ \"plugins_polygonMask_dist_browser_PolygonMaskPlugin_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./PolygonMaskPlugin.js */ \"../../plugins/polygonMask/dist/browser/PolygonMaskPlugin.js\"));\n e.pluginManager.addPlugin(new PolygonMaskPlugin(e.pluginManager));\n });\n}\n\n\n\n\n\n//# sourceURL=webpack://@tsparticles/all/../../plugins/polygonMask/dist/browser/index.js?\n}");
|
|
57
57
|
|
|
58
58
|
/***/ }
|
|
59
59
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Demo / Generator : https://particles.js.org/
|
|
5
5
|
* GitHub : https://www.github.com/matteobruni/tsparticles
|
|
6
6
|
* How to use? : Check the GitHub README
|
|
7
|
-
* v4.0.0-beta.
|
|
7
|
+
* v4.0.0-beta.1
|
|
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 */ loadResponsivePlugin: () => (/* binding */ loadResponsivePlugin)\n/* harmony export */ });\nasync function loadResponsivePlugin(engine) {\n engine.checkVersion(\"4.0.0-beta.
|
|
26
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadResponsivePlugin: () => (/* binding */ loadResponsivePlugin)\n/* harmony export */ });\nasync function loadResponsivePlugin(engine) {\n engine.checkVersion(\"4.0.0-beta.1\");\n await engine.pluginManager.register(async (e)=>{\n const { ResponsivePlugin } = await __webpack_require__.e(/*! import() */ \"plugins_responsive_dist_browser_ResponsivePlugin_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./ResponsivePlugin.js */ \"../../plugins/responsive/dist/browser/ResponsivePlugin.js\"));\n e.pluginManager.addPlugin(new ResponsivePlugin());\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../plugins/responsive/dist/browser/index.js?\n}");
|
|
27
27
|
|
|
28
28
|
/***/ }
|
|
29
29
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Demo / Generator : https://particles.js.org/
|
|
5
5
|
* GitHub : https://www.github.com/matteobruni/tsparticles
|
|
6
6
|
* How to use? : Check the GitHub README
|
|
7
|
-
* v4.0.0-beta.
|
|
7
|
+
* v4.0.0-beta.1
|
|
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 */ SoundsPluginInstance: () => (/* binding */ SoundsPluginInstance)\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 _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./enums.js */ \"../../plugins/sounds/dist/browser/enums.js\");\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils.js */ \"../../plugins/sounds/dist/browser/utils.js\");\n/* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants.js */ \"../../plugins/sounds/dist/browser/constants.js\");\n\n\n\n\nconst zIndexOffset = 1, rightOffset = 1, minVolume = 0;\nfunction initImage(data) {\n const img = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.safeDocument)().createElement(\"img\"), { clickCb, container, display, iconOptions, margin, options, pos, rightOffsets } = data, { width, path, style, svg } = iconOptions, defaultAccumulator = 0;\n setIconStyle(img, pos.top + margin, pos.right - (margin * (rightOffsets.length + rightOffset) + width + rightOffsets.reduce((a, b)=>a + b, defaultAccumulator)), display, options.fullScreen.zIndex + zIndexOffset, width, margin, style);\n img.src = path ?? (svg ? `data:image/svg+xml;base64,${btoa(svg)}` : \"\");\n const parent = container.canvas.element?.parentNode ?? (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.safeDocument)().body;\n parent.append(img);\n img.addEventListener(\"click\", ()=>{\n void clickCb();\n });\n return img;\n}\nfunction removeImage(image) {\n if (!image) {\n return;\n }\n image.remove();\n}\nfunction setIconStyle(icon, top, left, display, zIndex, width, margin, style) {\n icon.style.userSelect = \"none\";\n icon.style.position = \"absolute\";\n icon.style.top = `${(top + margin).toString()}px`;\n icon.style.left = `${(left - margin - width).toString()}px`;\n icon.style.display = display;\n icon.style.zIndex = (zIndex + zIndexOffset).toString();\n icon.style.cssText += style;\n}\nclass SoundsPluginInstance {\n _audioMap;\n _audioSources;\n _container;\n _engine;\n _gain;\n _muteImg;\n _unmuteImg;\n _volume;\n _volumeDownImg;\n _volumeUpImg;\n constructor(container, engine){\n this._container = container;\n this._engine = engine;\n this._volume = 0;\n this._audioSources = [];\n this._audioMap = new Map();\n }\n async init() {\n const container = this._container, options = container.actualOptions, soundsOptions = options.sounds;\n if (!soundsOptions?.enable) {\n return;\n }\n if (soundsOptions.autoPlay && (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.isWindowMuted)()) {\n const firstClickHandler = ()=>{\n removeEventListener(_constants_js__WEBPACK_IMPORTED_MODULE_3__.mouseDownEvent, firstClickHandler);\n removeEventListener(_constants_js__WEBPACK_IMPORTED_MODULE_3__.touchStartEvent, firstClickHandler);\n (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.unmuteWindow)();\n void this.unmute();\n }, listenerOptions = {\n capture: true,\n once: true\n };\n addEventListener(_constants_js__WEBPACK_IMPORTED_MODULE_3__.mouseDownEvent, firstClickHandler, listenerOptions);\n addEventListener(_constants_js__WEBPACK_IMPORTED_MODULE_3__.touchStartEvent, firstClickHandler, listenerOptions);\n }\n this._volume = soundsOptions.volume.value;\n const events = soundsOptions.events;\n this._audioMap = new Map();\n for (const event of events){\n if (!event.audio) {\n continue;\n }\n const promises = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.executeOnSingleOrMultiple)(event.audio, async (audio)=>{\n const response = await fetch(audio.source);\n if (!response.ok) {\n return;\n }\n const arrayBuffer = await response.arrayBuffer(), audioContext = this._getAudioContext(), audioBuffer = await audioContext.decodeAudioData(arrayBuffer);\n this._audioMap.set(audio.source, audioBuffer);\n });\n if (promises instanceof Promise) {\n await promises;\n } else {\n await Promise.allSettled(promises);\n }\n }\n }\n async mute() {\n if (!this._container.muted) {\n await this.toggleMute();\n }\n }\n async start() {\n const container = this._container, options = container.actualOptions, soundsOptions = options.sounds;\n if (!soundsOptions?.enable || !container.canvas.element) {\n return;\n }\n container.muted = true;\n const canvas = container.canvas.element, pos = {\n top: canvas.offsetTop,\n right: canvas.offsetLeft + canvas.offsetWidth\n }, { mute, unmute, volumeDown, volumeUp } = soundsOptions.icons, margin = 10, toggleMute = async ()=>{\n await this.toggleMute();\n }, enableIcons = soundsOptions.icons.enable, display = enableIcons ? _enums_js__WEBPACK_IMPORTED_MODULE_1__.ImageDisplay.Block : _enums_js__WEBPACK_IMPORTED_MODULE_1__.ImageDisplay.None;\n this._muteImg = initImage({\n container,\n options,\n pos,\n display,\n iconOptions: mute,\n margin,\n rightOffsets: [\n volumeDown.width,\n volumeUp.width\n ],\n clickCb: toggleMute\n });\n this._unmuteImg = initImage({\n container,\n options,\n pos,\n display: _enums_js__WEBPACK_IMPORTED_MODULE_1__.ImageDisplay.None,\n iconOptions: unmute,\n margin,\n rightOffsets: [\n volumeDown.width,\n volumeUp.width\n ],\n clickCb: toggleMute\n });\n this._volumeDownImg = initImage({\n container,\n options,\n pos,\n display,\n iconOptions: volumeDown,\n margin,\n rightOffsets: [\n volumeUp.width\n ],\n clickCb: async ()=>{\n await this.volumeDown();\n }\n });\n this._volumeUpImg = initImage({\n container,\n options,\n pos,\n display,\n iconOptions: volumeUp,\n margin,\n rightOffsets: [],\n clickCb: async ()=>{\n await this.volumeUp();\n }\n });\n if (!(0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.isWindowMuted)() && soundsOptions.autoPlay) {\n await this.unmute();\n }\n }\n stop() {\n this._container.muted = true;\n void (async ()=>{\n await this._mute();\n removeImage(this._muteImg);\n removeImage(this._unmuteImg);\n removeImage(this._volumeDownImg);\n removeImage(this._volumeUpImg);\n })();\n }\n async toggleMute() {\n const container = this._container;\n container.muted = !container.muted;\n this._updateMuteIcons();\n await this._updateMuteStatus();\n }\n async unmute() {\n if (this._container.muted) {\n await this.toggleMute();\n }\n }\n async volumeDown() {\n const container = this._container, soundsOptions = container.actualOptions.sounds;\n if (!soundsOptions?.enable) {\n return;\n }\n if (container.muted) {\n this._volume = 0;\n }\n this._volume -= soundsOptions.volume.step;\n await this._updateVolume();\n }\n async volumeUp() {\n const container = this._container, soundsOptions = container.actualOptions.sounds;\n if (!soundsOptions?.enable) {\n return;\n }\n this._volume += soundsOptions.volume.step;\n await this._updateVolume();\n }\n _addBuffer = (audioCtx)=>{\n const buffer = audioCtx.createBufferSource();\n this._audioSources.push(buffer);\n return buffer;\n };\n _addOscillator = (audioCtx)=>{\n const oscillator = audioCtx.createOscillator();\n this._audioSources.push(oscillator);\n return oscillator;\n };\n _getAudioContext() {\n const container = this._container;\n container.audioContext ??= new AudioContext();\n return container.audioContext;\n }\n _initEvents = ()=>{\n const container = this._container, soundsOptions = container.actualOptions.sounds;\n if (!soundsOptions?.enable || !container.canvas.element) {\n return;\n }\n for (const event of soundsOptions.events){\n const cb = (args)=>{\n if (!args) {\n return;\n }\n void (async ()=>{\n const filterNotValid = event.filter && !event.filter(args);\n if (this._container !== args.container) {\n return;\n }\n if (!!this._container.muted || this._container.destroyed) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.executeOnSingleOrMultiple)(event.event, (item)=>{\n this._engine.removeEventListener(item, cb);\n });\n return;\n }\n if (filterNotValid) {\n return;\n }\n const defaultNoteIndex = 0;\n if (event.audio) {\n const audio = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.itemFromSingleOrMultiple)(event.audio);\n if (!audio) {\n return;\n }\n this._playBuffer(audio);\n } else if (event.melodies) {\n const melody = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.itemFromArray)(event.melodies);\n if (!melody) {\n return;\n }\n if (melody.melodies.length) {\n await Promise.allSettled(melody.melodies.map((m)=>this._playNote(m.notes, defaultNoteIndex, melody.loop)));\n } else {\n await this._playNote(melody.notes, defaultNoteIndex, melody.loop);\n }\n } else if (event.notes) {\n const note = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.itemFromArray)(event.notes);\n if (!note) {\n return;\n }\n await this._playNote([\n note\n ], defaultNoteIndex, false);\n }\n })();\n };\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.executeOnSingleOrMultiple)(event.event, (item)=>{\n this._engine.addEventListener(item, cb);\n });\n }\n };\n _mute = async ()=>{\n const container = this._container, audioContext = this._getAudioContext();\n for (const source of this._audioSources){\n this._removeAudioSource(source);\n }\n if (this._gain) {\n this._gain.disconnect();\n }\n await audioContext.close();\n container.audioContext = undefined;\n this._engine.dispatchEvent(_enums_js__WEBPACK_IMPORTED_MODULE_1__.SoundsEventType.mute, {\n container: this._container\n });\n };\n _playBuffer = (audio)=>{\n const audioBuffer = this._audioMap.get(audio.source);\n if (!audioBuffer) {\n return;\n }\n const audioCtx = this._container.audioContext;\n if (!audioCtx) {\n return;\n }\n const source = this._addBuffer(audioCtx);\n source.loop = audio.loop;\n source.buffer = audioBuffer;\n source.connect(this._gain ?? audioCtx.destination);\n source.start();\n };\n _playFrequency = async (frequency, duration)=>{\n if (!this._gain || this._container.muted) {\n return;\n }\n const audioContext = this._getAudioContext(), oscillator = this._addOscillator(audioContext);\n oscillator.connect(this._gain);\n oscillator.type = \"sine\";\n oscillator.frequency.value = frequency;\n oscillator.start();\n return new Promise((resolve)=>{\n setTimeout(()=>{\n this._removeAudioSource(oscillator);\n resolve();\n }, duration);\n });\n };\n _playMuteSound = ()=>{\n if (this._container.muted) {\n return;\n }\n const audioContext = this._getAudioContext(), gain = audioContext.createGain();\n gain.connect(audioContext.destination);\n gain.gain.value = 0;\n const oscillator = audioContext.createOscillator();\n oscillator.connect(gain);\n oscillator.type = \"sine\";\n oscillator.frequency.value = 1;\n oscillator.start();\n setTimeout(()=>{\n oscillator.stop();\n oscillator.disconnect();\n gain.disconnect();\n });\n };\n _playNote = async (notes, noteIdx, loop)=>{\n if (this._container.muted) {\n return;\n }\n const note = notes[noteIdx];\n if (!note) {\n return;\n }\n const value = note.value, promises = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.executeOnSingleOrMultiple)(value, async (_, idx)=>{\n return this._playNoteValue(notes, noteIdx, idx);\n });\n await ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isArray)(promises) ? Promise.allSettled(promises) : promises);\n const indexOffset = 1;\n let nextNoteIdx = noteIdx + indexOffset;\n if (loop && nextNoteIdx >= notes.length) {\n nextNoteIdx = nextNoteIdx % notes.length;\n }\n await this._playNote(notes, nextNoteIdx, loop);\n };\n _playNoteValue = async (notes, noteIdx, valueIdx)=>{\n const note = notes[noteIdx];\n if (!note) {\n return;\n }\n const value = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.itemFromSingleOrMultiple)(note.value, valueIdx, true);\n if (!value) {\n return;\n }\n try {\n const freq = (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.getNoteFrequency)(value);\n if (!(0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isNumber)(freq)) {\n return;\n }\n await this._playFrequency(freq, note.duration);\n } catch (e) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getLogger)().error(e);\n }\n };\n _removeAudioSource = (source)=>{\n source.stop();\n source.disconnect();\n const deleteCount = 1;\n this._audioSources.splice(this._audioSources.indexOf(source), deleteCount);\n };\n _unmute = ()=>{\n const container = this._container, options = container.actualOptions, soundsOptions = options.sounds;\n if (!soundsOptions) {\n return;\n }\n const audioContext = this._getAudioContext(), gain = audioContext.createGain();\n gain.connect(audioContext.destination);\n gain.gain.value = soundsOptions.volume.value / _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.percentDenominator;\n this._gain = gain;\n this._initEvents();\n this._engine.dispatchEvent(_enums_js__WEBPACK_IMPORTED_MODULE_1__.SoundsEventType.unmute, {\n container: this._container\n });\n };\n _updateMuteIcons = ()=>{\n const container = this._container, soundsOptions = container.actualOptions.sounds;\n if (!soundsOptions?.enable || !soundsOptions.icons.enable) {\n return;\n }\n const muteImg = this._muteImg, unmuteImg = this._unmuteImg;\n if (muteImg) {\n muteImg.style.display = container.muted ? \"block\" : \"none\";\n }\n if (unmuteImg) {\n unmuteImg.style.display = container.muted ? \"none\" : \"block\";\n }\n };\n _updateMuteStatus = async ()=>{\n const container = this._container, audioContext = this._getAudioContext();\n if (container.muted) {\n await audioContext.suspend();\n await this._mute();\n } else {\n await audioContext.resume();\n this._unmute();\n this._playMuteSound();\n }\n };\n _updateVolume = async ()=>{\n const container = this._container, soundsOptions = container.actualOptions.sounds;\n if (!soundsOptions?.enable) {\n return;\n }\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.clamp)(this._volume, soundsOptions.volume.min, soundsOptions.volume.max);\n let stateChanged = false;\n if (this._volume <= minVolume && !container.muted) {\n this._volume = 0;\n container.muted = true;\n stateChanged = true;\n } else if (this._volume > minVolume && container.muted) {\n container.muted = false;\n stateChanged = true;\n }\n if (stateChanged) {\n this._updateMuteIcons();\n await this._updateMuteStatus();\n }\n if (this._gain?.gain) {\n this._gain.gain.value = this._volume / _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.percentDenominator;\n }\n };\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../plugins/sounds/dist/browser/SoundsPluginInstance.js?\n}");
|
|
26
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SoundsPluginInstance: () => (/* binding */ SoundsPluginInstance)\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 _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./enums.js */ \"../../plugins/sounds/dist/browser/enums.js\");\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils.js */ \"../../plugins/sounds/dist/browser/utils.js\");\n/* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants.js */ \"../../plugins/sounds/dist/browser/constants.js\");\n\n\n\n\nconst zIndexOffset = 1, rightOffset = 1, minVolume = 0;\nfunction initImage(data) {\n const img = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.safeDocument)().createElement(\"img\"), { clickCb, container, display, iconOptions, margin, options, pos, rightOffsets } = data, { width, path, style, svg } = iconOptions, defaultAccumulator = 0;\n setIconStyle(img, pos.top + margin, pos.right - (margin * (rightOffsets.length + rightOffset) + width + rightOffsets.reduce((a, b)=>a + b, defaultAccumulator)), display, options.fullScreen.zIndex + zIndexOffset, width, margin, style);\n img.src = path ?? (svg ? `data:image/svg+xml;base64,${btoa(svg)}` : \"\");\n const parent = container.canvas.element?.parentNode ?? (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.safeDocument)().body;\n parent.append(img);\n img.addEventListener(\"click\", ()=>{\n void clickCb();\n });\n return img;\n}\nfunction removeImage(image) {\n if (!image) {\n return;\n }\n image.remove();\n}\nfunction setIconStyle(icon, top, left, display, zIndex, width, margin, style) {\n icon.style.userSelect = \"none\";\n icon.style.position = \"absolute\";\n icon.style.top = `${(top + margin).toString()}px`;\n icon.style.left = `${(left - margin - width).toString()}px`;\n icon.style.display = display;\n icon.style.zIndex = (zIndex + zIndexOffset).toString();\n icon.style.cssText += style;\n}\nclass SoundsPluginInstance {\n _audioMap;\n _audioSources;\n _container;\n _engine;\n _gain;\n _muteImg;\n _unmuteImg;\n _volume;\n _volumeDownImg;\n _volumeUpImg;\n constructor(container, engine){\n this._container = container;\n this._engine = engine;\n this._volume = 0;\n this._audioSources = [];\n this._audioMap = new Map();\n }\n async init() {\n const container = this._container, options = container.actualOptions, soundsOptions = options.sounds;\n if (!soundsOptions?.enable) {\n return;\n }\n if (soundsOptions.autoPlay && (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.isWindowMuted)()) {\n const firstClickHandler = ()=>{\n removeEventListener(_constants_js__WEBPACK_IMPORTED_MODULE_3__.mouseDownEvent, firstClickHandler);\n removeEventListener(_constants_js__WEBPACK_IMPORTED_MODULE_3__.touchStartEvent, firstClickHandler);\n (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.unmuteWindow)();\n void this.unmute();\n }, listenerOptions = {\n capture: true,\n once: true\n };\n addEventListener(_constants_js__WEBPACK_IMPORTED_MODULE_3__.mouseDownEvent, firstClickHandler, listenerOptions);\n addEventListener(_constants_js__WEBPACK_IMPORTED_MODULE_3__.touchStartEvent, firstClickHandler, listenerOptions);\n }\n this._volume = soundsOptions.volume.value;\n const events = soundsOptions.events;\n this._audioMap = new Map();\n for (const event of events){\n if (!event.audio) {\n continue;\n }\n const promises = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.executeOnSingleOrMultiple)(event.audio, async (audio)=>{\n const response = await fetch(audio.source);\n if (!response.ok) {\n return;\n }\n const arrayBuffer = await response.arrayBuffer(), audioContext = this._getAudioContext(), audioBuffer = await audioContext.decodeAudioData(arrayBuffer);\n this._audioMap.set(audio.source, audioBuffer);\n });\n if (promises instanceof Promise) {\n await promises;\n } else {\n await Promise.allSettled(promises);\n }\n }\n }\n async mute() {\n if (!this._container.muted) {\n await this.toggleMute();\n }\n }\n async start() {\n const container = this._container, options = container.actualOptions, soundsOptions = options.sounds;\n if (!soundsOptions?.enable || !container.canvas.element) {\n return;\n }\n container.muted = true;\n const canvas = container.canvas.element, pos = {\n top: canvas.offsetTop,\n right: canvas.offsetLeft + canvas.offsetWidth\n }, { mute, unmute, volumeDown, volumeUp } = soundsOptions.icons, margin = 10, toggleMute = async ()=>{\n await this.toggleMute();\n }, enableIcons = soundsOptions.icons.enable, display = enableIcons ? _enums_js__WEBPACK_IMPORTED_MODULE_1__.ImageDisplay.Block : _enums_js__WEBPACK_IMPORTED_MODULE_1__.ImageDisplay.None;\n this._muteImg = initImage({\n container,\n options,\n pos,\n display,\n iconOptions: mute,\n margin,\n rightOffsets: [\n volumeDown.width,\n volumeUp.width\n ],\n clickCb: toggleMute\n });\n this._unmuteImg = initImage({\n container,\n options,\n pos,\n display: _enums_js__WEBPACK_IMPORTED_MODULE_1__.ImageDisplay.None,\n iconOptions: unmute,\n margin,\n rightOffsets: [\n volumeDown.width,\n volumeUp.width\n ],\n clickCb: toggleMute\n });\n this._volumeDownImg = initImage({\n container,\n options,\n pos,\n display,\n iconOptions: volumeDown,\n margin,\n rightOffsets: [\n volumeUp.width\n ],\n clickCb: async ()=>{\n await this.volumeDown();\n }\n });\n this._volumeUpImg = initImage({\n container,\n options,\n pos,\n display,\n iconOptions: volumeUp,\n margin,\n rightOffsets: [],\n clickCb: async ()=>{\n await this.volumeUp();\n }\n });\n if (!(0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.isWindowMuted)() && soundsOptions.autoPlay) {\n await this.unmute();\n }\n }\n stop() {\n this._container.muted = true;\n void (async ()=>{\n await this._mute();\n removeImage(this._muteImg);\n removeImage(this._unmuteImg);\n removeImage(this._volumeDownImg);\n removeImage(this._volumeUpImg);\n })();\n }\n async toggleMute() {\n const container = this._container;\n container.muted = !container.muted;\n this._updateMuteIcons();\n await this._updateMuteStatus();\n }\n async unmute() {\n if (this._container.muted) {\n await this.toggleMute();\n }\n }\n async volumeDown() {\n const container = this._container, soundsOptions = container.actualOptions.sounds;\n if (!soundsOptions?.enable) {\n return;\n }\n if (container.muted) {\n this._volume = 0;\n }\n this._volume -= soundsOptions.volume.step;\n await this._updateVolume();\n }\n async volumeUp() {\n const container = this._container, soundsOptions = container.actualOptions.sounds;\n if (!soundsOptions?.enable) {\n return;\n }\n this._volume += soundsOptions.volume.step;\n await this._updateVolume();\n }\n _addBuffer = (audioCtx)=>{\n const buffer = audioCtx.createBufferSource();\n this._audioSources.push(buffer);\n return buffer;\n };\n _addOscillator = (audioCtx)=>{\n const oscillator = audioCtx.createOscillator();\n this._audioSources.push(oscillator);\n return oscillator;\n };\n _getAudioContext() {\n const container = this._container;\n container.audioContext ??= new AudioContext();\n return container.audioContext;\n }\n _initEvents = ()=>{\n const container = this._container, soundsOptions = container.actualOptions.sounds;\n if (!soundsOptions?.enable || !container.canvas.element) {\n return;\n }\n for (const event of soundsOptions.events){\n const cb = (args)=>{\n if (!args) {\n return;\n }\n void (async ()=>{\n const filterNotValid = event.filter && !event.filter(args);\n if (this._container !== args.container) {\n return;\n }\n if (!!this._container.muted || this._container.destroyed) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.executeOnSingleOrMultiple)(event.event, (item)=>{\n this._engine.removeEventListener(item, cb);\n });\n return;\n }\n if (filterNotValid) {\n return;\n }\n const defaultNoteIndex = 0;\n if (event.audio) {\n const audio = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.itemFromSingleOrMultiple)(event.audio);\n if (!audio) {\n return;\n }\n this._playBuffer(audio);\n } else if (event.melodies) {\n const melody = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.itemFromArray)(event.melodies);\n if (!melody) {\n return;\n }\n if (melody.melodies.length) {\n await Promise.allSettled(melody.melodies.map((m)=>this._playNote(m.notes, defaultNoteIndex, melody.loop)));\n } else {\n await this._playNote(melody.notes, defaultNoteIndex, melody.loop);\n }\n } else if (event.notes) {\n const note = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.itemFromArray)(event.notes);\n if (!note) {\n return;\n }\n await this._playNote([\n note\n ], defaultNoteIndex, false);\n }\n })();\n };\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.executeOnSingleOrMultiple)(event.event, (item)=>{\n this._engine.addEventListener(item, cb);\n });\n }\n };\n _mute = async ()=>{\n const container = this._container, audioContext = this._getAudioContext();\n for (const source of this._audioSources){\n this._removeAudioSource(source);\n }\n if (this._gain) {\n this._gain.disconnect();\n }\n await audioContext.close();\n container.audioContext = undefined;\n this._container.dispatchEvent(_enums_js__WEBPACK_IMPORTED_MODULE_1__.SoundsEventType.mute);\n };\n _playBuffer = (audio)=>{\n const audioBuffer = this._audioMap.get(audio.source);\n if (!audioBuffer) {\n return;\n }\n const audioCtx = this._container.audioContext;\n if (!audioCtx) {\n return;\n }\n const source = this._addBuffer(audioCtx);\n source.loop = audio.loop;\n source.buffer = audioBuffer;\n source.connect(this._gain ?? audioCtx.destination);\n source.start();\n };\n _playFrequency = async (frequency, duration)=>{\n if (!this._gain || this._container.muted) {\n return;\n }\n const audioContext = this._getAudioContext(), oscillator = this._addOscillator(audioContext);\n oscillator.connect(this._gain);\n oscillator.type = \"sine\";\n oscillator.frequency.value = frequency;\n oscillator.start();\n return new Promise((resolve)=>{\n setTimeout(()=>{\n this._removeAudioSource(oscillator);\n resolve();\n }, duration);\n });\n };\n _playMuteSound = ()=>{\n if (this._container.muted) {\n return;\n }\n const audioContext = this._getAudioContext(), gain = audioContext.createGain();\n gain.connect(audioContext.destination);\n gain.gain.value = 0;\n const oscillator = audioContext.createOscillator();\n oscillator.connect(gain);\n oscillator.type = \"sine\";\n oscillator.frequency.value = 1;\n oscillator.start();\n setTimeout(()=>{\n oscillator.stop();\n oscillator.disconnect();\n gain.disconnect();\n });\n };\n _playNote = async (notes, noteIdx, loop)=>{\n if (this._container.muted) {\n return;\n }\n const note = notes[noteIdx];\n if (!note) {\n return;\n }\n const value = note.value, promises = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.executeOnSingleOrMultiple)(value, async (_, idx)=>{\n return this._playNoteValue(notes, noteIdx, idx);\n });\n await ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isArray)(promises) ? Promise.allSettled(promises) : promises);\n const indexOffset = 1;\n let nextNoteIdx = noteIdx + indexOffset;\n if (loop && nextNoteIdx >= notes.length) {\n nextNoteIdx = nextNoteIdx % notes.length;\n }\n await this._playNote(notes, nextNoteIdx, loop);\n };\n _playNoteValue = async (notes, noteIdx, valueIdx)=>{\n const note = notes[noteIdx];\n if (!note) {\n return;\n }\n const value = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.itemFromSingleOrMultiple)(note.value, valueIdx, true);\n if (!value) {\n return;\n }\n try {\n const freq = (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.getNoteFrequency)(value);\n if (!(0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isNumber)(freq)) {\n return;\n }\n await this._playFrequency(freq, note.duration);\n } catch (e) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getLogger)().error(e);\n }\n };\n _removeAudioSource = (source)=>{\n source.stop();\n source.disconnect();\n const deleteCount = 1;\n this._audioSources.splice(this._audioSources.indexOf(source), deleteCount);\n };\n _unmute = ()=>{\n const container = this._container, options = container.actualOptions, soundsOptions = options.sounds;\n if (!soundsOptions) {\n return;\n }\n const audioContext = this._getAudioContext(), gain = audioContext.createGain();\n gain.connect(audioContext.destination);\n gain.gain.value = soundsOptions.volume.value / _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.percentDenominator;\n this._gain = gain;\n this._initEvents();\n this._container.dispatchEvent(_enums_js__WEBPACK_IMPORTED_MODULE_1__.SoundsEventType.unmute);\n };\n _updateMuteIcons = ()=>{\n const container = this._container, soundsOptions = container.actualOptions.sounds;\n if (!soundsOptions?.enable || !soundsOptions.icons.enable) {\n return;\n }\n const muteImg = this._muteImg, unmuteImg = this._unmuteImg;\n if (muteImg) {\n muteImg.style.display = container.muted ? \"block\" : \"none\";\n }\n if (unmuteImg) {\n unmuteImg.style.display = container.muted ? \"none\" : \"block\";\n }\n };\n _updateMuteStatus = async ()=>{\n const container = this._container, audioContext = this._getAudioContext();\n if (container.muted) {\n await audioContext.suspend();\n await this._mute();\n } else {\n await audioContext.resume();\n this._unmute();\n this._playMuteSound();\n }\n };\n _updateVolume = async ()=>{\n const container = this._container, soundsOptions = container.actualOptions.sounds;\n if (!soundsOptions?.enable) {\n return;\n }\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.clamp)(this._volume, soundsOptions.volume.min, soundsOptions.volume.max);\n let stateChanged = false;\n if (this._volume <= minVolume && !container.muted) {\n this._volume = 0;\n container.muted = true;\n stateChanged = true;\n } else if (this._volume > minVolume && container.muted) {\n container.muted = false;\n stateChanged = true;\n }\n if (stateChanged) {\n this._updateMuteIcons();\n await this._updateMuteStatus();\n }\n if (this._gain?.gain) {\n this._gain.gain.value = this._volume / _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.percentDenominator;\n }\n };\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../plugins/sounds/dist/browser/SoundsPluginInstance.js?\n}");
|
|
27
27
|
|
|
28
28
|
/***/ },
|
|
29
29
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Demo / Generator : https://particles.js.org/
|
|
5
5
|
* GitHub : https://www.github.com/matteobruni/tsparticles
|
|
6
6
|
* How to use? : Check the GitHub README
|
|
7
|
-
* v4.0.0-beta.
|
|
7
|
+
* v4.0.0-beta.1
|
|
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 */ loadSoundsPlugin: () => (/* binding */ loadSoundsPlugin)\n/* harmony export */ });\nasync function loadSoundsPlugin(engine) {\n engine.checkVersion(\"4.0.0-beta.
|
|
26
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadSoundsPlugin: () => (/* binding */ loadSoundsPlugin)\n/* harmony export */ });\nasync function loadSoundsPlugin(engine) {\n engine.checkVersion(\"4.0.0-beta.1\");\n await engine.pluginManager.register(async (e)=>{\n const { SoundsPlugin } = await __webpack_require__.e(/*! import() */ \"plugins_sounds_dist_browser_SoundsPlugin_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./SoundsPlugin.js */ \"../../plugins/sounds/dist/browser/SoundsPlugin.js\"));\n e.pluginManager.addPlugin(new SoundsPlugin(e));\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../plugins/sounds/dist/browser/index.js?\n}");
|
|
27
27
|
|
|
28
28
|
/***/ }
|
|
29
29
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Demo / Generator : https://particles.js.org/
|
|
5
5
|
* GitHub : https://www.github.com/matteobruni/tsparticles
|
|
6
6
|
* How to use? : Check the GitHub README
|
|
7
|
-
* v4.0.0-beta.
|
|
7
|
+
* v4.0.0-beta.1
|
|
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 */ loadThemesPlugin: () => (/* binding */ loadThemesPlugin)\n/* harmony export */ });\nasync function loadThemesPlugin(engine) {\n engine.checkVersion(\"4.0.0-beta.
|
|
26
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadThemesPlugin: () => (/* binding */ loadThemesPlugin)\n/* harmony export */ });\nasync function loadThemesPlugin(engine) {\n engine.checkVersion(\"4.0.0-beta.1\");\n await engine.pluginManager.register(async (e)=>{\n const { ThemesPlugin } = await __webpack_require__.e(/*! import() */ \"plugins_themes_dist_browser_ThemesPlugin_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./ThemesPlugin.js */ \"../../plugins/themes/dist/browser/ThemesPlugin.js\"));\n e.pluginManager.addPlugin(new ThemesPlugin());\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../plugins/themes/dist/browser/index.js?\n}");
|
|
27
27
|
|
|
28
28
|
/***/ }
|
|
29
29
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Demo / Generator : https://particles.js.org/
|
|
5
5
|
* GitHub : https://www.github.com/matteobruni/tsparticles
|
|
6
6
|
* How to use? : Check the GitHub README
|
|
7
|
-
* v4.0.0-beta.
|
|
7
|
+
* v4.0.0-beta.1
|
|
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 */ TrailPluginInstance: () => (/* binding */ TrailPluginInstance)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nconst minimumLength = 0;\nclass TrailPluginInstance {\n _container;\n
|
|
26
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TrailPluginInstance: () => (/* binding */ TrailPluginInstance)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n\nconst minimumLength = 0;\nclass TrailPluginInstance {\n _container;\n _pluginManager;\n _trailFill;\n constructor(pluginManager, container){\n this._container = container;\n this._pluginManager = pluginManager;\n }\n canvasClear() {\n const container = this._container, trail = container.actualOptions.trail, trailFill = this._trailFill;\n if (!trail?.enable || !trailFill || trail.length <= minimumLength) {\n return false;\n }\n let handled = false;\n const canvas = container.canvas;\n if (trailFill.color) {\n canvas.render.paintBase((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getStyleFromRgb)(trailFill.color, container.hdr, trailFill.opacity));\n handled = true;\n } else if (trailFill.image) {\n canvas.render.paintImage(trailFill.image, trailFill.opacity);\n handled = true;\n }\n return handled;\n }\n async init() {\n try {\n await this._initTrail();\n } catch (e) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getLogger)().error(e);\n }\n }\n _initTrail = async ()=>{\n const options = this._container.actualOptions, trail = options.trail;\n if (!trail?.enable) {\n return;\n }\n const trailFill = trail.fill, opacity = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.inverseFactorNumerator / trail.length;\n if (trailFill.color) {\n const fillColor = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.rangeColorToRgb)(this._pluginManager, trailFill.color);\n if (!fillColor) {\n return;\n }\n this._trailFill = {\n color: {\n ...fillColor\n },\n opacity\n };\n } else {\n await new Promise((resolve, reject)=>{\n if (!trailFill.image) {\n return;\n }\n const img = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.safeDocument)().createElement(\"img\");\n img.addEventListener(\"load\", ()=>{\n this._trailFill = {\n image: img,\n opacity\n };\n resolve();\n });\n img.addEventListener(\"error\", (evt)=>{\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getLogger)().error(evt);\n reject(new Error(\"Error loading image\"));\n });\n img.src = trailFill.image;\n });\n }\n };\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../plugins/trail/dist/browser/TrailPluginInstance.js?\n}");
|
|
27
27
|
|
|
28
28
|
/***/ }
|
|
29
29
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Demo / Generator : https://particles.js.org/
|
|
5
5
|
* GitHub : https://www.github.com/matteobruni/tsparticles
|
|
6
6
|
* How to use? : Check the GitHub README
|
|
7
|
-
* v4.0.0-beta.
|
|
7
|
+
* v4.0.0-beta.1
|
|
8
8
|
*/
|
|
9
9
|
"use strict";
|
|
10
10
|
/*
|
|
@@ -43,7 +43,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
|
|
|
43
43
|
\*******************************************************/
|
|
44
44
|
(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
45
45
|
|
|
46
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TrailPlugin: () => (/* binding */ TrailPlugin)\n/* harmony export */ });\n/* harmony import */ var _Options_Classes_Trail_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Options/Classes/Trail.js */ \"../../plugins/trail/dist/browser/Options/Classes/Trail.js\");\n\nclass TrailPlugin {\n id = \"trail\";\n
|
|
46
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TrailPlugin: () => (/* binding */ TrailPlugin)\n/* harmony export */ });\n/* harmony import */ var _Options_Classes_Trail_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Options/Classes/Trail.js */ \"../../plugins/trail/dist/browser/Options/Classes/Trail.js\");\n\nclass TrailPlugin {\n id = \"trail\";\n _pluginManager;\n constructor(pluginManager){\n this._pluginManager = pluginManager;\n }\n async getPlugin(container) {\n const { TrailPluginInstance } = await __webpack_require__.e(/*! import() */ \"plugins_trail_dist_browser_TrailPluginInstance_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./TrailPluginInstance.js */ \"../../plugins/trail/dist/browser/TrailPluginInstance.js\"));\n return new TrailPluginInstance(this._pluginManager, container);\n }\n loadOptions(_container, options, source) {\n if (!this.needsPlugin()) {\n return;\n }\n let trailOptions = options.trail;\n if (!trailOptions?.load) {\n options.trail = trailOptions = new _Options_Classes_Trail_js__WEBPACK_IMPORTED_MODULE_0__.Trail();\n }\n trailOptions.load(source?.trail);\n }\n needsPlugin() {\n return true;\n }\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../plugins/trail/dist/browser/TrailPlugin.js?\n}");
|
|
47
47
|
|
|
48
48
|
/***/ }
|
|
49
49
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Demo / Generator : https://particles.js.org/
|
|
5
5
|
* GitHub : https://www.github.com/matteobruni/tsparticles
|
|
6
6
|
* How to use? : Check the GitHub README
|
|
7
|
-
* v4.0.0-beta.
|
|
7
|
+
* v4.0.0-beta.1
|
|
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 */ loadTrailPlugin: () => (/* binding */ loadTrailPlugin)\n/* harmony export */ });\nasync function loadTrailPlugin(engine) {\n engine.checkVersion(\"4.0.0-beta.
|
|
26
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadTrailPlugin: () => (/* binding */ loadTrailPlugin)\n/* harmony export */ });\nasync function loadTrailPlugin(engine) {\n engine.checkVersion(\"4.0.0-beta.1\");\n await engine.pluginManager.register(async (e)=>{\n const { TrailPlugin } = await __webpack_require__.e(/*! import() */ \"plugins_trail_dist_browser_TrailPlugin_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./TrailPlugin.js */ \"../../plugins/trail/dist/browser/TrailPlugin.js\"));\n e.pluginManager.addPlugin(new TrailPlugin(e.pluginManager));\n });\n}\n\n\n//# sourceURL=webpack://@tsparticles/all/../../plugins/trail/dist/browser/index.js?\n}");
|
|
27
27
|
|
|
28
28
|
/***/ }
|
|
29
29
|
|