@tsparticles/updater-out-modes 3.1.0 → 3.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/103.min.js +2 -0
  2. package/103.min.js.LICENSE.txt +1 -0
  3. package/388.min.js +2 -0
  4. package/388.min.js.LICENSE.txt +1 -0
  5. package/53.min.js +2 -0
  6. package/53.min.js.LICENSE.txt +1 -0
  7. package/569.min.js +2 -0
  8. package/569.min.js.LICENSE.txt +1 -0
  9. package/886.min.js +2 -0
  10. package/886.min.js.LICENSE.txt +1 -0
  11. package/920.min.js +2 -0
  12. package/920.min.js.LICENSE.txt +1 -0
  13. package/browser/BounceOutMode.js +3 -8
  14. package/browser/DestroyOutMode.js +3 -3
  15. package/browser/NoneOutMode.js +3 -4
  16. package/browser/OutOfCanvasUpdater.js +34 -18
  17. package/browser/OutOutMode.js +2 -1
  18. package/browser/Utils.js +2 -8
  19. package/browser/index.js +4 -2
  20. package/cjs/BounceOutMode.js +28 -10
  21. package/cjs/DestroyOutMode.js +3 -3
  22. package/cjs/NoneOutMode.js +3 -4
  23. package/cjs/OutOfCanvasUpdater.js +57 -18
  24. package/cjs/OutOutMode.js +2 -1
  25. package/cjs/Utils.js +2 -8
  26. package/cjs/index.js +27 -2
  27. package/dist_browser_BounceOutMode_js.js +30 -0
  28. package/dist_browser_DestroyOutMode_js.js +30 -0
  29. package/dist_browser_NoneOutMode_js.js +30 -0
  30. package/dist_browser_OutOfCanvasUpdater_js.js +30 -0
  31. package/dist_browser_OutOutMode_js.js +30 -0
  32. package/dist_browser_Utils_js.js +30 -0
  33. package/esm/BounceOutMode.js +3 -8
  34. package/esm/DestroyOutMode.js +3 -3
  35. package/esm/NoneOutMode.js +3 -4
  36. package/esm/OutOfCanvasUpdater.js +34 -18
  37. package/esm/OutOutMode.js +2 -1
  38. package/esm/Utils.js +2 -8
  39. package/esm/index.js +4 -2
  40. package/package.json +2 -2
  41. package/report.html +3 -3
  42. package/tsparticles.updater.out-modes.js +241 -360
  43. package/tsparticles.updater.out-modes.min.js +1 -1
  44. package/tsparticles.updater.out-modes.min.js.LICENSE.txt +1 -1
  45. package/types/BounceOutMode.d.ts +3 -3
  46. package/types/DestroyOutMode.d.ts +3 -3
  47. package/types/IBounceData.d.ts +2 -2
  48. package/types/IOutModeManager.d.ts +3 -3
  49. package/types/NoneOutMode.d.ts +3 -3
  50. package/types/OutOfCanvasUpdater.d.ts +2 -2
  51. package/types/OutOutMode.d.ts +3 -3
  52. package/umd/BounceOutMode.js +30 -11
  53. package/umd/DestroyOutMode.js +3 -3
  54. package/umd/NoneOutMode.js +3 -4
  55. package/umd/OutOfCanvasUpdater.js +59 -19
  56. package/umd/OutOutMode.js +2 -1
  57. package/umd/Utils.js +2 -8
  58. package/umd/index.js +29 -3
@@ -0,0 +1,30 @@
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.1
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_updater_out_modes"] = this["webpackChunk_tsparticles_updater_out_modes"] || []).push([["dist_browser_NoneOutMode_js"],{
19
+
20
+ /***/ "./dist/browser/NoneOutMode.js":
21
+ /*!*************************************!*\
22
+ !*** ./dist/browser/NoneOutMode.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 */ NoneOutMode: () => (/* binding */ NoneOutMode)\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 minVelocity = 0;\nclass NoneOutMode {\n constructor(container) {\n this.container = container;\n this.modes = [\"none\"];\n }\n async update(particle, direction, delta, outMode) {\n if (!this.modes.includes(outMode)) {\n return;\n }\n if ((particle.options.move.distance.horizontal && (direction === \"left\" || direction === \"right\")) ?? (particle.options.move.distance.vertical && (direction === \"top\" || direction === \"bottom\"))) {\n return;\n }\n const gravityOptions = particle.options.move.gravity,\n container = this.container,\n canvasSize = container.canvas.size,\n pRadius = particle.getRadius();\n if (!gravityOptions.enable) {\n if (particle.velocity.y > minVelocity && particle.position.y <= canvasSize.height + pRadius || particle.velocity.y < minVelocity && particle.position.y >= -pRadius || particle.velocity.x > minVelocity && particle.position.x <= canvasSize.width + pRadius || particle.velocity.x < minVelocity && particle.position.x >= -pRadius) {\n return;\n }\n if (!(0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isPointInside)(particle.position, container.canvas.size, _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin, pRadius, direction)) {\n container.particles.remove(particle);\n }\n } else {\n const position = particle.position;\n if (!gravityOptions.inverse && position.y > canvasSize.height + pRadius && direction === \"bottom\" || gravityOptions.inverse && position.y < -pRadius && direction === \"top\") {\n container.particles.remove(particle);\n }\n }\n await Promise.resolve();\n }\n}\n\n//# sourceURL=webpack://@tsparticles/updater-out-modes/./dist/browser/NoneOutMode.js?");
27
+
28
+ /***/ })
29
+
30
+ }]);
@@ -0,0 +1,30 @@
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.1
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_updater_out_modes"] = this["webpackChunk_tsparticles_updater_out_modes"] || []).push([["dist_browser_OutOfCanvasUpdater_js"],{
19
+
20
+ /***/ "./dist/browser/OutOfCanvasUpdater.js":
21
+ /*!********************************************!*\
22
+ !*** ./dist/browser/OutOfCanvasUpdater.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 */ OutOfCanvasUpdater: () => (/* binding */ OutOfCanvasUpdater)\n/* harmony export */ });\nconst checkOutMode = (outModes, outMode) => {\n return outModes.default === outMode || outModes.bottom === outMode || outModes.left === outMode || outModes.right === outMode || outModes.top === outMode;\n};\nclass OutOfCanvasUpdater {\n constructor(container) {\n this._updateOutMode = async (particle, delta, outMode, direction) => {\n for (const updater of this.updaters) {\n await updater.update(particle, direction, delta, outMode);\n }\n };\n this.container = container;\n this.updaters = [];\n }\n async init(particle) {\n this.updaters = [];\n const outModes = particle.options.move.outModes;\n if (checkOutMode(outModes, \"bounce\")) {\n const {\n BounceOutMode\n } = await __webpack_require__.e(/*! import() */ \"dist_browser_BounceOutMode_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./BounceOutMode.js */ \"./dist/browser/BounceOutMode.js\"));\n this.updaters.push(new BounceOutMode(this.container));\n } else if (checkOutMode(outModes, \"out\")) {\n const {\n OutOutMode\n } = await __webpack_require__.e(/*! import() */ \"dist_browser_OutOutMode_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./OutOutMode.js */ \"./dist/browser/OutOutMode.js\"));\n this.updaters.push(new OutOutMode(this.container));\n } else if (checkOutMode(outModes, \"destroy\")) {\n const {\n DestroyOutMode\n } = await __webpack_require__.e(/*! import() */ \"dist_browser_DestroyOutMode_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./DestroyOutMode.js */ \"./dist/browser/DestroyOutMode.js\"));\n this.updaters.push(new DestroyOutMode(this.container));\n } else if (checkOutMode(outModes, \"none\")) {\n const {\n NoneOutMode\n } = await __webpack_require__.e(/*! import() */ \"dist_browser_NoneOutMode_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./NoneOutMode.js */ \"./dist/browser/NoneOutMode.js\"));\n this.updaters.push(new NoneOutMode(this.container));\n }\n }\n isEnabled(particle) {\n return !particle.destroyed && !particle.spawning;\n }\n async update(particle, delta) {\n const outModes = particle.options.move.outModes;\n await this._updateOutMode(particle, delta, outModes.bottom ?? outModes.default, \"bottom\");\n await this._updateOutMode(particle, delta, outModes.left ?? outModes.default, \"left\");\n await this._updateOutMode(particle, delta, outModes.right ?? outModes.default, \"right\");\n await this._updateOutMode(particle, delta, outModes.top ?? outModes.default, \"top\");\n }\n}\n\n//# sourceURL=webpack://@tsparticles/updater-out-modes/./dist/browser/OutOfCanvasUpdater.js?");
27
+
28
+ /***/ })
29
+
30
+ }]);
@@ -0,0 +1,30 @@
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.1
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_updater_out_modes"] = this["webpackChunk_tsparticles_updater_out_modes"] || []).push([["dist_browser_OutOutMode_js"],{
19
+
20
+ /***/ "./dist/browser/OutOutMode.js":
21
+ /*!************************************!*\
22
+ !*** ./dist/browser/OutOutMode.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 */ OutOutMode: () => (/* binding */ OutOutMode)\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 minVelocity = 0,\n minDistance = 0;\nclass OutOutMode {\n constructor(container) {\n this.container = container;\n this.modes = [\"out\"];\n }\n async update(particle, direction, delta, outMode) {\n if (!this.modes.includes(outMode)) {\n return;\n }\n const container = this.container;\n switch (particle.outType) {\n case \"inside\":\n {\n const {\n x: vx,\n y: vy\n } = particle.velocity;\n const circVec = _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin;\n circVec.length = particle.moveCenter.radius;\n circVec.angle = particle.velocity.angle + Math.PI;\n circVec.addTo(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.create(particle.moveCenter));\n const {\n dx,\n dy\n } = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getDistances)(particle.position, circVec);\n if (vx <= minVelocity && dx >= minDistance || vy <= minVelocity && dy >= minDistance || vx >= minVelocity && dx <= minDistance || vy >= minVelocity && dy <= minDistance) {\n return;\n }\n particle.position.x = Math.floor((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.randomInRange)({\n min: 0,\n max: container.canvas.size.width\n }));\n particle.position.y = Math.floor((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.randomInRange)({\n min: 0,\n max: container.canvas.size.height\n }));\n const {\n dx: newDx,\n dy: newDy\n } = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getDistances)(particle.position, particle.moveCenter);\n particle.direction = Math.atan2(-newDy, -newDx);\n particle.velocity.angle = particle.direction;\n break;\n }\n default:\n {\n if ((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.isPointInside)(particle.position, container.canvas.size, _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.Vector.origin, particle.getRadius(), direction)) {\n return;\n }\n switch (particle.outType) {\n case \"outside\":\n {\n particle.position.x = Math.floor((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.randomInRange)({\n min: -particle.moveCenter.radius,\n max: particle.moveCenter.radius\n })) + particle.moveCenter.x;\n particle.position.y = Math.floor((0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.randomInRange)({\n min: -particle.moveCenter.radius,\n max: particle.moveCenter.radius\n })) + particle.moveCenter.y;\n const {\n dx,\n dy\n } = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getDistances)(particle.position, particle.moveCenter);\n if (particle.moveCenter.radius) {\n particle.direction = Math.atan2(dy, dx);\n particle.velocity.angle = particle.direction;\n }\n break;\n }\n case \"normal\":\n {\n const warp = particle.options.move.warp,\n canvasSize = container.canvas.size,\n newPos = {\n bottom: canvasSize.height + particle.getRadius() + particle.offset.y,\n left: -particle.getRadius() - particle.offset.x,\n right: canvasSize.width + particle.getRadius() + particle.offset.x,\n top: -particle.getRadius() - particle.offset.y\n },\n sizeValue = particle.getRadius(),\n nextBounds = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.calculateBounds)(particle.position, sizeValue);\n if (direction === \"right\" && nextBounds.left > canvasSize.width + particle.offset.x) {\n particle.position.x = newPos.left;\n particle.initialPosition.x = particle.position.x;\n if (!warp) {\n particle.position.y = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * canvasSize.height;\n particle.initialPosition.y = particle.position.y;\n }\n } else if (direction === \"left\" && nextBounds.right < -particle.offset.x) {\n particle.position.x = newPos.right;\n particle.initialPosition.x = particle.position.x;\n if (!warp) {\n particle.position.y = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * canvasSize.height;\n particle.initialPosition.y = particle.position.y;\n }\n }\n if (direction === \"bottom\" && nextBounds.top > canvasSize.height + particle.offset.y) {\n if (!warp) {\n particle.position.x = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * canvasSize.width;\n particle.initialPosition.x = particle.position.x;\n }\n particle.position.y = newPos.top;\n particle.initialPosition.y = particle.position.y;\n } else if (direction === \"top\" && nextBounds.bottom < -particle.offset.y) {\n if (!warp) {\n particle.position.x = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * canvasSize.width;\n particle.initialPosition.x = particle.position.x;\n }\n particle.position.y = newPos.bottom;\n particle.initialPosition.y = particle.position.y;\n }\n break;\n }\n }\n break;\n }\n }\n await Promise.resolve();\n }\n}\n\n//# sourceURL=webpack://@tsparticles/updater-out-modes/./dist/browser/OutOutMode.js?");
27
+
28
+ /***/ })
29
+
30
+ }]);
@@ -0,0 +1,30 @@
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.1
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_updater_out_modes"] = this["webpackChunk_tsparticles_updater_out_modes"] || []).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 */ bounceHorizontal: () => (/* binding */ bounceHorizontal),\n/* harmony export */ bounceVertical: () => (/* binding */ bounceVertical)\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 minVelocity = 0,\n boundsMin = 0;\nfunction bounceHorizontal(data) {\n if (data.outMode !== \"bounce\" && data.outMode !== \"split\" || data.direction !== \"left\" && data.direction !== \"right\") {\n return;\n }\n if (data.bounds.right < boundsMin && data.direction === \"left\") {\n data.particle.position.x = data.size + data.offset.x;\n } else if (data.bounds.left > data.canvasSize.width && data.direction === \"right\") {\n data.particle.position.x = data.canvasSize.width - data.size - data.offset.x;\n }\n const velocity = data.particle.velocity.x;\n let bounced = false;\n if (data.direction === \"right\" && data.bounds.right >= data.canvasSize.width && velocity > minVelocity || data.direction === \"left\" && data.bounds.left <= boundsMin && velocity < minVelocity) {\n const newVelocity = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(data.particle.options.bounce.horizontal.value);\n data.particle.velocity.x *= -newVelocity;\n bounced = true;\n }\n if (!bounced) {\n return;\n }\n const minPos = data.offset.x + data.size;\n if (data.bounds.right >= data.canvasSize.width && data.direction === \"right\") {\n data.particle.position.x = data.canvasSize.width - minPos;\n } else if (data.bounds.left <= boundsMin && data.direction === \"left\") {\n data.particle.position.x = minPos;\n }\n if (data.outMode === \"split\") {\n data.particle.destroy();\n }\n}\nfunction bounceVertical(data) {\n if (data.outMode !== \"bounce\" && data.outMode !== \"split\" || data.direction !== \"bottom\" && data.direction !== \"top\") {\n return;\n }\n if (data.bounds.bottom < boundsMin && data.direction === \"top\") {\n data.particle.position.y = data.size + data.offset.y;\n } else if (data.bounds.top > data.canvasSize.height && data.direction === \"bottom\") {\n data.particle.position.y = data.canvasSize.height - data.size - data.offset.y;\n }\n const velocity = data.particle.velocity.y;\n let bounced = false;\n if (data.direction === \"bottom\" && data.bounds.bottom >= data.canvasSize.height && velocity > minVelocity || data.direction === \"top\" && data.bounds.top <= boundsMin && velocity < minVelocity) {\n const newVelocity = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(data.particle.options.bounce.vertical.value);\n data.particle.velocity.y *= -newVelocity;\n bounced = true;\n }\n if (!bounced) {\n return;\n }\n const minPos = data.offset.y + data.size;\n if (data.bounds.bottom >= data.canvasSize.height && data.direction === \"bottom\") {\n data.particle.position.y = data.canvasSize.height - minPos;\n } else if (data.bounds.top <= boundsMin && data.direction === \"top\") {\n data.particle.position.y = minPos;\n }\n if (data.outMode === \"split\") {\n data.particle.destroy();\n }\n}\n\n//# sourceURL=webpack://@tsparticles/updater-out-modes/./dist/browser/Utils.js?");
27
+
28
+ /***/ })
29
+
30
+ }]);
@@ -1,18 +1,13 @@
1
1
  import { calculateBounds, } from "@tsparticles/engine";
2
- import { bounceHorizontal, bounceVertical } from "./Utils.js";
3
2
  export class BounceOutMode {
4
3
  constructor(container) {
5
4
  this.container = container;
6
5
  this.modes = [
7
6
  "bounce",
8
- "bounce-vertical",
9
- "bounce-horizontal",
10
- "bounceVertical",
11
- "bounceHorizontal",
12
7
  "split",
13
8
  ];
14
9
  }
15
- update(particle, direction, delta, outMode) {
10
+ async update(particle, direction, delta, outMode) {
16
11
  if (!this.modes.includes(outMode)) {
17
12
  return;
18
13
  }
@@ -20,7 +15,7 @@ export class BounceOutMode {
20
15
  let handled = false;
21
16
  for (const [, plugin] of container.plugins) {
22
17
  if (plugin.particleBounce !== undefined) {
23
- handled = plugin.particleBounce(particle, delta, direction);
18
+ handled = await plugin.particleBounce(particle, delta, direction);
24
19
  }
25
20
  if (handled) {
26
21
  break;
@@ -29,7 +24,7 @@ export class BounceOutMode {
29
24
  if (handled) {
30
25
  return;
31
26
  }
32
- const pos = particle.getPosition(), offset = particle.offset, size = particle.getRadius(), bounds = calculateBounds(pos, size), canvasSize = container.canvas.size;
27
+ const pos = particle.getPosition(), offset = particle.offset, size = particle.getRadius(), bounds = calculateBounds(pos, size), canvasSize = container.canvas.size, { bounceHorizontal, bounceVertical } = await import("./Utils.js");
33
28
  bounceHorizontal({ particle, outMode, direction, bounds, canvasSize, offset, size });
34
29
  bounceVertical({ particle, outMode, direction, bounds, canvasSize, offset, size });
35
30
  }
@@ -5,7 +5,7 @@ export class DestroyOutMode {
5
5
  this.container = container;
6
6
  this.modes = ["destroy"];
7
7
  }
8
- update(particle, direction, _delta, outMode) {
8
+ async update(particle, direction, _delta, outMode) {
9
9
  if (!this.modes.includes(outMode)) {
10
10
  return;
11
11
  }
@@ -18,8 +18,7 @@ export class DestroyOutMode {
18
18
  }
19
19
  break;
20
20
  case "inside": {
21
- const { dx, dy } = getDistances(particle.position, particle.moveCenter);
22
- const { x: vx, y: vy } = particle.velocity;
21
+ const { dx, dy } = getDistances(particle.position, particle.moveCenter), { x: vx, y: vy } = particle.velocity;
23
22
  if ((vx < minVelocity && dx > particle.moveCenter.radius) ||
24
23
  (vy < minVelocity && dy > particle.moveCenter.radius) ||
25
24
  (vx >= minVelocity && dx < -particle.moveCenter.radius) ||
@@ -30,5 +29,6 @@ export class DestroyOutMode {
30
29
  }
31
30
  }
32
31
  container.particles.remove(particle, undefined, true);
32
+ await Promise.resolve();
33
33
  }
34
34
  }
@@ -5,7 +5,7 @@ export class NoneOutMode {
5
5
  this.container = container;
6
6
  this.modes = ["none"];
7
7
  }
8
- update(particle, direction, delta, outMode) {
8
+ async update(particle, direction, delta, outMode) {
9
9
  if (!this.modes.includes(outMode)) {
10
10
  return;
11
11
  }
@@ -15,9 +15,7 @@ export class NoneOutMode {
15
15
  (direction === "top" || direction === "bottom"))) {
16
16
  return;
17
17
  }
18
- const gravityOptions = particle.options.move.gravity, container = this.container;
19
- const canvasSize = container.canvas.size;
20
- const pRadius = particle.getRadius();
18
+ const gravityOptions = particle.options.move.gravity, container = this.container, canvasSize = container.canvas.size, pRadius = particle.getRadius();
21
19
  if (!gravityOptions.enable) {
22
20
  if ((particle.velocity.y > minVelocity && particle.position.y <= canvasSize.height + pRadius) ||
23
21
  (particle.velocity.y < minVelocity && particle.position.y >= -pRadius) ||
@@ -38,5 +36,6 @@ export class NoneOutMode {
38
36
  container.particles.remove(particle);
39
37
  }
40
38
  }
39
+ await Promise.resolve();
41
40
  }
42
41
  }
@@ -1,32 +1,48 @@
1
- import { BounceOutMode } from "./BounceOutMode.js";
2
- import { DestroyOutMode } from "./DestroyOutMode.js";
3
- import { NoneOutMode } from "./NoneOutMode.js";
4
- import { OutOutMode } from "./OutOutMode.js";
1
+ const checkOutMode = (outModes, outMode) => {
2
+ return (outModes.default === outMode ||
3
+ outModes.bottom === outMode ||
4
+ outModes.left === outMode ||
5
+ outModes.right === outMode ||
6
+ outModes.top === outMode);
7
+ };
5
8
  export class OutOfCanvasUpdater {
6
9
  constructor(container) {
7
- this._updateOutMode = (particle, delta, outMode, direction) => {
10
+ this._updateOutMode = async (particle, delta, outMode, direction) => {
8
11
  for (const updater of this.updaters) {
9
- updater.update(particle, direction, delta, outMode);
12
+ await updater.update(particle, direction, delta, outMode);
10
13
  }
11
14
  };
12
15
  this.container = container;
13
- this.updaters = [
14
- new BounceOutMode(container),
15
- new DestroyOutMode(container),
16
- new OutOutMode(container),
17
- new NoneOutMode(container),
18
- ];
16
+ this.updaters = [];
19
17
  }
20
- init() {
18
+ async init(particle) {
19
+ this.updaters = [];
20
+ const outModes = particle.options.move.outModes;
21
+ if (checkOutMode(outModes, "bounce")) {
22
+ const { BounceOutMode } = await import("./BounceOutMode.js");
23
+ this.updaters.push(new BounceOutMode(this.container));
24
+ }
25
+ else if (checkOutMode(outModes, "out")) {
26
+ const { OutOutMode } = await import("./OutOutMode.js");
27
+ this.updaters.push(new OutOutMode(this.container));
28
+ }
29
+ else if (checkOutMode(outModes, "destroy")) {
30
+ const { DestroyOutMode } = await import("./DestroyOutMode.js");
31
+ this.updaters.push(new DestroyOutMode(this.container));
32
+ }
33
+ else if (checkOutMode(outModes, "none")) {
34
+ const { NoneOutMode } = await import("./NoneOutMode.js");
35
+ this.updaters.push(new NoneOutMode(this.container));
36
+ }
21
37
  }
22
38
  isEnabled(particle) {
23
39
  return !particle.destroyed && !particle.spawning;
24
40
  }
25
- update(particle, delta) {
41
+ async update(particle, delta) {
26
42
  const outModes = particle.options.move.outModes;
27
- this._updateOutMode(particle, delta, outModes.bottom ?? outModes.default, "bottom");
28
- this._updateOutMode(particle, delta, outModes.left ?? outModes.default, "left");
29
- this._updateOutMode(particle, delta, outModes.right ?? outModes.default, "right");
30
- this._updateOutMode(particle, delta, outModes.top ?? outModes.default, "top");
43
+ await this._updateOutMode(particle, delta, outModes.bottom ?? outModes.default, "bottom");
44
+ await this._updateOutMode(particle, delta, outModes.left ?? outModes.default, "left");
45
+ await this._updateOutMode(particle, delta, outModes.right ?? outModes.default, "right");
46
+ await this._updateOutMode(particle, delta, outModes.top ?? outModes.default, "top");
31
47
  }
32
48
  }
package/esm/OutOutMode.js CHANGED
@@ -5,7 +5,7 @@ export class OutOutMode {
5
5
  this.container = container;
6
6
  this.modes = ["out"];
7
7
  }
8
- update(particle, direction, delta, outMode) {
8
+ async update(particle, direction, delta, outMode) {
9
9
  if (!this.modes.includes(outMode)) {
10
10
  return;
11
11
  }
@@ -107,5 +107,6 @@ export class OutOutMode {
107
107
  break;
108
108
  }
109
109
  }
110
+ await Promise.resolve();
110
111
  }
111
112
  }
package/esm/Utils.js CHANGED
@@ -1,10 +1,7 @@
1
1
  import { getRangeValue } from "@tsparticles/engine";
2
2
  const minVelocity = 0, boundsMin = 0;
3
3
  export function bounceHorizontal(data) {
4
- if ((data.outMode !== "bounce" &&
5
- data.outMode !== "bounce-horizontal" &&
6
- data.outMode !== "bounceHorizontal" &&
7
- data.outMode !== "split") ||
4
+ if ((data.outMode !== "bounce" && data.outMode !== "split") ||
8
5
  (data.direction !== "left" && data.direction !== "right")) {
9
6
  return;
10
7
  }
@@ -39,10 +36,7 @@ export function bounceHorizontal(data) {
39
36
  }
40
37
  }
41
38
  export function bounceVertical(data) {
42
- if ((data.outMode !== "bounce" &&
43
- data.outMode !== "bounce-vertical" &&
44
- data.outMode !== "bounceVertical" &&
45
- data.outMode !== "split") ||
39
+ if ((data.outMode !== "bounce" && data.outMode !== "split") ||
46
40
  (data.direction !== "bottom" && data.direction !== "top")) {
47
41
  return;
48
42
  }
package/esm/index.js CHANGED
@@ -1,4 +1,6 @@
1
- import { OutOfCanvasUpdater } from "./OutOfCanvasUpdater.js";
2
1
  export async function loadOutModesUpdater(engine, refresh = true) {
3
- await engine.addParticleUpdater("outModes", (container) => new OutOfCanvasUpdater(container), refresh);
2
+ await engine.addParticleUpdater("outModes", async (container) => {
3
+ const { OutOfCanvasUpdater } = await import("./OutOfCanvasUpdater.js");
4
+ return new OutOfCanvasUpdater(container);
5
+ }, refresh);
4
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsparticles/updater-out-modes",
3
- "version": "3.1.0",
3
+ "version": "3.2.1",
4
4
  "description": "tsParticles particles out modes updater",
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.1.0"
90
+ "@tsparticles/engine": "^3.2.1"
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/updater-out-modes [13 Jan 2024 at 23:08]</title>
6
+ <title>@tsparticles/updater-out-modes [31 Jan 2024 at 09:56]</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>
@@ -31,8 +31,8 @@
31
31
  <body>
32
32
  <div id="app"></div>
33
33
  <script>
34
- window.chartData = [{"label":"tsparticles.updater.out-modes.js","isAsset":true,"statSize":13442,"parsedSize":17636,"gzipSize":3492,"groups":[{"label":"dist/browser","path":"./dist/browser","statSize":13400,"groups":[{"id":421,"label":"index.js + 6 modules (concatenated)","path":"./dist/browser/index.js + 6 modules (concatenated)","statSize":13400,"parsedSize":17636,"gzipSize":3492,"concatenated":true,"groups":[{"label":"dist/browser","path":"./dist/browser/index.js + 6 modules (concatenated)/dist/browser","statSize":13400,"groups":[{"id":null,"label":"index.js","path":"./dist/browser/index.js + 6 modules (concatenated)/dist/browser/index.js","statSize":235,"parsedSize":309,"gzipSize":61,"inaccurateSizes":true},{"id":null,"label":"OutOfCanvasUpdater.js","path":"./dist/browser/index.js + 6 modules (concatenated)/dist/browser/OutOfCanvasUpdater.js","statSize":1149,"parsedSize":1512,"gzipSize":299,"inaccurateSizes":true},{"id":null,"label":"BounceOutMode.js","path":"./dist/browser/index.js + 6 modules (concatenated)/dist/browser/BounceOutMode.js","statSize":1230,"parsedSize":1618,"gzipSize":320,"inaccurateSizes":true},{"id":null,"label":"DestroyOutMode.js","path":"./dist/browser/index.js + 6 modules (concatenated)/dist/browser/DestroyOutMode.js","statSize":1209,"parsedSize":1591,"gzipSize":315,"inaccurateSizes":true},{"id":null,"label":"OutOutMode.js","path":"./dist/browser/index.js + 6 modules (concatenated)/dist/browser/OutOutMode.js","statSize":5149,"parsedSize":6776,"gzipSize":1341,"inaccurateSizes":true},{"id":null,"label":"NoneOutMode.js","path":"./dist/browser/index.js + 6 modules (concatenated)/dist/browser/NoneOutMode.js","statSize":1565,"parsedSize":2059,"gzipSize":407,"inaccurateSizes":true},{"id":null,"label":"Utils.js","path":"./dist/browser/index.js + 6 modules (concatenated)/dist/browser/Utils.js","statSize":2863,"parsedSize":3768,"gzipSize":746,"inaccurateSizes":true}],"parsedSize":17636,"gzipSize":3492,"inaccurateSizes":true}]}],"parsedSize":17636,"gzipSize":3492},{"label":"engine\",\"commonjs2\":\"@tsparticles/engine\",\"amd\":\"@tsparticles","path":"./engine\",\"commonjs2\":\"@tsparticles/engine\",\"amd\":\"@tsparticles","statSize":42,"groups":[{"id":533,"label":"engine\",\"root\":\"window\"}","path":"./engine\",\"commonjs2\":\"@tsparticles/engine\",\"amd\":\"@tsparticles/engine\",\"root\":\"window\"}","statSize":42}],"parsedSize":0,"gzipSize":0}],"isInitialByEntrypoint":{"tsparticles.updater.out-modes":true}}];
35
- window.entrypoints = ["tsparticles.updater.out-modes","tsparticles.updater.out-modes.min"];
34
+ window.chartData = [];
35
+ window.entrypoints = ["tsparticles.updater.out-modes.min"];
36
36
  window.defaultSizes = "parsed";
37
37
  </script>
38
38
  </body>