{"version":3,"file":"events-helper.mjs","sources":["../../../../../../../packages/components/table/src/table-body/events-helper.ts"],"sourcesContent":["// @ts-nocheck\r\nimport { h, inject, ref } from 'vue'\r\nimport { debounce } from 'lodash'\r\nimport { hasClass } from '@sgui-plus/utils'\r\nimport { useZIndex } from '@sgui-plus/hooks'\r\nimport { createTablePopper, getCell, getColumnByCell } from '../util'\r\nimport { TABLE_INJECTION_KEY } from '../tokens'\r\nimport type { TableColumnCtx } from '../table-column/defaults'\r\nimport type { TableBodyProps } from './defaults'\r\nimport type { TableOverflowTooltipOptions } from '../util'\r\n\r\nfunction useEvents<T>(props: Partial<TableBodyProps<T>>) {\r\n  const parent = inject(TABLE_INJECTION_KEY)\r\n  const tooltipContent = ref('')\r\n  const tooltipTrigger = ref(h('div'))\r\n  const { nextZIndex } = useZIndex()\r\n  const handleEvent = (event: Event, row: T, name: string) => {\r\n    const table = parent\r\n    const cell = getCell(event)\r\n    let column: TableColumnCtx<T>\r\n    const namespace = table?.vnode.el?.dataset.prefix\r\n    if (cell) {\r\n      column = getColumnByCell(\r\n        {\r\n          columns: props.store.states.columns.value,\r\n        },\r\n        cell,\r\n        namespace\r\n      )\r\n      if (column) {\r\n        table?.emit(`cell-${name}`, row, column, cell, event)\r\n      }\r\n    }\r\n    table?.emit(`row-${name}`, row, column, event)\r\n  }\r\n  const handleDoubleClick = (event: Event, row: T) => {\r\n    handleEvent(event, row, 'dblclick')\r\n  }\r\n  const handleClick = (event: Event, row: T) => {\r\n    props.store.commit('setCurrentRow', row)\r\n    if (props.checkOnClickNode) {\r\n      props.store.commit('setRowCheck', row)\r\n    }\r\n    handleEvent(event, row, 'click')\r\n  }\r\n  const handleContextMenu = (event: Event, row: T) => {\r\n    handleEvent(event, row, 'contextmenu')\r\n  }\r\n  const handleMouseEnter = debounce((index: number) => {\r\n    props.store.commit('setHoverRow', index)\r\n  }, 30)\r\n  const handleMouseLeave = debounce(() => {\r\n    props.store.commit('setHoverRow', null)\r\n  }, 30)\r\n  const getPadding = (el: HTMLElement) => {\r\n    const style = window.getComputedStyle(el, null)\r\n    const paddingLeft = Number.parseInt(style.paddingLeft, 10) || 0\r\n    const paddingRight = Number.parseInt(style.paddingRight, 10) || 0\r\n    const paddingTop = Number.parseInt(style.paddingTop, 10) || 0\r\n    const paddingBottom = Number.parseInt(style.paddingBottom, 10) || 0\r\n    return {\r\n      left: paddingLeft,\r\n      right: paddingRight,\r\n      top: paddingTop,\r\n      bottom: paddingBottom,\r\n    }\r\n  }\r\n  const handleCellMouseEnter = (\r\n    event: MouseEvent,\r\n    row: T,\r\n    tooltipOptions: TableOverflowTooltipOptions\r\n  ) => {\r\n    const table = parent\r\n    const cell = getCell(event)\r\n    const namespace = table?.vnode.el?.dataset.prefix\r\n    if (cell) {\r\n      const column = getColumnByCell(\r\n        {\r\n          columns: props.store.states.columns.value,\r\n        },\r\n        cell,\r\n        namespace\r\n      )\r\n      const hoverState = (table.hoverState = { cell, column, row })\r\n      table?.emit(\r\n        'cell-mouse-enter',\r\n        hoverState.row,\r\n        hoverState.column,\r\n        hoverState.cell,\r\n        event\r\n      )\r\n    }\r\n\r\n    if (!tooltipOptions) {\r\n      return\r\n    }\r\n\r\n    // 判断是否text-overflow, 如果是就显示tooltip\r\n    const cellChild = (event.target as HTMLElement).querySelector(\r\n      '.cell'\r\n    ) as HTMLElement\r\n    if (\r\n      !(\r\n        hasClass(cellChild, `${namespace}-tooltip`) &&\r\n        cellChild.childNodes.length\r\n      )\r\n    ) {\r\n      return\r\n    }\r\n    // use range width instead of scrollWidth to determine whether the text is overflowing\r\n    // to address a potential FireFox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1074543#c3\r\n    const range = document.createRange()\r\n    range.setStart(cellChild, 0)\r\n    range.setEnd(cellChild, cellChild.childNodes.length)\r\n    /** detail: https://github.com/element-plus/element-plus/issues/10790\r\n     *  What went wrong?\r\n     *  UI > Browser > Zoom, In Blink/WebKit, getBoundingClientRect() sometimes returns inexact values, probably due to lost precision during internal calculations. In the example above:\r\n     *    - Expected: 188\r\n     *    - Actual: 188.00000762939453\r\n     */\r\n    const rangeWidth = Math.round(range.getBoundingClientRect().width)\r\n    const rangeHeight = Math.round(range.getBoundingClientRect().height)\r\n    const { top, left, right, bottom } = getPadding(cellChild)\r\n    const horizontalPadding = left + right\r\n    const verticalPadding = top + bottom\r\n    if (\r\n      rangeWidth + horizontalPadding > cellChild.offsetWidth ||\r\n      rangeHeight + verticalPadding > cellChild.offsetHeight ||\r\n      cellChild.scrollWidth > cellChild.offsetWidth\r\n    ) {\r\n      createTablePopper(\r\n        parent?.refs.tableWrapper,\r\n        cell,\r\n        cell.innerText || cell.textContent,\r\n        nextZIndex,\r\n        tooltipOptions\r\n      )\r\n    }\r\n  }\r\n  const handleCellMouseLeave = (event) => {\r\n    const cell = getCell(event)\r\n    if (!cell) return\r\n\r\n    const oldHoverState = parent?.hoverState\r\n    parent?.emit(\r\n      'cell-mouse-leave',\r\n      oldHoverState?.row,\r\n      oldHoverState?.column,\r\n      oldHoverState?.cell,\r\n      event\r\n    )\r\n  }\r\n\r\n  return {\r\n    handleDoubleClick,\r\n    handleClick,\r\n    handleContextMenu,\r\n    handleMouseEnter,\r\n    handleMouseLeave,\r\n    handleCellMouseEnter,\r\n    handleCellMouseLeave,\r\n    tooltipContent,\r\n    tooltipTrigger,\r\n  }\r\n}\r\n\r\nexport default useEvents\r\n"],"names":[],"mappings":"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"}