import { w as withInstall } from "../badge/index2.js";
import { defineComponent, ref, onMounted, watch, provide, openBlock, createElementBlock, mergeProps, unref, toHandlers, renderSlot } from "vue";
import { f as useMousePressed } from "../_chunks/@vueuse/index.js";
var index = /* @__PURE__ */ (() => '.lay-split-panel{height:100%;display:flex;position:relative}.lay-split-panel .lay-split-panel-item{height:100%;border:1px #eeeeee solid}.lay-split-panel .lay-split-panel-item-move{user-select:none;pointer-events:none;cursor:col-resize}.lay-split-panel .lay-split-panel-line{height:100%;width:3px;border:1px #eeeeee solid;background-color:var(--global-neutral-color-1);border-left:none;border-right:none;cursor:col-resize;display:flex;align-items:center}.lay-split-panel .lay-split-panel-line:before{content:"";height:6px;width:100%;border:2px solid #dcdee2;border-left:0;border-right:0}.lay-split-panel-vertical{flex-direction:column;position:relative}.lay-split-panel-vertical .lay-split-panel-item-move{user-select:none;pointer-events:none;cursor:row-resize}.lay-split-panel-vertical .lay-split-panel-line{display:flex;justify-content:center;width:100%;height:3px;cursor:row-resize;border:1px #eeeeee solid;background-color:var(--global-neutral-color-1);border-top:none;border-bottom:none}.lay-split-panel-vertical .lay-split-panel-line:before{content:"";height:100%;width:6px;border:2px solid #dcdee2;border-top:none;border-bottom:none}\n')();
const __default__ = {
  name: "LaySplitPanel"
};
const _sfc_main = defineComponent({
  ...__default__,
  props: {
    vertical: { type: Boolean, default: false },
    minSize: { default: 50 }
  },
  setup(__props) {
    const props = __props;
    const target = ref();
    const { pressed } = useMousePressed({ target });
    let domEvent = ref();
    let domStatus = ref(pressed);
    let parentVertical = ref();
    onMounted(() => {
      const boxWidth = target.value.offsetWidth;
      const boxHeight = target.value.offsetHeight;
      target.value.addEventListener("mousemove", (event) => {
        if (domStatus.value && domEvent.value) {
          const prevDom = domEvent.value.target.previousElementSibling;
          const nextDom = domEvent.value.target.nextElementSibling;
          if (!props.vertical) {
            const prevDomLeft = domEvent.value.target.previousElementSibling.offsetLeft;
            const prevDomWidth = domEvent.value.target.previousElementSibling.offsetWidth;
            const nextDomWidth = domEvent.value.target.nextElementSibling.offsetWidth;
            const otherWidth = boxWidth - (prevDomWidth + nextDomWidth + 5);
            const otherWidthPercentage = (prevDomWidth + nextDomWidth + 5) / boxWidth * 100;
            if (event.layerX - prevDomLeft < props.minSize || boxWidth - (event.layerX - prevDomLeft) - otherWidth < props.minSize) {
              return false;
            }
            prevDom.style.flexBasis = (event.layerX - prevDomLeft) / (prevDomWidth + nextDomWidth + 5) * otherWidthPercentage + "%";
            nextDom.style.flexBasis = (boxWidth - (event.layerX - prevDomLeft) - otherWidth) / (prevDomWidth + nextDomWidth + 5) * otherWidthPercentage + "%";
          } else {
            const prevDomTop = domEvent.value.target.previousElementSibling.offsetTop;
            const prevDomHeight = domEvent.value.target.previousElementSibling.offsetHeight;
            const nextDomHeight = domEvent.value.target.nextElementSibling.offsetHeight;
            const otherHeight = boxHeight - (prevDomHeight + nextDomHeight + 5);
            const otherHeightPercentage = (prevDomHeight + nextDomHeight + 5) / boxHeight * 100;
            if (event.layerY - prevDomTop < props.minSize || boxHeight - (event.layerY - prevDomTop) - otherHeight < props.minSize) {
              return false;
            }
            prevDom.style.flexBasis = (event.layerY - prevDomTop) / (prevDomHeight + nextDomHeight + 5) * otherHeightPercentage + "%";
            nextDom.style.flexBasis = (boxHeight - (event.layerY - prevDomTop) - otherHeight) / (prevDomHeight + nextDomHeight + 5) * otherHeightPercentage + "%";
          }
        }
      });
    });
    const moveChange = (event, status, isVertical) => {
      domEvent.value = event;
      domStatus.value = status;
      parentVertical.value = isVertical;
    };
    const mouseup = () => {
      domStatus.value = false;
      domEvent.value = null;
      parentVertical.value = false;
    };
    const steps = ref([]);
    watch(steps, () => {
      steps.value.forEach((instance, index2) => {
        instance.setIndex(index2);
      });
    });
    provide("laySplitPanel", {
      props,
      steps,
      target,
      moveChange
    });
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", mergeProps({
        ref_key: "target",
        ref: target,
        class: ["lay-split-panel", __props.vertical ? "lay-split-panel-vertical" : ""],
        style: {
          cursor: unref(domStatus) ? !__props.vertical ? "col-resize" : "row-resize" : ""
        }
      }, toHandlers({ mouseup }, true)), [
        renderSlot(_ctx.$slots, "default")
      ], 16);
    };
  }
});
const component = withInstall(_sfc_main);
export { component as default };
