{"version":3,"file":"interface.cjs","sources":["../../../../../../packages/components/table/src/interface.ts"],"sourcesContent":["import type { TableLocale } from '@antdv/locale';\nimport type { Breakpoint, Key, SizeType, VueNode } from '@antdv/types';\nimport type {\n  DefaultRecordType,\n  ExpandableConfig,\n  FixedType,\n  GetRowKey,\n  ColumnType as RcColumnType,\n  RenderedCell as RcRenderedCell,\n} from '@antdv/vue-components/vc-table/src/interface';\nimport type { TableProps as VcTableProps } from '@antdv/vue-components/vc-table/src/Table';\nimport type { ComputedRef, CSSProperties, Ref, VNodeArrayChildren } from 'vue';\nimport type { CheckboxProps } from '../../checkbox';\nimport type { PaginationProps } from '../../pagination';\n\nimport type { SpinProps } from '../../spin';\nimport type { TooltipProps } from '../../tooltip';\nimport type { INTERNAL_SELECTION_ITEM } from './hooks/useSelection';\nimport { tuple } from '@antdv/utils';\n\n// import { TableAction } from './Table';\n\nexport type { ExpandableConfig, GetRowKey };\n\nexport type RowSelectionType = 'checkbox' | 'radio';\n\nexport type SelectionItemSelectFn = (currentRowKeys: Key[]) => void;\n\nexport type ExpandType = null | 'row' | 'nest';\n\nexport type SortOrder = 'descend' | 'ascend' | null;\n\nconst TableActions = tuple('paginate', 'sort', 'filter');\nexport type TableAction = (typeof TableActions)[number];\n\nexport type CompareFn<T> = (a: T, b: T, sortOrder?: SortOrder) => number;\n\nexport interface ColumnFilterItem {\n  text: VueNode\n  value: string | number | boolean\n  children?: ColumnFilterItem[]\n}\nexport interface ColumnTitleProps<RecordType> {\n  /** @deprecated Please use `sorterColumns` instead. */\n  sortOrder?: SortOrder\n  /** @deprecated Please use `sorterColumns` instead. */\n  sortColumn?: TableColumnType<RecordType>\n  sortColumns?: Array<{ column: TableColumnType<RecordType>, order: SortOrder }>\n\n  filters?: Record<string, FilterValue>\n}\n\nexport type FilterValue = Array<Key | boolean>;\nexport type FilterKey = Key[] | null;\nexport type FilterSearchType<RecordType = Record<string, any>> =\n  | boolean\n  | ((input: string, record: RecordType) => boolean);\nexport interface FilterConfirmProps {\n  closeDropdown: boolean\n}\n\nexport interface FilterResetProps {\n  confirm?: boolean;\n  closeDropdown?: boolean;\n}\nexport interface FilterDropdownProps<RecordType> {\n  prefixCls: string\n  setSelectedKeys: (selectedKeys: Key[]) => void\n  selectedKeys: Key[]\n  confirm: (param?: FilterConfirmProps) => void\n  clearFilters?: (param?: FilterResetProps) => void;\n  filters?: ColumnFilterItem[]\n  /** Only close filterDropdown */\n  close: () => void\n  visible: boolean\n  column: TableColumnType<RecordType>\n}\n\nexport interface TableColumnType<RecordType = DefaultRecordType>\n  extends Omit<RcColumnType<RecordType>, 'title'> {\n  title?: ColumnTitle<RecordType>\n  // Sorter\n  sorter?:\n  | boolean\n  | CompareFn<RecordType>\n  | {\n    compare?: CompareFn<RecordType>\n    /** Config multiple sorter order priority */\n    multiple?: number\n  }\n  sortOrder?: SortOrder\n  defaultSortOrder?: SortOrder\n  sortDirections?: SortOrder[]\n  showSorterTooltip?: boolean | TooltipProps\n\n  // Filter\n  filtered?: boolean\n  filters?: ColumnFilterItem[]\n  filterDropdown?: VueNode | ((props: FilterDropdownProps<RecordType>) => VueNode)\n  filterMultiple?: boolean\n  filteredValue?: FilterValue | null\n  defaultFilteredValue?: FilterValue | null\n  filterIcon?: VueNode | ((opt: { filtered: boolean, column: TableColumnType }) => VueNode)\n  filterMode?: 'menu' | 'tree'\n  filterSearch?: FilterSearchType<ColumnFilterItem>\n  onFilter?: (value: string | number | boolean, record: RecordType) => boolean\n  filterDropdownOpen?: boolean\n  onFilterDropdownOpenChange?: (visible: boolean) => void\n  filterResetToDefaultFilteredValue?: boolean\n  // Responsive\n  responsive?: Breakpoint[]\n\n  // Deprecated\n  /** @deprecated Please use `filterDropdownOpen` instead */\n  filterDropdownVisible?: boolean\n  /** @deprecated Please use `onFilterDropdownOpenChange` instead */\n  onFilterDropdownVisibleChange?: (visible: boolean) => void\n}\n\nexport interface TableColumnGroupType<RecordType> extends Omit<TableColumnType<RecordType>, 'dataIndex'> {\n  children: TableColumnsType<RecordType>\n}\n\nexport type TableColumnsType<RecordType = DefaultRecordType> = Array< | TableColumnGroupType<RecordType>\n  | TableColumnType<RecordType>>;\n\nexport interface SelectionItem {\n  key: string\n  text: VueNode\n  onSelect?: SelectionItemSelectFn\n}\n\nexport type SelectionSelectFn<T> = (\n  record: T,\n  selected: boolean,\n  selectedRows: T[],\n  nativeEvent: Event,\n) => void;\n\nexport interface TableRowSelection<T = DefaultRecordType> {\n  /** Keep the selection keys in list even the key not exist in `dataSource` anymore */\n  preserveSelectedRowKeys?: boolean\n  type?: RowSelectionType\n  selectedRowKeys?: Key[]\n  defaultSelectedRowKeys?: Key[]\n  onChange?: (selectedRowKeys: Key[], selectedRows: T[]) => void\n  getCheckboxProps?: (record: T) => Partial<Omit<CheckboxProps, 'checked' | 'defaultChecked'>>\n  onSelect?: SelectionSelectFn<T>\n  onSelectMultiple?: (selected: boolean, selectedRows: T[], changeRows: T[]) => void\n  /** @deprecated This function is meaningless and should use `onChange` instead */\n  onSelectAll?: (selected: boolean, selectedRows: T[], changeRows: T[]) => void\n  /** @deprecated This function is meaningless and should use `onChange` instead */\n  onSelectInvert?: (selectedRowKeys: Key[]) => void\n  onSelectNone?: () => void\n  selections?: INTERNAL_SELECTION_ITEM[] | boolean\n  hideSelectAll?: boolean\n  fixed?: FixedType\n  columnWidth?: string | number\n  columnTitle?: string | VueNode\n  checkStrictly?: boolean\n  renderCell?: (\n    value: boolean,\n    record: T,\n    index: number,\n    originNode: VueNode,\n  ) => VueNode | RcRenderedCell<T>\n}\n\nexport type TransformColumns<RecordType> = (\n  columns: TableColumnsType<RecordType>,\n) => TableColumnsType<RecordType>;\n\nexport interface TableCurrentDataSource<RecordType = DefaultRecordType> {\n  currentDataSource: RecordType[]\n  action: TableAction\n}\n\nexport interface SorterResult<RecordType = DefaultRecordType> {\n  column?: TableColumnType<RecordType>\n  order?: SortOrder\n  field?: Key | readonly Key[]\n  columnKey?: Key\n}\n\nexport type GetPopupContainer = (triggerNode: HTMLElement) => HTMLElement;\n\ntype TablePaginationPosition =\n  | 'topLeft'\n  | 'topCenter'\n  | 'topRight'\n  | 'bottomLeft'\n  | 'bottomCenter'\n  | 'bottomRight';\n\nexport interface TablePaginationConfig extends PaginationProps {\n  position?: TablePaginationPosition[]\n  class?: string\n  style?: CSSProperties\n}\n\nexport interface TransformCellTextProps {\n  text: any\n  column: TableColumnType\n  record: any\n  index: number\n}\n\nexport interface UseSelectionConfig<RecordType> {\n  prefixCls: Ref<string>\n  pageData: Ref<RecordType[]>\n  data: Ref<RecordType[]>\n  getRowKey: Ref<GetRowKey<RecordType>>\n  getRecordByKey: (key: Key) => RecordType\n  expandType: Ref<ExpandType>\n  childrenColumnName: Ref<string>\n  locale: Ref<TableLocale>\n  getPopupContainer?: Ref<GetPopupContainer>\n}\n\nexport interface SortState<RecordType = DefaultRecordType> {\n  column: TableColumnType<RecordType>\n  key: Key\n  sortOrder: SortOrder | null\n  multiplePriority: number | false\n}\n\nexport interface ContextSlots {\n  emptyText?: (...args: any[]) => any\n  expandIcon?: (...args: any[]) => any\n  title?: (...args: any[]) => any\n  footer?: (...args: any[]) => any\n  summary?: (...args: any[]) => any\n  bodyCell?: (...args: any[]) => any\n  expandColumnTitle?: (...args: any[]) => any\n  headerCell?: (...args: any[]) => any\n  customFilterIcon?: (...args: any[]) => any\n  customFilterDropdown?: (...args: any[]) => any\n  // 兼容 2.x 的 columns slots 配置\n  [key: string]: ((...args: any[]) => any) | undefined\n}\n\nexport type SlotsContextProps = ComputedRef<ContextSlots>;\nexport interface DefaultExpandIconProps<RecordType> {\n  prefixCls: string\n  onExpand: (record: RecordType, e: MouseEvent) => void\n  record: RecordType\n  expanded: boolean\n  expandable: boolean\n}\n\nexport interface ChangeEventInfo<RecordType = DefaultRecordType> {\n  pagination: {\n    current?: number\n    pageSize?: number\n    total?: number\n  }\n  filters: Record<string, FilterValue | null>\n  sorter: SorterResult<RecordType> | Array<SorterResult<RecordType>>\n\n  filterStates: Array<FilterState<RecordType>>\n  sorterStates: Array<SortState<RecordType>>\n\n  resetPagination: Function\n}\n\nexport interface TableProps<RecordType = DefaultRecordType>\n  extends Omit<\n    VcTableProps<RecordType>,\n    | 'transformColumns'\n    | 'internalHooks'\n    | 'internalRefs'\n    | 'data'\n    | 'columns'\n    | 'scroll'\n    | 'emptyText'\n    | 'canExpandable'\n    | 'onUpdateInternalRefs'\n  > {\n  dropdownPrefixCls?: string\n  dataSource?: VcTableProps<RecordType>['data']\n  columns?: TableColumnsType<RecordType>\n  pagination?: false | TablePaginationConfig\n  loading?: boolean | SpinProps\n  size?: SizeType\n  bordered?: boolean\n  locale?: TableLocale\n\n  onChange?: (\n    pagination: TablePaginationConfig,\n    filters: Record<string, FilterValue | null>,\n    sorter: SorterResult<RecordType> | Array<SorterResult<RecordType>>,\n    extra: TableCurrentDataSource<RecordType>,\n  ) => void\n  onResizeColumn?: (w: number, col: TableColumnType) => void\n  rowSelection?: TableRowSelection<RecordType>\n\n  getPopupContainer?: GetPopupContainer\n  scroll?: VcTableProps<RecordType>['scroll'] & {\n    scrollToFirstRowOnChange?: boolean\n  }\n  sortDirections?: SortOrder[]\n  showSorterTooltip?: boolean | TooltipProps\n}\n\nexport type TableColumnProps<RecordType = unknown> = TableColumnType<RecordType>;\n\nexport interface FilterState<RecordType = DefaultRecordType> {\n  column: TableColumnType<RecordType>\n  key: Key\n  filteredKeys?: FilterKey\n  forceFiltered?: boolean\n}\ntype ColumnTitleNode = VueNode | VNodeArrayChildren;\nexport type ColumnTitle<RecordType> =\n  | ColumnTitleNode\n  | ((props: ColumnTitleProps<RecordType>) => ColumnTitleNode);\n\nexport interface FilterConfig<RecordType> {\n  prefixCls: Ref<string>\n  dropdownPrefixCls: Ref<string>\n  mergedColumns: Ref<TableColumnsType<RecordType>>\n  locale: Ref<TableLocale>\n  onFilterChange: (\n    filters: Record<string, FilterValue | null>,\n    filterStates: Array<FilterState<RecordType>>,\n  ) => void\n  getPopupContainer?: Ref<GetPopupContainer>\n}\n"],"names":["tuple"],"mappings":";;;;;AAgCA,MAAM,YAAe,GAAAA,cAAA,CAAM,UAAY,EAAA,MAAA,EAAQ,QAAQ,CAAA;;"}