{"version":3,"file":"split-bar.mjs","sources":["../../../../../../../packages/components/splitter/src/split-bar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport {\n  ArrowDown,\n  ArrowLeft,\n  ArrowRight,\n  ArrowUp,\n} from '@element-plus/icons-vue'\nimport { useNamespace } from '@hd-front-end/hooks'\n\nconst ns = useNamespace('splitter-bar')\n\ndefineOptions({\n  name: 'ElSplitterBar',\n})\n\nconst props = defineProps({\n  index: {\n    type: Number,\n    required: true,\n  },\n  layout: {\n    type: String,\n    values: ['horizontal', 'vertical'] as const,\n    default: 'horizontal',\n  },\n  resizable: {\n    type: Boolean,\n    default: true,\n  },\n  lazy: Boolean,\n  startCollapsible: Boolean,\n  endCollapsible: Boolean,\n})\n\nconst emit = defineEmits(['moveStart', 'moving', 'moveEnd', 'collapse'])\n\nconst isHorizontal = computed(() => props.layout === 'horizontal')\n\nconst barWrapStyles = computed(() => {\n  if (isHorizontal.value) {\n    return { width: 0 }\n  }\n  return { height: 0 }\n})\n\nconst draggerStyles = computed(() => {\n  return {\n    width: isHorizontal.value ? '16px' : '100%',\n    height: isHorizontal.value ? '100%' : '16px',\n    cursor: !props.resizable\n      ? 'auto'\n      : isHorizontal.value\n      ? 'ew-resize'\n      : 'ns-resize',\n    touchAction: 'none',\n  }\n})\n\nconst draggerPseudoClass = computed(() => {\n  const prefix = ns.e('dragger')\n  return {\n    [`${prefix}-horizontal`]: isHorizontal.value,\n    [`${prefix}-vertical`]: !isHorizontal.value,\n    [`${prefix}-active`]: !!startPos.value,\n  }\n})\n\nconst startPos = ref<[x: number, y: number] | null>(null)\n\n// Start dragging\nconst onMousedown = (e: MouseEvent) => {\n  if (!props.resizable) return\n  startPos.value = [e.pageX, e.pageY]\n  emit('moveStart', props.index)\n  window.addEventListener('mouseup', onMouseUp)\n  window.addEventListener('mousemove', onMouseMove)\n}\n\nconst onTouchStart = (e: TouchEvent) => {\n  if (props.resizable && e.touches.length === 1) {\n    e.preventDefault()\n    const touch = e.touches[0]\n    startPos.value = [touch.pageX, touch.pageY]\n    emit('moveStart', props.index)\n    window.addEventListener('touchend', onTouchEnd)\n    window.addEventListener('touchmove', onTouchMove)\n  }\n}\n\n// During dragging\nconst onMouseMove = (e: MouseEvent) => {\n  const { pageX, pageY } = e\n  const offsetX = pageX - startPos.value![0]\n  const offsetY = pageY - startPos.value![1]\n  const offset = isHorizontal.value ? offsetX : offsetY\n  emit('moving', props.index, offset)\n}\n\nconst onTouchMove = (e: TouchEvent) => {\n  if (e.touches.length === 1) {\n    e.preventDefault()\n    const touch = e.touches[0]\n    const offsetX = touch.pageX - startPos.value![0]\n    const offsetY = touch.pageY - startPos.value![1]\n    const offset = isHorizontal.value ? offsetX : offsetY\n    emit('moving', props.index, offset)\n  }\n}\n\n// End dragging\nconst onMouseUp = () => {\n  startPos.value = null\n  window.removeEventListener('mouseup', onMouseUp)\n  window.removeEventListener('mousemove', onMouseMove)\n  emit('moveEnd', props.index)\n}\n\nconst onTouchEnd = () => {\n  startPos.value = null\n  window.removeEventListener('touchend', onTouchEnd)\n  window.removeEventListener('touchmove', onTouchMove)\n  emit('moveEnd', props.index)\n}\n\nconst StartIcon = computed(() => (isHorizontal.value ? ArrowLeft : ArrowUp))\nconst EndIcon = computed(() => (isHorizontal.value ? ArrowRight : ArrowDown))\n</script>\n\n<template>\n  <div :class=\"[ns.b()]\" :style=\"barWrapStyles\">\n    <div\n      v-if=\"startCollapsible\"\n      :class=\"[ns.e('collapse-icon'), ns.e(`${layout}-collapse-icon-start`)]\"\n      @click=\"emit('collapse', index, 'start')\"\n    >\n      <slot name=\"start-collapsible\">\n        <component :is=\"StartIcon\" style=\"width: 12px; height: 12px\" />\n      </slot>\n    </div>\n\n    <div\n      :class=\"[\n        ns.e('dragger'),\n        draggerPseudoClass,\n        ns.is('disabled', !resizable),\n        ns.is('lazy', resizable && lazy),\n      ]\"\n      :style=\"draggerStyles\"\n      @mousedown=\"onMousedown\"\n      @touchstart=\"onTouchStart\"\n    />\n    <div\n      v-if=\"endCollapsible\"\n      :class=\"[ns.e('collapse-icon'), ns.e(`${layout}-collapse-icon-end`)]\"\n      @click=\"emit('collapse', index, 'end')\"\n    >\n      <slot name=\"end-collapsible\">\n        <component :is=\"EndIcon\" style=\"width: 12px; height: 12px\" />\n      </slot>\n    </div>\n  </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_normalizeClass","_unref","_normalizeStyle","_renderSlot","_createBlock","_resolveDynamicComponent","_createElementVNode"],"mappings":"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"}