UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 38.7 kB
{"version":3,"file":"base-table.mjs","sources":["../../src/table/base-table.tsx"],"sourcesContent":["import { computed, defineComponent, SetupContext, ref, nextTick, PropType, watch, onMounted } from 'vue';\nimport pick from 'lodash/pick';\nimport props from './base-table-props';\nimport useTableHeader from './hooks/useTableHeader';\nimport useColumnResize from './hooks/useColumnResize';\nimport useFixed from './hooks/useFixed';\nimport usePagination from './hooks/usePagination';\nimport useVirtualScrollNew from '../hooks/useVirtualScrollNew';\nimport useAffix from './hooks/useAffix';\nimport Loading from '../loading';\nimport TBody, { extendTableProps } from './tbody';\nimport { BaseTableProps } from './interface';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport useStyle, { formatCSSUnit } from './hooks/useStyle';\nimport useClassName from './hooks/useClassName';\nimport { useConfig } from '../hooks/useConfig';\nimport { Affix } from '../affix';\nimport { ROW_LISTENERS } from './tr';\nimport THead from './thead';\nimport TFoot from './tfoot';\nimport { getAffixProps } from './utils';\nimport { Styles } from '../common';\nimport { getIEVersion } from '../_common/js/utils/helper';\nimport { BaseTableInstanceFunctions } from './type';\nimport log from '../_common/js/log';\n\nexport const BASE_TABLE_EVENTS = ['page-change', 'cell-click', 'scroll', 'scrollX', 'scrollY'];\nexport const BASE_TABLE_ALL_EVENTS = ROW_LISTENERS.map((t) => `row-${t}`).concat(BASE_TABLE_EVENTS);\n\nexport interface TableListeners {\n [key: string]: Function;\n}\n\nexport default defineComponent({\n name: 'XBaseTable',\n\n props: {\n ...props,\n /**\n * 渲染展开行,非公开属性,请勿在业务中使用\n */\n renderExpandedRow: Function as PropType<BaseTableProps['renderExpandedRow']>,\n onLeafColumnsChange: Function as PropType<BaseTableProps['onLeafColumnsChange']>,\n thDraggable: Boolean,\n },\n\n setup(props: BaseTableProps, context: SetupContext) {\n const renderTNode = useTNodeJSX();\n const tableRef = ref<HTMLDivElement>();\n const tableElmRef = ref<HTMLTableElement>();\n const tableBodyRef = ref<HTMLTableElement>();\n const bottomContentRef = ref<HTMLDivElement>();\n const tableFootHeight = ref(0);\n const { classPrefix, virtualScrollClasses, tableLayoutClasses, tableBaseClass, tableColFixedClasses } =\n useClassName();\n // 表格基础样式类\n const { tableClasses, sizeClassNames, tableContentStyles, tableElementStyles } = useStyle(props);\n const { globalConfig } = useConfig('table');\n const { isMultipleHeader, spansAndLeafNodes, thList } = useTableHeader(props);\n const finalColumns = computed(() => spansAndLeafNodes.value?.leafColumns || props.columns);\n\n // 吸附相关ref 用来做视图resize后重新定位\n const paginationAffixRef = ref();\n const horizontalScrollAffixRef = ref();\n const headerTopAffixRef = ref();\n const footerBottomAffixRef = ref();\n\n // 固定表头和固定列逻辑\n const {\n scrollbarWidth,\n virtualScrollHeaderPos,\n tableWidth,\n tableElmWidth,\n tableContentRef,\n isFixedHeader,\n isWidthOverflow,\n isFixedColumn,\n thWidthList,\n showColumnShadow,\n rowAndColFixedPosition,\n setData,\n refreshTable,\n setTableElmWidth,\n emitScrollEvent,\n setUseFixedTableElmRef,\n updateColumnFixedShadow,\n getThWidthList,\n updateThWidthList,\n addTableResizeObserver,\n updateTableAfterColumnResize,\n } = useFixed(props, context, finalColumns, {\n paginationAffixRef,\n horizontalScrollAffixRef,\n headerTopAffixRef,\n footerBottomAffixRef,\n });\n\n // 1. 表头吸顶;2. 表尾吸底;3. 底部滚动条吸底;4. 分页器吸底\n const {\n affixHeaderRef,\n affixFooterRef,\n horizontalScrollbarRef,\n paginationRef,\n showAffixHeader,\n showAffixFooter,\n showAffixPagination,\n onHorizontalScroll,\n setTableContentRef,\n updateAffixHeaderOrFooter,\n } = useAffix(props);\n\n const { dataSource, innerPagination, isPaginateData, renderPagination } = usePagination(props, context);\n\n // 列宽拖拽逻辑\n const columnResizeParams = useColumnResize({\n isWidthOverflow,\n tableContentRef,\n showColumnShadow,\n getThWidthList,\n updateThWidthList,\n setTableElmWidth,\n updateTableAfterColumnResize,\n onColumnResizeChange: props.onColumnResizeChange,\n });\n const { resizeLineRef, resizeLineStyle, setEffectColMap } = columnResizeParams;\n\n const dynamicBaseTableClasses = computed(() => [\n tableClasses.value,\n {\n [tableBaseClass.headerFixed]: isFixedHeader.value,\n [tableBaseClass.columnFixed]: isFixedColumn.value,\n [tableBaseClass.widthOverflow]: isWidthOverflow.value,\n [tableBaseClass.multipleHeader]: isMultipleHeader.value,\n [tableColFixedClasses.leftShadow]: showColumnShadow.left,\n [tableColFixedClasses.rightShadow]: showColumnShadow.right,\n [tableBaseClass.columnResizableTable]: props.resizable,\n },\n ]);\n\n const tableElmClasses = computed(() => [[tableLayoutClasses[props.tableLayout]]]);\n\n const showRightDivider = computed(\n () =>\n props.bordered &&\n isFixedHeader.value &&\n ((isMultipleHeader.value && isWidthOverflow.value) || !isMultipleHeader.value),\n );\n\n const dividerBottom = computed(() => {\n if (!props.bordered) return 0;\n const bottomRect = bottomContentRef.value?.getBoundingClientRect();\n const paginationRect = paginationRef.value?.getBoundingClientRect();\n return (bottomRect?.height || 0) + (paginationRect?.height || 0);\n });\n\n watch(tableElmRef, () => {\n setUseFixedTableElmRef(tableElmRef.value);\n });\n\n watch(\n () => [props.data, dataSource],\n () => {\n setData(isPaginateData.value ? dataSource.value : props.data);\n },\n );\n\n watch(\n spansAndLeafNodes,\n () => {\n props.onLeafColumnsChange?.(spansAndLeafNodes.value.leafColumns);\n setEffectColMap(spansAndLeafNodes.value.leafColumns, null);\n },\n { immediate: true },\n );\n\n const onFixedChange = () => {\n nextTick(() => {\n onHorizontalScroll();\n updateAffixHeaderOrFooter();\n });\n };\n\n // 虚拟滚动相关数据\n const virtualScrollParams = computed(() => ({\n data: props.data,\n scroll: props.scroll,\n }));\n const virtualConfig = useVirtualScrollNew(tableContentRef, virtualScrollParams);\n\n let lastScrollY = -1;\n const onInnerVirtualScroll = (e: WheelEvent) => {\n const target = (e.target || e.srcElement) as HTMLElement;\n const top = target.scrollTop;\n // 排除横向滚动触发的纵向虚拟滚动计算\n if (lastScrollY !== top) {\n virtualConfig.isVirtualScroll.value && virtualConfig.handleScroll();\n } else {\n lastScrollY = -1;\n updateColumnFixedShadow(target);\n }\n lastScrollY = top;\n emitScrollEvent(e);\n };\n\n // used for top margin\n const getTFootHeight = () => {\n if (!tableElmRef.value) return;\n tableFootHeight.value = tableElmRef.value.querySelector('tfoot')?.getBoundingClientRect().height;\n };\n\n // 对外暴露方法,修改时需谨慎(expose)\n const scrollColumnIntoView: BaseTableInstanceFunctions['scrollColumnIntoView'] = (colKey: string) => {\n if (!tableContentRef.value) return;\n const thDom = tableContentRef.value.querySelector(`th[data-colkey=\"${colKey}\"]`);\n const fixedThDom = tableContentRef.value.querySelectorAll('th.x-table__cell--fixed-left');\n let totalWidth = 0;\n for (let i = 0, len = fixedThDom.length; i < len; i++) {\n totalWidth += fixedThDom[i].getBoundingClientRect().width;\n }\n const domRect = thDom.getBoundingClientRect();\n const contentRect = tableContentRef.value.getBoundingClientRect();\n const distance = domRect.left - contentRect.left - totalWidth;\n tableContentRef.value.scrollTo({ left: distance, behavior: 'smooth' });\n };\n\n watch(tableContentRef, () => {\n setTableContentRef(tableContentRef.value);\n });\n\n watch(tableElmRef, getTFootHeight);\n\n watch(tableRef, (tableRef) => {\n addTableResizeObserver(tableRef);\n });\n\n onMounted(() => {\n getTFootHeight();\n setTableContentRef(tableContentRef.value);\n addTableResizeObserver(tableRef.value);\n });\n\n return {\n thList,\n classPrefix,\n innerPagination,\n globalConfig,\n tableFootHeight,\n virtualScrollHeaderPos,\n tableWidth,\n tableElmWidth,\n tableRef,\n tableElmRef,\n sizeClassNames,\n tableBaseClass,\n spansAndLeafNodes,\n dynamicBaseTableClasses,\n tableContentStyles,\n tableElementStyles,\n dividerBottom,\n virtualScrollClasses,\n tableLayoutClasses,\n tableElmClasses,\n tableContentRef,\n isFixedHeader,\n isWidthOverflow,\n isFixedColumn,\n rowAndColFixedPosition,\n showColumnShadow,\n thWidthList,\n isPaginateData,\n dataSource,\n affixHeaderRef,\n affixFooterRef,\n bottomContentRef,\n paginationRef,\n showAffixHeader,\n showAffixFooter,\n scrollbarWidth,\n isMultipleHeader,\n showRightDivider,\n resizeLineRef,\n resizeLineStyle,\n columnResizeParams,\n horizontalScrollbarRef,\n tableBodyRef,\n virtualConfig,\n showAffixPagination,\n scrollToElement: virtualConfig.scrollToElement,\n renderPagination,\n renderTNode,\n onFixedChange,\n onHorizontalScroll,\n updateAffixHeaderOrFooter,\n onInnerVirtualScroll,\n refreshTable,\n scrollColumnIntoView,\n paginationAffixRef,\n horizontalScrollAffixRef,\n headerTopAffixRef,\n footerBottomAffixRef,\n };\n },\n\n render() {\n const { rowAndColFixedPosition, tableLayout } = this;\n const data = this.isPaginateData ? this.dataSource : this.data;\n const columns = this.spansAndLeafNodes?.leafColumns || this.columns;\n\n const columnResizable = this.allowResizeColumnWidth ?? this.resizable;\n if (columnResizable && tableLayout === 'auto') {\n log.warn(\n 'Table',\n 'table-layout can not be `auto`, cause you are using column resizable, set `table-layout: fixed` please.',\n );\n }\n\n const defaultColWidth = tableLayout === 'fixed' && this.isWidthOverflow ? '100px' : undefined;\n\n const renderColGroup = (isAffixHeader = true) => (\n <colgroup>\n {columns.map((col) => {\n const style: Styles = {\n width:\n formatCSSUnit(\n (isAffixHeader || columnResizable ? this.thWidthList[col.colKey] : undefined) || col.width,\n ) || defaultColWidth,\n };\n if (col.minWidth) {\n style.minWidth = formatCSSUnit(col.minWidth);\n }\n // 没有设置任何宽度的场景下,需要保留表格正常显示的最小宽度,否则会出现因宽度过小的抖动问题\n if (!style.width && !col.minWidth && this.tableLayout === 'fixed') {\n style.minWidth = '80px';\n }\n return <col key={col.colKey} style={style}></col>;\n })}\n </colgroup>\n );\n\n const renderAffixedHeader = () => {\n if (this.showHeader === false) return null;\n return (\n !!(this.virtualConfig.isVirtualScroll.value || this.headerAffixedTop) &&\n (this.headerAffixedTop ? (\n <Affix\n offsetTop={0}\n {...getAffixProps(this.headerAffixedTop)}\n onFixedChange={this.onFixedChange}\n ref=\"headerTopAffixRef\"\n >\n {affixHeaderWithWrap}\n </Affix>\n ) : (\n this.isFixedHeader && affixHeaderWithWrap\n ))\n );\n };\n\n const renderAffixedHorizontalScrollbar = () => (\n <Affix\n offsetBottom={0}\n {...getAffixProps(this.horizontalScrollAffixedBottom)}\n style={{ marginTop: `-${this.scrollbarWidth * 2}px` }}\n horizontalScrollAffixedBottom\n ref=\"horizontalScrollAffixRef\"\n >\n <div\n ref=\"horizontalScrollbarRef\"\n class={['scrollbar', this.tableBaseClass.obviousScrollbar]}\n style={{\n width: `${this.tableWidth}px`,\n overflow: 'auto',\n opacity: Number(this.showAffixFooter),\n }}\n >\n <div style={{ width: `${this.tableElmWidth}px`, height: '5px' }}></div>\n </div>\n </Affix>\n );\n\n const headProps = {\n isFixedHeader: this.isFixedHeader,\n rowAndColFixedPosition: this.rowAndColFixedPosition,\n isMultipleHeader: this.isMultipleHeader,\n bordered: this.bordered,\n maxHeight: this.maxHeight,\n height: this.height,\n spansAndLeafNodes: this.spansAndLeafNodes,\n thList: this.thList,\n thWidthList: this.thWidthList,\n resizable: this.resizable,\n columnResizeParams: this.columnResizeParams,\n classPrefix: this.classPrefix,\n ellipsisOverlayClassName: this.size !== 'medium' ? this.sizeClassNames[this.size] : '',\n attach: this.attach,\n showColumnShadow: this.showColumnShadow,\n thDraggable: this.thDraggable,\n };\n\n /**\n * Affixed Header\n */\n // IE 浏览器需要遮挡 header 吸顶滚动条,要减去 getBoundingClientRect.height 的滚动条高度 4 像素\n const IEHeaderWrap = getIEVersion() <= 11 ? 4 : 0;\n const barWidth = this.isWidthOverflow ? this.scrollbarWidth : 0;\n const affixHeaderHeight = (this.affixHeaderRef?.getBoundingClientRect().height || 0) - IEHeaderWrap;\n const affixHeaderWrapHeight = affixHeaderHeight - barWidth;\n // 两类场景:1. 虚拟滚动,永久显示表头,直到表头消失在可视区域; 2. 表头吸顶,根据滚动情况判断是否显示吸顶表头\n const headerOpacity = props.headerAffixedTop ? Number(this.showAffixHeader) : 1;\n const affixHeaderWrapHeightStyle = {\n width: `${this.tableWidth}px`,\n height: `${affixHeaderWrapHeight}px`,\n opacity: headerOpacity,\n };\n // 多级表头左边线缺失\n const affixedLeftBorder = this.bordered ? 1 : 0;\n const affixedHeader = Boolean(\n (this.headerAffixedTop || this.virtualConfig.isVirtualScroll.value) && this.tableWidth,\n ) && (\n <div\n ref=\"affixHeaderRef\"\n style={{\n width: `${this.tableWidth - affixedLeftBorder}px`,\n opacity: Number(this.showAffixHeader),\n }}\n class={[\n 'scrollbar',\n {\n [this.tableBaseClass.affixedHeaderElm]: this.headerAffixedTop || this.virtualConfig.isVirtualScroll.value,\n },\n ]}\n >\n <table class={this.tableElmClasses} style={{ ...this.tableElementStyles, width: `${this.tableElmWidth}px` }}>\n {renderColGroup(true)}\n <THead v-slots={this.$slots} {...headProps} />\n </table>\n </div>\n );\n\n // 添加这一层,是为了隐藏表头的横向滚动条。如果以后不需要照顾 IE 10 以下的项目,则可直接移除这一层\n // 彼时,可更为使用 CSS 样式中的 .hideScrollbar()\n const affixHeaderWithWrap = (\n <div class={this.tableBaseClass.affixedHeaderWrap} style={affixHeaderWrapHeightStyle}>\n {affixedHeader}\n </div>\n );\n\n /**\n * Affixed Footer\n */\n let marginScrollbarWidth = this.isWidthOverflow ? this.scrollbarWidth : 0;\n if (this.bordered) {\n marginScrollbarWidth += 1;\n }\n // Hack: Affix 组件,marginTop 临时使用 负 margin 定位位置\n const affixedFooter = Boolean(this.footerAffixedBottom && this.footData?.length && this.tableWidth) && (\n <Affix\n class={this.tableBaseClass.affixedFooterWrap}\n onFixedChange={this.onFixedChange}\n offsetBottom={marginScrollbarWidth || 0}\n {...getAffixProps(this.footerAffixedBottom)}\n style={{ marginTop: `${-1 * (this.tableFootHeight + marginScrollbarWidth)}px` }}\n ref=\"footerBottomAffixRef\"\n >\n <div\n ref=\"affixFooterRef\"\n style={{ width: `${this.tableWidth - affixedLeftBorder}px`, opacity: Number(this.showAffixFooter) }}\n class={['scrollbar', { [this.tableBaseClass.affixedFooterElm]: this.footerAffixedBottom || this.isVirtual }]}\n >\n <table class={this.tableElmClasses} style={{ ...this.tableElementStyles, width: `${this.tableElmWidth}px` }}>\n {/* 此处和 Vue2 不同,Vue3 里面必须每一处单独写 <colgroup> */}\n {renderColGroup(true)}\n <TFoot\n rowKey={this.rowKey}\n v-slots={this.$slots}\n isFixedHeader={this.isFixedHeader}\n rowAndColFixedPosition={rowAndColFixedPosition}\n footData={this.footData}\n columns={columns}\n rowAttributes={this.rowAttributes}\n rowClassName={this.rowClassName}\n thWidthList={this.thWidthList}\n footerSummary={this.footerSummary}\n rowspanAndColspanInFooter={this.rowspanAndColspanInFooter}\n ></TFoot>\n </table>\n </div>\n </Affix>\n );\n\n const translate = `translate(0, ${this.virtualConfig.scrollHeight.value}px)`;\n const virtualStyle = {\n transform: translate,\n '-ms-transform': translate,\n '-moz-transform': translate,\n '-webkit-transform': translate,\n };\n const { virtualConfig } = this;\n const tableBodyProps = {\n classPrefix: this.classPrefix,\n ellipsisOverlayClassName: this.size !== 'medium' ? this.sizeClassNames[this.size] : '',\n rowAndColFixedPosition,\n showColumnShadow: this.showColumnShadow,\n data: virtualConfig.isVirtualScroll.value ? virtualConfig.visibleData.value : data,\n virtualConfig: this.virtualConfig,\n columns: this.spansAndLeafNodes.leafColumns,\n tableElm: this.tableRef,\n tableWidth: this.tableWidth,\n isWidthOverflow: this.isWidthOverflow,\n scroll: this.scroll,\n cellEmptyContent: this.cellEmptyContent,\n tableContentElm: this.tableContentRef,\n handleRowMounted: this.virtualConfig.handleRowMounted,\n renderExpandedRow: this.renderExpandedRow,\n ...pick(this.$props, extendTableProps),\n // 内部使用分页信息必须取 innerPagination\n pagination: this.innerPagination,\n attach: this.attach,\n };\n const tableContent = (\n <div\n ref=\"tableContentRef\"\n class={this.tableBaseClass.content}\n style={this.tableContentStyles}\n onScroll={this.onInnerVirtualScroll}\n >\n {this.virtualConfig.isVirtualScroll.value && (\n <div class={this.virtualScrollClasses.cursor} style={virtualStyle} />\n )}\n\n <table\n ref=\"tableElmRef\"\n class={this.tableElmClasses}\n style={{\n ...this.tableElementStyles,\n width:\n this.resizable && this.isWidthOverflow && this.tableElmWidth\n ? `${this.tableElmWidth}px`\n : this.tableElementStyles.width,\n }}\n >\n {renderColGroup(false)}\n {this.showHeader && (\n <THead v-slots={this.$slots} {...{ ...headProps, thWidthList: columnResizable ? this.thWidthList : {} }} />\n )}\n <TBody v-slots={this.$slots} {...tableBodyProps} />\n <TFoot\n v-slots={this.$slots}\n rowKey={this.rowKey}\n isFixedHeader={this.isFixedHeader}\n rowAndColFixedPosition={rowAndColFixedPosition}\n footData={this.footData}\n columns={columns}\n rowAttributes={this.rowAttributes}\n rowClassName={this.rowClassName}\n footerSummary={this.footerSummary}\n rowspanAndColspanInFooter={this.rowspanAndColspanInFooter}\n ></TFoot>\n </table>\n </div>\n );\n\n const customLoadingText = this.renderTNode('loading');\n const loadingContent = this.loading !== undefined && (\n <Loading\n loading={!!this.loading}\n text={customLoadingText ? () => customLoadingText : undefined}\n attach={this.tableRef ? () => this.tableRef : undefined}\n showOverlay\n size=\"small\"\n {...(this.loadingProps as BaseTableProps['loadingProps'])}\n ></Loading>\n );\n\n const topContent = this.renderTNode('topContent');\n const bottomContent = this.renderTNode('bottomContent');\n const pagination = (\n <div\n ref=\"paginationRef\"\n class={this.tableBaseClass.paginationWrap}\n style={{ opacity: Number(this.showAffixPagination) }}\n >\n {this.renderPagination()}\n </div>\n );\n const bottom = !!bottomContent && (\n <div ref=\"bottomContentRef\" class={this.tableBaseClass.bottomContent}>\n {bottomContent}\n </div>\n );\n\n return (\n <div ref=\"tableRef\" class={this.dynamicBaseTableClasses} style=\"position: relative\">\n {!!topContent && <div class={this.tableBaseClass.topContent}>{topContent}</div>}\n\n {renderAffixedHeader()}\n\n {tableContent}\n\n {affixedFooter}\n\n {loadingContent}\n\n {bottom}\n\n {/* 右侧滚动条分隔线 */}\n {this.showRightDivider && (\n <div\n class={this.tableBaseClass.scrollbarDivider}\n style={{\n right: `${this.scrollbarWidth}px`,\n bottom: this.dividerBottom ? `${this.dividerBottom}px` : undefined,\n height: `${this.tableContentRef?.getBoundingClientRect().height}px`,\n }}\n ></div>\n )}\n\n {/* 吸底的滚动条 */}\n {this.horizontalScrollAffixedBottom && renderAffixedHorizontalScrollbar()}\n\n {/* 吸底的分页器 */}\n {this.paginationAffixedBottom ? (\n <Affix offsetBottom={0} {...getAffixProps(this.paginationAffixedBottom)} ref=\"paginationAffixRef\">\n {pagination}\n </Affix>\n ) : (\n pagination\n )}\n\n {/* 调整列宽时的指示线。由于层级需要比较高,因而放在根节点,避免被吸顶表头覆盖。非必要情况,请勿调整辅助线位置 */}\n <div ref=\"resizeLineRef\" class={this.tableBaseClass.resizeLine} style={this.resizeLineStyle}></div>\n </div>\n );\n },\n});\n"],"names":["_isVNode","name","props","renderExpandedRow","onLeafColumnsChange","thDraggable","setup","paginationAffixRef","horizontalScrollAffixRef","headerTopAffixRef","footerBottomAffixRef","isWidthOverflow","tableContentRef","showColumnShadow","getThWidthList","updateThWidthList","setTableElmWidth","updateTableAfterColumnResize","setUseFixedTableElmRef","watch","setData","immediate","nextTick","onHorizontalScroll","updateAffixHeaderOrFooter","useVirtualScrollNew","lastScrollY","left","behavior","setTableContentRef","onMounted","getTFootHeight","addTableResizeObserver","thList","classPrefix","innerPagination","globalConfig","tableFootHeight","virtualScrollHeaderPos","tableWidth","tableElmWidth","tableRef","tableElmRef","sizeClassNames","tableBaseClass","spansAndLeafNodes","dynamicBaseTableClasses","tableContentStyles","tableElementStyles","dividerBottom","virtualScrollClasses","tableLayoutClasses","tableElmClasses","isFixedHeader","isFixedColumn","rowAndColFixedPosition","thWidthList","isPaginateData","dataSource","affixHeaderRef","affixFooterRef","bottomContentRef","paginationRef","showAffixHeader","showAffixFooter","scrollbarWidth","isMultipleHeader","showRightDivider","resizeLineRef","resizeLineStyle","columnResizeParams","horizontalScrollbarRef","tableBodyRef","virtualConfig","showAffixPagination","renderPagination","renderTNode","onFixedChange","onInnerVirtualScroll","refreshTable","scrollColumnIntoView","log","_createVNode","_mergeProps","marginTop","width","overflow","opacity","height","ellipsisOverlayClassName","marginScrollbarWidth","transform","data","columns","handleRowMounted","pick","right","bottom"],"mappings":"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"}