UNPKG

ngx-progressbar

Version:

<p align="center"> <img height="200px" width="200px" style="text-align: center;" src="https://rawcdn.githack.com/MurhafSousli/ngx-progressbar/e5f30ba33c83690da3249ef2a665e6168b8caeb1/projects/ngx-progressbar-demo/src/assets/logo.svg"> <h1 align="cen

1 lines 21.1 kB
{"version":3,"file":"ngx-progressbar.mjs","sources":["../../../projects/ngx-progressbar/src/lib/ng-progress-default.ts","../../../projects/ngx-progressbar/src/lib/ng-progress.model.ts","../../../projects/ngx-progressbar/src/lib/ng-progress-ref.ts","../../../projects/ngx-progressbar/src/lib/ng-progress.component.ts","../../../projects/ngx-progressbar/src/public-api.ts","../../../projects/ngx-progressbar/src/ngx-progressbar.ts"],"sourcesContent":["import { NgProgressOptions } from './ng-progress.model';\r\n\r\nexport const defaultOptions: NgProgressOptions = {\r\n min: 8,\r\n max: 100,\r\n speed: 200,\r\n debounceTime: 0,\r\n trickleSpeed: 300,\r\n fadeOutSpeed: 50,\r\n relative: false,\r\n flat: false,\r\n spinner: false,\r\n direction: 'ltr+',\r\n spinnerPosition: 'right',\r\n trickleFunc: (n: number): number => {\r\n if (n >= 0 && n < 20) {\r\n return 10;\r\n }\r\n if (n >= 20 && n < 50) {\r\n return 4;\r\n }\r\n if (n >= 50 && n < 80) {\r\n return 2;\r\n }\r\n if (n >= 80 && n < 99) {\r\n return 0.5;\r\n }\r\n return 0;\r\n }\r\n};\r\n","import { InjectionToken, Provider } from '@angular/core';\r\nimport { defaultOptions } from './ng-progress-default';\r\n\r\nexport interface NgProgressRefOptions {\r\n max?: number;\r\n min?: number;\r\n speed?: number;\r\n trickleSpeed?: number;\r\n fadeOutSpeed?: number;\r\n trickleFunc?: (n: number) => number;\r\n debounceTime?: number;\r\n}\r\n\r\nexport type NgProgressOptions = NgProgressRefOptions & {\r\n spinnerPosition?: 'left' | 'right';\r\n direction?: 'ltr+' | 'ltr-' | 'rtl+' | 'rtl-';\r\n relative?: boolean;\r\n flat?: boolean;\r\n spinner?: boolean;\r\n}\r\n\r\nexport const NG_PROGRESS_OPTIONS: InjectionToken<NgProgressOptions> = new InjectionToken<NgProgressOptions>('NG_PROGRESS_OPTIONS', {\r\n providedIn: 'root',\r\n factory: () => defaultOptions\r\n});\r\n\r\nexport function provideNgProgressOptions(options: NgProgressOptions): Provider {\r\n return {\r\n provide: NG_PROGRESS_OPTIONS,\r\n useValue: { ...defaultOptions, ...options }\r\n };\r\n}\r\n","import {\r\n Directive,\r\n inject,\r\n signal,\r\n effect,\r\n output,\r\n computed,\r\n untracked,\r\n numberAttribute,\r\n input,\r\n Signal,\r\n InputSignal,\r\n WritableSignal,\r\n OutputEmitterRef,\r\n EffectCleanupRegisterFn,\r\n InputSignalWithTransform\r\n} from '@angular/core';\r\nimport { outputToObservable } from '@angular/core/rxjs-interop';\r\nimport {\r\n Observable,\r\n Subscription,\r\n BehaviorSubject,\r\n of,\r\n tap,\r\n delay,\r\n timer,\r\n filter,\r\n finalize,\r\n switchMap,\r\n takeUntil,\r\n EMPTY\r\n} from 'rxjs';\r\nimport { NgProgressOptions, NG_PROGRESS_OPTIONS, NgProgressRefOptions } from './ng-progress.model';\r\n\r\nenum TriggerType {\r\n START = 'START',\r\n COMPLETE = 'COMPLETE'\r\n}\r\n\r\nfunction minAttribute(value: string | number): number {\r\n const min: number = numberAttribute(value) || 0;\r\n return (min < 100 && min >= 0) ? min : 0;\r\n}\r\n\r\nfunction maxAttribute(value: string | number): number {\r\n const max: number = numberAttribute(value) || 100;\r\n return (max > 0 && max <= 100) ? max : 100;\r\n}\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[ngProgressRef]',\r\n exportAs: 'ngProgressRef'\r\n})\r\nexport class NgProgressRef {\r\n\r\n private readonly defaultOptions: NgProgressOptions = inject(NG_PROGRESS_OPTIONS);\r\n\r\n min: InputSignalWithTransform<number, number | string> = input<number, number | string>(this.defaultOptions.min, { transform: minAttribute });\r\n max: InputSignalWithTransform<number, number | string> = input<number, number | string>(this.defaultOptions.max, { transform: maxAttribute });\r\n speed: InputSignalWithTransform<number, number | string> = input<number, number | string>(this.defaultOptions.speed, { transform: numberAttribute });\r\n trickleSpeed: InputSignalWithTransform<number, number | string> = input<number, number | string>(this.defaultOptions.trickleSpeed, { transform: numberAttribute });\r\n fadeOutSpeed: InputSignalWithTransform<number, number | string> = input<number, number | string>(this.defaultOptions.fadeOutSpeed, { transform: numberAttribute });\r\n debounceTime: InputSignalWithTransform<number, number | string> = input<number, number | string>(this.defaultOptions.debounceTime, { transform: numberAttribute });\r\n trickleFunc: InputSignal<(n: number) => number> = input(this.defaultOptions.trickleFunc);\r\n\r\n config: Signal<NgProgressRefOptions> = computed(() => {\r\n return {\r\n max: this.max(),\r\n min: this.min(),\r\n speed: this.speed(),\r\n trickleSpeed: this.trickleSpeed(),\r\n fadeOutSpeed: this.fadeOutSpeed(),\r\n trickleFunc: this.trickleFunc(),\r\n debounceTime: this.debounceTime()\r\n }\r\n });\r\n\r\n private _progress: WritableSignal<number> = signal<number>(0);\r\n\r\n private _active: WritableSignal<boolean> = signal<boolean>(false);\r\n\r\n active: Signal<boolean> = computed(() => this._active());\r\n\r\n progress: Signal<number> = computed(() => this._progress());\r\n\r\n // Progress start source event (used to cancel onComplete delays)\r\n started: OutputEmitterRef<void> = output<void>();\r\n\r\n // Progress ended source event\r\n completed: OutputEmitterRef<void> = output<void>();\r\n\r\n private _trigger: BehaviorSubject<TriggerType> = new BehaviorSubject<TriggerType>(null);\r\n\r\n constructor() {\r\n let sub$: Subscription;\r\n effect((onCleanup: EffectCleanupRegisterFn) => {\r\n const config: NgProgressOptions = this.config();\r\n\r\n untracked(() => {\r\n sub$ = this._trigger.pipe(\r\n filter((trigger: TriggerType) => !!trigger),\r\n switchMap((trigger: TriggerType) => {\r\n if (trigger === TriggerType.START) {\r\n return timer(config.debounceTime).pipe(\r\n switchMap(() => this.onTrickling(config))\r\n );\r\n }\r\n return this.onComplete(config);\r\n })\r\n ).subscribe();\r\n\r\n onCleanup(() => sub$?.unsubscribe());\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Start the progress\r\n */\r\n start(): void {\r\n this.started.emit();\r\n this._trigger.next(TriggerType.START);\r\n this._active.set(true);\r\n }\r\n\r\n /**\r\n * Complete the progress\r\n */\r\n complete(): void {\r\n this._trigger.next(TriggerType.COMPLETE);\r\n }\r\n\r\n /**\r\n * Increment the progress\r\n */\r\n inc(amount?: number): void {\r\n const n: number = this.progress();\r\n if (!this.active()) {\r\n this.start();\r\n } else {\r\n if (typeof amount !== 'number') {\r\n amount = this.config().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): void {\r\n this._active.set(true);\r\n this._progress.set(this.clamp(n));\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().min, Math.min(this.config().max, n));\r\n }\r\n\r\n /**\r\n * Keeps incrementing the progress\r\n */\r\n private onTrickling(config: NgProgressOptions): Observable<number> {\r\n if (!this.active()) {\r\n this.set(config.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: NgProgressOptions): Observable<unknown> {\r\n // If it's not active no need to complete\r\n if (!this.active()) {\r\n return EMPTY;\r\n }\r\n\r\n // Emit completed\r\n this.completed.emit();\r\n\r\n return of({}).pipe(\r\n // Complete the progress\r\n tap(() => this._progress.set(100)),\r\n // Deactivate the progress after a tiny delay\r\n delay(config.speed + 140),\r\n tap(() => this._active.set(false)),\r\n\r\n // Use a tiny delay before resetting\r\n delay(config.fadeOutSpeed),\r\n // Force the progress to reset even it got cancelled\r\n finalize(() => this._progress.set(0)),\r\n // Cancel any of the finalizing delays if the progress has started again\r\n takeUntil(outputToObservable(this.started))\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n inject,\r\n computed,\r\n booleanAttribute,\r\n input,\r\n Signal,\r\n InputSignal,\r\n ChangeDetectionStrategy,\r\n InputSignalWithTransform\r\n} from '@angular/core';\r\nimport { NgProgressRef } from './ng-progress-ref';\r\nimport { NG_PROGRESS_OPTIONS, NgProgressOptions } from './ng-progress.model';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'ng-progress',\r\n exportAs: 'ngProgress',\r\n host: {\r\n 'role': 'progressbar',\r\n '[class.ng-progress-bar]': 'true',\r\n '[class.ng-progress-bar-active]': 'progressRef.active()',\r\n '[class.ng-progress-bar-relative]': 'relative()',\r\n '[attr.spinnerPosition]': 'spinnerPosition()',\r\n '[attr.direction]': 'direction()',\r\n '[style.--_ng-progress-speed]': 'progressRef.speed() + \"ms\"',\r\n '[style.--_ng-progress-fade-out-speed]': 'progressRef.fadeOutSpeed() + \"ms\"'\r\n },\r\n hostDirectives: [{\r\n directive: NgProgressRef,\r\n inputs: ['min', 'max', 'speed', 'trickleSpeed', 'fadeOutSpeed', 'debounceTime'],\r\n outputs: ['started', 'completed']\r\n }],\r\n template: `\r\n <div class=\"ng-progress-bar-wrapper\">\r\n <div class=\"ng-bar-placeholder\">\r\n <div class=\"ng-bar\" [style.transform]=\"progressTransform()\">\r\n @if (!flat()) {\r\n <div class=\"ng-meteor\"></div>\r\n }\r\n </div>\r\n </div>\r\n @if (spinner()) {\r\n <div class=\"ng-spinner\">\r\n <div class=\"ng-spinner-icon\"></div>\r\n </div>\r\n }\r\n </div>\r\n `,\r\n styleUrl: './ng-progress.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class NgProgressbar {\r\n\r\n private readonly config: NgProgressOptions = inject(NG_PROGRESS_OPTIONS);\r\n\r\n /** Progress bar worker */\r\n progressRef: NgProgressRef = inject(NgProgressRef, { host: true, self: true });\r\n\r\n flat: InputSignalWithTransform<boolean, boolean | string> = input<boolean, boolean | string>(this.config.flat, { transform: booleanAttribute });\r\n spinner: InputSignalWithTransform<boolean, boolean | string> = input<boolean, boolean | string>(this.config.spinner, { transform: booleanAttribute });\r\n relative: InputSignalWithTransform<boolean, boolean | string> = input<boolean, boolean | string>(this.config.relative, { transform: booleanAttribute });\r\n spinnerPosition: InputSignal<'left' | 'right'> = input<'left' | 'right'>(this.config.spinnerPosition);\r\n direction: InputSignal<'ltr+' | 'ltr-' | 'rtl+' | 'rtl-'> = input<'ltr+' | 'ltr-' | 'rtl+' | 'rtl-'>(this.config.direction);\r\n\r\n progressTransform: Signal<string> = computed(() => {\r\n return `translate3d(${ this.progressRef.progress() }%,0,0)`;\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.model';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgProgressRef"],"mappings":"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"}