{"version":3,"file":"realsoft-reusable-components-progress-spinner.mjs","sources":["../../../src/reusable-components/progress-spinner/src/config.ts","../../../src/reusable-components/progress-spinner/src/progress-spinner.ts","../../../src/reusable-components/progress-spinner/src/progress-spinner.html","../../../src/reusable-components/progress-spinner/realsoft-reusable-components-progress-spinner.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const REALSOFT_BASE_SIZE = 100; // Base reference size of the spinner\r\n  \r\nexport const REALSOFT_BASE_STROKE_WIDTH = 10; // Base reference stroke width of the spinner.\r\n\r\nexport interface RealsoftProgressSpinnerDefaultOptions {\r\n    diameter?: number; //Diameter of the spinner\r\n    strokeWidth?: number; // Width of the spinner's stroke\r\n}\r\n\r\n// Injection token to be used to override the default options for realsoft-progress-spinner\r\nexport const REALSOFT_PROGRESS_SPINNER_DEFAULT_OPTIONS = new InjectionToken<RealsoftProgressSpinnerDefaultOptions>('realsoft-progress-spinner-default-options', {\r\n    providedIn: 'root',\r\n    factory: REALSOFT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY,\r\n});\r\n\r\n\r\nexport function REALSOFT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY(): RealsoftProgressSpinnerDefaultOptions {\r\n    return {diameter: REALSOFT_BASE_SIZE};\r\n}\r\n\r\nexport type RealsoftProgressSpinnerMode = 'determinate' | 'indeterminate'; //Possible modes for progress spinner.\r\n\r\n   ","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    ElementRef,\r\n    Input,\r\n    ViewChild,\r\n    ViewEncapsulation,\r\n    numberAttribute,\r\n    inject,\r\n    ANIMATION_MODULE_TYPE,\r\n  } from '@angular/core';\r\n  import { NgTemplateOutlet } from '@angular/common';\r\n  import { REALSOFT_PROGRESS_SPINNER_DEFAULT_OPTIONS, RealsoftProgressSpinnerDefaultOptions, RealsoftProgressSpinnerMode, REALSOFT_BASE_SIZE, REALSOFT_BASE_STROKE_WIDTH } from './config';\r\n    \r\n   \r\n  @Component({\r\n    selector: 'realsoft-progress-spinner, realsoft-spinner',\r\n    exportAs: 'realsoftProgressSpinner',\r\n    host: {\r\n      'role': 'progressbar',\r\n      'class': 'realsoft-progress-spinner realsoft-circular-progress',\r\n      'tabindex': '-1',\r\n      '[class.realsoft-animation-noopable]': `_noopAnimations`,\r\n      '[class.realsoft-circular-progress--indeterminate]': 'mode === \"indeterminate\"',\r\n      '[style.width.px]': 'diameter',\r\n      '[style.height.px]': 'diameter',\r\n      '[style.--realsoft-progress-spinner-size]': 'diameter + \"px\"',\r\n      '[style.--realsoft-progress-spinner-active-indicator-width]': 'diameter + \"px\"',\r\n      '[attr.aria-valuemin]': '0',\r\n      '[attr.aria-valuemax]': '100',\r\n      '[attr.aria-valuenow]': 'mode === \"determinate\" ? value : null',\r\n      '[attr.mode]': 'mode',\r\n    },\r\n    templateUrl: 'progress-spinner.html',\r\n    standalone: true,\r\n    styleUrl: 'progress-spinner.scss',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    encapsulation: ViewEncapsulation.None,\r\n    imports: [NgTemplateOutlet],\r\n    })\r\n  export class RealsoftProgressSpinner {\r\n    readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n    private _defaultConfigs = inject<RealsoftProgressSpinnerDefaultOptions>(REALSOFT_PROGRESS_SPINNER_DEFAULT_OPTIONS)\r\n    \r\n    // Whether the _mat-animation-noopable class should be applied, disabling animations\r\n    _noopAnimations: boolean;\r\n    _animationsModule = inject(ANIMATION_MODULE_TYPE, {optional: true});\r\n    private _value = 0;\r\n    private _strokeWidth: number;\r\n    private _diameter = REALSOFT_BASE_SIZE;\r\n  \r\n  \r\n    // The element of the determinate spinner\r\n    @ViewChild('determinateSpinner') _determinateSpinnerCircle: ElementRef<HTMLElement>;\r\n    \r\n    \r\n    constructor() {\r\n      this._noopAnimations = this._animationsModule === 'NoopAnimations';\r\n      this.mode = this._elementRef.nativeElement.nodeName.toLowerCase() === 'realsoft-spinner' ? 'indeterminate' : 'determinate';\r\n    \r\n      if(this._defaultConfigs) {\r\n        if(this._defaultConfigs.diameter) {\r\n          this.diameter = this._defaultConfigs.diameter;\r\n        }\r\n  \r\n        if(this._defaultConfigs.strokeWidth) {\r\n          this.strokeWidth = this._defaultConfigs.strokeWidth;\r\n        }\r\n      }\r\n    }\r\n  \r\n    @Input() mode: RealsoftProgressSpinnerMode; // Mode of the progress bar\r\n  \r\n    \r\n    // Value of the progress bar. Defaults to zero. Mirrored to aria-valuenow.\r\n    @Input({transform: numberAttribute})\r\n    get value(): number {\r\n      return this.mode === 'determinate' ? this._value : 0;\r\n    }\r\n    set value(v: number) {\r\n      this._value = Math.max(0, Math.min(100, v || 0));\r\n    }\r\n      \r\n    // The diameter of the progress spinner (will set width and height of svg). */\r\n    @Input({transform: numberAttribute})\r\n    get diameter(): number {\r\n      return this._diameter;\r\n    }\r\n    set diameter(size: number) {\r\n      this._diameter = size || 0;\r\n    }\r\n      \r\n    // Stroke width of the progress spinner.\r\n    @Input({transform: numberAttribute})\r\n    get strokeWidth(): number {\r\n      return this._strokeWidth ?? this.diameter / 10;\r\n    }\r\n    set strokeWidth(value: number) {\r\n      this._strokeWidth = value || 0;\r\n    }\r\n      \r\n    \r\n    // The radius of the spinner, adjusted for stroke width\r\n    circleRadius(): number {\r\n      return (this.diameter - this.strokeWidth) / 2;\r\n    }\r\n    \r\n    viewBox(): string {\r\n      const size = this.diameter;\r\n      return `0 0 ${size} ${size}`;\r\n    }\r\n    \r\n    strokeCircumference(): number {\r\n      return 2 * Math.PI * this.circleRadius();\r\n    }\r\n    \r\n    strokeDashOffset(): number | null {\r\n      return this.mode === 'determinate' \r\n        ? this.strokeCircumference() * (1 - this._value / 100) \r\n        : null;\r\n    }\r\n    \r\n    circleStrokeWidth(): number {\r\n      return (this.strokeWidth / this.diameter) * 100;\r\n    }\r\n    \r\n  }\r\n    \r\n  ","<ng-template #circle>\r\n    <svg [attr.viewBox]=\"viewBox()\" class=\"realsoft-circular-progress__indeterminate-circle-graphic\"\r\n         xmlns=\"http://www.w3.org/2000/svg\" focusable=\"false\">\r\n      <circle [attr.r]=\"circleRadius()\"\r\n              [style.stroke-dasharray.px]=\"strokeCircumference()\"\r\n              [style.stroke-dashoffset.px]=\"strokeCircumference() / 2\"\r\n              [style.stroke-width.%]=\"circleStrokeWidth()\"\r\n              cx=\"50%\" cy=\"50%\"/>\r\n    </svg>\r\n</ng-template>\r\n  \r\n\r\n<div class=\"realsoft-circular-progress__determinate-container\" aria-hidden=\"true\" #determinateSpinner>\r\n  <svg [attr.viewBox]=\"viewBox()\" class=\"realsoft-circular-progress__determinate-circle-graphic\"\r\n        xmlns=\"http://www.w3.org/2000/svg\" focusable=\"false\">\r\n      <circle [attr.r]=\"circleRadius()\"\r\n              [style.stroke-dasharray.px]=\"strokeCircumference()\"\r\n              [style.stroke-dashoffset.px]=\"strokeDashOffset()\"\r\n              [style.stroke-width.%]=\"circleStrokeWidth()\"\r\n              class=\"realsoft-circular-progress__determinate-circle\"\r\n              cx=\"50%\" cy=\"50%\"/>\r\n  </svg>\r\n</div>\r\n\r\n<div class=\"realsoft-circular-progress__indeterminate-container\" aria-hidden=\"true\">\r\n  <div class=\"realsoft-circular-progress__spinner-layer\">\r\n    <div class=\"realsoft-circular-progress__circle-clipper realsoft-circular-progress__circle-left\">\r\n      <ng-container [ngTemplateOutlet]=\"circle\"></ng-container>\r\n    </div>\r\n    <div class=\"realsoft-circular-progress__gap-patch\">\r\n      <ng-container [ngTemplateOutlet]=\"circle\"></ng-container>\r\n    </div>\r\n    <div class=\"realsoft-circular-progress__circle-clipper realsoft-circular-progress__circle-right\">\r\n      <ng-container [ngTemplateOutlet]=\"circle\"></ng-container>\r\n    </div>\r\n  </div>\r\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}