{"version":3,"file":"Table.mjs","sources":["../../../../../../packages/vue-components/vc-table/src/Table.tsx"],"sourcesContent":["import type { EventHandler } from '@antdv/types';\nimport type { CSSProperties } from 'vue';\nimport type {\n  ColumnsType,\n  ColumnType,\n  CustomizeComponent,\n  CustomizeScrollBody,\n  DefaultRecordType,\n  ExpandedRowRender,\n  GetComponentProps,\n  GetRowKey,\n  Key,\n  PanelRender,\n  RenderExpandIcon,\n  RowClassName,\n  TableComponents,\n  TableLayout,\n  TableSticky,\n  TransformCellText,\n  TriggerEventHandler,\n} from './interface';\nimport { useState } from '@antdv/hooks';\nimport {\n  classNames,\n  getTargetScrollBarSize,\n  isVisible,\n  pickAttrs,\n  reactivePick,\n  toPx,\n  warning,\n} from '@antdv/utils';\nimport {\n  computed,\n  defineComponent,\n  nextTick,\n  onMounted,\n  onUpdated,\n  reactive,\n  ref,\n  shallowRef,\n  toRef,\n  toRefs,\n  watch,\n  watchEffect,\n} from 'vue';\nimport VCResizeObserver from '../../vc-resize-observer/src/index';\nimport Body from './Body';\nimport ColGroup from './ColGroup';\nimport { useProvideBody } from './context/BodyContext';\nimport { useProvideExpandedRow } from './context/ExpandedRowContext';\nimport { useProvideResize } from './context/ResizeContext';\nimport { useProvideSticky } from './context/StickyContext';\nimport { useProvideTable } from './context/TableContext';\nimport FixedHolder from './FixedHolder';\nimport Footer from './Footer';\nimport Header from './Header/Header';\nimport useColumns from './hooks/useColumns';\nimport { useLayoutState, useTimeoutLock } from './hooks/useFrame';\nimport useSticky from './hooks/useSticky';\nimport useStickyOffsets from './hooks/useStickyOffsets';\nimport Panel from './Panel';\nimport StickyScrollBar from './stickyScrollBar';\nimport { findAllChildrenKeys, renderExpandIcon } from './utils/expandUtil';\nimport { getCellFixedInfo } from './utils/fixUtil';\nimport { getColumnsKey, getPathValue, mergeObject, validateValue } from './utils/valueUtil';\n\n// Used for conditions cache\nconst EMPTY_DATA = [];\n\n// Used for customize scroll\nconst EMPTY_SCROLL_TARGET = {};\n\nexport const INTERNAL_HOOKS = 'rc-table-internal-hook';\n\nexport interface TableProps<RecordType = DefaultRecordType> {\n  prefixCls?: string;\n  data?: RecordType[];\n  columns?: ColumnsType<RecordType>;\n  rowKey?: string | GetRowKey<RecordType>;\n  tableLayout?: TableLayout;\n\n  // Fixed Columns\n  scroll?: { x?: number | true | string; y?: number | string };\n\n  rowClassName?: string | RowClassName<RecordType>;\n\n  // Additional Part\n  title?: PanelRender<RecordType>;\n  footer?: PanelRender<RecordType>;\n  // summary?: (data: readonly RecordType[]) => any;\n\n  // Customize\n  id?: string;\n  showHeader?: boolean;\n  components?: TableComponents<RecordType>;\n  customRow?: GetComponentProps<RecordType>;\n  customHeaderRow?: GetComponentProps<Array<ColumnType<RecordType>>>;\n  // emptyText?: any;\n\n  direction?: 'ltr' | 'rtl';\n\n  // Expandable\n  expandFixed?: 'left' | 'right' | boolean;\n  expandColumnWidth?: number;\n  expandedRowKeys?: Key[];\n  defaultExpandedRowKeys?: Key[];\n  expandedRowRender?: ExpandedRowRender<RecordType>;\n  expandRowByClick?: boolean;\n  expandIcon?: RenderExpandIcon<RecordType>;\n  onExpand?: (expanded: boolean, record: RecordType) => void;\n  onExpandedRowsChange?: (expandedKeys: Key[]) => void;\n  defaultExpandAllRows?: boolean;\n  indentSize?: number;\n  expandIconColumnIndex?: number;\n  showExpandColumn?: boolean;\n  expandedRowClassName?: RowClassName<RecordType>;\n  childrenColumnName?: string;\n  rowExpandable?: (record: RecordType) => boolean;\n\n  // =================================== Internal ===================================\n  /**\n   * @private Internal usage, may remove by refactor. Should always use `columns` instead.\n   *\n   * !!! DO NOT USE IN PRODUCTION ENVIRONMENT !!!\n   */\n  internalHooks?: string;\n\n  /**\n   * @private Internal usage, may remove by refactor. Should always use `columns` instead.\n   *\n   * !!! DO NOT USE IN PRODUCTION ENVIRONMENT !!!\n   */\n  // Used for antd table transform column with additional column\n  transformColumns?: (columns: ColumnsType<RecordType>) => ColumnsType<RecordType>;\n\n  /**\n   * @private Internal usage, may remove by refactor.\n   *\n   * !!! DO NOT USE IN PRODUCTION ENVIRONMENT !!!\n   */\n  internalRefs?: {\n    body: HTMLDivElement;\n  };\n\n  sticky?: boolean | TableSticky;\n\n  canExpandable?: boolean;\n\n  onUpdateInternalRefs?: (refs: Record<string, any>) => void;\n\n  transformCellText?: TransformCellText<RecordType>;\n}\n\nexport default defineComponent({\n  name: 'VcTable',\n  inheritAttrs: false,\n  props: [\n    'prefixCls',\n    'data',\n    'columns',\n    'rowKey',\n    'tableLayout',\n    'scroll',\n    'rowClassName',\n    'title',\n    'footer',\n    'id',\n    'showHeader',\n    'components',\n    'customRow',\n    'customHeaderRow',\n    'direction',\n    'expandFixed',\n    'expandColumnWidth',\n    'expandedRowKeys',\n    'defaultExpandedRowKeys',\n    'expandedRowRender',\n    'expandRowByClick',\n    'expandIcon',\n    'onExpand',\n    'onExpandedRowsChange',\n    'onUpdate:expandedRowKeys',\n    'defaultExpandAllRows',\n    'indentSize',\n    'expandIconColumnIndex',\n    'expandedRowClassName',\n    'childrenColumnName',\n    'rowExpandable',\n    'sticky',\n    'transformColumns',\n    'internalHooks',\n    'internalRefs',\n    'canExpandable',\n    'onUpdateInternalRefs',\n    'transformCellText',\n  ],\n  emits: ['expand', 'expandedRowsChange', 'updateInternalRefs', 'update:expandedRowKeys'],\n  setup(props, { attrs, slots, emit }) {\n    const mergedData = computed(() => props.data || EMPTY_DATA);\n    const hasData = computed(() => !!mergedData.value.length);\n    // ==================== Customize =====================\n    const mergedComponents = computed(() =>\n      mergeObject<TableComponents<any>>(props.components, {}),\n    );\n\n    const getComponent = (path, defaultComponent?: string) => getPathValue<CustomizeComponent, TableComponents<any>>(mergedComponents.value, path)\n      || defaultComponent;\n\n    const getRowKey = computed(() => {\n      const rowKey = props.rowKey;\n      if (typeof rowKey === 'function')\n        return rowKey;\n\n      return (record) => {\n        const key = record && record[rowKey];\n\n        if (process.env.NODE_ENV !== 'production') {\n          warning(\n            key !== undefined,\n            'Each record in table should have a unique `key` prop, or set `rowKey` to an unique primary key.',\n          );\n        }\n\n        return key;\n      };\n    });\n\n    // ====================== Expand ======================\n\n    const mergedExpandIcon = computed(() => props.expandIcon || renderExpandIcon);\n\n    const mergedChildrenColumnName = computed(() => props.childrenColumnName || 'children');\n\n    const expandableType = computed(() => {\n      if (props.expandedRowRender)\n        return 'row';\n\n      /**\n       * Fix https://github.com/ant-design/ant-design/issues/21154\n       * This is a workaround to not to break current behavior.\n       * We can remove follow code after final release.\n       *\n       * To other developer:\n       *  Do not use `__PARENT_RENDER_ICON__` in prod since we will remove this when refactor\n       */\n      if (\n        props.canExpandable\n        || mergedData.value.some(\n          record => record && typeof record === 'object' && record[mergedChildrenColumnName.value],\n        )\n      ) {\n        return 'nest';\n      }\n\n      return false;\n    });\n\n    const innerExpandedKeys = shallowRef([]);\n    const stop = watchEffect(() => {\n      if (props.defaultExpandedRowKeys)\n        innerExpandedKeys.value = props.defaultExpandedRowKeys;\n\n      if (props.defaultExpandAllRows) {\n        innerExpandedKeys.value = findAllChildrenKeys(\n          mergedData.value,\n          getRowKey.value,\n          mergedChildrenColumnName.value,\n        );\n      }\n    });\n    // defalutXxxx 仅仅第一次生效\n    stop();\n\n    const mergedExpandedKeys = computed(\n      (): Set<Key> => new Set(props.expandedRowKeys || innerExpandedKeys.value || []),\n    );\n\n    const onTriggerExpand: TriggerEventHandler<any> = (record) => {\n      const key = getRowKey.value(record, mergedData.value.indexOf(record));\n\n      let newExpandedKeys: Key[];\n      const hasKey = mergedExpandedKeys.value.has(key);\n      if (hasKey) {\n        mergedExpandedKeys.value.delete(key);\n        newExpandedKeys = [...mergedExpandedKeys.value];\n      } else {\n        newExpandedKeys = [...mergedExpandedKeys.value, key];\n      }\n      innerExpandedKeys.value = newExpandedKeys;\n\n      emit('expand', !hasKey, record);\n      emit('update:expandedRowKeys', newExpandedKeys);\n      emit('expandedRowsChange', newExpandedKeys);\n    };\n\n    // Warning if use `expandedRowRender` and nest children in the same time\n    if (\n      process.env.NODE_ENV !== 'production'\n      && props.expandedRowRender\n      && mergedData.value.some((record) => {\n        return Array.isArray(record?.[mergedChildrenColumnName.value]);\n      })\n    ) {\n      warning(false, '`expandedRowRender` should not use with nested Table');\n    }\n\n    const componentWidth = ref(0);\n\n    const [columns, flattenColumns] = useColumns(\n      {\n        ...toRefs(props),\n\n        // children,\n        expandable: computed(() => !!props.expandedRowRender),\n        expandedKeys: mergedExpandedKeys,\n        getRowKey,\n        onTriggerExpand,\n        expandIcon: mergedExpandIcon,\n      },\n      computed(() => (props.internalHooks === INTERNAL_HOOKS ? props.transformColumns : null)),\n    );\n\n    const columnContext = computed(() => ({\n      columns: columns.value,\n      flattenColumns: flattenColumns.value,\n    }));\n\n    // ====================== Scroll ======================\n    const fullTableRef = ref<HTMLDivElement>();\n    const scrollHeaderRef = ref<HTMLDivElement>();\n    const scrollBodyRef = ref<HTMLDivElement>();\n    const scrollBodySizeInfo = ref<{ scrollWidth: number; clientWidth: number }>({\n      scrollWidth: 0,\n      clientWidth: 0,\n    });\n    const scrollSummaryRef = ref<HTMLDivElement>();\n    const [pingedLeft, setPingedLeft] = useState(false);\n    const [pingedRight, setPingedRight] = useState(false);\n    const [colsWidths, updateColsWidths] = useLayoutState(new Map<Key, number>());\n\n    // Convert map to number width\n    const colsKeys = computed(() => getColumnsKey(flattenColumns.value));\n    const colWidths = computed(() =>\n      colsKeys.value.map(columnKey => colsWidths.value.get(columnKey)),\n    );\n    const columnCount = computed(() => flattenColumns.value.length);\n    const stickyOffsets = useStickyOffsets(colWidths, columnCount, toRef(props, 'direction'));\n    const fixHeader = computed(() => props.scroll && validateValue(props.scroll.y));\n    const horizonScroll = computed(\n      () => (props.scroll && validateValue(props.scroll.x)) || Boolean(props.expandFixed),\n    );\n    const fixColumn = computed(\n      () => horizonScroll.value && flattenColumns.value.some(({ fixed }) => fixed),\n    );\n\n    // Sticky\n    const stickyRef = ref<{ setScrollLeft: (left: number) => void }>();\n    const stickyState = useSticky(toRef(props, 'sticky'), toRef(props, 'prefixCls'));\n\n    const summaryFixedInfos = reactive<Record<string, boolean | string>>({});\n    const fixFooter = computed(() => {\n      const info = Object.values(summaryFixedInfos)[0];\n      return (fixHeader.value || stickyState.value.isSticky) && info;\n    });\n\n    const summaryCollect = (uniKey: string, fixed: boolean | string) => {\n      if (fixed)\n        summaryFixedInfos[uniKey] = fixed;\n      else\n        delete summaryFixedInfos[uniKey];\n    };\n\n    // Scroll\n    const scrollXStyle = ref<CSSProperties>({});\n    const scrollYStyle = ref<CSSProperties>({});\n    const scrollTableStyle = ref<CSSProperties>({});\n\n    watchEffect(() => {\n      if (fixHeader.value) {\n        scrollYStyle.value = {\n          overflowY: 'scroll',\n          maxHeight: toPx(props.scroll.y),\n        };\n      }\n\n      if (horizonScroll.value) {\n        scrollXStyle.value = { overflowX: 'auto' };\n        // When no vertical scrollbar, should hide it\n        // https://github.com/ant-design/ant-design/pull/20705\n        // https://github.com/ant-design/ant-design/issues/21879\n        if (!fixHeader.value)\n          scrollYStyle.value = { overflowY: 'hidden' };\n\n        scrollTableStyle.value = {\n          width: props.scroll.x === true ? 'auto' : toPx(props.scroll.x),\n          minWidth: '100%',\n        };\n      }\n    });\n\n    const onColumnResize = (columnKey: Key, width: number) => {\n      if (isVisible(fullTableRef.value)) {\n        updateColsWidths((widths) => {\n          if (widths.get(columnKey) !== width) {\n            const newWidths = new Map(widths);\n            newWidths.set(columnKey, width);\n            return newWidths;\n          }\n          return widths;\n        });\n      }\n    };\n\n    const [setScrollTarget, getScrollTarget] = useTimeoutLock(null);\n\n    function forceScroll(scrollLeft: number, target: HTMLDivElement | ((left: number) => void)) {\n      if (!target)\n        return;\n\n      if (typeof target === 'function') {\n        target(scrollLeft);\n        return;\n      }\n      const domTarget = (target as any).$el || target;\n      if (domTarget.scrollLeft !== scrollLeft)\n\n        domTarget.scrollLeft = scrollLeft;\n    }\n\n    const onScroll: EventHandler = ({\n      currentTarget,\n      scrollLeft,\n    }: {\n      currentTarget: HTMLElement;\n      scrollLeft?: number;\n    }) => {\n      const isRTL = props.direction === 'rtl';\n      const mergedScrollLeft\n        = typeof scrollLeft === 'number' ? scrollLeft : currentTarget.scrollLeft;\n\n      const compareTarget = currentTarget || EMPTY_SCROLL_TARGET;\n      if (!getScrollTarget() || getScrollTarget() === compareTarget) {\n        setScrollTarget(compareTarget);\n\n        forceScroll(mergedScrollLeft, scrollHeaderRef.value);\n        forceScroll(mergedScrollLeft, scrollBodyRef.value);\n        forceScroll(mergedScrollLeft, scrollSummaryRef.value);\n        forceScroll(mergedScrollLeft, stickyRef.value?.setScrollLeft);\n      }\n\n      if (currentTarget) {\n        const { scrollWidth, clientWidth } = currentTarget;\n        if (isRTL) {\n          setPingedLeft(-mergedScrollLeft < scrollWidth - clientWidth);\n          setPingedRight(-mergedScrollLeft > 0);\n        } else {\n          setPingedLeft(mergedScrollLeft > 0);\n          setPingedRight(mergedScrollLeft < scrollWidth - clientWidth);\n        }\n      }\n    };\n\n    const triggerOnScroll = () => {\n      if (horizonScroll.value && scrollBodyRef.value) {\n        onScroll({ currentTarget: scrollBodyRef.value });\n      } else {\n        setPingedLeft(false);\n        setPingedRight(false);\n      }\n    };\n    let timtout;\n    const updateWidth = (width: number) => {\n      if (width !== componentWidth.value) {\n        triggerOnScroll();\n        componentWidth.value = fullTableRef.value ? fullTableRef.value.offsetWidth : width;\n      }\n    };\n    const onFullTableResize = ({ width }) => {\n      clearTimeout(timtout);\n      if (componentWidth.value === 0) {\n        updateWidth(width);\n        return;\n      }\n      timtout = setTimeout(() => {\n        updateWidth(width);\n      }, 100);\n    };\n\n    watch(\n      [horizonScroll, () => props.data, () => props.columns],\n      () => {\n        if (horizonScroll.value)\n          triggerOnScroll();\n      },\n      { flush: 'post' },\n    );\n\n    const [scrollbarSize, setScrollbarSize] = useState(0);\n    useProvideSticky();\n    onMounted(() => {\n      nextTick(() => {\n        triggerOnScroll();\n        setScrollbarSize(getTargetScrollBarSize(scrollBodyRef.value).width);\n        scrollBodySizeInfo.value = {\n          scrollWidth: scrollBodyRef.value?.scrollWidth || 0,\n          clientWidth: scrollBodyRef.value?.clientWidth || 0,\n        };\n      });\n    });\n    onUpdated(() => {\n      nextTick(() => {\n        const scrollWidth = scrollBodyRef.value?.scrollWidth || 0;\n        const clientWidth = scrollBodyRef.value?.clientWidth || 0;\n        if (\n          scrollBodySizeInfo.value.scrollWidth !== scrollWidth\n          || scrollBodySizeInfo.value.clientWidth !== clientWidth\n        ) {\n          scrollBodySizeInfo.value = {\n            scrollWidth,\n            clientWidth,\n          };\n        }\n      });\n    });\n\n    watchEffect(\n      () => {\n        if (props.internalHooks === INTERNAL_HOOKS && props.internalRefs) {\n          props.onUpdateInternalRefs({\n            body: scrollBodyRef.value\n              ? (scrollBodyRef.value as any).$el || scrollBodyRef.value\n              : null,\n          });\n        }\n      },\n      { flush: 'post' },\n    );\n\n    // Table layout\n    const mergedTableLayout = computed(() => {\n      if (props.tableLayout)\n        return props.tableLayout;\n\n      // https://github.com/ant-design/ant-design/issues/25227\n      // When scroll.x is max-content, no need to fix table layout\n      // it's width should stretch out to fit content\n      if (fixColumn.value)\n        return props.scroll.x === 'max-content' ? 'auto' : 'fixed';\n\n      if (\n        fixHeader.value\n        || stickyState.value.isSticky\n        || flattenColumns.value.some(({ ellipsis }) => ellipsis)\n      ) {\n        return 'fixed';\n      }\n\n      return 'auto';\n    });\n\n    const emptyNode = () => {\n      return hasData.value ? null : slots.emptyText?.() || 'No Data';\n    };\n    useProvideTable(\n      reactive({\n        ...toRefs(reactivePick(props, 'prefixCls', 'direction', 'transformCellText')),\n        getComponent,\n        scrollbarSize,\n        fixedInfoList: computed(() =>\n          flattenColumns.value.map((_, colIndex) => getCellFixedInfo(\n            colIndex,\n            colIndex,\n            flattenColumns.value,\n            stickyOffsets.value,\n            props.direction,\n          ),\n          ),\n        ),\n        isSticky: computed(() => stickyState.value.isSticky),\n        summaryCollect,\n      }),\n    );\n    useProvideBody(\n      reactive({\n        ...toRefs(\n          reactivePick(\n            props,\n            'rowClassName',\n            'expandedRowClassName',\n            'expandRowByClick',\n            'expandedRowRender',\n            'expandIconColumnIndex',\n            'indentSize',\n          ),\n        ),\n        columns,\n        flattenColumns,\n        tableLayout: mergedTableLayout,\n        expandIcon: mergedExpandIcon,\n        expandableType,\n        onTriggerExpand,\n      }),\n    );\n\n    useProvideResize({\n      onColumnResize,\n    });\n\n    useProvideExpandedRow({\n      componentWidth,\n      fixHeader,\n      fixColumn,\n      horizonScroll,\n    });\n\n    // Body\n    const bodyTable = () => (\n      <Body\n        data={mergedData.value}\n        measureColumnWidth={fixHeader.value || horizonScroll.value || stickyState.value.isSticky}\n        expandedKeys={mergedExpandedKeys.value}\n        rowExpandable={props.rowExpandable}\n        getRowKey={getRowKey.value}\n        customRow={props.customRow}\n        childrenColumnName={mergedChildrenColumnName.value}\n        v-slots={{ emptyNode }}\n      />\n    );\n\n    const bodyColGroup = () => (\n      <ColGroup\n        colWidths={flattenColumns.value.map(({ width }) => width)}\n        columns={flattenColumns.value}\n      />\n    );\n    return () => {\n      const {\n        prefixCls,\n        scroll,\n        tableLayout,\n        direction,\n\n        // Additional Part\n        title = slots.title,\n        footer = slots.footer,\n\n        // Customize\n        id,\n        showHeader,\n        customHeaderRow,\n      } = props;\n      const { isSticky, offsetHeader, offsetSummary, offsetScroll, stickyClassName, container }\n        = stickyState.value;\n      const TableComponent = getComponent(['table'], 'table');\n      const customizeScrollBody = getComponent(['body']) as unknown as CustomizeScrollBody<any>;\n      const summaryNode = slots.summary?.({ pageData: mergedData.value });\n\n      let groupTableNode = () => null;\n\n      // Header props\n      const headerProps = {\n        colWidths: colWidths.value,\n        columCount: flattenColumns.value.length,\n        stickyOffsets: stickyOffsets.value,\n        customHeaderRow,\n        fixHeader: fixHeader.value,\n        scroll,\n      };\n\n      if (\n        process.env.NODE_ENV !== 'production'\n        && typeof customizeScrollBody === 'function'\n        && hasData.value\n        && !fixHeader.value\n      ) {\n        warning(false, '`components.body` with render props is only work on `scroll.y`.');\n      }\n\n      if (fixHeader.value || isSticky) {\n        // >>>>>> Fixed Header\n        let bodyContent = () => null;\n\n        if (typeof customizeScrollBody === 'function') {\n          bodyContent = () =>\n            customizeScrollBody(mergedData.value, {\n              scrollbarSize: scrollbarSize.value,\n              ref: scrollBodyRef,\n              onScroll,\n            });\n\n          headerProps.colWidths = flattenColumns.value.map(({ width }, index) => {\n            const colWidth\n              = index === columns.value.length - 1 ? (width as number) - scrollbarSize.value : width;\n            if (typeof colWidth === 'number' && !Number.isNaN(colWidth))\n              return colWidth;\n\n            warning(\n              false,\n              'When use `components.body` with render props. Each column should have a fixed `width` value.',\n            );\n\n            return 0;\n          }) as number[];\n        } else {\n          bodyContent = () => (\n            <div\n              style={{\n                ...scrollXStyle.value,\n                ...scrollYStyle.value,\n              }}\n              onScroll={onScroll}\n              ref={scrollBodyRef}\n              class={classNames(`${prefixCls}-body`)}\n            >\n              <TableComponent\n                style={{\n                  ...scrollTableStyle.value,\n                  tableLayout: mergedTableLayout.value,\n                }}\n              >\n                {bodyColGroup()}\n                {bodyTable()}\n                {!fixFooter.value && summaryNode && (\n                  <Footer stickyOffsets={stickyOffsets.value} flattenColumns={flattenColumns.value}>\n                    {summaryNode}\n                  </Footer>\n                )}\n              </TableComponent>\n            </div>\n          );\n        }\n\n        // Fixed holder share the props\n        const fixedHolderProps = {\n          noData: !mergedData.value.length,\n          maxContentScroll: horizonScroll.value && scroll.x === 'max-content',\n          ...headerProps,\n          ...columnContext.value,\n          direction,\n          stickyClassName,\n          onScroll,\n        };\n\n        groupTableNode = () => (\n          <>\n            {/* Header Table */}\n            {showHeader !== false && (\n              <FixedHolder\n                {...fixedHolderProps}\n                stickyTopOffset={offsetHeader}\n                class={`${prefixCls}-header`}\n                ref={scrollHeaderRef}\n                v-slots={{\n                  default: fixedHolderPassProps => (\n                    <>\n                      <Header {...fixedHolderPassProps} />\n                      {fixFooter.value === 'top' && (\n                        <Footer {...fixedHolderPassProps}>{summaryNode}</Footer>\n                      )}\n                    </>\n                  ),\n                }}\n              >\n              </FixedHolder>\n            )}\n\n            {/* Body Table */}\n            {bodyContent()}\n\n            {/* Summary Table */}\n            {fixFooter.value && fixFooter.value !== 'top' && (\n              <FixedHolder\n                {...fixedHolderProps}\n                stickyBottomOffset={offsetSummary}\n                class={`${prefixCls}-summary`}\n                ref={scrollSummaryRef}\n                v-slots={{\n                  default: fixedHolderPassProps => (\n                    <Footer {...fixedHolderPassProps}>{summaryNode}</Footer>\n                  ),\n                }}\n              >\n              </FixedHolder>\n            )}\n\n            {isSticky && scrollBodyRef.value && (\n              <StickyScrollBar\n                ref={stickyRef}\n                offsetScroll={offsetScroll}\n                scrollBodyRef={scrollBodyRef}\n                onScroll={onScroll}\n                container={container}\n                scrollBodySizeInfo={scrollBodySizeInfo.value}\n              />\n            )}\n          </>\n        );\n      } else {\n        // >>>>>> Unique table\n        groupTableNode = () => (\n          <div\n            style={{\n              ...scrollXStyle.value,\n              ...scrollYStyle.value,\n            }}\n            class={classNames(`${prefixCls}-content`)}\n            onScroll={onScroll}\n            ref={scrollBodyRef}\n          >\n            <TableComponent\n              style={{ ...scrollTableStyle.value, tableLayout: mergedTableLayout.value }}\n            >\n              {bodyColGroup()}\n              {showHeader !== false && <Header {...headerProps} {...columnContext.value} />}\n              {bodyTable()}\n              {summaryNode && (\n                <Footer stickyOffsets={stickyOffsets.value} flattenColumns={flattenColumns.value}>\n                  {summaryNode}\n                </Footer>\n              )}\n            </TableComponent>\n          </div>\n        );\n      }\n      const ariaProps = pickAttrs(attrs, { aria: true, data: true });\n      const fullTable = () => (\n        <div\n          {...ariaProps}\n          class={classNames(prefixCls, {\n            [`${prefixCls}-rtl`]: direction === 'rtl',\n            [`${prefixCls}-ping-left`]: pingedLeft.value,\n            [`${prefixCls}-ping-right`]: pingedRight.value,\n            [`${prefixCls}-layout-fixed`]: tableLayout === 'fixed',\n            [`${prefixCls}-fixed-header`]: fixHeader.value,\n            /** No used but for compatible */\n            [`${prefixCls}-fixed-column`]: fixColumn.value,\n            [`${prefixCls}-scroll-horizontal`]: horizonScroll.value,\n            [`${prefixCls}-has-fix-left`]: flattenColumns.value[0] && flattenColumns.value[0].fixed,\n            [`${prefixCls}-has-fix-right`]:\n              flattenColumns.value[columnCount.value - 1]\n              && flattenColumns.value[columnCount.value - 1].fixed === 'right',\n            [attrs.class as string]: attrs.class,\n          })}\n          style={attrs.style as CSSProperties}\n          id={id}\n          ref={fullTableRef}\n        >\n          {title && <Panel class={`${prefixCls}-title`}>{title(mergedData.value)}</Panel>}\n          <div class={`${prefixCls}-container`}>{groupTableNode()}</div>\n          {footer && <Panel class={`${prefixCls}-footer`}>{footer(mergedData.value)}</Panel>}\n        </div>\n      );\n\n      if (horizonScroll.value) {\n        return (\n          <VCResizeObserver\n            onResize={onFullTableResize}\n            v-slots={{ default: fullTable }}\n          >\n          </VCResizeObserver>\n        );\n      }\n      return fullTable();\n    };\n  },\n});\n"],"names":["EMPTY_DATA","EMPTY_SCROLL_TARGET","INTERNAL_HOOKS","name","inheritAttrs","props","emits","setup","attrs","slots","emit","mergedData","computed","data","hasData","value","length","mergedComponents","mergeObject","components","getComponent","path","defaultComponent","getPathValue","getRowKey","rowKey","record","key","process","env","NODE_ENV","warning","undefined","mergedExpandIcon","expandIcon","renderExpandIcon","mergedChildrenColumnName","childrenColumnName","expandableType","expandedRowRender","canExpandable","some","innerExpandedKeys","shallowRef","stop","watchEffect","defaultExpandedRowKeys","defaultExpandAllRows","findAllChildrenKeys","mergedExpandedKeys","Set","expandedRowKeys","onTriggerExpand","indexOf","newExpandedKeys","hasKey","has","delete","Array","isArray","componentWidth","ref","columns","flattenColumns","useColumns","toRefs","expandable","expandedKeys","internalHooks","transformColumns","columnContext","fullTableRef","scrollHeaderRef","scrollBodyRef","scrollBodySizeInfo","scrollWidth","clientWidth","scrollSummaryRef","pingedLeft","setPingedLeft","useState","pingedRight","setPingedRight","colsWidths","updateColsWidths","useLayoutState","Map","colsKeys","getColumnsKey","colWidths","map","columnKey","get","columnCount","stickyOffsets","useStickyOffsets","toRef","fixHeader","scroll","validateValue","y","horizonScroll","x","Boolean","expandFixed","fixColumn","fixed","stickyRef","stickyState","useSticky","summaryFixedInfos","reactive","fixFooter","info","Object","values","isSticky","summaryCollect","uniKey","scrollXStyle","scrollYStyle","scrollTableStyle","overflowY","maxHeight","toPx","overflowX","width","minWidth","onColumnResize","isVisible","widths","newWidths","set","setScrollTarget","getScrollTarget","useTimeoutLock","forceScroll","scrollLeft","target","domTarget","$el","onScroll","currentTarget","isRTL","direction","mergedScrollLeft","compareTarget","setScrollLeft","triggerOnScroll","timtout","updateWidth","offsetWidth","onFullTableResize","clearTimeout","setTimeout","watch","flush","scrollbarSize","setScrollbarSize","useProvideSticky","onMounted","nextTick","getTargetScrollBarSize","onUpdated","internalRefs","onUpdateInternalRefs","body","mergedTableLayout","tableLayout","ellipsis","emptyNode","emptyText","useProvideTable","reactivePick","fixedInfoList","_","colIndex","getCellFixedInfo","useProvideBody","useProvideResize","useProvideExpandedRow","bodyTable","_createVNode","Body","rowExpandable","customRow","bodyColGroup","ColGroup","prefixCls","title","footer","id","showHeader","customHeaderRow","offsetHeader","offsetSummary","offsetScroll","stickyClassName","container","TableComponent","customizeScrollBody","summaryNode","summary","pageData","groupTableNode","headerProps","columCount","bodyContent","index","colWidth","Number","isNaN","classNames","default","Footer","fixedHolderProps","noData","maxContentScroll","_Fragment","FixedHolder","fixedHolderPassProps","Header","StickyScrollBar","ariaProps","pickAttrs","aria","fullTable","class","style","Panel","VCResizeObserver"],"mappings":"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"}