{"version":3,"file":"types.mjs","names":[],"sources":["../../../src/components/VDataTable/types.ts"],"sourcesContent":["// Types\nimport type { provideExpanded } from './composables/expand'\nimport type { Group, GroupableItem, provideGroupBy } from './composables/group'\nimport type { provideSelection, SelectableItem } from './composables/select'\nimport type { FilterFunction, InternalItem } from '@/composables/filter'\nimport type { SelectItemKey } from '@/util'\n\nexport type DataTableCompareFunction<T = any> = (a: T, b: T) => number | null\n\nexport type DataTableHeader<T = Record<string, any>> = {\n  key?: 'data-table-group' | 'data-table-select' | 'data-table-expand' | (string & {})\n  value?: SelectItemKey<T>\n  title?: string\n\n  fixed?: boolean\n  align?: 'start' | 'end' | 'center'\n\n  width?: number | string\n  minWidth?: string\n  maxWidth?: string\n  nowrap?: boolean\n\n  headerProps?: Record<string, any>\n  cellProps?: HeaderCellProps\n\n  sortable?: boolean\n  sort?: DataTableCompareFunction\n  sortRaw?: DataTableCompareFunction\n  filter?: FilterFunction\n\n  mobile?: boolean\n\n  children?: DataTableHeader<T>[]\n}\n\nexport type InternalDataTableHeader = Omit<DataTableHeader, 'key' | 'value' | 'children'> & {\n  key: string | null\n  value: SelectItemKey | null\n  sortable: boolean\n  fixedOffset?: number\n  lastFixed?: boolean\n  nowrap?: boolean\n  colspan?: number\n  rowspan?: number\n  children?: InternalDataTableHeader[]\n}\n\nexport interface DataTableItem<T = any> extends InternalItem<T>, GroupableItem<T>, SelectableItem {\n  key: any\n  index: number\n  columns: {\n    [key: string]: any\n  }\n}\n\nexport type GroupHeaderSlot = {\n  index: number\n  item: Group\n  columns: InternalDataTableHeader[]\n  isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n  toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n  isSelected: ReturnType<typeof provideSelection>['isSelected']\n  toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n  toggleGroup: ReturnType<typeof provideGroupBy>['toggleGroup']\n  isGroupOpen: ReturnType<typeof provideGroupBy>['isGroupOpen']\n}\n\ntype ItemSlotBase<T> = {\n  index: number\n  item: T\n  internalItem: DataTableItem<T>\n  isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n  toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n  isSelected: ReturnType<typeof provideSelection>['isSelected']\n  toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n}\n\nexport type ItemSlot<T> = ItemSlotBase<T> & {\n  columns: InternalDataTableHeader[]\n}\n\nexport type ItemKeySlot<T> = ItemSlotBase<T> & {\n  value: any\n  column: InternalDataTableHeader\n}\n\nexport type RowProps<T> =\n  | Record<string, any>\n  | ((data: Pick<ItemKeySlot<T>, 'index' | 'item' | 'internalItem'>) => Record<string, any>)\n\nexport type CellProps<T> =\n  | Record<string, any>\n  | ((data: Pick<ItemKeySlot<T>, 'index' | 'item' | 'internalItem' | 'value' | 'column'>) => Record<string, any>)\n\nexport type HeaderCellProps =\n  | Record<string, any>\n  | ((data: Pick<ItemKeySlot<any>, 'index' | 'item' | 'internalItem' | 'value'>) => Record<string, any>)\n"],"mappings":"","ignoreList":[]}