@tsparticles/interaction-external-bounce 3.2.2 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/browser/Bouncer.js +4 -5
 - package/browser/Utils.js +3 -3
 - package/browser/index.js +3 -3
 - package/cjs/Bouncer.js +4 -28
 - package/cjs/Utils.js +2 -2
 - package/cjs/index.js +3 -15
 - package/esm/Bouncer.js +4 -5
 - package/esm/Utils.js +3 -3
 - package/esm/index.js +3 -3
 - package/package.json +2 -2
 - package/report.html +1 -1
 - package/tsparticles.interaction.external.bounce.js +22 -200
 - package/tsparticles.interaction.external.bounce.min.js +1 -1
 - package/tsparticles.interaction.external.bounce.min.js.LICENSE.txt +1 -1
 - package/types/Bouncer.d.ts +1 -1
 - package/umd/Bouncer.js +5 -30
 - package/umd/Utils.js +2 -2
 - package/umd/index.js +4 -17
 - package/33.min.js +0 -2
 - package/33.min.js.LICENSE.txt +0 -1
 - package/409.min.js +0 -2
 - package/409.min.js.LICENSE.txt +0 -1
 - package/dist_browser_Bouncer_js.js +0 -30
 - package/dist_browser_Utils_js.js +0 -30
 
    
        package/browser/Bouncer.js
    CHANGED
    
    | 
         @@ -1,4 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            import { ExternalInteractorBase, isDivModeEnabled, isInArray, mouseMoveEvent, } from "@tsparticles/engine";
         
     | 
| 
      
 2 
     | 
    
         
            +
            import { divBounce, mouseBounce } from "./Utils.js";
         
     | 
| 
       2 
3 
     | 
    
         
             
            import { Bounce } from "./Options/Classes/Bounce.js";
         
     | 
| 
       3 
4 
     | 
    
         
             
            const bounceMode = "bounce";
         
     | 
| 
       4 
5 
     | 
    
         
             
            export class Bouncer extends ExternalInteractorBase {
         
     | 
| 
         @@ -14,15 +15,13 @@ export class Bouncer extends ExternalInteractorBase { 
     | 
|
| 
       14 
15 
     | 
    
         
             
                    }
         
     | 
| 
       15 
16 
     | 
    
         
             
                    container.retina.bounceModeDistance = bounce.distance * container.retina.pixelRatio;
         
     | 
| 
       16 
17 
     | 
    
         
             
                }
         
     | 
| 
       17 
     | 
    
         
            -
                 
     | 
| 
      
 18 
     | 
    
         
            +
                interact() {
         
     | 
| 
       18 
19 
     | 
    
         
             
                    const container = this.container, options = container.actualOptions, events = options.interactivity.events, mouseMoveStatus = container.interactivity.status === mouseMoveEvent, hoverEnabled = events.onHover.enable, hoverMode = events.onHover.mode, divs = events.onDiv;
         
     | 
| 
       19 
20 
     | 
    
         
             
                    if (mouseMoveStatus && hoverEnabled && isInArray(bounceMode, hoverMode)) {
         
     | 
| 
       20 
     | 
    
         
            -
                         
     | 
| 
       21 
     | 
    
         
            -
                        mouseBounce(this.container, (p) => this.isEnabled(p));
         
     | 
| 
      
 21 
     | 
    
         
            +
                        mouseBounce(this.container, p => this.isEnabled(p));
         
     | 
| 
       22 
22 
     | 
    
         
             
                    }
         
     | 
| 
       23 
23 
     | 
    
         
             
                    else {
         
     | 
| 
       24 
     | 
    
         
            -
                         
     | 
| 
       25 
     | 
    
         
            -
                        divBounce(this.container, divs, bounceMode, (p) => this.isEnabled(p));
         
     | 
| 
      
 24 
     | 
    
         
            +
                        divBounce(this.container, divs, bounceMode, p => this.isEnabled(p));
         
     | 
| 
       26 
25 
     | 
    
         
             
                    }
         
     | 
| 
       27 
26 
     | 
    
         
             
                }
         
     | 
| 
       28 
27 
     | 
    
         
             
                isEnabled(particle) {
         
     | 
    
        package/browser/Utils.js
    CHANGED
    
    | 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            import { Circle, Rectangle, Vector, calculateBounds, circleBounce, circleBounceDataFromParticle, divModeExecute, rectBounce, } from "@tsparticles/engine";
         
     | 
| 
      
 1 
     | 
    
         
            +
            import { Circle, DivType, Rectangle, Vector, calculateBounds, circleBounce, circleBounceDataFromParticle, divModeExecute, rectBounce, } from "@tsparticles/engine";
         
     | 
| 
       2 
2 
     | 
    
         
             
            const squareExp = 2, half = 0.5, halfPI = Math.PI * half, double = 2, toleranceFactor = 10, minRadius = 0;
         
     | 
| 
       3 
3 
     | 
    
         
             
            function processBounce(container, position, radius, area, enabledCb) {
         
     | 
| 
       4 
4 
     | 
    
         
             
                const query = container.particles.quadTree.query(area, enabledCb);
         
     | 
| 
         @@ -22,11 +22,11 @@ function singleSelectorBounce(container, selector, div, bounceCb) { 
     | 
|
| 
       22 
22 
     | 
    
         
             
                if (!query.length) {
         
     | 
| 
       23 
23 
     | 
    
         
             
                    return;
         
     | 
| 
       24 
24 
     | 
    
         
             
                }
         
     | 
| 
       25 
     | 
    
         
            -
                query.forEach( 
     | 
| 
      
 25 
     | 
    
         
            +
                query.forEach(item => {
         
     | 
| 
       26 
26 
     | 
    
         
             
                    const elem = item, pxRatio = container.retina.pixelRatio, pos = {
         
     | 
| 
       27 
27 
     | 
    
         
             
                        x: (elem.offsetLeft + elem.offsetWidth * half) * pxRatio,
         
     | 
| 
       28 
28 
     | 
    
         
             
                        y: (elem.offsetTop + elem.offsetHeight * half) * pxRatio,
         
     | 
| 
       29 
     | 
    
         
            -
                    }, radius = elem.offsetWidth * half * pxRatio, tolerance = toleranceFactor * pxRatio, area = div.type ===  
     | 
| 
      
 29 
     | 
    
         
            +
                    }, radius = elem.offsetWidth * half * pxRatio, tolerance = toleranceFactor * pxRatio, area = div.type === DivType.circle
         
     | 
| 
       30 
30 
     | 
    
         
             
                        ? new Circle(pos.x, pos.y, radius + tolerance)
         
     | 
| 
       31 
31 
     | 
    
         
             
                        : new Rectangle(elem.offsetLeft * pxRatio - tolerance, elem.offsetTop * pxRatio - tolerance, elem.offsetWidth * pxRatio + tolerance * double, elem.offsetHeight * pxRatio + tolerance * double);
         
     | 
| 
       32 
32 
     | 
    
         
             
                    bounceCb(pos, radius, area);
         
     | 
    
        package/browser/index.js
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            import { Bouncer } from "./Bouncer.js";
         
     | 
| 
       1 
2 
     | 
    
         
             
            export async function loadExternalBounceInteraction(engine, refresh = true) {
         
     | 
| 
       2 
     | 
    
         
            -
                await engine.addInteractor("externalBounce",  
     | 
| 
       3 
     | 
    
         
            -
                     
     | 
| 
       4 
     | 
    
         
            -
                    return new Bouncer(container);
         
     | 
| 
      
 3 
     | 
    
         
            +
                await engine.addInteractor("externalBounce", container => {
         
     | 
| 
      
 4 
     | 
    
         
            +
                    return Promise.resolve(new Bouncer(container));
         
     | 
| 
       5 
5 
     | 
    
         
             
                }, refresh);
         
     | 
| 
       6 
6 
     | 
    
         
             
            }
         
     | 
| 
       7 
7 
     | 
    
         
             
            export * from "./Options/Classes/Bounce.js";
         
     | 
    
        package/cjs/Bouncer.js
    CHANGED
    
    | 
         @@ -1,30 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            "use strict";
         
     | 
| 
       2 
     | 
    
         
            -
            var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
         
     | 
| 
       3 
     | 
    
         
            -
                if (k2 === undefined) k2 = k;
         
     | 
| 
       4 
     | 
    
         
            -
                var desc = Object.getOwnPropertyDescriptor(m, k);
         
     | 
| 
       5 
     | 
    
         
            -
                if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
         
     | 
| 
       6 
     | 
    
         
            -
                  desc = { enumerable: true, get: function() { return m[k]; } };
         
     | 
| 
       7 
     | 
    
         
            -
                }
         
     | 
| 
       8 
     | 
    
         
            -
                Object.defineProperty(o, k2, desc);
         
     | 
| 
       9 
     | 
    
         
            -
            }) : (function(o, m, k, k2) {
         
     | 
| 
       10 
     | 
    
         
            -
                if (k2 === undefined) k2 = k;
         
     | 
| 
       11 
     | 
    
         
            -
                o[k2] = m[k];
         
     | 
| 
       12 
     | 
    
         
            -
            }));
         
     | 
| 
       13 
     | 
    
         
            -
            var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
         
     | 
| 
       14 
     | 
    
         
            -
                Object.defineProperty(o, "default", { enumerable: true, value: v });
         
     | 
| 
       15 
     | 
    
         
            -
            }) : function(o, v) {
         
     | 
| 
       16 
     | 
    
         
            -
                o["default"] = v;
         
     | 
| 
       17 
     | 
    
         
            -
            });
         
     | 
| 
       18 
     | 
    
         
            -
            var __importStar = (this && this.__importStar) || function (mod) {
         
     | 
| 
       19 
     | 
    
         
            -
                if (mod && mod.__esModule) return mod;
         
     | 
| 
       20 
     | 
    
         
            -
                var result = {};
         
     | 
| 
       21 
     | 
    
         
            -
                if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
         
     | 
| 
       22 
     | 
    
         
            -
                __setModuleDefault(result, mod);
         
     | 
| 
       23 
     | 
    
         
            -
                return result;
         
     | 
| 
       24 
     | 
    
         
            -
            };
         
     | 
| 
       25 
2 
     | 
    
         
             
            Object.defineProperty(exports, "__esModule", { value: true });
         
     | 
| 
       26 
3 
     | 
    
         
             
            exports.Bouncer = void 0;
         
     | 
| 
       27 
4 
     | 
    
         
             
            const engine_1 = require("@tsparticles/engine");
         
     | 
| 
      
 5 
     | 
    
         
            +
            const Utils_js_1 = require("./Utils.js");
         
     | 
| 
       28 
6 
     | 
    
         
             
            const Bounce_js_1 = require("./Options/Classes/Bounce.js");
         
     | 
| 
       29 
7 
     | 
    
         
             
            const bounceMode = "bounce";
         
     | 
| 
       30 
8 
     | 
    
         
             
            class Bouncer extends engine_1.ExternalInteractorBase {
         
     | 
| 
         @@ -40,15 +18,13 @@ class Bouncer extends engine_1.ExternalInteractorBase { 
     | 
|
| 
       40 
18 
     | 
    
         
             
                    }
         
     | 
| 
       41 
19 
     | 
    
         
             
                    container.retina.bounceModeDistance = bounce.distance * container.retina.pixelRatio;
         
     | 
| 
       42 
20 
     | 
    
         
             
                }
         
     | 
| 
       43 
     | 
    
         
            -
                 
     | 
| 
      
 21 
     | 
    
         
            +
                interact() {
         
     | 
| 
       44 
22 
     | 
    
         
             
                    const container = this.container, options = container.actualOptions, events = options.interactivity.events, mouseMoveStatus = container.interactivity.status === engine_1.mouseMoveEvent, hoverEnabled = events.onHover.enable, hoverMode = events.onHover.mode, divs = events.onDiv;
         
     | 
| 
       45 
23 
     | 
    
         
             
                    if (mouseMoveStatus && hoverEnabled && (0, engine_1.isInArray)(bounceMode, hoverMode)) {
         
     | 
| 
       46 
     | 
    
         
            -
                         
     | 
| 
       47 
     | 
    
         
            -
                        mouseBounce(this.container, (p) => this.isEnabled(p));
         
     | 
| 
      
 24 
     | 
    
         
            +
                        (0, Utils_js_1.mouseBounce)(this.container, p => this.isEnabled(p));
         
     | 
| 
       48 
25 
     | 
    
         
             
                    }
         
     | 
| 
       49 
26 
     | 
    
         
             
                    else {
         
     | 
| 
       50 
     | 
    
         
            -
                         
     | 
| 
       51 
     | 
    
         
            -
                        divBounce(this.container, divs, bounceMode, (p) => this.isEnabled(p));
         
     | 
| 
      
 27 
     | 
    
         
            +
                        (0, Utils_js_1.divBounce)(this.container, divs, bounceMode, p => this.isEnabled(p));
         
     | 
| 
       52 
28 
     | 
    
         
             
                    }
         
     | 
| 
       53 
29 
     | 
    
         
             
                }
         
     | 
| 
       54 
30 
     | 
    
         
             
                isEnabled(particle) {
         
     | 
    
        package/cjs/Utils.js
    CHANGED
    
    | 
         @@ -25,11 +25,11 @@ function singleSelectorBounce(container, selector, div, bounceCb) { 
     | 
|
| 
       25 
25 
     | 
    
         
             
                if (!query.length) {
         
     | 
| 
       26 
26 
     | 
    
         
             
                    return;
         
     | 
| 
       27 
27 
     | 
    
         
             
                }
         
     | 
| 
       28 
     | 
    
         
            -
                query.forEach( 
     | 
| 
      
 28 
     | 
    
         
            +
                query.forEach(item => {
         
     | 
| 
       29 
29 
     | 
    
         
             
                    const elem = item, pxRatio = container.retina.pixelRatio, pos = {
         
     | 
| 
       30 
30 
     | 
    
         
             
                        x: (elem.offsetLeft + elem.offsetWidth * half) * pxRatio,
         
     | 
| 
       31 
31 
     | 
    
         
             
                        y: (elem.offsetTop + elem.offsetHeight * half) * pxRatio,
         
     | 
| 
       32 
     | 
    
         
            -
                    }, radius = elem.offsetWidth * half * pxRatio, tolerance = toleranceFactor * pxRatio, area = div.type ===  
     | 
| 
      
 32 
     | 
    
         
            +
                    }, radius = elem.offsetWidth * half * pxRatio, tolerance = toleranceFactor * pxRatio, area = div.type === engine_1.DivType.circle
         
     | 
| 
       33 
33 
     | 
    
         
             
                        ? new engine_1.Circle(pos.x, pos.y, radius + tolerance)
         
     | 
| 
       34 
34 
     | 
    
         
             
                        : new engine_1.Rectangle(elem.offsetLeft * pxRatio - tolerance, elem.offsetTop * pxRatio - tolerance, elem.offsetWidth * pxRatio + tolerance * double, elem.offsetHeight * pxRatio + tolerance * double);
         
     | 
| 
       35 
35 
     | 
    
         
             
                    bounceCb(pos, radius, area);
         
     | 
    
        package/cjs/index.js
    CHANGED
    
    | 
         @@ -10,27 +10,15 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi 
     | 
|
| 
       10 
10 
     | 
    
         
             
                if (k2 === undefined) k2 = k;
         
     | 
| 
       11 
11 
     | 
    
         
             
                o[k2] = m[k];
         
     | 
| 
       12 
12 
     | 
    
         
             
            }));
         
     | 
| 
       13 
     | 
    
         
            -
            var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
         
     | 
| 
       14 
     | 
    
         
            -
                Object.defineProperty(o, "default", { enumerable: true, value: v });
         
     | 
| 
       15 
     | 
    
         
            -
            }) : function(o, v) {
         
     | 
| 
       16 
     | 
    
         
            -
                o["default"] = v;
         
     | 
| 
       17 
     | 
    
         
            -
            });
         
     | 
| 
       18 
     | 
    
         
            -
            var __importStar = (this && this.__importStar) || function (mod) {
         
     | 
| 
       19 
     | 
    
         
            -
                if (mod && mod.__esModule) return mod;
         
     | 
| 
       20 
     | 
    
         
            -
                var result = {};
         
     | 
| 
       21 
     | 
    
         
            -
                if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
         
     | 
| 
       22 
     | 
    
         
            -
                __setModuleDefault(result, mod);
         
     | 
| 
       23 
     | 
    
         
            -
                return result;
         
     | 
| 
       24 
     | 
    
         
            -
            };
         
     | 
| 
       25 
13 
     | 
    
         
             
            var __exportStar = (this && this.__exportStar) || function(m, exports) {
         
     | 
| 
       26 
14 
     | 
    
         
             
                for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
         
     | 
| 
       27 
15 
     | 
    
         
             
            };
         
     | 
| 
       28 
16 
     | 
    
         
             
            Object.defineProperty(exports, "__esModule", { value: true });
         
     | 
| 
       29 
17 
     | 
    
         
             
            exports.loadExternalBounceInteraction = void 0;
         
     | 
| 
      
 18 
     | 
    
         
            +
            const Bouncer_js_1 = require("./Bouncer.js");
         
     | 
| 
       30 
19 
     | 
    
         
             
            async function loadExternalBounceInteraction(engine, refresh = true) {
         
     | 
| 
       31 
     | 
    
         
            -
                await engine.addInteractor("externalBounce",  
     | 
| 
       32 
     | 
    
         
            -
                     
     | 
| 
       33 
     | 
    
         
            -
                    return new Bouncer(container);
         
     | 
| 
      
 20 
     | 
    
         
            +
                await engine.addInteractor("externalBounce", container => {
         
     | 
| 
      
 21 
     | 
    
         
            +
                    return Promise.resolve(new Bouncer_js_1.Bouncer(container));
         
     | 
| 
       34 
22 
     | 
    
         
             
                }, refresh);
         
     | 
| 
       35 
23 
     | 
    
         
             
            }
         
     | 
| 
       36 
24 
     | 
    
         
             
            exports.loadExternalBounceInteraction = loadExternalBounceInteraction;
         
     | 
    
        package/esm/Bouncer.js
    CHANGED
    
    | 
         @@ -1,4 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            import { ExternalInteractorBase, isDivModeEnabled, isInArray, mouseMoveEvent, } from "@tsparticles/engine";
         
     | 
| 
      
 2 
     | 
    
         
            +
            import { divBounce, mouseBounce } from "./Utils.js";
         
     | 
| 
       2 
3 
     | 
    
         
             
            import { Bounce } from "./Options/Classes/Bounce.js";
         
     | 
| 
       3 
4 
     | 
    
         
             
            const bounceMode = "bounce";
         
     | 
| 
       4 
5 
     | 
    
         
             
            export class Bouncer extends ExternalInteractorBase {
         
     | 
| 
         @@ -14,15 +15,13 @@ export class Bouncer extends ExternalInteractorBase { 
     | 
|
| 
       14 
15 
     | 
    
         
             
                    }
         
     | 
| 
       15 
16 
     | 
    
         
             
                    container.retina.bounceModeDistance = bounce.distance * container.retina.pixelRatio;
         
     | 
| 
       16 
17 
     | 
    
         
             
                }
         
     | 
| 
       17 
     | 
    
         
            -
                 
     | 
| 
      
 18 
     | 
    
         
            +
                interact() {
         
     | 
| 
       18 
19 
     | 
    
         
             
                    const container = this.container, options = container.actualOptions, events = options.interactivity.events, mouseMoveStatus = container.interactivity.status === mouseMoveEvent, hoverEnabled = events.onHover.enable, hoverMode = events.onHover.mode, divs = events.onDiv;
         
     | 
| 
       19 
20 
     | 
    
         
             
                    if (mouseMoveStatus && hoverEnabled && isInArray(bounceMode, hoverMode)) {
         
     | 
| 
       20 
     | 
    
         
            -
                         
     | 
| 
       21 
     | 
    
         
            -
                        mouseBounce(this.container, (p) => this.isEnabled(p));
         
     | 
| 
      
 21 
     | 
    
         
            +
                        mouseBounce(this.container, p => this.isEnabled(p));
         
     | 
| 
       22 
22 
     | 
    
         
             
                    }
         
     | 
| 
       23 
23 
     | 
    
         
             
                    else {
         
     | 
| 
       24 
     | 
    
         
            -
                         
     | 
| 
       25 
     | 
    
         
            -
                        divBounce(this.container, divs, bounceMode, (p) => this.isEnabled(p));
         
     | 
| 
      
 24 
     | 
    
         
            +
                        divBounce(this.container, divs, bounceMode, p => this.isEnabled(p));
         
     | 
| 
       26 
25 
     | 
    
         
             
                    }
         
     | 
| 
       27 
26 
     | 
    
         
             
                }
         
     | 
| 
       28 
27 
     | 
    
         
             
                isEnabled(particle) {
         
     | 
    
        package/esm/Utils.js
    CHANGED
    
    | 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            import { Circle, Rectangle, Vector, calculateBounds, circleBounce, circleBounceDataFromParticle, divModeExecute, rectBounce, } from "@tsparticles/engine";
         
     | 
| 
      
 1 
     | 
    
         
            +
            import { Circle, DivType, Rectangle, Vector, calculateBounds, circleBounce, circleBounceDataFromParticle, divModeExecute, rectBounce, } from "@tsparticles/engine";
         
     | 
| 
       2 
2 
     | 
    
         
             
            const squareExp = 2, half = 0.5, halfPI = Math.PI * half, double = 2, toleranceFactor = 10, minRadius = 0;
         
     | 
| 
       3 
3 
     | 
    
         
             
            function processBounce(container, position, radius, area, enabledCb) {
         
     | 
| 
       4 
4 
     | 
    
         
             
                const query = container.particles.quadTree.query(area, enabledCb);
         
     | 
| 
         @@ -22,11 +22,11 @@ function singleSelectorBounce(container, selector, div, bounceCb) { 
     | 
|
| 
       22 
22 
     | 
    
         
             
                if (!query.length) {
         
     | 
| 
       23 
23 
     | 
    
         
             
                    return;
         
     | 
| 
       24 
24 
     | 
    
         
             
                }
         
     | 
| 
       25 
     | 
    
         
            -
                query.forEach( 
     | 
| 
      
 25 
     | 
    
         
            +
                query.forEach(item => {
         
     | 
| 
       26 
26 
     | 
    
         
             
                    const elem = item, pxRatio = container.retina.pixelRatio, pos = {
         
     | 
| 
       27 
27 
     | 
    
         
             
                        x: (elem.offsetLeft + elem.offsetWidth * half) * pxRatio,
         
     | 
| 
       28 
28 
     | 
    
         
             
                        y: (elem.offsetTop + elem.offsetHeight * half) * pxRatio,
         
     | 
| 
       29 
     | 
    
         
            -
                    }, radius = elem.offsetWidth * half * pxRatio, tolerance = toleranceFactor * pxRatio, area = div.type ===  
     | 
| 
      
 29 
     | 
    
         
            +
                    }, radius = elem.offsetWidth * half * pxRatio, tolerance = toleranceFactor * pxRatio, area = div.type === DivType.circle
         
     | 
| 
       30 
30 
     | 
    
         
             
                        ? new Circle(pos.x, pos.y, radius + tolerance)
         
     | 
| 
       31 
31 
     | 
    
         
             
                        : new Rectangle(elem.offsetLeft * pxRatio - tolerance, elem.offsetTop * pxRatio - tolerance, elem.offsetWidth * pxRatio + tolerance * double, elem.offsetHeight * pxRatio + tolerance * double);
         
     | 
| 
       32 
32 
     | 
    
         
             
                    bounceCb(pos, radius, area);
         
     | 
    
        package/esm/index.js
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            import { Bouncer } from "./Bouncer.js";
         
     | 
| 
       1 
2 
     | 
    
         
             
            export async function loadExternalBounceInteraction(engine, refresh = true) {
         
     | 
| 
       2 
     | 
    
         
            -
                await engine.addInteractor("externalBounce",  
     | 
| 
       3 
     | 
    
         
            -
                     
     | 
| 
       4 
     | 
    
         
            -
                    return new Bouncer(container);
         
     | 
| 
      
 3 
     | 
    
         
            +
                await engine.addInteractor("externalBounce", container => {
         
     | 
| 
      
 4 
     | 
    
         
            +
                    return Promise.resolve(new Bouncer(container));
         
     | 
| 
       5 
5 
     | 
    
         
             
                }, refresh);
         
     | 
| 
       6 
6 
     | 
    
         
             
            }
         
     | 
| 
       7 
7 
     | 
    
         
             
            export * from "./Options/Classes/Bounce.js";
         
     | 
    
        package/package.json
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            {
         
     | 
| 
       2 
2 
     | 
    
         
             
              "name": "@tsparticles/interaction-external-bounce",
         
     | 
| 
       3 
     | 
    
         
            -
              "version": "3. 
     | 
| 
      
 3 
     | 
    
         
            +
              "version": "3.4.0",
         
     | 
| 
       4 
4 
     | 
    
         
             
              "description": "tsParticles bounce external interaction",
         
     | 
| 
       5 
5 
     | 
    
         
             
              "homepage": "https://particles.js.org",
         
     | 
| 
       6 
6 
     | 
    
         
             
              "repository": {
         
     | 
| 
         @@ -87,7 +87,7 @@ 
     | 
|
| 
       87 
87 
     | 
    
         
             
                "./package.json": "./package.json"
         
     | 
| 
       88 
88 
     | 
    
         
             
              },
         
     | 
| 
       89 
89 
     | 
    
         
             
              "dependencies": {
         
     | 
| 
       90 
     | 
    
         
            -
                "@tsparticles/engine": "^3. 
     | 
| 
      
 90 
     | 
    
         
            +
                "@tsparticles/engine": "^3.4.0"
         
     | 
| 
       91 
91 
     | 
    
         
             
              },
         
     | 
| 
       92 
92 
     | 
    
         
             
              "publishConfig": {
         
     | 
| 
       93 
93 
     | 
    
         
             
                "access": "public"
         
     | 
    
        package/report.html
    CHANGED
    
    | 
         @@ -3,7 +3,7 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
              <head>
         
     | 
| 
       4 
4 
     | 
    
         
             
                <meta charset="UTF-8"/>
         
     | 
| 
       5 
5 
     | 
    
         
             
                <meta name="viewport" content="width=device-width, initial-scale=1"/>
         
     | 
| 
       6 
     | 
    
         
            -
                <title>@tsparticles/interaction-external-bounce [ 
     | 
| 
      
 6 
     | 
    
         
            +
                <title>@tsparticles/interaction-external-bounce [13 May 2024 at 00:07]</title>
         
     | 
| 
       7 
7 
     | 
    
         
             
                <link rel="shortcut icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAABrVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+O1foceMD///+J0/qK1Pr7/v8Xdr/9///W8P4UdL7L7P0Scr2r4Pyj3vwad8D5/f/2/f+55f3E6f34+/2H0/ojfMKpzOd0rNgQcb3F3O/j9f7c8v6g3Pz0/P/w+v/q+P7n9v6T1/uQ1vuE0vqLut/y+v+Z2fvt+f+15Pzv9fuc2/vR7v2V2Pvd6/bg9P7I6/285/2y4/yp3/zp8vk8i8kqgMT7/P31+fyv4vxGkcz6/P6/6P3j7vfS5PNnpNUxhcbO7f7F6v3O4vHK3/DA2u631Ouy0eqXweKJud5wqthfoNMMbLvY8f73+v2dxeR8sNtTmdDx9/zX6PSjyeaCtd1YnNGX2PuQveCGt95Nls42h8dLlM3F4vBtAAAAM3RSTlMAAyOx0/sKBvik8opWGBMOAe3l1snDm2E9LSb06eHcu5JpHbarfHZCN9CBb08zzkdNS0kYaptYAAAFV0lEQVRYw92X51/aYBDHHS2O2qqttVbrqNq9m+TJIAYIShBkWwqIiCgoWvfeq7Z2/s29hyQNyUcR7LveGwVyXy6XH8/9rqxglLfUPLxVduUor3h0rfp2TYvpivk37929TkG037hffoX0+peVtZQc1589rigVUdXS/ABSAyEmGIO/1XfvldSK8vs3OqB6u3m0nxmIrvgB0dj7rr7Y9IbuF68hnfFaiHA/sxqm0wciIG43P60qKv9WXWc1RXGh/mFESFABTSBi0sNAKzqet17eCtOb3kZIDwxEEU0oAIJGYxNBDhBND29e0rtXXbcpuPmED9IhEAAQ/AXEaF8EPmnrrKsv0LvWR3fg5sWDNAFZOgAgaKvZDogHNU9MFwnnYROkc56RD5CjAbQX9Ow4g7upCsvYu55aSI/Nj0H1akgKQEUM94dwK65hYRmFU9MIcH/fqJYOZYcnuJSU/waKDgTOEVaVKhwrTRP5XzgSpAITYzom7UvkhFX5VutmxeNnWDjjswTKTyfgluNDGbUpWissXhF3s7mlSml+czWkg3D0l1nNjGNjz3myOQOa1KM/jOS6ebdbAVTCi4gljHSFrviza7tOgRWcS0MOUX9zdNgag5w7rRqA44Lzw0hr1WqES36dFliSJFlh2rXIae3FFcDDgKdxrUIDePr8jGcSClV1u7A9xeN0ModY/pHMxmR1EzRh8TJiwqsHmKW0l4FCEZI+jHio+JdPPE9qwQtTRxku2D8sIeRL2LnxWSllANCQGOIiqVHAz2ye2JR0DcH+HoxDkaADLjgxjKQ+AwCX/g0+DNgdG0ukYCONAe+dbc2IAc6fwt1ARoDSezNHxV2Cmzwv3O6lDMV55edBGwGK9n1+x2F8EDfAGCxug8MhpsMEcTEAWf3rx2vZhe/LAmtIn/6apE6PN0ULKgywD9mmdxbmFl3OvD5AS5fW5zLbv/YHmcsBTjf/afDz3MaZTVCfAP9z6/Bw6ycv8EUBWJIn9zYcoAWWlW9+OzO3vkTy8H+RANLmdrpOuYWdZYEXpo+TlCJrW5EARb7fF+bWdqf3hhyZI1nWJQHgznErZhbjoEsWqi8dQNoE294aldzFurwSABL2XXMf9+H1VQGke9exw5P/AnA5Pv5ngMul7LOvO922iwACu8WkCwLCafvM4CeWPxfA8lNHcWZSoi8EwMAIciKX2Z4SWCMAa3snCZ/G4EA8D6CMLNFsGQhkkz/gQNEBbPCbWsxGUpYVu3z8IyNAknwJkfPMEhLyrdi5RTyUVACkw4GSFRNWJNEW+fgPGwHD8/JxnRuLabN4CGNRkAE23na2+VmEAUmrYymSGjMAYqH84YUIyzgzs3XC7gNgH36Vcc4zKY9o9fgPBXUAiHHwVboBHGLiX6Zcjp1f2wu4tvzZKo0ecPnDtQYDQvJXaBeNzce45Fp28ZQLrEZVuFqgBwOalArKXnW1UzlnSusQKJqKYNuz4tOnI6sZG4zanpemv+7ySU2jbA9h6uhcgpfy6G2PahirDZ6zvq6zDduMVFTKvzw8wgyEdelwY9in3XkEPs3osJuwRQ4qTkfzifndg9Gfc4pdsu82+tTnHZTBa2EAMrqr2t43pguc8tNm7JQVQ2S0ukj2d22dhXYP0/veWtwKrCkNoNimAN5+Xr/oLrxswKbVJjteWrX7eR63o4j9q0GxnaBdWgGA5VStpanIjQmEhV0/nVt5VOFUvix6awJhPcAaTEShgrG+iGyvb5a0Ndb1YGHFPEwoqAinoaykaID1o1pdPNu7XsnCKQ3R+hwWIIhGvORcJUBYXe3Xa3vq/mF/N9V13ugufMkfXn+KHsRD0B8AAAAASUVORK5CYII=" type="image/x-icon" />
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
                <script>
         
     | 
| 
         @@ -4,7 +4,7 @@ 
     | 
|
| 
       4 
4 
     | 
    
         
             
             * Demo / Generator : https://particles.js.org/
         
     | 
| 
       5 
5 
     | 
    
         
             
             * GitHub : https://www.github.com/matteobruni/tsparticles
         
     | 
| 
       6 
6 
     | 
    
         
             
             * How to use? : Check the GitHub README
         
     | 
| 
       7 
     | 
    
         
            -
             * v3. 
     | 
| 
      
 7 
     | 
    
         
            +
             * v3.4.0
         
     | 
| 
       8 
8 
     | 
    
         
             
             */
         
     | 
| 
       9 
9 
     | 
    
         
             
            /*
         
     | 
| 
       10 
10 
     | 
    
         
             
             * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
         
     | 
| 
         @@ -28,6 +28,16 @@ return /******/ (() => { // webpackBootstrap 
     | 
|
| 
       28 
28 
     | 
    
         
             
            /******/ 	"use strict";
         
     | 
| 
       29 
29 
     | 
    
         
             
            /******/ 	var __webpack_modules__ = ({
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
      
 31 
     | 
    
         
            +
            /***/ "./dist/browser/Bouncer.js":
         
     | 
| 
      
 32 
     | 
    
         
            +
            /*!*********************************!*\
         
     | 
| 
      
 33 
     | 
    
         
            +
              !*** ./dist/browser/Bouncer.js ***!
         
     | 
| 
      
 34 
     | 
    
         
            +
              \*********************************/
         
     | 
| 
      
 35 
     | 
    
         
            +
            /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   Bouncer: () => (/* binding */ Bouncer)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"@tsparticles/engine\");\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Utils.js */ \"./dist/browser/Utils.js\");\n/* harmony import */ var _Options_Classes_Bounce_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Options/Classes/Bounce.js */ \"./dist/browser/Options/Classes/Bounce.js\");\n\n\n\nconst bounceMode = \"bounce\";\nclass Bouncer extends _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.ExternalInteractorBase {\n  constructor(container) {\n    super(container);\n  }\n  clear() {}\n  init() {\n    const container = this.container,\n      bounce = container.actualOptions.interactivity.modes.bounce;\n    if (!bounce) {\n      return;\n    }\n    container.retina.bounceModeDistance = bounce.distance * container.retina.pixelRatio;\n  }\n  interact() {\n    const container = this.container,\n      options = container.actualOptions,\n      events = options.interactivity.events,\n      mouseMoveStatus = container.interactivity.status === _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.mouseMoveEvent,\n      hoverEnabled = events.onHover.enable,\n      hoverMode = events.onHover.mode,\n      divs = events.onDiv;\n    if (mouseMoveStatus && hoverEnabled && (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isInArray)(bounceMode, hoverMode)) {\n      (0,_Utils_js__WEBPACK_IMPORTED_MODULE_1__.mouseBounce)(this.container, p => this.isEnabled(p));\n    } else {\n      (0,_Utils_js__WEBPACK_IMPORTED_MODULE_1__.divBounce)(this.container, divs, bounceMode, p => this.isEnabled(p));\n    }\n  }\n  isEnabled(particle) {\n    const container = this.container,\n      options = container.actualOptions,\n      mouse = container.interactivity.mouse,\n      events = (particle?.interactivity ?? options.interactivity).events,\n      divs = events.onDiv;\n    return !!mouse.position && events.onHover.enable && (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isInArray)(bounceMode, events.onHover.mode) || (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isDivModeEnabled)(bounceMode, divs);\n  }\n  loadModeOptions(options, ...sources) {\n    if (!options.bounce) {\n      options.bounce = new _Options_Classes_Bounce_js__WEBPACK_IMPORTED_MODULE_2__.Bounce();\n    }\n    for (const source of sources) {\n      options.bounce.load(source?.bounce);\n    }\n  }\n  reset() {}\n}\n\n//# sourceURL=webpack://@tsparticles/interaction-external-bounce/./dist/browser/Bouncer.js?");
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            /***/ }),
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
       31 
41 
     | 
    
         
             
            /***/ "./dist/browser/Options/Classes/Bounce.js":
         
     | 
| 
       32 
42 
     | 
    
         
             
            /*!************************************************!*\
         
     | 
| 
       33 
43 
     | 
    
         
             
              !*** ./dist/browser/Options/Classes/Bounce.js ***!
         
     | 
| 
         @@ -38,13 +48,23 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac 
     | 
|
| 
       38 
48 
     | 
    
         | 
| 
       39 
49 
     | 
    
         
             
            /***/ }),
         
     | 
| 
       40 
50 
     | 
    
         | 
| 
      
 51 
     | 
    
         
            +
            /***/ "./dist/browser/Utils.js":
         
     | 
| 
      
 52 
     | 
    
         
            +
            /*!*******************************!*\
         
     | 
| 
      
 53 
     | 
    
         
            +
              !*** ./dist/browser/Utils.js ***!
         
     | 
| 
      
 54 
     | 
    
         
            +
              \*******************************/
         
     | 
| 
      
 55 
     | 
    
         
            +
            /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
            eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   divBounce: () => (/* binding */ divBounce),\n/* harmony export */   mouseBounce: () => (/* binding */ mouseBounce)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"@tsparticles/engine\");\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__);\n\nconst squareExp = 2,\n  half = 0.5,\n  halfPI = Math.PI * half,\n  double = 2,\n  toleranceFactor = 10,\n  minRadius = 0;\nfunction processBounce(container, position, radius, area, enabledCb) {\n  const query = container.particles.quadTree.query(area, enabledCb);\n  for (const particle of query) {\n    if (area instanceof _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Circle) {\n      (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.circleBounce)((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.circleBounceDataFromParticle)(particle), {\n        position,\n        radius,\n        mass: radius ** squareExp * halfPI,\n        velocity: _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin,\n        factor: _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin\n      });\n    } else if (area instanceof _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Rectangle) {\n      (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.rectBounce)(particle, (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.calculateBounds)(position, radius));\n    }\n  }\n}\nfunction singleSelectorBounce(container, selector, div, bounceCb) {\n  const query = document.querySelectorAll(selector);\n  if (!query.length) {\n    return;\n  }\n  query.forEach(item => {\n    const elem = item,\n      pxRatio = container.retina.pixelRatio,\n      pos = {\n        x: (elem.offsetLeft + elem.offsetWidth * half) * pxRatio,\n        y: (elem.offsetTop + elem.offsetHeight * half) * pxRatio\n      },\n      radius = elem.offsetWidth * half * pxRatio,\n      tolerance = toleranceFactor * pxRatio,\n      area = div.type === _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.DivType.circle ? new _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Circle(pos.x, pos.y, radius + tolerance) : new _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Rectangle(elem.offsetLeft * pxRatio - tolerance, elem.offsetTop * pxRatio - tolerance, elem.offsetWidth * pxRatio + tolerance * double, elem.offsetHeight * pxRatio + tolerance * double);\n    bounceCb(pos, radius, area);\n  });\n}\nfunction divBounce(container, divs, bounceMode, enabledCb) {\n  (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.divModeExecute)(bounceMode, divs, (selector, div) => singleSelectorBounce(container, selector, div, (pos, radius, area) => processBounce(container, pos, radius, area, enabledCb)));\n}\nfunction mouseBounce(container, enabledCb) {\n  const pxRatio = container.retina.pixelRatio,\n    tolerance = toleranceFactor * pxRatio,\n    mousePos = container.interactivity.mouse.position,\n    radius = container.retina.bounceModeDistance;\n  if (!radius || radius < minRadius || !mousePos) {\n    return;\n  }\n  processBounce(container, mousePos, radius, new _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Circle(mousePos.x, mousePos.y, radius + tolerance), enabledCb);\n}\n\n//# sourceURL=webpack://@tsparticles/interaction-external-bounce/./dist/browser/Utils.js?");
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
            /***/ }),
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
       41 
61 
     | 
    
         
             
            /***/ "./dist/browser/index.js":
         
     | 
| 
       42 
62 
     | 
    
         
             
            /*!*******************************!*\
         
     | 
| 
       43 
63 
     | 
    
         
             
              !*** ./dist/browser/index.js ***!
         
     | 
| 
       44 
64 
     | 
    
         
             
              \*******************************/
         
     | 
| 
       45 
65 
     | 
    
         
             
            /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
         
     | 
| 
       46 
66 
     | 
    
         | 
| 
       47 
     | 
    
         
            -
            eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   Bounce: () => (/* reexport safe */  
     | 
| 
      
 67 
     | 
    
         
            +
            eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   Bounce: () => (/* reexport safe */ _Options_Classes_Bounce_js__WEBPACK_IMPORTED_MODULE_1__.Bounce),\n/* harmony export */   loadExternalBounceInteraction: () => (/* binding */ loadExternalBounceInteraction)\n/* harmony export */ });\n/* harmony import */ var _Bouncer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Bouncer.js */ \"./dist/browser/Bouncer.js\");\n/* harmony import */ var _Options_Classes_Bounce_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Options/Classes/Bounce.js */ \"./dist/browser/Options/Classes/Bounce.js\");\n\nasync function loadExternalBounceInteraction(engine, refresh = true) {\n  await engine.addInteractor(\"externalBounce\", container => {\n    return Promise.resolve(new _Bouncer_js__WEBPACK_IMPORTED_MODULE_0__.Bouncer(container));\n  }, refresh);\n}\n\n\n\n//# sourceURL=webpack://@tsparticles/interaction-external-bounce/./dist/browser/index.js?");
         
     | 
| 
       48 
68 
     | 
    
         | 
| 
       49 
69 
     | 
    
         
             
            /***/ }),
         
     | 
| 
       50 
70 
     | 
    
         | 
| 
         @@ -84,9 +104,6 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__tsparticles_engine__; 
     | 
|
| 
       84 
104 
     | 
    
         
             
            /******/ 		return module.exports;
         
     | 
| 
       85 
105 
     | 
    
         
             
            /******/ 	}
         
     | 
| 
       86 
106 
     | 
    
         
             
            /******/ 	
         
     | 
| 
       87 
     | 
    
         
            -
            /******/ 	// expose the modules object (__webpack_modules__)
         
     | 
| 
       88 
     | 
    
         
            -
            /******/ 	__webpack_require__.m = __webpack_modules__;
         
     | 
| 
       89 
     | 
    
         
            -
            /******/ 	
         
     | 
| 
       90 
107 
     | 
    
         
             
            /************************************************************************/
         
     | 
| 
       91 
108 
     | 
    
         
             
            /******/ 	/* webpack/runtime/compat get default export */
         
     | 
| 
       92 
109 
     | 
    
         
             
            /******/ 	(() => {
         
     | 
| 
         @@ -112,91 +129,11 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__tsparticles_engine__; 
     | 
|
| 
       112 
129 
     | 
    
         
             
            /******/ 		};
         
     | 
| 
       113 
130 
     | 
    
         
             
            /******/ 	})();
         
     | 
| 
       114 
131 
     | 
    
         
             
            /******/ 	
         
     | 
| 
       115 
     | 
    
         
            -
            /******/ 	/* webpack/runtime/ensure chunk */
         
     | 
| 
       116 
     | 
    
         
            -
            /******/ 	(() => {
         
     | 
| 
       117 
     | 
    
         
            -
            /******/ 		__webpack_require__.f = {};
         
     | 
| 
       118 
     | 
    
         
            -
            /******/ 		// This file contains only the entry chunk.
         
     | 
| 
       119 
     | 
    
         
            -
            /******/ 		// The chunk loading function for additional chunks
         
     | 
| 
       120 
     | 
    
         
            -
            /******/ 		__webpack_require__.e = (chunkId) => {
         
     | 
| 
       121 
     | 
    
         
            -
            /******/ 			return Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {
         
     | 
| 
       122 
     | 
    
         
            -
            /******/ 				__webpack_require__.f[key](chunkId, promises);
         
     | 
| 
       123 
     | 
    
         
            -
            /******/ 				return promises;
         
     | 
| 
       124 
     | 
    
         
            -
            /******/ 			}, []));
         
     | 
| 
       125 
     | 
    
         
            -
            /******/ 		};
         
     | 
| 
       126 
     | 
    
         
            -
            /******/ 	})();
         
     | 
| 
       127 
     | 
    
         
            -
            /******/ 	
         
     | 
| 
       128 
     | 
    
         
            -
            /******/ 	/* webpack/runtime/get javascript chunk filename */
         
     | 
| 
       129 
     | 
    
         
            -
            /******/ 	(() => {
         
     | 
| 
       130 
     | 
    
         
            -
            /******/ 		// This function allow to reference async chunks
         
     | 
| 
       131 
     | 
    
         
            -
            /******/ 		__webpack_require__.u = (chunkId) => {
         
     | 
| 
       132 
     | 
    
         
            -
            /******/ 			// return url for filenames based on template
         
     | 
| 
       133 
     | 
    
         
            -
            /******/ 			return "" + chunkId + ".js";
         
     | 
| 
       134 
     | 
    
         
            -
            /******/ 		};
         
     | 
| 
       135 
     | 
    
         
            -
            /******/ 	})();
         
     | 
| 
       136 
     | 
    
         
            -
            /******/ 	
         
     | 
| 
       137 
     | 
    
         
            -
            /******/ 	/* webpack/runtime/global */
         
     | 
| 
       138 
     | 
    
         
            -
            /******/ 	(() => {
         
     | 
| 
       139 
     | 
    
         
            -
            /******/ 		__webpack_require__.g = (function() {
         
     | 
| 
       140 
     | 
    
         
            -
            /******/ 			if (typeof globalThis === 'object') return globalThis;
         
     | 
| 
       141 
     | 
    
         
            -
            /******/ 			try {
         
     | 
| 
       142 
     | 
    
         
            -
            /******/ 				return this || new Function('return this')();
         
     | 
| 
       143 
     | 
    
         
            -
            /******/ 			} catch (e) {
         
     | 
| 
       144 
     | 
    
         
            -
            /******/ 				if (typeof window === 'object') return window;
         
     | 
| 
       145 
     | 
    
         
            -
            /******/ 			}
         
     | 
| 
       146 
     | 
    
         
            -
            /******/ 		})();
         
     | 
| 
       147 
     | 
    
         
            -
            /******/ 	})();
         
     | 
| 
       148 
     | 
    
         
            -
            /******/ 	
         
     | 
| 
       149 
132 
     | 
    
         
             
            /******/ 	/* webpack/runtime/hasOwnProperty shorthand */
         
     | 
| 
       150 
133 
     | 
    
         
             
            /******/ 	(() => {
         
     | 
| 
       151 
134 
     | 
    
         
             
            /******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
         
     | 
| 
       152 
135 
     | 
    
         
             
            /******/ 	})();
         
     | 
| 
       153 
136 
     | 
    
         
             
            /******/ 	
         
     | 
| 
       154 
     | 
    
         
            -
            /******/ 	/* webpack/runtime/load script */
         
     | 
| 
       155 
     | 
    
         
            -
            /******/ 	(() => {
         
     | 
| 
       156 
     | 
    
         
            -
            /******/ 		var inProgress = {};
         
     | 
| 
       157 
     | 
    
         
            -
            /******/ 		var dataWebpackPrefix = "@tsparticles/interaction-external-bounce:";
         
     | 
| 
       158 
     | 
    
         
            -
            /******/ 		// loadScript function to load a script via script tag
         
     | 
| 
       159 
     | 
    
         
            -
            /******/ 		__webpack_require__.l = (url, done, key, chunkId) => {
         
     | 
| 
       160 
     | 
    
         
            -
            /******/ 			if(inProgress[url]) { inProgress[url].push(done); return; }
         
     | 
| 
       161 
     | 
    
         
            -
            /******/ 			var script, needAttach;
         
     | 
| 
       162 
     | 
    
         
            -
            /******/ 			if(key !== undefined) {
         
     | 
| 
       163 
     | 
    
         
            -
            /******/ 				var scripts = document.getElementsByTagName("script");
         
     | 
| 
       164 
     | 
    
         
            -
            /******/ 				for(var i = 0; i < scripts.length; i++) {
         
     | 
| 
       165 
     | 
    
         
            -
            /******/ 					var s = scripts[i];
         
     | 
| 
       166 
     | 
    
         
            -
            /******/ 					if(s.getAttribute("src") == url || s.getAttribute("data-webpack") == dataWebpackPrefix + key) { script = s; break; }
         
     | 
| 
       167 
     | 
    
         
            -
            /******/ 				}
         
     | 
| 
       168 
     | 
    
         
            -
            /******/ 			}
         
     | 
| 
       169 
     | 
    
         
            -
            /******/ 			if(!script) {
         
     | 
| 
       170 
     | 
    
         
            -
            /******/ 				needAttach = true;
         
     | 
| 
       171 
     | 
    
         
            -
            /******/ 				script = document.createElement('script');
         
     | 
| 
       172 
     | 
    
         
            -
            /******/ 		
         
     | 
| 
       173 
     | 
    
         
            -
            /******/ 				script.charset = 'utf-8';
         
     | 
| 
       174 
     | 
    
         
            -
            /******/ 				script.timeout = 120;
         
     | 
| 
       175 
     | 
    
         
            -
            /******/ 				if (__webpack_require__.nc) {
         
     | 
| 
       176 
     | 
    
         
            -
            /******/ 					script.setAttribute("nonce", __webpack_require__.nc);
         
     | 
| 
       177 
     | 
    
         
            -
            /******/ 				}
         
     | 
| 
       178 
     | 
    
         
            -
            /******/ 				script.setAttribute("data-webpack", dataWebpackPrefix + key);
         
     | 
| 
       179 
     | 
    
         
            -
            /******/ 		
         
     | 
| 
       180 
     | 
    
         
            -
            /******/ 				script.src = url;
         
     | 
| 
       181 
     | 
    
         
            -
            /******/ 			}
         
     | 
| 
       182 
     | 
    
         
            -
            /******/ 			inProgress[url] = [done];
         
     | 
| 
       183 
     | 
    
         
            -
            /******/ 			var onScriptComplete = (prev, event) => {
         
     | 
| 
       184 
     | 
    
         
            -
            /******/ 				// avoid mem leaks in IE.
         
     | 
| 
       185 
     | 
    
         
            -
            /******/ 				script.onerror = script.onload = null;
         
     | 
| 
       186 
     | 
    
         
            -
            /******/ 				clearTimeout(timeout);
         
     | 
| 
       187 
     | 
    
         
            -
            /******/ 				var doneFns = inProgress[url];
         
     | 
| 
       188 
     | 
    
         
            -
            /******/ 				delete inProgress[url];
         
     | 
| 
       189 
     | 
    
         
            -
            /******/ 				script.parentNode && script.parentNode.removeChild(script);
         
     | 
| 
       190 
     | 
    
         
            -
            /******/ 				doneFns && doneFns.forEach((fn) => (fn(event)));
         
     | 
| 
       191 
     | 
    
         
            -
            /******/ 				if(prev) return prev(event);
         
     | 
| 
       192 
     | 
    
         
            -
            /******/ 			}
         
     | 
| 
       193 
     | 
    
         
            -
            /******/ 			var timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);
         
     | 
| 
       194 
     | 
    
         
            -
            /******/ 			script.onerror = onScriptComplete.bind(null, script.onerror);
         
     | 
| 
       195 
     | 
    
         
            -
            /******/ 			script.onload = onScriptComplete.bind(null, script.onload);
         
     | 
| 
       196 
     | 
    
         
            -
            /******/ 			needAttach && document.head.appendChild(script);
         
     | 
| 
       197 
     | 
    
         
            -
            /******/ 		};
         
     | 
| 
       198 
     | 
    
         
            -
            /******/ 	})();
         
     | 
| 
       199 
     | 
    
         
            -
            /******/ 	
         
     | 
| 
       200 
137 
     | 
    
         
             
            /******/ 	/* webpack/runtime/make namespace object */
         
     | 
| 
       201 
138 
     | 
    
         
             
            /******/ 	(() => {
         
     | 
| 
       202 
139 
     | 
    
         
             
            /******/ 		// define __esModule on exports
         
     | 
| 
         @@ -208,121 +145,6 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__tsparticles_engine__; 
     | 
|
| 
       208 
145 
     | 
    
         
             
            /******/ 		};
         
     | 
| 
       209 
146 
     | 
    
         
             
            /******/ 	})();
         
     | 
| 
       210 
147 
     | 
    
         
             
            /******/ 	
         
     | 
| 
       211 
     | 
    
         
            -
            /******/ 	/* webpack/runtime/publicPath */
         
     | 
| 
       212 
     | 
    
         
            -
            /******/ 	(() => {
         
     | 
| 
       213 
     | 
    
         
            -
            /******/ 		var scriptUrl;
         
     | 
| 
       214 
     | 
    
         
            -
            /******/ 		if (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + "";
         
     | 
| 
       215 
     | 
    
         
            -
            /******/ 		var document = __webpack_require__.g.document;
         
     | 
| 
       216 
     | 
    
         
            -
            /******/ 		if (!scriptUrl && document) {
         
     | 
| 
       217 
     | 
    
         
            -
            /******/ 			if (document.currentScript)
         
     | 
| 
       218 
     | 
    
         
            -
            /******/ 				scriptUrl = document.currentScript.src;
         
     | 
| 
       219 
     | 
    
         
            -
            /******/ 			if (!scriptUrl) {
         
     | 
| 
       220 
     | 
    
         
            -
            /******/ 				var scripts = document.getElementsByTagName("script");
         
     | 
| 
       221 
     | 
    
         
            -
            /******/ 				if(scripts.length) {
         
     | 
| 
       222 
     | 
    
         
            -
            /******/ 					var i = scripts.length - 1;
         
     | 
| 
       223 
     | 
    
         
            -
            /******/ 					while (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;
         
     | 
| 
       224 
     | 
    
         
            -
            /******/ 				}
         
     | 
| 
       225 
     | 
    
         
            -
            /******/ 			}
         
     | 
| 
       226 
     | 
    
         
            -
            /******/ 		}
         
     | 
| 
       227 
     | 
    
         
            -
            /******/ 		// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration
         
     | 
| 
       228 
     | 
    
         
            -
            /******/ 		// or pass an empty string ("") and set the __webpack_public_path__ variable from your code to use your own logic.
         
     | 
| 
       229 
     | 
    
         
            -
            /******/ 		if (!scriptUrl) throw new Error("Automatic publicPath is not supported in this browser");
         
     | 
| 
       230 
     | 
    
         
            -
            /******/ 		scriptUrl = scriptUrl.replace(/#.*$/, "").replace(/\?.*$/, "").replace(/\/[^\/]+$/, "/");
         
     | 
| 
       231 
     | 
    
         
            -
            /******/ 		__webpack_require__.p = scriptUrl;
         
     | 
| 
       232 
     | 
    
         
            -
            /******/ 	})();
         
     | 
| 
       233 
     | 
    
         
            -
            /******/ 	
         
     | 
| 
       234 
     | 
    
         
            -
            /******/ 	/* webpack/runtime/jsonp chunk loading */
         
     | 
| 
       235 
     | 
    
         
            -
            /******/ 	(() => {
         
     | 
| 
       236 
     | 
    
         
            -
            /******/ 		// no baseURI
         
     | 
| 
       237 
     | 
    
         
            -
            /******/ 		
         
     | 
| 
       238 
     | 
    
         
            -
            /******/ 		// object to store loaded and loading chunks
         
     | 
| 
       239 
     | 
    
         
            -
            /******/ 		// undefined = chunk not loaded, null = chunk preloaded/prefetched
         
     | 
| 
       240 
     | 
    
         
            -
            /******/ 		// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded
         
     | 
| 
       241 
     | 
    
         
            -
            /******/ 		var installedChunks = {
         
     | 
| 
       242 
     | 
    
         
            -
            /******/ 			"tsparticles.interaction.external.bounce": 0
         
     | 
| 
       243 
     | 
    
         
            -
            /******/ 		};
         
     | 
| 
       244 
     | 
    
         
            -
            /******/ 		
         
     | 
| 
       245 
     | 
    
         
            -
            /******/ 		__webpack_require__.f.j = (chunkId, promises) => {
         
     | 
| 
       246 
     | 
    
         
            -
            /******/ 				// JSONP chunk loading for javascript
         
     | 
| 
       247 
     | 
    
         
            -
            /******/ 				var installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;
         
     | 
| 
       248 
     | 
    
         
            -
            /******/ 				if(installedChunkData !== 0) { // 0 means "already installed".
         
     | 
| 
       249 
     | 
    
         
            -
            /******/ 		
         
     | 
| 
       250 
     | 
    
         
            -
            /******/ 					// a Promise means "currently loading".
         
     | 
| 
       251 
     | 
    
         
            -
            /******/ 					if(installedChunkData) {
         
     | 
| 
       252 
     | 
    
         
            -
            /******/ 						promises.push(installedChunkData[2]);
         
     | 
| 
       253 
     | 
    
         
            -
            /******/ 					} else {
         
     | 
| 
       254 
     | 
    
         
            -
            /******/ 						if(true) { // all chunks have JS
         
     | 
| 
       255 
     | 
    
         
            -
            /******/ 							// setup Promise in chunk cache
         
     | 
| 
       256 
     | 
    
         
            -
            /******/ 							var promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));
         
     | 
| 
       257 
     | 
    
         
            -
            /******/ 							promises.push(installedChunkData[2] = promise);
         
     | 
| 
       258 
     | 
    
         
            -
            /******/ 		
         
     | 
| 
       259 
     | 
    
         
            -
            /******/ 							// start chunk loading
         
     | 
| 
       260 
     | 
    
         
            -
            /******/ 							var url = __webpack_require__.p + __webpack_require__.u(chunkId);
         
     | 
| 
       261 
     | 
    
         
            -
            /******/ 							// create error before stack unwound to get useful stacktrace later
         
     | 
| 
       262 
     | 
    
         
            -
            /******/ 							var error = new Error();
         
     | 
| 
       263 
     | 
    
         
            -
            /******/ 							var loadingEnded = (event) => {
         
     | 
| 
       264 
     | 
    
         
            -
            /******/ 								if(__webpack_require__.o(installedChunks, chunkId)) {
         
     | 
| 
       265 
     | 
    
         
            -
            /******/ 									installedChunkData = installedChunks[chunkId];
         
     | 
| 
       266 
     | 
    
         
            -
            /******/ 									if(installedChunkData !== 0) installedChunks[chunkId] = undefined;
         
     | 
| 
       267 
     | 
    
         
            -
            /******/ 									if(installedChunkData) {
         
     | 
| 
       268 
     | 
    
         
            -
            /******/ 										var errorType = event && (event.type === 'load' ? 'missing' : event.type);
         
     | 
| 
       269 
     | 
    
         
            -
            /******/ 										var realSrc = event && event.target && event.target.src;
         
     | 
| 
       270 
     | 
    
         
            -
            /******/ 										error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')';
         
     | 
| 
       271 
     | 
    
         
            -
            /******/ 										error.name = 'ChunkLoadError';
         
     | 
| 
       272 
     | 
    
         
            -
            /******/ 										error.type = errorType;
         
     | 
| 
       273 
     | 
    
         
            -
            /******/ 										error.request = realSrc;
         
     | 
| 
       274 
     | 
    
         
            -
            /******/ 										installedChunkData[1](error);
         
     | 
| 
       275 
     | 
    
         
            -
            /******/ 									}
         
     | 
| 
       276 
     | 
    
         
            -
            /******/ 								}
         
     | 
| 
       277 
     | 
    
         
            -
            /******/ 							};
         
     | 
| 
       278 
     | 
    
         
            -
            /******/ 							__webpack_require__.l(url, loadingEnded, "chunk-" + chunkId, chunkId);
         
     | 
| 
       279 
     | 
    
         
            -
            /******/ 						}
         
     | 
| 
       280 
     | 
    
         
            -
            /******/ 					}
         
     | 
| 
       281 
     | 
    
         
            -
            /******/ 				}
         
     | 
| 
       282 
     | 
    
         
            -
            /******/ 		};
         
     | 
| 
       283 
     | 
    
         
            -
            /******/ 		
         
     | 
| 
       284 
     | 
    
         
            -
            /******/ 		// no prefetching
         
     | 
| 
       285 
     | 
    
         
            -
            /******/ 		
         
     | 
| 
       286 
     | 
    
         
            -
            /******/ 		// no preloaded
         
     | 
| 
       287 
     | 
    
         
            -
            /******/ 		
         
     | 
| 
       288 
     | 
    
         
            -
            /******/ 		// no HMR
         
     | 
| 
       289 
     | 
    
         
            -
            /******/ 		
         
     | 
| 
       290 
     | 
    
         
            -
            /******/ 		// no HMR manifest
         
     | 
| 
       291 
     | 
    
         
            -
            /******/ 		
         
     | 
| 
       292 
     | 
    
         
            -
            /******/ 		// no on chunks loaded
         
     | 
| 
       293 
     | 
    
         
            -
            /******/ 		
         
     | 
| 
       294 
     | 
    
         
            -
            /******/ 		// install a JSONP callback for chunk loading
         
     | 
| 
       295 
     | 
    
         
            -
            /******/ 		var webpackJsonpCallback = (parentChunkLoadingFunction, data) => {
         
     | 
| 
       296 
     | 
    
         
            -
            /******/ 			var chunkIds = data[0];
         
     | 
| 
       297 
     | 
    
         
            -
            /******/ 			var moreModules = data[1];
         
     | 
| 
       298 
     | 
    
         
            -
            /******/ 			var runtime = data[2];
         
     | 
| 
       299 
     | 
    
         
            -
            /******/ 			// add "moreModules" to the modules object,
         
     | 
| 
       300 
     | 
    
         
            -
            /******/ 			// then flag all "chunkIds" as loaded and fire callback
         
     | 
| 
       301 
     | 
    
         
            -
            /******/ 			var moduleId, chunkId, i = 0;
         
     | 
| 
       302 
     | 
    
         
            -
            /******/ 			if(chunkIds.some((id) => (installedChunks[id] !== 0))) {
         
     | 
| 
       303 
     | 
    
         
            -
            /******/ 				for(moduleId in moreModules) {
         
     | 
| 
       304 
     | 
    
         
            -
            /******/ 					if(__webpack_require__.o(moreModules, moduleId)) {
         
     | 
| 
       305 
     | 
    
         
            -
            /******/ 						__webpack_require__.m[moduleId] = moreModules[moduleId];
         
     | 
| 
       306 
     | 
    
         
            -
            /******/ 					}
         
     | 
| 
       307 
     | 
    
         
            -
            /******/ 				}
         
     | 
| 
       308 
     | 
    
         
            -
            /******/ 				if(runtime) var result = runtime(__webpack_require__);
         
     | 
| 
       309 
     | 
    
         
            -
            /******/ 			}
         
     | 
| 
       310 
     | 
    
         
            -
            /******/ 			if(parentChunkLoadingFunction) parentChunkLoadingFunction(data);
         
     | 
| 
       311 
     | 
    
         
            -
            /******/ 			for(;i < chunkIds.length; i++) {
         
     | 
| 
       312 
     | 
    
         
            -
            /******/ 				chunkId = chunkIds[i];
         
     | 
| 
       313 
     | 
    
         
            -
            /******/ 				if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
         
     | 
| 
       314 
     | 
    
         
            -
            /******/ 					installedChunks[chunkId][0]();
         
     | 
| 
       315 
     | 
    
         
            -
            /******/ 				}
         
     | 
| 
       316 
     | 
    
         
            -
            /******/ 				installedChunks[chunkId] = 0;
         
     | 
| 
       317 
     | 
    
         
            -
            /******/ 			}
         
     | 
| 
       318 
     | 
    
         
            -
            /******/ 		
         
     | 
| 
       319 
     | 
    
         
            -
            /******/ 		}
         
     | 
| 
       320 
     | 
    
         
            -
            /******/ 		
         
     | 
| 
       321 
     | 
    
         
            -
            /******/ 		var chunkLoadingGlobal = this["webpackChunk_tsparticles_interaction_external_bounce"] = this["webpackChunk_tsparticles_interaction_external_bounce"] || [];
         
     | 
| 
       322 
     | 
    
         
            -
            /******/ 		chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
         
     | 
| 
       323 
     | 
    
         
            -
            /******/ 		chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
         
     | 
| 
       324 
     | 
    
         
            -
            /******/ 	})();
         
     | 
| 
       325 
     | 
    
         
            -
            /******/ 	
         
     | 
| 
       326 
148 
     | 
    
         
             
            /************************************************************************/
         
     | 
| 
       327 
149 
     | 
    
         
             
            /******/ 	
         
     | 
| 
       328 
150 
     | 
    
         
             
            /******/ 	// startup
         
     | 
| 
         @@ -1,2 +1,2 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            /*! For license information please see tsparticles.interaction.external.bounce.min.js.LICENSE.txt */
         
     | 
| 
       2 
     | 
    
         
            -
            !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("@tsparticles/engine"));else if("function"==typeof define&&define.amd)define(["@tsparticles/engine"],t);else{var  
     | 
| 
      
 2 
     | 
    
         
            +
            !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("@tsparticles/engine"));else if("function"==typeof define&&define.amd)define(["@tsparticles/engine"],t);else{var o="object"==typeof exports?t(require("@tsparticles/engine")):t(e.window);for(var n in o)("object"==typeof exports?exports:e)[n]=o[n]}}(this,(e=>(()=>{var t={303:t=>{t.exports=e}},o={};function n(e){var i=o[e];if(void 0!==i)return i.exports;var r=o[e]={exports:{}};return t[e](r,r.exports,n),r.exports}n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{n.r(i),n.d(i,{Bounce:()=>f,loadExternalBounceInteraction:()=>p});var e=n(303);const t=2,o=.5,r=Math.PI*o,c=2,s=10;function a(o,n,i,c,s){const a=o.particles.quadTree.query(c,s);for(const o of a)c instanceof e.Circle?(0,e.circleBounce)((0,e.circleBounceDataFromParticle)(o),{position:n,radius:i,mass:i**t*r,velocity:e.Vector.origin,factor:e.Vector.origin}):c instanceof e.Rectangle&&(0,e.rectBounce)(o,(0,e.calculateBounds)(n,i))}function l(t,n,i,r){(0,e.divModeExecute)(i,n,((n,i)=>function(t,n,i,r){const a=document.querySelectorAll(n);a.length&&a.forEach((n=>{const a=n,l=t.retina.pixelRatio,f={x:(a.offsetLeft+a.offsetWidth*o)*l,y:(a.offsetTop+a.offsetHeight*o)*l},u=a.offsetWidth*o*l,d=s*l,p=i.type===e.DivType.circle?new e.Circle(f.x,f.y,u+d):new e.Rectangle(a.offsetLeft*l-d,a.offsetTop*l-d,a.offsetWidth*l+d*c,a.offsetHeight*l+d*c);r(f,u,p)}))}(t,n,i,((e,o,n)=>a(t,e,o,n,r)))))}class f{constructor(){this.distance=200}load(e){e&&void 0!==e.distance&&(this.distance=e.distance)}}const u="bounce";class d extends e.ExternalInteractorBase{constructor(e){super(e)}clear(){}init(){const e=this.container,t=e.actualOptions.interactivity.modes.bounce;t&&(e.retina.bounceModeDistance=t.distance*e.retina.pixelRatio)}interact(){const t=this.container,o=t.actualOptions.interactivity.events,n=t.interactivity.status===e.mouseMoveEvent,i=o.onHover.enable,r=o.onHover.mode,c=o.onDiv;n&&i&&(0,e.isInArray)(u,r)?function(t,o){const n=t.retina.pixelRatio,i=s*n,r=t.interactivity.mouse.position,c=t.retina.bounceModeDistance;!c||c<0||!r||a(t,r,c,new e.Circle(r.x,r.y,c+i),o)}(this.container,(e=>this.isEnabled(e))):l(this.container,c,u,(e=>this.isEnabled(e)))}isEnabled(t){const o=this.container,n=o.actualOptions,i=o.interactivity.mouse,r=(t?.interactivity??n.interactivity).events,c=r.onDiv;return!!i.position&&r.onHover.enable&&(0,e.isInArray)(u,r.onHover.mode)||(0,e.isDivModeEnabled)(u,c)}loadModeOptions(e,...t){e.bounce||(e.bounce=new f);for(const o of t)e.bounce.load(o?.bounce)}reset(){}}async function p(e,t=!0){await e.addInteractor("externalBounce",(e=>Promise.resolve(new d(e))),t)}})(),i})()));
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            /*! tsParticles Bounce External Interaction v3. 
     | 
| 
      
 1 
     | 
    
         
            +
            /*! tsParticles Bounce External Interaction v3.4.0 by Matteo Bruni */
         
     | 
    
        package/types/Bouncer.d.ts
    CHANGED
    
    | 
         @@ -4,7 +4,7 @@ export declare class Bouncer extends ExternalInteractorBase<BounceContainer> { 
     | 
|
| 
       4 
4 
     | 
    
         
             
                constructor(container: BounceContainer);
         
     | 
| 
       5 
5 
     | 
    
         
             
                clear(): void;
         
     | 
| 
       6 
6 
     | 
    
         
             
                init(): void;
         
     | 
| 
       7 
     | 
    
         
            -
                interact():  
     | 
| 
      
 7 
     | 
    
         
            +
                interact(): void;
         
     | 
| 
       8 
8 
     | 
    
         
             
                isEnabled(particle?: Particle): boolean;
         
     | 
| 
       9 
9 
     | 
    
         
             
                loadModeOptions(options: Modes & BounceMode, ...sources: RecursivePartial<(IModes & IBounceMode) | undefined>[]): void;
         
     | 
| 
       10 
10 
     | 
    
         
             
                reset(): void;
         
     | 
    
        package/umd/Bouncer.js
    CHANGED
    
    | 
         @@ -1,40 +1,17 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
         
     | 
| 
       2 
     | 
    
         
            -
                if (k2 === undefined) k2 = k;
         
     | 
| 
       3 
     | 
    
         
            -
                var desc = Object.getOwnPropertyDescriptor(m, k);
         
     | 
| 
       4 
     | 
    
         
            -
                if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
         
     | 
| 
       5 
     | 
    
         
            -
                  desc = { enumerable: true, get: function() { return m[k]; } };
         
     | 
| 
       6 
     | 
    
         
            -
                }
         
     | 
| 
       7 
     | 
    
         
            -
                Object.defineProperty(o, k2, desc);
         
     | 
| 
       8 
     | 
    
         
            -
            }) : (function(o, m, k, k2) {
         
     | 
| 
       9 
     | 
    
         
            -
                if (k2 === undefined) k2 = k;
         
     | 
| 
       10 
     | 
    
         
            -
                o[k2] = m[k];
         
     | 
| 
       11 
     | 
    
         
            -
            }));
         
     | 
| 
       12 
     | 
    
         
            -
            var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
         
     | 
| 
       13 
     | 
    
         
            -
                Object.defineProperty(o, "default", { enumerable: true, value: v });
         
     | 
| 
       14 
     | 
    
         
            -
            }) : function(o, v) {
         
     | 
| 
       15 
     | 
    
         
            -
                o["default"] = v;
         
     | 
| 
       16 
     | 
    
         
            -
            });
         
     | 
| 
       17 
     | 
    
         
            -
            var __importStar = (this && this.__importStar) || function (mod) {
         
     | 
| 
       18 
     | 
    
         
            -
                if (mod && mod.__esModule) return mod;
         
     | 
| 
       19 
     | 
    
         
            -
                var result = {};
         
     | 
| 
       20 
     | 
    
         
            -
                if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
         
     | 
| 
       21 
     | 
    
         
            -
                __setModuleDefault(result, mod);
         
     | 
| 
       22 
     | 
    
         
            -
                return result;
         
     | 
| 
       23 
     | 
    
         
            -
            };
         
     | 
| 
       24 
1 
     | 
    
         
             
            (function (factory) {
         
     | 
| 
       25 
2 
     | 
    
         
             
                if (typeof module === "object" && typeof module.exports === "object") {
         
     | 
| 
       26 
3 
     | 
    
         
             
                    var v = factory(require, exports);
         
     | 
| 
       27 
4 
     | 
    
         
             
                    if (v !== undefined) module.exports = v;
         
     | 
| 
       28 
5 
     | 
    
         
             
                }
         
     | 
| 
       29 
6 
     | 
    
         
             
                else if (typeof define === "function" && define.amd) {
         
     | 
| 
       30 
     | 
    
         
            -
                    define(["require", "exports", "@tsparticles/engine", "./Options/Classes/Bounce.js"], factory);
         
     | 
| 
      
 7 
     | 
    
         
            +
                    define(["require", "exports", "@tsparticles/engine", "./Utils.js", "./Options/Classes/Bounce.js"], factory);
         
     | 
| 
       31 
8 
     | 
    
         
             
                }
         
     | 
| 
       32 
9 
     | 
    
         
             
            })(function (require, exports) {
         
     | 
| 
       33 
10 
     | 
    
         
             
                "use strict";
         
     | 
| 
       34 
     | 
    
         
            -
                var __syncRequire = typeof module === "object" && typeof module.exports === "object";
         
     | 
| 
       35 
11 
     | 
    
         
             
                Object.defineProperty(exports, "__esModule", { value: true });
         
     | 
| 
       36 
12 
     | 
    
         
             
                exports.Bouncer = void 0;
         
     | 
| 
       37 
13 
     | 
    
         
             
                const engine_1 = require("@tsparticles/engine");
         
     | 
| 
      
 14 
     | 
    
         
            +
                const Utils_js_1 = require("./Utils.js");
         
     | 
| 
       38 
15 
     | 
    
         
             
                const Bounce_js_1 = require("./Options/Classes/Bounce.js");
         
     | 
| 
       39 
16 
     | 
    
         
             
                const bounceMode = "bounce";
         
     | 
| 
       40 
17 
     | 
    
         
             
                class Bouncer extends engine_1.ExternalInteractorBase {
         
     | 
| 
         @@ -50,15 +27,13 @@ var __importStar = (this && this.__importStar) || function (mod) { 
     | 
|
| 
       50 
27 
     | 
    
         
             
                        }
         
     | 
| 
       51 
28 
     | 
    
         
             
                        container.retina.bounceModeDistance = bounce.distance * container.retina.pixelRatio;
         
     | 
| 
       52 
29 
     | 
    
         
             
                    }
         
     | 
| 
       53 
     | 
    
         
            -
                     
     | 
| 
      
 30 
     | 
    
         
            +
                    interact() {
         
     | 
| 
       54 
31 
     | 
    
         
             
                        const container = this.container, options = container.actualOptions, events = options.interactivity.events, mouseMoveStatus = container.interactivity.status === engine_1.mouseMoveEvent, hoverEnabled = events.onHover.enable, hoverMode = events.onHover.mode, divs = events.onDiv;
         
     | 
| 
       55 
32 
     | 
    
         
             
                        if (mouseMoveStatus && hoverEnabled && (0, engine_1.isInArray)(bounceMode, hoverMode)) {
         
     | 
| 
       56 
     | 
    
         
            -
                             
     | 
| 
       57 
     | 
    
         
            -
                            mouseBounce(this.container, (p) => this.isEnabled(p));
         
     | 
| 
      
 33 
     | 
    
         
            +
                            (0, Utils_js_1.mouseBounce)(this.container, p => this.isEnabled(p));
         
     | 
| 
       58 
34 
     | 
    
         
             
                        }
         
     | 
| 
       59 
35 
     | 
    
         
             
                        else {
         
     | 
| 
       60 
     | 
    
         
            -
                             
     | 
| 
       61 
     | 
    
         
            -
                            divBounce(this.container, divs, bounceMode, (p) => this.isEnabled(p));
         
     | 
| 
      
 36 
     | 
    
         
            +
                            (0, Utils_js_1.divBounce)(this.container, divs, bounceMode, p => this.isEnabled(p));
         
     | 
| 
       62 
37 
     | 
    
         
             
                        }
         
     | 
| 
       63 
38 
     | 
    
         
             
                    }
         
     | 
| 
       64 
39 
     | 
    
         
             
                    isEnabled(particle) {
         
     | 
    
        package/umd/Utils.js
    CHANGED
    
    | 
         @@ -34,11 +34,11 @@ 
     | 
|
| 
       34 
34 
     | 
    
         
             
                    if (!query.length) {
         
     | 
| 
       35 
35 
     | 
    
         
             
                        return;
         
     | 
| 
       36 
36 
     | 
    
         
             
                    }
         
     | 
| 
       37 
     | 
    
         
            -
                    query.forEach( 
     | 
| 
      
 37 
     | 
    
         
            +
                    query.forEach(item => {
         
     | 
| 
       38 
38 
     | 
    
         
             
                        const elem = item, pxRatio = container.retina.pixelRatio, pos = {
         
     | 
| 
       39 
39 
     | 
    
         
             
                            x: (elem.offsetLeft + elem.offsetWidth * half) * pxRatio,
         
     | 
| 
       40 
40 
     | 
    
         
             
                            y: (elem.offsetTop + elem.offsetHeight * half) * pxRatio,
         
     | 
| 
       41 
     | 
    
         
            -
                        }, radius = elem.offsetWidth * half * pxRatio, tolerance = toleranceFactor * pxRatio, area = div.type ===  
     | 
| 
      
 41 
     | 
    
         
            +
                        }, radius = elem.offsetWidth * half * pxRatio, tolerance = toleranceFactor * pxRatio, area = div.type === engine_1.DivType.circle
         
     | 
| 
       42 
42 
     | 
    
         
             
                            ? new engine_1.Circle(pos.x, pos.y, radius + tolerance)
         
     | 
| 
       43 
43 
     | 
    
         
             
                            : new engine_1.Rectangle(elem.offsetLeft * pxRatio - tolerance, elem.offsetTop * pxRatio - tolerance, elem.offsetWidth * pxRatio + tolerance * double, elem.offsetHeight * pxRatio + tolerance * double);
         
     | 
| 
       44 
44 
     | 
    
         
             
                        bounceCb(pos, radius, area);
         
     | 
    
        package/umd/index.js
    CHANGED
    
    | 
         @@ -9,18 +9,6 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi 
     | 
|
| 
       9 
9 
     | 
    
         
             
                if (k2 === undefined) k2 = k;
         
     | 
| 
       10 
10 
     | 
    
         
             
                o[k2] = m[k];
         
     | 
| 
       11 
11 
     | 
    
         
             
            }));
         
     | 
| 
       12 
     | 
    
         
            -
            var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
         
     | 
| 
       13 
     | 
    
         
            -
                Object.defineProperty(o, "default", { enumerable: true, value: v });
         
     | 
| 
       14 
     | 
    
         
            -
            }) : function(o, v) {
         
     | 
| 
       15 
     | 
    
         
            -
                o["default"] = v;
         
     | 
| 
       16 
     | 
    
         
            -
            });
         
     | 
| 
       17 
     | 
    
         
            -
            var __importStar = (this && this.__importStar) || function (mod) {
         
     | 
| 
       18 
     | 
    
         
            -
                if (mod && mod.__esModule) return mod;
         
     | 
| 
       19 
     | 
    
         
            -
                var result = {};
         
     | 
| 
       20 
     | 
    
         
            -
                if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
         
     | 
| 
       21 
     | 
    
         
            -
                __setModuleDefault(result, mod);
         
     | 
| 
       22 
     | 
    
         
            -
                return result;
         
     | 
| 
       23 
     | 
    
         
            -
            };
         
     | 
| 
       24 
12 
     | 
    
         
             
            var __exportStar = (this && this.__exportStar) || function(m, exports) {
         
     | 
| 
       25 
13 
     | 
    
         
             
                for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
         
     | 
| 
       26 
14 
     | 
    
         
             
            };
         
     | 
| 
         @@ -30,17 +18,16 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) { 
     | 
|
| 
       30 
18 
     | 
    
         
             
                    if (v !== undefined) module.exports = v;
         
     | 
| 
       31 
19 
     | 
    
         
             
                }
         
     | 
| 
       32 
20 
     | 
    
         
             
                else if (typeof define === "function" && define.amd) {
         
     | 
| 
       33 
     | 
    
         
            -
                    define(["require", "exports", "./Options/Classes/Bounce.js", "./Options/Interfaces/IBounce.js"], factory);
         
     | 
| 
      
 21 
     | 
    
         
            +
                    define(["require", "exports", "./Bouncer.js", "./Options/Classes/Bounce.js", "./Options/Interfaces/IBounce.js"], factory);
         
     | 
| 
       34 
22 
     | 
    
         
             
                }
         
     | 
| 
       35 
23 
     | 
    
         
             
            })(function (require, exports) {
         
     | 
| 
       36 
24 
     | 
    
         
             
                "use strict";
         
     | 
| 
       37 
     | 
    
         
            -
                var __syncRequire = typeof module === "object" && typeof module.exports === "object";
         
     | 
| 
       38 
25 
     | 
    
         
             
                Object.defineProperty(exports, "__esModule", { value: true });
         
     | 
| 
       39 
26 
     | 
    
         
             
                exports.loadExternalBounceInteraction = void 0;
         
     | 
| 
      
 27 
     | 
    
         
            +
                const Bouncer_js_1 = require("./Bouncer.js");
         
     | 
| 
       40 
28 
     | 
    
         
             
                async function loadExternalBounceInteraction(engine, refresh = true) {
         
     | 
| 
       41 
     | 
    
         
            -
                    await engine.addInteractor("externalBounce",  
     | 
| 
       42 
     | 
    
         
            -
                         
     | 
| 
       43 
     | 
    
         
            -
                        return new Bouncer(container);
         
     | 
| 
      
 29 
     | 
    
         
            +
                    await engine.addInteractor("externalBounce", container => {
         
     | 
| 
      
 30 
     | 
    
         
            +
                        return Promise.resolve(new Bouncer_js_1.Bouncer(container));
         
     | 
| 
       44 
31 
     | 
    
         
             
                    }, refresh);
         
     | 
| 
       45 
32 
     | 
    
         
             
                }
         
     | 
| 
       46 
33 
     | 
    
         
             
                exports.loadExternalBounceInteraction = loadExternalBounceInteraction;
         
     | 
    
        package/33.min.js
    DELETED
    
    | 
         @@ -1,2 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            /*! For license information please see 33.min.js.LICENSE.txt */
         
     | 
| 
       2 
     | 
    
         
            -
            (this.webpackChunk_tsparticles_interaction_external_bounce=this.webpackChunk_tsparticles_interaction_external_bounce||[]).push([[33],{33:(e,n,t)=>{t.d(n,{Bouncer:()=>s});var i=t(533),o=t(523);const a="bounce";class s extends i.ExternalInteractorBase{constructor(e){super(e)}clear(){}init(){const e=this.container,n=e.actualOptions.interactivity.modes.bounce;n&&(e.retina.bounceModeDistance=n.distance*e.retina.pixelRatio)}async interact(){const e=this.container,n=e.actualOptions.interactivity.events,o=e.interactivity.status===i.mouseMoveEvent,s=n.onHover.enable,c=n.onHover.mode,r=n.onDiv;if(o&&s&&(0,i.isInArray)(a,c)){const{mouseBounce:e}=await t.e(409).then(t.bind(t,409));e(this.container,(e=>this.isEnabled(e)))}else{const{divBounce:e}=await t.e(409).then(t.bind(t,409));e(this.container,r,a,(e=>this.isEnabled(e)))}}isEnabled(e){const n=this.container,t=n.actualOptions,o=n.interactivity.mouse,s=(e?.interactivity??t.interactivity).events,c=s.onDiv;return!!o.position&&s.onHover.enable&&(0,i.isInArray)(a,s.onHover.mode)||(0,i.isDivModeEnabled)(a,c)}loadModeOptions(e,...n){e.bounce||(e.bounce=new o.s);for(const t of n)e.bounce.load(t?.bounce)}reset(){}}}}]);
         
     | 
    
        package/33.min.js.LICENSE.txt
    DELETED
    
    | 
         @@ -1 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            /*! tsParticles Bounce External Interaction v3.2.2 by Matteo Bruni */
         
     | 
    
        package/409.min.js
    DELETED
    
    | 
         @@ -1,2 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            /*! For license information please see 409.min.js.LICENSE.txt */
         
     | 
| 
       2 
     | 
    
         
            -
            (this.webpackChunk_tsparticles_interaction_external_bounce=this.webpackChunk_tsparticles_interaction_external_bounce||[]).push([[409],{409:(e,t,o)=>{o.d(t,{divBounce:()=>l,mouseBounce:()=>h});var c=o(533);const n=2,i=.5,s=Math.PI*i,r=2,a=10,f=0;function u(e,t,o,i,r){const a=e.particles.quadTree.query(i,r);for(const e of a)i instanceof c.Circle?(0,c.circleBounce)((0,c.circleBounceDataFromParticle)(e),{position:t,radius:o,mass:o**n*s,velocity:c.Vector.origin,factor:c.Vector.origin}):i instanceof c.Rectangle&&(0,c.rectBounce)(e,(0,c.calculateBounds)(t,o))}function l(e,t,o,n){(0,c.divModeExecute)(o,t,((t,o)=>function(e,t,o,n){const s=document.querySelectorAll(t);s.length&&s.forEach((t=>{const s=t,f=e.retina.pixelRatio,u={x:(s.offsetLeft+s.offsetWidth*i)*f,y:(s.offsetTop+s.offsetHeight*i)*f},l=s.offsetWidth*i*f,h=a*f,p="circle"===o.type?new c.Circle(u.x,u.y,l+h):new c.Rectangle(s.offsetLeft*f-h,s.offsetTop*f-h,s.offsetWidth*f+h*r,s.offsetHeight*f+h*r);n(u,l,p)}))}(e,t,o,((t,o,c)=>u(e,t,o,c,n)))))}function h(e,t){const o=e.retina.pixelRatio,n=a*o,i=e.interactivity.mouse.position,s=e.retina.bounceModeDistance;!s||s<f||!i||u(e,i,s,new c.Circle(i.x,i.y,s+n),t)}}}]);
         
     | 
    
        package/409.min.js.LICENSE.txt
    DELETED
    
    | 
         @@ -1 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            /*! tsParticles Bounce External Interaction v3.2.2 by Matteo Bruni */
         
     | 
| 
         @@ -1,30 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            /*!
         
     | 
| 
       2 
     | 
    
         
            -
             * Author : Matteo Bruni
         
     | 
| 
       3 
     | 
    
         
            -
             * MIT license: https://opensource.org/licenses/MIT
         
     | 
| 
       4 
     | 
    
         
            -
             * Demo / Generator : https://particles.js.org/
         
     | 
| 
       5 
     | 
    
         
            -
             * GitHub : https://www.github.com/matteobruni/tsparticles
         
     | 
| 
       6 
     | 
    
         
            -
             * How to use? : Check the GitHub README
         
     | 
| 
       7 
     | 
    
         
            -
             * v3.2.2
         
     | 
| 
       8 
     | 
    
         
            -
             */
         
     | 
| 
       9 
     | 
    
         
            -
            "use strict";
         
     | 
| 
       10 
     | 
    
         
            -
            /*
         
     | 
| 
       11 
     | 
    
         
            -
             * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
         
     | 
| 
       12 
     | 
    
         
            -
             * This devtool is neither made for production nor for readable output files.
         
     | 
| 
       13 
     | 
    
         
            -
             * It uses "eval()" calls to create a separate source file in the browser devtools.
         
     | 
| 
       14 
     | 
    
         
            -
             * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
         
     | 
| 
       15 
     | 
    
         
            -
             * or disable the default devtool with "devtool: false".
         
     | 
| 
       16 
     | 
    
         
            -
             * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
         
     | 
| 
       17 
     | 
    
         
            -
             */
         
     | 
| 
       18 
     | 
    
         
            -
            (this["webpackChunk_tsparticles_interaction_external_bounce"] = this["webpackChunk_tsparticles_interaction_external_bounce"] || []).push([["dist_browser_Bouncer_js"],{
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
            /***/ "./dist/browser/Bouncer.js":
         
     | 
| 
       21 
     | 
    
         
            -
            /*!*********************************!*\
         
     | 
| 
       22 
     | 
    
         
            -
              !*** ./dist/browser/Bouncer.js ***!
         
     | 
| 
       23 
     | 
    
         
            -
              \*********************************/
         
     | 
| 
       24 
     | 
    
         
            -
            /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
            eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   Bouncer: () => (/* binding */ Bouncer)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"@tsparticles/engine\");\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Options_Classes_Bounce_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Options/Classes/Bounce.js */ \"./dist/browser/Options/Classes/Bounce.js\");\n\n\nconst bounceMode = \"bounce\";\nclass Bouncer extends _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.ExternalInteractorBase {\n  constructor(container) {\n    super(container);\n  }\n  clear() {}\n  init() {\n    const container = this.container,\n      bounce = container.actualOptions.interactivity.modes.bounce;\n    if (!bounce) {\n      return;\n    }\n    container.retina.bounceModeDistance = bounce.distance * container.retina.pixelRatio;\n  }\n  async interact() {\n    const container = this.container,\n      options = container.actualOptions,\n      events = options.interactivity.events,\n      mouseMoveStatus = container.interactivity.status === _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.mouseMoveEvent,\n      hoverEnabled = events.onHover.enable,\n      hoverMode = events.onHover.mode,\n      divs = events.onDiv;\n    if (mouseMoveStatus && hoverEnabled && (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isInArray)(bounceMode, hoverMode)) {\n      const {\n        mouseBounce\n      } = await __webpack_require__.e(/*! import() */ \"dist_browser_Utils_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./Utils.js */ \"./dist/browser/Utils.js\"));\n      mouseBounce(this.container, p => this.isEnabled(p));\n    } else {\n      const {\n        divBounce\n      } = await __webpack_require__.e(/*! import() */ \"dist_browser_Utils_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./Utils.js */ \"./dist/browser/Utils.js\"));\n      divBounce(this.container, divs, bounceMode, p => this.isEnabled(p));\n    }\n  }\n  isEnabled(particle) {\n    const container = this.container,\n      options = container.actualOptions,\n      mouse = container.interactivity.mouse,\n      events = (particle?.interactivity ?? options.interactivity).events,\n      divs = events.onDiv;\n    return !!mouse.position && events.onHover.enable && (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isInArray)(bounceMode, events.onHover.mode) || (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isDivModeEnabled)(bounceMode, divs);\n  }\n  loadModeOptions(options, ...sources) {\n    if (!options.bounce) {\n      options.bounce = new _Options_Classes_Bounce_js__WEBPACK_IMPORTED_MODULE_1__.Bounce();\n    }\n    for (const source of sources) {\n      options.bounce.load(source?.bounce);\n    }\n  }\n  reset() {}\n}\n\n//# sourceURL=webpack://@tsparticles/interaction-external-bounce/./dist/browser/Bouncer.js?");
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
            /***/ })
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
            }]);
         
     | 
    
        package/dist_browser_Utils_js.js
    DELETED
    
    | 
         @@ -1,30 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            /*!
         
     | 
| 
       2 
     | 
    
         
            -
             * Author : Matteo Bruni
         
     | 
| 
       3 
     | 
    
         
            -
             * MIT license: https://opensource.org/licenses/MIT
         
     | 
| 
       4 
     | 
    
         
            -
             * Demo / Generator : https://particles.js.org/
         
     | 
| 
       5 
     | 
    
         
            -
             * GitHub : https://www.github.com/matteobruni/tsparticles
         
     | 
| 
       6 
     | 
    
         
            -
             * How to use? : Check the GitHub README
         
     | 
| 
       7 
     | 
    
         
            -
             * v3.2.2
         
     | 
| 
       8 
     | 
    
         
            -
             */
         
     | 
| 
       9 
     | 
    
         
            -
            "use strict";
         
     | 
| 
       10 
     | 
    
         
            -
            /*
         
     | 
| 
       11 
     | 
    
         
            -
             * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
         
     | 
| 
       12 
     | 
    
         
            -
             * This devtool is neither made for production nor for readable output files.
         
     | 
| 
       13 
     | 
    
         
            -
             * It uses "eval()" calls to create a separate source file in the browser devtools.
         
     | 
| 
       14 
     | 
    
         
            -
             * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
         
     | 
| 
       15 
     | 
    
         
            -
             * or disable the default devtool with "devtool: false".
         
     | 
| 
       16 
     | 
    
         
            -
             * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
         
     | 
| 
       17 
     | 
    
         
            -
             */
         
     | 
| 
       18 
     | 
    
         
            -
            (this["webpackChunk_tsparticles_interaction_external_bounce"] = this["webpackChunk_tsparticles_interaction_external_bounce"] || []).push([["dist_browser_Utils_js"],{
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
            /***/ "./dist/browser/Utils.js":
         
     | 
| 
       21 
     | 
    
         
            -
            /*!*******************************!*\
         
     | 
| 
       22 
     | 
    
         
            -
              !*** ./dist/browser/Utils.js ***!
         
     | 
| 
       23 
     | 
    
         
            -
              \*******************************/
         
     | 
| 
       24 
     | 
    
         
            -
            /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
            eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   divBounce: () => (/* binding */ divBounce),\n/* harmony export */   mouseBounce: () => (/* binding */ mouseBounce)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"@tsparticles/engine\");\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__);\n\nconst squareExp = 2,\n  half = 0.5,\n  halfPI = Math.PI * half,\n  double = 2,\n  toleranceFactor = 10,\n  minRadius = 0;\nfunction processBounce(container, position, radius, area, enabledCb) {\n  const query = container.particles.quadTree.query(area, enabledCb);\n  for (const particle of query) {\n    if (area instanceof _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Circle) {\n      (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.circleBounce)((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.circleBounceDataFromParticle)(particle), {\n        position,\n        radius,\n        mass: radius ** squareExp * halfPI,\n        velocity: _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin,\n        factor: _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin\n      });\n    } else if (area instanceof _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Rectangle) {\n      (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.rectBounce)(particle, (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.calculateBounds)(position, radius));\n    }\n  }\n}\nfunction singleSelectorBounce(container, selector, div, bounceCb) {\n  const query = document.querySelectorAll(selector);\n  if (!query.length) {\n    return;\n  }\n  query.forEach(item => {\n    const elem = item,\n      pxRatio = container.retina.pixelRatio,\n      pos = {\n        x: (elem.offsetLeft + elem.offsetWidth * half) * pxRatio,\n        y: (elem.offsetTop + elem.offsetHeight * half) * pxRatio\n      },\n      radius = elem.offsetWidth * half * pxRatio,\n      tolerance = toleranceFactor * pxRatio,\n      area = div.type === \"circle\" ? new _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Circle(pos.x, pos.y, radius + tolerance) : new _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Rectangle(elem.offsetLeft * pxRatio - tolerance, elem.offsetTop * pxRatio - tolerance, elem.offsetWidth * pxRatio + tolerance * double, elem.offsetHeight * pxRatio + tolerance * double);\n    bounceCb(pos, radius, area);\n  });\n}\nfunction divBounce(container, divs, bounceMode, enabledCb) {\n  (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.divModeExecute)(bounceMode, divs, (selector, div) => singleSelectorBounce(container, selector, div, (pos, radius, area) => processBounce(container, pos, radius, area, enabledCb)));\n}\nfunction mouseBounce(container, enabledCb) {\n  const pxRatio = container.retina.pixelRatio,\n    tolerance = toleranceFactor * pxRatio,\n    mousePos = container.interactivity.mouse.position,\n    radius = container.retina.bounceModeDistance;\n  if (!radius || radius < minRadius || !mousePos) {\n    return;\n  }\n  processBounce(container, mousePos, radius, new _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Circle(mousePos.x, mousePos.y, radius + tolerance), enabledCb);\n}\n\n//# sourceURL=webpack://@tsparticles/interaction-external-bounce/./dist/browser/Utils.js?");
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
            /***/ })
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
            }]);
         
     |