UNPKG

50.1 kBSource Map (JSON)View Raw
1{"version":3,"file":"covalent-core-loading.mjs","sources":["../../../../libs/angular/loading/src/loading.component.ts","../../../../libs/angular/loading/src/loading.component.html","../../../../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":["import {\n Component,\n ChangeDetectorRef,\n ElementRef,\n DoCheck,\n} from '@angular/core';\nimport { tdFadeInOutAnimation } from '@covalent/core/common';\nimport { TemplatePortal } from '@angular/cdk/portal';\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})\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","<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 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';\n\nimport { CommonModule } from '@angular/common';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\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: [\n CommonModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n OverlayModule,\n PortalModule,\n ],\n declarations: [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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"}
\No newline at end of file