import { w as withInstall } from "../badge/index2.js";
import { defineComponent, computed, h, renderSlot, isVNode, Comment, Fragment, createTextVNode } from "vue";
var index = /* @__PURE__ */ (() => ".layui-space{display:inline-flex}.layui-space-horizontal .layui-space-item{display:flex;align-items:center}.layui-space-vertical{flex-direction:column}.layui-space-wrap{flex-wrap:wrap}.layui-space-fill{display:flex}.layui-space-align-start{align-items:flex-start}.layui-space-align-center{align-items:center}.layui-space-align-end{align-items:flex-end}.layui-space-align-baseline{align-items:baseline}.layui-space-item{width:inherit}\n")();
const _sfc_main = defineComponent({
  name: "LaySpace",
  props: {
    align: {
      type: String
    },
    direction: {
      type: String,
      default: "horizontal"
    },
    fill: {
      type: Boolean,
      default: false
    },
    size: {
      type: [Number, String, Array],
      default: "sm"
    },
    wrap: {
      type: Boolean,
      default: false
    }
  },
  setup(props, { slots }) {
    const computAlign = computed(() => {
      var _a;
      return (_a = props.align) != null ? _a : props.direction === "horizontal" ? "center" : "";
    });
    const spaceClass = computed(() => [
      "layui-space",
      {
        [`layui-space-align-${computAlign.value}`]: computAlign.value,
        [`layui-space-${props.direction}`]: props.direction,
        [`layui-space-wrap`]: props.wrap,
        [`layui-space-fill`]: props.fill
      }
    ]);
    const spaceStyle = computed(() => {
      const sizeMap = { xs: "4px", sm: "8px", md: "16px", lg: "24px" };
      let gap = "";
      if (Array.isArray(props.size)) {
        gap = props.size.map((size) => {
          if (typeof size === "number") {
            return `${size}px`;
          }
          if (typeof size === "string") {
            return sizeMap[size] || size;
          }
          return size;
        }).join(" ");
      } else if (typeof props.size === "string") {
        gap = sizeMap[props.size] || props.size;
      } else if (typeof props.size === "number") {
        gap = `${props.size}px`;
      }
      return {
        gap
      };
    });
    const itemStyle = computed(() => [
      props.fill ? { flexGrow: 1, minWidth: "100%" } : {}
    ]);
    const extractChildren = () => {
      const result = [];
      const children = renderSlot(slots, "default").children;
      const elementData = Array.isArray(children) ? [...children] : [];
      while (elementData.length) {
        const vnode = elementData.shift();
        if (vnode === null)
          continue;
        if (Array.isArray(vnode)) {
          elementData.unshift(...vnode);
        }
        if (!isVNode(vnode) || vnode.type === Comment)
          continue;
        if (vnode.type === Fragment && Array.isArray(vnode.children)) {
          elementData.unshift(vnode.children);
        } else if (typeof vnode === "string" || typeof vnode === "number") {
          result.push(createTextVNode(vnode));
        } else {
          result.push(vnode);
        }
      }
      return result;
    };
    return () => {
      const children = extractChildren();
      return h("div", {
        class: spaceClass.value,
        style: spaceStyle.value
      }, children.map((child, index2) => {
        var _a;
        return h("div", {
          key: (_a = child.key) != null ? _a : `item-${index2}`,
          class: "layui-space-item",
          style: itemStyle.value
        }, h(child));
      }));
    };
  }
});
const component = withInstall(_sfc_main);
export { component as default };
