{"version":3,"file":"Circle.cjs","sources":["../../../../../../packages/vue-components/vc-progress/src/Circle.tsx"],"sourcesContent":["import type { GapPositionType } from './types';\nimport { useRefs } from '@antdv/hooks';\nimport { initDefaultProps } from '@antdv/utils';\nimport { computed, defineComponent, ref } from 'vue';\nimport { defaultProps, useTransitionDuration } from './common';\nimport { propTypes } from './types';\n\nlet gradientSeed = 0;\n\nfunction stripPercentToNumber(percent: string) {\n  return +percent.replace('%', '');\n}\n\nfunction toArray(value: any) {\n  return Array.isArray(value) ? value : [value];\n}\n\nfunction getPathStyles(\n  offset: number,\n  percent: number,\n  strokeColor: string,\n  strokeWidth: number,\n  gapDegree = 0,\n  gapPosition: GapPositionType,\n) {\n  const radius = 50 - strokeWidth / 2;\n  let beginPositionX = 0;\n  let beginPositionY = -radius;\n  let endPositionX = 0;\n  let endPositionY = -2 * radius;\n  switch (gapPosition) {\n    case 'left':\n      beginPositionX = -radius;\n      beginPositionY = 0;\n      endPositionX = 2 * radius;\n      endPositionY = 0;\n      break;\n    case 'right':\n      beginPositionX = radius;\n      beginPositionY = 0;\n      endPositionX = -2 * radius;\n      endPositionY = 0;\n      break;\n    case 'bottom':\n      beginPositionY = radius;\n      endPositionY = 2 * radius;\n      break;\n    default:\n  }\n  const 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  const len = Math.PI * 2 * radius;\n\n  const pathStyle = {\n    stroke: strokeColor,\n    strokeDasharray: `${(percent / 100) * (len - gapDegree)}px ${len}px`,\n    strokeDashoffset: `-${gapDegree / 2 + (offset / 100) * (len - gapDegree)}px`,\n    transition:\n      'stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s',\n  };\n\n  return {\n    pathString,\n    pathStyle,\n  };\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'VCCircle',\n  props: initDefaultProps(propTypes, defaultProps),\n  setup(props) {\n    gradientSeed += 1;\n    const gradientId = ref(gradientSeed);\n    const percentList = computed(() => toArray(props.percent));\n    const strokeColorList = computed(() => toArray(props.strokeColor));\n\n    const [setRef, paths] = useRefs();\n    useTransitionDuration(paths);\n\n    const getStokeList = () => {\n      const { prefixCls, strokeWidth, strokeLinecap, gapDegree, gapPosition } = props;\n\n      let stackPtg = 0;\n      return percentList.value.map((ptg, index) => {\n        const color\n          = strokeColorList.value[index] || strokeColorList.value[strokeColorList.value.length - 1];\n        const stroke\n          = Object.prototype.toString.call(color) === '[object Object]'\n            ? `url(#${prefixCls}-gradient-${gradientId.value})`\n            : '';\n        const { pathString, pathStyle } = getPathStyles(\n          stackPtg,\n          ptg,\n          color,\n          strokeWidth,\n          gapDegree,\n          gapPosition,\n        );\n\n        stackPtg += ptg;\n\n        const pathProps = {\n          'key': index,\n          'd': pathString,\n          stroke,\n          'stroke-linecap': strokeLinecap,\n          'stroke-width': strokeWidth,\n          'opacity': ptg === 0 ? 0 : 1,\n          'fill-opacity': '0',\n          'class': `${prefixCls}-circle-path`,\n          'style': pathStyle,\n        };\n        return <path ref={setRef(index)} {...pathProps} />;\n      });\n    };\n\n    return () => {\n      const {\n        prefixCls,\n        strokeWidth,\n        trailWidth,\n        gapDegree,\n        gapPosition,\n        trailColor,\n        strokeLinecap,\n        strokeColor,\n        ...restProps\n      } = props;\n      const { pathString, pathStyle } = getPathStyles(\n        0,\n        100,\n        trailColor,\n        strokeWidth,\n        gapDegree,\n        gapPosition,\n      );\n      delete restProps.percent;\n      const gradient = strokeColorList.value.find(\n        color => Object.prototype.toString.call(color) === '[object Object]',\n      );\n      const pathFirst = {\n        'd': pathString,\n        'stroke': trailColor,\n        'stroke-linecap': strokeLinecap,\n        'stroke-width': trailWidth || strokeWidth,\n        'fill-opacity': '0',\n        'class': `${prefixCls}-circle-trail`,\n        'style': pathStyle,\n      };\n      return (\n        <svg class={`${prefixCls}-circle`} viewBox=\"0 0 100 100\" {...restProps}>\n          {gradient && (\n            <defs>\n              <linearGradient\n                id={`${prefixCls}-gradient-${gradientId.value}`}\n                x1=\"100%\"\n                y1=\"0%\"\n                x2=\"0%\"\n                y2=\"0%\"\n              >\n                {Object.keys(gradient)\n                  .sort((a, b) => stripPercentToNumber(a) - stripPercentToNumber(b))\n                  .map((key, index) => (<stop key={index} offset={key} stop-color={gradient[key]} />\n                  ))}\n              </linearGradient>\n            </defs>\n          )}\n          <path {...pathFirst} />\n          {getStokeList().reverse()}\n        </svg>\n      );\n    };\n  },\n});\n"],"names":["gradientSeed","stripPercentToNumber","percent","replace","toArray","value","Array","isArray","getPathStyles","offset","strokeColor","strokeWidth","gapDegree","gapPosition","radius","beginPositionX","beginPositionY","endPositionX","endPositionY","pathString","len","Math","PI","pathStyle","stroke","strokeDasharray","strokeDashoffset","transition","defineComponent","compatConfig","MODE","name","props","initDefaultProps","propTypes","defaultProps","setup","gradientId","ref","percentList","computed","strokeColorList","setRef","paths","useRefs","useTransitionDuration","getStokeList","prefixCls","strokeLinecap","stackPtg","map","ptg","index","color","length","Object","prototype","toString","call","pathProps","_createVNode","trailWidth","trailColor","restProps","gradient","find","pathFirst","keys","sort","a","b","key","reverse"],"mappings":"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"}