@tanstack/table-core 8.0.0-alpha.86 → 8.0.0-alpha.89
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 +9 -7
- package/build/cjs/core/cell.js.map +1 -1
- package/build/cjs/core/column.js +1 -1
- package/build/cjs/core/column.js.map +1 -1
- package/build/cjs/features/Expanding.js +6 -2
- package/build/cjs/features/Expanding.js.map +1 -1
- package/build/cjs/features/Sorting.js +27 -9
- package/build/cjs/features/Sorting.js.map +1 -1
- package/build/cjs/features/Visibility.js +2 -2
- package/build/cjs/features/Visibility.js.map +1 -1
- package/build/cjs/sortingFns.js +53 -51
- package/build/cjs/sortingFns.js.map +1 -1
- package/build/cjs/utils/getCoreRowModel.js +4 -8
- package/build/cjs/utils/getCoreRowModel.js.map +1 -1
- package/build/esm/index.js +102 -80
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +319 -319
- package/build/types/features/Sorting.d.ts +4 -3
- package/build/types/index.d.ts +0 -2
- package/build/types/sortingFns.d.ts +7 -14
- package/build/umd/index.development.js +102 -80
- 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 +4 -4
- package/src/core/cell.ts +4 -3
- package/src/core/column.ts +0 -1
- package/src/features/Expanding.ts +6 -2
- package/src/features/Sorting.ts +31 -16
- package/src/features/Visibility.ts +3 -9
- package/src/index.ts +0 -2
- package/src/sortingFns.ts +59 -81
- package/src/utils/getCoreRowModel.ts +8 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sortingFns.js","sources":["../../src/sortingFns.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"sortingFns.js","sources":["../../src/sortingFns.ts"],"sourcesContent":["import { SortingFn } from './features/Sorting'\n\nexport const reSplitAlphaNumeric = /([0-9]+)/gm\n\nconst alphanumeric: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareAlphanumeric(\n toString(rowA.getValue(columnId)).toLowerCase(),\n toString(rowB.getValue(columnId)).toLowerCase()\n )\n}\n\nconst alphanumericCaseSensitive: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareAlphanumeric(\n toString(rowA.getValue(columnId)),\n toString(rowB.getValue(columnId))\n )\n}\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(\n toString(rowA.getValue(columnId)).toLowerCase(),\n toString(rowB.getValue(columnId)).toLowerCase()\n )\n}\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(\n toString(rowA.getValue(columnId)),\n toString(rowB.getValue(columnId))\n )\n}\n\nconst datetime: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(\n (rowA.getValue(columnId) as Date).getTime(),\n (rowB.getValue(columnId) as Date).getTime()\n )\n}\n\nconst basic: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId))\n}\n\n// Utils\n\nfunction compareBasic(a: any, b: any) {\n return a === b ? 0 : a > b ? 1 : -1\n}\n\nfunction toString(a: any) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return ''\n }\n return String(a)\n }\n if (typeof a === 'string') {\n return a\n }\n return ''\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr: string, bStr: string) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean)\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean)\n\n // While\n while (a.length && b.length) {\n const aa = a.shift()!\n const bb = b.shift()!\n\n const an = parseInt(aa, 10)\n const bn = parseInt(bb, 10)\n\n const combo = [an, bn].sort()\n\n // Both are string\n if (isNaN(combo[0]!)) {\n if (aa > bb) {\n return 1\n }\n if (bb > aa) {\n return -1\n }\n continue\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1]!)) {\n return isNaN(an) ? -1 : 1\n }\n\n // Both are numbers\n if (an > bn) {\n return 1\n }\n if (bn > an) {\n return -1\n }\n }\n\n return a.length - b.length\n}\n\n// Exports\n\nexport const sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic,\n}\n\nexport type BuiltInSortingFn = keyof typeof sortingFns\n"],"names":["reSplitAlphaNumeric","alphanumeric","rowA","rowB","columnId","compareAlphanumeric","toString","getValue","toLowerCase","alphanumericCaseSensitive","text","compareBasic","textCaseSensitive","datetime","getTime","basic","a","b","isNaN","Infinity","String","aStr","bStr","split","filter","Boolean","length","aa","shift","bb","an","parseInt","bn","combo","sort","sortingFns"],"mappings":"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"}
|
|
@@ -22,27 +22,23 @@ function getCoreRowModel() {
|
|
|
22
22
|
flatRows: [],
|
|
23
23
|
rowsById: {}
|
|
24
24
|
};
|
|
25
|
-
let rows;
|
|
26
|
-
let row$1;
|
|
27
|
-
let originalRow;
|
|
28
25
|
|
|
29
26
|
const accessRows = function (originalRows, depth, parent) {
|
|
30
27
|
if (depth === void 0) {
|
|
31
28
|
depth = 0;
|
|
32
29
|
}
|
|
33
30
|
|
|
34
|
-
rows = [];
|
|
31
|
+
const rows = [];
|
|
35
32
|
|
|
36
33
|
for (let i = 0; i < originalRows.length; i++) {
|
|
37
|
-
|
|
34
|
+
// This could be an expensive check at scale, so we should move it somewhere else, but where?
|
|
38
35
|
// if (!id) {
|
|
39
36
|
// if (process.env.NODE_ENV !== 'production') {
|
|
40
37
|
// throw new Error(`getRowId expected an ID, but got ${id}`)
|
|
41
38
|
// }
|
|
42
39
|
// }
|
|
43
40
|
// Make the row
|
|
44
|
-
|
|
45
|
-
row$1 = row.createRow(instance, instance._getRowId(originalRow, i, parent), originalRow, i, depth); // Keep track of every row in a flat array
|
|
41
|
+
const row$1 = row.createRow(instance, instance._getRowId(originalRows[i], i, parent), originalRows[i], i, depth); // Keep track of every row in a flat array
|
|
46
42
|
|
|
47
43
|
rowModel.flatRows.push(row$1); // Also keep track of every row by its ID
|
|
48
44
|
|
|
@@ -53,7 +49,7 @@ function getCoreRowModel() {
|
|
|
53
49
|
if (instance.options.getSubRows) {
|
|
54
50
|
var _row$originalSubRows;
|
|
55
51
|
|
|
56
|
-
row$1.originalSubRows = instance.options.getSubRows(
|
|
52
|
+
row$1.originalSubRows = instance.options.getSubRows(originalRows[i], i); // Then recursively access them
|
|
57
53
|
|
|
58
54
|
if ((_row$originalSubRows = row$1.originalSubRows) != null && _row$originalSubRows.length) {
|
|
59
55
|
row$1.subRows = accessRows(row$1.originalSubRows, depth + 1, row$1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getCoreRowModel.js","sources":["../../../src/utils/getCoreRowModel.ts"],"sourcesContent":["import { createRow } from '../core/row'\nimport { TableInstance, Row, RowModel, TableGenerics } from '../types'\nimport { memo } from '../utils'\n\nexport function getCoreRowModel<TGenerics extends TableGenerics>(): (\n instance: TableInstance<TGenerics>\n) => () => RowModel<TGenerics> {\n return instance =>\n memo(\n () => [instance.options.data],\n (\n data\n ): {\n rows: Row<TGenerics>[]\n flatRows: Row<TGenerics>[]\n rowsById: Record<string, Row<TGenerics>>\n } => {\n const rowModel: RowModel<TGenerics> = {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n\n
|
|
1
|
+
{"version":3,"file":"getCoreRowModel.js","sources":["../../../src/utils/getCoreRowModel.ts"],"sourcesContent":["import { createRow } from '../core/row'\nimport { TableInstance, Row, RowModel, TableGenerics } from '../types'\nimport { memo } from '../utils'\n\nexport function getCoreRowModel<TGenerics extends TableGenerics>(): (\n instance: TableInstance<TGenerics>\n) => () => RowModel<TGenerics> {\n return instance =>\n memo(\n () => [instance.options.data],\n (\n data\n ): {\n rows: Row<TGenerics>[]\n flatRows: Row<TGenerics>[]\n rowsById: Record<string, Row<TGenerics>>\n } => {\n const rowModel: RowModel<TGenerics> = {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n\n const accessRows = (\n originalRows: TGenerics['Row'][],\n depth = 0,\n parent?: Row<TGenerics>\n ): Row<TGenerics>[] => {\n const rows = [] as Row<TGenerics>[]\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 instance,\n instance._getRowId(originalRows[i], i, parent),\n originalRows[i],\n i,\n depth\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 instance row into parent\n rows.push(row)\n\n // Get the original subrows\n if (instance.options.getSubRows) {\n row.originalSubRows = instance.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 {\n key: process.env.NODE_ENV === 'development' && 'getRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => {\n instance._autoResetPageIndex()\n },\n }\n )\n}\n"],"names":["getCoreRowModel","instance","memo","options","data","rowModel","rows","flatRows","rowsById","accessRows","originalRows","depth","parent","i","length","row","createRow","_getRowId","push","id","getSubRows","originalSubRows","subRows","key","process","env","NODE_ENV","debug","debugAll","debugTable","onChange","_autoResetPageIndex"],"mappings":";;;;;;;;;;;;;;;;;AAIO,SAASA,eAAT,GAEwB;AAC7B,EAAA,OAAOC,QAAQ,IACbC,UAAI,CACF,MAAM,CAACD,QAAQ,CAACE,OAAT,CAAiBC,IAAlB,CADJ,EAGAA,IADF,IAMK;AACH,IAAA,MAAMC,QAA6B,GAAG;AACpCC,MAAAA,IAAI,EAAE,EAD8B;AAEpCC,MAAAA,QAAQ,EAAE,EAF0B;AAGpCC,MAAAA,QAAQ,EAAE,EAAA;AAH0B,KAAtC,CAAA;;AAMA,IAAMC,MAAAA,UAAU,GAAG,UACjBC,YADiB,EAEjBC,KAFiB,EAGjBC,MAHiB,EAII;AAAA,MAAA,IAFrBD,KAEqB,KAAA,KAAA,CAAA,EAAA;AAFrBA,QAAAA,KAEqB,GAFb,CAEa,CAAA;AAAA,OAAA;;AACrB,MAAML,MAAAA,IAAI,GAAG,EAAb,CAAA;;AAEA,MAAA,KAAK,IAAIO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,YAAY,CAACI,MAAjC,EAAyCD,CAAC,EAA1C,EAA8C;AAC5C;AACA;AACA;AACA;AACA;AACA;AAEA;AACA,QAAA,MAAME,KAAG,GAAGC,aAAS,CACnBf,QADmB,EAEnBA,QAAQ,CAACgB,SAAT,CAAmBP,YAAY,CAACG,CAAD,CAA/B,EAAoCA,CAApC,EAAuCD,MAAvC,CAFmB,EAGnBF,YAAY,CAACG,CAAD,CAHO,EAInBA,CAJmB,EAKnBF,KALmB,CAArB,CAT4C;;AAkB5CN,QAAAA,QAAQ,CAACE,QAAT,CAAkBW,IAAlB,CAAuBH,KAAvB,EAlB4C;;AAoB5CV,QAAAA,QAAQ,CAACG,QAAT,CAAkBO,KAAG,CAACI,EAAtB,CAAA,GAA4BJ,KAA5B,CApB4C;;AAsB5CT,QAAAA,IAAI,CAACY,IAAL,CAAUH,KAAV,EAtB4C;;AAyB5C,QAAA,IAAId,QAAQ,CAACE,OAAT,CAAiBiB,UAArB,EAAiC;AAAA,UAAA,IAAA,oBAAA,CAAA;;AAC/BL,UAAAA,KAAG,CAACM,eAAJ,GAAsBpB,QAAQ,CAACE,OAAT,CAAiBiB,UAAjB,CACpBV,YAAY,CAACG,CAAD,CADQ,EAEpBA,CAFoB,CAAtB,CAD+B;;AAO/B,UAAA,IAAA,CAAA,oBAAA,GAAIE,KAAG,CAACM,eAAR,KAAI,IAAA,IAAA,oBAAA,CAAqBP,MAAzB,EAAiC;AAC/BC,YAAAA,KAAG,CAACO,OAAJ,GAAcb,UAAU,CAACM,KAAG,CAACM,eAAL,EAAsBV,KAAK,GAAG,CAA9B,EAAiCI,KAAjC,CAAxB,CAAA;AACD,WAAA;AACF,SAAA;AACF,OAAA;;AAED,MAAA,OAAOT,IAAP,CAAA;AACD,KA9CD,CAAA;;AAgDAD,IAAAA,QAAQ,CAACC,IAAT,GAAgBG,UAAU,CAACL,IAAD,CAA1B,CAAA;AAEA,IAAA,OAAOC,QAAP,CAAA;AACD,GAlEC,EAmEF;AACEkB,IAAAA,GAAG,EAAEC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0C,aADjD;AAEEC,IAAAA,KAAK,EAAE,MAAA;AAAA,MAAA,IAAA,qBAAA,CAAA;;AAAA,MAAM1B,OAAAA,CAAAA,qBAAAA,GAAAA,QAAQ,CAACE,OAAT,CAAiByB,QAAvB,oCAAmC3B,QAAQ,CAACE,OAAT,CAAiB0B,UAApD,CAAA;AAAA,KAFT;AAGEC,IAAAA,QAAQ,EAAE,MAAM;AACd7B,MAAAA,QAAQ,CAAC8B,mBAAT,EAAA,CAAA;AACD,KAAA;AALH,GAnEE,CADN,CAAA;AA4ED;;;;"}
|
package/build/esm/index.js
CHANGED
|
@@ -110,7 +110,7 @@ function createColumn(instance, columnDef, depth, parent) {
|
|
|
110
110
|
throw new Error();
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
-
let column = {
|
|
113
|
+
let column = {
|
|
114
114
|
id: "" + id,
|
|
115
115
|
accessorFn,
|
|
116
116
|
parent: parent,
|
|
@@ -874,8 +874,12 @@ const Expanding = {
|
|
|
874
874
|
getIsAllRowsExpanded: () => {
|
|
875
875
|
const expanded = instance.getState().expanded; // If expanded is true, save some cycles and return true
|
|
876
876
|
|
|
877
|
-
if (expanded ===
|
|
878
|
-
return true;
|
|
877
|
+
if (typeof expanded === 'boolean') {
|
|
878
|
+
return expanded === true;
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
if (!Object.keys(expanded).length) {
|
|
882
|
+
return false;
|
|
879
883
|
} // If any row is not expanded, return false
|
|
880
884
|
|
|
881
885
|
|
|
@@ -2330,21 +2334,54 @@ function isRowSelected(row, selection, instance) {
|
|
|
2330
2334
|
}
|
|
2331
2335
|
|
|
2332
2336
|
const reSplitAlphaNumeric = /([0-9]+)/gm;
|
|
2333
|
-
const sortingFns = {
|
|
2334
|
-
alphanumeric,
|
|
2335
|
-
alphanumericCaseSensitive,
|
|
2336
|
-
text,
|
|
2337
|
-
textCaseSensitive,
|
|
2338
|
-
datetime,
|
|
2339
|
-
basic
|
|
2340
|
-
};
|
|
2341
2337
|
|
|
2342
|
-
|
|
2338
|
+
const alphanumeric = (rowA, rowB, columnId) => {
|
|
2343
2339
|
return compareAlphanumeric(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());
|
|
2344
|
-
}
|
|
2340
|
+
};
|
|
2345
2341
|
|
|
2346
|
-
|
|
2342
|
+
const alphanumericCaseSensitive = (rowA, rowB, columnId) => {
|
|
2347
2343
|
return compareAlphanumeric(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));
|
|
2344
|
+
}; // The text filter is more basic (less numeric support)
|
|
2345
|
+
// but is much faster
|
|
2346
|
+
|
|
2347
|
+
|
|
2348
|
+
const text = (rowA, rowB, columnId) => {
|
|
2349
|
+
return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());
|
|
2350
|
+
}; // The text filter is more basic (less numeric support)
|
|
2351
|
+
// but is much faster
|
|
2352
|
+
|
|
2353
|
+
|
|
2354
|
+
const textCaseSensitive = (rowA, rowB, columnId) => {
|
|
2355
|
+
return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));
|
|
2356
|
+
};
|
|
2357
|
+
|
|
2358
|
+
const datetime = (rowA, rowB, columnId) => {
|
|
2359
|
+
return compareBasic(rowA.getValue(columnId).getTime(), rowB.getValue(columnId).getTime());
|
|
2360
|
+
};
|
|
2361
|
+
|
|
2362
|
+
const basic = (rowA, rowB, columnId) => {
|
|
2363
|
+
return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));
|
|
2364
|
+
}; // Utils
|
|
2365
|
+
|
|
2366
|
+
|
|
2367
|
+
function compareBasic(a, b) {
|
|
2368
|
+
return a === b ? 0 : a > b ? 1 : -1;
|
|
2369
|
+
}
|
|
2370
|
+
|
|
2371
|
+
function toString(a) {
|
|
2372
|
+
if (typeof a === 'number') {
|
|
2373
|
+
if (isNaN(a) || a === Infinity || a === -Infinity) {
|
|
2374
|
+
return '';
|
|
2375
|
+
}
|
|
2376
|
+
|
|
2377
|
+
return String(a);
|
|
2378
|
+
}
|
|
2379
|
+
|
|
2380
|
+
if (typeof a === 'string') {
|
|
2381
|
+
return a;
|
|
2382
|
+
}
|
|
2383
|
+
|
|
2384
|
+
return '';
|
|
2348
2385
|
} // Mixed sorting is slow, but very inclusive of many edge cases.
|
|
2349
2386
|
// It handles numbers, mixed alphanumeric combinations, and even
|
|
2350
2387
|
// null, undefined, and Infinity
|
|
@@ -2391,48 +2428,17 @@ function compareAlphanumeric(aStr, bStr) {
|
|
|
2391
2428
|
}
|
|
2392
2429
|
|
|
2393
2430
|
return a.length - b.length;
|
|
2394
|
-
} //
|
|
2395
|
-
// but is much faster
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
function text(rowA, rowB, columnId) {
|
|
2399
|
-
return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());
|
|
2400
|
-
} // The text filter is more basic (less numeric support)
|
|
2401
|
-
// but is much faster
|
|
2402
|
-
|
|
2403
|
-
|
|
2404
|
-
function textCaseSensitive(rowA, rowB, columnId) {
|
|
2405
|
-
return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));
|
|
2406
|
-
}
|
|
2407
|
-
|
|
2408
|
-
function datetime(rowA, rowB, columnId) {
|
|
2409
|
-
return compareBasic(rowA.getValue(columnId).getTime(), rowB.getValue(columnId).getTime());
|
|
2410
|
-
}
|
|
2411
|
-
|
|
2412
|
-
function basic(rowA, rowB, columnId) {
|
|
2413
|
-
return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));
|
|
2414
|
-
} // Utils
|
|
2415
|
-
|
|
2416
|
-
|
|
2417
|
-
function compareBasic(a, b) {
|
|
2418
|
-
return a === b ? 0 : a > b ? 1 : -1;
|
|
2419
|
-
}
|
|
2431
|
+
} // Exports
|
|
2420
2432
|
|
|
2421
|
-
function toString(a) {
|
|
2422
|
-
if (typeof a === 'number') {
|
|
2423
|
-
if (isNaN(a) || a === Infinity || a === -Infinity) {
|
|
2424
|
-
return '';
|
|
2425
|
-
}
|
|
2426
|
-
|
|
2427
|
-
return String(a);
|
|
2428
|
-
}
|
|
2429
2433
|
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2434
|
+
const sortingFns = {
|
|
2435
|
+
alphanumeric,
|
|
2436
|
+
alphanumericCaseSensitive,
|
|
2437
|
+
text,
|
|
2438
|
+
textCaseSensitive,
|
|
2439
|
+
datetime,
|
|
2440
|
+
basic
|
|
2441
|
+
};
|
|
2436
2442
|
|
|
2437
2443
|
//
|
|
2438
2444
|
const Sorting = {
|
|
@@ -2513,8 +2519,10 @@ const Sorting = {
|
|
|
2513
2519
|
// })
|
|
2514
2520
|
// return
|
|
2515
2521
|
// }
|
|
2522
|
+
// this needs to be outside of instance.setSorting to be in sync with rerender
|
|
2523
|
+
const nextSortingOrder = column.getNextSortingOrder();
|
|
2516
2524
|
instance.setSorting(old => {
|
|
2517
|
-
var
|
|
2525
|
+
var _instance$options$ena, _instance$options$ena2;
|
|
2518
2526
|
|
|
2519
2527
|
// Find any existing sorting for this column
|
|
2520
2528
|
const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);
|
|
@@ -2539,30 +2547,29 @@ const Sorting = {
|
|
|
2539
2547
|
} else {
|
|
2540
2548
|
sortAction = 'replace';
|
|
2541
2549
|
}
|
|
2542
|
-
}
|
|
2550
|
+
} // Handle toggle states that will remove the sorting
|
|
2543
2551
|
|
|
2544
|
-
const sortDescFirst = (_ref2 = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : instance.options.sortDescFirst) != null ? _ref2 : column.getAutoSortDir() === 'desc'; // Handle toggle states that will remove the sorting
|
|
2545
2552
|
|
|
2546
2553
|
if (sortAction === 'toggle' && ( // Must be toggling
|
|
2547
2554
|
(_instance$options$ena = instance.options.enableSortingRemoval) != null ? _instance$options$ena : true) && // If enableSortRemove, enable in general
|
|
2548
2555
|
!hasDescDefined && ( // Must not be setting desc
|
|
2549
|
-
multi ? (_instance$options$ena2 = instance.options.enableMultiRemove) != null ? _instance$options$ena2 : true : true) &&
|
|
2550
|
-
|
|
2551
|
-
|
|
2556
|
+
multi ? (_instance$options$ena2 = instance.options.enableMultiRemove) != null ? _instance$options$ena2 : true : true) && // If multi, don't allow if enableMultiRemove
|
|
2557
|
+
!nextSortingOrder // Finally, detect if it should indeed be removed
|
|
2558
|
+
) {
|
|
2552
2559
|
sortAction = 'remove';
|
|
2553
2560
|
}
|
|
2554
2561
|
|
|
2555
2562
|
if (sortAction === 'replace') {
|
|
2556
2563
|
newSorting = [{
|
|
2557
2564
|
id: column.id,
|
|
2558
|
-
desc: hasDescDefined ? desc :
|
|
2565
|
+
desc: hasDescDefined ? desc : nextSortingOrder === 'desc'
|
|
2559
2566
|
}];
|
|
2560
2567
|
} else if (sortAction === 'add' && old != null && old.length) {
|
|
2561
2568
|
var _instance$options$max;
|
|
2562
2569
|
|
|
2563
2570
|
newSorting = [...old, {
|
|
2564
2571
|
id: column.id,
|
|
2565
|
-
desc: hasDescDefined ? desc :
|
|
2572
|
+
desc: hasDescDefined ? desc : nextSortingOrder === 'desc'
|
|
2566
2573
|
}]; // Take latest n columns
|
|
2567
2574
|
|
|
2568
2575
|
newSorting.splice(0, newSorting.length - ((_instance$options$max = instance.options.maxMultiSortColCount) != null ? _instance$options$max : Number.MAX_SAFE_INTEGER));
|
|
@@ -2571,7 +2578,7 @@ const Sorting = {
|
|
|
2571
2578
|
newSorting = old.map(d => {
|
|
2572
2579
|
if (d.id === column.id) {
|
|
2573
2580
|
return { ...d,
|
|
2574
|
-
desc: hasDescDefined ? desc :
|
|
2581
|
+
desc: hasDescDefined ? desc : nextSortingOrder === 'desc'
|
|
2575
2582
|
};
|
|
2576
2583
|
}
|
|
2577
2584
|
|
|
@@ -2584,6 +2591,23 @@ const Sorting = {
|
|
|
2584
2591
|
return newSorting;
|
|
2585
2592
|
});
|
|
2586
2593
|
},
|
|
2594
|
+
getNextSortingOrder: () => {
|
|
2595
|
+
var _ref2, _column$columnDef$sor;
|
|
2596
|
+
|
|
2597
|
+
const sortDescFirst = (_ref2 = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : instance.options.sortDescFirst) != null ? _ref2 : column.getAutoSortDir() === 'desc';
|
|
2598
|
+
const firstSortDirection = sortDescFirst ? 'desc' : 'asc';
|
|
2599
|
+
const isSorted = column.getIsSorted();
|
|
2600
|
+
|
|
2601
|
+
if (!isSorted) {
|
|
2602
|
+
return firstSortDirection;
|
|
2603
|
+
}
|
|
2604
|
+
|
|
2605
|
+
if (isSorted === firstSortDirection) {
|
|
2606
|
+
return isSorted === 'desc' ? 'asc' : 'desc';
|
|
2607
|
+
} else {
|
|
2608
|
+
return false;
|
|
2609
|
+
}
|
|
2610
|
+
},
|
|
2587
2611
|
getCanSort: () => {
|
|
2588
2612
|
var _column$columnDef$ena, _instance$options$ena3;
|
|
2589
2613
|
|
|
@@ -2684,8 +2708,8 @@ const Visibility = {
|
|
|
2684
2708
|
},
|
|
2685
2709
|
createRow: (row, instance) => {
|
|
2686
2710
|
return {
|
|
2687
|
-
_getAllVisibleCells: memo(() => [row.getAllCells()
|
|
2688
|
-
return
|
|
2711
|
+
_getAllVisibleCells: memo(() => [row.getAllCells(), instance.getState().columnVisibility], cells => {
|
|
2712
|
+
return cells.filter(cell => cell.column.getIsVisible());
|
|
2689
2713
|
}, {
|
|
2690
2714
|
key: process.env.NODE_ENV === 'production' && 'row._getAllVisibleCells',
|
|
2691
2715
|
debug: () => {
|
|
@@ -3038,13 +3062,15 @@ function createCell(instance, row, column, columnId) {
|
|
|
3038
3062
|
row,
|
|
3039
3063
|
column,
|
|
3040
3064
|
getValue: () => row.getValue(columnId),
|
|
3041
|
-
renderCell: () =>
|
|
3042
|
-
instance,
|
|
3043
|
-
|
|
3044
|
-
|
|
3045
|
-
|
|
3046
|
-
|
|
3047
|
-
|
|
3065
|
+
renderCell: () => {
|
|
3066
|
+
return column.columnDef.cell ? instance._render(column.columnDef.cell, {
|
|
3067
|
+
instance,
|
|
3068
|
+
column,
|
|
3069
|
+
row,
|
|
3070
|
+
cell: cell,
|
|
3071
|
+
getValue: cell.getValue
|
|
3072
|
+
}) : null;
|
|
3073
|
+
}
|
|
3048
3074
|
};
|
|
3049
3075
|
|
|
3050
3076
|
instance._features.forEach(feature => {
|
|
@@ -3119,27 +3145,23 @@ function getCoreRowModel() {
|
|
|
3119
3145
|
flatRows: [],
|
|
3120
3146
|
rowsById: {}
|
|
3121
3147
|
};
|
|
3122
|
-
let rows;
|
|
3123
|
-
let row;
|
|
3124
|
-
let originalRow;
|
|
3125
3148
|
|
|
3126
3149
|
const accessRows = function (originalRows, depth, parent) {
|
|
3127
3150
|
if (depth === void 0) {
|
|
3128
3151
|
depth = 0;
|
|
3129
3152
|
}
|
|
3130
3153
|
|
|
3131
|
-
rows = [];
|
|
3154
|
+
const rows = [];
|
|
3132
3155
|
|
|
3133
3156
|
for (let i = 0; i < originalRows.length; i++) {
|
|
3134
|
-
|
|
3157
|
+
// This could be an expensive check at scale, so we should move it somewhere else, but where?
|
|
3135
3158
|
// if (!id) {
|
|
3136
3159
|
// if (process.env.NODE_ENV !== 'production') {
|
|
3137
3160
|
// throw new Error(`getRowId expected an ID, but got ${id}`)
|
|
3138
3161
|
// }
|
|
3139
3162
|
// }
|
|
3140
3163
|
// Make the row
|
|
3141
|
-
|
|
3142
|
-
row = createRow(instance, instance._getRowId(originalRow, i, parent), originalRow, i, depth); // Keep track of every row in a flat array
|
|
3164
|
+
const row = createRow(instance, instance._getRowId(originalRows[i], i, parent), originalRows[i], i, depth); // Keep track of every row in a flat array
|
|
3143
3165
|
|
|
3144
3166
|
rowModel.flatRows.push(row); // Also keep track of every row by its ID
|
|
3145
3167
|
|
|
@@ -3150,7 +3172,7 @@ function getCoreRowModel() {
|
|
|
3150
3172
|
if (instance.options.getSubRows) {
|
|
3151
3173
|
var _row$originalSubRows;
|
|
3152
3174
|
|
|
3153
|
-
row.originalSubRows = instance.options.getSubRows(
|
|
3175
|
+
row.originalSubRows = instance.options.getSubRows(originalRows[i], i); // Then recursively access them
|
|
3154
3176
|
|
|
3155
3177
|
if ((_row$originalSubRows = row.originalSubRows) != null && _row$originalSubRows.length) {
|
|
3156
3178
|
row.subRows = accessRows(row.originalSubRows, depth + 1, row);
|