@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.
@@ -1 +1 @@
1
- {"version":3,"file":"sortingFns.js","sources":["../../src/sortingFns.ts"],"sourcesContent":["import { TableGenerics, Row } from './types'\n\nexport const reSplitAlphaNumeric = /([0-9]+)/gm\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\nfunction alphanumeric<TGenerics extends TableGenerics>(\n rowA: Row<TGenerics>,\n rowB: Row<TGenerics>,\n columnId: string\n) {\n return compareAlphanumeric(\n toString(rowA.getValue(columnId)).toLowerCase(),\n toString(rowB.getValue(columnId)).toLowerCase()\n )\n}\n\nfunction alphanumericCaseSensitive<TGenerics extends TableGenerics>(\n rowA: Row<TGenerics>,\n rowB: Row<TGenerics>,\n columnId: string\n) {\n return compareAlphanumeric(\n toString(rowA.getValue(columnId)),\n toString(rowB.getValue(columnId))\n )\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// The text filter is more basic (less numeric support)\n// but is much faster\nfunction text<TGenerics extends TableGenerics>(\n rowA: Row<TGenerics>,\n rowB: Row<TGenerics>,\n columnId: string\n) {\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\nfunction textCaseSensitive<TGenerics extends TableGenerics>(\n rowA: Row<TGenerics>,\n rowB: Row<TGenerics>,\n columnId: string\n) {\n return compareBasic(\n toString(rowA.getValue(columnId)),\n toString(rowB.getValue(columnId))\n )\n}\n\nfunction datetime<TGenerics extends TableGenerics>(\n rowA: Row<TGenerics>,\n rowB: Row<TGenerics>,\n columnId: string\n) {\n return compareBasic(\n (rowA.getValue(columnId) as Date).getTime(),\n (rowB.getValue(columnId) as Date).getTime()\n )\n}\n\nfunction basic<TGenerics extends TableGenerics>(\n rowA: Row<TGenerics>,\n rowB: Row<TGenerics>,\n columnId: string\n) {\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"],"names":["reSplitAlphaNumeric","sortingFns","alphanumeric","alphanumericCaseSensitive","text","textCaseSensitive","datetime","basic","rowA","rowB","columnId","compareAlphanumeric","toString","getValue","toLowerCase","aStr","bStr","a","split","filter","Boolean","b","length","aa","shift","bb","an","parseInt","bn","combo","sort","isNaN","compareBasic","getTime","Infinity","String"],"mappings":"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"}
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
- originalRow = originalRows[i]; // This could be an expensive check at scale, so we should move it somewhere else, but where?
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(originalRow, i); // Then recursively access them
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 let rows\n let row\n let originalRow\n\n const accessRows = (\n originalRows: TGenerics['Row'][],\n depth = 0,\n parent?: Row<TGenerics>\n ): Row<TGenerics>[] => {\n rows = []\n\n for (let i = 0; i < originalRows.length; i++) {\n originalRow = originalRows[i]\n\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 row = createRow(\n instance,\n instance._getRowId(originalRow, i, parent),\n originalRow,\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(originalRow, i)\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","row","originalRow","accessRows","originalRows","depth","parent","i","length","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,IAAA,IAAIF,IAAJ,CAAA;AACA,IAAA,IAAIG,KAAJ,CAAA;AACA,IAAA,IAAIC,WAAJ,CAAA;;AAEA,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;;AACrBP,MAAAA,IAAI,GAAG,EAAP,CAAA;;AAEA,MAAA,KAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,YAAY,CAACI,MAAjC,EAAyCD,CAAC,EAA1C,EAA8C;AAC5CL,QAAAA,WAAW,GAAGE,YAAY,CAACG,CAAD,CAA1B,CAD4C;AAI5C;AACA;AACA;AACA;AACA;AAEA;;AACAN,QAAAA,KAAG,GAAGQ,aAAS,CACbhB,QADa,EAEbA,QAAQ,CAACiB,SAAT,CAAmBR,WAAnB,EAAgCK,CAAhC,EAAmCD,MAAnC,CAFa,EAGbJ,WAHa,EAIbK,CAJa,EAKbF,KALa,CAAf,CAX4C;;AAoB5CR,QAAAA,QAAQ,CAACE,QAAT,CAAkBY,IAAlB,CAAuBV,KAAvB,EApB4C;;AAsB5CJ,QAAAA,QAAQ,CAACG,QAAT,CAAkBC,KAAG,CAACW,EAAtB,CAAA,GAA4BX,KAA5B,CAtB4C;;AAwB5CH,QAAAA,IAAI,CAACa,IAAL,CAAUV,KAAV,EAxB4C;;AA2B5C,QAAA,IAAIR,QAAQ,CAACE,OAAT,CAAiBkB,UAArB,EAAiC;AAAA,UAAA,IAAA,oBAAA,CAAA;;AAC/BZ,UAAAA,KAAG,CAACa,eAAJ,GAAsBrB,QAAQ,CAACE,OAAT,CAAiBkB,UAAjB,CAA4BX,WAA5B,EAAyCK,CAAzC,CAAtB,CAD+B;;AAI/B,UAAA,IAAA,CAAA,oBAAA,GAAIN,KAAG,CAACa,eAAR,KAAI,IAAA,IAAA,oBAAA,CAAqBN,MAAzB,EAAiC;AAC/BP,YAAAA,KAAG,CAACc,OAAJ,GAAcZ,UAAU,CAACF,KAAG,CAACa,eAAL,EAAsBT,KAAK,GAAG,CAA9B,EAAiCJ,KAAjC,CAAxB,CAAA;AACD,WAAA;AACF,SAAA;AACF,OAAA;;AAED,MAAA,OAAOH,IAAP,CAAA;AACD,KA7CD,CAAA;;AA+CAD,IAAAA,QAAQ,CAACC,IAAT,GAAgBK,UAAU,CAACP,IAAD,CAA1B,CAAA;AAEA,IAAA,OAAOC,QAAP,CAAA;AACD,GArEC,EAsEF;AACEmB,IAAAA,GAAG,EAAEC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0C,aADjD;AAEEC,IAAAA,KAAK,EAAE,MAAA;AAAA,MAAA,IAAA,qBAAA,CAAA;;AAAA,MAAM3B,OAAAA,CAAAA,qBAAAA,GAAAA,QAAQ,CAACE,OAAT,CAAiB0B,QAAvB,oCAAmC5B,QAAQ,CAACE,OAAT,CAAiB2B,UAApD,CAAA;AAAA,KAFT;AAGEC,IAAAA,QAAQ,EAAE,MAAM;AACd9B,MAAAA,QAAQ,CAAC+B,mBAAT,EAAA,CAAA;AACD,KAAA;AALH,GAtEE,CADN,CAAA;AA+ED;;;;"}
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;;;;"}
@@ -110,7 +110,7 @@ function createColumn(instance, columnDef, depth, parent) {
110
110
  throw new Error();
111
111
  }
112
112
 
113
- let column = { ...columnDef,
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 === true) {
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
- function alphanumeric(rowA, rowB, columnId) {
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
- function alphanumericCaseSensitive(rowA, rowB, columnId) {
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
- } // The text filter is more basic (less numeric support)
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
- if (typeof a === 'string') {
2431
- return a;
2432
- }
2433
-
2434
- return '';
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 _ref2, _column$columnDef$sor, _instance$options$ena, _instance$options$ena2;
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) && ( // If multi, don't allow if enableMultiRemove
2550
- existingSorting != null && existingSorting.desc // Finally, detect if it should indeed be removed
2551
- ? !sortDescFirst : sortDescFirst)) {
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 : !!sortDescFirst
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 : !!sortDescFirst
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 : !(existingSorting != null && existingSorting.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().filter(cell => cell.column.getIsVisible()).map(d => d.id).join('_')], _ => {
2688
- return row.getAllCells().filter(cell => cell.column.getIsVisible());
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: () => column.columnDef.cell ? instance._render(column.columnDef.cell, {
3042
- instance,
3043
- column,
3044
- row,
3045
- cell: cell,
3046
- getValue: cell.getValue
3047
- }) : null
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
- originalRow = originalRows[i]; // This could be an expensive check at scale, so we should move it somewhere else, but where?
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(originalRow, i); // Then recursively access them
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);