{"version":3,"file":"ngx-simple-countdown.mjs","sources":["../../../projects/ngx-simple-countdown/src/lib/utils.ts","../../../projects/ngx-simple-countdown/src/lib/ngx-simple-countdown.directive.ts","../../../projects/ngx-simple-countdown/src/lib/ngx-simple-timeago.directive.ts","../../../projects/ngx-simple-countdown/src/lib/ngx-simple-countdown.module.ts","../../../projects/ngx-simple-countdown/src/lib/ngx-simple-countdown-standalone.directive.ts","../../../projects/ngx-simple-countdown/src/public_api.ts","../../../projects/ngx-simple-countdown/src/ngx-simple-countdown.ts"],"sourcesContent":["import { CountdownResult, CountdownKeywords } from './models/';\n\nexport const getDateNow = () => {\n  return Math.floor(Date.now() / 1000);\n};\n\nexport const getCountdownResult = (secondes: number): CountdownResult => {\n  return {\n    seconds: Math.floor((secondes / 1) % 60),\n    minutes: Math.floor((secondes / 1 / 60) % 60),\n    hours: Math.floor((secondes / (1 * 60 * 60)) % 24),\n    day: Math.floor(secondes / (1 * 60 * 60 * 24))\n  };\n};\n\nexport const getLanguage = (language: string): CountdownKeywords => {\n  if (language === 'fr') {\n    return {\n      timeago: 'il y a',\n      now: \"à l'instant\",\n      seconds: 's',\n      minutes: 'm',\n      hours: 'h',\n      day: 'j'\n    };\n  } else if (language === 'de') {\n    return {\n      timeago: 'vor',\n      now: 'gerade jetzt',\n      seconds: 'z',\n      minutes: 'm',\n      hours: 's',\n      day: 't'\n    };\n  } else if (language === 'pt') {\n    return {\n      timeago: 'há',\n      now: 'agora mesmo',\n      seconds: 's',\n      minutes: 'm',\n      hours: 's',\n      day: 'd'\n    };\n  } else if (language === 'es') {\n    return {\n      timeago: 'hace',\n      now: 'en este momento',\n      seconds: 's',\n      minutes: 'm',\n      hours: 's',\n      day: 'd'\n    };\n  } else if (language === 'cs') {\n    return {\n      timeago: 'před',\n      now: 'právě teď',\n      seconds: 's',\n      minutes: 'm',\n      hours: 'h',\n      day: 'd'\n    };\n  } else if (language === 'pl') {\n    return {\n      timeago: 'jest',\n      now: 'właśnie',\n      seconds: 's',\n      minutes: 'm',\n      hours: 'g',\n      day: 'd'\n    };\n  } else if (language === 'ge') {\n    return {\n      timeago: 'დასრულდა',\n      now: 'დროა',\n      seconds: 'წმ',\n      minutes: 'წთ',\n      hours: 'სთ',\n      day: 'დღე'\n    };\n  } else {\n    return {\n      timeago: 'there is',\n      now: 'just now',\n      seconds: 's',\n      minutes: 'm',\n      hours: 'h',\n      day: 'd'\n    };\n  }\n};\n","import {\n  Directive,\n  Input,\n  ElementRef,\n  OnDestroy,\n  OnInit,\n  Output,\n  EventEmitter\n} from '@angular/core';\nimport { interval, Observable, ReplaySubject } from 'rxjs';\nimport { tap, takeUntil, filter } from 'rxjs/operators';\n\nimport { CountdownResult, CountdownKeywords } from './models';\nimport { getDateNow, getCountdownResult, getLanguage } from './utils';\n@Directive({\n  selector: '[simpleCountdown]'\n})\nexport class NgxSimpleCountdownDirective implements OnInit, OnDestroy {\n  @Input() dateTo: number;\n  @Input() endMessage = 'countdown finish';\n  @Input() language = 'en';\n  @Input() reactive = true;\n  @Input() styles =\n    'font-size:20px;color:#FFF;background-color:#000;padding:10px 5px;font-weight:bold;min-width:40px;text-align:center;';\n\n  @Output() finish: EventEmitter<void> = new EventEmitter();\n\n  public countdownResult: CountdownResult;\n  public dateNow: number;\n  public interval$: Observable<number>;\n  public keywords: CountdownKeywords;\n  public totalSecondes: number;\n\n  constructor(private elementRef: ElementRef) {}\n\n  ngOnInit() {\n    this.dateNow = getDateNow();\n    this.keywords = getLanguage(this.language);\n    this.initSimpleCountdown();\n  }\n\n  ngOnDestroy() {}\n\n  private initSimpleCountdown(): void {\n    this.totalSecondes = this.dateTo - this.dateNow;\n    this.updateSimpleCountdown(this.totalSecondes);\n\n    this.interval$ = interval(1000).pipe(\n      takeUntil(this.componentDestroyed(this)),\n      filter((_) => this.reactive && this.totalSecondes > 0),\n      tap((_) => {\n        this.totalSecondes--;\n        this.updateSimpleCountdown(this.totalSecondes);\n      })\n    );\n\n    if (this.reactive) {\n      this.interval$.subscribe();\n    }\n  }\n\n  private createHTML(data: CountdownResult): void {\n    const { day, hours, minutes, seconds } = data;\n    let o = '';\n\n    if (this.totalSecondes > 0) {\n      o = '<div style=\"display:flex;\">';\n\n      if (day > 0) {\n        o += `<div style=\"${this.styles}\">\n          ${day}${this.keywords.day}\n          </div>`;\n      }\n\n      if (hours > 0 || day > 0) {\n        o += `<div style=\"${this.styles}\">\n          ${hours}${this.keywords.hours}\n        </div>`;\n      }\n\n      if ((minutes > 0 || hours > 0 || day > 0) && this.reactive) {\n        o += `<div style=\"${this.styles}\">\n          ${minutes}${this.keywords.minutes}\n        </div>`;\n      }\n\n      if (\n        (seconds > 0 || minutes > 0 || hours > 0 || day > 0) &&\n        this.reactive\n      ) {\n        o += `<div style=\"${this.styles}\">\n          ${seconds}${this.keywords.seconds}\n        </div>`;\n      }\n      o += '</div>';\n    } else {\n      this.finish.emit();\n      if (this.endMessage !== '') {\n        o += `<div style=\"${this.styles}\">${this.endMessage}</div>`;\n      }\n    }\n\n    this.elementRef.nativeElement.innerHTML = o;\n  }\n\n  private updateSimpleCountdown(secondes: number): void {\n    const countdownResult = getCountdownResult(secondes);\n    this.createHTML(countdownResult);\n  }\n\n  private componentDestroyed(component: OnDestroy) {\n    const oldNgOnDestroy = component.ngOnDestroy;\n    const destroyed$ = new ReplaySubject<void>(1);\n    component.ngOnDestroy = () => {\n      oldNgOnDestroy.apply(component);\n      destroyed$.next(undefined);\n      destroyed$.complete();\n    };\n    return destroyed$;\n  }\n}\n","import { Directive, Input, ElementRef, OnDestroy, OnInit } from '@angular/core';\nimport { interval, Observable, ReplaySubject } from 'rxjs';\nimport { tap, takeUntil, filter } from 'rxjs/operators';\n\nimport { CountdownResult, CountdownKeywords } from './models';\nimport { getCountdownResult, getDateNow, getLanguage } from './utils';\n\n@Directive({\n  selector: '[simpleTimeago]'\n})\nexport class NgxSimpleTimeagoDirective implements OnInit, OnDestroy {\n  @Input() date: number;\n  @Input() language = 'en';\n  @Input() reactive = true;\n\n  public dateNow: number;\n  public interval$: Observable<number>;\n  public keywords: CountdownKeywords;\n  public totalSecondes: number;\n\n  constructor(private elementRef: ElementRef) {}\n\n  ngOnInit() {\n    this.dateNow = getDateNow();\n    this.keywords = getLanguage(this.language);\n    this.initSimpleCountdown();\n  }\n\n  ngOnDestroy() {}\n\n  private initSimpleCountdown(): void {\n    this.totalSecondes = this.dateNow - this.date;\n    this.updateSimpleCountdown(this.totalSecondes);\n\n    this.interval$ = interval(20000).pipe(\n      takeUntil(this.componentDestroyed(this)),\n      filter(() => this.reactive && this.totalSecondes > 0),\n      tap(() => {\n        this.totalSecondes += 20;\n        this.updateSimpleCountdown(this.totalSecondes);\n      })\n    );\n\n    if (this.reactive) {\n      this.interval$.subscribe();\n    }\n  }\n\n  private createHTML(data: CountdownResult): void {\n    const { day, hours, minutes } = data;\n    let o = '';\n\n    if (this.totalSecondes > 0) {\n      if (this.totalSecondes <= 60) {\n        o += this.keywords.now;\n      } else {\n        o += `${this.keywords.timeago} `;\n        if (data.day > 0) {\n          o += `${data.day}${this.keywords.day} `;\n        }\n        if (hours > 0 || day > 0) {\n          o += `${hours}${this.keywords.hours} `;\n        }\n        if (minutes > 0 || hours > 0 || day > 0) {\n          o += `${minutes}${this.keywords.minutes} `;\n        }\n      }\n    }\n\n    this.elementRef.nativeElement.innerHTML = o;\n  }\n\n  private updateSimpleCountdown(secondes: number): void {\n    const countdownResult: CountdownResult = getCountdownResult(secondes);\n    this.createHTML(countdownResult);\n  }\n\n  private componentDestroyed(component: OnDestroy) {\n    const oldNgOnDestroy = component.ngOnDestroy;\n    const destroyed$ = new ReplaySubject<void>(1);\n\n    component.ngOnDestroy = () => {\n      oldNgOnDestroy.apply(component);\n      destroyed$.next(undefined);\n      destroyed$.complete();\n    };\n\n    return destroyed$;\n  }\n}\n","import { NgModule } from \"@angular/core\";\nimport { NgxSimpleCountdownDirective } from \"./ngx-simple-countdown.directive\";\nimport { NgxSimpleTimeagoDirective } from \"./ngx-simple-timeago.directive\";\n\n@NgModule({\n  declarations: [NgxSimpleCountdownDirective, NgxSimpleTimeagoDirective],\n  imports: [],\n  exports: [NgxSimpleCountdownDirective, NgxSimpleTimeagoDirective]\n})\nexport class NgxSimpleCountdownModule {}\n","import {\n  Directive,\n  Input,\n  ElementRef,\n  OnDestroy,\n  OnInit,\n  Output,\n  EventEmitter\n} from '@angular/core';\nimport { interval, Observable, ReplaySubject } from 'rxjs';\nimport { tap, takeUntil, filter } from 'rxjs/operators';\n\nimport { CountdownResult, CountdownKeywords } from './models';\nimport { getDateNow, getCountdownResult, getLanguage } from './utils';\n@Directive({\n  selector: '[simpleCountdown]',\n  standalone: true\n})\nexport class NgxSimpleCountdownStandaloneDirective\n  implements OnInit, OnDestroy\n{\n  @Input() dateTo: number;\n  @Input() endMessage = 'countdown finish';\n  @Input() language = 'en';\n  @Input() reactive = true;\n  @Input() styles =\n    'font-size:20px;color:#FFF;background-color:#000;padding:10px 5px;font-weight:bold;min-width:40px;text-align:center;';\n\n  @Output() finish: EventEmitter<void> = new EventEmitter();\n\n  public countdownResult: CountdownResult;\n  public dateNow: number;\n  public interval$: Observable<number>;\n  public keywords: CountdownKeywords;\n  public totalSecondes: number;\n\n  constructor(private elementRef: ElementRef) {}\n\n  ngOnInit() {\n    this.dateNow = getDateNow();\n    this.keywords = getLanguage(this.language);\n    this.initSimpleCountdown();\n  }\n\n  ngOnDestroy() {}\n\n  private initSimpleCountdown(): void {\n    this.totalSecondes = this.dateTo - this.dateNow;\n    this.updateSimpleCountdown(this.totalSecondes);\n\n    this.interval$ = interval(1000).pipe(\n      takeUntil(this.componentDestroyed(this)),\n      filter((_) => this.reactive && this.totalSecondes > 0),\n      tap((_) => {\n        this.totalSecondes--;\n        this.updateSimpleCountdown(this.totalSecondes);\n      })\n    );\n\n    if (this.reactive) {\n      this.interval$.subscribe();\n    }\n  }\n\n  private createHTML(data: CountdownResult): void {\n    const { day, hours, minutes, seconds } = data;\n    let o = '';\n\n    if (this.totalSecondes > 0) {\n      o = '<div style=\"display:flex;\">';\n\n      if (day > 0) {\n        o += `<div style=\"${this.styles}\">\n          ${day}${this.keywords.day}\n          </div>`;\n      }\n\n      if (hours > 0 || day > 0) {\n        o += `<div style=\"${this.styles}\">\n          ${hours}${this.keywords.hours}\n        </div>`;\n      }\n\n      if ((minutes > 0 || hours > 0 || day > 0) && this.reactive) {\n        o += `<div style=\"${this.styles}\">\n          ${minutes}${this.keywords.minutes}\n        </div>`;\n      }\n\n      if (\n        (seconds > 0 || minutes > 0 || hours > 0 || day > 0) &&\n        this.reactive\n      ) {\n        o += `<div style=\"${this.styles}\">\n          ${seconds}${this.keywords.seconds}\n        </div>`;\n      }\n      o += '</div>';\n    } else {\n      this.finish.emit();\n      if (this.endMessage !== '') {\n        o += `<div style=\"${this.styles}\">${this.endMessage}</div>`;\n      }\n    }\n\n    this.elementRef.nativeElement.innerHTML = o;\n  }\n\n  private updateSimpleCountdown(secondes: number): void {\n    const countdownResult = getCountdownResult(secondes);\n    this.createHTML(countdownResult);\n  }\n\n  private componentDestroyed(component: OnDestroy) {\n    const oldNgOnDestroy = component.ngOnDestroy;\n    const destroyed$ = new ReplaySubject<void>(1);\n    component.ngOnDestroy = () => {\n      oldNgOnDestroy.apply(component);\n      destroyed$.next(undefined);\n      destroyed$.complete();\n    };\n    return destroyed$;\n  }\n}\n","/*\n * Public API Surface of ngx-simple-countdown\n */\n\n// ngModule\nexport * from './lib/ngx-simple-countdown.module';\nexport * from './lib/ngx-simple-countdown.directive';\nexport * from './lib/ngx-simple-timeago.directive';\n\n// standalone\nexport * from './lib/ngx-simple-countdown-standalone.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}