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