{"version":3,"file":"ngx-progressbar.mjs","sources":["../../../projects/ngx-progressbar/src/lib/ng-progress-ref.ts","../../../projects/ngx-progressbar/src/lib/ng-progress.interface.ts","../../../projects/ngx-progressbar/src/lib/ng-progress.service.ts","../../../projects/ngx-progressbar/src/lib/ng-progress.component.ts","../../../projects/ngx-progressbar/src/lib/ng-progress.module.ts","../../../projects/ngx-progressbar/src/public-api.ts","../../../projects/ngx-progressbar/src/ngx-progressbar.ts"],"sourcesContent":["import { Observable, Subject, BehaviorSubject, timer, of, combineLatest, Subscription, EMPTY } from 'rxjs';\r\nimport { tap, delay, debounce, switchMap, takeUntil, finalize, filter } from 'rxjs/operators';\r\nimport { NgProgressState, NgProgressConfig, ProgressConfig, ProgressState } from './ng-progress.interface';\r\n\r\nexport class NgProgressRef {\r\n\r\n  // Stream that emits when progress state is changed\r\n  private readonly _state: BehaviorSubject<ProgressState>;\r\n  state: Observable<ProgressState>;\r\n\r\n  // Stream that emits when config is changed\r\n  private readonly _config: BehaviorSubject<ProgressConfig>;\r\n  config: Observable<ProgressConfig>;\r\n\r\n  // Progress start source event (used to cancel finalizing delays)\r\n  private readonly _started = new Subject<void>();\r\n  // Progress start event: stream that emits only when it hasn't already started\r\n  readonly started = this._started.pipe(filter(() => !this.isStarted));\r\n\r\n  // Progress ended source event\r\n  private readonly _completed = new Subject<void>();\r\n  // Progress start event: stream that emits only when it has already started\r\n  readonly completed = this._completed.pipe(filter(() => this.isStarted));\r\n\r\n  // Stream that increments and updates the progress state\r\n  private readonly _trickling = new Subject<boolean>();\r\n\r\n  // Stream that combines \"_trickling\" and \"config\" streams\r\n  private readonly _worker = Subscription.EMPTY;\r\n\r\n  // Get current progress state\r\n  private get snapshot(): ProgressState {\r\n    return this._state.value;\r\n  }\r\n\r\n  // Check if progress has started\r\n  get isStarted(): boolean {\r\n    return this.snapshot.active;\r\n  }\r\n\r\n  constructor(customConfig: ProgressConfig, private _onDestroyCallback: () => void) {\r\n    this._state = new BehaviorSubject<ProgressState>({ active: false, value: 0 });\r\n    this._config = new BehaviorSubject<ProgressConfig>(customConfig);\r\n    this.state = this._state.asObservable();\r\n    this.config = this._config.asObservable();\r\n\r\n    this._worker = combineLatest([this._trickling, this._config]).pipe(\r\n      debounce(([start, config]: [boolean, ProgressConfig]) => timer(start ? config.debounceTime : 0)),\r\n      switchMap(([start, config]: [boolean, ProgressConfig]) => start ? this.onTrickling(config) : this.onComplete(config))\r\n    ).subscribe();\r\n  }\r\n\r\n  /**\r\n   * Start the progress\r\n   */\r\n  start() {\r\n    this._started.next();\r\n    this._trickling.next(true);\r\n  }\r\n\r\n  /**\r\n   * Complete the progress\r\n   */\r\n  complete() {\r\n    this._trickling.next(false);\r\n  }\r\n\r\n  /**\r\n   * Increment the progress\r\n   */\r\n  inc(amount?: number) {\r\n    const n = this.snapshot.value;\r\n    if (!this.isStarted) {\r\n      this.start();\r\n    } else {\r\n      if (typeof amount !== 'number') {\r\n        amount = this._config.value.trickleFunc(n);\r\n      }\r\n      this.set(n + amount);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Set the progress\r\n   */\r\n  set(n: number) {\r\n    this.setState({ value: this.clamp(n), active: true });\r\n  }\r\n\r\n  /**\r\n   * Set config\r\n   */\r\n  setConfig(config: NgProgressConfig) {\r\n    this._config.next({ ...this._config.value, ...config });\r\n  }\r\n\r\n  /**\r\n   * Destroy progress reference\r\n   */\r\n  destroy() {\r\n    this._worker.unsubscribe();\r\n    this._trickling.complete();\r\n    this._state.complete();\r\n    this._config.complete();\r\n    this._started.complete();\r\n    this._completed.complete();\r\n    this._onDestroyCallback();\r\n  }\r\n\r\n  /**\r\n   * Set progress state\r\n   */\r\n  private setState(state: NgProgressState) {\r\n    this._state.next({ ...this.snapshot, ...state });\r\n  }\r\n\r\n  /**\r\n   * Clamps a value to be between min and max\r\n   */\r\n  private clamp(n: number): number {\r\n    return Math.max(this._config.value.min, Math.min(this._config.value.max, n));\r\n  }\r\n\r\n  /**\r\n   * Keeps incrementing the progress\r\n   */\r\n  private onTrickling(config: ProgressConfig): Observable<number> {\r\n    if (!this.isStarted) {\r\n      this.set(this._config.value.min);\r\n    }\r\n    return timer(0, config.trickleSpeed).pipe(tap(() => this.inc()));\r\n  }\r\n\r\n  /**\r\n   * Completes then resets the progress\r\n   */\r\n  private onComplete(config: ProgressConfig): Observable<any> {\r\n    this._completed.next();\r\n    return !this.isStarted ? EMPTY : of({}).pipe(\r\n      // Complete the progress\r\n      tap(() => this.setState({ value: 100 })),\r\n\r\n      // Deactivate the progress after a tiny delay\r\n      delay(config.speed * 1.7),\r\n      tap(() => this.setState({ active: false })),\r\n\r\n      // Use a tiny delay before resetting\r\n      delay(config.speed),\r\n      // Force the progress to reset even it got cancelled\r\n      finalize(() => this.setState({ value: 0 })),\r\n      // Cancel any of the finalizing delays if the progress has started again\r\n      takeUntil(this._started)\r\n    );\r\n  }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface ProgressState {\r\n  active: boolean;\r\n  value: number;\r\n}\r\n\r\nexport interface ProgressConfig {\r\n  spinnerPosition: 'left' | 'right';\r\n  direction: 'ltr+' | 'ltr-' | 'rtl+' | 'rtl-';\r\n  ease: string;\r\n  color: string;\r\n  thick: boolean;\r\n  fixed: boolean;\r\n  meteor: boolean;\r\n  spinner: boolean;\r\n  max: number;\r\n  min: number;\r\n  speed: number;\r\n  trickleSpeed: number;\r\n  trickleFunc: (n: number) => number;\r\n  debounceTime: number;\r\n}\r\n\r\nexport type NgProgressState = Partial<ProgressState>;\r\n\r\nexport type NgProgressConfig = Partial<ProgressConfig>;\r\n\r\nexport const NG_PROGRESS_CONFIG = new InjectionToken<NgProgressConfig>('ngProgressConfig');\r\n","import { Injectable, Inject, Optional } from '@angular/core';\r\nimport { NgProgressRef } from './ng-progress-ref';\r\nimport { NgProgressConfig, ProgressConfig, NG_PROGRESS_CONFIG } from './ng-progress.interface';\r\n\r\nconst defaultConfig: ProgressConfig = {\r\n  min: 8,\r\n  max: 100,\r\n  speed: 200,\r\n  debounceTime: 0,\r\n  trickleSpeed: 300,\r\n  fixed: true,\r\n  meteor: true,\r\n  thick: false,\r\n  spinner: true,\r\n  ease: 'linear',\r\n  color: '#1B95E0',\r\n  direction: 'ltr+',\r\n  spinnerPosition: 'right',\r\n  trickleFunc: (n: number): number => {\r\n    if (n >= 0 && n < 20) return 10;\r\n    if (n >= 20 && n < 50) return 4;\r\n    if (n >= 50 && n < 80) return 2;\r\n    if (n >= 80 && n < 99) return 0.5;\r\n    return 0;\r\n  }\r\n};\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class NgProgress {\r\n\r\n  // Store progress bar instances\r\n  private readonly _instances = new Map<string, NgProgressRef>();\r\n\r\n  // Global config\r\n  config: ProgressConfig;\r\n\r\n  constructor(@Optional() @Inject(NG_PROGRESS_CONFIG) config: NgProgressConfig) {\r\n    this.config = config ? { ...defaultConfig, ...config } : defaultConfig;\r\n  }\r\n\r\n  /**\r\n   * Get or Create progress bar by ID\r\n   */\r\n  ref(id = 'root', config?: NgProgressConfig): NgProgressRef {\r\n    if (this._instances.has(id)) {\r\n      // Get ProgressRef instance\r\n      const progressRef = this._instances.get(id) as NgProgressRef;\r\n      if (config) {\r\n        progressRef.setConfig({ ...this.config, ...config });\r\n      }\r\n      return progressRef as NgProgressRef;\r\n    } else {\r\n      // Create new ProgressRef instance\r\n      const progressRef = new NgProgressRef({ ...this.config, ...config }, this.deleteInstance(id));\r\n      return this._instances.set(id, progressRef).get(id) as NgProgressRef;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Destroy all progress bar instances\r\n   */\r\n  destroyAll() {\r\n    this._instances.forEach((ref: NgProgressRef) => ref.destroy());\r\n  }\r\n\r\n  /**\r\n   * A destroyer function for each progress bar instance\r\n   */\r\n  private deleteInstance(id: string): () => void {\r\n    return () => {\r\n      this._instances.delete(id);\r\n    };\r\n  }\r\n}\r\n","import {\r\n  Component,\r\n  Input,\r\n  Output,\r\n  EventEmitter,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  ChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { NgProgress } from './ng-progress.service';\r\nimport { NgProgressRef } from './ng-progress-ref';\r\nimport { ProgressState } from './ng-progress.interface';\r\n\r\n@Component({\r\n  selector: 'ng-progress',\r\n  host: {\r\n    'role': 'progressbar',\r\n    '[attr.spinnerPosition]': 'spinnerPosition',\r\n    '[attr.direction]': 'direction',\r\n    '[attr.thick]': 'thick',\r\n    '[attr.fixed]': 'fixed'\r\n  },\r\n  template: `\r\n    <ng-container *ngIf=\"state$ | async; let state\">\r\n      <div class=\"ng-progress-bar\"\r\n           [attr.active]=\"state.active\"\r\n           [style.transition]=\"'opacity ' + speed + 'ms ' + ease\">\r\n        <div class=\"ng-bar-placeholder\">\r\n          <div class=\"ng-bar\"\r\n               [style.transform]=\"state.transform\"\r\n               [style.backgroundColor]=\"color\"\r\n               [style.transition]=\"state.active ? 'all ' + speed + 'ms ' + ease : 'none'\">\r\n            <div *ngIf=\"meteor\" class=\"ng-meteor\" [style.boxShadow]=\"'0 0 10px '+ color + ', 0 0 5px ' + color\"></div>\r\n          </div>\r\n        </div>\r\n        <div *ngIf=\"spinner\" class=\"ng-spinner\">\r\n          <div class=\"ng-spinner-icon\"\r\n               [style.borderTopColor]=\"color\"\r\n               [style.borderLeftColor]=\"color\"></div>\r\n        </div>\r\n      </div>\r\n    </ng-container>\r\n  `,\r\n  styleUrls: ['./ng-progress.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\n\r\nexport class NgProgressComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n  private _started!: Subscription;\r\n  private _completed!: Subscription;\r\n\r\n  /** Progress bar worker */\r\n  progressRef!: NgProgressRef;\r\n\r\n  /** Stream that emits progress state */\r\n  state$!: Observable<{ active: boolean, transform: string }>;\r\n\r\n  /** Creates a new instance if id is not already exists */\r\n  @Input() id = 'root';\r\n\r\n  /** Initializes inputs from the global config */\r\n  @Input() min: number = this._ngProgress.config.min;\r\n  @Input() max: number = this._ngProgress.config.max;\r\n  @Input() ease: string = this._ngProgress.config.ease;\r\n  @Input() color: string = this._ngProgress.config.color;\r\n  @Input() speed: number = this._ngProgress.config.speed;\r\n  @Input() thick: boolean = this._ngProgress.config.thick;\r\n  @Input() fixed: boolean = this._ngProgress.config.fixed;\r\n  @Input() meteor: boolean = this._ngProgress.config.meteor;\r\n  @Input() spinner: boolean = this._ngProgress.config.spinner;\r\n  @Input() trickleSpeed: number = this._ngProgress.config.trickleSpeed;\r\n  @Input() debounceTime: number = this._ngProgress.config.debounceTime;\r\n  @Input() trickleFunc: (n: number) => number = this._ngProgress.config.trickleFunc;\r\n  @Input() spinnerPosition: 'left' | 'right' = this._ngProgress.config.spinnerPosition;\r\n  @Input() direction: 'ltr+' | 'ltr-' | 'rtl+' | 'rtl-' = this._ngProgress.config.direction;\r\n  @Output() started = new EventEmitter();\r\n  @Output() completed = new EventEmitter();\r\n\r\n  get isStarted() {\r\n    return this.progressRef?.isStarted;\r\n  }\r\n\r\n  constructor(private _ngProgress: NgProgress) {\r\n  }\r\n\r\n  ngOnChanges() {\r\n     // Update progress bar config when inputs change\r\n    this.progressRef?.setConfig({\r\n      max: (this.max > 0 && this.max <= 100) ? this.max : 100,\r\n      min: (this.min < 100 && this.min >= 0) ? this.min : 0,\r\n      speed: this.speed,\r\n      trickleSpeed: this.trickleSpeed,\r\n      trickleFunc: this.trickleFunc,\r\n      debounceTime: this.debounceTime\r\n    });\r\n  }\r\n\r\n  ngOnInit() {\r\n    // Get progress bar service instance\r\n    this.progressRef = this._ngProgress.ref(this.id, {\r\n      max: this.max,\r\n      min: this.min,\r\n      speed: this.speed,\r\n      trickleSpeed: this.trickleSpeed,\r\n      debounceTime: this.debounceTime\r\n    });\r\n\r\n    // Subscribe to progress state\r\n    this.state$ = this.progressRef.state.pipe(\r\n      map((state: ProgressState) => ({\r\n        active: state.active,\r\n        transform: `translate3d(${ state.value }%,0,0)`\r\n      }))\r\n    );\r\n\r\n    // Subscribes to started and completed events on demand\r\n    if (this.started.observed) {\r\n      this._started = this.progressRef.started.subscribe(() => this.started.emit());\r\n    }\r\n    if (this.completed.observed) {\r\n      this._completed = this.progressRef.completed.subscribe(() => this.completed.emit());\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this._started?.unsubscribe();\r\n    this._completed?.unsubscribe();\r\n    this.progressRef?.destroy();\r\n  }\r\n\r\n  start() {\r\n    this.progressRef.start();\r\n  }\r\n\r\n  complete() {\r\n    this.progressRef.complete();\r\n  }\r\n\r\n  inc(n?: number) {\r\n    this.progressRef.inc(n);\r\n  }\r\n\r\n  set(n: number) {\r\n    this.progressRef.set(n);\r\n  }\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgProgressComponent } from './ng-progress.component';\r\nimport { NgProgressConfig, NG_PROGRESS_CONFIG } from './ng-progress.interface';\r\n\r\n@NgModule({\r\n  declarations: [NgProgressComponent],\r\n  exports: [NgProgressComponent],\r\n  imports: [CommonModule]\r\n})\r\nexport class NgProgressModule {\r\n  static withConfig(config: NgProgressConfig): ModuleWithProviders<NgProgressModule> {\r\n    return {\r\n      ngModule: NgProgressModule,\r\n      providers: [\r\n        {provide: NG_PROGRESS_CONFIG, useValue: config}\r\n      ]\r\n    };\r\n  }\r\n}\r\n","/*\r\n * Public API Surface of ngx-progressbar\r\n */\r\n\r\nexport * from './lib/ng-progress-ref';\r\nexport * from './lib/ng-progress.component';\r\nexport * from './lib/ng-progress.module';\r\nexport * from './lib/ng-progress.service';\r\nexport * from './lib/ng-progress.interface';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgProgress"],"mappings":"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"}