{"version":3,"file":"utils.cjs","sources":["../../../../../../packages/components/progress/src/utils.ts"],"sourcesContent":["import type { CSSProperties } from 'vue';\nimport type { Direction } from '../../config-provider';\n\nimport type { ProgressGradient, StringGradients } from './interface';\nimport type { CircleProps, ProgressProps } from './props';\nimport { presetPrimaryColors } from '@ant-design/colors';\n\nimport { devWarning } from '@antdv/utils';\n\n/**\n * {\n *   '0%': '#afc163',\n *   '75%': '#009900',\n *   '50%': 'green',     ====>     '#afc163 0%, #66FF00 25%, #00CC00 50%, #009900 75%, #ffffff 100%'\n *   '25%': '#66FF00',\n *   '100%': '#ffffff'\n * }\n */\nexport function sortGradient(gradients: StringGradients) {\n  let tempArr = [];\n  Object.keys(gradients).forEach((key) => {\n    const formattedKey = Number.parseFloat(key.replace(/%/g, ''));\n    if (!Number.isNaN(formattedKey)) {\n      tempArr.push({\n        key: formattedKey,\n        value: gradients[key],\n      });\n    }\n  });\n  tempArr = tempArr.sort((a, b) => a.key - b.key);\n  return tempArr.map(({ key, value }) => `${value} ${key}%`).join(', ');\n}\n\n/**\n * Then this man came to realize the truth: Besides six pence, there is the moon. Besides bread and\n * butter, there is the bug. And... Besides women, there is the code.\n *\n * @example\n *   {\n *     \"0%\": \"#afc163\",\n *     \"25%\": \"#66FF00\",\n *     \"50%\": \"#00CC00\", // ====>  linear-gradient(to right, #afc163 0%, #66FF00 25%,\n *     \"75%\": \"#009900\", //        #00CC00 50%, #009900 75%, #ffffff 100%)\n *     \"100%\": \"#ffffff\"\n *   }\n */\nexport function handleGradient(strokeColor: ProgressGradient, directionConfig?: Direction): CSSProperties {\n  const {\n    from = presetPrimaryColors.blue,\n    to = presetPrimaryColors.blue,\n    direction = directionConfig === 'rtl' ? 'to left' : 'to right',\n    ...rest\n  } = strokeColor;\n  if (Object.keys(rest).length !== 0) {\n    const sortedGradients = sortGradient(rest as StringGradients);\n    return { backgroundImage: `linear-gradient(${direction}, ${sortedGradients})` };\n  }\n  return { backgroundImage: `linear-gradient(${direction}, ${from}, ${to})` };\n}\n\nexport function validProgress(progress: number | undefined) {\n  if (!progress || progress < 0)\n    return 0;\n\n  if (progress > 100)\n    return 100;\n\n  return progress;\n}\n\nexport function getSuccessPercent({ success, successPercent }: ProgressProps) {\n  let percent = successPercent;\n  /** @deprecated Use `percent` instead */\n  if (success && 'progress' in success) {\n    devWarning(\n      false,\n      'Progress',\n      '`success.progress` is deprecated. Please use `success.percent` instead.',\n    );\n    percent = success.progress;\n  }\n  if (success && 'percent' in success)\n    percent = success.percent;\n\n  return percent;\n}\n\nexport function getPercentage({ percent, success, successPercent }: ProgressProps) {\n  const realSuccessPercent = validProgress(getSuccessPercent({ success, successPercent }));\n  return [realSuccessPercent, validProgress(validProgress(percent) - realSuccessPercent)];\n}\n\nexport function getStrokeColor({\n  success = {},\n  strokeColor,\n}: Partial<CircleProps>): Array<string | Record<string, string>> {\n  const { strokeColor: successColor } = success;\n  // @ts-expect-error\n  return [successColor || presetPrimaryColors.green, strokeColor || null!];\n}\n\nexport function getSize(size: ProgressProps['size'], type: ProgressProps['type'] | 'step', extra?: {\n  steps?: number\n  strokeWidth?: number\n}): { width: number, height: number } {\n  let width = -1;\n  let height = -1;\n  if (type === 'step') {\n    const steps = extra!.steps!;\n    const strokeWidth = extra!.strokeWidth!;\n    if (typeof size === 'string' || typeof size === 'undefined') {\n      width = size === 'small' ? 2 : 14;\n      height = strokeWidth ?? 8;\n    } else if (typeof size === 'number') {\n      [width, height] = [size, size];\n    } else {\n      [width = 14, height = 8] = size;\n    }\n    width *= steps;\n  } else if (type === 'line') {\n    const strokeWidth = extra?.strokeWidth;\n    if (typeof size === 'string' || typeof size === 'undefined')\n      height = strokeWidth || (size === 'small' ? 6 : 8);\n    else if (typeof size === 'number')\n      [width, height] = [size, size];\n    else\n      [width = -1, height = 8] = size;\n  } else if (type === 'circle' || type === 'dashboard') {\n    if (typeof size === 'string' || typeof size === 'undefined') {\n      [width, height] = size === 'small' ? [60, 60] : [120, 120];\n    } else if (typeof size === 'number') {\n      [width, height] = [size, size];\n    } else {\n      if (process.env.NODE_ENV !== 'production') {\n        devWarning(\n          false,\n          'Progress',\n          'Type \"circle\" and \"dashboard\" do not accept array as `size`, please use number or preset size instead.',\n        );\n      }\n\n      width = size[0] ?? size[1] ?? 120;\n      height = size[0] ?? size[1] ?? 120;\n    }\n  }\n  return { width, height };\n}\n"],"names":["presetPrimaryColors","devWarning"],"mappings":"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"}