@tanstack/table-core 9.0.0-alpha.0 → 9.0.0-alpha.10
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/dist/cjs/aggregationFns.cjs +4 -8
- package/dist/cjs/aggregationFns.cjs.map +1 -1
- package/dist/cjs/core/cell.cjs +3 -3
- package/dist/cjs/core/cell.cjs.map +1 -1
- package/dist/cjs/core/cell.d.cts +1 -1
- package/dist/cjs/core/column.cjs +3 -3
- package/dist/cjs/core/column.cjs.map +1 -1
- package/dist/cjs/core/column.d.cts +1 -1
- package/dist/cjs/core/headers.cjs +5 -5
- package/dist/cjs/core/headers.cjs.map +1 -1
- package/dist/cjs/core/row.cjs +5 -6
- package/dist/cjs/core/row.cjs.map +1 -1
- package/dist/cjs/core/row.d.cts +1 -1
- package/dist/cjs/core/table.cjs +11 -7
- package/dist/cjs/core/table.cjs.map +1 -1
- package/dist/cjs/core/table.d.cts +9 -1
- package/dist/cjs/features/ColumnFaceting.cjs +1 -1
- package/dist/cjs/features/ColumnFaceting.cjs.map +1 -1
- package/dist/cjs/features/ColumnFiltering.cjs +6 -6
- package/dist/cjs/features/ColumnFiltering.cjs.map +1 -1
- package/dist/cjs/features/ColumnGrouping.cjs +8 -9
- package/dist/cjs/features/ColumnGrouping.cjs.map +1 -1
- package/dist/cjs/features/ColumnOrdering.cjs +4 -4
- package/dist/cjs/features/ColumnOrdering.cjs.map +1 -1
- package/dist/cjs/features/ColumnPinning.cjs +5 -5
- package/dist/cjs/features/ColumnPinning.cjs.map +1 -1
- package/dist/cjs/features/ColumnSizing.cjs +7 -8
- package/dist/cjs/features/ColumnSizing.cjs.map +1 -1
- package/dist/cjs/features/ColumnVisibility.cjs +5 -5
- package/dist/cjs/features/ColumnVisibility.cjs.map +1 -1
- package/dist/cjs/features/GlobalFaceting.cjs +1 -1
- package/dist/cjs/features/GlobalFaceting.cjs.map +1 -1
- package/dist/cjs/features/GlobalFiltering.cjs +4 -4
- package/dist/cjs/features/GlobalFiltering.cjs.map +1 -1
- package/dist/cjs/features/RowExpanding.cjs +6 -8
- package/dist/cjs/features/RowExpanding.cjs.map +1 -1
- package/dist/cjs/features/RowPagination.cjs +4 -5
- package/dist/cjs/features/RowPagination.cjs.map +1 -1
- package/dist/cjs/features/RowPinning.cjs +31 -32
- package/dist/cjs/features/RowPinning.cjs.map +1 -1
- package/dist/cjs/features/RowPinning.d.cts +1 -1
- package/dist/cjs/features/RowSelection.cjs +6 -8
- package/dist/cjs/features/RowSelection.cjs.map +1 -1
- package/dist/cjs/features/RowSorting.cjs +6 -7
- package/dist/cjs/features/RowSorting.cjs.map +1 -1
- package/dist/cjs/filterFns.cjs.map +1 -1
- package/dist/cjs/index.cjs +5 -4
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/types.d.cts +8 -8
- package/dist/cjs/utils/filterRowsUtils.cjs +2 -2
- package/dist/cjs/utils/filterRowsUtils.cjs.map +1 -1
- package/dist/cjs/utils/getCoreRowModel.cjs +1 -1
- package/dist/cjs/utils/getCoreRowModel.cjs.map +1 -1
- package/dist/cjs/utils/getFacetedMinMaxValues.cjs +1 -2
- package/dist/cjs/utils/getFacetedMinMaxValues.cjs.map +1 -1
- package/dist/cjs/utils/getFacetedUniqueValues.cjs +1 -2
- package/dist/cjs/utils/getFacetedUniqueValues.cjs.map +1 -1
- package/dist/cjs/utils/getGroupedRowModel.cjs +1 -1
- package/dist/cjs/utils/getGroupedRowModel.cjs.map +1 -1
- package/dist/cjs/utils/getSortedRowModel.cjs +3 -6
- package/dist/cjs/utils/getSortedRowModel.cjs.map +1 -1
- package/dist/cjs/utils.cjs +2 -4
- package/dist/cjs/utils.cjs.map +1 -1
- package/dist/esm/aggregationFns.js +4 -8
- package/dist/esm/aggregationFns.js.map +1 -1
- package/dist/esm/core/cell.d.ts +1 -1
- package/dist/esm/core/cell.js +3 -3
- package/dist/esm/core/cell.js.map +1 -1
- package/dist/esm/core/column.d.ts +1 -1
- package/dist/esm/core/column.js +3 -3
- package/dist/esm/core/column.js.map +1 -1
- package/dist/esm/core/headers.js +5 -5
- package/dist/esm/core/headers.js.map +1 -1
- package/dist/esm/core/row.d.ts +1 -1
- package/dist/esm/core/row.js +6 -7
- package/dist/esm/core/row.js.map +1 -1
- package/dist/esm/core/table.d.ts +9 -1
- package/dist/esm/core/table.js +12 -8
- package/dist/esm/core/table.js.map +1 -1
- package/dist/esm/features/ColumnFaceting.js +1 -1
- package/dist/esm/features/ColumnFaceting.js.map +1 -1
- package/dist/esm/features/ColumnFiltering.js +6 -6
- package/dist/esm/features/ColumnFiltering.js.map +1 -1
- package/dist/esm/features/ColumnGrouping.js +8 -9
- package/dist/esm/features/ColumnGrouping.js.map +1 -1
- package/dist/esm/features/ColumnOrdering.js +4 -4
- package/dist/esm/features/ColumnOrdering.js.map +1 -1
- package/dist/esm/features/ColumnPinning.js +5 -5
- package/dist/esm/features/ColumnPinning.js.map +1 -1
- package/dist/esm/features/ColumnSizing.js +7 -8
- package/dist/esm/features/ColumnSizing.js.map +1 -1
- package/dist/esm/features/ColumnVisibility.js +5 -5
- package/dist/esm/features/ColumnVisibility.js.map +1 -1
- package/dist/esm/features/GlobalFaceting.js +1 -1
- package/dist/esm/features/GlobalFaceting.js.map +1 -1
- package/dist/esm/features/GlobalFiltering.js +4 -4
- package/dist/esm/features/GlobalFiltering.js.map +1 -1
- package/dist/esm/features/RowExpanding.js +6 -8
- package/dist/esm/features/RowExpanding.js.map +1 -1
- package/dist/esm/features/RowPagination.js +4 -5
- package/dist/esm/features/RowPagination.js.map +1 -1
- package/dist/esm/features/RowPinning.d.ts +1 -1
- package/dist/esm/features/RowPinning.js +31 -32
- package/dist/esm/features/RowPinning.js.map +1 -1
- package/dist/esm/features/RowSelection.js +6 -8
- package/dist/esm/features/RowSelection.js.map +1 -1
- package/dist/esm/features/RowSorting.js +6 -7
- package/dist/esm/features/RowSorting.js.map +1 -1
- package/dist/esm/filterFns.js.map +1 -1
- package/dist/esm/index.js +10 -9
- package/dist/esm/types.d.ts +8 -8
- package/dist/esm/utils/filterRowsUtils.js +3 -3
- package/dist/esm/utils/filterRowsUtils.js.map +1 -1
- package/dist/esm/utils/getCoreRowModel.js +2 -2
- package/dist/esm/utils/getCoreRowModel.js.map +1 -1
- package/dist/esm/utils/getFacetedMinMaxValues.js +1 -2
- package/dist/esm/utils/getFacetedMinMaxValues.js.map +1 -1
- package/dist/esm/utils/getFacetedUniqueValues.js +1 -2
- package/dist/esm/utils/getFacetedUniqueValues.js.map +1 -1
- package/dist/esm/utils/getGroupedRowModel.js +2 -2
- package/dist/esm/utils/getGroupedRowModel.js.map +1 -1
- package/dist/esm/utils/getSortedRowModel.js +3 -6
- package/dist/esm/utils/getSortedRowModel.js.map +1 -1
- package/dist/esm/utils.js +2 -4
- package/dist/esm/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/core/cell.ts +2 -2
- package/src/core/column.ts +2 -2
- package/src/core/headers.ts +5 -5
- package/src/core/row.ts +4 -4
- package/src/core/table.ts +43 -7
- package/src/features/ColumnFaceting.ts +1 -1
- package/src/features/ColumnFiltering.ts +6 -6
- package/src/features/ColumnGrouping.ts +7 -7
- package/src/features/ColumnOrdering.ts +4 -4
- package/src/features/ColumnPinning.ts +5 -5
- package/src/features/ColumnSizing.ts +6 -6
- package/src/features/ColumnVisibility.ts +5 -5
- package/src/features/GlobalFaceting.ts +1 -1
- package/src/features/GlobalFiltering.ts +4 -4
- package/src/features/RowExpanding.ts +4 -4
- package/src/features/RowPagination.ts +3 -3
- package/src/features/RowPinning.ts +39 -35
- package/src/features/RowSelection.ts +4 -4
- package/src/features/RowSorting.ts +5 -5
- package/src/filterFns.ts +2 -2
- package/src/types.ts +8 -8
- package/src/utils/filterRowsUtils.ts +3 -3
- package/src/utils/getCoreRowModel.ts +2 -2
- package/src/utils/getGroupedRowModel.ts +2 -2
- package/src/utils/getSortedRowModel.ts +2 -2
- package/src/utils.ts +6 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterRowsUtils.js","sources":["../../../src/utils/filterRowsUtils.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"filterRowsUtils.js","sources":["../../../src/utils/filterRowsUtils.ts"],"sourcesContent":["import { _createRow } from '../core/row'\nimport { Row, RowModel, Table, RowData } from '../types'\n\nexport function filterRows<TData extends RowData>(\n rows: Row<TData>[],\n filterRowImpl: (row: Row<TData>) => any,\n table: Table<TData>\n) {\n if (table.options.filterFromLeafRows) {\n return filterRowModelFromLeafs(rows, filterRowImpl, table)\n }\n\n return filterRowModelFromRoot(rows, filterRowImpl, table)\n}\n\nfunction filterRowModelFromLeafs<TData extends RowData>(\n rowsToFilter: Row<TData>[],\n filterRow: (row: Row<TData>) => Row<TData>[],\n table: Table<TData>\n): RowModel<TData> {\n const newFilteredFlatRows: Row<TData>[] = []\n const newFilteredRowsById: Record<string, Row<TData>> = {}\n const maxDepth = table.options.maxLeafRowFilterDepth ?? 100\n\n const recurseFilterRows = (rowsToFilter: Row<TData>[], depth = 0) => {\n const rows: Row<TData>[] = []\n\n // Filter from children up first\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i]!\n\n const newRow = _createRow(\n table,\n row.id,\n row.original,\n row.index,\n row.depth,\n undefined,\n row.parentId\n )\n newRow.columnFilters = row.columnFilters\n\n if (row.subRows?.length && depth < maxDepth) {\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1)\n row = newRow\n\n if (filterRow(row) && !newRow.subRows.length) {\n rows.push(row)\n newFilteredRowsById[row.id] = row\n newFilteredFlatRows.push(row)\n continue\n }\n\n if (filterRow(row) || newRow.subRows.length) {\n rows.push(row)\n newFilteredRowsById[row.id] = row\n newFilteredFlatRows.push(row)\n continue\n }\n } else {\n row = newRow\n if (filterRow(row)) {\n rows.push(row)\n newFilteredRowsById[row.id] = row\n newFilteredFlatRows.push(row)\n }\n }\n }\n\n return rows\n }\n\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById,\n }\n}\n\nfunction filterRowModelFromRoot<TData extends RowData>(\n rowsToFilter: Row<TData>[],\n filterRow: (row: Row<TData>) => any,\n table: Table<TData>\n): RowModel<TData> {\n const newFilteredFlatRows: Row<TData>[] = []\n const newFilteredRowsById: Record<string, Row<TData>> = {}\n const maxDepth = table.options.maxLeafRowFilterDepth ?? 100\n\n // Filters top level and nested rows\n const recurseFilterRows = (rowsToFilter: Row<TData>[], depth = 0) => {\n // Filter from parents downward first\n\n const rows: Row<TData>[] = []\n\n // Apply the filter to any subRows\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i]!\n\n const pass = filterRow(row)\n\n if (pass) {\n if (row.subRows?.length && depth < maxDepth) {\n const newRow = _createRow(\n table,\n row.id,\n row.original,\n row.index,\n row.depth,\n undefined,\n row.parentId\n )\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1)\n row = newRow\n }\n\n rows.push(row)\n newFilteredFlatRows.push(row)\n newFilteredRowsById[row.id] = row\n }\n }\n\n return rows\n }\n\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById,\n }\n}\n"],"names":["rowsToFilter"],"mappings":";AAGgB,SAAA,WACd,MACA,eACA,OACA;AACI,MAAA,MAAM,QAAQ,oBAAoB;AAC7B,WAAA,wBAAwB,MAAM,eAAe,KAAK;AAAA,EAC3D;AAEO,SAAA,uBAAuB,MAAM,eAAe,KAAK;AAC1D;AAEA,SAAS,wBACP,cACA,WACA,OACiB;AACjB,QAAM,sBAAoC,CAAA;AAC1C,QAAM,sBAAkD,CAAA;AAClD,QAAA,WAAW,MAAM,QAAQ,yBAAyB;AAExD,QAAM,oBAAoB,CAACA,eAA4B,QAAQ,MAAM;;AACnE,UAAM,OAAqB,CAAA;AAG3B,aAAS,IAAI,GAAG,IAAIA,cAAa,QAAQ,KAAK;AACxC,UAAA,MAAMA,cAAa,CAAC;AAExB,YAAM,SAAS;AAAA,QACb;AAAA,QACA,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ;AAAA,QACA,IAAI;AAAA,MAAA;AAEN,aAAO,gBAAgB,IAAI;AAE3B,YAAI,SAAI,YAAJ,mBAAa,WAAU,QAAQ,UAAU;AAC3C,eAAO,UAAU,kBAAkB,IAAI,SAAS,QAAQ,CAAC;AACnD,cAAA;AAEN,YAAI,UAAU,GAAG,KAAK,CAAC,OAAO,QAAQ,QAAQ;AAC5C,eAAK,KAAK,GAAG;AACO,8BAAA,IAAI,EAAE,IAAI;AAC9B,8BAAoB,KAAK,GAAG;AAC5B;AAAA,QACF;AAEA,YAAI,UAAU,GAAG,KAAK,OAAO,QAAQ,QAAQ;AAC3C,eAAK,KAAK,GAAG;AACO,8BAAA,IAAI,EAAE,IAAI;AAC9B,8BAAoB,KAAK,GAAG;AAC5B;AAAA,QACF;AAAA,MAAA,OACK;AACC,cAAA;AACF,YAAA,UAAU,GAAG,GAAG;AAClB,eAAK,KAAK,GAAG;AACO,8BAAA,IAAI,EAAE,IAAI;AAC9B,8BAAoB,KAAK,GAAG;AAAA,QAC9B;AAAA,MACF;AAAA,IACF;AAEO,WAAA;AAAA,EAAA;AAGF,SAAA;AAAA,IACL,MAAM,kBAAkB,YAAY;AAAA,IACpC,UAAU;AAAA,IACV,UAAU;AAAA,EAAA;AAEd;AAEA,SAAS,uBACP,cACA,WACA,OACiB;AACjB,QAAM,sBAAoC,CAAA;AAC1C,QAAM,sBAAkD,CAAA;AAClD,QAAA,WAAW,MAAM,QAAQ,yBAAyB;AAGxD,QAAM,oBAAoB,CAACA,eAA4B,QAAQ,MAAM;;AAGnE,UAAM,OAAqB,CAAA;AAG3B,aAAS,IAAI,GAAG,IAAIA,cAAa,QAAQ,KAAK;AACxC,UAAA,MAAMA,cAAa,CAAC;AAElB,YAAA,OAAO,UAAU,GAAG;AAE1B,UAAI,MAAM;AACR,cAAI,SAAI,YAAJ,mBAAa,WAAU,QAAQ,UAAU;AAC3C,gBAAM,SAAS;AAAA,YACb;AAAA,YACA,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ;AAAA,YACA,IAAI;AAAA,UAAA;AAEN,iBAAO,UAAU,kBAAkB,IAAI,SAAS,QAAQ,CAAC;AACnD,gBAAA;AAAA,QACR;AAEA,aAAK,KAAK,GAAG;AACb,4BAAoB,KAAK,GAAG;AACR,4BAAA,IAAI,EAAE,IAAI;AAAA,MAChC;AAAA,IACF;AAEO,WAAA;AAAA,EAAA;AAGF,SAAA;AAAA,IACL,MAAM,kBAAkB,YAAY;AAAA,IACpC,UAAU;AAAA,IACV,UAAU;AAAA,EAAA;AAEd;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { _createRow } from "../core/row.js";
|
|
2
2
|
import { memo, getMemoOptions } from "../utils.js";
|
|
3
3
|
function getCoreRowModel() {
|
|
4
4
|
return (table) => memo(
|
|
@@ -13,7 +13,7 @@ function getCoreRowModel() {
|
|
|
13
13
|
var _a;
|
|
14
14
|
const rows = [];
|
|
15
15
|
for (let i = 0; i < originalRows.length; i++) {
|
|
16
|
-
const row =
|
|
16
|
+
const row = _createRow(
|
|
17
17
|
table,
|
|
18
18
|
table._getRowId(originalRows[i], i, parentRow),
|
|
19
19
|
originalRows[i],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getCoreRowModel.js","sources":["../../../src/utils/getCoreRowModel.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"getCoreRowModel.js","sources":["../../../src/utils/getCoreRowModel.ts"],"sourcesContent":["import { _createRow } from '../core/row'\nimport { Table, Row, RowModel, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\n\nexport function getCoreRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [table.options.data],\n (\n data\n ): {\n rows: Row<TData>[]\n flatRows: Row<TData>[]\n rowsById: Record<string, Row<TData>>\n } => {\n const rowModel: RowModel<TData> = {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n\n const accessRows = (\n originalRows: TData[],\n depth = 0,\n parentRow?: Row<TData>\n ): Row<TData>[] => {\n const rows = [] as Row<TData>[]\n\n for (let i = 0; i < originalRows.length; i++) {\n // This could be an expensive check at scale, so we should move it somewhere else, but where?\n // if (!id) {\n // if (process.env.NODE_ENV !== 'production') {\n // throw new Error(`getRowId expected an ID, but got ${id}`)\n // }\n // }\n\n // Make the row\n const row = _createRow(\n table,\n table._getRowId(originalRows[i]!, i, parentRow),\n originalRows[i]!,\n i,\n depth,\n undefined,\n parentRow?.id\n )\n\n // Keep track of every row in a flat array\n rowModel.flatRows.push(row)\n // Also keep track of every row by its ID\n rowModel.rowsById[row.id] = row\n // Push table row into parent\n rows.push(row)\n\n // Get the original subrows\n if (table.options.getSubRows) {\n row.originalSubRows = table.options.getSubRows(\n originalRows[i]!,\n i\n )\n\n // Then recursively access them\n if (row.originalSubRows?.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row)\n }\n }\n }\n\n return rows\n }\n\n rowModel.rows = accessRows(data)\n\n return rowModel\n },\n getMemoOptions(table.options, 'debugTable', 'getRowModel', () =>\n table._autoResetPageIndex()\n )\n )\n}\n"],"names":[],"mappings":";;AAIO,SAAS,kBAEW;AACzB,SAAO,CACL,UAAA;AAAA,IACE,MAAM,CAAC,MAAM,QAAQ,IAAI;AAAA,IACzB,CACE,SAKG;AACH,YAAM,WAA4B;AAAA,QAChC,MAAM,CAAC;AAAA,QACP,UAAU,CAAC;AAAA,QACX,UAAU,CAAC;AAAA,MAAA;AAGb,YAAM,aAAa,CACjB,cACA,QAAQ,GACR,cACiB;;AACjB,cAAM,OAAO,CAAA;AAEb,iBAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAS5C,gBAAM,MAAM;AAAA,YACV;AAAA,YACA,MAAM,UAAU,aAAa,CAAC,GAAI,GAAG,SAAS;AAAA,YAC9C,aAAa,CAAC;AAAA,YACd;AAAA,YACA;AAAA,YACA;AAAA,YACA,uCAAW;AAAA,UAAA;AAIJ,mBAAA,SAAS,KAAK,GAAG;AAEjB,mBAAA,SAAS,IAAI,EAAE,IAAI;AAE5B,eAAK,KAAK,GAAG;AAGT,cAAA,MAAM,QAAQ,YAAY;AACxB,gBAAA,kBAAkB,MAAM,QAAQ;AAAA,cAClC,aAAa,CAAC;AAAA,cACd;AAAA,YAAA;AAIE,iBAAA,SAAI,oBAAJ,mBAAqB,QAAQ;AAC/B,kBAAI,UAAU,WAAW,IAAI,iBAAiB,QAAQ,GAAG,GAAG;AAAA,YAC9D;AAAA,UACF;AAAA,QACF;AAEO,eAAA;AAAA,MAAA;AAGA,eAAA,OAAO,WAAW,IAAI;AAExB,aAAA;AAAA,IACT;AAAA,IACA;AAAA,MAAe,MAAM;AAAA,MAAS;AAAA,MAAc;AAAA,MAAe,MACzD,MAAM,oBAAoB;AAAA,IAC5B;AAAA,EAAA;AAEN;"}
|
|
@@ -7,8 +7,7 @@ function getFacetedMinMaxValues() {
|
|
|
7
7
|
},
|
|
8
8
|
(facetedRowModel) => {
|
|
9
9
|
var _a;
|
|
10
|
-
if (!facetedRowModel)
|
|
11
|
-
return void 0;
|
|
10
|
+
if (!facetedRowModel) return void 0;
|
|
12
11
|
const firstValue = (_a = facetedRowModel.flatRows[0]) == null ? void 0 : _a.getUniqueValues(columnId);
|
|
13
12
|
if (typeof firstValue === "undefined") {
|
|
14
13
|
return void 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFacetedMinMaxValues.js","sources":["../../../src/utils/getFacetedMinMaxValues.ts"],"sourcesContent":["import { Table, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\n\nexport function getFacetedMinMaxValues<TData extends RowData>(): (\n table: Table<TData>,\n columnId: string\n) => () => undefined | [number, number] {\n return (table, columnId) =>\n memo(\n () => [table.getColumn(columnId)?.getFacetedRowModel()],\n facetedRowModel => {\n if (!facetedRowModel) return undefined\n\n const firstValue =\n facetedRowModel.flatRows[0]?.getUniqueValues(columnId)\n\n if (typeof firstValue === 'undefined') {\n return undefined\n }\n\n let facetedMinMaxValues: [any, any] = [firstValue, firstValue]\n\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values =\n facetedRowModel.flatRows[i]!.getUniqueValues<number>(columnId)\n\n for (let j = 0; j < values.length; j++) {\n const value = values[j]!\n\n if (value < facetedMinMaxValues[0]) {\n facetedMinMaxValues[0] = value\n } else if (value > facetedMinMaxValues[1]) {\n facetedMinMaxValues[1] = value\n }\n }\n }\n\n return facetedMinMaxValues\n },\n getMemoOptions(table.options, 'debugTable', 'getFacetedMinMaxValues')\n )\n}\n"],"names":[],"mappings":";AAGO,SAAS,yBAGwB;AAC/B,SAAA,CAAC,OAAO,aACb;AAAA,IACE,MAAA;;AAAM,eAAC,WAAM,UAAU,QAAQ,MAAxB,mBAA2B,oBAAoB;AAAA;AAAA,IACtD,CAAmB,oBAAA;;
|
|
1
|
+
{"version":3,"file":"getFacetedMinMaxValues.js","sources":["../../../src/utils/getFacetedMinMaxValues.ts"],"sourcesContent":["import { Table, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\n\nexport function getFacetedMinMaxValues<TData extends RowData>(): (\n table: Table<TData>,\n columnId: string\n) => () => undefined | [number, number] {\n return (table, columnId) =>\n memo(\n () => [table.getColumn(columnId)?.getFacetedRowModel()],\n facetedRowModel => {\n if (!facetedRowModel) return undefined\n\n const firstValue =\n facetedRowModel.flatRows[0]?.getUniqueValues(columnId)\n\n if (typeof firstValue === 'undefined') {\n return undefined\n }\n\n let facetedMinMaxValues: [any, any] = [firstValue, firstValue]\n\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values =\n facetedRowModel.flatRows[i]!.getUniqueValues<number>(columnId)\n\n for (let j = 0; j < values.length; j++) {\n const value = values[j]!\n\n if (value < facetedMinMaxValues[0]) {\n facetedMinMaxValues[0] = value\n } else if (value > facetedMinMaxValues[1]) {\n facetedMinMaxValues[1] = value\n }\n }\n }\n\n return facetedMinMaxValues\n },\n getMemoOptions(table.options, 'debugTable', 'getFacetedMinMaxValues')\n )\n}\n"],"names":[],"mappings":";AAGO,SAAS,yBAGwB;AAC/B,SAAA,CAAC,OAAO,aACb;AAAA,IACE,MAAA;;AAAM,eAAC,WAAM,UAAU,QAAQ,MAAxB,mBAA2B,oBAAoB;AAAA;AAAA,IACtD,CAAmB,oBAAA;;AACb,UAAA,CAAC,gBAAwB,QAAA;AAE7B,YAAM,cACJ,qBAAgB,SAAS,CAAC,MAA1B,mBAA6B,gBAAgB;AAE3C,UAAA,OAAO,eAAe,aAAa;AAC9B,eAAA;AAAA,MACT;AAEI,UAAA,sBAAkC,CAAC,YAAY,UAAU;AAE7D,eAAS,IAAI,GAAG,IAAI,gBAAgB,SAAS,QAAQ,KAAK;AACxD,cAAM,SACJ,gBAAgB,SAAS,CAAC,EAAG,gBAAwB,QAAQ;AAE/D,iBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AAChC,gBAAA,QAAQ,OAAO,CAAC;AAElB,cAAA,QAAQ,oBAAoB,CAAC,GAAG;AAClC,gCAAoB,CAAC,IAAI;AAAA,UAChB,WAAA,QAAQ,oBAAoB,CAAC,GAAG;AACzC,gCAAoB,CAAC,IAAI;AAAA,UAC3B;AAAA,QACF;AAAA,MACF;AAEO,aAAA;AAAA,IACT;AAAA,IACA,eAAe,MAAM,SAAS,cAAc,wBAAwB;AAAA,EAAA;AAE1E;"}
|
|
@@ -6,8 +6,7 @@ function getFacetedUniqueValues() {
|
|
|
6
6
|
return [(_a = table.getColumn(columnId)) == null ? void 0 : _a.getFacetedRowModel()];
|
|
7
7
|
},
|
|
8
8
|
(facetedRowModel) => {
|
|
9
|
-
if (!facetedRowModel)
|
|
10
|
-
return /* @__PURE__ */ new Map();
|
|
9
|
+
if (!facetedRowModel) return /* @__PURE__ */ new Map();
|
|
11
10
|
let facetedUniqueValues = /* @__PURE__ */ new Map();
|
|
12
11
|
for (let i = 0; i < facetedRowModel.flatRows.length; i++) {
|
|
13
12
|
const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFacetedUniqueValues.js","sources":["../../../src/utils/getFacetedUniqueValues.ts"],"sourcesContent":["import { Table, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\n\nexport function getFacetedUniqueValues<TData extends RowData>(): (\n table: Table<TData>,\n columnId: string\n) => () => Map<any, number> {\n return (table, columnId) =>\n memo(\n () => [table.getColumn(columnId)?.getFacetedRowModel()],\n facetedRowModel => {\n if (!facetedRowModel) return new Map()\n\n let facetedUniqueValues = new Map<any, number>()\n\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values =\n facetedRowModel.flatRows[i]!.getUniqueValues<number>(columnId)\n\n for (let j = 0; j < values.length; j++) {\n const value = values[j]!\n\n if (facetedUniqueValues.has(value)) {\n facetedUniqueValues.set(\n value,\n (facetedUniqueValues.get(value) ?? 0) + 1\n )\n } else {\n facetedUniqueValues.set(value, 1)\n }\n }\n }\n\n return facetedUniqueValues\n },\n getMemoOptions(\n table.options,\n 'debugTable',\n `getFacetedUniqueValues_${columnId}`\n )\n )\n}\n"],"names":[],"mappings":";AAGO,SAAS,yBAGY;AACnB,SAAA,CAAC,OAAO,aACb;AAAA,IACE,MAAA;;AAAM,eAAC,WAAM,UAAU,QAAQ,MAAxB,mBAA2B,oBAAoB;AAAA;AAAA,IACtD,CAAmB,oBAAA;AACjB,UAAI,CAAC
|
|
1
|
+
{"version":3,"file":"getFacetedUniqueValues.js","sources":["../../../src/utils/getFacetedUniqueValues.ts"],"sourcesContent":["import { Table, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\n\nexport function getFacetedUniqueValues<TData extends RowData>(): (\n table: Table<TData>,\n columnId: string\n) => () => Map<any, number> {\n return (table, columnId) =>\n memo(\n () => [table.getColumn(columnId)?.getFacetedRowModel()],\n facetedRowModel => {\n if (!facetedRowModel) return new Map()\n\n let facetedUniqueValues = new Map<any, number>()\n\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values =\n facetedRowModel.flatRows[i]!.getUniqueValues<number>(columnId)\n\n for (let j = 0; j < values.length; j++) {\n const value = values[j]!\n\n if (facetedUniqueValues.has(value)) {\n facetedUniqueValues.set(\n value,\n (facetedUniqueValues.get(value) ?? 0) + 1\n )\n } else {\n facetedUniqueValues.set(value, 1)\n }\n }\n }\n\n return facetedUniqueValues\n },\n getMemoOptions(\n table.options,\n 'debugTable',\n `getFacetedUniqueValues_${columnId}`\n )\n )\n}\n"],"names":[],"mappings":";AAGO,SAAS,yBAGY;AACnB,SAAA,CAAC,OAAO,aACb;AAAA,IACE,MAAA;;AAAM,eAAC,WAAM,UAAU,QAAQ,MAAxB,mBAA2B,oBAAoB;AAAA;AAAA,IACtD,CAAmB,oBAAA;AACjB,UAAI,CAAC,gBAAwB,QAAA,oBAAI;AAE7B,UAAA,0CAA0B;AAE9B,eAAS,IAAI,GAAG,IAAI,gBAAgB,SAAS,QAAQ,KAAK;AACxD,cAAM,SACJ,gBAAgB,SAAS,CAAC,EAAG,gBAAwB,QAAQ;AAE/D,iBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AAChC,gBAAA,QAAQ,OAAO,CAAC;AAElB,cAAA,oBAAoB,IAAI,KAAK,GAAG;AACd,gCAAA;AAAA,cAClB;AAAA,eACC,oBAAoB,IAAI,KAAK,KAAK,KAAK;AAAA,YAAA;AAAA,UAC1C,OACK;AACe,gCAAA,IAAI,OAAO,CAAC;AAAA,UAClC;AAAA,QACF;AAAA,MACF;AAEO,aAAA;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN;AAAA,MACA,0BAA0B,QAAQ;AAAA,IACpC;AAAA,EAAA;AAEN;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { _createRow } from "../core/row.js";
|
|
2
2
|
import { memo, getMemoOptions, flattenBy } from "../utils.js";
|
|
3
3
|
function getGroupedRowModel() {
|
|
4
4
|
return (table) => memo(
|
|
@@ -32,7 +32,7 @@ function getGroupedRowModel() {
|
|
|
32
32
|
id = parentId ? `${parentId}>${id}` : id;
|
|
33
33
|
const subRows = groupUpRecursively(groupedRows2, depth + 1, id);
|
|
34
34
|
const leafRows = depth ? flattenBy(groupedRows2, (row2) => row2.subRows) : groupedRows2;
|
|
35
|
-
const row =
|
|
35
|
+
const row = _createRow(
|
|
36
36
|
table,
|
|
37
37
|
id,
|
|
38
38
|
leafRows[0].original,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getGroupedRowModel.js","sources":["../../../src/utils/getGroupedRowModel.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"getGroupedRowModel.js","sources":["../../../src/utils/getGroupedRowModel.ts"],"sourcesContent":["import { _createRow } from '../core/row'\nimport { Table, Row, RowModel, RowData } from '../types'\nimport { flattenBy, getMemoOptions, memo } from '../utils'\n\nexport function getGroupedRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [table.getState().grouping, table.getPreGroupedRowModel()],\n (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n return rowModel\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId =>\n table.getColumn(columnId)\n )\n\n const groupedFlatRows: Row<TData>[] = []\n const groupedRowsById: Record<string, Row<TData>> = {}\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = (\n rows: Row<TData>[],\n depth = 0,\n parentId?: string\n ) => {\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth\n\n groupedFlatRows.push(row)\n groupedRowsById[row.id] = row\n\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id)\n }\n\n return row\n })\n }\n\n const columnId: string = existingGrouping[depth]!\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId)\n\n // Peform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(\n ([groupingValue, groupedRows], index) => {\n let id = `${columnId}:${groupingValue}`\n id = parentId ? `${parentId}>${id}` : id\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id)\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth\n ? flattenBy(groupedRows, row => row.subRows)\n : groupedRows\n\n const row = _createRow(\n table,\n id,\n leafRows[0]!.original,\n index,\n depth,\n undefined,\n parentId\n )\n\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: (columnId: string) => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId]\n }\n\n if (groupedRows[0]) {\n row._valuesCache[columnId] =\n groupedRows[0].getValue(columnId) ?? undefined\n }\n\n return row._valuesCache[columnId]\n }\n\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId]\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId)\n const aggregateFn = column?.getAggregationFn()\n\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(\n columnId,\n leafRows,\n groupedRows\n )\n\n return row._groupingValuesCache[columnId]\n }\n },\n })\n\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n })\n\n return row\n }\n )\n\n return aggregatedGroupedRows\n }\n\n const groupedRows = groupUpRecursively(rowModel.rows, 0)\n\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n })\n\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById,\n }\n },\n getMemoOptions(table.options, 'debugTable', 'getGroupedRowModel', () => {\n table._queue(() => {\n table._autoResetExpanded()\n table._autoResetPageIndex()\n })\n })\n )\n}\n\nfunction groupBy<TData extends RowData>(rows: Row<TData>[], columnId: string) {\n const groupMap = new Map<any, Row<TData>[]>()\n\n return rows.reduce((map, row) => {\n const resKey = `${row.getGroupingValue(columnId)}`\n const previous = map.get(resKey)\n if (!previous) {\n map.set(resKey, [row])\n } else {\n previous.push(row)\n }\n return map\n }, groupMap)\n}\n"],"names":["groupedRows","row","columnId"],"mappings":"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"}
|
|
@@ -17,8 +17,7 @@ function getSortedRowModel() {
|
|
|
17
17
|
const columnInfoById = {};
|
|
18
18
|
availableSorting.forEach((sortEntry) => {
|
|
19
19
|
const column = table.getColumn(sortEntry.id);
|
|
20
|
-
if (!column)
|
|
21
|
-
return;
|
|
20
|
+
if (!column) return;
|
|
22
21
|
columnInfoById[sortEntry.id] = {
|
|
23
22
|
sortUndefined: column.columnDef.sortUndefined,
|
|
24
23
|
invertSorting: column.columnDef.invertSorting,
|
|
@@ -40,10 +39,8 @@ function getSortedRowModel() {
|
|
|
40
39
|
const aUndefined = aValue === void 0;
|
|
41
40
|
const bUndefined = bValue === void 0;
|
|
42
41
|
if (aUndefined || bUndefined) {
|
|
43
|
-
if (sortUndefined === "first")
|
|
44
|
-
|
|
45
|
-
if (sortUndefined === "last")
|
|
46
|
-
return aUndefined ? 1 : -1;
|
|
42
|
+
if (sortUndefined === "first") return aUndefined ? -1 : 1;
|
|
43
|
+
if (sortUndefined === "last") return aUndefined ? 1 : -1;
|
|
47
44
|
sortInt = aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;
|
|
48
45
|
}
|
|
49
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSortedRowModel.js","sources":["../../../src/utils/getSortedRowModel.ts"],"sourcesContent":["import { Table, Row, RowModel, RowData } from '../types'\nimport { SortingFn } from '../features/RowSorting'\nimport { getMemoOptions, memo } from '../utils'\n\nexport function getSortedRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [table.getState().sorting, table.getPreSortedRowModel()],\n (sorting, rowModel) => {\n if (!rowModel.rows.length || !sorting?.length) {\n return rowModel\n }\n\n const sortingState = table.getState().sorting\n\n const sortedFlatRows: Row<TData>[] = []\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(
|
|
1
|
+
{"version":3,"file":"getSortedRowModel.js","sources":["../../../src/utils/getSortedRowModel.ts"],"sourcesContent":["import { Table, Row, RowModel, RowData } from '../types'\nimport { SortingFn } from '../features/RowSorting'\nimport { getMemoOptions, memo } from '../utils'\n\nexport function getSortedRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [table.getState().sorting, table.getPreSortedRowModel()],\n (sorting, rowModel) => {\n if (!rowModel.rows.length || !sorting?.length) {\n return rowModel\n }\n\n const sortingState = table.getState().sorting\n\n const sortedFlatRows: Row<TData>[] = []\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort =>\n table.getColumn(sort.id)?.getCanSort()\n )\n\n const columnInfoById: Record<\n string,\n {\n sortUndefined?: false | -1 | 1 | 'first' | 'last'\n invertSorting?: boolean\n sortingFn: SortingFn<TData>\n }\n > = {}\n\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id)\n if (!column) return\n\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn(),\n }\n })\n\n const sortData = (rows: Row<TData>[]) => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.map(row => ({ ...row }))\n\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n const sortEntry = availableSorting[i]!\n const columnInfo = columnInfoById[sortEntry.id]!\n const sortUndefined = columnInfo.sortUndefined\n const isDesc = sortEntry?.desc ?? false\n\n let sortInt = 0\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id)\n const bValue = rowB.getValue(sortEntry.id)\n\n const aUndefined = aValue === undefined\n const bUndefined = bValue === undefined\n\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1\n if (sortUndefined === 'last') return aUndefined ? 1 : -1\n sortInt =\n aUndefined && bUndefined\n ? 0\n : aUndefined\n ? sortUndefined\n : -sortUndefined\n }\n }\n\n if (sortInt === 0) {\n sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id)\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1\n }\n\n if (columnInfo.invertSorting) {\n sortInt *= -1\n }\n\n return sortInt\n }\n }\n\n return rowA.index - rowB.index\n })\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n sortedFlatRows.push(row)\n if (row.subRows?.length) {\n row.subRows = sortData(row.subRows)\n }\n })\n\n return sortedData\n }\n\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById,\n }\n },\n getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () =>\n table._autoResetPageIndex()\n )\n )\n}\n"],"names":[],"mappings":";AAIO,SAAS,oBAEW;AACzB,SAAO,CACL,UAAA;AAAA,IACE,MAAM,CAAC,MAAM,SAAA,EAAW,SAAS,MAAM,sBAAsB;AAAA,IAC7D,CAAC,SAAS,aAAa;AACrB,UAAI,CAAC,SAAS,KAAK,UAAU,EAAC,mCAAS,SAAQ;AACtC,eAAA;AAAA,MACT;AAEM,YAAA,eAAe,MAAM,SAAA,EAAW;AAEtC,YAAM,iBAA+B,CAAA;AAGrC,YAAM,mBAAmB,aAAa;AAAA,QAAO,UAC3C;;AAAA,6BAAM,UAAU,KAAK,EAAE,MAAvB,mBAA0B;AAAA;AAAA,MAAW;AAGvC,YAAM,iBAOF,CAAA;AAEJ,uBAAiB,QAAQ,CAAa,cAAA;AACpC,cAAM,SAAS,MAAM,UAAU,UAAU,EAAE;AAC3C,YAAI,CAAC,OAAQ;AAEE,uBAAA,UAAU,EAAE,IAAI;AAAA,UAC7B,eAAe,OAAO,UAAU;AAAA,UAChC,eAAe,OAAO,UAAU;AAAA,UAChC,WAAW,OAAO,aAAa;AAAA,QAAA;AAAA,MACjC,CACD;AAEK,YAAA,WAAW,CAAC,SAAuB;AAGvC,cAAM,aAAa,KAAK,IAAI,UAAQ,EAAE,GAAG,IAAM,EAAA;AAEpC,mBAAA,KAAK,CAAC,MAAM,SAAS;AAC9B,mBAAS,IAAI,GAAG,IAAI,iBAAiB,QAAQ,KAAK,GAAG;AAC7C,kBAAA,YAAY,iBAAiB,CAAC;AAC9B,kBAAA,aAAa,eAAe,UAAU,EAAE;AAC9C,kBAAM,gBAAgB,WAAW;AAC3B,kBAAA,UAAS,uCAAW,SAAQ;AAElC,gBAAI,UAAU;AAGd,gBAAI,eAAe;AACjB,oBAAM,SAAS,KAAK,SAAS,UAAU,EAAE;AACzC,oBAAM,SAAS,KAAK,SAAS,UAAU,EAAE;AAEzC,oBAAM,aAAa,WAAW;AAC9B,oBAAM,aAAa,WAAW;AAE9B,kBAAI,cAAc,YAAY;AAC5B,oBAAI,kBAAkB,QAAgB,QAAA,aAAa,KAAK;AACxD,oBAAI,kBAAkB,OAAe,QAAA,aAAa,IAAI;AACtD,0BACE,cAAc,aACV,IACA,aACE,gBACA,CAAC;AAAA,cACX;AAAA,YACF;AAEA,gBAAI,YAAY,GAAG;AACjB,wBAAU,WAAW,UAAU,MAAM,MAAM,UAAU,EAAE;AAAA,YACzD;AAGA,gBAAI,YAAY,GAAG;AACjB,kBAAI,QAAQ;AACC,2BAAA;AAAA,cACb;AAEA,kBAAI,WAAW,eAAe;AACjB,2BAAA;AAAA,cACb;AAEO,qBAAA;AAAA,YACT;AAAA,UACF;AAEO,iBAAA,KAAK,QAAQ,KAAK;AAAA,QAAA,CAC1B;AAGD,mBAAW,QAAQ,CAAO,QAAA;;AACxB,yBAAe,KAAK,GAAG;AACnB,eAAA,SAAI,YAAJ,mBAAa,QAAQ;AACnB,gBAAA,UAAU,SAAS,IAAI,OAAO;AAAA,UACpC;AAAA,QAAA,CACD;AAEM,eAAA;AAAA,MAAA;AAGF,aAAA;AAAA,QACL,MAAM,SAAS,SAAS,IAAI;AAAA,QAC5B,UAAU;AAAA,QACV,UAAU,SAAS;AAAA,MAAA;AAAA,IAEvB;AAAA,IACA;AAAA,MAAe,MAAM;AAAA,MAAS;AAAA,MAAc;AAAA,MAAqB,MAC/D,MAAM,oBAAoB;AAAA,IAC5B;AAAA,EAAA;AAEN;"}
|
package/dist/esm/utils.js
CHANGED
|
@@ -39,8 +39,7 @@ function memo(getDeps, fn, opts) {
|
|
|
39
39
|
return (depArgs) => {
|
|
40
40
|
var _a;
|
|
41
41
|
let depTime;
|
|
42
|
-
if (opts.key && opts.debug)
|
|
43
|
-
depTime = Date.now();
|
|
42
|
+
if (opts.key && opts.debug) depTime = Date.now();
|
|
44
43
|
const newDeps = getDeps(depArgs);
|
|
45
44
|
const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);
|
|
46
45
|
if (!depsChanged) {
|
|
@@ -48,8 +47,7 @@ function memo(getDeps, fn, opts) {
|
|
|
48
47
|
}
|
|
49
48
|
deps = newDeps;
|
|
50
49
|
let resultTime;
|
|
51
|
-
if (opts.key && opts.debug)
|
|
52
|
-
resultTime = Date.now();
|
|
50
|
+
if (opts.key && opts.debug) resultTime = Date.now();
|
|
53
51
|
result = fn(...newDeps);
|
|
54
52
|
(_a = opts == null ? void 0 : opts.onChange) == null ? void 0 : _a.call(opts, result);
|
|
55
53
|
if (opts.key && opts.debug) {
|
package/dist/esm/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../src/utils.ts"],"sourcesContent":["import { TableOptionsResolved, TableState, Updater } from './types'\n\nexport type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>\nexport type RequiredKeys<T, K extends keyof T> = Omit<T, K> &\n Required<Pick<T, K>>\nexport type Overwrite<T, U extends { [TKey in keyof T]?: any }> = Omit<\n T,\n keyof U\n> &\n U\n\nexport type UnionToIntersection<T> = (\n T extends any ? (x: T) => any : never\n) extends (x: infer R) => any\n ? R\n : never\n\nexport type IsAny<T, Y, N> = 1 extends 0 & T ? Y : N\nexport type IsKnown<T, Y, N> = unknown extends T ? N : Y\n\ntype ComputeRange<\n N extends number,\n Result extends Array<unknown> = [],\n> = Result['length'] extends N\n ? Result\n : ComputeRange<N, [...Result, Result['length']]>\ntype Index40 = ComputeRange<40>[number]\n\n// Is this type a tuple?\ntype IsTuple<T> = T extends readonly any[] & { length: infer Length }\n ? Length extends Index40\n ? T\n : never\n : never\n\n// If this type is a tuple, what indices are allowed?\ntype AllowedIndexes<\n Tuple extends ReadonlyArray<any>,\n Keys extends number = never,\n> = Tuple extends readonly []\n ? Keys\n : Tuple extends readonly [infer _, ...infer Tail]\n ? AllowedIndexes<Tail, Keys | Tail['length']>\n : Keys\n\nexport type DeepKeys<T, TDepth extends any[] = []> = TDepth['length'] extends 5\n ? never\n : unknown extends T\n ? string\n : T extends readonly any[] & IsTuple<T>\n ? AllowedIndexes<T> | DeepKeysPrefix<T, AllowedIndexes<T>, TDepth>\n : T extends any[]\n ? DeepKeys<T[number], [...TDepth, any]>\n : T extends Date\n ? never\n : T extends object\n ? (keyof T & string) | DeepKeysPrefix<T, keyof T, TDepth>\n : never\n\ntype DeepKeysPrefix<\n T,\n TPrefix,\n TDepth extends any[],\n> = TPrefix extends keyof T & (number | string)\n ? `${TPrefix}.${DeepKeys<T[TPrefix], [...TDepth, any]> & string}`\n : never\n\nexport type DeepValue<T, TProp>
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../src/utils.ts"],"sourcesContent":["import { TableOptionsResolved, TableState, Updater } from './types'\n\nexport type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>\nexport type RequiredKeys<T, K extends keyof T> = Omit<T, K> &\n Required<Pick<T, K>>\nexport type Overwrite<T, U extends { [TKey in keyof T]?: any }> = Omit<\n T,\n keyof U\n> &\n U\n\nexport type UnionToIntersection<T> = (\n T extends any ? (x: T) => any : never\n) extends (x: infer R) => any\n ? R\n : never\n\nexport type IsAny<T, Y, N> = 1 extends 0 & T ? Y : N\nexport type IsKnown<T, Y, N> = unknown extends T ? N : Y\n\ntype ComputeRange<\n N extends number,\n Result extends Array<unknown> = [],\n> = Result['length'] extends N\n ? Result\n : ComputeRange<N, [...Result, Result['length']]>\ntype Index40 = ComputeRange<40>[number]\n\n// Is this type a tuple?\ntype IsTuple<T> = T extends readonly any[] & { length: infer Length }\n ? Length extends Index40\n ? T\n : never\n : never\n\n// If this type is a tuple, what indices are allowed?\ntype AllowedIndexes<\n Tuple extends ReadonlyArray<any>,\n Keys extends number = never,\n> = Tuple extends readonly []\n ? Keys\n : Tuple extends readonly [infer _, ...infer Tail]\n ? AllowedIndexes<Tail, Keys | Tail['length']>\n : Keys\n\nexport type DeepKeys<T, TDepth extends any[] = []> = TDepth['length'] extends 5\n ? never\n : unknown extends T\n ? string\n : T extends readonly any[] & IsTuple<T>\n ? AllowedIndexes<T> | DeepKeysPrefix<T, AllowedIndexes<T>, TDepth>\n : T extends any[]\n ? DeepKeys<T[number], [...TDepth, any]>\n : T extends Date\n ? never\n : T extends object\n ? (keyof T & string) | DeepKeysPrefix<T, keyof T, TDepth>\n : never\n\ntype DeepKeysPrefix<\n T,\n TPrefix,\n TDepth extends any[],\n> = TPrefix extends keyof T & (number | string)\n ? `${TPrefix}.${DeepKeys<T[TPrefix], [...TDepth, any]> & string}`\n : never\n\nexport type DeepValue<T, TProp> =\n T extends Record<string | number, any>\n ? TProp extends `${infer TBranch}.${infer TDeepProp}`\n ? DeepValue<T[TBranch], TDeepProp>\n : T[TProp & string]\n : never\n\nexport type NoInfer<T> = [T][T extends any ? 0 : never]\n\nexport type Getter<TValue> = <TTValue = TValue>() => NoInfer<TTValue>\n\n///\n\nexport function functionalUpdate<T>(updater: Updater<T>, input: T): T {\n return typeof updater === 'function'\n ? (updater as (input: T) => T)(input)\n : updater\n}\n\nexport function noop() {\n //\n}\n\nexport function makeStateUpdater<K extends keyof TableState>(\n key: K,\n instance: unknown\n) {\n return (updater: Updater<TableState[K]>) => {\n ;(instance as any).setState(<TTableState>(old: TTableState) => {\n return {\n ...old,\n [key]: functionalUpdate(updater, (old as any)[key]),\n }\n })\n }\n}\n\ntype AnyFunction = (...args: any) => any\n\nexport function isFunction<T extends AnyFunction>(d: any): d is T {\n return d instanceof Function\n}\n\nexport function isNumberArray(d: any): d is number[] {\n return Array.isArray(d) && d.every(val => typeof val === 'number')\n}\n\nexport function flattenBy<TNode>(\n arr: TNode[],\n getChildren: (item: TNode) => TNode[]\n) {\n const flat: TNode[] = []\n\n const recurse = (subArr: TNode[]) => {\n subArr.forEach(item => {\n flat.push(item)\n const children = getChildren(item)\n if (children?.length) {\n recurse(children)\n }\n })\n }\n\n recurse(arr)\n\n return flat\n}\n\nexport function memo<TDeps extends readonly any[], TDepArgs, TResult>(\n getDeps: (depArgs?: TDepArgs) => [...TDeps],\n fn: (...args: NoInfer<[...TDeps]>) => TResult,\n opts: {\n key: any\n debug?: () => any\n onChange?: (result: TResult) => void\n }\n): (depArgs?: TDepArgs) => TResult {\n let deps: any[] = []\n let result: TResult | undefined\n\n return depArgs => {\n let depTime: number\n if (opts.key && opts.debug) depTime = Date.now()\n\n const newDeps = getDeps(depArgs)\n\n const depsChanged =\n newDeps.length !== deps.length ||\n newDeps.some((dep: any, index: number) => deps[index] !== dep)\n\n if (!depsChanged) {\n return result!\n }\n\n deps = newDeps\n\n let resultTime: number\n if (opts.key && opts.debug) resultTime = Date.now()\n\n result = fn(...newDeps)\n opts?.onChange?.(result)\n\n if (opts.key && opts.debug) {\n if (opts?.debug()) {\n const depEndTime = Math.round((Date.now() - depTime!) * 100) / 100\n const resultEndTime = Math.round((Date.now() - resultTime!) * 100) / 100\n const resultFpsPercentage = resultEndTime / 16\n\n const pad = (str: number | string, num: number) => {\n str = String(str)\n while (str.length < num) {\n str = ' ' + str\n }\n return str\n }\n\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts?.key\n )\n }\n }\n\n return result!\n }\n}\n\nexport function getMemoOptions(\n tableOptions: Partial<TableOptionsResolved<any>>,\n debugLevel:\n | 'debugAll'\n | 'debugCells'\n | 'debugTable'\n | 'debugColumns'\n | 'debugRows'\n | 'debugHeaders',\n key: string,\n onChange?: (result: any) => void\n) {\n return {\n debug: () => tableOptions?.debugAll ?? tableOptions[debugLevel],\n key: process.env.NODE_ENV === 'development' && key,\n onChange,\n }\n}\n"],"names":[],"mappings":"AAgFgB,SAAA,iBAAoB,SAAqB,OAAa;AACpE,SAAO,OAAO,YAAY,aACrB,QAA4B,KAAK,IAClC;AACN;AAEO,SAAS,OAAO;AAEvB;AAEgB,SAAA,iBACd,KACA,UACA;AACA,SAAO,CAAC,YAAoC;AACxC,aAAiB,SAAS,CAAc,QAAqB;AACtD,aAAA;AAAA,QACL,GAAG;AAAA,QACH,CAAC,GAAG,GAAG,iBAAiB,SAAU,IAAY,GAAG,CAAC;AAAA,MAAA;AAAA,IACpD,CACD;AAAA,EAAA;AAEL;AAIO,SAAS,WAAkC,GAAgB;AAChE,SAAO,aAAa;AACtB;AAEO,SAAS,cAAc,GAAuB;AAC5C,SAAA,MAAM,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA,QAAO,OAAO,QAAQ,QAAQ;AACnE;AAEgB,SAAA,UACd,KACA,aACA;AACA,QAAM,OAAgB,CAAA;AAEhB,QAAA,UAAU,CAAC,WAAoB;AACnC,WAAO,QAAQ,CAAQ,SAAA;AACrB,WAAK,KAAK,IAAI;AACR,YAAA,WAAW,YAAY,IAAI;AACjC,UAAI,qCAAU,QAAQ;AACpB,gBAAQ,QAAQ;AAAA,MAClB;AAAA,IAAA,CACD;AAAA,EAAA;AAGH,UAAQ,GAAG;AAEJ,SAAA;AACT;AAEgB,SAAA,KACd,SACA,IACA,MAKiC;AACjC,MAAI,OAAc,CAAA;AACd,MAAA;AAEJ,SAAO,CAAW,YAAA;AAnEJ;AAoER,QAAA;AACJ,QAAI,KAAK,OAAO,KAAK,MAAO,WAAU,KAAK;AAErC,UAAA,UAAU,QAAQ,OAAO;AAE/B,UAAM,cACJ,QAAQ,WAAW,KAAK,UACxB,QAAQ,KAAK,CAAC,KAAU,UAAkB,KAAK,KAAK,MAAM,GAAG;AAE/D,QAAI,CAAC,aAAa;AACT,aAAA;AAAA,IACT;AAEO,WAAA;AAEH,QAAA;AACJ,QAAI,KAAK,OAAO,KAAK,MAAO,cAAa,KAAK;AAErC,aAAA,GAAG,GAAG,OAAO;AACtB,uCAAM,aAAN,8BAAiB;AAEb,QAAA,KAAK,OAAO,KAAK,OAAO;AACtB,UAAA,6BAAM,SAAS;AACX,cAAA,aAAa,KAAK,OAAO,KAAK,QAAQ,WAAY,GAAG,IAAI;AACzD,cAAA,gBAAgB,KAAK,OAAO,KAAK,QAAQ,cAAe,GAAG,IAAI;AACrE,cAAM,sBAAsB,gBAAgB;AAEtC,cAAA,MAAM,CAAC,KAAsB,QAAgB;AACjD,gBAAM,OAAO,GAAG;AACT,iBAAA,IAAI,SAAS,KAAK;AACvB,kBAAM,MAAM;AAAA,UACd;AACO,iBAAA;AAAA,QAAA;AAGD,gBAAA;AAAA,UACN,OAAO,IAAI,eAAe,CAAC,CAAC,KAAK,IAAI,YAAY,CAAC,CAAC;AAAA,UACnD;AAAA;AAAA;AAAA,yBAGe,KAAK;AAAA,YAChB;AAAA,YACA,KAAK,IAAI,MAAM,MAAM,qBAAqB,GAAG;AAAA,UAC9C,CAAA;AAAA,UACH,6BAAM;AAAA,QAAA;AAAA,MAEV;AAAA,IACF;AAEO,WAAA;AAAA,EAAA;AAEX;AAEO,SAAS,eACd,cACA,YAOA,KACA,UACA;AACO,SAAA;AAAA,IACL,OAAO,OAAM,6CAAc,aAAY,aAAa,UAAU;AAAA,IAC9D,KAAK,QAAQ,IAAI,aAAa,iBAAiB;AAAA,IAC/C;AAAA,EAAA;AAEJ;"}
|
package/package.json
CHANGED
package/src/core/cell.ts
CHANGED
|
@@ -49,7 +49,7 @@ export interface CoreCell<TData extends RowData, TValue> {
|
|
|
49
49
|
row: Row<TData>
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
export function
|
|
52
|
+
export function _createCell<TData extends RowData, TValue>(
|
|
53
53
|
table: Table<TData>,
|
|
54
54
|
row: Row<TData>,
|
|
55
55
|
column: Column<TData, TValue>,
|
|
@@ -79,7 +79,7 @@ export function createCell<TData extends RowData, TValue>(
|
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
table._features.forEach(feature => {
|
|
82
|
-
feature.
|
|
82
|
+
feature._createCell?.(
|
|
83
83
|
cell as Cell<TData, TValue>,
|
|
84
84
|
column,
|
|
85
85
|
row as Row<TData>,
|
package/src/core/column.ts
CHANGED
|
@@ -62,7 +62,7 @@ export interface CoreColumn<TData extends RowData, TValue> {
|
|
|
62
62
|
parent?: Column<TData, TValue>
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
export function
|
|
65
|
+
export function _createColumn<TData extends RowData, TValue>(
|
|
66
66
|
table: Table<TData>,
|
|
67
67
|
columnDef: ColumnDef<TData, TValue>,
|
|
68
68
|
depth: number,
|
|
@@ -157,7 +157,7 @@ export function createColumn<TData extends RowData, TValue>(
|
|
|
157
157
|
}
|
|
158
158
|
|
|
159
159
|
for (const feature of table._features) {
|
|
160
|
-
feature.
|
|
160
|
+
feature._createColumn?.(column as Column<TData, TValue>, table)
|
|
161
161
|
}
|
|
162
162
|
|
|
163
163
|
// Yes, we have to convert table to unknown, because we know more than the compiler here.
|
package/src/core/headers.ts
CHANGED
|
@@ -210,7 +210,7 @@ export interface HeadersInstance<TData extends RowData> {
|
|
|
210
210
|
|
|
211
211
|
//
|
|
212
212
|
|
|
213
|
-
function
|
|
213
|
+
function _createHeader<TData extends RowData, TValue>(
|
|
214
214
|
table: Table<TData>,
|
|
215
215
|
column: Column<TData, TValue>,
|
|
216
216
|
options: {
|
|
@@ -256,14 +256,14 @@ function createHeader<TData extends RowData, TValue>(
|
|
|
256
256
|
}
|
|
257
257
|
|
|
258
258
|
table._features.forEach(feature => {
|
|
259
|
-
feature.
|
|
259
|
+
feature._createHeader?.(header as Header<TData, TValue>, table)
|
|
260
260
|
})
|
|
261
261
|
|
|
262
262
|
return header as Header<TData, TValue>
|
|
263
263
|
}
|
|
264
264
|
|
|
265
265
|
export const Headers: TableFeature = {
|
|
266
|
-
|
|
266
|
+
_createTable: <TData extends RowData>(table: Table<TData>): void => {
|
|
267
267
|
// Header Groups
|
|
268
268
|
|
|
269
269
|
table.getHeaderGroups = memo(
|
|
@@ -553,7 +553,7 @@ export function buildHeaderGroups<TData extends RowData>(
|
|
|
553
553
|
latestPendingParentHeader.subHeaders.push(headerToGroup)
|
|
554
554
|
} else {
|
|
555
555
|
// This is a new header. Let's create it
|
|
556
|
-
const header =
|
|
556
|
+
const header = _createHeader(table, column, {
|
|
557
557
|
id: [headerFamily, depth, column.id, headerToGroup?.id]
|
|
558
558
|
.filter(Boolean)
|
|
559
559
|
.join('_'),
|
|
@@ -584,7 +584,7 @@ export function buildHeaderGroups<TData extends RowData>(
|
|
|
584
584
|
}
|
|
585
585
|
|
|
586
586
|
const bottomHeaders = columnsToGroup.map((column, index) =>
|
|
587
|
-
|
|
587
|
+
_createHeader(table, column, {
|
|
588
588
|
depth: maxDepth,
|
|
589
589
|
index,
|
|
590
590
|
})
|
package/src/core/row.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { RowData, Cell, Row, Table } from '../types'
|
|
2
2
|
import { flattenBy, getMemoOptions, memo } from '../utils'
|
|
3
|
-
import {
|
|
3
|
+
import { _createCell } from './cell'
|
|
4
4
|
|
|
5
5
|
export interface CoreRow<TData extends RowData> {
|
|
6
6
|
_getAllCellsByColumnId: () => Record<string, Cell<TData, unknown>>
|
|
@@ -92,7 +92,7 @@ export interface CoreRow<TData extends RowData> {
|
|
|
92
92
|
subRows: Row<TData>[]
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
export const
|
|
95
|
+
export const _createRow = <TData extends RowData>(
|
|
96
96
|
table: Table<TData>,
|
|
97
97
|
id: string,
|
|
98
98
|
original: TData,
|
|
@@ -171,7 +171,7 @@ export const createRow = <TData extends RowData>(
|
|
|
171
171
|
() => [table.getAllLeafColumns()],
|
|
172
172
|
leafColumns => {
|
|
173
173
|
return leafColumns.map(column => {
|
|
174
|
-
return
|
|
174
|
+
return _createCell(table, row as Row<TData>, column, column.id)
|
|
175
175
|
})
|
|
176
176
|
},
|
|
177
177
|
getMemoOptions(table.options, 'debugRows', 'getAllCells')
|
|
@@ -194,7 +194,7 @@ export const createRow = <TData extends RowData>(
|
|
|
194
194
|
|
|
195
195
|
for (let i = 0; i < table._features.length; i++) {
|
|
196
196
|
const feature = table._features[i]
|
|
197
|
-
feature?.
|
|
197
|
+
feature?._createRow?.(row as Row<TData>, table)
|
|
198
198
|
}
|
|
199
199
|
|
|
200
200
|
return row as Row<TData>
|
package/src/core/table.ts
CHANGED
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
} from '../types'
|
|
20
20
|
|
|
21
21
|
//
|
|
22
|
-
import {
|
|
22
|
+
import { _createColumn } from './column'
|
|
23
23
|
import { Headers } from './headers'
|
|
24
24
|
//
|
|
25
25
|
|
|
@@ -192,6 +192,42 @@ export interface CoreOptions<TData extends RowData> {
|
|
|
192
192
|
state: Partial<TableState>
|
|
193
193
|
}
|
|
194
194
|
|
|
195
|
+
export function tableOptions<TData extends RowData = any>(
|
|
196
|
+
options: Omit<TableOptions<TData>, 'columns'>
|
|
197
|
+
): Omit<TableOptions<TData>, 'columns'>
|
|
198
|
+
|
|
199
|
+
export function tableOptions<TData extends RowData = any>(
|
|
200
|
+
options: Omit<TableOptions<TData>, 'data'>
|
|
201
|
+
): Omit<TableOptions<TData>, 'data'>
|
|
202
|
+
|
|
203
|
+
export function tableOptions<TData extends RowData = any>(
|
|
204
|
+
options: Omit<TableOptions<TData>, 'getCoreRowModel'>
|
|
205
|
+
): Omit<TableOptions<TData>, 'getCoreRowModel'>
|
|
206
|
+
|
|
207
|
+
export function tableOptions<TData extends RowData = any>(
|
|
208
|
+
options: Omit<TableOptions<TData>, 'data' | 'columns'>
|
|
209
|
+
): Omit<TableOptions<TData>, 'data' | 'columns'>
|
|
210
|
+
|
|
211
|
+
export function tableOptions<TData extends RowData = any>(
|
|
212
|
+
options: Omit<TableOptions<TData>, 'getCoreRowModel' | 'columns'>
|
|
213
|
+
): Omit<TableOptions<TData>, 'getCoreRowModel' | 'columns'>
|
|
214
|
+
|
|
215
|
+
export function tableOptions<TData extends RowData = any>(
|
|
216
|
+
options: Omit<TableOptions<TData>, 'data' | 'getCoreRowModel'>
|
|
217
|
+
): Omit<TableOptions<TData>, 'data' | 'getCoreRowModel'>
|
|
218
|
+
|
|
219
|
+
export function tableOptions<TData extends RowData = any>(
|
|
220
|
+
options: Omit<TableOptions<TData>, 'data' | 'columns' | 'getCoreRowModel'>
|
|
221
|
+
): Omit<TableOptions<TData>, 'data' | 'columns' | 'getCoreRowModel'>
|
|
222
|
+
|
|
223
|
+
export function tableOptions<TData extends RowData = any>(
|
|
224
|
+
options: TableOptions<TData>
|
|
225
|
+
): TableOptions<TData>
|
|
226
|
+
|
|
227
|
+
export function tableOptions(options: unknown) {
|
|
228
|
+
return options
|
|
229
|
+
}
|
|
230
|
+
|
|
195
231
|
export interface CoreInstance<TData extends RowData> {
|
|
196
232
|
_features: readonly TableFeature[]
|
|
197
233
|
_getAllFlatColumnsById: () => Record<string, Column<TData, unknown>>
|
|
@@ -280,7 +316,7 @@ export interface CoreInstance<TData extends RowData> {
|
|
|
280
316
|
setState: (updater: Updater<TableState>) => void
|
|
281
317
|
}
|
|
282
318
|
|
|
283
|
-
export function
|
|
319
|
+
export function _createTable<TData extends RowData>(
|
|
284
320
|
options: TableOptionsResolved<TData>
|
|
285
321
|
): Table<TData> {
|
|
286
322
|
if (
|
|
@@ -295,7 +331,7 @@ export function createTable<TData extends RowData>(
|
|
|
295
331
|
let table = { _features } as unknown as Table<TData>
|
|
296
332
|
|
|
297
333
|
const defaultOptions = table._features.reduce((obj, feature) => {
|
|
298
|
-
return Object.assign(obj, feature.
|
|
334
|
+
return Object.assign(obj, feature._getDefaultOptions?.(table))
|
|
299
335
|
}, {}) as TableOptionsResolved<TData>
|
|
300
336
|
|
|
301
337
|
const mergeOptions = (options: TableOptionsResolved<TData>) => {
|
|
@@ -317,7 +353,7 @@ export function createTable<TData extends RowData>(
|
|
|
317
353
|
} as TableState
|
|
318
354
|
|
|
319
355
|
table._features.forEach(feature => {
|
|
320
|
-
initialState = (feature.
|
|
356
|
+
initialState = (feature._getInitialState?.(initialState) ??
|
|
321
357
|
initialState) as TableState
|
|
322
358
|
})
|
|
323
359
|
|
|
@@ -433,7 +469,7 @@ export function createTable<TData extends RowData>(
|
|
|
433
469
|
// footer: props => props.header.column.id,
|
|
434
470
|
cell: props => props.renderValue<any>()?.toString?.() ?? null,
|
|
435
471
|
...table._features.reduce((obj, feature) => {
|
|
436
|
-
return Object.assign(obj, feature.
|
|
472
|
+
return Object.assign(obj, feature._getDefaultColumnDef?.())
|
|
437
473
|
}, {}),
|
|
438
474
|
...defaultColumn,
|
|
439
475
|
} as Partial<ColumnDef<TData, unknown>>
|
|
@@ -452,7 +488,7 @@ export function createTable<TData extends RowData>(
|
|
|
452
488
|
depth = 0
|
|
453
489
|
): Column<TData, unknown>[] => {
|
|
454
490
|
return columnDefs.map(columnDef => {
|
|
455
|
-
const column =
|
|
491
|
+
const column = _createColumn(table, columnDef, depth, parent)
|
|
456
492
|
|
|
457
493
|
const groupingColumnDef = columnDef as GroupColumnDef<
|
|
458
494
|
TData,
|
|
@@ -520,7 +556,7 @@ export function createTable<TData extends RowData>(
|
|
|
520
556
|
|
|
521
557
|
for (let index = 0; index < table._features.length; index++) {
|
|
522
558
|
const feature = table._features[index]
|
|
523
|
-
feature?.
|
|
559
|
+
feature?._createTable?.(table)
|
|
524
560
|
}
|
|
525
561
|
|
|
526
562
|
return table
|
|
@@ -46,7 +46,7 @@ export interface FacetedOptions<TData extends RowData> {
|
|
|
46
46
|
//
|
|
47
47
|
|
|
48
48
|
export const ColumnFaceting: TableFeature = {
|
|
49
|
-
|
|
49
|
+
_createColumn: <TData extends RowData>(
|
|
50
50
|
column: Column<TData, unknown>,
|
|
51
51
|
table: Table<TData>
|
|
52
52
|
): void => {
|
|
@@ -241,7 +241,7 @@ export interface ColumnFiltersInstance<TData extends RowData> {
|
|
|
241
241
|
//
|
|
242
242
|
|
|
243
243
|
export const ColumnFiltering: TableFeature = {
|
|
244
|
-
|
|
244
|
+
_getDefaultColumnDef: <
|
|
245
245
|
TData extends RowData,
|
|
246
246
|
>(): ColumnFiltersColumnDef<TData> => {
|
|
247
247
|
return {
|
|
@@ -249,14 +249,14 @@ export const ColumnFiltering: TableFeature = {
|
|
|
249
249
|
}
|
|
250
250
|
},
|
|
251
251
|
|
|
252
|
-
|
|
252
|
+
_getInitialState: (state): ColumnFiltersTableState => {
|
|
253
253
|
return {
|
|
254
254
|
columnFilters: [],
|
|
255
255
|
...state,
|
|
256
256
|
}
|
|
257
257
|
},
|
|
258
258
|
|
|
259
|
-
|
|
259
|
+
_getDefaultOptions: <TData extends RowData>(
|
|
260
260
|
table: Table<TData>
|
|
261
261
|
): ColumnFiltersOptions<TData> => {
|
|
262
262
|
return {
|
|
@@ -266,7 +266,7 @@ export const ColumnFiltering: TableFeature = {
|
|
|
266
266
|
} as ColumnFiltersOptions<TData>
|
|
267
267
|
},
|
|
268
268
|
|
|
269
|
-
|
|
269
|
+
_createColumn: <TData extends RowData>(
|
|
270
270
|
column: Column<TData, unknown>,
|
|
271
271
|
table: Table<TData>
|
|
272
272
|
): void => {
|
|
@@ -362,7 +362,7 @@ export const ColumnFiltering: TableFeature = {
|
|
|
362
362
|
}
|
|
363
363
|
},
|
|
364
364
|
|
|
365
|
-
|
|
365
|
+
_createRow: <TData extends RowData>(
|
|
366
366
|
row: Row<TData>,
|
|
367
367
|
_table: Table<TData>
|
|
368
368
|
): void => {
|
|
@@ -370,7 +370,7 @@ export const ColumnFiltering: TableFeature = {
|
|
|
370
370
|
row.columnFiltersMeta = {}
|
|
371
371
|
},
|
|
372
372
|
|
|
373
|
-
|
|
373
|
+
_createTable: <TData extends RowData>(table: Table<TData>): void => {
|
|
374
374
|
table.setColumnFilters = (updater: Updater<ColumnFiltersState>) => {
|
|
375
375
|
const leafColumns = table.getAllLeafColumns()
|
|
376
376
|
|