{"version":3,"file":"split.mjs","sources":["../../../../../../packages/components/split/src/split.vue"],"sourcesContent":["<template>\n  <div\n    :class=\"{\n      [ns.b()]: true,\n      [ns.e('is-vertical')]: orientation === 'vertical',\n    }\"\n  >\n    <div :class=\"ns.e('panel')\" :style=\"panel1Style\">\n      <slot name=\"left\" />\n    </div>\n    <!-- 手柄样式 -->\n    <div v-if=\"canfull\" :class=\"ns.e('canfullStyle')\">\n      <lt-icon\n        v-show=\"ratio != 0\"\n        :class=\"ns.e('rightIcon')\"\n        color=\"#fff\"\n        font-size=\"7px\"\n        @click=\"caretLeft\"\n        ><ArrowLeft\n      /></lt-icon>\n      <div :class=\"ns.e('rightIcon')\">\n        <lt-icon\n          v-show=\"ratio != 1\"\n          color=\"#fff\"\n          font-size=\"7px\"\n          @click=\"caretRight\"\n          ><ArrowRight\n        /></lt-icon>\n      </div>\n    </div>\n    <div\n      v-else\n      ref=\"resizerRef\"\n      :style=\"{ flexDirection: orientation === 'vertical' ? 'row' : 'column' }\"\n      :class=\"{\n        [ns.e('resizer')]: true,\n        [ns.e('vertical-style')]: orientation === 'vertical',\n      }\"\n      @mousedown=\"startResizing\"\n    >\n      <div\n        v-for=\"n in 6\"\n        v-show=\"orientation === 'vertical'\"\n        :key=\"n\"\n        :class=\"ns.e('vertical')\"\n      />\n      <div\n        v-for=\"n in 6\"\n        v-show=\"orientation === 'horizontal'\"\n        :key=\"n\"\n        class=\"aaa\"\n        :class=\"ns.e('horizontal')\"\n      />\n    </div>\n\n    <div :class=\"ns.e('panel')\" :style=\"panel2Style\">\n      <slot name=\"right\" />\n    </div>\n  </div>\n</template>\n<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { useNamespace } from '@lit-element/hooks'\nimport { ArrowLeft, ArrowRight } from '@inte-cloud/icons-vue'\nimport { splitProps } from './split'\n\ndefineOptions({\n  name: 'LtSplit',\n})\n\nconst ns = useNamespace('split')\nconst props = defineProps(splitProps)\n\nconst isResizing = ref<boolean>(false)\nconst ratio = ref<number>(props.initialRatio)\nconst resizerRef = ref<Element | null>(null)\nconst panelState = ref<'initial' | 'left-full' | 'right-full'>('initial') // 添加状态记录当前展示的面板\n\nconst panel1Style = computed(() => {\n  if (props.orientation === 'horizontal') {\n    return { flex: ratio.value, display: ratio.value > 0 ? 'block' : 'none' }\n  } else {\n    return {\n      flex: ratio.value,\n      height: `${ratio.value * 100}%`,\n      display: ratio.value > 0 ? 'block' : 'none',\n    }\n  }\n})\n\nconst caretLeft = () => {\n  if (panelState.value === 'right-full') {\n    ratio.value = props.initialRatio // 还原到初始比例\n    panelState.value = 'initial'\n  } else if (panelState.value === 'left-full') {\n    ratio.value = props.initialRatio // 还原到初始比例\n    panelState.value = 'initial'\n  } else {\n    ratio.value = 0 // 展示左边全部面板\n    panelState.value = 'left-full'\n  }\n}\nconst caretRight = () => {\n  if (panelState.value === 'left-full') {\n    ratio.value = props.initialRatio // 还原到初始比例\n    panelState.value = 'initial'\n  } else if (panelState.value === 'right-full') {\n    ratio.value = props.initialRatio // 还原到初始比例\n    panelState.value = 'initial'\n  } else {\n    ratio.value = 1 // 展示右边全部面板\n    panelState.value = 'right-full'\n  }\n}\n\nconst panel2Style = computed(() => {\n  if (props.orientation === 'horizontal') {\n    return {\n      flex: 1 - ratio.value,\n      display: ratio.value < 1 ? 'block' : 'none',\n    }\n  } else {\n    return {\n      flex: 1 - ratio.value,\n      height: `${(1 - ratio.value) * 100}%`,\n      display: ratio.value < 1 ? 'block' : 'none',\n    }\n  }\n})\n\nconst startResizing = (event: MouseEvent) => {\n  isResizing.value = true\n  document.addEventListener('mousemove', resize, { passive: true })\n  document.addEventListener('mouseup', stopResizing, { passive: true })\n}\n\n// const resize = (event: MouseEvent) => {\n//   if (isResizing.value && resizerRef.value) {\n//     const { clientX, clientY } = event\n//     const containerRect =\n//       resizerRef.value.parentElement?.getBoundingClientRect()\n//     let newRatio = 0\n\n//     if (props.orientation === 'horizontal' && containerRect) {\n//       newRatio = (clientX - containerRect.left) / containerRect.width\n//     } else if (containerRect) {\n//       newRatio = (clientY - containerRect.top) / containerRect.height\n//     }\n\n//     if (props.canfull) {\n//       ratio.value = Math.max(0, Math.min(1, newRatio))\n//     } else {\n//       ratio.value = Math.max(0.1, Math.min(0.9, newRatio))\n//     }\n//   }\n// }\nconst resize = (event: MouseEvent) => {\n  if (isResizing.value && resizerRef.value) {\n    const { clientX, clientY } = event\n    const containerRect =\n      resizerRef.value.parentElement?.getBoundingClientRect()\n    let newRatio = 0\n\n    if (props.orientation === 'horizontal' && containerRect) {\n      newRatio = (clientX - containerRect.left) / containerRect.width\n    } else if (containerRect) {\n      newRatio = (clientY - containerRect.top) / containerRect.height\n    }\n\n    ratio.value = Math.max(0, Math.min(1, newRatio))\n  }\n}\nconst stopResizing = () => {\n  isResizing.value = false\n  document.removeEventListener('mousemove', resize)\n  document.removeEventListener('mouseup', stopResizing)\n}\n</script>\n"],"names":[],"mappings":"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"}