{"version":3,"file":"ui-vts-kit-ng-vts-progress.mjs","sources":["../../components/progress/utils.ts","../../components/progress/progress.component.ts","../../components/progress/progress.module.ts","../../components/progress/typings.ts","../../components/progress/public-api.ts","../../components/progress/ui-vts-kit-ng-vts-progress.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { VtsProgressColorGradient, VtsProgressGradientProgress } from './typings';\n\nfunction stripPercentToNumber(percent: string): number {\n  return +percent.replace('%', '');\n}\n\nexport const sortGradient = (gradients: VtsProgressGradientProgress) => {\n  let tempArr: Array<{ key: number; value: string }> = [];\n\n  Object.keys(gradients).forEach(key => {\n    const value = gradients[key];\n    const formatKey = stripPercentToNumber(key);\n    if (!isNaN(formatKey)) {\n      tempArr.push({\n        key: formatKey,\n        value\n      });\n    }\n  });\n\n  tempArr = tempArr.sort((a, b) => a.key - b.key);\n  return tempArr;\n};\n\nexport const handleCircleGradient = (\n  strokeColor: VtsProgressGradientProgress\n): Array<{ offset: string; color: string }> => {\n  return sortGradient(strokeColor).map(({ key, value }) => ({\n    offset: `${key}%`,\n    color: value\n  }));\n};\n\nexport const handleLinearGradient = (strokeColor: VtsProgressColorGradient) => {\n  const { from = '#1890ff', to = '#1890ff', direction = 'to right', ...rest } = strokeColor;\n  if (Object.keys(rest).length !== 0) {\n    const sortedGradients = sortGradient(rest as VtsProgressGradientProgress)\n      .map(({ key, value }) => `${value} ${key}%`)\n      .join(', ');\n    return `linear-gradient(${direction}, ${sortedGradients})`;\n  }\n  return `linear-gradient(${direction}, ${from}, ${to})`;\n};\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Direction, Directionality } from '@angular/cdk/bidi';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  SimpleChanges,\n  ViewEncapsulation\n} from '@angular/core';\nimport { VtsConfigKey, VtsConfigService, WithConfig } from '@ui-vts-kit/ng-vts/core/config';\nimport { NgStyleInterface, NumberInput } from '@ui-vts-kit/ng-vts/core/types';\nimport { InputNumber, isNotNil } from '@ui-vts-kit/ng-vts/core/util';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n  VtsProgressCirclePath,\n  VtsProgressColorGradient,\n  VtsProgressFormatter,\n  VtsProgressGapPositionType,\n  VtsProgressGradientProgress,\n  VtsProgressStatusType,\n  VtsProgressStepItem,\n  VtsProgressStrokeColorType,\n  VtsProgressStrokeLinecapType,\n  VtsProgressTypeType\n} from './typings';\nimport { handleCircleGradient, handleLinearGradient } from './utils';\n\nlet gradientIdSeed = 0;\n\nconst VTS_CONFIG_MODULE_NAME: VtsConfigKey = 'progress';\nconst statusIconNameMap = new Map([\n  ['success', 'check'],\n  ['exception', 'close']\n]);\nconst statusColorMap = new Map([\n  ['normal', '#108ee9'],\n  ['exception', '#ff5500'],\n  ['success', '#87d068']\n]);\nconst defaultFormatter: VtsProgressFormatter = (p: number): string => `${p}%`;\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  selector: 'vts-progress',\n  exportAs: 'vtsProgress',\n  preserveWhitespaces: false,\n  template: `\n    <ng-template #progressInfoTemplate>\n      <span class=\"vts-progress-text\" *ngIf=\"vtsShowInfo\">\n        <ng-container\n          *ngIf=\"\n            (status === 'exception' || status === 'success') && !vtsFormat;\n            else formatTemplate\n          \"\n        >\n          <i vts-icon [vtsType]=\"icon\"></i>\n        </ng-container>\n        <ng-template #formatTemplate>\n          <ng-container\n            *vtsStringTemplateOutlet=\"formatter; context: { $implicit: vtsPercent }; let formatter\"\n          >\n            {{ formatter(vtsPercent) }}\n          </ng-container>\n        </ng-template>\n      </span>\n    </ng-template>\n\n    <div\n      [ngClass]=\"'vts-progress vts-progress-status-' + status\"\n      [class.vts-progress-line]=\"vtsType == 'line'\"\n      [class.vts-progress-small]=\"vtsSize == 'small'\"\n      [class.vts-progress-show-info]=\"vtsShowInfo\"\n      [class.vts-progress-circle]=\"isCircleStyle\"\n      [class.vts-progress-steps]=\"isSteps\"\n      [class.vts-progress-rtl]=\"dir === 'rtl'\"\n    >\n      <!-- line progress -->\n      <div *ngIf=\"vtsType === 'line'\">\n        <!-- normal line style -->\n        <ng-container *ngIf=\"!isSteps\">\n          <div class=\"vts-progress-outer\" *ngIf=\"!isSteps\">\n            <div class=\"vts-progress-inner\">\n              <div\n                class=\"vts-progress-bg\"\n                [style.width.%]=\"vtsPercent\"\n                [style.border-radius]=\"vtsStrokeLinecap === 'round' ? '100px' : '0'\"\n                [style.background]=\"!isGradient ? vtsStrokeColor : null\"\n                [style.background-image]=\"isGradient ? lineGradient : null\"\n                [style.height.px]=\"strokeWidth\"\n              ></div>\n              <div\n                *ngIf=\"vtsSuccessPercent || vtsSuccessPercent === 0\"\n                class=\"vts-progress-success-bg\"\n                [style.width.%]=\"vtsSuccessPercent\"\n                [style.border-radius]=\"vtsStrokeLinecap === 'round' ? '100px' : '0'\"\n                [style.height.px]=\"strokeWidth\"\n              ></div>\n            </div>\n          </div>\n          <ng-template [ngTemplateOutlet]=\"progressInfoTemplate\"></ng-template>\n        </ng-container>\n        <!-- step style -->\n        <div class=\"vts-progress-steps-outer\" *ngIf=\"isSteps\">\n          <div\n            *ngFor=\"let step of steps; let i = index\"\n            class=\"vts-progress-steps-item\"\n            [ngStyle]=\"step\"\n          ></div>\n          <ng-template [ngTemplateOutlet]=\"progressInfoTemplate\"></ng-template>\n        </div>\n      </div>\n\n      <!-- circle / dashboard progress -->\n      <div\n        [style.width.px]=\"this.vtsWidth\"\n        [style.height.px]=\"this.vtsWidth\"\n        [style.fontSize.px]=\"this.vtsWidth * 0.15 + 6\"\n        class=\"vts-progress-inner\"\n        [class.vts-progress-circle-gradient]=\"isGradient\"\n        *ngIf=\"isCircleStyle\"\n      >\n        <svg class=\"vts-progress-circle \" viewBox=\"0 0 100 100\">\n          <defs *ngIf=\"isGradient\">\n            <linearGradient [id]=\"'gradient-' + gradientId\" x1=\"100%\" y1=\"0%\" x2=\"0%\" y2=\"0%\">\n              <stop\n                *ngFor=\"let i of circleGradient\"\n                [attr.offset]=\"i.offset\"\n                [attr.stop-color]=\"i.color\"\n              ></stop>\n            </linearGradient>\n          </defs>\n          <path\n            class=\"vts-progress-circle-trail\"\n            stroke=\"#f3f3f3\"\n            fill-opacity=\"0\"\n            [attr.stroke-width]=\"strokeWidth\"\n            [attr.d]=\"pathString\"\n            [ngStyle]=\"trailPathStyle\"\n          ></path>\n          <path\n            *ngFor=\"let p of progressCirclePath; trackBy: trackByFn\"\n            class=\"vts-progress-circle-path\"\n            fill-opacity=\"0\"\n            [attr.d]=\"pathString\"\n            [attr.stroke-linecap]=\"vtsStrokeLinecap\"\n            [attr.stroke]=\"p.stroke\"\n            [attr.stroke-width]=\"vtsPercent ? strokeWidth : 0\"\n            [ngStyle]=\"p.strokePathStyle\"\n          ></path>\n        </svg>\n        <ng-template [ngTemplateOutlet]=\"progressInfoTemplate\"></ng-template>\n      </div>\n    </div>\n  `\n})\nexport class VtsProgressComponent implements OnChanges, OnInit, OnDestroy {\n  readonly _vtsModuleName: VtsConfigKey = VTS_CONFIG_MODULE_NAME;\n\n  static ngAcceptInputType_vtsSuccessPercent: NumberInput;\n  static ngAcceptInputType_vtsPercent: NumberInput;\n  static ngAcceptInputType_vtsStrokeWidth: NumberInput;\n  static ngAcceptInputType_vtsGapDegree: NumberInput;\n  static ngAcceptInputType_vtsSteps: NumberInput;\n\n  @Input() @WithConfig() vtsShowInfo: boolean = true;\n  @Input() vtsWidth = 132;\n  @Input()\n  @WithConfig()\n  vtsStrokeColor?: VtsProgressStrokeColorType = undefined;\n  @Input() @WithConfig() vtsSize: 'default' | 'small' = 'default';\n  @Input() vtsFormat?: VtsProgressFormatter;\n  @Input() @InputNumber() vtsSuccessPercent?: number;\n  @Input() @InputNumber() vtsPercent: number = 0;\n  @Input() @WithConfig() @InputNumber() vtsStrokeWidth?: number = undefined;\n  @Input() @WithConfig() @InputNumber() vtsGapDegree?: number = undefined;\n  @Input() vtsStatus?: VtsProgressStatusType;\n  @Input() vtsType: VtsProgressTypeType = 'line';\n  @Input() @WithConfig() vtsGapPosition: VtsProgressGapPositionType = 'top';\n  @Input() @WithConfig() vtsStrokeLinecap: VtsProgressStrokeLinecapType = 'round';\n\n  @Input() @InputNumber() vtsSteps: number = 0;\n\n  steps: VtsProgressStepItem[] = [];\n\n  /** Gradient style when `vtsType` is `line`. */\n  lineGradient: string | null = null;\n\n  /** If user uses gradient color. */\n  isGradient = false;\n\n  /** If the linear progress is a step progress. */\n  isSteps = false;\n\n  /**\n   * Each progress whose `vtsType` is circle or dashboard should have unique id to\n   * define `<linearGradient>`.\n   */\n  gradientId = gradientIdSeed++;\n\n  /** Paths to rendered in the template. */\n  progressCirclePath: VtsProgressCirclePath[] = [];\n  circleGradient?: Array<{ offset: string; color: string }>;\n  trailPathStyle: NgStyleInterface | null = null;\n  pathString?: string;\n  icon!: string;\n\n  dir: Direction = 'ltr';\n\n  trackByFn = (index: number) => `${index}`;\n\n  get formatter(): VtsProgressFormatter {\n    return this.vtsFormat || defaultFormatter;\n  }\n\n  get status(): VtsProgressStatusType {\n    return this.vtsStatus || this.inferredStatus;\n  }\n\n  get strokeWidth(): number {\n    return this.vtsStrokeWidth || (this.vtsType === 'line' && this.vtsSize !== 'small' ? 8 : 6);\n  }\n\n  get isCircleStyle(): boolean {\n    return this.vtsType === 'circle' || this.vtsType === 'dashboard';\n  }\n\n  private cachedStatus: VtsProgressStatusType = 'normal';\n  private inferredStatus: VtsProgressStatusType = 'normal';\n  private destroy$ = new Subject<void>();\n\n  constructor(\n    private cdr: ChangeDetectorRef,\n    public vtsConfigService: VtsConfigService,\n    @Optional() private directionality: Directionality\n  ) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const {\n      vtsSteps,\n      vtsGapPosition,\n      vtsStrokeLinecap,\n      vtsStrokeColor,\n      vtsGapDegree,\n      vtsType,\n      vtsStatus,\n      vtsPercent,\n      vtsSuccessPercent,\n      vtsStrokeWidth\n    } = changes;\n\n    if (vtsStatus) {\n      this.cachedStatus = this.vtsStatus || this.cachedStatus;\n    }\n\n    if (vtsPercent || vtsSuccessPercent) {\n      const fillAll = parseInt(this.vtsPercent.toString(), 10) >= 100;\n      if (fillAll) {\n        if (\n          (isNotNil(this.vtsSuccessPercent) && this.vtsSuccessPercent! >= 100) ||\n          this.vtsSuccessPercent === undefined\n        ) {\n          this.inferredStatus = 'success';\n        }\n      } else {\n        this.inferredStatus = this.cachedStatus;\n      }\n    }\n\n    if (vtsStatus || vtsPercent || vtsSuccessPercent || vtsStrokeColor) {\n      this.updateIcon();\n    }\n\n    if (vtsStrokeColor) {\n      this.setStrokeColor();\n    }\n\n    if (\n      vtsGapPosition ||\n      vtsStrokeLinecap ||\n      vtsGapDegree ||\n      vtsType ||\n      vtsPercent ||\n      vtsStrokeColor ||\n      vtsStrokeColor\n    ) {\n      this.getCirclePaths();\n    }\n\n    if (vtsPercent || vtsSteps || vtsStrokeWidth) {\n      this.isSteps = this.vtsSteps > 0;\n      if (this.isSteps) {\n        this.getSteps();\n      }\n    }\n  }\n\n  ngOnInit(): void {\n    this.vtsConfigService\n      .getConfigChangeEventForComponent(VTS_CONFIG_MODULE_NAME)\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => {\n        this.updateIcon();\n        this.setStrokeColor();\n        this.getCirclePaths();\n      });\n\n    this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction: Direction) => {\n      this.dir = direction;\n      this.cdr.detectChanges();\n    });\n\n    this.dir = this.directionality.value;\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  private updateIcon(): void {\n    const ret = statusIconNameMap.get(this.status);\n    this.icon = ret ? ret + (this.isCircleStyle ? '-o' : '-circle-fill') : '';\n  }\n\n  /**\n   * Calculate step render configs.\n   */\n  private getSteps(): void {\n    const current = Math.floor(this.vtsSteps * (this.vtsPercent / 100));\n    const stepWidth = this.vtsSize === 'small' ? 2 : 14;\n\n    const steps = [];\n\n    for (let i = 0; i < this.vtsSteps; i++) {\n      let color;\n      if (i <= current - 1) {\n        color = this.vtsStrokeColor;\n      }\n      const stepStyle = {\n        backgroundColor: `${color}`,\n        width: `${stepWidth}px`,\n        height: `${this.strokeWidth}px`\n      };\n      steps.push(stepStyle);\n    }\n\n    this.steps = steps;\n  }\n\n  /**\n   * Calculate paths when the type is circle or dashboard.\n   */\n  private getCirclePaths(): void {\n    if (!this.isCircleStyle) {\n      return;\n    }\n\n    const values = isNotNil(this.vtsSuccessPercent)\n      ? [this.vtsSuccessPercent!, this.vtsPercent]\n      : [this.vtsPercent];\n\n    // Calculate shared styles.\n    const radius = 50 - this.strokeWidth / 2;\n    const gapPosition = this.vtsGapPosition || (this.vtsType === 'circle' ? 'top' : 'bottom');\n    const len = Math.PI * 2 * radius;\n    const gapDegree = this.vtsGapDegree || (this.vtsType === 'circle' ? 0 : 75);\n\n    let beginPositionX = 0;\n    let beginPositionY = -radius;\n    let endPositionX = 0;\n    let endPositionY = radius * -2;\n\n    switch (gapPosition) {\n      case 'left':\n        beginPositionX = -radius;\n        beginPositionY = 0;\n        endPositionX = radius * 2;\n        endPositionY = 0;\n        break;\n      case 'right':\n        beginPositionX = radius;\n        beginPositionY = 0;\n        endPositionX = radius * -2;\n        endPositionY = 0;\n        break;\n      case 'bottom':\n        beginPositionY = radius;\n        endPositionY = radius * 2;\n        break;\n      default:\n    }\n\n    this.pathString = `M 50,50 m ${beginPositionX},${beginPositionY}\n       a ${radius},${radius} 0 1 1 ${endPositionX},${-endPositionY}\n       a ${radius},${radius} 0 1 1 ${-endPositionX},${endPositionY}`;\n\n    this.trailPathStyle = {\n      strokeDasharray: `${len - gapDegree}px ${len}px`,\n      strokeDashoffset: `-${gapDegree / 2}px`,\n      transition: 'stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s'\n    };\n\n    // Calculate styles for each path.\n    this.progressCirclePath = values\n      .map((value, index) => {\n        const isSuccessPercent = values.length === 2 && index === 0;\n        return {\n          stroke: this.isGradient && !isSuccessPercent ? `url(#gradient-${this.gradientId})` : null,\n          strokePathStyle: {\n            stroke: !this.isGradient\n              ? isSuccessPercent\n                ? statusColorMap.get('success')\n                : (this.vtsStrokeColor as string)\n              : null,\n            transition:\n              'stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s',\n            strokeDasharray: `${((value || 0) / 100) * (len - gapDegree)}px ${len}px`,\n            strokeDashoffset: `-${gapDegree / 2}px`\n          }\n        };\n      })\n      .reverse();\n  }\n\n  private setStrokeColor(): void {\n    const color = this.vtsStrokeColor;\n    const isGradient = (this.isGradient = !!color && typeof color !== 'string');\n    if (isGradient && !this.isCircleStyle) {\n      this.lineGradient = handleLinearGradient(color as VtsProgressColorGradient);\n    } else if (isGradient && this.isCircleStyle) {\n      this.circleGradient = handleCircleGradient(\n        this.vtsStrokeColor as VtsProgressGradientProgress\n      );\n    } else {\n      this.lineGradient = null;\n      this.circleGradient = [];\n    }\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { VtsOutletModule } from '@ui-vts-kit/ng-vts/core/outlet';\nimport { VtsIconModule } from '@ui-vts-kit/ng-vts/icon';\n\nimport { VtsProgressComponent } from './progress.component';\n\n@NgModule({\n  exports: [VtsProgressComponent],\n  declarations: [VtsProgressComponent],\n  imports: [BidiModule, CommonModule, VtsIconModule, VtsOutletModule]\n})\nexport class VtsProgressModule {}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { TemplateRef } from '@angular/core';\nimport { NgStyleInterface } from '@ui-vts-kit/ng-vts/core/types';\n\nexport type VtsProgressGapPositionType = 'top' | 'bottom' | 'left' | 'right';\n\nexport type VtsProgressStatusType = 'success' | 'exception' | 'active' | 'normal';\n\nexport type VtsProgressTypeType = 'line' | 'circle' | 'dashboard';\n\nexport type VtsProgressStrokeLinecapType = 'round' | 'square';\n\nexport interface VtsProgressGradientProgress {\n  [percent: string]: string;\n}\n\nexport interface VtsProgressGradientFromTo {\n  from: string;\n  to: string;\n}\n\nexport type VtsProgressColorGradient = { direction?: string } & (\n  | VtsProgressGradientProgress\n  | VtsProgressGradientFromTo\n);\n\nexport type VtsProgressStrokeColorType = string | VtsProgressColorGradient;\n\nexport type VtsProgressFormatter =\n  | ((percent: number) => string)\n  | TemplateRef<{ $implicit: number }>;\n\nexport interface VtsProgressCirclePath {\n  stroke: string | null;\n  strokePathStyle: NgStyleInterface;\n}\n\nexport interface VtsProgressStepItem {\n  backgroundColor: string;\n  width: string;\n  height: string;\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport { VtsProgressModule } from './progress.module';\nexport { VtsProgressComponent } from './progress.component';\nexport * from './typings';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}