ngx-particlesjs
Version:
[](https://www.npmjs.com/package/ngx-particlesjs) [](https://www.npmjs.com/package/ngx-particlesjs) [ • 10 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { saveDecimal } from './common';
export class Particle {
/**
* @param {?} range
* @param {?=} speed
* @param {?=} size
*/
constructor(range, speed = 'normal', size = 1.5) {
this.max_width = range[0];
this.max_height = range[1];
this.initPosition();
this.initSpeed(speed);
this.initSize(size);
this.initColor();
}
/**
* @param {?} range
* @return {?}
*/
onRange(range) {
this.max_width = range[0];
this.max_height = range[1];
}
/**
* @return {?}
*/
initPosition() {
this.x = saveDecimal(Math.random() * this.max_width);
this.y = saveDecimal(Math.random() * this.max_height);
}
/**
* @param {?} speed
* @return {?}
*/
initSpeed(speed) {
/** @type {?} */
let vi = [];
if (typeof speed === 'string') {
switch (speed) {
case 'fast':
vi = [1, 1];
break;
case 'normal':
vi = [2, 2];
break;
case 'slow':
vi = [5, 5];
break;
default:
vi = [2, 2];
}
}
else {
vi = speed;
}
this.vx = saveDecimal(Math.random() / vi[0]);
this.vy = saveDecimal(Math.random() / vi[1]);
}
/**
* @param {?} size
* @return {?}
*/
initSize(size) {
this.size = (1 + Math.random()) * size;
}
/**
* @return {?}
*/
initColor() {
this.color = `rgb(${Math.floor(Math.random() * 256)},${Math.floor(Math.random() * 256)},${Math.floor(Math.random() * 256)})`;
}
/**
* @param {?} ctx
* @return {?}
*/
draw(ctx) {
ctx.beginPath();
ctx.arc(this.x, this.y, this.size, 0, 2 * Math.PI);
ctx.fillStyle = this.color;
ctx.strokeStyle = this.color;
ctx.closePath();
ctx.fill();
ctx.stroke();
}
/**
* @return {?}
*/
update() {
this.edge();
this.x = this.x + this.vx;
this.y = this.y + this.vy;
}
/**
* @return {?}
*/
edge() {
if (this.x + this.vx > this.max_width || this.x + this.vx < 0) {
this.vx = -this.vx;
}
if (this.y + this.vy > this.max_height || this.y + this.vy < 0) {
this.vy = -this.vy;
}
}
}
if (false) {
/** @type {?} */
Particle.prototype.max_width;
/** @type {?} */
Particle.prototype.max_height;
/** @type {?} */
Particle.prototype.x;
/** @type {?} */
Particle.prototype.y;
/** @type {?} */
Particle.prototype.vx;
/** @type {?} */
Particle.prototype.vy;
/** @type {?} */
Particle.prototype.size;
/** @type {?} */
Particle.prototype.color;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydGljbGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtcGFydGljbGVzanMvIiwic291cmNlcyI6WyJsaWIvcGFydGljbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFckMsTUFBTTs7Ozs7O0lBYUosWUFBWSxLQUFlLEVBQUUsUUFBK0MsUUFBUSxFQUFFLElBQUksR0FBRyxHQUFHO1FBQzlGLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0tBQ2xCOzs7OztJQUVELE9BQU8sQ0FBQyxLQUFlO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQzVCOzs7O0lBRU8sWUFBWTtRQUNsQixJQUFJLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Ozs7OztJQUdoRCxTQUFTLENBQUMsS0FBNEM7O1FBQzVELElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNaLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lB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IjpbImltcG9ydCB7c2F2ZURlY2ltYWx9IGZyb20gJy4vY29tbW9uJztcclxuXHJcbmV4cG9ydCBjbGFzcyBQYXJ0aWNsZSB7XHJcbiAgcHJpdmF0ZSBtYXhfd2lkdGg6IG51bWJlcjtcclxuICBwcml2YXRlIG1heF9oZWlnaHQ6IG51bWJlcjtcclxuXHJcbiAgcHJpdmF0ZSB4OiBudW1iZXI7XHJcbiAgcHJpdmF0ZSB5OiBudW1iZXI7XHJcblxyXG4gIHByaXZhdGUgdng6IG51bWJlcjtcclxuICBwcml2YXRlIHZ5OiBudW1iZXI7XHJcblxyXG4gIHByaXZhdGUgc2l6ZTogbnVtYmVyO1xyXG4gIHByaXZhdGUgY29sb3I6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IocmFuZ2U6IG51bWJlcltdLCBzcGVlZDogJ2Zhc3QnIHwgJ25vcm1hbCcgfCAnc2xvdycgfCBudW1iZXJbXSA9ICdub3JtYWwnLCBzaXplID0gMS41KSB7XHJcbiAgICB0aGlzLm1heF93aWR0aCA9IHJhbmdlWzBdO1xyXG4gICAgdGhpcy5tYXhfaGVpZ2h0ID0gcmFuZ2VbMV07XHJcbiAgICB0aGlzLmluaXRQb3NpdGlvbigpO1xyXG4gICAgdGhpcy5pbml0U3BlZWQoc3BlZWQpO1xyXG4gICAgdGhpcy5pbml0U2l6ZShzaXplKTtcclxuICAgIHRoaXMuaW5pdENvbG9yKCk7XHJcbiAgfVxyXG5cclxuICBvblJhbmdlKHJhbmdlOiBudW1iZXJbXSkge1xyXG4gICAgdGhpcy5tYXhfd2lkdGggPSByYW5nZVswXTtcclxuICAgIHRoaXMubWF4X2hlaWdodCA9IHJhbmdlWzFdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0UG9zaXRpb24oKSB7XHJcbiAgICB0aGlzLnggPSBzYXZlRGVjaW1hbChNYXRoLnJhbmRvbSgpICogdGhpcy5tYXhfd2lkdGgpO1xyXG4gICAgdGhpcy55ID0gc2F2ZURlY2ltYWwoTWF0aC5yYW5kb20oKSAqIHRoaXMubWF4X2hlaWdodCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRTcGVlZChzcGVlZDogJ2Zhc3QnIHwgJ25vcm1hbCcgfCAnc2xvdycgfCBudW1iZXJbXSkge1xyXG4gICAgbGV0IHZpID0gW107XHJcbiAgICBpZiAodHlwZW9mIHNwZWVkID09PSAnc3RyaW5nJykge1xyXG4gICAgICBzd2l0Y2ggKHNwZWVkKSB7XHJcbiAgICAgICAgY2FzZSAnZmFzdCc6XHJcbiAgICAgICAgICB2aSA9IFsxLCAxXTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ25vcm1hbCc6XHJcbiAgICAgICAgICB2aSA9IFsyLCAyXTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3Nsb3cnOlxyXG4gICAgICAgICAgdmkgPSBbNSwgNV07XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdmkgPSBbMiwgMl07XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZpID0gc3BlZWQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLnZ4ID0gc2F2ZURlY2ltYWwoTWF0aC5yYW5kb20oKSAvIHZpWzBdKTtcclxuICAgIHRoaXMudnkgPSBzYXZlRGVjaW1hbChNYXRoLnJhbmRvbSgpIC8gdmlbMV0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0U2l6ZShzaXplOiBudW1iZXIpIHtcclxuICAgIHRoaXMuc2l6ZSA9ICgxICsgTWF0aC5yYW5kb20oKSkgKiBzaXplO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0Q29sb3IoKSB7XHJcbiAgICB0aGlzLmNvbG9yID0gYHJnYigke01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDI1Nil9LCR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMjU2KX0sJHtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyNTYpfSlgO1xyXG4gIH1cclxuXHJcbiAgZHJhdyhjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCkge1xyXG4gICAgY3R4LmJlZ2luUGF0aCgpO1xyXG4gICAgY3R4LmFyYyh0aGlzLngsIHRoaXMueSwgdGhpcy5zaXplLCAwLCAyICogTWF0aC5QSSk7XHJcbiAgICBjdHguZmlsbFN0eWxlID0gdGhpcy5jb2xvcjtcclxuICAgIGN0eC5zdHJva2VTdHlsZSA9IHRoaXMuY29sb3I7XHJcbiAgICBjdHguY2xvc2VQYXRoKCk7XHJcbiAgICBjdHguZmlsbCgpO1xyXG4gICAgY3R4LnN0cm9rZSgpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlKCkge1xyXG4gICAgdGhpcy5lZGdlKCk7XHJcbiAgICB0aGlzLnggPSB0aGlzLnggKyB0aGlzLnZ4O1xyXG4gICAgdGhpcy55ID0gdGhpcy55ICsgdGhpcy52eTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZWRnZSgpIHtcclxuICAgIGlmICh0aGlzLnggKyB0aGlzLnZ4ID4gdGhpcy5tYXhfd2lkdGggfHwgdGhpcy54ICsgdGhpcy52eCA8IDApIHtcclxuICAgICAgdGhpcy52eCA9IC10aGlzLnZ4O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMueSArIHRoaXMudnkgPiB0aGlzLm1heF9oZWlnaHQgfHwgdGhpcy55ICsgdGhpcy52eSA8IDApIHtcclxuICAgICAgdGhpcy52eSA9IC10aGlzLnZ5O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=