{"version":3,"file":"ng-nest-ui-progress.mjs","sources":["../../../../lib/ng-nest/ui/progress/progress.property.ts","../../../../lib/ng-nest/ui/progress/progress.component.ts","../../../../lib/ng-nest/ui/progress/progress.component.html","../../../../lib/ng-nest/ui/progress/progress.module.ts","../../../../lib/ng-nest/ui/progress/ng-nest-ui-progress.ts"],"sourcesContent":["import { Component, input, TemplateRef } from '@angular/core';\r\nimport { XPropertyFunction, XToNumber, XToCssPixelValue, XToBoolean } from '@ng-nest/ui/core';\r\nimport type { XNumber, XBoolean } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Progress\r\n * @selector x-progress\r\n * @decorator component\r\n */\r\nexport const XProgressPrefix = 'x-progress';\r\nconst X_PROGRESS_CONFIG_NAME = 'progress';\r\n\r\n/**\r\n * Progress Property\r\n */\r\n@Component({ selector: `${XProgressPrefix}-property`, template: '' })\r\nexport class XProgressProperty extends XPropertyFunction(X_PROGRESS_CONFIG_NAME) {\r\n  /**\r\n   * @zh_CN 进度条类型\r\n   * @en_US Progress bar type\r\n   */\r\n  readonly type = input<XProgressType>('line');\r\n  /**\r\n   * @zh_CN 显示进度 0-100\r\n   * @en_US Show progress 0-100\r\n   */\r\n  readonly percent = input<number, XNumber>(0, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 进度条高度\r\n   * @en_US Height of progress bar\r\n   */\r\n  readonly height = input<string, XNumber>(this.config?.height ?? '1rem', { transform: XToCssPixelValue });\r\n  /**\r\n   * @zh_CN 状态\r\n   * @en_US Status\r\n   */\r\n  readonly status = input<XProgressStatus>('normal');\r\n  /**\r\n   * @zh_CN 自定义显示文字/图标\r\n   * @en_US Custom display info/icon\r\n   */\r\n  readonly infoTpl = input<TemplateRef<any>>();\r\n  /**\r\n   * @zh_CN 是否显示百分比文本信息\r\n   * @en_US Whether to display percentage text\r\n   */\r\n  readonly info = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 文本信息宽度\r\n   * @en_US The width of the text information\r\n   */\r\n  readonly infoWidth = input<string, XNumber>('3.5rem', { transform: XToCssPixelValue });\r\n  /**\r\n   * @zh_CN 百分比文本是否显示在进度条里面\r\n   * @en_US Whether the percentage text is displayed in the progress bar\r\n   */\r\n  readonly inside = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 自定义百分比文本内容\r\n   * @en_US Custom percentage text content\r\n   */\r\n  readonly format = input<(percent: number) => string>();\r\n  /**\r\n   * @zh_CN 自定义颜色\r\n   * @en_US Custom color\r\n   */\r\n  readonly color = input<XProgressColor>();\r\n  /**\r\n   * @zh_CN 自定义轨道颜色\r\n   * @en_US Custom rail color\r\n   */\r\n  readonly railColor = input<XProgressColor>();\r\n  /**\r\n   * @zh_CN 渐变颜色\r\n   * @en_US Gradient color\r\n   */\r\n  readonly gradient = input<XProgressGradient>();\r\n  /**\r\n   * @zh_CN 步骤进度条\r\n   * @en_US Steps progress bar\r\n   */\r\n  readonly steps = input<number | null, XNumber>(null, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 单个步骤的宽度\r\n   * @en_US Single step width\r\n   */\r\n  readonly stepWidth = input<string, XNumber>('2rem', { transform: XToCssPixelValue });\r\n  /**\r\n   * @zh_CN 单个步骤的宽度自适应\r\n   * @en_US Single step width flex\r\n   */\r\n  readonly stepFlex = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 圆环/仪表盘厚度\r\n   * @en_US Ring thickness\r\n   */\r\n  readonly thickness = input<string, XNumber>('1rem', { transform: XToCssPixelValue });\r\n  /**\r\n   * @zh_CN 圆环/仪表盘尺寸\r\n   * @en_US Ring size\r\n   */\r\n  readonly size = input<string, XNumber>('8rem', { transform: XToCssPixelValue });\r\n  /**\r\n   * @zh_CN 仪表盘缺口角度 0~300\r\n   * @en_US Dashboard notch angle\r\n   */\r\n  readonly notchAngle = input<number, XNumber>(80, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 分段显示颜色，只适用 type = 'line'\r\n   * @en_US Segmentation display color, only use of type = 'line'\r\n   */\r\n  readonly subsection = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n}\r\n\r\n/**\r\n * @zh_CN 进度条类型\r\n * @en_US Progress bar type\r\n */\r\nexport type XProgressType = 'line' | 'circle' | 'dashboard';\r\n\r\n/**\r\n * @zh_CN 进度条颜色\r\n * @en_US Progress bar color\r\n */\r\nexport type XProgressColor = string | XProgressColorNode[] | Function;\r\n\r\n/**\r\n * @zh_CN 进度条节点颜色\r\n * @en_US Progress bar node color\r\n */\r\nexport interface XProgressColorNode {\r\n  /**\r\n   * @zh_CN 颜色\r\n   * @en_US Color\r\n   */\r\n  color: string;\r\n  /**\r\n   * @zh_CN 百分比\r\n   * @en_US Percent\r\n   */\r\n  percent: number;\r\n}\r\n/**\r\n * @zh_CN 状态\r\n * @en_US Status\r\n */\r\nexport type XProgressStatus = 'normal' | 'active' | 'success' | 'exception' | 'warning';\r\n\r\n/**\r\n * @zh_CN 渐变颜色\r\n * @en_US Gradient color\r\n */\r\nexport type XProgressGradient = { direction?: string } & ({ from: string; to: string } | { [percent: string]: string });\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, computed } from '@angular/core';\r\nimport { XProgressPrefix, XProgressProperty } from './progress.property';\r\nimport { XIsFunction, XIsString, XIsObjectArray, XIsEmpty, XIsNumber } from '@ng-nest/ui/core';\r\nimport { XProgressColorNode } from './progress.property';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport type { XNumber } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n  selector: `${XProgressPrefix}`,\r\n  imports: [NgClass, NgTemplateOutlet, FormsModule, XIconComponent],\r\n  templateUrl: './progress.component.html',\r\n  styleUrls: ['./progress.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XProgressComponent extends XProgressProperty {\r\n  maskWidth = computed(() => (XIsNumber(this.percent()) ? 100 - this.percent() : 100));\r\n\r\n  classMap = computed(() => ({\r\n    [`${XProgressPrefix}-${this.status()}`]: true,\r\n    [`${XProgressPrefix}-${this.type()}`]: true,\r\n    [`${XProgressPrefix}-inside`]: this.inside()\r\n  }));\r\n\r\n  stepsArray = computed(() => {\r\n    const steps = this.steps();\r\n    if (XIsEmpty(steps)) {\r\n      return [];\r\n    } else {\r\n      const critical = Math.ceil((this.percent() / 100) * steps!);\r\n      return Array.from({ length: steps! }).map((_, index) => index + 1 <= critical);\r\n    }\r\n  });\r\n\r\n  currentColor = computed(() => {\r\n    if (this.subsection()) return '';\r\n    const color = this.color();\r\n    if (XIsEmpty(color)) return '';\r\n    if (XIsString(color)) {\r\n      return color;\r\n    } else if (XIsObjectArray(color)) {\r\n      return this.getLevelColor(this.percent(), color as XProgressColorNode[]);\r\n    } else if (XIsFunction(color)) {\r\n      return (color as Function)(this.percent());\r\n    }\r\n  });\r\n\r\n  currentRailColor = computed(() => {\r\n    if (this.subsection()) return '';\r\n    const color = this.railColor();\r\n    if (XIsEmpty(color)) return '';\r\n    if (XIsString(color)) {\r\n      return color;\r\n    } else if (XIsObjectArray(color)) {\r\n      return this.getLevelColor(this.percent(), color as XProgressColorNode[]);\r\n    } else if (XIsFunction(color)) {\r\n      return (color as Function)(this.percent());\r\n    }\r\n  });\r\n\r\n  linearGradient = computed(() => {\r\n    if (this.subsection()) return '';\r\n    if (XIsEmpty(this.gradient())) {\r\n      return '';\r\n    } else {\r\n      const { from, to, direction = 'to right', ...percents } = this.gradient() || {};\r\n      if (Object.keys(percents).length !== 0) {\r\n        return `linear-gradient(${direction}, ${this.sortGradient(percents as { [percent: string]: string }).map(\r\n          ({ key, value }) => `${value} ${key}%`\r\n        )})`;\r\n      }\r\n      return `linear-gradient(${direction}, ${from}, ${to})`;\r\n    }\r\n  });\r\n\r\n  /**\r\n   * circle 中的 100% 等于 clip-path 中的 400%\r\n   */\r\n  circleClipPath = computed(() => {\r\n    if (this.type() !== 'circle') return '';\r\n    let value = this.percent() * 4;\r\n    let k1 = 'polygon(50% 50%,50% 0%,';\r\n    let k2 = k1 + '100% 0%,';\r\n    let k3 = k2 + '100% 100%,';\r\n    let k4 = k3 + '0% 100%,';\r\n    let k5 = k4 + '0% 0%,';\r\n    if (value <= 50) {\r\n      value += 50;\r\n      return `${k1}${value}% 0%)`;\r\n    } else if (value > 50 && value <= 150) {\r\n      value -= 50;\r\n      return `${k2}100% ${value}%)`;\r\n    } else if (value > 150 && value <= 250) {\r\n      value = 250 - value;\r\n      return `${k3}${value}% 100%)`;\r\n    } else if (value > 250 && value <= 350) {\r\n      value = 350 - value;\r\n      return `${k4}0% ${value}%)`;\r\n    } else if (value > 350 && value <= 400) {\r\n      value -= 350;\r\n      return `${k5}${value}% 0%)`;\r\n    }\r\n    return '';\r\n  });\r\n\r\n  railValue = computed(() => {\r\n    if (this.type() !== 'dashboard') return 0;\r\n    return (this.notchAngle() / 360) * 50 * 4;\r\n  });\r\n\r\n  dashboardStart = computed(() => {\r\n    if (this.type() !== 'dashboard') return '';\r\n    let k1 = `polygon(50% 50%,`;\r\n    let per = 0;\r\n    let railValue = this.railValue();\r\n    if (railValue <= 50) {\r\n      per = 50 - railValue;\r\n      return `${k1} ${per}% 100%`;\r\n    } else if (railValue > 50 && railValue <= 150) {\r\n      per = 150 - railValue;\r\n      return `${k1} 0% ${per}%`;\r\n    } else if (railValue > 150 && railValue <= 250) {\r\n      per = railValue - 150;\r\n      return `${k1} ${per}% 0%`;\r\n    }\r\n    return '';\r\n  });\r\n\r\n  /**\r\n   *\r\n   * 90 polygon(50% 50%, 0% 100%, 0% 0%, 100% 0%, 100% 100%);\r\n   * 180 polygon(50% 50%, 0% 50%, 0% 0%, 100% 0%, 100% 50%);\r\n   * 270 polygon(50% 50%, 0% 0%, 100% 0%);\r\n   */\r\n  dashboardRailClipPath = computed(() => {\r\n    if (this.type() !== 'dashboard') return '';\r\n    let start = this.dashboardStart();\r\n    let per = 0;\r\n    let railValue = this.railValue();\r\n    if (railValue <= 50) {\r\n      per = 50 - railValue;\r\n      return `${start}, 0% 100%, 0% 0%, 100% 0%, 100% 100%, ${100 - per}% 100%)`;\r\n    } else if (railValue > 50 && railValue <= 150) {\r\n      per = 150 - railValue;\r\n      return `${start}, 0% 0%, 100% 0%, 100% ${per}%)`;\r\n    } else if (railValue > 150 && railValue <= 250) {\r\n      per = railValue - 150;\r\n      return `${start}, ${100 - per}% 0%)`;\r\n    }\r\n    return '';\r\n  });\r\n\r\n  dashboardClipPath = computed(() => {\r\n    if (this.type() !== 'dashboard') return '';\r\n    return this.setCircleClipPathValue(this.dashboardStart(), this.railValue());\r\n  });\r\n\r\n  subLinearGradient = computed(() => {\r\n    if (!this.subsection()) return '';\r\n    let colors = this.color() as XProgressColorNode[];\r\n    if (!colors || colors.length <= 0) {\r\n      return `linear-gradient(to right, var(--x-primary) 0%, var(--x-primary) 100%)`;\r\n    } else if (colors.length === 1) {\r\n      colors.push({ percent: 100, color: 'var(--x-primary)' });\r\n    }\r\n    colors = colors.sort((a, b) => a.percent - b.percent);\r\n    let lgs: string[] = [];\r\n    colors.reduce((a, b, index) => {\r\n      if (index === 1 && a.percent > 0) {\r\n        lgs.push(`${a.color} 0%, ${a.color} ${a.percent}%`);\r\n      }\r\n      lgs.push(`${b.color} ${a.percent}%, ${b.color} ${b.percent}%`);\r\n      if (index === colors.length - 1 && b.percent < 100) {\r\n        lgs.push(`var(--x-primary) ${b.percent}%, var(--x-primary) 100%`);\r\n      }\r\n      return b;\r\n    });\r\n    return `linear-gradient(to right,${lgs.join(',')})`;\r\n  });\r\n\r\n  getLevelColor(percent: XNumber, color: XProgressColorNode[]) {\r\n    let colors = color.sort((a, b) => a.percent - b.percent);\r\n    for (let i = 0; i < colors.length; i++) {\r\n      if (colors[i].percent > Number(percent)) {\r\n        return colors[i].color;\r\n      }\r\n    }\r\n    return colors[colors.length - 1].color;\r\n  }\r\n\r\n  sortGradient(percents: { [percent: string]: string }) {\r\n    let arr: { key: number; value: string }[] = [];\r\n    Object.keys(percents).forEach((key) => {\r\n      const value = percents[key];\r\n      const numKey = +key.replace('%', '');\r\n      if (!isNaN(numKey)) {\r\n        arr.push({ key: numKey, value });\r\n      }\r\n    });\r\n    return arr.sort((a, b) => a.key - b.key);\r\n  }\r\n\r\n  setCircleClipPathValue(start: string, railValue: number) {\r\n    let value = ((400 - railValue * 2) / 100) * this.percent();\r\n    let val = value + railValue;\r\n    if (val <= 50) {\r\n      val = 50 - val;\r\n      return `${start}, ${val}% 100%)`;\r\n    } else if (val > 50 && val <= 150) {\r\n      val = 150 - val;\r\n      return `${start}, 0% 100%, 0% ${val}%)`;\r\n    } else if (val > 150 && val <= 250) {\r\n      val = val - 150;\r\n      return `${start}, 0% 100%, 0% 0%, ${val}% 0%)`;\r\n    } else if (val > 250 && val <= 350) {\r\n      val = val - 250;\r\n      return `${start}, 0% 100%, 0% 0%, 100% 0%, 100% ${val}%)`;\r\n    } else if (val > 350 && val <= 400) {\r\n      val = 100 - (val - 350);\r\n      return `${start}, 0% 100%, 0% 0%, 100% 0%, 100% 100%, ${val}% 100%)`;\r\n    }\r\n    return '';\r\n  }\r\n}\r\n","<div\r\n  class=\"x-progress\"\r\n  [ngClass]=\"classMap()\"\r\n  [class.x-progress-steps]=\"stepsArray().length > 0\"\r\n  [class.x-progress-steps-flex]=\"stepFlex()\"\r\n>\r\n  @switch (type()) {\r\n    @case ('circle') {\r\n      <ng-container *ngTemplateOutlet=\"circleTpl\"> </ng-container>\r\n    }\r\n    @case ('dashboard') {\r\n      <ng-container *ngTemplateOutlet=\"dashboardTpl\"> </ng-container>\r\n    }\r\n    @default {\r\n      <ng-container *ngTemplateOutlet=\"lineTpl\"> </ng-container>\r\n    }\r\n  }\r\n</div>\r\n\r\n<ng-template #lineTpl>\r\n  @if (stepsArray().length === 0) {\r\n    <ng-container *ngTemplateOutlet=\"trackTpl\"></ng-container>\r\n  }\r\n  @if (stepsArray().length > 0) {\r\n    <ng-container *ngTemplateOutlet=\"stepsTpl\"></ng-container>\r\n  }\r\n  @if (info() && !inside()) {\r\n    <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n  }\r\n</ng-template>\r\n\r\n<ng-template #circleTpl>\r\n  <div class=\"x-progress-ring\" [style.width]=\"size()\" [style.height]=\"size()\">\r\n    <div\r\n      class=\"x-progress-ring-rail\"\r\n      [style.border-width]=\"thickness()\"\r\n      [style.border-color]=\"currentRailColor()\"\r\n    ></div>\r\n    <div\r\n      class=\"x-progress-ring-bg\"\r\n      [style.clip-path]=\"circleClipPath()\"\r\n      [style.border-color]=\"currentColor()\"\r\n      [style.border-width]=\"thickness()\"\r\n    ></div>\r\n    <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n  </div>\r\n</ng-template>\r\n\r\n<ng-template #dashboardTpl>\r\n  <div class=\"x-progress-ring\" [style.width]=\"size()\" [style.height]=\"size()\">\r\n    <div\r\n      class=\"x-progress-ring-rail\"\r\n      [style.clip-path]=\"dashboardRailClipPath()\"\r\n      [style.border-color]=\"currentRailColor()\"\r\n      [style.border-width]=\"thickness()\"\r\n    ></div>\r\n    <div\r\n      class=\"x-progress-ring-bg\"\r\n      [style.clip-path]=\"dashboardClipPath()\"\r\n      [style.border-color]=\"currentColor()\"\r\n      [style.border-width]=\"thickness()\"\r\n    ></div>\r\n    <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n  </div>\r\n</ng-template>\r\n\r\n<ng-template #trackTpl>\r\n  <div class=\"x-progress-track\">\r\n    <div\r\n      class=\"x-progress-rail\"\r\n      [class.x-progress-mask]=\"subsection()\"\r\n      [style.background-color]=\"currentRailColor()\"\r\n      [style.background-image]=\"subsection() ? subLinearGradient() : 'none'\"\r\n    >\r\n      <div\r\n        class=\"x-progress-bg\"\r\n        [style.width.%]=\"percent()\"\r\n        [style.background-color]=\"currentColor()\"\r\n        [style.background-image]=\"linearGradient()\"\r\n        [style.height]=\"height()\"\r\n        [style.line-height]=\"height()\"\r\n      >\r\n        @if (info() && inside()) {\r\n          <ng-container *ngTemplateOutlet=\"textTpl\"></ng-container>\r\n        }\r\n      </div>\r\n      @if (subsection()) {\r\n        <div\r\n          class=\"x-progress-bg-mask\"\r\n          [style.width.%]=\"maskWidth()\"\r\n          [style.height]=\"height()\"\r\n          [style.line-height]=\"height()\"\r\n        ></div>\r\n      }\r\n    </div>\r\n  </div>\r\n</ng-template>\r\n\r\n<ng-template #stepsTpl>\r\n  @for (step of stepsArray(); track i; let i = $index) {\r\n    <div\r\n      class=\"x-progress-step\"\r\n      [class.x-progress-step-active]=\"step\"\r\n      [style.background-color]=\"step ? currentColor() : currentRailColor()\"\r\n      [style.width]=\"stepWidth()\"\r\n      [style.flex]=\"stepFlex() ? 1 : 'none'\"\r\n      [style.height]=\"height()\"\r\n      [style.line-height]=\"height()\"\r\n    ></div>\r\n  }\r\n</ng-template>\r\n\r\n<ng-template #textTpl>\r\n  <span class=\"x-progress-text\" [style.width]=\"infoWidth()\">\r\n    @if (infoTpl()) {\r\n      <ng-container *ngTemplateOutlet=\"infoTpl()!; context: { $status: status(), $percent: percent() }\"> </ng-container>\r\n    } @else {\r\n      @switch (status()) {\r\n        @case ('success') {\r\n          <x-icon type=\"fto-check-circle\"></x-icon>\r\n        }\r\n        @case ('exception') {\r\n          <x-icon type=\"fto-x-circle\"></x-icon>\r\n        }\r\n        @case ('warning') {\r\n          <x-icon type=\"fto-help-circle\"></x-icon>\r\n        }\r\n        @default {\r\n          @if (format()) {\r\n            {{ format()!(percent()) }}\r\n          } @else {\r\n            {{ percent() }}%\r\n          }\r\n        }\r\n      }\r\n    }\r\n  </span>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XProgressComponent } from './progress.component';\r\n\r\n@NgModule({\r\n  exports: [XProgressComponent],\r\n  imports: [XProgressComponent]\r\n})\r\nexport class XProgressModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}