{"version":3,"file":"DragHandle.cjs","sources":["../../../../../../../packages/vue-components/vc-table/src/Header/DragHandle.tsx"],"sourcesContent":["import type { EventHandler } from '@antdv/types';\nimport type { PropType } from 'vue';\nimport type { ColumnType } from '../interface';\nimport { useInjectTableContext } from '@antdv/components/table/src/context';\nimport { addEventListenerWrap, raf, supportsPassive, warningFn } from '@antdv/utils';\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  onUnmounted,\n  shallowRef,\n  watchEffect,\n} from 'vue';\n\nconst events = {\n  mouse: {\n    start: 'mousedown',\n    move: 'mousemove',\n    stop: 'mouseup',\n  },\n  touch: {\n    start: 'touchstart',\n    move: 'touchmove',\n    stop: 'touchend',\n  },\n};\ntype HandleEvent = MouseEvent & TouchEvent;\n\nconst defaultMinWidth = 50;\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'DragHandle',\n  props: {\n    prefixCls: String,\n    width: {\n      type: Number,\n      required: true,\n    },\n    minWidth: {\n      type: Number,\n      default: defaultMinWidth,\n    },\n    maxWidth: {\n      type: Number,\n      default: Number.POSITIVE_INFINITY,\n    },\n    column: {\n      type: Object as PropType<ColumnType<any>>,\n      default: undefined as ColumnType<any>,\n    },\n  },\n  setup(props) {\n    let startX = 0;\n    let moveEvent = { remove: () => {} };\n    let stopEvent = { remove: () => {} };\n    const removeEvents = () => {\n      moveEvent.remove();\n      stopEvent.remove();\n    };\n    onUnmounted(() => {\n      removeEvents();\n    });\n    watchEffect(() => {\n      warningFn(!Number.isNaN(props.width), 'Table', 'width must be a number when use resizable');\n    });\n\n    const { onResizeColumn } = useInjectTableContext();\n    const minWidth = computed(() => {\n      return typeof props.minWidth === 'number' && !Number.isNaN(props.minWidth)\n        ? props.minWidth\n        : defaultMinWidth;\n    });\n    const maxWidth = computed(() => {\n      return typeof props.maxWidth === 'number' && !Number.isNaN(props.maxWidth)\n        ? props.maxWidth\n        : Number.POSITIVE_INFINITY;\n    });\n    const instance = getCurrentInstance();\n    let baseWidth = 0;\n    const dragging = shallowRef(false);\n    let rafId: number;\n    const updateWidth = (e: HandleEvent) => {\n      let pageX = 0;\n      if (e.touches) {\n        if (e.touches.length) {\n          // touchmove\n          pageX = e.touches[0].pageX;\n        } else {\n          // touchend\n          pageX = e.changedTouches[0].pageX;\n        }\n      } else {\n        pageX = e.pageX;\n      }\n      const tmpDeltaX = startX - pageX;\n      let w = Math.max(baseWidth - tmpDeltaX, minWidth.value);\n      w = Math.min(w, maxWidth.value);\n      raf.cancel(rafId);\n      rafId = raf(() => {\n        onResizeColumn(w, props.column.__originColumn__);\n      });\n    };\n    const handleMove = (e: HandleEvent) => {\n      updateWidth(e);\n    };\n    const handleStop = (e: HandleEvent) => {\n      dragging.value = false;\n      updateWidth(e);\n      removeEvents();\n    };\n    const handleStart = (e: HandleEvent, eventsFor: any) => {\n      dragging.value = true;\n      removeEvents();\n      baseWidth = instance.vnode.el.parentNode.getBoundingClientRect().width;\n      if (e instanceof MouseEvent && e.which !== 1)\n        return;\n\n      if (e.stopPropagation) e.stopPropagation();\n      startX = e.touches ? e.touches[0].pageX : e.pageX;\n      moveEvent = addEventListenerWrap(document.documentElement, eventsFor.move, handleMove);\n      stopEvent = addEventListenerWrap(document.documentElement, eventsFor.stop, handleStop);\n    };\n    const handleDown: EventHandler = (e: HandleEvent) => {\n      e.stopPropagation();\n      e.preventDefault();\n      handleStart(e, events.mouse);\n    };\n    const handleTouchDown: EventHandler = (e: HandleEvent) => {\n      e.stopPropagation();\n      e.preventDefault();\n      handleStart(e, events.touch);\n    };\n\n    const handleClick: EventHandler = (e: HandleEvent) => {\n      e.stopPropagation();\n      e.preventDefault();\n    };\n\n    return () => {\n      const { prefixCls } = props;\n      const touchEvents = {\n        [supportsPassive ? 'onTouchstartPassive' : 'onTouchstart']: e => handleTouchDown(e),\n      };\n      return (\n        <div\n          class={`${prefixCls}-resize-handle ${dragging.value ? 'dragging' : ''}`}\n          onMousedown={handleDown}\n          {...touchEvents}\n          onClick={handleClick}\n        >\n          <div class={`${prefixCls}-resize-handle-line`}></div>\n        </div>\n      );\n    };\n  },\n});\n"],"names":["events","mouse","start","move","stop","touch","defaultMinWidth","defineComponent","compatConfig","MODE","name","props","prefixCls","String","width","type","Number","required","minWidth","default","maxWidth","POSITIVE_INFINITY","column","Object","undefined","setup","startX","moveEvent","remove","stopEvent","removeEvents","onUnmounted","watchEffect","warningFn","isNaN","onResizeColumn","useInjectTableContext","computed","instance","getCurrentInstance","baseWidth","dragging","shallowRef","rafId","updateWidth","e","pageX","touches","length","changedTouches","tmpDeltaX","w","Math","max","value","min","raf","cancel","__originColumn__","handleMove","handleStop","handleStart","eventsFor","vnode","el","parentNode","getBoundingClientRect","MouseEvent","which","stopPropagation","addEventListenerWrap","document","documentElement","handleDown","preventDefault","handleTouchDown","handleClick","touchEvents","supportsPassive","_createVNode"],"mappings":"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"}