2023-02-17 11:06:01 +01:00

87 lines
3.5 KiB
JavaScript

(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports", "tsparticles-engine"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.bounceVertical = exports.bounceHorizontal = void 0;
const tsparticles_engine_1 = require("tsparticles-engine");
function bounceHorizontal(data) {
if (data.outMode !== "bounce" &&
data.outMode !== "bounce-horizontal" &&
data.outMode !== "bounceHorizontal" &&
data.outMode !== "split") {
return;
}
if (data.bounds.right < 0) {
data.particle.position.x = data.size + data.offset.x;
}
else if (data.bounds.left > data.canvasSize.width) {
data.particle.position.x = data.canvasSize.width - data.size - data.offset.x;
}
const velocity = data.particle.velocity.x;
let bounced = false;
if ((data.direction === "right" && data.bounds.right >= data.canvasSize.width && velocity > 0) ||
(data.direction === "left" && data.bounds.left <= 0 && velocity < 0)) {
const newVelocity = (0, tsparticles_engine_1.getValue)(data.particle.options.bounce.horizontal);
data.particle.velocity.x *= -newVelocity;
bounced = true;
}
if (!bounced) {
return;
}
const minPos = data.offset.x + data.size;
if (data.bounds.right >= data.canvasSize.width) {
data.particle.position.x = data.canvasSize.width - minPos;
}
else if (data.bounds.left <= 0) {
data.particle.position.x = minPos;
}
if (data.outMode === "split") {
data.particle.destroy();
}
}
exports.bounceHorizontal = bounceHorizontal;
function bounceVertical(data) {
if (data.outMode !== "bounce" &&
data.outMode !== "bounce-vertical" &&
data.outMode !== "bounceVertical" &&
data.outMode !== "split") {
return;
}
if (data.bounds.bottom < 0) {
data.particle.position.y = data.size + data.offset.y;
}
else if (data.bounds.top > data.canvasSize.height) {
data.particle.position.y = data.canvasSize.height - data.size - data.offset.y;
}
const velocity = data.particle.velocity.y;
let bounced = false;
if ((data.direction === "bottom" && data.bounds.bottom >= data.canvasSize.height && velocity > 0) ||
(data.direction === "top" && data.bounds.top <= 0 && velocity < 0)) {
const newVelocity = (0, tsparticles_engine_1.getValue)(data.particle.options.bounce.vertical);
data.particle.velocity.y *= -newVelocity;
bounced = true;
}
if (!bounced) {
return;
}
const minPos = data.offset.y + data.size;
if (data.bounds.bottom >= data.canvasSize.height) {
data.particle.position.y = data.canvasSize.height - minPos;
}
else if (data.bounds.top <= 0) {
data.particle.position.y = minPos;
}
if (data.outMode === "split") {
data.particle.destroy();
}
}
exports.bounceVertical = bounceVertical;
});