@tanstack/table-core 8.0.11 → 8.0.14

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 (96) hide show
  1. package/build/cjs/core/cell.js +13 -13
  2. package/build/cjs/core/cell.js.map +1 -1
  3. package/build/cjs/core/column.js +20 -21
  4. package/build/cjs/core/column.js.map +1 -1
  5. package/build/cjs/core/headers.js +63 -68
  6. package/build/cjs/core/headers.js.map +1 -1
  7. package/build/cjs/core/row.js +16 -11
  8. package/build/cjs/core/row.js.map +1 -1
  9. package/build/cjs/core/{instance.js → table.js} +46 -57
  10. package/build/cjs/core/table.js.map +1 -0
  11. package/build/cjs/features/ColumnSizing.js +36 -36
  12. package/build/cjs/features/ColumnSizing.js.map +1 -1
  13. package/build/cjs/features/Expanding.js +34 -34
  14. package/build/cjs/features/Expanding.js.map +1 -1
  15. package/build/cjs/features/Filters.js +46 -52
  16. package/build/cjs/features/Filters.js.map +1 -1
  17. package/build/cjs/features/Grouping.js +24 -49
  18. package/build/cjs/features/Grouping.js.map +1 -1
  19. package/build/cjs/features/Ordering.js +8 -8
  20. package/build/cjs/features/Ordering.js.map +1 -1
  21. package/build/cjs/features/Pagination.js +37 -37
  22. package/build/cjs/features/Pagination.js.map +1 -1
  23. package/build/cjs/features/Pinning.js +33 -33
  24. package/build/cjs/features/Pinning.js.map +1 -1
  25. package/build/cjs/features/RowSelection.js +67 -67
  26. package/build/cjs/features/RowSelection.js.map +1 -1
  27. package/build/cjs/features/Sorting.js +36 -40
  28. package/build/cjs/features/Sorting.js.map +1 -1
  29. package/build/cjs/features/Visibility.js +30 -30
  30. package/build/cjs/features/Visibility.js.map +1 -1
  31. package/build/cjs/index.js +2 -4
  32. package/build/cjs/index.js.map +1 -1
  33. package/build/cjs/utils/filterRowsUtils.js +8 -8
  34. package/build/cjs/utils/filterRowsUtils.js.map +1 -1
  35. package/build/cjs/utils/getCoreRowModel.js +8 -8
  36. package/build/cjs/utils/getCoreRowModel.js.map +1 -1
  37. package/build/cjs/utils/getExpandedRowModel.js +4 -4
  38. package/build/cjs/utils/getExpandedRowModel.js.map +1 -1
  39. package/build/cjs/utils/getFacetedMinMaxValues.js +3 -3
  40. package/build/cjs/utils/getFacetedMinMaxValues.js.map +1 -1
  41. package/build/cjs/utils/getFacetedRowModel.js +4 -4
  42. package/build/cjs/utils/getFacetedRowModel.js.map +1 -1
  43. package/build/cjs/utils/getFacetedUniqueValues.js +3 -3
  44. package/build/cjs/utils/getFacetedUniqueValues.js.map +1 -1
  45. package/build/cjs/utils/getFilteredRowModel.js +8 -8
  46. package/build/cjs/utils/getFilteredRowModel.js.map +1 -1
  47. package/build/cjs/utils/getGroupedRowModel.js +9 -9
  48. package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
  49. package/build/cjs/utils/getPaginationRowModel.js +4 -4
  50. package/build/cjs/utils/getPaginationRowModel.js.map +1 -1
  51. package/build/cjs/utils/getSortedRowModel.js +7 -7
  52. package/build/cjs/utils/getSortedRowModel.js.map +1 -1
  53. package/build/cjs/utils.js +2 -2
  54. package/build/cjs/utils.js.map +1 -1
  55. package/build/esm/index.js +567 -670
  56. package/build/esm/index.js.map +1 -1
  57. package/build/stats-html.html +1 -1
  58. package/build/stats-react.json +1092 -0
  59. package/build/types/index.d.ts +759 -0
  60. package/build/umd/index.development.js +567 -671
  61. package/build/umd/index.development.js.map +1 -1
  62. package/build/umd/index.production.js +1 -1
  63. package/build/umd/index.production.js.map +1 -1
  64. package/package.json +2 -2
  65. package/src/core/cell.ts +34 -28
  66. package/src/core/column.ts +83 -72
  67. package/src/core/headers.ts +118 -149
  68. package/src/core/row.ts +31 -25
  69. package/src/core/{instance.ts → table.ts} +85 -116
  70. package/src/features/ColumnSizing.ts +45 -47
  71. package/src/features/Expanding.ts +53 -59
  72. package/src/features/Filters.ts +112 -132
  73. package/src/features/Grouping.ts +63 -112
  74. package/src/features/Ordering.ts +19 -21
  75. package/src/features/Pagination.ts +54 -55
  76. package/src/features/Pinning.ts +49 -61
  77. package/src/features/RowSelection.ts +97 -108
  78. package/src/features/Sorting.ts +57 -72
  79. package/src/features/Visibility.ts +48 -48
  80. package/src/index.ts +1 -2
  81. package/src/types.ts +64 -69
  82. package/src/utils/filterRowsUtils.ts +33 -28
  83. package/src/utils/getCoreRowModel.ts +22 -22
  84. package/src/utils/getExpandedRowModel.ts +15 -15
  85. package/src/utils/getFacetedMinMaxValues.ts +6 -6
  86. package/src/utils/getFacetedRowModel.ts +12 -12
  87. package/src/utils/getFacetedUniqueValues.ts +6 -6
  88. package/src/utils/getFilteredRowModel.ts +17 -17
  89. package/src/utils/getGroupedRowModel.ts +18 -21
  90. package/src/utils/getPaginationRowModel.ts +10 -13
  91. package/src/utils/getSortedRowModel.ts +14 -14
  92. package/src/utils.ts +8 -2
  93. package/build/cjs/core/instance.js.map +0 -1
  94. package/build/cjs/createTable.js +0 -72
  95. package/build/cjs/createTable.js.map +0 -1
  96. package/src/createTable.ts +0 -188
@@ -1,13 +1,13 @@
1
1
  import { createRow } from '../core/row'
2
- import { TableInstance, Row, RowModel, TableGenerics } from '../types'
2
+ import { Table, Row, RowModel, TableGenerics, RowData } from '../types'
3
3
  import { flattenBy, memo } from '../utils'
4
4
 
5
- export function getGroupedRowModel<TGenerics extends TableGenerics>(): (
6
- instance: TableInstance<TGenerics>
7
- ) => () => RowModel<TGenerics> {
8
- return instance =>
5
+ export function getGroupedRowModel<TData extends RowData>(): (
6
+ table: Table<TData>
7
+ ) => () => RowModel<TData> {
8
+ return table =>
9
9
  memo(
10
- () => [instance.getState().grouping, instance.getPreGroupedRowModel()],
10
+ () => [table.getState().grouping, table.getPreGroupedRowModel()],
11
11
  (grouping, rowModel) => {
12
12
  if (!rowModel.rows.length || !grouping.length) {
13
13
  return rowModel
@@ -15,11 +15,11 @@ export function getGroupedRowModel<TGenerics extends TableGenerics>(): (
15
15
 
16
16
  // Filter the grouping list down to columns that exist
17
17
  const existingGrouping = grouping.filter(columnId =>
18
- instance.getColumn(columnId)
18
+ table.getColumn(columnId)
19
19
  )
20
20
 
21
- const groupedFlatRows: Row<TGenerics>[] = []
22
- const groupedRowsById: Record<string, Row<TGenerics>> = {}
21
+ const groupedFlatRows: Row<TData>[] = []
22
+ const groupedRowsById: Record<string, Row<TData>> = {}
23
23
  // const onlyGroupedFlatRows: Row[] = [];
24
24
  // const onlyGroupedRowsById: Record<RowId, Row> = {};
25
25
  // const nonGroupedFlatRows: Row[] = [];
@@ -27,7 +27,7 @@ export function getGroupedRowModel<TGenerics extends TableGenerics>(): (
27
27
 
28
28
  // Recursively group the data
29
29
  const groupUpRecursively = (
30
- rows: Row<TGenerics>[],
30
+ rows: Row<TData>[],
31
31
  depth = 0,
32
32
  parentId: string
33
33
  ) => {
@@ -55,7 +55,7 @@ export function getGroupedRowModel<TGenerics extends TableGenerics>(): (
55
55
  ? flattenBy(groupedRows, row => row.subRows)
56
56
  : groupedRows
57
57
 
58
- const row = createRow(instance, id, undefined, index, depth)
58
+ const row = createRow(table, id, undefined, index, depth)
59
59
 
60
60
  Object.assign(row, {
61
61
  groupingColumnId: columnId,
@@ -82,7 +82,7 @@ export function getGroupedRowModel<TGenerics extends TableGenerics>(): (
82
82
  }
83
83
 
84
84
  // Aggregate the values
85
- const column = instance.getColumn(columnId)
85
+ const column = table.getColumn(columnId)
86
86
  const aggregateFn = column.getAggregationFn()
87
87
 
88
88
  if (aggregateFn) {
@@ -138,22 +138,19 @@ export function getGroupedRowModel<TGenerics extends TableGenerics>(): (
138
138
  },
139
139
  {
140
140
  key: process.env.NODE_ENV === 'development' && 'getGroupedRowModel',
141
- debug: () => instance.options.debugAll ?? instance.options.debugTable,
141
+ debug: () => table.options.debugAll ?? table.options.debugTable,
142
142
  onChange: () => {
143
- instance._queue(() => {
144
- instance._autoResetExpanded()
145
- instance._autoResetPageIndex()
143
+ table._queue(() => {
144
+ table._autoResetExpanded()
145
+ table._autoResetPageIndex()
146
146
  })
147
147
  },
148
148
  }
149
149
  )
150
150
  }
151
151
 
152
- function groupBy<TGenerics extends TableGenerics>(
153
- rows: Row<TGenerics>[],
154
- columnId: string
155
- ) {
156
- const groupMap = new Map<any, Row<TGenerics>[]>()
152
+ function groupBy<TData extends RowData>(rows: Row<TData>[], columnId: string) {
153
+ const groupMap = new Map<any, Row<TData>[]>()
157
154
 
158
155
  return rows.reduce((map, row) => {
159
156
  const resKey = `${row.getValue(columnId)}`
@@ -1,16 +1,13 @@
1
- import { TableInstance, RowModel, TableGenerics, Row } from '../types'
1
+ import { Table, RowModel, TableGenerics, Row, RowData } from '../types'
2
2
  import { memo } from '../utils'
3
3
  import { expandRows } from './getExpandedRowModel'
4
4
 
5
- export function getPaginationRowModel<TGenerics extends TableGenerics>(opts?: {
5
+ export function getPaginationRowModel<TData extends RowData>(opts?: {
6
6
  initialSync: boolean
7
- }): (instance: TableInstance<TGenerics>) => () => RowModel<TGenerics> {
8
- return instance =>
7
+ }): (table: Table<TData>) => () => RowModel<TData> {
8
+ return table =>
9
9
  memo(
10
- () => [
11
- instance.getState().pagination,
12
- instance.getPrePaginationRowModel(),
13
- ],
10
+ () => [table.getState().pagination, table.getPrePaginationRowModel()],
14
11
  (pagination, rowModel) => {
15
12
  if (!rowModel.rows.length) {
16
13
  return rowModel
@@ -23,16 +20,16 @@ export function getPaginationRowModel<TGenerics extends TableGenerics>(opts?: {
23
20
 
24
21
  rows = rows.slice(pageStart, pageEnd)
25
22
 
26
- let paginatedRowModel: RowModel<TGenerics>
23
+ let paginatedRowModel: RowModel<TData>
27
24
 
28
- if (!instance.options.paginateExpandedRows) {
25
+ if (!table.options.paginateExpandedRows) {
29
26
  paginatedRowModel = expandRows(
30
27
  {
31
28
  rows,
32
29
  flatRows,
33
30
  rowsById,
34
31
  },
35
- instance
32
+ table
36
33
  )
37
34
  } else {
38
35
  paginatedRowModel = {
@@ -44,7 +41,7 @@ export function getPaginationRowModel<TGenerics extends TableGenerics>(opts?: {
44
41
 
45
42
  paginatedRowModel.flatRows = []
46
43
 
47
- const handleRow = (row: Row<TGenerics>) => {
44
+ const handleRow = (row: Row<TData>) => {
48
45
  paginatedRowModel.flatRows.push(row)
49
46
  if (row.subRows.length) {
50
47
  row.subRows.forEach(handleRow)
@@ -57,7 +54,7 @@ export function getPaginationRowModel<TGenerics extends TableGenerics>(opts?: {
57
54
  },
58
55
  {
59
56
  key: process.env.NODE_ENV === 'development' && 'getPaginationRowModel',
60
- debug: () => instance.options.debugAll ?? instance.options.debugTable,
57
+ debug: () => table.options.debugAll ?? table.options.debugTable,
61
58
  }
62
59
  )
63
60
  }
@@ -1,25 +1,25 @@
1
- import { TableInstance, Row, RowModel, TableGenerics } from '../types'
1
+ import { Table, Row, RowModel, TableGenerics, RowData } from '../types'
2
2
  import { SortingFn } from '../features/Sorting'
3
3
  import { memo } from '../utils'
4
4
 
5
- export function getSortedRowModel<TGenerics extends TableGenerics>(): (
6
- instance: TableInstance<TGenerics>
7
- ) => () => RowModel<TGenerics> {
8
- return instance =>
5
+ export function getSortedRowModel<TData extends RowData>(): (
6
+ table: Table<TData>
7
+ ) => () => RowModel<TData> {
8
+ return table =>
9
9
  memo(
10
- () => [instance.getState().sorting, instance.getPreSortedRowModel()],
10
+ () => [table.getState().sorting, table.getPreSortedRowModel()],
11
11
  (sorting, rowModel) => {
12
12
  if (!rowModel.rows.length || !sorting?.length) {
13
13
  return rowModel
14
14
  }
15
15
 
16
- const sortingState = instance.getState().sorting
16
+ const sortingState = table.getState().sorting
17
17
 
18
- const sortedFlatRows: Row<TGenerics>[] = []
18
+ const sortedFlatRows: Row<TData>[] = []
19
19
 
20
20
  // Filter out sortings that correspond to non existing columns
21
21
  const availableSorting = sortingState.filter(sort =>
22
- instance.getColumn(sort.id).getCanSort()
22
+ table.getColumn(sort.id).getCanSort()
23
23
  )
24
24
 
25
25
  const columnInfoById: Record<
@@ -27,12 +27,12 @@ export function getSortedRowModel<TGenerics extends TableGenerics>(): (
27
27
  {
28
28
  sortUndefined?: false | -1 | 1
29
29
  invertSorting?: boolean
30
- sortingFn: SortingFn<TGenerics>
30
+ sortingFn: SortingFn<TData>
31
31
  }
32
32
  > = {}
33
33
 
34
34
  availableSorting.forEach(sortEntry => {
35
- const column = instance.getColumn(sortEntry.id)
35
+ const column = table.getColumn(sortEntry.id)
36
36
 
37
37
  columnInfoById[sortEntry.id] = {
38
38
  sortUndefined: column.columnDef.sortUndefined,
@@ -41,7 +41,7 @@ export function getSortedRowModel<TGenerics extends TableGenerics>(): (
41
41
  }
42
42
  })
43
43
 
44
- const sortData = (rows: Row<TGenerics>[]) => {
44
+ const sortData = (rows: Row<TData>[]) => {
45
45
  // This will also perform a stable sorting using the row index
46
46
  // if needed.
47
47
  const sortedData = rows.slice()
@@ -107,9 +107,9 @@ export function getSortedRowModel<TGenerics extends TableGenerics>(): (
107
107
  },
108
108
  {
109
109
  key: process.env.NODE_ENV === 'development' && 'getSortedRowModel',
110
- debug: () => instance.options.debugAll ?? instance.options.debugTable,
110
+ debug: () => table.options.debugAll ?? table.options.debugTable,
111
111
  onChange: () => {
112
- instance._autoResetPageIndex()
112
+ table._autoResetPageIndex()
113
113
  },
114
114
  }
115
115
  )
package/src/utils.ts CHANGED
@@ -9,6 +9,12 @@ export type Overwrite<T, U extends { [TKey in keyof T]?: any }> = Omit<
9
9
  > &
10
10
  U
11
11
 
12
+ export type UnionToIntersection<T> = (
13
+ T extends any ? (x: T) => any : never
14
+ ) extends (x: infer R) => any
15
+ ? R
16
+ : never
17
+
12
18
  export type IfDefined<T, N> = 0 extends 1 & T ? N : T extends {} ? T : N
13
19
 
14
20
  export function functionalUpdate<T>(updater: Updater<T>, input: T): T {
@@ -21,9 +27,9 @@ export function noop() {
21
27
  //
22
28
  }
23
29
 
24
- export function makeStateUpdater(key: keyof TableState, instance: unknown) {
30
+ export function makeStateUpdater(key: keyof TableState, table: unknown) {
25
31
  return (updater: Updater<any>) => {
26
- ;(instance as any).setState(<TTableState>(old: TTableState) => {
32
+ ;(table as any).setState(<TTableState>(old: TTableState) => {
27
33
  return {
28
34
  ...old,
29
35
  [key]: functionalUpdate(updater, (old as any)[key]),
@@ -1 +0,0 @@
1
- {"version":3,"file":"instance.js","sources":["../../../src/core/instance.ts"],"sourcesContent":["import { flattenBy, functionalUpdate, memo, RequiredKeys } from '../utils'\n\nimport {\n Updater,\n TableOptionsResolved,\n TableState,\n TableInstance,\n Renderable,\n TableGenerics,\n InitialTableState,\n Row,\n Column,\n RowModel,\n ColumnDef,\n TableOptions,\n} from '../types'\n\n//\nimport { createColumn } from './column'\nimport { Headers } from './headers'\n//\n\nimport { ColumnSizing } from '../features/ColumnSizing'\nimport { Expanding } from '../features/Expanding'\nimport { Filters } from '../features/Filters'\nimport { Grouping } from '../features/Grouping'\nimport { Ordering } from '../features/Ordering'\nimport { Pagination } from '../features/Pagination'\nimport { Pinning } from '../features/Pinning'\nimport { RowSelection } from '../features/RowSelection'\nimport { Sorting } from '../features/Sorting'\nimport { Visibility } from '../features/Visibility'\n\nexport type TableFeature = {\n getDefaultOptions?: (instance: any) => any\n getInitialState?: (initialState?: InitialTableState) => any\n createInstance?: (instance: any) => any\n getDefaultColumnDef?: () => any\n createColumn?: (column: any, instance: any) => any\n createHeader?: (column: any, instance: any) => any\n createCell?: (cell: any, column: any, row: any, instance: any) => any\n createRow?: (row: any, instance: any) => any\n}\n\nconst features = [\n Headers,\n Visibility,\n Ordering,\n Pinning,\n Filters,\n Sorting,\n Grouping,\n Expanding,\n Pagination,\n RowSelection,\n ColumnSizing,\n] as const\n\n//\n\nexport type CoreTableState = {}\n\nexport type CoreOptions<TGenerics extends TableGenerics> = {\n data: TGenerics['Row'][]\n state: Partial<TableState>\n onStateChange: (updater: Updater<TableState>) => void\n render: TGenerics['Renderer']\n debugAll?: boolean\n debugTable?: boolean\n debugHeaders?: boolean\n debugColumns?: boolean\n debugRows?: boolean\n initialState?: InitialTableState\n autoResetAll?: boolean\n mergeOptions?: (\n defaultOptions: TableOptions<TGenerics>,\n options: Partial<TableOptions<TGenerics>>\n ) => TableOptions<TGenerics>\n meta?: TGenerics['TableMeta']\n getCoreRowModel: (instance: TableInstance<any>) => () => RowModel<any>\n getSubRows?: (\n originalRow: TGenerics['Row'],\n index: number\n ) => undefined | TGenerics['Row'][]\n getRowId?: (\n originalRow: TGenerics['Row'],\n index: number,\n parent?: Row<TGenerics>\n ) => string\n columns: ColumnDef<TGenerics>[]\n defaultColumn?: Partial<ColumnDef<TGenerics>>\n renderFallbackValue: any\n}\n\nexport type CoreInstance<TGenerics extends TableGenerics> = {\n initialState: TableState\n reset: () => void\n options: RequiredKeys<TableOptionsResolved<TGenerics>, 'state'>\n setOptions: (newOptions: Updater<TableOptionsResolved<TGenerics>>) => void\n getState: () => TableState\n setState: (updater: Updater<TableState>) => void\n _features: readonly TableFeature[]\n _queue: (cb: () => void) => void\n _render: <TProps>(\n template: Renderable<TGenerics, TProps>,\n props: TProps\n ) => string | null | TGenerics['Rendered']\n _getRowId: (\n _: TGenerics['Row'],\n index: number,\n parent?: Row<TGenerics>\n ) => string\n getCoreRowModel: () => RowModel<TGenerics>\n _getCoreRowModel?: () => RowModel<TGenerics>\n getRowModel: () => RowModel<TGenerics>\n getRow: (id: string) => Row<TGenerics>\n _getDefaultColumnDef: () => Partial<ColumnDef<TGenerics>>\n _getColumnDefs: () => ColumnDef<TGenerics>[]\n _getAllFlatColumnsById: () => Record<string, Column<TGenerics>>\n getAllColumns: () => Column<TGenerics>[]\n getAllFlatColumns: () => Column<TGenerics>[]\n getAllLeafColumns: () => Column<TGenerics>[]\n getColumn: (columnId: string) => Column<TGenerics>\n}\n\nexport function createTableInstance<TGenerics extends TableGenerics>(\n options: TableOptionsResolved<TGenerics>\n): TableInstance<TGenerics> {\n if (options.debugAll || options.debugTable) {\n console.info('Creating Table Instance...')\n }\n\n let instance = { _features: features } as unknown as TableInstance<TGenerics>\n\n const defaultOptions = instance._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions?.(instance))\n }, {}) as TableOptionsResolved<TGenerics>\n\n const mergeOptions = (options: TableOptionsResolved<TGenerics>) => {\n if (instance.options.mergeOptions) {\n return instance.options.mergeOptions(defaultOptions, options)\n }\n\n return {\n ...defaultOptions,\n ...options,\n }\n }\n\n const coreInitialState: CoreTableState = {}\n\n let initialState = {\n ...coreInitialState,\n ...(options.initialState ?? {}),\n } as TableState\n\n instance._features.forEach(feature => {\n initialState = feature.getInitialState?.(initialState) ?? initialState\n })\n\n const queued: (() => void)[] = []\n let queuedTimeout = false\n\n const coreInstance: CoreInstance<TGenerics> = {\n _features: features,\n options: {\n ...defaultOptions,\n ...options,\n },\n initialState,\n _queue: cb => {\n queued.push(cb)\n\n if (!queuedTimeout) {\n queuedTimeout = true\n\n // Schedule a microtask to run the queued callbacks after\n // the current call stack (render, etc) has finished.\n Promise.resolve()\n .then(() => {\n while (queued.length) {\n queued.shift()!()\n }\n queuedTimeout = false\n })\n .catch(error =>\n setTimeout(() => {\n throw error\n })\n )\n }\n },\n reset: () => {\n instance.setState(instance.initialState)\n },\n setOptions: updater => {\n const newOptions = functionalUpdate(updater, instance.options)\n instance.options = mergeOptions(newOptions) as RequiredKeys<\n TableOptionsResolved<TGenerics>,\n 'state'\n >\n },\n _render: (template, props) => {\n if (typeof instance.options.render === 'function') {\n return instance.options.render(template, props)\n }\n\n if (typeof template === 'function') {\n return (template as Function)(props)\n }\n\n return template\n },\n\n getState: () => {\n return instance.options.state as TableState\n },\n\n setState: (updater: Updater<TableState>) => {\n instance.options.onStateChange?.(updater)\n },\n\n _getRowId: (\n row: TGenerics['Row'],\n index: number,\n parent?: Row<TGenerics>\n ) =>\n instance.options.getRowId?.(row, index, parent) ??\n `${parent ? [parent.id, index].join('.') : index}`,\n\n getCoreRowModel: () => {\n if (!instance._getCoreRowModel) {\n instance._getCoreRowModel = instance.options.getCoreRowModel(instance)\n }\n\n return instance._getCoreRowModel()\n },\n\n // The final calls start at the bottom of the model,\n // expanded rows, which then work their way up\n\n getRowModel: () => {\n return instance.getPaginationRowModel()\n },\n getRow: (id: string) => {\n const row = instance.getRowModel().rowsById[id]\n\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRow expected an ID, but got ${id}`)\n }\n throw new Error()\n }\n\n return row\n },\n _getDefaultColumnDef: memo(\n () => [instance.options.defaultColumn],\n defaultColumn => {\n defaultColumn = (defaultColumn ?? {}) as Partial<ColumnDef<TGenerics>>\n\n return {\n header: props => props.header.column.id,\n footer: props => props.header.column.id,\n cell: props => props.getValue()?.toString?.() ?? null,\n ...instance._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef?.())\n }, {}),\n ...defaultColumn,\n } as Partial<ColumnDef<TGenerics>>\n },\n {\n debug: () => instance.options.debugAll ?? instance.options.debugColumns,\n key: process.env.NODE_ENV === 'development' && 'getDefaultColumnDef',\n }\n ),\n\n _getColumnDefs: () => instance.options.columns,\n\n getAllColumns: memo(\n () => [instance._getColumnDefs()],\n columnDefs => {\n const recurseColumns = (\n columnDefs: ColumnDef<TGenerics>[],\n parent?: Column<TGenerics>,\n depth = 0\n ): Column<TGenerics>[] => {\n return columnDefs.map(columnDef => {\n const column = createColumn(instance, columnDef, depth, parent)\n\n column.columns = columnDef.columns\n ? recurseColumns(columnDef.columns, column, depth + 1)\n : []\n\n return column\n })\n }\n\n return recurseColumns(columnDefs)\n },\n {\n key: process.env.NODE_ENV === 'development' && 'getAllColumns',\n debug: () => instance.options.debugAll ?? instance.options.debugColumns,\n }\n ),\n\n getAllFlatColumns: memo(\n () => [instance.getAllColumns()],\n allColumns => {\n return allColumns.flatMap(column => {\n return column.getFlatColumns()\n })\n },\n {\n key: process.env.NODE_ENV === 'development' && 'getAllFlatColumns',\n debug: () => instance.options.debugAll ?? instance.options.debugColumns,\n }\n ),\n\n _getAllFlatColumnsById: memo(\n () => [instance.getAllFlatColumns()],\n flatColumns => {\n return flatColumns.reduce((acc, column) => {\n acc[column.id] = column\n return acc\n }, {} as Record<string, Column<TGenerics>>)\n },\n {\n key: process.env.NODE_ENV === 'development' && 'getAllFlatColumnsById',\n debug: () => instance.options.debugAll ?? instance.options.debugColumns,\n }\n ),\n\n getAllLeafColumns: memo(\n () => [instance.getAllColumns(), instance._getOrderColumnsFn()],\n (allColumns, orderColumns) => {\n let leafColumns = allColumns.flatMap(column => column.getLeafColumns())\n return orderColumns(leafColumns)\n },\n {\n key: process.env.NODE_ENV === 'development' && 'getAllLeafColumns',\n debug: () => instance.options.debugAll ?? instance.options.debugColumns,\n }\n ),\n\n getColumn: columnId => {\n const column = instance._getAllFlatColumnsById()[columnId]\n\n if (!column) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`[Table] Column with id ${columnId} does not exist.`)\n }\n throw new Error()\n }\n\n return column\n },\n }\n\n Object.assign(instance, coreInstance)\n\n instance._features.forEach(feature => {\n return Object.assign(instance, feature.createInstance?.(instance))\n })\n\n return instance\n}\n"],"names":["features","Headers","Visibility","Ordering","Pinning","Filters","Sorting","Grouping","Expanding","Pagination","RowSelection","ColumnSizing","createTableInstance","options","debugAll","debugTable","console","info","instance","_features","defaultOptions","reduce","obj","feature","Object","assign","getDefaultOptions","mergeOptions","coreInitialState","initialState","forEach","getInitialState","queued","queuedTimeout","coreInstance","_queue","cb","push","Promise","resolve","then","length","shift","catch","error","setTimeout","reset","setState","setOptions","updater","newOptions","functionalUpdate","_render","template","props","render","getState","state","onStateChange","_getRowId","row","index","parent","getRowId","id","join","getCoreRowModel","_getCoreRowModel","getRowModel","getPaginationRowModel","getRow","rowsById","process","env","NODE_ENV","Error","_getDefaultColumnDef","memo","defaultColumn","header","column","footer","cell","getValue","toString","getDefaultColumnDef","debug","debugColumns","key","_getColumnDefs","columns","getAllColumns","columnDefs","recurseColumns","depth","map","columnDef","createColumn","getAllFlatColumns","allColumns","flatMap","getFlatColumns","_getAllFlatColumnsById","flatColumns","acc","getAllLeafColumns","_getOrderColumnsFn","orderColumns","leafColumns","getLeafColumns","getColumn","columnId","warn","createInstance"],"mappings":"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"}
@@ -1,72 +0,0 @@
1
- /**
2
- * table-core
3
- *
4
- * Copyright (c) TanStack
5
- *
6
- * This source code is licensed under the MIT license found in the
7
- * LICENSE.md file in the root directory of this source tree.
8
- *
9
- * @license MIT
10
- */
11
- 'use strict';
12
-
13
- Object.defineProperty(exports, '__esModule', { value: true });
14
-
15
- //
16
- function createTableFactory(opts) {
17
- return () => createTable(undefined, undefined, opts);
18
- } // A lot of returns in here are `as any` for a reason. Unless you
19
- // can find a better way to do this, then don't worry about them
20
-
21
- function createTable(_, __, options) {
22
- const table = {
23
- generics: undefined,
24
- options: options != null ? options : {
25
- render: (() => {
26
- throw new Error('');
27
- })()
28
- },
29
- // setGenerics: () => table as any,
30
- setRowType: () => table,
31
- setTableMetaType: () => table,
32
- setColumnMetaType: () => table,
33
- setFilterMetaType: () => table,
34
- setOptions: newOptions => createTable(_, __, { ...options,
35
- ...newOptions
36
- }),
37
- createDisplayColumn: column => ({ ...column,
38
- columnDefType: 'display'
39
- }),
40
- createGroup: column => ({ ...column,
41
- columnDefType: 'group'
42
- }),
43
- createDataColumn: (accessor, column) => {
44
- column = { ...column,
45
- columnDefType: 'data',
46
- id: column.id
47
- };
48
-
49
- if (typeof accessor === 'string') {
50
- var _column$id;
51
-
52
- return { ...column,
53
- id: (_column$id = column.id) != null ? _column$id : accessor,
54
- accessorKey: accessor
55
- };
56
- }
57
-
58
- if (typeof accessor === 'function') {
59
- return { ...column,
60
- accessorFn: accessor
61
- };
62
- }
63
-
64
- throw new Error('Invalid accessor');
65
- },
66
- createOptions: options => options
67
- };
68
- return table;
69
- }
70
-
71
- exports.createTableFactory = createTableFactory;
72
- //# sourceMappingURL=createTable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createTable.js","sources":["../../src/createTable.ts"],"sourcesContent":["import { CustomFilterFns, FilterFn } from './features/Filters'\nimport { AggregationFn, CustomAggregationFns } from './features/Grouping'\nimport { CustomSortingFns, SortingFn } from './features/Sorting'\nimport {\n ColumnDef,\n AccessorFn,\n AnyRender,\n TableGenerics,\n TableOptionsResolved,\n TableOptions,\n} from './types'\nimport { IfDefined, Overwrite } from './utils'\n\nexport type TableFactory<TGenerics extends TableGenerics> =\n () => Table<TGenerics>\n\nexport type CreateTableOptions<\n TRender extends AnyRender,\n TFilterFns extends CustomFilterFns<any>,\n TSortingFns extends CustomSortingFns<any>,\n TAggregationFns extends CustomAggregationFns<any>,\n TGenerics extends TableGenerics\n> = Partial<\n {\n render?: TRender\n filterFns?: TFilterFns\n sortingFns?: TSortingFns\n aggregationFns?: TAggregationFns\n } & Omit<\n TableOptionsResolved<TGenerics>,\n 'filterFns' | 'sortingFns' | 'aggregationFns'\n >\n>\n\nexport type Table<TGenerics extends TableGenerics> = {\n generics: TGenerics\n options: Partial<TableOptionsResolved<TGenerics>>\n // setGenerics: <T extends TableGenerics>() => Table<T>\n setRowType: <TRow>() => Table<Overwrite<TGenerics, { Row: TRow }>>\n setTableMetaType: <TTableMeta>() => Table<\n Overwrite<TGenerics, { TableMeta: TTableMeta }>\n >\n setColumnMetaType: <TColumnMeta>() => Table<\n Overwrite<TGenerics, { ColumnMeta: TColumnMeta }>\n >\n setFilterMetaType: <TFilterMeta>() => Table<\n Overwrite<TGenerics, { FilterMeta: TFilterMeta }>\n >\n setOptions: <\n TFilterFns extends Record<string, FilterFn<any>>,\n TSortingFns extends Record<string, SortingFn<any>>,\n TAggregationFns extends Record<string, AggregationFn<any>>\n >(\n options: CreateTableOptions<\n any,\n TFilterFns,\n TSortingFns,\n TAggregationFns,\n TGenerics\n >\n ) => Table<\n Overwrite<\n TGenerics,\n {\n FilterFns: IfDefined<TFilterFns, TGenerics['FilterFns']>\n SortingFns: IfDefined<TSortingFns, TGenerics['SortingFns']>\n AggregationFns: IfDefined<TAggregationFns, TGenerics['AggregationFns']>\n }\n >\n >\n createGroup: (\n column: Overwrite<\n | Overwrite<\n ColumnDef<any>,\n {\n header: string\n id?: string\n }\n >\n | Overwrite<\n ColumnDef<any>,\n {\n id: string\n header?: string | ((...any: any) => any)\n }\n >,\n {\n accessorFn?: never\n accessorKey?: never\n columns?: ColumnDef<any>[]\n }\n >\n ) => ColumnDef<TGenerics>\n createDisplayColumn: (\n column: Omit<ColumnDef<TGenerics>, 'columns'>\n ) => ColumnDef<TGenerics>\n createDataColumn: <\n TAccessor extends AccessorFn<TGenerics['Row']> | keyof TGenerics['Row']\n >(\n accessor: TAccessor,\n column: Overwrite<\n TAccessor extends (...args: any[]) => any\n ? // Accessor Fn\n ColumnDef<Overwrite<TGenerics, { Value: ReturnType<TAccessor> }>>\n : TAccessor extends keyof TGenerics['Row']\n ? // Accessor Key\n Overwrite<\n ColumnDef<\n Overwrite<TGenerics, { Value: TGenerics['Row'][TAccessor] }>\n >,\n {\n id?: string\n }\n >\n : never,\n {\n accessorFn?: never\n accessorKey?: never\n columns?: ColumnDef<any>[]\n }\n >\n ) => ColumnDef<TGenerics>\n createOptions: (options: TableOptions<TGenerics>) => TableOptions<TGenerics>\n}\n\n//\n\nexport function createTableFactory<TRenderer extends AnyRender>(opts: {\n render: TRenderer\n}): () => Table<{ Renderer: TRenderer; Rendered: ReturnType<TRenderer> }> {\n return () => createTable(undefined, undefined, opts)\n}\n\n// A lot of returns in here are `as any` for a reason. Unless you\n// can find a better way to do this, then don't worry about them\nfunction createTable<TGenerics extends TableGenerics>(\n _?: undefined,\n __?: undefined,\n options?: CreateTableOptions<any, any, any, any, TGenerics>\n): Table<TGenerics> {\n const table: Table<TGenerics> = {\n generics: undefined!,\n options: options ?? {\n render: (() => {\n throw new Error('')\n })(),\n },\n // setGenerics: () => table as any,\n setRowType: () => table as any,\n setTableMetaType: () => table as any,\n setColumnMetaType: () => table as any,\n setFilterMetaType: () => table as any,\n setOptions: newOptions =>\n createTable(_, __, {\n ...options,\n ...newOptions,\n } as any),\n createDisplayColumn: column => ({ ...column, columnDefType: 'display' }),\n createGroup: column => ({ ...column, columnDefType: 'group' } as any),\n createDataColumn: (accessor, column): any => {\n column = {\n ...column,\n columnDefType: 'data',\n id: column.id,\n }\n\n if (typeof accessor === 'string') {\n return {\n ...column,\n id: column.id ?? accessor,\n accessorKey: accessor,\n }\n }\n\n if (typeof accessor === 'function') {\n return {\n ...column,\n accessorFn: accessor,\n }\n }\n\n throw new Error('Invalid accessor')\n },\n createOptions: options => options,\n }\n\n return table\n}\n"],"names":["createTableFactory","opts","createTable","undefined","_","__","options","table","generics","render","Error","setRowType","setTableMetaType","setColumnMetaType","setFilterMetaType","setOptions","newOptions","createDisplayColumn","column","columnDefType","createGroup","createDataColumn","accessor","id","accessorKey","accessorFn","createOptions"],"mappings":";;;;;;;;;;;;;;AA6HA;AAEO,SAASA,kBAAT,CAAyDC,IAAzD,EAEmE;EACxE,OAAO,MAAMC,WAAW,CAACC,SAAD,EAAYA,SAAZ,EAAuBF,IAAvB,CAAxB,CAAA;AACD;AAGD;;AACA,SAASC,WAAT,CACEE,CADF,EAEEC,EAFF,EAGEC,OAHF,EAIoB;AAClB,EAAA,MAAMC,KAAuB,GAAG;AAC9BC,IAAAA,QAAQ,EAAEL,SADoB;AAE9BG,IAAAA,OAAO,EAAEA,OAAF,IAAEA,IAAAA,GAAAA,OAAF,GAAa;MAClBG,MAAM,EAAE,CAAC,MAAM;AACb,QAAA,MAAM,IAAIC,KAAJ,CAAU,EAAV,CAAN,CAAA;OADM,GAAA;KAHoB;AAO9B;IACAC,UAAU,EAAE,MAAMJ,KARY;IAS9BK,gBAAgB,EAAE,MAAML,KATM;IAU9BM,iBAAiB,EAAE,MAAMN,KAVK;IAW9BO,iBAAiB,EAAE,MAAMP,KAXK;IAY9BQ,UAAU,EAAEC,UAAU,IACpBd,WAAW,CAACE,CAAD,EAAIC,EAAJ,EAAQ,EACjB,GAAGC,OADc;MAEjB,GAAGU,UAAAA;AAFc,KAAR,CAbiB;AAiB9BC,IAAAA,mBAAmB,EAAEC,MAAM,KAAK,EAAE,GAAGA,MAAL;AAAaC,MAAAA,aAAa,EAAE,SAAA;AAA5B,KAAL,CAjBG;AAkB9BC,IAAAA,WAAW,EAAEF,MAAM,KAAK,EAAE,GAAGA,MAAL;AAAaC,MAAAA,aAAa,EAAE,OAAA;AAA5B,KAAL,CAlBW;AAmB9BE,IAAAA,gBAAgB,EAAE,CAACC,QAAD,EAAWJ,MAAX,KAA2B;MAC3CA,MAAM,GAAG,EACP,GAAGA,MADI;AAEPC,QAAAA,aAAa,EAAE,MAFR;QAGPI,EAAE,EAAEL,MAAM,CAACK,EAAAA;OAHb,CAAA;;AAMA,MAAA,IAAI,OAAOD,QAAP,KAAoB,QAAxB,EAAkC;AAAA,QAAA,IAAA,UAAA,CAAA;;QAChC,OAAO,EACL,GAAGJ,MADE;AAELK,UAAAA,EAAE,EAAEL,CAAAA,UAAAA,GAAAA,MAAM,CAACK,EAAT,yBAAeD,QAFZ;AAGLE,UAAAA,WAAW,EAAEF,QAAAA;SAHf,CAAA;AAKD,OAAA;;AAED,MAAA,IAAI,OAAOA,QAAP,KAAoB,UAAxB,EAAoC;QAClC,OAAO,EACL,GAAGJ,MADE;AAELO,UAAAA,UAAU,EAAEH,QAAAA;SAFd,CAAA;AAID,OAAA;;AAED,MAAA,MAAM,IAAIZ,KAAJ,CAAU,kBAAV,CAAN,CAAA;KAzC4B;IA2C9BgB,aAAa,EAAEpB,OAAO,IAAIA,OAAAA;GA3C5B,CAAA;AA8CA,EAAA,OAAOC,KAAP,CAAA;AACD;;;;"}
@@ -1,188 +0,0 @@
1
- import { CustomFilterFns, FilterFn } from './features/Filters'
2
- import { AggregationFn, CustomAggregationFns } from './features/Grouping'
3
- import { CustomSortingFns, SortingFn } from './features/Sorting'
4
- import {
5
- ColumnDef,
6
- AccessorFn,
7
- AnyRender,
8
- TableGenerics,
9
- TableOptionsResolved,
10
- TableOptions,
11
- } from './types'
12
- import { IfDefined, Overwrite } from './utils'
13
-
14
- export type TableFactory<TGenerics extends TableGenerics> =
15
- () => Table<TGenerics>
16
-
17
- export type CreateTableOptions<
18
- TRender extends AnyRender,
19
- TFilterFns extends CustomFilterFns<any>,
20
- TSortingFns extends CustomSortingFns<any>,
21
- TAggregationFns extends CustomAggregationFns<any>,
22
- TGenerics extends TableGenerics
23
- > = Partial<
24
- {
25
- render?: TRender
26
- filterFns?: TFilterFns
27
- sortingFns?: TSortingFns
28
- aggregationFns?: TAggregationFns
29
- } & Omit<
30
- TableOptionsResolved<TGenerics>,
31
- 'filterFns' | 'sortingFns' | 'aggregationFns'
32
- >
33
- >
34
-
35
- export type Table<TGenerics extends TableGenerics> = {
36
- generics: TGenerics
37
- options: Partial<TableOptionsResolved<TGenerics>>
38
- // setGenerics: <T extends TableGenerics>() => Table<T>
39
- setRowType: <TRow>() => Table<Overwrite<TGenerics, { Row: TRow }>>
40
- setTableMetaType: <TTableMeta>() => Table<
41
- Overwrite<TGenerics, { TableMeta: TTableMeta }>
42
- >
43
- setColumnMetaType: <TColumnMeta>() => Table<
44
- Overwrite<TGenerics, { ColumnMeta: TColumnMeta }>
45
- >
46
- setFilterMetaType: <TFilterMeta>() => Table<
47
- Overwrite<TGenerics, { FilterMeta: TFilterMeta }>
48
- >
49
- setOptions: <
50
- TFilterFns extends Record<string, FilterFn<any>>,
51
- TSortingFns extends Record<string, SortingFn<any>>,
52
- TAggregationFns extends Record<string, AggregationFn<any>>
53
- >(
54
- options: CreateTableOptions<
55
- any,
56
- TFilterFns,
57
- TSortingFns,
58
- TAggregationFns,
59
- TGenerics
60
- >
61
- ) => Table<
62
- Overwrite<
63
- TGenerics,
64
- {
65
- FilterFns: IfDefined<TFilterFns, TGenerics['FilterFns']>
66
- SortingFns: IfDefined<TSortingFns, TGenerics['SortingFns']>
67
- AggregationFns: IfDefined<TAggregationFns, TGenerics['AggregationFns']>
68
- }
69
- >
70
- >
71
- createGroup: (
72
- column: Overwrite<
73
- | Overwrite<
74
- ColumnDef<any>,
75
- {
76
- header: string
77
- id?: string
78
- }
79
- >
80
- | Overwrite<
81
- ColumnDef<any>,
82
- {
83
- id: string
84
- header?: string | ((...any: any) => any)
85
- }
86
- >,
87
- {
88
- accessorFn?: never
89
- accessorKey?: never
90
- columns?: ColumnDef<any>[]
91
- }
92
- >
93
- ) => ColumnDef<TGenerics>
94
- createDisplayColumn: (
95
- column: Omit<ColumnDef<TGenerics>, 'columns'>
96
- ) => ColumnDef<TGenerics>
97
- createDataColumn: <
98
- TAccessor extends AccessorFn<TGenerics['Row']> | keyof TGenerics['Row']
99
- >(
100
- accessor: TAccessor,
101
- column: Overwrite<
102
- TAccessor extends (...args: any[]) => any
103
- ? // Accessor Fn
104
- ColumnDef<Overwrite<TGenerics, { Value: ReturnType<TAccessor> }>>
105
- : TAccessor extends keyof TGenerics['Row']
106
- ? // Accessor Key
107
- Overwrite<
108
- ColumnDef<
109
- Overwrite<TGenerics, { Value: TGenerics['Row'][TAccessor] }>
110
- >,
111
- {
112
- id?: string
113
- }
114
- >
115
- : never,
116
- {
117
- accessorFn?: never
118
- accessorKey?: never
119
- columns?: ColumnDef<any>[]
120
- }
121
- >
122
- ) => ColumnDef<TGenerics>
123
- createOptions: (options: TableOptions<TGenerics>) => TableOptions<TGenerics>
124
- }
125
-
126
- //
127
-
128
- export function createTableFactory<TRenderer extends AnyRender>(opts: {
129
- render: TRenderer
130
- }): () => Table<{ Renderer: TRenderer; Rendered: ReturnType<TRenderer> }> {
131
- return () => createTable(undefined, undefined, opts)
132
- }
133
-
134
- // A lot of returns in here are `as any` for a reason. Unless you
135
- // can find a better way to do this, then don't worry about them
136
- function createTable<TGenerics extends TableGenerics>(
137
- _?: undefined,
138
- __?: undefined,
139
- options?: CreateTableOptions<any, any, any, any, TGenerics>
140
- ): Table<TGenerics> {
141
- const table: Table<TGenerics> = {
142
- generics: undefined!,
143
- options: options ?? {
144
- render: (() => {
145
- throw new Error('')
146
- })(),
147
- },
148
- // setGenerics: () => table as any,
149
- setRowType: () => table as any,
150
- setTableMetaType: () => table as any,
151
- setColumnMetaType: () => table as any,
152
- setFilterMetaType: () => table as any,
153
- setOptions: newOptions =>
154
- createTable(_, __, {
155
- ...options,
156
- ...newOptions,
157
- } as any),
158
- createDisplayColumn: column => ({ ...column, columnDefType: 'display' }),
159
- createGroup: column => ({ ...column, columnDefType: 'group' } as any),
160
- createDataColumn: (accessor, column): any => {
161
- column = {
162
- ...column,
163
- columnDefType: 'data',
164
- id: column.id,
165
- }
166
-
167
- if (typeof accessor === 'string') {
168
- return {
169
- ...column,
170
- id: column.id ?? accessor,
171
- accessorKey: accessor,
172
- }
173
- }
174
-
175
- if (typeof accessor === 'function') {
176
- return {
177
- ...column,
178
- accessorFn: accessor,
179
- }
180
- }
181
-
182
- throw new Error('Invalid accessor')
183
- },
184
- createOptions: options => options,
185
- }
186
-
187
- return table
188
- }