@tsparticles/interaction-external-attract
Advanced tools
Comparing version 3.0.0-beta.3 to 3.0.0-beta.4
import { Circle, ExternalInteractorBase, Vector, clamp, getDistances, getEasing, isInArray, mouseMoveEvent, } from "@tsparticles/engine"; | ||
import { Attract } from "./Options/Classes/Attract.js"; | ||
const attractMode = "attract"; | ||
export class Attractor extends ExternalInteractorBase { | ||
@@ -60,3 +61,3 @@ constructor(engine, container) { | ||
const options = this.container.actualOptions, attract = options.interactivity.modes.attract; | ||
if (!attract || mode !== "attract") { | ||
if (!attract || mode !== attractMode) { | ||
return; | ||
@@ -99,6 +100,6 @@ } | ||
const container = this.container, options = container.actualOptions, mouseMoveStatus = container.interactivity.status === mouseMoveEvent, events = options.interactivity.events, hoverEnabled = events.onHover.enable, hoverMode = events.onHover.mode, clickEnabled = events.onClick.enable, clickMode = events.onClick.mode; | ||
if (mouseMoveStatus && hoverEnabled && isInArray("attract", hoverMode)) { | ||
if (mouseMoveStatus && hoverEnabled && isInArray(attractMode, hoverMode)) { | ||
this._hoverAttract(); | ||
} | ||
else if (clickEnabled && isInArray("attract", clickMode)) { | ||
else if (clickEnabled && isInArray(attractMode, clickMode)) { | ||
this._clickAttract(); | ||
@@ -113,3 +114,3 @@ } | ||
const hoverMode = events.onHover.mode, clickMode = events.onClick.mode; | ||
return isInArray("attract", hoverMode) || isInArray("attract", clickMode); | ||
return isInArray(attractMode, hoverMode) || isInArray(attractMode, clickMode); | ||
} | ||
@@ -116,0 +117,0 @@ loadModeOptions(options, ...sources) { |
@@ -6,2 +6,3 @@ "use strict"; | ||
const Attract_js_1 = require("./Options/Classes/Attract.js"); | ||
const attractMode = "attract"; | ||
class Attractor extends engine_1.ExternalInteractorBase { | ||
@@ -64,3 +65,3 @@ constructor(engine, container) { | ||
const options = this.container.actualOptions, attract = options.interactivity.modes.attract; | ||
if (!attract || mode !== "attract") { | ||
if (!attract || mode !== attractMode) { | ||
return; | ||
@@ -103,6 +104,6 @@ } | ||
const container = this.container, options = container.actualOptions, mouseMoveStatus = container.interactivity.status === engine_1.mouseMoveEvent, events = options.interactivity.events, hoverEnabled = events.onHover.enable, hoverMode = events.onHover.mode, clickEnabled = events.onClick.enable, clickMode = events.onClick.mode; | ||
if (mouseMoveStatus && hoverEnabled && (0, engine_1.isInArray)("attract", hoverMode)) { | ||
if (mouseMoveStatus && hoverEnabled && (0, engine_1.isInArray)(attractMode, hoverMode)) { | ||
this._hoverAttract(); | ||
} | ||
else if (clickEnabled && (0, engine_1.isInArray)("attract", clickMode)) { | ||
else if (clickEnabled && (0, engine_1.isInArray)(attractMode, clickMode)) { | ||
this._clickAttract(); | ||
@@ -117,3 +118,3 @@ } | ||
const hoverMode = events.onHover.mode, clickMode = events.onClick.mode; | ||
return (0, engine_1.isInArray)("attract", hoverMode) || (0, engine_1.isInArray)("attract", clickMode); | ||
return (0, engine_1.isInArray)(attractMode, hoverMode) || (0, engine_1.isInArray)(attractMode, clickMode); | ||
} | ||
@@ -120,0 +121,0 @@ loadModeOptions(options, ...sources) { |
import { Circle, ExternalInteractorBase, Vector, clamp, getDistances, getEasing, isInArray, mouseMoveEvent, } from "@tsparticles/engine"; | ||
import { Attract } from "./Options/Classes/Attract.js"; | ||
const attractMode = "attract"; | ||
export class Attractor extends ExternalInteractorBase { | ||
@@ -60,3 +61,3 @@ constructor(engine, container) { | ||
const options = this.container.actualOptions, attract = options.interactivity.modes.attract; | ||
if (!attract || mode !== "attract") { | ||
if (!attract || mode !== attractMode) { | ||
return; | ||
@@ -99,6 +100,6 @@ } | ||
const container = this.container, options = container.actualOptions, mouseMoveStatus = container.interactivity.status === mouseMoveEvent, events = options.interactivity.events, hoverEnabled = events.onHover.enable, hoverMode = events.onHover.mode, clickEnabled = events.onClick.enable, clickMode = events.onClick.mode; | ||
if (mouseMoveStatus && hoverEnabled && isInArray("attract", hoverMode)) { | ||
if (mouseMoveStatus && hoverEnabled && isInArray(attractMode, hoverMode)) { | ||
this._hoverAttract(); | ||
} | ||
else if (clickEnabled && isInArray("attract", clickMode)) { | ||
else if (clickEnabled && isInArray(attractMode, clickMode)) { | ||
this._clickAttract(); | ||
@@ -113,3 +114,3 @@ } | ||
const hoverMode = events.onHover.mode, clickMode = events.onClick.mode; | ||
return isInArray("attract", hoverMode) || isInArray("attract", clickMode); | ||
return isInArray(attractMode, hoverMode) || isInArray(attractMode, clickMode); | ||
} | ||
@@ -116,0 +117,0 @@ loadModeOptions(options, ...sources) { |
{ | ||
"name": "@tsparticles/interaction-external-attract", | ||
"version": "3.0.0-beta.3", | ||
"version": "3.0.0-beta.4", | ||
"description": "tsParticles attract external interaction", | ||
@@ -63,3 +63,3 @@ "homepage": "https://particles.js.org", | ||
"canvas-confetti", | ||
"@tsparticles/plugin", | ||
"tsparticles-plugin", | ||
"@tsparticles/interaction" | ||
@@ -91,3 +91,3 @@ ], | ||
"dependencies": { | ||
"@tsparticles/engine": "^3.0.0-beta.3" | ||
"@tsparticles/engine": "^3.0.0-beta.4" | ||
}, | ||
@@ -94,0 +94,0 @@ "publishConfig": { |
@@ -7,3 +7,3 @@ /*! | ||
* How to use? : Check the GitHub README | ||
* v3.0.0-beta.3 | ||
* v3.0.0-beta.4 | ||
*/ | ||
@@ -138,2 +138,3 @@ (function webpackUniversalModuleDefinition(root, factory) { | ||
const attractMode = "attract"; | ||
class Attractor extends engine_root_window_.ExternalInteractorBase { | ||
@@ -210,3 +211,3 @@ constructor(engine, container) { | ||
attract = options.interactivity.modes.attract; | ||
if (!attract || mode !== "attract") { | ||
if (!attract || mode !== attractMode) { | ||
return; | ||
@@ -260,5 +261,5 @@ } | ||
clickMode = events.onClick.mode; | ||
if (mouseMoveStatus && hoverEnabled && (0,engine_root_window_.isInArray)("attract", hoverMode)) { | ||
if (mouseMoveStatus && hoverEnabled && (0,engine_root_window_.isInArray)(attractMode, hoverMode)) { | ||
this._hoverAttract(); | ||
} else if (clickEnabled && (0,engine_root_window_.isInArray)("attract", clickMode)) { | ||
} else if (clickEnabled && (0,engine_root_window_.isInArray)(attractMode, clickMode)) { | ||
this._clickAttract(); | ||
@@ -277,3 +278,3 @@ } | ||
clickMode = events.onClick.mode; | ||
return (0,engine_root_window_.isInArray)("attract", hoverMode) || (0,engine_root_window_.isInArray)("attract", clickMode); | ||
return (0,engine_root_window_.isInArray)(attractMode, hoverMode) || (0,engine_root_window_.isInArray)(attractMode, clickMode); | ||
} | ||
@@ -280,0 +281,0 @@ loadModeOptions(options, ...sources) { |
/*! For license information please see tsparticles.interaction.external.attract.min.js.LICENSE.txt */ | ||
!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("@tsparticles/engine"));else if("function"==typeof define&&define.amd)define(["@tsparticles/engine"],e);else{var i="object"==typeof exports?e(require("@tsparticles/engine")):e(t.window);for(var a in i)("object"==typeof exports?exports:t)[a]=i[a]}}(this,(t=>(()=>{"use strict";var e={533:e=>{e.exports=t}},i={};function a(t){var r=i[t];if(void 0!==r)return r.exports;var n=i[t]={exports:{}};return e[t](n,n.exports,a),n.exports}a.d=(t,e)=>{for(var i in e)a.o(e,i)&&!a.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};return(()=>{a.r(r),a.d(r,{Attract:()=>e,loadExternalAttractInteraction:()=>n});var t=a(533);class e{constructor(){this.distance=200,this.duration=.4,this.easing="ease-out-quad",this.factor=1,this.maxSpeed=50,this.speed=1}load(t){t&&(void 0!==t.distance&&(this.distance=t.distance),void 0!==t.duration&&(this.duration=t.duration),void 0!==t.easing&&(this.easing=t.easing),void 0!==t.factor&&(this.factor=t.factor),void 0!==t.maxSpeed&&(this.maxSpeed=t.maxSpeed),void 0!==t.speed&&(this.speed=t.speed))}}class i extends t.ExternalInteractorBase{constructor(e,i){super(i),this._clickAttract=()=>{const e=this.container;e.attract||(e.attract={particles:[]});const{attract:i}=e;if(i.finish||(i.count||(i.count=0),i.count++,i.count===e.particles.count&&(i.finish=!0)),i.clicking){const i=e.interactivity.mouse.clickPosition,a=e.retina.attractModeDistance;if(!a||a<0||!i)return;this._processAttract(i,a,new t.Circle(i.x,i.y,a))}else!1===i.clicking&&(i.particles=[])},this._hoverAttract=()=>{const e=this.container,i=e.interactivity.mouse.position,a=e.retina.attractModeDistance;!a||a<0||!i||this._processAttract(i,a,new t.Circle(i.x,i.y,a))},this._processAttract=(e,i,a)=>{const r=this.container,n=r.actualOptions.interactivity.modes.attract;if(!n)return;const c=r.particles.quadTree.query(a,(t=>this.isEnabled(t)));for(const a of c){const{dx:r,dy:c,distance:o}=(0,t.getDistances)(a.position,e),s=n.speed*n.factor,d=(0,t.clamp)((0,t.getEasing)(n.easing)(1-o/i)*s,0,n.maxSpeed),l=t.Vector.create(0===o?s:r/o*d,0===o?s:c/o*d);a.position.subFrom(l)}},this._engine=e,i.attract||(i.attract={particles:[]}),this.handleClickMode=t=>{const e=this.container.actualOptions.interactivity.modes.attract;if(e&&"attract"===t){i.attract||(i.attract={particles:[]}),i.attract.clicking=!0,i.attract.count=0;for(const t of i.attract.particles)this.isEnabled(t)&&t.velocity.setTo(t.initialVelocity);i.attract.particles=[],i.attract.finish=!1,setTimeout((()=>{i.destroyed||(i.attract||(i.attract={particles:[]}),i.attract.clicking=!1)}),1e3*e.duration)}}}clear(){}init(){const t=this.container,e=t.actualOptions.interactivity.modes.attract;e&&(t.retina.attractModeDistance=e.distance*t.retina.pixelRatio)}async interact(){const e=this.container,i=e.actualOptions,a=e.interactivity.status===t.mouseMoveEvent,r=i.interactivity.events,n=r.onHover.enable,c=r.onHover.mode,o=r.onClick.enable,s=r.onClick.mode;a&&n&&(0,t.isInArray)("attract",c)?this._hoverAttract():o&&(0,t.isInArray)("attract",s)&&this._clickAttract()}isEnabled(e){const i=this.container,a=i.actualOptions,r=i.interactivity.mouse,n=(e?.interactivity??a.interactivity).events;if(!(r.position&&n.onHover.enable||r.clickPosition&&n.onClick.enable))return!1;const c=n.onHover.mode,o=n.onClick.mode;return(0,t.isInArray)("attract",c)||(0,t.isInArray)("attract",o)}loadModeOptions(t,...i){t.attract||(t.attract=new e);for(const e of i)t.attract.load(e?.attract)}reset(){}}async function n(t,e=!0){await t.addInteractor("externalAttract",(e=>new i(t,e)),e)}})(),r})())); | ||
!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("@tsparticles/engine"));else if("function"==typeof define&&define.amd)define(["@tsparticles/engine"],e);else{var i="object"==typeof exports?e(require("@tsparticles/engine")):e(t.window);for(var a in i)("object"==typeof exports?exports:t)[a]=i[a]}}(this,(t=>(()=>{"use strict";var e={533:e=>{e.exports=t}},i={};function a(t){var r=i[t];if(void 0!==r)return r.exports;var n=i[t]={exports:{}};return e[t](n,n.exports,a),n.exports}a.d=(t,e)=>{for(var i in e)a.o(e,i)&&!a.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};return(()=>{a.r(r),a.d(r,{Attract:()=>e,loadExternalAttractInteraction:()=>o});var t=a(533);class e{constructor(){this.distance=200,this.duration=.4,this.easing="ease-out-quad",this.factor=1,this.maxSpeed=50,this.speed=1}load(t){t&&(void 0!==t.distance&&(this.distance=t.distance),void 0!==t.duration&&(this.duration=t.duration),void 0!==t.easing&&(this.easing=t.easing),void 0!==t.factor&&(this.factor=t.factor),void 0!==t.maxSpeed&&(this.maxSpeed=t.maxSpeed),void 0!==t.speed&&(this.speed=t.speed))}}const i="attract";class n extends t.ExternalInteractorBase{constructor(e,a){super(a),this._clickAttract=()=>{const e=this.container;e.attract||(e.attract={particles:[]});const{attract:i}=e;if(i.finish||(i.count||(i.count=0),i.count++,i.count===e.particles.count&&(i.finish=!0)),i.clicking){const i=e.interactivity.mouse.clickPosition,a=e.retina.attractModeDistance;if(!a||a<0||!i)return;this._processAttract(i,a,new t.Circle(i.x,i.y,a))}else!1===i.clicking&&(i.particles=[])},this._hoverAttract=()=>{const e=this.container,i=e.interactivity.mouse.position,a=e.retina.attractModeDistance;!a||a<0||!i||this._processAttract(i,a,new t.Circle(i.x,i.y,a))},this._processAttract=(e,i,a)=>{const r=this.container,n=r.actualOptions.interactivity.modes.attract;if(!n)return;const o=r.particles.quadTree.query(a,(t=>this.isEnabled(t)));for(const a of o){const{dx:r,dy:o,distance:c}=(0,t.getDistances)(a.position,e),s=n.speed*n.factor,d=(0,t.clamp)((0,t.getEasing)(n.easing)(1-c/i)*s,0,n.maxSpeed),l=t.Vector.create(0===c?s:r/c*d,0===c?s:o/c*d);a.position.subFrom(l)}},this._engine=e,a.attract||(a.attract={particles:[]}),this.handleClickMode=t=>{const e=this.container.actualOptions.interactivity.modes.attract;if(e&&t===i){a.attract||(a.attract={particles:[]}),a.attract.clicking=!0,a.attract.count=0;for(const t of a.attract.particles)this.isEnabled(t)&&t.velocity.setTo(t.initialVelocity);a.attract.particles=[],a.attract.finish=!1,setTimeout((()=>{a.destroyed||(a.attract||(a.attract={particles:[]}),a.attract.clicking=!1)}),1e3*e.duration)}}}clear(){}init(){const t=this.container,e=t.actualOptions.interactivity.modes.attract;e&&(t.retina.attractModeDistance=e.distance*t.retina.pixelRatio)}async interact(){const e=this.container,a=e.actualOptions,r=e.interactivity.status===t.mouseMoveEvent,n=a.interactivity.events,o=n.onHover.enable,c=n.onHover.mode,s=n.onClick.enable,d=n.onClick.mode;r&&o&&(0,t.isInArray)(i,c)?this._hoverAttract():s&&(0,t.isInArray)(i,d)&&this._clickAttract()}isEnabled(e){const a=this.container,r=a.actualOptions,n=a.interactivity.mouse,o=(e?.interactivity??r.interactivity).events;if(!(n.position&&o.onHover.enable||n.clickPosition&&o.onClick.enable))return!1;const c=o.onHover.mode,s=o.onClick.mode;return(0,t.isInArray)(i,c)||(0,t.isInArray)(i,s)}loadModeOptions(t,...i){t.attract||(t.attract=new e);for(const e of i)t.attract.load(e?.attract)}reset(){}}async function o(t,e=!0){await t.addInteractor("externalAttract",(e=>new n(t,e)),e)}})(),r})())); |
@@ -1,1 +0,1 @@ | ||
/*! tsParticles Attract External Interaction v3.0.0-beta.3 by Matteo Bruni */ | ||
/*! tsParticles Attract External Interaction v3.0.0-beta.4 by Matteo Bruni */ |
@@ -15,2 +15,3 @@ (function (factory) { | ||
const Attract_js_1 = require("./Options/Classes/Attract.js"); | ||
const attractMode = "attract"; | ||
class Attractor extends engine_1.ExternalInteractorBase { | ||
@@ -73,3 +74,3 @@ constructor(engine, container) { | ||
const options = this.container.actualOptions, attract = options.interactivity.modes.attract; | ||
if (!attract || mode !== "attract") { | ||
if (!attract || mode !== attractMode) { | ||
return; | ||
@@ -112,6 +113,6 @@ } | ||
const container = this.container, options = container.actualOptions, mouseMoveStatus = container.interactivity.status === engine_1.mouseMoveEvent, events = options.interactivity.events, hoverEnabled = events.onHover.enable, hoverMode = events.onHover.mode, clickEnabled = events.onClick.enable, clickMode = events.onClick.mode; | ||
if (mouseMoveStatus && hoverEnabled && (0, engine_1.isInArray)("attract", hoverMode)) { | ||
if (mouseMoveStatus && hoverEnabled && (0, engine_1.isInArray)(attractMode, hoverMode)) { | ||
this._hoverAttract(); | ||
} | ||
else if (clickEnabled && (0, engine_1.isInArray)("attract", clickMode)) { | ||
else if (clickEnabled && (0, engine_1.isInArray)(attractMode, clickMode)) { | ||
this._clickAttract(); | ||
@@ -126,3 +127,3 @@ } | ||
const hoverMode = events.onHover.mode, clickMode = events.onClick.mode; | ||
return (0, engine_1.isInArray)("attract", hoverMode) || (0, engine_1.isInArray)("attract", clickMode); | ||
return (0, engine_1.isInArray)(attractMode, hoverMode) || (0, engine_1.isInArray)(attractMode, clickMode); | ||
} | ||
@@ -129,0 +130,0 @@ loadModeOptions(options, ...sources) { |
Sorry, the diff of this file is not supported yet
1144
332942
1