{"version":3,"file":"ng-busy.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.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})\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})\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})\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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"}