{"version":3,"file":"table.mjs","sources":["../../../../../packages/components/table/src/table.ts"],"sourcesContent":["import { SizeProp } from '@element-ultra/shared'\nimport type { EmitFn } from '@element-ultra/utils'\nimport type { ExtractPropTypes, PropType, Slots } from 'vue'\n\nexport type SummaryMethod = (ctx: {\n  key: string\n  data: any[]\n  checked?: any[]\n  total: number\n}) => any\n\n/** 表格列 */\nexport interface TableColumn<Row extends Record<string, any> = any> {\n  /** 固定列 */\n  fixed?: 'left' | 'right'\n  /** 对齐方式 */\n  align?: 'left' | 'center' | 'right'\n  /** 列的默认宽度 */\n  width?: number\n  /** 列的最小宽度 */\n  minWidth?: number\n  /** 列的名称, 在表头中显示 */\n  name: string | (() => any)\n  /** 从值中取的字段, 支持链式 */\n  key: string\n  /** 是否支持排序 */\n  sortable?: boolean\n  /** 自定义渲染 */\n  render?: (ctx: {\n    /** 单元格的值, 由column.key决定 */\n    val: any\n    /** val的别名，等同于val */\n    v: any\n    /** 行数据 */\n    row: Row\n    /** 行索引 */\n    index: number\n  }) => any\n  /** 插槽名称, 开启将会有个默认插槽 */\n  slot?: string\n  /** 合计 */\n  summary?: SummaryMethod | boolean\n}\n\nexport interface FinalTableColumn extends TableColumn {\n  name: () => any\n  render: TableColumn['render'] & {}\n  right?: number\n  left?: number\n  typeLast?: boolean\n  typeFirst?: boolean\n}\n\n/** 表格行 */\nexport interface TableRow {\n  /** 源数据 */\n  data: any\n  /** 行唯一标识 */\n  id: number\n  /** 是否展开 */\n  expanded: boolean\n  /** 是否是叶子节点 */\n  leaf: boolean\n  /** 子行 */\n  children?: TableRow[]\n}\n\nexport const tableProps = {\n  /** 表格尺寸 */\n  size: SizeProp,\n\n  /** 表格列 */\n  columns: {\n    type: Array as PropType<TableColumn[]>,\n    required: true\n  },\n\n  slots: {\n    type: Object as PropType<Slots>\n  },\n\n  /** 表格数据， 支持传入树形数据 */\n  data: {\n    type: Array as PropType<any[]>,\n    default: () => []\n  },\n\n  /** 行class */\n  rowClass: {\n    type: [String, Function] as PropType<string | ((row: any) => string)>\n  },\n\n  /** 行唯一标识的key, 建议加上以提高性能 */\n  rowKey: {\n    type: String\n  },\n\n  /** 数据为空时显示的文本 */\n  emptyText: {\n    type: String,\n    default: '暂无数据'\n  }\n}\n\nexport type TableProps = ExtractPropTypes<typeof tableProps>\n\nexport const tableEmits = {\n  'row-click': (ctx: { row: any; index: number }) => true,\n  'row-focus': (ctx: { row: any; index: number }) => true,\n  'row-blur': (ctx: { row: any; index: number }) => true\n}\n\nexport type TableEmits = EmitFn<typeof tableEmits>\n"],"names":[],"mappings":";;;AAmEO,MAAM,UAAa,GAAA;AAAA;AAAA,EAExB,IAAM,EAAA,QAAA;AAAA;AAAA,EAGN,OAAS,EAAA;AAAA,IACP,IAAM,EAAA,KAAA;AAAA,IACN,QAAU,EAAA,IAAA;AAAA,GACZ;AAAA,EAEA,KAAO,EAAA;AAAA,IACL,IAAM,EAAA,MAAA;AAAA,GACR;AAAA;AAAA,EAGA,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,KAAA;AAAA,IACN,OAAA,EAAS,MAAM,EAAC;AAAA,GAClB;AAAA;AAAA,EAGA,QAAU,EAAA;AAAA,IACR,IAAA,EAAM,CAAC,MAAA,EAAQ,QAAQ,CAAA;AAAA,GACzB;AAAA;AAAA,EAGA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,GACR;AAAA;AAAA,EAGA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,0BAAA;AAAA,GACX;AACF,EAAA;AAIO,MAAM,UAAa,GAAA;AAAA,EACxB,WAAA,EAAa,CAAC,GAAqC,KAAA,IAAA;AAAA,EACnD,WAAA,EAAa,CAAC,GAAqC,KAAA,IAAA;AAAA,EACnD,UAAA,EAAY,CAAC,GAAqC,KAAA,IAAA;AACpD;;;;"}