{"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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"}