{"version":3,"file":"lerkel-ngx-ui-loader.mjs","sources":["../../../projects/ngx-ui-loader/src/lib/utils/enums.ts","../../../projects/ngx-ui-loader/src/lib/utils/constants.ts","../../../projects/ngx-ui-loader/src/lib/core/ngx-ui-loader-config.token.ts","../../../projects/ngx-ui-loader/src/lib/core/ngx-ui-loader.service.ts","../../../projects/ngx-ui-loader/src/lib/core/ngx-ui-loader.component.ts","../../../projects/ngx-ui-loader/src/lib/core/ngx-ui-loader.component.html","../../../projects/ngx-ui-loader/src/lib/core/ngx-ui-loader-blurred.directive.ts","../../../projects/ngx-ui-loader/src/lib/core/ngx-ui-loader.module.ts","../../../projects/ngx-ui-loader/src/lib/router/ngx-ui-loader-router-config.token.ts","../../../projects/ngx-ui-loader/src/lib/utils/functions.ts","../../../projects/ngx-ui-loader/src/lib/router/ngx-ui-loader-router.module.ts","../../../projects/ngx-ui-loader/src/lib/http/ngx-ui-loader-http-config.token.ts","../../../projects/ngx-ui-loader/src/lib/http/ngx-ui-loader-http.interceptor.ts","../../../projects/ngx-ui-loader/src/lib/http/ngx-ui-loader-http.module.ts","../../../projects/ngx-ui-loader/src/public-api.ts","../../../projects/ngx-ui-loader/src/lerkel-ngx-ui-loader.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\n/**\r\n * Available spinner types\r\n */\r\nexport enum SPINNER {\r\n  ballScaleMultiple = 'ball-scale-multiple',\r\n  ballSpin = 'ball-spin',\r\n  ballSpinClockwise = 'ball-spin-clockwise',\r\n  ballSpinClockwiseFadeRotating = 'ball-spin-clockwise-fade-rotating',\r\n  ballSpinFadeRotating = 'ball-spin-fade-rotating',\r\n  chasingDots = 'chasing-dots',\r\n  circle = 'circle',\r\n  cubeGrid = 'cube-grid',\r\n  doubleBounce = 'double-bounce',\r\n  fadingCircle = 'fading-circle',\r\n  foldingCube = 'folding-cube',\r\n  pulse = 'pulse',\r\n  rectangleBounce = 'rectangle-bounce',\r\n  rectangleBounceParty = 'rectangle-bounce-party',\r\n  rectangleBouncePulseOut = 'rectangle-bounce-pulse-out',\r\n  rectangleBouncePulseOutRapid = 'rectangle-bounce-pulse-out-rapid',\r\n  rotatingPlane = 'rotating-plane',\r\n  squareJellyBox = 'square-jelly-box',\r\n  squareLoader = 'square-loader',\r\n  threeBounce = 'three-bounce',\r\n  threeStrings = 'three-strings',\r\n  wanderingCubes = 'wandering-cubes',\r\n}\r\n\r\n/**\r\n * Available postions\r\n */\r\nexport enum POSITION {\r\n  bottomCenter = 'bottom-center',\r\n  bottomLeft = 'bottom-left',\r\n  bottomRight = 'bottom-right',\r\n  centerCenter = 'center-center',\r\n  centerLeft = 'center-left',\r\n  centerRight = 'center-right',\r\n  topCenter = 'top-center',\r\n  topLeft = 'top-left',\r\n  topRight = 'top-right',\r\n}\r\n\r\n/**\r\n * Progress bar directions\r\n */\r\nexport enum PB_DIRECTION {\r\n  leftToRight = 'ltr',\r\n  rightToLeft = 'rtl',\r\n}\r\n","import { NgxUiLoaderConfig, Time } from '../utils/interfaces';\r\nimport { POSITION, PB_DIRECTION, SPINNER } from './enums';\r\n\r\n/**\r\n * The default value of foreground task id\r\n */\r\nexport const DEFAULT_FG_TASK_ID = 'fg-default';\r\n\r\n/**\r\n * The default value of background task id\r\n */\r\nexport const DEFAULT_BG_TASK_ID = 'bg-default';\r\n\r\n/**\r\n * The default value of loader id\r\n */\r\nexport const DEFAULT_MASTER_LOADER_ID = 'master';\r\n\r\nexport const DEFAULT_TIME: Time = {};\r\n\r\nexport const MIN_DELAY = 0;\r\n\r\nexport const MIN_TIME = 0;\r\n\r\nexport const CLOSING_TIME = 1001;\r\n\r\nexport const FAST_CLOSING_TIME = 601;\r\n\r\nexport const BACKGROUND = false;\r\n\r\nexport const FOREGROUND = true;\r\n\r\nexport const OVERLAY_DISAPPEAR_TIME = 500;\r\n\r\nexport const FAST_OVERLAY_DISAPPEAR_TIME = 300;\r\n\r\n/**\r\n * Http loader taskId\r\n */\r\nexport const HTTP_LOADER_TASK_ID = '$_http-loader';\r\n\r\n/**\r\n * Router loader taskId\r\n */\r\nexport const ROUTER_LOADER_TASK_ID = '$_router_loader';\r\n\r\n/**\r\n * The configuration of spinners\r\n */\r\nexport const SPINNER_CONFIG = {\r\n  'ball-scale-multiple': {\r\n    divs: 3,\r\n    class: 'sk-ball-scale-multiple',\r\n  },\r\n  'ball-spin': {\r\n    divs: 8,\r\n    class: 'sk-ball-spin',\r\n  },\r\n  'ball-spin-clockwise': {\r\n    divs: 8,\r\n    class: 'sk-ball-spin-clockwise',\r\n  },\r\n  'ball-spin-clockwise-fade-rotating': {\r\n    divs: 8,\r\n    class: 'sk-ball-spin-clockwise-fade-rotating',\r\n  },\r\n  'ball-spin-fade-rotating': {\r\n    divs: 8,\r\n    class: 'sk-ball-spin-fade-rotating',\r\n  },\r\n  'chasing-dots': {\r\n    divs: 2,\r\n    class: 'sk-chasing-dots',\r\n  },\r\n  circle: {\r\n    divs: 12,\r\n    class: 'sk-circle',\r\n  },\r\n  'cube-grid': {\r\n    divs: 9,\r\n    class: 'sk-cube-grid',\r\n  },\r\n  'double-bounce': {\r\n    divs: 2,\r\n    class: 'sk-double-bounce',\r\n  },\r\n  'fading-circle': {\r\n    divs: 12,\r\n    class: 'sk-fading-circle',\r\n  },\r\n  'folding-cube': {\r\n    divs: 4,\r\n    class: 'sk-folding-cube',\r\n  },\r\n  pulse: {\r\n    divs: 1,\r\n    class: 'sk-pulse',\r\n  },\r\n  'rectangle-bounce': {\r\n    divs: 5,\r\n    class: 'sk-rectangle-bounce',\r\n  },\r\n  'rectangle-bounce-party': {\r\n    divs: 5,\r\n    class: 'sk-rectangle-bounce-party',\r\n  },\r\n  'rectangle-bounce-pulse-out': {\r\n    divs: 5,\r\n    class: 'sk-rectangle-bounce-pulse-out',\r\n  },\r\n  'rectangle-bounce-pulse-out-rapid': {\r\n    divs: 5,\r\n    class: 'sk-rectangle-bounce-pulse-out-rapid',\r\n  },\r\n  'rotating-plane': {\r\n    divs: 1,\r\n    class: 'sk-rotating-plane',\r\n  },\r\n  'square-jelly-box': {\r\n    divs: 2,\r\n    class: 'sk-square-jelly-box',\r\n  },\r\n  'square-loader': {\r\n    divs: 1,\r\n    class: 'sk-square-loader',\r\n  },\r\n  'three-bounce': {\r\n    divs: 3,\r\n    class: 'sk-three-bounce',\r\n  },\r\n  'three-strings': {\r\n    divs: 3,\r\n    class: 'sk-three-strings',\r\n  },\r\n  'wandering-cubes': {\r\n    divs: 2,\r\n    class: 'sk-wandering-cubes',\r\n  },\r\n};\r\n\r\n/**\r\n * The default configuration of ngx-ui-loader\r\n */\r\nexport const DEFAULT_CONFIG: NgxUiLoaderConfig = {\r\n  bgsColor: '#00ACC1',\r\n  bgsOpacity: 0.5,\r\n  bgsPosition: POSITION.bottomRight,\r\n  bgsSize: 60,\r\n  bgsType: SPINNER.ballSpinClockwise,\r\n  blur: 5,\r\n  delay: 0,\r\n  fastFadeOut: false,\r\n  fgsColor: '#00ACC1',\r\n  fgsPosition: POSITION.centerCenter,\r\n  fgsSize: 60,\r\n  fgsType: SPINNER.ballSpinClockwise,\r\n  gap: 24,\r\n  logoPosition: POSITION.centerCenter,\r\n  logoSize: 120,\r\n  logoUrl: '',\r\n  masterLoaderId: DEFAULT_MASTER_LOADER_ID,\r\n  overlayBorderRadius: '0',\r\n  overlayColor: 'rgba(40, 40, 40, 0.8)',\r\n  pbColor: '#00ACC1',\r\n  pbDirection: PB_DIRECTION.leftToRight,\r\n  pbThickness: 3,\r\n  hasProgressBar: true,\r\n  text: '',\r\n  textColor: '#FFFFFF',\r\n  textPosition: POSITION.centerCenter,\r\n  maxTime: -1,\r\n  minTime: 300,\r\n};\r\n","import { InjectionToken } from '@angular/core';\r\nimport { NgxUiLoaderConfig } from '../utils/interfaces';\r\n\r\n/**\r\n * Injection token for ngx-ui-loader configuration\r\n */\r\nexport const NGX_UI_LOADER_CONFIG_TOKEN = new InjectionToken<NgxUiLoaderConfig>(\r\n  'ngxUiLoaderCustom.config'\r\n);\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\nimport {\r\n  BACKGROUND,\r\n  CLOSING_TIME,\r\n  DEFAULT_BG_TASK_ID,\r\n  DEFAULT_CONFIG,\r\n  DEFAULT_FG_TASK_ID,\r\n  DEFAULT_TIME,\r\n  FAST_CLOSING_TIME,\r\n  FOREGROUND,\r\n  MIN_DELAY,\r\n  MIN_TIME,\r\n  OVERLAY_DISAPPEAR_TIME,\r\n  FAST_OVERLAY_DISAPPEAR_TIME,\r\n} from '../utils/constants';\r\nimport { NGX_UI_LOADER_CONFIG_TOKEN } from './ngx-ui-loader-config.token';\r\nimport { NgxUiLoaderConfig } from '../utils/interfaces';\r\nimport {\r\n  Loaders,\r\n  Loader,\r\n  ShowEvent,\r\n  Tasks,\r\n  Task,\r\n  Time,\r\n} from '../utils/interfaces';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class NgxUiLoaderService {\r\n  /**\r\n   * For internal use only.\r\n   *\r\n   * @docs-private\r\n   */\r\n  backgroundClosing$: Observable<ShowEvent>;\r\n\r\n  /**\r\n   * For internal use only.\r\n   *\r\n   * @docs-private\r\n   */\r\n  foregroundClosing$: Observable<ShowEvent>;\r\n\r\n  /**\r\n   * For internal use only.\r\n   *\r\n   * @docs-private\r\n   */\r\n  showBackground$: Observable<ShowEvent>;\r\n\r\n  /**\r\n   * For internal use only.\r\n   *\r\n   * @docs-private\r\n   */\r\n  showForeground$: Observable<ShowEvent>;\r\n\r\n  private bgClosing: BehaviorSubject<ShowEvent>;\r\n  private defaultConfig: NgxUiLoaderConfig;\r\n  private fgClosing: BehaviorSubject<ShowEvent>;\r\n  private loaders: Loaders;\r\n  private showBackground: BehaviorSubject<ShowEvent>;\r\n  private showForeground: BehaviorSubject<ShowEvent>;\r\n\r\n  /**\r\n   * Constructor\r\n   */\r\n  constructor(\r\n    @Optional()\r\n    @Inject(NGX_UI_LOADER_CONFIG_TOKEN)\r\n    private config: NgxUiLoaderConfig\r\n  ) {\r\n    this.defaultConfig = { ...DEFAULT_CONFIG };\r\n    if (this.config) {\r\n      if (this.config.minTime && this.config.minTime < MIN_TIME) {\r\n        this.config.minTime = MIN_TIME;\r\n      }\r\n      this.defaultConfig = { ...this.defaultConfig, ...this.config };\r\n    }\r\n    this.loaders = {};\r\n    this.showForeground = new BehaviorSubject<ShowEvent>({\r\n      loaderId: '',\r\n      isShow: false,\r\n    });\r\n    this.showForeground$ = this.showForeground.asObservable();\r\n    this.showBackground = new BehaviorSubject<ShowEvent>({\r\n      loaderId: '',\r\n      isShow: false,\r\n    });\r\n    this.showBackground$ = this.showBackground.asObservable();\r\n    this.fgClosing = new BehaviorSubject<ShowEvent>({\r\n      loaderId: '',\r\n      isShow: false,\r\n    });\r\n    this.foregroundClosing$ = this.fgClosing.asObservable();\r\n    this.bgClosing = new BehaviorSubject<ShowEvent>({\r\n      loaderId: '',\r\n      isShow: false,\r\n    });\r\n    this.backgroundClosing$ = this.bgClosing.asObservable();\r\n  }\r\n\r\n  /**\r\n   * For internal use only.\r\n   *\r\n   * @docs-private\r\n   */\r\n  bindLoaderData(loaderId: string): void {\r\n    const isMaster = loaderId === this.defaultConfig.masterLoaderId;\r\n    if (this.loaders[loaderId]) {\r\n      if (this.loaders[loaderId].isBound) {\r\n        throw new Error(\r\n          `[ngx-ui-loader] - loaderId \"${loaderId}\" is duplicated.`\r\n        );\r\n      }\r\n      this.loaders[loaderId].isBound = true;\r\n      this.loaders[loaderId].isMaster = isMaster;\r\n      // emit showEvent after data loader is bound\r\n      if (this.hasRunningTask(FOREGROUND, loaderId)) {\r\n        this.showForeground.next({ loaderId, isShow: true });\r\n      } else {\r\n        if (this.hasRunningTask(BACKGROUND, loaderId)) {\r\n          this.showBackground.next({ loaderId, isShow: true });\r\n        }\r\n      }\r\n    } else {\r\n      this.createLoaderData(loaderId, isMaster, true);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * For internal use only.\r\n   *\r\n   * @docs-private\r\n   */\r\n  destroyLoaderData(loaderId: string): void {\r\n    this.stopAllLoader(loaderId);\r\n    delete this.loaders[loaderId];\r\n  }\r\n\r\n  /**\r\n   * Get default loader configuration\r\n   *\r\n   * @returns default configuration object\r\n   */\r\n  getDefaultConfig(): NgxUiLoaderConfig {\r\n    return { ...this.defaultConfig };\r\n  }\r\n\r\n  /**\r\n   * Get all the loaders\r\n   */\r\n  getLoaders(): Loaders {\r\n    return JSON.parse(JSON.stringify(this.loaders));\r\n  }\r\n\r\n  /**\r\n   * Get data of a specified loader. If loaderId is not provided, it will return data of\r\n   * master loader(if existed). Otherwise null is returned.\r\n   */\r\n  getLoader(loaderId?: string): Loader {\r\n    loaderId = loaderId ? loaderId : this.defaultConfig.masterLoaderId;\r\n    if (this.loaders[loaderId]) {\r\n      return JSON.parse(JSON.stringify(this.loaders[loaderId]));\r\n    }\r\n    return null;\r\n  }\r\n\r\n  /**\r\n   * Start the foreground loading of loader having `loaderId` with a specified `taskId`.\r\n   * The loading is only closed off when all taskIds of that loader are called with stopLoader() method.\r\n   *\r\n   * @param loaderId the loader Id\r\n   * @param taskId the optional task Id of the loading. taskId is set to 'fd-default' by default.\r\n   */\r\n  startLoader(\r\n    loaderId: string,\r\n    taskId: string = DEFAULT_FG_TASK_ID,\r\n    time?: Time\r\n  ): void {\r\n    if (!this.readyToStart(loaderId, taskId, true, time)) {\r\n      return;\r\n    }\r\n    if (!this.loaders[loaderId].tasks[taskId].isOtherRunning) {\r\n      // no other foreground task running\r\n      if (this.hasRunningTask(BACKGROUND, loaderId)) {\r\n        this.backgroundCloseout(loaderId);\r\n        this.showBackground.next({ loaderId, isShow: false });\r\n      }\r\n      this.showForeground.next({ loaderId, isShow: true });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Start the foreground loading of master loader with a specified `taskId`.\r\n   * The loading is only closed off when all taskIds of that loader are called with stop() method.\r\n   * NOTE: Really this function just wraps startLoader() function\r\n   *\r\n   * @param taskId the optional task Id of the loading. taskId is set to 'fd-default' by default.\r\n   */\r\n  start(taskId: string = DEFAULT_FG_TASK_ID, time?: Time): void {\r\n    this.startLoader(this.defaultConfig.masterLoaderId, taskId, time);\r\n  }\r\n\r\n  /**\r\n   * Start the background loading of loader having `loaderId` with a specified `taskId`.\r\n   * The loading is only closed off when all taskIds of that loader are called with stopLoaderBackground() method.\r\n   *\r\n   * @param loaderId the loader Id\r\n   * @param taskId the optional task Id of the loading. taskId is set to 'bg-default' by default.\r\n   */\r\n  startBackgroundLoader(\r\n    loaderId: string,\r\n    taskId: string = DEFAULT_BG_TASK_ID,\r\n    time?: Time\r\n  ): void {\r\n    if (!this.readyToStart(loaderId, taskId, false, time)) {\r\n      return;\r\n    }\r\n    if (\r\n      !this.hasRunningTask(FOREGROUND, loaderId) &&\r\n      !this.loaders[loaderId].tasks[taskId].isOtherRunning\r\n    ) {\r\n      this.showBackground.next({ loaderId, isShow: true });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Start the background loading of master loader with a specified `taskId`.\r\n   * The loading is only closed off when all taskIds of that loader are called with stopBackground() method.\r\n   * NOTE: Really this function just wraps startBackgroundLoader() function\r\n   *\r\n   * @param taskId the optional task Id of the loading. taskId is set to 'bg-default' by default.\r\n   */\r\n  startBackground(taskId: string = DEFAULT_BG_TASK_ID, time?: Time): void {\r\n    this.startBackgroundLoader(this.defaultConfig.masterLoaderId, taskId, time);\r\n  }\r\n\r\n  /**\r\n   * Stop a foreground loading of loader having `loaderId` with specific `taskId`\r\n   *\r\n   * @param loaderId the loader Id\r\n   * @param taskId the optional task Id to stop. If not provided, 'fg-default' is used.\r\n   * @returns Object\r\n   */\r\n  stopLoader(loaderId: string, taskId: string = DEFAULT_FG_TASK_ID): void {\r\n    if (!this.readyToStop(loaderId, taskId)) {\r\n      return;\r\n    }\r\n    if (!this.hasRunningTask(FOREGROUND, loaderId)) {\r\n      this.foregroundCloseout(loaderId);\r\n      this.showForeground.next({ loaderId, isShow: false });\r\n      if (this.hasRunningTask(BACKGROUND, loaderId)) {\r\n        setTimeout(\r\n          () => {\r\n            if (this.hasRunningTask(BACKGROUND, loaderId)) {\r\n              // still have background tasks\r\n              this.showBackground.next({ loaderId, isShow: true });\r\n            }\r\n          },\r\n          this.defaultConfig.fastFadeOut\r\n            ? FAST_OVERLAY_DISAPPEAR_TIME\r\n            : OVERLAY_DISAPPEAR_TIME\r\n        );\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Stop a foreground loading of master loader with specific `taskId`\r\n   *\r\n   * @param taskId the optional task Id to stop. If not provided, 'fg-default' is used.\r\n   * @returns Object\r\n   */\r\n  stop(taskId: string = DEFAULT_FG_TASK_ID): void {\r\n    this.stopLoader(this.defaultConfig.masterLoaderId, taskId);\r\n  }\r\n\r\n  /**\r\n   * Stop a background loading of loader having `loaderId` with specific `taskId`\r\n   *\r\n   * @param loaderId the loader Id\r\n   * @param taskId the optional task Id to stop. If not provided, 'bg-default' is used.\r\n   * @returns Object\r\n   */\r\n  stopBackgroundLoader(\r\n    loaderId: string,\r\n    taskId: string = DEFAULT_BG_TASK_ID\r\n  ): void {\r\n    if (!this.readyToStop(loaderId, taskId)) {\r\n      return;\r\n    }\r\n    if (\r\n      !this.hasRunningTask(FOREGROUND, loaderId) &&\r\n      !this.hasRunningTask(BACKGROUND, loaderId)\r\n    ) {\r\n      this.backgroundCloseout(loaderId);\r\n      this.showBackground.next({ loaderId, isShow: false });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Stop a background loading of master loader with specific taskId\r\n   *\r\n   * @param taskId the optional task Id to stop. If not provided, 'bg-default' is used.\r\n   * @returns Object\r\n   */\r\n  stopBackground(taskId: string = DEFAULT_BG_TASK_ID): void {\r\n    this.stopBackgroundLoader(this.defaultConfig.masterLoaderId, taskId);\r\n  }\r\n\r\n  /**\r\n   * Stop all the background and foreground loadings of loader having `loaderId`\r\n   *\r\n   * @param loaderId the loader Id\r\n   */\r\n  stopAllLoader(loaderId: string): void {\r\n    if (!this.loaders[loaderId]) {\r\n      console.warn(`[ngx-ui-loader] - loaderId \"${loaderId}\" does not exist.`);\r\n      return;\r\n    }\r\n    if (this.hasRunningTask(FOREGROUND, loaderId)) {\r\n      this.foregroundCloseout(loaderId);\r\n      this.showForeground.next({ loaderId, isShow: false });\r\n    } else if (this.hasRunningTask(BACKGROUND, loaderId)) {\r\n      this.backgroundCloseout(loaderId);\r\n      this.showBackground.next({ loaderId, isShow: false });\r\n    }\r\n    this.clearAllTimers(this.loaders[loaderId].tasks);\r\n    this.loaders[loaderId].tasks = {};\r\n  }\r\n\r\n  /**\r\n   * Stop all the background and foreground loadings of master loader\r\n   */\r\n  stopAll(): void {\r\n    this.stopAllLoader(this.defaultConfig.masterLoaderId);\r\n  }\r\n\r\n  /**\r\n   * Check whether the specified loader has a running task with the given `taskId`.\r\n   * If no `taskId` specified, it will check whether the loader has any running tasks.\r\n   * For internal use only.\r\n   *\r\n   * @docs-private\r\n   * @param isForeground foreground task or background task\r\n   * @param loaderId the loader Id\r\n   * @param taskId the optional task Id\r\n   * @returns boolean\r\n   */\r\n  hasRunningTask(\r\n    isForeground: boolean,\r\n    loaderId: string,\r\n    taskId?: string\r\n  ): boolean {\r\n    if (this.loaders[loaderId]) {\r\n      const tasks: Tasks = this.loaders[loaderId].tasks;\r\n      if (taskId) {\r\n        return tasks[taskId] ? (tasks[taskId].startAt ? true : false) : false;\r\n      }\r\n      return Object.keys(tasks).some(\r\n        (id) => !!tasks[id].startAt && tasks[id].isForeground === isForeground\r\n      );\r\n    }\r\n    return false;\r\n  }\r\n\r\n  /**\r\n   * Create loader data if it does not exist\r\n   *\r\n   * @docs-private\r\n   */\r\n  private createLoaderData(\r\n    loaderId: string,\r\n    isMaster: boolean,\r\n    isBound: boolean\r\n  ): void {\r\n    if (!this.loaders[loaderId]) {\r\n      this.loaders[loaderId] = {\r\n        loaderId,\r\n        tasks: {},\r\n        isMaster,\r\n        isBound,\r\n      };\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Manage to close foreground loading\r\n   *\r\n   * @docs-private\r\n   * @param loaderId the loader id\r\n   */\r\n  private foregroundCloseout(loaderId: string): void {\r\n    this.fgClosing.next({ loaderId, isShow: true });\r\n    setTimeout(\r\n      () => {\r\n        this.fgClosing.next({ loaderId, isShow: false });\r\n      },\r\n      this.defaultConfig.fastFadeOut ? FAST_CLOSING_TIME : CLOSING_TIME\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Manage to close background loading\r\n   *\r\n   * @docs-private\r\n   * @param loaderId the loader id\r\n   */\r\n  private backgroundCloseout(loaderId: string): void {\r\n    this.bgClosing.next({ loaderId, isShow: true });\r\n    setTimeout(\r\n      () => {\r\n        this.bgClosing.next({ loaderId, isShow: false });\r\n      },\r\n      this.defaultConfig.fastFadeOut ? FAST_CLOSING_TIME : CLOSING_TIME\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Clear all timers of the given task\r\n   *\r\n   * @docs-private\r\n   */\r\n  private clearTimers(task: Task): void {\r\n    clearTimeout(task.delayTimer);\r\n    clearTimeout(task.maxTimer);\r\n    clearTimeout(task.minTimer);\r\n  }\r\n\r\n  /**\r\n   * Clear all timers of the given tasks\r\n   *\r\n   * @docs-private\r\n   */\r\n  private clearAllTimers(tasks: Tasks): void {\r\n    Object.keys(tasks).map((id) => {\r\n      this.clearTimers(tasks[id]);\r\n    });\r\n  }\r\n\r\n  /**\r\n   * @docs-private\r\n   */\r\n  private readyToStart(\r\n    loaderId: string,\r\n    taskId: string,\r\n    isForeground: boolean,\r\n    time: Time = DEFAULT_TIME\r\n  ): boolean {\r\n    this.createLoaderData(loaderId, undefined, false);\r\n    const isOtherRunning = this.hasRunningTask(isForeground, loaderId);\r\n    if (!this.loaders[loaderId].tasks[taskId]) {\r\n      this.loaders[loaderId].tasks[taskId] = {\r\n        taskId,\r\n        isForeground,\r\n        minTime:\r\n          time.minTime >= MIN_TIME ? time.minTime : this.defaultConfig.minTime,\r\n        maxTime: time.maxTime ? time.maxTime : this.defaultConfig.maxTime,\r\n        delay: time.delay >= MIN_DELAY ? time.delay : this.defaultConfig.delay,\r\n      };\r\n    } else {\r\n      if (this.loaders[loaderId].tasks[taskId].isForeground !== isForeground) {\r\n        throw new Error(`[ngx-ui-loader] - taskId \"${taskId}\" is duplicated.`);\r\n      }\r\n    }\r\n    if (this.setDelayTimer(this.loaders[loaderId].tasks[taskId], loaderId)) {\r\n      return false;\r\n    }\r\n    this.loaders[loaderId].tasks[taskId] = {\r\n      ...this.loaders[loaderId].tasks[taskId],\r\n      isOtherRunning,\r\n      startAt: Date.now(),\r\n    };\r\n    this.setMaxTimer(this.loaders[loaderId].tasks[taskId], loaderId);\r\n    if (!this.loaders[loaderId].isBound) {\r\n      return false;\r\n    }\r\n    return true;\r\n  }\r\n\r\n  /**\r\n   * @docs-private\r\n   */\r\n  private readyToStop(loaderId: string, taskId: string): boolean {\r\n    if (!this.loaders[loaderId]) {\r\n      console.warn(`[ngx-ui-loader] - loaderId \"${loaderId}\" does not exist.`);\r\n      return false;\r\n    }\r\n    const task: Task = this.loaders[loaderId].tasks[taskId];\r\n    if (!task) {\r\n      return false;\r\n    }\r\n    if (task.isDelayed) {\r\n      this.clearTimers(task);\r\n      delete this.loaders[loaderId].tasks[taskId];\r\n      return false;\r\n    }\r\n    if (this.setMinTimer(task, loaderId)) {\r\n      return false;\r\n    }\r\n    this.clearTimers(task);\r\n    delete this.loaders[loaderId].tasks[taskId];\r\n    return true;\r\n  }\r\n\r\n  /**\r\n   * Set delay timer, if `delay` > 0\r\n   *\r\n   * @docs-private\r\n   * @returns boolean\r\n   */\r\n  private setDelayTimer(task: Task, loaderId: string): boolean {\r\n    if (task.delay > MIN_DELAY) {\r\n      if (task.isDelayed) {\r\n        return true;\r\n      }\r\n      if (!task.delayTimer) {\r\n        task.isDelayed = true;\r\n        task.delayTimer = setTimeout(() => {\r\n          task.isDelayed = false;\r\n          if (task.isForeground) {\r\n            this.startLoader(loaderId, task.taskId);\r\n          } else {\r\n            this.startBackgroundLoader(loaderId, task.taskId);\r\n          }\r\n        }, task.delay);\r\n        return true;\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n\r\n  /**\r\n   * Set maxTimer if `maxTime` > `minTime`\r\n   *\r\n   * @docs-private\r\n   * @returns boolean\r\n   */\r\n  private setMaxTimer(task: Task, loaderId: string): void {\r\n    if (task.maxTime > task.minTime) {\r\n      // restart the task, reset maxTimer\r\n      clearTimeout(task.maxTimer);\r\n      task.maxTimer = setTimeout(() => {\r\n        if (task.isForeground) {\r\n          this.stopLoader(loaderId, task.taskId);\r\n        } else {\r\n          this.stopBackgroundLoader(loaderId, task.taskId);\r\n        }\r\n      }, task.maxTime);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Set minTimer if `startAt` + `minTime` > `Date.now()`\r\n   *\r\n   * @docs-private\r\n   * @returns boolean\r\n   */\r\n  private setMinTimer(task: Task, loaderId: string): boolean {\r\n    const now = Date.now();\r\n    if (task.startAt) {\r\n      if (task.startAt + task.minTime > now) {\r\n        task.minTimer = setTimeout(() => {\r\n          if (task.isForeground) {\r\n            this.stopLoader(loaderId, task.taskId);\r\n          } else {\r\n            this.stopBackgroundLoader(loaderId, task.taskId);\r\n          }\r\n        }, task.startAt + task.minTime - now);\r\n        return true;\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n}\r\n","/* eslint-disable @angular-eslint/component-selector */\r\nimport {\r\n  Component,\r\n  Input,\r\n  OnInit,\r\n  OnChanges,\r\n  SimpleChanges,\r\n  SimpleChange,\r\n  OnDestroy,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  TemplateRef,\r\n} from '@angular/core';\r\nimport {\r\n  DomSanitizer,\r\n  SafeResourceUrl,\r\n  SafeStyle,\r\n} from '@angular/platform-browser';\r\nimport { NgxUiLoaderService } from './ngx-ui-loader.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nimport { NgxUiLoaderConfig } from '../utils/interfaces';\r\nimport { DirectionType, PositionType, SpinnerType } from '../utils/types';\r\nimport { POSITION } from '../utils/enums';\r\nimport { SPINNER_CONFIG } from '../utils/constants';\r\nimport { ShowEvent } from '../utils/interfaces';\r\n\r\n@Component({\r\n  selector: 'ngx-ui-loader',\r\n  templateUrl: './ngx-ui-loader.component.html',\r\n  styleUrls: ['./ngx-ui-loader.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class NgxUiLoaderComponent implements OnChanges, OnDestroy, OnInit {\r\n  @Input() bgsColor: string;\r\n  @Input() bgsOpacity: number;\r\n  @Input() bgsPosition: PositionType;\r\n  @Input() bgsSize: number;\r\n  @Input() bgsTemplate: TemplateRef<any>;\r\n  @Input() bgsType: SpinnerType;\r\n  @Input() fgsColor: string;\r\n  @Input() fgsPosition: PositionType;\r\n  @Input() fgsSize: number;\r\n  @Input() fgsTemplate: TemplateRef<any>;\r\n  @Input() fgsType: SpinnerType;\r\n  @Input() gap: number;\r\n  @Input() loaderId: string;\r\n  @Input() logoPosition: PositionType;\r\n  @Input() logoSize: number;\r\n  @Input() logoUrl: string;\r\n  @Input() overlayBorderRadius: string;\r\n  @Input() overlayColor: string;\r\n  @Input() pbColor: string;\r\n  @Input() pbDirection: DirectionType;\r\n  @Input() pbThickness: number;\r\n  @Input() hasProgressBar: boolean;\r\n  @Input() text: string;\r\n  @Input() textColor: string;\r\n  @Input() textPosition: PositionType;\r\n\r\n  fastFadeOut: boolean;\r\n  fgDivs: number[];\r\n  fgSpinnerClass: string;\r\n  bgDivs: number[];\r\n  bgSpinnerClass: string;\r\n  showForeground: boolean;\r\n  showBackground: boolean;\r\n  foregroundClosing: boolean;\r\n  backgroundClosing: boolean;\r\n\r\n  trustedLogoUrl: SafeResourceUrl;\r\n  logoTop: SafeStyle;\r\n  spinnerTop: SafeStyle;\r\n  textTop: SafeStyle;\r\n\r\n  showForegroundWatcher: Subscription;\r\n  showBackgroundWatcher: Subscription;\r\n  foregroundClosingWatcher: Subscription;\r\n  backgroundClosingWatcher: Subscription;\r\n\r\n  defaultConfig: NgxUiLoaderConfig;\r\n  initialized: boolean;\r\n\r\n  /**\r\n   * Constructor\r\n   */\r\n  constructor(\r\n    private domSanitizer: DomSanitizer,\r\n    private changeDetectorRef: ChangeDetectorRef,\r\n    private ngxService: NgxUiLoaderService\r\n  ) {\r\n    this.initialized = false;\r\n    this.defaultConfig = this.ngxService.getDefaultConfig();\r\n\r\n    this.bgsColor = this.defaultConfig.bgsColor;\r\n    this.bgsOpacity = this.defaultConfig.bgsOpacity;\r\n    this.bgsPosition = this.defaultConfig.bgsPosition;\r\n    this.bgsSize = this.defaultConfig.bgsSize;\r\n    this.bgsType = this.defaultConfig.bgsType;\r\n    this.fastFadeOut = this.defaultConfig.fastFadeOut;\r\n    this.fgsColor = this.defaultConfig.fgsColor;\r\n    this.fgsPosition = this.defaultConfig.fgsPosition;\r\n    this.fgsSize = this.defaultConfig.fgsSize;\r\n    this.fgsType = this.defaultConfig.fgsType;\r\n    this.gap = this.defaultConfig.gap;\r\n    this.loaderId = this.defaultConfig.masterLoaderId;\r\n    this.logoPosition = this.defaultConfig.logoPosition;\r\n    this.logoSize = this.defaultConfig.logoSize;\r\n    this.logoUrl = this.defaultConfig.logoUrl;\r\n    this.overlayBorderRadius = this.defaultConfig.overlayBorderRadius;\r\n    this.overlayColor = this.defaultConfig.overlayColor;\r\n    this.pbColor = this.defaultConfig.pbColor;\r\n    this.pbDirection = this.defaultConfig.pbDirection;\r\n    this.pbThickness = this.defaultConfig.pbThickness;\r\n    this.hasProgressBar = this.defaultConfig.hasProgressBar;\r\n    this.text = this.defaultConfig.text;\r\n    this.textColor = this.defaultConfig.textColor;\r\n    this.textPosition = this.defaultConfig.textPosition;\r\n  }\r\n\r\n  /**\r\n   * On init event\r\n   */\r\n  ngOnInit() {\r\n    this.initializeSpinners();\r\n    this.ngxService.bindLoaderData(this.loaderId);\r\n    this.determinePositions();\r\n\r\n    this.trustedLogoUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(\r\n      this.logoUrl\r\n    );\r\n\r\n    this.showForegroundWatcher = this.ngxService.showForeground$\r\n      .pipe(\r\n        filter((showEvent: ShowEvent) => this.loaderId === showEvent.loaderId)\r\n      )\r\n      .subscribe((data) => {\r\n        this.showForeground = data.isShow;\r\n        this.changeDetectorRef.markForCheck();\r\n      });\r\n\r\n    this.showBackgroundWatcher = this.ngxService.showBackground$\r\n      .pipe(\r\n        filter((showEvent: ShowEvent) => this.loaderId === showEvent.loaderId)\r\n      )\r\n      .subscribe((data) => {\r\n        this.showBackground = data.isShow;\r\n        this.changeDetectorRef.markForCheck();\r\n      });\r\n\r\n    this.foregroundClosingWatcher = this.ngxService.foregroundClosing$\r\n      .pipe(\r\n        filter((showEvent: ShowEvent) => this.loaderId === showEvent.loaderId)\r\n      )\r\n      .subscribe((data) => {\r\n        this.foregroundClosing = data.isShow;\r\n        this.changeDetectorRef.markForCheck();\r\n      });\r\n\r\n    this.backgroundClosingWatcher = this.ngxService.backgroundClosing$\r\n      .pipe(\r\n        filter((showEvent: ShowEvent) => this.loaderId === showEvent.loaderId)\r\n      )\r\n      .subscribe((data) => {\r\n        this.backgroundClosing = data.isShow;\r\n        this.changeDetectorRef.markForCheck();\r\n      });\r\n    this.initialized = true;\r\n  }\r\n\r\n  /**\r\n   * On changes event\r\n   */\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    if (!this.initialized) {\r\n      return;\r\n    }\r\n\r\n    const bgsTypeChange: SimpleChange = changes.bgsType;\r\n    const fgsTypeChange: SimpleChange = changes.fgsType;\r\n    const logoUrlChange: SimpleChange = changes.logoUrl;\r\n\r\n    if (fgsTypeChange || bgsTypeChange) {\r\n      this.initializeSpinners();\r\n    }\r\n\r\n    this.determinePositions();\r\n\r\n    if (logoUrlChange) {\r\n      this.trustedLogoUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(\r\n        this.logoUrl\r\n      );\r\n    }\r\n  }\r\n\r\n  /**\r\n   * On destroy event\r\n   */\r\n  ngOnDestroy() {\r\n    this.ngxService.destroyLoaderData(this.loaderId);\r\n    if (this.showForegroundWatcher) {\r\n      this.showForegroundWatcher.unsubscribe();\r\n    }\r\n    if (this.showBackgroundWatcher) {\r\n      this.showBackgroundWatcher.unsubscribe();\r\n    }\r\n    if (this.foregroundClosingWatcher) {\r\n      this.foregroundClosingWatcher.unsubscribe();\r\n    }\r\n    if (this.backgroundClosingWatcher) {\r\n      this.backgroundClosingWatcher.unsubscribe();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Initialize spinners\r\n   */\r\n  private initializeSpinners(): void {\r\n    this.fgDivs = Array(SPINNER_CONFIG[this.fgsType].divs).fill(1);\r\n    this.fgSpinnerClass = SPINNER_CONFIG[this.fgsType].class;\r\n    this.bgDivs = Array(SPINNER_CONFIG[this.bgsType].divs).fill(1);\r\n    this.bgSpinnerClass = SPINNER_CONFIG[this.bgsType].class;\r\n  }\r\n\r\n  /**\r\n   * Determine the positions of spinner, logo and text\r\n   */\r\n  private determinePositions(): void {\r\n    this.logoTop = 'initial';\r\n    this.spinnerTop = 'initial';\r\n    this.textTop = 'initial';\r\n    const textSize = 24;\r\n\r\n    if (this.logoPosition.startsWith('center')) {\r\n      this.logoTop = '50%';\r\n    } else if (this.logoPosition.startsWith('top')) {\r\n      this.logoTop = '30px';\r\n    }\r\n\r\n    if (this.fgsPosition.startsWith('center')) {\r\n      this.spinnerTop = '50%';\r\n    } else if (this.fgsPosition.startsWith('top')) {\r\n      this.spinnerTop = '30px';\r\n    }\r\n\r\n    if (this.textPosition.startsWith('center')) {\r\n      this.textTop = '50%';\r\n    } else if (this.textPosition.startsWith('top')) {\r\n      this.textTop = '30px';\r\n    }\r\n\r\n    if (this.fgsPosition === POSITION.centerCenter) {\r\n      if (this.logoUrl && this.logoPosition === POSITION.centerCenter) {\r\n        if (this.text && this.textPosition === POSITION.centerCenter) {\r\n          // logo, spinner and text\r\n          this.logoTop = this.domSanitizer.bypassSecurityTrustStyle(\r\n            `calc(50% - ${this.fgsSize / 2}px - ${textSize / 2}px - ${\r\n              this.gap\r\n            }px)`\r\n          );\r\n          this.spinnerTop = this.domSanitizer.bypassSecurityTrustStyle(\r\n            `calc(50% + ${this.logoSize / 2}px - ${textSize / 2}px)`\r\n          );\r\n          this.textTop = this.domSanitizer.bypassSecurityTrustStyle(\r\n            `calc(50% + ${this.logoSize / 2}px + ${this.gap}px + ${\r\n              this.fgsSize / 2\r\n            }px)`\r\n          );\r\n        } else {\r\n          // logo and spinner\r\n          this.logoTop = this.domSanitizer.bypassSecurityTrustStyle(\r\n            `calc(50% - ${this.fgsSize / 2}px - ${this.gap / 2}px)`\r\n          );\r\n          this.spinnerTop = this.domSanitizer.bypassSecurityTrustStyle(\r\n            `calc(50% + ${this.logoSize / 2}px + ${this.gap / 2}px)`\r\n          );\r\n        }\r\n      } else {\r\n        if (this.text && this.textPosition === POSITION.centerCenter) {\r\n          // spinner and text\r\n          this.spinnerTop = this.domSanitizer.bypassSecurityTrustStyle(\r\n            `calc(50% - ${textSize / 2}px - ${this.gap / 2}px)`\r\n          );\r\n          this.textTop = this.domSanitizer.bypassSecurityTrustStyle(\r\n            `calc(50% + ${this.fgsSize / 2}px + ${this.gap / 2}px)`\r\n          );\r\n        }\r\n      }\r\n    } else {\r\n      if (\r\n        this.logoUrl &&\r\n        this.logoPosition === POSITION.centerCenter &&\r\n        this.text &&\r\n        this.textPosition === POSITION.centerCenter\r\n      ) {\r\n        // logo and text\r\n        this.logoTop = this.domSanitizer.bypassSecurityTrustStyle(\r\n          `calc(50% - ${textSize / 2}px - ${this.gap / 2}px)`\r\n        );\r\n        this.textTop = this.domSanitizer.bypassSecurityTrustStyle(\r\n          `calc(50% + ${this.logoSize / 2}px + ${this.gap / 2}px)`\r\n        );\r\n      }\r\n    }\r\n  }\r\n}\r\n","<!-- Progress bar {{{ -->\r\n<div\r\n  *ngIf=\"hasProgressBar\"\r\n  class=\"ngx-progress-bar\"\r\n  [class.ngx-position-absolute]=\"loaderId !== defaultConfig.masterLoaderId\"\r\n  [ngClass]=\"'ngx-progress-bar-' + pbDirection\"\r\n  [style.height.px]=\"pbThickness\"\r\n  [style.color]=\"pbColor\"\r\n  [class.loading-foreground]=\"showForeground\"\r\n  [class.foreground-closing]=\"foregroundClosing\"\r\n  [class.fast-closing]=\"foregroundClosing && fastFadeOut\"\r\n></div>\r\n<!-- Progress bar }}} -->\r\n\r\n<!-- Foreground container {{{ -->\r\n<div\r\n  class=\"ngx-overlay\"\r\n  [class.ngx-position-absolute]=\"loaderId !== defaultConfig.masterLoaderId\"\r\n  [style.background-color]=\"overlayColor\"\r\n  [style.border-radius]=\"overlayBorderRadius\"\r\n  [class.loading-foreground]=\"showForeground\"\r\n  [class.foreground-closing]=\"foregroundClosing\"\r\n  [class.fast-closing]=\"foregroundClosing && fastFadeOut\"\r\n>\r\n  <!-- Logo {{{ -->\r\n  <img\r\n    *ngIf=\"logoUrl\"\r\n    class=\"ngx-loading-logo\"\r\n    [ngClass]=\"logoPosition\"\r\n    [src]=\"trustedLogoUrl\"\r\n    [style.width.px]=\"logoSize\"\r\n    [style.height.px]=\"logoSize\"\r\n    [style.top]=\"logoTop\"\r\n  />\r\n  <!-- Logo }}} -->\r\n\r\n  <!-- Foreground spinner {{{ -->\r\n  <div\r\n    class=\"ngx-foreground-spinner\"\r\n    [ngClass]=\"fgsPosition\"\r\n    [style.color]=\"fgsColor\"\r\n    [style.width.px]=\"fgsSize\"\r\n    [style.height.px]=\"fgsSize\"\r\n    [style.top]=\"spinnerTop\"\r\n  >\r\n    <div *ngIf=\"!fgsTemplate; else foregroundTemplate\" [class]=\"fgSpinnerClass\">\r\n      <div *ngFor=\"let div of fgDivs\"></div>\r\n    </div>\r\n    <ng-template #foregroundTemplate>\r\n      <ng-container *ngTemplateOutlet=\"fgsTemplate\"></ng-container>\r\n    </ng-template>\r\n  </div>\r\n  <!-- Foreground spinner }}} -->\r\n\r\n  <!-- Loading text {{{ -->\r\n  <div class=\"ngx-loading-text\" [ngClass]=\"textPosition\" [style.top]=\"textTop\" [style.color]=\"textColor\">{{ text }}</div>\r\n  <!-- Loading text }}} -->\r\n</div>\r\n<!-- Foreground container }}} -->\r\n\r\n<!-- Background spinner {{{ -->\r\n<div\r\n  class=\"ngx-background-spinner\"\r\n  [class.ngx-position-absolute]=\"loaderId !== defaultConfig.masterLoaderId\"\r\n  [ngClass]=\"bgsPosition\"\r\n  [class.loading-background]=\"showBackground\"\r\n  [class.background-closing]=\"backgroundClosing\"\r\n  [class.fast-closing]=\"backgroundClosing && fastFadeOut\"\r\n  [style.width.px]=\"bgsSize\"\r\n  [style.height.px]=\"bgsSize\"\r\n  [style.color]=\"bgsColor\"\r\n  [style.opacity]=\"bgsOpacity\"\r\n>\r\n  <div *ngIf=\"!bgsTemplate; else backgroundTemplate\" [class]=\"bgSpinnerClass\">\r\n    <div *ngFor=\"let div of bgDivs\"></div>\r\n  </div>\r\n  <ng-template #backgroundTemplate>\r\n    <ng-container *ngTemplateOutlet=\"bgsTemplate\"></ng-container>\r\n  </ng-template>\r\n</div>\r\n<!-- Background spinner }}} -->\r\n","/* eslint-disable @angular-eslint/directive-selector */\r\nimport {\r\n  Directive,\r\n  ElementRef,\r\n  Input,\r\n  OnDestroy,\r\n  Renderer2,\r\n  OnInit,\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nimport { NgxUiLoaderService } from './ngx-ui-loader.service';\r\nimport { ShowEvent } from '../utils/interfaces';\r\nimport {\r\n  FOREGROUND,\r\n  OVERLAY_DISAPPEAR_TIME,\r\n  FAST_OVERLAY_DISAPPEAR_TIME,\r\n} from '../utils/constants';\r\n\r\n@Directive({ selector: '[ngxUiLoaderBlurred]' })\r\nexport class NgxUiLoaderBlurredDirective implements OnInit, OnDestroy {\r\n  @Input() blur: number;\r\n  @Input() loaderId: string;\r\n\r\n  showForegroundWatcher: Subscription;\r\n  fastFadeOut: boolean;\r\n\r\n  constructor(\r\n    private elementRef: ElementRef,\r\n    private renderer: Renderer2,\r\n    private loader: NgxUiLoaderService\r\n  ) {\r\n    this.blur = this.loader.getDefaultConfig().blur;\r\n    this.loaderId = this.loader.getDefaultConfig().masterLoaderId;\r\n    this.fastFadeOut = this.loader.getDefaultConfig().fastFadeOut;\r\n  }\r\n\r\n  /**\r\n   * On Init event\r\n   */\r\n  ngOnInit() {\r\n    this.showForegroundWatcher = this.loader.showForeground$\r\n      .pipe(\r\n        filter((showEvent: ShowEvent) => this.loaderId === showEvent.loaderId)\r\n      )\r\n      .subscribe((data) => {\r\n        if (data.isShow) {\r\n          const filterValue = `blur(${this.blur}px)`;\r\n          this.renderer.setStyle(\r\n            this.elementRef.nativeElement,\r\n            '-webkit-filter',\r\n            filterValue\r\n          );\r\n          this.renderer.setStyle(\r\n            this.elementRef.nativeElement,\r\n            'filter',\r\n            filterValue\r\n          );\r\n        } else {\r\n          setTimeout(\r\n            () => {\r\n              if (!this.loader.hasRunningTask(FOREGROUND, data.loaderId)) {\r\n                this.renderer.setStyle(\r\n                  this.elementRef.nativeElement,\r\n                  '-webkit-filter',\r\n                  'none'\r\n                );\r\n                this.renderer.setStyle(\r\n                  this.elementRef.nativeElement,\r\n                  'filter',\r\n                  'none'\r\n                );\r\n              }\r\n            },\r\n            this.fastFadeOut\r\n              ? FAST_OVERLAY_DISAPPEAR_TIME\r\n              : OVERLAY_DISAPPEAR_TIME\r\n          );\r\n        }\r\n      });\r\n  }\r\n\r\n  /**\r\n   * On destroy event\r\n   */\r\n  ngOnDestroy() {\r\n    if (this.showForegroundWatcher) {\r\n      this.showForegroundWatcher.unsubscribe();\r\n    }\r\n  }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { NgxUiLoaderComponent } from './ngx-ui-loader.component';\r\nimport { NgxUiLoaderBlurredDirective } from './ngx-ui-loader-blurred.directive';\r\nimport { NGX_UI_LOADER_CONFIG_TOKEN } from './ngx-ui-loader-config.token';\r\nimport { NgxUiLoaderConfig } from '../utils/interfaces';\r\n\r\n@NgModule({\r\n  imports: [CommonModule],\r\n  declarations: [NgxUiLoaderComponent, NgxUiLoaderBlurredDirective],\r\n  exports: [NgxUiLoaderComponent, NgxUiLoaderBlurredDirective],\r\n})\r\nexport class NgxUiLoaderModule {\r\n  /**\r\n   * forRoot\r\n   *\r\n   * @returns A module with its provider dependencies\r\n   */\r\n  static forRoot(\r\n    ngxUiLoaderConfig: NgxUiLoaderConfig\r\n  ): ModuleWithProviders<NgxUiLoaderModule> {\r\n    return {\r\n      ngModule: NgxUiLoaderModule,\r\n      providers: [\r\n        {\r\n          provide: NGX_UI_LOADER_CONFIG_TOKEN,\r\n          useValue: ngxUiLoaderConfig,\r\n        },\r\n      ],\r\n    };\r\n  }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { NgxUiLoaderRouterConfig } from '../utils/interfaces';\r\n\r\n/**\r\n * Injection token for ngx-ui-loader-router configuration\r\n */\r\nexport const NGX_UI_LOADER_ROUTER_CONFIG_TOKEN = new InjectionToken<NgxUiLoaderRouterConfig>(\r\n  'ngxUiLoaderRouterCustom.config'\r\n);\r\n","/* eslint-disable prefer-arrow/prefer-arrow-functions */\r\nimport { Config, Exclude } from './interfaces';\r\n\r\nexport function getExcludeObj(config: Config): Exclude {\r\n  let strs: string[];\r\n  let regExps: RegExp[];\r\n\r\n  if (config) {\r\n    if (config.exclude) {\r\n      strs = config.exclude.map((url) => url.toLowerCase());\r\n    }\r\n\r\n    if (config.excludeRegexp) {\r\n      regExps = config.excludeRegexp.map((regexp) => new RegExp(regexp, 'i'));\r\n    }\r\n  }\r\n\r\n  return { strs, regExps };\r\n}\r\n\r\nexport function isIgnored(\r\n  url: string,\r\n  excludeStrings: string[],\r\n  excludeRegexps: RegExp[]\r\n): boolean {\r\n  if (excludeStrings) {\r\n    // do not show the loader for urls in the `exclude` list\r\n    if (\r\n      excludeStrings.findIndex((str) => url.toLowerCase().startsWith(str)) !==\r\n      -1\r\n    ) {\r\n      return true;\r\n    }\r\n  }\r\n\r\n  if (excludeRegexps) {\r\n    // do not show the loader for urls which matches regexps in the `excludeRegexp` list\r\n    if (excludeRegexps.findIndex((regexp) => regexp.test(url)) !== -1) {\r\n      return true;\r\n    }\r\n  }\r\n\r\n  return false;\r\n}\r\n","import {\r\n  NgModule,\r\n  ModuleWithProviders,\r\n  Inject,\r\n  Optional,\r\n  SkipSelf,\r\n} from '@angular/core';\r\nimport {\r\n  NavigationCancel,\r\n  NavigationEnd,\r\n  NavigationError,\r\n  NavigationStart,\r\n  Router,\r\n  RouterEvent,\r\n} from '@angular/router';\r\n\r\nimport { NgxUiLoaderService } from '../core/ngx-ui-loader.service';\r\nimport { NgxUiLoaderRouterConfig } from '../utils/interfaces';\r\nimport { NGX_UI_LOADER_ROUTER_CONFIG_TOKEN } from './ngx-ui-loader-router-config.token';\r\nimport { ROUTER_LOADER_TASK_ID } from '../utils/constants';\r\nimport { getExcludeObj, isIgnored } from '../utils/functions';\r\nimport { Exclude } from '../utils/interfaces';\r\n\r\n@NgModule({})\r\nexport class NgxUiLoaderRouterModule {\r\n  private exclude: Exclude;\r\n\r\n  /**\r\n   * Constructor\r\n   */\r\n  constructor(\r\n    @Optional() @SkipSelf() parentModule: NgxUiLoaderRouterModule,\r\n    @Optional()\r\n    @Inject(NGX_UI_LOADER_ROUTER_CONFIG_TOKEN)\r\n    customConfig: NgxUiLoaderRouterConfig,\r\n    router: Router,\r\n    loader: NgxUiLoaderService\r\n  ) {\r\n    if (parentModule) {\r\n      throw new Error(\r\n        '[ngx-ui-loader] - NgxUiLoaderRouterModule is already loaded. It should be imported in the root `AppModule` only!'\r\n      );\r\n    }\r\n\r\n    let config: NgxUiLoaderRouterConfig = {\r\n      loaderId: loader.getDefaultConfig().masterLoaderId,\r\n      showForeground: true,\r\n    };\r\n\r\n    this.exclude = getExcludeObj(customConfig);\r\n\r\n    if (customConfig) {\r\n      config = { ...config, ...customConfig };\r\n    }\r\n\r\n    router.events.subscribe((event: any) => {\r\n      if (event instanceof NavigationStart) {\r\n        if (!isIgnored(event.url, this.exclude.strs, this.exclude.regExps)) {\r\n          if (config.showForeground) {\r\n            loader.startLoader(config.loaderId, ROUTER_LOADER_TASK_ID);\r\n          } else {\r\n            loader.startBackgroundLoader(\r\n              config.loaderId,\r\n              ROUTER_LOADER_TASK_ID\r\n            );\r\n          }\r\n        }\r\n      }\r\n\r\n      if (\r\n        event instanceof NavigationEnd ||\r\n        event instanceof NavigationCancel ||\r\n        event instanceof NavigationError\r\n      ) {\r\n        if (!isIgnored(event.url, this.exclude.strs, this.exclude.regExps)) {\r\n          if (config.showForeground) {\r\n            loader.stopLoader(config.loaderId, ROUTER_LOADER_TASK_ID);\r\n          } else {\r\n            loader.stopBackgroundLoader(config.loaderId, ROUTER_LOADER_TASK_ID);\r\n          }\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  /**\r\n   * forRoot\r\n   *\r\n   * @returns A module with its provider dependencies\r\n   */\r\n  static forRoot(\r\n    routerConfig: NgxUiLoaderRouterConfig\r\n  ): ModuleWithProviders<NgxUiLoaderRouterModule> {\r\n    return {\r\n      ngModule: NgxUiLoaderRouterModule,\r\n      providers: [\r\n        {\r\n          provide: NGX_UI_LOADER_ROUTER_CONFIG_TOKEN,\r\n          useValue: routerConfig,\r\n        },\r\n      ],\r\n    };\r\n  }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { NgxUiLoaderHttpConfig } from '../utils/interfaces';\r\n\r\n/**\r\n * Injection token for ngx-ui-loader-http configuration\r\n */\r\nexport const NGX_UI_LOADER_HTTP_CONFIG_TOKEN = new InjectionToken<NgxUiLoaderHttpConfig>(\r\n  'ngxUiLoaderHttpCustom.config'\r\n);\r\n","import { Injectable, Inject, Optional } from '@angular/core';\r\nimport {\r\n  HttpInterceptor,\r\n  HttpEvent,\r\n  HttpHandler,\r\n  HttpRequest,\r\n} from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { finalize } from 'rxjs/operators';\r\n\r\nimport { NgxUiLoaderService } from '../core/ngx-ui-loader.service';\r\nimport { NGX_UI_LOADER_HTTP_CONFIG_TOKEN } from './ngx-ui-loader-http-config.token';\r\nimport { NgxUiLoaderHttpConfig } from '../utils/interfaces';\r\nimport { HTTP_LOADER_TASK_ID } from '../utils/constants';\r\nimport { getExcludeObj, isIgnored } from '../utils/functions';\r\nimport { Exclude } from '../utils/interfaces';\r\n\r\n@Injectable()\r\nexport class NgxUiLoaderHttpInterceptor implements HttpInterceptor {\r\n  private count: number;\r\n  private config: NgxUiLoaderHttpConfig;\r\n  private exclude: Exclude;\r\n\r\n  /**\r\n   * Constructor\r\n   */\r\n  constructor(\r\n    @Optional()\r\n    @Inject(NGX_UI_LOADER_HTTP_CONFIG_TOKEN)\r\n    customConfig: NgxUiLoaderHttpConfig,\r\n    private loader: NgxUiLoaderService\r\n  ) {\r\n    this.count = 0;\r\n    this.config = {\r\n      loaderId: this.loader.getDefaultConfig().masterLoaderId,\r\n      showForeground: false,\r\n    };\r\n\r\n    this.exclude = getExcludeObj(customConfig);\r\n\r\n    if (customConfig) {\r\n      this.config = { ...this.config, ...customConfig };\r\n    }\r\n  }\r\n\r\n  intercept(\r\n    req: HttpRequest<any>,\r\n    next: HttpHandler\r\n  ): Observable<HttpEvent<any>> {\r\n    if (isIgnored(req.url, this.exclude.strs, this.exclude.regExps)) {\r\n      return next.handle(req);\r\n    }\r\n\r\n    this.count++;\r\n    if (this.config.showForeground) {\r\n      this.loader.startLoader(\r\n        this.config.loaderId,\r\n        HTTP_LOADER_TASK_ID,\r\n        this.config\r\n      );\r\n    } else {\r\n      this.loader.startBackgroundLoader(\r\n        this.config.loaderId,\r\n        HTTP_LOADER_TASK_ID,\r\n        this.config\r\n      );\r\n    }\r\n\r\n    return next.handle(req).pipe(\r\n      finalize(() => {\r\n        this.count--;\r\n        if (this.count === 0) {\r\n          if (this.config.showForeground) {\r\n            this.loader.stopLoader(this.config.loaderId, HTTP_LOADER_TASK_ID);\r\n          } else {\r\n            this.loader.stopBackgroundLoader(\r\n              this.config.loaderId,\r\n              HTTP_LOADER_TASK_ID\r\n            );\r\n          }\r\n        }\r\n      })\r\n    );\r\n  }\r\n}\r\n","import {\r\n  NgModule,\r\n  ModuleWithProviders,\r\n  Optional,\r\n  SkipSelf,\r\n} from '@angular/core';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\n\r\nimport { NgxUiLoaderHttpInterceptor } from './ngx-ui-loader-http.interceptor';\r\nimport { NgxUiLoaderHttpConfig } from '../utils/interfaces';\r\nimport { NGX_UI_LOADER_HTTP_CONFIG_TOKEN } from './ngx-ui-loader-http-config.token';\r\n\r\n@NgModule({\r\n  providers: [\r\n    {\r\n      provide: HTTP_INTERCEPTORS,\r\n      useClass: NgxUiLoaderHttpInterceptor,\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class NgxUiLoaderHttpModule {\r\n  /**\r\n   * Constructor\r\n   */\r\n  constructor(@Optional() @SkipSelf() parentModule: NgxUiLoaderHttpModule) {\r\n    if (parentModule) {\r\n      throw new Error(\r\n        '[ngx-ui-loader] - NgxUiLoaderHttpModule is already loaded. It should be imported in the root `AppModule` only!'\r\n      );\r\n    }\r\n  }\r\n\r\n  /**\r\n   * forRoot\r\n   *\r\n   * @returns A module with its provider dependencies\r\n   */\r\n  static forRoot(\r\n    httpConfig: NgxUiLoaderHttpConfig\r\n  ): ModuleWithProviders<NgxUiLoaderHttpModule> {\r\n    return {\r\n      ngModule: NgxUiLoaderHttpModule,\r\n      providers: [\r\n        {\r\n          provide: NGX_UI_LOADER_HTTP_CONFIG_TOKEN,\r\n          useValue: httpConfig,\r\n        },\r\n      ],\r\n    };\r\n  }\r\n}\r\n","/*\r\n * Public API Surface of ngx-ui-loader\r\n */\r\n\r\nexport { NgxUiLoaderService } from './lib/core/ngx-ui-loader.service';\r\nexport { NgxUiLoaderModule } from './lib/core/ngx-ui-loader.module';\r\nexport { SPINNER, POSITION, PB_DIRECTION } from './lib/utils/enums';\r\nexport {\r\n  Loader,\r\n  Loaders,\r\n  NgxUiLoaderConfig,\r\n  NgxUiLoaderHttpConfig,\r\n  NgxUiLoaderRouterConfig,\r\n  Task,\r\n  Tasks,\r\n  Time,\r\n} from './lib/utils/interfaces';\r\nexport { NgxUiLoaderRouterModule } from './lib/router/ngx-ui-loader-router.module';\r\nexport { NgxUiLoaderHttpModule } from './lib/http/ngx-ui-loader-http.module';\r\nexport { NgxUiLoaderComponent } from './lib/core/ngx-ui-loader.component';\r\nexport { NgxUiLoaderBlurredDirective } from './lib/core/ngx-ui-loader-blurred.directive';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.NgxUiLoaderService","i1.NgxUiLoaderService","i1"],"mappings":"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"}