{"version":3,"file":"event-helper.mjs","sources":["../../../../../../../packages/components/table/src/table-header/event-helper.ts"],"sourcesContent":["// @ts-nocheck\nimport { getCurrentInstance, inject, ref } from 'vue'\nimport { isClient } from '@vueuse/core'\nimport { addClass, hasClass, removeClass } from '@bigin/utils'\nimport { TABLE_INJECTION_KEY } from '../tokens'\nimport type { TableHeaderProps } from '.'\nimport type { TableColumnCtx } from '../table-column/defaults'\n\nfunction useEvent<T>(props: TableHeaderProps<T>, emit) {\n  const instance = getCurrentInstance()\n  const parent = inject(TABLE_INJECTION_KEY)\n  const handleFilterClick = (event: Event) => {\n    event.stopPropagation()\n    return\n  }\n\n  const handleHeaderClick = (event: Event, column: TableColumnCtx<T>) => {\n    if (!column.filters && column.sortable) {\n      handleSortClick(event, column, false)\n    } else if (column.filterable && !column.sortable) {\n      handleFilterClick(event)\n    }\n    parent?.emit('header-click', column, event)\n  }\n\n  const handleHeaderContextMenu = (event: Event, column: TableColumnCtx<T>) => {\n    parent?.emit('header-contextmenu', column, event)\n  }\n  const draggingColumn = ref(null)\n  const dragging = ref(false)\n  const dragState = ref({})\n  const handleMouseDown = (event: MouseEvent, column: TableColumnCtx<T>) => {\n    if (!isClient) return\n    if (column.children && column.children.length > 0) return\n    /* istanbul ignore if */\n    if (draggingColumn.value && props.border) {\n      dragging.value = true\n\n      const table = parent\n      emit('set-drag-visible', true)\n      const tableEl = table?.vnode.el\n      const tableLeft = tableEl.getBoundingClientRect().left\n      const columnEl = instance.vnode.el.querySelector(`th.${column.id}`)\n      const columnRect = columnEl.getBoundingClientRect()\n      const minLeft = columnRect.left - tableLeft + 30\n\n      addClass(columnEl, 'noclick')\n\n      dragState.value = {\n        startMouseLeft: event.clientX,\n        startLeft: columnRect.right - tableLeft,\n        startColumnLeft: columnRect.left - tableLeft,\n        tableLeft,\n      }\n      const resizeProxy = table?.refs.resizeProxy as HTMLElement\n      resizeProxy.style.left = `${(dragState.value as any).startLeft}px`\n\n      document.onselectstart = function () {\n        return false\n      }\n      document.ondragstart = function () {\n        return false\n      }\n\n      const handleMouseMove = (event: MouseEvent) => {\n        const deltaLeft =\n          event.clientX - (dragState.value as any).startMouseLeft\n        const proxyLeft = (dragState.value as any).startLeft + deltaLeft\n\n        resizeProxy.style.left = `${Math.max(minLeft, proxyLeft)}px`\n      }\n\n      const handleMouseUp = () => {\n        if (dragging.value) {\n          const { startColumnLeft, startLeft } = dragState.value as any\n          const finalLeft = Number.parseInt(resizeProxy.style.left, 10)\n          const columnWidth = finalLeft - startColumnLeft\n          column.width = column.realWidth = columnWidth\n          table?.emit(\n            'header-dragend',\n            column.width,\n            startLeft - startColumnLeft,\n            column,\n            event\n          )\n          requestAnimationFrame(() => {\n            props.store.scheduleLayout(false, true)\n          })\n          document.body.style.cursor = ''\n          dragging.value = false\n          draggingColumn.value = null\n          dragState.value = {}\n          emit('set-drag-visible', false)\n        }\n\n        document.removeEventListener('mousemove', handleMouseMove)\n        document.removeEventListener('mouseup', handleMouseUp)\n        document.onselectstart = null\n        document.ondragstart = null\n\n        setTimeout(() => {\n          removeClass(columnEl, 'noclick')\n        }, 0)\n      }\n\n      document.addEventListener('mousemove', handleMouseMove)\n      document.addEventListener('mouseup', handleMouseUp)\n    }\n  }\n\n  const handleMouseMove = (event: MouseEvent, column: TableColumnCtx<T>) => {\n    if (column.children && column.children.length > 0) return\n\n    const target = (event.target as HTMLElement)?.closest('th')\n\n    if (!column || !column.resizable) return\n\n    if (!dragging.value && props.border) {\n      const rect = target.getBoundingClientRect()\n\n      const bodyStyle = document.body.style\n      if (rect.width > 12 && rect.right - event.pageX < 8) {\n        bodyStyle.cursor = 'col-resize'\n        if (hasClass(target, 'is-sortable')) {\n          target.style.cursor = 'col-resize'\n        }\n        draggingColumn.value = column\n      } else if (!dragging.value) {\n        bodyStyle.cursor = ''\n        if (hasClass(target, 'is-sortable')) {\n          target.style.cursor = 'pointer'\n        }\n        draggingColumn.value = null\n      }\n    }\n  }\n\n  const handleMouseOut = () => {\n    if (!isClient) return\n    document.body.style.cursor = ''\n  }\n  const toggleOrder = ({ order, sortOrders }) => {\n    if (order === '') return sortOrders[0]\n    const index = sortOrders.indexOf(order || null)\n    return sortOrders[index > sortOrders.length - 2 ? 0 : index + 1]\n  }\n  const handleSortClick = (\n    event: Event,\n    column: TableColumnCtx<T>,\n    givenOrder: string | boolean\n  ) => {\n    event.stopPropagation()\n    const order =\n      column.order === givenOrder ? null : givenOrder || toggleOrder(column)\n\n    const target = (event.target as HTMLElement)?.closest('th')\n\n    if (target) {\n      if (hasClass(target, 'noclick')) {\n        removeClass(target, 'noclick')\n        return\n      }\n    }\n\n    if (!column.sortable) return\n\n    const states = props.store.states\n    let sortProp = states.sortProp.value\n    let sortOrder\n    const sortingColumn = states.sortingColumn.value\n\n    if (\n      sortingColumn !== column ||\n      (sortingColumn === column && sortingColumn.order === null)\n    ) {\n      if (sortingColumn) {\n        sortingColumn.order = null\n      }\n      states.sortingColumn.value = column\n      sortProp = column.property\n    }\n    if (!order) {\n      sortOrder = column.order = null\n    } else {\n      sortOrder = column.order = order\n    }\n\n    states.sortProp.value = sortProp\n    states.sortOrder.value = sortOrder\n\n    parent?.store.commit('changeSortCondition')\n  }\n\n  return {\n    handleHeaderClick,\n    handleHeaderContextMenu,\n    handleMouseDown,\n    handleMouseMove,\n    handleMouseOut,\n    handleSortClick,\n    handleFilterClick,\n  }\n}\n\nexport default useEvent\n"],"names":["handleMouseMove","event"],"mappings":";;;;;;AAQA,SAAS,QAAA,CAAY,OAA4B,IAAM,EAAA;AACrD,EAAA,MAAM,WAAW,kBAAmB,EAAA,CAAA;AACpC,EAAM,MAAA,MAAA,GAAS,OAAO,mBAAmB,CAAA,CAAA;AACzC,EAAM,MAAA,iBAAA,GAAoB,CAAC,KAAiB,KAAA;AAC1C,IAAA,KAAA,CAAM,eAAgB,EAAA,CAAA;AACtB,IAAA,OAAA;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,iBAAA,GAAoB,CAAC,KAAA,EAAc,MAA8B,KAAA;AACrE,IAAA,IAAI,CAAC,MAAA,CAAO,OAAW,IAAA,MAAA,CAAO,QAAU,EAAA;AACtC,MAAgB,eAAA,CAAA,KAAA,EAAO,QAAQ,KAAK,CAAA,CAAA;AAAA,KAC3B,MAAA,IAAA,MAAA,CAAO,UAAc,IAAA,CAAC,OAAO,QAAU,EAAA;AAChD,MAAA,iBAAA,CAAkB,KAAK,CAAA,CAAA;AAAA,KACzB;AACA,IAAQ,MAAA,EAAA,IAAA,CAAK,cAAgB,EAAA,MAAA,EAAQ,KAAK,CAAA,CAAA;AAAA,GAC5C,CAAA;AAEA,EAAM,MAAA,uBAAA,GAA0B,CAAC,KAAA,EAAc,MAA8B,KAAA;AAC3E,IAAQ,MAAA,EAAA,IAAA,CAAK,oBAAsB,EAAA,MAAA,EAAQ,KAAK,CAAA,CAAA;AAAA,GAClD,CAAA;AACA,EAAM,MAAA,cAAA,GAAiB,IAAI,IAAI,CAAA,CAAA;AAC/B,EAAM,MAAA,QAAA,GAAW,IAAI,KAAK,CAAA,CAAA;AAC1B,EAAM,MAAA,SAAA,GAAY,GAAI,CAAA,EAAE,CAAA,CAAA;AACxB,EAAM,MAAA,eAAA,GAAkB,CAAC,KAAA,EAAmB,MAA8B,KAAA;AACxE,IAAA,IAAI,CAAC,QAAA;AAAU,MAAA,OAAA;AACf,IAAA,IAAI,MAAO,CAAA,QAAA,IAAY,MAAO,CAAA,QAAA,CAAS,MAAS,GAAA,CAAA;AAAG,MAAA,OAAA;AAEnD,IAAI,IAAA,cAAA,CAAe,KAAS,IAAA,KAAA,CAAM,MAAQ,EAAA;AACxC,MAAA,QAAA,CAAS,KAAQ,GAAA,IAAA,CAAA;AAEjB,MAAA,MAAM,KAAQ,GAAA,MAAA,CAAA;AACd,MAAA,IAAA,CAAK,oBAAoB,IAAI,CAAA,CAAA;AAC7B,MAAM,MAAA,OAAA,GAAU,OAAO,KAAM,CAAA,EAAA,CAAA;AAC7B,MAAM,MAAA,SAAA,GAAY,OAAQ,CAAA,qBAAA,EAAwB,CAAA,IAAA,CAAA;AAClD,MAAA,MAAM,WAAW,QAAS,CAAA,KAAA,CAAM,GAAG,aAAc,CAAA,CAAA,GAAA,EAAM,OAAO,EAAI,CAAA,CAAA,CAAA,CAAA;AAClE,MAAM,MAAA,UAAA,GAAa,SAAS,qBAAsB,EAAA,CAAA;AAClD,MAAM,MAAA,OAAA,GAAU,UAAW,CAAA,IAAA,GAAO,SAAY,GAAA,EAAA,CAAA;AAE9C,MAAA,QAAA,CAAS,UAAU,SAAS,CAAA,CAAA;AAE5B,MAAA,SAAA,CAAU,KAAQ,GAAA;AAAA,QAChB,gBAAgB,KAAM,CAAA,OAAA;AAAA,QACtB,SAAA,EAAW,WAAW,KAAQ,GAAA,SAAA;AAAA,QAC9B,eAAA,EAAiB,WAAW,IAAO,GAAA,SAAA;AAAA,QACnC,SAAA;AAAA,OACF,CAAA;AACA,MAAM,MAAA,WAAA,GAAc,OAAO,IAAK,CAAA,WAAA,CAAA;AAChC,MAAA,WAAA,CAAY,KAAM,CAAA,IAAA,GAAO,CAAI,EAAA,SAAA,CAAU,KAAc,CAAA,SAAA,CAAA,EAAA,CAAA,CAAA;AAErD,MAAA,QAAA,CAAS,gBAAgB,WAAY;AACnC,QAAO,OAAA,KAAA,CAAA;AAAA,OACT,CAAA;AACA,MAAA,QAAA,CAAS,cAAc,WAAY;AACjC,QAAO,OAAA,KAAA,CAAA;AAAA,OACT,CAAA;AAEA,MAAMA,MAAAA,gBAAAA,GAAkB,CAACC,MAAsB,KAAA;AAC7C,QAAA,MAAM,SACJA,GAAAA,MAAAA,CAAM,OAAW,GAAA,SAAA,CAAU,KAAc,CAAA,cAAA,CAAA;AAC3C,QAAM,MAAA,SAAA,GAAa,SAAU,CAAA,KAAA,CAAc,SAAY,GAAA,SAAA,CAAA;AAEvD,QAAA,WAAA,CAAY,MAAM,IAAO,GAAA,CAAA,EAAG,IAAK,CAAA,GAAA,CAAI,SAAS,SAAS,CAAA,CAAA,EAAA,CAAA,CAAA;AAAA,OACzD,CAAA;AAEA,MAAA,MAAM,gBAAgB,MAAM;AAC1B,QAAA,IAAI,SAAS,KAAO,EAAA;AAClB,UAAA,MAAM,EAAE,eAAA,EAAiB,SAAU,EAAA,GAAI,SAAU,CAAA,KAAA,CAAA;AACjD,UAAA,MAAM,YAAY,MAAO,CAAA,QAAA,CAAS,WAAY,CAAA,KAAA,CAAM,MAAM,EAAE,CAAA,CAAA;AAC5D,UAAA,MAAM,cAAc,SAAY,GAAA,eAAA,CAAA;AAChC,UAAO,MAAA,CAAA,KAAA,GAAQ,OAAO,SAAY,GAAA,WAAA,CAAA;AAClC,UAAO,KAAA,EAAA,IAAA;AAAA,YACL,gBAAA;AAAA,YACA,MAAO,CAAA,KAAA;AAAA,YACP,SAAY,GAAA,eAAA;AAAA,YACZ,MAAA;AAAA,YACA,KAAA;AAAA,WACF,CAAA;AACA,UAAA,qBAAA,CAAsB,MAAM;AAC1B,YAAM,KAAA,CAAA,KAAA,CAAM,cAAe,CAAA,KAAA,EAAO,IAAI,CAAA,CAAA;AAAA,WACvC,CAAA,CAAA;AACD,UAAS,QAAA,CAAA,IAAA,CAAK,MAAM,MAAS,GAAA,EAAA,CAAA;AAC7B,UAAA,QAAA,CAAS,KAAQ,GAAA,KAAA,CAAA;AACjB,UAAA,cAAA,CAAe,KAAQ,GAAA,IAAA,CAAA;AACvB,UAAA,SAAA,CAAU,QAAQ,EAAC,CAAA;AACnB,UAAA,IAAA,CAAK,oBAAoB,KAAK,CAAA,CAAA;AAAA,SAChC;AAEA,QAAS,QAAA,CAAA,mBAAA,CAAoB,aAAaD,gBAAe,CAAA,CAAA;AACzD,QAAS,QAAA,CAAA,mBAAA,CAAoB,WAAW,aAAa,CAAA,CAAA;AACrD,QAAA,QAAA,CAAS,aAAgB,GAAA,IAAA,CAAA;AACzB,QAAA,QAAA,CAAS,WAAc,GAAA,IAAA,CAAA;AAEvB,QAAA,UAAA,CAAW,MAAM;AACf,UAAA,WAAA,CAAY,UAAU,SAAS,CAAA,CAAA;AAAA,WAC9B,CAAC,CAAA,CAAA;AAAA,OACN,CAAA;AAEA,MAAS,QAAA,CAAA,gBAAA,CAAiB,aAAaA,gBAAe,CAAA,CAAA;AACtD,MAAS,QAAA,CAAA,gBAAA,CAAiB,WAAW,aAAa,CAAA,CAAA;AAAA,KACpD;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,eAAA,GAAkB,CAAC,KAAA,EAAmB,MAA8B,KAAA;AACxE,IAAA,IAAI,MAAO,CAAA,QAAA,IAAY,MAAO,CAAA,QAAA,CAAS,MAAS,GAAA,CAAA;AAAG,MAAA,OAAA;AAEnD,IAAA,MAAM,MAAU,GAAA,KAAA,CAAM,MAAwB,EAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AAE1D,IAAI,IAAA,CAAC,MAAU,IAAA,CAAC,MAAO,CAAA,SAAA;AAAW,MAAA,OAAA;AAElC,IAAA,IAAI,CAAC,QAAA,CAAS,KAAS,IAAA,KAAA,CAAM,MAAQ,EAAA;AACnC,MAAM,MAAA,IAAA,GAAO,OAAO,qBAAsB,EAAA,CAAA;AAE1C,MAAM,MAAA,SAAA,GAAY,SAAS,IAAK,CAAA,KAAA,CAAA;AAChC,MAAA,IAAI,KAAK,KAAQ,GAAA,EAAA,IAAM,KAAK,KAAQ,GAAA,KAAA,CAAM,QAAQ,CAAG,EAAA;AACnD,QAAA,SAAA,CAAU,MAAS,GAAA,YAAA,CAAA;AACnB,QAAI,IAAA,QAAA,CAAS,MAAQ,EAAA,aAAa,CAAG,EAAA;AACnC,UAAA,MAAA,CAAO,MAAM,MAAS,GAAA,YAAA,CAAA;AAAA,SACxB;AACA,QAAA,cAAA,CAAe,KAAQ,GAAA,MAAA,CAAA;AAAA,OACzB,MAAA,IAAW,CAAC,QAAA,CAAS,KAAO,EAAA;AAC1B,QAAA,SAAA,CAAU,MAAS,GAAA,EAAA,CAAA;AACnB,QAAI,IAAA,QAAA,CAAS,MAAQ,EAAA,aAAa,CAAG,EAAA;AACnC,UAAA,MAAA,CAAO,MAAM,MAAS,GAAA,SAAA,CAAA;AAAA,SACxB;AACA,QAAA,cAAA,CAAe,KAAQ,GAAA,IAAA,CAAA;AAAA,OACzB;AAAA,KACF;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,IAAI,CAAC,QAAA;AAAU,MAAA,OAAA;AACf,IAAS,QAAA,CAAA,IAAA,CAAK,MAAM,MAAS,GAAA,EAAA,CAAA;AAAA,GAC/B,CAAA;AACA,EAAA,MAAM,WAAc,GAAA,CAAC,EAAE,KAAA,EAAO,YAAiB,KAAA;AAC7C,IAAA,IAAI,KAAU,KAAA,EAAA;AAAI,MAAA,OAAO,UAAW,CAAA,CAAA,CAAA,CAAA;AACpC,IAAA,MAAM,KAAQ,GAAA,UAAA,CAAW,OAAQ,CAAA,KAAA,IAAS,IAAI,CAAA,CAAA;AAC9C,IAAA,OAAO,WAAW,KAAQ,GAAA,UAAA,CAAW,MAAS,GAAA,CAAA,GAAI,IAAI,KAAQ,GAAA,CAAA,CAAA,CAAA;AAAA,GAChE,CAAA;AACA,EAAA,MAAM,eAAkB,GAAA,CACtB,KACA,EAAA,MAAA,EACA,UACG,KAAA;AACH,IAAA,KAAA,CAAM,eAAgB,EAAA,CAAA;AACtB,IAAA,MAAM,QACJ,MAAO,CAAA,KAAA,KAAU,aAAa,IAAO,GAAA,UAAA,IAAc,YAAY,MAAM,CAAA,CAAA;AAEvE,IAAA,MAAM,MAAU,GAAA,KAAA,CAAM,MAAwB,EAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AAE1D,IAAA,IAAI,MAAQ,EAAA;AACV,MAAI,IAAA,QAAA,CAAS,MAAQ,EAAA,SAAS,CAAG,EAAA;AAC/B,QAAA,WAAA,CAAY,QAAQ,SAAS,CAAA,CAAA;AAC7B,QAAA,OAAA;AAAA,OACF;AAAA,KACF;AAEA,IAAA,IAAI,CAAC,MAAO,CAAA,QAAA;AAAU,MAAA,OAAA;AAEtB,IAAM,MAAA,MAAA,GAAS,MAAM,KAAM,CAAA,MAAA,CAAA;AAC3B,IAAI,IAAA,QAAA,GAAW,OAAO,QAAS,CAAA,KAAA,CAAA;AAC/B,IAAI,IAAA,SAAA,CAAA;AACJ,IAAM,MAAA,aAAA,GAAgB,OAAO,aAAc,CAAA,KAAA,CAAA;AAE3C,IAAA,IACE,kBAAkB,MACjB,IAAA,aAAA,KAAkB,MAAU,IAAA,aAAA,CAAc,UAAU,IACrD,EAAA;AACA,MAAA,IAAI,aAAe,EAAA;AACjB,QAAA,aAAA,CAAc,KAAQ,GAAA,IAAA,CAAA;AAAA,OACxB;AACA,MAAA,MAAA,CAAO,cAAc,KAAQ,GAAA,MAAA,CAAA;AAC7B,MAAA,QAAA,GAAW,MAAO,CAAA,QAAA,CAAA;AAAA,KACpB;AACA,IAAA,IAAI,CAAC,KAAO,EAAA;AACV,MAAA,SAAA,GAAY,OAAO,KAAQ,GAAA,IAAA,CAAA;AAAA,KACtB,MAAA;AACL,MAAA,SAAA,GAAY,OAAO,KAAQ,GAAA,KAAA,CAAA;AAAA,KAC7B;AAEA,IAAA,MAAA,CAAO,SAAS,KAAQ,GAAA,QAAA,CAAA;AACxB,IAAA,MAAA,CAAO,UAAU,KAAQ,GAAA,SAAA,CAAA;AAEzB,IAAQ,MAAA,EAAA,KAAA,CAAM,OAAO,qBAAqB,CAAA,CAAA;AAAA,GAC5C,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,iBAAA;AAAA,IACA,uBAAA;AAAA,IACA,eAAA;AAAA,IACA,eAAA;AAAA,IACA,cAAA;AAAA,IACA,eAAA;AAAA,IACA,iBAAA;AAAA,GACF,CAAA;AACF;;;;"}