import {
  an as e,
  J as a,
  I as l,
  a5 as o,
  ac as n,
  K as i,
  j as t,
  c as d,
  v as s,
  P as r,
  ag as c,
  H as u,
  ao as b,
  w as p,
  ad as m,
  aQ as h,
  ax as v,
  aw as g,
  Q as k,
} from "./index-476be0bb.js";
const f = {
  name: e,
  disabled: Boolean,
  iconSize: a,
  modelValue: e,
  checkedColor: String,
  labelPosition: String,
  labelDisabled: Boolean,
};
var x = l({
  props: o({}, f, {
    bem: n(Function),
    role: String,
    shape: String,
    parent: Object,
    checked: Boolean,
    bindGroup: i,
    indeterminate: { type: Boolean, default: null },
  }),
  emits: ["click", "toggle"],
  setup(e, { emit: a, slots: l }) {
    const o = t(),
      n = (a) => {
        if (e.parent && e.bindGroup) return e.parent.props[a];
      },
      i = d(() => {
        if (e.parent && e.bindGroup) {
          const a = n("disabled") || e.disabled;
          if ("checkbox" === e.role) {
            const l = n("modelValue").length,
              o = n("max");
            return a || (o && l >= +o && !e.checked);
          }
          return a;
        }
        return e.disabled;
      }),
      u = d(() => n("direction")),
      b = d(() => {
        const a = e.checkedColor || n("checkedColor");
        if (a && e.checked && !i.value)
          return { borderColor: a, backgroundColor: a };
      }),
      p = d(() => e.shape || n("shape") || "round"),
      m = (l) => {
        const { target: n } = l,
          t = o.value,
          d = t === n || (null == t ? void 0 : t.contains(n));
        i.value || (!d && e.labelDisabled) || a("toggle"), a("click", l);
      },
      h = () => {
        var a, t;
        const { bem: d, checked: u, indeterminate: m } = e,
          h = e.iconSize || n("iconSize");
        return s(
          "div",
          {
            ref: o,
            class: d("icon", [
              p.value,
              { disabled: i.value, checked: u, indeterminate: m },
            ]),
            style:
              "dot" !== p.value
                ? { fontSize: c(h) }
                : {
                    width: c(h),
                    height: c(h),
                    borderColor: null == (a = b.value) ? void 0 : a.borderColor,
                  },
          },
          [
            l.icon
              ? l.icon({ checked: u, disabled: i.value })
              : "dot" !== p.value
              ? s(r, { name: m ? "minus" : "success", style: b.value }, null)
              : s(
                  "div",
                  {
                    class: d("icon--dot__icon"),
                    style: {
                      backgroundColor:
                        null == (t = b.value) ? void 0 : t.backgroundColor,
                    },
                  },
                  null
                ),
          ]
        );
      },
      v = () => {
        if (l.default)
          return s(
            "span",
            { class: e.bem("label", [e.labelPosition, { disabled: i.value }]) },
            [l.default()]
          );
      };
    return () => {
      const a = "left" === e.labelPosition ? [v(), h()] : [h(), v()];
      return s(
        "div",
        {
          role: e.role,
          class: e.bem([
            { disabled: i.value, "label-disabled": e.labelDisabled },
            u.value,
          ]),
          tabindex: i.value ? void 0 : 0,
          "aria-checked": e.checked,
          onClick: m,
        },
        [a]
      );
    };
  },
});
const [C, V] = u("checkbox-group"),
  S = Symbol(C),
  [G, y] = u("checkbox");
const B = k(
  l({
    name: G,
    props: o({}, f, {
      shape: String,
      bindGroup: i,
      indeterminate: { type: Boolean, default: null },
    }),
    emits: ["change", "update:modelValue"],
    setup(e, { emit: a, slots: l }) {
      const { parent: o } = b(S),
        n = d(() =>
          o && e.bindGroup
            ? -1 !== o.props.modelValue.indexOf(e.name)
            : !!e.modelValue
        ),
        i = (l = !n.value) => {
          o && e.bindGroup
            ? ((a) => {
                const { name: l } = e,
                  { max: n, modelValue: i } = o.props,
                  t = i.slice();
                if (a)
                  (n && t.length >= +n) ||
                    t.includes(l) ||
                    (t.push(l), e.bindGroup && o.updateValue(t));
                else {
                  const a = t.indexOf(l);
                  -1 !== a && (t.splice(a, 1), e.bindGroup && o.updateValue(t));
                }
              })(l)
            : a("update:modelValue", l),
            null !== e.indeterminate && a("change", l);
        };
      return (
        p(
          () => e.modelValue,
          (l) => {
            null === e.indeterminate && a("change", l);
          }
        ),
        m({ toggle: i, props: e, checked: n }),
        h(() => e.modelValue),
        () =>
          s(
            x,
            g(
              {
                bem: y,
                role: "checkbox",
                parent: o,
                checked: n.value,
                onToggle: i,
              },
              e
            ),
            v(l, ["default", "icon"])
          )
      );
    },
  })
);
export { B as C };
