{"version":3,"file":"ng-vibe-timer.mjs","sources":["../../../../libs/timer/src/models/callback-manager.model.ts","../../../../libs/timer/src/models/timer.model.ts","../../../../libs/timer/src/models/public-timer.model.ts","../../../../libs/timer/src/ng-vibe-timer.ts"],"sourcesContent":["import { ICallbackManager } from '../interafce';\n\nexport class CallbackManager implements ICallbackManager {\n  private onUpdateCallbacks: Array<\n    (progress: number, remaining: number) => void\n  > = [];\n  private onTimeoutCallbacks: Array<() => void> = [];\n\n  addOnUpdateCallback(\n    callback: (progress: number, remaining: number) => void\n  ): void {\n    this.onUpdateCallbacks.push(callback);\n  }\n\n  addOnTimeoutCallback(callback: () => void): void {\n    this.onTimeoutCallbacks.push(callback);\n  }\n\n  notifyUpdate(progress: number, remaining: number): void {\n    this.onUpdateCallbacks.forEach((callback) => callback(progress, remaining));\n  }\n\n  notifyTimeout(): void {\n    this.onTimeoutCallbacks.forEach((callback) => callback());\n  }\n}\n","import { ICallbackManager } from '../interafce';\n\nexport class Timer {\n  private timePassed = 0;\n  private timerId: number | null = null;\n  private startTime: number | null = null;\n  private updateInterval = 100;\n  private milliseconds = 0;\n  private paused = false;\n  private stopped = false;\n  protected callbackManager: ICallbackManager;\n\n  constructor(milliseconds: number, callbackManager: ICallbackManager) {\n    this.milliseconds = milliseconds;\n    this.callbackManager = callbackManager;\n  }\n\n  public setMilliseconds(milliseconds: number): void {\n    this.milliseconds = milliseconds;\n  }\n\n  public setUpdateInterval(interval: number): void {\n    this.updateInterval = interval;\n  }\n\n  public start(): void {\n    if (this.timerId !== null || this.paused || this.stopped) return;\n    this.startTime = Date.now();\n    this.timerId = this.createInterval();\n  }\n\n  public stop(): void {\n    if (this.timerId !== null) {\n      clearInterval(this.timerId);\n      this.timerId = null;\n    }\n    this.stopped = true;\n    this.callbackManager.notifyTimeout();\n  }\n\n  public pause(): void {\n    if (!this.paused && this.timerId !== null) {\n      clearInterval(this.timerId);\n      this.timerId = null;\n      this.paused = true;\n    }\n  }\n\n  public resume(): void {\n    if (this.paused && !this.stopped && this.timePassed < this.milliseconds) {\n      this.paused = false;\n      this.startTime = Date.now() - this.timePassed;\n      this.timerId = this.createInterval();\n    }\n  }\n\n  public reset(): void {\n    if (this.timerId !== null) {\n      clearInterval(this.timerId);\n      this.timerId = null;\n    }\n    this.timePassed = 0;\n    this.paused = false;\n    this.stopped = false;\n  }\n\n  public getProgress(): number {\n    if (!this.milliseconds) {\n      return 100;\n    }\n    return this.stopped\n      ? 100\n      : Math.round((this.timePassed / this.milliseconds) * 100);\n  }\n\n  public getRemainingPercentage(): number {\n    return 100 - this.getProgress();\n  }\n\n  public getRemainingTime(\n    format: 'milliseconds' | 'seconds' = 'seconds'\n  ): number {\n    const remaining = this.milliseconds - this.timePassed;\n    return format === 'milliseconds' ? remaining : Math.round(remaining / 1000);\n  }\n\n  public getInitialTime(\n    format: 'milliseconds' | 'seconds' = 'seconds'\n  ): number {\n    return format === 'milliseconds'\n      ? this.milliseconds\n      : Math.round(this.milliseconds / 1000);\n  }\n\n  private createInterval() {\n    return window.setInterval(() => {\n      this.updateTimeAndInvokeCallbacks();\n    }, this.updateInterval);\n  }\n\n  private updateTimeAndInvokeCallbacks(): void {\n    this.timePassed = Date.now() - (this.startTime as number);\n    this.timePassed = Math.min(this.timePassed, this.milliseconds);\n    const progress = Math.round((this.timePassed / this.milliseconds) * 100);\n    const remaining = 100 - progress;\n\n    this.callbackManager.notifyUpdate(progress, remaining);\n\n    if (this.timePassed >= this.milliseconds) {\n      this.stop();\n    }\n  }\n\n  public addOnUpdateCallback(\n    callback: (progress: number, remaining: number) => void\n  ): void {\n    this.callbackManager.addOnUpdateCallback(callback);\n  }\n\n  public addOnTimeoutCallback(callback: () => void): void {\n    this.callbackManager.addOnTimeoutCallback(callback);\n  }\n}\n","import { CallbackManager } from './callback-manager.model';\nimport { Timer } from './timer.model';\n\nexport class PublicTimer extends Timer {\n  constructor(milliseconds = 0) {\n    super(milliseconds, new CallbackManager());\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}