{"version":3,"file":"ngx-spinner.mjs","sources":["../../../projects/ngx-spinner/src/lib/ngx-spinner.enum.ts","../../../projects/ngx-spinner/src/lib/ngx-spinner.service.ts","../../../projects/ngx-spinner/src/lib/safe-html.pipe.ts","../../../projects/ngx-spinner/src/lib/ngx-spinner.component.ts","../../../projects/ngx-spinner/src/lib/ngx-spinner.component.html","../../../projects/ngx-spinner/src/lib/ngx-spinner.module.ts","../../../projects/ngx-spinner/src/public_api.ts","../../../projects/ngx-spinner/src/ngx-spinner.ts"],"sourcesContent":["export const LOADERS = {\n  'ball-8bits': 16,\n  'ball-atom': 4,\n  'ball-beat': 3,\n  'ball-circus': 5,\n  'ball-climbing-dot': 4,\n  'ball-clip-rotate': 1,\n  'ball-clip-rotate-multiple': 2,\n  'ball-clip-rotate-pulse': 2,\n  'ball-elastic-dots': 5,\n  'ball-fall': 3,\n  'ball-fussion': 4,\n  'ball-grid-beat': 9,\n  'ball-grid-pulse': 9,\n  'ball-newton-cradle': 4,\n  'ball-pulse': 3,\n  'ball-pulse-rise': 5,\n  'ball-pulse-sync': 3,\n  'ball-rotate': 1,\n  'ball-running-dots': 5,\n  'ball-scale': 1,\n  'ball-scale-multiple': 3,\n  'ball-scale-pulse': 2,\n  'ball-scale-ripple': 1,\n  'ball-scale-ripple-multiple': 3,\n  'ball-spin': 8,\n  'ball-spin-clockwise': 8,\n  'ball-spin-clockwise-fade': 8,\n  'ball-spin-clockwise-fade-rotating': 8,\n  'ball-spin-fade': 8,\n  'ball-spin-fade-rotating': 8,\n  'ball-spin-rotate': 2,\n  'ball-square-clockwise-spin': 8,\n  'ball-square-spin': 8,\n  'ball-triangle-path': 3,\n  'ball-zig-zag': 2,\n  'ball-zig-zag-deflect': 2,\n  'cog': 1,\n  'cube-transition': 2,\n  'fire': 3,\n  'line-scale': 5,\n  'line-scale-party': 5,\n  'line-scale-pulse-out': 5,\n  'line-scale-pulse-out-rapid': 5,\n  'line-spin-clockwise-fade': 8,\n  'line-spin-clockwise-fade-rotating': 8,\n  'line-spin-fade': 8,\n  'line-spin-fade-rotating': 8,\n  'pacman': 6,\n  'square-jelly-box': 2,\n  'square-loader': 1,\n  'square-spin': 1,\n  'timer': 1,\n  'triangle-skew-spin': 1\n};\n\nexport const DEFAULTS = {\n  BD_COLOR: 'rgba(51,51,51,0.8)',\n  SPINNER_COLOR: '#fff',\n  SPINNER_TYPE: 'ball-scale-multiple',\n  Z_INDEX: 99999,\n};\n\nexport const PRIMARY_SPINNER = 'primary';\n\nexport type Size = 'default' | 'small' | 'medium' | 'large';\n\nexport interface Spinner {\n  bdColor?: string;\n  size?: Size;\n  color?: string;\n  type?: string;\n  fullScreen?: boolean;\n  zIndex?: number;\n  template?: string;\n  showSpinner?: boolean;\n}\n\nexport class NgxSpinner {\n  name: string;\n  bdColor: string;\n  size: Size;\n  color: string;\n  type: string;\n  class: string;\n  divCount: number;\n  divArray: Array<number>;\n  fullScreen: boolean;\n  show: boolean;\n  zIndex: number;\n  template: string;\n  showSpinner: boolean;\n\n  constructor(init?: Partial<NgxSpinner>) {\n    Object.assign(this, init);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, BehaviorSubject } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { NgxSpinner, PRIMARY_SPINNER, Spinner } from './ngx-spinner.enum';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NgxSpinnerService {\n  /**\n   * Spinner observable\n   *\n   * @memberof NgxSpinnerService\n   */\n  // private spinnerObservable = new ReplaySubject<NgxSpinner>(1);\n  public spinnerObservable = new BehaviorSubject<NgxSpinner>(null);\n  /**\n   * Creates an instance of NgxSpinnerService.\n   * @memberof NgxSpinnerService\n   */\n  constructor() { }\n  /**\n  * Get subscription of desired spinner\n  * @memberof NgxSpinnerService\n  **/\n  getSpinner(name: string): Observable<NgxSpinner> {\n    return this.spinnerObservable.asObservable().pipe(filter((x: NgxSpinner) => x && x.name === name));\n  }\n  /**\n   * To show spinner\n   *\n   * @memberof NgxSpinnerService\n   */\n  show(name: string = PRIMARY_SPINNER, spinner?: Spinner) {\n    return new Promise((resolve, _reject) => {\n      setTimeout(() => {\n        if (spinner && Object.keys(spinner).length) {\n          spinner['name'] = name;\n          this.spinnerObservable.next(new NgxSpinner({ ...spinner, show: true }));\n          resolve(true);\n        } else {\n          this.spinnerObservable.next(new NgxSpinner({ name, show: true }));\n          resolve(true);\n        }\n      }, 10);\n    });\n\n  }\n  /**\n  * To hide spinner\n  *\n  * @memberof NgxSpinnerService\n  */\n  hide(name: string = PRIMARY_SPINNER, debounce: number = 10) {\n    return new Promise((resolve, _reject) => {\n      setTimeout(() => {\n        this.spinnerObservable.next(new NgxSpinner({ name, show: false }));\n        resolve(true);\n      }, debounce);\n    });\n  }\n}\n","import { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'safeHtml'\n})\nexport class SafeHtmlPipe implements PipeTransform {\n\n  constructor(private _sanitizer: DomSanitizer) {\n  }\n\n  transform(v: string): SafeHtml {\n    if (v) {\n      return this._sanitizer.bypassSecurityTrustHtml(v);\n    }\n  }\n}\n","import {\n  Component,\n  OnDestroy,\n  Input,\n  OnInit,\n  OnChanges,\n  SimpleChange,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  HostListener,\n  ViewChild,\n  ElementRef\n} from '@angular/core';\nimport { NgxSpinnerService } from './ngx-spinner.service';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { LOADERS, DEFAULTS, Size, NgxSpinner, PRIMARY_SPINNER } from './ngx-spinner.enum';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\n\n@Component({\n  selector: 'ngx-spinner',\n  templateUrl: 'ngx-spinner.component.html',\n  styleUrls: ['ngx-spinner.component.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('fadeIn', [\n      state('in', style({ opacity: 1 })),\n      transition(':enter', [\n        style({ opacity: 0 }),\n        animate(300)\n      ]),\n      transition(':leave',\n        animate(200, style({ opacity: 0 })))\n    ])\n  ]\n})\nexport class NgxSpinnerComponent implements OnDestroy, OnInit, OnChanges {\n\n  /**\n   * To set backdrop color\n   * Only supports RGBA color format\n   * @memberof NgxSpinnerComponent\n   */\n  @Input() bdColor: string;\n  /**\n   * To set spinner size\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  @Input() size: Size;\n  /**\n   * To set spinner color(DEFAULTS.SPINNER_COLOR)\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  @Input() color: string;\n  /**\n   * To set type of spinner\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  @Input() type: string;\n  /**\n   * To toggle fullscreen mode\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  @Input() fullScreen: boolean;\n  /**\n   * Spinner name\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  @Input() name: string;\n  /**\n   * z-index value\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  @Input() zIndex: number;\n  /**\n   * Custom template for spinner/loader\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  @Input() template: string;\n  /**\n   * Show/Hide the spinner\n   *\n   * @type {boolean}\n   * @memberof NgxSpinnerComponent\n   */\n  @Input() showSpinner: boolean;\n\n  /**\n   * To enable/disable animation\n   *\n   * @type {boolean}\n   * @memberof NgxSpinnerComponent\n   */\n  @Input() disableAnimation: boolean = false;\n  /**\n   * Spinner Object\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  spinner: NgxSpinner = new NgxSpinner();\n  /**\n   * Array for spinner's div\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  divArray: Array<number>;\n  /**\n   * Counter for div\n   *\n   * @memberof NgxSpinnerComponent\n   *\n   */\n  divCount: number;\n  /**\n   * Show spinner\n   *\n   * @memberof NgxSpinnerComponent\n  **/\n  show: boolean;\n  /**\n   * Unsubscribe from spinner's observable\n   *\n   * @memberof NgxSpinnerComponent\n  **/\n  ngUnsubscribe: Subject<void> = new Subject();\n  /**\n   * Element Reference\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  @ViewChild('overlay') spinnerDOM;\n\n  @HostListener('document:keydown', ['$event'])\n  handleKeyboardEvent(event: KeyboardEvent) {\n    if (this.spinnerDOM && this.spinnerDOM.nativeElement) {\n      if (this.fullScreen || (!this.fullScreen && this.isSpinnerZone(event.target))) {\n        event.returnValue = false;\n        event.preventDefault();\n      }\n    }\n  }\n\n  /**\n   * Creates an instance of NgxSpinnerComponent.\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  constructor(private spinnerService: NgxSpinnerService, private changeDetector: ChangeDetectorRef, private elementRef: ElementRef) {\n    this.bdColor = DEFAULTS.BD_COLOR;\n    this.zIndex = DEFAULTS.Z_INDEX;\n    this.color = DEFAULTS.SPINNER_COLOR;\n    this.type = DEFAULTS.SPINNER_TYPE;\n    this.size = 'large';\n    this.fullScreen = true;\n    this.name = PRIMARY_SPINNER;\n    this.template = null;\n    this.showSpinner = false;\n\n    this.divArray = [];\n    this.divCount = 0;\n    this.show = false;\n  }\n  /**\n   * Initialization method\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  ngOnInit() {\n    this.setDefaultOptions();\n    this.spinnerService.getSpinner(this.name)\n      .pipe(\n        takeUntil(this.ngUnsubscribe)\n      )\n      .subscribe((spinner: NgxSpinner) => {\n        this.setDefaultOptions();\n        Object.assign(this.spinner, spinner);\n        if (spinner.show) {\n          this.onInputChange();\n        }\n        this.changeDetector.detectChanges();\n      });\n  }\n\n  /**\n   * To check event triggers inside the Spinner Zone\n   *\n   * @param {*} element\n   * @returns {boolean}\n   * @memberof NgxSpinnerComponent\n   */\n  isSpinnerZone(element: any): boolean {\n    if (element === this.elementRef.nativeElement.parentElement) {\n      return true;\n    }\n    return element.parentNode && this.isSpinnerZone(element.parentNode);\n  }\n\n  /**\n   * To set default ngx-spinner options\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  setDefaultOptions = () => {\n    this.spinner = new NgxSpinner({\n      name: this.name,\n      bdColor: this.bdColor,\n      size: this.size,\n      color: this.color,\n      type: this.type,\n      fullScreen: this.fullScreen,\n      divArray: this.divArray,\n      divCount: this.divCount,\n      show: this.show,\n      zIndex: this.zIndex,\n      template: this.template,\n      showSpinner: this.showSpinner\n    });\n  }\n  /**\n   * On changes event for input variables\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  ngOnChanges(changes: { [propKey: string]: SimpleChange }) {\n    for (const propName in changes) {\n      if (propName) {\n        const changedProp = changes[propName];\n        if (changedProp.isFirstChange()) {\n          return;\n        } else if (typeof changedProp.currentValue !== 'undefined' && changedProp.currentValue !== changedProp.previousValue) {\n          if (changedProp.currentValue !== '') {\n            this.spinner[propName] = changedProp.currentValue;\n            if (propName === 'showSpinner') {\n              if (changedProp.currentValue) {\n                this.spinnerService.show(this.spinner.name, this.spinner);\n              } else {\n                this.spinnerService.hide(this.spinner.name);\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n  /**\n   * To get class for spinner\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  getClass(type: string, size: Size): string {\n    this.spinner.divCount = LOADERS[type];\n    this.spinner.divArray = Array(this.spinner.divCount).fill(0).map((x, i) => i);\n    let sizeClass = '';\n    switch (size.toLowerCase()) {\n      case 'small':\n        sizeClass = 'la-sm';\n        break;\n      case 'medium':\n        sizeClass = 'la-2x';\n        break;\n      case 'large':\n        sizeClass = 'la-3x';\n        break;\n      default:\n        break;\n    }\n    return 'la-' + type + ' ' + sizeClass;\n  }\n  /**\n   * Check if input variables have changed\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  onInputChange() {\n    this.spinner.class = this.getClass(this.spinner.type, this.spinner.size);\n  }\n  /**\n   * Component destroy event\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  ngOnDestroy() {\n    this.ngUnsubscribe.next();\n    this.ngUnsubscribe.complete();\n  }\n}\n","<div [@.disabled]=\"disableAnimation\" [@fadeIn]=\"'in'\" *ngIf=\"spinner.show\" class=\"ngx-spinner-overlay\"\n  [style.background-color]=\"spinner.bdColor\" [style.z-index]=\"spinner.zIndex\"\n  [style.position]=\"spinner.fullScreen ? 'fixed' : 'absolute'\" #overlay>\n  <div *ngIf=\"!template\" [class]=\"spinner.class\" [style.color]=\"spinner.color\">\n    <div *ngFor=\"let index of spinner.divArray\"></div>\n  </div>\n  <div *ngIf=\"template\" [innerHTML]=\"template | safeHtml\"></div>\n  <div class=\"loading-text\" [style.z-index]=\"spinner.zIndex\">\n    <ng-content></ng-content>\n  </div>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgxSpinnerComponent } from './ngx-spinner.component';\nimport { SafeHtmlPipe } from './safe-html.pipe';\n\n@NgModule({\n  imports: [\n    CommonModule\n  ],\n  declarations: [NgxSpinnerComponent, SafeHtmlPipe],\n  exports: [NgxSpinnerComponent]\n})\nexport class NgxSpinnerModule { }\n","/*\n * Public API Surface of ngx-spinner\n */\nexport * from './lib/ngx-spinner.service';\nexport * from './lib/ngx-spinner.component';\nexport * from './lib/ngx-spinner.module';\nexport * from './lib/ngx-spinner.enum';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}