@tsparticles/interaction-external-bounce 3.3.0 → 3.4.0
Sign up to get free protection for your applications and to get access to all the features.
- package/browser/Bouncer.js +2 -2
- package/browser/Utils.js +3 -3
- package/browser/index.js +3 -3
- package/cjs/Bouncer.js +2 -2
- package/cjs/Utils.js +2 -2
- package/cjs/index.js +3 -3
- package/esm/Bouncer.js +2 -2
- 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/umd/Bouncer.js +2 -2
- package/umd/Utils.js +2 -2
- package/umd/index.js +4 -17
- package/125.min.js +0 -2
- package/125.min.js.LICENSE.txt +0 -1
- package/dist_browser_Bouncer_js.js +0 -40
package/browser/Bouncer.js
CHANGED
@@ -18,10 +18,10 @@ export class Bouncer extends ExternalInteractorBase {
|
|
18
18
|
interact() {
|
19
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;
|
20
20
|
if (mouseMoveStatus && hoverEnabled && isInArray(bounceMode, hoverMode)) {
|
21
|
-
mouseBounce(this.container,
|
21
|
+
mouseBounce(this.container, p => this.isEnabled(p));
|
22
22
|
}
|
23
23
|
else {
|
24
|
-
divBounce(this.container, divs, bounceMode,
|
24
|
+
divBounce(this.container, divs, bounceMode, p => this.isEnabled(p));
|
25
25
|
}
|
26
26
|
}
|
27
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
@@ -21,10 +21,10 @@ class Bouncer extends engine_1.ExternalInteractorBase {
|
|
21
21
|
interact() {
|
22
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;
|
23
23
|
if (mouseMoveStatus && hoverEnabled && (0, engine_1.isInArray)(bounceMode, hoverMode)) {
|
24
|
-
(0, Utils_js_1.mouseBounce)(this.container,
|
24
|
+
(0, Utils_js_1.mouseBounce)(this.container, p => this.isEnabled(p));
|
25
25
|
}
|
26
26
|
else {
|
27
|
-
(0, Utils_js_1.divBounce)(this.container, divs, bounceMode,
|
27
|
+
(0, Utils_js_1.divBounce)(this.container, divs, bounceMode, p => this.isEnabled(p));
|
28
28
|
}
|
29
29
|
}
|
30
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
@@ -15,10 +15,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
15
15
|
};
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
17
|
exports.loadExternalBounceInteraction = void 0;
|
18
|
+
const Bouncer_js_1 = require("./Bouncer.js");
|
18
19
|
async function loadExternalBounceInteraction(engine, refresh = true) {
|
19
|
-
await engine.addInteractor("externalBounce",
|
20
|
-
|
21
|
-
return new Bouncer(container);
|
20
|
+
await engine.addInteractor("externalBounce", container => {
|
21
|
+
return Promise.resolve(new Bouncer_js_1.Bouncer(container));
|
22
22
|
}, refresh);
|
23
23
|
}
|
24
24
|
exports.loadExternalBounceInteraction = loadExternalBounceInteraction;
|
package/esm/Bouncer.js
CHANGED
@@ -18,10 +18,10 @@ export class Bouncer extends ExternalInteractorBase {
|
|
18
18
|
interact() {
|
19
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;
|
20
20
|
if (mouseMoveStatus && hoverEnabled && isInArray(bounceMode, hoverMode)) {
|
21
|
-
mouseBounce(this.container,
|
21
|
+
mouseBounce(this.container, p => this.isEnabled(p));
|
22
22
|
}
|
23
23
|
else {
|
24
|
-
divBounce(this.container, divs, bounceMode,
|
24
|
+
divBounce(this.container, divs, bounceMode, p => this.isEnabled(p));
|
25
25
|
}
|
26
26
|
}
|
27
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 || !/^http(s?):/.test(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/umd/Bouncer.js
CHANGED
@@ -30,10 +30,10 @@
|
|
30
30
|
interact() {
|
31
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;
|
32
32
|
if (mouseMoveStatus && hoverEnabled && (0, engine_1.isInArray)(bounceMode, hoverMode)) {
|
33
|
-
(0, Utils_js_1.mouseBounce)(this.container,
|
33
|
+
(0, Utils_js_1.mouseBounce)(this.container, p => this.isEnabled(p));
|
34
34
|
}
|
35
35
|
else {
|
36
|
-
(0, Utils_js_1.divBounce)(this.container, divs, bounceMode,
|
36
|
+
(0, Utils_js_1.divBounce)(this.container, divs, bounceMode, p => this.isEnabled(p));
|
37
37
|
}
|
38
38
|
}
|
39
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/125.min.js
DELETED
@@ -1,2 +0,0 @@
|
|
1
|
-
/*! For license information please see 125.min.js.LICENSE.txt */
|
2
|
-
(this.webpackChunk_tsparticles_interaction_external_bounce=this.webpackChunk_tsparticles_interaction_external_bounce||[]).push([[125],{125:(e,t,n)=>{n.d(t,{Bouncer:()=>v});var o=n(303);const i=2,c=.5,a=Math.PI*c,s=2,r=10;function u(e,t,n,c,s){const r=e.particles.quadTree.query(c,s);for(const e of r)c instanceof o.Circle?(0,o.circleBounce)((0,o.circleBounceDataFromParticle)(e),{position:t,radius:n,mass:n**i*a,velocity:o.Vector.origin,factor:o.Vector.origin}):c instanceof o.Rectangle&&(0,o.rectBounce)(e,(0,o.calculateBounds)(t,n))}function l(e,t,n,i){(0,o.divModeExecute)(n,t,((t,n)=>function(e,t,n,i){const a=document.querySelectorAll(t);a.length&&a.forEach((t=>{const a=t,u=e.retina.pixelRatio,l={x:(a.offsetLeft+a.offsetWidth*c)*u,y:(a.offsetTop+a.offsetHeight*c)*u},f=a.offsetWidth*c*u,d=r*u,v="circle"===n.type?new o.Circle(l.x,l.y,f+d):new o.Rectangle(a.offsetLeft*u-d,a.offsetTop*u-d,a.offsetWidth*u+d*s,a.offsetHeight*u+d*s);i(l,f,v)}))}(e,t,n,((t,n,o)=>u(e,t,n,o,i)))))}var f=n(940);const d="bounce";class v extends o.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 e=this.container,t=e.actualOptions.interactivity.events,n=e.interactivity.status===o.mouseMoveEvent,i=t.onHover.enable,c=t.onHover.mode,a=t.onDiv;n&&i&&(0,o.isInArray)(d,c)?function(e,t){const n=e.retina.pixelRatio,i=r*n,c=e.interactivity.mouse.position,a=e.retina.bounceModeDistance;!a||a<0||!c||u(e,c,a,new o.Circle(c.x,c.y,a+i),t)}(this.container,(e=>this.isEnabled(e))):l(this.container,a,d,(e=>this.isEnabled(e)))}isEnabled(e){const t=this.container,n=t.actualOptions,i=t.interactivity.mouse,c=(e?.interactivity??n.interactivity).events,a=c.onDiv;return!!i.position&&c.onHover.enable&&(0,o.isInArray)(d,c.onHover.mode)||(0,o.isDivModeEnabled)(d,a)}loadModeOptions(e,...t){e.bounce||(e.bounce=new f.b);for(const n of t)e.bounce.load(n?.bounce)}reset(){}}}}]);
|
package/125.min.js.LICENSE.txt
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
/*! tsParticles Bounce External Interaction v3.3.0 by Matteo Bruni */
|
@@ -1,40 +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.3.0
|
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 _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?");
|
27
|
-
|
28
|
-
/***/ }),
|
29
|
-
|
30
|
-
/***/ "./dist/browser/Utils.js":
|
31
|
-
/*!*******************************!*\
|
32
|
-
!*** ./dist/browser/Utils.js ***!
|
33
|
-
\*******************************/
|
34
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
35
|
-
|
36
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ 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?");
|
37
|
-
|
38
|
-
/***/ })
|
39
|
-
|
40
|
-
}]);
|