@tsparticles/interaction-external-attract 4.0.0-beta.0 → 4.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v4.0.0-beta.0
7
+ * v4.0.0-beta.1
8
8
  */
9
9
  /*
10
10
  * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
@@ -64,7 +64,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
64
64
  \*******************************/
65
65
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
66
66
 
67
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Attract: () => (/* reexport safe */ _Options_Classes_Attract_js__WEBPACK_IMPORTED_MODULE_0__.Attract),\n/* harmony export */ loadExternalAttractInteraction: () => (/* binding */ loadExternalAttractInteraction)\n/* harmony export */ });\n/* harmony import */ var _Options_Classes_Attract_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Options/Classes/Attract.js */ \"./dist/browser/Options/Classes/Attract.js\");\nasync function loadExternalAttractInteraction(engine) {\n engine.checkVersion(\"4.0.0-beta.0\");\n await engine.register(async (e)=>{\n const { ensureInteractivityPluginLoaded } = await Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(__webpack_require__, /*! @tsparticles/plugin-interactivity */ \"@tsparticles/plugin-interactivity\", 19));\n ensureInteractivityPluginLoaded(e);\n e.addInteractor?.(\"externalAttract\", async (container)=>{\n const { Attractor } = await __webpack_require__.e(/*! import() */ \"dist_browser_Attractor_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./Attractor.js */ \"./dist/browser/Attractor.js\"));\n return new Attractor(e, container);\n });\n });\n}\n\n\n\n//# sourceURL=webpack://@tsparticles/interaction-external-attract/./dist/browser/index.js?\n}");
67
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Attract: () => (/* reexport safe */ _Options_Classes_Attract_js__WEBPACK_IMPORTED_MODULE_0__.Attract),\n/* harmony export */ loadExternalAttractInteraction: () => (/* binding */ loadExternalAttractInteraction)\n/* harmony export */ });\n/* harmony import */ var _Options_Classes_Attract_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Options/Classes/Attract.js */ \"./dist/browser/Options/Classes/Attract.js\");\nasync function loadExternalAttractInteraction(engine) {\n engine.checkVersion(\"4.0.0-beta.1\");\n await engine.pluginManager.register(async (e)=>{\n const { ensureInteractivityPluginLoaded } = await Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(__webpack_require__, /*! @tsparticles/plugin-interactivity */ \"@tsparticles/plugin-interactivity\", 19));\n ensureInteractivityPluginLoaded(e);\n e.pluginManager.addInteractor?.(\"externalAttract\", async (container)=>{\n const { Attractor } = await __webpack_require__.e(/*! import() */ \"dist_browser_Attractor_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./Attractor.js */ \"./dist/browser/Attractor.js\"));\n return new Attractor(e.pluginManager, container);\n });\n });\n}\n\n\n\n//# sourceURL=webpack://@tsparticles/interaction-external-attract/./dist/browser/index.js?\n}");
68
68
 
69
69
  /***/ }
70
70
 
@@ -1,2 +1,2 @@
1
- !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("@tsparticles/engine"),require("@tsparticles/plugin-interactivity"));else if("function"==typeof define&&define.amd)define(["@tsparticles/engine","@tsparticles/plugin-interactivity"],t);else{var r="object"==typeof exports?t(require("@tsparticles/engine"),require("@tsparticles/plugin-interactivity")):t(e.window,e.window);for(var i in r)("object"==typeof exports?exports:e)[i]=r[i]}}(this,(e,t)=>(()=>{"use strict";var r,i,o,a={303(t){t.exports=e},702(e){e.exports=t},216(e,t,r){r.d(t,{K:()=>o});var i=r(303);class o{distance;duration;easing;factor;maxSpeed;speed;constructor(){this.distance=200,this.duration=.4,this.easing=i.EasingType.easeOutQuad,this.factor=1,this.maxSpeed=50,this.speed=1}load(e){(0,i.isNull)(e)||(void 0!==e.distance&&(this.distance=e.distance),void 0!==e.duration&&(this.duration=e.duration),void 0!==e.easing&&(this.easing=e.easing),void 0!==e.factor&&(this.factor=e.factor),void 0!==e.maxSpeed&&(this.maxSpeed=e.maxSpeed),void 0!==e.speed&&(this.speed=e.speed))}}}},n={};function s(e){var t=n[e];if(void 0!==t)return t.exports;var r=n[e]={exports:{}};return a[e](r,r.exports,s),r.exports}s.m=a,p=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,s.t=function(e,t){if(1&t&&(e=this(e)),8&t||"object"==typeof e&&e&&(4&t&&e.__esModule||16&t&&"function"==typeof e.then))return e;var r=Object.create(null);s.r(r);var i={};c=c||[null,p({}),p([]),p(p)];for(var o=2&t&&e;("object"==typeof o||"function"==typeof o)&&!~c.indexOf(o);o=p(o))Object.getOwnPropertyNames(o).forEach(t=>i[t]=()=>e[t]);return i.default=()=>e,s.d(r,i),r},s.d=(e,t)=>{for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.f={},s.e=e=>Promise.all(Object.keys(s.f).reduce((t,r)=>(s.f[r](e,t),t),[])),s.u=e=>""+e+".min.js",s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),l={},s.l=(e,t,r,i)=>{if(l[e])return void l[e].push(t);if(void 0!==r)for(var o,a,n=document.getElementsByTagName("script"),c=0;c<n.length;c++){var p=n[c];if(p.getAttribute("src")==e||p.getAttribute("data-webpack")=="@tsparticles/interaction-external-attract:"+r){o=p;break}}o||(a=!0,(o=document.createElement("script")).charset="utf-8",s.nc&&o.setAttribute("nonce",s.nc),o.setAttribute("data-webpack","@tsparticles/interaction-external-attract:"+r),o.src=e),l[e]=[t];var d=(t,r)=>{o.onerror=o.onload=null,clearTimeout(u);var i=l[e];if(delete l[e],o.parentNode&&o.parentNode.removeChild(o),i&&i.forEach(e=>e(r)),t)return t(r)},u=setTimeout(d.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=d.bind(null,o.onerror),o.onload=d.bind(null,o.onload),a&&document.head.appendChild(o)},s.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.g.importScripts&&(d=s.g.location+"");var c,p,l,d,u=s.g.document;if(!d&&u&&(u.currentScript&&"SCRIPT"===u.currentScript.tagName.toUpperCase()&&(d=u.currentScript.src),!d)){var f=u.getElementsByTagName("script");if(f.length)for(var h=f.length-1;h>-1&&(!d||!/^http(s?):/.test(d));)d=f[h--].src}if(!d)throw Error("Automatic publicPath is not supported in this browser");s.p=d=d.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r={261:0},s.f.j=(e,t)=>{var i=s.o(r,e)?r[e]:void 0;if(0!==i)if(i)t.push(i[2]);else{var o=new Promise((t,o)=>i=r[e]=[t,o]);t.push(i[2]=o);var a=s.p+s.u(e),n=Error();s.l(a,t=>{if(s.o(r,e)&&(0!==(i=r[e])&&(r[e]=void 0),i)){var o=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src;n.message="Loading chunk "+e+` failed.
2
- (`+o+": "+a+")",n.name="ChunkLoadError",n.type=o,n.request=a,i[1](n)}},"chunk-"+e,e)}},i=(e,t)=>{var i,o,[a,n,c]=t,p=0;if(a.some(e=>0!==r[e])){for(i in n)s.o(n,i)&&(s.m[i]=n[i]);c&&c(s)}for(e&&e(t);p<a.length;p++)o=a[p],s.o(r,o)&&r[o]&&r[o][0](),r[o]=0},(o=this.webpackChunk_tsparticles_interaction_external_attract=this.webpackChunk_tsparticles_interaction_external_attract||[]).forEach(i.bind(null,0)),o.push=i.bind(null,o.push.bind(o));var b={};s.r(b),s.d(b,{Attract:()=>g.K,loadExternalAttractInteraction:()=>v});var g=s(216);async function v(e){e.checkVersion("4.0.0-beta.0"),await e.register(async e=>{let{ensureInteractivityPluginLoaded:t}=await Promise.resolve().then(s.t.bind(s,702,19));t(e),e.addInteractor?.("externalAttract",async t=>{let{Attractor:r}=await s.e(141).then(s.bind(s,141));return new r(e,t)})})}return b})());
1
+ !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("@tsparticles/engine"),require("@tsparticles/plugin-interactivity"));else if("function"==typeof define&&define.amd)define(["@tsparticles/engine","@tsparticles/plugin-interactivity"],t);else{var r="object"==typeof exports?t(require("@tsparticles/engine"),require("@tsparticles/plugin-interactivity")):t(e.window,e.window);for(var i in r)("object"==typeof exports?exports:e)[i]=r[i]}}(this,(e,t)=>(()=>{"use strict";var r,i,a,n={303(t){t.exports=e},702(e){e.exports=t},804(e,t,r){r.d(t,{K:()=>a});var i=r(303);class a{distance;duration;easing;factor;maxSpeed;speed;constructor(){this.distance=200,this.duration=.4,this.easing=i.EasingType.easeOutQuad,this.factor=1,this.maxSpeed=50,this.speed=1}load(e){(0,i.isNull)(e)||(void 0!==e.distance&&(this.distance=e.distance),void 0!==e.duration&&(this.duration=e.duration),void 0!==e.easing&&(this.easing=e.easing),void 0!==e.factor&&(this.factor=e.factor),void 0!==e.maxSpeed&&(this.maxSpeed=e.maxSpeed),void 0!==e.speed&&(this.speed=e.speed))}}}},o={};function s(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}};return n[e](r,r.exports,s),r.exports}s.m=n,p=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,s.t=function(e,t){if(1&t&&(e=this(e)),8&t||"object"==typeof e&&e&&(4&t&&e.__esModule||16&t&&"function"==typeof e.then))return e;var r=Object.create(null);s.r(r);var i={};c=c||[null,p({}),p([]),p(p)];for(var a=2&t&&e;("object"==typeof a||"function"==typeof a)&&!~c.indexOf(a);a=p(a))Object.getOwnPropertyNames(a).forEach(t=>i[t]=()=>e[t]);return i.default=()=>e,s.d(r,i),r},s.d=(e,t)=>{for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.f={},s.e=e=>Promise.all(Object.keys(s.f).reduce((t,r)=>(s.f[r](e,t),t),[])),s.u=e=>""+e+".min.js",s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),l={},s.l=(e,t,r,i)=>{if(l[e])return void l[e].push(t);if(void 0!==r)for(var a,n,o=document.getElementsByTagName("script"),c=0;c<o.length;c++){var p=o[c];if(p.getAttribute("src")==e||p.getAttribute("data-webpack")=="@tsparticles/interaction-external-attract:"+r){a=p;break}}a||(n=!0,(a=document.createElement("script")).charset="utf-8",s.nc&&a.setAttribute("nonce",s.nc),a.setAttribute("data-webpack","@tsparticles/interaction-external-attract:"+r),a.src=e),l[e]=[t];var u=(t,r)=>{a.onerror=a.onload=null,clearTimeout(d);var i=l[e];if(delete l[e],a.parentNode&&a.parentNode.removeChild(a),i&&i.forEach(e=>e(r)),t)return t(r)},d=setTimeout(u.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=u.bind(null,a.onerror),a.onload=u.bind(null,a.onload),n&&document.head.appendChild(a)},s.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.g.importScripts&&(u=s.g.location+"");var c,p,l,u,d=s.g.document;if(!u&&d&&(d.currentScript&&"SCRIPT"===d.currentScript.tagName.toUpperCase()&&(u=d.currentScript.src),!u)){var f=d.getElementsByTagName("script");if(f.length)for(var h=f.length-1;h>-1&&(!u||!/^http(s?):/.test(u));)u=f[h--].src}if(!u)throw Error("Automatic publicPath is not supported in this browser");s.p=u=u.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r={261:0},s.f.j=(e,t)=>{var i=s.o(r,e)?r[e]:void 0;if(0!==i)if(i)t.push(i[2]);else{var a=new Promise((t,a)=>i=r[e]=[t,a]);t.push(i[2]=a);var n=s.p+s.u(e),o=Error();s.l(n,t=>{if(s.o(r,e)&&(0!==(i=r[e])&&(r[e]=void 0),i)){var a=t&&("load"===t.type?"missing":t.type),n=t&&t.target&&t.target.src;o.message="Loading chunk "+e+` failed.
2
+ (`+a+": "+n+")",o.name="ChunkLoadError",o.type=a,o.request=n,i[1](o)}},"chunk-"+e,e)}},i=(e,t)=>{var i,a,[n,o,c]=t,p=0;if(n.some(e=>0!==r[e])){for(i in o)s.o(o,i)&&(s.m[i]=o[i]);c&&c(s)}for(e&&e(t);p<n.length;p++)a=n[p],s.o(r,a)&&r[a]&&r[a][0](),r[a]=0},(a=this.webpackChunk_tsparticles_interaction_external_attract=this.webpackChunk_tsparticles_interaction_external_attract||[]).forEach(i.bind(null,0)),a.push=i.bind(null,a.push.bind(a));var g={};s.r(g),s.d(g,{Attract:()=>b.K,loadExternalAttractInteraction:()=>v});var b=s(804);async function v(e){e.checkVersion("4.0.0-beta.1"),await e.pluginManager.register(async e=>{let{ensureInteractivityPluginLoaded:t}=await Promise.resolve().then(s.t.bind(s,702,19));t(e),e.pluginManager.addInteractor?.("externalAttract",async t=>{let{Attractor:r}=await s.e(92).then(s.bind(s,92));return new r(e.pluginManager,t)})})}return g})());
@@ -1,11 +1,11 @@
1
1
  import type { AttractContainer, AttractMode, IAttractMode } from "./Types.js";
2
- import { type Engine, type RecursivePartial } from "@tsparticles/engine";
3
2
  import { ExternalInteractorBase, type IInteractivityData, type IModes, type InteractivityParticle, type Modes } from "@tsparticles/plugin-interactivity";
3
+ import { type PluginManager, type RecursivePartial } from "@tsparticles/engine";
4
4
  export declare class Attractor extends ExternalInteractorBase<AttractContainer> {
5
5
  handleClickMode: (mode: string, interactivityData: IInteractivityData) => void;
6
- private readonly _engine;
7
6
  private _maxDistance;
8
- constructor(engine: Engine, container: AttractContainer);
7
+ private readonly _pluginManager;
8
+ constructor(pluginManager: PluginManager, container: AttractContainer);
9
9
  get maxDistance(): number;
10
10
  clear(): void;
11
11
  init(): void;
package/types/Utils.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { type Engine, type Particle } from "@tsparticles/engine";
1
+ import { type Particle, type PluginManager } from "@tsparticles/engine";
2
2
  import type { AttractContainer } from "./Types.js";
3
3
  import type { IInteractivityData } from "@tsparticles/plugin-interactivity";
4
- export declare function clickAttract(engine: Engine, container: AttractContainer, interactivityData: IInteractivityData, enabledCb: (particle: Particle) => boolean): void;
5
- export declare function hoverAttract(engine: Engine, container: AttractContainer, interactivityData: IInteractivityData, enabledCb: (particle: Particle) => boolean): void;
4
+ export declare function clickAttract(pluginManager: PluginManager, container: AttractContainer, interactivityData: IInteractivityData, enabledCb: (particle: Particle) => boolean): void;
5
+ export declare function hoverAttract(pluginManager: PluginManager, container: AttractContainer, interactivityData: IInteractivityData, enabledCb: (particle: Particle) => boolean): void;
package/umd/Attractor.js CHANGED
@@ -4,24 +4,24 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "@tsparticles/engine", "@tsparticles/plugin-interactivity", "./Utils.js", "./Options/Classes/Attract.js"], factory);
7
+ define(["require", "exports", "@tsparticles/plugin-interactivity", "@tsparticles/engine", "./Utils.js", "./Options/Classes/Attract.js"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.Attractor = void 0;
13
- const engine_1 = require("@tsparticles/engine");
14
13
  const plugin_interactivity_1 = require("@tsparticles/plugin-interactivity");
14
+ const engine_1 = require("@tsparticles/engine");
15
15
  const Utils_js_1 = require("./Utils.js");
16
16
  const Attract_js_1 = require("./Options/Classes/Attract.js");
17
17
  const attractMode = "attract";
18
18
  class Attractor extends plugin_interactivity_1.ExternalInteractorBase {
19
19
  handleClickMode;
20
- _engine;
21
20
  _maxDistance;
22
- constructor(engine, container) {
21
+ _pluginManager;
22
+ constructor(pluginManager, container) {
23
23
  super(container);
24
- this._engine = engine;
24
+ this._pluginManager = pluginManager;
25
25
  this._maxDistance = 0;
26
26
  container.attract ??= { particles: [] };
27
27
  this.handleClickMode = (mode, interactivityData) => {
@@ -69,10 +69,10 @@
69
69
  }
70
70
  const { enable: hoverEnabled, mode: hoverMode } = events.onHover, { enable: clickEnabled, mode: clickMode } = events.onClick;
71
71
  if (mouseMoveStatus && hoverEnabled && (0, engine_1.isInArray)(attractMode, hoverMode)) {
72
- (0, Utils_js_1.hoverAttract)(this._engine, this.container, interactivityData, p => this.isEnabled(interactivityData, p));
72
+ (0, Utils_js_1.hoverAttract)(this._pluginManager, this.container, interactivityData, p => this.isEnabled(interactivityData, p));
73
73
  }
74
74
  else if (clickEnabled && (0, engine_1.isInArray)(attractMode, clickMode)) {
75
- (0, Utils_js_1.clickAttract)(this._engine, this.container, interactivityData, p => this.isEnabled(interactivityData, p));
75
+ (0, Utils_js_1.clickAttract)(this._pluginManager, this.container, interactivityData, p => this.isEnabled(interactivityData, p));
76
76
  }
77
77
  }
78
78
  isEnabled(interactivityData, particle) {
package/umd/Utils.js CHANGED
@@ -13,20 +13,20 @@
13
13
  exports.hoverAttract = hoverAttract;
14
14
  const engine_1 = require("@tsparticles/engine");
15
15
  const minFactor = 1, minRadius = 0, updateVector = engine_1.Vector.origin;
16
- function processAttract(engine, container, position, attractRadius, area, queryCb) {
16
+ function processAttract(pluginManager, container, position, attractRadius, area, queryCb) {
17
17
  const attractOptions = container.actualOptions.interactivity?.modes.attract;
18
18
  if (!attractOptions) {
19
19
  return;
20
20
  }
21
21
  const query = container.particles.grid.query(area, queryCb);
22
22
  for (const particle of query) {
23
- const { dx, dy, distance } = (0, engine_1.getDistances)(particle.position, position), velocity = attractOptions.speed * attractOptions.factor, attractFactor = (0, engine_1.clamp)(engine.getEasing(attractOptions.easing)(engine_1.identity - distance / attractRadius) * velocity, minFactor, attractOptions.maxSpeed);
23
+ const { dx, dy, distance } = (0, engine_1.getDistances)(particle.position, position), velocity = attractOptions.speed * attractOptions.factor, attractFactor = (0, engine_1.clamp)(pluginManager.getEasing(attractOptions.easing)(engine_1.identity - distance / attractRadius) * velocity, minFactor, attractOptions.maxSpeed);
24
24
  updateVector.x = !distance ? velocity : (dx / distance) * attractFactor;
25
25
  updateVector.y = !distance ? velocity : (dy / distance) * attractFactor;
26
26
  particle.position.subFrom(updateVector);
27
27
  }
28
28
  }
29
- function clickAttract(engine, container, interactivityData, enabledCb) {
29
+ function clickAttract(pluginManager, container, interactivityData, enabledCb) {
30
30
  container.attract ??= { particles: [] };
31
31
  const { attract } = container;
32
32
  if (!attract.finish) {
@@ -41,17 +41,17 @@
41
41
  if (!attractRadius || attractRadius < minRadius || !mousePos) {
42
42
  return;
43
43
  }
44
- processAttract(engine, container, mousePos, attractRadius, new engine_1.Circle(mousePos.x, mousePos.y, attractRadius), (p) => enabledCb(p));
44
+ processAttract(pluginManager, container, mousePos, attractRadius, new engine_1.Circle(mousePos.x, mousePos.y, attractRadius), (p) => enabledCb(p));
45
45
  }
46
46
  else if (attract.clicking === false) {
47
47
  attract.particles = [];
48
48
  }
49
49
  }
50
- function hoverAttract(engine, container, interactivityData, enabledCb) {
50
+ function hoverAttract(pluginManager, container, interactivityData, enabledCb) {
51
51
  const mousePos = interactivityData.mouse.position, attractRadius = container.retina.attractModeDistance;
52
52
  if (!attractRadius || attractRadius < minRadius || !mousePos) {
53
53
  return;
54
54
  }
55
- processAttract(engine, container, mousePos, attractRadius, new engine_1.Circle(mousePos.x, mousePos.y, attractRadius), (p) => enabledCb(p));
55
+ processAttract(pluginManager, container, mousePos, attractRadius, new engine_1.Circle(mousePos.x, mousePos.y, attractRadius), (p) => enabledCb(p));
56
56
  }
57
57
  });
package/umd/index.js CHANGED
@@ -48,13 +48,13 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
48
48
  Object.defineProperty(exports, "__esModule", { value: true });
49
49
  exports.loadExternalAttractInteraction = loadExternalAttractInteraction;
50
50
  async function loadExternalAttractInteraction(engine) {
51
- engine.checkVersion("4.0.0-beta.0");
52
- await engine.register(async (e) => {
51
+ engine.checkVersion("4.0.0-beta.1");
52
+ await engine.pluginManager.register(async (e) => {
53
53
  const { ensureInteractivityPluginLoaded } = await (__syncRequire ? Promise.resolve().then(() => __importStar(require("@tsparticles/plugin-interactivity"))) : new Promise((resolve_1, reject_1) => { require(["@tsparticles/plugin-interactivity"], resolve_1, reject_1); }).then(__importStar));
54
54
  ensureInteractivityPluginLoaded(e);
55
- e.addInteractor?.("externalAttract", async (container) => {
55
+ e.pluginManager.addInteractor?.("externalAttract", async (container) => {
56
56
  const { Attractor } = await (__syncRequire ? Promise.resolve().then(() => __importStar(require("./Attractor.js"))) : new Promise((resolve_2, reject_2) => { require(["./Attractor.js"], resolve_2, reject_2); }).then(__importStar));
57
- return new Attractor(e, container);
57
+ return new Attractor(e.pluginManager, container);
58
58
  });
59
59
  });
60
60
  }
package/141.min.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(this.webpackChunk_tsparticles_interaction_external_attract=this.webpackChunk_tsparticles_interaction_external_attract||[]).push([[141],{141(t,e,i){i.d(e,{Attractor:()=>l});var a=i(303),n=i(702);let c=a.Vector.origin;function r(t,e,i,n,r,s){let o=e.actualOptions.interactivity?.modes.attract;if(o)for(let l of e.particles.grid.query(r,s)){let{dx:e,dy:r,distance:s}=(0,a.getDistances)(l.position,i),d=o.speed*o.factor,u=(0,a.clamp)(t.getEasing(o.easing)(a.identity-s/n)*d,1,o.maxSpeed);c.x=s?e/s*u:d,c.y=s?r/s*u:d,l.position.subFrom(c)}}var s=i(216);let o="attract";class l extends n.ExternalInteractorBase{handleClickMode;_engine;_maxDistance;constructor(t,e){super(e),this._engine=t,this._maxDistance=0,e.attract??={particles:[]},this.handleClickMode=(t,i)=>{let n=this.container.actualOptions,c=n.interactivity?.modes.attract;if(c&&t===o){for(let t of(e.attract??={particles:[]},e.attract.clicking=!0,e.attract.count=0,e.attract.particles))this.isEnabled(i,t)&&t.velocity.setTo(t.initialVelocity);e.attract.particles=[],e.attract.finish=!1,setTimeout(()=>{e.destroyed||(e.attract??={particles:[]},e.attract.clicking=!1)},c.duration*a.millisecondsToSeconds)}}}get maxDistance(){return this._maxDistance}clear(){}init(){let t=this.container,e=t.actualOptions.interactivity?.modes.attract;e&&(this._maxDistance=e.distance,t.retina.attractModeDistance=e.distance*t.retina.pixelRatio)}interact(t){let e=this.container.actualOptions,i=t.status===n.mouseMoveEvent,c=e.interactivity?.events;if(!c)return;let{enable:s,mode:l}=c.onHover,{enable:d,mode:u}=c.onClick;if(i&&s&&(0,a.isInArray)(o,l)){var p,h,m;let e,i;p=this._engine,h=this.container,m=e=>this.isEnabled(t,e),e=t.mouse.position,(i=h.retina.attractModeDistance)&&!(i<0)&&e&&r(p,h,e,i,new a.Circle(e.x,e.y,i),t=>m(t))}else d&&(0,a.isInArray)(o,u)&&function(t,e,i,n){e.attract??={particles:[]};let{attract:c}=e;if(c.finish||(c.count??=0,c.count++,c.count===e.particles.count&&(c.finish=!0)),c.clicking){let c=i.mouse.clickPosition,s=e.retina.attractModeDistance;if(!s||s<0||!c)return;r(t,e,c,s,new a.Circle(c.x,c.y,s),t=>n(t))}else!1===c.clicking&&(c.particles=[])}(this._engine,this.container,t,e=>this.isEnabled(t,e))}isEnabled(t,e){let i=this.container.actualOptions,n=t.mouse,c=(e?.interactivity??i.interactivity)?.events;if((!n.position||!c?.onHover.enable)&&(!n.clickPosition||!c?.onClick.enable))return!1;let r=c.onHover.mode,s=c.onClick.mode;return(0,a.isInArray)(o,r)||(0,a.isInArray)(o,s)}loadModeOptions(t,...e){for(let i of(t.attract??=new s.K,e))t.attract.load(i?.attract)}reset(){}}}}]);