{"version":3,"file":"pv-frontend-pv-shared-components-countdown.mjs","sources":["../../../projects/pv-shared-components/countdown/countdown.component.ts","../../../projects/pv-shared-components/countdown/countdown.component.html","../../../projects/pv-shared-components/countdown/countdown.module.ts","../../../projects/pv-shared-components/countdown/pv-frontend-pv-shared-components-countdown.ts"],"sourcesContent":["import {\n  Component,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n} from '@angular/core';\nimport { OverrideStyleConfig } from '@pv-frontend/pv-shared-components/common/types';\nimport { getDateDifferenceInSeconds } from '@pv-frontend/pv-shared-services/utils/time';\nimport { Subscription, interval } from 'rxjs';\n\nexport interface CountdownStylesOverrideConfig {\n  container?: OverrideStyleConfig;\n  countdownContainer?: OverrideStyleConfig;\n  textAfterButtonStyle?: OverrideStyleConfig;\n  textBefore?: OverrideStyleConfig;\n  countDownValue?: OverrideStyleConfig;\n  resendOtpIconStyle?: OverrideStyleConfig;\n}\n\n@Component({\n  selector: 'pv-countdown',\n  templateUrl: './countdown.component.html',\n})\nexport class CountdownComponent implements OnInit, OnDestroy {\n  public countdownValue: number = 0;\n  private countdownSubscription: Subscription | undefined;\n\n  public buttonStyle: OverrideStyleConfig = {\n    padding: 0,\n  };\n\n  @Input()\n  public timeInSeconds?: number | null = null;\n\n  @Input()\n  public date?: Date | null = null;\n\n  @Input()\n  public textBefore: string = '';\n\n  @Input()\n  public textAfter: string = '';\n\n  @Input()\n  public showZeroMinutes: boolean = true;\n\n  @Input()\n  public showZeroHours: boolean = false;\n\n  /**\n   * Indicates whether to show a suffix for the value.\n   * If set to `true`, a suffix will be appended to the displayed value like 2d 2h 30m 20s.\n   */\n  @Input()\n  public showSuffix?: boolean = false;\n\n  /**\n   * For some use cases, even after the button click you may want to restart the countdown\n   * Ex - When sending OTP, we always restart counter as customer might not be getting OTP\n   */\n  @Input()\n  public restartCounter?: boolean = false;\n\n  @Input()\n  public style?: CountdownStylesOverrideConfig = {};\n\n  @Output()\n  public timeoutEmitter: EventEmitter<void> = new EventEmitter();\n\n  /**\n   * To show resend icon before the textAfter & textBefore\n   */\n  @Input()\n  public resendOtpIconName?: string = '';\n\n  /**\n   * To show resend icon before the textAfter & textBefore, when using name attribute & if the assets is not available. We will be using url attribute of svg.\n   */\n  @Input()\n  public resendOtpIconUrl?: string = '';\n\n  public ngOnInit(): void {\n    this.startCountdown();\n  }\n\n  public startCountdown(): void {\n    this.countdownValue = this.timeInSeconds\n      ? this.timeInSeconds\n      : this.date\n      ? getDateDifferenceInSeconds(this.date)\n      : 0;\n    this.countdownSubscription = interval(1000).subscribe(() => {\n      if (this.countdownValue > 0) {\n        this.countdownValue--;\n      } else {\n        this.stopCountdown();\n      }\n    });\n  }\n\n  public stopCountdown(): void {\n    this.countdownSubscription?.unsubscribe();\n  }\n\n  public handleClick(): void {\n    this.timeoutEmitter.emit();\n    if (this.restartCounter) {\n      this.startCountdown();\n    }\n  }\n\n  public ngOnDestroy(): void {\n    this.stopCountdown();\n  }\n}\n","<div\n  class=\"pv-countdown-container flex flex-row text-sm text-primary\"\n  [style]=\"this?.style?.container\">\n  <div\n    class=\"pv-countdown-timer flex flex-row gap-1 align-items-center\"\n    *ngIf=\"this.countdownValue > 0; else postTimer\"\n    [style]=\"this?.style?.countdownContainer\">\n    <ng-template\n      *ngIf=\"resendOtpIconName || resendOtpIconUrl\"\n      [ngTemplateOutlet]=\"resendOtpIcon\"></ng-template>\n    <span [style]=\"this?.style?.textBefore\" *ngIf=\"this.textBefore\">\n      {{ this.textBefore }}\n    </span>\n    <span [style]=\"this?.style?.countDownValue\">\n      {{\n        this.countdownValue\n          | countdownFormat\n            : this.showZeroHours\n            : this.showZeroMinutes\n            : !!this.showSuffix\n      }}\n    </span>\n  </div>\n  <ng-template #postTimer>\n    <ng-container *ngIf=\"this.textAfter\">\n      <pv-button\n        variant=\"text\"\n        size=\"small\"\n        [label]=\"this.textAfter\"\n        [style]=\"this.style?.textAfterButtonStyle ?? this.buttonStyle\"\n        (clickEvent)=\"this.handleClick()\">\n        <ng-template\n          *ngIf=\"resendOtpIconName || resendOtpIconUrl\"\n          [ngTemplateOutlet]=\"resendOtpIcon\"></ng-template>\n      </pv-button>\n    </ng-container>\n  </ng-template>\n\n  <ng-template #resendOtpIcon>\n    <pv-svg-icon\n      [style]=\"this.style?.resendOtpIconStyle\"\n      [name]=\"resendOtpIconName\"\n      [srcUrl]=\"resendOtpIconUrl\"></pv-svg-icon>\n  </ng-template>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PvButtonModule } from '@pv-frontend/pv-shared-components/button';\nimport { SvgIconModule } from '@pv-frontend/pv-shared-components/svg-icon';\nimport { PvCountdownPipeModule } from '@pv-frontend/pv-shared-directives/pipes/countdown';\n\nimport { CountdownComponent } from './countdown.component';\n\n@NgModule({\n  imports: [CommonModule, PvButtonModule, PvCountdownPipeModule, SvgIconModule],\n  declarations: [CountdownComponent],\n  exports: [CountdownComponent],\n})\nexport class PvCountdownModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}