{"version":3,"file":"useFixed.mjs","sources":["../../../../components/table/hooks/useFixed.ts"],"sourcesContent":["import {\n  ref,\n  reactive,\n  watch,\n  toRefs,\n  SetupContext,\n  onMounted,\n  computed,\n  ComputedRef,\n  onBeforeUnmount,\n  Ref,\n} from 'vue';\nimport { get, pick, xorWith, debounce } from 'lodash-es';\n\nimport log from '@tdesign/common-js/log/index';\nimport { ClassName, Styles } from '../../common';\nimport { BaseTableCol, BaseTableInstanceFunctions, TableRowData, TdBaseTableProps } from '../type';\nimport { getScrollbarWidthWithCSS } from '@tdesign/common-js/utils/getScrollbarWidth';\nimport { on, off } from '@tdesign/shared-utils';\nimport { FixedColumnInfo, TableRowFixedClasses, RowAndColFixedPosition, TableColFixedClasses } from '../types';\nimport { getIEVersion } from '@tdesign/common-js/utils/helper';\n\n// 固定列相关类名处理\nexport function getColumnFixedStyles(\n  col: TdBaseTableProps['columns'][0],\n  index: number,\n  rowAndColFixedPosition: RowAndColFixedPosition,\n  tableColFixedClasses: TableColFixedClasses,\n): { style?: Styles; classes?: ClassName } {\n  const fixedPos = rowAndColFixedPosition?.get(col.colKey || index);\n  if (!fixedPos) return {};\n  const thClasses = {\n    [tableColFixedClasses.left]: col.fixed === 'left',\n    [tableColFixedClasses.right]: col.fixed === 'right',\n    [tableColFixedClasses.lastLeft]: col.fixed === 'left' && fixedPos.lastLeftFixedCol,\n    [tableColFixedClasses.firstRight]: col.fixed === 'right' && fixedPos.firstRightFixedCol,\n  };\n  const thStyles = {\n    left: col.fixed === 'left' ? `${fixedPos.left}px` : undefined,\n    right: col.fixed === 'right' ? `${fixedPos.right}px` : undefined,\n  };\n  return {\n    style: thStyles,\n    classes: thClasses,\n  };\n}\n\n// 固定行相关类名处理\nexport function getRowFixedStyles(\n  rowId: string | number,\n  rowIndex: number,\n  rowLength: number,\n  fixedRows: TdBaseTableProps['fixedRows'],\n  rowAndColFixedPosition: RowAndColFixedPosition,\n  tableRowFixedClasses: TableRowFixedClasses,\n  // 和虚拟滚动搭配使用时，需要增加 style 的偏移量\n  virtualTranslateY = 0,\n): { style: Styles; classes: ClassName } {\n  if (!fixedRows || !fixedRows.length) return { style: undefined, classes: undefined };\n  const fixedTop = rowIndex < fixedRows[0];\n  const fixedBottom = rowIndex > rowLength - 1 - fixedRows[1];\n  const firstFixedBottomRow = rowLength - fixedRows[1];\n  const fixedPos = rowAndColFixedPosition?.get(rowId) || {};\n  const rowClasses = {\n    [tableRowFixedClasses.top]: fixedTop,\n    [tableRowFixedClasses.bottom]: fixedBottom,\n    [tableRowFixedClasses.firstBottom]: rowIndex === firstFixedBottomRow,\n    [tableRowFixedClasses.withoutBorderBottom]: rowIndex === firstFixedBottomRow - 1,\n  };\n  const rowStyles = {\n    top: fixedTop ? `${fixedPos.top - virtualTranslateY}px` : undefined,\n    bottom: fixedBottom ? `${fixedPos.bottom + virtualTranslateY}px` : undefined,\n  };\n  return {\n    style: rowStyles,\n    classes: rowClasses,\n  };\n}\n\nexport default function useFixed(\n  props: TdBaseTableProps,\n  context: SetupContext,\n  finalColumns: ComputedRef<BaseTableCol<TableRowData>[]>,\n  affixRef: Record<string, Ref>,\n) {\n  const {\n    columns,\n    tableLayout,\n    tableContentWidth,\n    fixedRows,\n    firstFullRow,\n    lastFullRow,\n    maxHeight,\n    headerAffixedTop,\n    footerAffixedBottom,\n    bordered,\n    resizable,\n    allowResizeColumnWidth,\n  } = toRefs(props);\n  const data = ref<TableRowData[]>([]);\n  const tableRef = ref<HTMLDivElement>();\n  const tableContentRef = ref<HTMLDivElement>();\n  const isFixedHeader = ref(false);\n  const isWidthOverflow = ref(false);\n  const tableElmRef = ref<HTMLTableElement>();\n  // CSS 样式设置了固定 6px\n  const scrollbarWidth = ref(6);\n  // 固定列、固定表头、固定表尾等内容的位置信息\n  const rowAndColFixedPosition = ref<RowAndColFixedPosition>(new Map());\n  const showColumnShadow = reactive({\n    left: false,\n    right: false,\n  });\n  // 虚拟滚动不能使用 CSS sticky 固定表头\n  const virtualScrollHeaderPos = ref<{ left: number; top: number }>({ left: 0, top: 0 });\n  const tableWidth = ref(0);\n  const tableElmWidth = ref(0);\n  const thWidthList = ref<{ [colKey: string]: number }>({});\n\n  const isFixedColumn = ref(false);\n  const isFixedRightColumn = ref(false);\n  const isFixedLeftColumn = ref(false);\n\n  const columnResizable = computed(() => allowResizeColumnWidth.value ?? resizable.value ?? false);\n\n  // 没有表头吸顶，没有虚拟滚动，则不需要表头宽度计算\n  const notNeedThWidthList = computed(\n    () =>\n      !(\n        props.headerAffixedTop ||\n        props.footerAffixedBottom ||\n        props.horizontalScrollAffixedBottom ||\n        props.scroll?.type === 'virtual'\n      ),\n  );\n\n  function setUseFixedTableElmRef(val: HTMLTableElement) {\n    tableElmRef.value = val;\n  }\n\n  function getColumnMap(\n    columns: BaseTableCol[],\n    map: RowAndColFixedPosition = new Map(),\n    levelNodes: FixedColumnInfo[][] = [],\n    level = 0,\n    parent?: FixedColumnInfo,\n  ) {\n    for (let i = 0, len = columns.length; i < len; i++) {\n      const col = columns[i];\n      if (['left', 'right'].includes(col.fixed)) {\n        isFixedColumn.value = true;\n      }\n      if (col.fixed === 'right') {\n        isFixedRightColumn.value = true;\n      }\n      if (col.fixed === 'left') {\n        isFixedLeftColumn.value = true;\n      }\n      const key = col.colKey || i;\n      const columnInfo: FixedColumnInfo = { col, parent, index: i };\n      map.set(key, columnInfo);\n      if (col.children?.length) {\n        getColumnMap(col.children, map, levelNodes, level + 1, columnInfo);\n      }\n      if (levelNodes[level]) {\n        levelNodes[level].push(columnInfo);\n      } else {\n        // eslint-disable-next-line no-param-reassign\n        levelNodes[level] = [columnInfo];\n      }\n    }\n    return {\n      newColumnsMap: map,\n      levelNodes,\n    };\n  }\n\n  const setFixedLeftPos = (\n    columns: BaseTableCol[],\n    initialColumnMap: RowAndColFixedPosition,\n    parent: FixedColumnInfo = {},\n  ) => {\n    for (let i = 0, len = columns.length; i < len; i++) {\n      const col = columns[i];\n      if (col.fixed === 'right') return;\n      const colInfo = initialColumnMap.get(col.colKey || i);\n      let lastColIndex = i - 1;\n      while (lastColIndex >= 0 && columns[lastColIndex].fixed !== 'left') {\n        lastColIndex -= 1;\n      }\n      const lastCol = columns[lastColIndex];\n      // 多级表头，使用父元素作为初始基本位置\n      const defaultWidth = i === 0 ? parent?.left || 0 : 0;\n      const lastColInfo = initialColumnMap.get(lastCol?.colKey || i - 1);\n      if (colInfo) {\n        colInfo.left = (lastColInfo?.left || defaultWidth) + (lastColInfo?.width || 0);\n      }\n      // 多级表头\n      if (col.children?.length) {\n        setFixedLeftPos(col.children, initialColumnMap, colInfo);\n      }\n    }\n  };\n\n  const setFixedRightPos = (\n    columns: BaseTableCol[],\n    initialColumnMap: RowAndColFixedPosition,\n    parent: FixedColumnInfo = {},\n  ) => {\n    for (let i = columns.length - 1; i >= 0; i--) {\n      const col = columns[i];\n      if (col.fixed === 'left') return;\n      const colInfo = initialColumnMap.get(col.colKey || i);\n      let lastColIndex = i + 1;\n      while (lastColIndex < columns.length && columns[lastColIndex].fixed !== 'right') {\n        lastColIndex += 1;\n      }\n      const lastCol = columns[lastColIndex];\n      // 多级表头，使用父元素作为初始基本位置\n      const defaultWidth = i === columns.length - 1 ? parent?.right || 0 : 0;\n      const lastColInfo = initialColumnMap.get(lastCol?.colKey || i + 1);\n      if (colInfo) {\n        colInfo.right = (lastColInfo?.right || defaultWidth) + (lastColInfo?.width || 0);\n      }\n      // 多级表头\n      if (col.children?.length) {\n        setFixedRightPos(col.children, initialColumnMap, colInfo);\n      }\n    }\n  };\n\n  // 获取固定列位置信息。先获取节点宽度，再计算\n  const setFixedColPosition = (trList: HTMLCollection, initialColumnMap: RowAndColFixedPosition) => {\n    if (!trList) return;\n    for (let i = 0, len = trList.length; i < len; i++) {\n      const thList = trList[i].children;\n      for (let j = 0, thLen = thList.length; j < thLen; j++) {\n        const th = thList[j] as HTMLElement;\n        const colKey = th.dataset.colkey;\n        if (!colKey) {\n          log.warn('TDesign Table', `${th.innerText} missing colKey. colKey is required for fixed column feature.`);\n        }\n        const obj = initialColumnMap.get(colKey || j);\n        if (obj?.col?.fixed) {\n          initialColumnMap.set(colKey, { ...obj, width: th.getBoundingClientRect().width });\n        }\n      }\n    }\n    setFixedLeftPos(columns.value, initialColumnMap);\n    setFixedRightPos(columns.value, initialColumnMap);\n  };\n\n  // 设置固定行位置信息 top/bottom\n  const setFixedRowPosition = (\n    trList: HTMLCollection,\n    initialColumnMap: RowAndColFixedPosition,\n    thead: HTMLTableSectionElement,\n    tfoot: HTMLTableSectionElement,\n  ) => {\n    const [fixedTopRows, fixedBottomRows] = fixedRows.value || [];\n    const { data, rowKey = 'id' } = props;\n    for (let i = 0; i < fixedTopRows; i++) {\n      const tr = trList[i] as HTMLElement;\n      const rowId = get(data[i], rowKey);\n      const thisRowInfo = initialColumnMap.get(rowId) || {};\n      const lastRowId = get(data[i - 1], rowKey);\n      const lastRowInfo = initialColumnMap.get(lastRowId) || {};\n      let defaultBottom = 0;\n      if (i === 0) {\n        defaultBottom = thead?.getBoundingClientRect().height || 0;\n      }\n      thisRowInfo.top = (lastRowInfo.top || defaultBottom) + (lastRowInfo.height || 0);\n      initialColumnMap.set(rowId, { ...thisRowInfo, height: tr?.getBoundingClientRect().height || 0 });\n    }\n    for (let i = data.length - 1; i >= data.length - fixedBottomRows; i--) {\n      // 当虚拟滚动的时候，尾部固定行并非对应数据的 index，需要进行倒推计算\n      const tr = trList[trList.length - (data.length - i)] as HTMLElement;\n      const rowId = get(data[i], rowKey);\n      const thisRowInfo = initialColumnMap.get(rowId) || {};\n      const lastRowId = get(data[i + 1], rowKey);\n      const lastRowInfo = initialColumnMap.get(lastRowId) || {};\n      let defaultBottom = 0;\n      if (i === data.length - 1) {\n        defaultBottom = tfoot?.getBoundingClientRect().height || 0;\n      }\n      thisRowInfo.bottom = (lastRowInfo.bottom || defaultBottom) + (lastRowInfo.height || 0);\n      initialColumnMap.set(rowId, { ...thisRowInfo, height: tr?.getBoundingClientRect().height || 0 });\n    }\n  };\n\n  const updateRowAndColFixedPosition = (tableContentElm: HTMLElement, initialColumnMap: RowAndColFixedPosition) => {\n    rowAndColFixedPosition.value.clear();\n    if (!tableContentElm) return;\n    const thead = tableContentElm.querySelector('thead');\n    // 处理固定列\n    thead && setFixedColPosition(thead.children, initialColumnMap);\n    // 处理冻结行\n    const tbody = tableContentElm.querySelector('tbody');\n    const tfoot = tableContentElm.querySelector('tfoot');\n    tbody && setFixedRowPosition(tbody.children, initialColumnMap, thead, tfoot);\n    // 更新最终 Map\n    rowAndColFixedPosition.value = initialColumnMap;\n  };\n\n  let shadowLastScrollLeft: number;\n  const updateColumnFixedShadow = (target: HTMLElement, extra?: { skipScrollLimit?: boolean }) => {\n    if (!isFixedColumn.value || !target) return;\n    const { scrollLeft } = target;\n    // 只有左右滚动，需要更新固定列阴影\n    if (shadowLastScrollLeft === scrollLeft && (!extra || !extra.skipScrollLimit)) return;\n    shadowLastScrollLeft = scrollLeft;\n    const isShowRight = target.clientWidth + scrollLeft < target.scrollWidth;\n    const isShowLeft = scrollLeft > 0;\n    if (showColumnShadow.left === isShowLeft && showColumnShadow.right === isShowRight) return;\n    showColumnShadow.left = isShowLeft && isFixedLeftColumn.value;\n    showColumnShadow.right = isShowRight && isFixedRightColumn.value;\n  };\n\n  // 多级表头场景较为复杂：为了滚动的阴影效果，需要知道哪些列是边界列，左侧固定列的最后一列，右侧固定列的第一列，每一层表头都需要兼顾\n  const setIsLastOrFirstFixedCol = (levelNodes: FixedColumnInfo[][]) => {\n    for (let t = 0; t < levelNodes.length; t++) {\n      const nodes = levelNodes[t];\n      for (let i = 0, len = nodes.length; i < len; i++) {\n        const colMapInfo = nodes[i];\n        const nextColMapInfo = nodes[i + 1];\n        const { parent } = colMapInfo;\n        const isParentLastLeftFixedCol = !parent || parent?.lastLeftFixedCol;\n        if (isParentLastLeftFixedCol && colMapInfo.col.fixed === 'left' && nextColMapInfo?.col.fixed !== 'left') {\n          colMapInfo.lastLeftFixedCol = true;\n        }\n        const lastColMapInfo = nodes[i - 1];\n        const isParentFirstRightFixedCol = !parent || parent?.firstRightFixedCol;\n        if (isParentFirstRightFixedCol && colMapInfo.col.fixed === 'right' && lastColMapInfo?.col.fixed !== 'right') {\n          colMapInfo.firstRightFixedCol = true;\n        }\n      }\n    }\n  };\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  const updateFixedStatus = () => {\n    const { newColumnsMap, levelNodes } = getColumnMap(columns.value);\n    setIsLastOrFirstFixedCol(levelNodes);\n    const timer = setTimeout(() => {\n      if (isFixedColumn.value || fixedRows.value?.length) {\n        updateRowAndColFixedPosition(tableContentRef.value, newColumnsMap);\n      }\n      clearTimeout(timer);\n    }, 0);\n    return () => {\n      clearTimeout(timer);\n    };\n  };\n\n  const updateFixedHeader = () => {\n    const timer = setTimeout(() => {\n      if (!tableContentRef.value) return;\n      isFixedHeader.value = tableContentRef.value.scrollHeight > tableContentRef.value.clientHeight;\n      isWidthOverflow.value = tableContentRef.value.scrollWidth > tableContentRef.value.clientWidth;\n      const pos = tableContentRef.value.getBoundingClientRect();\n      virtualScrollHeaderPos.value = {\n        top: pos.top,\n        left: pos.left,\n      };\n      clearTimeout(timer);\n    }, 0);\n  };\n\n  const setTableElmWidth = (width: number) => {\n    if (tableElmWidth.value === width) return;\n    tableElmWidth.value = width;\n  };\n\n  const updateTableWidth = () => {\n    const rect = tableContentRef.value?.getBoundingClientRect();\n    if (!rect) return;\n    // 存在纵向滚动条，且固定表头时，需去除滚动条宽度\n    const reduceWidth = isFixedHeader.value ? scrollbarWidth.value : 0;\n    tableWidth.value = rect.width - reduceWidth - (props.bordered ? 1 : 0);\n    const elmRect = tableElmRef?.value?.getBoundingClientRect();\n    elmRect?.width && setTableElmWidth(elmRect.width);\n  };\n\n  const updateAffixPosition = () => {\n    // 在表格高度变化的时候 需要手动调整affix的位置 因为affix本身无法监听到这些变化触发重新计算\n    affixRef.paginationAffixRef.value?.handleScroll?.();\n    affixRef.horizontalScrollAffixRef.value?.handleScroll?.();\n    affixRef.headerTopAffixRef.value?.handleScroll?.();\n    affixRef.footerBottomAffixRef.value?.handleScroll?.();\n  };\n\n  const calculateThWidthList = (trList: HTMLCollection) => {\n    const widthMap: { [colKey: string]: number } = {};\n    for (let i = 0, len = trList.length; i < len; i++) {\n      const thList = trList[i].children;\n      // second for used for multiple row header\n      for (let j = 0, thLen = thList.length; j < thLen; j++) {\n        const th = thList[j] as HTMLElement;\n        const colKey = th.dataset.colkey;\n        widthMap[colKey] = th.getBoundingClientRect().width;\n      }\n    }\n    return widthMap;\n  };\n\n  const updateThWidthList = (trList: HTMLCollection | { [colKey: string]: number }) => {\n    if (trList instanceof HTMLCollection) {\n      if (columnResizable.value) return;\n      thWidthList.value = calculateThWidthList(trList);\n    } else {\n      thWidthList.value = thWidthList.value || {};\n      Object.entries(trList).forEach(([colKey, width]) => {\n        thWidthList.value[colKey] = width;\n      });\n    }\n    return thWidthList.value;\n  };\n\n  const updateThWidthListHandler = () => {\n    const timer = setTimeout(() => {\n      updateTableWidth();\n      if (notNeedThWidthList.value) return;\n      const thead = tableContentRef.value?.querySelector('thead');\n      if (!thead) return;\n      updateThWidthList(thead.children);\n      clearTimeout(timer);\n    }, 0);\n  };\n\n  const resetThWidthList = () => {\n    thWidthList.value = {};\n  };\n\n  const emitScrollEvent = (e: WheelEvent) => {\n    props.onScrollX?.({ e });\n    props.onScrollY?.({ e });\n    props.onScroll?.({ e });\n  };\n\n  const getThWidthList = (type?: 'default' | 'calculate') => {\n    if (type === 'calculate') {\n      const trList = tableContentRef.value?.querySelector('thead')?.children;\n      if (!trList) {\n        return {};\n      }\n      return calculateThWidthList(trList);\n    }\n    return thWidthList.value || {};\n  };\n\n  watch(\n    [\n      data,\n      columns,\n      bordered,\n      tableLayout,\n      tableContentWidth,\n      isFixedHeader,\n      isWidthOverflow,\n      isFixedColumn,\n      fixedRows,\n      firstFullRow,\n      lastFullRow,\n    ],\n    updateFixedStatus,\n    { immediate: true },\n  );\n\n  watch(\n    [isFixedColumn, columns],\n    () => {\n      const timer = setTimeout(() => {\n        if (isFixedColumn.value) {\n          updateColumnFixedShadow(tableContentRef.value);\n        }\n        clearTimeout(timer);\n      }, 0);\n    },\n    { immediate: true },\n  );\n\n  watch(\n    [maxHeight, data, columns, bordered, tableContentRef],\n    () => {\n      if (tableContentRef.value) {\n        // 如果不监听元素的ref，会出现watch在ref还没ready的时候触发，此时没有触发这个判断的更新，导致表头消失\n        updateFixedHeader();\n      }\n    },\n    { immediate: true },\n  );\n\n  watch(finalColumns, () => {\n    resetThWidthList();\n  });\n\n  // 影响表头宽度的元素\n  watch(\n    [data, bordered, tableLayout, fixedRows, isFixedHeader, headerAffixedTop, footerAffixedBottom, tableContentWidth],\n    () => {\n      const timer = setTimeout(() => {\n        updateThWidthListHandler();\n        updateAffixPosition();\n        clearTimeout(timer);\n      }, 60);\n    },\n    { immediate: true },\n  );\n\n  watch([finalColumns], ([finalColumns], [preFinalColumns]) => {\n    const finalColKeys = finalColumns.map((t) => t.colKey);\n    const preColKeys = preFinalColumns.map((t) => t.colKey);\n    if (finalColKeys.length < preColKeys.length) {\n      const reduceKeys = xorWith(preColKeys, finalColKeys);\n      const thWidthList = getThWidthList('calculate');\n      let reduceWidth = 0;\n      reduceKeys.forEach((key) => {\n        reduceWidth += thWidthList[key];\n      });\n      const rootThWidthList = pick(thWidthList, preColKeys);\n      const oldTotalWidth = Object.values(rootThWidthList).reduce((r = 0, n) => r + n, 0);\n      // 保留原有可能编辑过的列宽度，但是当剩余列过小时，表头小于内容宽，需要缩放回内容宽度\n      // 使用不包含滚动条的可视化区域宽度，意味着当不再溢出的时候，将宽度设置回完整宽度\n      const contentWidth = tableContentRef.value.clientWidth;\n      const widthToReserve = oldTotalWidth - reduceWidth;\n      setTableElmWidth(Math.max(contentWidth, widthToReserve));\n    }\n  });\n\n  const refreshTable: BaseTableInstanceFunctions['refreshTable'] = () => {\n    // updateTableWidth();\n    updateThWidthListHandler();\n    updateFixedHeader();\n    updateAffixPosition();\n\n    if (isFixedColumn.value || isFixedHeader.value) {\n      updateFixedStatus();\n      updateColumnFixedShadow(tableContentRef.value, { skipScrollLimit: true });\n    }\n\n    // auto 布局下，同步表头列宽，避免 affix 表头列宽不对齐\n    if (tableLayout.value === 'auto') {\n      updateThWidthList(getThWidthList('calculate'));\n    }\n  };\n\n  const onResize = debounce(() => {\n    refreshTable();\n  }, 30);\n\n  let resizeObserver: ResizeObserver = null;\n  function addTableResizeObserver(tableElement: HTMLDivElement) {\n    if (typeof window === 'undefined') return;\n    // IE 11 以下使用 window resize；IE 11 以上使用 ResizeObserver\n    if (getIEVersion() < 11 || typeof window.ResizeObserver === 'undefined') return;\n    off(window, 'resize', onResize);\n    resizeObserver = new window.ResizeObserver(() => {\n      const timer = setTimeout(() => {\n        refreshTable();\n        clearTimeout(timer);\n      }, 200);\n    });\n    resizeObserver.observe(tableElement);\n    tableRef.value = tableElement;\n  }\n\n  onMounted(() => {\n    const scrollWidth = getScrollbarWidthWithCSS();\n    scrollbarWidth.value = scrollWidth;\n    updateThWidthListHandler();\n    const isWatchResize = isFixedColumn.value || isFixedHeader.value || !notNeedThWidthList.value || !data.value.length;\n    // IE 11 以下使用 window resize；IE 11 以上使用 ResizeObserver\n    const hasWindow = typeof window !== 'undefined';\n    const hasResizeObserver = hasWindow && typeof window.ResizeObserver !== 'undefined';\n    if ((isWatchResize && getIEVersion() < 11) || !hasResizeObserver) {\n      on(window, 'resize', onResize);\n    }\n  });\n\n  onBeforeUnmount(() => {\n    if (typeof window !== 'undefined') {\n      off(window, 'resize', onResize);\n    }\n    resizeObserver?.unobserve(tableRef.value);\n    resizeObserver?.disconnect();\n  });\n\n  const setData = (dataSource: TableRowData[]) => {\n    data.value = dataSource;\n  };\n\n  const updateTableAfterColumnResize = () => {\n    updateFixedStatus();\n    updateFixedHeader();\n  };\n\n  return {\n    tableWidth,\n    tableElmWidth,\n    thWidthList,\n    isFixedHeader,\n    isWidthOverflow,\n    tableContentRef,\n    isFixedColumn,\n    showColumnShadow,\n    rowAndColFixedPosition,\n    virtualScrollHeaderPos,\n    scrollbarWidth,\n    setData,\n    refreshTable,\n    setTableElmWidth,\n    emitScrollEvent,\n    updateThWidthListHandler,\n    updateColumnFixedShadow,\n    setUseFixedTableElmRef,\n    getThWidthList,\n    updateThWidthList,\n    addTableResizeObserver,\n    updateTableAfterColumnResize,\n  };\n}\n"],"names":["getColumnFixedStyles","col","index","rowAndColFixedPosition","tableColFixedClasses","fixedPos","get","colKey","thClasses","_defineProperty","left","fixed","right","lastLeft","lastLeftFixedCol","firstRight","firstRightFixedCol","thStyles","concat","style","classes","getRowFixedStyles","rowId","rowIndex","rowLength","fixedRows","tableRowFixedClasses","virtualTranslateY","length","fixedTop","fixedBottom","firstFixedBottomRow","rowClasses","top","bottom","firstBottom","withoutBorderBottom","rowStyles","useFixed","props","context","finalColumns","affixRef","_toRefs","toRefs","columns","tableLayout","tableContentWidth","firstFullRow","lastFullRow","maxHeight","headerAffixedTop","footerAffixedBottom","bordered","resizable","allowResizeColumnWidth","data","ref","tableRef","tableContentRef","isFixedHeader","isWidthOverflow","tableElmRef","scrollbarWidth","Map","showColumnShadow","reactive","virtualScrollHeaderPos","tableWidth","tableElmWidth","thWidthList","isFixedColumn","isFixedRightColumn","isFixedLeftColumn","columnResizable","computed","_ref","_allowResizeColumnWid","value","notNeedThWidthList","_props$scroll","horizontalScrollAffixedBottom","scroll","type","setUseFixedTableElmRef","val","getColumnMap","map","arguments","undefined","levelNodes","level","parent","i","len","_col$children","includes","key","columnInfo","set","children","push","newColumnsMap","setFixedLeftPos","initialColumnMap","_col$children2","colInfo","lastColIndex","lastCol","defaultWidth","lastColInfo","width","setFixedRightPos","_col$children3","setFixedColPosition","trList","thList","j","thLen","_obj$col","th","dataset","colkey","log","warn","innerText","obj","_objectSpread","getBoundingClientRect","setFixedRowPosition","thead","tfoot","_ref2","_ref3","_slicedToArray","fixedTopRows","fixedBottomRows","_props$rowKey","rowKey","tr","thisRowInfo","lastRowId","lastRowInfo","defaultBottom","height","updateRowAndColFixedPosition","tableContentElm","clear","querySelector","tbody","shadowLastScrollLeft","updateColumnFixedShadow","target","extra","scrollLeft","skipScrollLimit","isShowRight","clientWidth","scrollWidth","isShowLeft","setIsLastOrFirstFixedCol","t","nodes","colMapInfo","nextColMapInfo","isParentLastLeftFixedCol","lastColMapInfo","isParentFirstRightFixedCol","updateFixedStatus","_getColumnMap","timer","setTimeout","_fixedRows$value","clearTimeout","updateFixedHeader","scrollHeight","clientHeight","pos","setTableElmWidth","updateTableWidth","_tableContentRef$valu","_tableElmRef$value","rect","reduceWidth","elmRect","updateAffixPosition","_affixRef$paginationA","_affixRef$paginationA2","_affixRef$horizontalS","_affixRef$horizontalS2","_affixRef$headerTopAf","_affixRef$headerTopAf2","_affixRef$footerBotto","_affixRef$footerBotto2","paginationAffixRef","handleScroll","call","horizontalScrollAffixRef","headerTopAffixRef","footerBottomAffixRef","calculateThWidthList","widthMap","updateThWidthList","HTMLCollection","Object","entries","forEach","_ref4","_ref5","updateThWidthListHandler","_tableContentRef$valu2","resetThWidthList","emitScrollEvent","e","_props$onScrollX","_props$onScrollY","_props$onScroll","onScrollX","onScrollY","onScroll","getThWidthList","_tableContentRef$valu3","watch","immediate","_ref6","_ref7","_ref8","_ref9","preFinalColumns","finalColKeys","preColKeys","reduceKeys","xorWith","rootThWidthList","pick","oldTotalWidth","values","reduce","r","n","contentWidth","widthToReserve","Math","max","refreshTable","onResize","debounce","resizeObserver","addTableResizeObserver","tableElement","window","getIEVersion","ResizeObserver","off","observe","onMounted","getScrollbarWidthWithCSS","isWatchResize","hasWindow","hasResizeObserver","on","onBeforeUnmount","_resizeObserver","_resizeObserver2","unobserve","disconnect","setData","dataSource","updateTableAfterColumnResize"],"mappings":"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"}