{"version":3,"file":"ngx-loading-page.mjs","sources":["../../../projects/loading-page/src/lib/loading-page.service.ts","../../../projects/loading-page/src/lib/loading-page.component.ts","../../../projects/loading-page/src/lib/loading-page.module.ts","../../../projects/loading-page/src/public-api.ts","../../../projects/loading-page/src/ngx-loading-page.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class LoadingPageService {\n\n  constructor() { }\n}\n","import { Component, Input, OnChanges  } from '@angular/core';\n\n@Component({\n  selector: 'lib-loading-page',\n  template: `\n    <div class=\"loading-page\" [ngSwitch]=\"type\" [ngStyle]=\"customVars\">\n      <!-- Spinners -->\n      <div *ngSwitchCase=\"'circle'\" class=\"spinner circle\" [ngStyle]=\"{ borderColor: spinnerColor + ' transparent' }\"></div>\n      <div *ngSwitchCase=\"'dots'\" class=\"spinner dots\"><span></span><span></span><span></span></div>\n      <div *ngSwitchCase=\"'bars'\" class=\"spinner bars\"><div></div><div></div><div></div><div></div></div>\n      <div *ngSwitchCase=\"'pulse'\" class=\"spinner pulse\" [ngStyle]=\"{ backgroundColor: spinnerColor }\"></div>\n      <div *ngSwitchCase=\"'wave'\" class=\"spinner wave\"><div></div><div></div><div></div><div></div><div></div></div>\n      <div *ngSwitchCase=\"'dual-ring'\" class=\"spinner dual-ring\" [style.color]=\"spinnerColor\"></div>\n\n      <!-- Skeleton -->\n      <div *ngSwitchCase=\"'skeleton'\" class=\"skeleton-wrapper\">\n        <div class=\"skeleton skeleton-title\"></div>\n        <div class=\"skeleton skeleton-text\"></div>\n        <div class=\"skeleton skeleton-text short\"></div>\n        <div class=\"skeleton skeleton-box\"></div>\n      </div>\n\n      <!-- Default -->\n      <div *ngSwitchDefault class=\"spinner circle\" [ngStyle]=\"{ borderColor: spinnerColor + ' transparent' }\"></div>\n\n      <p *ngIf=\"type !== 'skeleton'\" class=\"message\">{{ message }}</p>\n    </div>\n  `,\n  styles: [\n    `\n    .loading-page {\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      justify-content: center;\n      height: 100vh;\n      font-family: sans-serif;\n      background: var(--bg-color);\n      color: var(--text-color);\n    }\n\n    .message {\n      margin-top: 1rem;\n      font-size: 1.2rem;\n      color: var(--text-color);\n    }\n\n    .spinner.circle {\n      width: var(--loader-size);\n      height: var(--loader-size);\n      border: 6px solid;\n      border-radius: 50%;\n      animation: spin 1s linear infinite;\n    }\n\n    @keyframes spin {\n      to { transform: rotate(360deg); }\n    }\n\n    .spinner.dots {\n      display: flex;\n      gap: 8px;\n      color: var(--spinner-color);\n    }\n    .spinner.dots span {\n      width: 12px;\n      height: 12px;\n      border-radius: 50%;\n      background-color: currentColor;\n      animation: bounce 0.6s infinite alternate;\n    }\n    .spinner.dots span:nth-child(2) { animation-delay: 0.2s; }\n    .spinner.dots span:nth-child(3) { animation-delay: 0.4s; }\n\n    @keyframes bounce {\n      to { transform: translateY(-10px); opacity: 0.6; }\n    }\n\n    .spinner.bars {\n      display: flex;\n      gap: 4px;\n      color: var(--spinner-color);\n    }\n    .spinner.bars div {\n      width: 6px;\n      height: 30px;\n      background-color: currentColor;\n      animation: grow 1s infinite ease-in-out;\n    }\n    .spinner.bars div:nth-child(2) { animation-delay: 0.2s; }\n    .spinner.bars div:nth-child(3) { animation-delay: 0.4s; }\n    .spinner.bars div:nth-child(4) { animation-delay: 0.6s; }\n\n    @keyframes grow {\n      0%, 100% { transform: scaleY(0.4); }\n      50% { transform: scaleY(1.2); }\n    }\n\n    .spinner.pulse {\n      width: var(--loader-size);\n      height: var(--loader-size);\n      border-radius: 50%;\n      animation: pulse 1.2s infinite ease-in-out;\n    }\n\n    @keyframes pulse {\n      0%, 100% { transform: scale(1); opacity: 1; }\n      50% { transform: scale(1.3); opacity: 0.5; }\n    }\n\n    .spinner.wave {\n      display: flex;\n      gap: 6px;\n      color: var(--spinner-color);\n    }\n    .spinner.wave div {\n      width: 6px;\n      height: 30px;\n      background-color: currentColor;\n      animation: wave 1.2s infinite;\n    }\n    .spinner.wave div:nth-child(1) { animation-delay: 0s; }\n    .spinner.wave div:nth-child(2) { animation-delay: 0.1s; }\n    .spinner.wave div:nth-child(3) { animation-delay: 0.2s; }\n    .spinner.wave div:nth-child(4) { animation-delay: 0.3s; }\n    .spinner.wave div:nth-child(5) { animation-delay: 0.4s; }\n\n    @keyframes wave {\n      0%, 100% { transform: scaleY(0.5); }\n      50% { transform: scaleY(1.5); }\n    }\n\n    .spinner.dual-ring {\n      display: inline-block;\n      width: calc(var(--loader-size) + 14px);\n      height: calc(var(--loader-size) + 14px);\n      color: var(--spinner-color);\n    }\n    .spinner.dual-ring::after {\n      content: \" \";\n      display: block;\n      width: var(--loader-size);\n      height: var(--loader-size);\n      margin: 1px;\n      border-radius: 50%;\n      border: 6px solid currentColor;\n      border-color: currentColor transparent currentColor transparent;\n      animation: dual-ring 1.2s linear infinite;\n    }\n\n    @keyframes dual-ring {\n      0% { transform: rotate(0deg); }\n      100% { transform: rotate(360deg); }\n    }\n\n    .skeleton-wrapper {\n      width: 300px;\n      display: flex;\n      flex-direction: column;\n      gap: 16px;\n      padding: 1rem;\n    }\n\n    .skeleton {\n      background: linear-gradient(\n        90deg,\n        var(--skeleton-light) 25%,\n        var(--skeleton-dark) 50%,\n        var(--skeleton-light) 75%\n      );\n      background-size: 200% 100%;\n      animation: shimmer 1.2s infinite;\n      border-radius: 4px;\n    }\n    .skeleton-title { height: 20px; width: 60%; }\n    .skeleton-text { height: 14px; width: 100%; }\n    .skeleton-text.short { width: 80%; }\n    .skeleton-box { height: 120px; width: 100%; border-radius: 8px; }\n\n    @keyframes shimmer {\n      0% { background-position: -200% 0; }\n      100% { background-position: 200% 0; }\n    }\n  `]\n})\nexport class LoadingPageComponent implements OnChanges {\n  @Input() message = 'Loading...';\n  @Input() spinnerColor = '#3498db';\n  @Input() backgroundColor = '#ffffff';\n  @Input() textColor = '#333';\n  @Input() size: 'small' | 'medium' | 'large' = 'medium';\n  @Input() type:\n    | 'circle'\n    | 'dots'\n    | 'bars'\n    | 'skeleton'\n    | 'pulse'\n    | 'wave'\n    | 'dual-ring' = 'circle';\n\n  customVars: { [key: string]: string } = {};\n\n  ngOnChanges() {\n    this.customVars = {\n      '--spinner-color': this.spinnerColor,\n      '--text-color': this.textColor,\n      '--bg-color': this.backgroundColor,\n      '--loader-size': this.getSizeValue(this.size),\n      ...this.getSkeletonShades(this.spinnerColor)\n    };\n  }\n\n  getSizeValue(size: 'small' | 'medium' | 'large'): string {\n    switch (size) {\n      case 'small': return '30px';\n      case 'large': return '80px';\n      default: return '50px';\n    }\n  }\n\n  getSkeletonShades(color: string): { [key: string]: string } {\n    if (!color.startsWith('#')) {\n      return {\n        '--skeleton-light': '#eee',\n        '--skeleton-dark': '#ddd'\n      };\n    }\n\n    const lighten = (hex: string, amt: number) => {\n      let num = parseInt(hex.slice(1), 16);\n      let r = Math.min(255, (num >> 16) + amt);\n      let g = Math.min(255, ((num >> 8) & 0x00FF) + amt);\n      let b = Math.min(255, (num & 0x0000FF) + amt);\n      return `rgb(${r},${g},${b})`;\n    };\n\n    return {\n      '--skeleton-light': lighten(color, 40),\n      '--skeleton-dark': lighten(color, 20)\n    };\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { LoadingPageComponent } from './loading-page.component';\nimport { CommonModule } from '@angular/common';\n\n\n@NgModule({\n  declarations: [\n    LoadingPageComponent\n  ],\n  imports: [\n    CommonModule\n  ],\n  exports: [\n    LoadingPageComponent\n  ]\n})\nexport class LoadingPageModule { }\n\n\n","/*\n * Public API Surface of loading-page\n */\n\nexport * from './lib/loading-page.service';\nexport * from './lib/loading-page.component';\nexport * from './lib/loading-page.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}