{"version":3,"file":"covalent-core-loading.mjs","sources":["../../../../libs/angular/loading/src/loading.component.html","../../../../libs/angular/loading/src/loading.component.ts","../../../../libs/angular/loading/src/services/loading.factory.ts","../../../../libs/angular/loading/src/services/loading.service.ts","../../../../libs/angular/loading/src/directives/loading.directive.ts","../../../../libs/angular/loading/src/loading.module.ts","../../../../libs/angular/loading/src/covalent-core-loading.ts"],"sourcesContent":["<div\n  class=\"td-loading-wrapper\"\n  [style.min-height]=\"getHeight()\"\n  [class.td-overlay-circular]=\"(isOverlay() || isFullScreen()) && !isLinear()\"\n  [class.td-overlay]=\"isOverlay() || isFullScreen()\"\n  [class.td-fullscreen]=\"isFullScreen()\"\n>\n  <div\n    [@tdFadeInOut]=\"animation\"\n    [style.min-height]=\"getHeight()\"\n    class=\"td-loading\"\n  >\n    <mat-progress-spinner\n      *ngIf=\"isCircular()\"\n      [mode]=\"mode\"\n      [value]=\"value\"\n      [color]=\"color\"\n      [diameter]=\"getCircleDiameter()\"\n      [strokeWidth]=\"getCircleStrokeWidth()\"\n    ></mat-progress-spinner>\n    <mat-progress-bar\n      *ngIf=\"isLinear()\"\n      [mode]=\"mode\"\n      [value]=\"value\"\n      [color]=\"color\"\n    ></mat-progress-bar>\n  </div>\n  <ng-template [cdkPortalOutlet]=\"content\"></ng-template>\n</div>\n","import {\n  Component,\n  ChangeDetectorRef,\n  ElementRef,\n  DoCheck,\n} from '@angular/core';\nimport { tdFadeInOutAnimation } from '@covalent/core/common';\nimport { CdkPortalOutlet, TemplatePortal } from '@angular/cdk/portal';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { CommonModule } from '@angular/common';\n\nexport enum LoadingType {\n  Circular = 'circular',\n  Linear = 'linear',\n}\n\nexport enum LoadingMode {\n  Determinate = 'determinate',\n  Indeterminate = 'indeterminate',\n}\n\nexport enum LoadingStrategy {\n  Overlay = 'overlay',\n  Replace = 'replace',\n}\n\nexport enum LoadingStyle {\n  FullScreen = 'fullscreen',\n  Overlay = 'overlay',\n  None = 'none',\n}\n\nexport const TD_CIRCLE_DIAMETER = 40;\n\n@Component({\n  selector: 'td-loading',\n  styleUrls: ['./loading.component.scss'],\n  templateUrl: './loading.component.html',\n  animations: [tdFadeInOutAnimation],\n  imports: [\n    CommonModule,\n    MatProgressBar,\n    MatProgressSpinner,\n    CdkPortalOutlet,\n  ],\n})\nexport class TdLoadingComponent implements DoCheck {\n  private _mode: LoadingMode = LoadingMode.Indeterminate;\n  private _defaultMode: LoadingMode = LoadingMode.Indeterminate;\n  private _value = 0;\n  private _circleDiameter: number = TD_CIRCLE_DIAMETER;\n\n  /**\n   * Flag for animation\n   */\n  animation = false;\n\n  /**\n   * Content injected into loading component.\n   */\n  content!: TemplatePortal<any>;\n\n  /**\n   * Sets mode of [TdLoadingComponent] to LoadingMode.Determinate or LoadingMode.Indeterminate\n   */\n  set mode(mode: LoadingMode) {\n    this._defaultMode = mode;\n  }\n  get mode(): LoadingMode {\n    return this._mode;\n  }\n\n  /**\n   * Sets value of [TdLoadingComponent] if mode is 'LoadingMode.Determinate'\n   */\n  set value(value: number) {\n    this._value = value;\n    // Check for changes for `OnPush` change detection\n    this._changeDetectorRef.markForCheck();\n  }\n  get value(): number {\n    return this._value;\n  }\n\n  style: LoadingStyle = LoadingStyle.None;\n\n  /**\n   * height: number\n   * Sets height of [TdLoadingComponent].\n   */\n  height = 100;\n\n  /**\n   * type: LoadingType\n   * Sets type of [TdLoadingComponent] rendered.\n   */\n  type: LoadingType = LoadingType.Circular;\n\n  /**\n   * color: primary' | 'accent' | 'warn'\n   * Sets theme color of [TdLoadingComponent] rendered.\n   */\n  color: 'primary' | 'accent' | 'warn' = 'primary';\n\n  constructor(\n    private _elementRef: ElementRef,\n    private _changeDetectorRef: ChangeDetectorRef\n  ) {}\n\n  ngDoCheck(): void {\n    // When overlay is used and the host width has a value greater than 1px\n    // set the circle diameter when possible incase the loading component was rendered in a hidden state\n    if (this.isOverlay() && this._hostHeight() > 1 && this.animation) {\n      this._setCircleDiameter();\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  getHeight(): string | undefined {\n    // Ignore height if style is `overlay` or `fullscreen`.\n    // Add height if child elements have a height and style is `none`, else return default height.\n    if (this.isOverlay() || this.isFullScreen()) {\n      return undefined;\n    } else {\n      return this.height ? `${this.height}px` : '150px';\n    }\n  }\n\n  getCircleDiameter(): number {\n    return this._circleDiameter;\n  }\n\n  getCircleStrokeWidth(): number {\n    // we calculate the stroke width by setting it as 10% of its diameter\n    const strokeWidth: number = this.getCircleDiameter() / 10;\n    return Math.abs(strokeWidth);\n  }\n\n  isCircular(): boolean {\n    return this.type === LoadingType.Circular;\n  }\n\n  isLinear(): boolean {\n    return this.type === LoadingType.Linear;\n  }\n\n  isFullScreen(): boolean {\n    return this.style === LoadingStyle.FullScreen;\n  }\n\n  isOverlay(): boolean {\n    return this.style === LoadingStyle.Overlay;\n  }\n\n  /**\n   * Starts in animation and returns an observable for completition event.\n   */\n  show(): void {\n    /* need to switch back to the selected mode, so we have saved it in another variable\n     *  and then recover it. (issue with protractor)\n     */\n    this._mode = this._defaultMode;\n    // Set values before the animations starts\n    this._setCircleDiameter();\n    // Check for changes for `OnPush` change detection\n    this.animation = true;\n    this._changeDetectorRef.markForCheck();\n  }\n\n  /**\n   * Starts out animation and returns an observable for completition event.\n   */\n  hide(): void {\n    this.animation = false;\n    /* need to switch back and forth from determinate/indeterminate so the setInterval()\n     * inside mat-progress-spinner stops and protractor doesnt timeout waiting to sync.\n     */\n    this._mode = LoadingMode.Determinate;\n    // Check for changes for `OnPush` change detection\n    /* little hack to reset the loader value and animation before removing it from DOM\n     * else, the loader will appear with prev value when its registered again\n     * and will do an animation going prev value to 0.\n     */\n    this.value = 0;\n    // Check for changes for `OnPush` change detection\n    this._changeDetectorRef.markForCheck();\n  }\n\n  /**\n   * Calculate the proper diameter for the circle and set it\n   */\n  private _setCircleDiameter(): void {\n    // we set a default diameter of 100 since this is the default in material\n    let diameter: number = TD_CIRCLE_DIAMETER;\n    // if height is provided, then we take that as diameter\n    if (this.height) {\n      diameter = this.height;\n      // else if its not provided, then we take the host height\n    } else if (this.height === undefined) {\n      diameter = this._hostHeight();\n    }\n    // if the diameter is over TD_CIRCLE_DIAMETER, we set TD_CIRCLE_DIAMETER\n    if (diameter <= TD_CIRCLE_DIAMETER) {\n      this._circleDiameter = Math.floor(diameter);\n    } else {\n      this._circleDiameter = TD_CIRCLE_DIAMETER;\n    }\n  }\n\n  /**\n   * Returns the host height of the loading component\n   */\n  private _hostHeight(): number {\n    if (<HTMLElement>this._elementRef.nativeElement) {\n      return (<HTMLElement>(\n        this._elementRef.nativeElement\n      )).getBoundingClientRect().height;\n    }\n    return 0;\n  }\n}\n","import {\n  Injectable,\n  ComponentFactoryResolver,\n  Provider,\n  SkipSelf,\n  Optional,\n  EmbeddedViewRef,\n} from '@angular/core';\nimport {\n  Injector,\n  ComponentRef,\n  ViewContainerRef,\n  TemplateRef,\n} from '@angular/core';\nimport { TemplatePortal, ComponentPortal } from '@angular/cdk/portal';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\n\nimport { Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nimport { TdLoadingContext } from '../directives/loading.directive';\nimport { TdLoadingComponent, LoadingStyle } from '../loading.component';\nimport { ITdLoadingConfig } from './loading.service';\n\nexport interface IInternalLoadingOptions extends ITdLoadingConfig {\n  height?: number;\n  style?: LoadingStyle;\n}\n\nexport interface ILoadingRef {\n  observable: Observable<any>;\n  componentRef?: ComponentRef<any>;\n  subject: Subject<any>;\n  times: number;\n}\n\n/**\n * NOTE: @internal usage only.\n */\n@Injectable()\nexport class TdLoadingFactory {\n  constructor(\n    private _componentFactoryResolver: ComponentFactoryResolver,\n    private _overlay: Overlay,\n    private _injector: Injector\n  ) {}\n\n  /**\n   * Uses material `Overlay` services to create a DOM element and attach the loading component\n   * into it. Leveraging the state and configuration from it.\n   *\n   * Saves a reference in context to be called when registering/resolving the loading element.\n   */\n  public createFullScreenComponent(options: ITdLoadingConfig): ILoadingRef {\n    (<IInternalLoadingOptions>options).height = undefined;\n    (<IInternalLoadingOptions>options).style = LoadingStyle.FullScreen;\n    const loadingRef: ILoadingRef = this._initializeContext();\n    let loading = false;\n    let overlayRef: OverlayRef;\n    loadingRef.observable\n      .pipe(distinctUntilChanged())\n      .subscribe((registered: number) => {\n        if (registered > 0 && !loading) {\n          loading = true;\n          overlayRef = this._createOverlay();\n          loadingRef.componentRef = overlayRef.attach(\n            new ComponentPortal(TdLoadingComponent)\n          );\n          this._mapOptions(options, loadingRef.componentRef?.instance);\n          loadingRef.componentRef?.instance.show();\n          loadingRef.componentRef?.changeDetectorRef.detectChanges();\n        } else if (registered <= 0 && loading) {\n          loading = false;\n          loadingRef.componentRef?.instance.hide();\n          loadingRef.componentRef?.destroy();\n          overlayRef.detach();\n          overlayRef.dispose();\n        }\n      });\n    return loadingRef;\n  }\n\n  /**\n   * Creates a loading component dynamically and attaches it into the given viewContainerRef.\n   * Leverages TemplatePortals from material to inject the template inside of it so it fits\n   * perfectly when overlaying it.\n   *\n   * Saves a reference in context to be called when registering/resolving the loading element.\n   */\n  public createOverlayComponent(\n    options: ITdLoadingConfig,\n    viewContainerRef: ViewContainerRef,\n    templateRef: TemplateRef<object>\n  ): ILoadingRef {\n    (<IInternalLoadingOptions>options).height = undefined;\n    (<IInternalLoadingOptions>options).style = LoadingStyle.Overlay;\n    const loadingRef: ILoadingRef = this._createComponent(options);\n    let loading = false;\n\n    if (loadingRef.componentRef) {\n      loadingRef.componentRef.instance.content = new TemplatePortal(\n        templateRef,\n        viewContainerRef\n      );\n      viewContainerRef.clear();\n      viewContainerRef.insert(loadingRef.componentRef?.hostView, 0);\n    }\n\n    loadingRef.observable\n      .pipe(distinctUntilChanged())\n      .subscribe((registered: number) => {\n        if (registered > 0 && !loading) {\n          loading = true;\n          loadingRef.componentRef?.instance.show();\n        } else if (registered <= 0 && loading) {\n          loading = false;\n          loadingRef.componentRef?.instance.hide();\n        }\n      });\n    return loadingRef;\n  }\n\n  /**\n   * Creates a loading component dynamically and attaches it into the given viewContainerRef.\n   * Replaces the template with the loading component depending if it was registered or resolved.\n   *\n   * Saves a reference in context to be called when registering/resolving the loading element.\n   */\n  public createReplaceComponent(\n    options: ITdLoadingConfig,\n    viewContainerRef: ViewContainerRef,\n    templateRef: TemplateRef<object>,\n    context: TdLoadingContext\n  ): ILoadingRef {\n    const nativeElement: HTMLElement = <HTMLElement>(\n      templateRef.elementRef.nativeElement\n    );\n    (<IInternalLoadingOptions>options).height = nativeElement.nextElementSibling\n      ? nativeElement.nextElementSibling.scrollHeight\n      : undefined;\n    (<IInternalLoadingOptions>options).style = LoadingStyle.None;\n    const loadingRef: ILoadingRef = this._createComponent(options);\n    let loading = false;\n    // passing context so when the template is attached, we can keep the reference of the variables\n    const contentRef: EmbeddedViewRef<object> =\n      viewContainerRef.createEmbeddedView(templateRef, context);\n    loadingRef.observable\n      .pipe(distinctUntilChanged())\n      .subscribe((registered: number) => {\n        if (registered > 0 && !loading && loadingRef.componentRef) {\n          loading = true;\n          // detach the content and attach the loader if loader is there\n          const index: number = viewContainerRef.indexOf(\n            loadingRef.componentRef.hostView\n          );\n          if (index < 0) {\n            viewContainerRef.detach(viewContainerRef.indexOf(contentRef));\n            viewContainerRef.insert(loadingRef.componentRef.hostView, 0);\n          }\n          loadingRef.componentRef?.instance.show();\n        } else if (registered <= 0 && loading && loadingRef.componentRef) {\n          loading = false;\n          loadingRef.componentRef?.instance.hide();\n          // detach loader and attach the content if content is there\n          const index: number = viewContainerRef.indexOf(contentRef);\n          if (index < 0) {\n            viewContainerRef.detach(\n              viewContainerRef.indexOf(loadingRef.componentRef.hostView)\n            );\n            viewContainerRef.insert(contentRef, 0);\n          }\n          /**\n           * Need to call \"markForCheck\" and \"detectChanges\" on attached template, so its detected by parent component when attached\n           * with \"OnPush\" change detection\n           */\n          contentRef.detectChanges();\n          contentRef.markForCheck();\n        }\n      });\n    return loadingRef;\n  }\n\n  /**\n   * Creates a fullscreen overlay for the loading usage.\n   */\n  private _createOverlay(): OverlayRef {\n    const state: OverlayConfig = new OverlayConfig();\n    state.hasBackdrop = false;\n    state.positionStrategy = this._overlay\n      .position()\n      .global()\n      .centerHorizontally()\n      .centerVertically();\n    return this._overlay.create(state);\n  }\n\n  /**\n   * Creates a generic component dynamically waiting to be attached to a viewContainerRef.\n   */\n  private _createComponent(options: IInternalLoadingOptions): ILoadingRef {\n    const compRef: ILoadingRef = this._initializeContext();\n    compRef.componentRef = this._componentFactoryResolver\n      .resolveComponentFactory(TdLoadingComponent)\n      .create(this._injector);\n    this._mapOptions(options, compRef.componentRef.instance);\n    return compRef;\n  }\n\n  /**\n   * Initialize context for loading component.\n   */\n  private _initializeContext(): ILoadingRef {\n    const subject: Subject<any> = new Subject<any>();\n    return {\n      observable: subject.asObservable(),\n      subject,\n      componentRef: undefined,\n      times: 0,\n    };\n  }\n\n  /**\n   * Maps configuration to the loading component instance.\n   */\n  private _mapOptions(\n    options: IInternalLoadingOptions,\n    instance: TdLoadingComponent\n  ): void {\n    if (options.style) {\n      instance.style = options.style;\n    }\n\n    if (options.type !== undefined) {\n      instance.type = options.type;\n    }\n    if (options.height !== undefined) {\n      instance.height = options.height;\n    }\n    if (options.mode !== undefined) {\n      instance.mode = options.mode;\n    }\n    if (options.color !== undefined) {\n      instance.color = options.color;\n    }\n  }\n}\n\nexport function LOADING_FACTORY_PROVIDER_FACTORY(\n  parent: TdLoadingFactory,\n  componentFactoryResolver: ComponentFactoryResolver,\n  overlay: Overlay,\n  injector: Injector\n): TdLoadingFactory {\n  return (\n    parent || new TdLoadingFactory(componentFactoryResolver, overlay, injector)\n  );\n}\n\nexport const LOADING_FACTORY_PROVIDER: Provider = {\n  // If there is already a service available, use that. Otherwise, provide a new one.\n  provide: TdLoadingFactory,\n  deps: [\n    [new Optional(), new SkipSelf(), TdLoadingFactory],\n    ComponentFactoryResolver,\n    Overlay,\n    Injector,\n  ],\n  useFactory: LOADING_FACTORY_PROVIDER_FACTORY,\n};\n","import { Injectable, Provider, SkipSelf, Optional } from '@angular/core';\nimport { ViewContainerRef, TemplateRef } from '@angular/core';\n\nimport { TdLoadingContext } from '../directives/loading.directive';\nimport {\n  TdLoadingComponent,\n  LoadingMode,\n  LoadingStrategy,\n  LoadingType,\n} from '../loading.component';\nimport { TdLoadingFactory, ILoadingRef } from './loading.factory';\n\nexport interface ITdLoadingConfig {\n  name: string;\n  type?: LoadingType;\n  mode?: LoadingMode;\n  color?: 'primary' | 'accent' | 'warn';\n}\n\nexport class TdLoadingConfig implements ITdLoadingConfig {\n  name: string;\n  type?: LoadingType;\n  mode?: LoadingMode;\n  color?: 'primary' | 'accent' | 'warn';\n\n  constructor(config: ITdLoadingConfig) {\n    this.name = config.name;\n    if (!this.name) {\n      throw Error('Name is required for [TdLoading] configuration.');\n    }\n    this.mode = config.mode ? config.mode : LoadingMode.Indeterminate;\n    this.type = config.type ? config.type : LoadingType.Circular;\n    this.color = config.color ? config.color : 'primary';\n  }\n}\n\nexport interface ITdLoadingDirectiveConfig extends ITdLoadingConfig {\n  strategy?: LoadingStrategy;\n}\n\nexport class TdLoadingDirectiveConfig\n  extends TdLoadingConfig\n  implements ITdLoadingDirectiveConfig\n{\n  strategy: LoadingStrategy;\n\n  constructor(config: ITdLoadingDirectiveConfig) {\n    super(config);\n    this.strategy = config.strategy ? config.strategy : LoadingStrategy.Replace;\n  }\n}\n\n@Injectable()\nexport class TdLoadingService {\n  private _context: { [key: string]: ILoadingRef } = {};\n  private _timeouts: { [key: string]: any } = {};\n\n  constructor(private _loadingFactory: TdLoadingFactory) {\n    this.create({\n      name: 'td-loading-main',\n    });\n  }\n\n  /**\n   * params:\n   * - config: ILoadingDirectiveConfig\n   * - viewContainerRef: ViewContainerRef\n   * - templateRef: TemplateRef<Object>\n   *\n   * Creates an replace loading mask and attaches it to the viewContainerRef.\n   * Replaces the templateRef with the mask when a request is registered on it.\n   *\n   * NOTE: @internal usage only.\n   */\n  createComponent(\n    config: ITdLoadingDirectiveConfig,\n    viewContainerRef: ViewContainerRef,\n    templateRef: TemplateRef<object>,\n    context: TdLoadingContext\n  ): ILoadingRef {\n    const directiveConfig: TdLoadingDirectiveConfig =\n      new TdLoadingDirectiveConfig(config);\n    if (this._context[directiveConfig.name]) {\n      throw Error(\n        `Name duplication: [TdLoading] directive has a name conflict with ${directiveConfig.name}.`\n      );\n    }\n    if (directiveConfig.strategy === LoadingStrategy.Overlay) {\n      this._context[directiveConfig.name] =\n        this._loadingFactory.createOverlayComponent(\n          directiveConfig,\n          viewContainerRef,\n          templateRef\n        );\n    } else {\n      this._context[directiveConfig.name] =\n        this._loadingFactory.createReplaceComponent(\n          directiveConfig,\n          viewContainerRef,\n          templateRef,\n          context\n        );\n    }\n    return this._context[directiveConfig.name];\n  }\n\n  /**\n   * params:\n   * - config: ITdLoadingConfig\n   *\n   * Creates a fullscreen loading mask and attaches it to the DOM with the given configuration.\n   * Only displayed when the mask has a request registered on it.\n   */\n  public create(config: ITdLoadingConfig): void {\n    const fullscreenConfig: TdLoadingConfig = new TdLoadingConfig(config);\n    this.removeComponent(fullscreenConfig.name);\n    this._context[fullscreenConfig.name] =\n      this._loadingFactory.createFullScreenComponent(fullscreenConfig);\n  }\n\n  /**\n   * params:\n   * - name: string\n   *\n   * Removes `loading` component from service context.\n   */\n  public removeComponent(name: string): void {\n    if (this._context[name]) {\n      this._context[name].subject.unsubscribe();\n      if (this._context[name].componentRef) {\n        this._context[name].componentRef?.destroy();\n      }\n      delete this._context[name];\n    }\n  }\n\n  /**\n   * params:\n   * - name: string\n   * - registers?: number\n   * returns: true if successful\n   *\n   * Resolves a request for the loading mask referenced by the name parameter.\n   * Can optionally pass registers argument to set a number of register calls.\n   *\n   * If no paramemeters are used, then default main mask will be used.\n   *\n   * e.g. loadingService.register()\n   */\n  public register(\n    name: string = 'td-loading-main',\n    registers: number = 1\n  ): boolean {\n    // try registering into the service if the loading component has been instanciated or if it exists.\n    if (this._context[name]) {\n      registers = registers < 1 ? 1 : registers;\n      this._context[name].times += registers;\n      this._context[name].subject.next(this._context[name].times);\n      return true;\n    } else {\n      // if it doesnt exist, set a timeout so its registered after change detection happens\n      // this in case \"register\" occured on the `ngOnInit` lifehook cycle.\n      if (!this._timeouts[name]) {\n        this._timeouts[name] = setTimeout(() => {\n          this.register(name, registers);\n        });\n      } else {\n        // if it timeout occured and still doesnt exist, it means the tiemout wasnt needed so we clear it.\n        this._clearTimeout(name);\n      }\n    }\n    return false;\n  }\n\n  /**\n   * params:\n   * - name: string\n   * - resolves?: number\n   * returns: true if successful\n   *\n   * Resolves a request for the loading mask referenced by the name parameter.\n   * Can optionally pass resolves argument to set a number of resolve calls.\n   *\n   * If no paramemeters are used, then default main mask will be used.\n   *\n   * e.g. loadingService.resolve()\n   */\n  public resolve(\n    name: string = 'td-loading-main',\n    resolves: number = 1\n  ): boolean {\n    // clear timeout if the loading component is \"resolved\" before its \"registered\"\n    this._clearTimeout(name);\n    if (this._context[name]) {\n      resolves = resolves < 1 ? 1 : resolves;\n      if (this._context[name].times) {\n        let times: number = this._context[name].times;\n        times -= resolves;\n        this._context[name].times = times < 0 ? 0 : times;\n      }\n      this._context[name].subject?.next(this._context[name].times);\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * params:\n   * - name: string\n   * returns: true if successful\n   *\n   * Resolves all request for the loading mask referenced by the name parameter.\n   *\n   * If no paramemeters are used, then default main mask will be used.\n   *\n   * e.g. loadingService.resolveAll()\n   */\n  public resolveAll(name: string = 'td-loading-main'): boolean {\n    // clear timeout if the loading component is \"resolved\" before its \"registered\"\n    this._clearTimeout(name);\n    if (this._context[name]) {\n      this._context[name].times = 0;\n      this._context[name].subject?.next(this._context[name].times);\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * params:\n   * - name: string\n   * - value: number\n   * returns: true if successful\n   *\n   * Set value on a loading mask referenced by the name parameter.\n   * Usage only available if its mode is 'determinate' and if loading is showing.\n   */\n  public setValue(name: string, value: number): boolean {\n    if (this._context[name]) {\n      const instance: TdLoadingComponent =\n        this._context[name].componentRef?.instance;\n      if (instance.mode === LoadingMode.Determinate && instance.animation) {\n        instance.value = value;\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Clears timeout linked to the name.\n   * @param name Name of the loading component to be cleared\n   */\n  private _clearTimeout(name: string): void {\n    clearTimeout(this._timeouts[name]);\n    delete this._timeouts[name];\n  }\n}\n\nexport function LOADING_PROVIDER_FACTORY(\n  parent: TdLoadingService,\n  loadingFactory: TdLoadingFactory\n): TdLoadingService {\n  return parent || new TdLoadingService(loadingFactory);\n}\n\nexport const LOADING_PROVIDER: Provider = {\n  // If there is already a service available, use that. Otherwise, provide a new one.\n  provide: TdLoadingService,\n  deps: [[new Optional(), new SkipSelf(), TdLoadingService], TdLoadingFactory],\n  useFactory: LOADING_PROVIDER_FACTORY,\n};\n","import { Directive, Input, OnInit, OnDestroy } from '@angular/core';\nimport { ViewContainerRef, TemplateRef } from '@angular/core';\n\nimport {\n  LoadingType,\n  LoadingMode,\n  LoadingStrategy,\n} from '../loading.component';\nimport { TdLoadingService } from '../services/loading.service';\nimport { ILoadingRef } from '../services/loading.factory';\n\n/**\n * Context class for variable reference\n */\nexport class TdLoadingContext {\n  public $implicit: any = undefined;\n  public tdLoading: any = undefined;\n}\n\n// Constant for generation of the id for the next component\nlet TD_LOADING_NEXT_ID = 0;\n\n@Directive({\n  selector: '[tdLoading]',\n})\nexport class TdLoadingDirective implements OnInit, OnDestroy {\n  private _context: TdLoadingContext = new TdLoadingContext();\n  private _loadingRef?: ILoadingRef;\n\n  /**\n   * tdLoading: string\n   * Name reference of the loading mask, used to register/resolve requests to the mask.\n   */\n  @Input('tdLoading')\n  name!: string;\n\n  /**\n   * tdLoadingUntil?: any\n   * If its null, undefined or false it will be used to register requests to the mask.\n   * Else if its any value that can be resolved as true, it will resolve the mask.\n   * [name] is optional when using [until], but can still be used to register/resolve it manually.\n   */\n  @Input('tdLoadingUntil')\n  set until(until: any) {\n    if (!this.name) {\n      this.name = 'td-loading-until-' + TD_LOADING_NEXT_ID++;\n    }\n    this._context.$implicit = this._context.tdLoading = until;\n    if (!until) {\n      this._loadingService.register(this.name);\n    } else {\n      this._loadingService.resolveAll(this.name);\n    }\n  }\n\n  /**\n   * tdLoadingType?: LoadingType or ['linear' | 'circular']\n   * Sets the type of loading mask depending on value.\n   * Defaults to [LoadingType.Circular | 'circular'].\n   */\n  @Input('tdLoadingType')\n  type: LoadingType = LoadingType.Circular;\n\n  /**\n   * tdLoadingMode?: LoadingMode or ['determinate' | 'indeterminate']\n   * Sets the mode of loading mask depending on value.\n   * Defaults to [LoadingMode.Indeterminate | 'indeterminate'].\n   */\n  @Input('tdLoadingMode') mode: LoadingMode = LoadingMode.Indeterminate;\n\n  /**\n   * tdLoadingStrategy?: LoadingStrategy or ['replace' | 'overlay']\n   * Sets the strategy of loading mask depending on value.\n   * Defaults to [LoadingMode.Replace | 'replace'].\n   */\n  @Input('tdLoadingStrategy')\n  strategy: LoadingStrategy.Overlay | LoadingStrategy.Replace =\n    LoadingStrategy.Replace;\n\n  /**\n   * tdLoadingColor?: \"primary\" | \"accent\" | \"warn\"\n   * Sets the theme color of the loading component. Defaults to \"primary\"\n   */\n  @Input('tdLoadingColor') color: 'primary' | 'accent' | 'warn' = 'primary';\n\n  constructor(\n    private _viewContainerRef: ViewContainerRef,\n    private _templateRef: TemplateRef<TdLoadingContext>,\n    private _loadingService: TdLoadingService\n  ) {}\n\n  /**\n   * Registers component in the DOM, so it will be available when calling resolve/register.\n   */\n  ngOnInit(): void {\n    this._registerComponent();\n  }\n\n  /**\n   * Remove component when directive is destroyed.\n   */\n  ngOnDestroy(): void {\n    this._loadingService.removeComponent(this.name);\n    this._loadingRef = undefined;\n  }\n\n  /**\n   * Creates [TdLoadingComponent] and attaches it to this directive's [ViewContainerRef].\n   * Passes this directive's [TemplateRef] to modify DOM depending on loading `strategy`.\n   */\n  private _registerComponent(): void {\n    if (!this.name) {\n      throw new Error('Name is needed to register loading directive');\n    }\n    // Check if `TdLoadingComponent` has been created before trying to add one again.\n    // There is a weird edge case when using `[routerLinkActive]` that calls the `ngOnInit` twice in a row\n    if (!this._loadingRef) {\n      this._loadingRef = this._loadingService.createComponent(\n        {\n          name: this.name,\n          type: this.type,\n          mode: this.mode,\n          color: this.color,\n          strategy: this.strategy,\n        },\n        this._viewContainerRef,\n        this._templateRef,\n        this._context\n      );\n    }\n  }\n}\n","import { Type } from '@angular/core';\nimport { NgModule } from '@angular/core';\nimport { LOADING_PROVIDER } from './services/loading.service';\nimport { LOADING_FACTORY_PROVIDER } from './services/loading.factory';\nimport { TdLoadingDirective } from './directives/loading.directive';\nimport { TdLoadingComponent } from './loading.component';\n\nconst TD_LOADING: Type<any>[] = [TdLoadingComponent, TdLoadingDirective];\n\n@NgModule({\n  imports: [TD_LOADING],\n  exports: [TD_LOADING],\n  providers: [LOADING_FACTORY_PROVIDER, LOADING_PROVIDER],\n})\nexport class CovalentLoadingModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i1.TdLoadingFactory","i1.TdLoadingService"],"mappings":"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"}