@tanstack/table-core 8.0.0-alpha.64 → 8.0.0-alpha.68

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/build/cjs/aggregationFns.js +25 -37
  2. package/build/cjs/aggregationFns.js.map +1 -1
  3. package/build/cjs/core.js +167 -47
  4. package/build/cjs/core.js.map +1 -1
  5. package/build/cjs/createTable.js +24 -40
  6. package/build/cjs/createTable.js.map +1 -1
  7. package/build/cjs/features/Cells.js +29 -35
  8. package/build/cjs/features/Cells.js.map +1 -1
  9. package/build/cjs/features/ColumnSizing.js +126 -218
  10. package/build/cjs/features/ColumnSizing.js.map +1 -1
  11. package/build/cjs/features/Columns.js +59 -86
  12. package/build/cjs/features/Columns.js.map +1 -1
  13. package/build/cjs/features/Expanding.js +78 -125
  14. package/build/cjs/features/Expanding.js.map +1 -1
  15. package/build/cjs/features/Filters.js +143 -218
  16. package/build/cjs/features/Filters.js.map +1 -1
  17. package/build/cjs/features/Grouping.js +70 -116
  18. package/build/cjs/features/Grouping.js.map +1 -1
  19. package/build/cjs/features/Headers.js +125 -205
  20. package/build/cjs/features/Headers.js.map +1 -1
  21. package/build/cjs/features/Ordering.js +31 -43
  22. package/build/cjs/features/Ordering.js.map +1 -1
  23. package/build/cjs/features/Pagination.js +64 -72
  24. package/build/cjs/features/Pagination.js.map +1 -1
  25. package/build/cjs/features/Pinning.js +96 -177
  26. package/build/cjs/features/Pinning.js.map +1 -1
  27. package/build/cjs/features/RowSelection.js +134 -205
  28. package/build/cjs/features/RowSelection.js.map +1 -1
  29. package/build/cjs/features/Rows.js +32 -22
  30. package/build/cjs/features/Rows.js.map +1 -1
  31. package/build/cjs/features/Sorting.js +62 -131
  32. package/build/cjs/features/Sorting.js.map +1 -1
  33. package/build/cjs/features/Visibility.js +53 -120
  34. package/build/cjs/features/Visibility.js.map +1 -1
  35. package/build/cjs/filterFns.js +52 -133
  36. package/build/cjs/filterFns.js.map +1 -1
  37. package/build/cjs/index.js +13 -13
  38. package/build/cjs/sortingFns.js +21 -21
  39. package/build/cjs/sortingFns.js.map +1 -1
  40. package/build/cjs/utils/filterRowsUtils.js +56 -41
  41. package/build/cjs/utils/filterRowsUtils.js.map +1 -1
  42. package/build/cjs/utils/getCoreRowModel.js +98 -0
  43. package/build/cjs/utils/getCoreRowModel.js.map +1 -0
  44. package/build/cjs/utils/getExpandedRowModel.js +18 -22
  45. package/build/cjs/utils/getExpandedRowModel.js.map +1 -1
  46. package/build/cjs/utils/getFacetedMinMaxValues.js +48 -0
  47. package/build/cjs/utils/getFacetedMinMaxValues.js.map +1 -0
  48. package/build/cjs/utils/getFacetedRowModel.js +50 -0
  49. package/build/cjs/utils/getFacetedRowModel.js.map +1 -0
  50. package/build/cjs/utils/getFacetedUniqueValues.js +48 -0
  51. package/build/cjs/utils/getFacetedUniqueValues.js.map +1 -0
  52. package/build/cjs/utils/getFilteredRowModel.js +130 -0
  53. package/build/cjs/utils/getFilteredRowModel.js.map +1 -0
  54. package/build/cjs/utils/getGroupedRowModel.js +126 -136
  55. package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
  56. package/build/cjs/utils/getPaginationRowModel.js +39 -39
  57. package/build/cjs/utils/getPaginationRowModel.js.map +1 -1
  58. package/build/cjs/utils/getSortedRowModel.js +112 -0
  59. package/build/cjs/utils/getSortedRowModel.js.map +1 -0
  60. package/build/cjs/utils.js +36 -211
  61. package/build/cjs/utils.js.map +1 -1
  62. package/build/esm/index.js +1970 -2956
  63. package/build/esm/index.js.map +1 -1
  64. package/build/stats-html.html +1 -1
  65. package/build/stats-react.json +390 -482
  66. package/build/types/core.d.ts +3 -5
  67. package/build/types/features/Cells.d.ts +1 -1
  68. package/build/types/features/ColumnSizing.d.ts +2 -13
  69. package/build/types/features/Columns.d.ts +1 -1
  70. package/build/types/features/Expanding.d.ts +1 -6
  71. package/build/types/features/Filters.d.ts +42 -30
  72. package/build/types/features/Grouping.d.ts +4 -10
  73. package/build/types/features/Pinning.d.ts +0 -4
  74. package/build/types/features/RowSelection.d.ts +1 -7
  75. package/build/types/features/Rows.d.ts +4 -3
  76. package/build/types/features/Sorting.d.ts +3 -14
  77. package/build/types/features/Visibility.d.ts +0 -4
  78. package/build/types/filterFns.d.ts +10 -52
  79. package/build/types/index.d.ts +6 -5
  80. package/build/types/types.d.ts +5 -17
  81. package/build/types/utils/filterRowsUtils.d.ts +3 -2
  82. package/build/types/utils/getCoreRowModel.d.ts +2 -0
  83. package/build/types/utils/getFacetedMinMaxValues.d.ts +2 -0
  84. package/build/types/utils/getFacetedRowModel.d.ts +2 -0
  85. package/build/types/utils/getFacetedUniqueValues.d.ts +2 -0
  86. package/build/types/utils/{getCoreRowModelSync.d.ts → getFilteredRowModel.d.ts} +1 -1
  87. package/build/types/utils/getGroupedRowModel.d.ts +1 -1
  88. package/build/types/utils/getSortedRowModel.d.ts +2 -0
  89. package/build/types/utils.d.ts +2 -18
  90. package/build/umd/index.development.js +1948 -2935
  91. package/build/umd/index.development.js.map +1 -1
  92. package/build/umd/index.production.js +1 -1
  93. package/build/umd/index.production.js.map +1 -1
  94. package/package.json +2 -1
  95. package/src/core.ts +197 -46
  96. package/src/features/Cells.ts +10 -12
  97. package/src/features/ColumnSizing.ts +72 -129
  98. package/src/features/Columns.ts +16 -15
  99. package/src/features/Expanding.ts +58 -105
  100. package/src/features/Filters.ts +223 -226
  101. package/src/features/Grouping.ts +51 -79
  102. package/src/features/Headers.ts +18 -40
  103. package/src/features/Ordering.ts +1 -1
  104. package/src/features/Pagination.ts +1 -1
  105. package/src/features/Pinning.ts +73 -92
  106. package/src/features/RowSelection.ts +71 -120
  107. package/src/features/Rows.ts +21 -6
  108. package/src/features/Sorting.ts +39 -99
  109. package/src/features/Visibility.ts +21 -50
  110. package/src/filterFns.ts +74 -147
  111. package/src/index.ts +12 -5
  112. package/src/sortingFns.ts +11 -11
  113. package/src/types.ts +5 -18
  114. package/src/utils/filterRowsUtils.ts +59 -56
  115. package/src/utils/{getCoreRowModelSync.ts → getCoreRowModel.ts} +3 -9
  116. package/src/utils/getExpandedRowModel.ts +2 -2
  117. package/src/utils/getFacetedMinMaxValues.ts +37 -0
  118. package/src/utils/getFacetedRowModel.ts +50 -0
  119. package/src/utils/getFacetedUniqueValues.ts +37 -0
  120. package/src/utils/getFilteredRowModel.ts +150 -0
  121. package/src/utils/getGroupedRowModel.ts +53 -62
  122. package/src/utils/getPaginationRowModel.ts +1 -1
  123. package/src/utils/{getSortedRowModelSync.ts → getSortedRowModel.ts} +7 -7
  124. package/src/utils.ts +29 -239
  125. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -112
  126. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
  127. package/build/cjs/utils/getColumnFilteredRowModelSync.js +0 -115
  128. package/build/cjs/utils/getColumnFilteredRowModelSync.js.map +0 -1
  129. package/build/cjs/utils/getCoreRowModelAsync.js +0 -125
  130. package/build/cjs/utils/getCoreRowModelAsync.js.map +0 -1
  131. package/build/cjs/utils/getCoreRowModelSync.js +0 -102
  132. package/build/cjs/utils/getCoreRowModelSync.js.map +0 -1
  133. package/build/cjs/utils/getGlobalFilteredRowModelSync.js +0 -91
  134. package/build/cjs/utils/getGlobalFilteredRowModelSync.js.map +0 -1
  135. package/build/cjs/utils/getSortedRowModelSync.js +0 -118
  136. package/build/cjs/utils/getSortedRowModelSync.js.map +0 -1
  137. package/build/types/utils/getColumnFilteredRowModelAsync.d.ts +0 -4
  138. package/build/types/utils/getColumnFilteredRowModelSync.d.ts +0 -2
  139. package/build/types/utils/getCoreRowModelAsync.d.ts +0 -4
  140. package/build/types/utils/getGlobalFilteredRowModelAsync.d.ts +0 -4
  141. package/build/types/utils/getGlobalFilteredRowModelSync.d.ts +0 -2
  142. package/build/types/utils/getSortedRowModelAsync.d.ts +0 -13
  143. package/build/types/utils/getSortedRowModelSync.d.ts +0 -2
  144. package/src/utils/getColumnFilteredRowModelAsync.ts +0 -118
  145. package/src/utils/getColumnFilteredRowModelSync.ts +0 -102
  146. package/src/utils/getCoreRowModelAsync.ts +0 -104
  147. package/src/utils/getGlobalFilteredRowModelAsync.ts +0 -96
  148. package/src/utils/getGlobalFilteredRowModelSync.ts +0 -79
  149. package/src/utils/getSortedRowModelAsync.ts +0 -200
@@ -15,43 +15,53 @@ Object.defineProperty(exports, '__esModule', { value: true });
15
15
  var utils = require('../utils.js');
16
16
 
17
17
  //
18
- var Rows = {
18
+ const Rows = {
19
19
  // createRow: <TGenerics extends TableGenerics>(
20
20
  // row: Row<TGenerics>,
21
21
  // instance: TableInstance<TGenerics>
22
22
  // ): CellsRow<TGenerics> => {
23
23
  // return {}
24
24
  // },
25
- createInstance: function createInstance(instance) {
25
+ createInstance: instance => {
26
26
  return {
27
- getRowId: function getRowId(row, index, parent) {
27
+ getRowId: (row, index, parent) => {
28
28
  var _instance$options$get;
29
29
 
30
30
  return (_instance$options$get = instance.options.getRowId == null ? void 0 : instance.options.getRowId(row, index, parent)) != null ? _instance$options$get : "" + (parent ? [parent.id, index].join('.') : index);
31
31
  },
32
- createRow: function createRow(id, original, rowIndex, depth, values) {
33
- var row = {
34
- id: id,
32
+ createRow: (id, original, rowIndex, depth, subRows) => {
33
+ let row = {
34
+ id,
35
35
  index: rowIndex,
36
- original: original,
37
- depth: depth,
38
- values: values,
39
- subRows: [],
40
- getLeafRows: function getLeafRows() {
41
- return utils.flattenBy(row.subRows, function (d) {
42
- return d.subRows;
43
- });
44
- }
36
+ original,
37
+ depth,
38
+ valuesCache: {},
39
+ getValue: columnId => {
40
+ if (row.valuesCache.hasOwnProperty(columnId)) {
41
+ return row.valuesCache[columnId];
42
+ }
43
+
44
+ const column = instance.getColumn(columnId);
45
+
46
+ if (!column.accessorFn) {
47
+ throw new Error();
48
+ }
49
+
50
+ row.valuesCache[columnId] = column.accessorFn(row.original, rowIndex);
51
+ return row.valuesCache[columnId];
52
+ },
53
+ subRows: subRows != null ? subRows : [],
54
+ getLeafRows: () => utils.flattenBy(row.subRows, d => d.subRows)
45
55
  };
46
56
 
47
- for (var i = 0; i < instance._features.length; i++) {
48
- var feature = instance._features[i];
49
- Object.assign(row, feature.createRow == null ? void 0 : feature.createRow(row, instance));
57
+ for (let i = 0; i < instance._features.length; i++) {
58
+ const feature = instance._features[i];
59
+ Object.assign(row, feature == null ? void 0 : feature.createRow == null ? void 0 : feature.createRow(row, instance));
50
60
  }
51
61
 
52
62
  return row;
53
63
  },
54
- getCoreRowModel: function getCoreRowModel() {
64
+ getCoreRowModel: () => {
55
65
  if (!instance._getCoreRowModel) {
56
66
  instance._getCoreRowModel = instance.options.getCoreRowModel(instance);
57
67
  }
@@ -60,11 +70,11 @@ var Rows = {
60
70
  },
61
71
  // The final calls start at the bottom of the model,
62
72
  // expanded rows, which then work their way up
63
- getRowModel: function getRowModel() {
73
+ getRowModel: () => {
64
74
  return instance.getPaginationRowModel();
65
75
  },
66
- getRow: function getRow(id) {
67
- var row = instance.getRowModel().rowsById[id];
76
+ getRow: id => {
77
+ const row = instance.getRowModel().rowsById[id];
68
78
 
69
79
  if (!row) {
70
80
  if (process.env.NODE_ENV !== 'production') {
@@ -1 +1 @@
1
- {"version":3,"file":"Rows.js","sources":["../../../src/features/Rows.ts"],"sourcesContent":["import {\n TableGenerics,\n TableInstance,\n Row,\n RowModel,\n RowValues,\n} from '../types'\nimport { flattenBy } from '../utils'\n\nexport type CoreRow<TGenerics extends TableGenerics> = {\n id: string\n index: number\n original?: TGenerics['Row']\n depth: number\n values: RowValues\n subRows: Row<TGenerics>[]\n getLeafRows: () => Row<TGenerics>[]\n originalSubRows?: TGenerics['Row'][]\n}\n\nexport type RowsOptions<TGenerics extends TableGenerics> = {\n getCoreRowModel: (\n instance: TableInstance<TGenerics>\n ) => () => RowModel<TGenerics>\n getSubRows?: (\n originalRow: TGenerics['Row'],\n index: number\n ) => undefined | TGenerics['Row'][]\n getRowId?: (\n originalRow: TGenerics['Row'],\n index: number,\n parent?: Row<TGenerics>\n ) => string\n}\n\nexport type RowsInstance<TGenerics extends TableGenerics> = {\n getRowId: (\n _: TGenerics['Row'],\n index: number,\n parent?: Row<TGenerics>\n ) => string\n createRow: (\n id: string,\n original: TGenerics['Row'] | undefined,\n rowIndex: number,\n depth: number,\n values: Record<string, any>\n ) => Row<TGenerics>\n getCoreRowModel: () => RowModel<TGenerics>\n _getCoreRowModel?: () => RowModel<TGenerics>\n getRowModel: () => RowModel<TGenerics>\n getRow: (id: string) => Row<TGenerics>\n}\n\n//\n\nexport const Rows = {\n // createRow: <TGenerics extends TableGenerics>(\n // row: Row<TGenerics>,\n // instance: TableInstance<TGenerics>\n // ): CellsRow<TGenerics> => {\n // return {}\n // },\n\n createInstance: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): RowsInstance<TGenerics> => {\n return {\n getRowId: (\n row: TGenerics['Row'],\n index: number,\n parent?: Row<TGenerics>\n ) =>\n instance.options.getRowId?.(row, index, parent) ??\n `${parent ? [parent.id, index].join('.') : index}`,\n createRow: (id, original, rowIndex, depth, values) => {\n let row: CoreRow<TGenerics> = {\n id,\n index: rowIndex,\n original,\n depth,\n values,\n subRows: [],\n getLeafRows: () => flattenBy(row.subRows, d => d.subRows),\n }\n\n for (let i = 0; i < instance._features.length; i++) {\n const feature = instance._features[i]\n Object.assign(row, feature.createRow?.(row, instance))\n }\n\n return row as Row<TGenerics>\n },\n\n getCoreRowModel: () => {\n if (!instance._getCoreRowModel) {\n instance._getCoreRowModel = instance.options.getCoreRowModel(instance)\n }\n\n return instance._getCoreRowModel()\n },\n\n // The final calls start at the bottom of the model,\n // expanded rows, which then work their way up\n\n getRowModel: () => {\n return instance.getPaginationRowModel()\n },\n getRow: (id: string) => {\n const row = instance.getRowModel().rowsById[id]\n\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRow expected an ID, but got ${id}`)\n }\n throw new Error()\n }\n\n return row\n },\n }\n },\n}\n"],"names":["Rows","createInstance","instance","getRowId","row","index","parent","options","id","join","createRow","original","rowIndex","depth","values","subRows","getLeafRows","flattenBy","d","i","_features","length","feature","Object","assign","getCoreRowModel","_getCoreRowModel","getRowModel","getPaginationRowModel","getRow","rowsById","process","env","NODE_ENV","Error"],"mappings":"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"}
1
+ {"version":3,"file":"Rows.js","sources":["../../../src/features/Rows.ts"],"sourcesContent":["import {\n TableGenerics,\n TableInstance,\n Row,\n RowModel,\n RowValues,\n} from '../types'\nimport { flattenBy } from '../utils'\n\nexport type CoreRow<TGenerics extends TableGenerics> = {\n id: string\n index: number\n original?: TGenerics['Row']\n depth: number\n valuesCache: Record<string, any>\n getValue: (columnId: string) => any\n subRows: Row<TGenerics>[]\n getLeafRows: () => Row<TGenerics>[]\n originalSubRows?: TGenerics['Row'][]\n}\n\nexport type RowsOptions<TGenerics extends TableGenerics> = {\n getCoreRowModel: (\n instance: TableInstance<TGenerics>\n ) => () => RowModel<TGenerics>\n getSubRows?: (\n originalRow: TGenerics['Row'],\n index: number\n ) => undefined | TGenerics['Row'][]\n getRowId?: (\n originalRow: TGenerics['Row'],\n index: number,\n parent?: Row<TGenerics>\n ) => string\n}\n\nexport type RowsInstance<TGenerics extends TableGenerics> = {\n getRowId: (\n _: TGenerics['Row'],\n index: number,\n parent?: Row<TGenerics>\n ) => string\n createRow: (\n id: string,\n original: TGenerics['Row'] | undefined,\n rowIndex: number,\n depth: number,\n subRows?: Row<TGenerics>[]\n ) => Row<TGenerics>\n getCoreRowModel: () => RowModel<TGenerics>\n _getCoreRowModel?: () => RowModel<TGenerics>\n getRowModel: () => RowModel<TGenerics>\n getRow: (id: string) => Row<TGenerics>\n}\n\n//\n\nexport const Rows = {\n // createRow: <TGenerics extends TableGenerics>(\n // row: Row<TGenerics>,\n // instance: TableInstance<TGenerics>\n // ): CellsRow<TGenerics> => {\n // return {}\n // },\n\n createInstance: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): RowsInstance<TGenerics> => {\n return {\n getRowId: (\n row: TGenerics['Row'],\n index: number,\n parent?: Row<TGenerics>\n ) =>\n instance.options.getRowId?.(row, index, parent) ??\n `${parent ? [parent.id, index].join('.') : index}`,\n createRow: (id, original, rowIndex, depth, subRows) => {\n let row: CoreRow<TGenerics> = {\n id,\n index: rowIndex,\n original,\n depth,\n valuesCache: {},\n getValue: columnId => {\n if (row.valuesCache.hasOwnProperty(columnId)) {\n return row.valuesCache[columnId]\n }\n const column = instance.getColumn(columnId)\n if (!column.accessorFn) {\n throw new Error()\n }\n row.valuesCache[columnId] = column.accessorFn(\n row.original,\n rowIndex\n )\n return row.valuesCache[columnId]\n },\n subRows: subRows ?? [],\n getLeafRows: () => flattenBy(row.subRows, d => d.subRows),\n }\n\n for (let i = 0; i < instance._features.length; i++) {\n const feature = instance._features[i]\n Object.assign(row, feature?.createRow?.(row, instance))\n }\n\n return row as Row<TGenerics>\n },\n\n getCoreRowModel: () => {\n if (!instance._getCoreRowModel) {\n instance._getCoreRowModel = instance.options.getCoreRowModel(instance)\n }\n\n return instance._getCoreRowModel()\n },\n\n // The final calls start at the bottom of the model,\n // expanded rows, which then work their way up\n\n getRowModel: () => {\n return instance.getPaginationRowModel()\n },\n getRow: (id: string) => {\n const row = instance.getRowModel().rowsById[id]\n\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRow expected an ID, but got ${id}`)\n }\n throw new Error()\n }\n\n return row\n },\n }\n },\n}\n"],"names":["Rows","createInstance","instance","getRowId","row","index","parent","options","id","join","createRow","original","rowIndex","depth","subRows","valuesCache","getValue","columnId","hasOwnProperty","column","getColumn","accessorFn","Error","getLeafRows","flattenBy","d","i","_features","length","feature","Object","assign","getCoreRowModel","_getCoreRowModel","getRowModel","getPaginationRowModel","getRow","rowsById","process","env","NODE_ENV"],"mappings":"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"}
@@ -12,65 +12,38 @@
12
12
 
13
13
  Object.defineProperty(exports, '__esModule', { value: true });
14
14
 
15
- var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.js');
16
15
  var sortingFns = require('../sortingFns.js');
17
16
  var utils = require('../utils.js');
18
17
 
19
18
  //
20
- var Sorting = {
21
- getInitialState: function getInitialState(state) {
22
- return _rollupPluginBabelHelpers["extends"]({
23
- sorting: []
24
- }, state);
19
+ const Sorting = {
20
+ getInitialState: state => {
21
+ return {
22
+ sorting: [],
23
+ ...state
24
+ };
25
25
  },
26
- getDefaultColumn: function getDefaultColumn() {
26
+ getDefaultColumn: () => {
27
27
  return {
28
28
  sortingFn: 'auto'
29
29
  };
30
30
  },
31
- getDefaultOptions: function getDefaultOptions(instance) {
31
+ getDefaultOptions: instance => {
32
32
  return {
33
33
  onSortingChange: utils.makeStateUpdater('sorting', instance),
34
- isMultiSortEvent: function isMultiSortEvent(e) {
34
+ isMultiSortEvent: e => {
35
35
  return e.shiftKey;
36
36
  }
37
37
  };
38
38
  },
39
- createColumn: function createColumn(column, instance) {
39
+ createColumn: (column, instance) => {
40
40
  return {
41
- sortingFn: column.sortingFn,
42
- getCanSort: function getCanSort() {
43
- return instance.getColumnCanSort(column.id);
44
- },
45
- getCanMultiSort: function getCanMultiSort() {
46
- return instance.getColumnCanMultiSort(column.id);
47
- },
48
- getSortIndex: function getSortIndex() {
49
- return instance.getColumnSortIndex(column.id);
50
- },
51
- getIsSorted: function getIsSorted() {
52
- return instance.getColumnIsSorted(column.id);
53
- },
54
- resetSorting: function resetSorting() {
55
- return instance.resetSorting(column.id);
56
- },
57
- toggleSorting: function toggleSorting(desc, isMulti) {
58
- return instance.toggleColumnSorting(column.id, desc, isMulti);
59
- },
60
- getToggleSortingHandler: function getToggleSortingHandler() {
61
- return instance.getToggleSortingHandler(column.id);
62
- }
63
- };
64
- },
65
- createInstance: function createInstance(instance) {
66
- return {
67
- getColumnAutoSortingFn: function getColumnAutoSortingFn(columnId) {
68
- var firstRows = instance.getGlobalFilteredRowModel().flatRows.slice(100);
69
- var isString = false;
41
+ getAutoSortingFn: () => {
42
+ const firstRows = instance.getFilteredRowModel().flatRows.slice(100);
43
+ let isString = false;
70
44
 
71
- for (var _iterator = _rollupPluginBabelHelpers.createForOfIteratorHelperLoose(firstRows), _step; !(_step = _iterator()).done;) {
72
- var row = _step.value;
73
- var value = row == null ? void 0 : row.values[columnId];
45
+ for (const row of firstRows) {
46
+ const value = row == null ? void 0 : row.getValue(column.id);
74
47
 
75
48
  if (Object.prototype.toString.call(value) === '[object Date]') {
76
49
  return sortingFns.sortingFns.datetime;
@@ -91,9 +64,9 @@ var Sorting = {
91
64
 
92
65
  return sortingFns.sortingFns.basic;
93
66
  },
94
- getColumnAutoSortDir: function getColumnAutoSortDir(columnId) {
95
- var firstRow = instance.getGlobalFilteredRowModel().flatRows[0];
96
- var value = firstRow == null ? void 0 : firstRow.values[columnId];
67
+ getAutoSortDir: () => {
68
+ const firstRow = instance.getFilteredRowModel().flatRows[0];
69
+ const value = firstRow == null ? void 0 : firstRow.getValue(column.id);
97
70
 
98
71
  if (typeof value === 'string') {
99
72
  return 'asc';
@@ -101,27 +74,19 @@ var Sorting = {
101
74
 
102
75
  return 'desc';
103
76
  },
104
- getColumnSortingFn: function getColumnSortingFn(columnId) {
77
+ getSortingFn: () => {
105
78
  var _ref;
106
79
 
107
- var column = instance.getColumn(columnId);
108
- var userSortingFn = instance.options.sortingFns;
80
+ const userSortingFn = instance.options.sortingFns;
109
81
 
110
82
  if (!column) {
111
83
  throw new Error();
112
84
  }
113
85
 
114
- return utils.isFunction(column.sortingFn) ? column.sortingFn : column.sortingFn === 'auto' ? instance.getColumnAutoSortingFn(columnId) : (_ref = userSortingFn == null ? void 0 : userSortingFn[column.sortingFn]) != null ? _ref : sortingFns.sortingFns[column.sortingFn];
115
- },
116
- setSorting: function setSorting(updater) {
117
- return instance.options.onSortingChange == null ? void 0 : instance.options.onSortingChange(updater);
86
+ return utils.isFunction(column.sortingFn) ? column.sortingFn : column.sortingFn === 'auto' ? column.getAutoSortingFn() : (_ref = userSortingFn == null ? void 0 : userSortingFn[column.sortingFn]) != null ? _ref : sortingFns.sortingFns[column.sortingFn];
118
87
  },
119
- toggleColumnSorting: function toggleColumnSorting(columnId, desc, multi) {
120
- var column = instance.getColumn(columnId);
121
-
122
- if (!column) {
123
- throw new Error();
124
- } // if (column.columns.length) {
88
+ toggleSorting: (desc, multi) => {
89
+ // if (column.columns.length) {
125
90
  // column.columns.forEach((c, i) => {
126
91
  // if (c.id) {
127
92
  // instance.toggleColumnSorting(c.id, undefined, multi || !!i)
@@ -129,22 +94,16 @@ var Sorting = {
129
94
  // })
130
95
  // return
131
96
  // }
132
-
133
-
134
- instance.setSorting(function (old) {
97
+ instance.setSorting(old => {
135
98
  var _ref2, _column$sortDescFirst, _instance$options$ena, _instance$options$ena2;
136
99
 
137
100
  // Find any existing sorting for this column
138
- var existingSorting = old == null ? void 0 : old.find(function (d) {
139
- return d.id === columnId;
140
- });
141
- var existingIndex = old == null ? void 0 : old.findIndex(function (d) {
142
- return d.id === columnId;
143
- });
144
- var hasDescDefined = typeof desc !== 'undefined' && desc !== null;
145
- var newSorting = []; // What should we do with this sort action?
101
+ const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);
102
+ const existingIndex = old == null ? void 0 : old.findIndex(d => d.id === column.id);
103
+ const hasDescDefined = typeof desc !== 'undefined' && desc !== null;
104
+ let newSorting = []; // What should we do with this sort action?
146
105
 
147
- var sortAction;
106
+ let sortAction;
148
107
 
149
108
  if (column.getCanMultiSort() && multi) {
150
109
  if (existingSorting) {
@@ -163,7 +122,7 @@ var Sorting = {
163
122
  }
164
123
  }
165
124
 
166
- var sortDescFirst = (_ref2 = (_column$sortDescFirst = column.sortDescFirst) != null ? _column$sortDescFirst : instance.options.sortDescFirst) != null ? _ref2 : instance.getColumnAutoSortDir(columnId) === 'desc'; // Handle toggle states that will remove the sorting
125
+ const sortDescFirst = (_ref2 = (_column$sortDescFirst = column.sortDescFirst) != null ? _column$sortDescFirst : instance.options.sortDescFirst) != null ? _ref2 : column.getAutoSortDir() === 'desc'; // Handle toggle states that will remove the sorting
167
126
 
168
127
  if (sortAction === 'toggle' && ( // Must be toggling
169
128
  (_instance$options$ena = instance.options.enableSortingRemoval) != null ? _instance$options$ena : true) && // If enableSortRemove, enable in general
@@ -176,109 +135,81 @@ var Sorting = {
176
135
 
177
136
  if (sortAction === 'replace') {
178
137
  newSorting = [{
179
- id: columnId,
138
+ id: column.id,
180
139
  desc: hasDescDefined ? desc : !!sortDescFirst
181
140
  }];
182
141
  } else if (sortAction === 'add' && old != null && old.length) {
183
142
  var _instance$options$max;
184
143
 
185
- newSorting = [].concat(old, [{
186
- id: columnId,
144
+ newSorting = [...old, {
145
+ id: column.id,
187
146
  desc: hasDescDefined ? desc : !!sortDescFirst
188
- }]); // Take latest n columns
147
+ }]; // Take latest n columns
189
148
 
190
149
  newSorting.splice(0, newSorting.length - ((_instance$options$max = instance.options.maxMultiSortColCount) != null ? _instance$options$max : Number.MAX_SAFE_INTEGER));
191
150
  } else if (sortAction === 'toggle' && old != null && old.length) {
192
151
  // This flips (or sets) the
193
- newSorting = old.map(function (d) {
194
- if (d.id === columnId) {
195
- return _rollupPluginBabelHelpers["extends"]({}, d, {
152
+ newSorting = old.map(d => {
153
+ if (d.id === column.id) {
154
+ return { ...d,
196
155
  desc: hasDescDefined ? desc : !(existingSorting != null && existingSorting.desc)
197
- });
156
+ };
198
157
  }
199
158
 
200
159
  return d;
201
160
  });
202
161
  } else if (sortAction === 'remove' && old != null && old.length) {
203
- newSorting = old.filter(function (d) {
204
- return d.id !== columnId;
205
- });
162
+ newSorting = old.filter(d => d.id !== column.id);
206
163
  }
207
164
 
208
165
  return newSorting;
209
166
  });
210
167
  },
211
- getColumnCanSort: function getColumnCanSort(columnId) {
212
- var _ref3, _ref4, _column$enableSorting;
168
+ getCanSort: () => {
169
+ var _column$enableSorting, _instance$options$ena3;
213
170
 
214
- var column = instance.getColumn(columnId);
215
-
216
- if (!column) {
217
- throw new Error();
218
- }
219
-
220
- return (_ref3 = (_ref4 = (_column$enableSorting = column.enableSorting) != null ? _column$enableSorting : instance.options.enableSorting) != null ? _ref4 : column.defaultCanSort) != null ? _ref3 : !!column.accessorFn // (!!column.accessorFn ||
221
- // column.columns?.some(c => c.id && instance.getColumnCanSort(c.id))) ??
222
- // false
223
- ;
171
+ return ((_column$enableSorting = column.enableSorting) != null ? _column$enableSorting : true) && ((_instance$options$ena3 = instance.options.enableSorting) != null ? _instance$options$ena3 : true) && !!column.accessorFn;
224
172
  },
225
- getColumnCanMultiSort: function getColumnCanMultiSort(columnId) {
226
- var _ref5, _column$enableMultiSo;
227
-
228
- var column = instance.getColumn(columnId);
229
-
230
- if (!column) {
231
- throw new Error();
232
- }
173
+ getCanMultiSort: () => {
174
+ var _ref3, _column$enableMultiSo;
233
175
 
234
- return (_ref5 = (_column$enableMultiSo = column.enableMultiSort) != null ? _column$enableMultiSo : instance.options.enableMultiSort) != null ? _ref5 : !!column.accessorFn;
176
+ return (_ref3 = (_column$enableMultiSo = column.enableMultiSort) != null ? _column$enableMultiSo : instance.options.enableMultiSort) != null ? _ref3 : !!column.accessorFn;
235
177
  },
236
- getColumnIsSorted: function getColumnIsSorted(columnId) {
178
+ getIsSorted: () => {
237
179
  var _instance$getState$so;
238
180
 
239
- var columnSort = (_instance$getState$so = instance.getState().sorting) == null ? void 0 : _instance$getState$so.find(function (d) {
240
- return d.id === columnId;
241
- });
181
+ const columnSort = (_instance$getState$so = instance.getState().sorting) == null ? void 0 : _instance$getState$so.find(d => d.id === column.id);
242
182
  return !columnSort ? false : columnSort.desc ? 'desc' : 'asc';
243
183
  },
244
- getColumnSortIndex: function getColumnSortIndex(columnId) {
184
+ getSortIndex: () => {
245
185
  var _instance$getState$so2, _instance$getState$so3;
246
186
 
247
- return (_instance$getState$so2 = (_instance$getState$so3 = instance.getState().sorting) == null ? void 0 : _instance$getState$so3.findIndex(function (d) {
248
- return d.id === columnId;
249
- })) != null ? _instance$getState$so2 : -1;
187
+ return (_instance$getState$so2 = (_instance$getState$so3 = instance.getState().sorting) == null ? void 0 : _instance$getState$so3.findIndex(d => d.id === column.id)) != null ? _instance$getState$so2 : -1;
250
188
  },
251
- resetSorting: function resetSorting(columnId) {
189
+ resetSorting: columnId => {
252
190
  if (columnId) {
253
- instance.setSorting(function (old) {
254
- return old != null && old.length ? old.filter(function (d) {
255
- return d.id !== columnId;
256
- }) : [];
257
- });
191
+ instance.setSorting(old => old != null && old.length ? old.filter(d => d.id !== columnId) : []);
258
192
  } else {
259
193
  var _instance$initialStat, _instance$initialStat2;
260
194
 
261
195
  instance.setSorting((_instance$initialStat = (_instance$initialStat2 = instance.initialState) == null ? void 0 : _instance$initialStat2.sorting) != null ? _instance$initialStat : []);
262
196
  }
263
197
  },
264
- getToggleSortingHandler: function getToggleSortingHandler(columnId) {
265
- var column = instance.getColumn(columnId);
266
-
267
- if (!column) {
268
- throw new Error();
269
- }
270
-
271
- var canSort = column.getCanSort();
272
- return function (e) {
198
+ getToggleSortingHandler: () => {
199
+ const canSort = column.getCanSort();
200
+ return e => {
273
201
  if (!canSort) return;
274
202
  e.persist == null ? void 0 : e.persist();
275
203
  column.toggleSorting == null ? void 0 : column.toggleSorting(undefined, column.getCanMultiSort() ? instance.options.isMultiSortEvent == null ? void 0 : instance.options.isMultiSortEvent(e) : false);
276
204
  };
277
- },
278
- getPreSortedRowModel: function getPreSortedRowModel() {
279
- return instance.getGlobalFilteredRowModel();
280
- },
281
- getSortedRowModel: function getSortedRowModel() {
205
+ }
206
+ };
207
+ },
208
+ createInstance: instance => {
209
+ return {
210
+ setSorting: updater => instance.options.onSortingChange == null ? void 0 : instance.options.onSortingChange(updater),
211
+ getPreSortedRowModel: () => instance.getFilteredRowModel(),
212
+ getSortedRowModel: () => {
282
213
  if (!instance._getSortedRowModel && instance.options.getSortedRowModel) {
283
214
  instance._getSortedRowModel = instance.options.getSortedRowModel(instance);
284
215
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Sorting.js","sources":["../../../src/features/Sorting.ts"],"sourcesContent":["import { RowModel } from '..'\nimport {\n BuiltInSortingFn,\n reSplitAlphaNumeric,\n sortingFns,\n} from '../sortingFns'\n\nimport {\n Column,\n OnChangeFn,\n TableGenerics,\n TableInstance,\n Row,\n Updater,\n TableFeature,\n} from '../types'\n\nimport { isFunction, makeStateUpdater, Overwrite } from '../utils'\n\nexport type SortDirection = 'asc' | 'desc'\n\nexport type ColumnSort = {\n id: string\n desc: boolean\n}\n\nexport type SortingState = ColumnSort[]\n\nexport type SortingFn<TGenerics extends TableGenerics> = {\n (rowA: Row<TGenerics>, rowB: Row<TGenerics>, columnId: string): number\n}\n\nexport type CustomSortingFns<TGenerics extends TableGenerics> = Record<\n string,\n SortingFn<TGenerics>\n>\n\nexport type SortingTableState = {\n sorting: SortingState\n}\n\nexport type SortingFnOption<TGenerics extends TableGenerics> =\n | 'auto'\n | BuiltInSortingFn\n | keyof TGenerics['SortingFns']\n | SortingFn<TGenerics>\n\nexport type SortingColumnDef<TGenerics extends TableGenerics> = {\n sortingFn?: SortingFnOption<Overwrite<TGenerics, { Value: any }>>\n sortDescFirst?: boolean\n enableSorting?: boolean\n enableMultiSort?: boolean\n defaultCanSort?: boolean\n invertSorting?: boolean\n sortUndefined?: false | -1 | 1\n}\n\nexport type SortingColumn<TGenerics extends TableGenerics> = {\n sortingFn: SortingFnOption<Overwrite<TGenerics, { Value: any }>>\n getCanSort: () => boolean\n getCanMultiSort: () => boolean\n getSortIndex: () => number\n getIsSorted: () => false | SortDirection\n resetSorting: () => void\n toggleSorting: (desc?: boolean, isMulti?: boolean) => void\n getToggleSortingHandler: () => undefined | ((event: unknown) => void)\n}\n\nexport type SortingOptions<TGenerics extends TableGenerics> = {\n manualSorting?: boolean\n sortingFns?: TGenerics['SortingFns']\n onSortingChange?: OnChangeFn<SortingState>\n enableSorting?: boolean\n enableSortingRemoval?: boolean\n enableMultiRemove?: boolean\n enableMultiSort?: boolean\n sortDescFirst?: boolean\n getSortedRowModel?: (\n instance: TableInstance<TGenerics>\n ) => () => RowModel<TGenerics>\n maxMultiSortColCount?: number\n isMultiSortEvent?: (e: unknown) => boolean\n}\n\nexport type SortingInstance<TGenerics extends TableGenerics> = {\n getColumnAutoSortingFn: (columnId: string) => SortingFn<TGenerics> | undefined\n getColumnAutoSortDir: (columnId: string) => SortDirection\n\n getColumnSortingFn: (columnId: string) => SortingFn<TGenerics> | undefined\n\n setSorting: (updater: Updater<SortingState>) => void\n toggleColumnSorting: (\n columnId: string,\n desc?: boolean,\n multi?: boolean\n ) => void\n resetSorting: (columnId?: string) => void\n getColumnCanSort: (columnId: string) => boolean\n getColumnCanMultiSort: (columnId: string) => boolean\n getColumnIsSorted: (columnId: string) => false | 'asc' | 'desc'\n getColumnSortIndex: (columnId: string) => number\n getToggleSortingHandler: (\n columnId: string\n ) => undefined | ((event: unknown) => void)\n getPreSortedRowModel: () => RowModel<TGenerics>\n getSortedRowModel: () => RowModel<TGenerics>\n _getSortedRowModel?: () => RowModel<TGenerics>\n}\n\n//\n\nexport const Sorting: TableFeature = {\n getInitialState: (state): SortingTableState => {\n return {\n sorting: [],\n ...state,\n }\n },\n\n getDefaultColumn: <\n TGenerics extends TableGenerics\n >(): SortingColumnDef<TGenerics> => {\n return {\n sortingFn: 'auto',\n }\n },\n\n getDefaultOptions: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): SortingOptions<TGenerics> => {\n return {\n onSortingChange: makeStateUpdater('sorting', instance),\n isMultiSortEvent: (e: unknown) => {\n return (e as MouseEvent).shiftKey\n },\n }\n },\n\n createColumn: <TGenerics extends TableGenerics>(\n column: Column<TGenerics>,\n instance: TableInstance<TGenerics>\n ): SortingColumn<TGenerics> => {\n return {\n sortingFn: column.sortingFn,\n getCanSort: () => instance.getColumnCanSort(column.id),\n getCanMultiSort: () => instance.getColumnCanMultiSort(column.id),\n getSortIndex: () => instance.getColumnSortIndex(column.id),\n getIsSorted: () => instance.getColumnIsSorted(column.id),\n resetSorting: () => instance.resetSorting(column.id),\n toggleSorting: (desc, isMulti) =>\n instance.toggleColumnSorting(column.id, desc, isMulti),\n getToggleSortingHandler: () =>\n instance.getToggleSortingHandler(column.id)!,\n }\n },\n\n createInstance: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): SortingInstance<TGenerics> => {\n let registered = false\n\n return {\n getColumnAutoSortingFn: columnId => {\n const firstRows = instance\n .getGlobalFilteredRowModel()\n .flatRows.slice(100)\n\n let isString = false\n\n for (const row of firstRows) {\n const value = row?.values[columnId]\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime\n }\n\n if (typeof value === 'string') {\n isString = true\n\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric\n }\n }\n }\n\n if (isString) {\n return sortingFns.text\n }\n\n return sortingFns.basic\n },\n getColumnAutoSortDir: columnId => {\n const firstRow = instance.getGlobalFilteredRowModel().flatRows[0]\n\n const value = firstRow?.values[columnId]\n\n if (typeof value === 'string') {\n return 'asc'\n }\n\n return 'desc'\n },\n getColumnSortingFn: columnId => {\n const column = instance.getColumn(columnId)\n const userSortingFn = instance.options.sortingFns\n\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.sortingFn)\n ? column.sortingFn\n : column.sortingFn === 'auto'\n ? instance.getColumnAutoSortingFn(columnId)\n : (userSortingFn as Record<string, any>)?.[\n column.sortingFn as string\n ] ??\n (sortingFns[\n column.sortingFn as BuiltInSortingFn\n ] as SortingFn<TGenerics>)\n },\n\n setSorting: updater => instance.options.onSortingChange?.(updater),\n\n toggleColumnSorting: (columnId, desc, multi) => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // instance.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n instance.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old?.find(d => d.id === columnId)\n const existingIndex = old?.findIndex(d => d.id === columnId)\n const hasDescDefined = typeof desc !== 'undefined' && desc !== null\n\n let newSorting: SortingState = []\n\n // What should we do with this sort action?\n let sortAction\n\n if (column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'add'\n }\n } else {\n // Normal mode\n if (old?.length && existingIndex !== old.length - 1) {\n sortAction = 'replace'\n } else if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'replace'\n }\n }\n\n const sortDescFirst =\n column.sortDescFirst ??\n instance.options.sortDescFirst ??\n instance.getColumnAutoSortDir(columnId) === 'desc'\n\n // Handle toggle states that will remove the sorting\n if (\n sortAction === 'toggle' && // Must be toggling\n (instance.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general\n !hasDescDefined && // Must not be setting desc\n (multi ? instance.options.enableMultiRemove ?? true : true) && // If multi, don't allow if enableMultiRemove\n (existingSorting?.desc // Finally, detect if it should indeed be removed\n ? !sortDescFirst\n : sortDescFirst)\n ) {\n sortAction = 'remove'\n }\n\n if (sortAction === 'replace') {\n newSorting = [\n {\n id: columnId,\n desc: hasDescDefined ? desc! : !!sortDescFirst,\n },\n ]\n } else if (sortAction === 'add' && old?.length) {\n newSorting = [\n ...old,\n {\n id: columnId,\n desc: hasDescDefined ? desc! : !!sortDescFirst,\n },\n ]\n // Take latest n columns\n newSorting.splice(\n 0,\n newSorting.length -\n (instance.options.maxMultiSortColCount ??\n Number.MAX_SAFE_INTEGER)\n )\n } else if (sortAction === 'toggle' && old?.length) {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === columnId) {\n return {\n ...d,\n desc: hasDescDefined ? desc! : !existingSorting?.desc,\n }\n }\n return d\n })\n } else if (sortAction === 'remove' && old?.length) {\n newSorting = old.filter(d => d.id !== columnId)\n }\n\n return newSorting\n })\n },\n\n getColumnCanSort: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n column.enableSorting ??\n instance.options.enableSorting ??\n column.defaultCanSort ??\n !!column.accessorFn\n // (!!column.accessorFn ||\n // column.columns?.some(c => c.id && instance.getColumnCanSort(c.id))) ??\n // false\n )\n },\n\n getColumnCanMultiSort: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n column.enableMultiSort ??\n instance.options.enableMultiSort ??\n !!column.accessorFn\n )\n },\n\n getColumnIsSorted: columnId => {\n const columnSort = instance\n .getState()\n .sorting?.find(d => d.id === columnId)\n\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'\n },\n\n getColumnSortIndex: columnId =>\n instance.getState().sorting?.findIndex(d => d.id === columnId) ?? -1,\n\n resetSorting: (columnId?: string) => {\n if (columnId) {\n instance.setSorting(old =>\n old?.length ? old.filter(d => d.id !== columnId) : []\n )\n } else {\n instance.setSorting(instance.initialState?.sorting ?? [])\n }\n },\n\n getToggleSortingHandler: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n const canSort = column.getCanSort()\n\n return (e: unknown) => {\n if (!canSort) return\n ;(e as any).persist?.()\n column.toggleSorting?.(\n undefined,\n column.getCanMultiSort()\n ? instance.options.isMultiSortEvent?.(e)\n : false\n )\n }\n },\n\n getPreSortedRowModel: () => instance.getGlobalFilteredRowModel(),\n getSortedRowModel: () => {\n if (\n !instance._getSortedRowModel &&\n instance.options.getSortedRowModel\n ) {\n instance._getSortedRowModel =\n instance.options.getSortedRowModel(instance)\n }\n\n if (instance.options.manualSorting || !instance._getSortedRowModel) {\n return instance.getPreSortedRowModel()\n }\n\n return instance._getSortedRowModel()\n },\n }\n },\n}\n"],"names":["Sorting","getInitialState","state","_extends","sorting","getDefaultColumn","sortingFn","getDefaultOptions","instance","onSortingChange","makeStateUpdater","isMultiSortEvent","e","shiftKey","createColumn","column","getCanSort","getColumnCanSort","id","getCanMultiSort","getColumnCanMultiSort","getSortIndex","getColumnSortIndex","getIsSorted","getColumnIsSorted","resetSorting","toggleSorting","desc","isMulti","toggleColumnSorting","getToggleSortingHandler","createInstance","getColumnAutoSortingFn","columnId","firstRows","getGlobalFilteredRowModel","flatRows","slice","isString","_createForOfIteratorHelperLoose","row","value","values","Object","prototype","toString","call","sortingFns","datetime","split","reSplitAlphaNumeric","length","alphanumeric","text","basic","getColumnAutoSortDir","firstRow","getColumnSortingFn","getColumn","userSortingFn","options","Error","isFunction","setSorting","updater","multi","old","existingSorting","find","d","existingIndex","findIndex","hasDescDefined","newSorting","sortAction","sortDescFirst","enableSortingRemoval","enableMultiRemove","splice","maxMultiSortColCount","Number","MAX_SAFE_INTEGER","map","filter","enableSorting","defaultCanSort","accessorFn","enableMultiSort","columnSort","getState","initialState","canSort","persist","undefined","getPreSortedRowModel","getSortedRowModel","_getSortedRowModel","manualSorting"],"mappings":"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"}
1
+ {"version":3,"file":"Sorting.js","sources":["../../../src/features/Sorting.ts"],"sourcesContent":["import { RowModel } from '..'\nimport {\n BuiltInSortingFn,\n reSplitAlphaNumeric,\n sortingFns,\n} from '../sortingFns'\n\nimport {\n Column,\n OnChangeFn,\n TableGenerics,\n TableInstance,\n Row,\n Updater,\n TableFeature,\n} from '../types'\n\nimport { isFunction, makeStateUpdater, Overwrite } from '../utils'\n\nexport type SortDirection = 'asc' | 'desc'\n\nexport type ColumnSort = {\n id: string\n desc: boolean\n}\n\nexport type SortingState = ColumnSort[]\n\nexport type SortingFn<TGenerics extends TableGenerics> = {\n (rowA: Row<TGenerics>, rowB: Row<TGenerics>, columnId: string): number\n}\n\nexport type CustomSortingFns<TGenerics extends TableGenerics> = Record<\n string,\n SortingFn<TGenerics>\n>\n\nexport type SortingTableState = {\n sorting: SortingState\n}\n\nexport type SortingFnOption<TGenerics extends TableGenerics> =\n | 'auto'\n | BuiltInSortingFn\n | keyof TGenerics['SortingFns']\n | SortingFn<TGenerics>\n\nexport type SortingColumnDef<TGenerics extends TableGenerics> = {\n sortingFn?: SortingFnOption<Overwrite<TGenerics, { Value: any }>>\n sortDescFirst?: boolean\n enableSorting?: boolean\n enableMultiSort?: boolean\n invertSorting?: boolean\n sortUndefined?: false | -1 | 1\n}\n\nexport type SortingColumn<TGenerics extends TableGenerics> = {\n getAutoSortingFn: () => SortingFn<TGenerics>\n getAutoSortDir: () => SortDirection\n getSortingFn: () => SortingFn<TGenerics>\n getCanSort: () => boolean\n getCanMultiSort: () => boolean\n getSortIndex: () => number\n getIsSorted: () => false | SortDirection\n resetSorting: () => void\n toggleSorting: (desc?: boolean, isMulti?: boolean) => void\n getToggleSortingHandler: () => undefined | ((event: unknown) => void)\n}\n\nexport type SortingOptions<TGenerics extends TableGenerics> = {\n manualSorting?: boolean\n sortingFns?: TGenerics['SortingFns']\n onSortingChange?: OnChangeFn<SortingState>\n enableSorting?: boolean\n enableSortingRemoval?: boolean\n enableMultiRemove?: boolean\n enableMultiSort?: boolean\n sortDescFirst?: boolean\n getSortedRowModel?: (\n instance: TableInstance<TGenerics>\n ) => () => RowModel<TGenerics>\n maxMultiSortColCount?: number\n isMultiSortEvent?: (e: unknown) => boolean\n}\n\nexport type SortingInstance<TGenerics extends TableGenerics> = {\n setSorting: (updater: Updater<SortingState>) => void\n getPreSortedRowModel: () => RowModel<TGenerics>\n getSortedRowModel: () => RowModel<TGenerics>\n _getSortedRowModel?: () => RowModel<TGenerics>\n}\n\n//\n\nexport const Sorting: TableFeature = {\n getInitialState: (state): SortingTableState => {\n return {\n sorting: [],\n ...state,\n }\n },\n\n getDefaultColumn: <\n TGenerics extends TableGenerics\n >(): SortingColumnDef<TGenerics> => {\n return {\n sortingFn: 'auto',\n }\n },\n\n getDefaultOptions: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): SortingOptions<TGenerics> => {\n return {\n onSortingChange: makeStateUpdater('sorting', instance),\n isMultiSortEvent: (e: unknown) => {\n return (e as MouseEvent).shiftKey\n },\n }\n },\n\n createColumn: <TGenerics extends TableGenerics>(\n column: Column<TGenerics>,\n instance: TableInstance<TGenerics>\n ): SortingColumn<TGenerics> => {\n return {\n getAutoSortingFn: () => {\n const firstRows = instance.getFilteredRowModel().flatRows.slice(100)\n\n let isString = false\n\n for (const row of firstRows) {\n const value = row?.getValue(column.id)\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime\n }\n\n if (typeof value === 'string') {\n isString = true\n\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric\n }\n }\n }\n\n if (isString) {\n return sortingFns.text\n }\n\n return sortingFns.basic\n },\n getAutoSortDir: () => {\n const firstRow = instance.getFilteredRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === 'string') {\n return 'asc'\n }\n\n return 'desc'\n },\n getSortingFn: () => {\n const userSortingFn = instance.options.sortingFns\n\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.sortingFn)\n ? column.sortingFn\n : column.sortingFn === 'auto'\n ? column.getAutoSortingFn()\n : (userSortingFn as Record<string, any>)?.[\n column.sortingFn as string\n ] ??\n (sortingFns[\n column.sortingFn as BuiltInSortingFn\n ] as SortingFn<TGenerics>)\n },\n toggleSorting: (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // instance.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n instance.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old?.find(d => d.id === column.id)\n const existingIndex = old?.findIndex(d => d.id === column.id)\n const hasDescDefined = typeof desc !== 'undefined' && desc !== null\n\n let newSorting: SortingState = []\n\n // What should we do with this sort action?\n let sortAction\n\n if (column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'add'\n }\n } else {\n // Normal mode\n if (old?.length && existingIndex !== old.length - 1) {\n sortAction = 'replace'\n } else if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'replace'\n }\n }\n\n const sortDescFirst =\n column.sortDescFirst ??\n instance.options.sortDescFirst ??\n column.getAutoSortDir() === 'desc'\n\n // Handle toggle states that will remove the sorting\n if (\n sortAction === 'toggle' && // Must be toggling\n (instance.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general\n !hasDescDefined && // Must not be setting desc\n (multi ? instance.options.enableMultiRemove ?? true : true) && // If multi, don't allow if enableMultiRemove\n (existingSorting?.desc // Finally, detect if it should indeed be removed\n ? !sortDescFirst\n : sortDescFirst)\n ) {\n sortAction = 'remove'\n }\n\n if (sortAction === 'replace') {\n newSorting = [\n {\n id: column.id,\n desc: hasDescDefined ? desc! : !!sortDescFirst,\n },\n ]\n } else if (sortAction === 'add' && old?.length) {\n newSorting = [\n ...old,\n {\n id: column.id,\n desc: hasDescDefined ? desc! : !!sortDescFirst,\n },\n ]\n // Take latest n columns\n newSorting.splice(\n 0,\n newSorting.length -\n (instance.options.maxMultiSortColCount ??\n Number.MAX_SAFE_INTEGER)\n )\n } else if (sortAction === 'toggle' && old?.length) {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: hasDescDefined ? desc! : !existingSorting?.desc,\n }\n }\n return d\n })\n } else if (sortAction === 'remove' && old?.length) {\n newSorting = old.filter(d => d.id !== column.id)\n }\n\n return newSorting\n })\n },\n\n getCanSort: () => {\n return (\n (column.enableSorting ?? true) &&\n (instance.options.enableSorting ?? true) &&\n !!column.accessorFn\n )\n },\n\n getCanMultiSort: () => {\n return (\n column.enableMultiSort ??\n instance.options.enableMultiSort ??\n !!column.accessorFn\n )\n },\n\n getIsSorted: () => {\n const columnSort = instance\n .getState()\n .sorting?.find(d => d.id === column.id)\n\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'\n },\n\n getSortIndex: () =>\n instance.getState().sorting?.findIndex(d => d.id === column.id) ?? -1,\n\n resetSorting: (columnId?: string) => {\n if (columnId) {\n instance.setSorting(old =>\n old?.length ? old.filter(d => d.id !== columnId) : []\n )\n } else {\n instance.setSorting(instance.initialState?.sorting ?? [])\n }\n },\n\n getToggleSortingHandler: () => {\n const canSort = column.getCanSort()\n\n return (e: unknown) => {\n if (!canSort) return\n ;(e as any).persist?.()\n column.toggleSorting?.(\n undefined,\n column.getCanMultiSort()\n ? instance.options.isMultiSortEvent?.(e)\n : false\n )\n }\n },\n }\n },\n\n createInstance: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): SortingInstance<TGenerics> => {\n let registered = false\n\n return {\n setSorting: updater => instance.options.onSortingChange?.(updater),\n\n getPreSortedRowModel: () => instance.getFilteredRowModel(),\n getSortedRowModel: () => {\n if (\n !instance._getSortedRowModel &&\n instance.options.getSortedRowModel\n ) {\n instance._getSortedRowModel =\n instance.options.getSortedRowModel(instance)\n }\n\n if (instance.options.manualSorting || !instance._getSortedRowModel) {\n return instance.getPreSortedRowModel()\n }\n\n return instance._getSortedRowModel()\n },\n }\n },\n}\n"],"names":["Sorting","getInitialState","state","sorting","getDefaultColumn","sortingFn","getDefaultOptions","instance","onSortingChange","makeStateUpdater","isMultiSortEvent","e","shiftKey","createColumn","column","getAutoSortingFn","firstRows","getFilteredRowModel","flatRows","slice","isString","row","value","getValue","id","Object","prototype","toString","call","sortingFns","datetime","split","reSplitAlphaNumeric","length","alphanumeric","text","basic","getAutoSortDir","firstRow","getSortingFn","userSortingFn","options","Error","isFunction","toggleSorting","desc","multi","setSorting","old","existingSorting","find","d","existingIndex","findIndex","hasDescDefined","newSorting","sortAction","getCanMultiSort","sortDescFirst","enableSortingRemoval","enableMultiRemove","splice","maxMultiSortColCount","Number","MAX_SAFE_INTEGER","map","filter","getCanSort","enableSorting","accessorFn","enableMultiSort","getIsSorted","columnSort","getState","getSortIndex","resetSorting","columnId","initialState","getToggleSortingHandler","canSort","persist","undefined","createInstance","updater","getPreSortedRowModel","getSortedRowModel","_getSortedRowModel","manualSorting"],"mappings":"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"}