"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getProximitySpeedFactor = exports.applyPath = exports.spin = exports.applyDistance = void 0; const tsparticles_engine_1 = require("tsparticles-engine"); function applyDistance(particle) { const initialPosition = particle.initialPosition, { dx, dy } = (0, tsparticles_engine_1.getDistances)(initialPosition, particle.position), dxFixed = Math.abs(dx), dyFixed = Math.abs(dy), hDistance = particle.retina.maxDistance.horizontal, vDistance = particle.retina.maxDistance.vertical; if (!hDistance && !vDistance) { return; } if (((hDistance && dxFixed >= hDistance) || (vDistance && dyFixed >= vDistance)) && !particle.misplaced) { particle.misplaced = (!!hDistance && dxFixed > hDistance) || (!!vDistance && dyFixed > vDistance); if (hDistance) { particle.velocity.x = particle.velocity.y / 2 - particle.velocity.x; } if (vDistance) { particle.velocity.y = particle.velocity.x / 2 - particle.velocity.y; } } else if ((!hDistance || dxFixed < hDistance) && (!vDistance || dyFixed < vDistance) && particle.misplaced) { particle.misplaced = false; } else if (particle.misplaced) { const pos = particle.position, vel = particle.velocity; if (hDistance && ((pos.x < initialPosition.x && vel.x < 0) || (pos.x > initialPosition.x && vel.x > 0))) { vel.x *= -(0, tsparticles_engine_1.getRandom)(); } if (vDistance && ((pos.y < initialPosition.y && vel.y < 0) || (pos.y > initialPosition.y && vel.y > 0))) { vel.y *= -(0, tsparticles_engine_1.getRandom)(); } } } exports.applyDistance = applyDistance; function spin(particle, moveSpeed) { const container = particle.container; if (!particle.spin) { return; } const updateFunc = { x: particle.spin.direction === "clockwise" ? Math.cos : Math.sin, y: particle.spin.direction === "clockwise" ? Math.sin : Math.cos, }; particle.position.x = particle.spin.center.x + particle.spin.radius * updateFunc.x(particle.spin.angle); particle.position.y = particle.spin.center.y + particle.spin.radius * updateFunc.y(particle.spin.angle); particle.spin.radius += particle.spin.acceleration; const maxCanvasSize = Math.max(container.canvas.size.width, container.canvas.size.height); if (particle.spin.radius > maxCanvasSize / 2) { particle.spin.radius = maxCanvasSize / 2; particle.spin.acceleration *= -1; } else if (particle.spin.radius < 0) { particle.spin.radius = 0; particle.spin.acceleration *= -1; } particle.spin.angle += (moveSpeed / 100) * (1 - particle.spin.radius / maxCanvasSize); } exports.spin = spin; function applyPath(particle, delta) { var _a; const particlesOptions = particle.options, pathOptions = particlesOptions.move.path, pathEnabled = pathOptions.enable; if (!pathEnabled) { return; } if (particle.lastPathTime <= particle.pathDelay) { particle.lastPathTime += delta.value; return; } const path = (_a = particle.pathGenerator) === null || _a === void 0 ? void 0 : _a.generate(particle); if (path) { particle.velocity.addTo(path); } if (pathOptions.clamp) { particle.velocity.x = (0, tsparticles_engine_1.clamp)(particle.velocity.x, -1, 1); particle.velocity.y = (0, tsparticles_engine_1.clamp)(particle.velocity.y, -1, 1); } particle.lastPathTime -= particle.pathDelay; } exports.applyPath = applyPath; function getProximitySpeedFactor(particle) { return particle.slow.inRange ? particle.slow.factor : 1; } exports.getProximitySpeedFactor = getProximitySpeedFactor;