@tsparticles/interaction-external-bounce 3.2.2 → 3.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
- async interact() {
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
- const { mouseBounce } = await import("./Utils.js");
21
- mouseBounce(this.container, (p) => this.isEnabled(p));
21
+ mouseBounce(this.container, p => this.isEnabled(p));
22
22
  }
23
23
  else {
24
- const { divBounce } = await import("./Utils.js");
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((item) => {
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 === "circle"
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", async (container) => {
3
- const { Bouncer } = await import("./Bouncer.js");
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
- async interact() {
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
- const { mouseBounce } = await Promise.resolve().then(() => __importStar(require("./Utils.js")));
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
- const { divBounce } = await Promise.resolve().then(() => __importStar(require("./Utils.js")));
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((item) => {
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 === "circle"
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", async (container) => {
32
- const { Bouncer } = await Promise.resolve().then(() => __importStar(require("./Bouncer.js")));
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
- async interact() {
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
- const { mouseBounce } = await import("./Utils.js");
21
- mouseBounce(this.container, (p) => this.isEnabled(p));
21
+ mouseBounce(this.container, p => this.isEnabled(p));
22
22
  }
23
23
  else {
24
- const { divBounce } = await import("./Utils.js");
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((item) => {
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 === "circle"
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", async (container) => {
3
- const { Bouncer } = await import("./Bouncer.js");
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.2.2",
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.2.2"
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 [20 Feb 2024 at 01:32]</title>
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.2.2
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 */ _Options_Classes_Bounce_js__WEBPACK_IMPORTED_MODULE_0__.Bounce),\n/* harmony export */ loadExternalBounceInteraction: () => (/* binding */ loadExternalBounceInteraction)\n/* harmony export */ });\n/* harmony import */ var _Options_Classes_Bounce_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Options/Classes/Bounce.js */ \"./dist/browser/Options/Classes/Bounce.js\");\nasync function loadExternalBounceInteraction(engine, refresh = true) {\n await engine.addInteractor(\"externalBounce\", async container => {\n const {\n Bouncer\n } = await __webpack_require__.e(/*! import() */ \"dist_browser_Bouncer_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./Bouncer.js */ \"./dist/browser/Bouncer.js\"));\n return new Bouncer(container);\n }, refresh);\n}\n\n\n\n//# sourceURL=webpack://@tsparticles/interaction-external-bounce/./dist/browser/index.js?");
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 r="object"==typeof exports?t(require("@tsparticles/engine")):t(e.window);for(var n in r)("object"==typeof exports?exports:e)[n]=r[n]}}(this,(e=>(()=>{var t,r,n={523:(e,t,r)=>{r.d(t,{s:()=>n});class n{constructor(){this.distance=200}load(e){e&&void 0!==e.distance&&(this.distance=e.distance)}}},533:t=>{t.exports=e}},o={};function i(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}};return n[e](r,r.exports,i),r.exports}i.m=n,i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>e+".min.js",i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),t={},r="@tsparticles/interaction-external-bounce:",i.l=(e,n,o,a)=>{if(t[e])t[e].push(n);else{var c,s;if(void 0!==o)for(var u=document.getElementsByTagName("script"),l=0;l<u.length;l++){var d=u[l];if(d.getAttribute("src")==e||d.getAttribute("data-webpack")==r+o){c=d;break}}c||(s=!0,(c=document.createElement("script")).charset="utf-8",c.timeout=120,i.nc&&c.setAttribute("nonce",i.nc),c.setAttribute("data-webpack",r+o),c.src=e),t[e]=[n];var p=(r,n)=>{c.onerror=c.onload=null,clearTimeout(f);var o=t[e];if(delete t[e],c.parentNode&&c.parentNode.removeChild(c),o&&o.forEach((e=>e(n))),r)return r(n)},f=setTimeout(p.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=p.bind(null,c.onerror),c.onload=p.bind(null,c.onload),s&&document.head.appendChild(c)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;i.g.importScripts&&(e=i.g.location+"");var t=i.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&!e;)e=r[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=e})(),(()=>{var e={251:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,o)=>n=e[t]=[r,o]));r.push(n[2]=o);var a=i.p+i.u(t),c=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;c.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",c.name="ChunkLoadError",c.type=o,c.request=a,n[1](c)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,a=r[0],c=r[1],s=r[2],u=0;if(a.some((t=>0!==e[t]))){for(n in c)i.o(c,n)&&(i.m[n]=c[n]);if(s)s(i)}for(t&&t(r);u<a.length;u++)o=a[u],i.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=this.webpackChunk_tsparticles_interaction_external_bounce=this.webpackChunk_tsparticles_interaction_external_bounce||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})();var a={};return(()=>{i.r(a),i.d(a,{Bounce:()=>e.s,loadExternalBounceInteraction:()=>t});var e=i(523);async function t(e,t=!0){await e.addInteractor("externalBounce",(async e=>{const{Bouncer:t}=await i.e(33).then(i.bind(i,33));return new t(e)}),t)}})(),a})()));
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.2.2 by Matteo Bruni */
1
+ /*! tsParticles Bounce External Interaction v3.4.0 by Matteo Bruni */
@@ -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(): Promise<void>;
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
- async interact() {
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
- const { mouseBounce } = await (__syncRequire ? Promise.resolve().then(() => __importStar(require("./Utils.js"))) : new Promise((resolve_1, reject_1) => { require(["./Utils.js"], resolve_1, reject_1); }).then(__importStar));
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
- const { divBounce } = await (__syncRequire ? Promise.resolve().then(() => __importStar(require("./Utils.js"))) : new Promise((resolve_2, reject_2) => { require(["./Utils.js"], resolve_2, reject_2); }).then(__importStar));
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((item) => {
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 === "circle"
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", async (container) => {
42
- const { Bouncer } = await (__syncRequire ? Promise.resolve().then(() => __importStar(require("./Bouncer.js"))) : new Promise((resolve_1, reject_1) => { require(["./Bouncer.js"], resolve_1, reject_1); }).then(__importStar));
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(){}}}}]);
@@ -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)}}}]);
@@ -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
- }]);
@@ -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
- }]);