{"version":3,"file":"ngx-spinner-loading.mjs","sources":["../../../projects/ngx-spinner-loading/src/lib/ngx-spinner-loading.service.ts","../../../projects/ngx-spinner-loading/src/lib/ngx-spinner-loading.component.ts","../../../projects/ngx-spinner-loading/src/lib/ngx-spinner-loading.directive.ts","../../../projects/ngx-spinner-loading/src/lib/ngx-spinner-loading.interceptor.ts","../../../projects/ngx-spinner-loading/src/public-api.ts","../../../projects/ngx-spinner-loading/src/ngx-spinner-loading.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class NgxSpinnerLoadingService {\r\n  private loadingCount = signal(0);\r\n  isLoading = signal(false);\r\n\r\n  show(): void {\r\n    this.loadingCount.update((count) => count + 1);\r\n    this.isLoading.set(true);\r\n  }\r\n\r\n  hide(): void {\r\n    this.loadingCount.update((count) => Math.max(0, count - 1));\r\n    if (this.loadingCount() === 0) this.isLoading.set(false);\r\n  }\r\n\r\n  reset(): void {\r\n    this.loadingCount.set(0);\r\n    this.isLoading.set(false);\r\n  }\r\n}\r\n","import {\r\n  Component, Input, TemplateRef, inject, effect, ContentChild\r\n} from '@angular/core';\r\nimport { NgxSpinnerLoadingService } from './ngx-spinner-loading.service';\r\nimport { NgStyle, NgClass, NgIf, NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n  selector: 'ngx-spinner-loader',\r\n  standalone: true,\r\n  imports: [NgStyle, NgClass, NgIf, NgTemplateOutlet],\r\n  template: `\r\n    <div *ngIf=\"visible()\" [ngClass]=\"containerClass\" [style.zIndex]=\"zIndex\">\r\n      <ng-container *ngIf=\"type === 'custom' && template; else builtInLoader\"\r\n                    [ngTemplateOutlet]=\"template\"></ng-container>\r\n\r\n      <ng-template #builtInLoader>\r\n        <div class=\"loader\" [ngStyle]=\"loaderStyle()\" [ngClass]=\"typeClass\"></div>\r\n      </ng-template>\r\n    </div>\r\n  `,\r\n  styleUrls: ['./ngx-spinner-loading.component.css']\r\n})\r\nexport class NgxSpinnerLoaderComponent {\r\n  private service = inject(NgxSpinnerLoadingService);\r\n\r\n  @Input() manual = false;\r\n  @Input() type: 'spinner' | 'dots' | 'bar' | 'circle' | 'custom' = 'spinner';\r\n  @Input() size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'md';\r\n  @Input() color: string = '#3498db';\r\n  @Input() mode: 'fullscreen' | 'section' | 'inline' = 'fullscreen';\r\n  @Input() speed = 1;\r\n  @Input() timeout?: number;\r\n  @Input() zIndex = 9999;\r\n  @ContentChild(TemplateRef) template?: TemplateRef<any>;\r\n\r\n  visible = this.manual ? () => true : this.service.isLoading;\r\n  private timeoutStarted = false;\r\n\r\n  constructor() {\r\n    if (!this.manual && this.timeout) {\r\n      effect(() => {\r\n        if (this.visible() && !this.timeoutStarted) {\r\n          this.timeoutStarted = true;\r\n          setTimeout(() => {\r\n            this.service.hide();\r\n            this.timeoutStarted = false;\r\n          }, this.timeout);\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  get containerClass(): string {\r\n    switch (this.mode) {\r\n      case 'fullscreen': return 'ngx-loader-fullscreen';\r\n      case 'section': return 'ngx-loader-section';\r\n      case 'inline': return 'ngx-loader-inline';\r\n    }\r\n  }\r\n\r\n  get typeClass(): string {\r\n    const validTypes = ['spinner', 'dots', 'bar', 'circle'];\r\n    return validTypes.includes(this.type) ? `loader-${this.type}` : 'loader-spinner';\r\n  }\r\n\r\n  loaderStyle(): Record<string, string> {\r\n    const sizeMap: Record<string, string> = {\r\n      xs: '20px', sm: '30px', md: '40px', lg: '50px', xl: '70px'\r\n    };\r\n    return {\r\n      border: '4px solid #ccc',\r\n      borderTopColor: this.color,\r\n      width: sizeMap[this.size],\r\n      height: sizeMap[this.size],\r\n      animationDuration: `${1 / this.speed}s`\r\n    };\r\n  }\r\n}\r\n","import {\r\n    Directive, Input, TemplateRef, ViewContainerRef, inject\r\n} from '@angular/core';\r\nimport { NgxSpinnerLoadingService } from './ngx-spinner-loading.service';\r\n\r\n@Directive({\r\n    selector: '[ngxSpinnerLoading]',\r\n    standalone: true\r\n})\r\nexport class NgxSpinnerLoadingDirective {\r\n    private tmpl = inject(TemplateRef<unknown>);\r\n    private vcr = inject(ViewContainerRef);\r\n    private service = inject(NgxSpinnerLoadingService);\r\n\r\n    @Input('ngxSpinnerLoading') set loading(condition: boolean) {\r\n        this.vcr.clear();\r\n\r\n        if (condition) {\r\n            this.service.show();\r\n            // Optionally show spinner markup here\r\n        } else {\r\n            this.service.hide();\r\n            this.vcr.createEmbeddedView(this.tmpl);\r\n        }\r\n    }\r\n}\r\n","// ngx-spinner-loading.interceptor.ts\r\n\r\nimport { inject } from '@angular/core';\r\nimport { HttpInterceptorFn } from '@angular/common/http';\r\nimport { finalize } from 'rxjs';\r\nimport { NgxSpinnerLoadingService } from './ngx-spinner-loading.service';\r\n\r\nexport const NgxSpinnerLoadingInterceptor: HttpInterceptorFn = (req, next) => {\r\n    const loadingService = inject(NgxSpinnerLoadingService);\r\n\r\n    loadingService.show();\r\n\r\n    return next(req).pipe(\r\n        finalize(() => loadingService.hide())\r\n    );\r\n};\r\n","/*\r\n * Public API Surface of ngx-spinner-loading\r\n */\r\n\r\nexport * from './lib/ngx-spinner-loading.component';\r\nexport * from './lib/ngx-spinner-loading.directive';\r\nexport * from './lib/ngx-spinner-loading.service';\r\nexport * from './lib/ngx-spinner-loading.interceptor';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}