{"version":3,"file":"InternalTable.cjs","sources":["../../../../../../packages/components/table/src/InternalTable.tsx"],"sourcesContent":["import type { Breakpoint } from '@antdv/types';\nimport type { DefaultRecordType } from '@antdv/vue-components/vc-table/src/interface';\nimport type { CSSProperties } from 'vue';\nimport type { SpinProps } from '../../spin';\nimport type {\n  ChangeEventInfo,\n  ContextSlots,\n  ExpandType,\n  FilterState,\n  FilterValue,\n  GetRowKey,\n  SorterResult,\n  SortState,\n  TableAction,\n  TableColumnsType,\n  TableColumnType,\n  TablePaginationConfig,\n} from './interface';\nimport { useBreakpoint } from '@antdv/hooks';\n\nimport { enUS as defaultLocale } from '@antdv/locale';\nimport {\n  classNames,\n  devWarning,\n  initDefaultProps,\n  objectType,\n  omit,\n  scrollTo,\n} from '@antdv/utils';\nimport { VcTable } from '@antdv/vue-components';\nimport { INTERNAL_HOOKS } from '@antdv/vue-components/vc-table/src/Table';\nimport {\n  computed,\n  defineComponent,\n  nextTick,\n  reactive,\n  ref,\n  toRef,\n  watch,\n  watchEffect,\n} from 'vue';\nimport useConfigInject from '../../config-provider/src/hooks/useConfigInject';\nimport { useLocaleReceiver } from '../../locale-provider/src/useLocaleReceiver';\nimport Pagination from '../../pagination';\n\nimport Spin from '../../spin';\nimport useStyle from '../style';\nimport { useProvideSlots, useProvideTableContext } from './context';\nimport renderExpandIcon from './ExpandIcon';\nimport useColumns from './hooks/useColumns';\n\nimport useFilter, { getFilterData } from './hooks/useFilter';\n\nimport useLazyKVMap from './hooks/useLazyKVMap';\nimport usePagination, { DEFAULT_PAGE_SIZE, getPaginationParam } from './hooks/usePagination';\nimport useSelection from './hooks/useSelection';\nimport useSorter, { getSortData } from './hooks/useSorter';\n\nimport useTitleColumns from './hooks/useTitleColumns';\nimport { tableProps } from './props';\n\nconst EMPTY_LIST: any[] = [];\n\nexport default defineComponent({\n  name: 'InternalTable',\n  inheritAttrs: false,\n  props: initDefaultProps(\n    {\n      ...tableProps(),\n      contextSlots: objectType<ContextSlots>(),\n    },\n    {\n      rowKey: 'key',\n    },\n  ),\n  setup(props, { attrs, slots, expose, emit }) {\n    devWarning(\n      !(typeof props.rowKey === 'function' && props.rowKey.length > 1),\n      'Table',\n      '`index` parameter of `rowKey` function is deprecated. There is no guarantee that it will work as expected.',\n    );\n\n    useProvideSlots(computed(() => props.contextSlots));\n    useProvideTableContext({\n      onResizeColumn: (w, col) => {\n        emit('resizeColumn', w, col);\n      },\n    });\n    const screens = useBreakpoint();\n\n    const mergedColumns = computed(() => {\n      const matched = new Set(\n        Object.keys(screens.value).filter((m: Breakpoint) => screens.value[m]),\n      );\n      return props.columns.filter(\n        (c: TableColumnType<DefaultRecordType>) =>\n          !c.responsive || c.responsive.some((r: Breakpoint) => matched.has(r)),\n      );\n    });\n\n    const {\n      size: mergedSize,\n      renderEmpty,\n      direction,\n      prefixCls,\n      configProvider,\n    } = useConfigInject('table', props);\n\n    // Style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const transformCellText = computed(\n      () => props.transformCellText || configProvider.transformCellText?.value,\n    );\n    const [tableLocale] = useLocaleReceiver('Table', defaultLocale.Table, toRef(props, 'locale'));\n    const rawData = computed(() => props.dataSource || EMPTY_LIST);\n\n    const dropdownPrefixCls = computed(() =>\n      configProvider.getPrefixCls('dropdown', props.dropdownPrefixCls),\n    );\n\n    const childrenColumnName = computed(() => props.childrenColumnName || 'children');\n\n    const expandType = computed<ExpandType>(() => {\n      if (rawData.value.some(item => (item as any)?.[childrenColumnName.value]))\n        return 'nest';\n\n      if (props.expandedRowRender)\n        return 'row';\n\n      return null;\n    });\n\n    const internalRefs = reactive({\n      body: null,\n    });\n\n    const updateInternalRefs = (refs) => {\n      Object.assign(internalRefs, refs);\n    };\n\n    // ============================ RowKey ============================\n    const getRowKey = computed<GetRowKey<DefaultRecordType>>(() => {\n      if (typeof props.rowKey === 'function')\n        return props.rowKey;\n\n      return record => (record as any)?.[props.rowKey as string];\n    });\n\n    const [getRecordByKey] = useLazyKVMap(rawData, childrenColumnName, getRowKey);\n\n    // ============================ Events =============================\n    const changeEventInfo: Partial<ChangeEventInfo> = {};\n\n    const triggerOnChange = (\n      info: Partial<ChangeEventInfo>,\n      action: TableAction,\n      reset = false,\n    ) => {\n      const { pagination, scroll, onChange } = props;\n      const changeInfo = {\n        ...changeEventInfo,\n        ...info,\n      };\n\n      if (reset) {\n        changeEventInfo.resetPagination!();\n\n        // Reset event param\n        if (changeInfo.pagination!.current)\n          changeInfo.pagination!.current = 1;\n\n        // Trigger pagination events\n        if (pagination && pagination.onChange)\n          pagination.onChange(1, changeInfo.pagination!.pageSize);\n      }\n\n      if (scroll && scroll.scrollToFirstRowOnChange !== false && internalRefs.body) {\n        scrollTo(0, {\n          getContainer: () => internalRefs.body,\n        });\n      }\n\n      onChange?.(changeInfo.pagination!, changeInfo.filters!, changeInfo.sorter!, {\n        currentDataSource: getFilterData(\n          getSortData(rawData.value, changeInfo.sorterStates!, childrenColumnName.value),\n          changeInfo.filterStates!,\n        ),\n        action,\n      });\n    };\n\n    /**\n     * Controlled state in `columns` is not a good idea that makes too many code (1000+ line?) to read\n     * state out and then put it back to title render. Move these code into `hooks` but still too\n     * complex. We should provides Table props like `sorter` & `filter` to handle control in next big version.\n     */\n\n    // ============================ Sorter =============================\n    const onSorterChange = (sorter: SorterResult | SorterResult[], sorterStates: SortState[]) => {\n      triggerOnChange(\n        {\n          sorter,\n          sorterStates,\n        },\n        'sort',\n        false,\n      );\n    };\n\n    const [transformSorterColumns, sortStates, sorterTitleProps, sorters] = useSorter({\n      prefixCls,\n      mergedColumns,\n      onSorterChange,\n      sortDirections: computed(() => props.sortDirections || ['ascend', 'descend']),\n      tableLocale,\n      showSorterTooltip: toRef(props, 'showSorterTooltip'),\n    });\n    const sortedData = computed(() =>\n      getSortData(rawData.value, sortStates.value, childrenColumnName.value),\n    );\n\n    // ============================ Filter ============================\n    const onFilterChange = (filters: Record<string, FilterValue>, filterStates: FilterState[]) => {\n      triggerOnChange(\n        {\n          filters,\n          filterStates,\n        },\n        'filter',\n        true,\n      );\n    };\n\n    const [transformFilterColumns, filterStates, filters] = useFilter({\n      prefixCls,\n      locale: tableLocale,\n      dropdownPrefixCls,\n      mergedColumns,\n      onFilterChange,\n      getPopupContainer: toRef(props, 'getPopupContainer'),\n    });\n    const mergedData = computed(() => getFilterData(sortedData.value, filterStates.value));\n    // ============================ Column ============================\n\n    const [transformBasicColumns] = useColumns(toRef(props, 'contextSlots'));\n\n    const columnTitleProps = computed(() => {\n      const mergedFilters: Record<string, FilterValue> = {};\n      const filtersValue = filters.value;\n      Object.keys(filtersValue).forEach((filterKey) => {\n        if (filtersValue[filterKey] !== null)\n          mergedFilters[filterKey] = filtersValue[filterKey]!;\n      });\n      return {\n        ...sorterTitleProps.value,\n        filters: mergedFilters,\n      };\n    });\n    const [transformTitleColumns] = useTitleColumns(columnTitleProps);\n\n    // ========================== Pagination ==========================\n    const onPaginationChange = (current: number, pageSize: number) => {\n      triggerOnChange(\n        {\n          pagination: { ...changeEventInfo.pagination, current, pageSize },\n        },\n        'paginate',\n      );\n    };\n\n    const [mergedPagination, resetPagination] = usePagination(\n      computed(() => mergedData.value.length),\n      toRef(props, 'pagination'),\n      onPaginationChange,\n    );\n\n    watchEffect(() => {\n      changeEventInfo.sorter = sorters.value;\n      changeEventInfo.sorterStates = sortStates.value;\n\n      changeEventInfo.filters = filters.value;\n      changeEventInfo.filterStates = filterStates.value;\n      changeEventInfo.pagination\n        = props.pagination === false\n          ? {}\n          : getPaginationParam(mergedPagination.value, props.pagination);\n\n      changeEventInfo.resetPagination = resetPagination;\n    });\n\n    // ============================= Data =============================\n    const pageData = computed(() => {\n      if (props.pagination === false || !mergedPagination.value.pageSize)\n        return mergedData.value;\n\n      const { current = 1, total, pageSize = DEFAULT_PAGE_SIZE } = mergedPagination.value;\n      devWarning(current > 0, 'Table', '`current` should be positive number.');\n\n      // Dynamic table data\n      if (mergedData.value.length < total!) {\n        if (mergedData.value.length > pageSize)\n          return mergedData.value.slice((current - 1) * pageSize, current * pageSize);\n\n        return mergedData.value;\n      }\n\n      return mergedData.value.slice((current - 1) * pageSize, current * pageSize);\n    });\n\n    watchEffect(\n      () => {\n        nextTick(() => {\n          const { total, pageSize = DEFAULT_PAGE_SIZE } = mergedPagination.value;\n          // Dynamic table data\n          if (mergedData.value.length < total!) {\n            if (mergedData.value.length > pageSize) {\n              devWarning(\n                false,\n                'Table',\n                '`dataSource` length is less than `pagination.total` but large than `pagination.pageSize`. Please make sure your config correct data with async mode.',\n              );\n            }\n          }\n        });\n      },\n      { flush: 'post' },\n    );\n\n    const expandIconColumnIndex = computed(() => {\n      if (props.showExpandColumn === false) return -1;\n      // Adjust expand icon index, no overwrite expandIconColumnIndex if set.\n      if (expandType.value === 'nest' && props.expandIconColumnIndex === undefined)\n        return props.rowSelection ? 1 : 0;\n      else if (props.expandIconColumnIndex! > 0 && props.rowSelection)\n        return props.expandIconColumnIndex - 1;\n\n      return props.expandIconColumnIndex;\n    });\n    const rowSelection = ref();\n    watch(\n      () => props.rowSelection,\n      () => {\n        rowSelection.value = props.rowSelection ? { ...props.rowSelection } : props.rowSelection;\n      },\n      { deep: true, immediate: true },\n    );\n    // ========================== Selections ==========================\n    const [transformSelectionColumns, selectedKeySet] = useSelection(rowSelection, {\n      prefixCls,\n      data: mergedData,\n      pageData,\n      getRowKey,\n      getRecordByKey,\n      expandType,\n      childrenColumnName,\n      locale: tableLocale,\n      getPopupContainer: computed(() => props.getPopupContainer),\n    });\n\n    const internalRowClassName = (record: any, index: number, indent: number) => {\n      let mergedRowClassName;\n      const { rowClassName } = props;\n      if (typeof rowClassName === 'function')\n        mergedRowClassName = classNames(rowClassName(record, index, indent));\n      else\n        mergedRowClassName = classNames(rowClassName);\n\n      return classNames(\n        {\n          [`${prefixCls.value}-row-selected`]: selectedKeySet.value.has(\n            getRowKey.value(record, index),\n          ),\n        },\n        mergedRowClassName,\n      );\n    };\n    expose({\n      selectedKeySet,\n    });\n\n    const indentSize = computed(() => {\n      // Indent size\n      return typeof props.indentSize === 'number' ? props.indentSize : 15;\n    });\n\n    const transformColumns = (innerColumns: TableColumnsType<any>): TableColumnsType<any> => {\n      const res = transformTitleColumns(\n        transformSelectionColumns(\n          transformFilterColumns(transformSorterColumns(transformBasicColumns(innerColumns))),\n        ),\n      );\n      return res;\n    };\n\n    return () => {\n      const {\n        expandIcon = slots.expandIcon || renderExpandIcon(tableLocale.value),\n        pagination,\n        loading,\n        bordered,\n      } = props;\n\n      let topPaginationNode;\n      let bottomPaginationNode;\n      if (pagination !== false && mergedPagination.value?.total) {\n        let paginationSize: TablePaginationConfig['size'];\n        if (mergedPagination.value.size) {\n          paginationSize = mergedPagination.value.size;\n        } else {\n          paginationSize\n            = mergedSize.value === 'small' || mergedSize.value === 'middle' ? 'small' : undefined;\n        }\n\n        const renderPagination = (position: string) => (\n          <Pagination\n            {...mergedPagination.value}\n            class={[\n              `${prefixCls.value}-pagination ${prefixCls.value}-pagination-${position}`,\n              mergedPagination.value.class,\n            ]}\n            size={paginationSize}\n          />\n        );\n        const defaultPosition = direction.value === 'rtl' ? 'left' : 'right';\n        const { position } = mergedPagination.value;\n        if (position !== null && Array.isArray(position)) {\n          const topPos = position.find(p => p.includes('top'));\n          const bottomPos = position.find(p => p.includes('bottom'));\n          const isDisable = position.every(p => `${p}` === 'none');\n          if (!topPos && !bottomPos && !isDisable)\n            bottomPaginationNode = renderPagination(defaultPosition);\n\n          if (topPos)\n            topPaginationNode = renderPagination(topPos!.toLowerCase().replace('top', ''));\n\n          if (bottomPos)\n            bottomPaginationNode = renderPagination(bottomPos!.toLowerCase().replace('bottom', ''));\n        } else {\n          bottomPaginationNode = renderPagination(defaultPosition);\n        }\n      }\n\n      // >>>>>>>>> Spinning\n      let spinProps: SpinProps | undefined;\n      if (typeof loading === 'boolean') {\n        spinProps = {\n          spinning: loading,\n        };\n      } else if (typeof loading === 'object') {\n        spinProps = {\n          spinning: true,\n          ...loading,\n        };\n      }\n\n      const wrapperClassNames = classNames(\n        `${prefixCls.value}-wrapper`,\n        {\n          [`${prefixCls.value}-wrapper-rtl`]: direction.value === 'rtl',\n        },\n        attrs.class,\n        hashId.value,\n      );\n      const getTableProps = omit(props, ['columns']);\n      return wrapSSR(\n        <div class={wrapperClassNames} style={attrs.style as CSSProperties}>\n          <Spin spinning={false} {...spinProps}>\n            {topPaginationNode}\n            <VcTable\n              {...attrs}\n              {...getTableProps}\n              expandedRowKeys={props.expandedRowKeys as any}\n              defaultExpandedRowKeys={props.defaultExpandedRowKeys as any}\n              expandIconColumnIndex={expandIconColumnIndex.value}\n              indentSize={indentSize.value}\n              expandIcon={expandIcon}\n              columns={mergedColumns.value}\n              direction={direction.value}\n              prefixCls={prefixCls.value}\n              class={classNames({\n                [`${prefixCls.value}-middle`]: mergedSize.value === 'middle',\n                [`${prefixCls.value}-small`]: mergedSize.value === 'small',\n                [`${prefixCls.value}-bordered`]: bordered,\n                [`${prefixCls.value}-empty`]: rawData.value.length === 0,\n              })}\n              data={pageData.value}\n              rowKey={getRowKey.value}\n              rowClassName={internalRowClassName}\n              // Internal\n              internalHooks={INTERNAL_HOOKS}\n              internalRefs={internalRefs}\n              onUpdateInternalRefs={updateInternalRefs}\n              transformColumns={transformColumns}\n              transformCellText={transformCellText.value}\n              v-slots={{\n                ...slots,\n                emptyText: () =>\n                  slots.emptyText?.() || props.locale?.emptyText || renderEmpty('Table'),\n              }}\n            />\n            {bottomPaginationNode}\n          </Spin>\n        </div>,\n      );\n    };\n  },\n});\n"],"names":["EMPTY_LIST","defineComponent","name","inheritAttrs","props","initDefaultProps","tableProps","contextSlots","objectType","rowKey","setup","attrs","slots","expose","emit","devWarning","length","useProvideSlots","computed","useProvideTableContext","onResizeColumn","w","col","screens","useBreakpoint","mergedColumns","matched","Set","Object","keys","value","filter","m","columns","c","responsive","some","r","has","size","mergedSize","renderEmpty","direction","prefixCls","configProvider","useConfigInject","wrapSSR","hashId","useStyle","transformCellText","tableLocale","useLocaleReceiver","defaultLocale","Table","toRef","rawData","dataSource","dropdownPrefixCls","getPrefixCls","childrenColumnName","expandType","item","expandedRowRender","internalRefs","reactive","body","updateInternalRefs","refs","assign","getRowKey","record","getRecordByKey","useLazyKVMap","changeEventInfo","triggerOnChange","info","action","reset","pagination","scroll","onChange","changeInfo","resetPagination","current","pageSize","scrollToFirstRowOnChange","scrollTo","getContainer","filters","sorter","currentDataSource","getFilterData","getSortData","sorterStates","filterStates","onSorterChange","transformSorterColumns","sortStates","sorterTitleProps","sorters","useSorter","sortDirections","showSorterTooltip","sortedData","onFilterChange","transformFilterColumns","useFilter","locale","getPopupContainer","mergedData","transformBasicColumns","useColumns","columnTitleProps","mergedFilters","filtersValue","forEach","filterKey","transformTitleColumns","useTitleColumns","onPaginationChange","mergedPagination","usePagination","watchEffect","getPaginationParam","pageData","total","DEFAULT_PAGE_SIZE","slice","nextTick","flush","expandIconColumnIndex","showExpandColumn","undefined","rowSelection","ref","watch","deep","immediate","transformSelectionColumns","selectedKeySet","useSelection","data","internalRowClassName","index","indent","mergedRowClassName","rowClassName","classNames","indentSize","transformColumns","innerColumns","res","expandIcon","renderExpandIcon","loading","bordered","topPaginationNode","bottomPaginationNode","paginationSize","renderPagination","position","_createVNode","Pagination","class","defaultPosition","Array","isArray","topPos","find","p","includes","bottomPos","isDisable","every","toLowerCase","replace","spinProps","spinning","wrapperClassNames","getTableProps","omit","style","Spin","default","VcTable","expandedRowKeys","defaultExpandedRowKeys","INTERNAL_HOOKS","emptyText"],"mappings":"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"}