@tsparticles/move-base 3.0.3 → 3.2.0
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.
- package/103.min.js +2 -0
- package/103.min.js.LICENSE.txt +1 -0
- package/460.min.js +2 -0
- package/460.min.js.LICENSE.txt +1 -0
- package/browser/BaseMover.js +15 -29
- package/browser/Utils.js +50 -26
- package/browser/index.js +4 -2
- package/cjs/BaseMover.js +39 -30
- package/cjs/Utils.js +51 -26
- package/cjs/index.js +27 -2
- package/dist_browser_BaseMover_js.js +30 -0
- package/dist_browser_Utils_js.js +30 -0
- package/esm/BaseMover.js +15 -29
- package/esm/Utils.js +50 -26
- package/esm/index.js +4 -2
- package/package.json +2 -2
- package/report.html +3 -3
- package/tsparticles.move.base.js +241 -211
- package/tsparticles.move.base.min.js +1 -1
- package/tsparticles.move.base.min.js.LICENSE.txt +1 -1
- package/types/BaseMover.d.ts +2 -3
- package/types/Utils.d.ts +3 -2
- package/umd/BaseMover.js +41 -31
- package/umd/Utils.js +51 -26
- package/umd/index.js +29 -3
package/103.min.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! For license information please see 103.min.js.LICENSE.txt */
|
|
2
|
+
(this.webpackChunk_tsparticles_move_base=this.webpackChunk_tsparticles_move_base||[]).push([[103],{103:(i,e,t)=>{t.d(e,{applyDistance:()=>y,getProximitySpeedFactor:()=>d,initSpin:()=>x,move:()=>p,spin:()=>v});var n=t(533);const a=.5,s=0,o=1,c=60,l=0,r=.01;function y(i){const e=i.initialPosition,{dx:t,dy:o}=(0,n.getDistances)(e,i.position),c=Math.abs(t),l=Math.abs(o),{maxDistance:r}=i.retina,y=r.horizontal,p=r.vertical;if(!y&&!p)return;if(!((y&&c>=y)??!1)&&!((p&&l>=p)??!1)||i.misplaced){if((!y||c<y)&&(!p||l<p)&&i.misplaced)i.misplaced=!1;else if(i.misplaced){const t=i.position,a=i.velocity;y&&(t.x<e.x&&a.x<s||t.x>e.x&&a.x>s)&&(a.x*=-(0,n.getRandom)()),p&&(t.y<e.y&&a.y<s||t.y>e.y&&a.y>s)&&(a.y*=-(0,n.getRandom)())}}else i.misplaced=!!y&&c>y||!!p&&l>p,y&&(i.velocity.x=i.velocity.y*a-i.velocity.x),p&&(i.velocity.y=i.velocity.x*a-i.velocity.y)}async function p(i,e,t,a,l,r){await async function(i,e){const t=i.options,a=t.move.path;if(!a.enable)return;if(i.lastPathTime<=i.pathDelay)return void(i.lastPathTime+=e.value);const s=await(i.pathGenerator?.generate(i,e));s&&i.velocity.addTo(s);a.clamp&&(i.velocity.x=(0,n.clamp)(i.velocity.x,-o,o),i.velocity.y=(0,n.clamp)(i.velocity.y,-o,o));i.lastPathTime-=i.pathDelay}(i,r);const y=i.gravity,p=y?.enable&&y.inverse?-o:o;l&&t&&(i.velocity.x+=l*r.factor/(c*t)),y?.enable&&t&&(i.velocity.y+=p*(y.acceleration*r.factor)/(c*t));const v=i.moveDecay;i.velocity.multTo(v);const d=i.velocity.mult(t);y?.enable&&a>s&&(!y.inverse&&d.y>=s&&d.y>=a||y.inverse&&d.y<=s&&d.y<=-a)&&(d.y=p*a,t&&(i.velocity.y=d.y/t));const x=i.options.zIndex,h=(o-i.zIndexFactor)**x.velocityRate;d.multTo(h);const{position:u}=i;u.addTo(d),e.vibrate&&(u.x+=Math.sin(u.x*Math.cos(u.y)),u.y+=Math.cos(u.y*Math.sin(u.x)))}function v(i,e){const t=i.container;if(!i.spin)return;const n={x:"clockwise"===i.spin.direction?Math.cos:Math.sin,y:"clockwise"===i.spin.direction?Math.sin:Math.cos};i.position.x=i.spin.center.x+i.spin.radius*n.x(i.spin.angle),i.position.y=i.spin.center.y+i.spin.radius*n.y(i.spin.angle),i.spin.radius+=i.spin.acceleration;const s=Math.max(t.canvas.size.width,t.canvas.size.height),c=s*a;i.spin.radius>c?(i.spin.radius=c,i.spin.acceleration*=-o):i.spin.radius<l&&(i.spin.radius=l,i.spin.acceleration*=-o),i.spin.angle+=e*r*(o-i.spin.radius/s)}function d(i){return i.slow.inRange?i.slow.factor:o}function x(i){const e=i.container,t=i.options.move.spin;if(!t.enable)return;const a=t.position??{x:50,y:50},s={x:.01*a.x*e.canvas.size.width,y:.01*a.y*e.canvas.size.height},o=i.getPosition(),c=(0,n.getDistance)(o,s),l=(0,n.getRangeValue)(t.acceleration);i.retina.spinAcceleration=l*e.retina.pixelRatio;i.spin={center:s,direction:i.velocity.x>=0?"clockwise":"counter-clockwise",angle:i.velocity.angle,radius:c,acceleration:i.retina.spinAcceleration}}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! tsParticles Base Move v3.2.0 by Matteo Bruni */
|
package/460.min.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! For license information please see 460.min.js.LICENSE.txt */
|
|
2
|
+
(this.webpackChunk_tsparticles_move_base=this.webpackChunk_tsparticles_move_base||[]).push([[460],{460:(e,a,t)=>{t.d(a,{BaseMover:()=>i});var n=t(533);class i{async init(e){const a=e.options.move.gravity;e.gravity={enable:a.enable,acceleration:(0,n.getRangeValue)(a.acceleration),inverse:a.inverse};const{initSpin:i}=await t.e(103).then(t.bind(t,103));i(e),await Promise.resolve()}isEnabled(e){return!e.destroyed&&e.options.move.enable}async move(e,a){const i=e.options,o=i.move;if(!o.enable)return;const s=e.container,r=s.retina.pixelRatio;e.retina.moveSpeed??=(0,n.getRangeValue)(o.speed)*r,e.retina.moveDrift??=(0,n.getRangeValue)(e.options.move.drift)*r;const{getProximitySpeedFactor:c}=await t.e(103).then(t.bind(t,103)),p=c(e),v=e.retina.moveSpeed*s.retina.reduceFactor,l=e.retina.moveDrift,d=(0,n.getRangeMax)(i.size.value)*r,m=v*(o.size?e.getRadius()/d:1)*p*(a.factor||1)/2,b=e.retina.maxSpeed??s.retina.maxSpeed;if(o.spin.enable){const{spin:a}=await t.e(103).then(t.bind(t,103));a(e,m)}else{const{move:n}=await t.e(103).then(t.bind(t,103));await n(e,o,m,b,l,a)}const{applyDistance:g}=await t.e(103).then(t.bind(t,103));g(e)}}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! tsParticles Base Move v3.2.0 by Matteo Bruni */
|
package/browser/BaseMover.js
CHANGED
|
@@ -1,52 +1,38 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
const diffFactor = 2;
|
|
1
|
+
import { getRangeMax, getRangeValue } from "@tsparticles/engine";
|
|
2
|
+
const diffFactor = 2, defaultSizeFactor = 1, defaultDeltaFactor = 1;
|
|
4
3
|
export class BaseMover {
|
|
5
|
-
|
|
6
|
-
this._initSpin = (particle) => {
|
|
7
|
-
const container = particle.container, options = particle.options, spinOptions = options.move.spin;
|
|
8
|
-
if (!spinOptions.enable) {
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
const spinPos = spinOptions.position ?? { x: 50, y: 50 }, spinCenter = {
|
|
12
|
-
x: spinPos.x * 0.01 * container.canvas.size.width,
|
|
13
|
-
y: spinPos.y * 0.01 * container.canvas.size.height,
|
|
14
|
-
}, pos = particle.getPosition(), distance = getDistance(pos, spinCenter), spinAcceleration = getRangeValue(spinOptions.acceleration);
|
|
15
|
-
particle.retina.spinAcceleration = spinAcceleration * container.retina.pixelRatio;
|
|
16
|
-
particle.spin = {
|
|
17
|
-
center: spinCenter,
|
|
18
|
-
direction: particle.velocity.x >= 0 ? "clockwise" : "counter-clockwise",
|
|
19
|
-
angle: particle.velocity.angle,
|
|
20
|
-
radius: distance,
|
|
21
|
-
acceleration: particle.retina.spinAcceleration,
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
init(particle) {
|
|
4
|
+
async init(particle) {
|
|
26
5
|
const options = particle.options, gravityOptions = options.move.gravity;
|
|
27
6
|
particle.gravity = {
|
|
28
7
|
enable: gravityOptions.enable,
|
|
29
8
|
acceleration: getRangeValue(gravityOptions.acceleration),
|
|
30
9
|
inverse: gravityOptions.inverse,
|
|
31
10
|
};
|
|
32
|
-
|
|
11
|
+
const { initSpin } = await import("./Utils.js");
|
|
12
|
+
initSpin(particle);
|
|
13
|
+
await Promise.resolve();
|
|
33
14
|
}
|
|
34
15
|
isEnabled(particle) {
|
|
35
16
|
return !particle.destroyed && particle.options.move.enable;
|
|
36
17
|
}
|
|
37
|
-
move(particle, delta) {
|
|
18
|
+
async move(particle, delta) {
|
|
38
19
|
const particleOptions = particle.options, moveOptions = particleOptions.move;
|
|
39
20
|
if (!moveOptions.enable) {
|
|
40
21
|
return;
|
|
41
22
|
}
|
|
42
|
-
const container = particle.container, pxRatio = container.retina.pixelRatio
|
|
43
|
-
|
|
23
|
+
const container = particle.container, pxRatio = container.retina.pixelRatio;
|
|
24
|
+
particle.retina.moveSpeed ??= getRangeValue(moveOptions.speed) * pxRatio;
|
|
25
|
+
particle.retina.moveDrift ??= getRangeValue(particle.options.move.drift) * pxRatio;
|
|
26
|
+
const { getProximitySpeedFactor } = await import("./Utils.js"), slowFactor = getProximitySpeedFactor(particle), baseSpeed = particle.retina.moveSpeed * container.retina.reduceFactor, moveDrift = particle.retina.moveDrift, maxSize = getRangeMax(particleOptions.size.value) * pxRatio, sizeFactor = moveOptions.size ? particle.getRadius() / maxSize : defaultSizeFactor, deltaFactor = delta.factor || defaultDeltaFactor, moveSpeed = (baseSpeed * sizeFactor * slowFactor * deltaFactor) / diffFactor, maxSpeed = particle.retina.maxSpeed ?? container.retina.maxSpeed;
|
|
44
27
|
if (moveOptions.spin.enable) {
|
|
28
|
+
const { spin } = await import("./Utils.js");
|
|
45
29
|
spin(particle, moveSpeed);
|
|
46
30
|
}
|
|
47
31
|
else {
|
|
48
|
-
move
|
|
32
|
+
const { move } = await import("./Utils.js");
|
|
33
|
+
await move(particle, moveOptions, moveSpeed, maxSpeed, moveDrift, delta);
|
|
49
34
|
}
|
|
35
|
+
const { applyDistance } = await import("./Utils.js");
|
|
50
36
|
applyDistance(particle);
|
|
51
37
|
}
|
|
52
38
|
}
|
package/browser/Utils.js
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
import { clamp, getDistances, getRandom, } from "@tsparticles/engine";
|
|
1
|
+
import { clamp, getDistance, getDistances, getRandom, getRangeValue, } from "@tsparticles/engine";
|
|
2
|
+
const half = 0.5, minVelocity = 0, identity = 1, moveSpeedFactor = 60, minSpinRadius = 0, spinFactor = 0.01;
|
|
2
3
|
export function applyDistance(particle) {
|
|
3
4
|
const initialPosition = particle.initialPosition, { dx, dy } = getDistances(initialPosition, particle.position), dxFixed = Math.abs(dx), dyFixed = Math.abs(dy), { maxDistance } = particle.retina, hDistance = maxDistance.horizontal, vDistance = maxDistance.vertical;
|
|
4
5
|
if (!hDistance && !vDistance) {
|
|
5
6
|
return;
|
|
6
7
|
}
|
|
7
|
-
|
|
8
|
+
const hasHDistance = (hDistance && dxFixed >= hDistance) ?? false, hasVDistance = (vDistance && dyFixed >= vDistance) ?? false;
|
|
9
|
+
if ((hasHDistance || hasVDistance) && !particle.misplaced) {
|
|
8
10
|
particle.misplaced = (!!hDistance && dxFixed > hDistance) || (!!vDistance && dyFixed > vDistance);
|
|
9
11
|
if (hDistance) {
|
|
10
|
-
particle.velocity.x = particle.velocity.y *
|
|
12
|
+
particle.velocity.x = particle.velocity.y * half - particle.velocity.x;
|
|
11
13
|
}
|
|
12
14
|
if (vDistance) {
|
|
13
|
-
particle.velocity.y = particle.velocity.x *
|
|
15
|
+
particle.velocity.y = particle.velocity.x * half - particle.velocity.y;
|
|
14
16
|
}
|
|
15
17
|
}
|
|
16
18
|
else if ((!hDistance || dxFixed < hDistance) && (!vDistance || dyFixed < vDistance) && particle.misplaced) {
|
|
@@ -18,36 +20,39 @@ export function applyDistance(particle) {
|
|
|
18
20
|
}
|
|
19
21
|
else if (particle.misplaced) {
|
|
20
22
|
const pos = particle.position, vel = particle.velocity;
|
|
21
|
-
if (hDistance &&
|
|
23
|
+
if (hDistance &&
|
|
24
|
+
((pos.x < initialPosition.x && vel.x < minVelocity) || (pos.x > initialPosition.x && vel.x > minVelocity))) {
|
|
22
25
|
vel.x *= -getRandom();
|
|
23
26
|
}
|
|
24
|
-
if (vDistance &&
|
|
27
|
+
if (vDistance &&
|
|
28
|
+
((pos.y < initialPosition.y && vel.y < minVelocity) || (pos.y > initialPosition.y && vel.y > minVelocity))) {
|
|
25
29
|
vel.y *= -getRandom();
|
|
26
30
|
}
|
|
27
31
|
}
|
|
28
32
|
}
|
|
29
|
-
export function move(particle, moveOptions, moveSpeed, maxSpeed, moveDrift, delta) {
|
|
30
|
-
applyPath(particle, delta);
|
|
31
|
-
const gravityOptions = particle.gravity, gravityFactor = gravityOptions?.enable && gravityOptions.inverse ? -
|
|
33
|
+
export async function move(particle, moveOptions, moveSpeed, maxSpeed, moveDrift, delta) {
|
|
34
|
+
await applyPath(particle, delta);
|
|
35
|
+
const gravityOptions = particle.gravity, gravityFactor = gravityOptions?.enable && gravityOptions.inverse ? -identity : identity;
|
|
32
36
|
if (moveDrift && moveSpeed) {
|
|
33
|
-
particle.velocity.x += (moveDrift * delta.factor) / (
|
|
37
|
+
particle.velocity.x += (moveDrift * delta.factor) / (moveSpeedFactor * moveSpeed);
|
|
34
38
|
}
|
|
35
39
|
if (gravityOptions?.enable && moveSpeed) {
|
|
36
|
-
particle.velocity.y +=
|
|
40
|
+
particle.velocity.y +=
|
|
41
|
+
(gravityFactor * (gravityOptions.acceleration * delta.factor)) / (moveSpeedFactor * moveSpeed);
|
|
37
42
|
}
|
|
38
43
|
const decay = particle.moveDecay;
|
|
39
44
|
particle.velocity.multTo(decay);
|
|
40
45
|
const velocity = particle.velocity.mult(moveSpeed);
|
|
41
46
|
if (gravityOptions?.enable &&
|
|
42
|
-
maxSpeed >
|
|
43
|
-
((!gravityOptions.inverse && velocity.y >=
|
|
44
|
-
(gravityOptions.inverse && velocity.y <=
|
|
47
|
+
maxSpeed > minVelocity &&
|
|
48
|
+
((!gravityOptions.inverse && velocity.y >= minVelocity && velocity.y >= maxSpeed) ||
|
|
49
|
+
(gravityOptions.inverse && velocity.y <= minVelocity && velocity.y <= -maxSpeed))) {
|
|
45
50
|
velocity.y = gravityFactor * maxSpeed;
|
|
46
51
|
if (moveSpeed) {
|
|
47
52
|
particle.velocity.y = velocity.y / moveSpeed;
|
|
48
53
|
}
|
|
49
54
|
}
|
|
50
|
-
const zIndexOptions = particle.options.zIndex, zVelocityFactor = (
|
|
55
|
+
const zIndexOptions = particle.options.zIndex, zVelocityFactor = (identity - particle.zIndexFactor) ** zIndexOptions.velocityRate;
|
|
51
56
|
velocity.multTo(zVelocityFactor);
|
|
52
57
|
const { position } = particle;
|
|
53
58
|
position.addTo(velocity);
|
|
@@ -68,18 +73,18 @@ export function spin(particle, moveSpeed) {
|
|
|
68
73
|
particle.position.x = particle.spin.center.x + particle.spin.radius * updateFunc.x(particle.spin.angle);
|
|
69
74
|
particle.position.y = particle.spin.center.y + particle.spin.radius * updateFunc.y(particle.spin.angle);
|
|
70
75
|
particle.spin.radius += particle.spin.acceleration;
|
|
71
|
-
const maxCanvasSize = Math.max(container.canvas.size.width, container.canvas.size.height), halfMaxSize = maxCanvasSize *
|
|
76
|
+
const maxCanvasSize = Math.max(container.canvas.size.width, container.canvas.size.height), halfMaxSize = maxCanvasSize * half;
|
|
72
77
|
if (particle.spin.radius > halfMaxSize) {
|
|
73
78
|
particle.spin.radius = halfMaxSize;
|
|
74
|
-
particle.spin.acceleration *= -
|
|
79
|
+
particle.spin.acceleration *= -identity;
|
|
75
80
|
}
|
|
76
|
-
else if (particle.spin.radius <
|
|
77
|
-
particle.spin.radius =
|
|
78
|
-
particle.spin.acceleration *= -
|
|
81
|
+
else if (particle.spin.radius < minSpinRadius) {
|
|
82
|
+
particle.spin.radius = minSpinRadius;
|
|
83
|
+
particle.spin.acceleration *= -identity;
|
|
79
84
|
}
|
|
80
|
-
particle.spin.angle += moveSpeed *
|
|
85
|
+
particle.spin.angle += moveSpeed * spinFactor * (identity - particle.spin.radius / maxCanvasSize);
|
|
81
86
|
}
|
|
82
|
-
export function applyPath(particle, delta) {
|
|
87
|
+
export async function applyPath(particle, delta) {
|
|
83
88
|
const particlesOptions = particle.options, pathOptions = particlesOptions.move.path, pathEnabled = pathOptions.enable;
|
|
84
89
|
if (!pathEnabled) {
|
|
85
90
|
return;
|
|
@@ -88,16 +93,35 @@ export function applyPath(particle, delta) {
|
|
|
88
93
|
particle.lastPathTime += delta.value;
|
|
89
94
|
return;
|
|
90
95
|
}
|
|
91
|
-
const path = particle.pathGenerator?.generate(particle, delta);
|
|
96
|
+
const path = await particle.pathGenerator?.generate(particle, delta);
|
|
92
97
|
if (path) {
|
|
93
98
|
particle.velocity.addTo(path);
|
|
94
99
|
}
|
|
95
100
|
if (pathOptions.clamp) {
|
|
96
|
-
particle.velocity.x = clamp(particle.velocity.x, -
|
|
97
|
-
particle.velocity.y = clamp(particle.velocity.y, -
|
|
101
|
+
particle.velocity.x = clamp(particle.velocity.x, -identity, identity);
|
|
102
|
+
particle.velocity.y = clamp(particle.velocity.y, -identity, identity);
|
|
98
103
|
}
|
|
99
104
|
particle.lastPathTime -= particle.pathDelay;
|
|
100
105
|
}
|
|
101
106
|
export function getProximitySpeedFactor(particle) {
|
|
102
|
-
return particle.slow.inRange ? particle.slow.factor :
|
|
107
|
+
return particle.slow.inRange ? particle.slow.factor : identity;
|
|
108
|
+
}
|
|
109
|
+
export function initSpin(particle) {
|
|
110
|
+
const container = particle.container, options = particle.options, spinOptions = options.move.spin;
|
|
111
|
+
if (!spinOptions.enable) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const spinPos = spinOptions.position ?? { x: 50, y: 50 }, spinFactor = 0.01, spinCenter = {
|
|
115
|
+
x: spinPos.x * spinFactor * container.canvas.size.width,
|
|
116
|
+
y: spinPos.y * spinFactor * container.canvas.size.height,
|
|
117
|
+
}, pos = particle.getPosition(), distance = getDistance(pos, spinCenter), spinAcceleration = getRangeValue(spinOptions.acceleration);
|
|
118
|
+
particle.retina.spinAcceleration = spinAcceleration * container.retina.pixelRatio;
|
|
119
|
+
const minVelocity = 0;
|
|
120
|
+
particle.spin = {
|
|
121
|
+
center: spinCenter,
|
|
122
|
+
direction: particle.velocity.x >= minVelocity ? "clockwise" : "counter-clockwise",
|
|
123
|
+
angle: particle.velocity.angle,
|
|
124
|
+
radius: distance,
|
|
125
|
+
acceleration: particle.retina.spinAcceleration,
|
|
126
|
+
};
|
|
103
127
|
}
|
package/browser/index.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { BaseMover } from "./BaseMover.js";
|
|
2
1
|
export async function loadBaseMover(engine, refresh = true) {
|
|
3
|
-
await engine.addMover("base", () =>
|
|
2
|
+
await engine.addMover("base", async () => {
|
|
3
|
+
const { BaseMover } = await import("./BaseMover.js");
|
|
4
|
+
return new BaseMover();
|
|
5
|
+
}, refresh);
|
|
4
6
|
}
|
package/cjs/BaseMover.js
CHANGED
|
@@ -1,56 +1,65 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
26
|
exports.BaseMover = void 0;
|
|
4
27
|
const engine_1 = require("@tsparticles/engine");
|
|
5
|
-
const
|
|
6
|
-
const diffFactor = 2;
|
|
28
|
+
const diffFactor = 2, defaultSizeFactor = 1, defaultDeltaFactor = 1;
|
|
7
29
|
class BaseMover {
|
|
8
|
-
|
|
9
|
-
this._initSpin = (particle) => {
|
|
10
|
-
const container = particle.container, options = particle.options, spinOptions = options.move.spin;
|
|
11
|
-
if (!spinOptions.enable) {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
const spinPos = spinOptions.position ?? { x: 50, y: 50 }, spinCenter = {
|
|
15
|
-
x: spinPos.x * 0.01 * container.canvas.size.width,
|
|
16
|
-
y: spinPos.y * 0.01 * container.canvas.size.height,
|
|
17
|
-
}, pos = particle.getPosition(), distance = (0, engine_1.getDistance)(pos, spinCenter), spinAcceleration = (0, engine_1.getRangeValue)(spinOptions.acceleration);
|
|
18
|
-
particle.retina.spinAcceleration = spinAcceleration * container.retina.pixelRatio;
|
|
19
|
-
particle.spin = {
|
|
20
|
-
center: spinCenter,
|
|
21
|
-
direction: particle.velocity.x >= 0 ? "clockwise" : "counter-clockwise",
|
|
22
|
-
angle: particle.velocity.angle,
|
|
23
|
-
radius: distance,
|
|
24
|
-
acceleration: particle.retina.spinAcceleration,
|
|
25
|
-
};
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
init(particle) {
|
|
30
|
+
async init(particle) {
|
|
29
31
|
const options = particle.options, gravityOptions = options.move.gravity;
|
|
30
32
|
particle.gravity = {
|
|
31
33
|
enable: gravityOptions.enable,
|
|
32
34
|
acceleration: (0, engine_1.getRangeValue)(gravityOptions.acceleration),
|
|
33
35
|
inverse: gravityOptions.inverse,
|
|
34
36
|
};
|
|
35
|
-
|
|
37
|
+
const { initSpin } = await Promise.resolve().then(() => __importStar(require("./Utils.js")));
|
|
38
|
+
initSpin(particle);
|
|
39
|
+
await Promise.resolve();
|
|
36
40
|
}
|
|
37
41
|
isEnabled(particle) {
|
|
38
42
|
return !particle.destroyed && particle.options.move.enable;
|
|
39
43
|
}
|
|
40
|
-
move(particle, delta) {
|
|
44
|
+
async move(particle, delta) {
|
|
41
45
|
const particleOptions = particle.options, moveOptions = particleOptions.move;
|
|
42
46
|
if (!moveOptions.enable) {
|
|
43
47
|
return;
|
|
44
48
|
}
|
|
45
|
-
const container = particle.container, pxRatio = container.retina.pixelRatio
|
|
46
|
-
|
|
49
|
+
const container = particle.container, pxRatio = container.retina.pixelRatio;
|
|
50
|
+
particle.retina.moveSpeed ??= (0, engine_1.getRangeValue)(moveOptions.speed) * pxRatio;
|
|
51
|
+
particle.retina.moveDrift ??= (0, engine_1.getRangeValue)(particle.options.move.drift) * pxRatio;
|
|
52
|
+
const { getProximitySpeedFactor } = await Promise.resolve().then(() => __importStar(require("./Utils.js"))), slowFactor = getProximitySpeedFactor(particle), baseSpeed = particle.retina.moveSpeed * container.retina.reduceFactor, moveDrift = particle.retina.moveDrift, maxSize = (0, engine_1.getRangeMax)(particleOptions.size.value) * pxRatio, sizeFactor = moveOptions.size ? particle.getRadius() / maxSize : defaultSizeFactor, deltaFactor = delta.factor || defaultDeltaFactor, moveSpeed = (baseSpeed * sizeFactor * slowFactor * deltaFactor) / diffFactor, maxSpeed = particle.retina.maxSpeed ?? container.retina.maxSpeed;
|
|
47
53
|
if (moveOptions.spin.enable) {
|
|
48
|
-
|
|
54
|
+
const { spin } = await Promise.resolve().then(() => __importStar(require("./Utils.js")));
|
|
55
|
+
spin(particle, moveSpeed);
|
|
49
56
|
}
|
|
50
57
|
else {
|
|
51
|
-
|
|
58
|
+
const { move } = await Promise.resolve().then(() => __importStar(require("./Utils.js")));
|
|
59
|
+
await move(particle, moveOptions, moveSpeed, maxSpeed, moveDrift, delta);
|
|
52
60
|
}
|
|
53
|
-
|
|
61
|
+
const { applyDistance } = await Promise.resolve().then(() => __importStar(require("./Utils.js")));
|
|
62
|
+
applyDistance(particle);
|
|
54
63
|
}
|
|
55
64
|
}
|
|
56
65
|
exports.BaseMover = BaseMover;
|
package/cjs/Utils.js
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getProximitySpeedFactor = exports.applyPath = exports.spin = exports.move = exports.applyDistance = void 0;
|
|
3
|
+
exports.initSpin = exports.getProximitySpeedFactor = exports.applyPath = exports.spin = exports.move = exports.applyDistance = void 0;
|
|
4
4
|
const engine_1 = require("@tsparticles/engine");
|
|
5
|
+
const half = 0.5, minVelocity = 0, identity = 1, moveSpeedFactor = 60, minSpinRadius = 0, spinFactor = 0.01;
|
|
5
6
|
function applyDistance(particle) {
|
|
6
7
|
const initialPosition = particle.initialPosition, { dx, dy } = (0, engine_1.getDistances)(initialPosition, particle.position), dxFixed = Math.abs(dx), dyFixed = Math.abs(dy), { maxDistance } = particle.retina, hDistance = maxDistance.horizontal, vDistance = maxDistance.vertical;
|
|
7
8
|
if (!hDistance && !vDistance) {
|
|
8
9
|
return;
|
|
9
10
|
}
|
|
10
|
-
|
|
11
|
+
const hasHDistance = (hDistance && dxFixed >= hDistance) ?? false, hasVDistance = (vDistance && dyFixed >= vDistance) ?? false;
|
|
12
|
+
if ((hasHDistance || hasVDistance) && !particle.misplaced) {
|
|
11
13
|
particle.misplaced = (!!hDistance && dxFixed > hDistance) || (!!vDistance && dyFixed > vDistance);
|
|
12
14
|
if (hDistance) {
|
|
13
|
-
particle.velocity.x = particle.velocity.y *
|
|
15
|
+
particle.velocity.x = particle.velocity.y * half - particle.velocity.x;
|
|
14
16
|
}
|
|
15
17
|
if (vDistance) {
|
|
16
|
-
particle.velocity.y = particle.velocity.x *
|
|
18
|
+
particle.velocity.y = particle.velocity.x * half - particle.velocity.y;
|
|
17
19
|
}
|
|
18
20
|
}
|
|
19
21
|
else if ((!hDistance || dxFixed < hDistance) && (!vDistance || dyFixed < vDistance) && particle.misplaced) {
|
|
@@ -21,37 +23,40 @@ function applyDistance(particle) {
|
|
|
21
23
|
}
|
|
22
24
|
else if (particle.misplaced) {
|
|
23
25
|
const pos = particle.position, vel = particle.velocity;
|
|
24
|
-
if (hDistance &&
|
|
26
|
+
if (hDistance &&
|
|
27
|
+
((pos.x < initialPosition.x && vel.x < minVelocity) || (pos.x > initialPosition.x && vel.x > minVelocity))) {
|
|
25
28
|
vel.x *= -(0, engine_1.getRandom)();
|
|
26
29
|
}
|
|
27
|
-
if (vDistance &&
|
|
30
|
+
if (vDistance &&
|
|
31
|
+
((pos.y < initialPosition.y && vel.y < minVelocity) || (pos.y > initialPosition.y && vel.y > minVelocity))) {
|
|
28
32
|
vel.y *= -(0, engine_1.getRandom)();
|
|
29
33
|
}
|
|
30
34
|
}
|
|
31
35
|
}
|
|
32
36
|
exports.applyDistance = applyDistance;
|
|
33
|
-
function move(particle, moveOptions, moveSpeed, maxSpeed, moveDrift, delta) {
|
|
34
|
-
applyPath(particle, delta);
|
|
35
|
-
const gravityOptions = particle.gravity, gravityFactor = gravityOptions?.enable && gravityOptions.inverse ? -
|
|
37
|
+
async function move(particle, moveOptions, moveSpeed, maxSpeed, moveDrift, delta) {
|
|
38
|
+
await applyPath(particle, delta);
|
|
39
|
+
const gravityOptions = particle.gravity, gravityFactor = gravityOptions?.enable && gravityOptions.inverse ? -identity : identity;
|
|
36
40
|
if (moveDrift && moveSpeed) {
|
|
37
|
-
particle.velocity.x += (moveDrift * delta.factor) / (
|
|
41
|
+
particle.velocity.x += (moveDrift * delta.factor) / (moveSpeedFactor * moveSpeed);
|
|
38
42
|
}
|
|
39
43
|
if (gravityOptions?.enable && moveSpeed) {
|
|
40
|
-
particle.velocity.y +=
|
|
44
|
+
particle.velocity.y +=
|
|
45
|
+
(gravityFactor * (gravityOptions.acceleration * delta.factor)) / (moveSpeedFactor * moveSpeed);
|
|
41
46
|
}
|
|
42
47
|
const decay = particle.moveDecay;
|
|
43
48
|
particle.velocity.multTo(decay);
|
|
44
49
|
const velocity = particle.velocity.mult(moveSpeed);
|
|
45
50
|
if (gravityOptions?.enable &&
|
|
46
|
-
maxSpeed >
|
|
47
|
-
((!gravityOptions.inverse && velocity.y >=
|
|
48
|
-
(gravityOptions.inverse && velocity.y <=
|
|
51
|
+
maxSpeed > minVelocity &&
|
|
52
|
+
((!gravityOptions.inverse && velocity.y >= minVelocity && velocity.y >= maxSpeed) ||
|
|
53
|
+
(gravityOptions.inverse && velocity.y <= minVelocity && velocity.y <= -maxSpeed))) {
|
|
49
54
|
velocity.y = gravityFactor * maxSpeed;
|
|
50
55
|
if (moveSpeed) {
|
|
51
56
|
particle.velocity.y = velocity.y / moveSpeed;
|
|
52
57
|
}
|
|
53
58
|
}
|
|
54
|
-
const zIndexOptions = particle.options.zIndex, zVelocityFactor = (
|
|
59
|
+
const zIndexOptions = particle.options.zIndex, zVelocityFactor = (identity - particle.zIndexFactor) ** zIndexOptions.velocityRate;
|
|
55
60
|
velocity.multTo(zVelocityFactor);
|
|
56
61
|
const { position } = particle;
|
|
57
62
|
position.addTo(velocity);
|
|
@@ -73,19 +78,19 @@ function spin(particle, moveSpeed) {
|
|
|
73
78
|
particle.position.x = particle.spin.center.x + particle.spin.radius * updateFunc.x(particle.spin.angle);
|
|
74
79
|
particle.position.y = particle.spin.center.y + particle.spin.radius * updateFunc.y(particle.spin.angle);
|
|
75
80
|
particle.spin.radius += particle.spin.acceleration;
|
|
76
|
-
const maxCanvasSize = Math.max(container.canvas.size.width, container.canvas.size.height), halfMaxSize = maxCanvasSize *
|
|
81
|
+
const maxCanvasSize = Math.max(container.canvas.size.width, container.canvas.size.height), halfMaxSize = maxCanvasSize * half;
|
|
77
82
|
if (particle.spin.radius > halfMaxSize) {
|
|
78
83
|
particle.spin.radius = halfMaxSize;
|
|
79
|
-
particle.spin.acceleration *= -
|
|
84
|
+
particle.spin.acceleration *= -identity;
|
|
80
85
|
}
|
|
81
|
-
else if (particle.spin.radius <
|
|
82
|
-
particle.spin.radius =
|
|
83
|
-
particle.spin.acceleration *= -
|
|
86
|
+
else if (particle.spin.radius < minSpinRadius) {
|
|
87
|
+
particle.spin.radius = minSpinRadius;
|
|
88
|
+
particle.spin.acceleration *= -identity;
|
|
84
89
|
}
|
|
85
|
-
particle.spin.angle += moveSpeed *
|
|
90
|
+
particle.spin.angle += moveSpeed * spinFactor * (identity - particle.spin.radius / maxCanvasSize);
|
|
86
91
|
}
|
|
87
92
|
exports.spin = spin;
|
|
88
|
-
function applyPath(particle, delta) {
|
|
93
|
+
async function applyPath(particle, delta) {
|
|
89
94
|
const particlesOptions = particle.options, pathOptions = particlesOptions.move.path, pathEnabled = pathOptions.enable;
|
|
90
95
|
if (!pathEnabled) {
|
|
91
96
|
return;
|
|
@@ -94,18 +99,38 @@ function applyPath(particle, delta) {
|
|
|
94
99
|
particle.lastPathTime += delta.value;
|
|
95
100
|
return;
|
|
96
101
|
}
|
|
97
|
-
const path = particle.pathGenerator?.generate(particle, delta);
|
|
102
|
+
const path = await particle.pathGenerator?.generate(particle, delta);
|
|
98
103
|
if (path) {
|
|
99
104
|
particle.velocity.addTo(path);
|
|
100
105
|
}
|
|
101
106
|
if (pathOptions.clamp) {
|
|
102
|
-
particle.velocity.x = (0, engine_1.clamp)(particle.velocity.x, -
|
|
103
|
-
particle.velocity.y = (0, engine_1.clamp)(particle.velocity.y, -
|
|
107
|
+
particle.velocity.x = (0, engine_1.clamp)(particle.velocity.x, -identity, identity);
|
|
108
|
+
particle.velocity.y = (0, engine_1.clamp)(particle.velocity.y, -identity, identity);
|
|
104
109
|
}
|
|
105
110
|
particle.lastPathTime -= particle.pathDelay;
|
|
106
111
|
}
|
|
107
112
|
exports.applyPath = applyPath;
|
|
108
113
|
function getProximitySpeedFactor(particle) {
|
|
109
|
-
return particle.slow.inRange ? particle.slow.factor :
|
|
114
|
+
return particle.slow.inRange ? particle.slow.factor : identity;
|
|
110
115
|
}
|
|
111
116
|
exports.getProximitySpeedFactor = getProximitySpeedFactor;
|
|
117
|
+
function initSpin(particle) {
|
|
118
|
+
const container = particle.container, options = particle.options, spinOptions = options.move.spin;
|
|
119
|
+
if (!spinOptions.enable) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const spinPos = spinOptions.position ?? { x: 50, y: 50 }, spinFactor = 0.01, spinCenter = {
|
|
123
|
+
x: spinPos.x * spinFactor * container.canvas.size.width,
|
|
124
|
+
y: spinPos.y * spinFactor * container.canvas.size.height,
|
|
125
|
+
}, pos = particle.getPosition(), distance = (0, engine_1.getDistance)(pos, spinCenter), spinAcceleration = (0, engine_1.getRangeValue)(spinOptions.acceleration);
|
|
126
|
+
particle.retina.spinAcceleration = spinAcceleration * container.retina.pixelRatio;
|
|
127
|
+
const minVelocity = 0;
|
|
128
|
+
particle.spin = {
|
|
129
|
+
center: spinCenter,
|
|
130
|
+
direction: particle.velocity.x >= minVelocity ? "clockwise" : "counter-clockwise",
|
|
131
|
+
angle: particle.velocity.angle,
|
|
132
|
+
radius: distance,
|
|
133
|
+
acceleration: particle.retina.spinAcceleration,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
exports.initSpin = initSpin;
|
package/cjs/index.js
CHANGED
|
@@ -1,8 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
26
|
exports.loadBaseMover = void 0;
|
|
4
|
-
const BaseMover_js_1 = require("./BaseMover.js");
|
|
5
27
|
async function loadBaseMover(engine, refresh = true) {
|
|
6
|
-
await engine.addMover("base", () =>
|
|
28
|
+
await engine.addMover("base", async () => {
|
|
29
|
+
const { BaseMover } = await Promise.resolve().then(() => __importStar(require("./BaseMover.js")));
|
|
30
|
+
return new BaseMover();
|
|
31
|
+
}, refresh);
|
|
7
32
|
}
|
|
8
33
|
exports.loadBaseMover = loadBaseMover;
|
|
@@ -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.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_move_base"] = this["webpackChunk_tsparticles_move_base"] || []).push([["dist_browser_BaseMover_js"],{
|
|
19
|
+
|
|
20
|
+
/***/ "./dist/browser/BaseMover.js":
|
|
21
|
+
/*!***********************************!*\
|
|
22
|
+
!*** ./dist/browser/BaseMover.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 */ BaseMover: () => (/* binding */ BaseMover)\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 diffFactor = 2,\n defaultSizeFactor = 1,\n defaultDeltaFactor = 1;\nclass BaseMover {\n async init(particle) {\n const options = particle.options,\n gravityOptions = options.move.gravity;\n particle.gravity = {\n enable: gravityOptions.enable,\n acceleration: (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(gravityOptions.acceleration),\n inverse: gravityOptions.inverse\n };\n const {\n initSpin\n } = await __webpack_require__.e(/*! import() */ \"dist_browser_Utils_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./Utils.js */ \"./dist/browser/Utils.js\"));\n initSpin(particle);\n await Promise.resolve();\n }\n isEnabled(particle) {\n return !particle.destroyed && particle.options.move.enable;\n }\n async move(particle, delta) {\n const particleOptions = particle.options,\n moveOptions = particleOptions.move;\n if (!moveOptions.enable) {\n return;\n }\n const container = particle.container,\n pxRatio = container.retina.pixelRatio;\n particle.retina.moveSpeed ??= (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(moveOptions.speed) * pxRatio;\n particle.retina.moveDrift ??= (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(particle.options.move.drift) * pxRatio;\n const {\n getProximitySpeedFactor\n } = await __webpack_require__.e(/*! import() */ \"dist_browser_Utils_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./Utils.js */ \"./dist/browser/Utils.js\")),\n slowFactor = getProximitySpeedFactor(particle),\n baseSpeed = particle.retina.moveSpeed * container.retina.reduceFactor,\n moveDrift = particle.retina.moveDrift,\n maxSize = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeMax)(particleOptions.size.value) * pxRatio,\n sizeFactor = moveOptions.size ? particle.getRadius() / maxSize : defaultSizeFactor,\n deltaFactor = delta.factor || defaultDeltaFactor,\n moveSpeed = baseSpeed * sizeFactor * slowFactor * deltaFactor / diffFactor,\n maxSpeed = particle.retina.maxSpeed ?? container.retina.maxSpeed;\n if (moveOptions.spin.enable) {\n const {\n spin\n } = await __webpack_require__.e(/*! import() */ \"dist_browser_Utils_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./Utils.js */ \"./dist/browser/Utils.js\"));\n spin(particle, moveSpeed);\n } else {\n const {\n move\n } = await __webpack_require__.e(/*! import() */ \"dist_browser_Utils_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./Utils.js */ \"./dist/browser/Utils.js\"));\n await move(particle, moveOptions, moveSpeed, maxSpeed, moveDrift, delta);\n }\n const {\n applyDistance\n } = await __webpack_require__.e(/*! import() */ \"dist_browser_Utils_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./Utils.js */ \"./dist/browser/Utils.js\"));\n applyDistance(particle);\n }\n}\n\n//# sourceURL=webpack://@tsparticles/move-base/./dist/browser/BaseMover.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.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_move_base"] = this["webpackChunk_tsparticles_move_base"] || []).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 */ applyDistance: () => (/* binding */ applyDistance),\n/* harmony export */ applyPath: () => (/* binding */ applyPath),\n/* harmony export */ getProximitySpeedFactor: () => (/* binding */ getProximitySpeedFactor),\n/* harmony export */ initSpin: () => (/* binding */ initSpin),\n/* harmony export */ move: () => (/* binding */ move),\n/* harmony export */ spin: () => (/* binding */ spin)\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 half = 0.5,\n minVelocity = 0,\n identity = 1,\n moveSpeedFactor = 60,\n minSpinRadius = 0,\n spinFactor = 0.01;\nfunction applyDistance(particle) {\n const initialPosition = particle.initialPosition,\n {\n dx,\n dy\n } = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getDistances)(initialPosition, particle.position),\n dxFixed = Math.abs(dx),\n dyFixed = Math.abs(dy),\n {\n maxDistance\n } = particle.retina,\n hDistance = maxDistance.horizontal,\n vDistance = maxDistance.vertical;\n if (!hDistance && !vDistance) {\n return;\n }\n const hasHDistance = (hDistance && dxFixed >= hDistance) ?? false,\n hasVDistance = (vDistance && dyFixed >= vDistance) ?? false;\n if ((hasHDistance || hasVDistance) && !particle.misplaced) {\n particle.misplaced = !!hDistance && dxFixed > hDistance || !!vDistance && dyFixed > vDistance;\n if (hDistance) {\n particle.velocity.x = particle.velocity.y * half - particle.velocity.x;\n }\n if (vDistance) {\n particle.velocity.y = particle.velocity.x * half - particle.velocity.y;\n }\n } else if ((!hDistance || dxFixed < hDistance) && (!vDistance || dyFixed < vDistance) && particle.misplaced) {\n particle.misplaced = false;\n } else if (particle.misplaced) {\n const pos = particle.position,\n vel = particle.velocity;\n if (hDistance && (pos.x < initialPosition.x && vel.x < minVelocity || pos.x > initialPosition.x && vel.x > minVelocity)) {\n vel.x *= -(0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)();\n }\n if (vDistance && (pos.y < initialPosition.y && vel.y < minVelocity || pos.y > initialPosition.y && vel.y > minVelocity)) {\n vel.y *= -(0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRandom)();\n }\n }\n}\nasync function move(particle, moveOptions, moveSpeed, maxSpeed, moveDrift, delta) {\n await applyPath(particle, delta);\n const gravityOptions = particle.gravity,\n gravityFactor = gravityOptions?.enable && gravityOptions.inverse ? -identity : identity;\n if (moveDrift && moveSpeed) {\n particle.velocity.x += moveDrift * delta.factor / (moveSpeedFactor * moveSpeed);\n }\n if (gravityOptions?.enable && moveSpeed) {\n particle.velocity.y += gravityFactor * (gravityOptions.acceleration * delta.factor) / (moveSpeedFactor * moveSpeed);\n }\n const decay = particle.moveDecay;\n particle.velocity.multTo(decay);\n const velocity = particle.velocity.mult(moveSpeed);\n if (gravityOptions?.enable && maxSpeed > minVelocity && (!gravityOptions.inverse && velocity.y >= minVelocity && velocity.y >= maxSpeed || gravityOptions.inverse && velocity.y <= minVelocity && velocity.y <= -maxSpeed)) {\n velocity.y = gravityFactor * maxSpeed;\n if (moveSpeed) {\n particle.velocity.y = velocity.y / moveSpeed;\n }\n }\n const zIndexOptions = particle.options.zIndex,\n zVelocityFactor = (identity - particle.zIndexFactor) ** zIndexOptions.velocityRate;\n velocity.multTo(zVelocityFactor);\n const {\n position\n } = particle;\n position.addTo(velocity);\n if (moveOptions.vibrate) {\n position.x += Math.sin(position.x * Math.cos(position.y));\n position.y += Math.cos(position.y * Math.sin(position.x));\n }\n}\nfunction spin(particle, moveSpeed) {\n const container = particle.container;\n if (!particle.spin) {\n return;\n }\n const updateFunc = {\n x: particle.spin.direction === \"clockwise\" ? Math.cos : Math.sin,\n y: particle.spin.direction === \"clockwise\" ? Math.sin : Math.cos\n };\n particle.position.x = particle.spin.center.x + particle.spin.radius * updateFunc.x(particle.spin.angle);\n particle.position.y = particle.spin.center.y + particle.spin.radius * updateFunc.y(particle.spin.angle);\n particle.spin.radius += particle.spin.acceleration;\n const maxCanvasSize = Math.max(container.canvas.size.width, container.canvas.size.height),\n halfMaxSize = maxCanvasSize * half;\n if (particle.spin.radius > halfMaxSize) {\n particle.spin.radius = halfMaxSize;\n particle.spin.acceleration *= -identity;\n } else if (particle.spin.radius < minSpinRadius) {\n particle.spin.radius = minSpinRadius;\n particle.spin.acceleration *= -identity;\n }\n particle.spin.angle += moveSpeed * spinFactor * (identity - particle.spin.radius / maxCanvasSize);\n}\nasync function applyPath(particle, delta) {\n const particlesOptions = particle.options,\n pathOptions = particlesOptions.move.path,\n pathEnabled = pathOptions.enable;\n if (!pathEnabled) {\n return;\n }\n if (particle.lastPathTime <= particle.pathDelay) {\n particle.lastPathTime += delta.value;\n return;\n }\n const path = await particle.pathGenerator?.generate(particle, delta);\n if (path) {\n particle.velocity.addTo(path);\n }\n if (pathOptions.clamp) {\n particle.velocity.x = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.clamp)(particle.velocity.x, -identity, identity);\n particle.velocity.y = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.clamp)(particle.velocity.y, -identity, identity);\n }\n particle.lastPathTime -= particle.pathDelay;\n}\nfunction getProximitySpeedFactor(particle) {\n return particle.slow.inRange ? particle.slow.factor : identity;\n}\nfunction initSpin(particle) {\n const container = particle.container,\n options = particle.options,\n spinOptions = options.move.spin;\n if (!spinOptions.enable) {\n return;\n }\n const spinPos = spinOptions.position ?? {\n x: 50,\n y: 50\n },\n spinFactor = 0.01,\n spinCenter = {\n x: spinPos.x * spinFactor * container.canvas.size.width,\n y: spinPos.y * spinFactor * container.canvas.size.height\n },\n pos = particle.getPosition(),\n distance = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getDistance)(pos, spinCenter),\n spinAcceleration = (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(spinOptions.acceleration);\n particle.retina.spinAcceleration = spinAcceleration * container.retina.pixelRatio;\n const minVelocity = 0;\n particle.spin = {\n center: spinCenter,\n direction: particle.velocity.x >= minVelocity ? \"clockwise\" : \"counter-clockwise\",\n angle: particle.velocity.angle,\n radius: distance,\n acceleration: particle.retina.spinAcceleration\n };\n}\n\n//# sourceURL=webpack://@tsparticles/move-base/./dist/browser/Utils.js?");
|
|
27
|
+
|
|
28
|
+
/***/ })
|
|
29
|
+
|
|
30
|
+
}]);
|