import { w as withInstall } from "../badge/index2.js";
import { defineComponent, computed, openBlock, createElementBlock, createElementVNode, unref, normalizeStyle, toDisplayString, createCommentVNode, normalizeClass } from "vue";
var index = /* @__PURE__ */ (() => ".layui-progress{position:relative;height:6px;border-radius:20px;background-color:var(--global-neutral-color-3)}.layui-progress-bar{position:absolute;left:0;top:0;width:0;max-width:100%;height:6px;border-radius:20px;text-align:right;background-color:var(--global-checked-color);transition:all .3s;-webkit-transition:all .3s}.layui-progress-big,.layui-progress-big .layui-progress-bar{height:18px;line-height:18px}.layui-progress-text{position:relative;top:-20px;line-height:18px;font-size:12px;color:#666}.layui-progress-big .layui-progress-text{position:static;padding:0 10px;color:#fff}.lay-progress-circle-container{position:relative;display:inline-block}.lay-progress-circle{position:relative;border-radius:50%;display:inline-block}.lay-progress-circle__text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}\n")();
const _hoisted_1 = {
  key: 0,
  class: "lay-progress-circle"
};
const _hoisted_2 = ["viewBox", "width", "height"];
const _hoisted_3 = ["d"];
const _hoisted_4 = ["d"];
const _hoisted_5 = {
  key: 0,
  class: "layui-progress-text lay-progress-circle__text"
};
const _hoisted_6 = {
  key: 0,
  class: "layui-progress-text"
};
const __default__ = {
  name: "LayProgress"
};
const _sfc_main = defineComponent({
  ...__default__,
  props: {
    percent: null,
    theme: null,
    color: null,
    size: null,
    showText: { type: Boolean },
    text: null,
    circle: { type: Boolean, default: false },
    circleSize: { default: 150 },
    circleWidth: { default: 6 }
  },
  setup(__props) {
    const props = __props;
    const styles = computed(() => {
      return [
        props.color ? "background-color: " + props.color : "",
        {
          width: props.percent + "%"
        }
      ];
    });
    const getCircleColor = computed(() => {
      let color;
      switch (props.theme) {
        case "red":
          color = "#ff5722";
          break;
        case "orange":
          color = "#ffb800";
          break;
        case "green":
          color = "#009688";
          break;
        case "cyan":
          color = "#2f4056";
          break;
        case "blue":
          color = "#1e9fff";
          break;
        case "black":
          color = "#393d49";
          break;
        case "gray":
          color = "#fafafa";
          break;
        default:
          color = "#5FB878";
          break;
      }
      color = props.color ? props.color : color;
      return color;
    });
    computed(() => {
      let percent;
      if (typeof props.percent == "string") {
        percent = parseInt(props.percent);
      } else {
        percent = props.percent;
      }
      return percent / 100 * 360;
    });
    const getStrokeDasharray = computed(() => {
      let percent;
      if (typeof props.percent == "string") {
        percent = parseInt(props.percent);
      } else {
        percent = props.percent;
      }
      let radii = props.circleSize / 2 - props.circleWidth / 2;
      let perimeter = Math.PI * 2 * radii;
      return `${percent / 100 * perimeter}px ${perimeter}px`;
    });
    const getPathD = computed(() => {
      let circleSize = props.circleSize;
      let circleWidth = props.circleWidth;
      return `M ${circleSize / 2} ${circleSize / 2} m 0, -${(circleSize - circleWidth) / 2} a ${(circleSize - circleWidth) / 2}, ${(circleSize - circleWidth) / 2} 0 1, 1 0, ${circleSize - circleWidth} a ${(circleSize - circleWidth) / 2}, ${(circleSize - circleWidth) / 2} 0 1, 1 0, -${circleSize - circleWidth}`;
    });
    return (_ctx, _cache) => {
      return __props.circle ? (openBlock(), createElementBlock("div", _hoisted_1, [
        (openBlock(), createElementBlock("svg", {
          viewBox: `0 0 ${__props.circleSize} ${__props.circleSize}`,
          width: __props.circleSize,
          height: __props.circleSize
        }, [
          createElementVNode("path", {
            d: unref(getPathD),
            style: normalizeStyle([{ "fill": "none", "stroke": "var(--global-neutral-color-3)" }, { strokeWidth: `${__props.circleWidth}px` }])
          }, null, 12, _hoisted_3),
          createElementVNode("path", {
            d: unref(getPathD),
            style: normalizeStyle([{ "fill": "none", "stroke-linecap": "round" }, {
              strokeDasharray: unref(getStrokeDasharray),
              stroke: unref(getCircleColor),
              strokeWidth: `${__props.circleWidth}px`
            }])
          }, null, 12, _hoisted_4)
        ], 8, _hoisted_2)),
        __props.showText ? (openBlock(), createElementBlock("div", _hoisted_5, toDisplayString(__props.text ? __props.text : __props.percent + "%"), 1)) : createCommentVNode("", true)
      ])) : (openBlock(), createElementBlock("div", {
        key: 1,
        class: normalizeClass(["layui-progress", "layui-progress-" + __props.size])
      }, [
        createElementVNode("div", {
          class: normalizeClass(["layui-progress-bar", "layui-bg-" + __props.theme]),
          style: normalizeStyle(unref(styles))
        }, [
          __props.showText ? (openBlock(), createElementBlock("span", _hoisted_6, toDisplayString(__props.text ? __props.text : __props.percent + "%"), 1)) : createCommentVNode("", true)
        ], 6)
      ], 2));
    };
  }
});
const component = withInstall(_sfc_main);
export { component as default };
