ng-busy-19
Version:
Show busy/loading indicators on any promise or subscription
1 lines • 30.8 kB
Source Map (JSON)
{"version":3,"file":"ng-busy-19.mjs","sources":["../../../projects/ng-busy/src/lib/service/instance-config-holder.service.ts","../../../projects/ng-busy/src/lib/model/busy-config.ts","../../../projects/ng-busy/src/lib/util/isPromise.ts","../../../projects/ng-busy/src/lib/service/busy-tracker.service.ts","../../../projects/ng-busy/src/lib/service/busy-config-holder.service.ts","../../../projects/ng-busy/src/lib/component/ng-busy/ng-busy.component.ts","../../../projects/ng-busy/src/lib/component/ng-busy/ng-busy.component.html","../../../projects/ng-busy/src/lib/ng-busy.directive.ts","../../../projects/ng-busy/src/lib/ng-busy.module.ts","../../../projects/ng-busy/src/public_api.ts","../../../projects/ng-busy/src/ng-busy-19.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport {IBusyConfig} from '../model/busy-config';\n\n@Injectable({\n providedIn: 'any'\n})\nexport class InstanceConfigHolderService {\n public config: IBusyConfig;\n constructor() { }\n}\n","import {Subscription} from 'rxjs';\nimport {Component, TemplateRef, Type, Inject, ChangeDetectorRef} from '@angular/core';\nimport {InstanceConfigHolderService} from '../service/instance-config-holder.service';\n\nexport class BusyConfig implements IBusyConfig {\n template: TemplateRef<any> | Type<any>;\n templateNgStyle: {};\n delay: number;\n minDuration: number;\n backdrop: boolean;\n message: string;\n wrapperClass: string;\n disableAnimation: boolean;\n\n constructor(config: IBusyConfig = {}) {\n for (const option of Object.keys(BUSY_CONFIG_DEFAULTS)) {\n this[option] = config[option] !== undefined ? config[option] : BUSY_CONFIG_DEFAULTS[option];\n }\n }\n}\n\n@Component({\n selector: 'default-busy',\n template: `\n <div class=\"ng-busy-default-wrapper\">\n <div class=\"ng-busy-default-sign\">\n <div class=\"ng-busy-default-spinner\">\n <div class=\"bar1\"></div>\n <div class=\"bar2\"></div>\n <div class=\"bar3\"></div>\n <div class=\"bar4\"></div>\n <div class=\"bar5\"></div>\n <div class=\"bar6\"></div>\n <div class=\"bar7\"></div>\n <div class=\"bar8\"></div>\n <div class=\"bar9\"></div>\n <div class=\"bar10\"></div>\n <div class=\"bar11\"></div>\n <div class=\"bar12\"></div>\n </div>\n <div class=\"ng-busy-default-text\">{{message}}</div>\n </div>\n </div>\n `,\n standalone: false\n})\nexport class DefaultBusyComponent {\n\n constructor(@Inject('instanceConfigHolder') private instanceConfigHolder: InstanceConfigHolderService) {\n }\n\n get message() {\n return this.instanceConfigHolder.config.message;\n }\n}\n\nexport interface IBusyConfig {\n template?: TemplateRef<any> | Type<any>;\n templateNgStyle?: {};\n delay?: number;\n minDuration?: number;\n backdrop?: boolean;\n message?: string;\n wrapperClass?: string;\n busy?: Array<Promise<any> | Subscription>;\n disableAnimation?: boolean;\n}\n\nexport const BUSY_CONFIG_DEFAULTS = {\n template: DefaultBusyComponent,\n templateNgStyle: {},\n delay: 0,\n minDuration: 0,\n backdrop: true,\n message: 'Please wait...',\n wrapperClass: 'ng-busy',\n disableAnimation: false\n};\n","export function isPromise(value: any): value is PromiseLike<any> {\n return value && typeof (<any>value).subscribe !== 'function' && typeof (value as any).then === 'function';\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport {\n BehaviorSubject, Observable, Subject, tap,\n Subscription, concatAll, from, takeUntil,\n timer, map, take, filter, combineLatest\n} from 'rxjs';\nimport { isPromise } from '../util/isPromise';\n\nexport interface TrackerOptions {\n minDuration: number;\n delay: number;\n busyList: Array<Promise<any> | Subscription>;\n}\n\n@Injectable({\n providedIn: 'any'\n})\nexport class BusyTrackerService implements OnDestroy {\n\n private busyQueue: Array<Subscription> = [];\n private operations: Subject<Observable<any>> = new Subject<Observable<any>>();\n private busyDone: Subject<any> = new Subject<any>();\n private destroyIndicator: Subject<any> = new Subject<any>();\n private checkSubject: Subject<TrackerOptions> = new Subject<TrackerOptions>();\n private processingIndicator: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n active: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n get isActive(): boolean {\n return this.active.value;\n }\n\n get busyList() {\n return [...this.busyQueue];\n }\n\n get isBusy() {\n return this.busyQueue.filter(b => !b.closed).length > 0;\n }\n\n constructor() {\n this.reset();\n this.operations.pipe(takeUntil(this.destroyIndicator), concatAll()).subscribe();\n this.checkSubject.pipe(takeUntil(this.destroyIndicator)).subscribe((options) => {\n this.processingIndicator.pipe(take(1)).subscribe((isProcessing) => {\n if (isProcessing === false && this.isBusy) {\n this.processingIndicator.next(true);\n timer(options.delay || 0).pipe(map(() => this.isBusy)).subscribe((stillBusy) => {\n if (stillBusy) {\n this.active.next(stillBusy);\n combineLatest([this.busyDone, timer(options.minDuration || 0)])\n .pipe(takeUntil(this.active.pipe(filter(a => a === false))))\n .subscribe(() => {\n this.operations.next(new Observable((subscriber) => {\n if (!this.isBusy) {\n this.reset();\n }\n subscriber.complete();\n }));\n });\n } else {\n this.processingIndicator.next(false);\n }\n });\n }\n });\n });\n }\n\n load(options: TrackerOptions) {\n this.operations.next(\n from(options.busyList).pipe(\n filter(busy => busy !== null && busy !== undefined && !busy.hasOwnProperty('__loaded_mark_by_ng_busy')),\n tap((busy) => Object.defineProperty(busy, '__loaded_mark_by_ng_busy', {\n value: true, configurable: false, enumerable: false, writable: false\n })),\n map((busy) => isPromise(busy) ? from(busy).subscribe() : busy),\n tap(subscription => this.appendToQueue(subscription))\n )\n );\n this.checkSubject.next(options);\n }\n\n private updateActiveStatus() {\n this.busyQueue = this.busyQueue.filter((cur: Subscription) => cur && !cur.closed);\n if (this.busyQueue.length === 0) {\n this.busyDone.next(true);\n }\n }\n\n private reset() {\n this.active.next(false);\n this.busyQueue = [];\n this.processingIndicator.next(false);\n }\n\n private appendToQueue(busy: Subscription) {\n this.busyQueue.push(busy);\n busy.add(() => {\n this.operations.next(new Observable((subscriber) => {\n this.updateActiveStatus();\n subscriber.complete();\n }));\n });\n }\n\n ngOnDestroy(): void {\n this.destroyIndicator.next(null);\n }\n}\n","import {Injectable, Optional} from '@angular/core';\nimport {BUSY_CONFIG_DEFAULTS, BusyConfig} from '../model/busy-config';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BusyConfigHolderService {\n config: BusyConfig;\n\n constructor(@Optional() config: BusyConfig) {\n this.config = Object.assign({}, BUSY_CONFIG_DEFAULTS, config || new BusyConfig());\n }\n}\n","import { ChangeDetectorRef, Component, EventEmitter, Inject, OnDestroy, ViewContainerRef } from '@angular/core';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { InstanceConfigHolderService } from '../../service/instance-config-holder.service';\nimport { Subject, takeUntil } from 'rxjs';\n\nconst inactiveStyle = style({\n opacity: 0,\n transform: 'translateY(-40px)'\n});\nconst timing = '.3s ease';\n\n@Component({\n selector: 'lib-ng-busy',\n templateUrl: './ng-busy.component.html',\n styleUrls: ['./ng-busy.component.css'],\n animations: [\n trigger('flyInOut', [\n transition('void => *', [\n inactiveStyle,\n animate(timing)\n ]),\n transition('* => void', [\n animate(timing, inactiveStyle)\n ])\n ])\n ],\n standalone: false\n})\nexport class NgBusyComponent implements OnDestroy {\n\n public wrapperClass: string;\n public disableAnimation = false;\n public showBackdrop = true;\n private destroyIndicator = new Subject<any>();\n public show = new Subject<boolean>();\n\n constructor(\n @Inject('instanceConfigHolder') private instanceConfigHolder: InstanceConfigHolderService,\n @Inject('busyEmitter') public busyEmitter: EventEmitter<boolean>,\n public vcr: ViewContainerRef,\n private cdr: ChangeDetectorRef,\n ) {\n this.show.pipe(takeUntil(this.destroyIndicator)).subscribe(() => {\n this.cdr.detectChanges();\n });\n this.busyEmitter.pipe(takeUntil(this.destroyIndicator))\n .subscribe((isActive: boolean) => {\n if (isActive === true) {\n const config = this.instanceConfigHolder.config;\n this.wrapperClass = config.wrapperClass;\n this.showBackdrop = config.backdrop;\n this.disableAnimation = config.disableAnimation;\n }\n this.show.next(isActive);\n });\n }\n\n ngOnDestroy(): void {\n this.destroyIndicator.next(null);\n }\n\n}\n","<ng-container *ngIf=\"show | async\">\n <div [class]=\"wrapperClass\" @flyInOut [@.disabled]=\"disableAnimation\">\n <ng-content></ng-content>\n </div>\n <div class=\"ng-busy-backdrop\" @flyInOut [@.disabled]=\"disableAnimation\" *ngIf=\"showBackdrop\">\n </div>\n</ng-container>\n","import {\n ChangeDetectorRef,\n ComponentRef,\n Directive, DoCheck,\n EventEmitter, Injector,\n Input, OnDestroy,\n Output,\n Renderer2,\n TemplateRef, Type,\n ViewContainerRef\n} from '@angular/core';\nimport { BusyTrackerService } from './service/busy-tracker.service';\nimport { BusyConfigHolderService } from './service/busy-config-holder.service';\nimport { Subject, Subscription, distinctUntilChanged, skip, takeUntil } from 'rxjs';\nimport { IBusyConfig } from './model/busy-config';\nimport { NgBusyComponent } from './component/ng-busy/ng-busy.component';\nimport { InstanceConfigHolderService } from './service/instance-config-holder.service';\nimport { isPromise } from './util/isPromise';\n\n@Directive({\n selector: '[ngBusy]',\n providers: [BusyTrackerService, InstanceConfigHolderService],\n exportAs: 'ngBusy',\n standalone: false\n})\nexport class NgBusyDirective implements DoCheck, OnDestroy {\n @Input('ngBusy')\n set options(op) {\n this._option = op;\n }\n\n get options() {\n return this._option;\n }\n\n get trackerService() {\n return this.tracker;\n }\n\n @Output() busyStart = new EventEmitter();\n @Output() busyStop = new EventEmitter();\n private _option: any;\n private optionsNorm: IBusyConfig;\n private busyRef: ComponentRef<NgBusyComponent>;\n private destroyIndicator: Subject<any> = new Subject<any>();\n private configLoader: Subject<IBusyConfig> = new Subject<IBusyConfig>();\n private busyEmitter: EventEmitter<boolean> = new EventEmitter<boolean>();\n public template: TemplateRef<any> | Type<any>;\n public templateNgStyle: {};\n\n constructor(private configHolder: BusyConfigHolderService,\n private instanceConfigHolder: InstanceConfigHolderService,\n private tracker: BusyTrackerService,\n private cdr: ChangeDetectorRef,\n private vcr: ViewContainerRef,\n private renderer: Renderer2,\n private injector: Injector) {\n tracker.active.pipe(skip(1), takeUntil(this.destroyIndicator), distinctUntilChanged()).subscribe((status) => {\n if (status === true) {\n this.recreateBusyIfNecessary();\n this.busyStart.emit();\n } else {\n this.busyStop.emit();\n }\n this.busyEmitter.next(status);\n });\n this.configLoader.pipe(takeUntil(this.destroyIndicator)).subscribe((config) => {\n const busyList = config.busy.filter(b => b?.['closed'] !== true && !b?.hasOwnProperty?.('__loaded_mark_by_ng_busy'));\n this.optionsNorm = config;\n this.instanceConfigHolder.config = this.optionsNorm;\n if (busyList.length > 0) {\n this.tracker.load({\n busyList, delay: this.optionsNorm.delay,\n minDuration: this.optionsNorm.minDuration\n });\n }\n });\n }\n\n ngDoCheck() {\n this.configLoader.next(this.normalizeOptions(this.options));\n }\n\n ngOnDestroy() {\n this.destroyIndicator.next(null);\n }\n\n private recreateBusyIfNecessary() {\n this.destroyComponents();\n this.template = this.optionsNorm.template;\n this.templateNgStyle = this.optionsNorm.templateNgStyle;\n this.createBusy();\n }\n\n private normalizeOptions(options: any): IBusyConfig {\n if (!options) {\n options = { busy: [] };\n } else if (Array.isArray(options)) {\n options = { busy: options };\n } else if (isPromise(options) || options instanceof Subscription) {\n options = { busy: [options] }\n }\n options = Object.assign({}, this.configHolder.config, options);\n if (!Array.isArray(options.busy)) {\n options.busy = [options.busy];\n }\n return options;\n }\n\n private destroyComponents() {\n if (this.busyRef) {\n this.busyRef.destroy();\n }\n }\n\n private createBusy() {\n const injector = Injector.create({\n providers: [\n {\n provide: 'instanceConfigHolder',\n useValue: this.instanceConfigHolder\n },\n {\n provide: 'busyEmitter',\n useValue: this.busyEmitter\n }\n ], parent: this.injector\n });\n this.template = this.optionsNorm.template;\n this.busyRef = this.vcr.createComponent(NgBusyComponent, { injector, projectableNodes: this.generateNgContent(injector) });\n this.busyRef.onDestroy(() => {\n this.busyRef.instance.ngOnDestroy();\n });\n this.cdr.markForCheck();\n this.busyRef.hostView.detectChanges();\n }\n\n private generateNgContent(injector: Injector) {\n if (typeof this.template === 'string') {\n const element = this.renderer.createText(this.template);\n return [[element]];\n }\n if (this.template instanceof TemplateRef) {\n const context = {};\n const viewRef = this.template.createEmbeddedView(context);\n return [viewRef.rootNodes];\n }\n if (typeof this.template === 'function') {\n const factory = this.vcr.createComponent(this.template, { injector });\n factory.onDestroy(() => {\n factory?.instance?.ngOnDestroy?.();\n });\n factory.changeDetectorRef.markForCheck();\n return [[factory.location.nativeElement]];\n }\n return [[]];\n }\n\n}","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport {BusyConfig, DefaultBusyComponent, IBusyConfig} from './model/busy-config';\nimport {CommonModule} from '@angular/common';\nimport {BusyTrackerService} from './service/busy-tracker.service';\nimport {BusyConfigHolderService} from './service/busy-config-holder.service';\nimport {NgBusyDirective} from './ng-busy.directive';\nimport {NgBusyComponent} from './component/ng-busy/ng-busy.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [DefaultBusyComponent, NgBusyDirective, NgBusyComponent],\n providers: [BusyConfigHolderService, BusyTrackerService],\n exports: [NgBusyDirective]\n})\nexport class NgBusyModule {\n static forRoot(config: IBusyConfig): ModuleWithProviders<NgBusyModule> {\n return {\n ngModule: NgBusyModule,\n providers: [\n {provide: BusyConfig, useValue: config}\n ]\n };\n }\n}\n","/*\n * Public API Surface of ng-busy\n */\n\nexport * from \"./lib/ng-busy.module\";\nexport * from \"./lib/util/isPromise\";\nexport * from \"./lib/model/busy-config\";\nexport { NgBusyDirective } from \"./lib/ng-busy.directive\";\nexport { NgBusyComponent } from \"./lib/component/ng-busy/ng-busy.component\";\nexport { InstanceConfigHolderService } from \"./lib/service/instance-config-holder.service\";\nexport { BusyTrackerService } from \"./lib/service/busy-tracker.service\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.BusyConfig","i1.BusyConfigHolderService","i2.InstanceConfigHolderService","i3.BusyTrackerService"],"mappings":"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"}