38 lines
2.1 KiB
JavaScript
38 lines
2.1 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.Retina = void 0;
|
|
const NumberUtils_1 = require("../Utils/NumberUtils");
|
|
const Utils_1 = require("../Utils/Utils");
|
|
class Retina {
|
|
constructor(container) {
|
|
this.container = container;
|
|
}
|
|
init() {
|
|
const container = this.container, options = container.actualOptions;
|
|
this.pixelRatio = !options.detectRetina || (0, Utils_1.isSsr)() ? 1 : window.devicePixelRatio;
|
|
this.reduceFactor = 1;
|
|
const ratio = this.pixelRatio;
|
|
if (container.canvas.element) {
|
|
const element = container.canvas.element;
|
|
container.canvas.size.width = element.offsetWidth * ratio;
|
|
container.canvas.size.height = element.offsetHeight * ratio;
|
|
}
|
|
const particles = options.particles;
|
|
this.attractDistance = (0, NumberUtils_1.getRangeValue)(particles.move.attract.distance) * ratio;
|
|
this.sizeAnimationSpeed = (0, NumberUtils_1.getRangeValue)(particles.size.animation.speed) * ratio;
|
|
this.maxSpeed = (0, NumberUtils_1.getRangeValue)(particles.move.gravity.maxSpeed) * ratio;
|
|
}
|
|
initParticle(particle) {
|
|
const options = particle.options, ratio = this.pixelRatio, moveDistance = options.move.distance, props = particle.retina;
|
|
props.attractDistance = (0, NumberUtils_1.getRangeValue)(options.move.attract.distance) * ratio;
|
|
props.moveDrift = (0, NumberUtils_1.getRangeValue)(options.move.drift) * ratio;
|
|
props.moveSpeed = (0, NumberUtils_1.getRangeValue)(options.move.speed) * ratio;
|
|
props.sizeAnimationSpeed = (0, NumberUtils_1.getRangeValue)(options.size.animation.speed) * ratio;
|
|
const maxDistance = props.maxDistance;
|
|
maxDistance.horizontal = moveDistance.horizontal !== undefined ? moveDistance.horizontal * ratio : undefined;
|
|
maxDistance.vertical = moveDistance.vertical !== undefined ? moveDistance.vertical * ratio : undefined;
|
|
props.maxSpeed = (0, NumberUtils_1.getRangeValue)(options.move.gravity.maxSpeed) * ratio;
|
|
}
|
|
}
|
|
exports.Retina = Retina;
|