{"version":3,"file":"ngx-screen-saver.mjs","sources":["../../../projects/ngx-screen-saver/src/lib/utils/reverse-loop.ts","../../../projects/ngx-screen-saver/src/lib/screen-savers/stars/star.ts","../../../projects/ngx-screen-saver/src/lib/screen-savers/stars/stars.ts","../../../projects/ngx-screen-saver/src/lib/screen-savers/dvd/dvd.ts","../../../projects/ngx-screen-saver/src/lib/utils/random-hsl-from-range.ts","../../../projects/ngx-screen-saver/src/lib/screen-savers/fireworks/particle.ts","../../../projects/ngx-screen-saver/src/lib/screen-savers/fireworks/firework.ts","../../../projects/ngx-screen-saver/src/lib/screen-savers/fireworks/fireworks.ts","../../../projects/ngx-screen-saver/src/lib/services/idle-detection.service.ts","../../../projects/ngx-screen-saver/src/lib/components/screen-saver/ngx-screen-saver.component.ts","../../../projects/ngx-screen-saver/src/lib/ngx-screen-saver.module.ts","../../../projects/ngx-screen-saver/src/public-api.ts","../../../projects/ngx-screen-saver/src/ngx-screen-saver.ts"],"sourcesContent":["export const reverseLoop = <T = any>(\r\n  arr: T[],\r\n  callback: (item: T, index: number) => void\r\n) => {\r\n  for (let i = arr.length - 1; i >= 0; i--) {\r\n    callback(arr[i], i);\r\n  }\r\n};\r\n","import * as p5 from 'p5';\r\n\r\nexport class Star {\r\n  constructor(private p5: p5, private x: number, private y: number) {}\r\n\r\n  MAX_SIZE: number = 5;\r\n\r\n  size: number = 1;\r\n  decay: boolean = false;\r\n  destroy: boolean = false;\r\n\r\n  growth = this.p5.random(15, 50) / 500;\r\n\r\n  update() {\r\n    if (this.decay === false) {\r\n      this.size = this.size + this.growth;\r\n    }\r\n\r\n    if (this.decay === true) {\r\n      this.size = this.size - this.growth;\r\n    }\r\n\r\n    if (this.size >= this.MAX_SIZE) {\r\n      this.decay = true;\r\n    }\r\n\r\n    if (this.size <= 0) {\r\n      this.destroy = true;\r\n    }\r\n  }\r\n\r\n  draw() {\r\n    this.p5.noStroke();\r\n    this.p5.fill(255);\r\n\r\n    this.p5.circle(this.x, this.y, this.size);\r\n  }\r\n}\r\n","import p5 from 'p5';\r\nimport { reverseLoop } from '../../utils/reverse-loop';\r\nimport { Star } from './star';\r\n\r\nconst MAX_STARS = 100;\r\nconst starsArr: Star[] = [];\r\n\r\nexport const stars = (p5: p5) => {\r\n  const width = p5.windowWidth;\r\n  const height = p5.windowHeight;\r\n\r\n  let backgroundImage: p5.Image;\r\n\r\n  // PRELOAD\r\n  p5.preload = () => {\r\n    backgroundImage = p5.loadImage('assets/ngx-screen-saver/galaxy.jpg');\r\n  };\r\n\r\n  // SETUP\r\n  p5.setup = () => {\r\n    p5.createCanvas(width, height).addClass('ngx-screen-saver');\r\n\r\n    p5.image(backgroundImage, 0, 0);\r\n\r\n    for (let i = 0; i < MAX_STARS; i++) {\r\n      const star = new Star(p5, p5.random(0, width), p5.random(0, height));\r\n\r\n      starsArr.push(star);\r\n    }\r\n  };\r\n\r\n  // DRAW\r\n  p5.draw = () => {\r\n    p5.image(backgroundImage, 0, 0);\r\n\r\n    reverseLoop(starsArr, (star, idx) => {\r\n      star.update();\r\n      star.draw();\r\n\r\n      if (star.destroy) {\r\n        starsArr.splice(idx, 1);\r\n\r\n        const newStar = new Star(p5, p5.random(0, width), p5.random(0, height));\r\n\r\n        starsArr.push(newStar);\r\n      }\r\n    });\r\n  };\r\n};\r\n","import p5 from 'p5';\r\n\r\nexport const dvd = (p5: p5) => {\r\n  const width = p5.windowWidth;\r\n  const height = p5.windowHeight;\r\n\r\n  let dvdLogo: p5.Image;\r\n\r\n  let posX = 300;\r\n  let posY = 100;\r\n  let velX: number;\r\n  let velY: number;\r\n\r\n  // PRELOAD\r\n  p5.preload = () => {\r\n    dvdLogo = p5.loadImage('assets/ngx-screen-saver/dvd_logo.png');\r\n  };\r\n\r\n  // SETUP\r\n  p5.setup = () => {\r\n    p5.createCanvas(width, height).addClass('ngx-screen-saver');\r\n    p5.background(0);\r\n\r\n    velX = 7;\r\n    velY = 5;\r\n  };\r\n\r\n  // DRAW\r\n  p5.draw = () => {\r\n    p5.background(0);\r\n    p5.image(dvdLogo, posX, posY);\r\n\r\n    posX = posX + velX;\r\n    posY = posY + velY;\r\n\r\n    if (posX + dvdLogo.width >= width || posX <= 0) {\r\n      velX = -velX;\r\n    }\r\n\r\n    if (posY + dvdLogo.height >= height || posY <= 0) {\r\n      velY = -velY;\r\n    }\r\n  };\r\n};\r\n","import p5 from 'p5';\r\n\r\nexport const randomHslFromRange = (\r\n  p5: p5,\r\n  hue: number,\r\n  margin: number\r\n): p5.Color => {\r\n  let randomNumber = p5.random(hue - margin, hue + margin);\r\n\r\n  if (randomNumber < 0) {\r\n    randomNumber = 360 - randomNumber;\r\n  }\r\n\r\n  if (randomNumber > 360) {\r\n    randomNumber = randomNumber - 360;\r\n  }\r\n\r\n  p5.colorMode(p5.HSL);\r\n\r\n  return p5.color(randomNumber, 100, 50);\r\n};\r\n","import p5 from 'p5';\r\n\r\nexport class Particle {\r\n  constructor(\r\n    private p5: p5,\r\n    public pos: p5.Vector,\r\n    public vel: p5.Vector,\r\n    public size: number,\r\n    public color: p5.Color,\r\n    public rotation?: number\r\n  ) {\r\n    if (this.rotation) {\r\n      this.vel.rotate(this.rotation);\r\n      this.vel.setMag(this.p5.random(1, 2));\r\n    }\r\n  }\r\n\r\n  update() {\r\n    this.pos.add(this.vel);\r\n  }\r\n\r\n  draw() {\r\n    this.p5.noStroke();\r\n    this.p5.fill(this.color);\r\n\r\n    this.p5.circle(this.pos.x, this.pos.y, this.size);\r\n  }\r\n}\r\n","import p5 from 'p5';\r\nimport { randomHslFromRange } from '../../utils/random-hsl-from-range';\r\nimport { reverseLoop } from '../../utils/reverse-loop';\r\nimport { Particle } from './particle';\r\n\r\nexport class Firework {\r\n  constructor(private p5: p5, public posX: number, public maxHeight: number) {}\r\n\r\n  pos = this.p5.createVector(this.posX, 0);\r\n  vel = this.p5.createVector(0, this.p5.random(1.5, 2.5));\r\n  randomHue = this.p5.random(0, 360);\r\n\r\n  phase: 'fly' | 'explode' | 'dispose' = 'fly';\r\n\r\n  explosionParticlesCreated: boolean = false;\r\n\r\n  fireParticles: Particle[] = [];\r\n  explosionParticles: Particle[] = [];\r\n\r\n  update() {\r\n    this.p5.push();\r\n    this.p5.colorMode(this.p5.HSL);\r\n\r\n    if (this.phase === 'fly') {\r\n      this.pos.add(this.vel);\r\n\r\n      this.fireParticles.push(\r\n        new Particle(\r\n          this.p5,\r\n          this.p5.createVector(\r\n            this.pos.x + this.p5.random(-2, 2),\r\n            this.pos.y + this.p5.random(-2, 2)\r\n          ),\r\n          this.p5.createVector(0, 0),\r\n          3,\r\n          randomHslFromRange(this.p5, 30, 20)\r\n        )\r\n      );\r\n\r\n      if (this.fireParticles.length > 30) {\r\n        this.fireParticles.splice(0, 1);\r\n      }\r\n\r\n      if (this.pos.y >= this.maxHeight) {\r\n        this.phase = 'explode';\r\n      }\r\n    }\r\n\r\n    if (this.phase === 'explode') {\r\n      if (this.fireParticles.length > 0) {\r\n        this.fireParticles.splice(0, 1);\r\n      }\r\n\r\n      if (this.explosionParticlesCreated === false) {\r\n        for (let i = 0; i < 150; i++) {\r\n          const newParticle = new Particle(\r\n            this.p5,\r\n            this.pos.copy(),\r\n            this.p5.createVector(1, 0),\r\n            5,\r\n            randomHslFromRange(this.p5, this.randomHue, 20),\r\n            this.p5.random(0, 360)\r\n          );\r\n\r\n          this.explosionParticles.push(newParticle);\r\n        }\r\n\r\n        this.explosionParticlesCreated = true;\r\n      }\r\n\r\n      if (this.explosionParticles.length <= 0) {\r\n        this.phase = 'dispose';\r\n      }\r\n    }\r\n\r\n    this.p5.pop();\r\n  }\r\n\r\n  draw() {\r\n    this.p5.noStroke();\r\n\r\n    if (this.fireParticles.length > 0) {\r\n      reverseLoop(this.fireParticles, (particle, idx) => {\r\n        particle.update();\r\n        particle.draw();\r\n      });\r\n    }\r\n\r\n    if (this.explosionParticles.length > 0) {\r\n      reverseLoop(this.explosionParticles, (particle, idx) => {\r\n        if (this.pos.dist(particle.pos) <= 50) {\r\n          particle.update();\r\n          particle.draw();\r\n        } else {\r\n          this.explosionParticles.splice(idx, 1);\r\n        }\r\n      });\r\n    }\r\n  }\r\n}\r\n","import p5 from 'p5';\r\nimport { reverseLoop } from '../../utils/reverse-loop';\r\nimport { Firework } from './firework';\r\n\r\nexport const fireworks = (p5: p5) => {\r\n  const WIDTH = p5.windowWidth;\r\n  const HEIGHT = p5.windowHeight;\r\n  const MAX_FIREWORKS: number = 10;\r\n\r\n  const SAFE_MARGIN = 40;\r\n  const SAFE_SPACE = {\r\n    xStart: SAFE_MARGIN,\r\n    xEnd: WIDTH - SAFE_MARGIN,\r\n    yStart: 0,\r\n    yEnd: HEIGHT - SAFE_MARGIN,\r\n  };\r\n\r\n  const fireworksArr: Firework[] = [];\r\n\r\n  let backgroundImg: p5.Image;\r\n\r\n  // PRELOAD\r\n  p5.preload = () => {\r\n    backgroundImg = p5.loadImage('assets/ngx-screen-saver/fireworks_bg.jpg');\r\n  };\r\n\r\n  // SETUP\r\n  p5.setup = () => {\r\n    p5.createCanvas(WIDTH, HEIGHT).addClass('ngx-screen-saver');\r\n    p5.angleMode(p5.DEGREES);\r\n\r\n    backgroundImg.resize(WIDTH, HEIGHT);\r\n\r\n    for (let i = 0; i < MAX_FIREWORKS; i++) {\r\n      fireworksArr.push(\r\n        new Firework(\r\n          p5,\r\n          p5.random(SAFE_SPACE.xStart, SAFE_SPACE.xEnd),\r\n          p5.random(SAFE_SPACE.yStart, SAFE_SPACE.yEnd)\r\n        )\r\n      );\r\n    }\r\n  };\r\n\r\n  // DRAW\r\n  p5.draw = () => {\r\n    const heightOffset = HEIGHT - backgroundImg.height;\r\n\r\n    p5.image(backgroundImg, 0, heightOffset);\r\n\r\n    p5.translate(0, HEIGHT); // moves the origin to bottom left\r\n    p5.scale(1, -1); // flips the y values so y increases \"up\"\r\n\r\n    reverseLoop(fireworksArr, (firework, idx) => {\r\n      firework.update();\r\n      firework.draw();\r\n\r\n      if (firework.phase === 'dispose') {\r\n        fireworksArr.splice(idx, 1);\r\n\r\n        fireworksArr.push(\r\n          new Firework(\r\n            p5,\r\n            p5.random(SAFE_SPACE.xStart, SAFE_SPACE.xEnd),\r\n            p5.random(SAFE_SPACE.yStart, SAFE_SPACE.yEnd)\r\n          )\r\n        );\r\n      }\r\n    });\r\n  };\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { Subscription, BehaviorSubject, fromEvent, merge, timer } from 'rxjs';\r\nimport { switchMap, tap, startWith, throttleTime } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class IdleDetectionService {\r\n  constructor() {}\r\n\r\n  idleAfterMs!: number;\r\n\r\n  private isIdleSubject = new BehaviorSubject<boolean>(false);\r\n  public isIdle$ = this.isIdleSubject.asObservable();\r\n\r\n  private activityEvents$ = merge(\r\n    fromEvent(window, 'mousemove'),\r\n    fromEvent(window, 'resize'),\r\n    fromEvent(document, 'keydown'),\r\n    fromEvent(document, 'mousedown'),\r\n    fromEvent(document, 'touchstart')\r\n  );\r\n\r\n  private idleDetectionSubscription?: Subscription;\r\n\r\n  startIdleDetection(idleAfterMs: number) {\r\n    this.idleAfterMs = idleAfterMs;\r\n\r\n    this.idleDetectionSubscription = this.activityEvents$\r\n      .pipe(\r\n        // trigger idle detection before any user activity events\r\n        startWith(undefined),\r\n        throttleTime(100),\r\n        tap(() => {\r\n          this.isIdleSubject.next(false);\r\n        }),\r\n        switchMap(() => {\r\n          return timer(this.idleAfterMs).pipe(\r\n            tap(() => {\r\n              this.isIdleSubject.next(true);\r\n            })\r\n          );\r\n        })\r\n      )\r\n      .subscribe();\r\n  }\r\n\r\n  stopIdleDetection() {\r\n    this.idleDetectionSubscription?.unsubscribe();\r\n  }\r\n}\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport p5 from 'p5';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { stars, dvd, fireworks } from '../../screen-savers';\r\nimport { IdleDetectionService } from '../../services/idle-detection.service';\r\n\r\nexport type ScreenSaverOption = 'stars' | 'dvd' | 'fireworks';\r\n\r\n@Component({\r\n  selector: 'ngx-screen-saver',\r\n  template: '',\r\n  styleUrls: ['./ngx-screen-saver.component.scss'],\r\n})\r\nexport class NgxScreenSaverComponent implements OnInit, OnDestroy {\r\n  constructor(private idleDetectionService: IdleDetectionService) {}\r\n\r\n  @Input() idleAfterMs: number = 10000;\r\n  @Input() variant: ScreenSaverOption = 'fireworks';\r\n  @Input() opacity: number = 1;\r\n  @Input() zIndex: number = 1;\r\n\r\n  isIdleSubscription!: Subscription;\r\n\r\n  showScreenSaver: boolean = false;\r\n  screenSaver?: p5;\r\n\r\n  screenSavers = {\r\n    stars,\r\n    dvd,\r\n    fireworks,\r\n  };\r\n\r\n  ngOnInit(): void {\r\n    document.documentElement.style.setProperty(\r\n      '--ngx-screen-saver-opacity',\r\n      this.opacity.toString()\r\n    );\r\n\r\n    document.documentElement.style.setProperty(\r\n      '--ngx-screen-saver-z-index',\r\n      this.zIndex.toString()\r\n    );\r\n\r\n    this.idleDetectionService.startIdleDetection(this.idleAfterMs);\r\n\r\n    this.isIdleSubscription = this.idleDetectionService.isIdle$.subscribe(\r\n      (isIdle) => {\r\n        if (isIdle === true) {\r\n          this.showScreenSaver = true;\r\n\r\n          this.screenSaver = new p5(\r\n            this.screenSavers[this.variant],\r\n            document.querySelector('ngx-screen-saver')! as HTMLElement\r\n          );\r\n        } else {\r\n          this.showScreenSaver = false;\r\n          this.screenSaver?.remove();\r\n          this.screenSaver = undefined;\r\n        }\r\n      }\r\n    );\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.idleDetectionService.stopIdleDetection();\r\n    this.isIdleSubscription.unsubscribe();\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { NgxScreenSaverComponent } from './components/screen-saver/ngx-screen-saver.component';\r\n\r\n@NgModule({\r\n  declarations: [NgxScreenSaverComponent],\r\n  imports: [],\r\n  exports: [NgxScreenSaverComponent],\r\n})\r\nexport class NgxScreenSaverModule {}\r\n","/*\r\n * Public API Surface of ngx-screen-saver\r\n */\r\n\r\nexport * from './lib/components/screen-saver/ngx-screen-saver.component';\r\nexport * from './lib/ngx-screen-saver.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.IdleDetectionService"],"mappings":"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"}