UNPKG

ngx-particlesjs

Version:

[![npm](https://img.shields.io/npm/v/ngx-particlesjs.svg)](https://www.npmjs.com/package/ngx-particlesjs) [![npm](https://img.shields.io/npm/dm/ngx-particlesjs.svg)](https://www.npmjs.com/package/ngx-particlesjs) [![TypeScript](https://img.shields.io/badg

128 lines (127 loc) 10 kB
/** * @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=