{"version":3,"file":"table.mjs","sources":["../../../../../../packages/components/table-v2/src/table.ts"],"sourcesContent":["import { buildProps, definePropType } from '@bigin/utils'\nimport {\n  virtualizedGridProps,\n  virtualizedScrollbarProps,\n} from '@bigin/components/virtual-list'\nimport {\n  classType,\n  columns,\n  dataType,\n  expandKeys,\n  fixedDataType,\n  requiredNumber,\n  rowKey,\n} from './common'\nimport { tableV2RowProps } from './row'\nimport { tableV2HeaderProps } from './header'\nimport { tableV2GridProps } from './grid'\n\nimport type { CSSProperties, ExtractPropTypes } from 'vue'\nimport type { SortOrder } from './constants'\nimport type {\n  Column,\n  ColumnCommonParams,\n  DataGetter,\n  KeyType,\n  RowCommonParams,\n  SortBy,\n  SortState,\n} from './types'\n\n/**\n * Param types\n */\nexport type ColumnSortParams<T> = {\n  column: Column<T>\n  key: KeyType\n  order: SortOrder\n}\n\n/**\n * Renderer/Getter types\n */\n\nexport type ExtraCellPropGetter<T> = (\n  params: ColumnCommonParams<T> &\n    RowCommonParams & { cellData: T; rowData: any }\n) => any\n\nexport type ExtractHeaderPropGetter<T> = (params: {\n  columns: Column<T>[]\n  headerIndex: number\n}) => any\n\nexport type ExtractHeaderCellPropGetter<T> = (\n  params: ColumnCommonParams<T> & { headerIndex: number }\n) => any\n\nexport type ExtractRowPropGetter<T> = (\n  params: { columns: Column<T>[] } & RowCommonParams\n) => any\n\nexport type HeaderClassNameGetter<T> = (params: {\n  columns: Column<T>[]\n  headerIndex: number\n}) => string\n\nexport type RowClassNameGetter<T> = (\n  params: { columns: Column<T>[] } & RowCommonParams\n) => string\n\n/**\n * Handler types\n */\nexport type ColumnSortHandler<T> = (params: ColumnSortParams<T>) => void\nexport type ColumnResizeHandler<T> = (column: Column<T>, width: number) => void\nexport type ExpandedRowsChangeHandler = (expandedRowKeys: KeyType[]) => void\n\nexport const tableV2Props = buildProps({\n  cache: tableV2GridProps.cache,\n  estimatedRowHeight: tableV2RowProps.estimatedRowHeight,\n  rowKey,\n  // Header attributes\n  headerClass: {\n    type: definePropType<string | HeaderClassNameGetter<any>>([\n      String,\n      Function,\n    ]),\n  },\n  headerProps: {\n    type: definePropType<any | ExtractHeaderPropGetter<any>>([\n      Object,\n      Function,\n    ]),\n  },\n  headerCellProps: {\n    type: definePropType<any | ExtractHeaderCellPropGetter<any>>([\n      Object,\n      Function,\n    ]),\n  },\n  headerHeight: tableV2HeaderProps.headerHeight,\n  /**\n   * Footer attributes\n   */\n  footerHeight: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * Row attributes\n   */\n  rowClass: {\n    type: definePropType<string | RowClassNameGetter<any>>([String, Function]),\n  },\n  rowProps: {\n    type: definePropType<ExtractRowPropGetter<any> | any>([Object, Function]),\n  },\n  rowHeight: {\n    type: Number,\n    default: 50,\n  },\n\n  /**\n   * Cell attributes\n   */\n  cellProps: {\n    type: definePropType<Record<string, any> | ExtraCellPropGetter<any>>([\n      Object,\n      Function,\n    ]),\n  },\n  /**\n   * Data models\n   */\n  columns,\n  data: dataType,\n  dataGetter: {\n    type: definePropType<DataGetter<any>>(Function),\n  },\n  fixedData: fixedDataType,\n  /**\n   * Expanded keys\n   */\n  expandColumnKey: tableV2RowProps.expandColumnKey,\n  expandedRowKeys: expandKeys,\n  defaultExpandedRowKeys: expandKeys,\n\n  /**\n   * Attributes\n   */\n  class: classType,\n  // disabled: Boolean,\n  fixed: Boolean,\n  style: {\n    type: definePropType<CSSProperties>(Object),\n  },\n  width: requiredNumber,\n  height: requiredNumber,\n  maxHeight: Number,\n  useIsScrolling: Boolean,\n  indentSize: {\n    type: Number,\n    default: 12,\n  },\n  iconSize: {\n    type: Number,\n    default: 12,\n  },\n  hScrollbarSize: virtualizedGridProps.hScrollbarSize,\n  vScrollbarSize: virtualizedGridProps.vScrollbarSize,\n  scrollbarAlwaysOn: virtualizedScrollbarProps.alwaysOn,\n\n  /**\n   * Sorting\n   */\n  sortBy: {\n    type: definePropType<SortBy>(Object),\n    default: () => ({} as { key: KeyType; order: SortOrder }),\n  },\n  sortState: {\n    type: definePropType<SortState>(Object),\n    default: undefined,\n  },\n\n  /**\n   * Handlers\n   */\n  onColumnSort: {\n    type: definePropType<ColumnSortHandler<any>>(Function),\n  },\n  onExpandedRowsChange: {\n    type: definePropType<ExpandedRowsChangeHandler>(Function),\n  },\n  onEndReached: {\n    type: definePropType<(distance: number) => void>(Function),\n  },\n  onRowExpand: tableV2RowProps.onRowExpand,\n  onScroll: tableV2GridProps.onScroll,\n  onRowsRendered: tableV2GridProps.onRowsRendered,\n  rowEventHandlers: tableV2RowProps.rowEventHandlers,\n} as const)\n\nexport type TableV2Props = ExtractPropTypes<typeof tableV2Props>\n"],"names":[],"mappings":"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"}