@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.
- package/build/cjs/core/cell.js +13 -13
- package/build/cjs/core/cell.js.map +1 -1
- package/build/cjs/core/column.js +20 -21
- package/build/cjs/core/column.js.map +1 -1
- package/build/cjs/core/headers.js +63 -68
- package/build/cjs/core/headers.js.map +1 -1
- package/build/cjs/core/row.js +16 -11
- package/build/cjs/core/row.js.map +1 -1
- package/build/cjs/core/{instance.js → table.js} +46 -57
- package/build/cjs/core/table.js.map +1 -0
- package/build/cjs/features/ColumnSizing.js +36 -36
- package/build/cjs/features/ColumnSizing.js.map +1 -1
- package/build/cjs/features/Expanding.js +34 -34
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Filters.js +46 -52
- package/build/cjs/features/Filters.js.map +1 -1
- package/build/cjs/features/Grouping.js +24 -49
- package/build/cjs/features/Grouping.js.map +1 -1
- package/build/cjs/features/Ordering.js +8 -8
- package/build/cjs/features/Ordering.js.map +1 -1
- package/build/cjs/features/Pagination.js +37 -37
- package/build/cjs/features/Pagination.js.map +1 -1
- package/build/cjs/features/Pinning.js +33 -33
- package/build/cjs/features/Pinning.js.map +1 -1
- package/build/cjs/features/RowSelection.js +67 -67
- package/build/cjs/features/RowSelection.js.map +1 -1
- package/build/cjs/features/Sorting.js +36 -40
- package/build/cjs/features/Sorting.js.map +1 -1
- package/build/cjs/features/Visibility.js +30 -30
- package/build/cjs/features/Visibility.js.map +1 -1
- package/build/cjs/index.js +2 -4
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/utils/filterRowsUtils.js +8 -8
- package/build/cjs/utils/filterRowsUtils.js.map +1 -1
- package/build/cjs/utils/getCoreRowModel.js +8 -8
- package/build/cjs/utils/getCoreRowModel.js.map +1 -1
- package/build/cjs/utils/getExpandedRowModel.js +4 -4
- package/build/cjs/utils/getExpandedRowModel.js.map +1 -1
- package/build/cjs/utils/getFacetedMinMaxValues.js +3 -3
- package/build/cjs/utils/getFacetedMinMaxValues.js.map +1 -1
- package/build/cjs/utils/getFacetedRowModel.js +4 -4
- package/build/cjs/utils/getFacetedRowModel.js.map +1 -1
- package/build/cjs/utils/getFacetedUniqueValues.js +3 -3
- package/build/cjs/utils/getFacetedUniqueValues.js.map +1 -1
- package/build/cjs/utils/getFilteredRowModel.js +8 -8
- package/build/cjs/utils/getFilteredRowModel.js.map +1 -1
- package/build/cjs/utils/getGroupedRowModel.js +9 -9
- package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
- package/build/cjs/utils/getPaginationRowModel.js +4 -4
- package/build/cjs/utils/getPaginationRowModel.js.map +1 -1
- package/build/cjs/utils/getSortedRowModel.js +7 -7
- package/build/cjs/utils/getSortedRowModel.js.map +1 -1
- package/build/cjs/utils.js +2 -2
- package/build/cjs/utils.js.map +1 -1
- package/build/esm/index.js +567 -670
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +1092 -0
- package/build/types/index.d.ts +759 -0
- package/build/umd/index.development.js +567 -671
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +2 -2
- package/src/core/cell.ts +34 -28
- package/src/core/column.ts +83 -72
- package/src/core/headers.ts +118 -149
- package/src/core/row.ts +31 -25
- package/src/core/{instance.ts → table.ts} +85 -116
- package/src/features/ColumnSizing.ts +45 -47
- package/src/features/Expanding.ts +53 -59
- package/src/features/Filters.ts +112 -132
- package/src/features/Grouping.ts +63 -112
- package/src/features/Ordering.ts +19 -21
- package/src/features/Pagination.ts +54 -55
- package/src/features/Pinning.ts +49 -61
- package/src/features/RowSelection.ts +97 -108
- package/src/features/Sorting.ts +57 -72
- package/src/features/Visibility.ts +48 -48
- package/src/index.ts +1 -2
- package/src/types.ts +64 -69
- package/src/utils/filterRowsUtils.ts +33 -28
- package/src/utils/getCoreRowModel.ts +22 -22
- package/src/utils/getExpandedRowModel.ts +15 -15
- package/src/utils/getFacetedMinMaxValues.ts +6 -6
- package/src/utils/getFacetedRowModel.ts +12 -12
- package/src/utils/getFacetedUniqueValues.ts +6 -6
- package/src/utils/getFilteredRowModel.ts +17 -17
- package/src/utils/getGroupedRowModel.ts +18 -21
- package/src/utils/getPaginationRowModel.ts +10 -13
- package/src/utils/getSortedRowModel.ts +14 -14
- package/src/utils.ts +8 -2
- package/build/cjs/core/instance.js.map +0 -1
- package/build/cjs/createTable.js +0 -72
- package/build/cjs/createTable.js.map +0 -1
- package/src/createTable.ts +0 -188
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { createRow } from '../core/row'
|
|
2
|
-
import {
|
|
2
|
+
import { Table, Row, RowModel, TableGenerics, RowData } from '../types'
|
|
3
3
|
import { flattenBy, memo } from '../utils'
|
|
4
4
|
|
|
5
|
-
export function getGroupedRowModel<
|
|
6
|
-
|
|
7
|
-
) => () => RowModel<
|
|
8
|
-
return
|
|
5
|
+
export function getGroupedRowModel<TData extends RowData>(): (
|
|
6
|
+
table: Table<TData>
|
|
7
|
+
) => () => RowModel<TData> {
|
|
8
|
+
return table =>
|
|
9
9
|
memo(
|
|
10
|
-
() => [
|
|
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
|
-
|
|
18
|
+
table.getColumn(columnId)
|
|
19
19
|
)
|
|
20
20
|
|
|
21
|
-
const groupedFlatRows: Row<
|
|
22
|
-
const groupedRowsById: Record<string, Row<
|
|
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<
|
|
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(
|
|
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 =
|
|
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: () =>
|
|
141
|
+
debug: () => table.options.debugAll ?? table.options.debugTable,
|
|
142
142
|
onChange: () => {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
143
|
+
table._queue(() => {
|
|
144
|
+
table._autoResetExpanded()
|
|
145
|
+
table._autoResetPageIndex()
|
|
146
146
|
})
|
|
147
147
|
},
|
|
148
148
|
}
|
|
149
149
|
)
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
-
function groupBy<
|
|
153
|
-
|
|
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 {
|
|
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<
|
|
5
|
+
export function getPaginationRowModel<TData extends RowData>(opts?: {
|
|
6
6
|
initialSync: boolean
|
|
7
|
-
}): (
|
|
8
|
-
return
|
|
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<
|
|
23
|
+
let paginatedRowModel: RowModel<TData>
|
|
27
24
|
|
|
28
|
-
if (!
|
|
25
|
+
if (!table.options.paginateExpandedRows) {
|
|
29
26
|
paginatedRowModel = expandRows(
|
|
30
27
|
{
|
|
31
28
|
rows,
|
|
32
29
|
flatRows,
|
|
33
30
|
rowsById,
|
|
34
31
|
},
|
|
35
|
-
|
|
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<
|
|
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: () =>
|
|
57
|
+
debug: () => table.options.debugAll ?? table.options.debugTable,
|
|
61
58
|
}
|
|
62
59
|
)
|
|
63
60
|
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import {
|
|
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<
|
|
6
|
-
|
|
7
|
-
) => () => RowModel<
|
|
8
|
-
return
|
|
5
|
+
export function getSortedRowModel<TData extends RowData>(): (
|
|
6
|
+
table: Table<TData>
|
|
7
|
+
) => () => RowModel<TData> {
|
|
8
|
+
return table =>
|
|
9
9
|
memo(
|
|
10
|
-
() => [
|
|
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 =
|
|
16
|
+
const sortingState = table.getState().sorting
|
|
17
17
|
|
|
18
|
-
const sortedFlatRows: Row<
|
|
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
|
-
|
|
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<
|
|
30
|
+
sortingFn: SortingFn<TData>
|
|
31
31
|
}
|
|
32
32
|
> = {}
|
|
33
33
|
|
|
34
34
|
availableSorting.forEach(sortEntry => {
|
|
35
|
-
const column =
|
|
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<
|
|
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: () =>
|
|
110
|
+
debug: () => table.options.debugAll ?? table.options.debugTable,
|
|
111
111
|
onChange: () => {
|
|
112
|
-
|
|
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,
|
|
30
|
+
export function makeStateUpdater(key: keyof TableState, table: unknown) {
|
|
25
31
|
return (updater: Updater<any>) => {
|
|
26
|
-
;(
|
|
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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"}
|
package/build/cjs/createTable.js
DELETED
|
@@ -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;;;;"}
|
package/src/createTable.ts
DELETED
|
@@ -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
|
-
}
|