{"version":3,"file":"ng-busy-watch.mjs","sources":["../../../projects/ng-busy-watch/src/lib/ng-busy-watch.model.ts","../../../projects/ng-busy-watch/src/lib/ng-busy-watch.service.ts","../../../projects/ng-busy-watch/src/lib/busy-overlay/busy-overlay.component.ts","../../../projects/ng-busy-watch/src/lib/busy-overlay/busy-overlay.component.html","../../../projects/ng-busy-watch/src/lib/ng-busy-watch.utils.ts","../../../projects/ng-busy-watch/src/lib/ng-busy-watch.directive.ts","../../../projects/ng-busy-watch/src/lib/ng-busy-watch.module.ts","../../../projects/ng-busy-watch/src/public-api.ts","../../../projects/ng-busy-watch/src/ng-busy-watch.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\n\r\n/**\r\n * Default Busy global configuration\r\n */\r\nexport const DefaultGlobalConfig: IGlobalConfig = {\r\n  extraCssClass: undefined,\r\n  message: 'Please wait...',\r\n  showSpinner: true\r\n}\r\n\r\n/**\r\n * Global Busy configuration\r\n */\r\n export interface IGlobalConfig {\r\n  showSpinner: boolean;\r\n  message: string;\r\n  extraCssClass:  string | undefined;\r\n}\r\n\r\nexport interface IBusyConfigInput {\r\n  busy: Observable<any> | boolean,\r\n  showSpinner?: boolean;\r\n  message?: string;\r\n  extraCssClass?: string | undefined;\r\n}\r\n\r\nexport interface BusyWatchToken {\r\n  default: IGlobalConfig;\r\n  config: Partial<IGlobalConfig>;\r\n}\r\n\r\nexport const BUSY_CONFIG = new InjectionToken<BusyWatchToken>('BusyWatchConfig');\r\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { BusyWatchToken, BUSY_CONFIG, DefaultGlobalConfig, IGlobalConfig } from './ng-busy-watch.model';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NgBusyWatchService {\n\n  public busyConfig: IGlobalConfig;\n\n  constructor(@Optional() @Inject(BUSY_CONFIG) private busyConfigToken: BusyWatchToken) {\n    this.busyConfig = {\n      ...this.busyConfigToken?.default ?? DefaultGlobalConfig,\n      ...this.busyConfigToken?.config\n    }\n  }\n\n  resetBusyConfig() {\n    this.busyConfig = {\n      ...DefaultGlobalConfig,\n      ...this.busyConfigToken?.config\n    }\n  }\n}\n","import { Component, Inject, OnInit, Optional } from '@angular/core';\r\nimport { BUSY_CONFIG, BusyWatchToken } from '../ng-busy-watch.model';\r\nimport { NgBusyWatchService } from '../ng-busy-watch.service';\r\n\r\n@Component({\r\n  selector: 'app-busy-overlay',\r\n  templateUrl: 'busy-overlay.component.html',\r\n  styleUrls: ['./busy-overlay.component.scss']\r\n})\r\nexport class BusyOverlayComponent implements OnInit {\r\n\r\n  showSpinner: boolean = true;\r\n  loadingText: string = 'Please wait...';\r\n  extraCssClass?: string;\r\n\r\n  constructor(public bs: NgBusyWatchService, @Optional() @Inject(BUSY_CONFIG) private busyConfigToken: BusyWatchToken) {\r\n    this.showSpinner = busyConfigToken.config.showSpinner ?? busyConfigToken.default.showSpinner;\r\n    this.loadingText = busyConfigToken.config.message ?? busyConfigToken.default.message;\r\n    this.extraCssClass = busyConfigToken.config.extraCssClass ?? '';\r\n  }\r\n\r\n  ngOnInit() {\r\n  }\r\n}\r\n","<div [class]=\"'container loading-container ' + (extraCssClass)\">\r\n  <div class=\"w-100\">\r\n    <ng-container *ngIf=\"showSpinner\">\r\n      <div class=\"graphics\">\r\n        <div class=\"lds-load\">\r\n          <div></div>\r\n          <div></div>\r\n          <div></div>\r\n        </div>\r\n      </div>\r\n    </ng-container>\r\n\r\n    <div class=\"text\">\r\n      {{ loadingText }}\r\n    </div>\r\n  </div>\r\n</div>\r\n","export function isObject(input: any): boolean {\r\n  return typeof input === 'object' && input !== null;\r\n}\r\n","import {\n  ComponentFactoryResolver,\n  ComponentRef,\n  Directive,\n  EmbeddedViewRef,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  SimpleChanges,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport { Observable, isObservable, of, Subject, BehaviorSubject } from 'rxjs';\nimport { distinctUntilChanged, filter, map, take, takeUntil, tap } from 'rxjs/operators';\nimport { BusyOverlayComponent } from './busy-overlay/busy-overlay.component';\nimport { BusyWatchToken, BUSY_CONFIG, IBusyConfigInput, IGlobalConfig } from './ng-busy-watch.model';\nimport { NgBusyWatchService } from './ng-busy-watch.service';\nimport { isObject } from './ng-busy-watch.utils';\n\n@Directive({\n  selector: `[ngBusyWatch]`,\n})\nexport class NgBusyWatchDirective implements OnChanges, OnDestroy, OnInit {\n\n  @Input('ngBusyWatch')\n  busyIndicator?: Observable<any> | boolean | IBusyConfigInput;\n\n  view: EmbeddedViewRef<any>;\n  overlayComp?: ComponentRef<BusyOverlayComponent>;\n  customConfig?: IBusyConfigInput;\n\n  changes$?: Observable<any>;\n  compDest$: Subject<void> = new Subject<void>();\n\n  hostElement?: HTMLElement | null;\n  parentElement?: HTMLElement | null;\n\n  parentOriginalDisplayStyle: string | undefined;\n  hostOriginalRowStart?: string | number;\n  hostOriginalRowEnd?: string | number;\n  hostOriginalColumnStart?: string | number;\n  hostOriginalColumnEnd?: string | number;\n\n  constructor(private renderer: Renderer2, private templateRef: TemplateRef<any>, private vcr: ViewContainerRef,\n    private bs: NgBusyWatchService, private cfr: ComponentFactoryResolver) {\n    this.view = this.vcr.createEmbeddedView(this.templateRef);\n    this.hostElement = this.view?.rootNodes[0];\n    this.parentElement = this.hostElement?.parentElement;\n    this.parentOriginalDisplayStyle = this.getParentOriginalStyle(this.parentElement);\n    this.saveHostGridStyle(this.hostElement);\n  }\n\n  ngOnInit() {\n    this.bs.resetBusyConfig();\n    this.compDest$.next();\n\n    if (isObservable(this.busyIndicator)) {\n      this.changes$ = (this.busyIndicator as Observable<any>);\n    } else if (isObject(this.busyIndicator)) {\n      if (isObservable((this.busyIndicator as IBusyConfigInput).busy)) {\n        this.changes$ = ((this.busyIndicator as IBusyConfigInput).busy as Observable<any>);\n      } else {\n        const val = !!((this.busyIndicator as IBusyConfigInput).busy);\n        this.changes$ = new BehaviorSubject(val).asObservable();\n      }\n      this.customConfig = (this.busyIndicator as IBusyConfigInput);\n    } else {\n      const val = !!this.busyIndicator;\n      this.changes$ = new BehaviorSubject(val).asObservable();\n    }\n\n    this.main(this.changes$);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const currentVal: boolean | IBusyConfigInput = changes['busyIndicator'].currentValue;\n    let booleanValue: boolean = false;\n    let type: boolean | IBusyConfigInput | Observable<any>;\n\n    if (isObject(currentVal)) {\n      type = (currentVal as IBusyConfigInput).busy;\n      booleanValue = !!((currentVal as IBusyConfigInput).busy);\n      this.customConfig = (currentVal as IBusyConfigInput);\n    } else {\n      type = currentVal;\n      booleanValue = !!currentVal;\n    }\n\n    if (!isObservable(type)) {\n      if (booleanValue) {\n        this.addOverlay();\n      } else {\n        this.removeOverlay();\n      }\n    }\n  }\n\n  main(changes: Observable<any> | undefined) {\n    changes?.pipe(\n      takeUntil(this.compDest$),\n      map((val) => {\n        return !!val;\n      }),\n      distinctUntilChanged(),\n    ).subscribe(\n      {\n        next: (result) => {\n          this.onValueChange(result)\n        },\n        error: (err) => {\n          this.removeOverlay()\n        },\n        complete: () => {\n          this.removeOverlay()\n        }\n      }\n    );\n  }\n\n  onValueChange(incoming: boolean | any) {\n    if (incoming) {\n      this.addOverlay();\n    } else {\n      this.removeOverlay();\n    }\n  }\n\n  addOverlay() {\n    if (this.hostElement) {\n      this.setGridAreaOneOne(this.hostElement);\n    }\n    if (this.parentElement) {\n      this.renderer.setStyle(this.parentElement, 'display', 'grid');\n    }\n    const compFactory = this.cfr.resolveComponentFactory(\n      BusyOverlayComponent\n    );\n    this.overlayComp = this.vcr.createComponent(compFactory);\n    if (this.customConfig) {\n      this.overlayComp.instance.showSpinner = this.customConfig.showSpinner ??  this.bs.busyConfig.showSpinner;\n      this.overlayComp.instance.loadingText = this.customConfig.message ?? this.bs.busyConfig.message;\n      this.overlayComp.instance.extraCssClass = this.customConfig.extraCssClass ??\n        (this.bs.busyConfig.extraCssClass ?? '');\n    }\n\n    if (this.overlayComp?.location?.nativeElement) {\n      this.addStyleToOverlay(this.overlayComp.location.nativeElement);\n    }\n  }\n\n  removeOverlay() {\n    if (this.hostElement) {\n      this.resetHostGridStyle(this.hostElement);\n    }\n    if (this.parentElement) {\n      this.renderer.setStyle(this.parentElement, 'display',\n        this.getInitDisplayStyleIfNullish(this.parentOriginalDisplayStyle)\n      );\n    }\n    this.overlayComp?.destroy();\n  }\n\n  getInitDisplayStyleIfNullish(style: string | undefined): string {\n    return style ? style : 'initial';\n  }\n\n  getParentOriginalStyle(ele?: HTMLElement | null): string | undefined {\n    return ele?.style?.display;\n  }\n\n  saveHostGridStyle(hostEle?: HTMLElement | null): void {\n    if (hostEle) {\n      this.hostOriginalColumnEnd = hostEle.style?.gridColumnEnd;\n      this.hostOriginalColumnStart = hostEle.style?.gridColumnStart;\n      this.hostOriginalRowEnd = hostEle.style?.gridRowEnd;\n      this.hostOriginalRowStart = hostEle.style?.gridRowStart;\n    }\n  }\n\n  addStyleToOverlay(ele: any): void {\n    this.renderer.setStyle(ele, 'background-color', '#eeeeeedb');\n    this.renderer.setStyle(ele, 'z-index', 10);\n    this.setGridAreaOneOne(ele);\n  }\n\n  setGridAreaOneOne(ele: any): void {\n    if (ele) {\n      this.renderer.setStyle(ele, 'grid-row-start', 1);\n      this.renderer.setStyle(ele, 'grid-column-start', 1);\n      this.renderer.setStyle(ele, 'grid-row-end', 'auto');\n      this.renderer.setStyle(ele, 'grid-column-end', 'auto');\n    }\n  }\n\n  resetHostGridStyle(hostEle: HTMLElement): void {\n    this.removeHostGridStyle(hostEle);\n    if (this.hostOriginalRowStart !== '') {\n      this.renderer.setStyle(hostEle, 'grid-row-start', this.hostOriginalRowStart);\n    }\n    if (this.hostOriginalRowEnd !== '') {\n      this.renderer.setStyle(hostEle, 'grid-row-end', this.hostOriginalRowEnd);\n    }\n    if (this.hostOriginalColumnStart !== '') {\n      this.renderer.setStyle(hostEle, 'grid-column-start', this.hostOriginalColumnStart);\n    }\n    if (this.hostOriginalColumnEnd !== '') {\n      this.renderer.setStyle(hostEle, 'grid-column-end', this.hostOriginalColumnEnd);\n    }\n  }\n\n  removeHostGridStyle(ele: any): void {\n    this.renderer.removeStyle(ele, 'grid-row-start');\n    this.renderer.removeStyle(ele, 'grid-column-start');\n    this.renderer.removeStyle(ele, 'grid-column-end');\n    this.renderer.removeStyle(ele, 'grid-row-end');\n  }\n\n  ngOnDestroy() {\n    this.compDest$.next();\n    this.compDest$.complete();\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { BusyOverlayComponent } from './busy-overlay/busy-overlay.component';\nimport { NgBusyWatchDirective } from './ng-busy-watch.directive';\nimport { BUSY_CONFIG, DefaultGlobalConfig, IGlobalConfig } from './ng-busy-watch.model';\nimport { NgBusyWatchService } from './ng-busy-watch.service';\n\nexport const BusyDefaultGlobalConfig: IGlobalConfig = {\n  ...DefaultGlobalConfig\n};\n\n@NgModule({\n  declarations: [\n    NgBusyWatchDirective,\n    BusyOverlayComponent\n  ],\n  imports: [\n    CommonModule\n  ],\n  exports: [\n    NgBusyWatchDirective\n  ],\n})\nexport class NgBusyWatchModule {\n  static forRoot(config: Partial<IGlobalConfig> = {}): ModuleWithProviders<NgBusyWatchModule> {\n    return {\n      ngModule: NgBusyWatchModule,\n      providers: [\n        {\n          provide: BUSY_CONFIG,\n          useValue: {\n            default: DefaultGlobalConfig,\n            config,\n          },\n        },\n      ],\n    };\n  }\n}\n","/*\n * Public API Surface of ng-busy-watch\n */\n\nexport * from './lib/ng-busy-watch.service';\nexport * from './lib/ng-busy-watch.directive';\nexport * from './lib/ng-busy-watch.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}