{ "version": 3, "sources": ["src/app/main/components/spinner/spinner.component.ts", "src/app/main/components/spinner/spinner.component.html"], "sourcesContent": ["import { Component, Input, OnInit, signal } from '@angular/core';\r\nimport { SpinnerService } from '../spinner/spinner.service';\r\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-spinner',\r\n templateUrl: './spinner.component.html',\r\n styleUrls: ['./spinner.component.scss'],\r\n standalone: true,\r\n imports: [NgClass]\r\n})\r\nexport class SpinnerComponent implements OnInit {\r\n constructor(private spinnerService: SpinnerService) { }\r\n\r\n @Input() name: string;\r\n @Input() isDefault = false;\r\n message: string;\r\n #paused = false;\r\n #lastStart = 0;\r\n #lastStop = 0;\r\n isActive = signal(false);\r\n\r\n get paused() {\r\n return this.#paused;\r\n }\r\n\r\n set paused(value: boolean) {\r\n this.#paused = value;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.spinnerService.registerSpinner(this);\r\n }\r\n\r\n start(message: string = '', delay: number = 0) {\r\n this.#lastStart = new Date().getTime();\r\n this.message = message;\r\n setTimeout(() => {\r\n if (this.#lastStart >= this.#lastStop) {\r\n this.isActive.set(true);\r\n document.body.classList.add('spinner-open');\r\n if (!this.isDefault) {\r\n this.spinnerService.pause();\r\n }\r\n }\r\n }, delay);\r\n }\r\n\r\n stop() {\r\n this.#lastStop = new Date().getTime();\r\n this.isActive.set(false);\r\n document.body.classList.remove('spinner-open');\r\n if (!this.isDefault) {\r\n this.spinnerService.unpause();\r\n }\r\n }\r\n\r\n update(message: string, fade = false) {\r\n if (!fade) {\r\n this.message = message;\r\n return;\r\n }\r\n const elem = document.querySelector(`#${this.name} .message`);\r\n elem.classList.add('fade');\r\n setTimeout(() => {\r\n this.message = message;\r\n elem.classList.remove('fade');\r\n }, 250);\r\n }\r\n}\r\n", "
{{ message }}
\r\n