UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 49.7 kB
{"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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"}