{"version":3,"file":"index.vue.mjs","sources":["../../../../../../components/progress/src/index.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { UseProgress } from '@fusion-ui-vue/hooks'\nimport { progressProps } from '../src/progress'\nimport FnIcon from '../../icon'\nconst props = defineProps(progressProps)\nconst progerssValue = computed(() => {\n  if (typeof props.percentage !== 'number')\n    return 0\n  return props.percentage > 100\n    ? 100\n    : props.percentage < 0\n      ? 0\n      : props.percentage\n})\n\nconst circleSize = props.width || 120\n\nconst radius = computed(() => {\n  return (circleSize - props.strokeWidth) / 2\n})\nconst name = 'fn-progress'\n\nconst cx = circleSize / 2\nconst cy = circleSize / 2\nconst circumference = 2 * Math.PI * radius.value\n\n/**\n * @description: circle progress\n * 获取角度\n */\nconst cirCleprogress = computed(() => {\n  if (typeof props.percentage !== 'number') {\n    return 0\n  }\n  else {\n    const value\n      = props.percentage > 100 ? 100 : props.percentage < 0 ? 0 : props.percentage\n    return (1 - Number(value) / 100) * circumference\n  }\n})\n\nconst status = new Map([\n  ['success', 'mdi:success-circle-outline'],\n  ['danger', 'fluent-mdl2:error-badge'],\n  ['warning', 'jam:triangle-danger-f'],\n  ['info', 'info'],\n])\n\nconst isKnown = computed((): string => {\n  if (props.intermediate)\n    return 'bar-intermediate'\n  return ''\n})\n\nconst isStriped = computed((): string => {\n  let stripedClass = ''\n  if (props.striped) {\n    stripedClass += 'fn-progress-bar-striped '\n    if (props.stripedFlow)\n      stripedClass += 'fn-progress-bar-is-flow'\n  }\n  return stripedClass\n})\n\nconst statusColor = new Map([\n  ['success', '#67c23a'],\n  ['danger', '#f56c6c'],\n  ['warning', '#e6a23c'],\n  ['info', '#909399'],\n])\n\nconst getIcon = computed(() => {\n  if (!props.status)\n    return ''\n  return status.get(props.status)\n})\nconst getIconColor = computed(() => {\n  if (!props.status)\n    return ''\n  return statusColor.get(props.status)\n})\nconst { styleList, styleListCircle } = UseProgress(props)\n</script>\n\n<template>\n  <!-- line -->\n  <div\n    v-if=\"props.type === 'line'\"\n    :class=\"`${name} ${name}-line`\"\n    :style=\"styleList\"\n  >\n    <!-- text-inner -->\n    <div :class=\"`${name}-bar-out`\">\n      <div :class=\"[`${name}-bar ${isKnown} ${isStriped}`]\" />\n      <div v-show=\"props.textInside\" :class=\"`${name}-text-inner`\">\n        {{ progerssValue }}%\n      </div>\n    </div>\n\n    <!-- text-out -->\n    <div v-show=\"!props.textInside\" :class=\"`${name}-text`\">\n      <span\n        v-show=\"!props.status && !props.intermediate\"\n        :class=\"`${name}-text-out`\"\n      >\n        {{ progerssValue }}%\n      </span>\n\n      <span v-show=\"props.status\" style=\"margin-left: 5px\">\n        <fn-icon :icon=\"getIcon\" :color=\"getIconColor\" />\n      </span>\n    </div>\n  </div>\n\n  <!-- circle -->\n  <div\n    v-if=\"props.type === 'circle'\"\n    class=\"fn-progress circle-progress\"\n    :style=\"styleListCircle\"\n  >\n    <div\n      class=\"circle-content\"\n      :style=\"`width:${circleSize}px;height: ${circleSize}px;`\"\n    >\n      <svg width=\"circleSize\" :height=\"circleSize\" class=\"circle\">\n        <circle\n          :r=\"radius\"\n          :cx=\"cx\"\n          :cy=\"cy\"\n          fill=\"transparent\"\n          :stroke=\"props.background\"\n          :stroke-width=\"props.strokeWidth\"\n        />\n        <circle\n          :r=\"radius\"\n          :cx=\"cx\"\n          :cy=\"cy\"\n          fill=\"transparent\"\n          :stroke=\"props.color\"\n          :stroke-width=\"props.strokeWidth\"\n          stroke-linecap=\"round\"\n          :stroke-dasharray=\"circumference\"\n          :stroke-dashoffset=\"cirCleprogress\"\n        />\n      </svg>\n      <span\n        class=\"count-num\"\n        :style=\"[{ 'font-size': `${circleSize * 0.3}px` }]\"\n      >\n        <span v-if=\"$slots.default\">\n          <slot />\n        </span>\n        <span v-else> {{ props.percentage }}% </span>\n      </span>\n    </div>\n  </div>\n</template>\n"],"names":[],"mappings":"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"}