{"version":3,"file":"events-helper.mjs","sources":["../../../../../../../packages/components/table/src/table-body/events-helper.ts"],"sourcesContent":["// @ts-nocheck\nimport { h, inject, ref } from 'vue'\nimport { debounce } from 'lodash-unified'\nimport { getStyle, hasClass } from '@bigin/utils'\nimport { createTablePopper, getCell, getColumnByCell } from '../util'\nimport { TABLE_INJECTION_KEY } from '../tokens'\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type { TableBodyProps } from './defaults'\n\nfunction useEvents<T>(props: Partial<TableBodyProps<T>>) {\n  const parent = inject(TABLE_INJECTION_KEY)\n  const tooltipContent = ref('')\n  const tooltipTrigger = ref(h('div'))\n  const handleEvent = (event: Event, row: T, name: string) => {\n    const table = parent\n    const cell = getCell(event)\n    let column: TableColumnCtx<T>\n    const namespace = table?.vnode.el?.dataset.prefix\n    if (cell) {\n      column = getColumnByCell(\n        {\n          columns: props.store.states.columns.value,\n        },\n        cell,\n        namespace\n      )\n      if (column) {\n        table?.emit(`cell-${name}`, row, column, cell, event)\n      }\n    }\n    table?.emit(`row-${name}`, row, column, event)\n  }\n  const handleDoubleClick = (event: Event, row: T) => {\n    handleEvent(event, row, 'dblclick')\n  }\n  const handleClick = (event: Event, row: T) => {\n    props.store.commit('setCurrentRow', row)\n    handleEvent(event, row, 'click')\n  }\n  const handleContextMenu = (event: Event, row: T) => {\n    handleEvent(event, row, 'contextmenu')\n  }\n  const handleMouseEnter = debounce((index: number) => {\n    props.store.commit('setHoverRow', index)\n  }, 30)\n  const handleMouseLeave = debounce(() => {\n    props.store.commit('setHoverRow', null)\n  }, 30)\n  const handleCellMouseEnter = (\n    event: MouseEvent,\n    row: T,\n    tooltipEffect: string\n  ) => {\n    const table = parent\n    const cell = getCell(event)\n    const namespace = table?.vnode.el?.dataset.prefix\n    if (cell) {\n      const column = getColumnByCell(\n        {\n          columns: props.store.states.columns.value,\n        },\n        cell,\n        namespace\n      )\n      const hoverState = (table.hoverState = { cell, column, row })\n      table?.emit(\n        'cell-mouse-enter',\n        hoverState.row,\n        hoverState.column,\n        hoverState.cell,\n        event\n      )\n    }\n\n    const cellChild = (event.target as HTMLElement).querySelector(\n      '.cell'\n    ) as HTMLElement\n    if (\n      !(\n        hasClass(cellChild, `${namespace}-tooltip`) &&\n        cellChild.childNodes.length\n      )\n    ) {\n      return\n    }\n    // use range width instead of scrollWidth to determine whether the text is overflowing\n    // to address a potential FireFox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1074543#c3\n    const range = document.createRange()\n    range.setStart(cellChild, 0)\n    range.setEnd(cellChild, cellChild.childNodes.length)\n    const rangeWidth = range.getBoundingClientRect().width\n    const padding =\n      (Number.parseInt(getStyle(cellChild, 'paddingLeft'), 10) || 0) +\n      (Number.parseInt(getStyle(cellChild, 'paddingRight'), 10) || 0)\n    if (\n      rangeWidth + padding > cellChild.offsetWidth ||\n      cellChild.scrollWidth > cellChild.offsetWidth\n    ) {\n      createTablePopper(\n        parent?.refs.tableWrapper,\n        cell,\n        cell.innerText || cell.textContent,\n        {\n          placement: 'top',\n          strategy: 'fixed',\n        },\n        tooltipEffect\n      )\n    }\n  }\n  const handleCellMouseLeave = (event) => {\n    const cell = getCell(event)\n    if (!cell) return\n\n    const oldHoverState = parent?.hoverState\n    parent?.emit(\n      'cell-mouse-leave',\n      oldHoverState?.row,\n      oldHoverState?.column,\n      oldHoverState?.cell,\n      event\n    )\n  }\n\n  return {\n    handleDoubleClick,\n    handleClick,\n    handleContextMenu,\n    handleMouseEnter,\n    handleMouseLeave,\n    handleCellMouseEnter,\n    handleCellMouseLeave,\n    tooltipContent,\n    tooltipTrigger,\n  }\n}\n\nexport default useEvents\n"],"names":[],"mappings":"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"}