{"version":3,"file":"chunk-h44zj8ky.js","sources":["packages/sports/libs/common/ui/countdown-timer/src/lib/countdown-timer.component.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n Renderer2,\n} from '@angular/core';\n\nimport { TickerInterval, TickerService } from '@frontend/sports/common/core/utils/timer';\nimport { padStart } from 'lodash-es';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'ms-countdown-timer',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class CountdownTimerComponent implements OnChanges, OnDestroy {\n @Input() timeInSeconds: number;\n @Input() thresholdSeconds: number;\n @Input() hideAfterComplete = false;\n @Input() textAfterTimerFinished = '';\n @Input() isSports: boolean;\n @Input() showTimerInSeconds: boolean;\n\n @Output() shown = new EventEmitter();\n @Output() finish = new EventEmitter();\n @Output() display = new EventEmitter();\n\n private tickerSubscription: Subscription;\n protected readonly MINUTE = 60;\n protected readonly HOUR = 60 * this.MINUTE;\n\n @HostBinding('class.hidden') hidden = true;\n\n @HostBinding('class') get class(): string {\n return this.isSports ? 'countdown-timer' : 'betstation-countdown-timer';\n }\n\n constructor(\n private ticker: TickerService,\n private elementRef: ElementRef,\n private changeDetector: ChangeDetectorRef,\n private renderer: Renderer2,\n ) {}\n\n ngOnChanges(): void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n this.elementRef.nativeElement.textContent = '';\n this.renderer.setStyle(this.elementRef.nativeElement, 'color', 'inherit');\n\n if (this.timeInSeconds) {\n this.hidden = true;\n this.startTicker();\n this.setCountdownTime();\n }\n }\n\n ngOnDestroy(): void {\n this.stopTicker();\n }\n\n private startTicker(): void {\n this.stopTicker();\n this.tickerSubscription = this.ticker.subscribe(() => this.setCountdownTime(), TickerInterval.Second);\n }\n\n private stopTicker(): void {\n this.tickerSubscription?.unsubscribe();\n }\n\n private setCountdownTime(): void {\n if (this.timeInSeconds <= 0) {\n this.stopTicker();\n this.hidden = this.hideAfterComplete;\n this.finish.emit();\n if (this.textAfterTimerFinished) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n this.elementRef.nativeElement.textContent = this.textAfterTimerFinished;\n }\n this.changeDetector.markForCheck();\n\n return;\n }\n\n const timeLeft = this.timeInSeconds--;\n\n if (timeLeft >= this.thresholdSeconds) {\n return;\n }\n\n if (this.hidden) {\n this.hidden = false;\n this.shown.emit();\n this.changeDetector.markForCheck();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n this.elementRef.nativeElement.textContent = this.isSports ? this.formatTime(timeLeft) : this.betStationFormatTime(timeLeft);\n }\n\n private formatTime(timeSpan: number): string {\n const hours = Math.floor(timeSpan / this.HOUR);\n const minutes = Math.floor(timeSpan / this.MINUTE) % this.MINUTE;\n const seconds = timeSpan % this.MINUTE;\n\n if (this.showTimerInSeconds) {\n return ` ${seconds} `;\n }\n\n if (hours) {\n this.display.emit(false);\n\n return '';\n }\n this.display.emit(true);\n\n if (minutes < 10) {\n this.renderer.setStyle(this.elementRef.nativeElement, 'color', 'red');\n }\n\n return ` ${this.pad(minutes)}:${this.pad(seconds)}`;\n }\n\n private pad(val: number): string {\n return padStart(val.toString(), 2, '0');\n }\n\n private betStationFormatTime(timeSpan: number): string {\n const hours = Math.floor(timeSpan / this.HOUR);\n const minutes = Math.floor(timeSpan / this.MINUTE) % this.MINUTE;\n const seconds = timeSpan % this.MINUTE;\n const hoursText = (hours && `${hours}h`) || '';\n\n const time = `${hoursText} ${minutes}m ${this.pad(seconds)}s`;\n this.display.emit(!!time);\n\n return time;\n }\n}\n"],"names":["CountdownTimerComponent","class","isSports","constructor","ticker","elementRef","changeDetector","renderer","hideAfterComplete","textAfterTimerFinished","shown","EventEmitter","finish","display","MINUTE","HOUR","hidden","ngOnChanges","nativeElement","textContent","setStyle","timeInSeconds","startTicker","setCountdownTime","ngOnDestroy","stopTicker","tickerSubscription","subscribe","TickerInterval","Second","_a","unsubscribe","emit","markForCheck","timeLeft","thresholdSeconds","formatTime","betStationFormatTime","timeSpan","hours","Math","floor","minutes","seconds","showTimerInSeconds","pad","val","padStart","toString","time","s","ɵɵdirectiveInject","TickerService","ElementRef","ChangeDetectorRef","Renderer2","selectors","hostVars","hostBindings","rf","ctx","ɵɵclassMap","ɵɵclassProp","m","p","_CountdownTimerComponent"],"mappings":"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"}