{"version":3,"file":"split.mjs","sources":["../../../../../../packages/components/split/src/split.vue"],"sourcesContent":["<template>\n  <div\n    ref=\"wrapper\"\n    :class=\"[\n      ns.b(),\n      ns.m(moving ? 'moving' : ''),\n      ns.m(vertical ? 'vertical' : 'horizontal'),\n      $attrs.class,\n    ]\"\n    :style=\"{ ...($attrs.style ?? {}) }\"\n  >\n    <div\n      :class=\"[ns.e('panel'), nsPanel.m(vertical ? 'top' : 'left')]\"\n      :style=\"leftPaneStyle\"\n    >\n      <slot name=\"left\" />\n    </div>\n    <div\n      :class=\"[ns.e('panel'), nsPanel.m(vertical ? 'bottom' : 'right')]\"\n      :style=\"rightPaneStyle\"\n    >\n      <slot name=\"right\" />\n    </div>\n    <div :class=\"ns.e('trigger')\" :style=\"triggerStyle\">\n      <div ref=\"handler\" :class=\"ns.e('handler')\">\n        <slot name=\"handler\">\n          <span :class=\"ns.e('pointer')\" />\n        </slot>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref } from 'vue'\nimport { useNamespace } from 'element-plus'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { splitEmits, splitProps } from './split'\nimport { useMoving } from './hooks'\nimport type { MovingState } from './hooks'\n\nconst ns = useNamespace('split')\nconst nsPanel = useNamespace('split__panel')\n\ndefineOptions({\n  name: 'ElSplit',\n})\n\nconst props = defineProps(splitProps)\nconst emit = defineEmits(splitEmits)\n\nconst wrapper = ref<HTMLElement>()\nconst currentValue = ref(props.modelValue)\n\nconst offset = computed(() => {\n  return props.vertical ? 'offsetHeight' : 'offsetWidth'\n})\nconst position = computed<['top', 'bottom'] | ['left', 'right']>(() => {\n  return props.vertical ? ['top', 'bottom'] : ['left', 'right']\n})\n\nconst outer = computed(() => wrapper.value?.[offset.value] ?? 0)\nconst min = computed(() =>\n  props.min <= 1 ? props.min : props.min / outer.value\n)\nconst max = computed(() =>\n  props.max <= 1 ? props.max : props.max / outer.value\n)\n\nfunction handleChange(value: number) {\n  if (value.toFixed(5) !== currentValue.value.toFixed(5)) {\n    currentValue.value = value\n\n    emit(CHANGE_EVENT, value)\n    emit(UPDATE_MODEL_EVENT, value)\n  }\n}\n\nconst { target: handler, moving } = useMoving({\n  lazy: true,\n  capture: false,\n  onStart: (state: MovingState, event: PointerEvent) => {\n    if (!wrapper.value || event.button > 0) {\n      return false\n    }\n    state.start = currentValue.value * outer.value\n    state.target = currentValue.value\n  },\n  onMove: (state: MovingState) => {\n    const delta = props.vertical ? state.deltaY : state.deltaX\n    const start = state.start as number\n    const value = Math.min(\n      Math.max(min.value, (start + delta) / outer.value),\n      max.value\n    )\n    handleChange(value)\n  },\n})\n\nconst leftPaneStyle = computed(() => {\n  return {\n    [position.value[1]]: `${(1 - currentValue.value) * 100}%`,\n  }\n})\nconst rightPaneStyle = computed(() => {\n  return {\n    [position.value[0]]: `${currentValue.value * 100}%`,\n  }\n})\nconst triggerStyle = computed(() => {\n  return {\n    [position.value[0]]: `calc(${\n      currentValue.value * 100\n    }% - var(${ns.cssVarName('split-handler-size')}) * 0.5)`,\n  }\n})\n</script>\n"],"names":[],"mappings":";;;;;;;mCA4Cc,CAAA;AAAA,EACZ,IAAM,EAAA,SAAA;AACR,CAAA,CAAA,CAAA;;;;;;AALM,IAAA,MAAA,EAAA,GAAK,aAAa,OAAO,CAAA,CAAA;AACzB,IAAA,MAAA,OAAA,GAAU,aAAa,cAAc,CAAA,CAAA;AAM3C,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AACd,IAAA,MAAM,IAAO,GAAA,MAAA,CAAA;AAEb,IAAA,MAAM,UAAU,GAAiB,EAAA,CAAA;AAC3B,IAAA,MAAA,YAAA,GAAe,GAAI,CAAA,KAAA,CAAM,UAAU,CAAA,CAAA;AAEnC,IAAA,MAAA,MAAA,GAAS,SAAS,MAAM;AACrB,MAAA,OAAA,KAAA,CAAM,WAAW,cAAiB,GAAA,aAAA,CAAA;AAAA,KAC1C,CAAA,CAAA;AACK,IAAA,MAAA,QAAA,GAAW,SAAgD,MAAM;AAC9D,MAAA,OAAA,KAAA,CAAM,WAAW,CAAC,KAAA,EAAO,QAAQ,CAAI,GAAA,CAAC,QAAQ,OAAO,CAAA,CAAA;AAAA,KAC7D,CAAA,CAAA;AAEK,IAAA,MAAA,KAAA,GAAQ,SAAS,MAAM;;AAAA,MAAA,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,KAAR,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgB,MAAO,CAAA,KAAA,CAAA,KAAvB,IAAiC,GAAA,EAAA,GAAA,CAAA,CAAA;AAAA,KAAC,CAAA,CAAA;AAC/D,IAAA,MAAM,GAAM,GAAA,QAAA;AAAA,MAAS,MACnB,MAAM,GAAO,IAAA,CAAA,GAAI,MAAM,GAAM,GAAA,KAAA,CAAM,MAAM,KAAM,CAAA,KAAA;AAAA,KACjD,CAAA;AACA,IAAA,MAAM,GAAM,GAAA,QAAA;AAAA,MAAS,MACnB,MAAM,GAAO,IAAA,CAAA,GAAI,MAAM,GAAM,GAAA,KAAA,CAAM,MAAM,KAAM,CAAA,KAAA;AAAA,KACjD,CAAA;AAEA,IAAA,SAAS,aAAa,KAAe,EAAA;AAC/B,MAAA,IAAA,KAAA,CAAM,QAAQ,CAAC,CAAA,KAAM,aAAa,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAG,EAAA;AACtD,QAAA,YAAA,CAAa,KAAQ,GAAA,KAAA,CAAA;AAErB,QAAA,IAAA,CAAK,cAAc,KAAK,CAAA,CAAA;AACxB,QAAA,IAAA,CAAK,oBAAoB,KAAK,CAAA,CAAA;AAAA,OAChC;AAAA,KACF;AAEA,IAAA,MAAM,EAAE,MAAA,EAAQ,OAAS,EAAA,MAAA,KAAW,SAAU,CAAA;AAAA,MAC5C,IAAM,EAAA,IAAA;AAAA,MACN,OAAS,EAAA,KAAA;AAAA,MACT,OAAA,EAAS,CAAC,KAAA,EAAoB,KAAwB,KAAA;AACpD,QAAA,IAAI,CAAC,OAAA,CAAQ,KAAS,IAAA,KAAA,CAAM,SAAS,CAAG,EAAA;AAC/B,UAAA,OAAA,KAAA,CAAA;AAAA,SACT;AACM,QAAA,KAAA,CAAA,KAAA,GAAQ,YAAa,CAAA,KAAA,GAAQ,KAAM,CAAA,KAAA,CAAA;AACzC,QAAA,KAAA,CAAM,SAAS,YAAa,CAAA,KAAA,CAAA;AAAA,OAC9B;AAAA,MACA,MAAA,EAAQ,CAAC,KAAuB,KAAA;AAC9B,QAAA,MAAM,KAAQ,GAAA,KAAA,CAAM,QAAW,GAAA,KAAA,CAAM,SAAS,KAAM,CAAA,MAAA,CAAA;AACpD,QAAA,MAAM,QAAQ,KAAM,CAAA,KAAA,CAAA;AACpB,QAAA,MAAM,QAAQ,IAAK,CAAA,GAAA;AAAA,UACjB,KAAK,GAAI,CAAA,GAAA,CAAI,QAAQ,KAAQ,GAAA,KAAA,IAAS,MAAM,KAAK,CAAA;AAAA,UACjD,GAAI,CAAA,KAAA;AAAA,SACN,CAAA;AACA,QAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAAA,OACpB;AAAA,KACD,CAAA,CAAA;AAEK,IAAA,MAAA,aAAA,GAAgB,SAAS,MAAM;AAC5B,MAAA,OAAA;AAAA,QACL,CAAC,QAAS,CAAA,KAAA,CAAM,KAAK,CAAI,EAAA,CAAA,CAAA,GAAI,aAAa,KAAS,IAAA,GAAA,CAAA,CAAA,CAAA;AAAA,OACrD,CAAA;AAAA,KACD,CAAA,CAAA;AACK,IAAA,MAAA,cAAA,GAAiB,SAAS,MAAM;AAC7B,MAAA,OAAA;AAAA,QACL,CAAC,QAAS,CAAA,KAAA,CAAM,CAAK,CAAA,GAAA,CAAA,EAAG,aAAa,KAAQ,GAAA,GAAA,CAAA,CAAA,CAAA;AAAA,OAC/C,CAAA;AAAA,KACD,CAAA,CAAA;AACK,IAAA,MAAA,YAAA,GAAe,SAAS,MAAM;AAC3B,MAAA,OAAA;AAAA,QACL,CAAC,QAAS,CAAA,KAAA,CAAM,CAAK,CAAA,GAAA,CAAA,KAAA,EACnB,aAAa,KAAQ,GAAA,GAAA,CAAA,QAAA,EACZ,EAAG,CAAA,UAAA,CAAW,oBAAoB,CAAA,CAAA,QAAA,CAAA;AAAA,OAC/C,CAAA;AAAA,KACD,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}