@tanstack/table-core 8.0.0-alpha.65 → 8.0.0-alpha.69

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 (144) 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 -48
  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 +28 -34
  8. package/build/cjs/features/Cells.js.map +1 -1
  9. package/build/cjs/features/ColumnSizing.js +136 -225
  10. package/build/cjs/features/ColumnSizing.js.map +1 -1
  11. package/build/cjs/features/Columns.js +57 -84
  12. package/build/cjs/features/Columns.js.map +1 -1
  13. package/build/cjs/features/Expanding.js +79 -126
  14. package/build/cjs/features/Expanding.js.map +1 -1
  15. package/build/cjs/features/Filters.js +137 -288
  16. package/build/cjs/features/Filters.js.map +1 -1
  17. package/build/cjs/features/Grouping.js +71 -117
  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 +32 -44
  22. package/build/cjs/features/Ordering.js.map +1 -1
  23. package/build/cjs/features/Pagination.js +79 -82
  24. package/build/cjs/features/Pagination.js.map +1 -1
  25. package/build/cjs/features/Pinning.js +99 -178
  26. package/build/cjs/features/Pinning.js.map +1 -1
  27. package/build/cjs/features/RowSelection.js +133 -204
  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 +67 -136
  32. package/build/cjs/features/Sorting.js.map +1 -1
  33. package/build/cjs/features/Visibility.js +56 -118
  34. package/build/cjs/features/Visibility.js.map +1 -1
  35. package/build/cjs/filterFns.js +48 -72
  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 +49 -55
  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 -207
  61. package/build/cjs/utils.js.map +1 -1
  62. package/build/esm/index.js +2024 -2971
  63. package/build/esm/index.js.map +1 -1
  64. package/build/stats-html.html +1 -1
  65. package/build/stats-react.json +421 -481
  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 +4 -15
  69. package/build/types/features/Columns.d.ts +1 -1
  70. package/build/types/features/Expanding.d.ts +2 -7
  71. package/build/types/features/Filters.d.ts +24 -21
  72. package/build/types/features/Grouping.d.ts +5 -11
  73. package/build/types/features/Ordering.d.ts +1 -1
  74. package/build/types/features/Pagination.d.ts +3 -3
  75. package/build/types/features/Pinning.d.ts +1 -5
  76. package/build/types/features/RowSelection.d.ts +2 -8
  77. package/build/types/features/Rows.d.ts +4 -3
  78. package/build/types/features/Sorting.d.ts +5 -15
  79. package/build/types/features/Visibility.d.ts +1 -4
  80. package/build/types/index.d.ts +6 -4
  81. package/build/types/types.d.ts +3 -15
  82. package/build/types/utils/filterRowsUtils.d.ts +3 -3
  83. package/build/types/utils/getCoreRowModel.d.ts +2 -0
  84. package/build/types/utils/getFacetedMinMaxValues.d.ts +2 -0
  85. package/build/types/utils/getFacetedRowModel.d.ts +2 -0
  86. package/build/types/utils/getFacetedUniqueValues.d.ts +2 -0
  87. package/build/types/utils/{getCoreRowModelSync.d.ts → getFilteredRowModel.d.ts} +1 -1
  88. package/build/types/utils/getGroupedRowModel.d.ts +1 -1
  89. package/build/types/utils/getSortedRowModel.d.ts +2 -0
  90. package/build/types/utils.d.ts +1 -17
  91. package/build/umd/index.development.js +2053 -3002
  92. package/build/umd/index.development.js.map +1 -1
  93. package/build/umd/index.production.js +1 -1
  94. package/build/umd/index.production.js.map +1 -1
  95. package/package.json +1 -1
  96. package/src/core.ts +197 -47
  97. package/src/features/Cells.ts +7 -11
  98. package/src/features/ColumnSizing.ts +89 -139
  99. package/src/features/Columns.ts +10 -13
  100. package/src/features/Expanding.ts +62 -107
  101. package/src/features/Filters.ts +201 -308
  102. package/src/features/Grouping.ts +55 -81
  103. package/src/features/Headers.ts +18 -40
  104. package/src/features/Ordering.ts +6 -4
  105. package/src/features/Pagination.ts +31 -17
  106. package/src/features/Pinning.ts +79 -96
  107. package/src/features/RowSelection.ts +68 -118
  108. package/src/features/Rows.ts +21 -6
  109. package/src/features/Sorting.ts +47 -103
  110. package/src/features/Visibility.ts +24 -47
  111. package/src/filterFns.ts +9 -9
  112. package/src/index.ts +12 -4
  113. package/src/sortingFns.ts +11 -11
  114. package/src/types.ts +3 -18
  115. package/src/utils/filterRowsUtils.ts +47 -68
  116. package/src/utils/{getCoreRowModelSync.ts → getCoreRowModel.ts} +3 -9
  117. package/src/utils/getExpandedRowModel.ts +2 -2
  118. package/src/utils/getFacetedMinMaxValues.ts +37 -0
  119. package/src/utils/getFacetedRowModel.ts +50 -0
  120. package/src/utils/getFacetedUniqueValues.ts +37 -0
  121. package/src/utils/getFilteredRowModel.ts +150 -0
  122. package/src/utils/getGroupedRowModel.ts +53 -62
  123. package/src/utils/getPaginationRowModel.ts +1 -1
  124. package/src/utils/{getSortedRowModelSync.ts → getSortedRowModel.ts} +7 -7
  125. package/src/utils.ts +28 -236
  126. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -112
  127. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
  128. package/build/cjs/utils/getCoreRowModelAsync.js +0 -125
  129. package/build/cjs/utils/getCoreRowModelAsync.js.map +0 -1
  130. package/build/cjs/utils/getCoreRowModelSync.js +0 -102
  131. package/build/cjs/utils/getCoreRowModelSync.js.map +0 -1
  132. package/build/cjs/utils/getFilteredRowModelSync.js +0 -130
  133. package/build/cjs/utils/getFilteredRowModelSync.js.map +0 -1
  134. package/build/cjs/utils/getSortedRowModelSync.js +0 -118
  135. package/build/cjs/utils/getSortedRowModelSync.js.map +0 -1
  136. package/build/types/utils/getCoreRowModelAsync.d.ts +0 -4
  137. package/build/types/utils/getFilteredRowModelAsync.d.ts +0 -4
  138. package/build/types/utils/getFilteredRowModelSync.d.ts +0 -2
  139. package/build/types/utils/getSortedRowModelAsync.d.ts +0 -13
  140. package/build/types/utils/getSortedRowModelSync.d.ts +0 -2
  141. package/src/utils/getCoreRowModelAsync.ts +0 -104
  142. package/src/utils/getFilteredRowModelAsync.ts +0 -49
  143. package/src/utils/getFilteredRowModelSync.ts +0 -150
  144. 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.getFilteredRowModel().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.getFilteredRowModel().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;
213
-
214
- var column = instance.getColumn(columnId);
215
-
216
- if (!column) {
217
- throw new Error();
218
- }
168
+ getCanSort: () => {
169
+ var _column$enableSorting, _instance$options$ena3;
219
170
 
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;
173
+ getCanMultiSort: () => {
174
+ var _ref3, _column$enableMultiSo;
227
175
 
228
- var column = instance.getColumn(columnId);
229
-
230
- if (!column) {
231
- throw new Error();
232
- }
233
-
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) {
252
- if (columnId) {
253
- instance.setSorting(function (old) {
254
- return old != null && old.length ? old.filter(function (d) {
255
- return d.id !== columnId;
256
- }) : [];
257
- });
258
- } else {
259
- var _instance$initialStat, _instance$initialStat2;
260
-
261
- instance.setSorting((_instance$initialStat = (_instance$initialStat2 = instance.initialState) == null ? void 0 : _instance$initialStat2.sorting) != null ? _instance$initialStat : []);
262
- }
189
+ clearSorting: () => {
190
+ //clear sorting for just 1 column
191
+ instance.setSorting(old => old != null && old.length ? old.filter(d => d.id !== column.id) : []);
263
192
  },
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) {
193
+ getToggleSortingHandler: () => {
194
+ const canSort = column.getCanSort();
195
+ return e => {
273
196
  if (!canSort) return;
274
197
  e.persist == null ? void 0 : e.persist();
275
198
  column.toggleSorting == null ? void 0 : column.toggleSorting(undefined, column.getCanMultiSort() ? instance.options.isMultiSortEvent == null ? void 0 : instance.options.isMultiSortEvent(e) : false);
276
199
  };
200
+ }
201
+ };
202
+ },
203
+ createInstance: instance => {
204
+ return {
205
+ setSorting: updater => instance.options.onSortingChange == null ? void 0 : instance.options.onSortingChange(updater),
206
+ resetSorting: defaultState => {
207
+ var _instance$initialStat, _instance$initialStat2;
208
+
209
+ instance.setSorting(defaultState ? [] : (_instance$initialStat = (_instance$initialStat2 = instance.initialState) == null ? void 0 : _instance$initialStat2.sorting) != null ? _instance$initialStat : []);
277
210
  },
278
- getPreSortedRowModel: function getPreSortedRowModel() {
279
- return instance.getFilteredRowModel();
280
- },
281
- getSortedRowModel: function getSortedRowModel() {
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.getFilteredRowModel().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.getFilteredRowModel().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.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","_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","getFilteredRowModel","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 clearSorting: () => 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 resetSorting: (defaultState?: boolean) => 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 clearSorting: () => {\n //clear sorting for just 1 column\n instance.setSorting(old =>\n old?.length ? old.filter(d => d.id !== column.id) : []\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 resetSorting: defaultState => {\n instance.setSorting(\n defaultState ? [] : instance.initialState?.sorting ?? []\n )\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","clearSorting","getToggleSortingHandler","canSort","persist","undefined","createInstance","updater","resetSorting","defaultState","initialState","getPreSortedRowModel","getSortedRowModel","_getSortedRowModel","manualSorting"],"mappings":"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"}