tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 53.2 kB
Source Map (JSON)
{"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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