{"version":3,"file":"data-table.mjs","sources":["../../../../../packages/components/data-table/src/data-table.ts"],"sourcesContent":["import type { TableColumn } from '@element-ultra/components/table'\nimport type { ComponentSize } from '@element-ultra/shared'\nimport type { EmitFn } from '@element-ultra/utils'\nimport type { ExtractPropTypes, PropType } from 'vue'\n\n/** 数据表格列 */\nexport interface DataTableColumn extends Omit<TableColumn, 'render'> {\n  /** 深度 */\n  depth?: number\n  /** 预设 */\n  preset?: string\n  /**\n   * 是否可见\n   * @default true\n   */\n  visible?: boolean\n  /** 子列 */\n  children?: DataTableColumn[]\n  /** 渲染 */\n  render?: (ctx: {\n    val: any\n    v: any\n    row: Record<string, any>\n    index: number\n    wrap: DataTreeRow | DataTableRow\n  }) => any\n}\n\nexport const dataTableProps = {\n  /** 列配置 */\n  columns: {\n    type: Array as PropType<DataTableColumn[]>,\n    required: true\n  },\n\n  stripe: { type: Boolean, default: undefined },\n\n  /** 默认展开树形菜单 */\n  defaultExpandAll: {\n    type: Boolean\n  },\n\n  /** 指定表格为树形结构 */\n  tree: {\n    type: [Boolean, String] as PropType<boolean | string>\n  },\n\n  /** 表格数据 */\n  data: {\n    type: Array as PropType<any[]>,\n    default: () => []\n  },\n\n  /** 列最小宽度 */\n  columnMinWidth: {\n    type: Number,\n    default: 100\n  },\n\n  /** 尺寸 */\n  size: {\n    type: String as PropType<ComponentSize>\n  },\n\n  /** 是否多选 */\n  checkable: {\n    type: [Function, Boolean] as PropType<\n      boolean | ((row: any, index?: number) => boolean)\n    >,\n    default: false\n  },\n\n  /** 多选数据 */\n  checked: {\n    type: Array as PropType<any[]>\n  },\n\n  /** 是否可以单选 */\n  selectable: {\n    type: [Function, Boolean] as PropType<\n      boolean | ((row: any, index?: number) => boolean)\n    >,\n    default: false\n  },\n\n  /** 单选数据 */\n  selected: {\n    type: Object\n  },\n\n  /** 显示序号, 可以指定continuos来表示连续的字段, 这样就算跨页也能持续 */\n  showIndex: {\n    type: Boolean,\n    default: false\n  },\n\n  /** 在浏览器滚动期间等待cpu闲置 */\n  idle: {\n    type: Boolean\n  },\n\n  /** 显示表尾合计行 */\n  showSummary: Boolean,\n\n  /** 合计方式 */\n  summaryMethod: {\n    type: Function as PropType<\n      (ctx: {\n        columns: DataTableColumn[]\n        data: any[]\n        checked: Set<any>\n      }) => any[]\n    >\n  },\n\n  /** 指定合计的列, 指定showSummary时该字段必填  */\n  summaryKeys: Array as PropType<string[]>,\n\n  /** 合并单元格 */\n  mergeCell: {\n    type: Function as PropType<\n      (\n        row: DataTableRow,\n        column: DataTableColumn,\n        columnIndex: number\n      ) =>\n        | {\n            rowspan: number\n            colspan: number\n          }\n        | undefined\n    >\n  },\n\n  /** 单元格类 */\n  cellClass: {\n    type: Function as PropType<\n      (\n        row: DataTableRow,\n        column: DataTableColumn,\n        columnIndex: number\n      ) => string[]\n    >\n  },\n\n  /** 表格高度 */\n  height: {\n    type: String\n  },\n\n  /** 响应式数据项 */\n  itemReactive: {\n    type: Boolean\n  },\n\n  /** 数据懒加载 */\n  lazyLoad: {\n    type: Function as PropType<\n      (data: Record<string, any>, row: DataTreeRow) => any[] | Promise<any[]>\n    >\n  }\n} as const\n\nexport const dataTableEmits = {\n  'row-click': (row: any, rowIndex: number) => true,\n  check: (checked: any[]) => true,\n  select: (selection: any) => true,\n  sort: (sortKeys: Record<string, 'asc' | 'dsc' | 'default'>) => true,\n  'row-expand': (data: Record<string, any>, row: DataTreeRow) => true\n}\n\nexport interface DataTableRow {\n  uid: number\n  data: any\n  index: number\n}\nexport interface DataTreeRow extends DataTableRow {\n  expanded: boolean\n  loaded: boolean\n  loading: boolean\n  depth: number\n  children?: DataTreeRow[]\n}\n\nexport type DataTableProps = ExtractPropTypes<typeof dataTableProps>\n\nexport type DataTableEmits = EmitFn<typeof dataTableEmits>\n"],"names":[],"mappings":"AA4BO,MAAM,cAAiB,GAAA;AAAA;AAAA,EAE5B,OAAS,EAAA;AAAA,IACP,IAAM,EAAA,KAAA;AAAA,IACN,QAAU,EAAA,IAAA;AAAA,GACZ;AAAA,EAEA,MAAQ,EAAA,EAAE,IAAM,EAAA,OAAA,EAAS,SAAS,KAAU,CAAA,EAAA;AAAA;AAAA,EAG5C,gBAAkB,EAAA;AAAA,IAChB,IAAM,EAAA,OAAA;AAAA,GACR;AAAA;AAAA,EAGA,IAAM,EAAA;AAAA,IACJ,IAAA,EAAM,CAAC,OAAA,EAAS,MAAM,CAAA;AAAA,GACxB;AAAA;AAAA,EAGA,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,KAAA;AAAA,IACN,OAAA,EAAS,MAAM,EAAC;AAAA,GAClB;AAAA;AAAA,EAGA,cAAgB,EAAA;AAAA,IACd,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,GAAA;AAAA,GACX;AAAA;AAAA,EAGA,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,MAAA;AAAA,GACR;AAAA;AAAA,EAGA,SAAW,EAAA;AAAA,IACT,IAAA,EAAM,CAAC,QAAA,EAAU,OAAO,CAAA;AAAA,IAGxB,OAAS,EAAA,KAAA;AAAA,GACX;AAAA;AAAA,EAGA,OAAS,EAAA;AAAA,IACP,IAAM,EAAA,KAAA;AAAA,GACR;AAAA;AAAA,EAGA,UAAY,EAAA;AAAA,IACV,IAAA,EAAM,CAAC,QAAA,EAAU,OAAO,CAAA;AAAA,IAGxB,OAAS,EAAA,KAAA;AAAA,GACX;AAAA;AAAA,EAGA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,GACR;AAAA;AAAA,EAGA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA;AAAA,EAGA,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,OAAA;AAAA,GACR;AAAA;AAAA,EAGA,WAAa,EAAA,OAAA;AAAA;AAAA,EAGb,aAAe,EAAA;AAAA,IACb,IAAM,EAAA,QAAA;AAAA,GAOR;AAAA;AAAA,EAGA,WAAa,EAAA,KAAA;AAAA;AAAA,EAGb,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,QAAA;AAAA,GAYR;AAAA;AAAA,EAGA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,QAAA;AAAA,GAOR;AAAA;AAAA,EAGA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,GACR;AAAA;AAAA,EAGA,YAAc,EAAA;AAAA,IACZ,IAAM,EAAA,OAAA;AAAA,GACR;AAAA;AAAA,EAGA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,QAAA;AAAA,GAGR;AACF,EAAA;AAEO,MAAM,cAAiB,GAAA;AAAA,EAC5B,WAAA,EAAa,CAAC,GAAA,EAAU,QAAqB,KAAA,IAAA;AAAA,EAC7C,KAAA,EAAO,CAAC,OAAmB,KAAA,IAAA;AAAA,EAC3B,MAAA,EAAQ,CAAC,SAAmB,KAAA,IAAA;AAAA,EAC5B,IAAA,EAAM,CAAC,QAAwD,KAAA,IAAA;AAAA,EAC/D,YAAA,EAAc,CAAC,IAAA,EAA2B,GAAqB,KAAA,IAAA;AACjE;;;;"}