{"version":3,"file":"acorex-components-circular-progress.mjs","sources":["../../../../packages/components/circular-progress/src/lib/circular-progress.component.ts","../../../../packages/components/circular-progress/src/lib/circular-progress.component.html","../../../../packages/components/circular-progress/src/lib/circular-progress.module.ts","../../../../packages/components/circular-progress/src/acorex-components-circular-progress.ts"],"sourcesContent":["import { AXComponent, MXColorComponent } from '@acorex/cdk/common';\nimport {\n  afterNextRender,\n  Component,\n  effect,\n  ElementRef,\n  HostBinding,\n  input,\n  model,\n  viewChild,\n  ViewEncapsulation,\n} from '@angular/core';\n\nexport type AXCircularProgressMode = 'determinate' | 'indeterminate';\n\n/**\n * Displays the progress of an operation in a circular form. Supports determinate and indeterminate modes,\n * configurable size and stroke, and color theming.\n *\n * @category Components\n */\n@Component({\n  selector: 'ax-circular-progress',\n  templateUrl: './circular-progress.component.html',\n  styleUrls: ['./circular-progress.component.css'],\n  inputs: ['color'],\n\n  encapsulation: ViewEncapsulation.None,\n  providers: [{ provide: AXComponent, useExisting: AXCircularProgressComponent }],\n})\nexport class AXCircularProgressComponent extends MXColorComponent {\n  /**\n   *  @ignore\n   */\n  circle = viewChild<ElementRef<HTMLDivElement>>('circle');\n\n  /**\n   * Defines the progress calculation mode.\n   * Use 'determinate' to show a specific percentage or 'indeterminate' for ongoing/spinner state.\n   */\n  mode = input<AXCircularProgressMode>('determinate');\n\n  /**\n   * The percentage value to set for the progress (0–100).\n   */\n  progress = model<number>();\n\n  /**\n   * Stroke width of the circular track, in pixels.\n   */\n  stroke = model<number>();\n\n  /**\n   * Overall diameter of the circular progress, in pixels.\n   */\n  size = model<number>();\n\n  /**\n   *  @ignore\n   */\n\n  constructor() {\n    super();\n    afterNextRender(() => {\n      this.setCircularSize();\n      this.updateProgress();\n    });\n    effect(() => {\n      this.setCircularSize();\n      this.updateProgress();\n    });\n  }\n\n  /**\n   *  @ignore\n   */\n  @HostBinding('class')\n  private get __hostClass(): string {\n    if (this['color'] === 'ax-default') return 'ax-primary';\n    return `${this['color']}`;\n  }\n\n  /**\n   * Sets the CSS custom properties to reflect the current `size` and `stroke` values.\n   *\n   * Updates `--ax-comp-circular-progress-circle-size` and `--ax-comp-circular-progress-stroke-size` on the circle.\n   *\n   * @returns void - Styles are applied to the circle element when available.\n   */\n  setCircularSize(): void {\n    if (this.circle()) {\n      this.circle().nativeElement.style.setProperty(\n        '--ax-comp-circular-progress-stroke-size',\n        `${this.size() - this.stroke()}px`,\n      );\n      this.circle().nativeElement.style.setProperty('--ax-comp-circular-progress-circle-size', `${this.size()}px`);\n    }\n  }\n\n  /**\n   * Recalculates and applies the progress arc background based on the current `progress` value.\n   *\n   * Uses a conic-gradient with `--ax-comp-progress-circular-color` and `--ax-comp-progress-circular-line-color`.\n   * The expected range for `progress` is 0–100.\n   *\n   * @returns void - Styles are applied to the circle element when available.\n   */\n  updateProgress(): void {\n    if (this.circle()) {\n      this.circle().nativeElement.style.background = `conic-gradient(var(--ax-comp-bg) ${\n        this.progress() * 3.6\n      }deg,  color-mix(in srgb, var(--ax-comp-bg), transparent 75%) 0deg`;\n    }\n  }\n  /**\n   * Applies a default visual state for the indeterminate mode when no explicit `progress` is set.\n   *\n   * If `mode` is 'indeterminate' and `progress` is not set, it sets `progress` to 65 to render a visible arc.\n   *\n   * @returns void\n   */\n  setIndeterminateMode(): void {\n    if (this.mode() === 'indeterminate' && !this.progress()) {\n      this.progress.set(65);\n    }\n  }\n}\n","<ng-content select=\"ax-prefix\"></ng-content>\n<div class=\"ax-progress-circular ax-progress-{{ mode() }}\" #circle>\n  <span class=\"ax-progress-content\">\n    <ng-content></ng-content>\n  </span>\n</div>\n<ng-content select=\"ax-suffix\"></ng-content>\n","import { NgModule } from '@angular/core';\nimport { AXCircularProgressComponent } from './circular-progress.component';\n\n@NgModule({\n  imports: [AXCircularProgressComponent],\n  exports: [AXCircularProgressComponent],\n})\nexport class AXCircularProgressModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}