{"version":3,"file":"useFixed.mjs","sources":["../../../node_modules/lodash/noop.js","../../../node_modules/lodash/_createSet.js","../../../node_modules/lodash/_baseUniq.js","../../../node_modules/lodash/_baseXor.js","../../../node_modules/lodash/xorWith.js","../../../src/table/hooks/useFixed.ts"],"sourcesContent":["/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n  // No operation performed.\n}\n\nmodule.exports = noop;\n","var Set = require('./_Set'),\n    noop = require('./noop'),\n    setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n  return new Set(values);\n};\n\nmodule.exports = createSet;\n","var SetCache = require('./_SetCache'),\n    arrayIncludes = require('./_arrayIncludes'),\n    arrayIncludesWith = require('./_arrayIncludesWith'),\n    cacheHas = require('./_cacheHas'),\n    createSet = require('./_createSet'),\n    setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      length = array.length,\n      isCommon = true,\n      result = [],\n      seen = result;\n\n  if (comparator) {\n    isCommon = false;\n    includes = arrayIncludesWith;\n  }\n  else if (length >= LARGE_ARRAY_SIZE) {\n    var set = iteratee ? null : createSet(array);\n    if (set) {\n      return setToArray(set);\n    }\n    isCommon = false;\n    includes = cacheHas;\n    seen = new SetCache;\n  }\n  else {\n    seen = iteratee ? [] : result;\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var seenIndex = seen.length;\n      while (seenIndex--) {\n        if (seen[seenIndex] === computed) {\n          continue outer;\n        }\n      }\n      if (iteratee) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n    else if (!includes(seen, computed, comparator)) {\n      if (seen !== result) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseUniq;\n","var baseDifference = require('./_baseDifference'),\n    baseFlatten = require('./_baseFlatten'),\n    baseUniq = require('./_baseUniq');\n\n/**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\nfunction baseXor(arrays, iteratee, comparator) {\n  var length = arrays.length;\n  if (length < 2) {\n    return length ? baseUniq(arrays[0]) : [];\n  }\n  var index = -1,\n      result = Array(length);\n\n  while (++index < length) {\n    var array = arrays[index],\n        othIndex = -1;\n\n    while (++othIndex < length) {\n      if (othIndex != index) {\n        result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n      }\n    }\n  }\n  return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n}\n\nmodule.exports = baseXor;\n","var arrayFilter = require('./_arrayFilter'),\n    baseRest = require('./_baseRest'),\n    baseXor = require('./_baseXor'),\n    isArrayLikeObject = require('./isArrayLikeObject'),\n    last = require('./last');\n\n/**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\nvar xorWith = baseRest(function(arrays) {\n  var comparator = last(arrays);\n  comparator = typeof comparator == 'function' ? comparator : undefined;\n  return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n});\n\nmodule.exports = xorWith;\n","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 from 'lodash/get';\nimport debounce from 'lodash/debounce';\nimport xorWith from 'lodash/xorWith';\nimport log from '../../_common/js/log';\nimport { ClassName, Styles } from '../../common';\nimport { BaseTableCol, BaseTableInstanceFunctions, TableRowData, TdBaseTableProps } from '../type';\nimport { getScrollbarWidthWithCSS } from '../../_common/js/utils/getScrollbarWidth';\nimport { on, off } from '../../utils/dom';\nimport { FixedColumnInfo, TableRowFixedClasses, RowAndColFixedPosition, TableColFixedClasses } from '../interface';\nimport { getIEVersion } from '../../_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: 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}px` : undefined,\n    bottom: fixedBottom ? `${fixedPos.bottom}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      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 === 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 = Math.floor(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      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([maxHeight, data, columns, bordered], updateFixedHeader, { immediate: true });\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 oldTotalWidth = Object.values(thWidthList).reduce((r = 0, n) => r + n);\n      setTableElmWidth(oldTotalWidth - reduceWidth);\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\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      }, 60);\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":["noop","noop_1","Set","require$$0","require$$1","setToArray","require$$2","INFINITY","createSet","values","_createSet","SetCache","arrayIncludes","arrayIncludesWith","cacheHas","require$$3","require$$4","require$$5","LARGE_ARRAY_SIZE","baseUniq","array","iteratee","comparator","index","includes","length","isCommon","result","seen","set","outer","value","computed","seenIndex","push","_baseUniq","baseDifference","baseFlatten","baseXor","arrays","Array","othIndex","_baseXor","arrayFilter","baseRest","isArrayLikeObject","last","xorWith","undefined","xorWith_1","left","right","style","classes","top","col","parent","map","getColumnMap","levelNodes","newColumnsMap","lastColIndex","width","setFixedLeftPos","setFixedRightPos","fixedTopRows","fixedBottomRows","rowKey","get","defaultBottom","thisRowInfo","height","rowAndColFixedPosition","tbody","shadowLastScrollLeft","showColumnShadow","updateRowAndColFixedPosition","isFixedHeader","isWidthOverflow","thWidthList","colKey","updateTableWidth","updateThWidthList","e","immediate","watch","updateColumnFixedShadow","resetThWidthList","updateThWidthListHandler","updateAffixPosition","finalColumns","preFinalColumns","reduceKeys","reduceWidth","setTableElmWidth","updateFixedHeader","updateFixedStatus","skipScrollLimit","debounce","refreshTable","off","resizeObserver","onMounted","on","onBeforeUnmount","tableWidth","tableElmWidth","tableContentRef","isFixedColumn","virtualScrollHeaderPos","scrollbarWidth","setData","emitScrollEvent","setUseFixedTableElmRef","getThWidthList","addTableResizeObserver","updateTableAfterColumnResize"],"mappings":"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"}