UNPKG

ngx-progressbar

Version:

<p align="center"> <img height="200px" width="200px" style="text-align: center;" src="https://gitcdn.xyz/repo/MurhafSousli/ngx-progressbar/master/projects/ngx-progressbar-demo/src/assets/logo.svg"> <h1 align="center">Angular Progressbar</h1> </p>

1 lines 27 kB
{"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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"}