@tanstack/table-core 8.0.0-alpha.55 → 8.0.0-alpha.59

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/build/cjs/core.js +18 -404
  2. package/build/cjs/core.js.map +1 -1
  3. package/build/cjs/createTable.js +3 -3
  4. package/build/cjs/createTable.js.map +1 -1
  5. package/build/cjs/features/Cells.js +107 -0
  6. package/build/cjs/features/Cells.js.map +1 -0
  7. package/build/cjs/features/ColumnSizing.js +96 -54
  8. package/build/cjs/features/ColumnSizing.js.map +1 -1
  9. package/build/cjs/features/Columns.js +216 -0
  10. package/build/cjs/features/Columns.js.map +1 -0
  11. package/build/cjs/features/Expanding.js +13 -21
  12. package/build/cjs/features/Expanding.js.map +1 -1
  13. package/build/cjs/features/Filters.js +3 -3
  14. package/build/cjs/features/Filters.js.map +1 -1
  15. package/build/cjs/features/Grouping.js +8 -11
  16. package/build/cjs/features/Grouping.js.map +1 -1
  17. package/build/cjs/features/Headers.js +79 -220
  18. package/build/cjs/features/Headers.js.map +1 -1
  19. package/build/cjs/features/Ordering.js +1 -1
  20. package/build/cjs/features/Ordering.js.map +1 -1
  21. package/build/cjs/features/Pagination.js +5 -5
  22. package/build/cjs/features/Pagination.js.map +1 -1
  23. package/build/cjs/features/Pinning.js +172 -2
  24. package/build/cjs/features/Pinning.js.map +1 -1
  25. package/build/cjs/features/RowSelection.js +16 -48
  26. package/build/cjs/features/RowSelection.js.map +1 -1
  27. package/build/cjs/features/Rows.js +84 -0
  28. package/build/cjs/features/Rows.js.map +1 -0
  29. package/build/cjs/features/Sorting.js +9 -12
  30. package/build/cjs/features/Sorting.js.map +1 -1
  31. package/build/cjs/features/Visibility.js +59 -38
  32. package/build/cjs/features/Visibility.js.map +1 -1
  33. package/build/cjs/filterFns.js +16 -0
  34. package/build/cjs/filterFns.js.map +1 -1
  35. package/build/cjs/index.js +0 -1
  36. package/build/cjs/index.js.map +1 -1
  37. package/build/cjs/utils.js +0 -16
  38. package/build/cjs/utils.js.map +1 -1
  39. package/build/esm/index.js +866 -856
  40. package/build/esm/index.js.map +1 -1
  41. package/build/stats-html.html +1 -1
  42. package/build/stats-react.json +424 -322
  43. package/build/types/core.d.ts +9 -88
  44. package/build/types/createTable.d.ts +10 -11
  45. package/build/types/features/Cells.d.ts +13 -0
  46. package/build/types/features/ColumnSizing.d.ts +24 -30
  47. package/build/types/features/Columns.d.ts +54 -0
  48. package/build/types/features/Expanding.d.ts +6 -9
  49. package/build/types/features/Filters.d.ts +3 -1
  50. package/build/types/features/Grouping.d.ts +6 -9
  51. package/build/types/features/Headers.d.ts +3 -15
  52. package/build/types/features/Ordering.d.ts +1 -1
  53. package/build/types/features/Pagination.d.ts +6 -6
  54. package/build/types/features/Pinning.d.ts +18 -4
  55. package/build/types/features/RowSelection.d.ts +6 -13
  56. package/build/types/features/Rows.d.ts +27 -0
  57. package/build/types/features/Sorting.d.ts +5 -8
  58. package/build/types/features/Visibility.d.ts +9 -7
  59. package/build/types/filterFns.d.ts +5 -0
  60. package/build/types/types.d.ts +27 -69
  61. package/build/types/utils.d.ts +1 -5
  62. package/build/umd/index.development.js +844 -835
  63. package/build/umd/index.development.js.map +1 -1
  64. package/build/umd/index.production.js +1 -1
  65. package/build/umd/index.production.js.map +1 -1
  66. package/package.json +1 -1
  67. package/src/core.ts +55 -601
  68. package/src/createTable.ts +13 -17
  69. package/src/features/Cells.ts +130 -0
  70. package/src/features/ColumnSizing.ts +111 -89
  71. package/src/features/Columns.ts +288 -0
  72. package/src/features/Expanding.ts +20 -42
  73. package/src/features/Filters.ts +11 -3
  74. package/src/features/Grouping.ts +13 -39
  75. package/src/features/Headers.ts +49 -233
  76. package/src/features/Ordering.ts +1 -1
  77. package/src/features/Pagination.ts +14 -4
  78. package/src/features/Pinning.ts +194 -3
  79. package/src/features/RowSelection.ts +26 -88
  80. package/src/features/Rows.ts +123 -0
  81. package/src/features/Sorting.ts +20 -43
  82. package/src/features/Visibility.ts +82 -63
  83. package/src/filterFns.ts +20 -0
  84. package/src/types.ts +59 -133
  85. package/src/utils/getColumnFilteredRowModelAsync.ts +1 -5
  86. package/src/utils/getGlobalFilteredRowModelAsync.ts +2 -6
  87. package/src/utils/getSortedRowModelAsync.ts +0 -1
  88. package/src/utils.ts +2 -31
@@ -49,12 +49,12 @@ var Grouping = {
49
49
  toggleGrouping: function toggleGrouping() {
50
50
  return instance.toggleColumnGrouping(column.id);
51
51
  },
52
- getToggleGroupingProps: function getToggleGroupingProps(userProps) {
53
- return instance.getToggleGroupingProps(column.id, userProps);
52
+ getToggleGroupingHandler: function getToggleGroupingHandler() {
53
+ return instance.getToggleGroupingHandler(column.id);
54
54
  }
55
55
  };
56
56
  },
57
- getInstance: function getInstance(instance) {
57
+ createInstance: function createInstance(instance) {
58
58
  var registered = false;
59
59
  return {
60
60
  queueResetGrouping: function queueResetGrouping() {
@@ -140,16 +140,13 @@ var Grouping = {
140
140
 
141
141
  instance.setGrouping((_instance$initialStat = (_instance$initialStat2 = instance.initialState) == null ? void 0 : _instance$initialStat2.grouping) != null ? _instance$initialStat : []);
142
142
  },
143
- getToggleGroupingProps: function getToggleGroupingProps(columnId, userProps) {
143
+ getToggleGroupingHandler: function getToggleGroupingHandler(columnId) {
144
144
  var column = instance.getColumn(columnId);
145
145
  var canGroup = column.getCanGroup();
146
- var initialProps = {
147
- title: canGroup ? 'Toggle Grouping' : undefined,
148
- onClick: canGroup ? function (e) {
149
- column.toggleGrouping == null ? void 0 : column.toggleGrouping();
150
- } : undefined
146
+ return function () {
147
+ if (!canGroup) return;
148
+ column.toggleGrouping == null ? void 0 : column.toggleGrouping();
151
149
  };
152
- return utils.propGetter(initialProps, userProps);
153
150
  },
154
151
  getRowIsGrouped: function getRowIsGrouped(rowId) {
155
152
  var _instance$getRow;
@@ -164,7 +161,7 @@ var Grouping = {
164
161
  instance._getGroupedRowModel = instance.options.getGroupedRowModel(instance);
165
162
  }
166
163
 
167
- if (!instance._getGroupedRowModel) {
164
+ if (instance.options.manualGrouping || !instance._getGroupedRowModel) {
168
165
  return instance.getPreGroupedRowModel();
169
166
  }
170
167
 
@@ -1 +1 @@
1
- {"version":3,"file":"Grouping.js","sources":["../../../src/features/Grouping.ts"],"sourcesContent":["import { RowModel } from '..'\nimport { BuiltInAggregationFn, aggregationFns } from '../aggregationFns'\nimport {\n Cell,\n Column,\n Getter,\n OnChangeFn,\n PropGetterValue,\n TableInstance,\n Row,\n Updater,\n Renderable,\n UseRenderer,\n TableGenerics,\n} from '../types'\nimport {\n functionalUpdate,\n isFunction,\n makeStateUpdater,\n memo,\n Overwrite,\n propGetter,\n} from '../utils'\n\nexport type GroupingState = string[]\n\nexport type AggregationFn<TGenerics extends TableGenerics> = (\n getLeafValues: () => TGenerics['Row'][],\n getChildValues: () => TGenerics['Row'][]\n) => any\n\nexport type CustomAggregationFns<TGenerics extends TableGenerics> = Record<\n string,\n AggregationFn<TGenerics>\n>\n\nexport type AggregationFnOption<TGenerics extends TableGenerics> =\n | 'auto'\n | BuiltInAggregationFn\n | keyof TGenerics['AggregationFns']\n | AggregationFn<TGenerics>\n\nexport type GroupingTableState = {\n grouping: GroupingState\n}\n\nexport type GroupingColumnDef<TGenerics extends TableGenerics> = {\n aggregationFn?: AggregationFnOption<Overwrite<TGenerics, { Value: any }>>\n aggregateValue?: (columnValue: unknown) => any\n aggregatedCell?: Renderable<\n TGenerics,\n {\n instance: TableInstance<TGenerics>\n row: Row<TGenerics>\n column: Column<TGenerics>\n cell: Cell<TGenerics>\n value: TGenerics['Value']\n }\n >\n enableGrouping?: boolean\n defaultCanGroup?: boolean\n}\n\nexport type GroupingColumn<TGenerics extends TableGenerics> = {\n aggregationFn?: AggregationFnOption<Overwrite<TGenerics, { Value: any }>>\n getCanGroup: () => boolean\n getIsGrouped: () => boolean\n getGroupedIndex: () => number\n toggleGrouping: () => void\n getToggleGroupingProps: <TGetter extends Getter<ToggleGroupingProps>>(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleGroupingProps, TGetter>\n}\n\nexport type GroupingRow = {\n groupingColumnId?: string\n groupingValue?: any\n getIsGrouped: () => boolean\n}\n\nexport type GroupingCell<TGenerics extends TableGenerics> = {\n getIsGrouped: () => boolean\n getIsPlaceholder: () => boolean\n getIsAggregated: () => boolean\n renderAggregatedCell: () => string | null | ReturnType<UseRenderer<TGenerics>>\n}\n\nexport type ColumnDefaultOptions = {\n // Column\n onGroupingChange: OnChangeFn<GroupingState>\n autoResetGrouping: boolean\n enableGrouping: boolean\n}\n\nexport type GroupingOptions<TGenerics extends TableGenerics> = {\n aggregationFns?: TGenerics['AggregationFns']\n onGroupingChange?: OnChangeFn<GroupingState>\n autoResetGrouping?: boolean\n enableGrouping?: boolean\n enableGroupingRemoval?: boolean\n getGroupedRowModel?: (\n instance: TableInstance<TGenerics>\n ) => () => RowModel<TGenerics>\n\n groupedColumnMode?: false | 'reorder' | 'remove'\n}\n\nexport type GroupingColumnMode = false | 'reorder' | 'remove'\n\nexport type ToggleGroupingProps = {\n title?: string\n onClick?: (event: unknown) => void\n}\n\nexport type GroupingInstance<TGenerics extends TableGenerics> = {\n queueResetGrouping: () => void\n getColumnAutoAggregationFn: (\n columnId: string\n ) => AggregationFn<TGenerics> | undefined\n getColumnAggregationFn: (\n columnId: string\n ) => AggregationFn<TGenerics> | undefined\n setGrouping: (updater: Updater<GroupingState>) => void\n resetGrouping: () => void\n toggleColumnGrouping: (columnId: string) => void\n getColumnCanGroup: (columnId: string) => boolean\n getColumnIsGrouped: (columnId: string) => boolean\n getColumnGroupedIndex: (columnId: string) => number\n getToggleGroupingProps: <TGetter extends Getter<ToggleGroupingProps>>(\n columnId: string,\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleGroupingProps, TGetter>\n getRowIsGrouped: (rowId: string) => boolean\n getPreGroupedRowModel: () => RowModel<TGenerics>\n getGroupedRowModel: () => RowModel<TGenerics>\n _getGroupedRowModel?: () => RowModel<TGenerics>\n}\n\n//\n\nexport const Grouping = {\n getDefaultColumn: <\n TGenerics extends TableGenerics\n >(): GroupingColumnDef<TGenerics> => {\n return {\n aggregationFn: 'auto',\n }\n },\n\n getInitialState: (): GroupingTableState => {\n return {\n grouping: [],\n }\n },\n\n getDefaultOptions: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): GroupingOptions<TGenerics> => {\n return {\n onGroupingChange: makeStateUpdater('grouping', instance),\n autoResetGrouping: true,\n groupedColumnMode: 'reorder',\n }\n },\n\n createColumn: <TGenerics extends TableGenerics>(\n column: Column<TGenerics>,\n instance: TableInstance<TGenerics>\n ): GroupingColumn<TGenerics> => {\n return {\n aggregationFn: column.aggregationFn,\n getCanGroup: () => instance.getColumnCanGroup(column.id),\n getGroupedIndex: () => instance.getColumnGroupedIndex(column.id),\n getIsGrouped: () => instance.getColumnIsGrouped(column.id),\n toggleGrouping: () => instance.toggleColumnGrouping(column.id),\n getToggleGroupingProps: userProps =>\n instance.getToggleGroupingProps(column.id, userProps),\n }\n },\n\n getInstance: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): GroupingInstance<TGenerics> => {\n let registered = false\n\n return {\n queueResetGrouping: () => {\n instance.queueResetExpanded()\n\n if (!registered) {\n registered = true\n return\n }\n\n if (instance.options.autoResetAll === false) {\n return\n }\n\n if (\n instance.options.autoResetAll === true ||\n instance.options.autoResetGrouping\n ) {\n instance.resetGrouping()\n }\n },\n getColumnAutoAggregationFn: columnId => {\n const firstRow = instance.getCoreRowModel().flatRows[0]\n\n const value = firstRow?.values[columnId]\n\n if (typeof value === 'number') {\n return aggregationFns.sum\n }\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent\n }\n\n return aggregationFns.count\n },\n getColumnAggregationFn: columnId => {\n const column = instance.getColumn(columnId)\n const userAggregationFns = instance.options.aggregationFns\n\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.aggregationFn)\n ? column.aggregationFn\n : column.aggregationFn === 'auto'\n ? instance.getColumnAutoAggregationFn(columnId)\n : (userAggregationFns as Record<string, any>)?.[\n column.aggregationFn as string\n ] ??\n (aggregationFns[\n column.aggregationFn as BuiltInAggregationFn\n ] as AggregationFn<TGenerics>)\n },\n\n setGrouping: updater => instance.options.onGroupingChange?.(updater),\n\n toggleColumnGrouping: columnId => {\n instance.setGrouping(old => {\n // Find any existing grouping for this column\n if (old?.includes(columnId)) {\n return old.filter(d => d !== columnId)\n }\n\n return [...(old ?? []), columnId]\n })\n },\n\n getColumnCanGroup: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n column.enableGrouping ??\n instance.options.enableGrouping ??\n column.defaultCanGroup ??\n !!column.accessorFn\n )\n },\n\n getColumnIsGrouped: columnId => {\n return instance.getState().grouping?.includes(columnId)\n },\n\n getColumnGroupedIndex: columnId =>\n instance.getState().grouping?.indexOf(columnId),\n\n resetGrouping: () => {\n instance.setGrouping(instance.initialState?.grouping ?? [])\n },\n\n getToggleGroupingProps: (columnId, userProps) => {\n const column = instance.getColumn(columnId)\n\n const canGroup = column.getCanGroup()\n\n const initialProps: ToggleGroupingProps = {\n title: canGroup ? 'Toggle Grouping' : undefined,\n onClick: canGroup\n ? (e: unknown) => {\n column.toggleGrouping?.()\n }\n : undefined,\n }\n\n return propGetter(initialProps, userProps)\n },\n\n getRowIsGrouped: rowId => !!instance.getRow(rowId)?.groupingColumnId,\n\n getPreGroupedRowModel: () => instance.getSortedRowModel(),\n getGroupedRowModel: () => {\n if (\n !instance._getGroupedRowModel &&\n instance.options.getGroupedRowModel\n ) {\n instance._getGroupedRowModel =\n instance.options.getGroupedRowModel(instance)\n }\n\n if (!instance._getGroupedRowModel) {\n return instance.getPreGroupedRowModel()\n }\n\n return instance._getGroupedRowModel()\n },\n }\n },\n\n createRow: <TGenerics extends TableGenerics>(\n row: Row<TGenerics>,\n instance: TableInstance<TGenerics>\n ): GroupingRow => {\n return {\n getIsGrouped: () => instance.getRowIsGrouped(row.id),\n }\n },\n\n createCell: <TGenerics extends TableGenerics>(\n cell: Cell<TGenerics>,\n column: Column<TGenerics>,\n row: Row<TGenerics>,\n instance: TableInstance<TGenerics>\n ): GroupingCell<TGenerics> => {\n return {\n getIsGrouped: () =>\n column.getIsGrouped() && column.id === row.groupingColumnId,\n getIsPlaceholder: () => !cell.getIsGrouped() && column.getIsGrouped(),\n getIsAggregated: () =>\n !cell.getIsGrouped() &&\n !cell.getIsPlaceholder() &&\n row.subRows?.length > 1,\n renderAggregatedCell: () => {\n const template = column.aggregatedCell ?? column.cell\n\n return template\n ? instance.render(template, {\n instance,\n column,\n row,\n cell,\n value: cell.value,\n })\n : null\n },\n }\n },\n\n orderColumns: <TGenerics extends TableGenerics>(\n leafColumns: Column<TGenerics>[],\n grouping: string[],\n groupedColumnMode?: GroupingColumnMode\n ) => {\n if (!grouping?.length || !groupedColumnMode) {\n return leafColumns\n }\n\n const nonGroupingColumns = leafColumns.filter(\n col => !grouping.includes(col.id)\n )\n\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns\n }\n\n const groupingColumns = grouping\n .map(g => leafColumns.find(col => col.id === g)!)\n .filter(Boolean)\n\n return [...groupingColumns, ...nonGroupingColumns]\n },\n}\n"],"names":["Grouping","getDefaultColumn","aggregationFn","getInitialState","grouping","getDefaultOptions","instance","onGroupingChange","makeStateUpdater","autoResetGrouping","groupedColumnMode","createColumn","column","getCanGroup","getColumnCanGroup","id","getGroupedIndex","getColumnGroupedIndex","getIsGrouped","getColumnIsGrouped","toggleGrouping","toggleColumnGrouping","getToggleGroupingProps","userProps","getInstance","registered","queueResetGrouping","queueResetExpanded","options","autoResetAll","resetGrouping","getColumnAutoAggregationFn","columnId","firstRow","getCoreRowModel","flatRows","value","values","aggregationFns","sum","Object","prototype","toString","call","extent","count","getColumnAggregationFn","getColumn","userAggregationFns","Error","isFunction","setGrouping","updater","old","includes","filter","d","enableGrouping","defaultCanGroup","accessorFn","getState","indexOf","initialState","canGroup","initialProps","title","undefined","onClick","e","propGetter","getRowIsGrouped","rowId","getRow","groupingColumnId","getPreGroupedRowModel","getSortedRowModel","getGroupedRowModel","_getGroupedRowModel","createRow","row","createCell","cell","getIsPlaceholder","getIsAggregated","subRows","length","renderAggregatedCell","template","aggregatedCell","render","orderColumns","leafColumns","nonGroupingColumns","col","groupingColumns","map","g","find","Boolean"],"mappings":"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"}
1
+ {"version":3,"file":"Grouping.js","sources":["../../../src/features/Grouping.ts"],"sourcesContent":["import { RowModel } from '..'\nimport { BuiltInAggregationFn, aggregationFns } from '../aggregationFns'\nimport {\n Cell,\n Column,\n OnChangeFn,\n TableInstance,\n Row,\n Updater,\n Renderable,\n TableGenerics,\n} from '../types'\nimport { isFunction, makeStateUpdater, Overwrite } from '../utils'\n\nexport type GroupingState = string[]\n\nexport type AggregationFn<TGenerics extends TableGenerics> = (\n getLeafValues: () => TGenerics['Row'][],\n getChildValues: () => TGenerics['Row'][]\n) => any\n\nexport type CustomAggregationFns<TGenerics extends TableGenerics> = Record<\n string,\n AggregationFn<TGenerics>\n>\n\nexport type AggregationFnOption<TGenerics extends TableGenerics> =\n | 'auto'\n | BuiltInAggregationFn\n | keyof TGenerics['AggregationFns']\n | AggregationFn<TGenerics>\n\nexport type GroupingTableState = {\n grouping: GroupingState\n}\n\nexport type GroupingColumnDef<TGenerics extends TableGenerics> = {\n aggregationFn?: AggregationFnOption<Overwrite<TGenerics, { Value: any }>>\n aggregateValue?: (columnValue: unknown) => any\n aggregatedCell?: Renderable<\n TGenerics,\n {\n instance: TableInstance<TGenerics>\n row: Row<TGenerics>\n column: Column<TGenerics>\n cell: Cell<TGenerics>\n value: TGenerics['Value']\n }\n >\n enableGrouping?: boolean\n defaultCanGroup?: boolean\n}\n\nexport type GroupingColumn<TGenerics extends TableGenerics> = {\n aggregationFn?: AggregationFnOption<Overwrite<TGenerics, { Value: any }>>\n getCanGroup: () => boolean\n getIsGrouped: () => boolean\n getGroupedIndex: () => number\n toggleGrouping: () => void\n getToggleGroupingHandler: () => () => void\n}\n\nexport type GroupingRow = {\n groupingColumnId?: string\n groupingValue?: any\n getIsGrouped: () => boolean\n}\n\nexport type GroupingCell<TGenerics extends TableGenerics> = {\n getIsGrouped: () => boolean\n getIsPlaceholder: () => boolean\n getIsAggregated: () => boolean\n renderAggregatedCell: () => string | null | TGenerics['Rendered']\n}\n\nexport type ColumnDefaultOptions = {\n // Column\n onGroupingChange: OnChangeFn<GroupingState>\n autoResetGrouping: boolean\n enableGrouping: boolean\n}\n\nexport type GroupingOptions<TGenerics extends TableGenerics> = {\n manualGrouping?: boolean\n aggregationFns?: TGenerics['AggregationFns']\n onGroupingChange?: OnChangeFn<GroupingState>\n autoResetGrouping?: boolean\n enableGrouping?: boolean\n enableGroupingRemoval?: boolean\n getGroupedRowModel?: (\n instance: TableInstance<TGenerics>\n ) => () => RowModel<TGenerics>\n\n groupedColumnMode?: false | 'reorder' | 'remove'\n}\n\nexport type GroupingColumnMode = false | 'reorder' | 'remove'\n\nexport type GroupingInstance<TGenerics extends TableGenerics> = {\n queueResetGrouping: () => void\n getColumnAutoAggregationFn: (\n columnId: string\n ) => AggregationFn<TGenerics> | undefined\n getColumnAggregationFn: (\n columnId: string\n ) => AggregationFn<TGenerics> | undefined\n setGrouping: (updater: Updater<GroupingState>) => void\n resetGrouping: () => void\n toggleColumnGrouping: (columnId: string) => void\n getColumnCanGroup: (columnId: string) => boolean\n getColumnIsGrouped: (columnId: string) => boolean\n getColumnGroupedIndex: (columnId: string) => number\n getToggleGroupingHandler: (columnId: string) => undefined | (() => void)\n getRowIsGrouped: (rowId: string) => boolean\n getPreGroupedRowModel: () => RowModel<TGenerics>\n getGroupedRowModel: () => RowModel<TGenerics>\n _getGroupedRowModel?: () => RowModel<TGenerics>\n}\n\n//\n\nexport const Grouping = {\n getDefaultColumn: <\n TGenerics extends TableGenerics\n >(): GroupingColumnDef<TGenerics> => {\n return {\n aggregationFn: 'auto',\n }\n },\n\n getInitialState: (): GroupingTableState => {\n return {\n grouping: [],\n }\n },\n\n getDefaultOptions: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): GroupingOptions<TGenerics> => {\n return {\n onGroupingChange: makeStateUpdater('grouping', instance),\n autoResetGrouping: true,\n groupedColumnMode: 'reorder',\n }\n },\n\n createColumn: <TGenerics extends TableGenerics>(\n column: Column<TGenerics>,\n instance: TableInstance<TGenerics>\n ): GroupingColumn<TGenerics> => {\n return {\n aggregationFn: column.aggregationFn,\n getCanGroup: () => instance.getColumnCanGroup(column.id),\n getGroupedIndex: () => instance.getColumnGroupedIndex(column.id),\n getIsGrouped: () => instance.getColumnIsGrouped(column.id),\n toggleGrouping: () => instance.toggleColumnGrouping(column.id),\n getToggleGroupingHandler: () =>\n instance.getToggleGroupingHandler(column.id)!,\n }\n },\n\n createInstance: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): GroupingInstance<TGenerics> => {\n let registered = false\n\n return {\n queueResetGrouping: () => {\n instance.queueResetExpanded()\n\n if (!registered) {\n registered = true\n return\n }\n\n if (instance.options.autoResetAll === false) {\n return\n }\n\n if (\n instance.options.autoResetAll === true ||\n instance.options.autoResetGrouping\n ) {\n instance.resetGrouping()\n }\n },\n getColumnAutoAggregationFn: columnId => {\n const firstRow = instance.getCoreRowModel().flatRows[0]\n\n const value = firstRow?.values[columnId]\n\n if (typeof value === 'number') {\n return aggregationFns.sum\n }\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent\n }\n\n return aggregationFns.count\n },\n getColumnAggregationFn: columnId => {\n const column = instance.getColumn(columnId)\n const userAggregationFns = instance.options.aggregationFns\n\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.aggregationFn)\n ? column.aggregationFn\n : column.aggregationFn === 'auto'\n ? instance.getColumnAutoAggregationFn(columnId)\n : (userAggregationFns as Record<string, any>)?.[\n column.aggregationFn as string\n ] ??\n (aggregationFns[\n column.aggregationFn as BuiltInAggregationFn\n ] as AggregationFn<TGenerics>)\n },\n\n setGrouping: updater => instance.options.onGroupingChange?.(updater),\n\n toggleColumnGrouping: columnId => {\n instance.setGrouping(old => {\n // Find any existing grouping for this column\n if (old?.includes(columnId)) {\n return old.filter(d => d !== columnId)\n }\n\n return [...(old ?? []), columnId]\n })\n },\n\n getColumnCanGroup: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n column.enableGrouping ??\n instance.options.enableGrouping ??\n column.defaultCanGroup ??\n !!column.accessorFn\n )\n },\n\n getColumnIsGrouped: columnId => {\n return instance.getState().grouping?.includes(columnId)\n },\n\n getColumnGroupedIndex: columnId =>\n instance.getState().grouping?.indexOf(columnId),\n\n resetGrouping: () => {\n instance.setGrouping(instance.initialState?.grouping ?? [])\n },\n\n getToggleGroupingHandler: columnId => {\n const column = instance.getColumn(columnId)\n const canGroup = column.getCanGroup()\n\n return () => {\n if (!canGroup) return\n column.toggleGrouping?.()\n }\n },\n\n getRowIsGrouped: rowId => !!instance.getRow(rowId)?.groupingColumnId,\n\n getPreGroupedRowModel: () => instance.getSortedRowModel(),\n getGroupedRowModel: () => {\n if (\n !instance._getGroupedRowModel &&\n instance.options.getGroupedRowModel\n ) {\n instance._getGroupedRowModel =\n instance.options.getGroupedRowModel(instance)\n }\n\n if (instance.options.manualGrouping || !instance._getGroupedRowModel) {\n return instance.getPreGroupedRowModel()\n }\n\n return instance._getGroupedRowModel()\n },\n }\n },\n\n createRow: <TGenerics extends TableGenerics>(\n row: Row<TGenerics>,\n instance: TableInstance<TGenerics>\n ): GroupingRow => {\n return {\n getIsGrouped: () => instance.getRowIsGrouped(row.id),\n }\n },\n\n createCell: <TGenerics extends TableGenerics>(\n cell: Cell<TGenerics>,\n column: Column<TGenerics>,\n row: Row<TGenerics>,\n instance: TableInstance<TGenerics>\n ): GroupingCell<TGenerics> => {\n return {\n getIsGrouped: () =>\n column.getIsGrouped() && column.id === row.groupingColumnId,\n getIsPlaceholder: () => !cell.getIsGrouped() && column.getIsGrouped(),\n getIsAggregated: () =>\n !cell.getIsGrouped() &&\n !cell.getIsPlaceholder() &&\n row.subRows?.length > 1,\n renderAggregatedCell: () => {\n const template = column.aggregatedCell ?? column.cell\n\n return template\n ? instance.render(template, {\n instance,\n column,\n row,\n cell,\n value: cell.value,\n })\n : null\n },\n }\n },\n\n orderColumns: <TGenerics extends TableGenerics>(\n leafColumns: Column<TGenerics>[],\n grouping: string[],\n groupedColumnMode?: GroupingColumnMode\n ) => {\n if (!grouping?.length || !groupedColumnMode) {\n return leafColumns\n }\n\n const nonGroupingColumns = leafColumns.filter(\n col => !grouping.includes(col.id)\n )\n\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns\n }\n\n const groupingColumns = grouping\n .map(g => leafColumns.find(col => col.id === g)!)\n .filter(Boolean)\n\n return [...groupingColumns, ...nonGroupingColumns]\n },\n}\n"],"names":["Grouping","getDefaultColumn","aggregationFn","getInitialState","grouping","getDefaultOptions","instance","onGroupingChange","makeStateUpdater","autoResetGrouping","groupedColumnMode","createColumn","column","getCanGroup","getColumnCanGroup","id","getGroupedIndex","getColumnGroupedIndex","getIsGrouped","getColumnIsGrouped","toggleGrouping","toggleColumnGrouping","getToggleGroupingHandler","createInstance","registered","queueResetGrouping","queueResetExpanded","options","autoResetAll","resetGrouping","getColumnAutoAggregationFn","columnId","firstRow","getCoreRowModel","flatRows","value","values","aggregationFns","sum","Object","prototype","toString","call","extent","count","getColumnAggregationFn","getColumn","userAggregationFns","Error","isFunction","setGrouping","updater","old","includes","filter","d","enableGrouping","defaultCanGroup","accessorFn","getState","indexOf","initialState","canGroup","getRowIsGrouped","rowId","getRow","groupingColumnId","getPreGroupedRowModel","getSortedRowModel","getGroupedRowModel","_getGroupedRowModel","manualGrouping","createRow","row","createCell","cell","getIsPlaceholder","getIsAggregated","subRows","length","renderAggregatedCell","template","aggregatedCell","render","orderColumns","leafColumns","nonGroupingColumns","col","groupingColumns","map","g","find","Boolean"],"mappings":"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"}
@@ -13,94 +13,10 @@
13
13
  Object.defineProperty(exports, '__esModule', { value: true });
14
14
 
15
15
  var utils = require('../utils.js');
16
- var ColumnSizing = require('./ColumnSizing.js');
17
16
 
18
17
  //
19
18
  var Headers = {
20
- createRow: function createRow(row, instance) {
21
- return {
22
- _getAllVisibleCells: utils.memo(function () {
23
- return [row.getAllCells().filter(function (cell) {
24
- return cell.column.getIsVisible();
25
- }).map(function (d) {
26
- return d.id;
27
- }).join('_')];
28
- }, function (_) {
29
- return row.getAllCells().filter(function (cell) {
30
- return cell.column.getIsVisible();
31
- });
32
- }, {
33
- key: 'row._getAllVisibleCells',
34
- debug: function debug() {
35
- var _instance$options$deb;
36
-
37
- return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugRows;
38
- }
39
- }),
40
- getVisibleCells: utils.memo(function () {
41
- return [row.getLeftVisibleCells(), row.getCenterVisibleCells(), row.getRightVisibleCells()];
42
- }, function (left, center, right) {
43
- return [].concat(left, center, right);
44
- }, {
45
- key: 'row.getVisibleCells',
46
- debug: function debug() {
47
- var _instance$options$deb2;
48
-
49
- return (_instance$options$deb2 = instance.options.debugAll) != null ? _instance$options$deb2 : instance.options.debugRows;
50
- }
51
- }),
52
- getCenterVisibleCells: utils.memo(function () {
53
- return [row._getAllVisibleCells(), instance.getState().columnPinning.left, instance.getState().columnPinning.right];
54
- }, function (allCells, left, right) {
55
- var leftAndRight = [].concat(left != null ? left : [], right != null ? right : []);
56
- return allCells.filter(function (d) {
57
- return !leftAndRight.includes(d.columnId);
58
- });
59
- }, {
60
- key: 'row.getCenterVisibleCells',
61
- debug: function debug() {
62
- var _instance$options$deb3;
63
-
64
- return (_instance$options$deb3 = instance.options.debugAll) != null ? _instance$options$deb3 : instance.options.debugRows;
65
- }
66
- }),
67
- getLeftVisibleCells: utils.memo(function () {
68
- return [row._getAllVisibleCells(), instance.getState().columnPinning.left,,];
69
- }, function (allCells, left) {
70
- var cells = (left != null ? left : []).map(function (columnId) {
71
- return allCells.find(function (cell) {
72
- return cell.columnId === columnId;
73
- });
74
- }).filter(Boolean);
75
- return cells;
76
- }, {
77
- key: 'row.getLeftVisibleCells',
78
- debug: function debug() {
79
- var _instance$options$deb4;
80
-
81
- return (_instance$options$deb4 = instance.options.debugAll) != null ? _instance$options$deb4 : instance.options.debugRows;
82
- }
83
- }),
84
- getRightVisibleCells: utils.memo(function () {
85
- return [row._getAllVisibleCells(), instance.getState().columnPinning.right];
86
- }, function (allCells, right) {
87
- var cells = (right != null ? right : []).map(function (columnId) {
88
- return allCells.find(function (cell) {
89
- return cell.columnId === columnId;
90
- });
91
- }).filter(Boolean);
92
- return cells;
93
- }, {
94
- key: 'row.getRightVisibleCells',
95
- debug: function debug() {
96
- var _instance$options$deb5;
97
-
98
- return (_instance$options$deb5 = instance.options.debugAll) != null ? _instance$options$deb5 : instance.options.debugRows;
99
- }
100
- })
101
- };
102
- },
103
- getInstance: function getInstance(instance) {
19
+ createInstance: function createInstance(instance) {
104
20
  return {
105
21
  createHeader: function createHeader(column, options) {
106
22
  var _options$id;
@@ -109,28 +25,38 @@ var Headers = {
109
25
  var header = {
110
26
  id: id,
111
27
  column: column,
28
+ index: options.index,
112
29
  isPlaceholder: options.isPlaceholder,
113
30
  placeholderId: options.placeholderId,
114
31
  depth: options.depth,
115
32
  subHeaders: [],
116
33
  colSpan: 0,
117
34
  rowSpan: 0,
118
- getWidth: function getWidth() {
35
+ headerGroup: null,
36
+ getSize: function getSize() {
119
37
  var sum = 0;
120
38
 
121
39
  var recurse = function recurse(header) {
122
40
  if (header.subHeaders.length) {
123
41
  header.subHeaders.forEach(recurse);
124
42
  } else {
125
- var _header$column$getWid;
43
+ var _header$column$getSiz;
126
44
 
127
- sum += (_header$column$getWid = header.column.getWidth()) != null ? _header$column$getWid : 0;
45
+ sum += (_header$column$getSiz = header.column.getSize()) != null ? _header$column$getSiz : 0;
128
46
  }
129
47
  };
130
48
 
131
49
  recurse(header);
132
50
  return sum;
133
51
  },
52
+ getStart: function getStart() {
53
+ if (header.index > 0) {
54
+ var prevSiblingHeader = header.headerGroup.headers[header.index - 1];
55
+ return prevSiblingHeader.getStart() + prevSiblingHeader.getSize();
56
+ }
57
+
58
+ return 0;
59
+ },
134
60
  getLeafHeaders: function getLeafHeaders() {
135
61
  var leafHeaders = [];
136
62
 
@@ -145,12 +71,6 @@ var Headers = {
145
71
  recurseHeader(header);
146
72
  return leafHeaders;
147
73
  },
148
- getHeaderProps: function getHeaderProps(userProps) {
149
- return instance.getHeaderProps(header.id, userProps);
150
- },
151
- getFooterProps: function getFooterProps(userProps) {
152
- return instance.getFooterProps(header.id, userProps);
153
- },
154
74
  renderHeader: function renderHeader() {
155
75
  return column.header ? instance.render(column.header, {
156
76
  instance: instance,
@@ -165,9 +85,13 @@ var Headers = {
165
85
  column: column
166
86
  }) : null;
167
87
  }
168
- }; // Yes, we have to convert instance to unknown, because we know more than the compiler here.
88
+ };
89
+
90
+ instance._features.forEach(function (feature) {
91
+ Object.assign(header, feature.createHeader == null ? void 0 : feature.createHeader(header, instance));
92
+ });
169
93
 
170
- return Object.assign(header, ColumnSizing.ColumnSizing.createHeader(header, instance));
94
+ return header;
171
95
  },
172
96
  // Header Groups
173
97
  getHeaderGroups: utils.memo(function () {
@@ -187,9 +111,9 @@ var Headers = {
187
111
  }, {
188
112
  key: 'getHeaderGroups',
189
113
  debug: function debug() {
190
- var _instance$options$deb6;
114
+ var _instance$options$deb;
191
115
 
192
- return (_instance$options$deb6 = instance.options.debugAll) != null ? _instance$options$deb6 : instance.options.debugHeaders;
116
+ return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugHeaders;
193
117
  }
194
118
  }),
195
119
  getCenterHeaderGroups: utils.memo(function () {
@@ -202,9 +126,9 @@ var Headers = {
202
126
  }, {
203
127
  key: 'getCenterHeaderGroups',
204
128
  debug: function debug() {
205
- var _instance$options$deb7;
129
+ var _instance$options$deb2;
206
130
 
207
- return (_instance$options$deb7 = instance.options.debugAll) != null ? _instance$options$deb7 : instance.options.debugHeaders;
131
+ return (_instance$options$deb2 = instance.options.debugAll) != null ? _instance$options$deb2 : instance.options.debugHeaders;
208
132
  }
209
133
  }),
210
134
  getLeftHeaderGroups: utils.memo(function () {
@@ -217,9 +141,9 @@ var Headers = {
217
141
  }, {
218
142
  key: 'getLeftHeaderGroups',
219
143
  debug: function debug() {
220
- var _instance$options$deb8;
144
+ var _instance$options$deb3;
221
145
 
222
- return (_instance$options$deb8 = instance.options.debugAll) != null ? _instance$options$deb8 : instance.options.debugHeaders;
146
+ return (_instance$options$deb3 = instance.options.debugAll) != null ? _instance$options$deb3 : instance.options.debugHeaders;
223
147
  }
224
148
  }),
225
149
  getRightHeaderGroups: utils.memo(function () {
@@ -232,9 +156,9 @@ var Headers = {
232
156
  }, {
233
157
  key: 'getRightHeaderGroups',
234
158
  debug: function debug() {
235
- var _instance$options$deb9;
159
+ var _instance$options$deb4;
236
160
 
237
- return (_instance$options$deb9 = instance.options.debugAll) != null ? _instance$options$deb9 : instance.options.debugHeaders;
161
+ return (_instance$options$deb4 = instance.options.debugAll) != null ? _instance$options$deb4 : instance.options.debugHeaders;
238
162
  }
239
163
  }),
240
164
  // Footer Groups
@@ -245,9 +169,9 @@ var Headers = {
245
169
  }, {
246
170
  key: 'getFooterGroups',
247
171
  debug: function debug() {
248
- var _instance$options$deb10;
172
+ var _instance$options$deb5;
249
173
 
250
- return (_instance$options$deb10 = instance.options.debugAll) != null ? _instance$options$deb10 : instance.options.debugHeaders;
174
+ return (_instance$options$deb5 = instance.options.debugAll) != null ? _instance$options$deb5 : instance.options.debugHeaders;
251
175
  }
252
176
  }),
253
177
  getLeftFooterGroups: utils.memo(function () {
@@ -257,9 +181,9 @@ var Headers = {
257
181
  }, {
258
182
  key: 'getLeftFooterGroups',
259
183
  debug: function debug() {
260
- var _instance$options$deb11;
184
+ var _instance$options$deb6;
261
185
 
262
- return (_instance$options$deb11 = instance.options.debugAll) != null ? _instance$options$deb11 : instance.options.debugHeaders;
186
+ return (_instance$options$deb6 = instance.options.debugAll) != null ? _instance$options$deb6 : instance.options.debugHeaders;
263
187
  }
264
188
  }),
265
189
  getCenterFooterGroups: utils.memo(function () {
@@ -269,9 +193,9 @@ var Headers = {
269
193
  }, {
270
194
  key: 'getCenterFooterGroups',
271
195
  debug: function debug() {
272
- var _instance$options$deb12;
196
+ var _instance$options$deb7;
273
197
 
274
- return (_instance$options$deb12 = instance.options.debugAll) != null ? _instance$options$deb12 : instance.options.debugHeaders;
198
+ return (_instance$options$deb7 = instance.options.debugAll) != null ? _instance$options$deb7 : instance.options.debugHeaders;
275
199
  }
276
200
  }),
277
201
  getRightFooterGroups: utils.memo(function () {
@@ -281,9 +205,9 @@ var Headers = {
281
205
  }, {
282
206
  key: 'getRightFooterGroups',
283
207
  debug: function debug() {
284
- var _instance$options$deb13;
208
+ var _instance$options$deb8;
285
209
 
286
- return (_instance$options$deb13 = instance.options.debugAll) != null ? _instance$options$deb13 : instance.options.debugHeaders;
210
+ return (_instance$options$deb8 = instance.options.debugAll) != null ? _instance$options$deb8 : instance.options.debugHeaders;
287
211
  }
288
212
  }),
289
213
  // Flat Headers
@@ -296,9 +220,9 @@ var Headers = {
296
220
  }, {
297
221
  key: 'getFlatHeaders',
298
222
  debug: function debug() {
299
- var _instance$options$deb14;
223
+ var _instance$options$deb9;
300
224
 
301
- return (_instance$options$deb14 = instance.options.debugAll) != null ? _instance$options$deb14 : instance.options.debugHeaders;
225
+ return (_instance$options$deb9 = instance.options.debugAll) != null ? _instance$options$deb9 : instance.options.debugHeaders;
302
226
  }
303
227
  }),
304
228
  getLeftFlatHeaders: utils.memo(function () {
@@ -310,9 +234,9 @@ var Headers = {
310
234
  }, {
311
235
  key: 'getLeftFlatHeaders',
312
236
  debug: function debug() {
313
- var _instance$options$deb15;
237
+ var _instance$options$deb10;
314
238
 
315
- return (_instance$options$deb15 = instance.options.debugAll) != null ? _instance$options$deb15 : instance.options.debugHeaders;
239
+ return (_instance$options$deb10 = instance.options.debugAll) != null ? _instance$options$deb10 : instance.options.debugHeaders;
316
240
  }
317
241
  }),
318
242
  getCenterFlatHeaders: utils.memo(function () {
@@ -324,9 +248,9 @@ var Headers = {
324
248
  }, {
325
249
  key: 'getCenterFlatHeaders',
326
250
  debug: function debug() {
327
- var _instance$options$deb16;
251
+ var _instance$options$deb11;
328
252
 
329
- return (_instance$options$deb16 = instance.options.debugAll) != null ? _instance$options$deb16 : instance.options.debugHeaders;
253
+ return (_instance$options$deb11 = instance.options.debugAll) != null ? _instance$options$deb11 : instance.options.debugHeaders;
330
254
  }
331
255
  }),
332
256
  getRightFlatHeaders: utils.memo(function () {
@@ -338,9 +262,9 @@ var Headers = {
338
262
  }, {
339
263
  key: 'getRightFlatHeaders',
340
264
  debug: function debug() {
341
- var _instance$options$deb17;
265
+ var _instance$options$deb12;
342
266
 
343
- return (_instance$options$deb17 = instance.options.debugAll) != null ? _instance$options$deb17 : instance.options.debugHeaders;
267
+ return (_instance$options$deb12 = instance.options.debugAll) != null ? _instance$options$deb12 : instance.options.debugHeaders;
344
268
  }
345
269
  }),
346
270
  // Leaf Headers
@@ -355,9 +279,9 @@ var Headers = {
355
279
  }, {
356
280
  key: 'getCenterLeafHeaders',
357
281
  debug: function debug() {
358
- var _instance$options$deb18;
282
+ var _instance$options$deb13;
359
283
 
360
- return (_instance$options$deb18 = instance.options.debugAll) != null ? _instance$options$deb18 : instance.options.debugHeaders;
284
+ return (_instance$options$deb13 = instance.options.debugAll) != null ? _instance$options$deb13 : instance.options.debugHeaders;
361
285
  }
362
286
  }),
363
287
  getLeftLeafHeaders: utils.memo(function () {
@@ -371,9 +295,9 @@ var Headers = {
371
295
  }, {
372
296
  key: 'getLeftLeafHeaders',
373
297
  debug: function debug() {
374
- var _instance$options$deb19;
298
+ var _instance$options$deb14;
375
299
 
376
- return (_instance$options$deb19 = instance.options.debugAll) != null ? _instance$options$deb19 : instance.options.debugHeaders;
300
+ return (_instance$options$deb14 = instance.options.debugAll) != null ? _instance$options$deb14 : instance.options.debugHeaders;
377
301
  }
378
302
  }),
379
303
  getRightLeafHeaders: utils.memo(function () {
@@ -387,9 +311,9 @@ var Headers = {
387
311
  }, {
388
312
  key: 'getRightLeafHeaders',
389
313
  debug: function debug() {
390
- var _instance$options$deb20;
314
+ var _instance$options$deb15;
391
315
 
392
- return (_instance$options$deb20 = instance.options.debugAll) != null ? _instance$options$deb20 : instance.options.debugHeaders;
316
+ return (_instance$options$deb15 = instance.options.debugAll) != null ? _instance$options$deb15 : instance.options.debugHeaders;
393
317
  }
394
318
  }),
395
319
  getLeafHeaders: utils.memo(function () {
@@ -403,9 +327,9 @@ var Headers = {
403
327
  }, {
404
328
  key: 'getLeafHeaders',
405
329
  debug: function debug() {
406
- var _instance$options$deb21;
330
+ var _instance$options$deb16;
407
331
 
408
- return (_instance$options$deb21 = instance.options.debugAll) != null ? _instance$options$deb21 : instance.options.debugHeaders;
332
+ return (_instance$options$deb16 = instance.options.debugAll) != null ? _instance$options$deb16 : instance.options.debugHeaders;
409
333
  }
410
334
  }),
411
335
  getHeader: function getHeader(id) {
@@ -422,69 +346,6 @@ var Headers = {
422
346
  }
423
347
 
424
348
  return header;
425
- },
426
- getHeaderGroupProps: function getHeaderGroupProps(id, userProps) {
427
- var headerGroup = instance.getHeaderGroups().find(function (d) {
428
- return d.id === id;
429
- });
430
-
431
- if (!headerGroup) {
432
- return;
433
- }
434
-
435
- return utils.propGetter({
436
- key: headerGroup.id,
437
- role: 'row'
438
- }, userProps);
439
- },
440
- getFooterGroupProps: function getFooterGroupProps(id, userProps) {
441
- var headerGroup = instance.getFooterGroups().find(function (d) {
442
- return d.id === id;
443
- });
444
-
445
- if (!headerGroup) {
446
- return;
447
- }
448
-
449
- var initialProps = {
450
- key: headerGroup.id,
451
- role: 'row'
452
- };
453
- return utils.propGetter(initialProps, userProps);
454
- },
455
- getHeaderProps: function getHeaderProps(id, userProps) {
456
- var header = instance.getHeader(id);
457
-
458
- if (!header) {
459
- throw new Error();
460
- }
461
-
462
- var initialProps = {
463
- key: header.id,
464
- role: 'columnheader',
465
- colSpan: header.colSpan,
466
- rowSpan: header.rowSpan
467
- };
468
- return utils.propGetter(initialProps, userProps);
469
- },
470
- getFooterProps: function getFooterProps(id, userProps) {
471
- var header = instance.getHeader(id);
472
- var initialProps = {
473
- key: header.id,
474
- role: 'columnfooter',
475
- colSpan: header.colSpan,
476
- rowSpan: header.rowSpan
477
- };
478
- return utils.propGetter(initialProps, userProps);
479
- },
480
- getTotalWidth: function getTotalWidth() {
481
- var width = 0;
482
- instance.getVisibleLeafColumns().forEach(function (column) {
483
- var _column$getWidth;
484
-
485
- width += (_column$getWidth = column.getWidth()) != null ? _column$getWidth : 0;
486
- });
487
- return width;
488
349
  }
489
350
  };
490
351
  }
@@ -524,20 +385,14 @@ function buildHeaderGroups(allColumns, columnsToGroup, instance, headerFamily) {
524
385
  var headerGroup = {
525
386
  depth: depth,
526
387
  id: [headerFamily, "" + depth].filter(Boolean).join('_'),
527
- headers: [],
528
- getHeaderGroupProps: function getHeaderGroupProps(getterValue) {
529
- return instance.getHeaderGroupProps("" + depth, getterValue);
530
- },
531
- getFooterGroupProps: function getFooterGroupProps(getterValue) {
532
- return instance.getFooterGroupProps("" + depth, getterValue);
533
- }
388
+ headers: []
534
389
  }; // The parent columns we're going to scan next
535
390
 
536
- var parentHeaders = []; // Scan each column for parents
391
+ var pendingParentHeaders = []; // Scan each column for parents
537
392
 
538
393
  headersToGroup.forEach(function (headerToGroup) {
539
394
  // What is the latest (last) parent column?
540
- var latestParentHeader = [].concat(parentHeaders).reverse()[0];
395
+ var latestPendingParentHeader = [].concat(pendingParentHeaders).reverse()[0];
541
396
  var isLeafHeader = headerToGroup.column.depth === headerGroup.depth;
542
397
  var column;
543
398
  var isPlaceholder = false;
@@ -551,37 +406,41 @@ function buildHeaderGroups(allColumns, columnsToGroup, instance, headerFamily) {
551
406
  isPlaceholder = true;
552
407
  }
553
408
 
554
- var header = instance.createHeader(column, {
555
- id: [headerFamily, depth, column.id, headerToGroup == null ? void 0 : headerToGroup.id].filter(Boolean).join('_'),
556
- isPlaceholder: isPlaceholder,
557
- placeholderId: isPlaceholder ? "" + parentHeaders.filter(function (d) {
558
- return d.column === column;
559
- }).length : undefined,
560
- depth: depth
561
- });
562
-
563
- if (!latestParentHeader || latestParentHeader.column !== header.column) {
564
- header.subHeaders.push(headerToGroup);
565
- parentHeaders.push(header);
409
+ if ((latestPendingParentHeader == null ? void 0 : latestPendingParentHeader.column) === column) {
410
+ // This column is repeated. Add it as a sub header to the next batch
411
+ latestPendingParentHeader.subHeaders.push(headerToGroup);
566
412
  } else {
567
- latestParentHeader.subHeaders.push(headerToGroup);
568
- } // if (!headerToGroup.isPlaceholder) {
569
- // headerToGroup.column.header = headerToGroup;
570
- // }
571
-
413
+ // This is a new header. Let's create it
414
+ var header = instance.createHeader(column, {
415
+ id: [headerFamily, depth, column.id, headerToGroup == null ? void 0 : headerToGroup.id].filter(Boolean).join('_'),
416
+ isPlaceholder: isPlaceholder,
417
+ placeholderId: isPlaceholder ? "" + pendingParentHeaders.filter(function (d) {
418
+ return d.column === column;
419
+ }).length : undefined,
420
+ depth: depth,
421
+ index: pendingParentHeaders.length
422
+ }); // Add the headerToGroup as a subHeader of the new header
423
+
424
+ header.subHeaders.push(headerToGroup); // Add the new header to the pendingParentHeaders to get grouped
425
+ // in the next batch
426
+
427
+ pendingParentHeaders.push(header);
428
+ }
572
429
 
573
430
  headerGroup.headers.push(headerToGroup);
431
+ headerToGroup.headerGroup = headerGroup;
574
432
  });
575
433
  headerGroups.push(headerGroup);
576
434
 
577
435
  if (depth > 0) {
578
- createHeaderGroup(parentHeaders, depth - 1);
436
+ createHeaderGroup(pendingParentHeaders, depth - 1);
579
437
  }
580
438
  };
581
439
 
582
- var bottomHeaders = columnsToGroup.map(function (column) {
440
+ var bottomHeaders = columnsToGroup.map(function (column, index) {
583
441
  return instance.createHeader(column, {
584
- depth: maxDepth
442
+ depth: maxDepth,
443
+ index: index
585
444
  });
586
445
  });
587
446
  createHeaderGroup(bottomHeaders, maxDepth - 1);