{"version":3,"file":"useCellHover2.mjs","sources":["../../../../../../../../packages/components/table-pro/src/hooks/useCellHover.ts"],"sourcesContent":["import { unref } from 'vue'\nimport { $Tooltip } from '@tav-ui/hooks/web/useTooltip'\nimport { isBoolean } from '@tav-ui/utils/is'\nimport { ContentPrefixCls } from '../components/cell'\nimport { TOOLTIP_PLACEMENT } from '../const'\nimport type { ComputedRef } from 'vue'\nimport type { VxeGridDefines } from 'vxe-table'\nimport type { TableProGridEmit, TableProProps } from '../types'\n\nfunction showCellTooltip(\n  instances: Map<any, any>,\n  tablePropsRef: ComputedRef<TableProProps>,\n  // tableId: TableProProps['id'],\n  // showTooltip: TableProProps['showTooltip'],\n  params: VxeGridDefines.CellMouseenterEventParams\n) {\n  const { cell, column, _rowIndex, _columnIndex, rowid } = params\n  const { params: columnParams = {} } = column\n  const { showTooltip: columnShowTooltip } = columnParams\n  const { showTooltip, id: tableId } = unref(tablePropsRef)\n  const isColumnShowTooltip = isBoolean(columnShowTooltip) ? columnShowTooltip : showTooltip\n  if (isColumnShowTooltip) {\n    const id = `${tableId}:row_${_rowIndex}-${_columnIndex}-${rowid}`\n    const el = (cell as HTMLElement).querySelector(`.${ContentPrefixCls}`) as HTMLElement\n    let title = ''\n    let isCellOverflow = false\n    if (el) {\n      title = ((column.type === 'html' ? el.innerText : el.textContent) ?? '').trim()\n      isCellOverflow = el.scrollWidth > el.clientWidth\n    }\n    // let instance\n    // if (!instances.has(id)) {\n    //   instance = $Tooltip(el as HTMLElement, {\n    //     placement: TOOLTIP_PLACEMENT,\n    //     title,\n    //     id,\n    //     delay: 100,\n    //   })\n    //   instances.set(id, instance)\n    // } else {\n    //   instance = instances.get(id)\n    // }\n    const instance = $Tooltip(el as HTMLElement, {\n      placement: TOOLTIP_PLACEMENT,\n      title,\n      id,\n      delay: 100,\n    })\n    instances.set(id, instance)\n    isCellOverflow && instance?.showTooltip(el)\n  }\n}\n\nfunction hideCellTooltip(\n  instances: Map<any, any>,\n  tablePropsRef: ComputedRef<TableProProps>,\n  // tableId: TableProProps['id'],\n  // showTooltip: TableProProps['showTooltip'],\n  params: VxeGridDefines.CellMouseenterEventParams\n) {\n  const { column, _rowIndex, _columnIndex, rowid } = params\n  const { params: columnParams = {} } = column\n  const { showTooltip: columnShowTooltip } = columnParams\n  const { showTooltip, id: tableId } = unref(tablePropsRef)\n  const isColumnShowTooltip = isBoolean(columnShowTooltip) ? columnShowTooltip : showTooltip\n  if (isColumnShowTooltip) {\n    const id = `${tableId}:row_${_rowIndex}-${_columnIndex}-${rowid}`\n    const instance = instances.get(id)\n    instance?.hideTooltip()\n  }\n}\n\nfunction hideCellAllTooltip(instances: Map<any, any>) {\n  if (instances.size > 0) {\n    instances.forEach((instance) => {\n      instance?.hideTooltip()\n    })\n  }\n}\n\nfunction deleteTitle(cellEl: HTMLElement) {\n  const targetCls = ['vxe-header--column', 'vxe-body--column', 'vxe-footer--column']\n  const cotainsNum = targetCls.reduce((total, cur) => {\n    if (cellEl.classList.contains(cur)) {\n      total += 1\n    }\n    return total\n  }, 0)\n  const isColumnTdEL = cotainsNum > 0\n  if (isColumnTdEL) {\n    cellEl.removeAttribute('title')\n    cellEl.querySelector('.vxe-cell')!.removeAttribute('title')\n  }\n}\n\nexport function useCellHover(\n  tablePropsRef: ComputedRef<TableProProps>,\n  // id: TableProProps['id'],\n  // showTooltip: TableProProps['showTooltip'],\n  emit: TableProGridEmit\n) {\n  const instances = new Map<string, any>()\n\n  const onCellMouseenter = (params: VxeGridDefines.CellMouseenterEventParams) => {\n    // 详情可参考 vxetable body.ts triggerHeaderTooltipEvent/triggerBodyTooltipEvent/triggerFooterTooltipEvent\n    if (!params || ['action', 'actions'].includes(params.column.field)) return\n    showCellTooltip(instances, tablePropsRef, params)\n    // showCellTooltip(instances, id, showTooltip, params)\n    emit('CellMouseenter', params)\n    // setTimeout(() => {\n    //   deleteTitle(params.cell)\n    // }, 150)\n  }\n\n  const onCellMouseleave = (params?: VxeGridDefines.CellMouseleaveEventParams) => {\n    if (!params) {\n      hideCellAllTooltip(instances)\n    } else {\n      hideCellTooltip(instances, tablePropsRef, params)\n      // hideCellTooltip(instances, id, showTooltip, params)\n      emit('CellMouseleave', params)\n    }\n  }\n\n  return {\n    onCellMouseenter,\n    onCellMouseleave,\n    instances,\n  }\n}\n"],"names":[],"mappings":";;;;;;AAKA,SAAS,eAAe,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE;AAC3D,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;AAClE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;AAC/C,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,YAAY,CAAC;AAC1D,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;AAC5D,EAAE,MAAM,mBAAmB,GAAG,SAAS,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,GAAG,WAAW,CAAC;AAC7F,EAAE,IAAI,mBAAmB,EAAE;AAC3B,IAAI,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACtE,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC1D,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;AACnB,IAAI,IAAI,cAAc,GAAG,KAAK,CAAC;AAC/B,IAAI,IAAI,EAAE,EAAE;AACZ,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,WAAW,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC;AACtF,MAAM,cAAc,GAAG,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC;AACvD,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,EAAE;AAClC,MAAM,SAAS,EAAE,iBAAiB;AAClC,MAAM,KAAK;AACX,MAAM,EAAE;AACR,MAAM,KAAK,EAAE,GAAG;AAChB,KAAK,CAAC,CAAC;AACP,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAChC,IAAI,cAAc,IAAI,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;AAChD,GAAG;AACH,CAAC;AACD,SAAS,eAAe,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE;AAC3D,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;AAC5D,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;AAC/C,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,YAAY,CAAC;AAC1D,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;AAC5D,EAAE,MAAM,mBAAmB,GAAG,SAAS,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,GAAG,WAAW,CAAC;AAC7F,EAAE,IAAI,mBAAmB,EAAE;AAC3B,IAAI,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACtE,IAAI,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACvC,IAAI,QAAQ,EAAE,WAAW,EAAE,CAAC;AAC5B,GAAG;AACH,CAAC;AACD,SAAS,kBAAkB,CAAC,SAAS,EAAE;AACvC,EAAE,IAAI,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE;AAC1B,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK;AACpC,MAAM,QAAQ,EAAE,WAAW,EAAE,CAAC;AAC9B,KAAK,CAAC,CAAC;AACP,GAAG;AACH,CAAC;AACD,SAAS,WAAW,CAAC,MAAM,EAAE;AAC7B,EAAE,MAAM,SAAS,GAAG,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;AACrF,EAAE,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK;AACtD,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACxC,MAAM,KAAK,IAAI,CAAC,CAAC;AACjB,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG,EAAE,CAAC,CAAC,CAAC;AACR,EAAE,MAAM,YAAY,GAAG,UAAU,GAAG,CAAC,CAAC;AACtC,EAAE,IAAI,YAAY,EAAE;AACpB,IAAI,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AACpC,IAAI,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAC/D,GAAG;AACH,CAAC;AACM,SAAS,YAAY,CAAC,aAAa,EAAE,IAAI,EAAE;AAClD,EAAE,MAAM,SAAS,mBAAmB,IAAI,GAAG,EAAE,CAAC;AAC9C,EAAE,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AACvC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;AACtE,MAAM,OAAO;AACb,IAAI,eAAe,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;AACtD,IAAI,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AACnC,GAAG,CAAC;AACJ,EAAE,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AACvC,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;AACpC,KAAK,MAAM;AACX,MAAM,eAAe,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;AACxD,MAAM,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AACrC,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,OAAO;AACT,IAAI,gBAAgB;AACpB,IAAI,gBAAgB;AACpB,IAAI,SAAS;AACb,GAAG,CAAC;AACJ;;;;"}